katanakit-js 2.2.1 → 2.12.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +72 -437
  2. package/dist/adapters/astro/astro.service.d.ts +103 -15
  3. package/dist/adapters/astro/astro.service.d.ts.map +1 -1
  4. package/dist/adapters/astro/astro.service.js +145 -75
  5. package/dist/adapters/astro/astro.service.js.map +1 -1
  6. package/dist/adapters/astro/index.d.ts +1 -1
  7. package/dist/adapters/astro/index.d.ts.map +1 -1
  8. package/dist/adapters/astro/index.js +1 -1
  9. package/dist/adapters/astro/index.js.map +1 -1
  10. package/dist/adapters/astro/rss.service.d.ts +85 -105
  11. package/dist/adapters/astro/rss.service.d.ts.map +1 -1
  12. package/dist/adapters/astro/rss.service.js +172 -168
  13. package/dist/adapters/astro/rss.service.js.map +1 -1
  14. package/dist/adapters/astro/seo.service.d.ts +10 -0
  15. package/dist/adapters/astro/seo.service.d.ts.map +1 -0
  16. package/dist/adapters/astro/seo.service.js +3 -0
  17. package/dist/adapters/astro/seo.service.js.map +1 -0
  18. package/dist/adapters/express/app.d.ts +30 -1
  19. package/dist/adapters/express/app.d.ts.map +1 -1
  20. package/dist/adapters/express/app.js +31 -3
  21. package/dist/adapters/express/app.js.map +1 -1
  22. package/dist/adapters/express/index.d.ts +2 -2
  23. package/dist/adapters/express/index.d.ts.map +1 -1
  24. package/dist/adapters/express/index.js +2 -2
  25. package/dist/adapters/express/index.js.map +1 -1
  26. package/dist/adapters/express/main.js +2 -2
  27. package/dist/adapters/express/main.js.map +1 -1
  28. package/dist/adapters/express/products.controller.d.ts +67 -8
  29. package/dist/adapters/express/products.controller.d.ts.map +1 -1
  30. package/dist/adapters/express/products.controller.js +105 -49
  31. package/dist/adapters/express/products.controller.js.map +1 -1
  32. package/dist/adapters/express/server.d.ts +37 -13
  33. package/dist/adapters/express/server.d.ts.map +1 -1
  34. package/dist/adapters/express/server.js +118 -53
  35. package/dist/adapters/express/server.js.map +1 -1
  36. package/dist/adapters/nuxt/nuxt.service.d.ts +8 -6
  37. package/dist/adapters/nuxt/nuxt.service.d.ts.map +1 -1
  38. package/dist/adapters/nuxt/nuxt.service.js +34 -10
  39. package/dist/adapters/nuxt/nuxt.service.js.map +1 -1
  40. package/dist/adapters/vue/vue.service.d.ts +5 -2
  41. package/dist/adapters/vue/vue.service.d.ts.map +1 -1
  42. package/dist/adapters/vue/vue.service.js +41 -7
  43. package/dist/adapters/vue/vue.service.js.map +1 -1
  44. package/dist/config/index.d.ts +2 -1
  45. package/dist/config/index.d.ts.map +1 -1
  46. package/dist/config/index.js +1 -1
  47. package/dist/config/index.js.map +1 -1
  48. package/dist/config/seo-meta.types.d.ts +177 -0
  49. package/dist/config/seo-meta.types.d.ts.map +1 -0
  50. package/dist/config/seo-meta.types.js +11 -0
  51. package/dist/config/seo-meta.types.js.map +1 -0
  52. package/dist/config/seo.service.d.ts +41 -58
  53. package/dist/config/seo.service.d.ts.map +1 -1
  54. package/dist/config/seo.service.js +468 -136
  55. package/dist/config/seo.service.js.map +1 -1
  56. package/dist/config/site.config.d.ts +10 -50
  57. package/dist/config/site.config.d.ts.map +1 -1
  58. package/dist/config/site.config.js +8 -36
  59. package/dist/config/site.config.js.map +1 -1
  60. package/dist/core/index.d.ts +1 -3
  61. package/dist/core/index.d.ts.map +1 -1
  62. package/dist/core/index.js +1 -3
  63. package/dist/core/index.js.map +1 -1
  64. package/dist/core/services/dates.service.d.ts +149 -22
  65. package/dist/core/services/dates.service.d.ts.map +1 -1
  66. package/dist/core/services/dates.service.js +201 -54
  67. package/dist/core/services/dates.service.js.map +1 -1
  68. package/dist/core/services/error.service.d.ts +32 -20
  69. package/dist/core/services/error.service.d.ts.map +1 -1
  70. package/dist/core/services/error.service.js +44 -32
  71. package/dist/core/services/error.service.js.map +1 -1
  72. package/dist/core/services/formatter.service.d.ts +245 -35
  73. package/dist/core/services/formatter.service.d.ts.map +1 -1
  74. package/dist/core/services/formatter.service.js +281 -57
  75. package/dist/core/services/formatter.service.js.map +1 -1
  76. package/dist/core/services/generator.service.d.ts +115 -26
  77. package/dist/core/services/generator.service.d.ts.map +1 -1
  78. package/dist/core/services/generator.service.js +191 -56
  79. package/dist/core/services/generator.service.js.map +1 -1
  80. package/dist/core/services/geometry.service.d.ts +369 -39
  81. package/dist/core/services/geometry.service.d.ts.map +1 -1
  82. package/dist/core/services/geometry.service.js +424 -66
  83. package/dist/core/services/geometry.service.js.map +1 -1
  84. package/dist/core/services/http.service.d.ts +244 -21
  85. package/dist/core/services/http.service.d.ts.map +1 -1
  86. package/dist/core/services/http.service.js +419 -98
  87. package/dist/core/services/http.service.js.map +1 -1
  88. package/dist/core/services/logger.service.d.ts +95 -29
  89. package/dist/core/services/logger.service.d.ts.map +1 -1
  90. package/dist/core/services/logger.service.js +167 -41
  91. package/dist/core/services/logger.service.js.map +1 -1
  92. package/dist/core/services/reactive.service.d.ts +146 -19
  93. package/dist/core/services/reactive.service.d.ts.map +1 -1
  94. package/dist/core/services/reactive.service.js +278 -137
  95. package/dist/core/services/reactive.service.js.map +1 -1
  96. package/dist/core/services/timing.service.d.ts +142 -20
  97. package/dist/core/services/timing.service.d.ts.map +1 -1
  98. package/dist/core/services/timing.service.js +324 -185
  99. package/dist/core/services/timing.service.js.map +1 -1
  100. package/dist/core/services/utils.service.d.ts +228 -43
  101. package/dist/core/services/utils.service.d.ts.map +1 -1
  102. package/dist/core/services/utils.service.js +305 -125
  103. package/dist/core/services/utils.service.js.map +1 -1
  104. package/dist/infrastructure/dom/dom.service.d.ts +307 -44
  105. package/dist/infrastructure/dom/dom.service.d.ts.map +1 -1
  106. package/dist/infrastructure/dom/dom.service.js +408 -129
  107. package/dist/infrastructure/dom/dom.service.js.map +1 -1
  108. package/dist/infrastructure/index.d.ts +0 -3
  109. package/dist/infrastructure/index.d.ts.map +1 -1
  110. package/dist/infrastructure/index.js +0 -3
  111. package/dist/infrastructure/index.js.map +1 -1
  112. package/dist/infrastructure/observer/observer.service.d.ts +124 -31
  113. package/dist/infrastructure/observer/observer.service.d.ts.map +1 -1
  114. package/dist/infrastructure/observer/observer.service.js +227 -131
  115. package/dist/infrastructure/observer/observer.service.js.map +1 -1
  116. package/dist/infrastructure/sensors/sensors.service.d.ts +154 -22
  117. package/dist/infrastructure/sensors/sensors.service.d.ts.map +1 -1
  118. package/dist/infrastructure/sensors/sensors.service.js +264 -112
  119. package/dist/infrastructure/sensors/sensors.service.js.map +1 -1
  120. package/dist/infrastructure/storage/storage.service.d.ts +123 -45
  121. package/dist/infrastructure/storage/storage.service.d.ts.map +1 -1
  122. package/dist/infrastructure/storage/storage.service.js +236 -66
  123. package/dist/infrastructure/storage/storage.service.js.map +1 -1
  124. package/dist/infrastructure/theme/theme.service.d.ts +93 -29
  125. package/dist/infrastructure/theme/theme.service.d.ts.map +1 -1
  126. package/dist/infrastructure/theme/theme.service.js +198 -96
  127. package/dist/infrastructure/theme/theme.service.js.map +1 -1
  128. package/dist/infrastructure/viewport/viewport.service.d.ts +233 -35
  129. package/dist/infrastructure/viewport/viewport.service.d.ts.map +1 -1
  130. package/dist/infrastructure/viewport/viewport.service.js +358 -139
  131. package/dist/infrastructure/viewport/viewport.service.js.map +1 -1
  132. package/dist/infrastructure/worker/worker.service.d.ts +84 -38
  133. package/dist/infrastructure/worker/worker.service.d.ts.map +1 -1
  134. package/dist/infrastructure/worker/worker.service.js +234 -133
  135. package/dist/infrastructure/worker/worker.service.js.map +1 -1
  136. package/dist/prisma/index.d.ts +2 -0
  137. package/dist/prisma/index.d.ts.map +1 -0
  138. package/dist/prisma/index.js +2 -0
  139. package/dist/prisma/index.js.map +1 -0
  140. package/dist/prisma/schema.json +11 -33
  141. package/dist/prisma/use-prisma.d.ts +68 -0
  142. package/dist/prisma/use-prisma.d.ts.map +1 -0
  143. package/dist/prisma/use-prisma.js +82 -0
  144. package/dist/prisma/use-prisma.js.map +1 -0
  145. package/dist/types/index.d.ts +20 -12
  146. package/dist/types/index.d.ts.map +1 -1
  147. package/package.json +124 -125
  148. package/CHANGELOG.md +0 -101
