knitting 0.1.55 → 0.1.56

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 (138) hide show
  1. package/knitting.d.ts +6 -797
  2. package/knitting.js +6 -9780
  3. package/map.md +12 -8
  4. package/package.json +14 -6
  5. package/process-shared-buffer.d.ts +1 -0
  6. package/process-shared-buffer.js +1 -0
  7. package/shared-memory.d.ts +1 -155
  8. package/shared-memory.js +1 -1342
  9. package/src/api.d.ts +69 -0
  10. package/src/api.js +619 -0
  11. package/src/common/envelope.d.ts +17 -0
  12. package/src/common/envelope.js +22 -0
  13. package/src/common/module-url.d.ts +1 -0
  14. package/src/common/module-url.js +24 -0
  15. package/src/common/node-compat.d.ts +20 -0
  16. package/src/common/node-compat.js +24 -0
  17. package/src/common/path-canonical.d.ts +6 -0
  18. package/src/common/path-canonical.js +41 -0
  19. package/src/common/runtime.d.ts +15 -0
  20. package/src/common/runtime.js +91 -0
  21. package/src/common/shared-buffer-region.d.ts +11 -0
  22. package/src/common/shared-buffer-region.js +21 -0
  23. package/src/common/shared-buffer-text.d.ts +16 -0
  24. package/src/common/shared-buffer-text.js +65 -0
  25. package/src/common/task-source.d.ts +3 -0
  26. package/src/common/task-source.js +84 -0
  27. package/src/common/task-symbol.d.ts +1 -0
  28. package/src/common/task-symbol.js +1 -0
  29. package/src/common/with-resolvers.d.ts +9 -0
  30. package/src/common/with-resolvers.js +23 -0
  31. package/src/common/worker-runtime.d.ts +42 -0
  32. package/src/common/worker-runtime.js +61 -0
  33. package/src/connections/buffer-reference-native.d.ts +56 -0
  34. package/src/connections/buffer-reference-native.js +217 -0
  35. package/src/connections/buffer-reference.d.ts +78 -0
  36. package/src/connections/buffer-reference.js +461 -0
  37. package/src/connections/bun.d.ts +22 -0
  38. package/src/connections/bun.js +214 -0
  39. package/src/connections/deno.d.ts +22 -0
  40. package/src/connections/deno.js +205 -0
  41. package/src/connections/file-descriptor.d.ts +39 -0
  42. package/src/connections/file-descriptor.js +161 -0
  43. package/src/connections/index.d.ts +4 -0
  44. package/src/connections/index.js +4 -0
  45. package/src/connections/node-addons.d.ts +5 -0
  46. package/src/connections/node-addons.js +44 -0
  47. package/src/connections/node-buffer-pointer.d.ts +20 -0
  48. package/src/connections/node-buffer-pointer.js +16 -0
  49. package/src/connections/node.d.ts +30 -0
  50. package/src/connections/node.js +62 -0
  51. package/src/connections/numeric-array.d.ts +5 -0
  52. package/src/connections/numeric-array.js +17 -0
  53. package/src/connections/package-assets.d.ts +2 -0
  54. package/src/connections/package-assets.js +45 -0
  55. package/src/connections/posix.d.ts +32 -0
  56. package/src/connections/posix.js +77 -0
  57. package/src/connections/process-shared-buffer.d.ts +75 -0
  58. package/src/connections/process-shared-buffer.js +279 -0
  59. package/src/connections/shared-array-buffer-payload.d.ts +36 -0
  60. package/src/connections/shared-array-buffer-payload.js +235 -0
  61. package/src/connections/types.d.ts +50 -0
  62. package/src/connections/types.js +37 -0
  63. package/src/connections/windows.d.ts +28 -0
  64. package/src/connections/windows.js +224 -0
  65. package/src/debug/env-diff.d.ts +26 -0
  66. package/src/debug/env-diff.js +49 -0
  67. package/src/debug/gate.d.ts +18 -0
  68. package/src/debug/gate.js +69 -0
  69. package/src/debug/handle.d.ts +23 -0
  70. package/src/debug/handle.js +48 -0
  71. package/src/error.d.ts +13 -0
  72. package/src/error.js +49 -0
  73. package/src/ipc/tools/ring-queue.d.ts +33 -0
  74. package/src/ipc/tools/ring-queue.js +159 -0
  75. package/src/ipc/transport/shared-memory.d.ts +23 -0
  76. package/src/ipc/transport/shared-memory.js +35 -0
  77. package/src/memory/byte-carpet.d.ts +73 -0
  78. package/src/memory/byte-carpet.js +157 -0
  79. package/src/memory/lock.d.ts +203 -0
  80. package/src/memory/lock.js +741 -0
  81. package/src/memory/payload-config.d.ts +31 -0
  82. package/src/memory/payload-config.js +67 -0
  83. package/src/memory/payloadCodec.d.ts +46 -0
  84. package/src/memory/payloadCodec.js +1377 -0
  85. package/src/memory/regionRegistry.d.ts +17 -0
  86. package/src/memory/regionRegistry.js +285 -0
  87. package/src/memory/shared-buffer-io.d.ts +55 -0
  88. package/src/memory/shared-buffer-io.js +403 -0
  89. package/src/permission/index.d.ts +2 -0
  90. package/src/permission/index.js +2 -0
  91. package/src/permission/protocol.d.ts +166 -0
  92. package/src/permission/protocol.js +650 -0
  93. package/src/runtime/balancer.d.ts +19 -0
  94. package/src/runtime/balancer.js +149 -0
  95. package/src/runtime/dispatcher.d.ts +40 -0
  96. package/src/runtime/dispatcher.js +142 -0
  97. package/src/runtime/inline-executor.d.ts +10 -0
  98. package/src/runtime/inline-executor.js +282 -0
  99. package/src/runtime/pool.d.ts +39 -0
  100. package/src/runtime/pool.js +404 -0
  101. package/src/runtime/process-worker.d.ts +92 -0
  102. package/src/runtime/process-worker.js +673 -0
  103. package/src/runtime/tx-queue.d.ts +26 -0
  104. package/src/runtime/tx-queue.js +155 -0
  105. package/src/shared/abortSignal.d.ts +23 -0
  106. package/src/shared/abortSignal.js +134 -0
  107. package/src/types.d.ts +357 -0
  108. package/src/types.js +2 -0
  109. package/src/utils/http.d.ts +29 -0
  110. package/src/utils/http.js +100 -0
  111. package/src/worker/bootstrap.d.ts +5 -0
  112. package/src/worker/bootstrap.js +78 -0
  113. package/src/worker/composable-runners.d.ts +12 -0
  114. package/src/worker/composable-runners.js +97 -0
  115. package/src/worker/loop.d.ts +2 -0
  116. package/src/worker/loop.js +382 -0
  117. package/src/worker/process-worker-bootstrap.d.ts +8 -0
  118. package/src/worker/process-worker-bootstrap.js +160 -0
  119. package/src/worker/rx-queue.d.ts +25 -0
  120. package/src/worker/rx-queue.js +173 -0
  121. package/src/worker/safety/index.d.ts +4 -0
  122. package/src/worker/safety/index.js +4 -0
  123. package/src/worker/safety/performance.d.ts +1 -0
  124. package/src/worker/safety/performance.js +17 -0
  125. package/src/worker/safety/process.d.ts +2 -0
  126. package/src/worker/safety/process.js +79 -0
  127. package/src/worker/safety/startup.d.ts +16 -0
  128. package/src/worker/safety/startup.js +30 -0
  129. package/src/worker/safety/worker-data.d.ts +2 -0
  130. package/src/worker/safety/worker-data.js +36 -0
  131. package/src/worker/task-loader.d.ts +27 -0
  132. package/src/worker/task-loader.js +70 -0
  133. package/src/worker/timers.d.ts +18 -0
  134. package/src/worker/timers.js +116 -0
  135. package/unsafe.d.ts +1 -71
  136. package/unsafe.js +1 -878
  137. package/utils.d.ts +1 -31
  138. package/utils.js +1 -116
