@idlebox/common 1.2.2 → 1.3.0
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/docs/package-public.d.ts +2 -0
- package/lib/_export_all_in_one_index.cjs +11 -8
- package/lib/_export_all_in_one_index.cjs.map +1 -1
- package/lib/_export_all_in_one_index.js +3 -1
- package/lib/_export_all_in_one_index.js.map +1 -1
- package/lib/lifecycle/dispose/lifecycle.global.cjs +6 -5
- package/lib/lifecycle/dispose/lifecycle.global.cjs.map +1 -1
- package/lib/lifecycle/dispose/lifecycle.global.js +2 -1
- package/lib/lifecycle/dispose/lifecycle.global.js.map +1 -1
- package/lib/platform/globalObject.cjs +2 -97
- package/lib/platform/globalObject.cjs.map +1 -1
- package/lib/platform/globalObject.js +1 -92
- package/lib/platform/globalObject.js.map +1 -1
- package/lib/platform/globalSingleton.cjs +66 -0
- package/lib/platform/globalSingleton.cjs.map +1 -0
- package/lib/platform/globalSingleton.js +60 -0
- package/lib/platform/globalSingleton.js.map +1 -0
- package/lib/platform/globalSymbol.cjs +40 -0
- package/lib/platform/globalSymbol.cjs.map +1 -0
- package/lib/platform/globalSymbol.js +35 -0
- package/lib/platform/globalSymbol.js.map +1 -0
- package/package.json +8 -7
- package/src/lifecycle/dispose/lifecycle.global.ts +2 -1
- package/src/platform/globalObject.ts +1 -118
- package/src/platform/globalSingleton.ts +82 -0
- package/src/platform/globalSymbol.ts +36 -0
- package/scripts/postbuild.js +0 -5
package/docs/package-public.d.ts
CHANGED
|
@@ -305,6 +305,8 @@ export declare class Emitter<T> implements IDisposable {
|
|
|
305
305
|
*/
|
|
306
306
|
export declare function ensureDisposeGlobal(): Promise<void>;
|
|
307
307
|
|
|
308
|
+
export declare function ensureGlobalObject<T>(symbol: string, constructor: () => T): T;
|
|
309
|
+
|
|
308
310
|
/** @public */
|
|
309
311
|
export declare function escapeRegExp(str: string): string;
|
|
310
312
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.humanSpeed = exports.humanSize = exports.humanSizeSI = exports.escapeRegExp = exports.linux_case_hyphen = exports.linux_case = exports.lcfirst = exports.ucfirst = void 0;
|
|
3
|
+
exports.LifecycleObject = exports.disposeGlobal = exports.ensureDisposeGlobal = exports.registerGlobalLifecycle = exports.deleteSymbol = exports.createSymbol = exports.globalSingleton = exports.globalSingletonDelete = exports.globalSingletonStrong = exports.ensureGlobalObject = exports.globalObject = exports.AsyncDisposable = exports.isDisposedError = exports.DisposedError = exports.addDisposableEventListener = exports.toDisposable = exports.Emitter = exports.DelayCallbackList = exports.CallbackList = exports.AsyncCallbackList = exports.assertFunctionHasName = exports.nameFunction = exports.functionName = exports.convertCatchedError = exports.getErrorFrame = exports.tryInspect = exports.fromTimeStamp = exports.getTimeStamp = exports.humanDate = exports.pad2 = exports.nextYear = exports.nextMonth = exports.nextWeek = exports.nextDay = exports.nextHour = exports.nextMinute = exports.nextSecond = exports.isDateInvalid = exports.oneWeek = exports.oneDay = exports.oneHour = exports.oneMinute = exports.oneSecond = exports.sortByString = exports.normalizeArray = exports.uniqueFilter = exports.arrayUniqueReference = exports.arrayUnique = exports.isArraySame = exports.arrayDiff = void 0;
|
|
4
|
+
exports.memo = exports.memorizeValueSymbol = exports.init = exports.bindThis = exports.singleton = exports.SingletonType = exports.singletonSymbol = exports.hookClass = exports.hookClassSymbol = exports.TimeoutPromisePool = exports.PromisePool = exports.promiseBool = exports.finishAllPromise = exports.awaitIterator = exports.PathArray = exports.normalizePath = exports.isAbsolute = exports.isObjectSameRecursive = exports.isObjectSame = exports.objectPath = exports.initOnRead = exports.definePublicConstant = exports.throwNull = exports.assertNotNull = exports.ExtendMap = exports.CustomSet = exports.RegexpFinder = exports.WrappedConsole = exports.ColorKind = exports.userAgent = exports.isWeb = exports.isNative = exports.isLinux = exports.isMacintosh = exports.isWindows = exports.isElectronMain = exports.isElectronRenderer = exports.isElectron = exports.timeoutPromise = exports.sleep = exports.timeout = exports.isTimeoutError = exports.TimeoutError = exports.CancellationTokenSource = exports.DeferredPromise = exports.isCanceledError = exports.CanceledError = exports.unsubscribableToDisposable = exports.Disposable = exports.DisposableOnce = void 0;
|
|
5
|
+
exports.humanSpeed = exports.humanSize = exports.humanSizeSI = exports.escapeRegExp = exports.linux_case_hyphen = exports.linux_case = exports.lcfirst = exports.ucfirst = exports.camelCase = void 0;
|
|
6
6
|
var arrayDiff_cjs_1 = require("./array/arrayDiff.cjs");
|
|
7
7
|
Object.defineProperty(exports, "arrayDiff", { enumerable: true, get: function () { return arrayDiff_cjs_1.arrayDiff; } });
|
|
8
8
|
var arraySame_cjs_1 = require("./array/arraySame.cjs");
|
|
@@ -67,11 +67,14 @@ var lifecycle_async_cjs_1 = require("./lifecycle/dispose/lifecycle.async.cjs");
|
|
|
67
67
|
Object.defineProperty(exports, "AsyncDisposable", { enumerable: true, get: function () { return lifecycle_async_cjs_1.AsyncDisposable; } });
|
|
68
68
|
var globalObject_cjs_1 = require("./platform/globalObject.cjs");
|
|
69
69
|
Object.defineProperty(exports, "globalObject", { enumerable: true, get: function () { return globalObject_cjs_1.globalObject; } });
|
|
70
|
-
Object.defineProperty(exports, "
|
|
71
|
-
|
|
72
|
-
Object.defineProperty(exports, "globalSingletonStrong", { enumerable: true, get: function () { return
|
|
73
|
-
Object.defineProperty(exports, "globalSingletonDelete", { enumerable: true, get: function () { return
|
|
74
|
-
Object.defineProperty(exports, "globalSingleton", { enumerable: true, get: function () { return
|
|
70
|
+
Object.defineProperty(exports, "ensureGlobalObject", { enumerable: true, get: function () { return globalObject_cjs_1.ensureGlobalObject; } });
|
|
71
|
+
var globalSingleton_cjs_1 = require("./platform/globalSingleton.cjs");
|
|
72
|
+
Object.defineProperty(exports, "globalSingletonStrong", { enumerable: true, get: function () { return globalSingleton_cjs_1.globalSingletonStrong; } });
|
|
73
|
+
Object.defineProperty(exports, "globalSingletonDelete", { enumerable: true, get: function () { return globalSingleton_cjs_1.globalSingletonDelete; } });
|
|
74
|
+
Object.defineProperty(exports, "globalSingleton", { enumerable: true, get: function () { return globalSingleton_cjs_1.globalSingleton; } });
|
|
75
|
+
var globalSymbol_cjs_1 = require("./platform/globalSymbol.cjs");
|
|
76
|
+
Object.defineProperty(exports, "createSymbol", { enumerable: true, get: function () { return globalSymbol_cjs_1.createSymbol; } });
|
|
77
|
+
Object.defineProperty(exports, "deleteSymbol", { enumerable: true, get: function () { return globalSymbol_cjs_1.deleteSymbol; } });
|
|
75
78
|
var lifecycle_global_cjs_1 = require("./lifecycle/dispose/lifecycle.global.cjs");
|
|
76
79
|
Object.defineProperty(exports, "registerGlobalLifecycle", { enumerable: true, get: function () { return lifecycle_global_cjs_1.registerGlobalLifecycle; } });
|
|
77
80
|
Object.defineProperty(exports, "ensureDisposeGlobal", { enumerable: true, get: function () { return lifecycle_global_cjs_1.ensureDisposeGlobal; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_export_all_in_one_index.js","sourceRoot":"","sources":["../source/_export_all_in_one_index.ts"],"names":[],"mappings":";;;;;AAAA,uDAA2D;AAApC,0GAAA,SAAS,OAAA;AAChC,uDAA+C;AAAtC,4GAAA,WAAW,OAAA;AACpB,2DAAuG;AAA9F,8GAAA,WAAW,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AAAoB,+GAAA,YAAY,OAAA;AAC1E,iEAAuD;AAA9C,oHAAA,cAAc,OAAA;AACvB,uDAAgD;AAAvC,6GAAA,YAAY,OAAA;AACrB,gDAA8E;AAArE,uGAAA,SAAS,OAAA;AAAE,uGAAA,SAAS,OAAA;AAAE,qGAAA,OAAO,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,qGAAA,OAAO,OAAA;AACvD,sDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,kDAAyG;AAAhG,yGAAA,UAAU,OAAA;AAAE,yGAAA,UAAU,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAAE,sGAAA,OAAO,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,uGAAA,QAAQ,OAAA;AACjF,8CAAoC;AAA3B,gGAAA,IAAI,OAAA;AACb,wDAA6C;AAApC,2GAAA,SAAS,OAAA;AAClB,4CAAyD;AAAhD,wGAAA,YAAY,OAAA;AAAE,yGAAA,aAAa,OAAA;AACpC,6DAAmD;AAA1C,4GAAA,UAAU,OAAA;AACnB,qDAAgD;AAAvC,6GAAA,aAAa,OAAA;AACtB,iEAA4D;AAAnD,yHAAA,mBAAmB,OAAA;AAC5B,gEAA8H;AAAtG,gHAAA,YAAY,OAAA;AAAE,gHAAA,YAAY,OAAA;AAAsB,yHAAA,qBAAqB,OAAA;AAC7F,0EAAiF;AAAvD,0HAAA,iBAAiB,OAAA;AAC3C,gEAAkE;AAA7C,gHAAA,YAAY,OAAA;AACjC,0EAAiF;AAAvD,0HAAA,iBAAiB,OAAA;AAC3C,yDAA8E;AAAxC,oGAAA,OAAO,OAAA;AAC7C,mEAAoH;AAAnD,6GAAA,YAAY,OAAA;AAC7E,+EAA8I;AAAvE,iIAAA,0BAA0B,OAAA;AACjG,2EAAkF;AAAzE,kHAAA,aAAa,OAAA;AAAE,oHAAA,eAAe,OAAA;AACvC,+EAAqE;AAA5D,sHAAA,eAAe,OAAA;AACxB,
|
|
1
|
+
{"version":3,"file":"_export_all_in_one_index.js","sourceRoot":"","sources":["../source/_export_all_in_one_index.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,9 @@ export { toDisposable } from "./lifecycle/dispose/lifecycle.js";
|
|
|
21
21
|
export { addDisposableEventListener } from "./lifecycle/dispose/disposableEvent.js";
|
|
22
22
|
export { DisposedError, isDisposedError } from "./lifecycle/dispose/disposedError.js";
|
|
23
23
|
export { AsyncDisposable } from "./lifecycle/dispose/lifecycle.async.js";
|
|
24
|
-
export { globalObject,
|
|
24
|
+
export { globalObject, ensureGlobalObject } from "./platform/globalObject.js";
|
|
25
|
+
export { globalSingletonStrong, globalSingletonDelete, globalSingleton } from "./platform/globalSingleton.js";
|
|
26
|
+
export { createSymbol, deleteSymbol } from "./platform/globalSymbol.js";
|
|
25
27
|
export { registerGlobalLifecycle, ensureDisposeGlobal, disposeGlobal, LifecycleObject } from "./lifecycle/dispose/lifecycle.global.js";
|
|
26
28
|
export { DisposableOnce, Disposable } from "./lifecycle/dispose/lifecycle.sync.js";
|
|
27
29
|
export { unsubscribableToDisposable } from "./lifecycle/dispose/bridges/rxjs.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_export_all_in_one_index.js","sourceRoot":"","sources":["../source/_export_all_in_one_index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,SAAS,EAAE,6BAAyB;AAC3D,OAAO,EAAE,WAAW,EAAE,6BAAyB;AAC/C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAoB,YAAY,EAAE,+BAA2B;AACvG,OAAO,EAAE,cAAc,EAAE,kCAA8B;AACvD,OAAO,EAAE,YAAY,EAAE,6BAAyB;AAChD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAqB;AAC9E,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAChD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,0BAAsB;AACzG,OAAO,EAAE,IAAI,EAAE,yBAAqB;AACpC,OAAO,EAAE,SAAS,EAAE,6BAAyB;AAC7C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,uBAAmB;AACzD,OAAO,EAAE,UAAU,EAAE,kCAA8B;AACnD,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAChD,OAAO,EAAE,mBAAmB,EAAE,kCAA8B;AAC5D,OAAO,EAAiB,YAAY,EAAE,YAAY,EAAsB,qBAAqB,EAAE,mCAA+B;AAC9H,OAAO,EAAmB,iBAAiB,EAAE,wCAAoC;AACjF,OAAO,EAAc,YAAY,EAAE,mCAA+B;AAClE,OAAO,EAAmB,iBAAiB,EAAE,wCAAoC;AACjF,OAAO,EAA+B,OAAO,EAAE,mCAA+B;AAC9E,OAAO,EAA0D,YAAY,EAAE,yCAAqC;AACpH,OAAO,EAAgE,0BAA0B,EAAE,+CAA2C;AAC9I,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,6CAAyC;AAClF,OAAO,EAAE,eAAe,EAAE,+CAA2C;AACrE,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"_export_all_in_one_index.js","sourceRoot":"","sources":["../source/_export_all_in_one_index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LifecycleObject = exports.disposeGlobal = exports.ensureDisposeGlobal = exports.registerGlobalLifecycle = void 0;
|
|
4
|
-
const
|
|
4
|
+
const globalSingleton_cjs_1 = require("../../platform/globalSingleton.cjs");
|
|
5
|
+
const globalSymbol_cjs_1 = require("../../platform/globalSymbol.cjs");
|
|
5
6
|
const lifecycle_async_cjs_1 = require("./lifecycle.async.cjs");
|
|
6
|
-
const symbol = (0,
|
|
7
|
+
const symbol = (0, globalSymbol_cjs_1.createSymbol)('lifecycle', 'application');
|
|
7
8
|
function create() {
|
|
8
9
|
return new lifecycle_async_cjs_1.AsyncDisposable();
|
|
9
10
|
}
|
|
@@ -11,14 +12,14 @@ function create() {
|
|
|
11
12
|
* Add object into global disposable store, it will be dispose when call to `disposeGlobal`
|
|
12
13
|
*/
|
|
13
14
|
function registerGlobalLifecycle(object) {
|
|
14
|
-
(0,
|
|
15
|
+
(0, globalSingleton_cjs_1.globalSingletonStrong)(symbol, create)._register(object);
|
|
15
16
|
}
|
|
16
17
|
exports.registerGlobalLifecycle = registerGlobalLifecycle;
|
|
17
18
|
/**
|
|
18
19
|
* Same as disposeGlobal, but do not throw by duplicate call
|
|
19
20
|
*/
|
|
20
21
|
function ensureDisposeGlobal() {
|
|
21
|
-
const obj = (0,
|
|
22
|
+
const obj = (0, globalSingleton_cjs_1.globalSingletonStrong)(symbol);
|
|
22
23
|
if (obj && !obj.hasDisposed) {
|
|
23
24
|
return Promise.resolve(obj.dispose());
|
|
24
25
|
}
|
|
@@ -34,7 +35,7 @@ exports.ensureDisposeGlobal = ensureDisposeGlobal;
|
|
|
34
35
|
* @throws when call twice
|
|
35
36
|
*/
|
|
36
37
|
function disposeGlobal() {
|
|
37
|
-
const obj = (0,
|
|
38
|
+
const obj = (0, globalSingleton_cjs_1.globalSingletonStrong)(symbol);
|
|
38
39
|
if (obj && obj.hasDisposed) {
|
|
39
40
|
throw new Error('global already disposed.');
|
|
40
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.global.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.global.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"lifecycle.global.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.global.ts"],"names":[],"mappings":";;;AAAA,4EAAuE;AACvE,sEAA2D;AAE3D,+DAAoD;AAEpD,MAAM,MAAM,GAAG,IAAA,+BAAY,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAExD,SAAS,MAAM;IACd,OAAO,IAAI,qCAAe,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,MAAmB;IAC1D,IAAA,2CAAqB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC;AAFD,0DAEC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IAClC,MAAM,GAAG,GAAG,IAAA,2CAAqB,EAAkB,MAAM,CAAC,CAAC;IAC3D,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;QAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KACtC;SAAM;QACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KACzB;AACF,CAAC;AAPD,kDAOC;AAED;;;;;GAKG;AACH,SAAgB,aAAa;IAC5B,MAAM,GAAG,GAAG,IAAA,2CAAqB,EAAkB,MAAM,CAAC,CAAC;IAC3D,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;KAC5C;SAAM,IAAI,GAAG,EAAE;QACf,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KACtC;SAAM;QACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KACzB;AACF,CAAC;AATD,sCASC;AAED;;;GAGG;AACH,MAAsB,eAAgB,SAAQ,qCAAe;IAIrD,KAAK,CAAC,OAAO;QACnB,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AATD,0CASC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { globalSingletonStrong } from "../../platform/globalSingleton.js";
|
|
2
|
+
import { createSymbol } from "../../platform/globalSymbol.js";
|
|
2
3
|
import { AsyncDisposable } from "./lifecycle.async.js";
|
|
3
4
|
const symbol = createSymbol('lifecycle', 'application');
|
|
4
5
|
function create() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.global.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.global.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lifecycle.global.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,0CAAuC;AACvE,OAAO,EAAE,YAAY,EAAE,uCAAoC;AAE3D,OAAO,EAAE,eAAe,EAAE,6BAA0B;AAEpD,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAExD,SAAS,MAAM;IACd,OAAO,IAAI,eAAe,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAmB;IAC1D,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IAClC,MAAM,GAAG,GAAG,qBAAqB,CAAkB,MAAM,CAAC,CAAC;IAC3D,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;QAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KACtC;SAAM;QACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KACzB;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa;IAC5B,MAAM,GAAG,GAAG,qBAAqB,CAAkB,MAAM,CAAC,CAAC;IAC3D,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;KAC5C;SAAM,IAAI,GAAG,EAAE;QACf,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KACtC;SAAM;QACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KACzB;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,OAAgB,eAAgB,SAAQ,eAAe;IAIrD,KAAK,CAAC,OAAO;QACnB,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const functionName_cjs_1 = require("../function/functionName.cjs");
|
|
3
|
+
exports.ensureGlobalObject = exports.globalObject = void 0;
|
|
5
4
|
/**
|
|
6
5
|
* globalThis when supported.
|
|
7
6
|
* if not, window in browser, global in nodejs
|
|
@@ -15,99 +14,5 @@ function ensureGlobalObject(symbol, constructor) {
|
|
|
15
14
|
}
|
|
16
15
|
return exports.globalObject[sm];
|
|
17
16
|
}
|
|
18
|
-
|
|
19
|
-
return {};
|
|
20
|
-
});
|
|
21
|
-
/**
|
|
22
|
-
* Get a symbol singleton, if not exists, create it
|
|
23
|
-
*
|
|
24
|
-
* this is very like Symbol.for, but not real global symbol
|
|
25
|
-
* @public
|
|
26
|
-
*/
|
|
27
|
-
function createSymbol(category, name) {
|
|
28
|
-
if (symbolRegistry[category] && symbolRegistry[category][name]) {
|
|
29
|
-
return symbolRegistry[category][name];
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
if (!symbolRegistry[category]) {
|
|
33
|
-
symbolRegistry[category] = {};
|
|
34
|
-
}
|
|
35
|
-
symbolRegistry[category][name] = Symbol(name);
|
|
36
|
-
return symbolRegistry[category][name];
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.createSymbol = createSymbol;
|
|
40
|
-
/**
|
|
41
|
-
* Delete a symbol from window/global object
|
|
42
|
-
* @public
|
|
43
|
-
*/
|
|
44
|
-
function deleteSymbol(category, name) {
|
|
45
|
-
if (symbolRegistry[category] && symbolRegistry[category][name]) {
|
|
46
|
-
delete symbolRegistry[category][name];
|
|
47
|
-
if (Object.keys(symbolRegistry[category]).length === 0) {
|
|
48
|
-
delete symbolRegistry[category];
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
exports.deleteSymbol = deleteSymbol;
|
|
53
|
-
const singletonRegistry = ensureGlobalObject(`@@idlebox/global-singleton`, () => {
|
|
54
|
-
return new Map();
|
|
55
|
-
});
|
|
56
|
-
function globalSingletonStrong(symbol, constructor) {
|
|
57
|
-
let object = exports.globalObject.get(symbol);
|
|
58
|
-
if (object instanceof WeakRef) {
|
|
59
|
-
const target = object.deref();
|
|
60
|
-
if (target !== undefined) {
|
|
61
|
-
object = target;
|
|
62
|
-
}
|
|
63
|
-
else if (constructor) {
|
|
64
|
-
object = constructor();
|
|
65
|
-
if (object === undefined)
|
|
66
|
-
throw new TypeError(`singleton constructor (${(0, functionName_cjs_1.functionName)(constructor)}) returned undefined.`);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
singletonRegistry.delete(symbol);
|
|
70
|
-
return undefined;
|
|
71
|
-
}
|
|
72
|
-
singletonRegistry.set(symbol, object);
|
|
73
|
-
}
|
|
74
|
-
else if (object === undefined && constructor) {
|
|
75
|
-
object = constructor();
|
|
76
|
-
if (object === undefined)
|
|
77
|
-
throw new TypeError(`singleton constructor (${(0, functionName_cjs_1.functionName)(constructor)}) returned undefined.`);
|
|
78
|
-
singletonRegistry.set(symbol, object);
|
|
79
|
-
}
|
|
80
|
-
return object;
|
|
81
|
-
}
|
|
82
|
-
exports.globalSingletonStrong = globalSingletonStrong;
|
|
83
|
-
/**
|
|
84
|
-
* Delete a key from window/global space
|
|
85
|
-
* use with care
|
|
86
|
-
* @public
|
|
87
|
-
*/
|
|
88
|
-
function globalSingletonDelete(symbol) {
|
|
89
|
-
singletonRegistry.delete(symbol);
|
|
90
|
-
}
|
|
91
|
-
exports.globalSingletonDelete = globalSingletonDelete;
|
|
92
|
-
function globalSingleton(symbol, constructor) {
|
|
93
|
-
if (singletonRegistry.has(symbol)) {
|
|
94
|
-
let object = singletonRegistry.get(symbol);
|
|
95
|
-
if (object instanceof WeakRef) {
|
|
96
|
-
object = object.deref();
|
|
97
|
-
if (object)
|
|
98
|
-
return object;
|
|
99
|
-
singletonRegistry.delete(symbol);
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
return object; // strong
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
if (constructor) {
|
|
106
|
-
const object = new WeakRef(constructor());
|
|
107
|
-
singletonRegistry.set(symbol, object);
|
|
108
|
-
return object.deref();
|
|
109
|
-
}
|
|
110
|
-
return undefined;
|
|
111
|
-
}
|
|
112
|
-
exports.globalSingleton = globalSingleton;
|
|
17
|
+
exports.ensureGlobalObject = ensureGlobalObject;
|
|
113
18
|
//# sourceMappingURL=globalObject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalObject.js","sourceRoot":"","sources":["../../src/platform/globalObject.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"globalObject.js","sourceRoot":"","sources":["../../src/platform/globalObject.ts"],"names":[],"mappings":";;;AAGA;;;;GAIG;AACU,QAAA,YAAY,GACxB,OAAO,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAEpG,SAAgB,kBAAkB,CAAI,MAAc,EAAE,WAAoB;IACzE,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,oBAAY,CAAC,EAAE,CAAC,EAAE;QACtB,oBAAY,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC;KACjC;IACD,OAAO,oBAAY,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAND,gDAMC"}
|
|
@@ -1,105 +1,14 @@
|
|
|
1
|
-
import { functionName } from "../function/functionName.js";
|
|
2
1
|
/**
|
|
3
2
|
* globalThis when supported.
|
|
4
3
|
* if not, window in browser, global in nodejs
|
|
5
4
|
* @public
|
|
6
5
|
*/
|
|
7
6
|
export const globalObject = typeof globalThis === 'undefined' ? (typeof window === 'undefined' ? global : window) : globalThis;
|
|
8
|
-
function ensureGlobalObject(symbol, constructor) {
|
|
7
|
+
export function ensureGlobalObject(symbol, constructor) {
|
|
9
8
|
const sm = Symbol.for(symbol);
|
|
10
9
|
if (!globalObject[sm]) {
|
|
11
10
|
globalObject[sm] = constructor();
|
|
12
11
|
}
|
|
13
12
|
return globalObject[sm];
|
|
14
13
|
}
|
|
15
|
-
const symbolRegistry = ensureGlobalObject(`@@idlebox/global-symbol`, () => {
|
|
16
|
-
return {};
|
|
17
|
-
});
|
|
18
|
-
/**
|
|
19
|
-
* Get a symbol singleton, if not exists, create it
|
|
20
|
-
*
|
|
21
|
-
* this is very like Symbol.for, but not real global symbol
|
|
22
|
-
* @public
|
|
23
|
-
*/
|
|
24
|
-
export function createSymbol(category, name) {
|
|
25
|
-
if (symbolRegistry[category] && symbolRegistry[category][name]) {
|
|
26
|
-
return symbolRegistry[category][name];
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
if (!symbolRegistry[category]) {
|
|
30
|
-
symbolRegistry[category] = {};
|
|
31
|
-
}
|
|
32
|
-
symbolRegistry[category][name] = Symbol(name);
|
|
33
|
-
return symbolRegistry[category][name];
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Delete a symbol from window/global object
|
|
38
|
-
* @public
|
|
39
|
-
*/
|
|
40
|
-
export function deleteSymbol(category, name) {
|
|
41
|
-
if (symbolRegistry[category] && symbolRegistry[category][name]) {
|
|
42
|
-
delete symbolRegistry[category][name];
|
|
43
|
-
if (Object.keys(symbolRegistry[category]).length === 0) {
|
|
44
|
-
delete symbolRegistry[category];
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
const singletonRegistry = ensureGlobalObject(`@@idlebox/global-singleton`, () => {
|
|
49
|
-
return new Map();
|
|
50
|
-
});
|
|
51
|
-
export function globalSingletonStrong(symbol, constructor) {
|
|
52
|
-
let object = globalObject.get(symbol);
|
|
53
|
-
if (object instanceof WeakRef) {
|
|
54
|
-
const target = object.deref();
|
|
55
|
-
if (target !== undefined) {
|
|
56
|
-
object = target;
|
|
57
|
-
}
|
|
58
|
-
else if (constructor) {
|
|
59
|
-
object = constructor();
|
|
60
|
-
if (object === undefined)
|
|
61
|
-
throw new TypeError(`singleton constructor (${functionName(constructor)}) returned undefined.`);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
singletonRegistry.delete(symbol);
|
|
65
|
-
return undefined;
|
|
66
|
-
}
|
|
67
|
-
singletonRegistry.set(symbol, object);
|
|
68
|
-
}
|
|
69
|
-
else if (object === undefined && constructor) {
|
|
70
|
-
object = constructor();
|
|
71
|
-
if (object === undefined)
|
|
72
|
-
throw new TypeError(`singleton constructor (${functionName(constructor)}) returned undefined.`);
|
|
73
|
-
singletonRegistry.set(symbol, object);
|
|
74
|
-
}
|
|
75
|
-
return object;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Delete a key from window/global space
|
|
79
|
-
* use with care
|
|
80
|
-
* @public
|
|
81
|
-
*/
|
|
82
|
-
export function globalSingletonDelete(symbol) {
|
|
83
|
-
singletonRegistry.delete(symbol);
|
|
84
|
-
}
|
|
85
|
-
export function globalSingleton(symbol, constructor) {
|
|
86
|
-
if (singletonRegistry.has(symbol)) {
|
|
87
|
-
let object = singletonRegistry.get(symbol);
|
|
88
|
-
if (object instanceof WeakRef) {
|
|
89
|
-
object = object.deref();
|
|
90
|
-
if (object)
|
|
91
|
-
return object;
|
|
92
|
-
singletonRegistry.delete(symbol);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
return object; // strong
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
if (constructor) {
|
|
99
|
-
const object = new WeakRef(constructor());
|
|
100
|
-
singletonRegistry.set(symbol, object);
|
|
101
|
-
return object.deref();
|
|
102
|
-
}
|
|
103
|
-
return undefined;
|
|
104
|
-
}
|
|
105
14
|
//# sourceMappingURL=globalObject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalObject.js","sourceRoot":"","sources":["../../src/platform/globalObject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"globalObject.js","sourceRoot":"","sources":["../../src/platform/globalObject.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GACxB,OAAO,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAEpG,MAAM,UAAU,kBAAkB,CAAI,MAAc,EAAE,WAAoB;IACzE,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;QACtB,YAAY,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC;KACjC;IACD,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.globalSingleton = exports.globalSingletonDelete = exports.globalSingletonStrong = void 0;
|
|
4
|
+
const functionName_cjs_1 = require("../function/functionName.cjs");
|
|
5
|
+
const globalObject_cjs_1 = require("./globalObject.cjs");
|
|
6
|
+
const singletonRegistry = (0, globalObject_cjs_1.ensureGlobalObject)(`@@idlebox/global-singleton`, () => {
|
|
7
|
+
return new Map();
|
|
8
|
+
});
|
|
9
|
+
function globalSingletonStrong(symbol, constructor) {
|
|
10
|
+
let object = singletonRegistry.get(symbol);
|
|
11
|
+
if (object instanceof WeakRef) {
|
|
12
|
+
const target = object.deref();
|
|
13
|
+
if (target !== undefined) {
|
|
14
|
+
object = target;
|
|
15
|
+
}
|
|
16
|
+
else if (constructor) {
|
|
17
|
+
object = constructor();
|
|
18
|
+
if (object === undefined)
|
|
19
|
+
throw new TypeError(`singleton constructor (${(0, functionName_cjs_1.functionName)(constructor)}) returned undefined.`);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
singletonRegistry.delete(symbol);
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
singletonRegistry.set(symbol, object);
|
|
26
|
+
}
|
|
27
|
+
else if (object === undefined && constructor) {
|
|
28
|
+
object = constructor();
|
|
29
|
+
if (object === undefined)
|
|
30
|
+
throw new TypeError(`singleton constructor (${(0, functionName_cjs_1.functionName)(constructor)}) returned undefined.`);
|
|
31
|
+
singletonRegistry.set(symbol, object);
|
|
32
|
+
}
|
|
33
|
+
return object;
|
|
34
|
+
}
|
|
35
|
+
exports.globalSingletonStrong = globalSingletonStrong;
|
|
36
|
+
/**
|
|
37
|
+
* Delete a key from window/global space
|
|
38
|
+
* use with care
|
|
39
|
+
* @public
|
|
40
|
+
*/
|
|
41
|
+
function globalSingletonDelete(symbol) {
|
|
42
|
+
singletonRegistry.delete(symbol);
|
|
43
|
+
}
|
|
44
|
+
exports.globalSingletonDelete = globalSingletonDelete;
|
|
45
|
+
function globalSingleton(symbol, constructor) {
|
|
46
|
+
if (singletonRegistry.has(symbol)) {
|
|
47
|
+
let object = singletonRegistry.get(symbol);
|
|
48
|
+
if (object instanceof WeakRef) {
|
|
49
|
+
object = object.deref();
|
|
50
|
+
if (object)
|
|
51
|
+
return object;
|
|
52
|
+
singletonRegistry.delete(symbol);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
return object; // strong
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (constructor) {
|
|
59
|
+
const object = new WeakRef(constructor());
|
|
60
|
+
singletonRegistry.set(symbol, object);
|
|
61
|
+
return object.deref();
|
|
62
|
+
}
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
exports.globalSingleton = globalSingleton;
|
|
66
|
+
//# sourceMappingURL=globalSingleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalSingleton.js","sourceRoot":"","sources":["../../src/platform/globalSingleton.ts"],"names":[],"mappings":";;;AAAA,mEAAwD;AACxD,yDAAoD;AAEpD,MAAM,iBAAiB,GAAG,IAAA,qCAAkB,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC/E,OAAO,IAAI,GAAG,EAAwB,CAAC;AACxC,CAAC,CAAC,CAAC;AAcH,SAAgB,qBAAqB,CAAI,MAAuB,EAAE,WAAqB;IACtF,IAAI,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,MAAM,YAAY,OAAO,EAAE;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,MAAM,KAAK,SAAS,EAAE;YACzB,MAAM,GAAG,MAAM,CAAC;SAChB;aAAM,IAAI,WAAW,EAAE;YACvB,MAAM,GAAG,WAAW,EAAE,CAAC;YACvB,IAAI,MAAM,KAAK,SAAS;gBACvB,MAAM,IAAI,SAAS,CAAC,0BAA0B,IAAA,+BAAY,EAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;SACjG;aAAM;YACN,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,OAAO,SAAS,CAAC;SACjB;QACD,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACtC;SAAM,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW,EAAE;QAC/C,MAAM,GAAG,WAAW,EAAE,CAAC;QACvB,IAAI,MAAM,KAAK,SAAS;YACvB,MAAM,IAAI,SAAS,CAAC,0BAA0B,IAAA,+BAAY,EAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QACjG,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACtC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAtBD,sDAsBC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,MAAuB;IAC5D,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAFD,sDAEC;AAYD,SAAgB,eAAe,CAAI,MAAuB,EAAE,WAAqB;IAChF,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAClC,IAAI,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,MAAM,YAAY,OAAO,EAAE;YAC9B,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC1B,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACjC;aAAM;YACN,OAAO,MAAM,CAAC,CAAC,SAAS;SACxB;KACD;IAED,IAAI,WAAW,EAAE;QAChB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAS,CAAC,CAAC;QACjD,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;KACtB;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAnBD,0CAmBC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { functionName } from "../function/functionName.js";
|
|
2
|
+
import { ensureGlobalObject } from "./globalObject.js";
|
|
3
|
+
const singletonRegistry = ensureGlobalObject(`@@idlebox/global-singleton`, () => {
|
|
4
|
+
return new Map();
|
|
5
|
+
});
|
|
6
|
+
export function globalSingletonStrong(symbol, constructor) {
|
|
7
|
+
let object = singletonRegistry.get(symbol);
|
|
8
|
+
if (object instanceof WeakRef) {
|
|
9
|
+
const target = object.deref();
|
|
10
|
+
if (target !== undefined) {
|
|
11
|
+
object = target;
|
|
12
|
+
}
|
|
13
|
+
else if (constructor) {
|
|
14
|
+
object = constructor();
|
|
15
|
+
if (object === undefined)
|
|
16
|
+
throw new TypeError(`singleton constructor (${functionName(constructor)}) returned undefined.`);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
singletonRegistry.delete(symbol);
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
singletonRegistry.set(symbol, object);
|
|
23
|
+
}
|
|
24
|
+
else if (object === undefined && constructor) {
|
|
25
|
+
object = constructor();
|
|
26
|
+
if (object === undefined)
|
|
27
|
+
throw new TypeError(`singleton constructor (${functionName(constructor)}) returned undefined.`);
|
|
28
|
+
singletonRegistry.set(symbol, object);
|
|
29
|
+
}
|
|
30
|
+
return object;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Delete a key from window/global space
|
|
34
|
+
* use with care
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
37
|
+
export function globalSingletonDelete(symbol) {
|
|
38
|
+
singletonRegistry.delete(symbol);
|
|
39
|
+
}
|
|
40
|
+
export function globalSingleton(symbol, constructor) {
|
|
41
|
+
if (singletonRegistry.has(symbol)) {
|
|
42
|
+
let object = singletonRegistry.get(symbol);
|
|
43
|
+
if (object instanceof WeakRef) {
|
|
44
|
+
object = object.deref();
|
|
45
|
+
if (object)
|
|
46
|
+
return object;
|
|
47
|
+
singletonRegistry.delete(symbol);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return object; // strong
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (constructor) {
|
|
54
|
+
const object = new WeakRef(constructor());
|
|
55
|
+
singletonRegistry.set(symbol, object);
|
|
56
|
+
return object.deref();
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=globalSingleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalSingleton.js","sourceRoot":"","sources":["../../src/platform/globalSingleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oCAAiC;AACxD,OAAO,EAAE,kBAAkB,EAAE,0BAAuB;AAEpD,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC/E,OAAO,IAAI,GAAG,EAAwB,CAAC;AACxC,CAAC,CAAC,CAAC;AAcH,MAAM,UAAU,qBAAqB,CAAI,MAAuB,EAAE,WAAqB;IACtF,IAAI,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,MAAM,YAAY,OAAO,EAAE;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,MAAM,KAAK,SAAS,EAAE;YACzB,MAAM,GAAG,MAAM,CAAC;SAChB;aAAM,IAAI,WAAW,EAAE;YACvB,MAAM,GAAG,WAAW,EAAE,CAAC;YACvB,IAAI,MAAM,KAAK,SAAS;gBACvB,MAAM,IAAI,SAAS,CAAC,0BAA0B,YAAY,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;SACjG;aAAM;YACN,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,OAAO,SAAS,CAAC;SACjB;QACD,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACtC;SAAM,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW,EAAE;QAC/C,MAAM,GAAG,WAAW,EAAE,CAAC;QACvB,IAAI,MAAM,KAAK,SAAS;YACvB,MAAM,IAAI,SAAS,CAAC,0BAA0B,YAAY,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QACjG,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACtC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAuB;IAC5D,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAYD,MAAM,UAAU,eAAe,CAAI,MAAuB,EAAE,WAAqB;IAChF,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAClC,IAAI,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,MAAM,YAAY,OAAO,EAAE;YAC9B,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC1B,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACjC;aAAM;YACN,OAAO,MAAM,CAAC,CAAC,SAAS;SACxB;KACD;IAED,IAAI,WAAW,EAAE;QAChB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAS,CAAC,CAAC;QACjD,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;KACtB;IAED,OAAO,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteSymbol = exports.createSymbol = void 0;
|
|
4
|
+
const globalObject_cjs_1 = require("./globalObject.cjs");
|
|
5
|
+
const symbolRegistry = (0, globalObject_cjs_1.ensureGlobalObject)(`@@idlebox/global-symbol`, () => {
|
|
6
|
+
return {};
|
|
7
|
+
});
|
|
8
|
+
/**
|
|
9
|
+
* Get a symbol singleton, if not exists, create it
|
|
10
|
+
*
|
|
11
|
+
* this is very like Symbol.for, but not real global symbol
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
function createSymbol(category, name) {
|
|
15
|
+
if (symbolRegistry[category] && symbolRegistry[category][name]) {
|
|
16
|
+
return symbolRegistry[category][name];
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
if (!symbolRegistry[category]) {
|
|
20
|
+
symbolRegistry[category] = {};
|
|
21
|
+
}
|
|
22
|
+
symbolRegistry[category][name] = Symbol(name);
|
|
23
|
+
return symbolRegistry[category][name];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.createSymbol = createSymbol;
|
|
27
|
+
/**
|
|
28
|
+
* Delete a symbol from window/global object
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
function deleteSymbol(category, name) {
|
|
32
|
+
if (symbolRegistry[category] && symbolRegistry[category][name]) {
|
|
33
|
+
delete symbolRegistry[category][name];
|
|
34
|
+
if (Object.keys(symbolRegistry[category]).length === 0) {
|
|
35
|
+
delete symbolRegistry[category];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.deleteSymbol = deleteSymbol;
|
|
40
|
+
//# sourceMappingURL=globalSymbol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalSymbol.js","sourceRoot":"","sources":["../../src/platform/globalSymbol.ts"],"names":[],"mappings":";;;AAAA,yDAAoD;AAEpD,MAAM,cAAc,GAAG,IAAA,qCAAkB,EAAC,yBAAyB,EAAE,GAAG,EAAE;IACzE,OAAO,EAA4C,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,QAAgB,EAAE,IAAY;IAC1D,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE;QAC/D,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;KACtC;SAAM;QACN,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;YAC9B,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;SAC9B;QACD,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;KACtC;AACF,CAAC;AAVD,oCAUC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,QAAgB,EAAE,IAAY;IAC1D,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE;QAC/D,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACvD,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;SAChC;KACD;AACF,CAAC;AAPD,oCAOC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ensureGlobalObject } from "./globalObject.js";
|
|
2
|
+
const symbolRegistry = ensureGlobalObject(`@@idlebox/global-symbol`, () => {
|
|
3
|
+
return {};
|
|
4
|
+
});
|
|
5
|
+
/**
|
|
6
|
+
* Get a symbol singleton, if not exists, create it
|
|
7
|
+
*
|
|
8
|
+
* this is very like Symbol.for, but not real global symbol
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export function createSymbol(category, name) {
|
|
12
|
+
if (symbolRegistry[category] && symbolRegistry[category][name]) {
|
|
13
|
+
return symbolRegistry[category][name];
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
if (!symbolRegistry[category]) {
|
|
17
|
+
symbolRegistry[category] = {};
|
|
18
|
+
}
|
|
19
|
+
symbolRegistry[category][name] = Symbol(name);
|
|
20
|
+
return symbolRegistry[category][name];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Delete a symbol from window/global object
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
export function deleteSymbol(category, name) {
|
|
28
|
+
if (symbolRegistry[category] && symbolRegistry[category][name]) {
|
|
29
|
+
delete symbolRegistry[category][name];
|
|
30
|
+
if (Object.keys(symbolRegistry[category]).length === 0) {
|
|
31
|
+
delete symbolRegistry[category];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=globalSymbol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalSymbol.js","sourceRoot":"","sources":["../../src/platform/globalSymbol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,0BAAuB;AAEpD,MAAM,cAAc,GAAG,kBAAkB,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACzE,OAAO,EAA4C,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,IAAY;IAC1D,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE;QAC/D,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;KACtC;SAAM;QACN,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;YAC9B,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;SAC9B;QACD,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;KACtC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,IAAY;IAC1D,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE;QAC/D,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACvD,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;SAChC;KACD;AACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "@idlebox/common",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"typings": "docs/package-public.d.ts",
|
|
6
|
-
"version": "1.
|
|
6
|
+
"version": "1.3.0",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"main": "./lib/_export_all_in_one_index.cjs",
|
|
9
9
|
"module": "./lib/_export_all_in_one_index.js",
|
|
@@ -20,23 +20,24 @@
|
|
|
20
20
|
"scripts": {
|
|
21
21
|
"build": "build-script build",
|
|
22
22
|
"clean": "rimraf lib",
|
|
23
|
+
"prepack": "build-script rebuild",
|
|
23
24
|
"test": "build-script test",
|
|
24
25
|
"watch": "build-script watch"
|
|
25
26
|
},
|
|
26
27
|
"dependencies": {
|
|
27
|
-
"source-map-support": "^0.5.
|
|
28
|
+
"source-map-support": "^0.5.21",
|
|
28
29
|
"tslib": "^2.3.1"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
|
-
"@build-script/builder": "^3.
|
|
32
|
-
"@build-script/export-all-in-one": "^3.0.
|
|
32
|
+
"@build-script/builder": "^3.2.2",
|
|
33
|
+
"@build-script/export-all-in-one": "^3.0.26",
|
|
33
34
|
"@build-script/single-dog-asset": "^1.0.14",
|
|
34
35
|
"@build-script/typescript-transformer-dual-package": "^1.0.22",
|
|
35
|
-
"@idlebox/itypes": "^0.0
|
|
36
|
+
"@idlebox/itypes": "^1.0.0",
|
|
36
37
|
"gulp": "^4.0.2",
|
|
37
38
|
"ttypescript": "^1.5.12",
|
|
38
|
-
"typescript": "^4.
|
|
39
|
-
"
|
|
39
|
+
"typescript": "^4.5.2",
|
|
40
|
+
"esm": "^3.2.25"
|
|
40
41
|
},
|
|
41
42
|
"repository": "https://github.com/GongT/baobao"
|
|
42
43
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { globalSingletonStrong } from '../../platform/globalSingleton';
|
|
2
|
+
import { createSymbol } from '../../platform/globalSymbol';
|
|
1
3
|
import { IDisposable } from './lifecycle';
|
|
2
|
-
import { createSymbol, globalSingletonStrong } from '../../platform/globalObject';
|
|
3
4
|
import { AsyncDisposable } from './lifecycle.async';
|
|
4
5
|
|
|
5
6
|
const symbol = createSymbol('lifecycle', 'application');
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { functionName } from '../function/functionName';
|
|
2
|
-
|
|
3
1
|
declare const global: any;
|
|
4
2
|
declare const window: any;
|
|
5
3
|
|
|
@@ -11,125 +9,10 @@ declare const window: any;
|
|
|
11
9
|
export const globalObject: any =
|
|
12
10
|
typeof globalThis === 'undefined' ? (typeof window === 'undefined' ? global : window) : globalThis;
|
|
13
11
|
|
|
14
|
-
function ensureGlobalObject<T>(symbol: string, constructor: () => T): T {
|
|
12
|
+
export function ensureGlobalObject<T>(symbol: string, constructor: () => T): T {
|
|
15
13
|
const sm = Symbol.for(symbol);
|
|
16
14
|
if (!globalObject[sm]) {
|
|
17
15
|
globalObject[sm] = constructor();
|
|
18
16
|
}
|
|
19
17
|
return globalObject[sm];
|
|
20
18
|
}
|
|
21
|
-
|
|
22
|
-
const symbolRegistry = ensureGlobalObject(`@@idlebox/global-symbol`, () => {
|
|
23
|
-
return {} as Record<string, Record<string, symbol>>;
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Get a symbol singleton, if not exists, create it
|
|
28
|
-
*
|
|
29
|
-
* this is very like Symbol.for, but not real global symbol
|
|
30
|
-
* @public
|
|
31
|
-
*/
|
|
32
|
-
export function createSymbol(category: string, name: string): symbol {
|
|
33
|
-
if (symbolRegistry[category] && symbolRegistry[category][name]) {
|
|
34
|
-
return symbolRegistry[category][name];
|
|
35
|
-
} else {
|
|
36
|
-
if (!symbolRegistry[category]) {
|
|
37
|
-
symbolRegistry[category] = {};
|
|
38
|
-
}
|
|
39
|
-
symbolRegistry[category][name] = Symbol(name);
|
|
40
|
-
return symbolRegistry[category][name];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Delete a symbol from window/global object
|
|
46
|
-
* @public
|
|
47
|
-
*/
|
|
48
|
-
export function deleteSymbol(category: string, name: string) {
|
|
49
|
-
if (symbolRegistry[category] && symbolRegistry[category][name]) {
|
|
50
|
-
delete symbolRegistry[category][name];
|
|
51
|
-
if (Object.keys(symbolRegistry[category]).length === 0) {
|
|
52
|
-
delete symbolRegistry[category];
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const singletonRegistry = ensureGlobalObject(`@@idlebox/global-singleton`, () => {
|
|
58
|
-
return new Map<string | symbol, any>();
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Get an singleton instance from window/global space
|
|
63
|
-
* if symbol did not exists, create it and assign to window/global
|
|
64
|
-
* @public
|
|
65
|
-
*/
|
|
66
|
-
export function globalSingletonStrong<T>(symbol: symbol | string, constructor: () => T): T;
|
|
67
|
-
/**
|
|
68
|
-
* Get an singleton instance from window/global space
|
|
69
|
-
* @public
|
|
70
|
-
*/
|
|
71
|
-
export function globalSingletonStrong<T>(symbol: symbol | string): T | undefined;
|
|
72
|
-
|
|
73
|
-
export function globalSingletonStrong<T>(symbol: symbol | string, constructor?: () => T): T | undefined {
|
|
74
|
-
let object = globalObject.get(symbol);
|
|
75
|
-
if (object instanceof WeakRef) {
|
|
76
|
-
const target = object.deref();
|
|
77
|
-
if (target !== undefined) {
|
|
78
|
-
object = target;
|
|
79
|
-
} else if (constructor) {
|
|
80
|
-
object = constructor();
|
|
81
|
-
if (object === undefined)
|
|
82
|
-
throw new TypeError(`singleton constructor (${functionName(constructor)}) returned undefined.`);
|
|
83
|
-
} else {
|
|
84
|
-
singletonRegistry.delete(symbol);
|
|
85
|
-
return undefined;
|
|
86
|
-
}
|
|
87
|
-
singletonRegistry.set(symbol, object);
|
|
88
|
-
} else if (object === undefined && constructor) {
|
|
89
|
-
object = constructor();
|
|
90
|
-
if (object === undefined)
|
|
91
|
-
throw new TypeError(`singleton constructor (${functionName(constructor)}) returned undefined.`);
|
|
92
|
-
singletonRegistry.set(symbol, object);
|
|
93
|
-
}
|
|
94
|
-
return object;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Delete a key from window/global space
|
|
99
|
-
* use with care
|
|
100
|
-
* @public
|
|
101
|
-
*/
|
|
102
|
-
export function globalSingletonDelete(symbol: symbol | string) {
|
|
103
|
-
singletonRegistry.delete(symbol);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Same with globalSingletonStrong, but save instance in a WeakMap, so it maybe delete by gc if no reference
|
|
108
|
-
* @public
|
|
109
|
-
*/
|
|
110
|
-
export function globalSingleton<T>(symbol: symbol | string, constructor: () => T): T;
|
|
111
|
-
/**
|
|
112
|
-
* Same with globalSingletonStrong, but save instance in a WeakMap, so it maybe delete by gc if no reference
|
|
113
|
-
* @public
|
|
114
|
-
*/
|
|
115
|
-
export function globalSingleton<T>(symbol: symbol | string): T | undefined;
|
|
116
|
-
export function globalSingleton<T>(symbol: symbol | string, constructor?: () => T): T | undefined {
|
|
117
|
-
if (singletonRegistry.has(symbol)) {
|
|
118
|
-
let object = singletonRegistry.get(symbol);
|
|
119
|
-
if (object instanceof WeakRef) {
|
|
120
|
-
object = object.deref();
|
|
121
|
-
if (object) return object;
|
|
122
|
-
singletonRegistry.delete(symbol);
|
|
123
|
-
} else {
|
|
124
|
-
return object; // strong
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
if (constructor) {
|
|
129
|
-
const object = new WeakRef(constructor() as any);
|
|
130
|
-
singletonRegistry.set(symbol, object);
|
|
131
|
-
return object.deref();
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
return undefined;
|
|
135
|
-
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { functionName } from '../function/functionName';
|
|
2
|
+
import { ensureGlobalObject } from './globalObject';
|
|
3
|
+
|
|
4
|
+
const singletonRegistry = ensureGlobalObject(`@@idlebox/global-singleton`, () => {
|
|
5
|
+
return new Map<string | symbol, any>();
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Get an singleton instance from window/global space
|
|
10
|
+
* if symbol did not exists, create it and assign to window/global
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export function globalSingletonStrong<T>(symbol: symbol | string, constructor: () => T): T;
|
|
14
|
+
/**
|
|
15
|
+
* Get an singleton instance from window/global space
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
export function globalSingletonStrong<T>(symbol: symbol | string): T | undefined;
|
|
19
|
+
|
|
20
|
+
export function globalSingletonStrong<T>(symbol: symbol | string, constructor?: () => T): T | undefined {
|
|
21
|
+
let object = singletonRegistry.get(symbol);
|
|
22
|
+
if (object instanceof WeakRef) {
|
|
23
|
+
const target = object.deref();
|
|
24
|
+
if (target !== undefined) {
|
|
25
|
+
object = target;
|
|
26
|
+
} else if (constructor) {
|
|
27
|
+
object = constructor();
|
|
28
|
+
if (object === undefined)
|
|
29
|
+
throw new TypeError(`singleton constructor (${functionName(constructor)}) returned undefined.`);
|
|
30
|
+
} else {
|
|
31
|
+
singletonRegistry.delete(symbol);
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
singletonRegistry.set(symbol, object);
|
|
35
|
+
} else if (object === undefined && constructor) {
|
|
36
|
+
object = constructor();
|
|
37
|
+
if (object === undefined)
|
|
38
|
+
throw new TypeError(`singleton constructor (${functionName(constructor)}) returned undefined.`);
|
|
39
|
+
singletonRegistry.set(symbol, object);
|
|
40
|
+
}
|
|
41
|
+
return object;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Delete a key from window/global space
|
|
46
|
+
* use with care
|
|
47
|
+
* @public
|
|
48
|
+
*/
|
|
49
|
+
export function globalSingletonDelete(symbol: symbol | string) {
|
|
50
|
+
singletonRegistry.delete(symbol);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Same with globalSingletonStrong, but save instance in a WeakMap, so it maybe delete by gc if no reference
|
|
55
|
+
* @public
|
|
56
|
+
*/
|
|
57
|
+
export function globalSingleton<T>(symbol: symbol | string, constructor: () => T): T;
|
|
58
|
+
/**
|
|
59
|
+
* Same with globalSingletonStrong, but save instance in a WeakMap, so it maybe delete by gc if no reference
|
|
60
|
+
* @public
|
|
61
|
+
*/
|
|
62
|
+
export function globalSingleton<T>(symbol: symbol | string): T | undefined;
|
|
63
|
+
export function globalSingleton<T>(symbol: symbol | string, constructor?: () => T): T | undefined {
|
|
64
|
+
if (singletonRegistry.has(symbol)) {
|
|
65
|
+
let object = singletonRegistry.get(symbol);
|
|
66
|
+
if (object instanceof WeakRef) {
|
|
67
|
+
object = object.deref();
|
|
68
|
+
if (object) return object;
|
|
69
|
+
singletonRegistry.delete(symbol);
|
|
70
|
+
} else {
|
|
71
|
+
return object; // strong
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (constructor) {
|
|
76
|
+
const object = new WeakRef(constructor() as any);
|
|
77
|
+
singletonRegistry.set(symbol, object);
|
|
78
|
+
return object.deref();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ensureGlobalObject } from './globalObject';
|
|
2
|
+
|
|
3
|
+
const symbolRegistry = ensureGlobalObject(`@@idlebox/global-symbol`, () => {
|
|
4
|
+
return {} as Record<string, Record<string, symbol>>;
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Get a symbol singleton, if not exists, create it
|
|
9
|
+
*
|
|
10
|
+
* this is very like Symbol.for, but not real global symbol
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export function createSymbol(category: string, name: string): symbol {
|
|
14
|
+
if (symbolRegistry[category] && symbolRegistry[category][name]) {
|
|
15
|
+
return symbolRegistry[category][name];
|
|
16
|
+
} else {
|
|
17
|
+
if (!symbolRegistry[category]) {
|
|
18
|
+
symbolRegistry[category] = {};
|
|
19
|
+
}
|
|
20
|
+
symbolRegistry[category][name] = Symbol(name);
|
|
21
|
+
return symbolRegistry[category][name];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Delete a symbol from window/global object
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
29
|
+
export function deleteSymbol(category: string, name: string) {
|
|
30
|
+
if (symbolRegistry[category] && symbolRegistry[category][name]) {
|
|
31
|
+
delete symbolRegistry[category][name];
|
|
32
|
+
if (Object.keys(symbolRegistry[category]).length === 0) {
|
|
33
|
+
delete symbolRegistry[category];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
package/scripts/postbuild.js
DELETED