@pwrdrvr/microapps-datalib 0.2.13 → 0.3.0-alpha.2
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.
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/models/version.d.ts +64 -2
- package/dist/models/version.d.ts.map +1 -1
- package/dist/models/version.js +16 -0
- package/dist/models/version.js.map +1 -1
- package/package.json +3 -2
- package/src/index.ts +4 -6
- package/src/models/version.spec.ts +136 -107
- package/src/models/version.ts +81 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export { Application, DBManager, Version, Rules, IVersionsAndRules };
|
|
1
|
+
export { DBManager } from './manager';
|
|
2
|
+
export { Application, IVersionsAndRules } from './models/application';
|
|
3
|
+
export { Rules } from './models/rules';
|
|
4
|
+
export { Version } from './models/version';
|
|
6
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
3
|
+
exports.Version = exports.Rules = exports.Application = exports.DBManager = void 0;
|
|
4
|
+
var manager_1 = require("./manager");
|
|
5
5
|
Object.defineProperty(exports, "DBManager", { enumerable: true, get: function () { return manager_1.DBManager; } });
|
|
6
|
-
|
|
6
|
+
var application_1 = require("./models/application");
|
|
7
7
|
Object.defineProperty(exports, "Application", { enumerable: true, get: function () { return application_1.Application; } });
|
|
8
|
-
|
|
8
|
+
var rules_1 = require("./models/rules");
|
|
9
9
|
Object.defineProperty(exports, "Rules", { enumerable: true, get: function () { return rules_1.Rules; } });
|
|
10
|
-
|
|
10
|
+
var version_1 = require("./models/version");
|
|
11
11
|
Object.defineProperty(exports, "Version", { enumerable: true, get: function () { return version_1.Version; } });
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAA7B,oGAAA,SAAS,OAAA;AAClB,oDAAsE;AAA7D,0GAAA,WAAW,OAAA;AACpB,wCAAuC;AAA9B,8FAAA,KAAK,OAAA;AACd,4CAA2C;AAAlC,kGAAA,OAAO,OAAA"}
|
package/dist/models/version.d.ts
CHANGED
|
@@ -1,20 +1,76 @@
|
|
|
1
1
|
import { DBManager } from '..';
|
|
2
2
|
export declare type VersionStatus = 'pending' | 'assets-copied' | 'permissioned' | 'integrated' | 'routed' | 'deployed';
|
|
3
|
-
export declare type AppTypes = 'static' | 'lambda';
|
|
3
|
+
export declare type AppTypes = 'static' | 'lambda' | 'lambda-url' | 'url';
|
|
4
|
+
export declare type AppStartupTypes = 'iframe' | 'direct';
|
|
4
5
|
/**
|
|
5
6
|
* Represents a Version Record
|
|
6
7
|
*/
|
|
7
8
|
export interface IVersionRecord {
|
|
8
9
|
PK: string;
|
|
9
10
|
SK: string;
|
|
11
|
+
/**
|
|
12
|
+
* Name of the app
|
|
13
|
+
*/
|
|
10
14
|
AppName: string;
|
|
15
|
+
/**
|
|
16
|
+
* SemVer for this version
|
|
17
|
+
*/
|
|
11
18
|
SemVer: string;
|
|
12
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Type of app (which implies how it's routed)
|
|
21
|
+
*
|
|
22
|
+
* @enum {string} static - Files only
|
|
23
|
+
* @enum {string} lambda - Lambda integrated via API Gateway
|
|
24
|
+
* @enum {string} lambda-url - Lambda integrated via Function URL w/IAM Auth
|
|
25
|
+
* @enum {string} url - Other URL without IAM Auth
|
|
26
|
+
*/
|
|
27
|
+
Type: AppTypes;
|
|
28
|
+
/**
|
|
29
|
+
* Startup type of the app
|
|
30
|
+
* This currently indicates whether `/appName` will render an iframe
|
|
31
|
+
* that points to `/appName/semVer` or if `/appName` will proxy
|
|
32
|
+
* directly to a specific version of the app, which will render itself at
|
|
33
|
+
* `/appName` but will write all of it's static/api requests as
|
|
34
|
+
* `/appName/semVer/...`
|
|
35
|
+
* @enum {string} iframe - Render an iframe that points to the version
|
|
36
|
+
* @enum {string} direct - Proxy directly to the version, incompatible with `static` and `apigwy` (`lambda`)
|
|
37
|
+
*/
|
|
38
|
+
StartupType: AppStartupTypes;
|
|
39
|
+
/**
|
|
40
|
+
* @enum {string} pending - Version is being created
|
|
41
|
+
* @enum {string} assets-copied - Version assets have been copied to S3
|
|
42
|
+
* @enum {string} permissioned - API Gatewy - Permissions to invoke have been granted
|
|
43
|
+
* @enum {string} integrated - API Gateway - Lambda integration has been created
|
|
44
|
+
* @enum {string} routed - API Gateway - Lambe integration has been added to routes
|
|
45
|
+
* @enum {string} deployed - Version has been fully deployed
|
|
46
|
+
*/
|
|
13
47
|
Status: VersionStatus;
|
|
48
|
+
/**
|
|
49
|
+
* Default file or path to redirect to if the app is started without
|
|
50
|
+
* a specific file or path below the appName or appName/semVer,
|
|
51
|
+
* particularly useful for `static` apps.
|
|
52
|
+
*
|
|
53
|
+
* @example 'index.html'
|
|
54
|
+
*/
|
|
14
55
|
DefaultFile: string;
|
|
56
|
+
/**
|
|
57
|
+
* API Gateway (type=lambda) only
|
|
58
|
+
*/
|
|
15
59
|
IntegrationID: string;
|
|
60
|
+
/**
|
|
61
|
+
* API Gateway (type=lambda) only
|
|
62
|
+
*/
|
|
16
63
|
RouteIDAppVersion: string;
|
|
64
|
+
/**
|
|
65
|
+
* API Gateway (type=lambda) only
|
|
66
|
+
*/
|
|
17
67
|
RouteIDAppVersionSplat: string;
|
|
68
|
+
/**
|
|
69
|
+
* Lambda Function URL (type=lambda-url) or URL (type=url) only
|
|
70
|
+
* @example https://[lambda-url-id].lambda-url.us-east-1.on.aws/
|
|
71
|
+
* @example https://www.example.com/
|
|
72
|
+
*/
|
|
73
|
+
URL: string;
|
|
18
74
|
}
|
|
19
75
|
export declare type IVersionRecordNoKeysLoose = Partial<Omit<IVersionRecord, 'PK' | 'SK' | 'AppName' | 'SemVer'>> & Pick<IVersionRecord, 'AppName' | 'SemVer'>;
|
|
20
76
|
export declare class Version implements IVersionRecord {
|
|
@@ -49,11 +105,13 @@ export declare class Version implements IVersionRecord {
|
|
|
49
105
|
private _appName;
|
|
50
106
|
private _semVer;
|
|
51
107
|
private _type;
|
|
108
|
+
private _startupType;
|
|
52
109
|
private _status;
|
|
53
110
|
private _defaultFile;
|
|
54
111
|
private _integrationID;
|
|
55
112
|
private _routeIDAppVersion;
|
|
56
113
|
private _routeIDAppVersionSplat;
|
|
114
|
+
private _url;
|
|
57
115
|
constructor(init?: Partial<IVersionRecordNoKeysLoose>);
|
|
58
116
|
get DbStruct(): IVersionRecord;
|
|
59
117
|
/**
|
|
@@ -68,6 +126,8 @@ export declare class Version implements IVersionRecord {
|
|
|
68
126
|
set SemVer(value: string);
|
|
69
127
|
get Type(): AppTypes;
|
|
70
128
|
set Type(value: AppTypes);
|
|
129
|
+
get StartupType(): AppStartupTypes;
|
|
130
|
+
set StartupType(value: AppStartupTypes);
|
|
71
131
|
get Status(): VersionStatus;
|
|
72
132
|
set Status(value: VersionStatus);
|
|
73
133
|
get DefaultFile(): string;
|
|
@@ -78,5 +138,7 @@ export declare class Version implements IVersionRecord {
|
|
|
78
138
|
set RouteIDAppVersion(value: string);
|
|
79
139
|
get RouteIDAppVersionSplat(): string;
|
|
80
140
|
set RouteIDAppVersionSplat(value: string);
|
|
141
|
+
get URL(): string;
|
|
142
|
+
set URL(value: string);
|
|
81
143
|
}
|
|
82
144
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/models/version.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAM/B,oBAAY,aAAa,GACrB,SAAS,GACT,eAAe,GACf,cAAc,GACd,YAAY,GACZ,QAAQ,GACR,UAAU,CAAC;AAEf,oBAAY,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/models/version.ts"],"names":[],"mappings":"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"}
|
package/dist/models/version.js
CHANGED
|
@@ -10,10 +10,12 @@ class Version {
|
|
|
10
10
|
constructor(init) {
|
|
11
11
|
this._keyBy = SaveBy.AppName;
|
|
12
12
|
this._status = 'pending';
|
|
13
|
+
this._startupType = 'iframe';
|
|
13
14
|
this._defaultFile = '';
|
|
14
15
|
this._integrationID = '';
|
|
15
16
|
this._routeIDAppVersion = '';
|
|
16
17
|
this._routeIDAppVersionSplat = '';
|
|
18
|
+
this._url = '';
|
|
17
19
|
// Save any passed in values over the defaults
|
|
18
20
|
Object.assign(this, init);
|
|
19
21
|
}
|
|
@@ -87,11 +89,13 @@ class Version {
|
|
|
87
89
|
AppName: this.AppName,
|
|
88
90
|
SemVer: this.SemVer,
|
|
89
91
|
Type: this.Type,
|
|
92
|
+
StartupType: this.StartupType,
|
|
90
93
|
Status: this.Status,
|
|
91
94
|
DefaultFile: this.DefaultFile,
|
|
92
95
|
IntegrationID: this.IntegrationID,
|
|
93
96
|
RouteIDAppVersion: this.RouteIDAppVersion,
|
|
94
97
|
RouteIDAppVersionSplat: this.RouteIDAppVersionSplat,
|
|
98
|
+
URL: this.URL,
|
|
95
99
|
};
|
|
96
100
|
}
|
|
97
101
|
/**
|
|
@@ -133,6 +137,12 @@ class Version {
|
|
|
133
137
|
set Type(value) {
|
|
134
138
|
this._type = value;
|
|
135
139
|
}
|
|
140
|
+
get StartupType() {
|
|
141
|
+
return this._startupType;
|
|
142
|
+
}
|
|
143
|
+
set StartupType(value) {
|
|
144
|
+
this._startupType = value;
|
|
145
|
+
}
|
|
136
146
|
get Status() {
|
|
137
147
|
return this._status;
|
|
138
148
|
}
|
|
@@ -163,6 +173,12 @@ class Version {
|
|
|
163
173
|
set RouteIDAppVersionSplat(value) {
|
|
164
174
|
this._routeIDAppVersionSplat = value;
|
|
165
175
|
}
|
|
176
|
+
get URL() {
|
|
177
|
+
return this._url;
|
|
178
|
+
}
|
|
179
|
+
set URL(value) {
|
|
180
|
+
this._url = value;
|
|
181
|
+
}
|
|
166
182
|
}
|
|
167
183
|
exports.Version = Version;
|
|
168
184
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/models/version.ts"],"names":[],"mappings":";;;AAAA,yDAAoD;AAGpD,IAAK,MAEJ;AAFD,WAAK,MAAM;IACT,yCAAO,CAAA;AACT,CAAC,EAFI,MAAM,KAAN,MAAM,QAEV;
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/models/version.ts"],"names":[],"mappings":";;;AAAA,yDAAoD;AAGpD,IAAK,MAEJ;AAFD,WAAK,MAAM;IACT,yCAAO,CAAA;AACT,CAAC,EAFI,MAAM,KAAN,MAAM,QAEV;AA0FD,MAAa,OAAO;IA+FlB,YAAmB,IAAyC;QAC1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAEf,8CAA8C;QAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IA1GD;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAGhC;QACC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAEhC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;YACnD,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,sBAAsB,EAAE,yCAAyC;YACjE,yBAAyB,EAAE;gBACzB,QAAQ,EAAE,WAAW,GAAG,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE;gBAChD,QAAQ,EAAE,SAAS;aACpB;SACF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,EAAe,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,MAAM,GAAG,IAAA,mCAAe,EAAmB,OAAO,EAAE,IAAI,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACtB;SACF;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAG/B;QACC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAEhC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC;YAChD,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,GAAG,EAAE;gBACH,EAAE,EAAE,WAAW,GAAG,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE;gBAC1C,EAAE,EAAE,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;aAC1C;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,mCAAe,EAAmB,OAAO,EAAE,IAAI,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAGjC;QACC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAEhC,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;YAClC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,GAAG,EAAE;gBACH,EAAE,EAAE,WAAW,GAAG,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE;gBAC1C,EAAE,EAAE,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;aAC1C;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAW,EAAE;QACX,QAAQ,IAAI,CAAC,MAAM,EAAE;YACnB,KAAK,MAAM,CAAC,OAAO;gBACjB,OAAO,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;YACjD;gBACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC7C;IACH,CAAC;IA8BD,IAAW,QAAQ;QACjB,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,IAAI,CAAC,SAAoB;QACpC,wDAAwD;QAExD,kCAAkC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;QAC7B,MAAM,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC;YAC/B,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,IAAI,EAAE,IAAI,CAAC,QAAQ;SACpB,CAAC,CAAC;IACL,CAAC;IAED,IAAW,EAAE;QACX,QAAQ,IAAI,CAAC,MAAM,EAAE;YACnB,KAAK,MAAM,CAAC,OAAO;gBACjB,OAAO,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;YAChD;gBACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC7C;IACH,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAkB,CAAC;IACjC,CAAC;IACD,IAAW,OAAO,CAAC,KAAa;QAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAiB,CAAC;IAChC,CAAC;IACD,IAAW,MAAM,CAAC,KAAa;QAC7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAiB,CAAC;IAChC,CAAC;IACD,IAAW,IAAI,CAAC,KAAe;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAA+B,CAAC;IAC9C,CAAC;IACD,IAAW,WAAW,CAAC,KAAsB;QAC3C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,IAAW,MAAM,CAAC,KAAoB;QACpC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAsB,CAAC;IACrC,CAAC;IACD,IAAW,WAAW,CAAC,KAAa;QAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAwB,CAAC;IACvC,CAAC;IACD,IAAW,aAAa,CAAC,KAAa;QACpC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,IAAW,iBAAiB;QAC1B,OAAO,IAAI,CAAC,kBAA4B,CAAC;IAC3C,CAAC;IACD,IAAW,iBAAiB,CAAC,KAAa;QACxC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAClC,CAAC;IAED,IAAW,sBAAsB;QAC/B,OAAO,IAAI,CAAC,uBAAiC,CAAC;IAChD,CAAC;IACD,IAAW,sBAAsB,CAAC,KAAa;QAC7C,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACvC,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAc,CAAC;IAC7B,CAAC;IACD,IAAW,GAAG,CAAC,KAAa;QAC1B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;CACF;AA3ND,0BA2NC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pwrdrvr/microapps-datalib",
|
|
3
|
-
"version": "0.2
|
|
3
|
+
"version": "0.3.0-alpha.2",
|
|
4
4
|
"description": "Data library for the microapps framework",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -26,10 +26,11 @@
|
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"@aws-sdk/client-dynamodb": "^3.20.0",
|
|
28
28
|
"@aws-sdk/lib-dynamodb": "^3.20.0",
|
|
29
|
+
"class-transformer": "^0.5.1",
|
|
29
30
|
"tslib": "^2.1.0"
|
|
30
31
|
},
|
|
31
32
|
"dependencies": {
|
|
32
|
-
"class-transformer": "
|
|
33
|
+
"class-transformer": "^0.5.1"
|
|
33
34
|
},
|
|
34
35
|
"devDependencies": {
|
|
35
36
|
"@types/node-fetch": "^2.5.8",
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export { Application, DBManager, Version, Rules, IVersionsAndRules };
|
|
1
|
+
export { DBManager } from './manager';
|
|
2
|
+
export { Application, IVersionsAndRules } from './models/application';
|
|
3
|
+
export { Rules } from './models/rules';
|
|
4
|
+
export { Version } from './models/version';
|
|
@@ -24,119 +24,148 @@ describe('version records', () => {
|
|
|
24
24
|
dynamoClient.destroy();
|
|
25
25
|
}, 20000);
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
27
|
+
describe('Type API Gateway', () => {
|
|
28
|
+
it('saving a version should create one record', async () => {
|
|
29
|
+
const version = new Version();
|
|
30
|
+
version.AppName = 'Cat';
|
|
31
|
+
version.SemVer = '1.2.3-Beta4';
|
|
32
|
+
version.Status = 'pending';
|
|
33
|
+
version.Type = 'lambda';
|
|
34
|
+
version.DefaultFile = 'index.html';
|
|
35
|
+
version.IntegrationID = 'abcd';
|
|
36
|
+
version.RouteIDAppVersion = '123';
|
|
37
|
+
version.RouteIDAppVersionSplat = '456';
|
|
38
|
+
|
|
39
|
+
await version.Save(dbManager);
|
|
40
|
+
|
|
41
|
+
const { Item } = await dbManager.ddbDocClient.get({
|
|
42
|
+
TableName: dbManager.tableName,
|
|
43
|
+
Key: { PK: 'appname#cat', SK: 'version#1.2.3-beta4' },
|
|
44
|
+
});
|
|
45
|
+
expect(Item).toBeDefined();
|
|
46
|
+
expect(Item?.PK).toBe('appname#cat');
|
|
47
|
+
expect(Item?.SK).toBe('version#1.2.3-beta4');
|
|
48
|
+
expect(Item?.AppName).toBe('cat');
|
|
49
|
+
expect(Item?.SemVer).toBe('1.2.3-Beta4');
|
|
50
|
+
expect(Item?.Status).toBe('pending');
|
|
51
|
+
expect(Item?.Type).toBe('lambda');
|
|
52
|
+
expect(Item?.DefaultFile).toBe('index.html');
|
|
53
|
+
expect(Item?.IntegrationID).toBe('abcd');
|
|
54
|
+
expect(Item?.RouteIDAppVersion).toEqual('123');
|
|
55
|
+
expect(Item?.RouteIDAppVersionSplat).toEqual('456');
|
|
43
56
|
});
|
|
44
|
-
expect(Item).toBeDefined();
|
|
45
|
-
expect(Item?.PK).toBe('appname#cat');
|
|
46
|
-
expect(Item?.SK).toBe('version#1.2.3-beta4');
|
|
47
|
-
expect(Item?.AppName).toBe('cat');
|
|
48
|
-
expect(Item?.SemVer).toBe('1.2.3-Beta4');
|
|
49
|
-
expect(Item?.Status).toBe('pending');
|
|
50
|
-
expect(Item?.Type).toBe('lambda');
|
|
51
|
-
expect(Item?.DefaultFile).toBe('index.html');
|
|
52
|
-
expect(Item?.IntegrationID).toBe('abcd');
|
|
53
|
-
expect(Item?.RouteIDAppVersion).toEqual('123');
|
|
54
|
-
expect(Item?.RouteIDAppVersionSplat).toEqual('456');
|
|
55
|
-
});
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
58
|
+
it('load 1 version should load 1 version', async () => {
|
|
59
|
+
let version = new Version();
|
|
60
|
+
version.AppName = 'Dog';
|
|
61
|
+
version.SemVer = '1.2.3-Beta5';
|
|
62
|
+
version.Status = 'pending';
|
|
63
|
+
version.Type = 'lambda';
|
|
64
|
+
version.DefaultFile = 'index.html';
|
|
65
|
+
version.IntegrationID = 'abcd';
|
|
66
|
+
|
|
67
|
+
await version.Save(dbManager);
|
|
68
|
+
|
|
69
|
+
version = new Version();
|
|
70
|
+
version.AppName = 'Dog';
|
|
71
|
+
version.SemVer = '1.2.3-Beta6';
|
|
72
|
+
version.Status = 'pending';
|
|
73
|
+
version.Type = 'lambda';
|
|
74
|
+
version.DefaultFile = 'index.html';
|
|
75
|
+
version.IntegrationID = 'abcd';
|
|
76
|
+
|
|
77
|
+
await version.Save(dbManager);
|
|
78
|
+
|
|
79
|
+
const version1 = await Version.LoadVersion({
|
|
80
|
+
dbManager,
|
|
81
|
+
key: {
|
|
82
|
+
AppName: 'Dog',
|
|
83
|
+
SemVer: '1.2.3-Beta5',
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
expect(version1.AppName).toBe('dog');
|
|
88
|
+
expect(version1.SK).toBe('version#1.2.3-beta5');
|
|
89
|
+
expect(version1.SemVer).toBe('1.2.3-Beta5');
|
|
90
|
+
|
|
91
|
+
const version2 = await Version.LoadVersion({
|
|
92
|
+
dbManager,
|
|
93
|
+
key: { AppName: 'Dog', SemVer: '1.2.3-Beta6' },
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
expect(version2.AppName).toBe('dog');
|
|
97
|
+
expect(version2.SK).toBe('version#1.2.3-beta6');
|
|
98
|
+
expect(version2.SemVer).toBe('1.2.3-Beta6');
|
|
84
99
|
});
|
|
85
100
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
101
|
+
it('load all app versions should load all versions for 1 app', async () => {
|
|
102
|
+
let version = new Version();
|
|
103
|
+
version.AppName = 'Frog';
|
|
104
|
+
version.SemVer = '2.2.3-Beta5';
|
|
105
|
+
version.Status = 'pending';
|
|
106
|
+
version.Type = 'lambda';
|
|
107
|
+
version.DefaultFile = 'index1.html';
|
|
108
|
+
version.IntegrationID = 'abcd1';
|
|
109
|
+
version.RouteIDAppVersion = 'routeAppVersion1';
|
|
110
|
+
version.RouteIDAppVersionSplat = 'routeAppVersionSplat1';
|
|
111
|
+
|
|
112
|
+
await version.Save(dbManager);
|
|
113
|
+
|
|
114
|
+
version = new Version();
|
|
115
|
+
version.AppName = 'Frog';
|
|
116
|
+
version.SemVer = '2.2.3-Beta6';
|
|
117
|
+
version.Status = 'pending';
|
|
118
|
+
version.Type = 'lambda';
|
|
119
|
+
version.DefaultFile = 'index2.html';
|
|
120
|
+
version.IntegrationID = 'abcd2';
|
|
121
|
+
version.RouteIDAppVersion = 'routeAppVersion2';
|
|
122
|
+
version.RouteIDAppVersionSplat = 'routeAppVersionSplat2';
|
|
123
|
+
|
|
124
|
+
await version.Save(dbManager);
|
|
125
|
+
|
|
126
|
+
const versions = await Version.LoadVersions({ dbManager, key: { AppName: 'Frog' } });
|
|
127
|
+
|
|
128
|
+
expect(versions.length).toBe(2);
|
|
129
|
+
|
|
130
|
+
expect(versions[0].AppName).toBe('frog');
|
|
131
|
+
expect(versions[0].SK).toBe('version#2.2.3-beta5');
|
|
132
|
+
expect(versions[0].SemVer).toBe('2.2.3-Beta5');
|
|
133
|
+
expect(versions[0].DefaultFile).toEqual('index1.html');
|
|
134
|
+
expect(versions[0].RouteIDAppVersion).toEqual('routeAppVersion1');
|
|
135
|
+
expect(versions[0].RouteIDAppVersionSplat).toEqual('routeAppVersionSplat1');
|
|
136
|
+
expect(versions[1].AppName).toBe('frog');
|
|
137
|
+
expect(versions[1].SK).toBe('version#2.2.3-beta6');
|
|
138
|
+
expect(versions[1].SemVer).toBe('2.2.3-Beta6');
|
|
139
|
+
expect(versions[1].DefaultFile).toEqual('index2.html');
|
|
140
|
+
expect(versions[1].RouteIDAppVersion).toEqual('routeAppVersion2');
|
|
141
|
+
expect(versions[1].RouteIDAppVersionSplat).toEqual('routeAppVersionSplat2');
|
|
93
142
|
});
|
|
94
|
-
|
|
95
|
-
expect(version2.AppName).toBe('dog');
|
|
96
|
-
expect(version2.SK).toBe('version#1.2.3-beta6');
|
|
97
|
-
expect(version2.SemVer).toBe('1.2.3-Beta6');
|
|
98
143
|
});
|
|
99
144
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const versions = await Version.LoadVersions({ dbManager, key: { AppName: 'Frog' } });
|
|
126
|
-
|
|
127
|
-
expect(versions.length).toBe(2);
|
|
128
|
-
|
|
129
|
-
expect(versions[0].AppName).toBe('frog');
|
|
130
|
-
expect(versions[0].SK).toBe('version#2.2.3-beta5');
|
|
131
|
-
expect(versions[0].SemVer).toBe('2.2.3-Beta5');
|
|
132
|
-
expect(versions[0].DefaultFile).toEqual('index1.html');
|
|
133
|
-
expect(versions[0].RouteIDAppVersion).toEqual('routeAppVersion1');
|
|
134
|
-
expect(versions[0].RouteIDAppVersionSplat).toEqual('routeAppVersionSplat1');
|
|
135
|
-
expect(versions[1].AppName).toBe('frog');
|
|
136
|
-
expect(versions[1].SK).toBe('version#2.2.3-beta6');
|
|
137
|
-
expect(versions[1].SemVer).toBe('2.2.3-Beta6');
|
|
138
|
-
expect(versions[1].DefaultFile).toEqual('index2.html');
|
|
139
|
-
expect(versions[1].RouteIDAppVersion).toEqual('routeAppVersion2');
|
|
140
|
-
expect(versions[1].RouteIDAppVersionSplat).toEqual('routeAppVersionSplat2');
|
|
145
|
+
describe('Type Lambda URL', () => {
|
|
146
|
+
it('saving and loading should return same record', async () => {
|
|
147
|
+
const version = new Version();
|
|
148
|
+
version.AppName = 'Cat';
|
|
149
|
+
version.SemVer = '1.2.3-Beta4';
|
|
150
|
+
version.Status = 'pending';
|
|
151
|
+
version.Type = 'lambda-url';
|
|
152
|
+
version.DefaultFile = 'index.html';
|
|
153
|
+
version.URL = 'https://abc123.lambda-url.us-east-1.on.aws/';
|
|
154
|
+
|
|
155
|
+
await version.Save(dbManager);
|
|
156
|
+
|
|
157
|
+
const { Item } = await dbManager.ddbDocClient.get({
|
|
158
|
+
TableName: dbManager.tableName,
|
|
159
|
+
Key: { PK: 'appname#cat', SK: 'version#1.2.3-beta4' },
|
|
160
|
+
});
|
|
161
|
+
expect(Item).toBeDefined();
|
|
162
|
+
expect(Item?.PK).toBe('appname#cat');
|
|
163
|
+
expect(Item?.SK).toBe('version#1.2.3-beta4');
|
|
164
|
+
expect(Item?.AppName).toBe('cat');
|
|
165
|
+
expect(Item?.SemVer).toBe('1.2.3-Beta4');
|
|
166
|
+
expect(Item?.Status).toBe('pending');
|
|
167
|
+
expect(Item?.Type).toBe('lambda-url');
|
|
168
|
+
expect(Item?.URL).toEqual('https://abc123.lambda-url.us-east-1.on.aws/');
|
|
169
|
+
});
|
|
141
170
|
});
|
|
142
171
|
});
|
package/src/models/version.ts
CHANGED
|
@@ -13,7 +13,9 @@ export type VersionStatus =
|
|
|
13
13
|
| 'routed'
|
|
14
14
|
| 'deployed';
|
|
15
15
|
|
|
16
|
-
export type AppTypes = 'static' | 'lambda';
|
|
16
|
+
export type AppTypes = 'static' | 'lambda' | 'lambda-url' | 'url';
|
|
17
|
+
|
|
18
|
+
export type AppStartupTypes = 'iframe' | 'direct';
|
|
17
19
|
|
|
18
20
|
/**
|
|
19
21
|
* Represents a Version Record
|
|
@@ -21,14 +23,69 @@ export type AppTypes = 'static' | 'lambda';
|
|
|
21
23
|
export interface IVersionRecord {
|
|
22
24
|
PK: string;
|
|
23
25
|
SK: string;
|
|
26
|
+
/**
|
|
27
|
+
* Name of the app
|
|
28
|
+
*/
|
|
24
29
|
AppName: string;
|
|
30
|
+
/**
|
|
31
|
+
* SemVer for this version
|
|
32
|
+
*/
|
|
25
33
|
SemVer: string;
|
|
26
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Type of app (which implies how it's routed)
|
|
36
|
+
*
|
|
37
|
+
* @enum {string} static - Files only
|
|
38
|
+
* @enum {string} lambda - Lambda integrated via API Gateway
|
|
39
|
+
* @enum {string} lambda-url - Lambda integrated via Function URL w/IAM Auth
|
|
40
|
+
* @enum {string} url - Other URL without IAM Auth
|
|
41
|
+
*/
|
|
42
|
+
Type: AppTypes;
|
|
43
|
+
/**
|
|
44
|
+
* Startup type of the app
|
|
45
|
+
* This currently indicates whether `/appName` will render an iframe
|
|
46
|
+
* that points to `/appName/semVer` or if `/appName` will proxy
|
|
47
|
+
* directly to a specific version of the app, which will render itself at
|
|
48
|
+
* `/appName` but will write all of it's static/api requests as
|
|
49
|
+
* `/appName/semVer/...`
|
|
50
|
+
* @enum {string} iframe - Render an iframe that points to the version
|
|
51
|
+
* @enum {string} direct - Proxy directly to the version, incompatible with `static` and `apigwy` (`lambda`)
|
|
52
|
+
*/
|
|
53
|
+
StartupType: AppStartupTypes;
|
|
54
|
+
/**
|
|
55
|
+
* @enum {string} pending - Version is being created
|
|
56
|
+
* @enum {string} assets-copied - Version assets have been copied to S3
|
|
57
|
+
* @enum {string} permissioned - API Gatewy - Permissions to invoke have been granted
|
|
58
|
+
* @enum {string} integrated - API Gateway - Lambda integration has been created
|
|
59
|
+
* @enum {string} routed - API Gateway - Lambe integration has been added to routes
|
|
60
|
+
* @enum {string} deployed - Version has been fully deployed
|
|
61
|
+
*/
|
|
27
62
|
Status: VersionStatus;
|
|
63
|
+
/**
|
|
64
|
+
* Default file or path to redirect to if the app is started without
|
|
65
|
+
* a specific file or path below the appName or appName/semVer,
|
|
66
|
+
* particularly useful for `static` apps.
|
|
67
|
+
*
|
|
68
|
+
* @example 'index.html'
|
|
69
|
+
*/
|
|
28
70
|
DefaultFile: string;
|
|
71
|
+
/**
|
|
72
|
+
* API Gateway (type=lambda) only
|
|
73
|
+
*/
|
|
29
74
|
IntegrationID: string;
|
|
75
|
+
/**
|
|
76
|
+
* API Gateway (type=lambda) only
|
|
77
|
+
*/
|
|
30
78
|
RouteIDAppVersion: string;
|
|
79
|
+
/**
|
|
80
|
+
* API Gateway (type=lambda) only
|
|
81
|
+
*/
|
|
31
82
|
RouteIDAppVersionSplat: string;
|
|
83
|
+
/**
|
|
84
|
+
* Lambda Function URL (type=lambda-url) or URL (type=url) only
|
|
85
|
+
* @example https://[lambda-url-id].lambda-url.us-east-1.on.aws/
|
|
86
|
+
* @example https://www.example.com/
|
|
87
|
+
*/
|
|
88
|
+
URL: string;
|
|
32
89
|
}
|
|
33
90
|
|
|
34
91
|
export type IVersionRecordNoKeysLoose = Partial<
|
|
@@ -121,19 +178,25 @@ export class Version implements IVersionRecord {
|
|
|
121
178
|
private _appName: string | undefined;
|
|
122
179
|
private _semVer: string | undefined;
|
|
123
180
|
private _type: AppTypes | undefined;
|
|
181
|
+
private _startupType: AppStartupTypes | undefined;
|
|
124
182
|
private _status: VersionStatus;
|
|
125
183
|
private _defaultFile: string;
|
|
184
|
+
// API Gateway Integration Properties
|
|
126
185
|
private _integrationID: string;
|
|
127
186
|
private _routeIDAppVersion: string;
|
|
128
187
|
private _routeIDAppVersionSplat: string | undefined;
|
|
188
|
+
// Lambda URL and URL Properties
|
|
189
|
+
private _url: string;
|
|
129
190
|
|
|
130
191
|
public constructor(init?: Partial<IVersionRecordNoKeysLoose>) {
|
|
131
192
|
this._keyBy = SaveBy.AppName;
|
|
132
193
|
this._status = 'pending';
|
|
194
|
+
this._startupType = 'iframe';
|
|
133
195
|
this._defaultFile = '';
|
|
134
196
|
this._integrationID = '';
|
|
135
197
|
this._routeIDAppVersion = '';
|
|
136
198
|
this._routeIDAppVersionSplat = '';
|
|
199
|
+
this._url = '';
|
|
137
200
|
|
|
138
201
|
// Save any passed in values over the defaults
|
|
139
202
|
Object.assign(this, init);
|
|
@@ -146,11 +209,13 @@ export class Version implements IVersionRecord {
|
|
|
146
209
|
AppName: this.AppName,
|
|
147
210
|
SemVer: this.SemVer,
|
|
148
211
|
Type: this.Type,
|
|
212
|
+
StartupType: this.StartupType,
|
|
149
213
|
Status: this.Status,
|
|
150
214
|
DefaultFile: this.DefaultFile,
|
|
151
215
|
IntegrationID: this.IntegrationID,
|
|
152
216
|
RouteIDAppVersion: this.RouteIDAppVersion,
|
|
153
217
|
RouteIDAppVersionSplat: this.RouteIDAppVersionSplat,
|
|
218
|
+
URL: this.URL,
|
|
154
219
|
};
|
|
155
220
|
}
|
|
156
221
|
|
|
@@ -199,6 +264,13 @@ export class Version implements IVersionRecord {
|
|
|
199
264
|
this._type = value;
|
|
200
265
|
}
|
|
201
266
|
|
|
267
|
+
public get StartupType(): AppStartupTypes {
|
|
268
|
+
return this._startupType as AppStartupTypes;
|
|
269
|
+
}
|
|
270
|
+
public set StartupType(value: AppStartupTypes) {
|
|
271
|
+
this._startupType = value;
|
|
272
|
+
}
|
|
273
|
+
|
|
202
274
|
public get Status(): VersionStatus {
|
|
203
275
|
return this._status;
|
|
204
276
|
}
|
|
@@ -233,4 +305,11 @@ export class Version implements IVersionRecord {
|
|
|
233
305
|
public set RouteIDAppVersionSplat(value: string) {
|
|
234
306
|
this._routeIDAppVersionSplat = value;
|
|
235
307
|
}
|
|
308
|
+
|
|
309
|
+
public get URL(): string {
|
|
310
|
+
return this._url as string;
|
|
311
|
+
}
|
|
312
|
+
public set URL(value: string) {
|
|
313
|
+
this._url = value;
|
|
314
|
+
}
|
|
236
315
|
}
|