@zk-tech/bedrock 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/dist/array/index.cjs +22 -0
- package/dist/array/index.cjs.map +1 -0
- package/dist/array/index.d.cts +13 -0
- package/dist/array/index.d.ts +13 -0
- package/dist/array/index.js +19 -0
- package/dist/array/index.js.map +1 -0
- package/dist/assert/index.cjs +29 -0
- package/dist/assert/index.cjs.map +1 -0
- package/dist/assert/index.d.cts +25 -0
- package/dist/assert/index.d.ts +25 -0
- package/dist/assert/index.js +24 -0
- package/dist/assert/index.js.map +1 -0
- package/dist/async/index.cjs +746 -0
- package/dist/async/index.cjs.map +1 -0
- package/dist/async/index.d.cts +47 -0
- package/dist/async/index.d.ts +47 -0
- package/dist/async/index.js +738 -0
- package/dist/async/index.js.map +1 -0
- package/dist/barrier-316Xonfd.d.cts +18 -0
- package/dist/barrier-316Xonfd.d.ts +18 -0
- package/dist/byte/index.cjs +59 -0
- package/dist/byte/index.cjs.map +1 -0
- package/dist/byte/index.d.cts +12 -0
- package/dist/byte/index.d.ts +12 -0
- package/dist/byte/index.js +49 -0
- package/dist/byte/index.js.map +1 -0
- package/dist/cache/index.cjs +418 -0
- package/dist/cache/index.cjs.map +1 -0
- package/dist/cache/index.d.cts +40 -0
- package/dist/cache/index.d.ts +40 -0
- package/dist/cache/index.js +415 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cancellation-BIIv2UJm.d.cts +25 -0
- package/dist/cancellation-ClqPPsV1.d.ts +25 -0
- package/dist/context/index.cjs +59 -0
- package/dist/context/index.cjs.map +1 -0
- package/dist/context/index.d.cts +33 -0
- package/dist/context/index.d.ts +33 -0
- package/dist/context/index.js +51 -0
- package/dist/context/index.js.map +1 -0
- package/dist/di/index.cjs +1965 -0
- package/dist/di/index.cjs.map +1 -0
- package/dist/di/index.d.cts +140 -0
- package/dist/di/index.d.ts +140 -0
- package/dist/di/index.js +1949 -0
- package/dist/di/index.js.map +1 -0
- package/dist/disposable-t-B15Nu57y.d.ts +93 -0
- package/dist/disposable-t-CVsiyHPL.d.cts +93 -0
- package/dist/dispose/index.cjs +356 -0
- package/dist/dispose/index.cjs.map +1 -0
- package/dist/dispose/index.d.cts +26 -0
- package/dist/dispose/index.d.ts +26 -0
- package/dist/dispose/index.js +340 -0
- package/dist/dispose/index.js.map +1 -0
- package/dist/dispose-base-CAeXDpjg.d.cts +6 -0
- package/dist/dispose-base-CAeXDpjg.d.ts +6 -0
- package/dist/emitter-CAfCtSTg.d.cts +35 -0
- package/dist/emitter-DeM5mlEm.d.ts +35 -0
- package/dist/error/index.cjs +145 -0
- package/dist/error/index.cjs.map +1 -0
- package/dist/error/index.d.cts +45 -0
- package/dist/error/index.d.ts +45 -0
- package/dist/error/index.js +126 -0
- package/dist/error/index.js.map +1 -0
- package/dist/error-base-B4zaiJ5m.d.cts +32 -0
- package/dist/error-base-B4zaiJ5m.d.ts +32 -0
- package/dist/event/index.cjs +550 -0
- package/dist/event/index.cjs.map +1 -0
- package/dist/event/index.d.cts +139 -0
- package/dist/event/index.d.ts +139 -0
- package/dist/event/index.js +538 -0
- package/dist/event/index.js.map +1 -0
- package/dist/function/index.cjs +132 -0
- package/dist/function/index.cjs.map +1 -0
- package/dist/function/index.d.cts +26 -0
- package/dist/function/index.d.ts +26 -0
- package/dist/function/index.js +129 -0
- package/dist/function/index.js.map +1 -0
- package/dist/graph-BGbNOniY.d.cts +23 -0
- package/dist/graph-BGbNOniY.d.ts +23 -0
- package/dist/hash/index.cjs +54 -0
- package/dist/hash/index.cjs.map +1 -0
- package/dist/hash/index.d.cts +5 -0
- package/dist/hash/index.d.ts +5 -0
- package/dist/hash/index.js +50 -0
- package/dist/hash/index.js.map +1 -0
- package/dist/instantiation-service.interface-CVFMBUUD.d.cts +78 -0
- package/dist/instantiation-service.interface-CVFMBUUD.d.ts +78 -0
- package/dist/json/index.cjs +28 -0
- package/dist/json/index.cjs.map +1 -0
- package/dist/json/index.d.cts +8 -0
- package/dist/json/index.d.ts +8 -0
- package/dist/json/index.js +26 -0
- package/dist/json/index.js.map +1 -0
- package/dist/launch/index.cjs +213 -0
- package/dist/launch/index.cjs.map +1 -0
- package/dist/launch/index.d.cts +46 -0
- package/dist/launch/index.d.ts +46 -0
- package/dist/launch/index.js +211 -0
- package/dist/launch/index.js.map +1 -0
- package/dist/linked-list-CUkue5DZ.d.cts +24 -0
- package/dist/linked-list-CUkue5DZ.d.ts +24 -0
- package/dist/lock/index.cjs +662 -0
- package/dist/lock/index.cjs.map +1 -0
- package/dist/lock/index.d.cts +145 -0
- package/dist/lock/index.d.ts +145 -0
- package/dist/lock/index.js +656 -0
- package/dist/lock/index.js.map +1 -0
- package/dist/lodash-es/index.cjs +14 -0
- package/dist/lodash-es/index.cjs.map +1 -0
- package/dist/lodash-es/index.d.cts +1 -0
- package/dist/lodash-es/index.d.ts +1 -0
- package/dist/lodash-es/index.js +3 -0
- package/dist/lodash-es/index.js.map +1 -0
- package/dist/math/index.cjs +161 -0
- package/dist/math/index.cjs.map +1 -0
- package/dist/math/index.d.cts +76 -0
- package/dist/math/index.d.ts +76 -0
- package/dist/math/index.js +156 -0
- package/dist/math/index.js.map +1 -0
- package/dist/network/index.cjs +91 -0
- package/dist/network/index.cjs.map +1 -0
- package/dist/network/index.d.cts +62 -0
- package/dist/network/index.d.ts +62 -0
- package/dist/network/index.js +82 -0
- package/dist/network/index.js.map +1 -0
- package/dist/objects/index.cjs +80 -0
- package/dist/objects/index.cjs.map +1 -0
- package/dist/objects/index.d.cts +11 -0
- package/dist/objects/index.d.ts +11 -0
- package/dist/objects/index.js +77 -0
- package/dist/objects/index.js.map +1 -0
- package/dist/platform/index.cjs +62 -0
- package/dist/platform/index.cjs.map +1 -0
- package/dist/platform/index.d.cts +21 -0
- package/dist/platform/index.d.ts +21 -0
- package/dist/platform/index.js +48 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/promise/index.cjs +639 -0
- package/dist/promise/index.cjs.map +1 -0
- package/dist/promise/index.d.cts +63 -0
- package/dist/promise/index.d.ts +63 -0
- package/dist/promise/index.js +633 -0
- package/dist/promise/index.js.map +1 -0
- package/dist/scheduler/index.cjs +599 -0
- package/dist/scheduler/index.cjs.map +1 -0
- package/dist/scheduler/index.d.cts +57 -0
- package/dist/scheduler/index.d.ts +57 -0
- package/dist/scheduler/index.js +594 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/sprintf/index.cjs +101 -0
- package/dist/sprintf/index.cjs.map +1 -0
- package/dist/sprintf/index.d.cts +3 -0
- package/dist/sprintf/index.d.ts +3 -0
- package/dist/sprintf/index.js +99 -0
- package/dist/sprintf/index.js.map +1 -0
- package/dist/structure/index.cjs +300 -0
- package/dist/structure/index.cjs.map +1 -0
- package/dist/structure/index.d.cts +21 -0
- package/dist/structure/index.d.ts +21 -0
- package/dist/structure/index.js +296 -0
- package/dist/structure/index.js.map +1 -0
- package/dist/type/index.cjs +4 -0
- package/dist/type/index.cjs.map +1 -0
- package/dist/type/index.d.cts +20 -0
- package/dist/type/index.d.ts +20 -0
- package/dist/type/index.js +3 -0
- package/dist/type/index.js.map +1 -0
- package/dist/undo-redo-stack/index.cjs +545 -0
- package/dist/undo-redo-stack/index.cjs.map +1 -0
- package/dist/undo-redo-stack/index.d.cts +130 -0
- package/dist/undo-redo-stack/index.d.ts +130 -0
- package/dist/undo-redo-stack/index.js +542 -0
- package/dist/undo-redo-stack/index.js.map +1 -0
- package/dist/uuid/index.cjs +67 -0
- package/dist/uuid/index.cjs.map +1 -0
- package/dist/uuid/index.d.cts +17 -0
- package/dist/uuid/index.d.ts +17 -0
- package/dist/uuid/index.js +61 -0
- package/dist/uuid/index.js.map +1 -0
- package/dist/worker/index.cjs +271 -0
- package/dist/worker/index.cjs.map +1 -0
- package/dist/worker/index.d.cts +66 -0
- package/dist/worker/index.d.ts +66 -0
- package/dist/worker/index.js +267 -0
- package/dist/worker/index.js.map +1 -0
- package/package.json +285 -0
- package/src/_internal/logger.ts +59 -0
- package/src/array/array.test.ts +35 -0
- package/src/array/array.ts +25 -0
- package/src/array/index.ts +1 -0
- package/src/assert/assert.test.ts +86 -0
- package/src/assert/assert.ts +42 -0
- package/src/assert/index.ts +2 -0
- package/src/async/barrier.test.ts +90 -0
- package/src/async/barrier.ts +58 -0
- package/src/async/cancellation.test.ts +85 -0
- package/src/async/cancellation.ts +193 -0
- package/src/async/index.ts +18 -0
- package/src/async/queue/queue.test.ts +70 -0
- package/src/async/queue/queue.ts +56 -0
- package/src/async/queue/task.test.ts +155 -0
- package/src/async/queue/task.ts +67 -0
- package/src/async/utils.test.ts +28 -0
- package/src/async/utils.ts +8 -0
- package/src/async/wait.ts +9 -0
- package/src/byte/format.test.ts +64 -0
- package/src/byte/format.ts +44 -0
- package/src/byte/index.ts +2 -0
- package/src/byte/node_modules/.vitest/results.json +1 -0
- package/src/byte/var.ts +11 -0
- package/src/cache/index.ts +2 -0
- package/src/cache/lru-with-timeout.test.ts +88 -0
- package/src/cache/lru-with-timeout.ts +85 -0
- package/src/cache/lru.test.ts +56 -0
- package/src/cache/lru.ts +59 -0
- package/src/context/context.test.ts +17 -0
- package/src/context/context.ts +60 -0
- package/src/context/index.ts +8 -0
- package/src/di/base.ts +73 -0
- package/src/di/container-service.test.ts +179 -0
- package/src/di/context.web.tsx +41 -0
- package/src/di/descriptor.ts +31 -0
- package/src/di/idle-value.test.ts +73 -0
- package/src/di/idle-value.ts +63 -0
- package/src/di/index.common.ts +32 -0
- package/src/di/index.ts +2 -0
- package/src/di/instantiation-service.interface.ts +46 -0
- package/src/di/instantiation-service.test.ts +337 -0
- package/src/di/instantiation-service.ts +468 -0
- package/src/di/lazy/foo.mock.ts +28 -0
- package/src/di/lazy/idle-load.ts +39 -0
- package/src/di/lazy/index.ts +4 -0
- package/src/di/lazy/lazy-service.test.ts +65 -0
- package/src/di/lazy/lazy-service.ts +71 -0
- package/src/di/lazy/type.ts +5 -0
- package/src/di/node_modules/.vitest/results.json +1 -0
- package/src/di/proxy-builder.test.ts +45 -0
- package/src/di/proxy-builder.ts +38 -0
- package/src/di/service-collection.test.ts +27 -0
- package/src/di/service-collection.ts +46 -0
- package/src/di/service-ownership-collection.test.ts +39 -0
- package/src/di/service-ownership-collection.ts +38 -0
- package/src/di/service-registry.test.ts +66 -0
- package/src/di/service-registry.ts +99 -0
- package/src/di/trace.ts +85 -0
- package/src/dispose/disposable-store.test.ts +57 -0
- package/src/dispose/disposable-store.ts +80 -0
- package/src/dispose/disposable-t.test.ts +123 -0
- package/src/dispose/disposable-t.ts +238 -0
- package/src/dispose/disposable-utils.test.ts +15 -0
- package/src/dispose/disposable-utils.ts +28 -0
- package/src/dispose/dispose-base.ts +9 -0
- package/src/dispose/index.ts +34 -0
- package/src/dispose/logger.test.ts +65 -0
- package/src/dispose/logger.ts +39 -0
- package/src/dispose/timer.test.ts +30 -0
- package/src/dispose/timer.ts +16 -0
- package/src/dispose/tracker.test.ts +51 -0
- package/src/dispose/tracker.ts +105 -0
- package/src/error/error-base.ts +45 -0
- package/src/error/error-code.ts +39 -0
- package/src/error/error-const.test.ts +30 -0
- package/src/error/error-const.ts +16 -0
- package/src/error/error-or.test.ts +44 -0
- package/src/error/error-or.ts +2 -0
- package/src/error/error-t.test.ts +116 -0
- package/src/error/error-t.ts +100 -0
- package/src/error/index.ts +24 -0
- package/src/error/node_modules/.vitest/results.json +1 -0
- package/src/event/disposable-linked-list.ts +29 -0
- package/src/event/emitter.test.ts +191 -0
- package/src/event/emitter.ts +162 -0
- package/src/event/error-handler.ts +22 -0
- package/src/event/index.ts +34 -0
- package/src/event/once.ts +29 -0
- package/src/event/phase-emitter.test.ts +212 -0
- package/src/event/phase-emitter.ts +209 -0
- package/src/event/shortcut-event-utils.ts +33 -0
- package/src/event/utils.ts +6 -0
- package/src/event/when.ts +40 -0
- package/src/function/debounce.test.ts +274 -0
- package/src/function/debounce.ts +168 -0
- package/src/function/index.ts +2 -0
- package/src/function/node_modules/.vitest/results.json +1 -0
- package/src/function/throttle.test.ts +179 -0
- package/src/function/throttle.ts +26 -0
- package/src/hash/hash-t.test.ts +100 -0
- package/src/hash/hash-t.ts +51 -0
- package/src/hash/index.ts +3 -0
- package/src/json/index.ts +1 -0
- package/src/json/node_modules/.vitest/results.json +1 -0
- package/src/json/parse.ts +19 -0
- package/src/launch/abstract-job.ts +45 -0
- package/src/launch/cost-recorder.ts +22 -0
- package/src/launch/index.ts +2 -0
- package/src/launch/job-scheduler.test.ts +122 -0
- package/src/launch/job-scheduler.ts +118 -0
- package/src/launch/node_modules/.vitest/deps/_metadata.json +8 -0
- package/src/launch/node_modules/.vitest/deps/package.json +3 -0
- package/src/launch/node_modules/.vitest/results.json +1 -0
- package/src/lock/README.md +11 -0
- package/src/lock/capability.test.ts +110 -0
- package/src/lock/capability.ts +89 -0
- package/src/lock/index.ts +15 -0
- package/src/lock/node_modules/.vitest/results.json +1 -0
- package/src/lock/semaphore.ts +21 -0
- package/src/lock/shared-mutex.test.ts +537 -0
- package/src/lock/shared-mutex.ts +242 -0
- package/src/lock/utils.test.ts +165 -0
- package/src/lock/utils.ts +135 -0
- package/src/lodash-es/index.ts +1 -0
- package/src/math/degree.ts +16 -0
- package/src/math/index.ts +7 -0
- package/src/math/math.test.ts +40 -0
- package/src/math/math.ts +64 -0
- package/src/math/node_modules/.vitest/results.json +1 -0
- package/src/math/vector.test.ts +73 -0
- package/src/math/vector.ts +114 -0
- package/src/network/client.interface.ts +104 -0
- package/src/network/client.web.ts +24 -0
- package/src/network/index.common.ts +10 -0
- package/src/network/index.ts +2 -0
- package/src/network/plugins/retry.ts +98 -0
- package/src/objects/deep-clone.test.ts +40 -0
- package/src/objects/deep-clone.ts +13 -0
- package/src/objects/deep-equal.test.ts +86 -0
- package/src/objects/deep-equal.ts +60 -0
- package/src/objects/index.ts +4 -0
- package/src/platform/index.ts +64 -0
- package/src/promise/index.ts +16 -0
- package/src/promise/promise.test.ts +254 -0
- package/src/promise/promise.ts +212 -0
- package/src/scheduler/callback-token.ts +31 -0
- package/src/scheduler/core/actuator-args.test.ts +47 -0
- package/src/scheduler/core/actuator.test.ts +82 -0
- package/src/scheduler/core/actuator.ts +58 -0
- package/src/scheduler/core/chunk-scheduler.test.ts +54 -0
- package/src/scheduler/core/chunk-scheduler.ts +28 -0
- package/src/scheduler/core/node_modules/.vitest/results.json +1 -0
- package/src/scheduler/core/scheduler.test.ts +328 -0
- package/src/scheduler/core/scheduler.ts +172 -0
- package/src/scheduler/core/task-queue.test.ts +78 -0
- package/src/scheduler/core/task-queue.ts +44 -0
- package/src/scheduler/core/task.test.ts +34 -0
- package/src/scheduler/core/task.ts +52 -0
- package/src/scheduler/core/utils.ts +48 -0
- package/src/scheduler/executor/abstract-executor.test.ts +44 -0
- package/src/scheduler/executor/abstract-executor.ts +38 -0
- package/src/scheduler/executor/executor.interface.ts +39 -0
- package/src/scheduler/executor/idle-callback-executor.test.ts +70 -0
- package/src/scheduler/executor/idle-callback-executor.ts +98 -0
- package/src/scheduler/executor/make-executor.ts +18 -0
- package/src/scheduler/executor/post-message-executor.test.ts +66 -0
- package/src/scheduler/executor/post-message-executor.ts +52 -0
- package/src/scheduler/index.ts +15 -0
- package/src/scheduler/lv-scheduler-callback.ts +19 -0
- package/src/scheduler/lv-scheduler-config.ts +17 -0
- package/src/scheduler/type.ts +48 -0
- package/src/sprintf/index.ts +2 -0
- package/src/sprintf/sprintf.test.ts +95 -0
- package/src/sprintf/sprintf.ts +97 -0
- package/src/structure/graph.test.ts +181 -0
- package/src/structure/graph.ts +105 -0
- package/src/structure/index.ts +8 -0
- package/src/structure/linked-list.test.ts +74 -0
- package/src/structure/linked-list.ts +145 -0
- package/src/structure/min-heap.test.ts +71 -0
- package/src/structure/min-heap.ts +91 -0
- package/src/type/REAME.md +2 -0
- package/src/type/distributive-omit.interface.ts +4 -0
- package/src/type/index.ts +3 -0
- package/src/type/object-key-paths.interface.ts +40 -0
- package/src/undo-redo-stack/README.md +61 -0
- package/src/undo-redo-stack/action-stack.test.ts +330 -0
- package/src/undo-redo-stack/action-stack.ts +150 -0
- package/src/undo-redo-stack/element.ts +4 -0
- package/src/undo-redo-stack/index.ts +7 -0
- package/src/undo-redo-stack/state-stack.test.ts +118 -0
- package/src/undo-redo-stack/state-stack.ts +133 -0
- package/src/uuid/index.ts +7 -0
- package/src/uuid/uuid.ts +86 -0
- package/src/worker/cors-worker.ts +38 -0
- package/src/worker/index.ts +4 -0
- package/src/worker/node_modules/.vitest/results.json +1 -0
- package/src/worker/promise-worker-main-thread.test.ts +91 -0
- package/src/worker/promise-worker-main-thread.ts +76 -0
- package/src/worker/promise-worker-worker-thread.ts +64 -0
- package/src/worker/promise-worker.interface.ts +15 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
// src/worker/cors-worker.ts
|
|
2
|
+
var CorsWorker = class {
|
|
3
|
+
constructor(url) {
|
|
4
|
+
const absoluteUrl = new URL(url, window.location.href).toString();
|
|
5
|
+
const workerSource = ` const urlString = ${JSON.stringify(absoluteUrl)}
|
|
6
|
+
const originURL = new URL(urlString)
|
|
7
|
+
const originalImportScripts = self.importScripts
|
|
8
|
+
self.importScripts = (url) => originalImportScripts.call(self, new URL(url, originURL).toString())
|
|
9
|
+
importScripts(urlString);
|
|
10
|
+
`;
|
|
11
|
+
const blob = new Blob([workerSource], { type: "application/javascript" });
|
|
12
|
+
const objectURL = URL.createObjectURL(blob);
|
|
13
|
+
this._worker = new Worker(objectURL);
|
|
14
|
+
URL.revokeObjectURL(objectURL);
|
|
15
|
+
}
|
|
16
|
+
getWorker() {
|
|
17
|
+
return this._worker;
|
|
18
|
+
}
|
|
19
|
+
dispose() {
|
|
20
|
+
this._worker.terminate();
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// src/worker/promise-worker-worker-thread.ts
|
|
25
|
+
var PromiseWorkerWorkerThread = class {
|
|
26
|
+
constructor() {
|
|
27
|
+
self.onmessage = (event) => {
|
|
28
|
+
this._receiveMainThreadMsgHandler(event?.data);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 将任务下派给 worker 并等待其返回
|
|
33
|
+
* - 由于 worker 本身运行在独立线程中,所以没必要专门为其设计任务执行队列.
|
|
34
|
+
* */
|
|
35
|
+
_sendSuccessToMainThread(req, result) {
|
|
36
|
+
self.postMessage({
|
|
37
|
+
pid: req.pid,
|
|
38
|
+
code: 0,
|
|
39
|
+
data: result
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
_sendFailToMainThread(req, errCode, message) {
|
|
43
|
+
self.postMessage({
|
|
44
|
+
pid: req.pid,
|
|
45
|
+
code: errCode,
|
|
46
|
+
msg: message
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
_receiveMainThreadMsgHandler(req) {
|
|
50
|
+
if (!req) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (!this._check(req)) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
this._messageHandler(req);
|
|
58
|
+
} catch (err) {
|
|
59
|
+
this._sendFailToMainThread(req, -1, err.message ?? "unknown error.");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
_check(req) {
|
|
63
|
+
const keyMap = ["pid"];
|
|
64
|
+
if (keyMap.map((key) => key in req).includes(false)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// src/uuid/uuid.ts
|
|
72
|
+
var generateUuid = (() => {
|
|
73
|
+
if (typeof crypto === "object" && typeof crypto.randomUUID === "function") {
|
|
74
|
+
return crypto.randomUUID.bind(crypto);
|
|
75
|
+
}
|
|
76
|
+
let getRandomValues;
|
|
77
|
+
if (typeof crypto === "object" && typeof crypto.getRandomValues === "function") {
|
|
78
|
+
getRandomValues = crypto.getRandomValues.bind(crypto);
|
|
79
|
+
} else {
|
|
80
|
+
getRandomValues = function(bucket) {
|
|
81
|
+
for (let i = 0; i < bucket.length; i++) {
|
|
82
|
+
bucket[i] = Math.floor(Math.random() * 256);
|
|
83
|
+
}
|
|
84
|
+
return bucket;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const data = new Uint8Array(16);
|
|
88
|
+
const hex = [];
|
|
89
|
+
for (let i = 0; i < 256; i++) {
|
|
90
|
+
hex.push(i.toString(16).padStart(2, "0"));
|
|
91
|
+
}
|
|
92
|
+
return () => {
|
|
93
|
+
getRandomValues(data);
|
|
94
|
+
data[6] = data[6] & 15 | 64;
|
|
95
|
+
data[8] = data[8] & 63 | 128;
|
|
96
|
+
let i = 0;
|
|
97
|
+
let result = "";
|
|
98
|
+
result += hex[data[i++]];
|
|
99
|
+
result += hex[data[i++]];
|
|
100
|
+
result += hex[data[i++]];
|
|
101
|
+
result += hex[data[i++]];
|
|
102
|
+
result += "-";
|
|
103
|
+
result += hex[data[i++]];
|
|
104
|
+
result += hex[data[i++]];
|
|
105
|
+
result += "-";
|
|
106
|
+
result += hex[data[i++]];
|
|
107
|
+
result += hex[data[i++]];
|
|
108
|
+
result += "-";
|
|
109
|
+
result += hex[data[i++]];
|
|
110
|
+
result += hex[data[i++]];
|
|
111
|
+
result += "-";
|
|
112
|
+
result += hex[data[i++]];
|
|
113
|
+
result += hex[data[i++]];
|
|
114
|
+
result += hex[data[i++]];
|
|
115
|
+
result += hex[data[i++]];
|
|
116
|
+
result += hex[data[i++]];
|
|
117
|
+
result += hex[data[i++]];
|
|
118
|
+
return result;
|
|
119
|
+
};
|
|
120
|
+
})();
|
|
121
|
+
var uuid = generateUuid;
|
|
122
|
+
|
|
123
|
+
// src/error/error-t.ts
|
|
124
|
+
var lvErrorRefSymbol = /* @__PURE__ */ Symbol("lvErrorRef");
|
|
125
|
+
function findJsError(error) {
|
|
126
|
+
let obj = error;
|
|
127
|
+
while (obj) {
|
|
128
|
+
if (obj instanceof Error) {
|
|
129
|
+
return obj;
|
|
130
|
+
}
|
|
131
|
+
obj = obj.cause;
|
|
132
|
+
}
|
|
133
|
+
return new Error(error.toString());
|
|
134
|
+
}
|
|
135
|
+
function makeOk() {
|
|
136
|
+
return {
|
|
137
|
+
ok: true,
|
|
138
|
+
value: null,
|
|
139
|
+
pair() {
|
|
140
|
+
return [null, null];
|
|
141
|
+
},
|
|
142
|
+
code: 0,
|
|
143
|
+
msg: "",
|
|
144
|
+
...{ [lvErrorRefSymbol]: true }
|
|
145
|
+
// 跳过类型检测
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
function makeOkWith(value) {
|
|
149
|
+
return {
|
|
150
|
+
ok: true,
|
|
151
|
+
value,
|
|
152
|
+
pair() {
|
|
153
|
+
return [null, value];
|
|
154
|
+
},
|
|
155
|
+
code: 0,
|
|
156
|
+
msg: "",
|
|
157
|
+
...{ [lvErrorRefSymbol]: true }
|
|
158
|
+
// 跳过类型检测
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function internalMakeError(code, msg, cause, errorInfo) {
|
|
162
|
+
const errorRef = {
|
|
163
|
+
ok: false,
|
|
164
|
+
code,
|
|
165
|
+
msg,
|
|
166
|
+
cause,
|
|
167
|
+
errorInfo,
|
|
168
|
+
toString() {
|
|
169
|
+
return `[${code}]${msg}.${""}`;
|
|
170
|
+
},
|
|
171
|
+
pair() {
|
|
172
|
+
return [errorRef, null];
|
|
173
|
+
},
|
|
174
|
+
stack: cause instanceof Error ? cause.stack : void 0,
|
|
175
|
+
findJsError: () => findJsError(errorRef),
|
|
176
|
+
...{ [lvErrorRefSymbol]: true }
|
|
177
|
+
// 跳过类型检测
|
|
178
|
+
};
|
|
179
|
+
return errorRef;
|
|
180
|
+
}
|
|
181
|
+
function makeError(code, msg, errorInfo) {
|
|
182
|
+
return internalMakeError(code, msg, void 0, errorInfo);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// src/assert/assert.ts
|
|
186
|
+
function abort(reason) {
|
|
187
|
+
throw new Error(`lvAssert(${reason})`);
|
|
188
|
+
}
|
|
189
|
+
function lvAssert(expr, reason) {
|
|
190
|
+
if (!expr) {
|
|
191
|
+
abort(reason ?? "#expr is false");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// src/promise/promise.ts
|
|
196
|
+
function defer() {
|
|
197
|
+
let resolve;
|
|
198
|
+
let reject;
|
|
199
|
+
const promise = new Promise((_resolve, _reject) => {
|
|
200
|
+
resolve = _resolve;
|
|
201
|
+
reject = _reject;
|
|
202
|
+
});
|
|
203
|
+
return { resolve, reject, promise };
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// src/worker/promise-worker-main-thread.ts
|
|
207
|
+
var PromiseWorkerMainThread = class {
|
|
208
|
+
constructor(_worker) {
|
|
209
|
+
this._worker = _worker;
|
|
210
|
+
this._deferMap = /* @__PURE__ */ new Map();
|
|
211
|
+
const preMessageHandler = _worker.onmessage?.bind(_worker);
|
|
212
|
+
this._worker.onmessage = (event) => {
|
|
213
|
+
preMessageHandler?.(event);
|
|
214
|
+
this._receiveWorkerMsgHandler(event?.data);
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* 将任务下派给 worker 并等待其返回
|
|
219
|
+
* - 由于 worker 本身运行在独立线程中,所以没必要专门为其设计任务执行队列.
|
|
220
|
+
* */
|
|
221
|
+
sendTaskToWorker(req = {}) {
|
|
222
|
+
const taskDefer = defer();
|
|
223
|
+
const worker = this._worker;
|
|
224
|
+
const id = uuid();
|
|
225
|
+
this._deferMap.set(id, taskDefer);
|
|
226
|
+
worker.postMessage({
|
|
227
|
+
pid: id,
|
|
228
|
+
...req
|
|
229
|
+
});
|
|
230
|
+
return taskDefer.promise;
|
|
231
|
+
}
|
|
232
|
+
_receiveWorkerMsgHandler(res) {
|
|
233
|
+
if (!res) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
if (!this._check(res)) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
const { pid, code, msg, data } = res;
|
|
240
|
+
const task = this._deferMap.get(pid);
|
|
241
|
+
lvAssert(task, `task-${pid} is not defined`);
|
|
242
|
+
if (code === 0) {
|
|
243
|
+
if (!data) {
|
|
244
|
+
task.resolve(makeOk());
|
|
245
|
+
} else {
|
|
246
|
+
task.resolve(makeOkWith(data));
|
|
247
|
+
}
|
|
248
|
+
} else {
|
|
249
|
+
task.resolve(makeError(code, msg ?? "no message error."));
|
|
250
|
+
}
|
|
251
|
+
this._deferMap.delete(pid);
|
|
252
|
+
}
|
|
253
|
+
_check(res) {
|
|
254
|
+
if (!res) {
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
const keyMap = ["pid"];
|
|
258
|
+
if (keyMap.map((key) => key in res).includes(false)) {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
return true;
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
export { CorsWorker, PromiseWorkerMainThread, PromiseWorkerWorkerThread };
|
|
266
|
+
//# sourceMappingURL=index.js.map
|
|
267
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/worker/cors-worker.ts","../../src/worker/promise-worker-worker-thread.ts","../../src/uuid/uuid.ts","../../src/error/error-t.ts","../../src/assert/assert.ts","../../src/promise/promise.ts","../../src/worker/promise-worker-main-thread.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * 将 worker 转 inline worker 的帮助函数,为了性能考虑,SCM 会在构建线上项目时将资源依赖都打包上传到 cdn 处。\n * 包括 worker.js,但是这种策略违反同源加载策略。所以为了应对这种问题,我们需要将 worker 进行强制内联处理.\n *\n * 由于 webpack AST 的约束限制.必须严格使用以下语法申明 worker:\n * new Worker(new URL('xxx.js', import.meta.url)\n * 字符上必须严格匹配。所以导入使用 CorsWorker 时,需要将其强行 alias\n * import { CorsWorker as Worker } from '@byted-image/lv-bedrock/worker';\n * )\n */\nimport type { IDisposable } from '@/dispose';\n\nexport class CorsWorker implements IDisposable {\n private readonly _worker: Worker;\n\n constructor(url: string | URL) {\n const absoluteUrl = new URL(url, window.location.href).toString();\n const workerSource = `\\\n\tconst urlString = ${JSON.stringify(absoluteUrl)}\n\tconst originURL = new URL(urlString)\n\tconst originalImportScripts = self.importScripts\n\tself.importScripts = (url) => originalImportScripts.call(self, new URL(url, originURL).toString())\n\timportScripts(urlString);\n\t`;\n const blob = new Blob([workerSource], { type: 'application/javascript' });\n const objectURL = URL.createObjectURL(blob);\n this._worker = new Worker(objectURL);\n URL.revokeObjectURL(objectURL);\n }\n\n getWorker() {\n return this._worker;\n }\n\n dispose(): void {\n this._worker.terminate();\n }\n}\n","/**\n * worker 包装函数,允许将事件处理成 promise 形式.\n */\nimport type { PromiseWorkerRawRequest, PromiseWorkerRequest, PromiseWorkerResponse } from './promise-worker.interface';\n\nexport abstract class PromiseWorkerWorkerThread {\n constructor() {\n self.onmessage = (event) => {\n this._receiveMainThreadMsgHandler(event?.data);\n };\n }\n\n /**\n * 将任务下派给 worker 并等待其返回\n * - 由于 worker 本身运行在独立线程中,所以没必要专门为其设计任务执行队列.\n * */\n protected _sendSuccessToMainThread<ReqT, ResT>(\n req: PromiseWorkerRequest<ReqT> | PromiseWorkerRawRequest,\n result?: ResT,\n ): void {\n self.postMessage({\n pid: req.pid,\n code: 0,\n data: result,\n } as PromiseWorkerResponse<ResT>);\n }\n\n protected _sendFailToMainThread<ReqT>(\n req: PromiseWorkerRequest<ReqT> | PromiseWorkerRawRequest,\n errCode: number,\n message?: string,\n ): void {\n self.postMessage({\n pid: req.pid,\n code: errCode,\n msg: message,\n } as PromiseWorkerResponse<any>);\n }\n\n protected abstract _messageHandler(req: PromiseWorkerRequest<any> | PromiseWorkerRawRequest): void;\n\n private _receiveMainThreadMsgHandler<ReqT>(req?: PromiseWorkerRequest<ReqT>) {\n if (!req) {\n return;\n }\n if (!this._check(req)) {\n return;\n }\n\n try {\n this._messageHandler(req);\n } catch (err) {\n this._sendFailToMainThread(req, -1, (err as Error).message ?? 'unknown error.');\n }\n }\n\n private _check<ReqT>(req: PromiseWorkerRequest<ReqT>): req is PromiseWorkerRequest<ReqT> {\n const keyMap = ['pid'];\n if (keyMap.map((key) => key in req).includes(false)) {\n return false;\n }\n return true;\n }\n}\n","declare const crypto:\n | undefined\n | {\n // https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#browser_compatibility\n getRandomValues?: (data: Uint8Array) => Uint8Array;\n // https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID#browser_compatibility\n randomUUID?: () => UuidString;\n };\n\nconst pattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\ntype UuidString = `${string}-${string}-${string}-${string}-${string}`;\n\n/**\n * 判断一个字符串,是否是标准的UUID\n */\nexport function isUuid(value: string): boolean {\n return pattern.test(value);\n}\n\n/**\n * 生成一个标准的UUID\n */\nexport const generateUuid = ((): (() => UuidString) => {\n // 优先使用 randomUUID\n if (typeof crypto === 'object' && typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID.bind(crypto);\n }\n\n // 其次尝试使用 randomValues\n let getRandomValues: (bucket: Uint8Array) => Uint8Array;\n if (typeof crypto === 'object' && typeof crypto.getRandomValues === 'function') {\n getRandomValues = crypto.getRandomValues.bind(crypto);\n } else {\n getRandomValues = function (bucket: Uint8Array): Uint8Array {\n for (let i = 0; i < bucket.length; i++) {\n bucket[i] = Math.floor(Math.random() * 256);\n }\n return bucket;\n };\n }\n\n const data = new Uint8Array(16);\n const hex: string[] = [];\n for (let i = 0; i < 256; i++) {\n hex.push(i.toString(16).padStart(2, '0'));\n }\n\n return (): UuidString => {\n getRandomValues(data);\n\n data[6] = (data[6] & 0x0f) | 0x40;\n data[8] = (data[8] & 0x3f) | 0x80;\n\n let i = 0;\n let result = '';\n result += hex[data[i++]];\n result += hex[data[i++]];\n result += hex[data[i++]];\n result += hex[data[i++]];\n result += '-';\n result += hex[data[i++]];\n result += hex[data[i++]];\n result += '-';\n result += hex[data[i++]];\n result += hex[data[i++]];\n result += '-';\n result += hex[data[i++]];\n result += hex[data[i++]];\n result += '-';\n result += hex[data[i++]];\n result += hex[data[i++]];\n result += hex[data[i++]];\n result += hex[data[i++]];\n result += hex[data[i++]];\n result += hex[data[i++]];\n return result as UuidString;\n };\n})();\n\n/**\n * 生成一个标准且字母大写的UUID\n */\nexport const generateUpperCaseUuid = () => generateUuid().toUpperCase();\nexport const uuid = generateUuid;\nexport const upperCaseUuid = generateUpperCaseUuid;\n","import type { ILvErrorRef, ILvErrorOr, ILvRealErrorRef } from './error-base';\n\n//\n// Error类\n//\n// 用户给函数签名明确错误\n// function foo(): ILvErrorRef\n// return makeOk(); // 如果没有错误\n// return makeError(code, msg); // 指定错误码和携带消息\n//\n// const SomeError = LvErrorConst(code, msg); // 更推荐用LvErrorConst生成\n// return SomeError();\n//\n\nconst lvErrorRefSymbol = Symbol('lvErrorRef');\n\nfunction findJsError(error: ILvErrorRef | Error) {\n let obj: ILvErrorRef | Error | undefined = error;\n while (obj) {\n if (obj instanceof Error) {\n return obj;\n }\n obj = (obj as ILvErrorRef).cause;\n }\n // 如果没有Error,那就序列化lvError\n return new Error((error as ILvErrorRef).toString());\n}\n\nexport function makeOk<K>(): ILvErrorOr<never, K> {\n return {\n ok: true,\n value: null!,\n pair() {\n return [null, null!];\n },\n code: 0,\n msg: '',\n ...{ [lvErrorRefSymbol]: true }, // 跳过类型检测\n };\n}\n\nexport function makeOkWith<T, K = unknown>(value: T): ILvErrorOr<T, K> {\n return {\n ok: true,\n value,\n pair() {\n return [null, value];\n },\n code: 0,\n msg: '',\n ...{ [lvErrorRefSymbol]: true }, // 跳过类型检测\n };\n}\n\nfunction printCause(cause: ILvErrorRef | Error | undefined): string {\n if (cause === undefined) {\n return '';\n } else if (cause instanceof Error) {\n return `\\ncaused by [jsError]${cause.name}-${cause.message}`;\n } else {\n return `\\ncaused by [${cause.code}]${cause.msg}${cause.ok ? '' : printCause(cause.cause)}`;\n }\n}\n\nfunction internalMakeError<T>(code: number, msg: string, cause?: ILvErrorRef | Error, errorInfo?: T) {\n const errorRef: ILvRealErrorRef<T> = {\n ok: false,\n code,\n msg,\n cause,\n errorInfo,\n toString() {\n return `[${code}]${msg}.${cause ? printCause(cause) : ''}`;\n },\n pair() {\n return [errorRef, null];\n },\n stack: cause instanceof Error ? cause.stack : undefined,\n findJsError: () => findJsError(errorRef),\n ...{ [lvErrorRefSymbol]: true }, // 跳过类型检测\n };\n return errorRef;\n}\n\nexport function makeError<T = unknown>(code: number, msg: string, errorInfo?: T): ILvRealErrorRef<T> {\n return internalMakeError(code, msg, undefined, errorInfo);\n}\n\nexport function makeErrorBy<T = unknown>(\n code: number,\n msg: string,\n cause: ILvErrorRef | Error,\n errorInfo?: T,\n): ILvRealErrorRef<T> {\n return internalMakeError(code, msg, cause, errorInfo);\n}\n\nexport function isLvErrorRef(val: unknown): val is ILvErrorRef {\n return typeof val === 'object' && val !== null && lvErrorRefSymbol in val;\n}\n","function abort(reason: string): never {\n throw new Error(`lvAssert(${reason})`);\n}\n\n/**\n * 断言表达式为真\n * @param expr \n * @param reason \n */\nexport function lvAssert(expr: unknown, reason?: string): asserts expr {\n if (!expr) {\n abort(reason ?? '#expr is false');\n }\n}\n\n/**\n * 断言deadcode路径\n * @param reason \n */\nexport function lvAssertNotHere(reason?: string): never {\n abort(reason ?? 'unreachable code flow');\n}\n\n/**\n * 断言类型不可达\n * @param member \n * @param message \n */\nexport function lvAssertNever(member: never, message = 'Illegal value:'): never {\n abort(`${message}: ${member}`);\n}\n\n/**\n * 断言变量为null或者undefined\n * @param val \n * @param reason \n */\nexport function lvAssertNotNil<T>(val: T, reason?: string): asserts val is NonNullable<T> {\n if (val === null || val === undefined) {\n abort(reason ?? '#val is nil');\n }\n}\n","import {\n makeOkWith,\n type ILvErrorOr,\n cancelledError,\n GenericError,\n timeoutError,\n type ILvErrorRef,\n makeOk,\n isLvErrorRef,\n} from '../error';\nimport type { ICancellationToken } from '../async';\nimport { CancellationTokenSource } from '../async';\n\n/**\n * 一般来说Promise常用的场景有:\n * 1. 单次异步调用(new Promise)\n * 2. 批量promise调用(Promise.all)\n * 3. promise竞速调用(Promise.race)\n *\n * 但是原生能力有如下的缺陷\n * 1. 不支持取消某一次promise调用\n * 2. 不支持错误语义,promise.catch的重视程度比try catch还低\n * 3. 超时行为需要基于race封装\n *\n * 针对这三点,基建侧提供了高阶的promise能力\n * 1. makeCancelablePromise 返回一个可取消的promise\n * const promise = makeCancelablePromise(() => { ... });\n * promise.then((res) => {\n * // res是一个ILvErrorRef对象\n * });\n * // 可以直接取消promise\n * promise.cancel();\n *\n * 2. parallelPromise 并发执行promise,会自动观测ILvErrorRef语义\n * 当单个promise出现错误返回时,promise执行失败,尽可能调用所有cancelablePromise\n * 当单个promise出现reject时,promise执行失败,尽可能调用所有cancelablePromise,并且将reject继续上抛\n *\n * 3. makePromiseWithTimeout 让promise支持超时,可以提供默认值\n *\n * ——————————————————\n * Promise.allSettled和Promise.any在实际使用中场景较少,暂不提供错误语义包装\n */\n\n//\n// 可以cancel的promise对象\n//\nexport interface CancelablePromise<T> extends Promise<T> {\n cancel: () => void;\n}\n\n/**\n * 快速生成一个CancelablePromise对象\n */\nexport function makeCancelablePromise<T>(\n callback: (token: ICancellationToken) => Promise<T | ILvErrorOr<T>>,\n): CancelablePromise<ILvErrorOr<T>> {\n const source = new CancellationTokenSource();\n const thenable = callback(source.token);\n const promise = new Promise<ILvErrorOr<T>>((resolve, reject) => {\n const subscription = source.token.onCancellationRequested(() => {\n subscription.dispose();\n source.dispose();\n resolve(cancelledError());\n });\n Promise.resolve(thenable).then(\n (value) => {\n subscription.dispose();\n source.dispose();\n if (isLvErrorRef(value)) {\n resolve(value);\n } else {\n resolve(makeOkWith(value as T));\n }\n },\n (err) => {\n subscription.dispose();\n source.dispose();\n reject(err);\n },\n );\n });\n return new (class {\n cancel() {\n source.cancel();\n }\n then<TResult1 = T, TResult2 = never>(\n resolve?: ((value: ILvErrorOr<T>) => TResult1 | Promise<TResult1>) | undefined | null,\n reject?: ((reason: any) => TResult2 | Promise<TResult2>) | undefined | null,\n ): Promise<TResult1 | TResult2> {\n return promise.then(resolve, reject);\n }\n catch<TResult = never>(\n reject?: ((reason: any) => TResult | Promise<TResult>) | undefined | null,\n ): Promise<T | TResult> {\n return this.then(undefined, reject);\n }\n finally(onfinally?: (() => void) | undefined | null): Promise<ILvErrorOr<T>> {\n return promise.finally(onfinally);\n }\n })() as CancelablePromise<ILvErrorOr<T>>;\n}\n\n/**\n * 并行执行promise,当某一个失败,本次调用失败\n * 本质上和Promise.all差不多,相比较之下\n * 1. 包装了错误语义判断\n * 2. 当失败时,会尽可能尝试cancel其他promise\n *\n * 注意:某一个promise失败时,会尽可能尝试调用其他promise的cancel,但不保证一定有效\n * (有可能promiseA已经成功,但是primiseB在之后失败了)\n */\nexport function parallelPromise(promiseList: Promise<any>[]): Promise<ILvErrorRef> {\n if (promiseList.length === 0) {\n return Promise.resolve(makeOk());\n }\n\n let todo = promiseList.length;\n const finish = () => {\n todo = -1;\n for (const promise of promiseList) {\n (promise as Partial<CancelablePromise<any>>).cancel?.();\n }\n };\n\n return new Promise<ILvErrorRef>((resolve, reject) => {\n for (const promise of promiseList) {\n promise\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n .then((res) => {\n if (isLvErrorRef(res) && !res.ok) {\n finish();\n resolve(res as ILvErrorRef);\n return;\n }\n todo--;\n if (todo === 0) {\n resolve(makeOk());\n }\n })\n .catch((err) => {\n finish();\n reject(err);\n });\n }\n });\n}\n\n/**\n * 包装一个promise,提供超时能力\n */\nexport function makePromiseWithTimeout<T>(\n callback: (token: ICancellationToken) => Promise<T | ILvErrorOr<T>>,\n timeout: number,\n defaultValue?: T, // 当发生超时时,提供的默认值\n): Promise<ILvErrorOr<T>> {\n const cancellable = makeCancelablePromise<T>(callback);\n const timer = setTimeout(() => {\n cancellable.cancel();\n }, timeout);\n return cancellable.then((res: ILvErrorOr<T>) => {\n clearTimeout(timer);\n if (res.ok) {\n return res;\n }\n // 如果是被取消,触发了超时\n if (res.code === GenericError.Cancelled) {\n if (defaultValue !== undefined) {\n // 希望返回默认值\n return makeOkWith(defaultValue);\n }\n return timeoutError();\n } else {\n // 遇到其他错误时透传错误\n return res;\n }\n });\n}\n\n// 如果 proposal-promise-with-resolvers 通过了,那么这个函数就可以去掉了\n// https://github.com/microsoft/TypeScript/blob/1d96eb489e559f4f61522edb3c8b5987bbe948af/src/harness/util.ts#L115\nexport interface Deferred<T> {\n resolve: (value: T | PromiseLike<T>) => void;\n reject: (reason?: unknown) => void;\n promise: Promise<T>;\n}\n\nexport function defer<T = void>(): Deferred<T> {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: unknown) => void;\n const promise = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n return { resolve, reject, promise };\n}\n\nexport function waitForAbortSignal(signal: AbortSignal) {\n const { promise, reject } = defer<never>();\n\n if (signal.aborted) {\n reject(signal.reason);\n }\n\n const handleAbort = () => {\n reject(signal.reason);\n signal.removeEventListener('abort', handleAbort);\n };\n\n signal.addEventListener('abort', handleAbort);\n\n return promise;\n}\n","/**\n * worker 包装函数,允许将事件处理成 promise 形式.\n */\nimport { uuid } from '@/uuid';\nimport type { Deferred } from '@/promise';\nimport { defer } from '@/promise';\nimport { lvAssert } from '@/assert';\nimport { makeError, makeOk, makeOkWith, type ILvErrorOr } from '@/error';\nimport type { PromiseWorkerRawRequest, PromiseWorkerRequest, PromiseWorkerResponse } from './promise-worker.interface';\n\nexport class PromiseWorkerMainThread {\n private readonly _deferMap: Map<string, Deferred<any>> = new Map();\n\n constructor(private readonly _worker: Worker) {\n const preMessageHandler = _worker.onmessage?.bind(_worker);\n this._worker.onmessage = (event) => {\n // 如果 worker 在传递进来之前已经绑定过 onmessage.\n // 那么做一层代理确保原本的监听函数不会失效丢失\n preMessageHandler?.(event);\n\n this._receiveWorkerMsgHandler(event?.data);\n };\n }\n\n /**\n * 将任务下派给 worker 并等待其返回\n * - 由于 worker 本身运行在独立线程中,所以没必要专门为其设计任务执行队列.\n * */\n public sendTaskToWorker<ReqT, ResT>(req: Omit<PromiseWorkerRequest<ReqT> | PromiseWorkerRawRequest, 'pid'> = {}): Promise<ILvErrorOr<ResT>> {\n const taskDefer = defer<ILvErrorOr<ResT>>();\n const worker = this._worker;\n const id = uuid();\n\n this._deferMap.set(id, taskDefer);\n worker.postMessage({\n pid: id,\n ...req,\n } as PromiseWorkerRequest<ReqT>);\n return taskDefer.promise;\n }\n\n private _receiveWorkerMsgHandler<ResT>(res?: PromiseWorkerResponse<ResT>) {\n if (!res) {\n return;\n }\n if (!this._check(res)) {\n return;\n }\n\n const { pid, code, msg, data } = res;\n const task = this._deferMap.get(pid) as Deferred<ILvErrorOr<ResT>>;\n lvAssert(task, `task-${pid} is not defined`);\n\n if (code === 0) {\n if (!data) {\n task.resolve(makeOk());\n } else {\n task.resolve(makeOkWith<ResT>(data));\n }\n } else {\n task.resolve(makeError(code, msg ?? 'no message error.'));\n }\n this._deferMap.delete(pid);\n }\n\n private _check<ResT>(res?: PromiseWorkerResponse<ResT>): res is PromiseWorkerResponse<ResT> {\n if (!res) {\n return false;\n }\n const keyMap = ['pid'];\n if (keyMap.map((key) => key in res).includes(false)) {\n return false;\n }\n return true;\n }\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zk-tech/bedrock",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "A comprehensive TypeScript utility library",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "ZK Tech",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"typescript",
|
|
9
|
+
"utility",
|
|
10
|
+
"library",
|
|
11
|
+
"bedrock",
|
|
12
|
+
"async",
|
|
13
|
+
"di",
|
|
14
|
+
"event"
|
|
15
|
+
],
|
|
16
|
+
"type": "module",
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"src",
|
|
20
|
+
"README.md"
|
|
21
|
+
],
|
|
22
|
+
"exports": {
|
|
23
|
+
"./array": {
|
|
24
|
+
"types": "./dist/array/index.d.ts",
|
|
25
|
+
"import": "./dist/array/index.js",
|
|
26
|
+
"require": "./dist/array/index.cjs"
|
|
27
|
+
},
|
|
28
|
+
"./assert": {
|
|
29
|
+
"types": "./dist/assert/index.d.ts",
|
|
30
|
+
"import": "./dist/assert/index.js",
|
|
31
|
+
"require": "./dist/assert/index.cjs"
|
|
32
|
+
},
|
|
33
|
+
"./async": {
|
|
34
|
+
"types": "./dist/async/index.d.ts",
|
|
35
|
+
"import": "./dist/async/index.js",
|
|
36
|
+
"require": "./dist/async/index.cjs"
|
|
37
|
+
},
|
|
38
|
+
"./cache": {
|
|
39
|
+
"types": "./dist/cache/index.d.ts",
|
|
40
|
+
"import": "./dist/cache/index.js",
|
|
41
|
+
"require": "./dist/cache/index.cjs"
|
|
42
|
+
},
|
|
43
|
+
"./context": {
|
|
44
|
+
"types": "./dist/context/index.d.ts",
|
|
45
|
+
"import": "./dist/context/index.js",
|
|
46
|
+
"require": "./dist/context/index.cjs"
|
|
47
|
+
},
|
|
48
|
+
"./di": {
|
|
49
|
+
"types": "./dist/di/index.d.ts",
|
|
50
|
+
"import": "./dist/di/index.js",
|
|
51
|
+
"require": "./dist/di/index.cjs"
|
|
52
|
+
},
|
|
53
|
+
"./dispose": {
|
|
54
|
+
"types": "./dist/dispose/index.d.ts",
|
|
55
|
+
"import": "./dist/dispose/index.js",
|
|
56
|
+
"require": "./dist/dispose/index.cjs"
|
|
57
|
+
},
|
|
58
|
+
"./error": {
|
|
59
|
+
"types": "./dist/error/index.d.ts",
|
|
60
|
+
"import": "./dist/error/index.js",
|
|
61
|
+
"require": "./dist/error/index.cjs"
|
|
62
|
+
},
|
|
63
|
+
"./event": {
|
|
64
|
+
"types": "./dist/event/index.d.ts",
|
|
65
|
+
"import": "./dist/event/index.js",
|
|
66
|
+
"require": "./dist/event/index.cjs"
|
|
67
|
+
},
|
|
68
|
+
"./hash": {
|
|
69
|
+
"types": "./dist/hash/index.d.ts",
|
|
70
|
+
"import": "./dist/hash/index.js",
|
|
71
|
+
"require": "./dist/hash/index.cjs"
|
|
72
|
+
},
|
|
73
|
+
"./json": {
|
|
74
|
+
"types": "./dist/json/index.d.ts",
|
|
75
|
+
"import": "./dist/json/index.js",
|
|
76
|
+
"require": "./dist/json/index.cjs"
|
|
77
|
+
},
|
|
78
|
+
"./lock": {
|
|
79
|
+
"types": "./dist/lock/index.d.ts",
|
|
80
|
+
"import": "./dist/lock/index.js",
|
|
81
|
+
"require": "./dist/lock/index.cjs"
|
|
82
|
+
},
|
|
83
|
+
"./scheduler": {
|
|
84
|
+
"types": "./dist/scheduler/index.d.ts",
|
|
85
|
+
"import": "./dist/scheduler/index.js",
|
|
86
|
+
"require": "./dist/scheduler/index.cjs"
|
|
87
|
+
},
|
|
88
|
+
"./structure": {
|
|
89
|
+
"types": "./dist/structure/index.d.ts",
|
|
90
|
+
"import": "./dist/structure/index.js",
|
|
91
|
+
"require": "./dist/structure/index.cjs"
|
|
92
|
+
},
|
|
93
|
+
"./uuid": {
|
|
94
|
+
"types": "./dist/uuid/index.d.ts",
|
|
95
|
+
"import": "./dist/uuid/index.js",
|
|
96
|
+
"require": "./dist/uuid/index.cjs"
|
|
97
|
+
},
|
|
98
|
+
"./function": {
|
|
99
|
+
"types": "./dist/function/index.d.ts",
|
|
100
|
+
"import": "./dist/function/index.js",
|
|
101
|
+
"require": "./dist/function/index.cjs"
|
|
102
|
+
},
|
|
103
|
+
"./launch": {
|
|
104
|
+
"types": "./dist/launch/index.d.ts",
|
|
105
|
+
"import": "./dist/launch/index.js",
|
|
106
|
+
"require": "./dist/launch/index.cjs"
|
|
107
|
+
},
|
|
108
|
+
"./objects": {
|
|
109
|
+
"types": "./dist/objects/index.d.ts",
|
|
110
|
+
"import": "./dist/objects/index.js",
|
|
111
|
+
"require": "./dist/objects/index.cjs"
|
|
112
|
+
},
|
|
113
|
+
"./math": {
|
|
114
|
+
"types": "./dist/math/index.d.ts",
|
|
115
|
+
"import": "./dist/math/index.js",
|
|
116
|
+
"require": "./dist/math/index.cjs"
|
|
117
|
+
},
|
|
118
|
+
"./promise": {
|
|
119
|
+
"types": "./dist/promise/index.d.ts",
|
|
120
|
+
"import": "./dist/promise/index.js",
|
|
121
|
+
"require": "./dist/promise/index.cjs"
|
|
122
|
+
},
|
|
123
|
+
"./sprintf": {
|
|
124
|
+
"types": "./dist/sprintf/index.d.ts",
|
|
125
|
+
"import": "./dist/sprintf/index.js",
|
|
126
|
+
"require": "./dist/sprintf/index.cjs"
|
|
127
|
+
},
|
|
128
|
+
"./type": {
|
|
129
|
+
"types": "./dist/type/index.d.ts",
|
|
130
|
+
"import": "./dist/type/index.js",
|
|
131
|
+
"require": "./dist/type/index.cjs"
|
|
132
|
+
},
|
|
133
|
+
"./undo-redo-stack": {
|
|
134
|
+
"types": "./dist/undo-redo-stack/index.d.ts",
|
|
135
|
+
"import": "./dist/undo-redo-stack/index.js",
|
|
136
|
+
"require": "./dist/undo-redo-stack/index.cjs"
|
|
137
|
+
},
|
|
138
|
+
"./network": {
|
|
139
|
+
"types": "./dist/network/index.d.ts",
|
|
140
|
+
"import": "./dist/network/index.js",
|
|
141
|
+
"require": "./dist/network/index.cjs"
|
|
142
|
+
},
|
|
143
|
+
"./worker": {
|
|
144
|
+
"types": "./dist/worker/index.d.ts",
|
|
145
|
+
"import": "./dist/worker/index.js",
|
|
146
|
+
"require": "./dist/worker/index.cjs"
|
|
147
|
+
},
|
|
148
|
+
"./platform": {
|
|
149
|
+
"types": "./dist/platform/index.d.ts",
|
|
150
|
+
"import": "./dist/platform/index.js",
|
|
151
|
+
"require": "./dist/platform/index.cjs"
|
|
152
|
+
},
|
|
153
|
+
"./lodash-es": {
|
|
154
|
+
"types": "./dist/lodash-es/index.d.ts",
|
|
155
|
+
"import": "./dist/lodash-es/index.js",
|
|
156
|
+
"require": "./dist/lodash-es/index.cjs"
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"typesVersions": {
|
|
160
|
+
"*": {
|
|
161
|
+
"array": [
|
|
162
|
+
"./dist/array/index.d.ts"
|
|
163
|
+
],
|
|
164
|
+
"assert": [
|
|
165
|
+
"./dist/assert/index.d.ts"
|
|
166
|
+
],
|
|
167
|
+
"async": [
|
|
168
|
+
"./dist/async/index.d.ts"
|
|
169
|
+
],
|
|
170
|
+
"cache": [
|
|
171
|
+
"./dist/cache/index.d.ts"
|
|
172
|
+
],
|
|
173
|
+
"context": [
|
|
174
|
+
"./dist/context/index.d.ts"
|
|
175
|
+
],
|
|
176
|
+
"di": [
|
|
177
|
+
"./dist/di/index.d.ts"
|
|
178
|
+
],
|
|
179
|
+
"dispose": [
|
|
180
|
+
"./dist/dispose/index.d.ts"
|
|
181
|
+
],
|
|
182
|
+
"error": [
|
|
183
|
+
"./dist/error/index.d.ts"
|
|
184
|
+
],
|
|
185
|
+
"event": [
|
|
186
|
+
"./dist/event/index.d.ts"
|
|
187
|
+
],
|
|
188
|
+
"hash": [
|
|
189
|
+
"./dist/hash/index.d.ts"
|
|
190
|
+
],
|
|
191
|
+
"json": [
|
|
192
|
+
"./dist/json/index.d.ts"
|
|
193
|
+
],
|
|
194
|
+
"lock": [
|
|
195
|
+
"./dist/lock/index.d.ts"
|
|
196
|
+
],
|
|
197
|
+
"scheduler": [
|
|
198
|
+
"./dist/scheduler/index.d.ts"
|
|
199
|
+
],
|
|
200
|
+
"structure": [
|
|
201
|
+
"./dist/structure/index.d.ts"
|
|
202
|
+
],
|
|
203
|
+
"uuid": [
|
|
204
|
+
"./dist/uuid/index.d.ts"
|
|
205
|
+
],
|
|
206
|
+
"function": [
|
|
207
|
+
"./dist/function/index.d.ts"
|
|
208
|
+
],
|
|
209
|
+
"launch": [
|
|
210
|
+
"./dist/launch/index.d.ts"
|
|
211
|
+
],
|
|
212
|
+
"objects": [
|
|
213
|
+
"./dist/objects/index.d.ts"
|
|
214
|
+
],
|
|
215
|
+
"math": [
|
|
216
|
+
"./dist/math/index.d.ts"
|
|
217
|
+
],
|
|
218
|
+
"promise": [
|
|
219
|
+
"./dist/promise/index.d.ts"
|
|
220
|
+
],
|
|
221
|
+
"sprintf": [
|
|
222
|
+
"./dist/sprintf/index.d.ts"
|
|
223
|
+
],
|
|
224
|
+
"type": [
|
|
225
|
+
"./dist/type/index.d.ts"
|
|
226
|
+
],
|
|
227
|
+
"undo-redo-stack": [
|
|
228
|
+
"./dist/undo-redo-stack/index.d.ts"
|
|
229
|
+
],
|
|
230
|
+
"network": [
|
|
231
|
+
"./dist/network/index.d.ts"
|
|
232
|
+
],
|
|
233
|
+
"worker": [
|
|
234
|
+
"./dist/worker/index.d.ts"
|
|
235
|
+
],
|
|
236
|
+
"platform": [
|
|
237
|
+
"./dist/platform/index.d.ts"
|
|
238
|
+
],
|
|
239
|
+
"lodash-es": [
|
|
240
|
+
"./dist/lodash-es/index.d.ts"
|
|
241
|
+
]
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"scripts": {
|
|
245
|
+
"build": "tsup",
|
|
246
|
+
"test": "vitest",
|
|
247
|
+
"test:run": "vitest run",
|
|
248
|
+
"clean": "rm -rf dist",
|
|
249
|
+
"prepublishOnly": "pnpm run build"
|
|
250
|
+
},
|
|
251
|
+
"peerDependencies": {
|
|
252
|
+
"axios": ">=1.5.0",
|
|
253
|
+
"lodash-es": "^4",
|
|
254
|
+
"react": ">=18.2.0"
|
|
255
|
+
},
|
|
256
|
+
"peerDependenciesMeta": {
|
|
257
|
+
"axios": {
|
|
258
|
+
"optional": true
|
|
259
|
+
},
|
|
260
|
+
"lodash-es": {
|
|
261
|
+
"optional": true
|
|
262
|
+
},
|
|
263
|
+
"react": {
|
|
264
|
+
"optional": true
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
"devDependencies": {
|
|
268
|
+
"@swc/helpers": "^0.5.15",
|
|
269
|
+
"@types/lodash-es": "^4",
|
|
270
|
+
"@types/node": "^25.0.3",
|
|
271
|
+
"@types/react": "~18.2.22",
|
|
272
|
+
"axios": ">1.5.0",
|
|
273
|
+
"eslint-plugin-prettier": "~4.2.1",
|
|
274
|
+
"lodash-es": "^4",
|
|
275
|
+
"react": ">=18.2.0",
|
|
276
|
+
"tsup": "^8.5.1",
|
|
277
|
+
"typescript": "~5.0.4",
|
|
278
|
+
"vitest": "1.0.1"
|
|
279
|
+
},
|
|
280
|
+
"sideEffects": false,
|
|
281
|
+
"publishConfig": {
|
|
282
|
+
"access": "public",
|
|
283
|
+
"registry": "https://registry.npmjs.org/"
|
|
284
|
+
}
|
|
285
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
|
|
3
|
+
export const Logger = {
|
|
4
|
+
error(...data: any[]): void {
|
|
5
|
+
if (typeof console.error === 'function') {
|
|
6
|
+
console.error(...data);
|
|
7
|
+
}
|
|
8
|
+
},
|
|
9
|
+
info(...data: any[]): void {
|
|
10
|
+
if (typeof console.info === 'function') {
|
|
11
|
+
console.info(...data);
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
log(...data: any[]): void {
|
|
15
|
+
if (typeof console.log === 'function') {
|
|
16
|
+
console.log(...data);
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
time(label?: string): void {
|
|
20
|
+
if (typeof console.time === 'function') {
|
|
21
|
+
console.time(label);
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
timeEnd(label?: string): void {
|
|
25
|
+
if (typeof console.timeEnd === 'function') {
|
|
26
|
+
console.timeEnd(label);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
timeLog(label?: string, ...data: any[]): void {
|
|
30
|
+
if (typeof console.timeLog === 'function') {
|
|
31
|
+
console.timeLog(label, ...data);
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
timeStamp(label?: string): void {
|
|
35
|
+
if (typeof console.timeStamp === 'function') {
|
|
36
|
+
console.timeStamp(label);
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
trace(...data: any[]): void {
|
|
40
|
+
if (typeof console.trace === 'function') {
|
|
41
|
+
console.trace(...data);
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
warn(...data: any[]): void {
|
|
45
|
+
if (typeof console.warn === 'function') {
|
|
46
|
+
console.warn(...data);
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
profile(label?: string): void {
|
|
50
|
+
if (typeof console.profile === 'function') {
|
|
51
|
+
console.profile(label);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
profileEnd(label?: string): void {
|
|
55
|
+
if (typeof console.profileEnd === 'function') {
|
|
56
|
+
console.profileEnd(label);
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
};
|