- 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.json
engines.node
property 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
arm64
Lambda (the new default in Architect 11)- This means any non-
arm64
and/or non-Linux machine will now best-effort deploy toarm64
Linux; users are highly encouraged to validate application functionality that relies on native modules - This is accomplished by adding the npm
--cpu
+--os
flags, 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
arm64
as before
- This means any non-
- Use
--omit=dev
instead of--production
arg 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
ignoreDependencies
would not work if only a single dependency was ignored; thanks @andybee!
- Added additional dependency ignoring property case:
ignoreDependencies
orignoredDependencies
can now be used;ignoreDependencies
is 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
local
flag for hydration of platform-specific binary deps (namely: Python); fixes #1457 - Fixed pnpm / Yarn commands when globally installed
- Optimistically import
importlib_metadata
during Python treeshaking in case it's already installed in the system
- Added initial support for Python Lambda treeshaking
- No more
requirements.txt
necessary 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.txt
file (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
pipdeptree
package to be available from shell; ensure you've runpip3 install pipdeptree
prior to use
- No more
- Fixed issue using absolute paths in
hydrate.copy
plugins
- Added additional multi-tenant Lambda checks
- Updated dependencies
- Added
pnpm
support; Hydrate will use pnpm if apnpm-lock.yaml
file is present, or if the--pnpm
CLI flag is present; thanks @nicksrandall! - Oh, also: added
--pnpm
+--yarn
flags
- 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.copy
crashing when copying to multi-tenant Lambdae
- Fixed
hydrate.copy
API bug where files are copied tovendor
, notnode_modules
, fortypescript
Lambdas
- Fixed
hydrate.copy
API bug where Lambda build dir is not used
- Added support for Lambda
nodejs18.x
runtime - Added Node.js 18.x to test matrix
- Ignore AWS SDK v3 (
@aws-sdk/*
) references during Lambda treeshaking - Updated dependencies
- Changed
hydrate.copy
API to copy files into all Lambdas, not just those with shared code enabled
- Fixed issue where
hydrate.copy
plugins 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.copy
API 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/functions
module; thanks @idy! - Fixed issue where autoinstall would fail to parse
require
orimport
within for/of statements; fixes #1370
- Fix obscure case where copying
static.json
may 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-runtimes
addsnodejs16.x
.
- Updated dependencies
- Added support for Arc 10 plugin API
- Added support for package-lock.json
lockfileVersion
2; fixes #1306, thanks @gopeter!
- Lambda treeshaking (currently for Node.js) is now the default when being run from CLI
- Breaking change: legacy
@tables-streams
folders (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 --update
orhydrate -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 false
would 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
import
s from http(s)
- Fixed tree shaking detection of CJS/ESM when strings
import
andrequire
are present in the AST
- Added support for Node.js 14 ESM Lambda tree shaking!
- Added support for
@tables-streams
, the fully customizable successor to@tables
withstream 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/await
interface of Hydrate methods - Improved output of terminal information being returned, especially in error scenarios
- Fixed issue where
@architect/functions
arc.static()
method may not work if using@static fingerprint true
, but aren't usingsrc/shared
or@static src some-dir
- Updated dependencies
- Added
cwd
API param, making it easier to run Hydrate in different project directories- Since
cwd
andbasepath
have similar characteristics, please refer to the readme for usage!
- Since
- Added ability to pass API an
inventory
object (to prevent extra Inventory runs and avoid potential state issues)
- Updated dependencies
- Hydration of plugin Lambdas now supports either plugin interface method
functions
orpluginFunctions
.
- Fixed issue where Hydrate might get a bit overly aggressive and remove root dependencies during Lambda treeshaking; thanks @ryanbethel!
- Fixed
views
not 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
@plugins
to be hydrated withsrc/shared
- Add support for Lambdas created via
@plugins
to be hydrated
- Added
npx
bin for standalone CLI usage (npx arc-hydrate
)
- Fixed
--autoinstall
flag not being detected by CLI - Fixed autoinstall cleanup on machines that globally disable
package-lock.json
- Added
installRoot
param 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
autoinstall
param- This feature currently only supports Node.js dependencies
- Fixed
npm
+yarn
calls installing developer dependencies in Lambdas; fixes #1034, thanks @BenoitAverty! - Fixed shared/views autoinstall package.json paths and path printing
- Added support for new
@shared
pragma 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
npx
call)
- Fixed weird side effects that can sometimes occur when toggling between symlink enabled/disabled with
@aws shared false
in a function config
- Added a
symlink
flag, 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
@http
catchall 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.x
functions; 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
hydrateShared
param (defaultstrue
) toinstall
andupdate
; disabling deactivates hydratingsrc/shared
andsrc/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
only
param tohydrate.shared
- This is largely just an internal change to make
sandbox
more efficient
- Update dependencies
- In
hydrate.install
andhydrate.update
shared copying is still enabled by default on all operations, but now you can opt out by passing acopyShared
param
- 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.update
now properly inventories its update operations, avoiding superfluous work- Internal cleanup of printing operations using new Architect-standardized
updater
- Results returned by
hydrate
are now symmetrical with what's printed - Numerous internal changes to clean up common code paths and simplify key operations, like printing & reporting
- All
hydrate
printing is now silenced by usingquiet
hydrate.install
now properly inventories its update operations, avoiding superfluous workhydrate.install
now accepts absolutebasepath
values (e.g./full/path/to/your/project
)hydrate.install
andhydrate.update
now always runhydrate.shared
hydrate.shared
now accepts parameters
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.