- Added
batchSize,batchWindowsupport to@queues- Ensure
fifo,batchSize,batchWindoware top-level@queuessemantics properties
- Ensure
- Add support for
timezoneproperty for scheduled functions
- Update default function runtime to Node.js 22.x
- Internal fixes for tests, code coverage and coverage thresholds
- Breaking change: dropped Node.js 20 support
- Update to latest
@architect/utils
- Breaking change: dropped Node.js 16, 18 support
- Updated deps
- Moved to Node.js native test runner
- Error out if imported plugin has no discernable plugin API implementation; added in #83 by @andybee, thanks!
- Fixes architect/architect#1478: support for loading plugins implemented as
index.mjsunder a plugin folder name
- Fixed support for loading ESM plugins in node v20.19 (which now supports
require()of ESM modules)
- Add support for new ESM-only import error message when importing plugins in Node.js 22; thanks @lpsinger!
- Updated dependencies
- Updated
package.jsonengines.nodeproperty to reflect changes from v4
- Updated dependencies
- Updated
aws-lite
- Fixed format of
@sandbox-startpragma in preferences (which is preferred to@sandbox-startup)
- Transitioned from
aws-sdktoaws-lite - Breaking change:
arm64is now the default Lambda architecture - Breaking change:
nodejs20.xandpython3.12are now the default Node.js and Python Lambda runtimes, respectively - Breaking change: removed support for Node.js 14.x (now EOL, and no longer available to created in AWS Lambda)
- AWS Lambda no longer supports Go-specific runtimes; as such,
goandgolangruntime aliases are no longer available - Added Node.js 20.x to test matrix
- Internal updates and test suite fixes to enable Node.js 20.x testing
- Updated dependencies
- Fix HTTP route sorting issue where trailing catchalls win over trailing params; fixes #1467
- Updated dependencies
- Added ability for unknown function-level configuration settings to be arrays / vectors
- Fixed AWS Lambda handler configuration for Python, Ruby, and custom handlers
- Added support for additional Python + Ruby Lambda handler filenames, including:
- Python:
lambda.py,handler.py(and legacyindex.py) - Ruby:
lambda.rb,handler.rb(and legacyindex.rb)
- Python:
- Allow lowcase
ttl@tablesproperty type
- Improved path validation for multi-tenant Lambdae
- Updated dependencies
- Fixed subtle
@httpsorting issue where path params may be prioritized over paths with static URL parts in the same position
- Compiled runtimes now default to
provided.al2, and no longer require abaseRuntimespecified by the Arc runtime plugin
- Added support for
createplugin API - Added support for
buildSubpathproperty forcompiledruntime plugins - Added map of custom runtimes to plugin names in
inv._project.runtimePlugins.customRuntimes
- Unpinned
aws-sdkfrom Lambda-specific version to enable SSO and resolve (unrelated) npm vulnerability warnings
- Retired
nodejs12.xrelated logic (deprecated in Lambda 2023-03-31)
- Fixed issue where an
index.mjshandler in the project root would not be properly detected if apackage.jsonfile is present (which it almost certainly would be)
- Added plugin ES module support for ES2020+ syntax,
node:*imports, etc.; fixes #1401 - Added support for loading ESM plugins via
package.json"type": "module", respectingmain, etc.
- Added support for plugins authored as ES modules; retains support for plugins authored as CommonJS modules
- Added support for specifying DynamoDB index projection attributes; incremental support for #1083
set.staticplugins now mergeignorepatterns with userlandignoresettings (if present)
- Added Node.js 18.x to test matrix
- Updated default runtime to
nodejs16.x - Updated dependencies
- Fixed issue where projects with plugins that define >1 transpiled Lambdas would all build to the same directory; thanks @Scorsi!
- Fixed issue where plugins may not be found if attempted to be loaded from a subfolder in a monorepo; thanks @Scorsi!
- Fixed issue where
@static spa truesetting wouldn't be respected when the root handler is not explicitly defined; thanks @oliverturner!
- Fixed issue where
set.httpplugins would not haveconfig.viewsrespected if set tofalse
- Node 14+ Lambda handler selection now defaults to ESM (unless otherwise specified)
- Enabled
hydrateplugin API support
- By default, when a
set.shared|viewsplugin sets asrcpath, if it is not present on the filesystem, Inventory falls back to default paths (e.g.src/shared|views)set.shared|viewsplugins now accept arequiredflag to enforce a validation error should asrcpath conflict with the project manifest (or not be found on the filesystem)
- Fixed an obscure internal reference passing bug in
set.proxy|shared|static|viewsplugins
- Added support for new setter plugin APIs, specifically:
@proxy,@shared,@static,@tables,@tables-indexes,@views - Added new
@staticsetting:compression
- Lambdas defined in the userland Architect project manifest now override conflicting Lambdas returned by plugins (instead of throwing validation errors); fixes #1352
- Plugin developers can now use a
requiredflag to enforce a validation error should their plugin conflict with userland Lambdas
- Plugin developers can now use a
@tablesand@tables-indexescan now accept lower case key types (e.g.*stringinstead of*String)@tablesand@tables-indexescan also accept*and**as a shortcut for string-type primary and sort keys- Changed plugin function property tags from
plugin|typeto_plugin|_typeto indicate internal property namespacing - Added
@staticpragma validation - Fixed obscure case where
@staticignoresetting might only use the first list item
- Fixed issue where Lambdas created by plugins that returned arrays did not have their
pluginandtypeproperties set - Fixed issue where an absolute path in
@shared|viewssrcwould incorrectly resolve - Fixed issue where
@viewsmight incorrectly return a validation error when only HTTP setter plugins are used to define@httproutes
- Updated dependencies;
lambda-runtimesenablesnodejs16.x
- Added support for configuring Lambda's ephemeral storage feature
- Architect 10 plugin API support! Specifically:
plugins.set.runtimes- custom runtime support (still in beta)plugins.set.env- add environment variables to all Lambdasplugins.set.events|http|scheduled|tables-streams|ws- generate or drop in Lambdas in Architect pragmasplugins.set.customLambdas- generate or drop in unique Lambdas with custom event sources- More below...
- Added
inv|get.pluginstree + methods- What used to be
pluginsin the plugins beta is nowcustomLambdas(see next item)
- What used to be
- Added
inv|get.customLambdas- Formerly
inv|get.plugins
- Formerly
- Added
inv._project.customRuntimes - Added low-level support for
builddestinations to runtime plugins that register typetranspiledorcompiled - Added
handlerModuleSystemproperty fornodejs14.xLambdas, with a value ofcjsoresmbased on Lambda + Node.js conventions - Added
handlerFiledetection fornodejs14.x+denoLambdas- This will detect the correct handler file on the filesystem, and fall back to a default handler file if none are found (e.g.
index.jsinnodejs14.x)
- This will detect the correct handler file on the filesystem, and fall back to a default handler file if none are found (e.g.
- Added
inv._arc.deployStageproperty, enabling Inventory to be aware of an intended deploy stage; (this property may change, consider it in beta!) - Added built-in support for reading
.envfiles when enumerating local env var preferences
- Breaking change: changed
_project.src, added_project.cwd, making both the pair significantly more literal and descriptive_project.srcis now the default source tree folder (eg$cwd/src)_project.cwdrefers to the current working directory of the project
- Breaking change:
_project.envis now by default an object populated by three properties:local,plugins, andaws, reflecting the env vars found for each environment - Breaking change: AWS region prioritizes a region passed via param over
AWS_REGIONenv var; this should realistically have little or no effect in practice - Breaking change: legacy
@tables-streamsfolders (src/tables/...andsrc/streams/...) are now deprecated- Existing functions can be simply moved to
src/tables-streams/{name}(or use a customsrcproperty)
- Existing functions can be simply moved to
- Breaking change: renamed
lambda.handlerFunctiontolambda.handlerMethod - Breaking change: prioritize
mod.ts|jshandlers in Deno Lambdas - Breaking change: removed
tomlsupport - Breaking change: removed
get.macrosmethod; as@macrosare now automatically mapped to the Architect plugins, you can simply useget.pluginsinstead - Performance improvements to building
inv.shared+inv.views - Improved memory footprint of Inventory object by preserving references in
lambdaSrcDirs,lambdasBySrcDir- Added
pragmaproperty to all Lambdas to aid in reference preservation
- Added
- Tidy up order of enumerated properties in each Lambda Update CI
- Stop publishing to the GitHub Package registry
- Added file path validation because
aws-sdkblows up on !ascii paths; fixes #1292, thanks @GustMartins! - Fixed env var validation from preference files
- Fixed error bubbling when reading a preferences file with issues
- Fixed HTTP route sorting; however you've organized your
@httppragma, Sandbox should now behave much more like API Gateway; fixes #977 - Fixed overly strict path parameter validation; allow
_,.,-; thanks @jkarsrud!
- Finally formalized
@tables-streams, the fully customizable successor to@tableswithstream true - Added
@tables-indexespragma@tables-indexeshas identical semantics as (and will eventually supersede)@indexes- Until Arc 10.0 + Inventory 3.0, consumers should now check both
inv.indexesANDinv.tables-indexes
- Hardened runtime validation by ensuring non-string values will fail gracefully
- Added memory / timeout configuration validation
- Improved layer validation error formatting
- Added
config.runtimeAliasproperty to Lambdas whoseconfig.runtimeis interpolated by way of latest-runtime aliasing (e.g.nodeorpy)
- Internal change: implement Lambda runtimes module instead of maintaining valid runtime list in Inventory
- Fixed
@scheduledparsing inapp.json+package.json>arc.scheduled
- Added latest-runtime version aliasing
- Example: you want your app to always run the latest Lambda version of Python (instead of specifying
python3.9(and changing it every time a new version of Python is released); now you can specifypythonorpy - Valid shortcuts: Node.js:
node,nodejs,node.js; Python:python,py; Ruby:ruby,rb; Java:java; Go:go,golang; .NET:dotnet,.net; and custom runtimes:custom
- Example: you want your app to always run the latest Lambda version of Python (instead of specifying
- Added runtime validation
- Updated dependencies
- Added support for AWS's new Lambda
arm64architecture via@aws architecturesetting; default remainsx86_64
- Internal: removed unused
@tablesflag
- Internal: Updated Architect Parser to v5
- When a valid root handler is configured by the user,
inv._project.rootHandleris no longerconfigured, and is instead the specific root handler'snameproperty- Example:
@http get /would result ininventory._project.rootHandlerbeingget /
- Example:
- Fix
@awspolicies+layerswhere multiple policies or layers listed in one line would ignore all but the first
- Default runtime is now
nodejs14.x, fixes #1164 - 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 support for Architect 5 WebSocket folder paths (prepended by
ws-) - Updated ASAP to v4
- Updated dependencies
- Include registry of all Architect pragmas + Lambda pragmas in
inventory.inv._arc.pragmasmetadata
- Update deps
- Fixed error reporting for missing function dirs
- De-dupe
@shared+@viewsitems - Fixed
@shared+@viewserrors
- Adds comprehensive pragma-level validation
- Added structured
ARC_ERRORSproperty to returned Inventory errors
- Refactors error handling to support aggregation of multiple validation errors (instead of just one at a time, as before)
- 💯% unit test coverage
- Add support for @tables
pitroption, start phasing outPointInTimeRecoveryoption (which is still supported for a while); fixes #1155 - Removes
aws-sdkfrompeerDependenciesto resolve large Lambda dependency payloads when Arc is run on machines using npm 7- See also: readme >
aws-sdkcaveat
- See also: readme >
- Fixed a bunch of smol bugs
- Plugins may implement either
pluginFunctionsorfunctionsinterface methods; both will be used.
- Fix weird behavior in
lambdasBySrcDirwhen >2 functions are mapped to the same folder
- Bumped utils dependency to 2.0.5.
- Added beta support for
pluginspragma (see https://arc.codes/docs/en/guides/extend/architect-plugins)inventory.inv.pluginshouses all Lambdas created by pluginsinventory._project.pluginsmaps plugin names to plugin modules
- Wired up plugin modules into
lambdasBySrcDirandlambdaSrcDirs- First steps towards allowing plugin authors to add their own Lambdas to arc projects
- Added
nameparam for@indexespragma to allow explict naming of GSIs; thanks @anatomic!
- Added
@sandbox-startupto preferences to replace the sometimes-wonky@sandbox startupsetting, fixes #1032 - Added ability for
@staticbuckets – otherwise enabled by default – to be disabled with@static false
- Adds
lambdasBySrcDirparam for looking up a Lambda by its source dir dir- Useful for when the only thing known about a Lambda is its source directory (see: hydration, direct deploys, etc.)
- Adds
inv._project.asapSrcshortcut for getting the configured ASAP dist path
- Added new
@sharedpragma - Customizable shared + views folders
- Added global preferences lookup (
~/.preferences.arc+~/.prefs.arc, etc.) and global / local preference merging
- Breaking change:
inv.viewsshape has now changed - Breaking change:
inv._project.preferencesFilehas been deprecated in favor ofinv._project.globalPreferencesFile+inv._project.localPreferencesFile - Deprecates legacy
localPathsarray (which has since been moved over tolambdaSrcDirs)
- Moved
@architect/asapfrom Package into Inventory - Added test case
- Fixed side effect of ASAP mutating default function configurations project-wide
- Added
@proxysupport - Added
@viewssupport - Added
@cdnsupport - Added
@httpany,head, andoptionsmethod support - Added
@http*(catchall) syntax support - Added async/await interface
- Added
config.arc(formerly.arc-config) support for@arcsettings - Added
inventory._project.rootHandlerproperty for determining whether a user explicitly configured a root handler - Added local preferences via
preferences.arcorprefs.arc - Added additional params to tables (
ttl,encrypt,PointInTimeRecovery,legacy) - Added ability to pass raw Architect manifest string (
rawArc) for stateless Inventory runs - Added ability to define JSON-formatted Architect manifest in
package.json(viaarcorarchitectparam)
- Moved
inventory.arcmetadata toinventory._arc(should we need to use an Architect-specific@arcpragma) - Moved
inventory.projectmetadata toinventory._projectto better denote that it is indeed project metadata - Renamed primary inventory output to
inv - Updated AWS SDK
- Getter returns arrays for certain pragmas that may have duplicative names (e.g.
@indexes)
- Fixed issue with overwriting a Lambda's base config if Arc config is present
- Fixed missing
handlerFileextension for deno functions - Fixed legacy
@wsfolder pathing issue - Fixed ASAP behavior to only be defined when
@httpis present, not@static - Disabled shared files in ASAP
- Fixed issue where ASAP was overtaking
@proxy - Fixed manual override of queue fifo config
- Added graceful failure when attempting to read an empty manifest or config file
- Fixed issue where projects without
get /would return an error during Lambda source dir population - Fixed inventory rules around @http + @static inferring each other
- Fixed getter when accessing pragmas with null values
Here we go!
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.