@pwrdrvr/microapps-router-lib 0.4.0-alpha.10 → 0.4.0-alpha.12
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/get-route.d.ts.map +1 -1
- package/dist/get-route.js +18 -10
- package/dist/get-route.js.map +1 -1
- package/dist/route-app.js +5 -4
- package/dist/route-app.js.map +1 -1
- package/package.json +1 -1
- package/src/get-route.spec.ts +87 -3
- package/src/get-route.ts +21 -10
- package/src/route-app.ts +4 -4
package/dist/get-route.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-route.d.ts","sourceRoot":"","sources":["../src/get-route.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"get-route.d.ts","sourceRoot":"","sources":["../src/get-route.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAKvD,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1C;;;;;;OAMG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,KAAK,GAAG,QAAQ,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAE3C;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,eAAe,CAAC;CAClD;AAED;;;;;;;GAOG;AAEH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAgK9E"}
|
package/dist/get-route.js
CHANGED
|
@@ -6,6 +6,7 @@ const log_1 = tslib_1.__importDefault(require("./lib/log"));
|
|
|
6
6
|
const get_app_info_1 = require("./get-app-info");
|
|
7
7
|
const route_app_1 = require("./route-app");
|
|
8
8
|
const redirect_default_file_1 = require("./redirect-default-file");
|
|
9
|
+
const app_cache_1 = require("./app-cache");
|
|
9
10
|
const log = log_1.default.Instance;
|
|
10
11
|
/**
|
|
11
12
|
* Get information about immediate redirect, immediate response,
|
|
@@ -18,6 +19,7 @@ const log = log_1.default.Instance;
|
|
|
18
19
|
async function GetRoute(event) {
|
|
19
20
|
const { dbManager, normalizedPathPrefix = '', queryStringParameters, locales = [] } = event;
|
|
20
21
|
try {
|
|
22
|
+
const appVersionCache = app_cache_1.AppVersionCache.GetInstance({ dbManager });
|
|
21
23
|
if (!!normalizedPathPrefix && !event.rawPath.startsWith(normalizedPathPrefix)) {
|
|
22
24
|
// The prefix is required if configured, if missing we cannot serve this app
|
|
23
25
|
return { statusCode: 404, errorMessage: 'Request not routable' };
|
|
@@ -85,18 +87,24 @@ async function GetRoute(event) {
|
|
|
85
87
|
// / semVer /
|
|
86
88
|
// ^ ^^^^^^ ^
|
|
87
89
|
// 0 1 2
|
|
88
|
-
// This
|
|
90
|
+
// This may be an app and a version only
|
|
89
91
|
// If the request got here it's likely a static app that has no
|
|
90
|
-
// Lambda function
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
appName,
|
|
94
|
-
normalizedPathPrefix,
|
|
95
|
-
semVer: partsAfterAppName[1],
|
|
96
|
-
appNameOrRootTrailingSlash,
|
|
92
|
+
// Lambda function
|
|
93
|
+
// Let's check if the part is a version, if it is, route to the default file
|
|
94
|
+
const versionInfo = await appVersionCache.GetVersionInfo({
|
|
95
|
+
key: { AppName: appName, SemVer: partsAfterAppName[1] },
|
|
97
96
|
});
|
|
98
|
-
if (
|
|
99
|
-
|
|
97
|
+
if (versionInfo) {
|
|
98
|
+
const response = await (0, redirect_default_file_1.RedirectToDefaultFile)({
|
|
99
|
+
dbManager,
|
|
100
|
+
appName,
|
|
101
|
+
normalizedPathPrefix,
|
|
102
|
+
semVer: partsAfterAppName[1],
|
|
103
|
+
appNameOrRootTrailingSlash,
|
|
104
|
+
});
|
|
105
|
+
if (response) {
|
|
106
|
+
return response;
|
|
107
|
+
}
|
|
100
108
|
}
|
|
101
109
|
}
|
|
102
110
|
// Check for a version in the path
|
package/dist/get-route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-route.js","sourceRoot":"","sources":["../src/get-route.ts"],"names":[],"mappings":";;;;AAAA,4DAA4B;AAC5B,iDAA4C;AAC5C,2CAAuC;AACvC,mEAAgE;
|
|
1
|
+
{"version":3,"file":"get-route.js","sourceRoot":"","sources":["../src/get-route.ts"],"names":[],"mappings":"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"}
|
package/dist/route-app.js
CHANGED
|
@@ -114,10 +114,11 @@ async function RouteApp(opts) {
|
|
|
114
114
|
if ((versionInfoToUse === null || versionInfoToUse === void 0 ? void 0 : versionInfoToUse.StartupType) === 'iframe' || !(versionInfoToUse === null || versionInfoToUse === void 0 ? void 0 : versionInfoToUse.StartupType)) {
|
|
115
115
|
// Prepare the iframe contents
|
|
116
116
|
let appVersionPath;
|
|
117
|
-
if (
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
if (
|
|
118
|
+
// versionInfoToUse?.Type !== 'static' &&
|
|
119
|
+
(versionInfoToUse === null || versionInfoToUse === void 0 ? void 0 : versionInfoToUse.DefaultFile) === undefined ||
|
|
120
|
+
(versionInfoToUse === null || versionInfoToUse === void 0 ? void 0 : versionInfoToUse.DefaultFile) === '' ||
|
|
121
|
+
additionalParts !== '') {
|
|
121
122
|
// KLUDGE: We're going to take a missing default file to mean that the
|
|
122
123
|
// app type is Next.js (or similar) and that it wants no trailing slash after the version
|
|
123
124
|
// TODO: Move this to an attribute of the version
|
package/dist/route-app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-app.js","sourceRoot":"","sources":["../src/route-app.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"route-app.js","sourceRoot":"","sources":["../src/route-app.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/get-route.spec.ts
CHANGED
|
@@ -47,7 +47,10 @@ describe('router - without prefix', () => {
|
|
|
47
47
|
await rules.Save(dbManager);
|
|
48
48
|
|
|
49
49
|
// Call the handler
|
|
50
|
-
const response = await GetRoute({
|
|
50
|
+
const response = await GetRoute({
|
|
51
|
+
dbManager,
|
|
52
|
+
rawPath: '/bat/',
|
|
53
|
+
});
|
|
51
54
|
|
|
52
55
|
expect(response).toHaveProperty('statusCode');
|
|
53
56
|
expect(response.statusCode).toBe(200);
|
|
@@ -55,6 +58,53 @@ describe('router - without prefix', () => {
|
|
|
55
58
|
expect(response.iFrameAppVersionPath).toBe('/bat/3.2.1-beta.1/bat.html');
|
|
56
59
|
});
|
|
57
60
|
|
|
61
|
+
it('should serve appframe with appver query string and default file substitued', async () => {
|
|
62
|
+
const AppName = 'BatAppVer';
|
|
63
|
+
const app = new Application({
|
|
64
|
+
AppName,
|
|
65
|
+
DisplayName: 'Bat App',
|
|
66
|
+
});
|
|
67
|
+
await app.Save(dbManager);
|
|
68
|
+
|
|
69
|
+
const version = new Version({
|
|
70
|
+
AppName,
|
|
71
|
+
DefaultFile: 'bat.html',
|
|
72
|
+
IntegrationID: 'abcd',
|
|
73
|
+
SemVer: '3.2.1-beta.1',
|
|
74
|
+
Status: 'deployed',
|
|
75
|
+
Type: 'lambda',
|
|
76
|
+
});
|
|
77
|
+
await version.Save(dbManager);
|
|
78
|
+
const version2 = new Version({
|
|
79
|
+
AppName,
|
|
80
|
+
DefaultFile: 'bat.html',
|
|
81
|
+
IntegrationID: 'abcd',
|
|
82
|
+
SemVer: '3.2.1-beta.2',
|
|
83
|
+
Status: 'deployed',
|
|
84
|
+
Type: 'lambda',
|
|
85
|
+
});
|
|
86
|
+
await version2.Save(dbManager);
|
|
87
|
+
|
|
88
|
+
const rules = new Rules({
|
|
89
|
+
AppName,
|
|
90
|
+
Version: 0,
|
|
91
|
+
RuleSet: { default: { SemVer: '3.2.1-beta.1', AttributeName: '', AttributeValue: '' } },
|
|
92
|
+
});
|
|
93
|
+
await rules.Save(dbManager);
|
|
94
|
+
|
|
95
|
+
// Call the handler
|
|
96
|
+
const response = await GetRoute({
|
|
97
|
+
dbManager,
|
|
98
|
+
rawPath: '/batappver/',
|
|
99
|
+
queryStringParameters: new URLSearchParams('appver=3.2.1-beta.2'),
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
expect(response).toHaveProperty('statusCode');
|
|
103
|
+
expect(response.statusCode).toBe(200);
|
|
104
|
+
expect(response).toBeDefined();
|
|
105
|
+
expect(response.iFrameAppVersionPath).toBe('/batappver/3.2.1-beta.2/bat.html');
|
|
106
|
+
});
|
|
107
|
+
|
|
58
108
|
it('static app - request to app/x.y.z should redirect to defaultFile', async () => {
|
|
59
109
|
const app = new Application({
|
|
60
110
|
AppName: 'Bat',
|
|
@@ -122,6 +172,40 @@ describe('router - without prefix', () => {
|
|
|
122
172
|
expect(response.semVer).toBe('3.2.1-beta.2');
|
|
123
173
|
});
|
|
124
174
|
|
|
175
|
+
it('static app - request to app/some.html should create iframe with path after version', async () => {
|
|
176
|
+
const app = new Application({
|
|
177
|
+
AppName: 'Bat',
|
|
178
|
+
DisplayName: 'Bat App',
|
|
179
|
+
});
|
|
180
|
+
await app.Save(dbManager);
|
|
181
|
+
|
|
182
|
+
const version = new Version({
|
|
183
|
+
AppName: 'Bat',
|
|
184
|
+
DefaultFile: 'bat.html',
|
|
185
|
+
IntegrationID: 'abcd',
|
|
186
|
+
SemVer: '3.2.1-beta.1',
|
|
187
|
+
Status: 'deployed',
|
|
188
|
+
Type: 'static',
|
|
189
|
+
StartupType: 'iframe',
|
|
190
|
+
});
|
|
191
|
+
await version.Save(dbManager);
|
|
192
|
+
|
|
193
|
+
const rules = new Rules({
|
|
194
|
+
AppName: 'Bat',
|
|
195
|
+
Version: 0,
|
|
196
|
+
RuleSet: { default: { SemVer: '3.2.1-beta.1', AttributeName: '', AttributeValue: '' } },
|
|
197
|
+
});
|
|
198
|
+
await rules.Save(dbManager);
|
|
199
|
+
|
|
200
|
+
// Call the handler
|
|
201
|
+
const response = await GetRoute({ dbManager, rawPath: '/bat/some.html' });
|
|
202
|
+
|
|
203
|
+
expect(response).toHaveProperty('statusCode');
|
|
204
|
+
expect(response.statusCode).toBe(200);
|
|
205
|
+
expect(response.redirectLocation).not.toBeDefined();
|
|
206
|
+
expect(response.iFrameAppVersionPath).toBe('/bat/3.2.1-beta.1/some.html');
|
|
207
|
+
});
|
|
208
|
+
|
|
125
209
|
it('static app - request to app/x.y.z/ should redirect to defaultFile', async () => {
|
|
126
210
|
const app = new Application({
|
|
127
211
|
AppName: 'Bat',
|
|
@@ -156,7 +240,7 @@ describe('router - without prefix', () => {
|
|
|
156
240
|
expect(response.redirectLocation).toBe('/bat/3.2.1-beta.1/bat.html');
|
|
157
241
|
});
|
|
158
242
|
|
|
159
|
-
it('static app - request to app/notVersion should load app frame with
|
|
243
|
+
it('static app - request to app/notVersion should load app frame with /notVersion suffix', async () => {
|
|
160
244
|
const AppName = 'Bat123';
|
|
161
245
|
const app = new Application({
|
|
162
246
|
AppName,
|
|
@@ -188,7 +272,7 @@ describe('router - without prefix', () => {
|
|
|
188
272
|
expect(response).toHaveProperty('statusCode');
|
|
189
273
|
expect(response.statusCode).toBe(200);
|
|
190
274
|
expect(response).toBeDefined();
|
|
191
|
-
expect(response.iFrameAppVersionPath).toBe(`/${AppName}/3.2.1-beta.1/
|
|
275
|
+
expect(response.iFrameAppVersionPath).toBe(`/${AppName}/3.2.1-beta.1/notVersion`);
|
|
192
276
|
});
|
|
193
277
|
|
|
194
278
|
it('should serve appframe with no default file', async () => {
|
package/src/get-route.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { GetAppInfo } from './get-app-info';
|
|
|
3
3
|
import { RouteApp } from './route-app';
|
|
4
4
|
import { RedirectToDefaultFile } from './redirect-default-file';
|
|
5
5
|
import { DBManager } from '@pwrdrvr/microapps-datalib';
|
|
6
|
+
import { AppVersionCache } from './app-cache';
|
|
6
7
|
|
|
7
8
|
const log = Log.Instance;
|
|
8
9
|
|
|
@@ -102,6 +103,8 @@ export async function GetRoute(event: IGetRouteEvent): Promise<IGetRouteResult>
|
|
|
102
103
|
const { dbManager, normalizedPathPrefix = '', queryStringParameters, locales = [] } = event;
|
|
103
104
|
|
|
104
105
|
try {
|
|
106
|
+
const appVersionCache = AppVersionCache.GetInstance({ dbManager });
|
|
107
|
+
|
|
105
108
|
if (!!normalizedPathPrefix && !event.rawPath.startsWith(normalizedPathPrefix)) {
|
|
106
109
|
// The prefix is required if configured, if missing we cannot serve this app
|
|
107
110
|
return { statusCode: 404, errorMessage: 'Request not routable' };
|
|
@@ -187,18 +190,26 @@ export async function GetRoute(event: IGetRouteEvent): Promise<IGetRouteResult>
|
|
|
187
190
|
// / semVer /
|
|
188
191
|
// ^ ^^^^^^ ^
|
|
189
192
|
// 0 1 2
|
|
190
|
-
// This
|
|
193
|
+
// This may be an app and a version only
|
|
191
194
|
// If the request got here it's likely a static app that has no
|
|
192
|
-
// Lambda function
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
semVer: partsAfterAppName[1],
|
|
198
|
-
appNameOrRootTrailingSlash,
|
|
195
|
+
// Lambda function
|
|
196
|
+
|
|
197
|
+
// Let's check if the part is a version, if it is, route to the default file
|
|
198
|
+
const versionInfo = await appVersionCache.GetVersionInfo({
|
|
199
|
+
key: { AppName: appName, SemVer: partsAfterAppName[1] },
|
|
199
200
|
});
|
|
200
|
-
|
|
201
|
-
|
|
201
|
+
|
|
202
|
+
if (versionInfo) {
|
|
203
|
+
const response = await RedirectToDefaultFile({
|
|
204
|
+
dbManager,
|
|
205
|
+
appName,
|
|
206
|
+
normalizedPathPrefix,
|
|
207
|
+
semVer: partsAfterAppName[1],
|
|
208
|
+
appNameOrRootTrailingSlash,
|
|
209
|
+
});
|
|
210
|
+
if (response) {
|
|
211
|
+
return response;
|
|
212
|
+
}
|
|
202
213
|
}
|
|
203
214
|
}
|
|
204
215
|
|
package/src/route-app.ts
CHANGED
|
@@ -149,10 +149,10 @@ export async function RouteApp(opts: {
|
|
|
149
149
|
// Prepare the iframe contents
|
|
150
150
|
let appVersionPath: string;
|
|
151
151
|
if (
|
|
152
|
-
versionInfoToUse?.Type !== 'static' &&
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
152
|
+
// versionInfoToUse?.Type !== 'static' &&
|
|
153
|
+
versionInfoToUse?.DefaultFile === undefined ||
|
|
154
|
+
versionInfoToUse?.DefaultFile === '' ||
|
|
155
|
+
additionalParts !== ''
|
|
156
156
|
) {
|
|
157
157
|
// KLUDGE: We're going to take a missing default file to mean that the
|
|
158
158
|
// app type is Next.js (or similar) and that it wants no trailing slash after the version
|