package/map.md CHANGED
@@ -20,6 +20,8 @@ The core flow is:
20
20
  `importTask`, `isMain`, `Envelope`, and `workerMainLoop`.
21
21
  - `shared-memory.ts`: Secondary public export for process-safe shared-memory
22
22
  helpers.
23
+ - `process-shared-buffer.ts`: Backward-compatible alias for the shared-memory
24
+ public export.
23
25
  - `unsafe.ts`: Public export for experimental lower-level capabilities such as
24
26
  `BufferReference`.
25
27
  - `utils.ts`: Public export for request/response buffer conversion helpers.
@@ -34,11 +36,11 @@ The core flow is:
34
36
 
35
37
  ## Build And Scripts
36
38
 
37
- - `build.ts`: Bundles each public entry to one root `.js` file with Bun for a
38
- Node ESM target.
39
- - `tsconfig.npm.json`: TypeScript config used by npm declaration bundling.
40
- - `scripts/build-declarations.mjs`: Bundles each public entry to one root
41
- `.d.ts` file for npm consumers.
39
+ - `build.ts`: Cleans generated npm artifacts, then compiles public entries and
40
+ `src/**/*.ts` to `.js` and `.d.ts` files with TypeScript.
41
+ - `tsconfig.npm.json`: TypeScript config used by the npm release build.
42
+ - `scripts/rewrite-declaration-imports.mjs`: Rewrites generated declaration
43
+ imports from `.ts` to `.js` so npm consumers resolve the compiled files.
42
44
  - `scripts/build-native-addons.ts`: Compiles the native Node addons into
