@pwrdrvr/microapps-datalib 0.2.13 → 0.3.0-alpha.1

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 CHANGED
@@ -1,6 +1,5 @@
1
- import { DBManager } from './manager';
2
- import { Application, IVersionsAndRules } from './models/application';
3
- import { Rules } from './models/rules';
4
- import { Version } from './models/version';
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
@@ -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;AAE3C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,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.Rules = exports.Version = exports.DBManager = exports.Application = void 0;
4
- const manager_1 = require("./manager");
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
- const application_1 = require("./models/application");
6
+ var application_1 = require("./models/application");
7
7
  Object.defineProperty(exports, "Application", { enumerable: true, get: function () { return application_1.Application; } });
8
- const rules_1 = require("./models/rules");
8
+ var rules_1 = require("./models/rules");
9
9
  Object.defineProperty(exports, "Rules", { enumerable: true, get: function () { return rules_1.Rules; } });
10
- const version_1 = require("./models/version");
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,uCAAsC;AAKhB,0FALb,mBAAS,OAKa;AAJ/B,sDAAsE;AAI7D,4FAJA,yBAAW,OAIA;AAHpB,0CAAuC;AAGG,sFAHjC,aAAK,OAGiC;AAF/C,8CAA2C;AAEV,wFAFxB,iBAAO,OAEwB"}
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"}
@@ -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
- Type: 'lambda' | 'static';
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":"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"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/models/version.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/models/version.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pwrdrvr/microapps-datalib",
3
- "version": "0.2.13",
3
+ "version": "0.3.0-alpha.1",
4
4
  "description": "Data library for the microapps framework",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
package/src/index.ts CHANGED
@@ -1,6 +1,4 @@
1
- import { DBManager } from './manager';
2
- import { Application, IVersionsAndRules } from './models/application';
3
- import { Rules } from './models/rules';
4
- import { Version } from './models/version';
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
- it('saving a version should create one record', async () => {
28
- const version = new Version();
29
- version.AppName = 'Cat';
30
- version.SemVer = '1.2.3-Beta4';
31
- version.Status = 'pending';
32
- version.Type = 'lambda';
33
- version.DefaultFile = 'index.html';
34
- version.IntegrationID = 'abcd';
35
- version.RouteIDAppVersion = '123';
36
- version.RouteIDAppVersionSplat = '456';
37
-
38
- await version.Save(dbManager);
39
-
40
- const { Item } = await dbManager.ddbDocClient.get({
41
- TableName: dbManager.tableName,
42
- Key: { PK: 'appname#cat', SK: 'version#1.2.3-beta4' },
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
- it('load 1 version should load 1 version', async () => {
58
- let version = new Version();
59
- version.AppName = 'Dog';
60
- version.SemVer = '1.2.3-Beta5';
61
- version.Status = 'pending';
62
- version.Type = 'lambda';
63
- version.DefaultFile = 'index.html';
64
- version.IntegrationID = 'abcd';
65
-
66
- await version.Save(dbManager);
67
-
68
- version = new Version();
69
- version.AppName = 'Dog';
70
- version.SemVer = '1.2.3-Beta6';
71
- version.Status = 'pending';
72
- version.Type = 'lambda';
73
- version.DefaultFile = 'index.html';
74
- version.IntegrationID = 'abcd';
75
-
76
- await version.Save(dbManager);
77
-
78
- const version1 = await Version.LoadVersion({
79
- dbManager,
80
- key: {
81
- AppName: 'Dog',
82
- SemVer: '1.2.3-Beta5',
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
- expect(version1.AppName).toBe('dog');
87
- expect(version1.SK).toBe('version#1.2.3-beta5');
88
- expect(version1.SemVer).toBe('1.2.3-Beta5');
89
-
90
- const version2 = await Version.LoadVersion({
91
- dbManager,
92
- key: { AppName: 'Dog', SemVer: '1.2.3-Beta6' },
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
- it('load all app versions should load all versions for 1 app', async () => {
101
- let version = new Version();
102
- version.AppName = 'Frog';
103
- version.SemVer = '2.2.3-Beta5';
104
- version.Status = 'pending';
105
- version.Type = 'lambda';
106
- version.DefaultFile = 'index1.html';
107
- version.IntegrationID = 'abcd1';
108
- version.RouteIDAppVersion = 'routeAppVersion1';
109
- version.RouteIDAppVersionSplat = 'routeAppVersionSplat1';
110
-
111
- await version.Save(dbManager);
112
-
113
- version = new Version();
114
- version.AppName = 'Frog';
115
- version.SemVer = '2.2.3-Beta6';
116
- version.Status = 'pending';
117
- version.Type = 'lambda';
118
- version.DefaultFile = 'index2.html';
119
- version.IntegrationID = 'abcd2';
120
- version.RouteIDAppVersion = 'routeAppVersion2';
121
- version.RouteIDAppVersionSplat = 'routeAppVersionSplat2';
122
-
123
- await version.Save(dbManager);
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
  });
@@ -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
- Type: 'lambda' | 'static';
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
  }