knitting 0.1.46

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 (121) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +632 -0
  3. package/knitting.d.ts +4 -0
  4. package/knitting.js +5 -0
  5. package/map.md +264 -0
  6. package/package.json +77 -0
  7. package/prebuilds/darwin-arm64-node-127/knitting_shared_memory.node +0 -0
  8. package/prebuilds/darwin-arm64-node-127/knitting_shm.node +0 -0
  9. package/prebuilds/darwin-arm64-node-137/knitting_shared_memory.node +0 -0
  10. package/prebuilds/darwin-arm64-node-137/knitting_shm.node +0 -0
  11. package/prebuilds/darwin-x64-node-127/knitting_shared_memory.node +0 -0
  12. package/prebuilds/darwin-x64-node-127/knitting_shm.node +0 -0
  13. package/prebuilds/darwin-x64-node-137/knitting_shared_memory.node +0 -0
  14. package/prebuilds/darwin-x64-node-137/knitting_shm.node +0 -0
  15. package/prebuilds/linux-x64-node-127/knitting_shared_memory.node +0 -0
  16. package/prebuilds/linux-x64-node-127/knitting_shm.node +0 -0
  17. package/prebuilds/linux-x64-node-137/knitting_shared_memory.node +0 -0
  18. package/prebuilds/linux-x64-node-137/knitting_shm.node +0 -0
  19. package/process-shared-buffer.d.ts +1 -0
  20. package/process-shared-buffer.js +1 -0
  21. package/scripts/build-native-addons.ts +295 -0
  22. package/src/api.d.ts +55 -0
  23. package/src/api.js +384 -0
  24. package/src/common/envelope.d.ts +11 -0
  25. package/src/common/envelope.js +8 -0
  26. package/src/common/module-url.d.ts +1 -0
  27. package/src/common/module-url.js +24 -0
  28. package/src/common/node-compat.d.ts +20 -0
  29. package/src/common/node-compat.js +24 -0
  30. package/src/common/path-canonical.d.ts +6 -0
  31. package/src/common/path-canonical.js +41 -0
  32. package/src/common/runtime.d.ts +15 -0
  33. package/src/common/runtime.js +91 -0
  34. package/src/common/shared-buffer-region.d.ts +11 -0
  35. package/src/common/shared-buffer-region.js +21 -0
  36. package/src/common/shared-buffer-text.d.ts +16 -0
  37. package/src/common/shared-buffer-text.js +65 -0
  38. package/src/common/task-source.d.ts +2 -0
  39. package/src/common/task-source.js +79 -0
  40. package/src/common/task-symbol.d.ts +1 -0
  41. package/src/common/task-symbol.js +1 -0
  42. package/src/common/with-resolvers.d.ts +9 -0
  43. package/src/common/with-resolvers.js +23 -0
  44. package/src/common/worker-runtime.d.ts +40 -0
  45. package/src/common/worker-runtime.js +52 -0
  46. package/src/connections/bun.d.ts +20 -0
  47. package/src/connections/bun.js +159 -0
  48. package/src/connections/deno.d.ts +20 -0
  49. package/src/connections/deno.js +150 -0
  50. package/src/connections/file-descriptor.d.ts +37 -0
  51. package/src/connections/file-descriptor.js +139 -0
  52. package/src/connections/index.d.ts +3 -0
  53. package/src/connections/index.js +3 -0
  54. package/src/connections/node-addons.d.ts +5 -0
  55. package/src/connections/node-addons.js +43 -0
  56. package/src/connections/node.d.ts +29 -0
  57. package/src/connections/node.js +59 -0
  58. package/src/connections/posix.d.ts +31 -0
  59. package/src/connections/posix.js +71 -0
  60. package/src/connections/process-shared-buffer.d.ts +67 -0
  61. package/src/connections/process-shared-buffer.js +267 -0
  62. package/src/connections/types.d.ts +48 -0
  63. package/src/connections/types.js +37 -0
  64. package/src/error.d.ts +13 -0
  65. package/src/error.js +49 -0
  66. package/src/ipc/tools/ring-queue.d.ts +33 -0
  67. package/src/ipc/tools/ring-queue.js +159 -0
  68. package/src/ipc/transport/shared-memory.d.ts +25 -0
  69. package/src/ipc/transport/shared-memory.js +35 -0
  70. package/src/knitting_shared_memory.cc +436 -0
  71. package/src/knitting_shm.cc +476 -0
  72. package/src/memory/byte-carpet.d.ts +73 -0
  73. package/src/memory/byte-carpet.js +157 -0
  74. package/src/memory/lock.d.ts +190 -0
  75. package/src/memory/lock.js +856 -0
  76. package/src/memory/payload-config.d.ts +22 -0
  77. package/src/memory/payload-config.js +67 -0
  78. package/src/memory/payloadCodec.d.ts +46 -0
  79. package/src/memory/payloadCodec.js +1157 -0
  80. package/src/memory/regionRegistry.d.ts +17 -0
  81. package/src/memory/regionRegistry.js +285 -0
  82. package/src/memory/shared-buffer-io.d.ts +53 -0
  83. package/src/memory/shared-buffer-io.js +380 -0
  84. package/src/permission/index.d.ts +2 -0
  85. package/src/permission/index.js +2 -0
  86. package/src/permission/protocol.d.ts +166 -0
  87. package/src/permission/protocol.js +640 -0
  88. package/src/runtime/balancer.d.ts +19 -0
  89. package/src/runtime/balancer.js +149 -0
  90. package/src/runtime/dispatcher.d.ts +34 -0
  91. package/src/runtime/dispatcher.js +142 -0
  92. package/src/runtime/inline-executor.d.ts +10 -0
  93. package/src/runtime/inline-executor.js +270 -0
  94. package/src/runtime/pool.d.ts +43 -0
  95. package/src/runtime/pool.js +922 -0
  96. package/src/runtime/tx-queue.d.ts +25 -0
  97. package/src/runtime/tx-queue.js +144 -0
  98. package/src/shared/abortSignal.d.ts +23 -0
  99. package/src/shared/abortSignal.js +126 -0
  100. package/src/types.d.ts +283 -0
  101. package/src/types.js +2 -0
  102. package/src/worker/composable-runners.d.ts +12 -0
  103. package/src/worker/composable-runners.js +105 -0
  104. package/src/worker/loop.d.ts +2 -0
  105. package/src/worker/loop.js +453 -0
  106. package/src/worker/rx-queue.d.ts +22 -0
  107. package/src/worker/rx-queue.js +124 -0
  108. package/src/worker/safety/index.d.ts +4 -0
  109. package/src/worker/safety/index.js +4 -0
  110. package/src/worker/safety/performance.d.ts +1 -0
  111. package/src/worker/safety/performance.js +17 -0
  112. package/src/worker/safety/process.d.ts +2 -0
  113. package/src/worker/safety/process.js +79 -0
  114. package/src/worker/safety/startup.d.ts +16 -0
  115. package/src/worker/safety/startup.js +30 -0
  116. package/src/worker/safety/worker-data.d.ts +2 -0
  117. package/src/worker/safety/worker-data.js +36 -0
  118. package/src/worker/task-loader.d.ts +26 -0
  119. package/src/worker/task-loader.js +66 -0
  120. package/src/worker/timers.d.ts +18 -0
  121. package/src/worker/timers.js +97 -0