43
45
  `build/Release/` on Linux, macOS, and Windows. It finds Node headers/libs,
44
46
  splits user flags, builds the shared-memory and futex addons, and emits the
@@ -309,9 +311,11 @@ The core flow is:
309
311
 
310
312
  - `build/Release/*.node`: Native addon output produced by
311
313
  `scripts/build-native-addons.ts`.
312
- - `knitting.js`, `knitting.d.ts`, `shared-memory.js`, `shared-memory.d.ts`,
313
- `unsafe.js`, `unsafe.d.ts`, `utils.js`, and `utils.d.ts`: npm release build
314
- artifacts produced by `build.ts` and `scripts/build-declarations.mjs`.
314
+ - `knitting.js`, `knitting.d.ts`, `process-shared-buffer.js`,
315
+ `process-shared-buffer.d.ts`, `shared-memory.js`, `shared-memory.d.ts`,
316
+ `unsafe.js`, `unsafe.d.ts`, `utils.js`, `utils.d.ts`, and generated
317
+ `src/**/*.js`/`src/**/*.d.ts`: npm release build artifacts produced by
318
+ `build.ts` and `scripts/rewrite-declaration-imports.mjs`.
315
319
  - `results/`: Benchmark output produced by `run.sh`.
316
320
  - `log/`, `logs`, and `*.log`: Local runtime/log output.
317
321
  - `node_modules/`: Installed dependencies. Not part of the source map.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "knitting",
3
- "version": "0.1.55",
3
+ "version": "0.1.56",
4
4
  "description": "Shared-memory IPC runtime for Node.js, Deno, and Bun.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -20,6 +20,10 @@
20
20
  "types": "./knitting.d.ts",
21
21
  "default": "./knitting.js"
22
22
  },
