UNPKG

41.9 kBMarkdownView Raw
1# Architect changelog
2
3---
4Also see:
5- [Architect Functions changelog](https://github.com/architect/functions/blob/master/changelog.md)
6---
7
8## [6.1.0] 2020-01-13
9
10### Added
11
12- Finally: Architect now automatically creates a deployment bucket if one is not specified!
13 - If you already have a deployment bucket specified, nothing changes; Architect will continue using that
14 - 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
15 - 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
16
17
18### Fixed
19
20- Allow reading and destroying logs from `ws` paths; fixes @architect#538 + @logs#98, ht @jessehattabaugh, thanks @austinkelleher!
21 - Additionally fixes destroying from paths that include `000`
22
23---
24
25## [6.0.29] 2020-01-07
26
27### Added
28
29- 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)
30 - Thus, Architect no longer requires a `~/.aws/credentials` file to run
31 - Also allows local creds file to be overriden by env vars by specifying `ARC_AWS_CREDS=env`
32 - Also added AWS session token support via setting `AWS_SESSION_TOKEN` env var
33 - Fixes `utils` #26; thanks @ryan-roemer!
34- Enabled AWS `credential_process` usage via improved credential handling; fixes #582 thanks @defionscode!
35
36
37### Fixed
38
39- Credentials are now properly backfilled with dummy values for various workflows
40 - This ensures certain specific workflows (such as local Sandbox usage with `@tables`) won't crash or stall without a valid `~/aws.credentials` file present
41- Fixed Sandbox errors related to missing `aws-sdk` dependency
42
43
44### Updated
45
46- Updated dependencies
47
48---
49
50## [6.0.28]
51
52FIXME
53
54---
55
56## [6.0.27]
57
58FIXME
59
60---
61
62## [6.0.26] 2019-12-13
63
64### Added
65
66- Sandbox now passes full request params from WebSocket clients on `connect` and `disconnect`
67 - Now in addition to `request.requestContext.connectionId`, you'll have `request.headers`, and `request.queryStringParameters` (if present)
68 - Sandbox now only passes `request.body` to WebSocket functions that receive `message`s (instead of adding an empty `body` object to all requests)
69- Added proper emulation of API Gateway v2's WebSocket connection authorization
70 - Returning an object containing `statusCode` 2xx allows a WebSocket client to connect
71 - Returning any other status code will hang up on the request
72
73---
74
75## [6.0.25] 2019-12-02
76
77### Changed
78
79- Now prints WebSockets URLs upon deployment, thanks @jessehattabaugh!
80
81
82### Fixed
83
84- Fixes regression related `staging` and `production` WebSockets names and paths, thanks @jessehattabaugh!
85 - WebSockets APIs named `${appname}Websocket` are now named `${appname}Websocket${stage}` (like `@http` APIs)
86 - `production` WebSockets paths now correctly reflect the production stage (e.g. `longawsurl.com/production`)
87 - If you're using the `ARC_WSS_URL` env var, be sure to also update `@architect/functions`
88
89---
90
91## [6.0.24] 2019-12-02
92
93### Added
94
95- Adds `CAPABILITY_AUTO_EXPAND` for nested stack deployments; fixes #436, thanks @jgallen23!
96
97---
98
99## [6.0.23] 2019-11-19
100
101### Added
102
103- Added support for `nodejs12.x`, `python3.8`, and `java11` runtimes
104
105
106### Changed
107
108- Updated dependencies
109
110
111### Fixed
112
113- Fixed printing of unnecessary ANSI escape characters in CI environments (`CI` env, or not TTY output)
114
115---
116
117## [6.0.21] 2019-11-19
118
119### Fixed
120
121- Adds `ArcWebSocketPolicy` to the generated IAM Role
122- Adds `ARC_WSS_URL` environment variable to all Lambdas if `@ws` is defined
123- Fix `.arc-config` properties: `layers` and `policies`
124 - Adding one layer or policy per line: `layers my:arn:here` or `policies my:arn:here`
125 - Adding ARNs as a list (two spaces indented below `layers` or `policies`)
126 - eg:
127
128```arc
129@aws
130layers
131 my:arn:here
132 my:other:arn:here
133```
134
135### Removed
136
137- 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`)
138- Removed `ArcRoleReflection` policy from the generated IAM Role
139- Removed `PYTHONPATH` unless a Lambda function explicitly has a Python runtime
140
141---
142
143## [6.0.20] 2019-11-5
144
145### Added
146
147- Integrates new `@architect/create` module for bootstrapping projects and initializing project files
148- 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
149
150
151### Changed
152
153- Updated dependencies (which are also now using `@architect/create`)
154- Updated CLI documentation to reflect current functionality of `arc env`
155
156
157### Fixed
158
159- Fixes issue when `@tables` definition includes `stream true`; thanks @gr2m!
160- Fixes and `arc help <command>` command
161- Runtime flag now works for project creation: `runtime`, `--runtime`, or `-r` + `node`, `js`, `python`, `py`, `ruby`, `rb` initializes with Node, Python, or Ruby
162- Removed some unnecessary dependencies
163
164---
165
166## [6.0.19] 2019-10-17
167
168### Fixed
169
170- Fixes failed deploys if file type is unknown by common mime-type database; resolves #56, thanks @mikemaccana!
171- Fixes paths for deployment of assets on Windows; resolves #58, thanks @mikemaccana!
172
173---
174
175## [6.0.18] 2019-10-15
176
177### Added
178
179- Infrequently prints version update notifications to CLI
180
181---
182
183## [6.0.15 - 6.0.17] 2019-10-15
184
185### Added
186
187- Added update notifier to help ensure folks are running the (hopefully) least buggy, most stable, most secure version of Architect
188
189
190### Changed
191
192- Updated dependencies
193
194
195### Fixed
196
197- Fixes deployment issue if `get /` is not specified in `@http`; resolves @package#27, /ht @grahamb and @jeffreyfate!
198
199
200### Changed
201
202- Improves error states for missing static configs, 404s, etc. when using `@http` and/or `@static` with `arc.http.proxy` or without defining `get /`
203
204---
205
206## [6.0.15] 2019-10-14
207
208### Changed
209
210- Legacy WebSockets paths on the filesystem are now formally deprecated
211 - Your default three WebSockets paths should be: `src/ws/default`, `src/ws/connect`, `src/ws/disconnect`
212 - 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!
213
214
215### Fixed
216
217- Fixed issue when emitting to WebSockets with Arc Functions (`arc.ws.send`); resolves #48, thanks @andybee + @bvkimball!
218- Fixed issue where `sandbox` may not have correctly resolved some custom WebSocket actions
219- Fixed HTTP request with `body` and no `Content-Type` header; resolves #102, thanks @andybee!
220- Fixed issue where killed subprocesses would not trigger timeouts; resolves #30, /ht @mikemaccana
221- Fixed issue where functions with legacy runtimes may not have been fully hydrated
222
223---
224
225## [6.0.14] 2019-10-11
226
227### Added
228
229- Added support for `@static fingerprint true` in root spa / proxy requests
230 - This enables Architect projects to deliver fully fingerprinted static assets while also ensuring that each file is appropriately cached by clients and network infra
231 - Also includes support for build-free calls between your fingerprinted static assets
232 - Example: in `public/index.html`, use the following syntax to automatically replace the local / human-friendly filename reference to the deployed fingerprinted filename:
233 - `${arc.static('image.png')}` will be automatically replaced by `image-a1c3e5.png`
234 - Or `${STATIC('image.png')}` (which is the same thing, but shoutier)
235 - 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`)
236
237
238### Changed
239
240- Updated dependencies
241- Ensures html / json are published to S3 with anti-cache headers
242
243
244### Fixed
245
246- Restores static asset pruning (`arc deploy --prune` or `arc deploy --static --prune`)
247- Fixes issues with parsing certain properties in `arc.json`, thanks @mikemaccana!
248- Fixed issue that may prevent `repl` from working in more recent versions
249- Add anti-caching headers to `sandbox` 404 response
250- Fixes root spa / proxy requests when Architect and/or Sandbox are globally installed; resolves #92 /ht @grahamb
251
252---
253
254## [6.0.13] 2019-10-02
255
256### Fixed
257
258- Fixed issue where with `@static fingerprint true` enabled, the `static.json` file would not be copied into deployed functions' shared dirs; thanks @dawnerd + @jgallen23!
259- Removed unnecessary second-order dependency, which should lighten up the Architect install size a bit
260
261
262### Changed
263
264- Updated dependencies
265
266---
267
268## [6.0.11 - 6.0.12] 2019-09-29
269
270### Added
271
272- `sandbox` Auto-hydration received a bunch of nice upgrades:
273 - Auto-hydration now detects changes to the state of your installed Node dependencies, and rehydrates if necessary; for example:
274 - You're working on a project, and a teammate updates a dependency in `get /foo` from version `1.0.0` to `1.1.0`
275 - Upon your next git pull, `sandbox` will detect the dependency update in `get /foo` and automatically install version `1.1.0` for you
276 - Auto-hydration now has a rate limit of one change every 500ms to prevent recursive or aggressive file updates
277 - Auto-hydration now has `@static folder` support
278 - Auto-hydration now only hydrates the shared files necessary
279 - 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`
280 - Events now have a timestamp and improved formatting
281- Beta: `sandbox` init script support!
282 - `sandbox` will now run the init script of your choosing upon startup after all subsystems have started up:
283 - `scripts/sandbox-startup.js` - a CommonJS module, receives your parsed Arc project as a parameter, supports async/await
284 - `scripts/sandbox-startup.py` - a Python script
285 - `scripts/sandbox-startup.rb` - a Ruby script
286- Startup auto-hydration now hydrates `src/views` and `src/shared`
287- Added support for `@static folder` to static asset `fingerprint`ing
288
289
290### Changed
291
292- Improvements to the conditions under which the HTTP server starts, shuts down, and restarts; fixes `sandbox` #65
293- Improved `sandbox` async error copy (displayed when execution does not complete)
294- Proxied requests in `sandbox` now sends a proper `req.resource`, which can resolve some SPA bugs, esp when used with newer Arc Functions
295- `sandbox` now respects and errors on invalid response params for proper Architect 6 compatibility; fixes `sandbox` #49
296- Updates `sandbox` to Dynalite to `3.0.0`, thanks @mhart!
297- Better 404 / file missing handling in `sandbox` when using `http.proxy` (or loading assets without `@http get /` specified)
298- `hydrate --update` now properly inventories its update operations, avoiding superfluous work
299
300
301### Fixed
302
303- Fixes correct inventory paths for `src/ws/*`, which should in turn fix WebSocket function hydration, thanks @mikemaccana!
304- When auto-hydrating functions upon startup, `sandbox` no longer hydrates `src/views` and `src/shared` with each function
305- Fixed issue where `hydrate`'s shared file copying may have leaked across Lambda executions in rare circumstances
306- Fixed undefined message in `hydrate` init
307- Improved `hydrate` error bubbling
308- Formatting and line breaks in `hydrate` printer return should now more closely (or exactly) match console output
309- Fixed issue where in certain circumstances `get /` wouldn't reload `sandbox` after a change to the project manifest
310- Minor fix where if you specified a `SESSION_TABLE_NAME` env var outside of `.arc-env`, `sandbox` won't clobber it
311- Fixed caching headers for various `sandbox` error states (async, timeout, etc.) to ensure your browser won't accidentally cache an error response
312- Fixes issue where binary assets delivered via `sandbox` / root may not be properly encoded
313- Fixes empty mock `context` object encoding
314
315---
316
317## [6.0.10] 2019-09-11
318
319### Changed
320
321- Running `hydrate` now properly inventories its update operations, avoiding superfluous work there as well
322- Results returned by `hydrate` are now symmetrical with what's printed
323- `@http` functions are now provisioned with the `ARC_HTTP` env var, which is set to `aws_proxy`
324
325
326### Fixed
327
328- Fixed `env` to ensure env vars were populated out of the correct region
329- `sandbox.close` will no longer throw an error if project doesn't use `@http` or `@ws`
330- Fixed reliability of `hydrate` and other Architect operations printing in CI containers and other non-TTY environments
331
332---
333
334## [6.0.9] 2019-09-09
335
336### Changed
337
338- Running `hydrate` now properly inventories its install operations, avoiding superfluous work
339
340
341### Fixed
342
343- Fixed issue where `sandbox` would hang if POST requests were sent without a body
344- Fixed `logs` to ensure log data is read out of the correct region
345- Fixed S3 permissions to enable direct asset uploading
346
347---
348
349## [6.0.8] 2019-09-06
350
351### Fixed
352
353- Fixes case where user-defined region may not be respected
354- Fixes provisioning `@scheduled` functions
355
356---
357
358## [6.0.7] 2019-09-05
359
360### Changed
361
362- Add clearer bucket region instructions during init
363
364---
365
366## [6.0.6] 2019-08-30
367
368### Changed
369
370- Internal change; improve error handling states
371
372---
373
374## [6.0.5] 2019-08-28
375
376### Added
377
378- Added initialization confirmation messages
379
380
381### Changed
382
383- Improved boilerplate project files written during initialization
384- Updated boilerplate .arc file initialized
385- Patched vendored proxy bundle to 3.3.7
386- Updated deps
387
388---
389
390## [6.0.4] 2019-08-27
391
392### Changed
393
394- Updated deps
395
396---
397
398## [6.0.3] 2019-08-24
399
400### Fixed
401
402- Internal error handling change
403
404
405### Changed
406
407- Updated deps
408
409---
410
411## [6.0.1 - 6.0.2] 2019-08-22
412
413### Fixed
414
415- Fixes issue with auto-hydration of new dependencies during `sandbox` startup
416- Fixes issue with `arc deploy --static` throwing an unnecessary error after uploading files, fixes #427
417- Fixes minor copy issue in `arc deploy` reporting the incorrect static asset folder when there are no files to deploy
418
419---
420
421## [6.0.0] 2019-08-20
422
423### Changed
424
425- Many things! Updates to this changelog forthcoming shortly. Arc 6.0 is a breaking change, please refer to https://arc.codes and upgrade mindfully!
426
427---
428
429## [5.9.24] 2019-08-05
430
431### Fixed
432
433- Resolves issue where static assets aren't loading from `_static/` in `sandbox`, fixes #416
434
435---
436
437## [5.9.23] 2019-07-23
438
439### Fixed
440
441- Fixed issue preventing Ruby functions from properly executing in `sandbox`
442- Fixed issue prevent Python functions from properly executing in Windows `sandbox`
443- Fix broken characters in Windows `sandbox` console
444- Fixes super obscure bug where certain shared files may not be included in a single function deploy
445
446### Changed
447
448- `sandbox` context now passes an empty object (to be mocked soon!) to all runtimes
449 - This deprecates the legacy AWS implementation of `context` (since retired in production) passed to `sandbox` Node functions
450
451---
452
453## [5.9.21-22] 2019-07-17
454
455### Added
456
457- Adds auto-hydration to new functions without restarting `sandbox`
458
459
460### Fixed
461
462- Fixes issue with auto-hydration on `sandbox` startup
463- Fixes potential issue in static asset deploys in Windows
464
465---
466
467## [5.9.20] 2019-07-15
468
469### Added
470
471- Expanded support for static asset fingerprinting! If you've enabled fingerprinting (`@static fingerprint true`):
472 - `sandbox` will regenerate your `public/static.json` file on startup
473 - 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
474
475
476### Fixed
477
478- `sandbox` auto-refresh now detects file deletions from `src/shared` and `src/views`
479
480---
481
482## [5.9.19] 2019-07-12
483
484### Added
485
486- Adds PYTHONPATH to `sandbox` Lambda invocation for `/vendor` modules
487
488### Fixed
489
490- Fixes `sandbox` crashing when `get /` and other functions aren't defined in `.arc` or present in the filesystem, but are requested by a client
491- Prevents startup of http server if `@http` isn't defined in `.arc`
492- Improves `sandbox` support in Windows
493
494---
495
496## [5.9.18] 2019-07-12
497
498### Fixed
499
500- Fixes WebSocket provisioning issue
501
502---
503
504## [5.9.17] 2019-07-12
505
506### Changed
507
508- Disables delta resource creation during deployments
509 - This functionality is better served by more reliable and deterministic resource creation via the forthcoming Architect 6 release
510
511---
512
513## [5.9.16] 2019-07-12
514
515### Changed
516
517- Reverts previous breaking change on WebSockets, default directories that get created are now once again `ws-connect`, `ws-default`, and `ws-disconnect`
518
519---
520
521## [5.9.15] 2019-06-26
522
523### Added
524
525- Auto-refresh! `sandbox` now keeps an eye out for the following changes to your project:
526 - Edits to your Architect project manifest will mount or unmount HTTP routes without having to restart `sandbox`
527 - Changes to `src/shared` and `src/views` will automatically rehydrate your functions' shared code
528 - More to come!
529
530
531### Changed
532
533- Prettied up `sandbox` initialization printing a bit
534
535---
536
537## [5.9.14] 2019-06-25
538
539### Added
540
541- Auto-hydration!
542 - Say goodbye to running `npx hydrate` before starting new projects, cloning existing projects, or pulling down new functions
543 - On startup, any functions missing dependencies on the local filesystem will now be auto-hydrated
544 - Supported runtimes and dependency manifests: Node + `package.json` (requires npm >= 5.7), Python + `requirements.txt` (calls pip3), and Ruby + Gemfile (calls bundle)
545
546---
547
548## [5.9.10-13] 2019-06-24
549
550### Fixed
551
552- Ensures `sandbox` starts in the cases of:
553 - No local AWS credentials file (e.g `~/.aws/credentials`)
554 - The local AWS credentials file is present, but is missing the requested profile name
555 - Fixes #382, 391
556- Fixed issue with `hydrate` caused by an errant merge
557
558---
559
560## [5.9.9] 2019-06-23
561
562### Changed
563
564- Projects that use WebSockets (`@ws`) in their `.arc` file will need to be cautious about upgrading
565 - 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
566
567### Fixes
568
569- `@ws` directive now works correctly with the `npx inventory` command set
570- Fixes `sandbox` wrapper when use as async module, adds `sandbox` test
571
572---
573
574## [5.9.8] - 2019-06-19
575
576### Changed
577
578- Deployments of static assets now follow symlinks in the `public/` directory
579
580---
581
582## [5.9.5-7] - 2019-06-18
583
584### Changed
585
586- The `sandbox` workflow is now its own module!
587 - No functionality changes to `sandbox` in this release
588 - A few minor improvements to `sandbox` console messages during startup, and drying up port assignment logic
589 - You can find the `sandbox` module at https://github.com/architect/sandbox
590
591
592### Fixed
593
594- Some Arc-supported runtimes defined in `.arc-config` files (such as `nodejs8.10`) will no longer cause `sandbox` to crash
595
596---
597
598## [5.9.4] - 2019-06-15
599
600### Added
601
602- Added ability to disable Architect managing a given function's environment variables
603 - Add an `@arc` pragma to your function's `.arc-config` file, and pass it the `env false` flag
604
605
606---
607
608## [5.9.3] - 2019-05-29
609
610### Fixed
611
612- Corrects URI encoding when accessing local static assets in _static, fixes #390
613- Warns users of static deployments of files approaching the payload limit of Lambda, fixes #387
614- Fixes static deploy errors of unknown file types
615
616
617---
618
619## [5.9.0 - 5.9.2] - 2019-05-23
620
621### Added
622
623- CloudFormation support! 🚀
624 - `npx package` will export the current `.arc` file to `sam.json` and print further instructions for deploying
625 - Currently only `@http`, `@static` and `@tables` pragmas are supported; you can track the other pragmas dev (or submit a PR!) here at #386
626 - Any env vars in `.arc-env` are automatically applied to the CloudFormation stack
627 - `.arc-config` settings are also fully supported
628 - Unfortunately CF currently has a bug with binary media types which we're tracking here https://github.com/awslabs/serverless-application-model/issues/561
629- Static asset fingerprinting beta!
630 - Add `fingerprinting true` to your `@static` pragma to enable fingerprinting
631 - Add `ignore` followed by a two-space indented list to ignore certain files from `public/`
632 - [More information here](https://arc.codes/reference/static)
633- Added new flag for pruning old static assets: `npx deploy [--static] --prune`
634- Added ability to completely disable shared folder copying into functions
635 - Add an `@arc` pragma to your function's `.arc-config` file, and pass it the `shared false` flag
636- Ruby and Python local runtime support
637 - `.arc-config` with `runtime` of either `ruby2.5` or `python3.7` works on localhost (make sure you have python and ruby installed!)
638
639
640### Fixed
641
642- Hydration (and other things that depend on hydrator operations) should now work more reliably on non-UNIXy machines
643
644
645---
646
647## [5.8.7] - 2019-05-21
648
649### Fixed
650
651- Fixes lack of `console.[warn|error|trace]` output in sandbox console
652
653
654## [5.8.5 - 5.8.6] - 2019-05-15
655
656### Changed
657
658- Default Lambda runtime is now Node 10.x (from Node 8.10)
659- Added simple rate limits to `npx config` and `npx config --apply`
660- Updated dependencies
661
662
663---
664
665## [5.8.0 - 5.8.4] - 2019-05-08
666
667### Added
668
669- Adds `npx inventory nuke -f` for deleting DynamoDB tables and S3 buckets (even if they have contents)
670 - Also adds aliases: `npx inventory -nf`, `npx inventory -fn`
671- Scheduled function state enabled / disabled flag in `.arc-config` with `npx config`
672- Concurrency `0-1` flag in `.arc-config` with `npx config` (applies to all function types)
673- Support for custom routes in WebSocket API Gateways
674 - `@ws` now accepts routes defined in `.arc`
675 - To use these custom routes, the client message must contain an `action` key that is the name of the route
676
677
678### Fixed
679
680- DynamoDB tables and indexes now enqueue during create; fixes #268
681- Sync queue visibility to function timeout; fixes #204
682- Verifies queue resources deleted with `npx inventory nuke`; fixes #132
683- Enhanced cron() and rate() validatation; fixes #148
684- Now `npx inventory nuke` destroys Lambdas and CloudWatch Events rules
685- Enhanced error reporting for bad creds or bad arcfiles (closes #339, #364)
686
687
688### Changed
689- New GitHub name! Find us at: [github.com/architect](https://github.com/architect)
690 - 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`
691 - Special thanks to @pug132 for the name (and a big hat-tip to @mikemaccana)!
692- scheduled functions always putRule on `npx create` (fixes #326)
693
694
695---
696
697## [5.7.0] - 2019-04-17
698
699### Added
700
701- Support for AWS layers! /ht @julianduque
702 - 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)!
703- Support for additional runtimes: `python3.7` and `ruby2.5`!
704 - The list also includes: `nodejs8.10`, `python3.6`, `go1.x`, `dotnetcore2.1`, and `java8`
705 - Specify `runtime $yourRuntime` in the `@aws` section of your project manifest, or `.arc-config` files
706 - Of course, you can also add the runtime of your choosing by way of layer support
707- Support for `application/binary-octet` & `multipart/form-data` requests, fixes #353
708 - Requests with those two `Content-Type` headers will produce a `base64` object in the `body` object, like so: `body: {base64: 'R28gR2lhbnRzIQ=='}`
709 - Empty request bodies will still produce an empty object (e.g. `body: {}`)
710
711
712### Fixed
713
714- `config [--apply]` now has an easier to read layout, improved diffing, and instructions on how to apply changes
715- Added resource creation error handling and validation to `deploy`
716- Invalid runtime settings emit a friendly warning about defaulting to `node8.10`
717
718
719### Changed
720
721- `get /` no longer required by `@http`
722- Updated dependencies (most notably `@architect/parser` to support `runtime` and `layers` settings)
723- Resource creation error handling moved into common utils (internal)
724
725
726---
727
728
729## [5.6.3] - 2019-04-08
730
731### Fixed
732
733- Fixes WebSocket support in `sandbox`; fixes #328 /ht @rschweizer
734
735
736### Changed
737
738- Cleans up http invocation for doc content-types in `sandbox`
739- Slightly better rate limit error message
740
741
742---
743
744
745## [5.6.1] - 2019-04-06
746
747### Added
748
749- Adds `req.httpMethod` and `req.queryStringParameters`
750
751
752### Removed
753
754- Removes deprecated code paths
755
756
757---
758
759
760## [5.6.0 - 5.6.1] - 2019-04-04
761
762### Added
763
764- Enables both text and binary file transit in newly provisioned Arc apps
765- Adds the same capability to `sandbox`
766- 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)
767- Adds `req.httpMethod` and `req.queryStringParameters`
768- Removes deprecated code paths
769
770---
771
772
773## [5.5.10] - 2019-03-15
774
775### Added
776
777- Cache-control header support to `sandbox`
778 - Default for local dev environment is not to send any `cache-control` header
779 - If specified, `cache-control` passes through
780
781
782---
783
784## [5.5.9] - 2019-03-13
785
786### Added
787
788- Cache-control header support; if not specified, defaults to:
789 - HTML + JSON: `no-cache, no-store, must-revalidate, max-age=0, s-maxage=0`
790 - Everything else: `max-age=86400`
791 - This change only applies to Architect apps provisioned from this version forward
792
793### Fixed
794
795- Default `content-type` response of `application/json` is now `application/json; charset=utf-8;`
796
797### Changed
798
799- Updated dependencies
800
801---
802
803## [5.5.6 - 5.5.8] - 2019-02-28
804
805### Fixed
806
807- Now properly deletes the entire CloudWatch log group when nuking; fixes #311 /ht @mikeal
808- Fixes `sandbox` to work properly when `content-type` has charset assignment; #303, #305 /ht @hada-unlimited
809- Fixes issue with `audit` breaking on `@ws` functions; #311 /ht @mikeal
810- `sandbox` now accepts `statusCode`, in addition to `status` and `code`; fixes #323
811
812
813---
814
815## [5.5.5] - 2019-02-22
816
817### Fixed
818
819- Fixes ordering logs by last event /ht @mikeal
820
821
822---
823
824## [5.5.2 - 5.5.4] - 2019-02-20
825
826### Fixed
827
828- `logs` forces descending order
829- Query params no longer trigger index.html override for `sandbox`
830- Adds support for `text/tsx` in `/public`
831
832
833---
834
835## [5.5.1] - 2019-02-08
836
837### Changed
838
839- Updated dependencies
840
841### Removed
842
843- `test:watch` script and `tape-watch` devdep (due to multiple dependencies with CVEs)
844
845
846---
847
848## [5.5.0] - 2019-02-03
849
850SPA support: mount S3 on the `/` of API Gateway
851
852### Added
853
854- `ANY /{proxy+}` will now route any 'not found' to the HTTP Lambda `src/http/get-index`
855 - 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)
856- `ANY /_static/{proxy+}` will proxy to S3 buckets defined by `@static` (if you want to skip proxying through Lambda)
857- Companion library `@architect/functions` also gained `arc.proxy.public` superpower for proxying all requests NOT defined by `.arc` to the `@static` S3 buckets
858
859[For more about single page apps with Architect see there docs here.](https://arc.codes/guides/spa)
860
861
862### Changed
863
864- If `@http` is defined, then `get /` must also be defined
865- `npx sandbox` now mounts `/public` on `http://localhost:3333/_static` to match the deployed API Gateway S3 proxy
866
867
868---
869
870## [5.0.6] - 2019-01-25
871
872### Added
873
874- Improvements to build plugins system (did you know Architect has a build plugins system?)
875 - Now supports NPM scoping (e.g. `@architect/arc-plugin-node-prune`)
876 - Build preparation order now runs pre-deploy build plugins last (after dependency hydration)
877 - 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`!
878
879
880### Fixed
881
882- Fixes `create` breaking if `@ws` is not present in `.arc`, #276
883
884
885---
886
887## [5.0.4] - 2019-01-24
888
889### Added
890
891- `repl` now respects environments, allowing you to connect to your remote databases with the `NODE_ENV` environment variable
892
893
894### Fixed
895
896- `repl` was being clobbered by `@architect/data`'s own implementation; fixed in `architect/arc-data` #12, dependency updated
897
898
899### Changed
900
901- Updated dependencies
902
903
904---
905
906## [5.0.2] - 2019-01-22
907
908### Added
909
910- Support for `@ws` in `.arc` for generating WebSocket Lambdas and API Gateway endpoints
911- Support for WebSocket Lambdas in the local sandbox
912- WebSocket Lambdas support in `inventory`, which in turn powers most other workflows
913
914
915### Removed
916
917- Support for `@slack` as the more generic `@http` Lambdas support that use case better
918
919
920### Fixed
921
922- Fixes `@indexes` creation bug
923- Runs `npm i` during `hydrate --update`, resolving a long-standing NPM issue where package-lock files may fall out of sync
924- Fixed: on Windows, S3 assets will be correctly created relative to their location beneath `public` rather than their full paths.
925
926### Changed
927
928- Updated dependencies
929
930
931---
932
933## [4.5.6] - 2019-01-14
934
935
936### Fixed
937
938- Fixes callback in _create-code task, fixes #263
939
940
941### Changed
942
943- Improved error handling in NPM operations
944
945
946---
947
948## [4.5.5] - 2019-01-11
949
950
951### Fixed
952
953- In Windows, NPM no longer fails with `undefined`, fixes #261
954
955
956---
957
958## [4.5.4] - 2019-01-10
959
960
961### Changed
962
963- Improved status reporting during `deploy` and `create`
964
965
966### Fixed
967
968- Fixes cases where hydration was crashing single function deployments, and deployments that execute `create` for missing resources
969
970
971---
972
973## [4.5.1] - 2019-01-08
974
975
976### Changed
977
978- `hydrate` refactor and API
979 - NPM operations are now queued and concurrently processed (env var `ARC_MAX_NPM`, defaults to 10) /ht @grncdr
980 - Vastly improved NPM error handling and related deployment reliability (fixes #141 + #151)
981 - Now hydrates (and updates) deterministically from the current .arc manifest, as opposed to globbing
982 - All NPM operations now use `npm ci` for more consistent behavior across environments
983 - Updates `deploy` to use `hydrate` API, and `sandbox` to use new shared code copier module
984- DynamoDB tables now use on-demand/pay-per-request billing mode, mitigating the need for capacity planning /ht @alexdilley
985- `inventory` now supplies its own Arc project data, allowing it to be called as needed without relying on `util/init`
986
987
988### Fixed
989
990- Freshly created Functions are now properly hydrated with shared code (if available and appropriate; fixes #241)
991- Running `create` on already existing projects now runs orders of magnitute faster
992- `.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)
993- `deploy` now respects `--delete` flag when deploying the whole project
994- Improved progress reporting in `CI` mode, and for `hydrate`, `create`, and `deploy`
995
996
997### Added
998
999- New command: `hydrate --shared [--update]` - hydrates and/or updates `src/shared` and `src/views` (if available)
1000- Added test run watcher script /ht @filmaj
1001
1002
1003---
1004
1005## [4.4.12] - 2018-12-23
1006
1007
1008### Removed
1009
1010The following folders are no longer required nor autogenerated:
1011
1012- `src/shared`
1013- `src/views`
1014- `/public`
1015
1016Functionality 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.
1017
1018
1019---
1020
1021## [4.4.11] - 2018-12-19
1022
1023
1024### Added
1025
1026- Updates `sandbox`, adding minor performance tweaks now, and setting up for future enhancements
1027 - Updated `sandbox` to asynchronously read files when invoking a Lambdas
1028 - Updates runtime handling in `sandbox` to make it easier to add additional runtimes
1029 - Each runtime now lives in its own function, which also enables process forking later on
1030
1031
1032---
1033
1034## [4.4.10] - 2018-12-18
1035
1036
1037### Added
1038
1039- New logo (added to readme)! /ht @amberdawn
1040- `hydrate` and `deploy` now install dependencies in `src/shared` and `src/views` (#240)
1041- `QUIET` boolean env var suppresses init header (fixes #238)
1042 - Helpful for piping data to disk, e.g. setting up new users on an Architect project with `QUIET=1 npx env > .arc-env`
1043- `app.arc` app filename supported as a non-dotfile alternative to `.arc` (#239)
1044
1045
1046### Changed
1047
1048- Static asset deploys now exclude default `public/readme.md` file
1049- Improved `hydrate` progress and completion confirmation
1050- Adds Architect version back into the init header
1051
1052
1053### Fixed
1054
1055- `hydrate` was not properly globbing (and thus, not hydrating) `src/shared` contents
1056
1057
1058---
1059
1060## [4.4.9] - 2018-12-16 (merge commit, no changes)
1061
1062
1063---
1064
1065## [4.4.8] - 2018-12-12
1066
1067
1068### Added
1069
1070- 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
1071 - `SANDBOX_TIMEOUT` is overridden by any directory-specific `.arc-config` files
1072
1073
1074### Changed
1075
1076- Default `sandbox` timeout is now symmetrical with Architect's default Lambda timeout time of 5 seconds
1077
1078
1079---
1080
1081## [4.4.7] - 2018-12-11
1082
1083
1084### Added
1085
1086- Form-encoded POST values can now be sent enclosed in single quotes /ht @herschel666
1087
1088
1089### Changed
1090
1091- Skip logging when `@static` isn't deployed
1092- Additional hardening of `sandbox` handling of JSON responses emitted from `@architect/functions`
1093- Preliminary / prototype commits for outputting CloudFormation from .arc
1094- Preliminary / prototype commits in the direction of adding arbitrary header support /ht @mweagle
1095
1096
1097### Fixed
1098
1099- Issue where `arc.http` JSON responses were crashing `sandbox` due to an encoding mismatch
1100- Issue where `ARC_LOCAL` env var wasn't being properly respected by `sandbox` events
1101
1102
1103---
1104
1105## [4.4.5] - 2018-12-7
1106
1107
1108### Added
1109
1110- Local `@queues` now available in `sandbox`
1111- Big ups to @grncdr for this feature!
1112
1113
1114### Fixed
1115
1116- `hydrate` wasn't updated to use the new progress indicator, and would fail when used – no longer!
1117
1118
1119---
1120
1121## [4.4.4] - 2018-12-1
1122
1123
1124### Added
1125
1126- `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
1127- Big ups to @filmaj for this release, too!
1128
1129
1130---
1131
1132## [4.4.3] - 2018-11-30
1133
1134
1135### Added
1136
1137- `npx deploy static`: deploys only `@static` assets (as found in the `public/` folder)
1138 - Accepts `staging | --staging | -s` and `production | --production | -p` flags
1139- `npx deploy static --delete`: deploys static assets, and deletes remote S3 files not present locally in `public/`
1140 - Can be used with `staging` and `production` flags
1141- Big ups to @filmaj for this release!
1142
1143
1144---
1145
1146## [4.4.0] - 2018-11-27
1147
1148
1149### Added
1150
1151- Large refactor of `deploy` workflow to improve stability and reliability
1152- `deploy` now identifies missing project resources during deploy operations
1153 - Instead of failing / throwing errors, `deploy` now completes its first pass deployment
1154 - Then, once completed, `deploy` creates any resources missing from the deployment (and deploys them)
1155
1156
1157### Changed
1158
1159- `npx inventory --nuke` now destroys `@static` resources (S3 buckets) and `@events` resources (SNS Topics).
1160- New projects will no longer create `arc-sessions` tables (for use with `@architect/functions`) by default, and are now explicitly opt-in
1161- Replaces `progress` module with a lighter weight, more readily cross-platform homegrown solution
1162
1163
1164---
1165
1166## [4.3.14] - 2018-11-26
1167
1168
1169### Changed
1170
1171- `logs` command results now sorted chronologically
1172
1173
1174### Fixed
1175
1176- Fixes console leaking of large responses in `sandbox`
1177
1178
1179---
1180
1181## [4.3.13] - 2018-11-24
1182
1183
1184### Fixed
1185
1186- `sandbox` was broken in the JWE changeover
1187- Fixes some broken tests
1188
1189
1190### Removed
1191
1192- Unnecessary session table test stubs
1193
1194
1195---
1196
1197## [4.3.12] - 2018-11-23
1198
1199
1200### Changed
1201
1202- New default for Architect sessions is based on JWE
1203- DynamoDB sessions are still available, but [now opt-in](https://arc.codes/guides/sessions)
1204- `sandbox` now matches the 6MB request payload limit of Lambda /ht @herschel666
1205
1206
1207---
1208
1209## [4.3.10] - 2018-11-19
1210
1211
1212### Added
1213
1214- dotfiles are now included in Lambda deployments
1215
1216
1217---
1218
1219## [4.3.9] - 2018-11-15
1220
1221
1222### Changed
1223
1224- Architect parser now accepts multiple spaces between http verb and path in `@http` functions
1225
1226
1227### Fixed
1228
1229- `sandbox` now properly pretty prints paths
1230
1231
1232---
1233
1234## [4.3.8] - 2018-11-14
1235
1236
1237### Added
1238
1239- Additional S3 deploy tests
1240
1241
1242---
1243
1244## [4.3.7] - 2018-11-13
1245
1246
1247### Changed
1248
1249- `sandbox` clears async function timeout if execution is faster than specified timeout
1250
1251
1252---
1253
1254## [4.3.6] - 2018-11-12
1255
1256
1257### Added
1258
1259- Better async error handling (and more helpful error text) in sandbox
1260- Trap and present friendly error when async functions don't return a value in sandbox
1261- `sandbox` returns a promise if no callback is specified
1262- Adds repl
1263
1264
1265---
1266
1267## [4.3.1] - 2018-11-12
1268
1269
1270### Fixed
1271
1272- Error with `/public` folder in sandbox
1273
1274
1275---
1276
1277## [4.3.0] - 2018-11-12
1278
1279
1280### Added
1281
1282- `arc.sandbox.start` now accepts a regular node errback as the last arg
1283
1284
1285---
1286
1287## [4.2.2] - 2018-11-12
1288
1289
1290### Added
1291
1292- This changelog!
1293
1294
1295### Fixed
1296
1297- Removed generated test coverage files from NPM package bundle
1298- Inline help typos
1299
1300
1301---
1302
1303## [4.2.1] - 2018-11-09
1304
1305
1306### Added
1307
1308- `CI` env boolean for disabling `deploy` progress indicator in CI
1309
1310
1311---
1312
1313## [4.2.0] - 2018-08-12
1314
1315
1316## Added
1317
1318- CORS support for `sandbox`
1319
1320
1321## Fixed
1322
1323- CORS bug in HTTP functions
1324- Issue with `sandbox` not properly passing callbacks if used as a module
1325
1326
1327---
1328
1329## [4.1.3] - 2018-11-6
1330
1331
1332### Added
1333
1334- Massive tests refactor, shout out to @filmaj!
1335 - Added tests for many important workflows
1336 - Code coverage now tracked with Istanbul
1337- Architect's CI is now public via TravisCI
1338
1339
1340---
1341
1342## [4.1.2] - 2018-10-31
1343
1344
1345### Changed
1346
1347- Roughed in resource flagging (not yet ready, though)
1348
1349
1350### Fixed
1351
1352- Restored accidentally removed `readme.md`
1353
1354
1355---
1356
1357## [4.1.1] - 2018-10-31
1358
1359
1360### Added
1361
1362- `logs` workflow!
1363- Command line flags for various workflows:
1364 - `audit`: `apply`, `--apply`, `-a`
1365 - `config`: `apply`, `--apply`, `-a`
1366 - `create`: `local`, `--local`, `-l`
1367 - `deploy`: `production`, `--production`, `staging`, `--staging`, `public`, `--public`, `/public`, `lambda`, `--lambda`, `lambdas`, `--lambdas`, `functions`, `--functions`
1368 - `dns`: `nuke`, `--nuke`, `-n`, `route53`, `--route53`, `-r`
1369 - `env`: `verify`, `--verify`, `-v`, `remove`, `--remove`, `-r`
1370 - `hydrate`: `update`, `--update`, `-u`
1371 - `inventory`: `nuke`, `--nuke`, `-n`, `--nuke=tables`, `verify`, `--verify`, `-v`
1372 - `sandbox`: `production`, `--production`, `-p`, `staging`, `--staging`, `-s`, `testing`, `--testing`, `-t`
1373- Additional path validation for leading and trailing special characters
1374
1375
1376### Changed
1377
1378- Refactored `deploy` command to support additional command line flags, and surgical deploys of just `/public`, or just Lambdas
1379- Copy fixes for deployment workflow
1380- Made boilerplate HTTP functions a bit more minimal
1381- Improved `sandbox` testing
1382
1383
1384---
1385
1386## [4.1] - 2018-10-24
1387
1388
1389### Added
1390
1391- Automagical `src/views` folder: copies contents into all `HTTP GET` functions' `node_modules/@architect/views`
1392- `@views` pragma, overrides bulk `src/views` copy, and only copies into specified functions
1393- More information on `src/views` and `@views` [can be found here](https://blog.begin.com/serverless-front-end-patterns-with-architect-views-cf4748aa1ec7)
1394- Adds ability to use the following special characters in static URL parts: `-` (dash), `.` (period), `_` underscore
1395- New HTTP function validation logic:
1396 - HTTP functions must begin and end with a letter or number
1397 - Cannot create URL params that contain special chars (except leading `:`, of course)
1398- Adds command-line flags:
1399 - `npx create`:
1400 - `local`, `--local`, `-l`
1401 - `npx deploy`:
1402 - `production`, `--production`, `-p`
1403 - `staging`, `--staging`, `-s`
1404- New [Examples repo](https://github.com/architect/examples)
1405
1406
1407### Changed
1408- Some light boilerplate code cleanup
1409- [#168](https://github.com/architect/architect/issues/168) Fixed issue where Architect parser was missing `@http` support in JSON + YAML manifests
1410- [#164](https://github.com/architect/architect/issues/164) Fixed issue in Windows where Architect would try to copy files over itself
1411
1412
1413---
1414
1415## [4.0] - 2018-10-20
1416
1417
1418### Added
1419
1420- `@http` pragma, now the default way to create Lambda functions for the web
1421 - Supports fully dynamic Content-Type, Status Code
1422 - Supports all HTTP methods
1423 - CORS support with a boolean flag
1424- `public` folder, now the default way to sync static assets to S3
1425- `JSON` & `YAML` support for the `.arc` manifest
1426- Per-Lambda function configuration support with `.arc-config` files
1427- Per-Lambda function IAM roles support with `role.json` files
1428
1429
1430### Changed
1431
1432- Simpler package name (`npm i @architect/architect`)
1433- New GitHub name ([https://github.com/architect/architect](https://github.com/architect/architect))
1434- Smarter rate-limiting for deployments of large (50+ function) projects
1435- Complete docs revamp with new sample projects at [arc.codes](https://arc.codes)
1436- Fix for obscure bug where `server.close`causes a TypeError
1437- Readme file cleanup
1438
1439
1440### Removed
1441
1442- `.static` folder has been deprecated in favor of the new `public` folder
1443- Statically bound Content-Type web functions (i.e. `@html`, `@css`) are deprecated
1444 - `sandbox` will no longer bootstrap these kinds of functions
1445 - `create` will no longer make these kinds of functions
1446 - However, `deploy` still supports deploying these legacy functions
1447
1448
1449---
1450
1451The 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).