A serverless web framework for Node.js on AWS (CloudFormation, CloudFront, API Gateway, Lambda)

Overview

dawson

----

Sorry, this project is not maintained anymore.

----

Build Status Dependency Status Greenkeeper badge Coverage Status codecov

dawson is a serverless web framework for Node.js on AWS (CloudFormation, CloudFront, API Gateway, Lambda).
You can use dawson to build and deploy backend code and infrastructure for single-page apps + API, pure APIs or server-rendered pages.

npm package

// api.js

import pug from 'pug';
const template = pug.compileFile('template.pug');

export async function greet (event) {
    const name = event.params.path.name
    const age = await getUserAge(name);
    return template({ name, age });
}
greet.api = {
    path: 'greet/{name}'
}
$ npm install -g @dawson/dawson-cli
$ export AWS_REGION=... AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=...
$ dawson deploy

Documentation

Getting Started Guide, API & CLI Documentation

Examples

Examples & Reference Apps

Articles & Tutorials

  1. dawson & React server-side rendering by @hwclass

About

dawson lets you to deploy your serverless Node.js apps on Amazon Web Services. It requires no boilerplate, no init command and no configuration files. Just write your functions and deploy!

You can write your functions using the latest JavaScript version (babel-preset-latest), including async-await, object-rest-spread etc. Functions can be async and can return Promises. There's also built-in authorization support via API Gateway Custom Authorizers.

Each function has its own IAM Execution Role, so you can define fine-graned IAM Policies.
dawson offers first-class support for Single Page Applications: a CloudFront Distribution will be deployed in front of your app, correctly mapping assets and the API origin, so you don't have to worry about CORS. An AWS WAF WebACL can also be attached to CloudFront.

dawson does not bundle your app with webpack, browserify or rollup, so you'll never have to deal with weird things. Your app's devDependencies are stripped out while deploying, keeping the bundle ZIP small.

dawson uses pure CloudFormation templates, following the infrastructure-as-code principle; it requires no local or remote state files which may go out-of-sync or mistakenly be deleted. You can customize your app's template in every part, e.g.: you can add CloudFormation Resources, modify Properties of Resources created by dawson etc. As a free benefit, you get out-of-the-box support for multiple stages and regions.

Finally, dawson will automatically support HTTPS for custom domains thanks to AWS ACM. Also, if you use Route53 your DNS Zone can be automatically updated.

CLI

Using the dawson command you can deploy the infrastructure, inspect logs (in real time, like tail -f) and spin up a full development server so you can run your all locally in an environment will be almost identical to production's. The development server can also run functions locally in response to real AWS Events (S3 Events, DynamoDB Triggers etc.).

$ dawson deploy # deploy your app
$ dawson log -f functionName --follow # get function logs
$ dawson describe # list CloudFormation outputs
$ dawson dev # start a development server

Architecture

https://raw.githubusercontent.com/dawson-org/dawson-cli/images/architecture.png

(additionally for each region you'll deploy to, dawson uses a support stack with an S3 Bucket to store Lambda ZIP bundles and CloudFormation templates)

Changelog

A changelog is maintained in the Releases page.

Contributing

js-semistandard-style Commitizen friendly

Any contribution is very welcome! You may pick an Issue, fork and start working on that. Should you need any guidance or help please ask :)

Testing

Run npm test.