23
+ "./process-shared-buffer": {
24
+ "types": "./process-shared-buffer.d.ts",
25
+ "default": "./process-shared-buffer.js"
26
+ },
23
27
  "./shared-memory": {
24
28
  "types": "./shared-memory.d.ts",
25
29
  "default": "./shared-memory.js"
@@ -41,8 +45,12 @@
41
45
  "prebuilds/**/*.dll",
42
46
  "scripts/build-native-addons.ts",
43
47
  "src/**/*.cc",
48
+ "src/**/*.d.ts",
49
+ "src/**/*.js",
44
50
  "knitting.d.ts",
45
51
  "knitting.js",
52
+ "process-shared-buffer.d.ts",
53
+ "process-shared-buffer.js",
46
54
  "shared-memory.d.ts",
47
55
  "shared-memory.js",
48
56
  "unsafe.d.ts",
@@ -51,13 +59,13 @@
51
59
  "utils.js"
52
60
  ],
53
61
  "scripts": {
54
- "build": "bun run build.ts && node scripts/build-declarations.mjs",
55
- "build:js": "bun run build.ts",
56
- "build:types": "node scripts/build-declarations.mjs",
57
- "build:npm": "npm run build",
62
+ "build": "bun run build.ts && node scripts/rewrite-declaration-imports.mjs",
63
+ "build:js": "bun run build.ts && node scripts/rewrite-declaration-imports.mjs",
64
+ "build:types": "bun run build.ts && node scripts/rewrite-declaration-imports.mjs",
65
+ "build:npm": "bun run build.ts && node scripts/rewrite-declaration-imports.mjs",
58
66
  "build:native": "bun run scripts/build-native-addons.ts",
59
67
  "build:release": "bun run build:native && npm run build",
60
- "build:node": "npm run build:js",
68
+ "build:node": "bun run build.ts && node scripts/rewrite-declaration-imports.mjs",
61
69
  "prepack": "npm run build",
62
70
  "release:npm": "npm run test:all && npm publish",
63
71
  "release:npm:dry-run": "npm publish --dry-run",
@@ -0,0 +1 @@
1
+ export { getDefaultProcessSharedBufferPrimitives, parseProcessSharedBufferMetadata, PROCESS_SHARED_BUFFER_BRAND, ProcessSharedBuffer, setDefaultProcessSharedBufferPrimitives, type ProcessSharedBufferCreator, type ProcessSharedBufferMapper, type ProcessSharedBufferMetadata, type ProcessSharedBufferPrimitives, type ProcessSharedBufferRange, type ProcessSharedBufferView, type ProcessSharedBufferViewConstructor, } from "./src/connections/process-shared-buffer.js";
@@ -0,0 +1 @@
1
+ export { getDefaultProcessSharedBufferPrimitives, parseProcessSharedBufferMetadata, PROCESS_SHARED_BUFFER_BRAND, ProcessSharedBuffer, setDefaultProcessSharedBufferPrimitives, } from "./src/connections/process-shared-buffer.js";
@@ -1,155 +1 @@
1
- type SharedBuffer = SharedArrayBuffer | ArrayBuffer;
2
- type SharedBufferRegion = {
3
- sab: SharedBuffer;
4
- byteOffset: number;
5
- byteLength: number;
6
- };
7
- type ConnectionRuntime = "node" | "deno" | "bun";
8
- type SharedMemoryBuffer = ArrayBuffer | SharedArrayBuffer;
9
- type SharedMemoryBufferKind = "shared-array-buffer" | "external-array-buffer";
10
- type SharedMemoryCreateMode = "anonymous" | "create" | "open";
11
- type SharedMemoryMapping<Buffer extends SharedMemoryBuffer = SharedMemoryBuffer> = {
12
- runtime: ConnectionRuntime;
13
- fd: number;
14
- name?: string;
15
- size: number;
16
- byteLength: number;
17
- buffer: Buffer;
18
- kind: SharedMemoryBufferKind;
19
- sab?: SharedArrayBuffer;
20
- arrayBuffer?: ArrayBuffer;
21
- baseAddressMod64?: number;
22
- unsafePointer?: unknown;
23
- close?: () => void;
24
- };
25
- type CreateSharedMemoryOptions = {
26
- size: number;
27
- /**
28
- * `anonymous` keeps the current fd-backed private mapping behavior.
29
- * `create` and `open` use a named shared-memory object so independent
30
- * processes can rendezvous by name.
31
- */
32
- mode?: SharedMemoryCreateMode;
33
- name?: string;
34
- };
35
- type MapSharedMemoryOptions = {
36
- fd: number;
37
- name?: string;
38
- size: number;
39
- duplicateFd?: boolean;
40
- };
41
- type SharedMemoryConnectionPrimitives<Mapping extends SharedMemoryMapping = SharedMemoryMapping> = {
42
- runtime: ConnectionRuntime;
43
- createSharedMemory: (options: number | CreateSharedMemoryOptions) => Mapping;
44
- mapSharedMemory: (options: MapSharedMemoryOptions) => Mapping;
45
- unlinkSharedMemory?: (name: string) => boolean;
46
- };
47
- type FileDescriptorMetadata = {
48
- version: 1;
49
- fd: number;
50
- name?: string;
51
- size: number;
52
- byteLength: number;
53
- runtime?: ConnectionRuntime;
54
- kind?: SharedMemoryMapping["kind"];
55
- baseAddressMod64?: number;
56
- };
57
- type FileDescriptorMapper = Pick<SharedMemoryConnectionPrimitives, "mapSharedMemory">;
58
- declare class FileDescriptor {
59
- #private;
60
- readonly fd: number;
61
- readonly name?: string;
62
- readonly size: number;
63
- readonly byteLength: number;
64
- readonly runtime?: ConnectionRuntime;
65
- readonly kind?: SharedMemoryMapping["kind"];
66
- readonly baseAddressMod64?: number;
67
- constructor(metadata: FileDescriptorMetadata, mapping?: SharedMemoryMapping);
68
- static fromMapping(mapping: SharedMemoryMapping): FileDescriptor;
69
- static fromMetadata(metadata: unknown): FileDescriptor;
70
- static parse(serialized: string): FileDescriptor;
71
- toMetadata(): FileDescriptorMetadata;
72
- toJSON(): FileDescriptorMetadata;
73
- stringify(): string;
74
- stringifyMetadata(): string;
75
- toString(): string;
76
- attach(mapping: SharedMemoryMapping): this;
77
- get mapping(): SharedMemoryMapping | undefined;
78
- map(mapper: FileDescriptorMapper): SharedMemoryMapping;
79
- getBuffer(mapper?: FileDescriptorMapper): SharedMemoryBuffer;
80
- getSharedArrayBuffer(mapper?: FileDescriptorMapper): SharedArrayBuffer;
81
- getSAB(mapper?: FileDescriptorMapper): SharedArrayBuffer;
82
- }
83
- export type ProcessSharedBufferMetadata = {
84
- version: 1;
85
- descriptor: FileDescriptorMetadata;
86
- byteOffset: number;
87
- byteLength: number;
88
- };
89
- export declare const PROCESS_SHARED_BUFFER_BRAND: unique symbol;
90
- declare const PROCESS_SHARED_BUFFER_NUMERIC_TRANSFER: unique symbol;
91
- declare const EXTERNAL_PAYLOAD_BRAND: unique symbol;
92
- type ProcessSharedBufferNumericMetadata = readonly [
93
- fd: number,
94
- size: number,
95
- descriptorByteLength: number,
96
- byteOffset: number,
97
- byteLength: number,
98
- runtime: number,
99
- kind: number,
100
- baseAddressMod64: number
101
- ];
102
- export type ProcessSharedBufferRange = {
103
- byteOffset?: number;
104
- byteLength?: number;
105
- };
106
- export type ProcessSharedBufferCreator = Pick<SharedMemoryConnectionPrimitives, "createSharedMemory">;
107
- export type ProcessSharedBufferMapper = Pick<SharedMemoryConnectionPrimitives, "mapSharedMemory">;
108
- export type ProcessSharedBufferPrimitives = Pick<SharedMemoryConnectionPrimitives, "createSharedMemory" | "mapSharedMemory"> & {
109
- unlinkSharedMemory?: (name: string) => boolean;
110
- };
111
- export type ProcessSharedBufferView = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | BigInt64Array | BigUint64Array | Float32Array | Float64Array;
112
- export type ProcessSharedBufferViewConstructor<View extends ProcessSharedBufferView = ProcessSharedBufferView> = {
113
- readonly BYTES_PER_ELEMENT: number;
114
- new (buffer: SharedBuffer, byteOffset: number, length: number): View;
115
- };
116
- export declare const setDefaultProcessSharedBufferPrimitives: (primitives: ProcessSharedBufferPrimitives | undefined) => void;
117
- export declare const getDefaultProcessSharedBufferPrimitives: () => ProcessSharedBufferPrimitives;
118
- /**
119
- * Zero-copy shared bytes for process workers.
120
- *
121
- * Use this when the boundary is a separate process, container, or sandbox.
122
- * For thread workers, `SharedArrayBuffer` or `BufferReference` can be cheaper.
123
- */
124
- export declare class ProcessSharedBuffer {
125
- readonly [PROCESS_SHARED_BUFFER_BRAND] = true;
126
- readonly [EXTERNAL_PAYLOAD_BRAND] = "knitting.processSharedBuffer";
127
- readonly descriptor: FileDescriptor;
128
- readonly byteOffset: number;
129
- readonly byteLength: number;
130
- constructor(descriptor: FileDescriptor, range?: ProcessSharedBufferRange);
131
- static create(options: number | CreateSharedMemoryOptions, creator?: ProcessSharedBufferCreator): ProcessSharedBuffer;
132
- static fromMapping(mapping: SharedMemoryMapping): ProcessSharedBuffer;
133
- static fromDescriptor(descriptor: FileDescriptor, range?: ProcessSharedBufferRange): ProcessSharedBuffer;
134
- static fromMetadata(metadata: unknown): ProcessSharedBuffer;
135
- static parse(serialized: string): ProcessSharedBuffer;
136
- static [PROCESS_SHARED_BUFFER_NUMERIC_TRANSFER](metadata: ProcessSharedBufferNumericMetadata): ProcessSharedBuffer;
137
- get fd(): number;
138
- get size(): number;
139
- subbuffer(byteOffset: number, byteLength?: number): ProcessSharedBuffer;
140
- getSharedArrayBuffer(mapper?: ProcessSharedBufferMapper): SharedArrayBuffer;
141
- getSAB(mapper?: ProcessSharedBufferMapper): SharedArrayBuffer;
142
- getBuffer(mapper?: ProcessSharedBufferMapper): SharedBuffer;
143
- getRegion(mapper?: ProcessSharedBufferMapper): SharedBufferRegion;
144
- view<View extends ProcessSharedBufferView>(constructor: ProcessSharedBufferViewConstructor<View>, mapper?: ProcessSharedBufferMapper): View;
145
- bytes(mapper?: ProcessSharedBufferMapper): Uint8Array;
146
- dataView(mapper?: ProcessSharedBufferMapper): DataView;
147
- toMetadata(): ProcessSharedBufferMetadata;
148
- toJSON(): ProcessSharedBufferMetadata;
149
- stringify(): string;
150
- stringifyMetadata(): string;
151
- toString(): string;
152
- }
153
- export declare const parseProcessSharedBufferMetadata: (input: unknown) => ProcessSharedBufferMetadata;
154
-
155
- export {};
1
+ export { getDefaultProcessSharedBufferPrimitives, parseProcessSharedBufferMetadata, PROCESS_SHARED_BUFFER_BRAND, ProcessSharedBuffer, setDefaultProcessSharedBufferPrimitives, type ProcessSharedBufferCreator, type ProcessSharedBufferMapper, type ProcessSharedBufferMetadata, type ProcessSharedBufferPrimitives, type ProcessSharedBufferRange, type ProcessSharedBufferView, type ProcessSharedBufferViewConstructor, } from "./src/connections/process-shared-buffer.js";