@pwrdrvr/microapps-router-lib 0.4.0-alpha.8 → 0.4.0-alpha.9
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/app-cache.d.ts +58 -0
- package/dist/app-cache.d.ts.map +1 -0
- package/dist/app-cache.js +154 -0
- package/dist/app-cache.js.map +1 -0
- package/dist/index.d.ts +97 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +375 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/log.d.ts +5 -0
- package/dist/lib/log.d.ts.map +1 -0
- package/dist/lib/log.js +11 -0
- package/dist/lib/log.js.map +1 -0
- package/package.json +2 -1
- package/src/app-cache.spec.ts +175 -0
- package/src/app-cache.ts +193 -0
- package/src/index.spec.ts +28 -24
- package/src/index.ts +46 -45
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { DBManager, Rules, Version } from '@pwrdrvr/microapps-datalib';
|
|
2
|
+
export declare class AppVersionCache {
|
|
3
|
+
private negativeAppNameCache;
|
|
4
|
+
private appRulesCache;
|
|
5
|
+
private appVersionsCache;
|
|
6
|
+
private dbManager;
|
|
7
|
+
private static instance;
|
|
8
|
+
/**
|
|
9
|
+
* Get the AppVersionCache instance or create it
|
|
10
|
+
*/
|
|
11
|
+
static GetInstance({ dbManager }: {
|
|
12
|
+
dbManager: DBManager;
|
|
13
|
+
}): AppVersionCache;
|
|
14
|
+
constructor({ dbManager }: {
|
|
15
|
+
dbManager: DBManager;
|
|
16
|
+
});
|
|
17
|
+
private get CacheIsEmpty();
|
|
18
|
+
/**
|
|
19
|
+
* Used to populate the cache when the cache is completely empty
|
|
20
|
+
* @param appName
|
|
21
|
+
*/
|
|
22
|
+
private PopulateEmptyCache;
|
|
23
|
+
ClearCache(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Get Rules for an app
|
|
26
|
+
*
|
|
27
|
+
* Populates the cache if empty
|
|
28
|
+
* Freshens a cache entry if it is stale
|
|
29
|
+
* Feturns the cached value if it is fresh
|
|
30
|
+
* Fetches a single item if the cache is not empty but the item is not in the cache
|
|
31
|
+
*
|
|
32
|
+
* @param appName
|
|
33
|
+
* @returns
|
|
34
|
+
*/
|
|
35
|
+
GetRules({ key: { AppName }, }: {
|
|
36
|
+
key: {
|
|
37
|
+
AppName: string;
|
|
38
|
+
};
|
|
39
|
+
}): Promise<Rules | undefined>;
|
|
40
|
+
/**
|
|
41
|
+
* Get Version info for an app and semVer
|
|
42
|
+
*
|
|
43
|
+
* Populates the cache if empty
|
|
44
|
+
* Freshens a cache entry if it is stale
|
|
45
|
+
* Feturns the cached value if it is fresh
|
|
46
|
+
* Fetches a single item if the cache is not empty but the item is not in the cache
|
|
47
|
+
*
|
|
48
|
+
* @param appName
|
|
49
|
+
* @returns
|
|
50
|
+
*/
|
|
51
|
+
GetVersionInfo({ key: { AppName, SemVer }, }: {
|
|
52
|
+
key: {
|
|
53
|
+
AppName: string;
|
|
54
|
+
SemVer: string;
|
|
55
|
+
};
|
|
56
|
+
}): Promise<Version | undefined>;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=app-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-cache.d.ts","sourceRoot":"","sources":["../src/app-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAOpF,qBAAa,eAAe;IAC1B,OAAO,CAAC,oBAAoB,CAAsC;IAClE,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,gBAAgB,CAAiD;IACzE,OAAO,CAAC,SAAS,CAAY;IAE7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC;;OAEG;WACW,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE,GAAG,eAAe;gBAQvE,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE;IAOnD,OAAO,KAAK,YAAY,GAEvB;IAED;;;OAGG;YACW,kBAAkB;IAoCzB,UAAU,IAAI,IAAI;IAKzB;;;;;;;;;;OAUG;IACU,QAAQ,CAAC,EACpB,GAAG,EAAE,EAAE,OAAO,EAAE,GACjB,EAAE;QACD,GAAG,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1B,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IA+B9B;;;;;;;;;;OAUG;IACU,cAAc,CAAC,EAC1B,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GACzB,EAAE;QACD,GAAG,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1C,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;CAiDjC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AppVersionCache = void 0;
|
|
4
|
+
const microapps_datalib_1 = require("@pwrdrvr/microapps-datalib");
|
|
5
|
+
class AppVersionCache {
|
|
6
|
+
/**
|
|
7
|
+
* Get the AppVersionCache instance or create it
|
|
8
|
+
*/
|
|
9
|
+
static GetInstance({ dbManager }) {
|
|
10
|
+
if (!AppVersionCache.instance) {
|
|
11
|
+
AppVersionCache.instance = new AppVersionCache({ dbManager });
|
|
12
|
+
}
|
|
13
|
+
return AppVersionCache.instance;
|
|
14
|
+
}
|
|
15
|
+
constructor({ dbManager }) {
|
|
16
|
+
this.negativeAppNameCache = new Map();
|
|
17
|
+
this.appRulesCache = new Map();
|
|
18
|
+
this.appVersionsCache = new Map();
|
|
19
|
+
this.dbManager = dbManager;
|
|
20
|
+
}
|
|
21
|
+
get CacheIsEmpty() {
|
|
22
|
+
return this.appRulesCache.size === 0 && this.appVersionsCache.size === 0;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Used to populate the cache when the cache is completely empty
|
|
26
|
+
* @param appName
|
|
27
|
+
*/
|
|
28
|
+
async PopulateEmptyCache({ key: { AppName }, }) {
|
|
29
|
+
const versionsAndRules = await microapps_datalib_1.Application.GetVersionsAndRules({
|
|
30
|
+
dbManager: this.dbManager,
|
|
31
|
+
key: { AppName },
|
|
32
|
+
});
|
|
33
|
+
if (!versionsAndRules || (versionsAndRules.Versions.length === 0 && !versionsAndRules.Rules)) {
|
|
34
|
+
this.negativeAppNameCache.set(AppName.toLowerCase(), {
|
|
35
|
+
timestamp: Date.now(),
|
|
36
|
+
data: undefined,
|
|
37
|
+
});
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Remove negative cache entry if it exists
|
|
41
|
+
this.negativeAppNameCache.delete(AppName.toLowerCase());
|
|
42
|
+
this.appRulesCache.set(AppName.toLowerCase(), {
|
|
43
|
+
timestamp: Date.now(),
|
|
44
|
+
data: versionsAndRules.Rules,
|
|
45
|
+
});
|
|
46
|
+
const versionsMap = new Map();
|
|
47
|
+
for (const version of versionsAndRules.Versions) {
|
|
48
|
+
versionsMap.set(version.SemVer, {
|
|
49
|
+
timestamp: Date.now(),
|
|
50
|
+
data: version,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
this.appVersionsCache.set(AppName.toLowerCase(), versionsMap);
|
|
54
|
+
}
|
|
55
|
+
ClearCache() {
|
|
56
|
+
this.appRulesCache.clear();
|
|
57
|
+
this.appVersionsCache.clear();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get Rules for an app
|
|
61
|
+
*
|
|
62
|
+
* Populates the cache if empty
|
|
63
|
+
* Freshens a cache entry if it is stale
|
|
64
|
+
* Feturns the cached value if it is fresh
|
|
65
|
+
* Fetches a single item if the cache is not empty but the item is not in the cache
|
|
66
|
+
*
|
|
67
|
+
* @param appName
|
|
68
|
+
* @returns
|
|
69
|
+
*/
|
|
70
|
+
async GetRules({ key: { AppName }, }) {
|
|
71
|
+
var _a;
|
|
72
|
+
const now = Date.now();
|
|
73
|
+
// Check the negative cache first
|
|
74
|
+
const negativeCacheEntry = this.negativeAppNameCache.get(AppName.toLowerCase());
|
|
75
|
+
if (negativeCacheEntry && now - negativeCacheEntry.timestamp < 60000) {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
else if (negativeCacheEntry) {
|
|
79
|
+
this.negativeAppNameCache.delete(AppName.toLowerCase());
|
|
80
|
+
}
|
|
81
|
+
const ruleCacheEntry = this.appRulesCache.get(AppName.toLowerCase());
|
|
82
|
+
if (ruleCacheEntry && now - ruleCacheEntry.timestamp < 60000) {
|
|
83
|
+
return ruleCacheEntry.data;
|
|
84
|
+
}
|
|
85
|
+
if (this.CacheIsEmpty || !ruleCacheEntry) {
|
|
86
|
+
await this.PopulateEmptyCache({ key: { AppName } });
|
|
87
|
+
return (_a = this.appRulesCache.get(AppName.toLowerCase())) === null || _a === void 0 ? void 0 : _a.data;
|
|
88
|
+
}
|
|
89
|
+
const versionsAndRules = await microapps_datalib_1.Application.GetVersionsAndRules({
|
|
90
|
+
dbManager: this.dbManager,
|
|
91
|
+
key: { AppName: AppName },
|
|
92
|
+
});
|
|
93
|
+
this.appRulesCache.set(AppName.toLowerCase(), { timestamp: now, data: versionsAndRules.Rules });
|
|
94
|
+
return versionsAndRules.Rules;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get Version info for an app and semVer
|
|
98
|
+
*
|
|
99
|
+
* Populates the cache if empty
|
|
100
|
+
* Freshens a cache entry if it is stale
|
|
101
|
+
* Feturns the cached value if it is fresh
|
|
102
|
+
* Fetches a single item if the cache is not empty but the item is not in the cache
|
|
103
|
+
*
|
|
104
|
+
* @param appName
|
|
105
|
+
* @returns
|
|
106
|
+
*/
|
|
107
|
+
async GetVersionInfo({ key: { AppName, SemVer }, }) {
|
|
108
|
+
var _a, _b;
|
|
109
|
+
const now = Date.now();
|
|
110
|
+
// Check the negative cache first
|
|
111
|
+
const negativeCacheEntry = this.negativeAppNameCache.get(AppName.toLowerCase());
|
|
112
|
+
if (negativeCacheEntry && now - negativeCacheEntry.timestamp < 60000) {
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
else if (negativeCacheEntry) {
|
|
116
|
+
this.negativeAppNameCache.delete(AppName.toLowerCase());
|
|
117
|
+
}
|
|
118
|
+
// Check if we have the item cached and if it is fresh enough
|
|
119
|
+
const versionCacheEntry = this.appVersionsCache.get(AppName.toLowerCase());
|
|
120
|
+
if (versionCacheEntry) {
|
|
121
|
+
const versionInfo = versionCacheEntry.get(SemVer);
|
|
122
|
+
if (versionInfo && now - versionInfo.timestamp < 900000) {
|
|
123
|
+
return versionInfo.data;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (this.CacheIsEmpty || !versionCacheEntry) {
|
|
127
|
+
await this.PopulateEmptyCache({ key: { AppName } });
|
|
128
|
+
if (!this.appVersionsCache) {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
return (_b = (_a = this.appVersionsCache.get(AppName.toLowerCase())) === null || _a === void 0 ? void 0 : _a.get(SemVer)) === null || _b === void 0 ? void 0 : _b.data;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// We have some data in the cache, but not for this version
|
|
135
|
+
// So we need to get the data for this version
|
|
136
|
+
const versionInfo = await microapps_datalib_1.Version.LoadVersion({
|
|
137
|
+
dbManager: this.dbManager,
|
|
138
|
+
key: { AppName, SemVer: SemVer },
|
|
139
|
+
});
|
|
140
|
+
if (!versionInfo) {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
const versionsMap = this.appVersionsCache.get(AppName.toLowerCase());
|
|
144
|
+
if (!versionsMap) {
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
// Save the version info in the cache
|
|
148
|
+
versionsMap.set(SemVer, { timestamp: now, data: versionInfo });
|
|
149
|
+
return versionInfo;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
exports.AppVersionCache = AppVersionCache;
|
|
154
|
+
//# sourceMappingURL=app-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-cache.js","sourceRoot":"","sources":["../src/app-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import 'source-map-support/register';
|
|
2
|
+
import { DBManager } from '@pwrdrvr/microapps-datalib';
|
|
3
|
+
import { AppVersionCache } from './app-cache';
|
|
4
|
+
export { AppVersionCache };
|
|
5
|
+
/**
|
|
6
|
+
* Find and load the appFrame file
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export declare function loadAppFrame({ basePath }: {
|
|
10
|
+
basePath?: string;
|
|
11
|
+
}): string;
|
|
12
|
+
/**
|
|
13
|
+
* Ensure that the path starts with a / and does not end with a /
|
|
14
|
+
*
|
|
15
|
+
* @param pathPrefix
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
export declare function normalizePathPrefix(pathPrefix: string): string;
|
|
19
|
+
export interface IGetRouteResult {
|
|
20
|
+
/**
|
|
21
|
+
* HTTP status code for immediate response, immediate redirect, and errors
|
|
22
|
+
*/
|
|
23
|
+
readonly statusCode?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Error message for errors
|
|
26
|
+
*/
|
|
27
|
+
readonly errorMessage?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Location to redirect to
|
|
30
|
+
*/
|
|
31
|
+
readonly redirectLocation?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Optional headers for immediate response, immediate redirect, and errors
|
|
34
|
+
*/
|
|
35
|
+
readonly headers?: Record<string, string>;
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
*
|
|
39
|
+
* @example /myapp/1.0.0/index.html
|
|
40
|
+
* @example /myapp/1.0.1
|
|
41
|
+
* @example /myapp/1.0.2/some/path?query=string
|
|
42
|
+
*/
|
|
43
|
+
readonly iFrameAppVersionPath?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Name of the app if resolved
|
|
46
|
+
*/
|
|
47
|
+
readonly appName?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Version of the app if resolved
|
|
50
|
+
*/
|
|
51
|
+
readonly semVer?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Type of the app
|
|
54
|
+
*/
|
|
55
|
+
readonly type?: 'apigwy' | 'lambda-url' | 'url' | 'static';
|
|
56
|
+
/**
|
|
57
|
+
* Startup type of the app (indirect with iframe or direct)
|
|
58
|
+
*/
|
|
59
|
+
readonly startupType?: 'iframe' | 'direct';
|
|
60
|
+
/**
|
|
61
|
+
* URL to the app if resolved
|
|
62
|
+
*/
|
|
63
|
+
readonly url?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface IGetRouteEvent {
|
|
66
|
+
readonly dbManager: DBManager;
|
|
67
|
+
/**
|
|
68
|
+
* rawPath from the Lambda event
|
|
69
|
+
*/
|
|
70
|
+
readonly rawPath: string;
|
|
71
|
+
/**
|
|
72
|
+
* Configured prefix of the deployment, must start with a / and not end with a /
|
|
73
|
+
*/
|
|
74
|
+
readonly normalizedPathPrefix?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Query string params, if any
|
|
77
|
+
* Checked for `appver=1.2.3` to override the app version
|
|
78
|
+
*/
|
|
79
|
+
readonly queryStringParameters?: URLSearchParams;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get information about immediate redirect, immediate response,
|
|
83
|
+
* or which host to route the request to.
|
|
84
|
+
*
|
|
85
|
+
* @param event
|
|
86
|
+
*
|
|
87
|
+
* @returns IGetRouteResult
|
|
88
|
+
*/
|
|
89
|
+
export declare function GetRoute(event: IGetRouteEvent): Promise<IGetRouteResult>;
|
|
90
|
+
/**
|
|
91
|
+
* Determine if we have an appname or a catch all app
|
|
92
|
+
*/
|
|
93
|
+
export declare function GetAppInfo(opts: {
|
|
94
|
+
dbManager: DBManager;
|
|
95
|
+
appName: string;
|
|
96
|
+
}): Promise<string | undefined>;
|
|
97
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAkB,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAc,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAwB9E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAU9D;AAED,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;;OAEG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,eAAe,CAAC;CAClD;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAyG9E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoB9B"}
|