codecov
We are currently testing and targeting 100% coverage for functions that are involved in the template generation (src/factories/**.js).

Contributors

Thanks goes to these wonderful people (emoji key):


Simone Lusenti

πŸ’¬ πŸ“ πŸ› πŸ’» πŸ“– πŸ’‘ πŸš‡ πŸ”Œ πŸ‘€ πŸ“’ ⚠️ πŸ”§ βœ…

Alex Casalboni

πŸ’¬ πŸ› πŸ’» πŸ’‘ πŸ“’ ⚠️ πŸ”§

Giacomo Consonni

πŸ’» πŸ“– πŸ”Œ

Luca Casartelli

πŸ’» πŸ“–

Chris Matheson

πŸ› πŸ“–

Robert Kistner

πŸ› πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

Support

In case you have an issue, make sure you have updated to the latest version (e.g.: npm i @dawson/dawson-cli@latest), then:

  • search / post on StackOverflow using the dawson tag
  • search / open an issue in this repo
  • contact me on Twitter @Lanzone31

Related

License

Copyright (C) 2016  Simone Lusenti

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
Comments
  • python-support

    python-support

    • [x] python parser to extract functions and configuration (#139)
    • [x] libs/language-python/describeApi.js wrapper code for the python parser
    • [x] libs/language-python/compile.js compile (?) and copy all the files to .dawson-dist
    • [x] libs/language-python/installDeps.js install dependencies
    • [x] libs/language-python/createIndex.js create python-specific function wrapping logic (for Lambda)
    • [x] commands/proxy.js pass a dockerImage option (see below)
    • [ ] commands/proxy.js use docker-lambda to call authorizers too (@lusentis)
    • [ ] update the devInstrument logic to work in request-reponse mode too, see: https://github.com/dawson-org/dawson-cli/commit/b71f52592f1748b8d672d6a143877fd676617eb2#diff-ef0939c2350c13f64e5e07d4865e833d
    • [ ] documentation

    Example app: https://github.com/dawson-org/dawson-examples/tree/master/2-basic-python

    wontfix 
    opened by lusentis 23
  • Update prettier to the latest version πŸš€

    Update prettier to the latest version πŸš€

    Version 1.5.0 of prettier just got published.

    Dependency prettier
    Current Version 0.22.0
    Type dependency

    The version 1.5.0 is not covered by your current version range.

    Without accepting this pull request your project will work just like it did before. There might be a bunch of new features, fixes and perf improvements that the maintainers worked on for you though.

    I recommend you look into these changes and try to get onto the latest version of prettier. Given that you have a decent test suite, a passing build is a strong indicator that you can take advantage of these changes by merging the proposed change into your project. Otherwise this branch is a great starting point for you to work on the update.


    Release Notes 1.5.0: GraphQL, CSS-in-JS & JSON

    image

    This is the release I've been waiting for a very long time: one that has only minimal changes to JavaScript!

    For the past 6 months, we kept doing changes to various aspects of printing JavaScript, with the hope that one day we would get to a stable place. No automated tool is going to print perfect code for all the possible edge cases. The goal is to find a good place where when people report code that is printed in a funny way, we can't make it better without making other pieces of code look worse, introduce behavior that's very hard to understand for humans and doesn't introduce some disproportionate complexity to the codebase.

    We're not 100% there yet, but we're closer than ever!

    Now that JavaScript needs for support is trending down, it's an opportunity to support other languages that front-end developers are working on and want formatted. We've introduced TypeScript and CSS in the last release and are doing a batch of fixes for them in this release. We're also adding support for new languages: GraphQL queries, embedding CSS-in-JS and JSON are now available in prettier!

    Blog Post: Adding a new layout strategy to Prettier by @karl

    Prettier is not only a useful tool but it's also a really cool piece of technology. @karl spent a bunch of time improving JSX support and in the process implemented a new primitive to prettier: fill. He wrote a very interesting blog post Adding a new layout strategy to Prettier that I highly recommend reading if you're interested in how prettier is working behind the scenes.

    GraphQL

    Thanks to @stubailo, @jnwng, @tgriesser and @azz, prettier now supports printing GraphQL queries!

    It works for .graphql files and within JavaScipt templates that start with graphql, graphql.experimental and gql in order to work with Relay and Apollo.

    ReactDOM.render(
      <QueryRenderer
        query={graphql`
          query appQuery {
            viewer {
              ...TodoApp_viewer
            }
          }
        `}
        // ...
      />,
      mountNode
    );

    Note that it only supports the open source syntax of GraphQL, therefore doesn't work with Relay Classic, it only works with Relay Modern.

    CSS-in-JS

    If you are using styled-components or styled-jsx, prettier will now reformat the CSS inside of your template expressions.

    const EqualDivider = styled.div`
      margin: 0.5rem;
      padding: 1rem;
      background: papayawhip;
      > * {
        flex: 1;
        &:not(:first-child) {
          ${props => (props.vertical ? "margin-top" : "margin-left")}: 1rem;
        }
      }
    `;

    JSON

    This was pretty straightforward to implement but nonetheless very useful. Thanks to @josephfrazier for doing it :)

    {
      "name": "prettier",
      "version": "1.5.0",
      "description": "Prettier is an opinionated JavaScript formatter",
      "bin": {
        "prettier": "./bin/prettier.js"
      }
    }

    CSS

    I'm really excited because we only put a few days to build the initial CSS support and it has worked surprisingly well. This release brings a handful of important improvements to CSS but nothing that required big changes.

    CSS: Every selector is now printed in its own line (#2047) by @yuchi

    The biggest unknown when printing CSS was how to deal with multiple selectors. The initial approach we took was to use the 80 columns rule where we would only split if it was bigger than that. Many people reported that they were using another strategy for this: always break after a ,. It turns out that many popular codebases are using this approach and it feels good as you can see the structure of the selectors when layed out on-top of each others.

    // Before
    .clusterPlannerDialog input[type="text"], .clusterPlannerDialog .uiTypeahead {
    

    // After .clusterPlannerDialog input[type="text"], .clusterPlannerDialog .uiTypeahead {

    CSS: lowercase hex colors (#2203) by @azz

    The concept of code formatting has blurry boundaries. The core aspect of it is around whitespaces but some things like single vs double quotes and semi-colons are usually bundled with it. With prettier on JavaScript, we also lightly reformat strings by removing extra \ and normalize numbers. For CSS, we need to do a similar interpretation of where the boundary ends. For colors, we decided to turn all the letters into lowercase and stop there. Turning rgb() into hex or 6 hex into 3 hex is out of scope.

    // Before
    .foo {
      color: #AAA;
      -o-color: #fabcd3;
      -ms-color: #AABBCC;
    }
    

    // After .foo { color: #aa; -o-color: #fabcd3; -ms-color: #aabbcc; }

    CSS: Use fill for CSS values (#2224)

    The new fill primitive turned out to be very useful for CSS. For long values, instead of breaking and putting a \n before every element, we can instead only put a \n when it goes over the limit. It leads to much better looking code.

    // Before
    border-left:
      1px
      solid
      mix($warningBackgroundColors, $warningBorderColors, 50%);
    

    // After border-left: 1px solid mix($warningBackgroundColors, $warningBorderColors, 50%);

    CSS: Allow long media rules to break (#2219)

    This is another small fix in the journey of properly supporting a new language. We now encode the ability to break on long @media rules.

    // Before
    @media all and (-webkit-min-device-pixel-ratio: 1.5), all and (-o-min-device-pixel-ratio: 3/2), all and (min--moz-device-pixel-ratio: 1.5), all and (min-device-pixel-ratio: 1.5) {
    }
    

    // After @media all and (-webkit-min-device-pixel-ratio: 1.5), all and (-o-min-device-pixel-ratio: 3/2), all and (min--moz-device-pixel-ratio: 1.5), all and (min-device-pixel-ratio: 1.5) { }

    CSS: Print @else on same line as } (#2088) by @azz

    Less and Scss are turning into real programming languages :) Step by step, we're starting to print all their constructs in the same way as JavaScript. This time, it's the else placement.

    // Before
    @if $media == phonePortrait {
      $k: .15625;
    }
    @else if $media == tabletPortrait {
      $k: .065106;
    }
    

    // After @if $media == phonePortrait { $k: .15625; } @else if $media == tabletPortrait { $k: .065106; }

    CSS: implement prettier-ignore (#2089) by @azz

    While we want prettier to format the entire codebase, there are times where we "know better" and want an escape hatch. This is where the prettier-ignore comment comes in. It wasn't working for CSS but that was an oversight, now it is implemented :)

    // Before
    foo {
      /* prettier-ignore */
      thing: foo;
      -ms-thing: foo;
    }
    

    // After foo { /* prettier-ignore */ thing: foo; -ms-thing: foo; }

    CSS: Fix css-modules composes breaking with long line width (#2190) by @tdeekens

    In order to be fast, many "packagers" do not parse files in order to extract dependencies but instead use a crude regex. This is a reason why we don't break long require() calls and it happens to also affect CSS Modules. If you add new lines in the composes field, it doesn't recognize it anymore. So we're no longer breaking it there, even if it goes over 80 columns.

    // Before
    .reference {
      composes: 
        selector 
        from
        "a/long/file/path/exceeding/the/maximum/length/forcing/a/line-wrap/file.css";
    }
    

    // After .reference { composes: selector from "a/long/file/path/exceeding/the/maximum/length/forcing/a/line-wrap/file.css"; }

    CSS: First try scss when there's an @import with comma (#2225)

    We made a decision to have only a single high level "parser" for CSS, SCSS and Less even though we are using postcss-less and postcss-scss under the hood. We use a regex to figure out which parser to try first and fallback to the other one if a syntax error is thrown. Unfortunately, for certain features, the first (incorrect) parser doesn't throw and instead skips some elements. So, we need to beef up the regex to make sure we are right for the early detection.

    Thankfully, this hack is working well in practice. If we find a lot more edge cases, we'll likely want to do the right thing(tm) and split them into two parsers.

    // Before
    @import "text-shadow";
    

    // After @import "rounded-corners", "text-shadow";

    TypeScript

    TypeScript support is now solid, all the changes for this release are small edge cases.

    TypeScript: print arrow function type params on same line as params (#2101) by @azz

    The core algorithm of prettier is to expand a group if all the elements do not fit. It works really well in practice for most of JavaScript but there's one case it doesn't handle very well is when there are two groups side by side, in this case: <Generics>(Arguments). We have to carefully create groups such that arguments expand first as this is generally what people expect.

    // Before
    export const forwardS = R.curry(<
      V,
      T
    >(prop: string, reducer: ReducerFunction<V, T>, value: V, state: {[name: string]: T}) =>
      R.assoc(prop, reducer(value, state[prop]), state)
    );
    

    // After export const forwardS = R.curry( <V, T>( prop: string, reducer: ReducerFunction<V, T>, value: V, state: { [name: string]: T } ) => R.assoc(prop, reducer(value, state[prop]), state) );

    TypeScript: keep parens around with yield/await non-null assertion (#2149) by @azz

    For better or worse, we decided to manually handle adding parenthesis. So when a new operator is introduced, we need to make sure that we add correct parenthesis when nested with any other combination of operators. In this case, we missed await inside of TypeScript !.

    // Before
    const bar = await foo(false)!;
    

    // After const bar = (await foo(false))!;

    TypeScript: Print {} in import if it's in the source (#2150) by @azz

    We use typescript-eslint-parser project that translates TypeScript AST into estree AST in order for prettier to print it. From time to time we're going to find edge cases that it doesn't handle yet. In this case, it didn't give a way to tell that there's an empty {}, which apparently is important for TypeScript. Thankfully, the team is very responsive and they fixed it after we put a workaround inside of prettier.

    // Before
    import from "@types/googlemaps";
    

    // After import {} from "@types/googlemaps";

    TypeScript: Always break interfaces onto multiple lines (#2161) by @azz

    The code that implements interface is shared with the code that prints objects, which contains a rule to keep them expanded if there's a \n inside. But, this is not the intended behavior for interfaces. We always want to expand, like we do for classes, even if it fits 80 columns.

    // Before
    interface FooBar { [id: string]: number; }
    

    // After interface FooBar { [id: string]: number; }

    TypeScript: Fix extra semicolon in ambient typescript declaration emit (#2167) by @azz

    no-semi and semi are often requested but on the prettier team we're one step ahead and implemented two-semi for you! Just kidding, it was a bug and is now fixed ;)

    // Before
    declare module "classnames" {
      export default function classnames(
        ...inputs: (string | number | false | object | undefined)[]
      ): string;;
    }
    

    // After declare module "classnames" { export default function classnames( ...inputs: (string | number | false | object | undefined)[] ): string; }

    TypeScript: group function params in call/construct signatures (#2169) by @azz

    Adding a comment before a method used to take into account the comment length and would often expand the method when it wasn't expected. Thankfully, it was a simple fix, just wrap the output in a group.

    // Before
    interface TimerConstructor {
      // Line-splitting comment
      new (
        interval: number,
        callback: (handler: Timer) => void
      ): Timer;
    }
    

    interface TimerConstructor { // Line-splitting comment new (interval: number, callback: (handler: Timer) => void): Timer; }

    TypeScript: Upgrade tsep (#2183) by @azz

    This bug was very annoying if you ran into it: anytime you formatted the code, it would add one more _ to the object key!

    // Before
    obj = {                                                                               
      __: 42
      ___: 42
    };
    

    // After obj = {
    _: 42 __: 42 };

    TypeScript: break on multiple interface extends (#2085) by @azz

    Unlike in JavaScript, TypeScript lets you extend multiple classes at once. It turns out that people use this feature and prettier now does a better job at printing it.

    // Before
    export interface ThirdVeryLongAndBoringInterfaceName extends AVeryLongAndBoringInterfaceName, AnotherVeryLongAndBoringInterfaceName, AThirdVeryLongAndBoringInterfaceName {}
    

    // After export interface ThirdVeryLongAndBoringInterfaceName extends AVeryLongAndBoringInterfaceName, AnotherVeryLongAndBoringInterfaceName, AThirdVeryLongAndBoringInterfaceName {}

    TypeScript: handle ObjectPattern instead of ObjectExpression inside BinaryExpression (#2238) by @azz

    This one isn't very interesting, it's an edge case that's not properly handled in the TypeScript -> estree conversion.

    // Before
    call(c => { bla: 1 }) || [];
    

    // After call(c => ({ bla: 1 })) || [];

    Preserve lines after directives (#2070)

    By supporting TypeScript, prettier is now being used in a lot of Angular codebases which exercises edge cases that were not properly handled. In this case, we didn't preserve empty lines after directives inside of a function.

    // Before
    export default class {
      constructor($log, $uibModal) {
        "ngInject";
        Object.assign(this, { $log, $uibModal });
    

    // After export default class { constructor($log, $uibModal) { "ngInject";

    <span class="pl-c1">Object</span>.<span class="pl-en">assign</span>(<span class="pl-c1">this</span>, { $log, $uibModal });</pre></div>
    

    JavaScript

    This release is very light in terms of JavaScript changes, which is awesome. We're starting to see the light at the end of the tunnel and get towards a great pretty printer. We're never going to get to a 100% perfect automatic pretty printer. The goal is that for every issue we get, there are no clear ways to improve the way it is printed without regressing other pieces.

    Allow JSX lines to be recombined (#1831) by @karl

    The goal of prettier is to have a consistent way to format your code: given an AST, we always print the same way. In two places we had to compromise and read the original format: JSX and Objects. With this change, we're no longer relying on the original input for JSX with text inside. This lets us reflow

    // Before
    const Abc = () => {
      return (
        <div>
          Please state your
          {" "}
          <b>name</b>
          {" "}
          and
          {" "}
          <b>occupation</b>
          {" "}
          for the board of directors.
        </div>
      );
    };
    

    // After const Abc = () => { return ( <div> Please state your <b>name</b> and <b>occupation</b> for the board of directors. </div> ); }

    Break on non-literal computed member expression (#2087) by @azz

    Printing member chains is the most complicated piece of prettier and we keep finding small tweaks we can do to make it a better experience.

    // Before
    nock(/test/)
      .matchHeader("Accept", "application/json")[httpMethodNock(method)]("/foo")
      .reply(200, {
        foo: "bar",
      });
    

    // After nock(/test/) .matchHeader("Accept", "application/json") [httpMethodNock(method)]("/foo") .reply(200, { foo: "bar", });

    Indent first variable in one-var scenario (#2095) by @azz

    Up until recently we haven't done much to support printing multiple variables in a single declaration as the most common practice is to do one variable declaration per variable. For single declarations, we don't want to indent it, but it turns out that we do when there are other ones afterwards, otherwise it looks weird.

    // Before
    var templateTagsMapping = {
     '%{itemIndex}': 'index',
     '%{itemContentMetaTextViews}': 'views'
    },
      separator = '<span class="item__content__meta__separator">β€’</span>';
    

    // After var templateTagsMapping = { '%{itemIndex}': 'index', '%{itemContentMetaTextViews}': 'views' }, separator = '<span class="item__content__meta__separator">β€’</span>';

    Allow break with both default named import (#2096) by @azz

    This one is an unfortunate regression from 1.4 where we inlined import that only contained a single element. Turns out the definition of a single element allowed a single type and a single element. This is now corrected!

    // Before
    import transformRouterContext, { type TransformedContextRouter } from '../../helpers/transformRouterContext';
    

    // After import transformRouterContext, { type TransformedContextRouter } from '../../helpers/transformRouterContext';

    Turn allowImportExportEverywhere on (#2207) by @zimme

    The goal of prettier is to format code people write in practice, so we enable loose/experimental modes for all the parsers we support. Babylon allows you to write import within a function, which is not part of the standard, but it doesn't cost us much to allow it.

    // Before
    ParseError
    

    // After function f() { import x from 'x'; }

    Support inline template for new calls (#2222)

    We keep adding features for function calls and have to backport them to new calls as they have a different AST node type but in practice we want to treat them the same. This fix refactored the two so that they are going through the same call site, so hopefully should prevent more from sneaking in.

    // Before
    new Error(
      formatErrorMessage`
        This a really bad error.
        Which has more than one line.
      `
    );
    

    // After new Error(formatErrorMessage</span></span> <span class="pl-s"> This a really bad error.</span> <span class="pl-s"> Which has more than one line.</span> <span class="pl-s"><span class="pl-pds">);

    Don't indent + in object value (#2227)

    When we switched to using the same heuristic for assignment (a = b) for objects ({a: b}), we forgot to fix the indentation. Now it's fixed.

    // Before
    var abc = {
      thing:
        "asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf" +
          "asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf" +
          "asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf",
    }
    

    // After var abc = { thing: "asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf" + "asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf" + "asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf", }

    Handle conditions inside of a ternary (#2228)

    Prettier already had a special case when the expression was a conditional but it didn't apply when the conditional was the left part of a ternary. Now it does.

    // Before
    room = room.map((row, rowIndex) =>
      row.map(
        (col, colIndex) =>
          rowIndex === 0 ||
            colIndex === 0 ||
            rowIndex === height ||
            colIndex === width
            ? 1
            : 0
      )
    );
    

    // After room = room.map((row, rowIndex) => row.map( (col, colIndex) => rowIndex === 0 || colIndex === 0 || rowIndex === height || colIndex === width ? 1 : 0 ) );

    Add caching for printing (#2259)

    With the 1.0 release, we fixed a bug in the printing that introduced an exponential behavior. We've been able to mitigate the biggest issue such that reasonable code didn't time out, but it wasn't completely fixed it. By adding a caching layer at the right spot, we should now be in the clear.

    This should make printing the IR of prettier using prettier in debug mode no longer time out.

    // Before
    ...times out...
    

    // After someObject.someFunction().then(function () { return someObject.someFunction().then(function () { return someObject.someFunction().then(function () { return someObject.someFunction().then(function () { return someObject.someFunction().then(function () { return someObject.someFunction().then(function () { return someObject.someFunction().then(function () { return someObject.someFunction().then(function () { return someObject.someFunction().then(function () { anotherFunction(); }); }); }); }); }); }); }); }); });

    Fix variance location (#2261)

    We refactored the code that prints modifiers when we introduced TypeScript support and accidentally moved around the variance (+) part before static which is not valid in Flow. This is now fixed.

    // Before
    class Route {
      +static param: T;
    }
    

    // After class Route { static +param: T; }

    Miscellaneous

    Various fixes for range and cursor tracking (#2266, #2248, #2250, #2136) by @CiGit and @josephfrazier

    Both those features were introduced in the last release and we discovered a bunch of issues when actually using them in production. A bunch of them got fixed, if you see more, please report them!

    Not sure how things should work exactly?

    There is a collection of frequently asked questions and of course you may always ask my humans.


    Your Greenkeeper Bot :palm_tree:

    wontfix greenkeeper 
    opened by greenkeeper[bot] 21
  • Update prettier to the latest version πŸš€

    Update prettier to the latest version πŸš€

    Version 1.0.0 of prettier just got published.

    Dependency prettier
    Current Version 0.22.0
    Type dependency

    The version 1.0.0 is not covered by your current version range.

    Without accepting this pull request your project will work just like it did before. There might be a bunch of new features, fixes and perf improvements that the maintainers worked on for you though.

    I recommend you look into these changes and try to get onto the latest version of prettier. Given that you have a decent test suite, a passing build is a strong indicator that you can take advantage of these changes by merging the proposed change into your project. Otherwise this branch is a great starting point for you to work on the update.


    Commits

    The new version differs by 123 commits .

    • 23756cd 1.0
    • 1a0067e re-run tests
    • fe7ebc0 Fix edge cases triggered by newlines in arrow functions (#1217)
    • 3709105 Remove now unused getFirstString (#1231)
    • 4d9edec Fix trailing comma for rest element in Babylon (#1230)
    • 4dfe92a Ensure JSXOpeningElement does not break with single text attr on Babylon (#1229)
    • 485028c Fix ALL_PASERS typo in run_spec (#1227)
    • 27d827a Remove hasContent (#1222)
    • 33fdcae Remove isCurlyBracket and isEmptyBlock (#1221)
    • f68531a Fix overflow for last argument expansion (#1224)
    • 5fa8df3 Add cli option for --no-semi (#1223)
    • 4a4e181 Do not merge member chain if there's a comment in-between (#1218)
    • 5d8ffd0 Fix own line last if comment (#1219)
    • ee7cfa9 Ignore empty statement in switch newline detection (#1220)
    • 3a7559b Preserve comment for last arg of ObjectMethod (#1216)

    There are 123 commits in total. See the full diff.

    Not sure how things should work exactly?

    There is a collection of frequently asked questions and of course you may always ask my humans.


    Your Greenkeeper Bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 14
  • package.json not found error is misleading

    package.json not found error is misleading

    ➜  koop-provider-craigslist git:(master) βœ— dawson dev
    
       Execution Error
       Cannot find package.json
    
       Possible cause
       There is no package.json file in the current directory
    
       You are running this command from '/Users/foobar/repos/koop-provider-craigslist' which does not
       contain a package.json file as required by dawson.
    
       Possible solution
       * check if the file exists by running 'stat /Users/foobar/repos/koop-provider-craigslist/package.json'
       * run dawson from the correct folder
       * check file permissions on package.json
    
       If you believe this is not an expected behaviour or that this error message should be improved, open an issue: https://github.com/dawson-org/dawson-cli/issues
    ➜  koop-provider-craigslist git:(master) βœ— stat /Users/foobar/repos/koop-provider-craigslist/package.json
    16777220 167870324 -rwxrwxrwx 1 dani7825 (1968095660 0 1005 "Mar 25 19:14:26 2017" "Mar 25 19:12:55 2017" "Mar 25 19:14:17 2017" "Mar 25 19:12:55 2017" 4096 8 0 /Users/foobar/repos/koop-provider-craigslist/package.json
    

    Package.json exists but there is a syntax error

    https://github.com/dmfenton/koop-provider-craigslist/tree/dawson

    enhancement 
    opened by dmfenton 14
  • Update jest-snapshot to the latest version πŸš€

    Update jest-snapshot to the latest version πŸš€

    Version 21.0.0 of jest-snapshot just got published.

    Dependency jest-snapshot
    Current Version 20.0.3
    Type devDependency

    The version 21.0.0 is not covered by your current version range.

    Without accepting this pull request your project will work just like it did before. There might be a bunch of new features, fixes and perf improvements that the maintainers worked on for you though.

    I recommend you look into these changes and try to get onto the latest version of jest-snapshot. Given that you have a decent test suite, a passing build is a strong indicator that you can take advantage of these changes by merging the proposed change into your project. Otherwise this branch is a great starting point for you to work on the update.


    Not sure how things should work exactly?

    There is a collection of frequently asked questions and of course you may always ask my humans.


    Your Greenkeeper Bot :palm_tree:

    wontfix greenkeeper 
    opened by greenkeeper[bot] 11
  • Update prop-types to the latest version πŸš€

    Update prop-types to the latest version πŸš€

    Version 15.5.0 of prop-types just got published.

    Dependency prop-types
    Current Version 0.2.0
    Type dependency

    The version 15.5.0 is not covered by your current version range.

    Without accepting this pull request your project will work just like it did before. There might be a bunch of new features, fixes and perf improvements that the maintainers worked on for you though.

    I recommend you look into these changes and try to get onto the latest version of prop-types. Given that you have a decent test suite, a passing build is a strong indicator that you can take advantage of these changes by merging the proposed change into your project. Otherwise this branch is a great starting point for you to work on the update.


    Not sure how things should work exactly?

    There is a collection of frequently asked questions and of course you may always ask my humans.


    Your Greenkeeper Bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 10
  • Support for individual project babel configuration

    Support for individual project babel configuration

    The validateBabelRc() function on line 237 in src/config.js throws an error when there's a .babelrc file in the project root directory, and asks for a babel: {} property in the package.json file instead, however nothing was done with that property, and a babel override would be nice to extend the base config to include other presets and plugins for syntax support, transforms, react, etc..

    • check for babel property in package.json
    • fallback to original config if no custom config is present
    opened by rakistner 10
  • Stack (...) is in CREATE_FAILED state and can not be updated.

    Stack (...) is in CREATE_FAILED state and can not be updated.

    Got this while trying to deploy the simple function (first example from dawson's docs):

     ↓ running pre-deploy hook [skipped]
     βœ” validating configuration
     ↓ running pre-deploy hook [skipped]
     βœ” validating configuration
     βœ” checking prerequisites
     βœ” creating bundle
     βœ” generating template
     ↓ removing stack policy [skipped]
     βœ– requesting changeset
       β†’ Stack:arn:aws:cloudformation:us-west-2:125826905630:stack/dawson-tutorialDefault/d8434070-0fdb-11e7-b5d8-50a68a201256 is in CREATE_FAILED state and can not …
       waiting for stack update to complete
       setting stack policy
       running post-deploy hook
       uploading assets
    dawson internal error: Stack:arn:aws:cloudformation:us-west-2:125826905630:stack/dawson-tutorialDefault/d8434070-0fdb-11e7-b5d8-50a68a201256 is in CREATE_FAILED s
    tate and can not be updated.
    ValidationError: Stack:arn:aws:cloudformation:us-west-2:125826905630:stack/dawson-tutorialDefault/d8434070-0fdb-11e7-b5d8-50a68a201256 is in CREATE_FAILED state a
    nd can not be updated.
        at Request.extractError (/usr/local/lib/node_modules/dawson/node_modules/aws-sdk/lib/protocol/query.js:47:29)
        at Request.callListeners (/usr/local/lib/node_modules/dawson/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
        at Request.emit (/usr/local/lib/node_modules/dawson/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
        at Request.emit (/usr/local/lib/node_modules/dawson/node_modules/aws-sdk/lib/request.js:673:14)
        at Request.transition (/usr/local/lib/node_modules/dawson/node_modules/aws-sdk/lib/request.js:22:10)
        at AcceptorStateMachine.runTo (/usr/local/lib/node_modules/dawson/node_modules/aws-sdk/lib/state_machine.js:14:12)
        at /usr/local/lib/node_modules/dawson/node_modules/aws-sdk/lib/state_machine.js:26:10
        at Request.<anonymous> (/usr/local/lib/node_modules/dawson/node_modules/aws-sdk/lib/request.js:38:9)
        at Request.<anonymous> (/usr/local/lib/node_modules/dawson/node_modules/aws-sdk/lib/request.js:675:12)
        at Request.callListeners (/usr/local/lib/node_modules/dawson/node_modules/aws-sdk/lib/sequential_executor.js:115:18)
    Please report this bug: https://github.com/dawson-org/dawson-cli/issues
    
    enhancement wontfix cli documentation 
    opened by belfz 10
  • Update chalk to the latest version πŸš€

    Update chalk to the latest version πŸš€

    Version 2.0.0 of chalk just got published.

    Dependency chalk
    Current Version 1.1.3
    Type dependency

    The version 2.0.0 is not covered by your current version range.

    Without accepting this pull request your project will work just like it did before. There might be a bunch of new features, fixes and perf improvements that the maintainers worked on for you though.

    I recommend you look into these changes and try to get onto the latest version of chalk. Given that you have a decent test suite, a passing build is a strong indicator that you can take advantage of these changes by merging the proposed change into your project. Otherwise this branch is a great starting point for you to work on the update.


    Release Notes 2.0.0

    version 2

    Chalk is a Node.js module for styling and colorizing terminal output.

    Two years ago, @Qix- asked me about adding 256/Truecolor support to Chalk. He soon after joined the Chalk team. And now we’re finally able to ship Truecolor support in Chalk!

    Chalk has had an immense growth since the 1.0.0 release in 2015. It's now trusted by more than 17.000 packages, up from 3000, and it's the 5th most depended upon package on npm.

    Highlights

    Breaking changes

    • Requires Node.js 4 or later.
    • Removed chalk.hasColor(). Use the has-ansi package directly instead. 04cae22
    • Removed chalk.stripColor(). Use the strip-ansi package directly instead. 04cae22
    • Removed chalk.styles. Use the ansi-styles package directly instead. 8702496

    256/Truecolor support

    chalk rainbow

    Chalk now supports 256 colors and Truecolor (16 million colors). Terminal apps like Hyper and iTerm supports Truecolor, enabling you to create really immersive CLI experiences. Chalk is smart enough to downsample the colors to whatever the terminal supports, so you can use any colors without having to think whether it's supported or not.

    Read more in the docs.

    cb3f230

    Tagged template literal

    Chalk now ships with a tagged template literal that makes it much nicer to create long strings with lots of different styling.

    const name = 'Sindre';
    console.log(chalk`{bold Hello ${name}}`);

    Read more in the docs.

    f66271e

    Other

    All changes

    v1.1.3...v2.0.0


    Made with β™₯ by Josh, Sindre, and all our wonderful contributors.

    Commits

    The new version differs by 53 commits ahead by 53, behind by 1.

    • 3fca615 2.0.0
    • f66271e Add tagged template literal (#163)
    • 23ef1c7 fix linter errors
    • c015568 add rainbow example
    • 09fb2d8 Re-implement chalk.enabled (#160)
    • 608242a spoof supports-color
    • 18f2e7c add host information output
    • 523b998 Revert "TEMPORARY: emergency travis CI fix (see comments)"
    • 54975fb TEMPORARY: emergency travis CI fix (see comments)
    • 1d73b21 Improve readme
    • 6f4d6b3 Bump dependencies
    • 8702496 Remove chalk.styles
    • 0412cdf Minor code improvements
    • 249b9ac ES2015ify the codebase
    • cb3f230 Add RGB (256/Truecolor) support (#140)

    There are 53 commits in total.

    See the full diff

    Not sure how things should work exactly?

    There is a collection of frequently asked questions and of course you may always ask my humans.


    Your Greenkeeper Bot :palm_tree:

    wontfix greenkeeper 
    opened by greenkeeper[bot] 8
  • Update prettier-eslint-cli to the latest version πŸš€

    Update prettier-eslint-cli to the latest version πŸš€

    Version 4.0.0 of prettier-eslint-cli just got published.

    Dependency prettier-eslint-cli
    Current Version 3.6.0
    Type devDependency

    The version 4.0.0 is not covered by your current version range.

    Without accepting this pull request your project will work just like it did before. There might be a bunch of new features, fixes and perf improvements that the maintainers worked on for you though.

    I recommend you look into these changes and try to get onto the latest version of prettier-eslint-cli. Given that you have a decent test suite, a passing build is a strong indicator that you can take advantage of these changes by merging the proposed change into your project. Otherwise this branch is a great starting point for you to work on the update.


    Release Notes v4.0.0

    <a name"4.0.0">

    4.0.0 (2017-05-21)

    Bug Fixes

    • release: manually release a major version (d68ae4ff)

    Breaking Changes

    • no more need for --prettier prefixing for Prettier's options
      (d68ae4ff)
    Commits

    The new version differs by 2 commits.

    • d68ae4f fix(release): manually release a major version
    • 9e11635 Breaking Change: Be compatible with Prettier CLI (#59)

    See the full diff

    Not sure how things should work exactly?

    There is a collection of frequently asked questions and of course you may always ask my humans.


    Your Greenkeeper Bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 8
  • support for wildcards and ANY method

    support for wildcards and ANY method

    It should be pretty straightforward to support "API Gateway Lambda Proxy" mode:

    • [x] wildcards paths can be already specified as foo/bar/{any+} [1];
      greedy path variables documentation is here: [3]
    • [x] the ANY method can be specified as func.api.method property [2] (see possible issues below)
    • [x] the development server logic needs to be implemented (greedy support in https://github.com/dawson-org/pathmatch is pending)
    • [x] we need to document both wildcard and ANY

    There is almost no documentation for valid values in CloudFormation's API Gateway Resource and Method resources.

    Possible issues

    • we need to figure out how API Gateway maps requests bodies and in which format it expects responses; from [3] it's not clear whether it's ANY or greedy that sets the sort of req/res passthrough behavior described there; if ANY sets the passthrough mode, we won't add support for it
    • wildcards can only be at the and of a path; we cannot match paths like bar/{path+}/list due to an API Gateway limitation (but I can't figure any real use case for this anyway) [3]

    2017-06-25 updates

    • it turns out that no req/res passthrough behaviour is automatically inherited when creating a creedy/any method from CFn (as opposed to creating a "proxy" method from the AWS Console)

    [1] https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-resource.html#cfn-apigateway-resource-pathpart [2] https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-httpmethod [3] https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html

    opened by lusentis 8
Releases(v0.28.0)
  • v0.28.0(Jun 25, 2017)

    ⚠️️⚠️️⚠️️ starting with this release (v0.28.0) you must install dawson using the new npm scoped package name: @dawson/dawson-cli ⚠️️⚠️️⚠️️

    npm

    New features & improvements

    • feat: support for the ANY method has been added (#156, 0a2ddfe6d1b930c936e77309cd88f3046ee09e85)
    • feat: support for greedy paths has been added (#156, 7cc04894046835628f0102e855cdca709a6885a4 & b25a3514f472961e3e195ac63c8307c6d223dc49 & d0644a3c2a403cd5df0cd29f7ae1e315a989b8ed)
    • fix: an improved error message is shown when no package.json is found or when it contains Syntax Errors (#158, 828381c9efc75a6b01cfcd132daaf34d76ff09af)
    • fix: allow deploying when no assets dir is present and dawson.assetsDir is not defined (56156cab59b8581a08220c412c1a007a70735043)
    • fix: api.excludeEnv has been implemented in the development server too, and is now documented (3f075761df8b019089eb16d41e4060bd29cd732a, f42e56fd7d7bf8424c6184b466b038b310fd93c4)

    :v: The documentation and the examples have been updated to match the new features.

    Source code(tar.gz)
    Source code(zip)
  • v0.27.0(Jun 24, 2017)

    Improvements

    • fix(cli): update warning message in describe command (fb3f4ed2a9231d94134b147c55c7115ef29136d2)
    • we have updated to a new major version of execa, which now extends environment by default (https://github.com/sindresorhus/execa/commit/e370117ff3fe963c9ec1cc538414961b306c00bd), this will impact some phases of the deploy command (zip, install dependencies etc.)
    • we have updated to a new major version of yargs, which has updated parameters precedence for env / config / context (see https://github.com/yargs/yargs/releases/tag/v7.0.0)
    • chore(deps): many dependencies and devDependencies have been updated
    Source code(tar.gz)
    Source code(zip)
  • v0.25.0(Mar 31, 2017)

  • v0.24.0(Mar 30, 2017)

    New features & improvements

    • Node.js 6.10 is now the default AWS Lambda Runtime for JS projects
      (#162, #165, b15193b1c9dbaf95e0cf1bf7c9281d5e5f83030c, 2d2f31ffd372cc087a1ebefe36c656382e5dde37)
    • internal refactor of the JS runtime logic (1e76e9272e441423868c0db04ef12ba9c9a5b8a3, a9ab69bddddf4f06e99427261318cfbcb7fab3af, 9c9d3f56a8da65e81341a2c9a4a1516adc195fe5)
    • many dependencies have been updated
    Source code(tar.gz)
    Source code(zip)
  • v0.23.3(Mar 3, 2017)

    Changelog v0.16.1 -> 0.23.3

    ⚠️️ Breaking changes

    • feat: .babelrc support has been removed; babel-preset-env is used by default and can be extended / overridden using the babel property in package.json (bdd219a296996e27d97ea812ab8fbf791be683f0)
    • chore: tests are now run only against latest Node.js version (3557d99fe13c1ef479593e90f65076cc47f9e5cb)
    • feat: customTemplateFragments are now merged deeply in the template (using lodash/merge instead of Object.assign) (#125, 7db1cd5f53a2a5e5dcf226b3e6e6c4d560376a12)
    • refactor(config): the cloudfrontRootOrigin property has been renamed to root
    • feat: header keys, available from event.params.header, are now lowercased (55e3d604677eb2a29027cb8e865d5ab40c8709bb)
    • feat(deploy): contents of the assets/ folder are now automatically uploaded to the S3 Assets Bucket (fed787b37f358c1f83f24af99f788ac3ca418420) - use assetsDir: false to use the old behaviour

    New features & improvements

    • feat: added a devInstrument property (docs) to run functions locally in response to AWS events (#129, 6ac19b83686b3693f8897e2a642789cced8c0f7d, aeec6c5ac32f86faa3bf46663b8b4e0fb7a018d4, e9aebc4794fa26e4fbb9609b716647674650222e, 29e551b5b26cccb304a6163ddc871ad0add8ecce)
    • feat(dev-server): improved logging (0a61980eea0f1d974e28d42227666f64a897bfb3)
    • feat(dev-server): credentials are automatically renewed so that a server restart is no longer needed (3f60f312e91584a3ec8d4056afa53585dceef655)
    • feat(dev-server): dev server now correctly filters request headersm respecting CloudFront's behaviour
    • feat(deploy): DAWSON_STAGE variable is now available from process.env in Lambdas
    • feat(deploy): non alphanum HTTP paths can now be specified (fe39fd2632f1f7cefd0b5a15d71c6df8b2dcbe3f)
    • feat(deploy): Accept-Language and Token headers are now forwarded by Cloudfront (55e3d604677eb2a29027cb8e865d5ab40c8709bb, f1622dbce27a347c1422749e526d4e56c9a2c45f)
    • feat(deploy): Lambda wrapping code produced by dawson is now prettified using prettier (001927b4a3c3b852faccab1386fa1ff9c8edf25d)
    • feat(deploy): CloudFormation stack will now request CAPABILITY_NAMED_IAM, to supportadding custom Named IAM Roles in your templates (dawson itself won't use named resources) (63afb35a4c983424bf13fe1262c2e37e75c4754e)
    • feat(cli): a --skip-cloudformation option has been added, which skips the Stack Update operation
    • refactor(deploy,dev-server): yarn has been dropped, dependencies are now installed using npm (0d0b13228ff00fa29150f456f3b25f5c0e999b17)
    • fix(deploy): BucketAssets and DistributionWWW Outputs are now available from Lambda's Environment (#111, a1af47a708be90a050a020e762c540e3a3061220)
    • fix: exit gracefully with an useful message if zip or docker binary does not exist (e03234ffd492686275c72fd2d8c1a8acbc88893e)
    • fix: improves error message when a module required by your app is not installed (1f1d189010751940f4ef47659fb938b492a8a07e)
    • improves logging
    • upgrades some dependencies
    Source code(tar.gz)
    Source code(zip)
  • v0.16.1(Jan 30, 2017)

    New features & improvements

    • adds support for enhanced context for custom authorizers (94e8c0ef719605a2bfe29126516eb8438970c912, 142aee6c985e2f8bf31d23d73c1910f213e05f93, 3a7a9d2932053ef3a3910fe16f87986429349f34). See https://aws.amazon.com/about-aws/whats-new/2016/12/enhanced-context-for-custom-authorizers-in-amazon-api-gateway/
    • fixes an error parsing CloudFront configuration in package.json, which caused CF Distributions to always be deployed
    • processCFTemplate() has been updated and it cannot be used to add or change Outputs anymore (c25e5bb54ead931ead855bcacbf05519691fef57). It still has access to the full template and can be used to add Resources.
    • customTemplateFragment() has been added and can be used to add template Resources and Outputs (but has no access to the template which is being processed) (8b10a1100689daf7d122b3f3ff7a8bf4d3a7695a)
    • Stage Outputs will now be passed to Lambda via Environment Variables, instead of APIG's stageVariables (8b10a1100689daf7d122b3f3ff7a8bf4d3a7695a, 08d6b40972f8133b7c612effa15a961f5baaaa39). Env Variable name matches Cfn's Output Name prefixed with DAWSON_ (c24c4c40431cbf592fa93bc85f892d0c7549dea5)
    • process.env.NODE_ENV is now available in Lambda Functions (86092bf411a7f970ad7f9ee380afeb656e1b01fd)
    • ChangeSets have been dropped due to lack of support for nested templates (fe7e63b87320483cdd50c26ec8a0ba01ac22c5bb)
    • the following Cfn Outputs have been removed: ApiGatewayUrl, S3AssetsDNS, CloudFrontDNS, RestApiId, DeploymentId (45479218d5f69dc5a2ec50596b598a30dfa529ba)
    • the following Cfn Outputs have been renamed: S3AssetsBucket -> BucketAssets, WWWDistribution -> DistributionWWW (bc81c61892303d7a2d8e3b8589106e75b5d06a0d)
    • the Account Role for APIGateway has been cleaned up (6b123941eb1e6e3684ee4d05c406dac743263dbb)
    • x-www-form-urlencoded Content-Type is now supported (6c3fd8fefec8559bb49c1ec040f6439fae7bd1f0)
    • fixes an error in the describe command which broke in an earlier release (0dacca1fd1b9378435d17bb2ec0ba3599d8ef80f)
    • signs the Cfn Template URL when running with --verbose, for easier debugging (b39bc7ffe326dfcb65f6e10ce7f9d3ea8878a9ba)
    • improves dev proxy auto reloading, and adds support for macOS (7892d38bea55fd2758929939c90fa2e16bb68559, 034e0af5eca2402326ab5bd6b127b191a640d004, ee910090e682d4ab369e2c9280bee42fab408d69, a906845d1ea312c101e09e530afad298ebd5cb63, bab2142a348ec377fcf5edc3f477082dd6d9392b)
    • updates Function's path validation RegExp (bd16ab8dfe53a51d9a17c56c53cdf04104ae546e)
    • a new property fn.excludeEnv has been added which can be used to exclude some Outputs from Lambda's Environment, preventing a Circular Dependencies error between Cfn Resources (c643f0f5b2b6f11f7dddf7e7c384f22ff635c812)
    • prints the full stack trace when a Lambda Error is catched (5d208eb2e2708d7bbf468d1afa4ea867ce3cb85a)
    • adds a --fast flag to dev proxy, which skips cleanup & deps install (0ca139c06ab67910920366c7a85defcccce78ee8, 4457ffece555957638302db0ff35629a80f460a8)
    • fixes a config check which required docker to be present even when not running the dev proxy (4b6c26cb70d067287333da61975e5a56dbef1860)
    • when Functions are invoked with a { "__ping": <truthy> }, the whole execution is skipped and "pong__" is returned as response (useful for implementing Lambda keep alive logic, more coming soon)
    • Lambda functions now use Resource-based permissions, instead of invocation Roles (622599458bacfe93ec027d0de9fe09ac4f926ae0)
    • updates many dependencies

    ⚠️️ Breaking changes

    • the behaviour of processCFTemplate has been updated, see above
    • variables previously accessed as event.stageVariables.abcD must now be accessed by process.env.DAWSON_abcD, see above for details. A codemod can be used to migrate most of the occurrences: event-stagevariables-to-process-env.js
    • some implicit Cfn Template Outputs have been removed
    Source code(tar.gz)
    Source code(zip)
  • v0.14.1(Jan 12, 2017)

  • v0.9.1(Jan 12, 2017)

  • v0.9.0(Jan 7, 2017)

  • v0.8.0(Dec 11, 2016)

    Improvements / Bugfixes

    • config checks:
      • the policyStatements.Resource has been loosened to prevent false errors (968d7b6)
      • fixes an issue when path was false (af7542f)
      • allows content-types which include dots and dashes (648bdee)
    • fixes possible file permission issues (#1, 3ab1cfa)
    • some unneeded npm dependencies have been removed, see the npm Dependencies page in the documentation for details
    • a check for the docker binary has been added
    • handler file and zip file has been renamed (15827b6)
    Source code(tar.gz)
    Source code(zip)
  • v0.7.1(Dec 5, 2016)

    This is a maintenance release with a lot of cleanup and bug fixes

    Breaking changes

    • api.keepWarm has been removed (#77)
    • api.noWrap has been removed (#77)
    • api.isEventHandler has been removed (#77)
    • cli: now works on node >= 6 (previously only on node >= 7)
    • babel-preset-env is now a required dependency, and the cli now checks for a .babelrc file specifying this preset targeting node 4. babel-preset-es2015, babel-preset-es2017, babel-plugin-transform-runtime are not required to be specified anymore. (c9c1c44cbf1f6c27274fcb8589c066931c056272)

    New features / improvements

    • dawson --version and dawson --help now work if there's no package.json or api.js file (#80)
    • dawson dev now listen by default to $PORT or 3000 if no --port is specified
    • dawson describe now also outputs Stack's Resources
    • cli: dawson config in package.json is now validated before running any command
    • cli: option aliases (-s, -v,...) now work as expected
    • lambda: for functions with path: false it's now possible to retrieve Stack's Outputs using context.dawsonDescribeOutputs()
    • a lot of internal cleanup & improvements
    Source code(tar.gz)
    Source code(zip)
  • v0.6.4(Dec 2, 2016)

    This release contains mainly small improvements & clean up.

    Breaking changes

    • app configuration: zipIgnore has been renamed to ignore (in package.json)

    New features

    • app configuration: configuration errors are now detected earlier (related #62)
    • deploy: ACM Certificate request can be skipped using the --skip-acm flag when deploying (#70)

    Improvements & Bug fixes

    • deploy: --function-name and --no-uploads were completely removed (they didn't work since a few releases) (#74)
    • deploy: the warning message when using "--danger-delete-resources" is now printed asap
    • dev proxy: improves the error message displayed when the stack does not exist
    • dev proxy: fixes a crash occurring when a function thrown an Error (#79)
    • fixed --vebose
    • source-maps-support has been added
    Source code(tar.gz)
    Source code(zip)
  • v0.6.3(Dec 2, 2016)

    Improvements

    • dev proxy: fixed a bug that crashed dawson when zipIgnore was not defined
    • dev proxy: updated ignore patterns to match hidden files, temp files, and node modules in subfolders also
    Source code(tar.gz)
    Source code(zip)
  • v0.6.2(Dec 2, 2016)

  • v0.6.1(Dec 2, 2016)

    This release contains many updates and improvements to the development proxy command (dawson dev).

    Breaking changes

    • dev proxy: the --proxy-assets-url has been renamed to --assets-url (or --assets-proxy)
    • dev proxy: the --assets-path option is back

    Improvements

    • dev proxy: specifying --assets-path or --assets-url is now optional (#69)
    • dev proxy: now watches current directory recursively, using node-watch (related #79, #76)
    • dev proxy: on auto reload, the build dir will not be cleaned up and dependencies will not be reinstalled
    • dev proxy: on startup a small banner is shown displaying the current proxy configuration
    • dev proxy: CF stack is described on startup (instead of describing it on first function execution)
    • dev proxy: improves logging and error reporting (#64)
    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Dec 1, 2016)

    Breaking changes / new features

    • ACM Certificates will now be requested programatically and have been removed from the template (because they need to be in us-east-1) (related to #73)
    • dawson automatically select existing an ACM Certificate, if it specifies the domain name (wildcards are not currently supported)

    Updates

    • CloudFormation support Stacks will now be created in every region that you deploy to (related to #73)
    • the CLI will not cleared when running $ dawson describe --output-name
    • success and stack error message have been heavily improved
    • an edge case has been fixed that caused $ dawson deploy to fail indefinitely when the support Stack failed the last update
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Nov 29, 2016)

    We're happy to announce that the development proxy now runs functions in docker containers (in an environment almost identical to AWS Lambda thanks to docker-lambda) with their IAM Role's credentials.

    Breaking changes

    • dev proxy and lambda: invalid error messages (i.e. without a valid JSON .message property) are now swallowed instead of being exposed to the client; this prevents accidental exposure of stack traces etc
    • dev proxy: functions are now executed in docker containers (#9, #68): you must have docker installed on your machine
    • dev proxy: functions are now executed with their respective IAM Roles (credentials are also cached in-memory). You must complete a deploy before the proxy will run after this update

    Improvements

    • dev proxy: added auto reload of functions when code changes (via fs.watch)
    • dev proxy: response size is not reported anymore (previously, it was reported incorrectly)
    • on startup, the console is always cleared (unless --shell)
    Source code(tar.gz)
    Source code(zip)
  • v0.4.3(Nov 25, 2016)

    Breaking changes

    • files matched by patterns in zipIgnore will not be compiled by babel (367a7493ee6a1820d168a7616e70ffd4d1fdcc06)

    Improvements

    • fixes an issue introduced with 0.4.0, which caused an error when path: false is specified (#65)
    • simplifies error messages (5ef0c41022f703b34dbe1ea5a041f292b2886bac)
    Source code(tar.gz)
    Source code(zip)
  • v0.4.2(Nov 25, 2016)

  • v0.4.1(Nov 24, 2016)

    Breaking changes

    • code is now compiled locally using babel before deploying (#62 & #63). You need to update your app's dependencies (details in the Getting Started Guide)

    Improvements

    • new dawson deploy UI!
    • fixes a bug that caused an error when working in a region other than us-east-1
    Source code(tar.gz)
    Source code(zip)
  • v0.3.1(Nov 23, 2016)

    New features

    • dawson describe output is now sorted alphabetically (#18)
    • a new arg --shell has been added to dawson describe (dawson describe --shell) that prints outputs bash-compatible variable assignments
    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Nov 23, 2016)

    This release contains many improvements and new features.

    Braking changes

    • we removed the dawson.appName property in package.json, in favour of the standard name property. (#59)
    • we changed the format of dawson.cloudfront property and removed the dawson.domains property, see the documentation for more info (#59)

    New features

    • functions can now throw Errors with custom payloads and HTTP status codes (#60, see example)
    • functions can now return 307 Temporary Redirects (#22)
    • if deploying with NODE_ENV=production a WAF WebACL is created and associated with the CloudFront distribution (#59)
    • if you specify a custom domain name (Alias) for a CloudFront distribution, an ACM Certificate is automatically requested and linked to the CloudFront distribution (#59)
    • if you specify a Route53 Hosted Zone ID, an ALIAS record is created and updated to point to the CloudFront distribution (#59)
    • the CLI, after a successful deployment, displays the CloudFront DNS and the custom domain (if configured) (#59)
    Source code(tar.gz)
    Source code(zip)
  • v0.2.1(Nov 18, 2016)

Owner
dawson
A serverless web framework for Node.js on AWS (CloudFormation, CloudFront, API Gateway, Lambda).
dawson
AWS Lambda router for NodeJS

AWS Lambda Router for NodeJS A collection of tools to handle ApiGateway requests and direct function invocation calls on AWS Lambda. Use it as a stand

Dumitru Glavan 11 Apr 22, 2019
A template project for building high-performance, portable, and safe serverless functions in Vercel.

Tutorial | Demo for image processing | Demo for tensorflow This is a Next.js project bootstrapped with create-next-app. This project is aimed to demon

Second State 63 Dec 8, 2022
Fast, unopinionated, minimalist web framework for node.

Fast, unopinionated, minimalist web framework for node. const express = require('express') const app = express() app.get('/', function (req, res) {

null 59.5k Jan 5, 2023
Fast and low overhead web framework, for Node.js

An efficient server implies a lower cost of the infrastructure, a better responsiveness under load and happy users. How can you efficiently handle the

Fastify 26k Jan 2, 2023
:evergreen_tree: Modern Web Application Framework for Node.js.

Trails is a modern, community-driven web application framework for Node.js. It builds on the pedigree of Rails and Grails to accelerate development by

Trails 1.7k Dec 19, 2022
A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript & JavaScript (ES6, ES7, ES8) πŸš€

A progressive Node.js framework for building efficient and scalable server-side applications. Description Nest is a framework for building efficient,

nestjs 53.2k Dec 31, 2022
Realtime MVC Framework for Node.js

Website Get Started Docs News Submit Issue Sails.js is a web framework that makes it easy to build custom, enterprise-grade Node.js apps. It is design

Balderdash 22.4k Dec 31, 2022
πŸš€ The Node.js Framework highly focused on developer ergonomics, stability and confidence

Sponsored by FOSS United is a non-profit foundation that aims at promoting and strengthening the Free and Open Source Software (FOSS) ecosystem in Ind

AdonisJS Framework 13.4k Dec 31, 2022
:rocket: Progressive microservices framework for Node.js

Moleculer Moleculer is a fast, modern and powerful microservices framework for Node.js. It helps you to build efficient, reliable & scalable services.

MoleculerJS 5.5k Jan 4, 2023
MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers

Derby The Derby MVC framework makes it easy to write realtime, collaborative applications that run in both Node.js and browsers. Derby includes a powe

DerbyJS 4.7k Dec 23, 2022
Node.js framework

Node.js framework Total.js framework is a framework for Node.js platfrom written in pure JavaScript similar to PHP's Laravel or Python's Django or ASP

Total.js 4.2k Jan 2, 2023
Marble.js - functional reactive Node.js framework for building server-side applications, based on TypeScript and RxJS.

Functional reactive Node.js framework for building server-side applications, based on TypeScript and RxJS. Ecosystem Name Description @marblejs/core F

Marble.js 2.1k Dec 16, 2022
πŸ¦„ 0-legacy, tiny & fast web framework as a replacement of Express

tinyhttp ⚑ Tiny web framework as a replacement of Express ?? tinyhttp now has a Deno port (work in progress) tinyhttp is a modern Express-like web fra

v 1 r t l 2.4k Jan 3, 2023
Component based MVC web framework for nodejs targeting good code structures & modularity.

Component based MVC web framework for nodejs targeting good code structures & modularity. Why fortjs Based on Fort architecture. MVC Framework and fol

Ujjwal Gupta 47 Sep 27, 2022
Proof of concept for the Quark.js web framework

Quark.js Proof of Concept Proof of concept for the Quark.js web framework. Examples Express.js Implimentation using express.js as a web server: im

Quark.js 3 Feb 18, 2022
Realtime.js - a fast frontend framework based on Web-Components.

Realtime.js is a fast frontend framework based on Web-Components and Proxies. It has a lot of features to simplify your way of live as a vanillajs developer. The framework is programmed in such a way, that you can edit it yourself if you need additional features.

Kilian Hertel 7 Nov 1, 2022
API Services Made Easy With Node.js

Nodal API Services Made Easy with Node.js View the website at nodaljs.com. Nodal is a web server and opinionated framework for building data manipulat

Keith Horwood 4.5k Dec 26, 2022
A Node.js express middleware that implements API versioning for route controllers

express-version-route This npm package provides an ExpressJS middleware to load route controllers based on api versions. Implementing API Versioning i

Liran Tal 87 Nov 15, 2022
Easily add filtering, sorting, and pagination to your Node.js REST API through your old friend: the query string!

QueryQL QueryQL makes it easy to add filtering, sorting, and pagination to your Node.js REST API through your old friend: the query string! Read our i

Truepic 99 Dec 27, 2022