@next-core/easyops-runtime 0.7.24 → 0.7.26
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/cjs/analytics/analytics.js.map +1 -1
- package/dist/cjs/analytics/http.js.map +1 -1
- package/dist/cjs/analytics/index.js.map +1 -1
- package/dist/cjs/analytics/interfaces.js.map +1 -1
- package/dist/cjs/analytics/pageView.js.map +1 -1
- package/dist/cjs/analytics/transport.js.map +1 -1
- package/dist/cjs/auth-v2.js.map +1 -1
- package/dist/cjs/auth.js.map +1 -1
- package/dist/cjs/checkInstalledApps.js.map +1 -1
- package/dist/cjs/checkPermissions.js.map +1 -1
- package/dist/cjs/flowApi/CollectContracts.js.map +1 -1
- package/dist/cjs/flowApi/FlowApi.js.map +1 -1
- package/dist/cjs/flowApi/FlowApiProvider.js.map +1 -1
- package/dist/cjs/flowApi/index.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/menu/computeMenuData.js.map +1 -1
- package/dist/cjs/menu/constants.js.map +1 -1
- package/dist/cjs/menu/fetchMenuById.js.map +1 -1
- package/dist/cjs/menu/fetchMenuTitle.js.map +1 -1
- package/dist/cjs/menu/getMenusOfStandaloneApp.js.map +1 -1
- package/dist/cjs/menu/index.js.map +1 -1
- package/dist/cjs/menu/interfaces.js.map +1 -1
- package/dist/cjs/menu/loadDynamicMenuItems.js.map +1 -1
- package/dist/cjs/menu/mergeMenu.js.map +1 -1
- package/dist/cjs/menu/reorderMenuItems.js.map +1 -1
- package/dist/cjs/websocket/MessageDispatcher.js +26 -26
- package/dist/cjs/websocket/MessageDispatcher.js.map +1 -1
- package/dist/cjs/websocket/MessageService.js +29 -29
- package/dist/cjs/websocket/MessageService.js.map +1 -1
- package/dist/esm/analytics/analytics.js.map +1 -1
- package/dist/esm/analytics/http.js.map +1 -1
- package/dist/esm/analytics/index.js.map +1 -1
- package/dist/esm/analytics/interfaces.js.map +1 -1
- package/dist/esm/analytics/pageView.js.map +1 -1
- package/dist/esm/analytics/transport.js.map +1 -1
- package/dist/esm/auth-v2.js.map +1 -1
- package/dist/esm/auth.js.map +1 -1
- package/dist/esm/checkInstalledApps.js.map +1 -1
- package/dist/esm/checkPermissions.js.map +1 -1
- package/dist/esm/flowApi/CollectContracts.js.map +1 -1
- package/dist/esm/flowApi/FlowApi.js.map +1 -1
- package/dist/esm/flowApi/FlowApiProvider.js.map +1 -1
- package/dist/esm/flowApi/index.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/menu/computeMenuData.js.map +1 -1
- package/dist/esm/menu/constants.js.map +1 -1
- package/dist/esm/menu/fetchMenuById.js.map +1 -1
- package/dist/esm/menu/fetchMenuTitle.js.map +1 -1
- package/dist/esm/menu/getMenusOfStandaloneApp.js.map +1 -1
- package/dist/esm/menu/index.js.map +1 -1
- package/dist/esm/menu/interfaces.js.map +1 -1
- package/dist/esm/menu/loadDynamicMenuItems.js.map +1 -1
- package/dist/esm/menu/mergeMenu.js.map +1 -1
- package/dist/esm/menu/reorderMenuItems.js.map +1 -1
- package/dist/esm/websocket/MessageDispatcher.js +5 -5
- package/dist/esm/websocket/MessageDispatcher.js.map +1 -1
- package/dist/esm/websocket/MessageService.js +3 -3
- package/dist/esm/websocket/MessageService.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeMenu.js","names":["_i18n","require","_constants","_loadDynamicMenuItems","mergeMenu","menuList","runtimeContext","helpers","mainMenu","find","menu","type","undefined","validMenuList","injectWithMenus","Map","menuWithI18n","WeakMap","i18n","menuI18nNamespace","menuId","app","appId","instanceId","Object","entries","forEach","lang","resources","addResourceBundle","set","Promise","all","map","loadDynamicMenuItems","_menu$items","items","length","injectMenuGroupId","injectingMenus","get","push","flatMap","processGroupInject","symbolMenuI18nNamespace","symbolOverrideApp","overrideApp","item","_processGroupInject","foundInjectingMenus","groupId","delete","children","concat","injectingMenu","symbolAppId"],"sources":["../../../src/menu/mergeMenu.ts"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\nimport {\n symbolAppId,\n symbolMenuI18nNamespace,\n symbolOverrideApp,\n} from \"./constants.js\";\nimport type {\n RuntimeContext,\n MenuItemRawData,\n MenuRawData,\n RuntimeMenuItemRawData,\n RuntimeMenuRawData,\n RuntimeHelpers,\n} from \"./interfaces.js\";\nimport { loadDynamicMenuItems } from \"./loadDynamicMenuItems.js\";\n\nexport async function mergeMenu(\n menuList: MenuRawData[],\n runtimeContext: RuntimeContext,\n helpers: RuntimeHelpers\n): Promise<RuntimeMenuRawData | undefined> {\n const mainMenu = menuList.find((menu) => menu.type !== \"inject\");\n if (!mainMenu) {\n return undefined;\n }\n const validMenuList: MenuRawData[] = [];\n const injectWithMenus = new Map<string, MenuRawData[]>();\n const menuWithI18n = new WeakMap<MenuRawData, string>();\n\n for (const menu of menuList) {\n if (menu.i18n) {\n const menuI18nNamespace = `menu/${menu.menuId}~${menu.app[0].appId}+${\n (menu as { instanceId?: string }).instanceId\n }`;\n // Support any language in `menu.i18n`.\n Object.entries(menu.i18n).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, menuI18nNamespace, resources);\n });\n menuWithI18n.set(menu, menuI18nNamespace);\n }\n }\n\n await Promise.all(\n menuList.map((menu) =>\n loadDynamicMenuItems(menu, runtimeContext, menuWithI18n, helpers)\n )\n );\n\n for (const menu of menuList) {\n if (menu.items?.length) {\n if (menu.type === \"inject\" && menu.injectMenuGroupId) {\n let injectingMenus = injectWithMenus.get(menu.injectMenuGroupId);\n if (!injectingMenus) {\n injectingMenus = [];\n injectWithMenus.set(menu.injectMenuGroupId, injectingMenus);\n }\n injectingMenus.push(menu);\n } else {\n validMenuList.push(menu);\n }\n }\n }\n\n return {\n ...mainMenu,\n items: validMenuList.flatMap(\n (menu) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n processGroupInject(menu.items, menu, injectWithMenus, menuWithI18n)!\n ),\n [symbolMenuI18nNamespace]: menuWithI18n.get(mainMenu),\n [symbolOverrideApp]: mainMenu.overrideApp,\n };\n}\n\nfunction processGroupInject(\n items: MenuItemRawData[] | undefined,\n menu: MenuRawData,\n injectWithMenus: Map<string, MenuRawData[]>,\n menuWithI18n: WeakMap<MenuRawData, string>\n): RuntimeMenuItemRawData[] | undefined {\n return items?.map((item) => {\n const foundInjectingMenus =\n item.groupId && injectWithMenus.get(item.groupId);\n if (foundInjectingMenus) {\n // Each menu to be injected with should be injected only once.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n injectWithMenus.delete(item.groupId!);\n }\n return {\n ...item,\n children: (\n processGroupInject(\n item.children,\n menu,\n injectWithMenus,\n menuWithI18n\n ) ?? ([] as RuntimeMenuItemRawData[])\n ).concat(\n foundInjectingMenus\n ? foundInjectingMenus.flatMap(\n (injectingMenu) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n processGroupInject(\n injectingMenu.items,\n injectingMenu,\n injectWithMenus,\n menuWithI18n\n )!\n )\n : ([] as RuntimeMenuItemRawData[])\n ),\n [symbolAppId]: menu.app[0].appId,\n [symbolMenuI18nNamespace]: menuWithI18n.get(menu),\n [symbolOverrideApp]: menu.overrideApp,\n };\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mergeMenu.js","names":["_i18n","require","_constants","_loadDynamicMenuItems","mergeMenu","menuList","runtimeContext","helpers","mainMenu","find","menu","type","undefined","validMenuList","injectWithMenus","Map","menuWithI18n","WeakMap","i18n","menuI18nNamespace","menuId","app","appId","instanceId","Object","entries","forEach","lang","resources","addResourceBundle","set","Promise","all","map","loadDynamicMenuItems","_menu$items","items","length","injectMenuGroupId","injectingMenus","get","push","flatMap","processGroupInject","symbolMenuI18nNamespace","symbolOverrideApp","overrideApp","item","_processGroupInject","foundInjectingMenus","groupId","delete","children","concat","injectingMenu","symbolAppId"],"sources":["../../../src/menu/mergeMenu.ts"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\nimport {\n symbolAppId,\n symbolMenuI18nNamespace,\n symbolOverrideApp,\n} from \"./constants.js\";\nimport type {\n RuntimeContext,\n MenuItemRawData,\n MenuRawData,\n RuntimeMenuItemRawData,\n RuntimeMenuRawData,\n RuntimeHelpers,\n} from \"./interfaces.js\";\nimport { loadDynamicMenuItems } from \"./loadDynamicMenuItems.js\";\n\nexport async function mergeMenu(\n menuList: MenuRawData[],\n runtimeContext: RuntimeContext,\n helpers: RuntimeHelpers\n): Promise<RuntimeMenuRawData | undefined> {\n const mainMenu = menuList.find((menu) => menu.type !== \"inject\");\n if (!mainMenu) {\n return undefined;\n }\n const validMenuList: MenuRawData[] = [];\n const injectWithMenus = new Map<string, MenuRawData[]>();\n const menuWithI18n = new WeakMap<MenuRawData, string>();\n\n for (const menu of menuList) {\n if (menu.i18n) {\n const menuI18nNamespace = `menu/${menu.menuId}~${menu.app[0].appId}+${\n (menu as { instanceId?: string }).instanceId\n }`;\n // Support any language in `menu.i18n`.\n Object.entries(menu.i18n).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, menuI18nNamespace, resources);\n });\n menuWithI18n.set(menu, menuI18nNamespace);\n }\n }\n\n await Promise.all(\n menuList.map((menu) =>\n loadDynamicMenuItems(menu, runtimeContext, menuWithI18n, helpers)\n )\n );\n\n for (const menu of menuList) {\n if (menu.items?.length) {\n if (menu.type === \"inject\" && menu.injectMenuGroupId) {\n let injectingMenus = injectWithMenus.get(menu.injectMenuGroupId);\n if (!injectingMenus) {\n injectingMenus = [];\n injectWithMenus.set(menu.injectMenuGroupId, injectingMenus);\n }\n injectingMenus.push(menu);\n } else {\n validMenuList.push(menu);\n }\n }\n }\n\n return {\n ...mainMenu,\n items: validMenuList.flatMap(\n (menu) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n processGroupInject(menu.items, menu, injectWithMenus, menuWithI18n)!\n ),\n [symbolMenuI18nNamespace]: menuWithI18n.get(mainMenu),\n [symbolOverrideApp]: mainMenu.overrideApp,\n };\n}\n\nfunction processGroupInject(\n items: MenuItemRawData[] | undefined,\n menu: MenuRawData,\n injectWithMenus: Map<string, MenuRawData[]>,\n menuWithI18n: WeakMap<MenuRawData, string>\n): RuntimeMenuItemRawData[] | undefined {\n return items?.map((item) => {\n const foundInjectingMenus =\n item.groupId && injectWithMenus.get(item.groupId);\n if (foundInjectingMenus) {\n // Each menu to be injected with should be injected only once.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n injectWithMenus.delete(item.groupId!);\n }\n return {\n ...item,\n children: (\n processGroupInject(\n item.children,\n menu,\n injectWithMenus,\n menuWithI18n\n ) ?? ([] as RuntimeMenuItemRawData[])\n ).concat(\n foundInjectingMenus\n ? foundInjectingMenus.flatMap(\n (injectingMenu) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n processGroupInject(\n injectingMenu.items,\n injectingMenu,\n injectWithMenus,\n menuWithI18n\n )!\n )\n : ([] as RuntimeMenuItemRawData[])\n ),\n [symbolAppId]: menu.app[0].appId,\n [symbolMenuI18nNamespace]: menuWithI18n.get(menu),\n [symbolOverrideApp]: menu.overrideApp,\n };\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorderMenuItems.js","names":["_lodash","require","reorderMenu","menuData","items","reorderMenuItems","list","sortMenuItems","map","item","children","sortBy","_item$sort","sort","Infinity"],"sources":["../../../src/menu/reorderMenuItems.ts"],"sourcesContent":["import { sortBy } from \"lodash\";\nimport { MenuItemRawData, MenuRawData } from \"./interfaces.js\";\n\nexport function reorderMenu(menuData: MenuRawData): void {\n menuData.items = reorderMenuItems(menuData.items);\n}\n\nfunction reorderMenuItems(\n list: MenuItemRawData[] | undefined\n): MenuItemRawData[] {\n return sortMenuItems(list).map((item) => ({\n ...item,\n children: reorderMenuItems(item.children),\n }));\n}\n\nfunction sortMenuItems(list: MenuItemRawData[] | undefined): MenuItemRawData[] {\n return sortBy(list, (item) => item.sort ?? -Infinity);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAGO,SAASC,WAAWA,CAACC,QAAqB,EAAQ;EACvDA,QAAQ,CAACC,KAAK,GAAGC,gBAAgB,CAACF,QAAQ,CAACC,KAAK,CAAC;AACnD;AAEA,SAASC,gBAAgBA,CACvBC,IAAmC,EAChB;EACnB,OAAOC,aAAa,CAACD,IAAI,CAAC,CAACE,GAAG,CAAEC,IAAI,KAAM;IACxC,GAAGA,IAAI;IACPC,QAAQ,EAAEL,gBAAgB,CAACI,IAAI,CAACC,QAAQ;EAC1C,CAAC,CAAC,CAAC;AACL;AAEA,SAASH,aAAaA,CAACD,IAAmC,EAAqB;EAC7E,OAAO,IAAAK,cAAM,EAACL,IAAI,EAAGG,IAAI;IAAA,IAAAG,UAAA;IAAA,QAAAA,UAAA,GAAKH,IAAI,CAACI,IAAI,cAAAD,UAAA,cAAAA,UAAA,GAAI,CAACE,QAAQ;EAAA,EAAC;AACvD"}
|
|
1
|
+
{"version":3,"file":"reorderMenuItems.js","names":["_lodash","require","reorderMenu","menuData","items","reorderMenuItems","list","sortMenuItems","map","item","children","sortBy","_item$sort","sort","Infinity"],"sources":["../../../src/menu/reorderMenuItems.ts"],"sourcesContent":["import { sortBy } from \"lodash\";\nimport { MenuItemRawData, MenuRawData } from \"./interfaces.js\";\n\nexport function reorderMenu(menuData: MenuRawData): void {\n menuData.items = reorderMenuItems(menuData.items);\n}\n\nfunction reorderMenuItems(\n list: MenuItemRawData[] | undefined\n): MenuItemRawData[] {\n return sortMenuItems(list).map((item) => ({\n ...item,\n children: reorderMenuItems(item.children),\n }));\n}\n\nfunction sortMenuItems(list: MenuItemRawData[] | undefined): MenuItemRawData[] {\n return sortBy(list, (item) => item.sort ?? -Infinity);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAGO,SAASC,WAAWA,CAACC,QAAqB,EAAQ;EACvDA,QAAQ,CAACC,KAAK,GAAGC,gBAAgB,CAACF,QAAQ,CAACC,KAAK,CAAC;AACnD;AAEA,SAASC,gBAAgBA,CACvBC,IAAmC,EAChB;EACnB,OAAOC,aAAa,CAACD,IAAI,CAAC,CAACE,GAAG,CAAEC,IAAI,KAAM;IACxC,GAAGA,IAAI;IACPC,QAAQ,EAAEL,gBAAgB,CAACI,IAAI,CAACC,QAAQ;EAC1C,CAAC,CAAC,CAAC;AACL;AAEA,SAASH,aAAaA,CAACD,IAAmC,EAAqB;EAC7E,OAAO,IAAAK,cAAM,EAACL,IAAI,EAAGG,IAAI;IAAA,IAAAG,UAAA;IAAA,QAAAA,UAAA,GAAKH,IAAI,CAACI,IAAI,cAAAD,UAAA,cAAAA,UAAA,GAAI,CAACE,QAAQ;EAAA,EAAC;AACvD","ignoreList":[]}
|
|
@@ -7,13 +7,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.MessageDispatcher = void 0;
|
|
8
8
|
var _classPrivateMethodInitSpec2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateMethodInitSpec"));
|
|
9
9
|
var _classPrivateFieldInitSpec2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldInitSpec"));
|
|
10
|
+
var _classPrivateGetter2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateGetter"));
|
|
11
|
+
var _assertClassBrand2 = _interopRequireDefault(require("@babel/runtime/helpers/assertClassBrand"));
|
|
12
|
+
var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldSet2"));
|
|
13
|
+
var _classPrivateFieldGet3 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldGet2"));
|
|
10
14
|
var _runtime = require("@next-core/runtime");
|
|
11
15
|
var _lodash = require("lodash");
|
|
12
16
|
var _MessageService = require("./MessageService.js");
|
|
13
|
-
function _classPrivateGetter(s, r, a) { return a(_assertClassBrand(s, r)); }
|
|
14
|
-
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
|
15
|
-
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
|
16
|
-
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
|
17
17
|
var _ms = /*#__PURE__*/new WeakMap();
|
|
18
18
|
var _memoizedChannels = /*#__PURE__*/new WeakMap();
|
|
19
19
|
var _channelPayloads = /*#__PURE__*/new WeakMap();
|
|
@@ -30,10 +30,10 @@ class MessageDispatcher {
|
|
|
30
30
|
}
|
|
31
31
|
subscribe(channel, payload) {
|
|
32
32
|
const stringifiedPayload = JSON.stringify(payload);
|
|
33
|
-
return
|
|
33
|
+
return (0, _assertClassBrand2.default)(_MessageDispatcher_brand, this, _subOrUnsub).call(this, "sub", channel, payload, stringifiedPayload);
|
|
34
34
|
}
|
|
35
35
|
unsubscribe(channel) {
|
|
36
|
-
const stringifiedPayload =
|
|
36
|
+
const stringifiedPayload = (0, _classPrivateFieldGet3.default)(_channelPayloads, this).get(channel);
|
|
37
37
|
if (!stringifiedPayload) {
|
|
38
38
|
const msg = `The message channel to unsubscribe "${channel}" is not found`;
|
|
39
39
|
// eslint-disable-next-line no-console
|
|
@@ -41,19 +41,19 @@ class MessageDispatcher {
|
|
|
41
41
|
return Promise.reject(new Error(msg));
|
|
42
42
|
}
|
|
43
43
|
const payload = JSON.parse(stringifiedPayload);
|
|
44
|
-
const result =
|
|
45
|
-
|
|
44
|
+
const result = (0, _assertClassBrand2.default)(_MessageDispatcher_brand, this, _subOrUnsub).call(this, "unsub", channel, payload, stringifiedPayload);
|
|
45
|
+
(0, _classPrivateFieldGet3.default)(_memoizedChannels, this).sub.delete(stringifiedPayload);
|
|
46
46
|
result.then(() => {
|
|
47
|
-
|
|
47
|
+
(0, _classPrivateFieldGet3.default)(_channelPayloads, this).delete(channel);
|
|
48
48
|
});
|
|
49
49
|
return result;
|
|
50
50
|
}
|
|
51
51
|
onMessage(channel, listener) {
|
|
52
|
-
let stringifiedPayload =
|
|
52
|
+
let stringifiedPayload = (0, _classPrivateFieldGet3.default)(_channelPayloads, this).get(channel);
|
|
53
53
|
let warned = false;
|
|
54
|
-
|
|
54
|
+
(0, _classPrivateGetter2.default)(_MessageDispatcher_brand, this, _get_ms).onMessage(response => {
|
|
55
55
|
if (!stringifiedPayload) {
|
|
56
|
-
stringifiedPayload =
|
|
56
|
+
stringifiedPayload = (0, _classPrivateFieldGet3.default)(_channelPayloads, this).get(channel);
|
|
57
57
|
}
|
|
58
58
|
if (!stringifiedPayload) {
|
|
59
59
|
if (!warned) {
|
|
@@ -69,27 +69,27 @@ class MessageDispatcher {
|
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
71
|
onClose(listener) {
|
|
72
|
-
|
|
72
|
+
(0, _classPrivateGetter2.default)(_MessageDispatcher_brand, this, _get_ms).onClose(listener);
|
|
73
73
|
}
|
|
74
74
|
reset() {
|
|
75
75
|
var _classPrivateFieldGet2;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
(_classPrivateFieldGet2 =
|
|
76
|
+
(0, _classPrivateFieldGet3.default)(_memoizedChannels, this).sub.clear();
|
|
77
|
+
(0, _classPrivateFieldGet3.default)(_memoizedChannels, this).unsub.clear();
|
|
78
|
+
(0, _classPrivateFieldGet3.default)(_channelPayloads, this).clear();
|
|
79
|
+
(_classPrivateFieldGet2 = (0, _classPrivateFieldGet3.default)(_ms, this)) === null || _classPrivateFieldGet2 === void 0 || _classPrivateFieldGet2.reset();
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
exports.MessageDispatcher = MessageDispatcher;
|
|
83
83
|
function _get_ms(_this) {
|
|
84
|
-
if (!
|
|
84
|
+
if (!(0, _classPrivateFieldGet3.default)(_ms, _this)) {
|
|
85
85
|
const protocol = location.protocol === "https:" ? "wss:" : "ws:";
|
|
86
86
|
const url = `${protocol}//${window.location.host}${(0, _runtime.getBasePath)()}api/websocket_service/v1/ws`;
|
|
87
|
-
|
|
87
|
+
(0, _classPrivateFieldSet2.default)(_ms, _this, new _MessageService.MessageService(url));
|
|
88
88
|
}
|
|
89
|
-
return
|
|
89
|
+
return (0, _classPrivateFieldGet3.default)(_ms, _this);
|
|
90
90
|
}
|
|
91
91
|
function _subOrUnsub(type, channel, payload, stringifiedPayload) {
|
|
92
|
-
const hit =
|
|
92
|
+
const hit = (0, _classPrivateFieldGet3.default)(_memoizedChannels, this)[type].get(stringifiedPayload);
|
|
93
93
|
if (hit) {
|
|
94
94
|
return hit;
|
|
95
95
|
}
|
|
@@ -99,7 +99,7 @@ function _subOrUnsub(type, channel, payload, stringifiedPayload) {
|
|
|
99
99
|
};
|
|
100
100
|
const promise = new Promise((resolve, reject) => {
|
|
101
101
|
const identity = getIdentity(payload);
|
|
102
|
-
|
|
102
|
+
(0, _classPrivateGetter2.default)(_MessageDispatcher_brand, this, _get_ms).onMessage(response => {
|
|
103
103
|
const isSuccess = response.event === (type === "sub" ? "TOPIC.SUB_SUCCESS" : "TOPIC.UNSUB_SUCCESS");
|
|
104
104
|
const isFailed = response.event === (type === "sub" ? "TOPIC.SUB_FAILED" : "TOPIC.UNSUB_FAILED");
|
|
105
105
|
if ((isSuccess || isFailed) &&
|
|
@@ -109,12 +109,12 @@ function _subOrUnsub(type, channel, payload, stringifiedPayload) {
|
|
|
109
109
|
(isSuccess ? resolve : reject)(response);
|
|
110
110
|
}
|
|
111
111
|
});
|
|
112
|
-
|
|
112
|
+
(0, _classPrivateGetter2.default)(_MessageDispatcher_brand, this, _get_ms).send(request);
|
|
113
113
|
});
|
|
114
114
|
if (type === "sub") {
|
|
115
|
-
|
|
115
|
+
(0, _classPrivateFieldGet3.default)(_channelPayloads, this).set(channel, stringifiedPayload);
|
|
116
116
|
}
|
|
117
|
-
|
|
117
|
+
(0, _classPrivateFieldGet3.default)(_memoizedChannels, this)[type].set(stringifiedPayload, promise);
|
|
118
118
|
return promise;
|
|
119
119
|
}
|
|
120
120
|
function getIdentity(payload) {
|
|
@@ -136,6 +136,6 @@ function matchMessageChannel(stringifiedPayload, responsePayload) {
|
|
|
136
136
|
// For `ab.cd.*`:
|
|
137
137
|
// - Matches `ab.cd.r` or `ab.cd.x.yz`
|
|
138
138
|
// - DOES NOT match `ab.cd.x/yz` or `ab.x.cd` or `x.ab.cd.yz`
|
|
139
|
-
typeof payload.topic === "string" && payload.topic.includes("*") && new RegExp(`^${payload.topic.replace(/([^*]*)\*([^*]*)/g, (
|
|
139
|
+
typeof payload.topic === "string" && payload.topic.includes("*") && new RegExp(`^${payload.topic.replace(/([^*]*)\*([^*]*)/g, (_m, p1, p2) => `${(0, _lodash.escapeRegExp)(p1)}[^/]*${(0, _lodash.escapeRegExp)(p2)}`)}$`).test(responsePayload.topic));
|
|
140
140
|
}
|
|
141
141
|
//# sourceMappingURL=MessageDispatcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageDispatcher.js","names":["_runtime","require","_lodash","_MessageService","_classPrivateGetter","s","r","a","_assertClassBrand","_classPrivateFieldSet","set","_classPrivateFieldGet","get","e","t","n","has","arguments","length","TypeError","_ms","WeakMap","_memoizedChannels","_channelPayloads","_MessageDispatcher_brand","WeakSet","MessageDispatcher","constructor","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","sub","Map","unsub","subscribe","channel","payload","stringifiedPayload","JSON","stringify","_subOrUnsub","call","unsubscribe","msg","console","error","Promise","reject","Error","parse","result","delete","then","onMessage","listener","warned","_get_ms","response","event","matchMessageChannel","message","onClose","reset","_classPrivateFieldGet2","clear","exports","_this","protocol","location","url","window","host","getBasePath","MessageService","type","hit","request","promise","resolve","identity","getIdentity","isSuccess","isFailed","send","system","topic","responsePayload","includes","RegExp","replace","m","p1","p2","escapeRegExp","test"],"sources":["../../../src/websocket/MessageDispatcher.ts"],"sourcesContent":["import { getBasePath } from \"@next-core/runtime\";\nimport { escapeRegExp } from \"lodash\";\nimport {\n MessageService,\n type MessageListener,\n CloseListener,\n} from \"./MessageService.js\";\n\ninterface MessageResponse {\n event:\n | \"TOPIC.SUB_SUCCESS\"\n | \"TOPIC.SUB_FAILED\"\n | \"TOPIC.UNSUB_SUCCESS\"\n | \"TOPIC.UNSUB_FAILED\"\n | \"MESSAGE.PUSH\";\n payload: MessagePayload;\n}\n\ninterface MessagePayload {\n source?: string;\n system: string;\n topic: string;\n message?: unknown;\n}\n\nexport class MessageDispatcher {\n #_ms: MessageService | undefined;\n #memoizedChannels = {\n sub: new Map<string, Promise<unknown>>(),\n unsub: new Map<string, Promise<unknown>>(),\n };\n #channelPayloads = new Map<string, string>();\n\n get #ms(): MessageService {\n if (!this.#_ms) {\n const protocol = location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n const url = `${protocol}//${\n window.location.host\n }${getBasePath()}api/websocket_service/v1/ws`;\n this.#_ms = new MessageService(url);\n }\n return this.#_ms;\n }\n\n subscribe(channel: string, payload: MessagePayload): Promise<unknown> {\n const stringifiedPayload = JSON.stringify(payload);\n return this.#subOrUnsub(\"sub\", channel, payload, stringifiedPayload);\n }\n\n unsubscribe(channel: string): Promise<unknown> {\n const stringifiedPayload = this.#channelPayloads.get(channel);\n if (!stringifiedPayload) {\n const msg = `The message channel to unsubscribe \"${channel}\" is not found`;\n // eslint-disable-next-line no-console\n console.error(msg);\n return Promise.reject(new Error(msg));\n }\n\n const payload = JSON.parse(stringifiedPayload);\n const result = this.#subOrUnsub(\n \"unsub\",\n channel,\n payload,\n stringifiedPayload\n );\n\n this.#memoizedChannels.sub.delete(stringifiedPayload);\n\n result.then(() => {\n this.#channelPayloads.delete(channel);\n });\n\n return result;\n }\n\n onMessage(channel: string, listener: MessageListener): void {\n let stringifiedPayload = this.#channelPayloads.get(channel);\n let warned = false;\n\n this.#ms.onMessage<MessageResponse>((response) => {\n if (!stringifiedPayload) {\n stringifiedPayload = this.#channelPayloads.get(channel);\n }\n if (!stringifiedPayload) {\n if (!warned) {\n // eslint-disable-next-line no-console\n console.error(`Message channel: \"${channel}\" not found`);\n warned = true;\n }\n return;\n }\n if (\n response.event === \"MESSAGE.PUSH\" &&\n matchMessageChannel(stringifiedPayload, response.payload)\n ) {\n listener(response.payload.message);\n }\n });\n }\n\n onClose(listener: CloseListener): void {\n this.#ms.onClose(listener);\n }\n\n reset(): void {\n this.#memoizedChannels.sub.clear();\n this.#memoizedChannels.unsub.clear();\n this.#channelPayloads.clear();\n this.#_ms?.reset();\n }\n\n #subOrUnsub(\n type: \"sub\" | \"unsub\",\n channel: string,\n payload: MessagePayload,\n stringifiedPayload: string\n ): Promise<unknown> {\n const hit = this.#memoizedChannels[type].get(stringifiedPayload);\n if (hit) {\n return hit;\n }\n const request = {\n event: type === \"sub\" ? \"TOPIC.SUB\" : \"TOPIC.UNSUB\",\n payload,\n };\n const promise = new Promise((resolve, reject) => {\n const identity = getIdentity(payload);\n this.#ms.onMessage<MessageResponse>((response) => {\n const isSuccess =\n response.event ===\n (type === \"sub\" ? \"TOPIC.SUB_SUCCESS\" : \"TOPIC.UNSUB_SUCCESS\");\n const isFailed =\n response.event ===\n (type === \"sub\" ? \"TOPIC.SUB_FAILED\" : \"TOPIC.UNSUB_FAILED\");\n if (\n (isSuccess || isFailed) &&\n // Put this after event type checks, to prevent unnecessary\n // JSON stringify.\n identity === getIdentity(response.payload)\n ) {\n (isSuccess ? resolve : reject)(response);\n }\n });\n this.#ms.send(request);\n });\n\n if (type === \"sub\") {\n this.#channelPayloads.set(channel, stringifiedPayload);\n }\n this.#memoizedChannels[type].set(stringifiedPayload, promise);\n return promise;\n }\n}\n\nfunction getIdentity(payload: MessagePayload) {\n const { system, topic } = payload;\n return JSON.stringify({ system, topic });\n}\n\nfunction matchMessageChannel(\n stringifiedPayload: string,\n responsePayload: MessagePayload\n): boolean {\n const payload = JSON.parse(stringifiedPayload) as MessagePayload;\n return (\n payload.system === responsePayload.system &&\n // Exact match\n (payload.topic === responsePayload.topic ||\n // Wildcards match\n // For `ab.cd.*`:\n // - Matches `ab.cd.r` or `ab.cd.x.yz`\n // - DOES NOT match `ab.cd.x/yz` or `ab.x.cd` or `x.ab.cd.yz`\n (typeof payload.topic === \"string\" &&\n payload.topic.includes(\"*\") &&\n new RegExp(\n `^${payload.topic.replace(\n /([^*]*)\\*([^*]*)/g,\n (m, p1, p2) => `${escapeRegExp(p1)}[^/]*${escapeRegExp(p2)}`\n )}$`\n ).test(responsePayload.topic)))\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessageDispatcher.js","names":["_runtime","require","_lodash","_MessageService","_ms","WeakMap","_memoizedChannels","_channelPayloads","_MessageDispatcher_brand","WeakSet","MessageDispatcher","constructor","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","sub","Map","unsub","subscribe","channel","payload","stringifiedPayload","JSON","stringify","_assertClassBrand2","_subOrUnsub","call","unsubscribe","_classPrivateFieldGet3","get","msg","console","error","Promise","reject","Error","parse","result","delete","then","onMessage","listener","warned","_classPrivateGetter2","_get_ms","response","event","matchMessageChannel","message","onClose","reset","_classPrivateFieldGet2","clear","exports","_this","protocol","location","url","window","host","getBasePath","_classPrivateFieldSet2","MessageService","type","hit","request","promise","resolve","identity","getIdentity","isSuccess","isFailed","send","set","system","topic","responsePayload","includes","RegExp","replace","_m","p1","p2","escapeRegExp","test"],"sources":["../../../src/websocket/MessageDispatcher.ts"],"sourcesContent":["import { getBasePath } from \"@next-core/runtime\";\nimport { escapeRegExp } from \"lodash\";\nimport {\n MessageService,\n type MessageListener,\n CloseListener,\n} from \"./MessageService.js\";\n\ninterface MessageResponse {\n event:\n | \"TOPIC.SUB_SUCCESS\"\n | \"TOPIC.SUB_FAILED\"\n | \"TOPIC.UNSUB_SUCCESS\"\n | \"TOPIC.UNSUB_FAILED\"\n | \"MESSAGE.PUSH\";\n payload: MessagePayload;\n}\n\ninterface MessagePayload {\n source?: string;\n system: string;\n topic: string;\n message?: unknown;\n}\n\nexport class MessageDispatcher {\n #_ms: MessageService | undefined;\n #memoizedChannels = {\n sub: new Map<string, Promise<unknown>>(),\n unsub: new Map<string, Promise<unknown>>(),\n };\n #channelPayloads = new Map<string, string>();\n\n get #ms(): MessageService {\n if (!this.#_ms) {\n const protocol = location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n const url = `${protocol}//${\n window.location.host\n }${getBasePath()}api/websocket_service/v1/ws`;\n this.#_ms = new MessageService(url);\n }\n return this.#_ms;\n }\n\n subscribe(channel: string, payload: MessagePayload): Promise<unknown> {\n const stringifiedPayload = JSON.stringify(payload);\n return this.#subOrUnsub(\"sub\", channel, payload, stringifiedPayload);\n }\n\n unsubscribe(channel: string): Promise<unknown> {\n const stringifiedPayload = this.#channelPayloads.get(channel);\n if (!stringifiedPayload) {\n const msg = `The message channel to unsubscribe \"${channel}\" is not found`;\n // eslint-disable-next-line no-console\n console.error(msg);\n return Promise.reject(new Error(msg));\n }\n\n const payload = JSON.parse(stringifiedPayload);\n const result = this.#subOrUnsub(\n \"unsub\",\n channel,\n payload,\n stringifiedPayload\n );\n\n this.#memoizedChannels.sub.delete(stringifiedPayload);\n\n result.then(() => {\n this.#channelPayloads.delete(channel);\n });\n\n return result;\n }\n\n onMessage(channel: string, listener: MessageListener): void {\n let stringifiedPayload = this.#channelPayloads.get(channel);\n let warned = false;\n\n this.#ms.onMessage<MessageResponse>((response) => {\n if (!stringifiedPayload) {\n stringifiedPayload = this.#channelPayloads.get(channel);\n }\n if (!stringifiedPayload) {\n if (!warned) {\n // eslint-disable-next-line no-console\n console.error(`Message channel: \"${channel}\" not found`);\n warned = true;\n }\n return;\n }\n if (\n response.event === \"MESSAGE.PUSH\" &&\n matchMessageChannel(stringifiedPayload, response.payload)\n ) {\n listener(response.payload.message);\n }\n });\n }\n\n onClose(listener: CloseListener): void {\n this.#ms.onClose(listener);\n }\n\n reset(): void {\n this.#memoizedChannels.sub.clear();\n this.#memoizedChannels.unsub.clear();\n this.#channelPayloads.clear();\n this.#_ms?.reset();\n }\n\n #subOrUnsub(\n type: \"sub\" | \"unsub\",\n channel: string,\n payload: MessagePayload,\n stringifiedPayload: string\n ): Promise<unknown> {\n const hit = this.#memoizedChannels[type].get(stringifiedPayload);\n if (hit) {\n return hit;\n }\n const request = {\n event: type === \"sub\" ? \"TOPIC.SUB\" : \"TOPIC.UNSUB\",\n payload,\n };\n const promise = new Promise((resolve, reject) => {\n const identity = getIdentity(payload);\n this.#ms.onMessage<MessageResponse>((response) => {\n const isSuccess =\n response.event ===\n (type === \"sub\" ? \"TOPIC.SUB_SUCCESS\" : \"TOPIC.UNSUB_SUCCESS\");\n const isFailed =\n response.event ===\n (type === \"sub\" ? \"TOPIC.SUB_FAILED\" : \"TOPIC.UNSUB_FAILED\");\n if (\n (isSuccess || isFailed) &&\n // Put this after event type checks, to prevent unnecessary\n // JSON stringify.\n identity === getIdentity(response.payload)\n ) {\n (isSuccess ? resolve : reject)(response);\n }\n });\n this.#ms.send(request);\n });\n\n if (type === \"sub\") {\n this.#channelPayloads.set(channel, stringifiedPayload);\n }\n this.#memoizedChannels[type].set(stringifiedPayload, promise);\n return promise;\n }\n}\n\nfunction getIdentity(payload: MessagePayload) {\n const { system, topic } = payload;\n return JSON.stringify({ system, topic });\n}\n\nfunction matchMessageChannel(\n stringifiedPayload: string,\n responsePayload: MessagePayload\n): boolean {\n const payload = JSON.parse(stringifiedPayload) as MessagePayload;\n return (\n payload.system === responsePayload.system &&\n // Exact match\n (payload.topic === responsePayload.topic ||\n // Wildcards match\n // For `ab.cd.*`:\n // - Matches `ab.cd.r` or `ab.cd.x.yz`\n // - DOES NOT match `ab.cd.x/yz` or `ab.x.cd` or `x.ab.cd.yz`\n (typeof payload.topic === \"string\" &&\n payload.topic.includes(\"*\") &&\n new RegExp(\n `^${payload.topic.replace(\n /([^*]*)\\*([^*]*)/g,\n (_m, p1, p2) => `${escapeRegExp(p1)}[^/]*${escapeRegExp(p2)}`\n )}$`\n ).test(responsePayload.topic)))\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,9 +7,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.MessageService = void 0;
|
|
8
8
|
var _classPrivateMethodInitSpec2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateMethodInitSpec"));
|
|
9
9
|
var _classPrivateFieldInitSpec2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldInitSpec"));
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
var _assertClassBrand2 = _interopRequireDefault(require("@babel/runtime/helpers/assertClassBrand"));
|
|
11
|
+
var _classPrivateFieldGet3 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldGet2"));
|
|
12
|
+
var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldSet2"));
|
|
13
13
|
const RETRY_TIMEOUT_UNIT = 1000;
|
|
14
14
|
const RETRY_LIMIT = 6;
|
|
15
15
|
var _url = /*#__PURE__*/new WeakMap();
|
|
@@ -30,36 +30,36 @@ class MessageService {
|
|
|
30
30
|
(0, _classPrivateFieldInitSpec2.default)(this, _closeListeners, new Set());
|
|
31
31
|
(0, _classPrivateFieldInitSpec2.default)(this, _retryCount, 0);
|
|
32
32
|
(0, _classPrivateFieldInitSpec2.default)(this, _closed, false);
|
|
33
|
-
|
|
33
|
+
(0, _classPrivateFieldSet2.default)(_url, this, url);
|
|
34
34
|
}
|
|
35
35
|
send(data) {
|
|
36
36
|
// Connect when data is sent for the first time
|
|
37
|
-
if (!
|
|
38
|
-
|
|
37
|
+
if (!(0, _classPrivateFieldGet3.default)(_ws, this)) {
|
|
38
|
+
(0, _classPrivateFieldSet2.default)(_ws, this, (0, _assertClassBrand2.default)(_MessageService_brand, this, _connect).call(this));
|
|
39
39
|
}
|
|
40
40
|
const stringifiedData = JSON.stringify(data);
|
|
41
|
-
if (
|
|
42
|
-
|
|
41
|
+
if ((0, _classPrivateFieldGet3.default)(_ws, this).readyState === WebSocket.OPEN) {
|
|
42
|
+
(0, _classPrivateFieldGet3.default)(_ws, this).send(stringifiedData);
|
|
43
43
|
} else {
|
|
44
|
-
|
|
44
|
+
(0, _classPrivateFieldGet3.default)(_queuedMessages, this).push(stringifiedData);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
onMessage(listener) {
|
|
48
|
-
|
|
48
|
+
(0, _classPrivateFieldGet3.default)(_messageListeners, this).add(listener);
|
|
49
49
|
}
|
|
50
50
|
onClose(listener) {
|
|
51
|
-
|
|
51
|
+
(0, _classPrivateFieldGet3.default)(_closeListeners, this).add(listener);
|
|
52
52
|
}
|
|
53
53
|
reset() {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
(0, _classPrivateFieldGet3.default)(_queuedMessages, this).length = 0;
|
|
55
|
+
(0, _classPrivateFieldGet3.default)(_messageListeners, this).clear();
|
|
56
|
+
(0, _classPrivateFieldGet3.default)(_closeListeners, this).clear();
|
|
57
57
|
}
|
|
58
58
|
close() {
|
|
59
59
|
var _classPrivateFieldGet2;
|
|
60
|
-
|
|
61
|
-
if (((_classPrivateFieldGet2 =
|
|
62
|
-
|
|
60
|
+
(0, _classPrivateFieldSet2.default)(_closed, this, true);
|
|
61
|
+
if (((_classPrivateFieldGet2 = (0, _classPrivateFieldGet3.default)(_ws, this)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.readyState) === WebSocket.OPEN) {
|
|
62
|
+
(0, _classPrivateFieldGet3.default)(_ws, this).close();
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
}
|
|
@@ -67,28 +67,28 @@ exports.MessageService = MessageService;
|
|
|
67
67
|
function _connect() {
|
|
68
68
|
// eslint-disable-next-line no-console
|
|
69
69
|
console.log("WebSocket connecting ...");
|
|
70
|
-
const ws = new WebSocket(
|
|
70
|
+
const ws = new WebSocket((0, _classPrivateFieldGet3.default)(_url, this));
|
|
71
71
|
ws.addEventListener("open", e => {
|
|
72
72
|
// eslint-disable-next-line no-console
|
|
73
73
|
console.log("WebSocket open:", e);
|
|
74
|
-
|
|
75
|
-
for (const msg of
|
|
74
|
+
(0, _classPrivateFieldSet2.default)(_retryCount, this, 0);
|
|
75
|
+
for (const msg of (0, _classPrivateFieldGet3.default)(_queuedMessages, this)) {
|
|
76
76
|
ws.send(msg);
|
|
77
77
|
}
|
|
78
|
-
|
|
78
|
+
(0, _classPrivateFieldGet3.default)(_queuedMessages, this).length = 0;
|
|
79
79
|
});
|
|
80
80
|
ws.addEventListener("close", e => {
|
|
81
|
-
if (
|
|
81
|
+
if ((0, _classPrivateFieldGet3.default)(_closed, this)) {
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
84
84
|
// eslint-disable-next-line no-console
|
|
85
85
|
console.log("WebSocket close:", e);
|
|
86
|
-
for (const listener of
|
|
86
|
+
for (const listener of (0, _classPrivateFieldGet3.default)(_closeListeners, this)) {
|
|
87
87
|
listener();
|
|
88
88
|
}
|
|
89
89
|
// Error code 1000 means that the connection was closed normally.
|
|
90
90
|
if (e.code !== 1000) {
|
|
91
|
-
|
|
91
|
+
(0, _assertClassBrand2.default)(_MessageService_brand, this, _reconnect).call(this);
|
|
92
92
|
}
|
|
93
93
|
});
|
|
94
94
|
ws.addEventListener("error", e => {
|
|
@@ -99,7 +99,7 @@ function _connect() {
|
|
|
99
99
|
});
|
|
100
100
|
ws.addEventListener("message", e => {
|
|
101
101
|
const response = JSON.parse(e.data);
|
|
102
|
-
for (const listener of
|
|
102
|
+
for (const listener of (0, _classPrivateFieldGet3.default)(_messageListeners, this)) {
|
|
103
103
|
listener(response);
|
|
104
104
|
}
|
|
105
105
|
});
|
|
@@ -107,19 +107,19 @@ function _connect() {
|
|
|
107
107
|
}
|
|
108
108
|
function _reconnect() {
|
|
109
109
|
// istanbul ignore next: currently can't mock this
|
|
110
|
-
if (
|
|
110
|
+
if ((0, _classPrivateFieldGet3.default)(_retryCount, this) >= RETRY_LIMIT) {
|
|
111
111
|
// eslint-disable-next-line no-console
|
|
112
112
|
console.error("WebSocket connect retry limit exceeded");
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
115
|
// Double the timeout for each retry
|
|
116
|
-
const delay = Math.pow(2,
|
|
116
|
+
const delay = Math.pow(2, (0, _classPrivateFieldGet3.default)(_retryCount, this)) * RETRY_TIMEOUT_UNIT;
|
|
117
117
|
// eslint-disable-next-line no-console
|
|
118
118
|
console.log("WebSocket will reconnect after %d seconds", delay / 1000);
|
|
119
119
|
setTimeout(() => {
|
|
120
120
|
var _this$retryCount, _this$retryCount2;
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
(0, _classPrivateFieldSet2.default)(_retryCount, this, (_this$retryCount = (0, _classPrivateFieldGet3.default)(_retryCount, this), _this$retryCount2 = _this$retryCount++, _this$retryCount)), _this$retryCount2;
|
|
122
|
+
(0, _classPrivateFieldSet2.default)(_ws, this, (0, _assertClassBrand2.default)(_MessageService_brand, this, _connect).call(this));
|
|
123
123
|
}, delay);
|
|
124
124
|
}
|
|
125
125
|
//# sourceMappingURL=MessageService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageService.js","names":["RETRY_TIMEOUT_UNIT","RETRY_LIMIT","_url","WeakMap","_ws","_queuedMessages","_messageListeners","_closeListeners","_retryCount","_closed","_MessageService_brand","WeakSet","MessageService","constructor","url","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","Set","
|
|
1
|
+
{"version":3,"file":"MessageService.js","names":["RETRY_TIMEOUT_UNIT","RETRY_LIMIT","_url","WeakMap","_ws","_queuedMessages","_messageListeners","_closeListeners","_retryCount","_closed","_MessageService_brand","WeakSet","MessageService","constructor","url","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","Set","_classPrivateFieldSet2","send","data","_classPrivateFieldGet3","_assertClassBrand2","_connect","call","stringifiedData","JSON","stringify","readyState","WebSocket","OPEN","push","onMessage","listener","add","onClose","reset","length","clear","close","_classPrivateFieldGet2","exports","console","log","ws","addEventListener","e","msg","code","_reconnect","error","response","parse","delay","Math","pow","setTimeout","_this$retryCount","_this$retryCount2"],"sources":["../../../src/websocket/MessageService.ts"],"sourcesContent":["export type MessageListener<T = unknown> = (response: T) => void;\nexport type CloseListener = () => void;\n\nconst RETRY_TIMEOUT_UNIT = 1000;\nconst RETRY_LIMIT = 6;\n\nexport class MessageService {\n #url: string;\n #ws: WebSocket | undefined;\n #queuedMessages: string[] = [];\n #messageListeners = new Set<MessageListener>();\n #closeListeners = new Set<CloseListener>();\n #retryCount = 0;\n #closed = false;\n\n constructor(url: string) {\n this.#url = url;\n }\n\n #connect(): WebSocket {\n // eslint-disable-next-line no-console\n console.log(\"WebSocket connecting ...\");\n const ws = new WebSocket(this.#url);\n ws.addEventListener(\"open\", (e) => {\n // eslint-disable-next-line no-console\n console.log(\"WebSocket open:\", e);\n this.#retryCount = 0;\n for (const msg of this.#queuedMessages) {\n ws.send(msg);\n }\n this.#queuedMessages.length = 0;\n });\n ws.addEventListener(\"close\", (e) => {\n if (this.#closed) {\n return;\n }\n // eslint-disable-next-line no-console\n console.log(\"WebSocket close:\", e);\n for (const listener of this.#closeListeners) {\n listener();\n }\n // Error code 1000 means that the connection was closed normally.\n if (e.code !== 1000) {\n this.#reconnect();\n }\n });\n ws.addEventListener(\"error\", (e) => {\n // No need to reconnect in error event listener,\n // there will always be a close event along with the error event.\n // eslint-disable-next-line no-console\n console.error(\"WebSocket error:\", e);\n });\n ws.addEventListener(\"message\", (e: MessageEvent<string>) => {\n const response = JSON.parse(e.data);\n for (const listener of this.#messageListeners) {\n listener(response);\n }\n });\n return ws;\n }\n\n #reconnect() {\n // istanbul ignore next: currently can't mock this\n if (this.#retryCount >= RETRY_LIMIT) {\n // eslint-disable-next-line no-console\n console.error(\"WebSocket connect retry limit exceeded\");\n return;\n }\n // Double the timeout for each retry\n const delay = Math.pow(2, this.#retryCount) * RETRY_TIMEOUT_UNIT;\n // eslint-disable-next-line no-console\n console.log(\"WebSocket will reconnect after %d seconds\", delay / 1000);\n setTimeout(() => {\n this.#retryCount++;\n this.#ws = this.#connect();\n }, delay);\n }\n\n send(data: unknown): void {\n // Connect when data is sent for the first time\n if (!this.#ws) {\n this.#ws = this.#connect();\n }\n const stringifiedData = JSON.stringify(data);\n if (this.#ws.readyState === WebSocket.OPEN) {\n this.#ws.send(stringifiedData);\n } else {\n this.#queuedMessages.push(stringifiedData);\n }\n }\n\n onMessage<T = unknown>(listener: MessageListener<T>) {\n this.#messageListeners.add(listener as MessageListener<unknown>);\n }\n\n onClose(listener: CloseListener) {\n this.#closeListeners.add(listener);\n }\n\n reset() {\n this.#queuedMessages.length = 0;\n this.#messageListeners.clear();\n this.#closeListeners.clear();\n }\n\n close() {\n this.#closed = true;\n if (this.#ws?.readyState === WebSocket.OPEN) {\n this.#ws.close();\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.js","names":["createTransport","events","initialized","transport","pageState","isFirstPageView","stashedApiMetrics","initialize","api","options","arguments","length","undefined","sendOnExit","createPageView","finishPageView","metric","pageId","generateUUID","lt","route","push","_objectSpread","apiCount","maxApiTimeCost","Math","max","map","duration","size","filter","reduce","prev","current","item","emit","earlyFinishPageView","pushApiMetric","type","url","URL","createObjectURL","Blob","uuid","substring","lastIndexOf","revokeObjectURL"],"sources":["../../../src/analytics/analytics.ts"],"sourcesContent":["import type {\n ApiMetric,\n ApiPageState,\n PartialPageViewMetric,\n} from \"./interfaces.js\";\nimport { createTransport, events, TransportOptions } from \"./transport.js\";\n\nlet initialized = false;\nlet transport: ReturnType<typeof createTransport>;\nlet pageState: ApiPageState | null = null;\nlet isFirstPageView = true;\nconst stashedApiMetrics: ApiMetric[] = [];\n\ntype Options = Partial<TransportOptions>;\n\nexport function initialize(api: string, options: Options = {}) {\n if (initialized) {\n return;\n }\n initialized = true;\n if (!transport) {\n transport = createTransport(api, options);\n transport.sendOnExit();\n }\n}\n\nexport function createPageView() {\n stashedApiMetrics.length = 0;\n pageState = null;\n}\n\nexport function finishPageView(metric: PartialPageViewMetric) {\n const pageId = generateUUID();\n const { lt, route } = metric;\n pageState = { lt, route, pageId };\n\n events.push({\n ...metric,\n pageId,\n apiCount: stashedApiMetrics.length,\n maxApiTimeCost: Math.max(\n 0,\n ...stashedApiMetrics.map((api) => api.duration)\n ),\n size: stashedApiMetrics\n .map((api) => api.size)\n .filter((size) => size > 0)\n .reduce((prev, current) => prev + current, 0),\n });\n\n for (const item of stashedApiMetrics) {\n events.push({\n ...item,\n ...pageState,\n });\n }\n stashedApiMetrics.length = 0;\n\n transport.emit();\n}\n\nexport function earlyFinishPageView() {\n events.push(...stashedApiMetrics);\n stashedApiMetrics.length = 0;\n}\n\nexport function pushApiMetric(metric: ApiMetric) {\n if (pageState) {\n events.push({\n ...metric,\n type: \"apiRequest\",\n ...pageState,\n });\n } else {\n stashedApiMetrics.push(metric);\n }\n}\n\n// Ref https://medium.com/teads-engineering/generating-uuids-at-scale-on-the-web-2877f529d2a2\nfunction generateUUID() {\n const url = URL.createObjectURL(new Blob([]));\n let uuid = url.substring(url.lastIndexOf(\"/\") + 1);\n URL.revokeObjectURL(url);\n // 第一次渲染加上特殊标记\n if (isFirstPageView) {\n uuid = \"88-\" + uuid;\n isFirstPageView = false;\n }\n return uuid;\n}\n"],"mappings":";AAKA,SAASA,eAAe,EAAEC,MAAM,QAA0B,gBAAgB;AAE1E,IAAIC,WAAW,GAAG,KAAK;AACvB,IAAIC,SAA6C;AACjD,IAAIC,SAA8B,GAAG,IAAI;AACzC,IAAIC,eAAe,GAAG,IAAI;AAC1B,IAAMC,iBAA8B,GAAG,EAAE;AAIzC,OAAO,SAASC,UAAUA,CAACC,GAAW,EAAyB;EAAA,IAAvBC,OAAgB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAC3D,IAAIR,WAAW,EAAE;IACf;EACF;EACAA,WAAW,GAAG,IAAI;EAClB,IAAI,CAACC,SAAS,EAAE;IACdA,SAAS,GAAGH,eAAe,CAACQ,GAAG,EAAEC,OAAO,CAAC;IACzCN,SAAS,CAACU,UAAU,CAAC,CAAC;EACxB;AACF;AAEA,OAAO,SAASC,cAAcA,CAAA,EAAG;EAC/BR,iBAAiB,CAACK,MAAM,GAAG,CAAC;EAC5BP,SAAS,GAAG,IAAI;AAClB;AAEA,OAAO,SAASW,cAAcA,CAACC,MAA6B,EAAE;EAC5D,IAAMC,MAAM,GAAGC,YAAY,CAAC,CAAC;EAC7B,IAAM;IAAEC,EAAE;IAAEC;EAAM,CAAC,GAAGJ,MAAM;EAC5BZ,SAAS,GAAG;IAAEe,EAAE;IAAEC,KAAK;IAAEH;EAAO,CAAC;EAEjChB,MAAM,CAACoB,IAAI,CAAAC,aAAA,CAAAA,aAAA,KACNN,MAAM;IACTC,MAAM;IACNM,QAAQ,EAAEjB,iBAAiB,CAACK,MAAM;IAClCa,cAAc,EAAEC,IAAI,CAACC,GAAG,CACtB,CAAC,EACD,GAAGpB,iBAAiB,CAACqB,GAAG,CAAEnB,GAAG,IAAKA,GAAG,CAACoB,QAAQ,CAChD,CAAC;IACDC,IAAI,EAAEvB,iBAAiB,CACpBqB,GAAG,CAAEnB,GAAG,IAAKA,GAAG,CAACqB,IAAI,CAAC,CACtBC,MAAM,CAAED,IAAI,IAAKA,IAAI,GAAG,CAAC,CAAC,CAC1BE,MAAM,CAAC,CAACC,IAAI,EAAEC,OAAO,KAAKD,IAAI,GAAGC,OAAO,EAAE,CAAC;EAAC,EAChD,CAAC;EAEF,KAAK,IAAMC,IAAI,IAAI5B,iBAAiB,EAAE;IACpCL,MAAM,CAACoB,IAAI,CAAAC,aAAA,CAAAA,aAAA,KACNY,IAAI,GACJ9B,SAAS,CACb,CAAC;EACJ;EACAE,iBAAiB,CAACK,MAAM,GAAG,CAAC;EAE5BR,SAAS,CAACgC,IAAI,CAAC,CAAC;AAClB;AAEA,OAAO,SAASC,mBAAmBA,CAAA,EAAG;EACpCnC,MAAM,CAACoB,IAAI,CAAC,GAAGf,iBAAiB,CAAC;EACjCA,iBAAiB,CAACK,MAAM,GAAG,CAAC;AAC9B;AAEA,OAAO,SAAS0B,aAAaA,CAACrB,MAAiB,EAAE;EAC/C,IAAIZ,SAAS,EAAE;IACbH,MAAM,CAACoB,IAAI,CAAAC,aAAA,CAAAA,aAAA,KACNN,MAAM;MACTsB,IAAI,EAAE;IAAY,GACflC,SAAS,CACb,CAAC;EACJ,CAAC,MAAM;IACLE,iBAAiB,CAACe,IAAI,CAACL,MAAM,CAAC;EAChC;AACF;;AAEA;AACA,SAASE,YAAYA,CAAA,EAAG;EACtB,IAAMqB,GAAG,GAAGC,GAAG,CAACC,eAAe,CAAC,IAAIC,IAAI,CAAC,EAAE,CAAC,CAAC;EAC7C,IAAIC,IAAI,GAAGJ,GAAG,CAACK,SAAS,CAACL,GAAG,CAACM,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAClDL,GAAG,CAACM,eAAe,CAACP,GAAG,CAAC;EACxB;EACA,IAAIlC,eAAe,EAAE;IACnBsC,IAAI,GAAG,KAAK,GAAGA,IAAI;IACnBtC,eAAe,GAAG,KAAK;EACzB;EACA,OAAOsC,IAAI;AACb"}
|
|
1
|
+
{"version":3,"file":"analytics.js","names":["createTransport","events","initialized","transport","pageState","isFirstPageView","stashedApiMetrics","initialize","api","options","arguments","length","undefined","sendOnExit","createPageView","finishPageView","metric","pageId","generateUUID","lt","route","push","_objectSpread","apiCount","maxApiTimeCost","Math","max","map","duration","size","filter","reduce","prev","current","item","emit","earlyFinishPageView","pushApiMetric","type","url","URL","createObjectURL","Blob","uuid","substring","lastIndexOf","revokeObjectURL"],"sources":["../../../src/analytics/analytics.ts"],"sourcesContent":["import type {\n ApiMetric,\n ApiPageState,\n PartialPageViewMetric,\n} from \"./interfaces.js\";\nimport { createTransport, events, TransportOptions } from \"./transport.js\";\n\nlet initialized = false;\nlet transport: ReturnType<typeof createTransport>;\nlet pageState: ApiPageState | null = null;\nlet isFirstPageView = true;\nconst stashedApiMetrics: ApiMetric[] = [];\n\ntype Options = Partial<TransportOptions>;\n\nexport function initialize(api: string, options: Options = {}) {\n if (initialized) {\n return;\n }\n initialized = true;\n if (!transport) {\n transport = createTransport(api, options);\n transport.sendOnExit();\n }\n}\n\nexport function createPageView() {\n stashedApiMetrics.length = 0;\n pageState = null;\n}\n\nexport function finishPageView(metric: PartialPageViewMetric) {\n const pageId = generateUUID();\n const { lt, route } = metric;\n pageState = { lt, route, pageId };\n\n events.push({\n ...metric,\n pageId,\n apiCount: stashedApiMetrics.length,\n maxApiTimeCost: Math.max(\n 0,\n ...stashedApiMetrics.map((api) => api.duration)\n ),\n size: stashedApiMetrics\n .map((api) => api.size)\n .filter((size) => size > 0)\n .reduce((prev, current) => prev + current, 0),\n });\n\n for (const item of stashedApiMetrics) {\n events.push({\n ...item,\n ...pageState,\n });\n }\n stashedApiMetrics.length = 0;\n\n transport.emit();\n}\n\nexport function earlyFinishPageView() {\n events.push(...stashedApiMetrics);\n stashedApiMetrics.length = 0;\n}\n\nexport function pushApiMetric(metric: ApiMetric) {\n if (pageState) {\n events.push({\n ...metric,\n type: \"apiRequest\",\n ...pageState,\n });\n } else {\n stashedApiMetrics.push(metric);\n }\n}\n\n// Ref https://medium.com/teads-engineering/generating-uuids-at-scale-on-the-web-2877f529d2a2\nfunction generateUUID() {\n const url = URL.createObjectURL(new Blob([]));\n let uuid = url.substring(url.lastIndexOf(\"/\") + 1);\n URL.revokeObjectURL(url);\n // 第一次渲染加上特殊标记\n if (isFirstPageView) {\n uuid = \"88-\" + uuid;\n isFirstPageView = false;\n }\n return uuid;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","names":["HttpResponseError","HttpParseError","HttpAbortError","isObject","getAuth","pushApiMetric","symbolHttpAnalytics","Symbol","onRequest","config","perfStartTime","Math","round","performance","now","st","Date","time","onResponse","response","onResponseOrError","onResponseError","error","hasError","responseOrError","perfEndTime","et","meta","url","_code","_message","_traceId","userInstanceId","uid","username","code","message","traceId","size","status","headers","data","isHttpResponseError","responseJson","Headers","get","_ver","page","location","href","duration","api","type","msg","Number","Promise","reject"],"sources":["../../../src/analytics/http.ts"],"sourcesContent":["import {\n HttpResponseError,\n HttpParseError,\n HttpAbortError,\n type HttpError,\n type HttpRequestConfig,\n type HttpResponse,\n} from \"@next-core/http\";\nimport { isObject } from \"@next-core/utils/general\";\nimport { getAuth } from \"../auth.js\";\nimport type { HttpAnalyticsMeta } from \"./interfaces.js\";\nimport { pushApiMetric } from \"./analytics.js\";\n\nconst symbolHttpAnalytics = Symbol(\"HttpAnalytics\");\n\ninterface HttpRequestConfigWithAnalyticsMeta extends HttpRequestConfig {\n [symbolHttpAnalytics]?: HttpAnalyticsMeta;\n}\n\nexport function onRequest(\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpRequestConfig {\n const perfStartTime = Math.round(performance.now());\n const st = Date.now();\n config[symbolHttpAnalytics] = {\n st,\n time: Math.round(st / 1000),\n perfStartTime,\n };\n return config;\n}\n\nexport function onResponse(\n response: HttpResponse,\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpResponse {\n return onResponseOrError(false, response, config);\n}\n\nexport function onResponseError(\n error: HttpError,\n config: HttpRequestConfigWithAnalyticsMeta\n): Promise<HttpError> {\n return onResponseOrError(true, error, config);\n}\n\nfunction onResponseOrError(\n hasError: false,\n response: HttpResponse,\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpResponse;\nfunction onResponseOrError(\n hasError: true,\n error: HttpError,\n config: HttpRequestConfigWithAnalyticsMeta\n): Promise<HttpError>;\nfunction onResponseOrError(\n hasError: boolean,\n responseOrError: HttpResponse | HttpError,\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpResponse | Promise<HttpError> {\n const perfEndTime = Math.round(performance.now());\n const et = Date.now();\n const { [symbolHttpAnalytics]: meta, url } = config;\n if (meta && !(hasError && responseOrError instanceof HttpAbortError)) {\n delete config[symbolHttpAnalytics];\n const { st, time, perfStartTime } = meta;\n const { userInstanceId: uid, username } = getAuth();\n\n let code: number | undefined;\n let message: string | undefined;\n let traceId: string | null | undefined;\n let size: string | null | undefined;\n let status: number | undefined;\n\n let headers: Headers | undefined;\n let data: unknown;\n\n if (hasError) {\n const isHttpResponseError = responseOrError instanceof HttpResponseError;\n if (isHttpResponseError || responseOrError instanceof HttpParseError) {\n ({ status, headers } = responseOrError.response);\n if (isHttpResponseError) {\n data = responseOrError.responseJson;\n }\n }\n } else {\n ({ status, data, headers } = responseOrError as HttpResponse);\n }\n\n if (isObject(data)) {\n ({ code, message } = data as { code?: number; message?: string });\n }\n\n if (headers instanceof Headers) {\n traceId = headers.get(\"x-b3-traceid\");\n size = headers.get(\"content-length\");\n }\n\n pushApiMetric({\n st,\n _ver: st,\n uid,\n username,\n time,\n et,\n page: location.href,\n duration: perfEndTime - perfStartTime,\n api: url,\n type: \"api\",\n code: code ?? -1,\n msg: message ?? \"\",\n status,\n traceId: traceId ?? \"\",\n size: size ? Number(size) : -1,\n });\n }\n\n return hasError\n ? Promise.reject(responseOrError)\n : (responseOrError as HttpResponse);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","names":["HttpResponseError","HttpParseError","HttpAbortError","isObject","getAuth","pushApiMetric","symbolHttpAnalytics","Symbol","onRequest","config","perfStartTime","Math","round","performance","now","st","Date","time","onResponse","response","onResponseOrError","onResponseError","error","hasError","responseOrError","perfEndTime","et","meta","url","_code","_message","_traceId","userInstanceId","uid","username","code","message","traceId","size","status","headers","data","isHttpResponseError","responseJson","Headers","get","_ver","page","location","href","duration","api","type","msg","Number","Promise","reject"],"sources":["../../../src/analytics/http.ts"],"sourcesContent":["import {\n HttpResponseError,\n HttpParseError,\n HttpAbortError,\n type HttpError,\n type HttpRequestConfig,\n type HttpResponse,\n} from \"@next-core/http\";\nimport { isObject } from \"@next-core/utils/general\";\nimport { getAuth } from \"../auth.js\";\nimport type { HttpAnalyticsMeta } from \"./interfaces.js\";\nimport { pushApiMetric } from \"./analytics.js\";\n\nconst symbolHttpAnalytics = Symbol(\"HttpAnalytics\");\n\ninterface HttpRequestConfigWithAnalyticsMeta extends HttpRequestConfig {\n [symbolHttpAnalytics]?: HttpAnalyticsMeta;\n}\n\nexport function onRequest(\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpRequestConfig {\n const perfStartTime = Math.round(performance.now());\n const st = Date.now();\n config[symbolHttpAnalytics] = {\n st,\n time: Math.round(st / 1000),\n perfStartTime,\n };\n return config;\n}\n\nexport function onResponse(\n response: HttpResponse,\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpResponse {\n return onResponseOrError(false, response, config);\n}\n\nexport function onResponseError(\n error: HttpError,\n config: HttpRequestConfigWithAnalyticsMeta\n): Promise<HttpError> {\n return onResponseOrError(true, error, config);\n}\n\nfunction onResponseOrError(\n hasError: false,\n response: HttpResponse,\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpResponse;\nfunction onResponseOrError(\n hasError: true,\n error: HttpError,\n config: HttpRequestConfigWithAnalyticsMeta\n): Promise<HttpError>;\nfunction onResponseOrError(\n hasError: boolean,\n responseOrError: HttpResponse | HttpError,\n config: HttpRequestConfigWithAnalyticsMeta\n): HttpResponse | Promise<HttpError> {\n const perfEndTime = Math.round(performance.now());\n const et = Date.now();\n const { [symbolHttpAnalytics]: meta, url } = config;\n if (meta && !(hasError && responseOrError instanceof HttpAbortError)) {\n delete config[symbolHttpAnalytics];\n const { st, time, perfStartTime } = meta;\n const { userInstanceId: uid, username } = getAuth();\n\n let code: number | undefined;\n let message: string | undefined;\n let traceId: string | null | undefined;\n let size: string | null | undefined;\n let status: number | undefined;\n\n let headers: Headers | undefined;\n let data: unknown;\n\n if (hasError) {\n const isHttpResponseError = responseOrError instanceof HttpResponseError;\n if (isHttpResponseError || responseOrError instanceof HttpParseError) {\n ({ status, headers } = responseOrError.response);\n if (isHttpResponseError) {\n data = responseOrError.responseJson;\n }\n }\n } else {\n ({ status, data, headers } = responseOrError as HttpResponse);\n }\n\n if (isObject(data)) {\n ({ code, message } = data as { code?: number; message?: string });\n }\n\n if (headers instanceof Headers) {\n traceId = headers.get(\"x-b3-traceid\");\n size = headers.get(\"content-length\");\n }\n\n pushApiMetric({\n st,\n _ver: st,\n uid,\n username,\n time,\n et,\n page: location.href,\n duration: perfEndTime - perfStartTime,\n api: url,\n type: \"api\",\n code: code ?? -1,\n msg: message ?? \"\",\n status,\n traceId: traceId ?? \"\",\n size: size ? Number(size) : -1,\n });\n }\n\n return hasError\n ? Promise.reject(responseOrError)\n : (responseOrError as HttpResponse);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["http","pageView","initialize"],"sources":["../../../src/analytics/index.ts"],"sourcesContent":["import * as http from \"./http.js\";\nimport * as pageView from \"./pageView.js\";\nimport { initialize } from \"./analytics.js\";\n\nexport { initialize, http, pageView };\n"],"mappings":"AAAA,OAAO,KAAKA,IAAI,MAAM,WAAW;AACjC,OAAO,KAAKC,QAAQ,MAAM,eAAe;AACzC,SAASC,UAAU,QAAQ,gBAAgB;AAE3C,SAASA,UAAU,EAAEF,IAAI,EAAEC,QAAQ"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["http","pageView","initialize"],"sources":["../../../src/analytics/index.ts"],"sourcesContent":["import * as http from \"./http.js\";\nimport * as pageView from \"./pageView.js\";\nimport { initialize } from \"./analytics.js\";\n\nexport { initialize, http, pageView };\n"],"mappings":"AAAA,OAAO,KAAKA,IAAI,MAAM,WAAW;AACjC,OAAO,KAAKC,QAAQ,MAAM,eAAe;AACzC,SAASC,UAAU,QAAQ,gBAAgB;AAE3C,SAASA,UAAU,EAAEF,IAAI,EAAEC,QAAQ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/analytics/interfaces.ts"],"sourcesContent":["export interface HttpAnalyticsMeta {\n st: number;\n time: number;\n perfStartTime: number;\n}\n\nexport interface ApiMetric extends BaseMetric {\n type: \"api\" | \"apiRequest\";\n uid: string | undefined;\n duration: number;\n api: string;\n code: number;\n status: number | undefined;\n msg: string;\n traceId: string;\n}\n\nexport interface PageViewMetric extends BaseMetric {\n type: \"page\";\n apiCount: number;\n maxApiTimeCost: number;\n pageTitle: string | undefined;\n lt: number;\n route: string | undefined;\n pageId: string;\n}\n\nexport type PartialPageViewMetric = Omit<\n PageViewMetric,\n \"apiCount\" | \"maxApiTimeCost\" | \"size\" | \"pageId\"\n>;\n\nexport type ApiPageState = Pick<PageViewMetric, \"lt\" | \"route\" | \"pageId\">;\n\nexport interface BaseMetric {\n type: string;\n time: number;\n st: number;\n et: number;\n _ver: number;\n username: string | undefined;\n page: string;\n size: number;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/analytics/interfaces.ts"],"sourcesContent":["export interface HttpAnalyticsMeta {\n st: number;\n time: number;\n perfStartTime: number;\n}\n\nexport interface ApiMetric extends BaseMetric {\n type: \"api\" | \"apiRequest\";\n uid: string | undefined;\n duration: number;\n api: string;\n code: number;\n status: number | undefined;\n msg: string;\n traceId: string;\n}\n\nexport interface PageViewMetric extends BaseMetric {\n type: \"page\";\n apiCount: number;\n maxApiTimeCost: number;\n pageTitle: string | undefined;\n lt: number;\n route: string | undefined;\n pageId: string;\n}\n\nexport type PartialPageViewMetric = Omit<\n PageViewMetric,\n \"apiCount\" | \"maxApiTimeCost\" | \"size\" | \"pageId\"\n>;\n\nexport type ApiPageState = Pick<PageViewMetric, \"lt\" | \"route\" | \"pageId\">;\n\nexport interface BaseMetric {\n type: string;\n time: number;\n st: number;\n et: number;\n _ver: number;\n username: string | undefined;\n page: string;\n size: number;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageView.js","names":["createPageView","earlyFinishPageView","finishPageView","getAuth","create","perfStartTime","Math","round","performance","now","startTime","Date","finish","_ref","status","path","pageTitle","renderTime","endTime","username","type","page","location","href","_ver","time","st","et","lt","route","window","dispatchEvent","CustomEvent","detail"],"sources":["../../../src/analytics/pageView.ts"],"sourcesContent":["import type { PageViewInfo } from \"@next-core/runtime\";\nimport {\n createPageView,\n earlyFinishPageView,\n finishPageView,\n} from \"./analytics.js\";\nimport { getAuth } from \"../auth.js\";\n\nexport function create() {\n const perfStartTime = Math.round(performance.now());\n const startTime = Date.now();\n createPageView();\n\n return function finish({ status, path, pageTitle }: PageViewInfo) {\n if (status !== \"ok\") {\n earlyFinishPageView();\n return;\n }\n\n const renderTime = Math.round(performance.now()) - perfStartTime;\n const endTime = Date.now();\n const { username } = getAuth();\n\n finishPageView({\n type: \"page\",\n page: location.href,\n _ver: startTime,\n time: Math.round(startTime / 1000),\n st: startTime,\n et: endTime,\n lt: renderTime,\n pageTitle,\n username,\n route: path,\n });\n\n // For bricks which would take actions with render time.\n window.dispatchEvent(\n new CustomEvent(\"route.render\", {\n detail: {\n renderTime,\n },\n })\n );\n };\n}\n"],"mappings":"AACA,SACEA,cAAc,EACdC,mBAAmB,EACnBC,cAAc,QACT,gBAAgB;AACvB,SAASC,OAAO,QAAQ,YAAY;AAEpC,OAAO,SAASC,MAAMA,CAAA,EAAG;EACvB,IAAMC,aAAa,GAAGC,IAAI,CAACC,KAAK,CAACC,WAAW,CAACC,GAAG,CAAC,CAAC,CAAC;EACnD,IAAMC,SAAS,GAAGC,IAAI,CAACF,GAAG,CAAC,CAAC;EAC5BT,cAAc,CAAC,CAAC;EAEhB,OAAO,SAASY,MAAMA,CAAAC,IAAA,EAA4C;IAAA,IAA3C;MAAEC,MAAM;MAAEC,IAAI;MAAEC;IAAwB,CAAC,GAAAH,IAAA;IAC9D,IAAIC,MAAM,KAAK,IAAI,EAAE;MACnBb,mBAAmB,CAAC,CAAC;MACrB;IACF;IAEA,IAAMgB,UAAU,GAAGX,IAAI,CAACC,KAAK,CAACC,WAAW,CAACC,GAAG,CAAC,CAAC,CAAC,GAAGJ,aAAa;IAChE,IAAMa,OAAO,GAAGP,IAAI,CAACF,GAAG,CAAC,CAAC;IAC1B,IAAM;MAAEU;IAAS,CAAC,GAAGhB,OAAO,CAAC,CAAC;IAE9BD,cAAc,CAAC;MACbkB,IAAI,EAAE,MAAM;MACZC,IAAI,EAAEC,QAAQ,CAACC,IAAI;MACnBC,IAAI,EAAEd,SAAS;MACfe,IAAI,EAAEnB,IAAI,CAACC,KAAK,CAACG,SAAS,GAAG,IAAI,CAAC;MAClCgB,EAAE,EAAEhB,SAAS;MACbiB,EAAE,EAAET,OAAO;MACXU,EAAE,EAAEX,UAAU;MACdD,SAAS;MACTG,QAAQ;MACRU,KAAK,EAAEd;IACT,CAAC,CAAC;;IAEF;IACAe,MAAM,CAACC,aAAa,CAClB,IAAIC,WAAW,CAAC,cAAc,EAAE;MAC9BC,MAAM,EAAE;QACNhB;MACF;IACF,CAAC,CACH,CAAC;EACH,CAAC;AACH"}
|
|
1
|
+
{"version":3,"file":"pageView.js","names":["createPageView","earlyFinishPageView","finishPageView","getAuth","create","perfStartTime","Math","round","performance","now","startTime","Date","finish","_ref","status","path","pageTitle","renderTime","endTime","username","type","page","location","href","_ver","time","st","et","lt","route","window","dispatchEvent","CustomEvent","detail"],"sources":["../../../src/analytics/pageView.ts"],"sourcesContent":["import type { PageViewInfo } from \"@next-core/runtime\";\nimport {\n createPageView,\n earlyFinishPageView,\n finishPageView,\n} from \"./analytics.js\";\nimport { getAuth } from \"../auth.js\";\n\nexport function create() {\n const perfStartTime = Math.round(performance.now());\n const startTime = Date.now();\n createPageView();\n\n return function finish({ status, path, pageTitle }: PageViewInfo) {\n if (status !== \"ok\") {\n earlyFinishPageView();\n return;\n }\n\n const renderTime = Math.round(performance.now()) - perfStartTime;\n const endTime = Date.now();\n const { username } = getAuth();\n\n finishPageView({\n type: \"page\",\n page: location.href,\n _ver: startTime,\n time: Math.round(startTime / 1000),\n st: startTime,\n et: endTime,\n lt: renderTime,\n pageTitle,\n username,\n route: path,\n });\n\n // For bricks which would take actions with render time.\n window.dispatchEvent(\n new CustomEvent(\"route.render\", {\n detail: {\n renderTime,\n },\n })\n );\n };\n}\n"],"mappings":"AACA,SACEA,cAAc,EACdC,mBAAmB,EACnBC,cAAc,QACT,gBAAgB;AACvB,SAASC,OAAO,QAAQ,YAAY;AAEpC,OAAO,SAASC,MAAMA,CAAA,EAAG;EACvB,IAAMC,aAAa,GAAGC,IAAI,CAACC,KAAK,CAACC,WAAW,CAACC,GAAG,CAAC,CAAC,CAAC;EACnD,IAAMC,SAAS,GAAGC,IAAI,CAACF,GAAG,CAAC,CAAC;EAC5BT,cAAc,CAAC,CAAC;EAEhB,OAAO,SAASY,MAAMA,CAAAC,IAAA,EAA4C;IAAA,IAA3C;MAAEC,MAAM;MAAEC,IAAI;MAAEC;IAAwB,CAAC,GAAAH,IAAA;IAC9D,IAAIC,MAAM,KAAK,IAAI,EAAE;MACnBb,mBAAmB,CAAC,CAAC;MACrB;IACF;IAEA,IAAMgB,UAAU,GAAGX,IAAI,CAACC,KAAK,CAACC,WAAW,CAACC,GAAG,CAAC,CAAC,CAAC,GAAGJ,aAAa;IAChE,IAAMa,OAAO,GAAGP,IAAI,CAACF,GAAG,CAAC,CAAC;IAC1B,IAAM;MAAEU;IAAS,CAAC,GAAGhB,OAAO,CAAC,CAAC;IAE9BD,cAAc,CAAC;MACbkB,IAAI,EAAE,MAAM;MACZC,IAAI,EAAEC,QAAQ,CAACC,IAAI;MACnBC,IAAI,EAAEd,SAAS;MACfe,IAAI,EAAEnB,IAAI,CAACC,KAAK,CAACG,SAAS,GAAG,IAAI,CAAC;MAClCgB,EAAE,EAAEhB,SAAS;MACbiB,EAAE,EAAET,OAAO;MACXU,EAAE,EAAEX,UAAU;MACdD,SAAS;MACTG,QAAQ;MACRU,KAAK,EAAEd;IACT,CAAC,CAAC;;IAEF;IACAe,MAAM,CAACC,aAAa,CAClB,IAAIC,WAAW,CAAC,cAAc,EAAE;MAC9BC,MAAM,EAAE;QACNhB;MACF;IACF,CAAC,CACH,CAAC;EACH,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","names":["events","MAXIMUM_WAITING_TIME","MAXIMUM_LOGGED_EVENTS","timer","transportOptions","maxWaitingTime","maxLoggedEvents","createTransport","api","options","Object","assign","_objectSpread","sendOnExit","emit","nextTime","callback","window","requestIdleCallback","requestAnimationFrame","cb","setTimeout","clearTimeout","length","send","transportEvents","splice","transportData","buildTransportData","sendBeacon","requestUrl","data","headers","type","blob","Blob","JSON","stringify","navigator","addEventListener","model","columns"],"sources":["../../../src/analytics/transport.ts"],"sourcesContent":["import { ApiMetric, PageViewMetric } from \"./interfaces.js\";\n\nexport const events: (ApiMetric | PageViewMetric)[] = [];\n\nconst MAXIMUM_WAITING_TIME = 5 * 1000;\nconst MAXIMUM_LOGGED_EVENTS = 10;\nlet timer: any = null;\n\nexport const transportOptions = {\n maxWaitingTime: MAXIMUM_WAITING_TIME,\n maxLoggedEvents: MAXIMUM_LOGGED_EVENTS,\n} as TransportOptions;\n\ntype TransportData = {\n model: string;\n columns: string[];\n data: (ApiMetric | PageViewMetric)[];\n};\n\nexport interface TransportOptions {\n api: string;\n maxWaitingTime: number;\n maxLoggedEvents: number;\n}\n\nexport function createTransport(\n api: string,\n options: Partial<TransportOptions>\n) {\n Object.assign(transportOptions, { ...options, api });\n return {\n sendOnExit,\n emit,\n };\n}\n\nfunction nextTime(callback: (data: unknown) => void): unknown {\n return (\n window.requestIdleCallback ||\n window.requestAnimationFrame ||\n ((cb: (data: Record<string, any>) => void) => setTimeout(cb, 17))\n )(callback);\n}\n\nfunction emit() {\n clearTimeout(timer);\n events.length > transportOptions.maxLoggedEvents\n ? send()\n : (timer = setTimeout(send, transportOptions.maxWaitingTime));\n}\n\nfunction send() {\n if (events.length === 0) {\n return;\n }\n const transportEvents = events.splice(0, transportOptions.maxLoggedEvents);\n const transportData = buildTransportData(transportEvents);\n\n sendBeacon(transportOptions.api, transportData);\n\n events.length && nextTime(send);\n}\n\nfunction sendBeacon(requestUrl: string, data: TransportData) {\n const headers = {\n type: \"application/json\",\n };\n\n const blob = new Blob([JSON.stringify(data)], headers);\n window.navigator.sendBeacon(requestUrl, blob);\n}\n\nfunction sendOnExit() {\n window.addEventListener(\"beforeunload\", send, false);\n}\n\nfunction buildTransportData(data: (ApiMetric | PageViewMetric)[]) {\n return {\n model: \"easyops.FRONTEND_STAT\",\n columns: [\n \"_ver\",\n \"st\",\n \"et\",\n \"lt\",\n \"size\",\n \"time\",\n \"traceId\",\n \"code\",\n \"duration\",\n \"page\",\n \"uid\",\n \"username\",\n \"api\",\n \"type\",\n \"msg\",\n \"status\",\n \"pageId\",\n \"route\",\n \"apiCount\",\n \"maxApiTimeCost\",\n \"apiSizeCost\",\n \"pageTitle\",\n ],\n data,\n };\n}\n"],"mappings":";AAEA,OAAO,IAAMA,MAAsC,GAAG,EAAE;AAExD,IAAMC,oBAAoB,GAAG,CAAC,GAAG,IAAI;AACrC,IAAMC,qBAAqB,GAAG,EAAE;AAChC,IAAIC,KAAU,GAAG,IAAI;AAErB,OAAO,IAAMC,gBAAgB,GAAG;EAC9BC,cAAc,EAAEJ,oBAAoB;EACpCK,eAAe,EAAEJ;AACnB,CAAqB;AAcrB,OAAO,SAASK,eAAeA,CAC7BC,GAAW,EACXC,OAAkC,EAClC;EACAC,MAAM,CAACC,MAAM,CAACP,gBAAgB,EAAAQ,aAAA,CAAAA,aAAA,KAAOH,OAAO;IAAED;EAAG,EAAE,CAAC;EACpD,OAAO;IACLK,UAAU;IACVC;EACF,CAAC;AACH;AAEA,SAASC,QAAQA,CAACC,QAAiC,EAAW;EAC5D,OAAO,CACLC,MAAM,CAACC,mBAAmB,IAC1BD,MAAM,CAACE,qBAAqB,KAC1BC,EAAuC,IAAKC,UAAU,CAACD,EAAE,EAAE,EAAE,CAAC,CAAC,EACjEJ,QAAQ,CAAC;AACb;AAEA,SAASF,IAAIA,CAAA,EAAG;EACdQ,YAAY,CAACnB,KAAK,CAAC;EACnBH,MAAM,CAACuB,MAAM,GAAGnB,gBAAgB,CAACE,eAAe,GAC5CkB,IAAI,CAAC,CAAC,GACLrB,KAAK,GAAGkB,UAAU,CAACG,IAAI,EAAEpB,gBAAgB,CAACC,cAAc,CAAE;AACjE;AAEA,SAASmB,IAAIA,CAAA,EAAG;EACd,IAAIxB,MAAM,CAACuB,MAAM,KAAK,CAAC,EAAE;IACvB;EACF;EACA,IAAME,eAAe,GAAGzB,MAAM,CAAC0B,MAAM,CAAC,CAAC,EAAEtB,gBAAgB,CAACE,eAAe,CAAC;EAC1E,IAAMqB,aAAa,GAAGC,kBAAkB,CAACH,eAAe,CAAC;EAEzDI,UAAU,CAACzB,gBAAgB,CAACI,GAAG,EAAEmB,aAAa,CAAC;EAE/C3B,MAAM,CAACuB,MAAM,IAAIR,QAAQ,CAACS,IAAI,CAAC;AACjC;AAEA,SAASK,UAAUA,CAACC,UAAkB,EAAEC,IAAmB,EAAE;EAC3D,IAAMC,OAAO,GAAG;IACdC,IAAI,EAAE;EACR,CAAC;EAED,IAAMC,IAAI,GAAG,IAAIC,IAAI,CAAC,CAACC,IAAI,CAACC,SAAS,CAACN,IAAI,CAAC,CAAC,EAAEC,OAAO,CAAC;EACtDf,MAAM,CAACqB,SAAS,CAACT,UAAU,CAACC,UAAU,EAAEI,IAAI,CAAC;AAC/C;AAEA,SAASrB,UAAUA,CAAA,EAAG;EACpBI,MAAM,CAACsB,gBAAgB,CAAC,cAAc,EAAEf,IAAI,EAAE,KAAK,CAAC;AACtD;AAEA,SAASI,kBAAkBA,CAACG,IAAoC,EAAE;EAChE,OAAO;IACLS,KAAK,EAAE,uBAAuB;IAC9BC,OAAO,EAAE,CACP,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,EACN,SAAS,EACT,MAAM,EACN,UAAU,EACV,MAAM,EACN,KAAK,EACL,UAAU,EACV,KAAK,EACL,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,CACZ;IACDV;EACF,CAAC;AACH"}
|
|
1
|
+
{"version":3,"file":"transport.js","names":["events","MAXIMUM_WAITING_TIME","MAXIMUM_LOGGED_EVENTS","timer","transportOptions","maxWaitingTime","maxLoggedEvents","createTransport","api","options","Object","assign","_objectSpread","sendOnExit","emit","nextTime","callback","window","requestIdleCallback","requestAnimationFrame","cb","setTimeout","clearTimeout","length","send","transportEvents","splice","transportData","buildTransportData","sendBeacon","requestUrl","data","headers","type","blob","Blob","JSON","stringify","navigator","addEventListener","model","columns"],"sources":["../../../src/analytics/transport.ts"],"sourcesContent":["import { ApiMetric, PageViewMetric } from \"./interfaces.js\";\n\nexport const events: (ApiMetric | PageViewMetric)[] = [];\n\nconst MAXIMUM_WAITING_TIME = 5 * 1000;\nconst MAXIMUM_LOGGED_EVENTS = 10;\nlet timer: any = null;\n\nexport const transportOptions = {\n maxWaitingTime: MAXIMUM_WAITING_TIME,\n maxLoggedEvents: MAXIMUM_LOGGED_EVENTS,\n} as TransportOptions;\n\ntype TransportData = {\n model: string;\n columns: string[];\n data: (ApiMetric | PageViewMetric)[];\n};\n\nexport interface TransportOptions {\n api: string;\n maxWaitingTime: number;\n maxLoggedEvents: number;\n}\n\nexport function createTransport(\n api: string,\n options: Partial<TransportOptions>\n) {\n Object.assign(transportOptions, { ...options, api });\n return {\n sendOnExit,\n emit,\n };\n}\n\nfunction nextTime(callback: (data: unknown) => void): unknown {\n return (\n window.requestIdleCallback ||\n window.requestAnimationFrame ||\n ((cb: (data: Record<string, any>) => void) => setTimeout(cb, 17))\n )(callback);\n}\n\nfunction emit() {\n clearTimeout(timer);\n events.length > transportOptions.maxLoggedEvents\n ? send()\n : (timer = setTimeout(send, transportOptions.maxWaitingTime));\n}\n\nfunction send() {\n if (events.length === 0) {\n return;\n }\n const transportEvents = events.splice(0, transportOptions.maxLoggedEvents);\n const transportData = buildTransportData(transportEvents);\n\n sendBeacon(transportOptions.api, transportData);\n\n events.length && nextTime(send);\n}\n\nfunction sendBeacon(requestUrl: string, data: TransportData) {\n const headers = {\n type: \"application/json\",\n };\n\n const blob = new Blob([JSON.stringify(data)], headers);\n window.navigator.sendBeacon(requestUrl, blob);\n}\n\nfunction sendOnExit() {\n window.addEventListener(\"beforeunload\", send, false);\n}\n\nfunction buildTransportData(data: (ApiMetric | PageViewMetric)[]) {\n return {\n model: \"easyops.FRONTEND_STAT\",\n columns: [\n \"_ver\",\n \"st\",\n \"et\",\n \"lt\",\n \"size\",\n \"time\",\n \"traceId\",\n \"code\",\n \"duration\",\n \"page\",\n \"uid\",\n \"username\",\n \"api\",\n \"type\",\n \"msg\",\n \"status\",\n \"pageId\",\n \"route\",\n \"apiCount\",\n \"maxApiTimeCost\",\n \"apiSizeCost\",\n \"pageTitle\",\n ],\n data,\n };\n}\n"],"mappings":";AAEA,OAAO,IAAMA,MAAsC,GAAG,EAAE;AAExD,IAAMC,oBAAoB,GAAG,CAAC,GAAG,IAAI;AACrC,IAAMC,qBAAqB,GAAG,EAAE;AAChC,IAAIC,KAAU,GAAG,IAAI;AAErB,OAAO,IAAMC,gBAAgB,GAAG;EAC9BC,cAAc,EAAEJ,oBAAoB;EACpCK,eAAe,EAAEJ;AACnB,CAAqB;AAcrB,OAAO,SAASK,eAAeA,CAC7BC,GAAW,EACXC,OAAkC,EAClC;EACAC,MAAM,CAACC,MAAM,CAACP,gBAAgB,EAAAQ,aAAA,CAAAA,aAAA,KAAOH,OAAO;IAAED;EAAG,EAAE,CAAC;EACpD,OAAO;IACLK,UAAU;IACVC;EACF,CAAC;AACH;AAEA,SAASC,QAAQA,CAACC,QAAiC,EAAW;EAC5D,OAAO,CACLC,MAAM,CAACC,mBAAmB,IAC1BD,MAAM,CAACE,qBAAqB,KAC1BC,EAAuC,IAAKC,UAAU,CAACD,EAAE,EAAE,EAAE,CAAC,CAAC,EACjEJ,QAAQ,CAAC;AACb;AAEA,SAASF,IAAIA,CAAA,EAAG;EACdQ,YAAY,CAACnB,KAAK,CAAC;EACnBH,MAAM,CAACuB,MAAM,GAAGnB,gBAAgB,CAACE,eAAe,GAC5CkB,IAAI,CAAC,CAAC,GACLrB,KAAK,GAAGkB,UAAU,CAACG,IAAI,EAAEpB,gBAAgB,CAACC,cAAc,CAAE;AACjE;AAEA,SAASmB,IAAIA,CAAA,EAAG;EACd,IAAIxB,MAAM,CAACuB,MAAM,KAAK,CAAC,EAAE;IACvB;EACF;EACA,IAAME,eAAe,GAAGzB,MAAM,CAAC0B,MAAM,CAAC,CAAC,EAAEtB,gBAAgB,CAACE,eAAe,CAAC;EAC1E,IAAMqB,aAAa,GAAGC,kBAAkB,CAACH,eAAe,CAAC;EAEzDI,UAAU,CAACzB,gBAAgB,CAACI,GAAG,EAAEmB,aAAa,CAAC;EAE/C3B,MAAM,CAACuB,MAAM,IAAIR,QAAQ,CAACS,IAAI,CAAC;AACjC;AAEA,SAASK,UAAUA,CAACC,UAAkB,EAAEC,IAAmB,EAAE;EAC3D,IAAMC,OAAO,GAAG;IACdC,IAAI,EAAE;EACR,CAAC;EAED,IAAMC,IAAI,GAAG,IAAIC,IAAI,CAAC,CAACC,IAAI,CAACC,SAAS,CAACN,IAAI,CAAC,CAAC,EAAEC,OAAO,CAAC;EACtDf,MAAM,CAACqB,SAAS,CAACT,UAAU,CAACC,UAAU,EAAEI,IAAI,CAAC;AAC/C;AAEA,SAASrB,UAAUA,CAAA,EAAG;EACpBI,MAAM,CAACsB,gBAAgB,CAAC,cAAc,EAAEf,IAAI,EAAE,KAAK,CAAC;AACtD;AAEA,SAASI,kBAAkBA,CAACG,IAAoC,EAAE;EAChE,OAAO;IACLS,KAAK,EAAE,uBAAuB;IAC9BC,OAAO,EAAE,CACP,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,EACN,SAAS,EACT,MAAM,EACN,UAAU,EACV,MAAM,EACN,KAAK,EACL,UAAU,EACV,KAAK,EACL,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,CACZ;IACDV;EACF,CAAC;AACH","ignoreList":[]}
|
package/dist/esm/auth-v2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-v2.js","names":["getV2RuntimeFromDll","pick","authV2Factory","v2Kit","Object","freeze"],"sources":["../../src/auth-v2.ts"],"sourcesContent":["// istanbul ignore file\nimport { getV2RuntimeFromDll } from \"@next-core/runtime\";\nimport { pick } from \"lodash\";\nimport type * as auth from \"./auth.js\";\n\nexport function authV2Factory() {\n const v2Kit = getV2RuntimeFromDll();\n if (v2Kit) {\n return Object.freeze(\n pick(v2Kit, [\"authenticate\", \"getAuth\", \"isLoggedIn\", \"logout\"])\n ) as typeof auth;\n }\n}\n"],"mappings":"AAAA;AACA,SAASA,mBAAmB,QAAQ,oBAAoB;AACxD,SAASC,IAAI,QAAQ,QAAQ;AAG7B,OAAO,SAASC,aAAaA,CAAA,EAAG;EAC9B,IAAMC,KAAK,GAAGH,mBAAmB,CAAC,CAAC;EACnC,IAAIG,KAAK,EAAE;IACT,OAAOC,MAAM,CAACC,MAAM,CAClBJ,IAAI,CAACE,KAAK,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CACjE,CAAC;EACH;AACF"}
|
|
1
|
+
{"version":3,"file":"auth-v2.js","names":["getV2RuntimeFromDll","pick","authV2Factory","v2Kit","Object","freeze"],"sources":["../../src/auth-v2.ts"],"sourcesContent":["// istanbul ignore file\nimport { getV2RuntimeFromDll } from \"@next-core/runtime\";\nimport { pick } from \"lodash\";\nimport type * as auth from \"./auth.js\";\n\nexport function authV2Factory() {\n const v2Kit = getV2RuntimeFromDll();\n if (v2Kit) {\n return Object.freeze(\n pick(v2Kit, [\"authenticate\", \"getAuth\", \"isLoggedIn\", \"logout\"])\n ) as typeof auth;\n }\n}\n"],"mappings":"AAAA;AACA,SAASA,mBAAmB,QAAQ,oBAAoB;AACxD,SAASC,IAAI,QAAQ,QAAQ;AAG7B,OAAO,SAASC,aAAaA,CAAA,EAAG;EAC9B,IAAMC,KAAK,GAAGH,mBAAmB,CAAC,CAAC;EACnC,IAAIG,KAAK,EAAE;IACT,OAAOC,MAAM,CAACC,MAAM,CAClBJ,IAAI,CAACE,KAAK,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CACjE,CAAC;EACH;AACF","ignoreList":[]}
|
package/dist/esm/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","names":["resetPermissionPreChecks","auth","authenticate","newAuth","Object","assign","org","username","userInstanceId","loginFrom","accessRule","isAdmin","csrfToken","license","userShowValue","getAuth","_objectSpread","logout","key","keys","undefined","isLoggedIn"],"sources":["../../src/auth.ts"],"sourcesContent":["import type { AuthApi_CheckLoginResponseBody } from \"@next-api-sdk/api-gateway-sdk\";\nimport { resetPermissionPreChecks } from \"./checkPermissions.js\";\n\nconst auth: AuthInfo = {};\n\n/** @internal */\nexport type AuthInfo = Omit<AuthApi_CheckLoginResponseBody, \"loggedIn\">;\n\n/** @internal */\nexport function authenticate(newAuth: AuthInfo): void {\n Object.assign(auth, {\n org: newAuth.org,\n username: newAuth.username,\n userInstanceId: newAuth.userInstanceId,\n loginFrom: newAuth.loginFrom,\n accessRule: newAuth.accessRule,\n isAdmin: newAuth.isAdmin,\n csrfToken: newAuth.csrfToken,\n license: newAuth.license,\n userShowValue: newAuth.userShowValue,\n });\n}\n\n/**\n * 获取当前登录认证信息。\n *\n * @returns 当前登录认证信息。\n */\nexport function getAuth(): AuthInfo {\n return {\n ...auth,\n };\n}\n\n/** @internal */\nexport function logout(): void {\n for (const key of Object.keys(auth) as (keyof AuthInfo)[]) {\n auth[key] = undefined;\n }\n resetPermissionPreChecks();\n}\n\n/**\n * 查看当前是否已登录。\n *\n * @returns 当前是否已登录。\n */\nexport function isLoggedIn(): boolean {\n return auth.username !== undefined;\n}\n"],"mappings":";AACA,SAASA,wBAAwB,QAAQ,uBAAuB;AAEhE,IAAMC,IAAc,GAAG,CAAC,CAAC;;AAEzB;;AAGA;AACA,OAAO,SAASC,YAAYA,CAACC,OAAiB,EAAQ;EACpDC,MAAM,CAACC,MAAM,CAACJ,IAAI,EAAE;IAClBK,GAAG,EAAEH,OAAO,CAACG,GAAG;IAChBC,QAAQ,EAAEJ,OAAO,CAACI,QAAQ;IAC1BC,cAAc,EAAEL,OAAO,CAACK,cAAc;IACtCC,SAAS,EAAEN,OAAO,CAACM,SAAS;IAC5BC,UAAU,EAAEP,OAAO,CAACO,UAAU;IAC9BC,OAAO,EAAER,OAAO,CAACQ,OAAO;IACxBC,SAAS,EAAET,OAAO,CAACS,SAAS;IAC5BC,OAAO,EAAEV,OAAO,CAACU,OAAO;IACxBC,aAAa,EAAEX,OAAO,CAACW;EACzB,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,OAAOA,CAAA,EAAa;EAClC,OAAAC,aAAA,KACKf,IAAI;AAEX;;AAEA;AACA,OAAO,SAASgB,MAAMA,CAAA,EAAS;EAC7B,KAAK,IAAMC,GAAG,IAAId,MAAM,CAACe,IAAI,CAAClB,IAAI,CAAC,EAAwB;IACzDA,IAAI,CAACiB,GAAG,CAAC,GAAGE,SAAS;EACvB;EACApB,wBAAwB,CAAC,CAAC;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASqB,UAAUA,CAAA,EAAY;EACpC,OAAOpB,IAAI,CAACM,QAAQ,KAAKa,SAAS;AACpC"}
|
|
1
|
+
{"version":3,"file":"auth.js","names":["resetPermissionPreChecks","auth","authenticate","newAuth","Object","assign","org","username","userInstanceId","loginFrom","accessRule","isAdmin","csrfToken","license","userShowValue","getAuth","_objectSpread","logout","key","keys","undefined","isLoggedIn"],"sources":["../../src/auth.ts"],"sourcesContent":["import type { AuthApi_CheckLoginResponseBody } from \"@next-api-sdk/api-gateway-sdk\";\nimport { resetPermissionPreChecks } from \"./checkPermissions.js\";\n\nconst auth: AuthInfo = {};\n\n/** @internal */\nexport type AuthInfo = Omit<AuthApi_CheckLoginResponseBody, \"loggedIn\">;\n\n/** @internal */\nexport function authenticate(newAuth: AuthInfo): void {\n Object.assign(auth, {\n org: newAuth.org,\n username: newAuth.username,\n userInstanceId: newAuth.userInstanceId,\n loginFrom: newAuth.loginFrom,\n accessRule: newAuth.accessRule,\n isAdmin: newAuth.isAdmin,\n csrfToken: newAuth.csrfToken,\n license: newAuth.license,\n userShowValue: newAuth.userShowValue,\n });\n}\n\n/**\n * 获取当前登录认证信息。\n *\n * @returns 当前登录认证信息。\n */\nexport function getAuth(): AuthInfo {\n return {\n ...auth,\n };\n}\n\n/** @internal */\nexport function logout(): void {\n for (const key of Object.keys(auth) as (keyof AuthInfo)[]) {\n auth[key] = undefined;\n }\n resetPermissionPreChecks();\n}\n\n/**\n * 查看当前是否已登录。\n *\n * @returns 当前是否已登录。\n */\nexport function isLoggedIn(): boolean {\n return auth.username !== undefined;\n}\n"],"mappings":";AACA,SAASA,wBAAwB,QAAQ,uBAAuB;AAEhE,IAAMC,IAAc,GAAG,CAAC,CAAC;;AAEzB;;AAGA;AACA,OAAO,SAASC,YAAYA,CAACC,OAAiB,EAAQ;EACpDC,MAAM,CAACC,MAAM,CAACJ,IAAI,EAAE;IAClBK,GAAG,EAAEH,OAAO,CAACG,GAAG;IAChBC,QAAQ,EAAEJ,OAAO,CAACI,QAAQ;IAC1BC,cAAc,EAAEL,OAAO,CAACK,cAAc;IACtCC,SAAS,EAAEN,OAAO,CAACM,SAAS;IAC5BC,UAAU,EAAEP,OAAO,CAACO,UAAU;IAC9BC,OAAO,EAAER,OAAO,CAACQ,OAAO;IACxBC,SAAS,EAAET,OAAO,CAACS,SAAS;IAC5BC,OAAO,EAAEV,OAAO,CAACU,OAAO;IACxBC,aAAa,EAAEX,OAAO,CAACW;EACzB,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,OAAOA,CAAA,EAAa;EAClC,OAAAC,aAAA,KACKf,IAAI;AAEX;;AAEA;AACA,OAAO,SAASgB,MAAMA,CAAA,EAAS;EAC7B,KAAK,IAAMC,GAAG,IAAId,MAAM,CAACe,IAAI,CAAClB,IAAI,CAAC,EAAwB;IACzDA,IAAI,CAACiB,GAAG,CAAC,GAAGE,SAAS;EACvB;EACApB,wBAAwB,CAAC,CAAC;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASqB,UAAUA,CAAA,EAAY;EACpC,OAAOpB,IAAI,CAACM,QAAQ,KAAKa,SAAS;AACpC","ignoreList":[]}
|