@@ -0,0 +1,22 @@
1
+ import { type SharedBufferSource } from "../common/shared-buffer-region.js";
2
+ export declare const PAYLOAD_DEFAULT_MAX_BYTE_LENGTH: number;
3
+ export declare const PAYLOAD_DEFAULT_INITIAL_BYTES: number;
4
+ export type PayloadBufferMode = "growable" | "fixed";
5
+ export type PayloadBufferOptions = {
6
+ mode?: PayloadBufferMode;
7
+ payloadInitialBytes?: number;
8
+ payloadMaxByteLength?: number;
9
+ maxPayloadBytes?: number;
10
+ };
11
+ export type ResolvedPayloadBufferOptions = {
12
+ mode: PayloadBufferMode;
13
+ payloadInitialBytes: number;
14
+ payloadMaxByteLength: number;
15
+ maxPayloadBytes: number;
16
+ };
17
+ type PayloadBackingBuffer = SharedArrayBuffer | ArrayBuffer;
18
+ export declare const resolvePayloadBufferOptions: ({ options, sab, }: {
19
+ options?: PayloadBufferOptions;
20
+ sab?: PayloadBackingBuffer | SharedBufferSource;
21
+ }) => ResolvedPayloadBufferOptions;
22
+ export {};
@@ -0,0 +1,67 @@
1
+ import { HAS_SAB_GROW, isGrowableSharedArrayBuffer, sharedArrayBufferMaxByteLength, } from "../common/runtime.js";
2
+ import { toSharedBufferRegion, } from "../common/shared-buffer-region.js";
3
+ export const PAYLOAD_DEFAULT_MAX_BYTE_LENGTH = 64 * 1024 * 1024;
4
+ export const PAYLOAD_DEFAULT_INITIAL_BYTES = 4 * 1024 * 1024;
5
+ const toPositiveInteger = (value) => {
6
+ if (!Number.isFinite(value))
7
+ return undefined;
8
+ const int = Math.floor(value);
9
+ return int > 0 ? int : undefined;
10
+ };
11
+ const canGrowSharedBuffer = (sab) => {
12
+ if (sab == null)
13
+ return false;
14
+ return sab instanceof SharedArrayBuffer &&
15
+ HAS_SAB_GROW &&
16
+ isGrowableSharedArrayBuffer(sab);
17
+ };
18
+ const sharedBufferMaxByteLength = (sab) => {
19
+ if (sab == null)
20
+ return undefined;
21
+ if (sab instanceof SharedArrayBuffer) {
22
+ return toPositiveInteger(sharedArrayBufferMaxByteLength(sab));
23
+ }
24
+ return toPositiveInteger(sab.byteLength);
25
+ };
26
+ export const resolvePayloadBufferOptions = ({ options, sab, }) => {
27
+ const sabRegion = sab === undefined ? undefined : toSharedBufferRegion(sab);
28
+ const backing = sabRegion?.sab;
29
+ const requestedMode = options?.mode;
30
+ const modeDefault = HAS_SAB_GROW ? "growable" : "fixed";
31
+ let mode = requestedMode ?? modeDefault;
32
+ if (mode === "growable" && backing != null && !canGrowSharedBuffer(backing)) {
33
+ mode = "fixed";
34
+ }
35
+ if (mode === "growable" && !HAS_SAB_GROW) {
36
+ mode = "fixed";
37
+ }
38
+ const payloadMaxByteLength = toPositiveInteger(options?.payloadMaxByteLength) ??
39
+ toPositiveInteger(sabRegion?.byteLength) ??
40
+ sharedBufferMaxByteLength(backing) ??
41
+ PAYLOAD_DEFAULT_MAX_BYTE_LENGTH;
42
+ const requestedInitialBytes = toPositiveInteger(options?.payloadInitialBytes);
43
+ const payloadInitialBytes = mode === "fixed"
44
+ ? payloadMaxByteLength
45
+ : Math.min(requestedInitialBytes ?? PAYLOAD_DEFAULT_INITIAL_BYTES, payloadMaxByteLength);
46
+ const maxPayloadCeiling = payloadMaxByteLength >> 3;
47
+ if (maxPayloadCeiling <= 0) {
48
+ throw new RangeError("payloadMaxByteLength is too small; must be at least 8 bytes.");
49
+ }
50
+ const rawMaxPayloadBytes = options?.maxPayloadBytes;
51
+ if (rawMaxPayloadBytes !== undefined) {
52
+ const normalized = Math.floor(rawMaxPayloadBytes);
53
+ if (!Number.isFinite(normalized) || normalized <= 0) {
54
+ throw new RangeError(`maxPayloadBytes must be > 0 and <= ${maxPayloadCeiling}.`);
55
+ }
56
+ }
57
+ const maxPayloadBytes = toPositiveInteger(rawMaxPayloadBytes) ?? maxPayloadCeiling;
58
+ if (maxPayloadBytes <= 0 || maxPayloadBytes > maxPayloadCeiling) {
59
+ throw new RangeError(`maxPayloadBytes must be > 0 and <= ${maxPayloadCeiling}.`);
60
+ }
61
+ return {
62
+ mode,
63
+ payloadInitialBytes,
64
+ payloadMaxByteLength,
65
+ maxPayloadBytes,
66
+ };
67
+ };
@@ -0,0 +1,46 @@
1
+ import { type PromisePayloadHandler, type Task } from "./lock.js";
2
+ import type { LockBufferTextCompat } from "../common/shared-buffer-text.js";
3
+ import { type PayloadBufferOptions } from "./payload-config.js";
4
+ import type { SharedBufferSource } from "../common/shared-buffer-region.js";
5
+ /**
6
+ * Returns `true` when the payload is encoded successfully.
7
+ * Returns `false` when dynamic payload space could not be reserved.
8
+ */
9
+ export declare const encodePayload: ({ lockSector, payload, sab, payloadConfig, headersBuffer, headerSlotStrideU32, textCompat, onPromise, }: {
10
+ lockSector?: SharedBufferSource;
11
+ payload?: {
12
+ sab?: SharedBufferSource;
13
+ config?: PayloadBufferOptions;
14
+ };
15
+ /**
16
+ * @deprecated Use `payload.sab`.
17
+ */
18
+ sab?: SharedBufferSource;
19
+ /**
20
+ * @deprecated Use `payload.config`.
21
+ */
22
+ payloadConfig?: PayloadBufferOptions;
23
+ headersBuffer: Uint32Array;
24
+ headerSlotStrideU32?: number;
25
+ textCompat?: LockBufferTextCompat;
26
+ onPromise?: PromisePayloadHandler;
27
+ }) => (task: Task, slotIndex: number) => boolean;
28
+ export declare const decodePayload: ({ lockSector, payload, sab, payloadConfig, headersBuffer, headerSlotStrideU32, textCompat, host, }: {
29
+ lockSector?: SharedBufferSource;
30
+ payload?: {
31
+ sab?: SharedBufferSource;
32
+ config?: PayloadBufferOptions;
33
+ };
34
+ /**
35
+ * @deprecated Use `payload.sab`.
36
+ */
37
+ sab?: SharedBufferSource;
38
+ /**
39
+ * @deprecated Use `payload.config`.
40
+ */
41
+ payloadConfig?: PayloadBufferOptions;
42
+ headersBuffer: Uint32Array;
43
+ headerSlotStrideU32?: number;
44
+ textCompat?: LockBufferTextCompat;
45
+ host?: true;
46
+ }) => (task: Task, slotIndex: number, specialFlags?: number) => void;