Socket
Socket
Sign inDemoInstall

@ng-toolkit/serverless

Package Overview
Dependencies
247
Maintainers
1
Versions
60
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.10 to 1.1.0

7

package.json
{
"author": "Maciej Treder <contact@maciejtreder.com>",
"name": "@ng-toolkit/serverless",
"version": "1.0.10",
"version": "1.1.0",
"description": "Angular Universal PWA boilerplate for serverless environment.",

@@ -26,3 +26,4 @@ "repository": {

"amazon web services",
"google cloud functions"
"google cloud functions",
"firebase"
],

@@ -34,3 +35,3 @@ "license": "MIT",

"@angular-devkit/schematics": "^0.6.3",
"@ng-toolkit/_utils": "^1.0.0",
"@ng-toolkit/_utils": "^1.1.0",
"@schematics/angular": "^0.6.3"

@@ -37,0 +38,0 @@ },

@@ -20,3 +20,8 @@ [![Maintainability](https://api.codeclimate.com/v1/badges/feb1889ed8bd09672fae/maintainability)](https://codeclimate.com/github/maciejtreder/ng-toolkit/maintainability)

## Getting started
## Content
- [Getting started](#start)
- [Question, Problem, Feature Request](#question)
- [Support @ng-toolkit/init](#funding)
## <a name="start"></a> Getting started
Create or navigate into your project:

@@ -60,10 +65,12 @@ ```bash

## <a name="funding"></a> Funding
## <a name="funding"></a> Support @ng-toolkit/serverless
You can support development of this project via
[Open Collective](https://opencollective.com/ng-toolkit),
[Donorbox](https://donorbox.org/ng-toolkit),
[Liberapay](https://liberapay.com/maciejtreder/donate),
- [Open Collective](https://opencollective.com/ng-toolkit),
- [Donorbox](https://donorbox.org/ng-toolkit),
- [Liberapay](https://liberapay.com/maciejtreder/donate)
If you want, you can be listed on the [List of donors](https://www.angular-universal-pwa.maciejtreder.com/donors) on the demo page.
### Open Collective Backers

@@ -142,5 +149,2 @@

## <a name="credentials"></a> Credentials
* Checkout my [home page](https://www.maciejtreder.com) and find out more about me
* Inspired by [ng-universal-demo](https://github.com/FrozenPandaz/ng-universal-demo)
Founded by [@maciejtreder](https://www.maciejtreder.com)

@@ -0,1 +1,2 @@

// generated by @ng-toolkit/serverless
const awsServerlessExpress = require('aws-serverless-express');

@@ -2,0 +3,0 @@ const server = require('./dist/server');

@@ -0,1 +1,2 @@

// generated by @ng-toolkit/serverless
const port = process.env.PORT || 8080;

@@ -2,0 +3,0 @@

@@ -0,1 +1,2 @@

// generated by @ng-toolkit/serverless
import 'zone.js/dist/zone-node';

@@ -2,0 +3,0 @@ import 'reflect-metadata';

@@ -0,1 +1,2 @@

// generated by @ng-toolkit/serverless
import 'zone.js/dist/zone-node';

@@ -2,0 +3,0 @@ import 'reflect-metadata';

@@ -0,1 +1,2 @@

// generated by @ng-toolkit/serverless
// Work around for https://github.com/angular/angular-cli/issues/7200

@@ -2,0 +3,0 @@

@@ -0,1 +1,2 @@

// generated by @ng-toolkit/serverless
'use strict';

@@ -2,0 +3,0 @@ const server = require('./dist/server');

@@ -0,1 +1,2 @@

// generated by @ng-toolkit/serverless
'use strict';

@@ -2,0 +3,0 @@ const server = require('./dist/server');

@@ -12,15 +12,54 @@ "use strict";

};
const rules = [];
const templateSource = schematics_1.apply(schematics_1.url('files/common'), [
schematics_1.move(options.directory),
]);
//common actions
rules.push(schematics_1.mergeWith(templateSource, schematics_1.MergeStrategy.Overwrite));
rules.push(_utils_1.addOrReplaceScriptInPackageJson(options, "server", "node local.js"));
rules.push(_utils_1.addOrReplaceScriptInPackageJson(options, "build:prod:deploy", "npm run build:prod && npm run deploy"));
rules.push(_utils_1.addOrReplaceScriptInPackageJson(options, "build:serverless:deploy", "npm run build:serverless && npm run deploy"));
rules.push(_utils_1.addDependencyToPackageJson(options, 'ts-loader', '4.2.0', true));
rules.push(_utils_1.addDependencyToPackageJson(options, 'webpack-cli', '2.1.2', true));
rules.push(_utils_1.addDependencyToPackageJson(options, 'cors', '~2.8.4'));
rules.push(_utils_1.addDependencyToPackageJson(options, 'cp-cli', '^1.1.0'));
const rules = [];
rules.push((tree, context) => {
const ngToolkitSettings = _utils_1.getNgToolkitInfo(tree, options);
if (!ngToolkitSettings.universal) {
return schematics_1.chain([
schematics_1.mergeWith(templateSource, schematics_1.MergeStrategy.Overwrite),
tree => {
if (_utils_1.isUniversal(tree, options)) {
tree.rename(`${options.directory}/server_universal.ts`, `${options.directory}/server.ts`);
tree.rename(`${options.directory}/server_static.ts`, `${options.directory}/temp/server_static.ts${new Date().getDate()}`);
}
else {
tree.rename(`${options.directory}/server_universal.ts`, `${options.directory}temp/server_universal.ts${new Date().getDate()}`);
tree.rename(`${options.directory}/server_static.ts`, `${options.directory}/server.ts`);
}
const serverFileContent = test_1.getFileContent(tree, `${options.directory}/server.ts`);
tree.overwrite(`${options.directory}/server.ts`, serverFileContent
.replace('__distBrowserFolder__', _utils_1.getBrowserDistFolder(tree, options))
.replace('__distServerFolder__', _utils_1.getServerDistFolder(tree, options)));
}
])(tree, context);
}
if (ngToolkitSettings.serverless) {
switch (options.provider) {
case 'aws': {
tree.delete(`${options.directory}/lambda.js`);
tree.delete(`${options.directory}/serverless.yml`);
break;
}
case 'gcloud': {
tree.delete(`${options.directory}/index.js`);
tree.delete(`${options.directory}/serverless.yml`);
break;
}
case 'firebase': {
tree.delete(`${options.directory}/functions/index.js`);
tree.delete(`${options.directory}/firebase.json`);
break;
}
}
}
return tree;
});
rules.push(tree => {
_utils_1.addDependencyToPackageJson(tree, options, 'ts-loader', '4.2.0', true);
_utils_1.addDependencyToPackageJson(tree, options, 'webpack-cli', '2.1.2', true);
_utils_1.addDependencyToPackageJson(tree, options, 'cors', '~2.8.4');
_utils_1.addDependencyToPackageJson(tree, options, 'cp-cli', '^1.1.0');
});
rules.push(_utils_1.addOpenCollective(options));

@@ -65,4 +104,6 @@ if (options.provider === 'firebase') {

//serverless stuff
rules.push(_utils_1.addOrReplaceScriptInPackageJson(options, "deploy", "serverless deploy"));
rules.push(_utils_1.addDependencyToPackageJson(options, 'serverless', '1.26.1', true));
rules.push(tree => {
_utils_1.addDependencyToPackageJson(tree, options, 'serverless', '1.26.1', true);
return tree;
});
if (options.provider === 'gcloud') {

@@ -99,2 +140,7 @@ rules.push(addServerlessGcloud(options));

}
rules.push(tree => {
const ngToolkitSettings = _utils_1.getNgToolkitInfo(tree, options);
ngToolkitSettings.serverless = options;
_utils_1.updateNgToolkitInfo(tree, options, ngToolkitSettings);
});
return schematics_1.chain(rules);

@@ -107,40 +153,41 @@ }

const universal = _utils_1.isUniversal(tree, options);
if (options.provider != 'firebase') {
let serverlessBasePath;
if (options.provider === 'aws') {
let serverlessBasePath;
switch (options.provider) {
default:
serverlessBasePath = '/';
break;
case 'aws':
serverlessBasePath = '/production/';
}
else {
break;
case 'gcloud':
serverlessBasePath = '/http/';
}
if (universal) {
packageJsonSource.scripts['build:prod'] = `ng build --prod && ng run ${options.project}:server && webpack --config webpack.server.config.js --progress --colors`;
packageJsonSource.scripts['build:serverless'] = `ng build --prod --base-href ${serverlessBasePath} && ng run ${options.project}:server:serverless && webpack --config webpack.server.config.js --progress --colors`;
}
else {
packageJsonSource.scripts['build:prod'] = 'ng build --prod && webpack --config webpack.server.config.js --progress --colors';
packageJsonSource.scripts['build:serverless'] = `ng build --prod --base-href ${serverlessBasePath} && webpack --config webpack.server.config.js --progress --colors`;
}
break;
}
packageJsonSource.scripts['build:browser:prod'] = `ng build --prod`;
packageJsonSource.scripts['build:browser:serverless'] = `ng build --prod --base-href ${serverlessBasePath}`;
packageJsonSource.scripts['build:serverless'] = `npm run build:browser:serverless && npm run build:server:serverless`;
packageJsonSource.scripts['build:prod'] = `npm run build:browser:prod && npm run build:server:prod`;
packageJsonSource.scripts['server'] = `node local.js`;
packageJsonSource.scripts['build:prod:deploy'] = `npm run build:prod && npm run deploy`;
packageJsonSource.scripts['build:serverless:deploy'] = `npm run build:serverless && npm run deploy`;
if (options.provider === 'firebase') {
packageJsonSource.scripts['deploy'] = `cp-cli dist/ functions/dist/ && cd functions && npm install && firebase deploy`;
}
else {
if (universal) {
packageJsonSource.scripts['build:prod'] = `ng build --prod && ng run ${options.project}:server && webpack --config webpack.server.config.js --progress --colors && cp-cli dist functions/dist`;
packageJsonSource.scripts['deploy'] = `serverless deploy`;
}
if (universal) {
packageJsonSource.scripts['build:server:prod'] = `ng run ${options.project}:server && webpack --config webpack.server.config.js --progress --colors`;
if (options.provider != 'firebase') {
packageJsonSource.scripts['build:server:serverless'] = `ng run ${options.project}:server:serverless && webpack --config webpack.server.config.js --progress --colors`;
}
else {
packageJsonSource.scripts['build:prod'] = 'ng build --prod && webpack --config webpack.server.config.js --progress --colors && cp-cli dist functions/dist';
packageJsonSource.scripts['build:server:serverless'] = `ng run ${options.project}:server && webpack --config webpack.server.config.js --progress --colors`;
}
}
if (universal) {
tree.rename(`${options.directory}/server_universal.ts`, `${options.directory}/server.ts`);
tree.rename(`${options.directory}/server_static.ts`, `${options.directory}/temp/server_static.ts${new Date().getDate()}`);
}
else {
tree.rename(`${options.directory}/server_universal.ts`, `${options.directory}temp/server_universal.ts${new Date().getDate()}`);
tree.rename(`${options.directory}/server_static.ts`, `${options.directory}/server.ts`);
packageJsonSource.scripts['build:server:prod'] = `webpack --config webpack.server.config.js --progress --colors`;
packageJsonSource.scripts['build:server:serverless'] = `webpack --config webpack.server.config.js --progress --colors`;
}
tree.overwrite(`${options.directory}/package.json`, JSON.stringify(packageJsonSource, null, " "));
const serverFileContent = test_1.getFileContent(tree, `${options.directory}/server.ts`);
tree.overwrite(`${options.directory}/server.ts`, serverFileContent
.replace('__distBrowserFolder__', _utils_1.getBrowserDistFolder(tree, options))
.replace('__distServerFolder__', _utils_1.getServerDistFolder(tree, options)));
return tree;

@@ -159,6 +206,6 @@ };

tree.overwrite(`${options.directory}/${fileName}`, test_1.getFileContent(tree, `${options.directory}/${fileName}`).replace('__appName__', options.project.toLowerCase()));
_utils_1.addDependencyToPackageJson(tree, options, 'aws-serverless-express', '^3.2.0');
_utils_1.addDependencyToPackageJson(tree, options, 'serverless-apigw-binary', '^0.4.4', true);
return tree;
},
_utils_1.addDependencyToPackageJson(options, 'aws-serverless-express', '^3.2.0'),
_utils_1.addDependencyToPackageJson(options, 'serverless-apigw-binary', '^0.4.4', true)
}
]);

@@ -176,7 +223,7 @@ }

tree.overwrite(`${options.directory}/${fileName}`, test_1.getFileContent(tree, `${options.directory}/${fileName}`).replace('__appName__', options.project.toLowerCase()));
_utils_1.addDependencyToPackageJson(tree, options, 'firebase-admin', '^5.11.0');
_utils_1.addDependencyToPackageJson(tree, options, 'firebase-functions', '^0.9.1');
_utils_1.addDependencyToPackageJson(tree, options, 'serverless-google-cloudfunctions', '^1.1.1', true);
return tree;
},
_utils_1.addDependencyToPackageJson(options, 'firebase-admin', '^5.11.0'),
_utils_1.addDependencyToPackageJson(options, 'firebase-functions', '^0.9.1'),
_utils_1.addDependencyToPackageJson(options, 'serverless-google-cloudfunctions', '^1.1.1', true)
}
]);

@@ -183,0 +230,0 @@ }

@@ -6,3 +6,3 @@ import {

addDependencyToPackageJson, addOrReplaceScriptInPackageJson, addOpenCollective, updateGitIgnore,
createOrOverwriteFile, addEntryToEnvironment, getMethodBody, updateMethod, addMethod, addImportStatement, getDistFolder, isUniversal, getBrowserDistFolder, getServerDistFolder, implementInterface, addParamterToMethod
createOrOverwriteFile, addEntryToEnvironment, getMethodBody, updateMethod, addMethod, addImportStatement, getDistFolder, isUniversal, getBrowserDistFolder, getServerDistFolder, implementInterface, addParamterToMethod, getNgToolkitInfo, updateNgToolkitInfo
} from '@ng-toolkit/_utils';

@@ -14,2 +14,3 @@ import { getFileContent } from '@schematics/angular/utility/test';

export default function addServerless(options: any): Rule {
options.serverless = {

@@ -19,3 +20,2 @@ aws: {},

};
const rules: Rule[] = [];

@@ -26,14 +26,57 @@ const templateSource = apply(url('files/common'), [

//common actions
rules.push(mergeWith(templateSource, MergeStrategy.Overwrite));
const rules: Rule[] = [];
rules.push(addOrReplaceScriptInPackageJson(options,"server", "node local.js"));
rules.push(addOrReplaceScriptInPackageJson(options,"build:prod:deploy", "npm run build:prod && npm run deploy"));
rules.push(addOrReplaceScriptInPackageJson(options,"build:serverless:deploy", "npm run build:serverless && npm run deploy"));
rules.push((tree: Tree, context: SchematicContext) => {
const ngToolkitSettings = getNgToolkitInfo(tree, options);
if (!ngToolkitSettings.universal) {
return chain([
mergeWith(templateSource, MergeStrategy.Overwrite),
tree => {
if (isUniversal(tree, options)) {
tree.rename(`${options.directory}/server_universal.ts`, `${options.directory}/server.ts`);
tree.rename(`${options.directory}/server_static.ts`, `${options.directory}/temp/server_static.ts${new Date().getDate()}`);
} else {
tree.rename(`${options.directory}/server_universal.ts`, `${options.directory}temp/server_universal.ts${new Date().getDate()}`);
tree.rename(`${options.directory}/server_static.ts`, `${options.directory}/server.ts`);
}
rules.push(addDependencyToPackageJson(options, 'ts-loader', '4.2.0', true));
rules.push(addDependencyToPackageJson(options, 'webpack-cli', '2.1.2', true));
rules.push(addDependencyToPackageJson(options, 'cors', '~2.8.4'));
rules.push(addDependencyToPackageJson(options, 'cp-cli', '^1.1.0'));
const serverFileContent = getFileContent(tree, `${options.directory}/server.ts`);
tree.overwrite(`${options.directory}/server.ts`, serverFileContent
.replace('__distBrowserFolder__', getBrowserDistFolder(tree, options))
.replace('__distServerFolder__', getServerDistFolder(tree, options))
);
}
])(tree, context);
}
if (ngToolkitSettings.serverless) {
switch(options.provider) {
case 'aws': {
tree.delete(`${options.directory}/lambda.js`);
tree.delete(`${options.directory}/serverless.yml`);
break;
}
case 'gcloud': {
tree.delete(`${options.directory}/index.js`);
tree.delete(`${options.directory}/serverless.yml`);
break;
}
case 'firebase': {
tree.delete(`${options.directory}/functions/index.js`);
tree.delete(`${options.directory}/firebase.json`);
break;
}
}
}
return tree;
});
rules.push(tree => {
addDependencyToPackageJson(tree, options, 'ts-loader', '4.2.0', true);
addDependencyToPackageJson(tree, options, 'webpack-cli', '2.1.2', true);
addDependencyToPackageJson(tree, options, 'cors', '~2.8.4');
addDependencyToPackageJson(tree, options, 'cp-cli', '^1.1.0');
});
rules.push(addOpenCollective(options));

@@ -85,4 +128,6 @@

//serverless stuff
rules.push(addOrReplaceScriptInPackageJson(options, "deploy", "serverless deploy"));
rules.push(addDependencyToPackageJson(options, 'serverless', '1.26.1', true));
rules.push( tree => {
addDependencyToPackageJson(tree, options, 'serverless', '1.26.1', true)
return tree;
});

@@ -124,2 +169,8 @@ if (options.provider === 'gcloud') {

}
rules.push(tree => {
const ngToolkitSettings = getNgToolkitInfo(tree, options);
ngToolkitSettings.serverless = options;
updateNgToolkitInfo(tree, options, ngToolkitSettings);
});
return chain(rules);

@@ -134,43 +185,36 @@ }

if (options.provider != 'firebase') {
let serverlessBasePath: string;
let serverlessBasePath;
switch(options.provider) {
default: serverlessBasePath = '/'; break;
case 'aws': serverlessBasePath = '/production/'; break;
case 'gcloud': serverlessBasePath = '/http/'; break;
}
if (options.provider === 'aws') {
serverlessBasePath = '/production/';
} else {
serverlessBasePath = '/http/';
}
packageJsonSource.scripts['build:browser:prod'] = `ng build --prod`;
packageJsonSource.scripts['build:browser:serverless'] = `ng build --prod --base-href ${serverlessBasePath}`;
packageJsonSource.scripts['build:serverless'] = `npm run build:browser:serverless && npm run build:server:serverless`;
packageJsonSource.scripts['build:prod'] = `npm run build:browser:prod && npm run build:server:prod`;
packageJsonSource.scripts['server'] = `node local.js`;
packageJsonSource.scripts['build:prod:deploy'] = `npm run build:prod && npm run deploy`;
packageJsonSource.scripts['build:serverless:deploy'] = `npm run build:serverless && npm run deploy`;
if (universal) {
packageJsonSource.scripts['build:prod'] = `ng build --prod && ng run ${options.project}:server && webpack --config webpack.server.config.js --progress --colors`;
packageJsonSource.scripts['build:serverless'] = `ng build --prod --base-href ${serverlessBasePath} && ng run ${options.project}:server:serverless && webpack --config webpack.server.config.js --progress --colors`;
} else {
packageJsonSource.scripts['build:prod'] = 'ng build --prod && webpack --config webpack.server.config.js --progress --colors';
packageJsonSource.scripts['build:serverless'] = `ng build --prod --base-href ${serverlessBasePath} && webpack --config webpack.server.config.js --progress --colors`;
}
if (options.provider === 'firebase') {
packageJsonSource.scripts['deploy'] = `cp-cli dist/ functions/dist/ && cd functions && npm install && firebase deploy`;
} else {
if (universal) {
packageJsonSource.scripts['build:prod'] = `ng build --prod && ng run ${options.project}:server && webpack --config webpack.server.config.js --progress --colors && cp-cli dist functions/dist`;
} else {
packageJsonSource.scripts['build:prod'] = 'ng build --prod && webpack --config webpack.server.config.js --progress --colors && cp-cli dist functions/dist';
}
packageJsonSource.scripts['deploy'] = `serverless deploy`;
}
if (universal) {
tree.rename(`${options.directory}/server_universal.ts`, `${options.directory}/server.ts`);
tree.rename(`${options.directory}/server_static.ts`, `${options.directory}/temp/server_static.ts${new Date().getDate()}`);
packageJsonSource.scripts['build:server:prod'] = `ng run ${options.project}:server && webpack --config webpack.server.config.js --progress --colors`;
if (options.provider != 'firebase') {
packageJsonSource.scripts['build:server:serverless'] = `ng run ${options.project}:server:serverless && webpack --config webpack.server.config.js --progress --colors`;
} else {
packageJsonSource.scripts['build:server:serverless'] = `ng run ${options.project}:server && webpack --config webpack.server.config.js --progress --colors`;
}
} else {
tree.rename(`${options.directory}/server_universal.ts`, `${options.directory}temp/server_universal.ts${new Date().getDate()}`);
tree.rename(`${options.directory}/server_static.ts`, `${options.directory}/server.ts`);
packageJsonSource.scripts['build:server:prod'] = `webpack --config webpack.server.config.js --progress --colors`;
packageJsonSource.scripts['build:server:serverless'] = `webpack --config webpack.server.config.js --progress --colors`;
}
tree.overwrite(`${options.directory}/package.json`, JSON.stringify(packageJsonSource, null, " "));
const serverFileContent = getFileContent(tree, `${options.directory}/server.ts`);
tree.overwrite(`${options.directory}/server.ts`, serverFileContent
.replace('__distBrowserFolder__', getBrowserDistFolder(tree, options))
.replace('__distServerFolder__', getServerDistFolder(tree, options))
);
return tree;

@@ -192,7 +236,7 @@ }

tree.overwrite(`${options.directory}/${fileName}`, getFileContent(tree,`${options.directory}/${fileName}`).replace('__appName__', options.project.toLowerCase()));
addDependencyToPackageJson(tree, options, 'aws-serverless-express', '^3.2.0' );
addDependencyToPackageJson(tree, options, 'serverless-apigw-binary', '^0.4.4', true );
return tree;
},
addDependencyToPackageJson(options, 'aws-serverless-express', '^3.2.0' ),
addDependencyToPackageJson(options, 'serverless-apigw-binary', '^0.4.4', true )
}
]);

@@ -213,8 +257,8 @@ }

tree.overwrite(`${options.directory}/${fileName}`, getFileContent(tree,`${options.directory}/${fileName}`).replace('__appName__', options.project.toLowerCase()));
addDependencyToPackageJson(tree, options, 'firebase-admin', '^5.11.0' );
addDependencyToPackageJson(tree, options, 'firebase-functions', '^0.9.1' );
addDependencyToPackageJson(tree, options, 'serverless-google-cloudfunctions', '^1.1.1', true );
return tree;
},
addDependencyToPackageJson(options, 'firebase-admin', '^5.11.0' ),
addDependencyToPackageJson(options, 'firebase-functions', '^0.9.1' ),
addDependencyToPackageJson(options, 'serverless-google-cloudfunctions', '^1.1.1', true )
}
]);

@@ -318,2 +362,2 @@ }

}
}
}
{
"$schema": "http://json-schema.org/schema",
"id": "SchematicsAngularPWAApp",
"id": "ng-toolkit serverless",
"title": "Angular Application Options Schema",

@@ -5,0 +5,0 @@ "type": "object",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc