zephyra-codec 0.1.3

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 (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +115 -0
  3. package/dist/container/mp4Box.d.ts +46 -0
  4. package/dist/container/mp4Box.d.ts.map +1 -0
  5. package/dist/container/mp4Box.js +115 -0
  6. package/dist/container/mp4Box.js.map +1 -0
  7. package/dist/deconstructor.d.ts +15 -0
  8. package/dist/deconstructor.d.ts.map +1 -0
  9. package/dist/deconstructor.js +40 -0
  10. package/dist/deconstructor.js.map +1 -0
  11. package/dist/exporter.d.ts +11 -0
  12. package/dist/exporter.d.ts.map +1 -0
  13. package/dist/exporter.js +51 -0
  14. package/dist/exporter.js.map +1 -0
  15. package/dist/ffmpeg/ffmpegBinary.d.ts +16 -0
  16. package/dist/ffmpeg/ffmpegBinary.d.ts.map +1 -0
  17. package/dist/ffmpeg/ffmpegBinary.js +32 -0
  18. package/dist/ffmpeg/ffmpegBinary.js.map +1 -0
  19. package/dist/ffmpeg/render.d.ts +22 -0
  20. package/dist/ffmpeg/render.d.ts.map +1 -0
  21. package/dist/ffmpeg/render.js +88 -0
  22. package/dist/ffmpeg/render.js.map +1 -0
  23. package/dist/format.d.ts +3 -0
  24. package/dist/format.d.ts.map +1 -0
  25. package/dist/format.js +3 -0
  26. package/dist/format.js.map +1 -0
  27. package/dist/index.d.ts +10 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +11 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/serialization/msgpack.d.ts +26 -0
  32. package/dist/serialization/msgpack.d.ts.map +1 -0
  33. package/dist/serialization/msgpack.js +334 -0
  34. package/dist/serialization/msgpack.js.map +1 -0
  35. package/dist/serialization/payload.d.ts +16 -0
  36. package/dist/serialization/payload.d.ts.map +1 -0
  37. package/dist/serialization/payload.js +80 -0
  38. package/dist/serialization/payload.js.map +1 -0
  39. package/dist/types.d.ts +97 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +16 -0
  42. package/dist/types.js.map +1 -0
  43. package/dist/utils/hash.d.ts +2 -0
  44. package/dist/utils/hash.d.ts.map +1 -0
  45. package/dist/utils/hash.js +5 -0
  46. package/dist/utils/hash.js.map +1 -0
  47. package/package.json +47 -0
package/dist/format.js ADDED
@@ -0,0 +1,3 @@
1
+ /** Top-level ISO-BMFF box type used to carry the embedded Zephyra payload. */
2
+ export const ZEPHYRA_BOX_TYPE = "zeph";
3
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { Exporter } from "./exporter.js";
2
+ export { Deconstructor } from "./deconstructor.js";
3
+ export { ZEPHYRA_BOX_TYPE } from "./format.js";
4
+ export type { LayerInstruction, ZephyraTimeline, ZephyraPayload, ExportOptions, ExportResult, DeconstructOptions, DeconstructResult, } from "./types.js";
5
+ export { ZephyraFormatError } from "./types.js";
6
+ export { encodePayload, decodePayload } from "./serialization/payload.js";
7
+ export { encode as msgpackEncode, decode as msgpackDecode } from "./serialization/msgpack.js";
8
+ export { listTopLevelBoxes, findTopLevelBox, readBoxPayload, appendBox, stripTopLevelBox, } from "./container/mp4Box.js";
9
+ export type { BoxInfo } from "./container/mp4Box.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAKhD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,SAAS,EACT,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export { Exporter } from "./exporter.js";
2
+ export { Deconstructor } from "./deconstructor.js";
3
+ export { ZEPHYRA_BOX_TYPE } from "./format.js";
4
+ export { ZephyraFormatError } from "./types.js";
5
+ // Pure, I/O-free building blocks — exposed so a future HTTP server or
6
+ // sidecar wrapper can operate on in-memory buffers without going through
7
+ // the filesystem-bound Exporter/Deconstructor classes.
8
+ export { encodePayload, decodePayload } from "./serialization/payload.js";
9
+ export { encode as msgpackEncode, decode as msgpackDecode } from "./serialization/msgpack.js";
10
+ export { listTopLevelBoxes, findTopLevelBox, readBoxPayload, appendBox, stripTopLevelBox, } from "./container/mp4Box.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAW/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,sEAAsE;AACtE,yEAAyE;AACzE,uDAAuD;AACvD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,SAAS,EACT,gBAAgB,GACjB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * A small, dependency-free MessagePack implementation.
3
+ *
4
+ * Rationale: the SDK's core logic (encode/decode, container parsing) is
5
+ * meant to be portable into a pkg/nexe-compiled sidecar and, eventually, an
6
+ * HTTP service. Every external dependency is one more thing that can fail
7
+ * to bundle correctly under those targets. MessagePack's spec is small
8
+ * enough that hand-rolling exactly the subset we need (maps, arrays,
9
+ * strings, binary, numbers, booleans, null) keeps this module at zero
10
+ * runtime dependencies. It is wire-compatible with the standard, so a
11
+ * future host is free to swap in `@msgpack/msgpack` or `msgpackr` without
12
+ * changing the payload format.
13
+ *
14
+ * Supported JS <-> MessagePack type mapping:
15
+ * null/undefined -> nil
16
+ * boolean -> bool
17
+ * number (int) -> (u)int family, chosen by magnitude
18
+ * number (float) -> float64
19
+ * string -> str family
20
+ * Uint8Array -> bin family
21
+ * Array -> array family
22
+ * plain object -> map family (string keys only)
23
+ */
24
+ export declare function encode(value: unknown): Buffer;
25
+ export declare function decode(buf: Buffer): unknown;
26
+ //# sourceMappingURL=msgpack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"msgpack.d.ts","sourceRoot":"","sources":["../../src/serialization/msgpack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAoMH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAI7C;AA4GD,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG3C"}
@@ -0,0 +1,334 @@
1
+ /**
2
+ * A small, dependency-free MessagePack implementation.
3
+ *
4
+ * Rationale: the SDK's core logic (encode/decode, container parsing) is
5
+ * meant to be portable into a pkg/nexe-compiled sidecar and, eventually, an
6
+ * HTTP service. Every external dependency is one more thing that can fail
7
+ * to bundle correctly under those targets. MessagePack's spec is small
8
+ * enough that hand-rolling exactly the subset we need (maps, arrays,
9
+ * strings, binary, numbers, booleans, null) keeps this module at zero
10
+ * runtime dependencies. It is wire-compatible with the standard, so a
11
+ * future host is free to swap in `@msgpack/msgpack` or `msgpackr` without
12
+ * changing the payload format.
13
+ *
14
+ * Supported JS <-> MessagePack type mapping:
15
+ * null/undefined -> nil
16
+ * boolean -> bool
17
+ * number (int) -> (u)int family, chosen by magnitude
18
+ * number (float) -> float64
19
+ * string -> str family
20
+ * Uint8Array -> bin family
21
+ * Array -> array family
22
+ * plain object -> map family (string keys only)
23
+ */
24
+ class Writer {
25
+ chunks = [];
26
+ push(buf) {
27
+ this.chunks.push(buf);
28
+ }
29
+ concat() {
30
+ return Buffer.concat(this.chunks);
31
+ }
32
+ }
33
+ function writeValue(w, value) {
34
+ if (value === null || value === undefined) {
35
+ w.push(Buffer.from([0xc0]));
36
+ return;
37
+ }
38
+ if (typeof value === "boolean") {
39
+ w.push(Buffer.from([value ? 0xc3 : 0xc2]));
40
+ return;
41
+ }
42
+ if (typeof value === "number") {
43
+ writeNumber(w, value);
44
+ return;
45
+ }
46
+ if (typeof value === "string") {
47
+ writeString(w, value);
48
+ return;
49
+ }
50
+ if (value instanceof Uint8Array) {
51
+ writeBinary(w, value);
52
+ return;
53
+ }
54
+ if (Array.isArray(value)) {
55
+ writeArray(w, value);
56
+ return;
57
+ }
58
+ if (typeof value === "object") {
59
+ writeMap(w, value);
60
+ return;
61
+ }
62
+ throw new TypeError(`msgpack: unsupported value type: ${typeof value}`);
63
+ }
64
+ function writeNumber(w, n) {
65
+ if (Number.isInteger(n)) {
66
+ if (n >= 0) {
67
+ if (n <= 0x7f) {
68
+ w.push(Buffer.from([n]));
69
+ return;
70
+ }
71
+ if (n <= 0xff) {
72
+ w.push(Buffer.from([0xcc, n]));
73
+ return;
74
+ }
75
+ if (n <= 0xffff) {
76
+ const b = Buffer.alloc(3);
77
+ b[0] = 0xcd;
78
+ b.writeUInt16BE(n, 1);
79
+ w.push(b);
80
+ return;
81
+ }
82
+ if (n <= 0xffffffff) {
83
+ const b = Buffer.alloc(5);
84
+ b[0] = 0xce;
85
+ b.writeUInt32BE(n, 1);
86
+ w.push(b);
87
+ return;
88
+ }
89
+ // Fall through to double for values beyond safe 32-bit uint;
90
+ // covers 53-bit safe integers (e.g. millisecond timestamps).
91
+ const b = Buffer.alloc(9);
92
+ b[0] = 0xcf;
93
+ b.writeBigUInt64BE(BigInt(n), 1);
94
+ w.push(b);
95
+ return;
96
+ }
97
+ if (n >= -32) {
98
+ w.push(Buffer.from([0x100 + n])); // negative fixint
99
+ return;
100
+ }
101
+ if (n >= -128) {
102
+ const b = Buffer.alloc(2);
103
+ b[0] = 0xd0;
104
+ b.writeInt8(n, 1);
105
+ w.push(b);
106
+ return;
107
+ }
108
+ if (n >= -32768) {
109
+ const b = Buffer.alloc(3);
110
+ b[0] = 0xd1;
111
+ b.writeInt16BE(n, 1);
112
+ w.push(b);
113
+ return;
114
+ }
115
+ if (n >= -2147483648) {
116
+ const b = Buffer.alloc(5);
117
+ b[0] = 0xd2;
118
+ b.writeInt32BE(n, 1);
119
+ w.push(b);
120
+ return;
121
+ }
122
+ const b = Buffer.alloc(9);
123
+ b[0] = 0xd3;
124
+ b.writeBigInt64BE(BigInt(n), 1);
125
+ w.push(b);
126
+ return;
127
+ }
128
+ // Non-integer: always float64 for simplicity/precision.
129
+ const b = Buffer.alloc(9);
130
+ b[0] = 0xcb;
131
+ b.writeDoubleBE(n, 1);
132
+ w.push(b);
133
+ }
134
+ function writeString(w, s) {
135
+ const strBuf = Buffer.from(s, "utf-8");
136
+ const len = strBuf.length;
137
+ if (len <= 31) {
138
+ w.push(Buffer.from([0xa0 | len]));
139
+ }
140
+ else if (len <= 0xff) {
141
+ w.push(Buffer.from([0xd9, len]));
142
+ }
143
+ else if (len <= 0xffff) {
144
+ const b = Buffer.alloc(3);
145
+ b[0] = 0xda;
146
+ b.writeUInt16BE(len, 1);
147
+ w.push(b);
148
+ }
149
+ else {
150
+ const b = Buffer.alloc(5);
151
+ b[0] = 0xdb;
152
+ b.writeUInt32BE(len, 1);
153
+ w.push(b);
154
+ }
155
+ w.push(strBuf);
156
+ }
157
+ function writeBinary(w, bin) {
158
+ const len = bin.length;
159
+ if (len <= 0xff) {
160
+ w.push(Buffer.from([0xc4, len]));
161
+ }
162
+ else if (len <= 0xffff) {
163
+ const b = Buffer.alloc(3);
164
+ b[0] = 0xc5;
165
+ b.writeUInt16BE(len, 1);
166
+ w.push(b);
167
+ }
168
+ else {
169
+ const b = Buffer.alloc(5);
170
+ b[0] = 0xc6;
171
+ b.writeUInt32BE(len, 1);
172
+ w.push(b);
173
+ }
174
+ w.push(Buffer.from(bin.buffer, bin.byteOffset, bin.byteLength));
175
+ }
176
+ function writeArray(w, arr) {
177
+ const len = arr.length;
178
+ if (len <= 15) {
179
+ w.push(Buffer.from([0x90 | len]));
180
+ }
181
+ else if (len <= 0xffff) {
182
+ const b = Buffer.alloc(3);
183
+ b[0] = 0xdc;
184
+ b.writeUInt16BE(len, 1);
185
+ w.push(b);
186
+ }
187
+ else {
188
+ const b = Buffer.alloc(5);
189
+ b[0] = 0xdd;
190
+ b.writeUInt32BE(len, 1);
191
+ w.push(b);
192
+ }
193
+ for (const item of arr)
194
+ writeValue(w, item);
195
+ }
196
+ function writeMap(w, obj) {
197
+ const keys = Object.keys(obj);
198
+ const len = keys.length;
199
+ if (len <= 15) {
200
+ w.push(Buffer.from([0x80 | len]));
201
+ }
202
+ else if (len <= 0xffff) {
203
+ const b = Buffer.alloc(3);
204
+ b[0] = 0xde;
205
+ b.writeUInt16BE(len, 1);
206
+ w.push(b);
207
+ }
208
+ else {
209
+ const b = Buffer.alloc(5);
210
+ b[0] = 0xdf;
211
+ b.writeUInt32BE(len, 1);
212
+ w.push(b);
213
+ }
214
+ for (const key of keys) {
215
+ writeString(w, key);
216
+ writeValue(w, obj[key]);
217
+ }
218
+ }
219
+ export function encode(value) {
220
+ const w = new Writer();
221
+ writeValue(w, value);
222
+ return w.concat();
223
+ }
224
+ class Reader {
225
+ buf;
226
+ offset = 0;
227
+ constructor(buf) {
228
+ this.buf = buf;
229
+ }
230
+ u8() {
231
+ return this.buf[this.offset++];
232
+ }
233
+ peek() {
234
+ return this.buf[this.offset];
235
+ }
236
+ slice(len) {
237
+ const s = this.buf.subarray(this.offset, this.offset + len);
238
+ this.offset += len;
239
+ return s;
240
+ }
241
+ }
242
+ function readValue(r) {
243
+ const first = r.u8();
244
+ if (first <= 0x7f)
245
+ return first; // positive fixint
246
+ if (first >= 0xe0)
247
+ return first - 0x100; // negative fixint
248
+ if ((first & 0xf0) === 0x80)
249
+ return readMap(r, first & 0x0f);
250
+ if ((first & 0xf0) === 0x90)
251
+ return readArray(r, first & 0x0f);
252
+ if ((first & 0xe0) === 0xa0)
253
+ return readString(r, first & 0x1f);
254
+ switch (first) {
255
+ case 0xc0:
256
+ return null;
257
+ case 0xc2:
258
+ return false;
259
+ case 0xc3:
260
+ return true;
261
+ case 0xc4:
262
+ return readBinary(r, r.u8());
263
+ case 0xc5:
264
+ return readBinary(r, r.slice(2).readUInt16BE(0));
265
+ case 0xc6:
266
+ return readBinary(r, r.slice(4).readUInt32BE(0));
267
+ case 0xca:
268
+ return r.slice(4).readFloatBE(0);
269
+ case 0xcb:
270
+ return r.slice(8).readDoubleBE(0);
271
+ case 0xcc:
272
+ return r.u8();
273
+ case 0xcd:
274
+ return r.slice(2).readUInt16BE(0);
275
+ case 0xce:
276
+ return r.slice(4).readUInt32BE(0);
277
+ case 0xcf:
278
+ return Number(r.slice(8).readBigUInt64BE(0));
279
+ case 0xd0:
280
+ return r.slice(1).readInt8(0);
281
+ case 0xd1:
282
+ return r.slice(2).readInt16BE(0);
283
+ case 0xd2:
284
+ return r.slice(4).readInt32BE(0);
285
+ case 0xd3:
286
+ return Number(r.slice(8).readBigInt64BE(0));
287
+ case 0xd9:
288
+ return readString(r, r.u8());
289
+ case 0xda:
290
+ return readString(r, r.slice(2).readUInt16BE(0));
291
+ case 0xdb:
292
+ return readString(r, r.slice(4).readUInt32BE(0));
293
+ case 0xdc:
294
+ return readArray(r, r.slice(2).readUInt16BE(0));
295
+ case 0xdd:
296
+ return readArray(r, r.slice(4).readUInt32BE(0));
297
+ case 0xde:
298
+ return readMap(r, r.slice(2).readUInt16BE(0));
299
+ case 0xdf:
300
+ return readMap(r, r.slice(4).readUInt32BE(0));
301
+ default:
302
+ throw new Error(`msgpack: unsupported type byte 0x${first.toString(16)}`);
303
+ }
304
+ }
305
+ function readString(r, len) {
306
+ return r.slice(len).toString("utf-8");
307
+ }
308
+ function readBinary(r, len) {
309
+ // Copy out of the shared backing buffer so the returned value has its
310
+ // own lifetime independent of the reader's source buffer.
311
+ return Uint8Array.from(r.slice(len));
312
+ }
313
+ function readArray(r, len) {
314
+ const out = new Array(len);
315
+ for (let i = 0; i < len; i++)
316
+ out[i] = readValue(r);
317
+ return out;
318
+ }
319
+ function readMap(r, len) {
320
+ const out = {};
321
+ for (let i = 0; i < len; i++) {
322
+ const key = readValue(r);
323
+ if (typeof key !== "string") {
324
+ throw new Error("msgpack: only string map keys are supported");
325
+ }
326
+ out[key] = readValue(r);
327
+ }
328
+ return out;
329
+ }
330
+ export function decode(buf) {
331
+ const r = new Reader(buf);
332
+ return readValue(r);
333
+ }
334
+ //# sourceMappingURL=msgpack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"msgpack.js","sourceRoot":"","sources":["../../src/serialization/msgpack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ZephyraPayload, ZephyraTimeline } from "../types.js";
2
+ export declare const PAYLOAD_MAGIC = "ZEPH";
3
+ export declare const PAYLOAD_VERSION = 1;
4
+ /**
5
+ * Pure function: build the wire bytes for a Zephyra payload from a timeline
6
+ * and the original base video bytes. No filesystem access here — this is
7
+ * the "core" half of encode/decode that a future HTTP handler or sidecar
8
+ * could call directly with in-memory buffers.
9
+ */
10
+ export declare function encodePayload(timeline: ZephyraTimeline, baseVideoBytes: Uint8Array, createdAt?: number): Buffer;
11
+ /**
12
+ * Pure function: inverse of encodePayload. Throws ZephyraFormatError if the
13
+ * bytes don't decode to a well-formed Zephyra payload.
14
+ */
15
+ export declare function decodePayload(compressed: Buffer): ZephyraPayload;
16
+ //# sourceMappingURL=payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/serialization/payload.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnE,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,UAAU,EAC1B,SAAS,GAAE,MAAmB,GAC7B,MAAM,CAcR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CA2DhE"}
@@ -0,0 +1,80 @@
1
+ import { gzipSync, gunzipSync } from "node:zlib";
2
+ import { encode as mpEncode, decode as mpDecode } from "./msgpack.js";
3
+ import { ZephyraFormatError } from "../types.js";
4
+ export const PAYLOAD_MAGIC = "ZEPH";
5
+ export const PAYLOAD_VERSION = 1;
6
+ /**
7
+ * Pure function: build the wire bytes for a Zephyra payload from a timeline
8
+ * and the original base video bytes. No filesystem access here — this is
9
+ * the "core" half of encode/decode that a future HTTP handler or sidecar
10
+ * could call directly with in-memory buffers.
11
+ */
12
+ export function encodePayload(timeline, baseVideoBytes, createdAt = Date.now()) {
13
+ const shape = {
14
+ magic: PAYLOAD_MAGIC,
15
+ version: PAYLOAD_VERSION,
16
+ createdAt,
17
+ timeline: {
18
+ baseVideoFilename: timeline.baseVideoFilename,
19
+ fps: timeline.fps ?? null,
20
+ layers: timeline.layers,
21
+ },
22
+ baseVideoBytes,
23
+ };
24
+ const packed = mpEncode(shape);
25
+ return gzipSync(packed, { level: 9 });
26
+ }
27
+ /**
28
+ * Pure function: inverse of encodePayload. Throws ZephyraFormatError if the
29
+ * bytes don't decode to a well-formed Zephyra payload.
30
+ */
31
+ export function decodePayload(compressed) {
32
+ let packed;
33
+ try {
34
+ packed = gunzipSync(compressed);
35
+ }
36
+ catch (err) {
37
+ throw new ZephyraFormatError(`Payload is not valid gzip data: ${err.message}`);
38
+ }
39
+ let decoded;
40
+ try {
41
+ decoded = mpDecode(packed);
42
+ }
43
+ catch (err) {
44
+ throw new ZephyraFormatError(`Payload is not valid MessagePack data: ${err.message}`);
45
+ }
46
+ if (typeof decoded !== "object" || decoded === null) {
47
+ throw new ZephyraFormatError("Payload did not decode to an object");
48
+ }
49
+ const obj = decoded;
50
+ if (obj.magic !== PAYLOAD_MAGIC) {
51
+ throw new ZephyraFormatError(`Bad payload magic: expected "${PAYLOAD_MAGIC}", got ${JSON.stringify(obj.magic)}`);
52
+ }
53
+ if (typeof obj.version !== "number") {
54
+ throw new ZephyraFormatError("Payload missing numeric version");
55
+ }
56
+ if (obj.version > PAYLOAD_VERSION) {
57
+ throw new ZephyraFormatError(`Payload version ${obj.version} is newer than this SDK supports (max ${PAYLOAD_VERSION})`);
58
+ }
59
+ const timelineRaw = obj.timeline;
60
+ if (!timelineRaw || !Array.isArray(timelineRaw.layers)) {
61
+ throw new ZephyraFormatError("Payload missing valid timeline.layers");
62
+ }
63
+ if (!(obj.baseVideoBytes instanceof Uint8Array)) {
64
+ throw new ZephyraFormatError("Payload missing baseVideoBytes");
65
+ }
66
+ return {
67
+ magic: "ZEPH",
68
+ version: obj.version,
69
+ createdAt: typeof obj.createdAt === "number" ? obj.createdAt : 0,
70
+ timeline: {
71
+ baseVideoFilename: typeof timelineRaw.baseVideoFilename === "string"
72
+ ? timelineRaw.baseVideoFilename
73
+ : "base-video.bin",
74
+ fps: typeof timelineRaw.fps === "number" ? timelineRaw.fps : undefined,
75
+ layers: timelineRaw.layers,
76
+ },
77
+ baseVideoBytes: obj.baseVideoBytes,
78
+ };
79
+ }
80
+ //# sourceMappingURL=payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../src/serialization/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AACpC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAyB,EACzB,cAA0B,EAC1B,YAAoB,IAAI,CAAC,GAAG,EAAE;IAE9B,MAAM,KAAK,GAAG;QACZ,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,eAAe;QACxB,SAAS;QACT,QAAQ,EAAE;YACR,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;YAC7C,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,IAAI;YACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB;QACD,cAAc;KACf,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,kBAAkB,CAC1B,mCAAoC,GAAa,CAAC,OAAO,EAAE,CAC5D,CAAC;IACJ,CAAC;IAED,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,kBAAkB,CAC1B,0CAA2C,GAAa,CAAC,OAAO,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,IAAI,kBAAkB,CAAC,qCAAqC,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,GAAG,GAAG,OAAkC,CAAC;IAE/C,IAAI,GAAG,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;QAChC,MAAM,IAAI,kBAAkB,CAC1B,gCAAgC,aAAa,UAAU,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACnF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,kBAAkB,CAAC,iCAAiC,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,GAAG,eAAe,EAAE,CAAC;QAClC,MAAM,IAAI,kBAAkB,CAC1B,mBAAmB,GAAG,CAAC,OAAO,yCAAyC,eAAe,GAAG,CAC1F,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,CAAC,QAA+C,CAAC;IACxE,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,kBAAkB,CAAC,uCAAuC,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,YAAY,UAAU,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,kBAAkB,CAAC,gCAAgC,CAAC,CAAC;IACjE,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChE,QAAQ,EAAE;YACR,iBAAiB,EACf,OAAO,WAAW,CAAC,iBAAiB,KAAK,QAAQ;gBAC/C,CAAC,CAAC,WAAW,CAAC,iBAAiB;gBAC/B,CAAC,CAAC,gBAAgB;YACtB,GAAG,EAAE,OAAO,WAAW,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;YACtE,MAAM,EAAE,WAAW,CAAC,MAAmC;SACxD;QACD,cAAc,EAAE,GAAG,CAAC,cAAc;KACnC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Public types for the Zephyra Core SDK.
3
+ *
4
+ * These types intentionally avoid Node-specific I/O shapes (no fs.Stats,
5
+ * no Buffer-only assumptions where Uint8Array will do) so that the same
6
+ * shapes can later be reused by an HTTP/WebSocket wrapper or a compiled
7
+ * sidecar without redesign.
8
+ */
9
+ /** A single overlay/layer instruction that was composited on top of the base video. */
10
+ export interface LayerInstruction {
11
+ /** Stable identifier for this layer, unique within an export. */
12
+ id: string;
13
+ /** What kind of thing this layer renders. */
14
+ type: "video" | "image" | "text" | "shape";
15
+ /** Seconds from the start of the base video when this layer becomes visible. */
16
+ startTime: number;
17
+ /** Seconds from the start of the base video when this layer stops being visible. */
18
+ endTime: number;
19
+ /** Position/scale/rotation applied to the layer. */
20
+ transform: {
21
+ x: number;
22
+ y: number;
23
+ scale: number;
24
+ rotation: number;
25
+ };
26
+ /** 0-1 opacity. */
27
+ opacity: number;
28
+ /**
29
+ * Layer-type-specific data. For "text" this holds string content and font
30
+ * info; for "image"/"video" it holds a source reference; for "shape" it
31
+ * holds geometry. Left as a free-form record so new layer kinds don't
32
+ * require a payload/schema migration.
33
+ */
34
+ data: Record<string, unknown>;
35
+ }
36
+ /** Everything needed to reproduce an export: the source video and how it was layered. */
37
+ export interface ZephyraTimeline {
38
+ /** Original filename of the base video, preserved for restoration. */
39
+ baseVideoFilename: string;
40
+ /** Frames per second of the base video, informational only. */
41
+ fps?: number;
42
+ /** Ordered layer instructions, bottom-to-top. */
43
+ layers: LayerInstruction[];
44
+ }
45
+ /** The decoded structure embedded inside an exported Zephyra file. */
46
+ export interface ZephyraPayload {
47
+ magic: "ZEPH";
48
+ /** Payload format version. Bump on any breaking change to this shape. */
49
+ version: number;
50
+ /** Unix ms timestamp of export. */
51
+ createdAt: number;
52
+ timeline: ZephyraTimeline;
53
+ /** Raw bytes of the untouched original base video, stored verbatim. */
54
+ baseVideoBytes: Uint8Array;
55
+ }
56
+ export interface ExportOptions {
57
+ /** Path to the original, un-layered base video. */
58
+ baseVideoPath: string;
59
+ /** Layer/overlay instructions to composite and later restore. */
60
+ layers: LayerInstruction[];
61
+ /** Where to write the resulting flattened + payload-embedded file. */
62
+ outputPath: string;
63
+ /** Optional path to an ffmpeg binary. Defaults to "ffmpeg" on PATH. */
64
+ ffmpegPath?: string;
65
+ /** Optional: override the base video's declared fps in the stored timeline. */
66
+ fps?: number;
67
+ }
68
+ export interface ExportResult {
69
+ outputPath: string;
70
+ /** Total size of the exported file in bytes. */
71
+ fileSizeBytes: number;
72
+ /** Size of the embedded Zephyra payload in bytes (post-compression). */
73
+ payloadSizeBytes: number;
74
+ /** SHA-256 hex digest of the original base video, for later verification. */
75
+ baseVideoChecksum: string;
76
+ }
77
+ export interface DeconstructOptions {
78
+ /** Path to a file previously produced by Exporter.export(). */
79
+ inputPath: string;
80
+ /** Directory to write the restored base video into. */
81
+ outDir: string;
82
+ }
83
+ export interface DeconstructResult {
84
+ /** Path to the restored, byte-identical base video. */
85
+ baseVideoPath: string;
86
+ /** The restored layer/overlay instructions. */
87
+ timeline: ZephyraTimeline;
88
+ /** SHA-256 hex digest of the restored base video. */
89
+ baseVideoChecksum: string;
90
+ version: number;
91
+ createdAt: number;
92
+ }
93
+ /** Thrown when a file does not contain a Zephyra payload, or it's corrupt/unreadable. */
94
+ export declare class ZephyraFormatError extends Error {
95
+ constructor(message: string);
96
+ }
97
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,SAAS,EAAE;QACT,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,uEAAuE;IACvE,cAAc,EAAE,UAAU,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,EAAE,eAAe,CAAC;IAC1B,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,yFAAyF;AACzF,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B"}
package/dist/types.js ADDED
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Public types for the Zephyra Core SDK.
3
+ *
4
+ * These types intentionally avoid Node-specific I/O shapes (no fs.Stats,
5
+ * no Buffer-only assumptions where Uint8Array will do) so that the same
6
+ * shapes can later be reused by an HTTP/WebSocket wrapper or a compiled
7
+ * sidecar without redesign.
8
+ */
9
+ /** Thrown when a file does not contain a Zephyra payload, or it's corrupt/unreadable. */
10
+ export class ZephyraFormatError extends Error {
11
+ constructor(message) {
12
+ super(message);
13
+ this.name = "ZephyraFormatError";
14
+ }
15
+ }
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA6FH,yFAAyF;AACzF,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare function sha256Hex(data: Uint8Array): string;
2
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAElD"}