- pnpm install and update commands now use
--config.node-linker=hoistedto produce a flatnode_moduleslayout compatible with AWS Lambda (which does not support symlinks) - pnpm commands now pass
CI=truein the environment to prevent interactive prompts in non-TTY contexts
- Node.js 22+ required: Updated minimum Node.js version from 20 to 22
- Replaced external glob dependency (
@architect/utils/glob) with native Node.jsfs.globSync- Takes advantage of Node.js 22's built-in glob support
- Reduces external dependencies and improves performance
- No functional changes to dependency discovery behavior
If you are upgrading from version 5.x:
-
Upgrade Node.js: Ensure you are running Node.js 22 or later
- Check your version:
node --version - If using Node.js 20 or earlier, upgrade to Node.js 22+ or stay on
@architect/hydrate5.x
- Check your version:
-
Update your CI/CD: Update any CI/CD configurations to use Node.js 22 or later
- GitHub Actions: Update
node-versionin workflow files - Other CI systems: Update Node.js version in configuration
- GitHub Actions: Update
-
No code changes required: The API remains unchanged, all existing code will continue to work
- Updated
engines.nodein package.json from>=20to>=22 - Migrated from
@architect/utils/globto nativefs.globSyncfor file pattern matching - Updated CI test matrix to use Node.js 22.x and 24.x
- Update deps and move to node > 20
- Fixed issue with hydrate not working on code outside the project root.
- Update vendored Python
importlib_metadata
- Fixed issue where ASAP would blow up treeshaking due to malformed file path
- Fixed issue where Hydrate fails on projects with only an ASAP root handler, no other Lambdas; fixes #1491
- Updated dependencies
- Updated
package.jsonengines.nodeproperty to reflect changes from v4
- Fixed Lambda treeshaking of default
get /*ASAP handler; thanks @filmaj! - Improved detection of local vs global Yarn and pnpm
- Updated dependencies
- Fixed issue where treeshaking runs against Lambdas with explicit dependency manifests in cases where those Lambdas were themselves plugins installed as dependencies
- Improved cross-platform deployment of native modules to
arm64Lambda (the new default in Architect 11)- This means any non-
arm64and/or non-Linux machine will now best-effort deploy toarm64Linux; users are highly encouraged to validate application functionality that relies on native modules - This is accomplished by adding the npm
--cpu+--osflags, supported by npm v10.1+ – this version of npm is bundled with Node.js 18.19+ or 20.7+ - If you are using pnpm or Yarn, you must continue to deploy Lambdas to
arm64as before
- This means any non-
- Use
--omit=devinstead of--productionarg for npm - Added Node.js 20.x to test matrix
- Breaking change: removed support for Node.js 14.x (now EOL, and no longer available to created in AWS Lambda)
- Updated dependencies
- Fixed issue where
ignoreDependencieswould not work if only a single dependency was ignored; thanks @andybee!
- Added additional dependency ignoring property case:
ignoreDependenciesorignoredDependenciescan now be used;ignoreDependenciesis preferred
- Updated dependencies
- Added ability to ignore Lambdas during via
@arc hydrate false; thanks @lpsinger!
- Added ability to ignore dependencies during hydration; thanks @andybee!
- Add
localflag for hydration of platform-specific binary deps (namely: Python); fixes #1457 - Fixed pnpm / Yarn commands when globally installed
- Optimistically import
importlib_metadataduring Python treeshaking in case it's already installed in the system
- Added initial support for Python Lambda treeshaking
- No more
requirements.txtnecessary in your Python Lambdas, Architect now handles dependency installations automatically upon deployment - Docs: https://arc.codes/docs/en/guides/developer-experience/dependency-management#python
- This supports global options passed in a root
requirements.txtfile (example:--extra-index-url https://test.pypi.org/simple/), but does not yet support dependencies versioned at root, or shared or views dependencies - All project dependencies must be installed on the system prior to deployment
- Python Lambda treeshaking also requires the
pipdeptreepackage to be available from shell; ensure you've runpip3 install pipdeptreeprior to use
- No more
- Fixed issue using absolute paths in
hydrate.copyplugins
- Added additional multi-tenant Lambda checks
- Updated dependencies
- Added
pnpmsupport; Hydrate will use pnpm if apnpm-lock.yamlfile is present, or if the--pnpmCLI flag is present; thanks @nicksrandall! - Oh, also: added
--pnpm+--yarnflags
- Updated dependencies
- Internal changes: refactored globbing and filtering logic for Glob v9; partial refactor for npm 9's lockfileVersion 3
- Made hydrating Lambda handlers in the project root slightly less wonky (even possibly destructive); partially improves #1405
- Updated dependencies
- Fixed
hydrate.copycrashing when copying to multi-tenant Lambdae
- Fixed
hydrate.copyAPI bug where files are copied tovendor, notnode_modules, fortypescriptLambdas
- Fixed
hydrate.copyAPI bug where Lambda build dir is not used
- Added support for Lambda
nodejs18.xruntime - Added Node.js 18.x to test matrix
- Ignore AWS SDK v3 (
@aws-sdk/*) references during Lambda treeshaking - Updated dependencies
- Changed
hydrate.copyAPI to copy files into all Lambdas, not just those with shared code enabled
- Fixed issue where
hydrate.copyplugins breaking on projects that disabled or aren't using shared code; thanks @tbeseda!
- Fixed corner case where Lambda treeshaking could install a potentially out of date dependency if found in the project's developer dependencies tree, even if as a transient dependency of another package in
package-lock.json- Per npm semantics, Architect assumes business logic that needs a specific version will use
dependencies - If for whatever reason your Architect app's business logic depends on a specific dependency version, and that version is only found in
devDependencies, you must specify that version independencies
- Per npm semantics, Architect assumes business logic that needs a specific version will use
- Updated dependencies
- Added
hydrate.copyAPI for copying in files and folders to Lambda dependency directories (./path/to/lambda/node_modules/or./path/to/lambda/vendor)
- Fixed issue where
hydrate.shared()erroneously destroys the@architect/functionsmodule; thanks @idy! - Fixed issue where autoinstall would fail to parse
requireorimportwithin for/of statements; fixes #1370
- Fix obscure case where copying
static.jsonmay fail when a shared folder is removed from the project; fixes #1367
- Handle obscure case where lingering broken symlinks would not be properly removed by the shared file copier
- Added support for Node.js 16's
node:builtin module syntax; fixes #1358
- Updated dependencies
- Updated dependencies; sub-dep
lambda-runtimesaddsnodejs16.x.
- Updated dependencies
- Added support for Arc 10 plugin API
- Added support for package-lock.json
lockfileVersion2; fixes #1306, thanks @gopeter!
- Lambda treeshaking (currently for Node.js) is now the default when being run from CLI
- Breaking change: legacy
@tables-streamsfolders (src/tables/...andsrc/streams/...) are now deprecated - Breaking change: bare CLI arguments (e.g.
hydrate update) as aliases to flags are no longer used, please use CLI flags (e.g.hydrate --updateorhydrate -u) - Stop publishing to the GitHub Package registry
- Traverse folders that start with
.looking for Lambda package files to hydrate - Updated dependencies
- Fixed issue where Lambdas configured with
@arc shared falsewould still get shared code
- Fixed potential false tree shaking errors in ESM files that make use of
require()(e.g. viaimport { createRequire } from 'module')
- Fixed false positive tree shaking of
imports from http(s)
- Fixed tree shaking detection of CJS/ESM when strings
importandrequireare present in the AST
- Added support for Node.js 14 ESM Lambda tree shaking!
- Added support for
@tables-streams, the fully customizable successor to@tableswithstream true- Includes support for specifying multiple streams attached to a single table, as well as specifying custom source paths
- For more see: https://arc.codes/tables-streams
- Updated dependencies
- Fixed faulty error code path during shared file copying
- Breaking change: removed support for Node.js 10.x (now EOL, and no longer available to created in AWS Lambda) and Node.js 12.x
- Breaking change: removed legacy
hydrate()interface, usage should now always behydrate.install(opts),hydrate.update(opts), orhydrate.shared(opts); fixes #1168 - Breaking change: removed returning terminal output object
- Hydration logging / output should now be retrieved via
utils.updater().get()
- Hydration logging / output should now be retrieved via
- Breaking change: removed support for Architect 5 (and lower)
- Updated dependencies
- Fixed issue with
async/awaitinterface of Hydrate methods - Improved output of terminal information being returned, especially in error scenarios
- Fixed issue where
@architect/functionsarc.static()method may not work if using@static fingerprint true, but aren't usingsrc/sharedor@static src some-dir
- Updated dependencies
- Added
cwdAPI param, making it easier to run Hydrate in different project directories- Since
cwdandbasepathhave similar characteristics, please refer to the readme for usage!
- Since
- Added ability to pass API an
inventoryobject (to prevent extra Inventory runs and avoid potential state issues)
- Updated dependencies
- Hydration of plugin Lambdas now supports either plugin interface method
functionsorpluginFunctions.
- Fixed issue where Hydrate might get a bit overly aggressive and remove root dependencies during Lambda treeshaking; thanks @ryanbethel!
- Fixed
viewsnot hydrating in projects that don't useshared; fixes #1133
- Fixed issue where multiple lambdas aliased to the same source path would cause an error when hydrating
src/shared; fixes #1124
- Fixed support for Lambdas created via
@pluginsto be hydrated withsrc/shared
- Add support for Lambdas created via
@pluginsto be hydrated
- Added
npxbin for standalone CLI usage (npx arc-hydrate)
- Fixed
--autoinstallflag not being detected by CLI - Fixed autoinstall cleanup on machines that globally disable
package-lock.json
- Added
installRootparam to explicitly include the root directory in hydration operations
- Fixed printing correct number of functions to hydrate when Lambda treeshaking is involved
- Added support for automated dependency management (aka Lambda treeshaking) via
autoinstallparam- This feature currently only supports Node.js dependencies
- Fixed
npm+yarncalls installing developer dependencies in Lambdas; fixes #1034, thanks @BenoitAverty! - Fixed shared/views autoinstall package.json paths and path printing
- Added support for new
@sharedpragma with selective shared code, uh, sharing - Added support for custom shared + views file paths
- Fixed obscure circumstance where moving or deleting a symlinked shared/views folder can crash hydration
- Shared file copier now always deletes destination file dirs before writing instead of checking existence (which may result in false negatives for existence)
- Added support for custom file paths
- Implemented Inventory (
@architect/inventory)
- Ensure we don't create folders that don't already exist when copying shared / Arc files
- When using Yarn, detect local vs global installs, and prefer local installs where found (via
npxcall)
- Fixed weird side effects that can sometimes occur when toggling between symlink enabled/disabled with
@aws shared falsein a function config
- Added a
symlinkflag, which causes files and directories to be symlinked instead of copied (whenever the filesystem supports it). This should significantly improve performance in local workflows, such as Sandbox. Thanks @joliss!
- Add support for
@httpcatchall syntax (e.g.get /api/*)
- Updated dependencies
- Adds Yarn support!
- Updated dependencies
- Updated dependencies
- Updated dependencies
- Fixed issue with shared code hydration in
python3.8; fixes #650, thanks @rbuckingham!
- Minor internal changes to ensure default runtime is now
nodejs12.x - Updated dependencies
- Fixed issue with hydration of
nodejs12.xfunctions; thanks @bardbachmann!
- Update dependencies
- Changes hydration result
raw.err(an error message) to an object containingraw.err.message,raw.err.code, and (if a signal was present in the error)raw.err.signal
- Update dependencies
- Update dependencies
- Fixes issue where legacy runtimes may not have been fully hydrated
- Updated dependencies
- Added
hydrateSharedparam (defaultstrue) toinstallandupdate; disabling deactivates hydratingsrc/sharedandsrc/views, useful when only trying to hydrat dependencies for a single directory
- Fixed WebSocket function hydration
- Updated dependencies
- Adds ability to target specific shared file operations by passing an
onlyparam tohydrate.shared - This is largely just an internal change to make
sandboxmore efficient
- Update dependencies
- In
hydrate.installandhydrate.updateshared copying is still enabled by default on all operations, but now you can opt out by passing acopySharedparam
- Internal change: moved tests into specific unit + integration dirs
- Fixed issue where shared file copy destination paths may leak across Lambda executions
- Fixed undefined message in init
- Improved printer error bubbling
- Formatting and line breaks in printer return should now more closely (or exactly) match console output
- Cleaned up printer API and implementation
hydrate.updatenow properly inventories its update operations, avoiding superfluous work- Internal cleanup of printing operations using new Architect-standardized
updater - Results returned by
hydrateare now symmetrical with what's printed - Numerous internal changes to clean up common code paths and simplify key operations, like printing & reporting
- All
hydrateprinting is now silenced by usingquiet
hydrate.installnow properly inventories its update operations, avoiding superfluous workhydrate.installnow accepts absolutebasepathvalues (e.g./full/path/to/your/project)hydrate.installandhydrate.updatenow always runhydrate.sharedhydrate.sharednow accepts parameters
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.