@@ -1,42 +1,88 @@
1
1
  import type { WorkerFunc } from "../../types/index.js";
2
2
  /**
3
- * Worker facade (Singleton + Pool pattern) for running pure functions off the
4
- * main thread, with an SSR/main-thread fallback when Worker is unavailable.
3
+ * Runs a pure function in a one-shot Worker and destroys it afterwards.
4
+ * Falls back to running on the main thread when Workers are unavailable (SSR).
5
+ * Async worker functions are awaited (Promise resolved before postMessage).
6
+ *
7
+ * @typeParam TInput - Input data type.
8
+ * @typeParam TOutput - Output data type.
9
+ * @param workerFunc - The pure function to execute off the main thread.
10
+ * @param data - The input data passed to the function.
11
+ * @returns A Promise resolving to the function's output.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const doubled = await useRun((n: number) => n * 2, 21);
16
+ * console.log(doubled); // 42
17
+ * ```
5
18
  */
6
- export default class WorkerService {
7
- private static instance;
8
- private pools;
9
- private constructor();
10
- static getInstance(): WorkerService;
11
- static useIsSupported(): boolean;
12
- /**
13
- * Runs a pure function in a one-shot Worker and destroys it afterwards.
14
- */
15
- useRun<TInput, TOutput>(workerFunc: WorkerFunc<TInput, TOutput>, data: TInput): Promise<TOutput>;
16
- /**
17
- * Creates a reusable Worker pool under a unique key.
18
- */
19
- useCreatePool<TInput, TOutput>(key: string, workerFunc: WorkerFunc<TInput, TOutput>): this;
20
- /**
21
- * Runs a task on an existing pool. Tasks are queued to prevent race conditions
22
- * when multiple calls target the same pool key concurrently.
23
- */
24
- useRunPool<TInput, TOutput>(key: string, data: TInput): Promise<TOutput>;
25
- /**
26
- * Terminates a specific pool.
27
- */
28
- useTerminate(key: string): this;
29
- /**
30
- * Terminates all active pools.
31
- */
32
- useTerminateAll(): this;
33
- /**
34
- * Checks whether a pool exists.
35
- */
36
- useHasWorker(key: string): boolean;
37
- /**
38
- * Lists all active pool keys.
39
- */
40
- useKeys(): string[];
41
- }
19
+ export declare function useRun<TInput, TOutput>(workerFunc: WorkerFunc<TInput, TOutput>, data: TInput): Promise<TOutput>;
20
+ /**
21
+ * Creates a reusable Worker pool under a unique key. If a pool with the same
22
+ * key already exists, it is terminated first.
23
+ *
24
+ * @typeParam TInput - Input data type.
25
+ * @typeParam TOutput - Output data type.
26
+ * @param key - A unique identifier for this pool.
27
+ * @param workerFunc - The pure function the pool will execute.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * useCreatePool("heavy", (n: number) => n ** 2);
32
+ * const result = await useRunPool("heavy", 9); // 81
33
+ * useTerminate("heavy");
34
+ * ```
35
+ */
36
+ export declare function useCreatePool<TInput, TOutput>(key: string, workerFunc: WorkerFunc<TInput, TOutput>): void;
37
+ /**
38
+ * Runs a task on an existing Worker pool. Tasks are correlated by `__taskId`
39
+ * so concurrent tasks do not stomp each other's handlers.
40
+ *
41
+ * @typeParam TInput - Input data type.
42
+ * @typeParam TOutput - Output data type.
43
+ * @param key - The pool key created via {@link useCreatePool}.
44
+ * @param data - The input data to pass to the pool's function.
45
+ * @returns A Promise resolving to the function's output.
46
+ * @throws {Error} If the pool does not exist.
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * useCreatePool("math", (n: number) => n * 10);
51
+ * const result = await useRunPool("math", 5); // 50
52
+ * ```
53
+ */
54
+ export declare function useRunPool<TInput, TOutput>(key: string, data: TInput): Promise<TOutput>;
55
+ /**
56
+ * Terminates a specific Worker pool and rejects any in-flight tasks.
57
+ *
58
+ * @param key - The pool key to terminate.
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * useTerminate("heavy");
63
+ * ```
64
+ */
65
+ export declare function useTerminate(key: string): void;
66
+ /**
67
+ * Terminates all active Worker pools and rejects any in-flight tasks.
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * useTerminateAll();
72
+ * ```
73
+ */
74
+ export declare function useTerminateAll(): void;
75
+ /**
76
+ * Checks whether a Worker pool with the given key exists.
77
+ *
78
+ * @param key - The pool key to check.
79
+ * @returns `true` if the pool is registered.
80
+ */
81
+ export declare function useHasWorker(key: string): boolean;
82
+ /**
83
+ * Returns a list of all active Worker pool keys.
84
+ *
85
+ * @returns An array of pool key strings.
86
+ */
87
+ export declare function useWorkerKeys(): string[];
42
88
  //# sourceMappingURL=worker.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.service.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/worker/worker.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,sBAAsB,CAAC;AAExE;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAa;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,KAAK,CAA2C;IAExD,OAAO,eAAiB;IAExB,MAAM,CAAC,WAAW,IAAI,aAAa,CAKlC;IAED,MAAM,CAAC,cAAc,IAAI,OAAO,CAE/B;IAED;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,OAAO,EAC3B,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,CAgDlB;IAED;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAuBzF;IAED;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA6BvE;IAED;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ9B;IAED;;OAEG;IACH,eAAe,IAAI,IAAI,CAKtB;IAED;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEjC;IAED;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE,CAElB;CACD"}
