pwrdrvr 0.4.0-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +241 -0
  3. package/bin/run +5 -0
  4. package/dist/commands/delete.d.ts +18 -0
  5. package/dist/commands/delete.d.ts.map +1 -0
  6. package/dist/commands/delete.js +125 -0
  7. package/dist/commands/delete.js.map +1 -0
  8. package/dist/commands/nextjs-version-restore.d.ts +14 -0
  9. package/dist/commands/nextjs-version-restore.d.ts.map +1 -0
  10. package/dist/commands/nextjs-version-restore.js +53 -0
  11. package/dist/commands/nextjs-version-restore.js.map +1 -0
  12. package/dist/commands/nextjs-version.d.ts +18 -0
  13. package/dist/commands/nextjs-version.d.ts.map +1 -0
  14. package/dist/commands/nextjs-version.js +103 -0
  15. package/dist/commands/nextjs-version.js.map +1 -0
  16. package/dist/commands/preflight.d.ts +19 -0
  17. package/dist/commands/preflight.d.ts.map +1 -0
  18. package/dist/commands/preflight.js +135 -0
  19. package/dist/commands/preflight.js.map +1 -0
  20. package/dist/commands/publish-static.d.ts +25 -0
  21. package/dist/commands/publish-static.d.ts.map +1 -0
  22. package/dist/commands/publish-static.js +361 -0
  23. package/dist/commands/publish-static.js.map +1 -0
  24. package/dist/commands/publish.d.ts +39 -0
  25. package/dist/commands/publish.d.ts.map +1 -0
  26. package/dist/commands/publish.js +565 -0
  27. package/dist/commands/publish.js.map +1 -0
  28. package/dist/config/Application.d.ts +26 -0
  29. package/dist/config/Application.d.ts.map +1 -0
  30. package/dist/config/Application.js +99 -0
  31. package/dist/config/Application.js.map +1 -0
  32. package/dist/config/Config.d.ts +18 -0
  33. package/dist/config/Config.d.ts.map +1 -0
  34. package/dist/config/Config.js +71 -0
  35. package/dist/config/Config.js.map +1 -0
  36. package/dist/config/Deployer.d.ts +10 -0
  37. package/dist/config/Deployer.d.ts.map +1 -0
  38. package/dist/config/Deployer.js +17 -0
  39. package/dist/config/Deployer.js.map +1 -0
  40. package/dist/index.d.ts +2 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +6 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/lib/DeployClient.d.ts +102 -0
  45. package/dist/lib/DeployClient.d.ts.map +1 -0
  46. package/dist/lib/DeployClient.js +233 -0
  47. package/dist/lib/DeployClient.js.map +1 -0
  48. package/dist/lib/FilesExist.d.ts +5 -0
  49. package/dist/lib/FilesExist.d.ts.map +1 -0
  50. package/dist/lib/FilesExist.js +26 -0
  51. package/dist/lib/FilesExist.js.map +1 -0
  52. package/dist/lib/S3TransferUtility.d.ts +19 -0
  53. package/dist/lib/S3TransferUtility.d.ts.map +1 -0
  54. package/dist/lib/S3TransferUtility.js +94 -0
  55. package/dist/lib/S3TransferUtility.js.map +1 -0
  56. package/dist/lib/S3Uploader.d.ts +27 -0
  57. package/dist/lib/S3Uploader.d.ts.map +1 -0
  58. package/dist/lib/S3Uploader.js +77 -0
  59. package/dist/lib/S3Uploader.js.map +1 -0
  60. package/dist/lib/Versions.d.ts +33 -0
  61. package/dist/lib/Versions.d.ts.map +1 -0
  62. package/dist/lib/Versions.js +76 -0
  63. package/dist/lib/Versions.js.map +1 -0
  64. package/package.json +83 -0
  65. package/src/commands/delete.ts +135 -0
  66. package/src/commands/nextjs-version-restore.ts +70 -0
  67. package/src/commands/nextjs-version.ts +123 -0
  68. package/src/commands/preflight.ts +148 -0
  69. package/src/commands/publish-static.ts +416 -0
  70. package/src/commands/publish.ts +662 -0
  71. package/src/commands-deprecated/nextjs-docker-auto.skip +590 -0
  72. package/src/config/Application.ts +98 -0
  73. package/src/config/Config.ts +81 -0
  74. package/src/config/Deployer.ts +17 -0
  75. package/src/index.ts +1 -0
  76. package/src/lib/DeployClient.ts +334 -0
  77. package/src/lib/FilesExist.ts +25 -0
  78. package/src/lib/S3TransferUtility.spec.ts +15 -0
  79. package/src/lib/S3TransferUtility.ts +113 -0
  80. package/src/lib/S3Uploader.ts +94 -0
  81. package/src/lib/Versions.ts +101 -0
  82. package/src/lib/__snapshots__/S3TransferUtility.spec.ts.snap +12 -0
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationConfig = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const convict_format_with_validator_1 = require("convict-format-with-validator");
6
+ const yaml = tslib_1.__importStar(require("js-yaml"));
7
+ const convict = tslib_1.__importStar(require("ts-convict"));
8
+ let ApplicationConfig = class ApplicationConfig {
9
+ get name() {
10
+ return this._name;
11
+ }
12
+ set name(value) {
13
+ this._name = value.toLowerCase();
14
+ }
15
+ set staticAssetsPath(value) {
16
+ this._staticAssetsPath = value;
17
+ }
18
+ get staticAssetsPath() {
19
+ return this._staticAssetsPath.replace(/\$SEMVER/, this.semVer);
20
+ }
21
+ };
22
+ tslib_1.__decorate([
23
+ convict.Property({
24
+ doc: 'Name of microapps app',
25
+ default: '',
26
+ env: 'APP_NAME',
27
+ }),
28
+ tslib_1.__metadata("design:type", String),
29
+ tslib_1.__metadata("design:paramtypes", [String])
30
+ ], ApplicationConfig.prototype, "name", null);
31
+ tslib_1.__decorate([
32
+ convict.Property({
33
+ doc: 'SemVer this version is to be published as',
34
+ default: '0.0.1',
35
+ env: 'APP_SEMVER',
36
+ }),
37
+ tslib_1.__metadata("design:type", String)
38
+ ], ApplicationConfig.prototype, "semVer", void 0);
39
+ tslib_1.__decorate([
40
+ convict.Property({
41
+ doc: 'Default file to reference when loading the app with no version',
42
+ default: '',
43
+ env: 'APP_DEFAULT_FILE',
44
+ }),
45
+ tslib_1.__metadata("design:type", String)
46
+ ], ApplicationConfig.prototype, "defaultFile", void 0);
47
+ tslib_1.__decorate([
48
+ convict.Property({
49
+ doc: 'Local path to static assets path to upload to S3',
50
+ default: '',
51
+ env: 'APP_STATIC_ASSETS_PATH',
52
+ }),
53
+ tslib_1.__metadata("design:type", String),
54
+ tslib_1.__metadata("design:paramtypes", [String])
55
+ ], ApplicationConfig.prototype, "staticAssetsPath", null);
56
+ tslib_1.__decorate([
57
+ convict.Property({
58
+ doc: 'Name of the lambda to deploy to (not full ARN)',
59
+ default: '',
60
+ env: 'APP_LAMBDA_NAME',
61
+ }),
62
+ tslib_1.__metadata("design:type", String)
63
+ ], ApplicationConfig.prototype, "lambdaName", void 0);
64
+ tslib_1.__decorate([
65
+ convict.Property({
66
+ doc: 'AWS Account ID to deploy to',
67
+ default: '',
68
+ env: 'AWS_ACCOUNT_ID',
69
+ }),
70
+ tslib_1.__metadata("design:type", String)
71
+ ], ApplicationConfig.prototype, "awsAccountID", void 0);
72
+ tslib_1.__decorate([
73
+ convict.Property({
74
+ doc: 'AWS Region to deploy to',
75
+ default: 'us-east-1',
76
+ env: 'AWS_REGION',
77
+ }),
78
+ tslib_1.__metadata("design:type", String)
79
+ ], ApplicationConfig.prototype, "awsRegion", void 0);
80
+ ApplicationConfig = tslib_1.__decorate([
81
+ convict.Config({
82
+ // optional default file to load, no errors if it doesn't exist
83
+ file: './microapps.yml',
84
+ // optional parameter. Defaults to 'strict', can also be 'warn'
85
+ validationMethod: 'strict',
86
+ // optionally add parsers like yaml or toml
87
+ parser: {
88
+ extension: ['yml', 'yaml'],
89
+ parse: yaml.load,
90
+ },
91
+ //optional extra formats to use in validation
92
+ formats: {
93
+ url: convict_format_with_validator_1.url,
94
+ ipaddress: convict_format_with_validator_1.ipaddress,
95
+ },
96
+ })
97
+ ], ApplicationConfig);
98
+ exports.ApplicationConfig = ApplicationConfig;
99
+ //# sourceMappingURL=Application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Application.js","sourceRoot":"","sources":["../../src/config/Application.ts"],"names":[],"mappings":";;;;AAAA,iFAA+D;AAC/D,sDAAgC;AAChC,4DAAsC;AAkC/B,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAE5B,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,IAKW,IAAI,CAAC,KAAa;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAiBD,IAKW,gBAAgB,CAAC,KAAa;QACvC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;IACD,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;CAsBF,CAAA;AAxDC;IAAC,OAAO,CAAC,QAAQ,CAAC;QAChB,GAAG,EAAE,uBAAuB;QAC5B,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,UAAU;KAChB,CAAC;;;6CAGD;AAED;IAAC,OAAO,CAAC,QAAQ,CAAC;QAChB,GAAG,EAAE,2CAA2C;QAChD,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,YAAY;KAClB,CAAC;;iDACoB;AAEtB;IAAC,OAAO,CAAC,QAAQ,CAAC;QAChB,GAAG,EAAE,gEAAgE;QACrE,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,kBAAkB;KACxB,CAAC;;sDACyB;AAG3B;IAAC,OAAO,CAAC,QAAQ,CAAC;QAChB,GAAG,EAAE,kDAAkD;QACvD,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,wBAAwB;KAC9B,CAAC;;;yDAGD;AAKD;IAAC,OAAO,CAAC,QAAQ,CAAC;QAChB,GAAG,EAAE,gDAAgD;QACrD,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,iBAAiB;KACvB,CAAC;;qDACwB;AAE1B;IAAC,OAAO,CAAC,QAAQ,CAAC;QAChB,GAAG,EAAE,6BAA6B;QAClC,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,gBAAgB;KACtB,CAAC;;uDAC0B;AAE5B;IAAC,OAAO,CAAC,QAAQ,CAAC;QAChB,GAAG,EAAE,yBAAyB;QAC9B,OAAO,EAAE,WAAW;QACpB,GAAG,EAAE,YAAY;KAClB,CAAC;;oDACuB;AA5Dd,iBAAiB;IAnB7B,OAAO,CAAC,MAAM,CAAC;QACd,+DAA+D;QAC/D,IAAI,EAAE,iBAAiB;QAEvB,+DAA+D;QAC/D,gBAAgB,EAAE,QAAQ;QAE1B,2CAA2C;QAC3C,MAAM,EAAE;YACN,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YAC1B,KAAK,EAAE,IAAI,CAAC,IAAI;SACjB;QAED,6CAA6C;QAC7C,OAAO,EAAE;YACP,GAAG,EAAH,mCAAG;YACH,SAAS,EAAT,yCAAS;SACV;KACF,CAAC;GACW,iBAAiB,CA6D7B;AA7DY,8CAAiB"}
@@ -0,0 +1,18 @@
1
+ import { IApplicationConfig } from './Application';
2
+ import { IDeployerConfig } from './Deployer';
3
+ /**
4
+ * Represents a Config
5
+ */
6
+ export interface IConfig {
7
+ deployer: IDeployerConfig;
8
+ app: IApplicationConfig;
9
+ }
10
+ export declare class Config implements IConfig {
11
+ static configFiles(): string[];
12
+ private static _instance;
13
+ static get instance(): IConfig;
14
+ static get envLevel(): 'dev' | 'qa' | 'prod' | 'local';
15
+ app: IApplicationConfig;
16
+ deployer: IDeployerConfig;
17
+ }
18
+ //# sourceMappingURL=Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/config/Config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAkB,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,eAAe,CAAC;IAC1B,GAAG,EAAE,kBAAkB,CAAC;CACzB;AAED,qBAmBa,MAAO,YAAW,OAAO;WACtB,WAAW,IAAI,MAAM,EAAE;IAUrC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAU;IAClC,WAAkB,QAAQ,IAAI,OAAO,CAMpC;IAED,WAAkB,QAAQ,IAAI,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAU5D;IAWM,GAAG,EAAG,kBAAkB,CAAC;IAGzB,QAAQ,EAAG,eAAe,CAAC;CACnC"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var Config_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Config = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const convict_format_with_validator_1 = require("convict-format-with-validator");
7
+ const yaml = tslib_1.__importStar(require("js-yaml"));
8
+ const convict = tslib_1.__importStar(require("ts-convict"));
9
+ const ts_convict_1 = require("ts-convict");
10
+ const FilesExist_1 = require("../lib/FilesExist");
11
+ const Application_1 = require("./Application");
12
+ const Deployer_1 = require("./Deployer");
13
+ let Config = Config_1 = class Config {
14
+ static configFiles() {
15
+ const possibleFiles = [
16
+ './microapps.yaml',
17
+ './microapps.yml',
18
+ `./microapps-${Config_1.envLevel}.yaml`,
19
+ `./microapps-${Config_1.envLevel}.yml`,
20
+ ];
21
+ return FilesExist_1.FilesExist.getExistingFilesSync(possibleFiles);
22
+ }
23
+ static get instance() {
24
+ if (Config_1._instance === undefined) {
25
+ const configLoader = new ts_convict_1.TSConvict(Config_1);
26
+ Config_1._instance = configLoader.load(Config_1.configFiles());
27
+ }
28
+ return Config_1._instance;
29
+ }
30
+ static get envLevel() {
31
+ const nodeEnv = process.env.NODE_ENV || 'dev';
32
+ if (nodeEnv.startsWith('prod')) {
33
+ return 'prod';
34
+ }
35
+ else if (nodeEnv === 'qa') {
36
+ return 'qa';
37
+ }
38
+ else if (nodeEnv === 'local') {
39
+ return 'local';
40
+ }
41
+ return 'dev';
42
+ }
43
+ };
44
+ tslib_1.__decorate([
45
+ convict.Property(Application_1.ApplicationConfig),
46
+ tslib_1.__metadata("design:type", Object)
47
+ ], Config.prototype, "app", void 0);
48
+ tslib_1.__decorate([
49
+ convict.Property(Deployer_1.DeployerConfig),
50
+ tslib_1.__metadata("design:type", Object)
51
+ ], Config.prototype, "deployer", void 0);
52
+ Config = Config_1 = tslib_1.__decorate([
53
+ convict.Config({
54
+ // optional default file to load, no errors if it doesn't exist
55
+ file: 'config.yml',
56
+ // optional parameter. Defaults to 'strict', can also be 'warn'
57
+ validationMethod: 'strict',
58
+ // optionally add parsers like yaml or toml
59
+ parser: {
60
+ extension: ['yml', 'yaml'],
61
+ parse: yaml.load,
62
+ },
63
+ //optional extra formats to use in validation
64
+ formats: {
65
+ url: convict_format_with_validator_1.url,
66
+ ipaddress: convict_format_with_validator_1.ipaddress,
67
+ },
68
+ })
69
+ ], Config);
70
+ exports.Config = Config;
71
+ //# sourceMappingURL=Config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/config/Config.ts"],"names":[],"mappings":";;;;;AAAA,iFAA+D;AAC/D,sDAAgC;AAChC,4DAAsC;AACtC,2CAAuC;AACvC,kDAA+C;AAC/C,+CAAsE;AACtE,yCAA6D;AA6BtD,IAAM,MAAM,cAAZ,MAAM,MAAM;IACV,MAAM,CAAC,WAAW;QACvB,MAAM,aAAa,GAAG;YACpB,kBAAkB;YAClB,iBAAiB;YACjB,eAAe,QAAM,CAAC,QAAQ,OAAO;YACrC,eAAe,QAAM,CAAC,QAAQ,MAAM;SACrC,CAAC;QACF,OAAO,uBAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC;IAGM,MAAM,KAAK,QAAQ;QACxB,IAAI,QAAM,CAAC,SAAS,KAAK,SAAS,EAAE;YAClC,MAAM,YAAY,GAAG,IAAI,sBAAS,CAAS,QAAM,CAAC,CAAC;YACnD,QAAM,CAAC,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,QAAM,CAAC,WAAW,EAAE,CAAC,CAAC;SAC5D;QACD,OAAO,QAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,MAAM,KAAK,QAAQ;QACxB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC9C,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAC9B,OAAO,MAAM,CAAC;SACf;aAAM,IAAI,OAAO,KAAK,IAAI,EAAE;YAC3B,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,OAAO,KAAK,OAAO,EAAE;YAC9B,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CAeF,CAAA;AALC;IAAC,OAAO,CAAC,QAAQ,CAAC,+BAAiB,CAAC;;mCACJ;AAEhC;IAAC,OAAO,CAAC,QAAQ,CAAC,yBAAc,CAAC;;wCACC;AA5CvB,MAAM;IAnBlB,OAAO,CAAC,MAAM,CAAC;QACd,+DAA+D;QAC/D,IAAI,EAAE,YAAY;QAElB,+DAA+D;QAC/D,gBAAgB,EAAE,QAAQ;QAE1B,2CAA2C;QAC3C,MAAM,EAAE;YACN,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YAC1B,KAAK,EAAE,IAAI,CAAC,IAAI;SACjB;QAED,6CAA6C;QAC7C,OAAO,EAAE;YACP,GAAG,EAAH,mCAAG;YACH,SAAS,EAAT,yCAAS;SACV;KACF,CAAC;GACW,MAAM,CA6ClB;AA7CY,wBAAM"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Represents a Deployer Config
3
+ */
4
+ export interface IDeployerConfig {
5
+ lambdaName: string;
6
+ }
7
+ export declare class DeployerConfig implements IDeployerConfig {
8
+ lambdaName: string;
9
+ }
10
+ //# sourceMappingURL=Deployer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Deployer.d.ts","sourceRoot":"","sources":["../../src/config/Deployer.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAe,YAAW,eAAe;IAM7C,UAAU,EAAG,MAAM,CAAC;CAC5B"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeployerConfig = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ts_convict_1 = require("ts-convict");
6
+ class DeployerConfig {
7
+ }
8
+ tslib_1.__decorate([
9
+ (0, ts_convict_1.Property)({
10
+ doc: 'Name of Deployer Lambda function',
11
+ default: 'microapps-deployer',
12
+ env: 'DEPLOYER_LAMBDA_NAME',
13
+ }),
14
+ tslib_1.__metadata("design:type", String)
15
+ ], DeployerConfig.prototype, "lambdaName", void 0);
16
+ exports.DeployerConfig = DeployerConfig;
17
+ //# sourceMappingURL=Deployer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Deployer.js","sourceRoot":"","sources":["../../src/config/Deployer.ts"],"names":[],"mappings":";;;;AAAA,2CAAsC;AAStC,MAAa,cAAc;CAO1B;AANC;IAAC,IAAA,qBAAQ,EAAC;QACR,GAAG,EAAE,kCAAkC;QACvC,OAAO,EAAE,oBAAoB;QAC7B,GAAG,EAAE,sBAAsB;KAC5B,CAAC;;kDACyB;AAN7B,wCAOC"}
@@ -0,0 +1,2 @@
1
+ export { run } from '@oclif/command';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.run = void 0;
4
+ var command_1 = require("@oclif/command");
5
+ Object.defineProperty(exports, "run", { enumerable: true, get: function () { return command_1.run; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,0CAAqC;AAA5B,8FAAA,GAAG,OAAA"}
@@ -0,0 +1,102 @@
1
+ import * as lambda from '@aws-sdk/client-lambda';
2
+ import type { IDeployerResponse, IDeployVersionPreflightResponse, ILambdaAliasResponse } from '@pwrdrvr/microapps-deployer-lib';
3
+ import { IConfig } from '../config/Config';
4
+ /**
5
+ * Represents a Deploy Version Preflight Result
6
+ */
7
+ export interface IDeployVersionPreflightResult {
8
+ exists: boolean;
9
+ response: IDeployVersionPreflightResponse;
10
+ }
11
+ export type DeployVersionArgs = Parameters<typeof DeployClient.DeployVersionLite>[0];
12
+ export default class DeployClient {
13
+ static readonly _client: lambda.LambdaClient;
14
+ static readonly _decoder: TextDecoder;
15
+ /**
16
+ * Create an application
17
+ * @param opts
18
+ */
19
+ static CreateApp(opts: {
20
+ config: IConfig;
21
+ }): Promise<void>;
22
+ /**
23
+ * Delete version
24
+ * @param config
25
+ * @param output
26
+ * @returns
27
+ */
28
+ static DeleteVersion(opts: {
29
+ config: IConfig;
30
+ output: (message: string) => void;
31
+ }): Promise<IDeployerResponse>;
32
+ /**
33
+ * Check if version exists.
34
+ * Optionally get S3 creds for static asset upload.
35
+ * @param config
36
+ * @param output
37
+ * @returns
38
+ */
39
+ static DeployVersionPreflight(opts: {
40
+ config: IConfig;
41
+ needS3Creds?: boolean;
42
+ overwrite: boolean;
43
+ output: (message: string) => void;
44
+ }): Promise<IDeployVersionPreflightResult>;
45
+ /**
46
+ * Create or update Lambda alias for specified Lambda version
47
+ * @param config
48
+ * @param output
49
+ * @returns
50
+ */
51
+ static LambdaAlias(opts: {
52
+ appName: string;
53
+ semVer: string;
54
+ lambdaVersionArn: string;
55
+ overwrite: boolean;
56
+ deployerLambdaName: string;
57
+ output: (message: string) => void;
58
+ }): Promise<{
59
+ response: ILambdaAliasResponse;
60
+ }>;
61
+ /**
62
+ * Copy S3 static assets from staging to live bucket.
63
+ * Create API Gateway Integration for app (if needed).
64
+ * Give API Gateway permission to call the Lambda.
65
+ * Create API Gateway routes for this specific version.
66
+ * @param config
67
+ * @param task
68
+ */
69
+ static DeployVersion(opts: {
70
+ appName: string;
71
+ semVer: string;
72
+ defaultFile?: string;
73
+ lambdaAliasArn?: string;
74
+ deployerLambdaName: string;
75
+ appType: 'lambda' | 'static' | 'lambda-url' | 'url';
76
+ startupType?: 'iframe' | 'direct';
77
+ url?: string;
78
+ overwrite: boolean;
79
+ output: (message: string) => void;
80
+ }): Promise<void>;
81
+ /**
82
+ * Copy S3 static assets from staging to live bucket.
83
+ * Create DB records.
84
+ * Proxied to parent account if needed.
85
+ *
86
+ * @param config
87
+ * @param task
88
+ */
89
+ static DeployVersionLite(opts: {
90
+ appName: string;
91
+ semVer: string;
92
+ defaultFile?: string;
93
+ lambdaAliasArn?: string;
94
+ deployerLambdaName: string;
95
+ appType: 'lambda' | 'static' | 'lambda-url' | 'url';
96
+ startupType?: 'iframe' | 'direct';
97
+ url?: string;
98
+ overwrite: boolean;
99
+ output: (message: string) => void;
100
+ }): Promise<void>;
101
+ }
102
+ //# sourceMappingURL=DeployClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeployClient.d.ts","sourceRoot":"","sources":["../../src/lib/DeployClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AACjD,OAAO,KAAK,EAEV,iBAAiB,EAEjB,+BAA+B,EAI/B,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,+BAA+B,CAAC;CAC3C;AAED,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAErF,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,OAAO,sBAEpB;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAA4B;IAEpD;;;OAGG;WACiB,SAAS,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BvE;;;;;OAKG;WACiB,aAAa,CAAC,IAAI,EAAE;QACtC,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACnC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+B9B;;;;;;OAMG;WACiB,sBAAsB,CAAC,IAAI,EAAE;QAC/C,MAAM,EAAE,OAAO,CAAC;QAChB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACnC,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAwC1C;;;;;OAKG;WACiB,WAAW,CAAC,IAAI,EAAE;QACpC,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,OAAO,CAAC;QACnB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACnC,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,oBAAoB,CAAA;KAAE,CAAC;IAwC/C;;;;;;;OAOG;WACiB,aAAa,CAAC,IAAI,EAAE;QACtC,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAC;QACpD,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAClC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACnC,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CjB;;;;;;;OAOG;WACiB,iBAAiB,CAAC,IAAI,EAAE;QAC1C,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAC;QACpD,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAClC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACnC,GAAG,OAAO,CAAC,IAAI,CAAC;CA6ClB"}
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const lambda = tslib_1.__importStar(require("@aws-sdk/client-lambda"));
5
+ class DeployClient {
6
+ /**
7
+ * Create an application
8
+ * @param opts
9
+ */
10
+ static async CreateApp(opts) {
11
+ const { config } = opts;
12
+ const request = {
13
+ type: 'createApp',
14
+ appName: config.app.name,
15
+ displayName: config.app.name,
16
+ };
17
+ const response = await this._client.send(new lambda.InvokeCommand({
18
+ FunctionName: config.deployer.lambdaName,
19
+ Payload: Buffer.from(JSON.stringify(request)),
20
+ }));
21
+ if (response.$metadata.httpStatusCode === 200 && response.Payload !== undefined) {
22
+ const dResponse = JSON.parse(Buffer.from(response.Payload).toString('utf-8'));
23
+ if (!(dResponse.statusCode === 201 || dResponse.statusCode === 200)) {
24
+ throw new Error(`App create failed: ${JSON.stringify(dResponse)}`);
25
+ }
26
+ }
27
+ else {
28
+ throw new Error(`App Create - Lambda Invoke Failed: ${JSON.stringify(response)}`);
29
+ }
30
+ }
31
+ /**
32
+ * Delete version
33
+ * @param config
34
+ * @param output
35
+ * @returns
36
+ */
37
+ static async DeleteVersion(opts) {
38
+ const { config, output } = opts;
39
+ const request = {
40
+ type: 'deleteVersion',
41
+ appName: config.app.name,
42
+ semVer: config.app.semVer,
43
+ };
44
+ const response = await this._client.send(new lambda.InvokeCommand({
45
+ FunctionName: config.deployer.lambdaName,
46
+ Payload: Buffer.from(JSON.stringify(request)),
47
+ }));
48
+ if (response.$metadata.httpStatusCode === 200 && response.Payload !== undefined) {
49
+ const dResponse = JSON.parse(Buffer.from(response.Payload).toString('utf-8'));
50
+ if (dResponse.statusCode === 404) {
51
+ output(`App/Version does not exist: ${config.app.name}/${config.app.semVer}`);
52
+ return dResponse;
53
+ }
54
+ else {
55
+ output(`App/Version deleted: ${config.app.name}/${config.app.semVer}`);
56
+ return dResponse;
57
+ }
58
+ }
59
+ else {
60
+ throw new Error(`Lambda call to DeleteVersion failed: ${JSON.stringify(response)}`);
61
+ }
62
+ }
63
+ /**
64
+ * Check if version exists.
65
+ * Optionally get S3 creds for static asset upload.
66
+ * @param config
67
+ * @param output
68
+ * @returns
69
+ */
70
+ static async DeployVersionPreflight(opts) {
71
+ const { config, needS3Creds = true, overwrite, output } = opts;
72
+ const request = {
73
+ type: 'deployVersionPreflight',
74
+ appName: config.app.name,
75
+ semVer: config.app.semVer,
76
+ overwrite,
77
+ needS3Creds,
78
+ };
79
+ const response = await this._client.send(new lambda.InvokeCommand({
80
+ FunctionName: config.deployer.lambdaName,
81
+ Payload: Buffer.from(JSON.stringify(request)),
82
+ }));
83
+ if (response.$metadata.httpStatusCode === 200 && response.Payload !== undefined) {
84
+ const dResponse = JSON.parse(Buffer.from(response.Payload).toString('utf-8'));
85
+ if (dResponse.statusCode === 404) {
86
+ output(`App/Version does not exist: ${config.app.name}/${config.app.semVer}`);
87
+ return { exists: false, response: dResponse };
88
+ }
89
+ else if (dResponse.statusCode > 299) {
90
+ // @ts-expect-error remove awsCredentials from response
91
+ delete dResponse.awsCredentials;
92
+ output(`DeployVersionPreflight failed: ${JSON.stringify(dResponse)}`);
93
+ throw new Error('DeployVersionPreflight failed');
94
+ }
95
+ else {
96
+ output(`App/Version exists: ${config.app.name}/${config.app.semVer}`);
97
+ return { exists: true, response: dResponse };
98
+ }
99
+ }
100
+ else {
101
+ // @ts-expect-error remove awsCredentials from response
102
+ delete dResponse.awsCredentials;
103
+ throw new Error(`Lambda call to DeployVersionPreflight failed: ${JSON.stringify(response)}`);
104
+ }
105
+ }
106
+ /**
107
+ * Create or update Lambda alias for specified Lambda version
108
+ * @param config
109
+ * @param output
110
+ * @returns
111
+ */
112
+ static async LambdaAlias(opts) {
113
+ const { appName, deployerLambdaName, lambdaVersionArn, overwrite, output, semVer } = opts;
114
+ const request = {
115
+ type: 'lambdaAlias',
116
+ appName,
117
+ semVer,
118
+ lambdaARN: lambdaVersionArn,
119
+ overwrite,
120
+ };
121
+ output(`Creating alias for version ARN: ${lambdaVersionArn}`);
122
+ const response = await this._client.send(new lambda.InvokeCommand({
123
+ FunctionName: deployerLambdaName,
124
+ Payload: Buffer.from(JSON.stringify(request)),
125
+ }));
126
+ if (response.$metadata.httpStatusCode === 200 && response.Payload !== undefined) {
127
+ const dResponse = JSON.parse(Buffer.from(response.Payload).toString('utf-8'));
128
+ if (dResponse.statusCode > 299) {
129
+ output(`LambdaAlias failed: ${JSON.stringify(dResponse)}`);
130
+ throw new Error('LambdaAlias failed');
131
+ }
132
+ else if (!dResponse.functionUrl) {
133
+ output(`LambdaAlias failed to return functionUrl: ${JSON.stringify(dResponse)}`);
134
+ throw new Error('LambdaAlias failed to return functionUrl');
135
+ }
136
+ else if (dResponse.statusCode === 201) {
137
+ output(`Alias created: ${dResponse.lambdaAliasARN}`);
138
+ return { response: dResponse };
139
+ }
140
+ else {
141
+ output(`Alias ${dResponse.actionTaken}: ${dResponse.lambdaAliasARN}`);
142
+ return { response: dResponse };
143
+ }
144
+ }
145
+ else {
146
+ throw new Error(`Lambda call to LambdaAlias failed: ${JSON.stringify(response)}`);
147
+ }
148
+ }
149
+ /**
150
+ * Copy S3 static assets from staging to live bucket.
151
+ * Create API Gateway Integration for app (if needed).
152
+ * Give API Gateway permission to call the Lambda.
153
+ * Create API Gateway routes for this specific version.
154
+ * @param config
155
+ * @param task
156
+ */
157
+ static async DeployVersion(opts) {
158
+ const { appName, semVer, defaultFile, lambdaAliasArn, deployerLambdaName, appType, startupType = 'iframe', url, overwrite, output, } = opts;
159
+ const request = {
160
+ type: 'deployVersion',
161
+ appType,
162
+ startupType,
163
+ appName,
164
+ semVer,
165
+ defaultFile: defaultFile,
166
+ url,
167
+ overwrite,
168
+ ...(['lambda', 'lambda-url'].includes(appType) ? { lambdaARN: lambdaAliasArn } : {}),
169
+ };
170
+ const response = await this._client.send(new lambda.InvokeCommand({
171
+ FunctionName: deployerLambdaName,
172
+ Payload: Buffer.from(JSON.stringify(request)),
173
+ }));
174
+ if (response.$metadata.httpStatusCode === 200 && response.Payload !== undefined) {
175
+ const dResponse = JSON.parse(Buffer.from(response.Payload).toString('utf-8'));
176
+ if (dResponse.statusCode === 201) {
177
+ output(`Deploy succeeded: ${appName}/${semVer}`);
178
+ }
179
+ else {
180
+ output(`Deploy failed with: ${dResponse.statusCode}`);
181
+ throw new Error(`Lambda call to DeployVersion failed with: ${dResponse.statusCode}`);
182
+ }
183
+ }
184
+ else {
185
+ throw new Error(`Lambda call to DeployVersion failed: ${JSON.stringify(response)}`);
186
+ }
187
+ }
188
+ /**
189
+ * Copy S3 static assets from staging to live bucket.
190
+ * Create DB records.
191
+ * Proxied to parent account if needed.
192
+ *
193
+ * @param config
194
+ * @param task
195
+ */
196
+ static async DeployVersionLite(opts) {
197
+ const { appName, semVer, defaultFile, lambdaAliasArn, deployerLambdaName, appType, startupType = 'iframe', url, overwrite, output, } = opts;
198
+ const request = {
199
+ type: 'deployVersionLite',
200
+ appType,
201
+ startupType,
202
+ appName,
203
+ semVer,
204
+ defaultFile: defaultFile,
205
+ url,
206
+ overwrite,
207
+ ...(['lambda', 'lambda-url'].includes(appType) ? { lambdaARN: lambdaAliasArn } : {}),
208
+ };
209
+ const response = await this._client.send(new lambda.InvokeCommand({
210
+ FunctionName: deployerLambdaName,
211
+ Payload: Buffer.from(JSON.stringify(request)),
212
+ }));
213
+ if (response.$metadata.httpStatusCode === 200 && response.Payload !== undefined) {
214
+ const dResponse = JSON.parse(Buffer.from(response.Payload).toString('utf-8'));
215
+ if (dResponse.statusCode === 201) {
216
+ output(`Deploy succeeded: ${appName}/${semVer}`);
217
+ }
218
+ else {
219
+ output(`Deploy failed with: ${dResponse.statusCode}`);
220
+ throw new Error(`Lambda call to DeployVersionLite failed with: ${dResponse.statusCode}`);
221
+ }
222
+ }
223
+ else {
224
+ throw new Error(`Lambda call to DeployVersionLite failed: ${JSON.stringify(response)}`);
225
+ }
226
+ }
227
+ }
228
+ exports.default = DeployClient;
229
+ DeployClient._client = new lambda.LambdaClient({
230
+ maxAttempts: 8,
231
+ });
232
+ DeployClient._decoder = new TextDecoder('utf-8');
233
+ //# sourceMappingURL=DeployClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeployClient.js","sourceRoot":"","sources":["../../src/lib/DeployClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare class FilesExist {
2
+ static getExistingFiles(filesToCheck: string[]): Promise<string[]>;
3
+ static getExistingFilesSync(filesToCheck: string[]): string[];
4
+ }
5
+ //# sourceMappingURL=FilesExist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilesExist.d.ts","sourceRoot":"","sources":["../../src/lib/FilesExist.ts"],"names":[],"mappings":"AAEA,qBAAa,UAAU;WACD,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;WAWjE,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;CAUrE"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FilesExist = void 0;
4
+ const fs_extra_1 = require("fs-extra");
5
+ class FilesExist {
6
+ static async getExistingFiles(filesToCheck) {
7
+ const existingFiles = [];
8
+ for (const file of filesToCheck) {
9
+ if (await (0, fs_extra_1.pathExists)(file)) {
10
+ existingFiles.push(file);
11
+ }
12
+ }
13
+ return existingFiles;
14
+ }
15
+ static getExistingFilesSync(filesToCheck) {
16
+ const existingFiles = [];
17
+ for (const file of filesToCheck) {
18
+ if ((0, fs_extra_1.pathExistsSync)(file)) {
19
+ existingFiles.push(file);
20
+ }
21
+ }
22
+ return existingFiles;
23
+ }
24
+ }
25
+ exports.FilesExist = FilesExist;
26
+ //# sourceMappingURL=FilesExist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilesExist.js","sourceRoot":"","sources":["../../src/lib/FilesExist.ts"],"names":[],"mappings":";;;AAAA,uCAAsD;AAEtD,MAAa,UAAU;IACd,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAsB;QACzD,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;YAC/B,IAAI,MAAM,IAAA,qBAAU,EAAC,IAAI,CAAC,EAAE;gBAC1B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1B;SACF;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,YAAsB;QACvD,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;YAC/B,IAAI,IAAA,yBAAc,EAAC,IAAI,CAAC,EAAE;gBACxB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1B;SACF;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;CACF;AAtBD,gCAsBC"}