space-data-module-sdk 0.2.0 → 0.2.6
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 +77 -2
- package/package.json +13 -4
- package/schemas/PluginInvokeRequest.fbs +18 -0
- package/schemas/PluginInvokeResponse.fbs +30 -0
- package/schemas/PluginManifest.fbs +7 -0
- package/schemas/TypedArenaBuffer.fbs +23 -2
- package/src/bundle/codec.js +24 -0
- package/src/compiler/compileModule.js +182 -143
- package/src/compiler/emception.d.ts +60 -0
- package/src/compiler/emception.js +191 -0
- package/src/compiler/emceptionNode.js +234 -0
- package/src/compiler/flatcSupport.js +66 -0
- package/src/compiler/index.d.ts +24 -0
- package/src/compiler/index.js +5 -0
- package/src/compiler/invokeGlue.js +884 -0
- package/src/compliance/pluginCompliance.js +241 -1
- package/src/generated/orbpro/invoke/plugin-invoke-request.d.ts +51 -0
- package/src/generated/orbpro/invoke/plugin-invoke-request.d.ts.map +1 -0
- package/src/generated/orbpro/invoke/plugin-invoke-request.js +131 -0
- package/src/generated/orbpro/invoke/plugin-invoke-request.js.map +1 -0
- package/src/generated/orbpro/invoke/plugin-invoke-request.ts +173 -0
- package/src/generated/orbpro/invoke/plugin-invoke-response.d.ts +76 -0
- package/src/generated/orbpro/invoke/plugin-invoke-response.d.ts.map +1 -0
- package/src/generated/orbpro/invoke/plugin-invoke-response.js +184 -0
- package/src/generated/orbpro/invoke/plugin-invoke-response.js.map +1 -0
- package/src/generated/orbpro/invoke/plugin-invoke-response.ts +243 -0
- package/src/generated/orbpro/invoke.d.ts +3 -0
- package/src/generated/orbpro/invoke.d.ts.map +1 -0
- package/src/generated/orbpro/invoke.js +5 -0
- package/src/generated/orbpro/invoke.js.map +1 -0
- package/src/generated/orbpro/invoke.ts +6 -0
- package/src/generated/orbpro/manifest/accepted-type-set.d.ts +4 -4
- package/src/generated/orbpro/manifest/accepted-type-set.d.ts.map +1 -1
- package/src/generated/orbpro/manifest/accepted-type-set.js +18 -11
- package/src/generated/orbpro/manifest/accepted-type-set.js.map +1 -1
- package/src/generated/orbpro/manifest/build-artifact.d.ts +1 -1
- package/src/generated/orbpro/manifest/build-artifact.d.ts.map +1 -1
- package/src/generated/orbpro/manifest/build-artifact.js +28 -15
- package/src/generated/orbpro/manifest/build-artifact.js.map +1 -1
- package/src/generated/orbpro/manifest/capability-kind.d.ts +1 -1
- package/src/generated/orbpro/manifest/capability-kind.d.ts.map +1 -1
- package/src/generated/orbpro/manifest/capability-kind.js +1 -1
- package/src/generated/orbpro/manifest/capability-kind.js.map +1 -1
- package/src/generated/orbpro/manifest/drain-policy.d.ts.map +1 -1
- package/src/generated/orbpro/manifest/drain-policy.js.map +1 -1
- package/src/generated/orbpro/manifest/host-capability.d.ts +2 -2
- package/src/generated/orbpro/manifest/host-capability.d.ts.map +1 -1
- package/src/generated/orbpro/manifest/host-capability.js +19 -11
- package/src/generated/orbpro/manifest/host-capability.js.map +1 -1
- package/src/generated/orbpro/manifest/invoke-surface.d.ts +8 -0
- package/src/generated/orbpro/manifest/invoke-surface.d.ts.map +1 -0
- package/src/generated/orbpro/manifest/invoke-surface.js +11 -0
- package/src/generated/orbpro/manifest/invoke-surface.js.map +1 -0
- package/src/generated/orbpro/manifest/invoke-surface.ts +11 -0
- package/src/generated/orbpro/manifest/method-manifest.d.ts +6 -6
- package/src/generated/orbpro/manifest/method-manifest.d.ts.map +1 -1
- package/src/generated/orbpro/manifest/method-manifest.js +33 -16
- package/src/generated/orbpro/manifest/method-manifest.js.map +1 -1
- package/src/generated/orbpro/manifest/plugin-family.d.ts.map +1 -1
- package/src/generated/orbpro/manifest/plugin-family.js.map +1 -1
- package/src/generated/orbpro/manifest/plugin-manifest.d.ts +10 -2
- package/src/generated/orbpro/manifest/plugin-manifest.d.ts.map +1 -1
- package/src/generated/orbpro/manifest/plugin-manifest.js +48 -9
- package/src/generated/orbpro/manifest/plugin-manifest.js.map +1 -1
- package/src/generated/orbpro/manifest/plugin-manifest.ts +322 -491
- package/src/generated/orbpro/manifest/port-manifest.d.ts +4 -4
- package/src/generated/orbpro/manifest/port-manifest.d.ts.map +1 -1
- package/src/generated/orbpro/manifest/port-manifest.js +26 -13
- package/src/generated/orbpro/manifest/port-manifest.js.map +1 -1
- package/src/generated/orbpro/manifest/protocol-spec.d.ts +1 -1
- package/src/generated/orbpro/manifest/protocol-spec.d.ts.map +1 -1
- package/src/generated/orbpro/manifest/protocol-spec.js +28 -15
- package/src/generated/orbpro/manifest/protocol-spec.js.map +1 -1
- package/src/generated/orbpro/manifest/timer-spec.d.ts +1 -1
- package/src/generated/orbpro/manifest/timer-spec.d.ts.map +1 -1
- package/src/generated/orbpro/manifest/timer-spec.js +27 -16
- package/src/generated/orbpro/manifest/timer-spec.js.map +1 -1
- package/src/generated/orbpro/manifest.d.ts +13 -0
- package/src/generated/orbpro/manifest.d.ts.map +1 -0
- package/src/generated/orbpro/manifest.js +1 -0
- package/src/generated/orbpro/manifest.js.map +1 -0
- package/src/generated/orbpro/manifest.ts +16 -0
- package/src/generated/orbpro/stream/buffer-mutability.d.ts.map +1 -1
- package/src/generated/orbpro/stream/buffer-mutability.js.map +1 -1
- package/src/generated/orbpro/stream/buffer-ownership.d.ts.map +1 -1
- package/src/generated/orbpro/stream/buffer-ownership.js.map +1 -1
- package/src/generated/orbpro/stream/flat-buffer-type-ref.d.ts +22 -5
- package/src/generated/orbpro/stream/flat-buffer-type-ref.d.ts.map +1 -1
- package/src/generated/orbpro/stream/flat-buffer-type-ref.js +107 -17
- package/src/generated/orbpro/stream/flat-buffer-type-ref.js.map +1 -1
- package/src/generated/orbpro/stream/flat-buffer-type-ref.ts +126 -2
- package/src/generated/orbpro/stream/payload-wire-format.d.ts +8 -0
- package/src/generated/orbpro/stream/payload-wire-format.d.ts.map +1 -0
- package/src/generated/orbpro/stream/payload-wire-format.js +11 -0
- package/src/generated/orbpro/stream/payload-wire-format.js.map +1 -0
- package/src/generated/orbpro/stream/payload-wire-format.ts +11 -0
- package/src/generated/orbpro/stream/typed-arena-buffer.d.ts +4 -4
- package/src/generated/orbpro/stream/typed-arena-buffer.d.ts.map +1 -1
- package/src/generated/orbpro/stream/typed-arena-buffer.js +42 -24
- package/src/generated/orbpro/stream/typed-arena-buffer.js.map +1 -1
- package/src/index.d.ts +96 -5
- package/src/index.js +3 -0
- package/src/invoke/codec.js +278 -0
- package/src/invoke/index.js +9 -0
- package/src/manifest/codec.js +10 -2
- package/src/manifest/index.js +5 -2
- package/src/manifest/normalize.js +58 -0
- package/src/runtime/constants.js +12 -0
- package/src/runtime/index.d.ts +13 -0
- package/src/runtime/index.js +2 -0
package/src/manifest/codec.js
CHANGED
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
PluginManifest,
|
|
5
5
|
PluginManifestT,
|
|
6
6
|
} from "../generated/orbpro/manifest.js";
|
|
7
|
+
import { normalizeInvokeSurfaceName } from "../invoke/codec.js";
|
|
7
8
|
import { toUint8Array } from "../runtime/bufferLike.js";
|
|
8
9
|
import { toEmbeddedPluginManifest } from "./normalize.js";
|
|
9
10
|
|
|
@@ -25,7 +26,15 @@ export function decodePluginManifest(data) {
|
|
|
25
26
|
if (!PluginManifest.bufferHasIdentifier(bb)) {
|
|
26
27
|
throw new Error("Plugin manifest buffer identifier mismatch.");
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
+
const unpacked = PluginManifest.getRootAsPluginManifest(bb).unpack();
|
|
30
|
+
return {
|
|
31
|
+
...unpacked,
|
|
32
|
+
invokeSurfaces: Array.isArray(unpacked.invokeSurfaces)
|
|
33
|
+
? unpacked.invokeSurfaces
|
|
34
|
+
.map((value) => normalizeInvokeSurfaceName(value))
|
|
35
|
+
.filter(Boolean)
|
|
36
|
+
: [],
|
|
37
|
+
};
|
|
29
38
|
}
|
|
30
39
|
|
|
31
40
|
export function encodePluginManifest(manifest) {
|
|
@@ -37,4 +46,3 @@ export function encodePluginManifest(manifest) {
|
|
|
37
46
|
PluginManifest.finishPluginManifestBuffer(builder, value.pack(builder));
|
|
38
47
|
return builder.asUint8Array();
|
|
39
48
|
}
|
|
40
|
-
|
package/src/manifest/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
export * from "../generated/orbpro/manifest.js";
|
|
2
|
-
export {
|
|
2
|
+
export { PayloadWireFormat } from "../generated/orbpro/stream/payload-wire-format.js";
|
|
3
|
+
export {
|
|
4
|
+
FlatBufferTypeRefT,
|
|
5
|
+
FlatBufferTypeRefT as PayloadTypeRef,
|
|
6
|
+
} from "../generated/orbpro/stream/flat-buffer-type-ref.js";
|
|
3
7
|
export { decodePluginManifest, encodePluginManifest } from "./codec.js";
|
|
4
8
|
export { toEmbeddedPluginManifest } from "./normalize.js";
|
|
5
9
|
export {
|
|
6
10
|
generateEmbeddedManifestSource,
|
|
7
11
|
writeEmbeddedManifestArtifacts,
|
|
8
12
|
} from "../embeddedManifest.js";
|
|
9
|
-
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
CapabilityKind,
|
|
5
5
|
DrainPolicy as ManifestDrainPolicy,
|
|
6
6
|
HostCapabilityT,
|
|
7
|
+
InvokeSurface,
|
|
7
8
|
MethodManifestT,
|
|
8
9
|
PluginFamily,
|
|
9
10
|
PluginManifestT,
|
|
@@ -75,6 +76,11 @@ const capabilityKindByName = Object.freeze({
|
|
|
75
76
|
render_hooks: CapabilityKind.RENDER_HOOKS,
|
|
76
77
|
});
|
|
77
78
|
|
|
79
|
+
const invokeSurfaceByName = Object.freeze({
|
|
80
|
+
direct: InvokeSurface.DIRECT,
|
|
81
|
+
command: InvokeSurface.COMMAND,
|
|
82
|
+
});
|
|
83
|
+
|
|
78
84
|
function normalizeSchemaHash(value) {
|
|
79
85
|
if (!value) {
|
|
80
86
|
return [];
|
|
@@ -93,6 +99,25 @@ function normalizeSchemaHash(value) {
|
|
|
93
99
|
return bytes;
|
|
94
100
|
}
|
|
95
101
|
|
|
102
|
+
function normalizePayloadWireFormat(value) {
|
|
103
|
+
if (value === 1) {
|
|
104
|
+
return "aligned-binary";
|
|
105
|
+
}
|
|
106
|
+
const normalized = String(value ?? "")
|
|
107
|
+
.trim()
|
|
108
|
+
.toLowerCase()
|
|
109
|
+
.replace(/_/g, "-");
|
|
110
|
+
return normalized === "aligned-binary" ? "aligned-binary" : "flatbuffer";
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function normalizeUnsignedInteger(value, fallback = 0) {
|
|
114
|
+
const normalized = Number(value ?? fallback);
|
|
115
|
+
if (!Number.isFinite(normalized)) {
|
|
116
|
+
return fallback;
|
|
117
|
+
}
|
|
118
|
+
return Math.max(0, Math.trunc(normalized));
|
|
119
|
+
}
|
|
120
|
+
|
|
96
121
|
function normalizePluginFamily(value) {
|
|
97
122
|
if (typeof value === "number") {
|
|
98
123
|
return value;
|
|
@@ -125,6 +150,33 @@ function normalizeCapabilityKind(value) {
|
|
|
125
150
|
return capabilityKindByName[normalized] ?? null;
|
|
126
151
|
}
|
|
127
152
|
|
|
153
|
+
function normalizeInvokeSurface(value) {
|
|
154
|
+
if (typeof value === "number") {
|
|
155
|
+
return value;
|
|
156
|
+
}
|
|
157
|
+
const normalized = String(value ?? "")
|
|
158
|
+
.trim()
|
|
159
|
+
.toLowerCase();
|
|
160
|
+
return invokeSurfaceByName[normalized] ?? null;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function normalizeInvokeSurfaces(value) {
|
|
164
|
+
if (!Array.isArray(value)) {
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
const seen = new Set();
|
|
168
|
+
const normalized = [];
|
|
169
|
+
for (const entry of value) {
|
|
170
|
+
const surface = normalizeInvokeSurface(entry);
|
|
171
|
+
if (surface === null || seen.has(surface)) {
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
seen.add(surface);
|
|
175
|
+
normalized.push(surface);
|
|
176
|
+
}
|
|
177
|
+
return normalized;
|
|
178
|
+
}
|
|
179
|
+
|
|
128
180
|
function toFlatBufferTypeRefT(value = {}) {
|
|
129
181
|
if (value instanceof FlatBufferTypeRefT) {
|
|
130
182
|
return value;
|
|
@@ -134,6 +186,11 @@ function toFlatBufferTypeRefT(value = {}) {
|
|
|
134
186
|
value.fileIdentifier ?? null,
|
|
135
187
|
normalizeSchemaHash(value.schemaHash),
|
|
136
188
|
value.acceptsAnyFlatbuffer === true,
|
|
189
|
+
normalizePayloadWireFormat(value.wireFormat),
|
|
190
|
+
value.rootTypeName ?? null,
|
|
191
|
+
normalizeUnsignedInteger(value.fixedStringLength),
|
|
192
|
+
normalizeUnsignedInteger(value.byteLength),
|
|
193
|
+
normalizeUnsignedInteger(value.requiredAlignment),
|
|
137
194
|
);
|
|
138
195
|
}
|
|
139
196
|
|
|
@@ -300,6 +357,7 @@ export function toEmbeddedPluginManifest(input = {}) {
|
|
|
300
357
|
? input.buildArtifacts.map((entry) => toBuildArtifactT(entry))
|
|
301
358
|
: [],
|
|
302
359
|
Number(input.abiVersion ?? 1),
|
|
360
|
+
normalizeInvokeSurfaces(input.invokeSurfaces),
|
|
303
361
|
),
|
|
304
362
|
warnings,
|
|
305
363
|
};
|
package/src/runtime/constants.js
CHANGED
|
@@ -43,9 +43,21 @@ export const RuntimeTarget = Object.freeze({
|
|
|
43
43
|
EDGE: "edge",
|
|
44
44
|
});
|
|
45
45
|
|
|
46
|
+
export const InvokeSurface = Object.freeze({
|
|
47
|
+
DIRECT: "direct",
|
|
48
|
+
COMMAND: "command",
|
|
49
|
+
});
|
|
50
|
+
|
|
46
51
|
export const DefaultManifestExports = Object.freeze({
|
|
47
52
|
pluginBytesSymbol: "plugin_get_manifest_flatbuffer",
|
|
48
53
|
pluginSizeSymbol: "plugin_get_manifest_flatbuffer_size",
|
|
49
54
|
flowBytesSymbol: "flow_get_manifest_flatbuffer",
|
|
50
55
|
flowSizeSymbol: "flow_get_manifest_flatbuffer_size",
|
|
51
56
|
});
|
|
57
|
+
|
|
58
|
+
export const DefaultInvokeExports = Object.freeze({
|
|
59
|
+
invokeSymbol: "plugin_invoke_stream",
|
|
60
|
+
allocSymbol: "plugin_alloc",
|
|
61
|
+
freeSymbol: "plugin_free",
|
|
62
|
+
commandSymbol: "_start",
|
|
63
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export {
|
|
2
|
+
DefaultInvokeExports,
|
|
3
|
+
DefaultManifestExports,
|
|
4
|
+
DrainPolicy,
|
|
5
|
+
ExternalInterfaceDirection,
|
|
6
|
+
ExternalInterfaceKind,
|
|
7
|
+
InvokeSurface,
|
|
8
|
+
RuntimeTarget,
|
|
9
|
+
} from "../index.js";
|
|
10
|
+
|
|
11
|
+
export function isArrayBufferLike(value: unknown): boolean;
|
|
12
|
+
export function hasByteAddressableBuffer(value: unknown): boolean;
|
|
13
|
+
export function toUint8Array(value: unknown): Uint8Array | null;
|