1
+ {"version":3,"file":"worker.service.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/worker/worker.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,sBAAsB,CAAC;AA0BxE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,OAAO,EAC3C,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,CA0DlB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAC5C,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,IAAI,CAwCN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA4CvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAiB9C;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC"}
@@ -1,151 +1,252 @@
1
+ // ============================================================
2
+ // Module-level state
3
+ // ============================================================
4
+ /** Registry of reusable Worker pools keyed by string. */
5
+ const pools = new Map();
6
+ // ============================================================
7
+ // Internal helpers
8
+ // ============================================================
1
9
  /**
2
- * Worker facade (Singleton + Pool pattern) for running pure functions off the
3
- * main thread, with an SSR/main-thread fallback when Worker is unavailable.
10
+ * Checks whether the Web Worker API is available.
11
+ *
12
+ * @returns `true` if `Worker` is available in the current environment.
4
13
  */
5
- export default class WorkerService {
6
- static instance;
7
- pools = new Map();
8
- constructor() { }
9
- static getInstance() {
10
- if (!WorkerService.instance) {
11
- WorkerService.instance = new WorkerService();
12
- }
13
- return WorkerService.instance;
14
- }
15
- static useIsSupported() {
16
- return typeof window !== "undefined" && "Worker" in window;
14
+ function isWorkerSupported() {
15
+ return typeof window !== "undefined" && "Worker" in window;
16
+ }
17
+ // ============================================================
18
+ // Public API
19
+ // ============================================================
20
+ /**
21
+ * Runs a pure function in a one-shot Worker and destroys it afterwards.
22
+ * Falls back to running on the main thread when Workers are unavailable (SSR).
23
+ * Async worker functions are awaited (Promise resolved before postMessage).
24
+ *
25
+ * @typeParam TInput - Input data type.
26
+ * @typeParam TOutput - Output data type.
27
+ * @param workerFunc - The pure function to execute off the main thread.
28
+ * @param data - The input data passed to the function.
29
+ * @returns A Promise resolving to the function's output.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const doubled = await useRun((n: number) => n * 2, 21);
34
+ * console.log(doubled); // 42
35
+ * ```
36
+ */
37
+ export async function useRun(workerFunc, data) {
38
+ if (!isWorkerSupported()) {
39
+ return Promise.resolve(workerFunc(data));
17
40
  }
18
- /**
19
- * Runs a pure function in a one-shot Worker and destroys it afterwards.
20
- */
21
- async useRun(workerFunc, data) {
22
- if (!WorkerService.useIsSupported()) {
23
- // SSR/Node fallback: run on the main thread.
24
- return Promise.resolve(workerFunc(data));
25
- }
26
- return new Promise((resolve, reject) => {
27
- let worker;
28
- let workerUrl;
29
- const cleanup = () => {
30
- if (worker) {
31
- worker.terminate();
32
- worker = undefined;
33
- }
34
- if (workerUrl) {
35
- URL.revokeObjectURL(workerUrl);
36
- workerUrl = undefined;
41
+ return new Promise((resolve, reject) => {
42
+ let worker;
43
+ let workerUrl;
44
+ const cleanup = () => {
45
+ if (worker) {
46
+ worker.terminate();
47
+ worker = undefined;
48
+ }
49
+ if (workerUrl) {
50
+ URL.revokeObjectURL(workerUrl);
51
+ workerUrl = undefined;
52
+ }
53
+ };
54
+ try {
55
+ const funcString = workerFunc.toString();
56
+ const blob = new Blob([
57
+ `self.onmessage = (e) => {
58
+ Promise.resolve((${funcString})(e.data))
59
+ .then((payload) => self.postMessage({ ok: true, payload }))
60
+ .catch((err) => self.postMessage({ ok: false, error: String(err && err.message ? err.message : err) }));
61
+ }`,
62
+ ], { type: "application/javascript" });
63
+ workerUrl = URL.createObjectURL(blob);
64
+ worker = new Worker(workerUrl);
65
+ worker.onmessage = (event) => {
66
+ cleanup();
67
+ if (event.data?.ok === false) {
68
+ reject(new Error(event.data.error ?? "Worker function failed"));
69
+ return;
37
70
  }
71
+ resolve(event.data?.payload);
38
72
  };
39
- try {
40
- const funcString = workerFunc.toString();
41
- const blob = new Blob([`self.onmessage = (e) => self.postMessage((${funcString})(e.data))`], {
42
- type: "application/javascript",
43
- });
44
- workerUrl = URL.createObjectURL(blob);
45
- worker = new Worker(workerUrl);
46
- worker.onmessage = (event) => {
47
- cleanup();
48
- resolve(event.data);
49
- };
50
- worker.onerror = (error) => {
51
- cleanup();
52
- reject(new Error(`Worker error: ${error.message}`));
53
- };
54
- worker.onmessageerror = () => {
55
- cleanup();
56
- reject(new Error("Worker returned a non-cloneable value."));
57
- };
58
- worker.postMessage(data);
59
- }
60
- catch (error) {
73
+ worker.onerror = (error) => {
61
74
  cleanup();
62
- reject(error);
63
- }
64
- });
65
- }
66
- /**
67
- * Creates a reusable Worker pool under a unique key.
68
- */
69
- useCreatePool(key, workerFunc) {
70
- if (!WorkerService.useIsSupported())
71
- return this;
72
- if (this.pools.has(key)) {
73
- this.useTerminate(key);
75
+ reject(new Error(`Worker error: ${error.message}`));
76
+ };
77
+ worker.onmessageerror = () => {
78
+ cleanup();
79
+ reject(new Error("Worker returned a non-cloneable value."));
80
+ };
81
+ worker.postMessage(data);
82
+ }
83
+ catch (error) {
84
+ cleanup();
85
+ reject(error);
74
86
  }
75
- const funcString = workerFunc.toString();
76
- const blob = new Blob([
77
- `self.onmessage = (e) => self.postMessage({ __taskId: e.data.__taskId, payload: (${funcString})(e.data.payload) })`,
78
- ], { type: "application/javascript" });
79
- const workerUrl = URL.createObjectURL(blob);
80
- const worker = new Worker(workerUrl);
81
- this.pools.set(key, {
82
- worker,
83
- workerUrl,
87
+ });
88
+ }
89
+ /**
90
+ * Creates a reusable Worker pool under a unique key. If a pool with the same
91
+ * key already exists, it is terminated first.
92
+ *
93
+ * @typeParam TInput - Input data type.
94
+ * @typeParam TOutput - Output data type.
95
+ * @param key - A unique identifier for this pool.
96
+ * @param workerFunc - The pure function the pool will execute.
97
+ *
98
+ * @example
99
+ * ```ts
100
+ * useCreatePool("heavy", (n: number) => n ** 2);
101
+ * const result = await useRunPool("heavy", 9); // 81
102
+ * useTerminate("heavy");
103
+ * ```
104
+ */
105
+ export function useCreatePool(key, workerFunc) {
106
+ if (!isWorkerSupported()) {
107
+ pools.set(key, {
108
+ worker: null,
109
+ workerUrl: "",
84
110
  func: workerFunc,
111
+ pending: new Map(),
85
112
  });
86
- return this;
113
+ return;
87
114
  }
88
- /**
89
- * Runs a task on an existing pool. Tasks are queued to prevent race conditions
90
- * when multiple calls target the same pool key concurrently.
91
- */
92
- useRunPool(key, data) {
93
- const entry = this.pools.get(key);
94
- if (!entry) {
95
- return Promise.reject(new Error(`Worker pool "${key}" not found`));
96
- }
97
- if (!WorkerService.useIsSupported()) {
98
- return Promise.resolve(entry.func(data));
99
- }
100
- // Queue the task to prevent onmessage race conditions.
101
- const taskId = `${Date.now()}-${Math.random().toString(36).slice(2)}`;
102
- return new Promise((resolve, reject) => {
103
- const handler = (event) => {
104
- if (event.data?.__taskId === taskId) {
105
- entry.worker.removeEventListener("message", handler);
106
- resolve(event.data.payload);
107
- }
108
- };
109
- entry.worker.addEventListener("message", handler);
110
- entry.worker.onerror = (error) => {
111
- entry.worker.removeEventListener("message", handler);
112
- reject(new Error(`Worker error: ${error.message}`));
113
- };
114
- entry.worker.postMessage({ __taskId: taskId, payload: data });
115
+ if (pools.has(key)) {
116
+ useTerminate(key);
117
+ }
118
+ const funcString = workerFunc.toString();
119
+ const blob = new Blob([
120
+ `self.onmessage = (e) => {
121
+ const taskId = e.data.__taskId;
122
+ Promise.resolve((${funcString})(e.data.payload))
123
+ .then((payload) => self.postMessage({ __taskId: taskId, ok: true, payload }))
124
+ .catch((err) => self.postMessage({
125
+ __taskId: taskId,
126
+ ok: false,
127
+ error: String(err && err.message ? err.message : err),
128
+ }));
129
+ }`,
130
+ ], { type: "application/javascript" });
131
+ const workerUrl = URL.createObjectURL(blob);
132
+ const worker = new Worker(workerUrl);
133
+ pools.set(key, {
134
+ worker,
135
+ workerUrl,
136
+ func: workerFunc,
137
+ pending: new Map(),
138
+ });
139
+ }
140
+ /**
141
+ * Runs a task on an existing Worker pool. Tasks are correlated by `__taskId`
142
+ * so concurrent tasks do not stomp each other's handlers.
143
+ *
144
+ * @typeParam TInput - Input data type.
145
+ * @typeParam TOutput - Output data type.
146
+ * @param key - The pool key created via {@link useCreatePool}.
147
+ * @param data - The input data to pass to the pool's function.
148
+ * @returns A Promise resolving to the function's output.
149
+ * @throws {Error} If the pool does not exist.
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * useCreatePool("math", (n: number) => n * 10);
154
+ * const result = await useRunPool("math", 5); // 50
155
+ * ```
156
+ */
157
+ export function useRunPool(key, data) {
158
+ const entry = pools.get(key);
159
+ if (!entry) {
160
+ return Promise.reject(new Error(`Worker pool "${key}" not found`));
161
+ }
162
+ if (!isWorkerSupported()) {
163
+ return Promise.resolve(entry.func(data));
164
+ }
165
+ const taskId = `${Date.now()}-${Math.random().toString(36).slice(2)}`;
166
+ return new Promise((resolve, reject) => {
167
+ const onMessage = (event) => {
168
+ if (event.data?.__taskId !== taskId)
169
+ return;
170
+ cleanup();
171
+ if (event.data.ok === false) {
172
+ reject(new Error(event.data.error ?? "Worker function failed"));
173
+ return;
174
+ }
175
+ resolve(event.data.payload);
176
+ };
177
+ const onError = (error) => {
178
+ cleanup();
179
+ reject(new Error(`Worker error: ${error.message}`));
180
+ };
181
+ const cleanup = () => {
182
+ entry.worker.removeEventListener("message", onMessage);
183
+ entry.worker.removeEventListener("error", onError);
184
+ entry.pending.delete(taskId);
185
+ };
186
+ entry.pending.set(taskId, {
187
+ reject: (reason) => reject(reason),
188
+ cleanup,
115
189
  });
190
+ entry.worker.addEventListener("message", onMessage);
191
+ entry.worker.addEventListener("error", onError);
192
+ entry.worker.postMessage({ __taskId: taskId, payload: data });
193
+ });
194
+ }
195
+ /**
196
+ * Terminates a specific Worker pool and rejects any in-flight tasks.
197
+ *
198
+ * @param key - The pool key to terminate.
199
+ *
200
+ * @example
201
+ * ```ts
202
+ * useTerminate("heavy");
203
+ * ```
204
+ */
205
+ export function useTerminate(key) {
206
+ const entry = pools.get(key);
207
+ if (!entry)
208
+ return;
209
+ for (const pending of entry.pending.values()) {
210
+ pending.cleanup();
211
+ pending.reject(new Error(`Worker pool "${key}" was terminated`));
116
212
  }
117
- /**
118
- * Terminates a specific pool.
119
- */
120
- useTerminate(key) {
121
- const entry = this.pools.get(key);
122
- if (!entry)
123
- return this;
213
+ entry.pending.clear();
214
+ if (isWorkerSupported() && entry.worker) {
124
215
  entry.worker.terminate();
125
- URL.revokeObjectURL(entry.workerUrl);
126
- this.pools.delete(key);
127
- return this;
128
- }
129
- /**
130
- * Terminates all active pools.
131
- */
132
- useTerminateAll() {
133
- for (const key of this.pools.keys()) {
134
- this.useTerminate(key);
216
+ if (entry.workerUrl) {
217
+ URL.revokeObjectURL(entry.workerUrl);
135
218
  }
136
- return this;
137
- }
138
- /**
139
- * Checks whether a pool exists.
140
- */
141
- useHasWorker(key) {
142
- return this.pools.has(key);
143
219
  }
144
- /**
145
- * Lists all active pool keys.
146
- */
147
- useKeys() {
148
- return Array.from(this.pools.keys());
220
+ pools.delete(key);
221
+ }
222
+ /**
223
+ * Terminates all active Worker pools and rejects any in-flight tasks.
224
+ *
225
+ * @example
226
+ * ```ts
227
+ * useTerminateAll();
228
+ * ```
229
+ */
230
+ export function useTerminateAll() {
231
+ for (const key of pools.keys()) {
232
+ useTerminate(key);
149
233
  }
150
234
  }
235
+ /**
236
+ * Checks whether a Worker pool with the given key exists.
237
+ *
238
+ * @param key - The pool key to check.
239
+ * @returns `true` if the pool is registered.
240
+ */
241
+ export function useHasWorker(key) {
242
+ return pools.has(key);
243
+ }
244
+ /**
245
+ * Returns a list of all active Worker pool keys.
246
+ *
247
+ * @returns An array of pool key strings.
248
+ */
249
+ export function useWorkerKeys() {
250
+ return Array.from(pools.keys());
251
+ }
151
252
  //# sourceMappingURL=worker.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.service.js","sourceRoot":"","sources":["../../../src/infrastructure/worker/worker.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.service.js","sourceRoot":"","sources":["../../../src/infrastructure/worker/worker.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { usePrismaClient } from "./use-prisma.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prisma/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { usePrismaClient } from "./use-prisma.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prisma/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}