UNPKG

65.9 kBMarkdownView Raw
1# Architect changelog
2
3> Also see: [Architect Functions changelog](https://github.com/architect/functions/blob/master/changelog.md)
4
5---
6
7## [7.0.6] 2020-10-06
8
9### Changed
10
11- Removed Sandbox startup notice regarding Sandbox defaulting to `HTTP` API emulation mode
12
13
14### Fixed
15
16- Fixed regression when using a non-Sandbox DynamoDB instance via the `ARC_DB_EXTERNAL` env var, thanks @herschel666 & @m-butler!
17
18---
19
20## [7.0.5] 2020-09-30
21
22### Fixed
23
24- Fix issue where `app.arc` manifests may be overwritten by template initializer
25
26---
27
28## [7.0.4] 2020-09-29
29
30### Changed
31
32- Updated dependencies
33
34
35### Fixed
36
37- Fix remaining `.arc` file references to `app.arc` when performing `npm arc init`
38
39---
40
41## [7.0.3] 2020-09-21
42
43### Fixed
44
45- Fixed paths in `@cdn` origin configuration; fixes #965, ht @anatomic
46- Fixed legacy API binary encoding deploy-time patching
47
48---
49
50## [7.0.0 - 7.0.2] 2020-09-17
51
52Hooray, Architect 7 (Chupacabra) is here, and `HTTP` APIs are now the default when provisioning new API Gateway resources! ✨
53
54tldr – if you have an existing Architect 6 project:
55- **You can continue to safely deploy that project with Architect 7 (Chupacabra)**
56- No breaking infrastructure changes will be applied by Architect 7 unless manually and explicitly opting in
57- However, it is possible **Sandbox may be broken for your local workflows and testing**
58 - If so, you'll need to **add a new setting API type setting** – [see the upgrade guide](https://arc.codes/guides/upgrade#architect-7-breaking-changes)
59
60Please see the full [Architect 6 → 7 upgrade guide](https://arc.codes/guides/upgrade) for detailed information.
61
62
63### Added
64
65- `HTTP` APIs are the new default when provisioning API Gateway resources
66 - Existing projects with API Gateway `REST` APIs will remain unchanged and can continue to deploy safely
67 - New apps will default to using `HTTP` APIs (but can be configured as `REST` APIs)
68 - API type configuration:
69 - Valid settings: `http` (default), `httpv2` (aliased to `http`), `httpv1`, and `rest`
70 - `http` + `httpv2` uses the latest API Gateway payload format
71 - If you'd like to use `HTTP` APIs with code authored for an existing `REST` API project, manually specify the v1.0 payload format with `httpv1`
72 - Note: **this is a partially destructive change**, as it would result in new API Gateway URLs being generated, and your old URLs being deactivated. If not accounted for, this may result in downtime
73 - Apply in `deploy` CLI with `--apigateway http[v1|v2]|rest`, or in project manifest with `@aws apigateway http[v1|v2]|rest`
74 - Backwards compatibility for `REST` APIs is retained with `rest` setting
75 - Apply in CLI with `--apigateway rest`, or in project manifest with `@aws apigateway rest`
76 - This only impacts Architect `@http`, which was formerly provisioned as `REST` APIs
77 - More info: https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api.html
78 - Fixes #838
79- API Gateway `HTTP` APIs as the new default API type in Sandbox **may be a breaking change for local workflows with existing projects**
80 - If so, per above, make sure you set to `REST` mode with `ARC_API_TYPE=rest` or add that configuration to your project manifest
81 - Existing projects with API Gateway `REST` APIs will remain unchanged and will continue to deploy safely, even though Sandbox now defaults to `HTTP`
82- Added unified service interface and nascent API for Sandbox modules
83- Sandbox itself and its various service modules (`http`, `events`, and `tables`) now have a consistent API to improve using Sandbox in your test suites
84 - All Sandbox module methods now accept an options object, and can either return a Promise (e.g. can be used in async/await), or accept an optional callback
85 - Additionally, all Sandbox module methods now properly set their own environment variables, hydrate any necessary dependencies, and handle any other necessary service startup routines
86 - `sandbox.start()` and `.end()` start and end all Sandbox services:
87 - `sandbox.start(options[, callback]) → [Promise]`
88 - `sandbox.end([callback]) → [Promise]`
89 - `http.start()` and `.end()` starts and ends just the HTTP / WebSocket service:
90 - `http.start(options[, callback]) → [Promise]`
91 - `http.end([callback]) → [Promise]`
92 - `events.start()` and `.end()` starts and ends just the event bus service:
93 - `events.start(options[, callback]) → [Promise]`
94 - `events.end([callback]) → [Promise]`
95 - `tables.start()` and `.end()` starts and ends just the local DynamoDB service:
96 - `tables.start(options[, callback]) → [Promise]`
97 - `tables.end([callback]) → [Promise]`
98
99### Changed
100
101- Removed experimental support for `@http` static mocks
102- Several seldom used and largely undocumented Sandbox module APIs have breaking changes:
103 - `sandbox.start()` no longer returns a function to shut down, and should now be shut down directly with `sandbox.end()`
104 - `sandbox.db()` is now `sandbox.tables()`
105 - `http.close()` is now `http.end()`
106 - `events.start()` & `tables.start()` no longer return server objects to be invoked with `.close()`, and should now be shut down directly with `events.end()` and `tables.end()`
107
108
109### Fixed
110
111- Fixed issue where Lambda timeouts were only respected if >3 seconds; now >=1 second is valid
112- Refactored Arc v6 response support for `multiValueHeaders` to better accommodate use cases where `headers` & `multiValueHeaders` are not in conflict with each other
113- Fixed issue where in certain circumstances legacy (`REST`) APIs could be provisioned without `/_static`
114- Fixed issue where legacy (`REST`) APIs stage names was incorrectly set for production
115
116---
117
118## [6.6.6] 2020-09-14
119
120Sorry, the dark lord demanded that we bump to `6.6.6` for the final Arc 6-series release!
121
122### Added
123
124- Added explicit `statusCode` parameters to all boilerplate code responses for forward compatibility with API Gateway HTTP APIs
125
126
127### Fixed
128
129- Un-break Lambda invocation if a list (example: multiple items under `layers`) is present in a Lambda's `.arc-config` file
130- Fixed Deno issues on Windows (and added Deno to CI + integration tests), /ht @petruki
131
132---
133
134## [6.5.5] 2020-08-27
135
136### Fixed
137
138- Fixed `process.stdin.setRawMode is not a function` error that may occur in certain circumstances when running Sandbox; thanks @kristoferjoseph!
139
140---
141
142## [6.5.4] 2020-07-15
143
144### Added
145
146- Added (exprimental) support for manual rehydration while running:
147 - Press `shift` + `H` to rehydrate all shared files
148 - Press `shift` + `S` to rehydrate src/shared
149 - Press `shift` + `V` to rehydrate src/views
150 - Fixes #902, ht @andybee!
151
152
153### Fixed
154
155- Fixed static asset deploy path issue; fixes #915, ht @gykapur!
156- Fixed `.arc-env` encoding of env vars with Architect-reserved characters
157
158---
159
160## [6.5.3] 2020-07-01
161
162### Changed
163
164- Apps now ensure least privilege HTTP methods on `/_static/*`, allowing only `GET`
165
166
167### Fixed
168
169- Improves compatibility with production REST API behavior for non-get requests to root; fixes #900 /ht @andybee
170- Fixed API Gateway issue that adds an extra stage called `Stage`
171- Corrected internal configuration for static proxy
172
173---
174
175## [6.5.2] 2020-06-25
176
177### Changed
178
179- Static asset deployments now rely on MD5 hashes for static asset diffing, and not filesystem `mtime`; fixes #890
180
181---
182
183## [6.5.1] 2020-06-24
184
185### Added
186
187- Added experimental Sandbox support for manually opting into [AWS's Java-based local DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html); thanks @m-butler!
188
189---
190
191## [6.5.0] 2020-06-23
192
193### Added
194
195- Adds `arc destroy` command: destroy your Architect projects with Architect
196 - Run `arc destroy --name your-app-name` to destroy apps without static assets or database tables
197 - Run `arc destroy --name your-app-name --force` to force-destroy apps with static assets and/or database tables (resulting in permanent data destruction, if you did not back them up)
198 - Fixes #430 (finally!)
199- Rewrite of static asset S3 publishing
200- Adds support for `@static fingerprint external`
201 - Use this with an existing frontend framework that handles its own fingerprinting
202 - This setting ensures `static.json` won't be generated, but that files delivered will get long-lived caching headers
203- Added the ability to prefix static deploy paths with `@static prefix whatever`
204- Added more comprehensive support for static asset pruning, including ability to prune from a full deploy (e.g. `arc deploy --prune`)
205- Respect `@static spa` setting in root proxy (i.e. `@http` without `get /`); fixes #816
206- Default root proxy now coldstarts faster by removing any globally defined layers
207- Added layer region validation (instead of letting CloudFormation fail without a helpful error)
208- Added Sandbox support for `@static spa true|false`
209
210
211### Changed
212
213- Default Architect project manifest filename is now `app.arc` (changed from `.arc`)
214 - All existing projects are unaffected by this change, and will always support `.arc`
215 - Fixes #805
216- Sandbox header casing now matches API Gateway (read: everything is lower-cased); fixes #793
217- Sandbox support for Deno updated for `1.0.5`+
218 - Entry now looks for `index.{js,ts,tsx}` and `mod.{js,ts,tsx}`
219 - Sandbox now forces reload every Deno invocation
220- Internal change: implemented new code standard with `@architect/eslint-config`
221
222
223### Fixed
224
225- Sandbox response headers are now remapped (and in some cases dropped) per observed behavior in API Gateway
226 - Worth noting, this follows *actually observed* API Gateway behavior; what's published in their docs (link below) has been known to differ from reality
227 - https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html
228 - Fixes #879; /ht @andybee
229- Fixed duplicate generation of table attribute definitions, fixes #828; thanks @filmaj! /ht @exalted
230- Sandbox's WebSocket `connectionId` was getting overwritten by concurrent client connections
231 - Sending a message to a `connectionId` before it has connected should emit a `GoneException`
232 - Fixes #818; ht @andybee for helping track this down!
233- Fixed `@aws` configuration in root project manifest and `.arc-config`, especially pertaining to the use of `layer` or `layers`; fixes #852, ht @jessrosenfield!
234- Fixed file pruning for projects with `@static folder` specified
235- Sandbox now checks to ensure `@static folder` exists, and errors if not found
236- Fixed `@static fingerprint ignore` with more recent versions of Architect Parser
237- Fixed Sandbox proxy lookup to custom 404 pages
238- Fixed incorrect filename in proxy 404 error message
239- Fixed exit condition of fingerprinter when no files are found
240- Fixed `@static fingerprint ignore` with more recent versions of Architect Parser
241- Fixed unsetting `@tables encrypt` setting locally; fixes #785, thanks @filmaj! /ht @m-butler
242
243---
244
245## [6.4.1] 2020-06-09
246
247### Added
248
249- Added layer region validation (instead of letting CloudFormation fail without a helpful error)
250
251
252### Fixed
253
254- Fixed `@aws` configuration in root project manifest and `.arc-config`, especially pertaining to the use of `layer` or `layers`; fixes #852, ht @jessrosenfield!
255
256---
257
258## [6.4.0] 2020-05-17
259
260### Added
261
262- Deploy can now deploy directly deploy single functions or groups of functions to Lambda by providing a path; examples:
263 - `arc deploy src` will dirty deploy all of `./src`
264 - `arc deploy src/http` will dirty deploy all of `./src/http`
265 - `arc deploy src/events/foo` will dirty deploy `./src/events/foo`
266 - As a reminder: direct deployments should be considered temporary / for testing only, and will be overwritten by any deployments coming in from a proper full deploy operation
267 - Fixes #625, shout out to @filmaj for this awesome feature! 🔥
268- Adds Yarn support to Sandbox and Hydrate
269- Improved default caching behavior for static assets; fixes #273
270 - Any assets that don't have `cache-control` explicitly set will now default to using `ETag` in order to improve the reliability of cache invalidation
271 - HTML & JSON responses still default to anti-caching headers
272- Added path peeking (aka pretty URLs); fixes #269
273 - URLs delivered via `proxy` no longer require a trailing slash!
274 - Example: to load `/foo/index.html`, you used to have to request `/foo/`
275 - Now, if `/foo` is requested, `proxy` will automatically try peeking into `/foo` to see if it contains `/foo/index.html` – if not, it'll 404 as expected
276- Added ETag support to Sandbox static asset serving
277- Adds Sandbox support for `multiValueHeaders` in response object; fixes #764, thanks @andybee!
278- Added support for arbitrary static asset config mapping
279 - Pass proxy `config.assets` a `static.json`-like static asset object
280- Added support for configuring `ruby2.7` and `dotnetcore3.1` runtimes
281
282
283### Changed
284
285- If creating a FIFO queue, set `ContentBasedDeduplication` to be enabled by default; thanks @filmaj!
286
287
288### Fixed
289
290- Fixed an issue where `multiValueHeaders` may conflict with `headers` values for `Content-Type`; thanks @andybee!
291- Fixed an issue where errors weren't being handled if the database port conflicted on startup; thanks @exalted!
292- Custom `@aws` WebSocket routes will now have their dependencies correctly hydrated, thanks @mawdesley!
293- Fixed Sandbox error `ERR_FEATURE_UNAVAILABLE_ON_PLATFORM` in Node.js 14; fixes #780, ht @stegosource
294- Fixed issue where `404` responses delivered from `@static` may be inadvertently cached by CDNs
295
296---
297
298## [6.3.5] 2020-04-18
299
300### Added
301
302- Added Sandbox watcher pausing
303 - The presence of `_pause-architect-sandbox-watcher` in your operating system's `$TMP` directory (usually `/tmp` or `c:\windows\temp`) will temporarily pause the Sandbox watcher
304 - This means Sandbox can remain open during deploys and neither `arc sandbox` or `arc deploy` should interfere with the other's dependency hyration
305 - This is also useful when combined with tools like `lint-staged` to ensure automated file stashing within `src/shared` and `src/views` doesn't result in hydration failures
306 - Sandbox cleans up this file on startup, jic
307- Allow Architect's CDN checks / processes to be disabled
308 - This means you can now configure and manage your own CDNs entirely via Macros; fixes #750, thanks @jgallen23!
309 - Syntax: `@cdn false` || `@cdn disable` || `@cdn disabled`
310
311
312### Changed
313
314- Improved Sandbox's missing dependency warnings to provide better instructions on how to install a missing dependency if the function in question does not already have a `package.json` file; /ht @exalted
315
316
317### Fixed
318
319- Fixed issue where explicit (or empty) returns in functions would provide a red herring error
320- When a non-existent `@events` Lambda is invoked, Sandbox will now gracefully fail
321- Updated dependency status checker, fixes false positive rehyhdration of packages installed by archive or git repo
322- Fixed issue where custom named deployments (`deploy --name`) wouldn't work with `static`; fixes #759, thanks @jgallen23!
323- Fixed issue where deploying static assets may deploy to the wrong bucket if additional buckets are defined in Macros; fixes #750, thanks @clintjhill + @jgallen23!
324
325---
326
327## [6.3.4] 2020-04-10
328
329### Fixed
330
331- Sandbox (and other workflows) should now restore the terminal cursor more reliably when quit
332- Sandbox now preserves leading / trailing whitespace in console logs
333- Fixed issue where `.arc-config` files with an `@aws timeout` value of exactly `900` (15 minutes) would not be respected in Sandbox
334
335---
336
337## [6.3.3] 2020-03-31
338
339### Added
340
341- Adds Sandbox warning for out of bounds dependency loads
342 - This helps to ensure that potential side effects of running Node.js locally – such as the `require` algorithm traversing the filesystem outside the boundaries of the function in question – are less likely to be discovered after deploying to live AWS infra
343
344
345### Fixed
346
347- Updated the call that starts Sandbox to ensure it initiates the filesystem watcher
348
349---
350
351## [6.3.2] 2020-04-10
352
353### Fixed
354
355- Fixed bug with static mocks in Package
356
357---
358
359## [6.3.0 - 6.3.1] 2020-03-24
360
361### Added
362
363- Added early support for deploying API Gateway HTTP APIs (currently only via [Macro](https://github.com/architect/arc-macro-http-api))
364- Lambda's payload size limits are now respected and mocked in Sandbox; payloads exceeding 6MB will fail to execute, as they would in AWS
365
366
367### Changed
368
369- If `@http` is defined, a static bucket will now be automatically be created
370 - `@http` makes `@static` implicit; `@static` still serves to configure static asset hosting
371 - If you don't use `@http` you can still use `@static` to independently create and configure static asset hosting
372- Updated `http-proxy` to support API Gateway HTTP APIs (say that three times fast)
373
374
375### Fixed
376
377- Fixed Sandbox issue where HTTP requests with large body payloads error with E2BIG; fixes #639, /ht @dawnerd
378
379---
380
381
382## [6.2.5] 2020-03-19
383
384### Changed
385
386- Architect now falls back to a very basic default project if an Architect project manifest file is not found in the root of the working directory
387- Requests in Sandbox that include query string arrays like `?ids=1&ids=2&ids=3&ids=4` are now consistent with API Gateway's request `multiValueQueryStringParameters` property; thanks @defionscode!
388- Deploy now ensures dependency hydration occurs before macros in the deploy process, enabling macros to mutate dependencies and shared files during a deploy
389 - A nice example macro to use is `@architect/arc-macro-node-prune`, which tidies up all the junk in your functions' `node_modules` directory
390- Minor improvements to auto-generated boilerplate function files
391
392
393### Fixed
394- `.arc-env` env vars now support a wider variety of special characters (such as `+`, `@`, `#`, etc.) if quoted, e.g. `FOO "sp#ci@lch+rs"`; fixes #638
395- Fixed Architect project manifest syntax errors and error reporting
396
397---
398
399## [6.2.4] 2020-02-29
400
401### Added
402
403- Added mocking of AWS's `multiValueHeaders` into Sandbox requests
404- Also added mocking of the headers AWS drops from requests
405
406
407### Fixed
408
409- Fixes differences in Sandbox between AWS's inconsistent header casing and our existing lowcase-normalized header casing; fixes #698
410
411---
412
413## [6.2.1 - 6.2.3] 2020-02-13
414
415### Changed
416
417- Sandbox now ensures `NODE_ENV` is one of `testing`, `staging`, or `production` (defaulting to `testing`)
418- Fix bad SQS in CloudFormation
419- Updates deps
420
421
422### Fixed
423
424- Fixed issue in Sandbox where pulling changes down with git (or Mercurial) would not trigger filesystem changes (e.g. auto-hydration, etc.); fixes #673
425- Removed validation from setting your app's environment variables (e.g. `arc env testing FOO bar`), use whatever you like! Fixes #669, thanks @rbuckingham!
426- Fixed issue within Architect Functions that caused issues in certain test harnesses that automatically set `NODE_ENV`
427- Fixed issue that may cause Sandbox to stall when called via the Architect CLI
428
429---
430
431## [6.2.0] 2020-02-04
432
433### Added
434
435- Added support for running multiple Sandboxes at the same time; fixes #635
436 - No more conflicting events and ports when running multiple simultaneous local Architect projects
437 - Also, you can now manually configure your `@events` port with `ARC_EVENTS_PORT`, and `@tables` port with `ARC_TABLES_PORT`
438 - Note: while unlikely, if you already manually specify your Sandbox's port, this may be a breaking change to your local workflow in two circumstances:
439 - 1) You use Architect Functions; to fix, upgrade to Functions `3.6` or later
440 - 2) You hardcode an `@events` client to port `3334` or DynamoDB client to port `5000`; you should now read the ports from `ARC_EVENTS_PORT` and `ARC_TABLES_PORT`
441 - This change is **NOT breaking to any live AWS / production infra**
442- Deploy dry-run flag: `deploy --dry-run`; fixes #649
443 - Test your `@macros`, function hydration, CloudFormation / SAM template files, and other deployment-related operations without actually building any live infra
444 - Dry-run mode runs through all deploy operations necessary to generate your app's CloudFormation / SAM template files
445 - **Heads up:** the AWS CLI requires a live, active S3 bucket to generate your app's templates; however no **live infra will be created** from these templates
446
447
448### Changed
449
450- Update dependencies
451
452
453### Fixed
454
455- Fixed Sandbox issue where DynamoDB (and other `aws-sdk`) calls may time out if a `~/.aws/credentials` file is not present
456- Fixed issue with shared code hydration in `python3.8`; fixes #650, thanks @rbuckingham!
457- Added support for `deno` in `utils.getRuntime`
458
459---
460
461## [6.1.9] 2020-02-03
462
463### Added
464
465- Better support for quiet mode in Sandbox:
466 - Via params: `sandbox.start({quiet: true})`
467 - Via env vars: `ARC_QUIET` (or legacy `QUIET`)
468 - Fixes #621; thanks @konsumer!
469- Adds discrete `sandbox.end([callback])` method for shutting down the Sandbox in test environments
470 - This method takes an optional callback or returns a promise
471- Sandbox now sets the `ARC_CLOUDFORMATION` env var used by Architect Functions and other libs
472 - This only occurs when running Sandbox against live infra (specifically: `NODE_ENV` = `staging` || `production`),
473
474
475### Changed
476
477- When called as module, `sandbox.end` now calls an optional callback or returns a promise; fixes #622, thanks @konsumer!
478- Sandbox now only starts the `@events` + `@queues` bus and `@tables` DB when called for by the Architect project manifest
479
480
481### Fixed
482
483- Improved logging for WebSocket invocations to be less confusing about potential non-error states when message action not found; fixes @sandbox#228
484
485---
486
487## [6.1.8] 2020-01-29
488
489### Added
490
491- Added `--static` flag to init to create a basic static asset app (instead of one with a `@http get /` function)
492 - Example: `arc init --static ./myapp` or `npm init @architect --static ./myapp`
493
494
495### Fixed
496
497- Fixed Sandbox issue with secondary index (`@indexes`) naming schemas first introduced with Architect 6; fixed #45, thanks @eshikerya & @konsumer
498
499
500### Changed
501
502- The default `.arc` file generated in new projects no longer includes a boilerplate for `@aws bucket`
503- Updated dependencies
504
505---
506
507## [6.1.6 - 6.1.7] 2020-01-24
508
509### Added
510
511- `@queues` are FIFO by default now; you can opt-out with `.arc-config` `fifo false`
512- `arc.queues.publish` will now accept a `groupID` parameter for ordering within a FIFO queue
513- Read more about queues! https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html
514
515### Fixed
516
517- Queues will sync VisibilityTimeout to the Lambda timeout
518
519---
520
521## [6.1.5] 2020-01-23
522
523### Fixed
524
525- Fixed local WebSocket port in `ARC_WSS_URL` in Sandbox
526
527---
528
529## [6.1.4] 2020-01-22
530
531### Added
532
533- Added `ARC_WSS_URL` env var on Sandbox startup (matches the environment variable behavior of Architect 6.0.25); fixed #225
534
535
536### Changed
537
538- Updated default Lambda runtime to match AWS's default: `nodejs12.x` (formerly `nodejs10.x`); fixed #609
539 - This means that upon your next deploy, any Lambdas that do not have a runtime specified will automatically be updated to `nodejs12.x`
540 - If you rely on the default runtime selection and would prefer to retain Node.js 10, you can either:
541 - Add `runtime nodejs10.x` to the `@aws` pragma of your Architect project manifest (`.arc`)
542 - Add a `.arc-config` file to the root of any individual functions you'd like to continue using `nodejs10.x` and add the same `@aws` pragma config specified above
543 - Read more here: https://arc.codes/reference/arc-config/runtime
544 - Quick example:
545```
546# .arc || src/http/get-index/index.js
547@aws
548runtime nodejs10.x
549```
550- Updated dependencies
551
552---
553
554## [6.1.3] 2020-01-21
555
556### Fixed
557
558- Fixes issue with hydration of shared code in functions using `nodejs12.x`; thanks @bardbachmann!
559
560
561### Updated
562
563- Update dependencies
564
565---
566
567## [6.1.2] 2020-01-20
568
569### Added
570
571- A `PointInTimeRecovery` attribute may now be added to tables defined in `.arc` for DynamoDB point-in-time recovery support; thanks @defionscode!
572
573---
574
575## [6.1.1] 2020-01-18
576
577### Added
578
579- An `encrypt` attribute may now be added tables defined in `.arc` for DynamoDB encryption support using customer or AWS managed KMS keys; thanks @defionscode!
580
581---
582
583## [6.1.0] 2020-01-13
584
585### Added
586
587- Finally: Architect now automatically creates a deployment bucket if one is not specified!
588 - If you already have a deployment bucket specified, nothing changes; Architect will continue using that
589 - If a deployment bucket was automatically created in a prior deployment and now no longer exists (or access to it is no longer available), a new bucket will be created and your app's configuration will be updated
590 - This also means the `@aws` pragma is no longer strictly necessary to deploy to AWS with Architect; you can now work completely from a `~/.aws/credentials` file or env vars
591
592
593### Fixed
594
595- Allow reading and destroying logs from `ws` paths; fixes @architect#538 + @logs#98, ht @jessehattabaugh, thanks @austinkelleher!
596 - Additionally fixes destroying from paths that include `000`
597
598---
599
600## [6.0.29] 2020-01-07
601
602### Added
603
604- AWS credentials can now be loaded via env vars (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`), which enables AWS STS and tools such as [AWS Vault](https://github.com/99designs/aws-vault)
605 - Thus, Architect no longer requires a `~/.aws/credentials` file to run
606 - Also allows local creds file to be overriden by env vars by specifying `ARC_AWS_CREDS=env`
607 - Also added AWS session token support via setting `AWS_SESSION_TOKEN` env var
608 - Fixes `utils` #26; thanks @ryan-roemer!
609- Enabled AWS `credential_process` usage via improved credential handling; fixes #582 thanks @defionscode!
610
611
612### Fixed
613
614- Credentials are now properly backfilled with dummy values for various workflows
615 - This ensures certain specific workflows (such as local Sandbox usage with `@tables`) won't crash or stall without a valid `~/aws.credentials` file present
616- Fixed Sandbox errors related to missing `aws-sdk` dependency
617
618
619### Updated
620
621- Updated dependencies
622
623---
624
625## [6.0.28]
626
627FIXME
628
629---
630
631## [6.0.27]
632
633FIXME
634
635---
636
637## [6.0.26] 2019-12-13
638
639### Added
640
641- Sandbox now passes full request params from WebSocket clients on `connect` and `disconnect`
642 - Now in addition to `request.requestContext.connectionId`, you'll have `request.headers`, and `request.queryStringParameters` (if present)
643 - Sandbox now only passes `request.body` to WebSocket functions that receive `message`s (instead of adding an empty `body` object to all requests)
644- Added proper emulation of API Gateway v2's WebSocket connection authorization
645 - Returning an object containing `statusCode` 2xx allows a WebSocket client to connect
646 - Returning any other status code will hang up on the request
647
648---
649
650## [6.0.25] 2019-12-02
651
652### Changed
653
654- Now prints WebSockets URLs upon deployment, thanks @jessehattabaugh!
655
656
657### Fixed
658
659- Fixes regression related `staging` and `production` WebSockets names and paths, thanks @jessehattabaugh!
660 - WebSockets APIs named `${appname}Websocket` are now named `${appname}Websocket${stage}` (like `@http` APIs)
661 - `production` WebSockets paths now correctly reflect the production stage (e.g. `longawsurl.com/production`)
662 - If you're using the `ARC_WSS_URL` env var, be sure to also update `@architect/functions`
663
664---
665
666## [6.0.24] 2019-12-02
667
668### Added
669
670- Adds `CAPABILITY_AUTO_EXPAND` for nested stack deployments; fixes #436, thanks @jgallen23!
671
672---
673
674## [6.0.23] 2019-11-19
675
676### Added
677
678- Added support for `nodejs12.x`, `python3.8`, and `java11` runtimes
679
680
681### Changed
682
683- Updated dependencies
684
685
686### Fixed
687
688- Fixed printing of unnecessary ANSI escape characters in CI environments (`CI` env, or not TTY output)
689
690---
691
692## [6.0.21] 2019-11-19
693
694### Fixed
695
696- Adds `ArcWebSocketPolicy` to the generated IAM Role
697- Adds `ARC_WSS_URL` environment variable to all Lambdas if `@ws` is defined
698- Fix `.arc-config` properties: `layers` and `policies`
699 - Adding one layer or policy per line: `layers my:arn:here` or `policies my:arn:here`
700 - Adding ARNs as a list (two spaces indented below `layers` or `policies`)
701 - eg:
702
703```arc
704@aws
705layers
706 my:arn:here
707 my:other:arn:here
708```
709
710### Removed
711
712- Generated CloudFormation template output value `WSS` is now a plain URL without `wss://` or `https://` protocol, without the `/staging` and `/production` path part, and the suffix `@connections` (which was removed by AWS from the `ApiGatewayManagementApi`)
713- Removed `ArcRoleReflection` policy from the generated IAM Role
714- Removed `PYTHONPATH` unless a Lambda function explicitly has a Python runtime
715
716---
717
718## [6.0.20] 2019-11-5
719
720### Added
721
722- Integrates new `@architect/create` module for bootstrapping projects and initializing project files
723- Added ability to specify project name and install path, e.g. `arc init ./foo` creates a dir named `foo` in your current dir, and creates a new Arc project named `foo` in there
724
725
726### Changed
727
728- Updated dependencies (which are also now using `@architect/create`)
729- Updated CLI documentation to reflect current functionality of `arc env`
730
731
732### Fixed
733
734- Fixes issue when `@tables` definition includes `stream true`; thanks @gr2m!
735- Fixes and `arc help <command>` command
736- Runtime flag now works for project creation: `runtime`, `--runtime`, or `-r` + `node`, `js`, `python`, `py`, `ruby`, `rb` initializes with Node, Python, or Ruby
737- Removed some unnecessary dependencies
738
739---
740
741## [6.0.19] 2019-10-17
742
743### Fixed
744
745- Fixes failed deploys if file type is unknown by common mime-type database; resolves #56, thanks @mikemaccana!
746- Fixes paths for deployment of assets on Windows; resolves #58, thanks @mikemaccana!
747
748---
749
750## [6.0.18] 2019-10-15
751
752### Added
753
754- Infrequently prints version update notifications to CLI
755
756---
757
758## [6.0.15 - 6.0.17] 2019-10-15
759
760### Added
761
762- Added update notifier to help ensure folks are running the (hopefully) least buggy, most stable, most secure version of Architect
763
764
765### Changed
766
767- Updated dependencies
768
769
770### Fixed
771
772- Fixes deployment issue if `get /` is not specified in `@http`; resolves @package#27, /ht @grahamb and @jeffreyfate!
773
774
775### Changed
776
777- Improves error states for missing static configs, 404s, etc. when using `@http` and/or `@static` with `arc.http.proxy` or without defining `get /`
778
779---
780
781## [6.0.15] 2019-10-14
782
783### Changed
784
785- Legacy WebSockets paths on the filesystem are now formally deprecated
786 - Your default three WebSockets paths should be: `src/ws/default`, `src/ws/connect`, `src/ws/disconnect`
787 - If you're using legacy WebSockets paths (either `src/ws/ws-default` or `src/ws/ws-$default`), simply remove `ws-[$]` and you should be all set!
788
789
790### Fixed
791
792- Fixed issue when emitting to WebSockets with Arc Functions (`arc.ws.send`); resolves #48, thanks @andybee + @bvkimball!
793- Fixed issue where `sandbox` may not have correctly resolved some custom WebSocket actions
794- Fixed HTTP request with `body` and no `Content-Type` header; resolves #102, thanks @andybee!
795- Fixed issue where killed subprocesses would not trigger timeouts; resolves #30, /ht @mikemaccana
796- Fixed issue where functions with legacy runtimes may not have been fully hydrated
797
798---
799
800## [6.0.14] 2019-10-11
801
802### Added
803
804- Added support for `@static fingerprint true` in root spa / proxy requests
805 - This enables Architect projects to deliver fully fingerprinted static assets while also ensuring that each file is appropriately cached by clients and network infra
806 - Also includes support for build-free calls between your fingerprinted static assets
807 - Example: in `public/index.html`, use the following syntax to automatically replace the local / human-friendly filename reference to the deployed fingerprinted filename:
808 - `${arc.static('image.png')}` will be automatically replaced by `image-a1c3e5.png`
809 - Or `${STATIC('image.png')}` (which is the same thing, but shoutier)
810 - Note: although those look like JS template literal placeholders, they're intended to live inside non-executed, static files within `public/` (or `@static folder foo`)
811
812
813### Changed
814
815- Updated dependencies
816- Ensures html / json are published to S3 with anti-cache headers
817
818
819### Fixed
820
821- Restores static asset pruning (`arc deploy --prune` or `arc deploy --static --prune`)
822- Fixes issues with parsing certain properties in `arc.json`, thanks @mikemaccana!
823- Fixed issue that may prevent `repl` from working in more recent versions
824- Add anti-caching headers to `sandbox` 404 response
825- Fixes root spa / proxy requests when Architect and/or Sandbox are globally installed; resolves #92 /ht @grahamb
826
827---
828
829## [6.0.13] 2019-10-02
830
831### Fixed
832
833- Fixed issue where with `@static fingerprint true` enabled, the `static.json` file would not be copied into deployed functions' shared dirs; thanks @dawnerd + @jgallen23!
834- Removed unnecessary second-order dependency, which should lighten up the Architect install size a bit
835
836
837### Changed
838
839- Updated dependencies
840
841---
842
843## [6.0.11 - 6.0.12] 2019-09-29
844
845### Added
846
847- `sandbox` Auto-hydration received a bunch of nice upgrades:
848 - Auto-hydration now detects changes to the state of your installed Node dependencies, and rehydrates if necessary; for example:
849 - You're working on a project, and a teammate updates a dependency in `get /foo` from version `1.0.0` to `1.1.0`
850 - Upon your next git pull, `sandbox` will detect the dependency update in `get /foo` and automatically install version `1.1.0` for you
851 - Auto-hydration now has a rate limit of one change every 500ms to prevent recursive or aggressive file updates
852 - Auto-hydration now has `@static folder` support
853 - Auto-hydration now only hydrates the shared files necessary
854 - For example: if you change a file in `src/views`, it will only update your `@views` functions, and not attempt to rehydrate all your project's functions with `src/shared`
855 - Events now have a timestamp and improved formatting
856- Beta: `sandbox` init script support!
857 - `sandbox` will now run the init script of your choosing upon startup after all subsystems have started up:
858 - `scripts/sandbox-startup.js` - a CommonJS module, receives your parsed Arc project as a parameter, supports async/await
859 - `scripts/sandbox-startup.py` - a Python script
860 - `scripts/sandbox-startup.rb` - a Ruby script
861- Startup auto-hydration now hydrates `src/views` and `src/shared`
862- Added support for `@static folder` to static asset `fingerprint`ing
863
864
865### Changed
866
867- Improvements to the conditions under which the HTTP server starts, shuts down, and restarts; fixes `sandbox` #65
868- Improved `sandbox` async error copy (displayed when execution does not complete)
869- Proxied requests in `sandbox` now sends a proper `req.resource`, which can resolve some SPA bugs, esp when used with newer Arc Functions
870- `sandbox` now respects and errors on invalid response params for proper Architect 6 compatibility; fixes `sandbox` #49
871- Updates `sandbox` to Dynalite to `3.0.0`, thanks @mhart!
872- Better 404 / file missing handling in `sandbox` when using `http.proxy` (or loading assets without `@http get /` specified)
873- `hydrate --update` now properly inventories its update operations, avoiding superfluous work
874
875
876### Fixed
877
878- Fixes correct inventory paths for `src/ws/*`, which should in turn fix WebSocket function hydration, thanks @mikemaccana!
879- When auto-hydrating functions upon startup, `sandbox` no longer hydrates `src/views` and `src/shared` with each function
880- Fixed issue where `hydrate`'s shared file copying may have leaked across Lambda executions in rare circumstances
881- Fixed undefined message in `hydrate` init
882- Improved `hydrate` error bubbling
883- Formatting and line breaks in `hydrate` printer return should now more closely (or exactly) match console output
884- Fixed issue where in certain circumstances `get /` wouldn't reload `sandbox` after a change to the project manifest
885- Minor fix where if you specified a `SESSION_TABLE_NAME` env var outside of `.arc-env`, `sandbox` won't clobber it
886- Fixed caching headers for various `sandbox` error states (async, timeout, etc.) to ensure your browser won't accidentally cache an error response
887- Fixes issue where binary assets delivered via `sandbox` / root may not be properly encoded
888- Fixes empty mock `context` object encoding
889
890---
891
892## [6.0.10] 2019-09-11
893
894### Changed
895
896- Running `hydrate` now properly inventories its update operations, avoiding superfluous work there as well
897- Results returned by `hydrate` are now symmetrical with what's printed
898- `@http` functions are now provisioned with the `ARC_HTTP` env var, which is set to `aws_proxy`
899
900
901### Fixed
902
903- Fixed `env` to ensure env vars were populated out of the correct region
904- `sandbox.close` will no longer throw an error if project doesn't use `@http` or `@ws`
905- Fixed reliability of `hydrate` and other Architect operations printing in CI containers and other non-TTY environments
906
907---
908
909## [6.0.9] 2019-09-09
910
911### Changed
912
913- Running `hydrate` now properly inventories its install operations, avoiding superfluous work
914
915
916### Fixed
917
918- Fixed issue where `sandbox` would hang if POST requests were sent without a body
919- Fixed `logs` to ensure log data is read out of the correct region
920- Fixed S3 permissions to enable direct asset uploading
921
922---
923
924## [6.0.8] 2019-09-06
925
926### Fixed
927
928- Fixes case where user-defined region may not be respected
929- Fixes provisioning `@scheduled` functions
930
931---
932
933## [6.0.7] 2019-09-05
934
935### Changed
936
937- Add clearer bucket region instructions during init
938
939---
940
941## [6.0.6] 2019-08-30
942
943### Changed
944
945- Internal change; improve error handling states
946
947---
948
949## [6.0.5] 2019-08-28
950
951### Added
952
953- Added initialization confirmation messages
954
955
956### Changed
957
958- Improved boilerplate project files written during initialization
959- Updated boilerplate .arc file initialized
960- Patched vendored proxy bundle to 3.3.7
961- Updated deps
962
963---
964
965## [6.0.4] 2019-08-27
966
967### Changed
968
969- Updated deps
970
971---
972
973## [6.0.3] 2019-08-24
974
975### Fixed
976
977- Internal error handling change
978
979
980### Changed
981
982- Updated deps
983
984---
985
986## [6.0.1 - 6.0.2] 2019-08-22
987
988### Fixed
989
990- Fixes issue with auto-hydration of new dependencies during `sandbox` startup
991- Fixes issue with `arc deploy --static` throwing an unnecessary error after uploading files, fixes #427
992- Fixes minor copy issue in `arc deploy` reporting the incorrect static asset folder when there are no files to deploy
993
994---
995
996## [6.0.0] 2019-08-20
997
998### Changed
999
1000- Many things! Updates to this changelog forthcoming shortly. Arc 6.0 is a breaking change, please refer to https://arc.codes and upgrade mindfully!
1001
1002---
1003
1004## [5.9.24] 2019-08-05
1005
1006### Fixed
1007
1008- Resolves issue where static assets aren't loading from `_static/` in `sandbox`, fixes #416
1009
1010---
1011
1012## [5.9.23] 2019-07-23
1013
1014### Fixed
1015
1016- Fixed issue preventing Ruby functions from properly executing in `sandbox`
1017- Fixed issue prevent Python functions from properly executing in Windows `sandbox`
1018- Fix broken characters in Windows `sandbox` console
1019- Fixes super obscure bug where certain shared files may not be included in a single function deploy
1020
1021### Changed
1022
1023- `sandbox` context now passes an empty object (to be mocked soon!) to all runtimes
1024 - This deprecates the legacy AWS implementation of `context` (since retired in production) passed to `sandbox` Node functions
1025
1026---
1027
1028## [5.9.21-22] 2019-07-17
1029
1030### Added
1031
1032- Adds auto-hydration to new functions without restarting `sandbox`
1033
1034
1035### Fixed
1036
1037- Fixes issue with auto-hydration on `sandbox` startup
1038- Fixes potential issue in static asset deploys in Windows
1039
1040---
1041
1042## [5.9.20] 2019-07-15
1043
1044### Added
1045
1046- Expanded support for static asset fingerprinting! If you've enabled fingerprinting (`@static fingerprint true`):
1047 - `sandbox` will regenerate your `public/static.json` file on startup
1048 - And whenever making any changes to your `public/` dir, `sandbox` auto-refresh will automatically regenerate `public/static.json` and re-hydrate your shared files with the latest version
1049
1050
1051### Fixed
1052
1053- `sandbox` auto-refresh now detects file deletions from `src/shared` and `src/views`
1054
1055---
1056
1057## [5.9.19] 2019-07-12
1058
1059### Added
1060
1061- Adds PYTHONPATH to `sandbox` Lambda invocation for `/vendor` modules
1062
1063### Fixed
1064
1065- Fixes `sandbox` crashing when `get /` and other functions aren't defined in `.arc` or present in the filesystem, but are requested by a client
1066- Prevents startup of http server if `@http` isn't defined in `.arc`
1067- Improves `sandbox` support in Windows
1068
1069---
1070
1071## [5.9.18] 2019-07-12
1072
1073### Fixed
1074
1075- Fixes WebSocket provisioning issue
1076
1077---
1078
1079## [5.9.17] 2019-07-12
1080
1081### Changed
1082
1083- Disables delta resource creation during deployments
1084 - This functionality is better served by more reliable and deterministic resource creation via the forthcoming Architect 6 release
1085
1086---
1087
1088## [5.9.16] 2019-07-12
1089
1090### Changed
1091
1092- Reverts previous breaking change on WebSockets, default directories that get created are now once again `ws-connect`, `ws-default`, and `ws-disconnect`
1093
1094---
1095
1096## [5.9.15] 2019-06-26
1097
1098### Added
1099
1100- Auto-refresh! `sandbox` now keeps an eye out for the following changes to your project:
1101 - Edits to your Architect project manifest will mount or unmount HTTP routes without having to restart `sandbox`
1102 - Changes to `src/shared` and `src/views` will automatically rehydrate your functions' shared code
1103 - More to come!
1104
1105
1106### Changed
1107
1108- Prettied up `sandbox` initialization printing a bit
1109
1110---
1111
1112## [5.9.14] 2019-06-25
1113
1114### Added
1115
1116- Auto-hydration!
1117 - Say goodbye to running `npx hydrate` before starting new projects, cloning existing projects, or pulling down new functions
1118 - On startup, any functions missing dependencies on the local filesystem will now be auto-hydrated
1119 - Supported runtimes and dependency manifests: Node + `package.json` (requires npm >= 5.7), Python + `requirements.txt` (calls pip3), and Ruby + Gemfile (calls bundle)
1120
1121---
1122
1123## [5.9.10-13] 2019-06-24
1124
1125### Fixed
1126
1127- Ensures `sandbox` starts in the cases of:
1128 - No local AWS credentials file (e.g `~/.aws/credentials`)
1129 - The local AWS credentials file is present, but is missing the requested profile name
1130 - Fixes #382, 391
1131- Fixed issue with `hydrate` caused by an errant merge
1132
1133---
1134
1135## [5.9.9] 2019-06-23
1136
1137### Changed
1138
1139- Projects that use WebSockets (`@ws`) in their `.arc` file will need to be cautious about upgrading
1140 - The default directories that get created are now `ws-$connect`, `ws-$default`, and `ws-$disconnect`; it is recommended that you run `npx create` and copy your code from `ws-connect` to `ws-$connect`, `ws-default` to `ws-$default`, and `ws-disconnect` to `ws-$disconnect` and then delete the old directories
1141
1142### Fixes
1143
1144- `@ws` directive now works correctly with the `npx inventory` command set
1145- Fixes `sandbox` wrapper when use as async module, adds `sandbox` test
1146
1147---
1148
1149## [5.9.8] - 2019-06-19
1150
1151### Changed
1152
1153- Deployments of static assets now follow symlinks in the `public/` directory
1154
1155---
1156
1157## [5.9.5-7] - 2019-06-18
1158
1159### Changed
1160
1161- The `sandbox` workflow is now its own module!
1162 - No functionality changes to `sandbox` in this release
1163 - A few minor improvements to `sandbox` console messages during startup, and drying up port assignment logic
1164 - You can find the `sandbox` module at https://github.com/architect/sandbox
1165
1166
1167### Fixed
1168
1169- Some Arc-supported runtimes defined in `.arc-config` files (such as `nodejs8.10`) will no longer cause `sandbox` to crash
1170
1171---
1172
1173## [5.9.4] - 2019-06-15
1174
1175### Added
1176
1177- Added ability to disable Architect managing a given function's environment variables
1178 - Add an `@arc` pragma to your function's `.arc-config` file, and pass it the `env false` flag
1179
1180
1181---
1182
1183## [5.9.3] - 2019-05-29
1184
1185### Fixed
1186
1187- Corrects URI encoding when accessing local static assets in _static, fixes #390
1188- Warns users of static deployments of files approaching the payload limit of Lambda, fixes #387
1189- Fixes static deploy errors of unknown file types
1190
1191
1192---
1193
1194## [5.9.0 - 5.9.2] - 2019-05-23
1195
1196### Added
1197
1198- CloudFormation support! 🚀
1199 - `npx package` will export the current `.arc` file to `sam.json` and print further instructions for deploying
1200 - Currently only `@http`, `@static` and `@tables` pragmas are supported; you can track the other pragmas dev (or submit a PR!) here at #386
1201 - Any env vars in `.arc-env` are automatically applied to the CloudFormation stack
1202 - `.arc-config` settings are also fully supported
1203 - Unfortunately CF currently has a bug with binary media types which we're tracking here https://github.com/awslabs/serverless-application-model/issues/561
1204- Static asset fingerprinting beta!
1205 - Add `fingerprinting true` to your `@static` pragma to enable fingerprinting
1206 - Add `ignore` followed by a two-space indented list to ignore certain files from `public/`
1207 - [More information here](https://arc.codes/reference/static)
1208- Added new flag for pruning old static assets: `npx deploy [--static] --prune`
1209- Added ability to completely disable shared folder copying into functions
1210 - Add an `@arc` pragma to your function's `.arc-config` file, and pass it the `shared false` flag
1211- Ruby and Python local runtime support
1212 - `.arc-config` with `runtime` of either `ruby2.5` or `python3.7` works on localhost (make sure you have python and ruby installed!)
1213
1214
1215### Fixed
1216
1217- Hydration (and other things that depend on hydrator operations) should now work more reliably on non-UNIXy machines
1218
1219
1220---
1221
1222## [5.8.7] - 2019-05-21
1223
1224### Fixed
1225
1226- Fixes lack of `console.[warn|error|trace]` output in sandbox console
1227
1228
1229## [5.8.5 - 5.8.6] - 2019-05-15
1230
1231### Changed
1232
1233- Default Lambda runtime is now Node 10.x (from Node 8.10)
1234- Added simple rate limits to `npx config` and `npx config --apply`
1235- Updated dependencies
1236
1237
1238---
1239
1240## [5.8.0 - 5.8.4] - 2019-05-08
1241
1242### Added
1243
1244- Adds `npx inventory nuke -f` for deleting DynamoDB tables and S3 buckets (even if they have contents)
1245 - Also adds aliases: `npx inventory -nf`, `npx inventory -fn`
1246- Scheduled function state enabled / disabled flag in `.arc-config` with `npx config`
1247- Concurrency `0-1` flag in `.arc-config` with `npx config` (applies to all function types)
1248- Support for custom routes in WebSocket API Gateways
1249 - `@ws` now accepts routes defined in `.arc`
1250 - To use these custom routes, the client message must contain an `action` key that is the name of the route
1251
1252
1253### Fixed
1254
1255- DynamoDB tables and indexes now enqueue during create; fixes #268
1256- Sync queue visibility to function timeout; fixes #204
1257- Verifies queue resources deleted with `npx inventory nuke`; fixes #132
1258- Enhanced cron() and rate() validatation; fixes #148
1259- Now `npx inventory nuke` destroys Lambdas and CloudWatch Events rules
1260- Enhanced error reporting for bad creds or bad arcfiles (closes #339, #364)
1261
1262
1263### Changed
1264- New GitHub name! Find us at: [github.com/architect](https://github.com/architect)
1265 - If you're already developing for Architect projects, don't forget to update your git remotes, e.g.: `git remote set-url origin https://github.com/architect/architect.git && git remote -v`
1266 - Special thanks to @pug132 for the name (and a big hat-tip to @mikemaccana)!
1267- scheduled functions always putRule on `npx create` (fixes #326)
1268
1269
1270---
1271
1272## [5.7.0] - 2019-04-17
1273
1274### Added
1275
1276- Support for AWS layers! /ht @julianduque
1277 - You may now specify `layer $layerARN` in the `@aws` section of your project manifest, or `.arc-config` files (see: [config](https://arc.codes/reference/arc-config)!
1278- Support for additional runtimes: `python3.7` and `ruby2.5`!
1279 - The list also includes: `nodejs8.10`, `python3.6`, `go1.x`, `dotnetcore2.1`, and `java8`
1280 - Specify `runtime $yourRuntime` in the `@aws` section of your project manifest, or `.arc-config` files
1281 - Of course, you can also add the runtime of your choosing by way of layer support
1282- Support for `application/binary-octet` & `multipart/form-data` requests, fixes #353
1283 - Requests with those two `Content-Type` headers will produce a `base64` object in the `body` object, like so: `body: {base64: 'R28gR2lhbnRzIQ=='}`
1284 - Empty request bodies will still produce an empty object (e.g. `body: {}`)
1285
1286
1287### Fixed
1288
1289- `config [--apply]` now has an easier to read layout, improved diffing, and instructions on how to apply changes
1290- Added resource creation error handling and validation to `deploy`
1291- Invalid runtime settings emit a friendly warning about defaulting to `node8.10`
1292
1293
1294### Changed
1295
1296- `get /` no longer required by `@http`
1297- Updated dependencies (most notably `@architect/parser` to support `runtime` and `layers` settings)
1298- Resource creation error handling moved into common utils (internal)
1299
1300
1301---
1302
1303
1304## [5.6.3] - 2019-04-08
1305
1306### Fixed
1307
1308- Fixes WebSocket support in `sandbox`; fixes #328 /ht @rschweizer
1309
1310
1311### Changed
1312
1313- Cleans up http invocation for doc content-types in `sandbox`
1314- Slightly better rate limit error message
1315
1316
1317---
1318
1319
1320## [5.6.1] - 2019-04-06
1321
1322### Added
1323
1324- Adds `req.httpMethod` and `req.queryStringParameters`
1325
1326
1327### Removed
1328
1329- Removes deprecated code paths
1330
1331
1332---
1333
1334
1335## [5.6.0 - 5.6.1] - 2019-04-04
1336
1337### Added
1338
1339- Enables both text and binary file transit in newly provisioned Arc apps
1340- Adds the same capability to `sandbox`
1341- This is NOT a breaking update, however if you'd like your existing app to serve binary assets, you'll need to re-create your API (or hang tight until we release our forthcoming API migration tool)
1342- Adds `req.httpMethod` and `req.queryStringParameters`
1343- Removes deprecated code paths
1344
1345---
1346
1347
1348## [5.5.10] - 2019-03-15
1349
1350### Added
1351
1352- Cache-control header support to `sandbox`
1353 - Default for local dev environment is not to send any `cache-control` header
1354 - If specified, `cache-control` passes through
1355
1356
1357---
1358
1359## [5.5.9] - 2019-03-13
1360
1361### Added
1362
1363- Cache-control header support; if not specified, defaults to:
1364 - HTML + JSON: `no-cache, no-store, must-revalidate, max-age=0, s-maxage=0`
1365 - Everything else: `max-age=86400`
1366 - This change only applies to Architect apps provisioned from this version forward
1367
1368### Fixed
1369
1370- Default `content-type` response of `application/json` is now `application/json; charset=utf-8;`
1371
1372### Changed
1373
1374- Updated dependencies
1375
1376---
1377
1378## [5.5.6 - 5.5.8] - 2019-02-28
1379
1380### Fixed
1381
1382- Now properly deletes the entire CloudWatch log group when nuking; fixes #311 /ht @mikeal
1383- Fixes `sandbox` to work properly when `content-type` has charset assignment; #303, #305 /ht @hada-unlimited
1384- Fixes issue with `audit` breaking on `@ws` functions; #311 /ht @mikeal
1385- `sandbox` now accepts `statusCode`, in addition to `status` and `code`; fixes #323
1386
1387
1388---
1389
1390## [5.5.5] - 2019-02-22
1391
1392### Fixed
1393
1394- Fixes ordering logs by last event /ht @mikeal
1395
1396
1397---
1398
1399## [5.5.2 - 5.5.4] - 2019-02-20
1400
1401### Fixed
1402
1403- `logs` forces descending order
1404- Query params no longer trigger index.html override for `sandbox`
1405- Adds support for `text/tsx` in `/public`
1406
1407
1408---
1409
1410## [5.5.1] - 2019-02-08
1411
1412### Changed
1413
1414- Updated dependencies
1415
1416### Removed
1417
1418- `test:watch` script and `tape-watch` devdep (due to multiple dependencies with CVEs)
1419
1420
1421---
1422
1423## [5.5.0] - 2019-02-03
1424
1425SPA support: mount S3 on the `/` of API Gateway
1426
1427### Added
1428
1429- `ANY /{proxy+}` will now route any 'not found' to the HTTP Lambda `src/http/get-index`
1430 - Note: proxy+ routes have a slightly different request payload that includes `request.requestContext` not available to regular HTTP Lambdas (so you can use this to test a 404 condition)
1431- `ANY /_static/{proxy+}` will proxy to S3 buckets defined by `@static` (if you want to skip proxying through Lambda)
1432- Companion library `@architect/functions` also gained `arc.proxy.public` superpower for proxying all requests NOT defined by `.arc` to the `@static` S3 buckets
1433
1434[For more about single page apps with Architect see there docs here.](https://arc.codes/guides/spa)
1435
1436
1437### Changed
1438
1439- If `@http` is defined, then `get /` must also be defined
1440- `npx sandbox` now mounts `/public` on `http://localhost:3333/_static` to match the deployed API Gateway S3 proxy
1441
1442
1443---
1444
1445## [5.0.6] - 2019-01-25
1446
1447### Added
1448
1449- Improvements to build plugins system (did you know Architect has a build plugins system?)
1450 - Now supports NPM scoping (e.g. `@architect/arc-plugin-node-prune`)
1451 - Build preparation order now runs pre-deploy build plugins last (after dependency hydration)
1452 - Published a companion beta / demo plugin: [`@architect/arc-plugin-node-prune`](https://www.npmjs.com/package/@architect/arc-plugin-node-prune), clean the cruft out of your `node_modules`!
1453
1454
1455### Fixed
1456
1457- Fixes `create` breaking if `@ws` is not present in `.arc`, #276
1458
1459
1460---
1461
1462## [5.0.4] - 2019-01-24
1463
1464### Added
1465
1466- `repl` now respects environments, allowing you to connect to your remote databases with the `NODE_ENV` environment variable
1467
1468
1469### Fixed
1470
1471- `repl` was being clobbered by `@architect/data`'s own implementation; fixed in `architect/arc-data` #12, dependency updated
1472
1473
1474### Changed
1475
1476- Updated dependencies
1477
1478
1479---
1480
1481## [5.0.2] - 2019-01-22
1482
1483### Added
1484
1485- Support for `@ws` in `.arc` for generating WebSocket Lambdas and API Gateway endpoints
1486- Support for WebSocket Lambdas in the local sandbox
1487- WebSocket Lambdas support in `inventory`, which in turn powers most other workflows
1488
1489
1490### Removed
1491
1492- Support for `@slack` as the more generic `@http` Lambdas support that use case better
1493
1494
1495### Fixed
1496
1497- Fixes `@indexes` creation bug
1498- Runs `npm i` during `hydrate --update`, resolving a long-standing NPM issue where package-lock files may fall out of sync
1499- Fixed: on Windows, S3 assets will be correctly created relative to their location beneath `public` rather than their full paths.
1500
1501### Changed
1502
1503- Updated dependencies
1504
1505
1506---
1507
1508## [4.5.6] - 2019-01-14
1509
1510
1511### Fixed
1512
1513- Fixes callback in _create-code task, fixes #263
1514
1515
1516### Changed
1517
1518- Improved error handling in NPM operations
1519
1520
1521---
1522
1523## [4.5.5] - 2019-01-11
1524
1525
1526### Fixed
1527
1528- In Windows, NPM no longer fails with `undefined`, fixes #261
1529
1530
1531---
1532
1533## [4.5.4] - 2019-01-10
1534
1535
1536### Changed
1537
1538- Improved status reporting during `deploy` and `create`
1539
1540
1541### Fixed
1542
1543- Fixes cases where hydration was crashing single function deployments, and deployments that execute `create` for missing resources
1544
1545
1546---
1547
1548## [4.5.1] - 2019-01-08
1549
1550
1551### Changed
1552
1553- `hydrate` refactor and API
1554 - NPM operations are now queued and concurrently processed (env var `ARC_MAX_NPM`, defaults to 10) /ht @grncdr
1555 - Vastly improved NPM error handling and related deployment reliability (fixes #141 + #151)
1556 - Now hydrates (and updates) deterministically from the current .arc manifest, as opposed to globbing
1557 - All NPM operations now use `npm ci` for more consistent behavior across environments
1558 - Updates `deploy` to use `hydrate` API, and `sandbox` to use new shared code copier module
1559- DynamoDB tables now use on-demand/pay-per-request billing mode, mitigating the need for capacity planning /ht @alexdilley
1560- `inventory` now supplies its own Arc project data, allowing it to be called as needed without relying on `util/init`
1561
1562
1563### Fixed
1564
1565- Freshly created Functions are now properly hydrated with shared code (if available and appropriate; fixes #241)
1566- Running `create` on already existing projects now runs orders of magnitute faster
1567- `.arc` file is now reliably copied into each Function's `node_modules/@architect/shared` even if you don't use `src/shared` (needed by `@architect` deps)
1568- `deploy` now respects `--delete` flag when deploying the whole project
1569- Improved progress reporting in `CI` mode, and for `hydrate`, `create`, and `deploy`
1570
1571
1572### Added
1573
1574- New command: `hydrate --shared [--update]` - hydrates and/or updates `src/shared` and `src/views` (if available)
1575- Added test run watcher script /ht @filmaj
1576
1577
1578---
1579
1580## [4.4.12] - 2018-12-23
1581
1582
1583### Removed
1584
1585The following folders are no longer required nor autogenerated:
1586
1587- `src/shared`
1588- `src/views`
1589- `/public`
1590
1591Functionality remains unchanged: Contents of `src/shared` are synced to `node_modules/@architect/shared` in all lambdas whenever deploying or using the sandbox. Contents of `src/views` are synced to all HTTP GET lambdas `node_modules/@architect/views`. Public is synced to S3 buckets.
1592
1593
1594---
1595
1596## [4.4.11] - 2018-12-19
1597
1598
1599### Added
1600
1601- Updates `sandbox`, adding minor performance tweaks now, and setting up for future enhancements
1602 - Updated `sandbox` to asynchronously read files when invoking a Lambdas
1603 - Updates runtime handling in `sandbox` to make it easier to add additional runtimes
1604 - Each runtime now lives in its own function, which also enables process forking later on
1605
1606
1607---
1608
1609## [4.4.10] - 2018-12-18
1610
1611
1612### Added
1613
1614- New logo (added to readme)! /ht @amberdawn
1615- `hydrate` and `deploy` now install dependencies in `src/shared` and `src/views` (#240)
1616- `QUIET` boolean env var suppresses init header (fixes #238)
1617 - Helpful for piping data to disk, e.g. setting up new users on an Architect project with `QUIET=1 npx env > .arc-env`
1618- `app.arc` app filename supported as a non-dotfile alternative to `.arc` (#239)
1619
1620
1621### Changed
1622
1623- Static asset deploys now exclude default `public/readme.md` file
1624- Improved `hydrate` progress and completion confirmation
1625- Adds Architect version back into the init header
1626
1627
1628### Fixed
1629
1630- `hydrate` was not properly globbing (and thus, not hydrating) `src/shared` contents
1631
1632
1633---
1634
1635## [4.4.9] - 2018-12-16 (merge commit, no changes)
1636
1637
1638---
1639
1640## [4.4.8] - 2018-12-12
1641
1642
1643### Added
1644
1645- To help accommodate `sandbox` calling out to remote databases, `SANDBOX_TIMEOUT` env var allows you specify in seconds how long `sandbox` should wait for all child processes to complete
1646 - `SANDBOX_TIMEOUT` is overridden by any directory-specific `.arc-config` files
1647
1648
1649### Changed
1650
1651- Default `sandbox` timeout is now symmetrical with Architect's default Lambda timeout time of 5 seconds
1652
1653
1654---
1655
1656## [4.4.7] - 2018-12-11
1657
1658
1659### Added
1660
1661- Form-encoded POST values can now be sent enclosed in single quotes /ht @herschel666
1662
1663
1664### Changed
1665
1666- Skip logging when `@static` isn't deployed
1667- Additional hardening of `sandbox` handling of JSON responses emitted from `@architect/functions`
1668- Preliminary / prototype commits for outputting CloudFormation from .arc
1669- Preliminary / prototype commits in the direction of adding arbitrary header support /ht @mweagle
1670
1671
1672### Fixed
1673
1674- Issue where `arc.http` JSON responses were crashing `sandbox` due to an encoding mismatch
1675- Issue where `ARC_LOCAL` env var wasn't being properly respected by `sandbox` events
1676
1677
1678---
1679
1680## [4.4.5] - 2018-12-7
1681
1682
1683### Added
1684
1685- Local `@queues` now available in `sandbox`
1686- Big ups to @grncdr for this feature!
1687
1688
1689### Fixed
1690
1691- `hydrate` wasn't updated to use the new progress indicator, and would fail when used – no longer!
1692
1693
1694---
1695
1696## [4.4.4] - 2018-12-1
1697
1698
1699### Added
1700
1701- `deploy` operations now read local and remote last-modified times, and will skip files whose times don't differ, thereby speeding up deploy operations of static files
1702- Big ups to @filmaj for this release, too!
1703
1704
1705---
1706
1707## [4.4.3] - 2018-11-30
1708
1709
1710### Added
1711
1712- `npx deploy static`: deploys only `@static` assets (as found in the `public/` folder)
1713 - Accepts `staging | --staging | -s` and `production | --production | -p` flags
1714- `npx deploy static --delete`: deploys static assets, and deletes remote S3 files not present locally in `public/`
1715 - Can be used with `staging` and `production` flags
1716- Big ups to @filmaj for this release!
1717
1718
1719---
1720
1721## [4.4.0] - 2018-11-27
1722
1723
1724### Added
1725
1726- Large refactor of `deploy` workflow to improve stability and reliability
1727- `deploy` now identifies missing project resources during deploy operations
1728 - Instead of failing / throwing errors, `deploy` now completes its first pass deployment
1729 - Then, once completed, `deploy` creates any resources missing from the deployment (and deploys them)
1730
1731
1732### Changed
1733
1734- `npx inventory --nuke` now destroys `@static` resources (S3 buckets) and `@events` resources (SNS Topics).
1735- New projects will no longer create `arc-sessions` tables (for use with `@architect/functions`) by default, and are now explicitly opt-in
1736- Replaces `progress` module with a lighter weight, more readily cross-platform homegrown solution
1737
1738
1739---
1740
1741## [4.3.14] - 2018-11-26
1742
1743
1744### Changed
1745
1746- `logs` command results now sorted chronologically
1747
1748
1749### Fixed
1750
1751- Fixes console leaking of large responses in `sandbox`
1752
1753
1754---
1755
1756## [4.3.13] - 2018-11-24
1757
1758
1759### Fixed
1760
1761- `sandbox` was broken in the JWE changeover
1762- Fixes some broken tests
1763
1764
1765### Removed
1766
1767- Unnecessary session table test stubs
1768
1769
1770---
1771
1772## [4.3.12] - 2018-11-23
1773
1774
1775### Changed
1776
1777- New default for Architect sessions is based on JWE
1778- DynamoDB sessions are still available, but [now opt-in](https://arc.codes/guides/sessions)
1779- `sandbox` now matches the 6MB request payload limit of Lambda /ht @herschel666
1780
1781
1782---
1783
1784## [4.3.10] - 2018-11-19
1785
1786
1787### Added
1788
1789- dotfiles are now included in Lambda deployments
1790
1791
1792---
1793
1794## [4.3.9] - 2018-11-15
1795
1796
1797### Changed
1798
1799- Architect parser now accepts multiple spaces between http verb and path in `@http` functions
1800
1801
1802### Fixed
1803
1804- `sandbox` now properly pretty prints paths
1805
1806
1807---
1808
1809## [4.3.8] - 2018-11-14
1810
1811
1812### Added
1813
1814- Additional S3 deploy tests
1815
1816
1817---
1818
1819## [4.3.7] - 2018-11-13
1820
1821
1822### Changed
1823
1824- `sandbox` clears async function timeout if execution is faster than specified timeout
1825
1826
1827---
1828
1829## [4.3.6] - 2018-11-12
1830
1831
1832### Added
1833
1834- Better async error handling (and more helpful error text) in sandbox
1835- Trap and present friendly error when async functions don't return a value in sandbox
1836- `sandbox` returns a promise if no callback is specified
1837- Adds repl
1838
1839
1840---
1841
1842## [4.3.1] - 2018-11-12
1843
1844
1845### Fixed
1846
1847- Error with `/public` folder in sandbox
1848
1849
1850---
1851
1852## [4.3.0] - 2018-11-12
1853
1854
1855### Added
1856
1857- `arc.sandbox.start` now accepts a regular node errback as the last arg
1858
1859
1860---
1861
1862## [4.2.2] - 2018-11-12
1863
1864
1865### Added
1866
1867- This changelog!
1868
1869
1870### Fixed
1871
1872- Removed generated test coverage files from NPM package bundle
1873- Inline help typos
1874
1875
1876---
1877
1878## [4.2.1] - 2018-11-09
1879
1880
1881### Added
1882
1883- `CI` env boolean for disabling `deploy` progress indicator in CI
1884
1885
1886---
1887
1888## [4.2.0] - 2018-08-12
1889
1890
1891## Added
1892
1893- CORS support for `sandbox`
1894
1895
1896## Fixed
1897
1898- CORS bug in HTTP functions
1899- Issue with `sandbox` not properly passing callbacks if used as a module
1900
1901
1902---
1903
1904## [4.1.3] - 2018-11-6
1905
1906
1907### Added
1908
1909- Massive tests refactor, shout out to @filmaj!
1910 - Added tests for many important workflows
1911 - Code coverage now tracked with Istanbul
1912- Architect's CI is now public via TravisCI
1913
1914
1915---
1916
1917## [4.1.2] - 2018-10-31
1918
1919
1920### Changed
1921
1922- Roughed in resource flagging (not yet ready, though)
1923
1924
1925### Fixed
1926
1927- Restored accidentally removed `readme.md`
1928
1929
1930---
1931
1932## [4.1.1] - 2018-10-31
1933
1934
1935### Added
1936
1937- `logs` workflow!
1938- Command line flags for various workflows:
1939 - `audit`: `apply`, `--apply`, `-a`
1940 - `config`: `apply`, `--apply`, `-a`
1941 - `create`: `local`, `--local`, `-l`
1942 - `deploy`: `production`, `--production`, `staging`, `--staging`, `public`, `--public`, `/public`, `lambda`, `--lambda`, `lambdas`, `--lambdas`, `functions`, `--functions`
1943 - `dns`: `nuke`, `--nuke`, `-n`, `route53`, `--route53`, `-r`
1944 - `env`: `verify`, `--verify`, `-v`, `remove`, `--remove`, `-r`
1945 - `hydrate`: `update`, `--update`, `-u`
1946 - `inventory`: `nuke`, `--nuke`, `-n`, `--nuke=tables`, `verify`, `--verify`, `-v`
1947 - `sandbox`: `production`, `--production`, `-p`, `staging`, `--staging`, `-s`, `testing`, `--testing`, `-t`
1948- Additional path validation for leading and trailing special characters
1949
1950
1951### Changed
1952
1953- Refactored `deploy` command to support additional command line flags, and surgical deploys of just `/public`, or just Lambdas
1954- Copy fixes for deployment workflow
1955- Made boilerplate HTTP functions a bit more minimal
1956- Improved `sandbox` testing
1957
1958
1959---
1960
1961## [4.1] - 2018-10-24
1962
1963
1964### Added
1965
1966- Automagical `src/views` folder: copies contents into all `HTTP GET` functions' `node_modules/@architect/views`
1967- `@views` pragma, overrides bulk `src/views` copy, and only copies into specified functions
1968- More information on `src/views` and `@views` [can be found here](https://blog.begin.com/serverless-front-end-patterns-with-architect-views-cf4748aa1ec7)
1969- Adds ability to use the following special characters in static URL parts: `-` (dash), `.` (period), `_` underscore
1970- New HTTP function validation logic:
1971 - HTTP functions must begin and end with a letter or number
1972 - Cannot create URL params that contain special chars (except leading `:`, of course)
1973- Adds command-line flags:
1974 - `npx create`:
1975 - `local`, `--local`, `-l`
1976 - `npx deploy`:
1977 - `production`, `--production`, `-p`
1978 - `staging`, `--staging`, `-s`
1979- New [Examples repo](https://github.com/architect/examples)
1980
1981
1982### Changed
1983- Some light boilerplate code cleanup
1984- [#168](https://github.com/architect/architect/issues/168) Fixed issue where Architect parser was missing `@http` support in JSON + YAML manifests
1985- [#164](https://github.com/architect/architect/issues/164) Fixed issue in Windows where Architect would try to copy files over itself
1986
1987
1988---
1989
1990## [4.0] - 2018-10-20
1991
1992
1993### Added
1994
1995- `@http` pragma, now the default way to create Lambda functions for the web
1996 - Supports fully dynamic Content-Type, Status Code
1997 - Supports all HTTP methods
1998 - CORS support with a boolean flag
1999- `public` folder, now the default way to sync static assets to S3
2000- `JSON` & `YAML` support for the `.arc` manifest
2001- Per-Lambda function configuration support with `.arc-config` files
2002- Per-Lambda function IAM roles support with `role.json` files
2003
2004
2005### Changed
2006
2007- Simpler package name (`npm i @architect/architect`)
2008- New GitHub name ([https://github.com/architect/architect](https://github.com/architect/architect))
2009- Smarter rate-limiting for deployments of large (50+ function) projects
2010- Complete docs revamp with new sample projects at [arc.codes](https://arc.codes)
2011- Fix for obscure bug where `server.close`causes a TypeError
2012- Readme file cleanup
2013
2014
2015### Removed
2016
2017- `.static` folder has been deprecated in favor of the new `public` folder
2018- Statically bound Content-Type web functions (i.e. `@html`, `@css`) are deprecated
2019 - `sandbox` will no longer bootstrap these kinds of functions
2020 - `create` will no longer make these kinds of functions
2021 - However, `deploy` still supports deploying these legacy functions
2022
2023
2024---
2025
2026The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).