@aelionsdk/sdk 0.1.0-beta.1

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 (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +63 -0
  3. package/dist/audio-controller.d.ts +25 -0
  4. package/dist/audio-controller.d.ts.map +1 -0
  5. package/dist/audio-controller.js +235 -0
  6. package/dist/audio-mastering.d.ts +27 -0
  7. package/dist/audio-mastering.d.ts.map +1 -0
  8. package/dist/audio-mastering.js +160 -0
  9. package/dist/composition.d.ts +75 -0
  10. package/dist/composition.d.ts.map +1 -0
  11. package/dist/composition.js +146 -0
  12. package/dist/default-schemas.d.ts +7 -0
  13. package/dist/default-schemas.d.ts.map +1 -0
  14. package/dist/default-schemas.js +18 -0
  15. package/dist/export-job.d.ts +22 -0
  16. package/dist/export-job.d.ts.map +1 -0
  17. package/dist/export-job.js +126 -0
  18. package/dist/extension-host.d.ts +90 -0
  19. package/dist/extension-host.d.ts.map +1 -0
  20. package/dist/extension-host.js +367 -0
  21. package/dist/index.d.ts +18 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +19 -0
  24. package/dist/media-provider.d.ts +49 -0
  25. package/dist/media-provider.d.ts.map +1 -0
  26. package/dist/media-provider.js +388 -0
  27. package/dist/migration-materials.d.ts +10 -0
  28. package/dist/migration-materials.d.ts.map +1 -0
  29. package/dist/migration-materials.js +148 -0
  30. package/dist/migration.d.ts +109 -0
  31. package/dist/migration.d.ts.map +1 -0
  32. package/dist/migration.js +1232 -0
  33. package/dist/persistence.d.ts +73 -0
  34. package/dist/persistence.d.ts.map +1 -0
  35. package/dist/persistence.js +245 -0
  36. package/dist/player.d.ts +22 -0
  37. package/dist/player.d.ts.map +1 -0
  38. package/dist/player.js +522 -0
  39. package/dist/preview-controller.d.ts +62 -0
  40. package/dist/preview-controller.d.ts.map +1 -0
  41. package/dist/preview-controller.js +377 -0
  42. package/dist/preview-quality.d.ts +7 -0
  43. package/dist/preview-quality.d.ts.map +1 -0
  44. package/dist/preview-quality.js +8 -0
  45. package/dist/production-media-provider.d.ts +112 -0
  46. package/dist/production-media-provider.d.ts.map +1 -0
  47. package/dist/production-media-provider.js +749 -0
  48. package/dist/project-builder.d.ts +249 -0
  49. package/dist/project-builder.d.ts.map +1 -0
  50. package/dist/project-builder.js +953 -0
  51. package/dist/runtime-material-registry.d.ts +10 -0
  52. package/dist/runtime-material-registry.d.ts.map +1 -0
  53. package/dist/runtime-material-registry.js +23 -0
  54. package/dist/session.d.ts +29 -0
  55. package/dist/session.d.ts.map +1 -0
  56. package/dist/session.js +1114 -0
  57. package/dist/types.d.ts +392 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/types.js +1 -0
  60. package/package.json +60 -0
@@ -0,0 +1,146 @@
1
+ import { ProjectBuilder, } from './project-builder.js';
2
+ function mergeParameters(defaults, overrides) {
3
+ return { ...(defaults ?? {}), ...(overrides ?? {}) };
4
+ }
5
+ /** Reusable Material definition. Each use creates a separately owned Project instance. */
6
+ export class Material {
7
+ builder;
8
+ options;
9
+ constructor(builder, options) {
10
+ this.builder = builder;
11
+ this.options = options;
12
+ }
13
+ instantiate(options = {}) {
14
+ return this.builder.addMaterialInstance({
15
+ ...this.options,
16
+ ...(options.id === undefined ? {} : { id: options.id }),
17
+ ...((options.name ?? this.options.name) === undefined
18
+ ? {}
19
+ : { name: options.name ?? this.options.name }),
20
+ parameters: mergeParameters(this.options.parameters, options.parameters),
21
+ });
22
+ }
23
+ }
24
+ /** Fluent handle for a Project Item. */
25
+ export class Clip {
26
+ id;
27
+ layer;
28
+ builder;
29
+ constructor(id, layer, builder) {
30
+ this.id = id;
31
+ this.layer = layer;
32
+ this.builder = builder;
33
+ }
34
+ effect(material, options = {}) {
35
+ this.builder.attachEffect(this.id, material.instantiate(options));
36
+ return this;
37
+ }
38
+ mask(source, options = {}) {
39
+ this.builder.setMask(this.id, { ...options, sourceItemId: source.id });
40
+ return this;
41
+ }
42
+ keyframes(property, values) {
43
+ this.builder.setKeyframes(this.id, property, values);
44
+ return this;
45
+ }
46
+ visual(options) {
47
+ this.builder.setVisual(this.id, options);
48
+ return this;
49
+ }
50
+ }
51
+ /** Ordered Composition layer backed by a schema-valid Aelion Track. */
52
+ export class Layer {
53
+ kind;
54
+ builder;
55
+ id;
56
+ constructor(kind, builder, options = {}) {
57
+ this.kind = kind;
58
+ this.builder = builder;
59
+ this.id = builder.addTrack({ kind, ...options });
60
+ }
61
+ video(options) {
62
+ this.#expect('visual', 'video');
63
+ return this.#clip(this.builder.addMediaClip({ ...options, kind: 'video', trackId: this.id }));
64
+ }
65
+ audio(options) {
66
+ this.#expect('audio', 'audio');
67
+ return this.#clip(this.builder.addMediaClip({ ...options, kind: 'audio', trackId: this.id }));
68
+ }
69
+ image(options) {
70
+ this.#expect('visual', 'image');
71
+ return this.#clip(this.builder.addImageClip({ ...options, trackId: this.id }));
72
+ }
73
+ text(options) {
74
+ this.#expect('visual', 'text');
75
+ return this.#clip(this.builder.addTextClip({ ...options, trackId: this.id }));
76
+ }
77
+ caption(options) {
78
+ this.#expect('caption', 'caption');
79
+ return this.#clip(this.builder.addCaptionClip({ ...options, trackId: this.id }));
80
+ }
81
+ shape(options) {
82
+ this.#expect('visual', 'shape');
83
+ return this.#clip(this.builder.addShapeClip({ ...options, trackId: this.id }));
84
+ }
85
+ #clip(id) {
86
+ return new Clip(id, this, this.builder);
87
+ }
88
+ #expect(expected, content) {
89
+ if (this.kind !== expected) {
90
+ throw new TypeError(`${content} Clips require a ${expected} Layer`);
91
+ }
92
+ }
93
+ }
94
+ /**
95
+ * Product-level authoring API. It keeps Composition/Layer/Clip ergonomics while
96
+ * producing the same portable, validator-backed Project document as ProjectBuilder.
97
+ */
98
+ export class Composition {
99
+ #builder;
100
+ constructor(options = {}) {
101
+ this.#builder = new ProjectBuilder(options);
102
+ }
103
+ get projectId() {
104
+ return this.#builder.projectId;
105
+ }
106
+ get sequenceId() {
107
+ return this.#builder.sequenceId;
108
+ }
109
+ asset(options) {
110
+ this.#builder.addAsset(options);
111
+ return this;
112
+ }
113
+ layer(kind, options = {}) {
114
+ return new Layer(kind, this.#builder, options);
115
+ }
116
+ material(options) {
117
+ return new Material(this.#builder, options);
118
+ }
119
+ transition(from, to, material, options) {
120
+ if (from.layer !== to.layer)
121
+ throw new TypeError('Transition Clips must share a Layer');
122
+ const materialInstanceId = material.instantiate({
123
+ ...(options.materialInstanceId === undefined ? {} : { id: options.materialInstanceId }),
124
+ ...(options.name === undefined ? {} : { name: options.name }),
125
+ ...(options.parameters === undefined ? {} : { parameters: options.parameters }),
126
+ });
127
+ return this.#builder.addTransition({
128
+ ...(options.transitionId === undefined ? {} : { id: options.transitionId }),
129
+ fromItemId: from.id,
130
+ toItemId: to.id,
131
+ materialInstanceId,
132
+ atUs: options.atUs,
133
+ durationUs: options.durationUs,
134
+ });
135
+ }
136
+ build() {
137
+ return this.#builder.build();
138
+ }
139
+ /** Escape hatch for advanced, schema-level operations without changing document semantics. */
140
+ advanced() {
141
+ return this.#builder;
142
+ }
143
+ }
144
+ export function createComposition(options = {}) {
145
+ return new Composition(options);
146
+ }
@@ -0,0 +1,7 @@
1
+ import type { AelionProjectSchemas } from './types.js';
2
+ /**
3
+ * The canonical v1 validators bundled into the JavaScript artifact. Consumers
4
+ * can create a session without loading schema files or configuring asset URLs.
5
+ */
6
+ export declare const defaultSchemas: AelionProjectSchemas;
7
+ //# sourceMappingURL=default-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-schemas.d.ts","sourceRoot":"","sources":["../src/default-schemas.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAiBvD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,oBAG3B,CAAC"}
@@ -0,0 +1,18 @@
1
+ function deepFreeze(value) {
2
+ if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {
3
+ for (const entry of Object.values(value))
4
+ deepFreeze(entry);
5
+ Object.freeze(value);
6
+ }
7
+ return value;
8
+ }
9
+ const projectSchema = JSON.parse(String.raw `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://schemas.aelion.dev/project/v1.json","title":"Aelion Project Document v1","type":"object","additionalProperties":false,"required":["$schema","schemaVersion","projectId","metadata","settings","assets","sequences","tracks","items","materialInstances","transitions","markers","linkGroups","extensions"],"properties":{"$schema":{"const":"https://schemas.aelion.dev/project/v1.json"},"schemaVersion":{"const":"1.0.0"},"projectId":{"$ref":"#/$defs/entityId"},"metadata":{"$ref":"#/$defs/jsonObject"},"settings":{"$ref":"#/$defs/settings"},"assets":{"$ref":"#/$defs/assetMap"},"sequences":{"$ref":"#/$defs/sequenceMap"},"tracks":{"$ref":"#/$defs/trackMap"},"items":{"$ref":"#/$defs/itemMap"},"materialInstances":{"type":"object","maxProperties":4096,"propertyNames":{"$ref":"#/$defs/entityId"},"additionalProperties":{"$ref":"https://schemas.aelion.dev/material/instance/v1.json"}},"transitions":{"$ref":"#/$defs/transitionMap"},"markers":{"$ref":"#/$defs/markerMap"},"linkGroups":{"$ref":"#/$defs/linkGroupMap"},"extensions":{"$ref":"#/$defs/extensions"}},"$defs":{"entityId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z][A-Za-z0-9._:-]*$"},"safeInteger":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timeUs":{"type":"integer","minimum":0,"maximum":9007199254740991},"positiveDurationUs":{"type":"integer","minimum":1,"maximum":9007199254740991},"jsonValue":{"oneOf":[{"type":"null"},{"type":"boolean"},{"type":"number"},{"type":"string"},{"type":"array","maxItems":16384,"items":{"$ref":"#/$defs/jsonValue"}},{"type":"object","maxProperties":4096,"additionalProperties":{"$ref":"#/$defs/jsonValue"}}]},"jsonObject":{"type":"object","maxProperties":4096,"additionalProperties":{"$ref":"#/$defs/jsonValue"}},"extensions":{"type":"object","maxProperties":4096,"propertyNames":{"type":"string","pattern":"^[a-z0-9]+(?:\\.[a-z0-9-]+)+$"},"additionalProperties":{"$ref":"#/$defs/jsonValue"}},"rational":{"type":"object","additionalProperties":false,"required":["numerator","denominator"],"properties":{"numerator":{"type":"integer","minimum":1,"maximum":9007199254740991},"denominator":{"type":"integer","minimum":1,"maximum":9007199254740991}}},"range":{"type":"object","additionalProperties":false,"required":["startUs","durationUs"],"properties":{"startUs":{"$ref":"#/$defs/timeUs"},"durationUs":{"$ref":"#/$defs/positiveDurationUs"}}},"color":{"type":"object","additionalProperties":false,"required":["space","rgba"],"properties":{"space":{"enum":["srgb-linear","display-p3-linear","rec2020-linear"]},"rgba":{"type":"array","minItems":4,"maxItems":4,"items":{"type":"number"}}}},"vec2":{"type":"object","additionalProperties":false,"required":["x","y"],"properties":{"x":{"type":"number"},"y":{"type":"number"}}},"animation":{"type":"object","additionalProperties":false,"required":["animation"],"properties":{"animation":{"type":"object","additionalProperties":false,"required":["timeSpace","preInfinity","postInfinity","keyframes"],"properties":{"timeSpace":{"enum":["item","sequence"]},"preInfinity":{"enum":["hold","linear","none","cycle","ping-pong"]},"postInfinity":{"enum":["hold","linear","none","cycle","ping-pong"]},"keyframes":{"type":"array","minItems":1,"maxItems":4096,"items":{"type":"object","additionalProperties":false,"required":["timeUs","value","interpolation"],"properties":{"timeUs":{"$ref":"#/$defs/timeUs"},"value":{"$ref":"#/$defs/jsonValue"},"interpolation":{"enum":["hold","linear","cubic-bezier"]},"easing":{"type":"object","required":["type"],"properties":{"type":{"enum":["linear","steps","cubic-bezier"]},"count":{"type":"integer","minimum":1},"position":{"enum":["start","end"]},"x1":{"type":"number"},"y1":{"type":"number"},"x2":{"type":"number"},"y2":{"type":"number"}},"additionalProperties":false}}}}}}}},"animatableNumber":{"oneOf":[{"type":"number"},{"$ref":"#/$defs/animation"}]},"animatableVec2":{"oneOf":[{"$ref":"#/$defs/vec2"},{"$ref":"#/$defs/animation"}]},"settings":{"type":"object","additionalProperties":false,"required":["defaultSequenceId","defaultStillDurationUs","missingAssetPolicy","missingMaterialPolicy","missingPluginPolicy"],"properties":{"defaultSequenceId":{"$ref":"#/$defs/entityId"},"defaultStillDurationUs":{"$ref":"#/$defs/positiveDurationUs"},"locale":{"type":"string","minLength":1,"maxLength":128},"timezone":{"type":"string","minLength":1,"maxLength":128},"missingAssetPolicy":{"enum":["placeholder","error"]},"missingMaterialPolicy":{"enum":["placeholder","error"]},"missingPluginPolicy":{"enum":["placeholder","error"]}}},"assetLocator":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","uri"],"properties":{"type":{"const":"url"},"uri":{"type":"string","minLength":1,"maxLength":8192}}},{"type":"object","additionalProperties":false,"required":["type","bindingId"],"properties":{"type":{"const":"runtime-binding"},"bindingId":{"$ref":"#/$defs/entityId"}}},{"type":"object","additionalProperties":false,"required":["type","path"],"properties":{"type":{"const":"opfs"},"path":{"type":"string","minLength":1,"maxLength":4096}}},{"type":"object","additionalProperties":false,"required":["type","mimeType","base64"],"properties":{"type":{"const":"data"},"mimeType":{"type":"string","minLength":1,"maxLength":256},"base64":{"type":"string","maxLength":349528}}}]},"asset":{"type":"object","additionalProperties":false,"required":["id","kind","locator"],"properties":{"id":{"$ref":"#/$defs/entityId"},"kind":{"enum":["video","audio","image","font","lut","binary"]},"name":{"type":"string","maxLength":256},"locator":{"$ref":"#/$defs/assetLocator"},"contentHash":{"type":"object","additionalProperties":false,"required":["algorithm","value"],"properties":{"algorithm":{"const":"sha256"},"value":{"type":"string","pattern":"^[0-9a-f]{64}$"}}},"byteLength":{"type":"integer","minimum":0,"maximum":9007199254740991},"mimeType":{"type":"string","minLength":1,"maxLength":256},"representations":{"type":"array","maxItems":32,"items":{"type":"object","maxProperties":4096,"additionalProperties":true,"required":["id","role","locator"],"properties":{"id":{"$ref":"#/$defs/entityId"},"role":{"enum":["original","proxy","thumbnail","waveform"]},"locator":{"$ref":"#/$defs/assetLocator"}}}},"probeHint":{"type":"object","additionalProperties":false,"properties":{"durationUs":{"$ref":"#/$defs/positiveDurationUs"},"width":{"type":"integer","minimum":1,"maximum":65535},"height":{"type":"integer","minimum":1,"maximum":65535},"videoCodec":{"type":"string","maxLength":256},"audioCodec":{"type":"string","maxLength":256}}},"metadata":{"$ref":"#/$defs/jsonObject"},"extensions":{"$ref":"#/$defs/extensions"}}},"assetMap":{"type":"object","maxProperties":4096,"propertyNames":{"$ref":"#/$defs/entityId"},"additionalProperties":{"$ref":"#/$defs/asset"}},"sequence":{"type":"object","additionalProperties":false,"required":["id","format","duration","trackIds","transitionIds","materialInstanceIds","markerIds"],"properties":{"id":{"$ref":"#/$defs/entityId"},"name":{"type":"string","maxLength":256},"format":{"type":"object","additionalProperties":false,"required":["width","height","pixelAspectRatio","frameRate","sampleRate","channelLayout","workingColorSpace","backgroundColor"],"properties":{"width":{"type":"integer","minimum":1,"maximum":65535},"height":{"type":"integer","minimum":1,"maximum":65535},"pixelAspectRatio":{"$ref":"#/$defs/rational"},"frameRate":{"$ref":"#/$defs/rational"},"sampleRate":{"enum":[44100,48000,96000]},"channelLayout":{"enum":["mono","stereo","5.1"]},"workingColorSpace":{"enum":["srgb-linear","display-p3-linear","rec2020-linear"]},"transferFunction":{"enum":["srgb","gamma22","pq","hlg"],"default":"srgb"},"bitDepth":{"enum":[8,10],"default":8},"backgroundColor":{"$ref":"#/$defs/color"}}},"duration":{"oneOf":[{"type":"object","additionalProperties":false,"required":["mode"],"properties":{"mode":{"const":"content"}}},{"type":"object","additionalProperties":false,"required":["mode","durationUs","overflow"],"properties":{"mode":{"const":"fixed"},"durationUs":{"$ref":"#/$defs/timeUs"},"overflow":{"enum":["clip","allow"]}}}]},"trackIds":{"$ref":"#/$defs/idList"},"transitionIds":{"$ref":"#/$defs/idList"},"materialInstanceIds":{"$ref":"#/$defs/idList"},"markerIds":{"$ref":"#/$defs/idList"},"extensions":{"$ref":"#/$defs/extensions"}}},"sequenceMap":{"type":"object","minProperties":1,"maxProperties":4096,"propertyNames":{"$ref":"#/$defs/entityId"},"additionalProperties":{"$ref":"#/$defs/sequence"}},"idList":{"type":"array","maxItems":16384,"items":{"$ref":"#/$defs/entityId"}},"track":{"type":"object","additionalProperties":false,"required":["id","sequenceId","kind","enabled","locked","itemIds","materialInstanceIds"],"properties":{"id":{"$ref":"#/$defs/entityId"},"sequenceId":{"$ref":"#/$defs/entityId"},"kind":{"enum":["visual","audio","caption"]},"name":{"type":"string","maxLength":256},"enabled":{"type":"boolean"},"locked":{"type":"boolean"},"itemIds":{"$ref":"#/$defs/idList"},"materialInstanceIds":{"$ref":"#/$defs/idList"},"audio":{"type":"object","additionalProperties":false,"required":["gainDb","pan","muted"],"properties":{"gainDb":{"$ref":"#/$defs/animatableNumber"},"pan":{"$ref":"#/$defs/animatableNumber"},"muted":{"type":"boolean"},"solo":{"type":"boolean","default":false}}},"extensions":{"$ref":"#/$defs/extensions"}}},"trackMap":{"type":"object","maxProperties":4096,"propertyNames":{"$ref":"#/$defs/entityId"},"additionalProperties":{"$ref":"#/$defs/track"}},"baseItem":{"type":"object","required":["id","trackId","type","enabled","range","materialInstanceIds"],"properties":{"id":{"$ref":"#/$defs/entityId"},"trackId":{"$ref":"#/$defs/entityId"},"type":{"enum":["video","audio","image","text","caption","shape","generator","nested-sequence","adjustment","material-content"]},"name":{"type":"string","maxLength":256},"enabled":{"type":"boolean"},"range":{"$ref":"#/$defs/range"},"materialInstanceIds":{"$ref":"#/$defs/idList"},"linkGroupId":{"$ref":"#/$defs/entityId"},"markerIds":{"$ref":"#/$defs/idList"},"metadata":{"$ref":"#/$defs/jsonObject"},"extensions":{"$ref":"#/$defs/extensions"}}},"mediaSource":{"type":"object","additionalProperties":false,"required":["assetId","stream","sourceRange","timeMapping"],"properties":{"assetId":{"$ref":"#/$defs/entityId"},"stream":{"type":"object","additionalProperties":false,"required":["type","index"],"properties":{"type":{"enum":["video","audio"]},"index":{"type":"integer","minimum":0,"maximum":1024}}},"sourceRange":{"$ref":"#/$defs/range"},"timeMapping":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","rate","reverse","boundary"],"properties":{"type":{"const":"linear"},"rate":{"$ref":"#/$defs/rational"},"reverse":{"type":"boolean"},"boundary":{"enum":["error","hold","loop","transparent"]}}},{"type":"object","additionalProperties":false,"required":["type","points","boundary"],"properties":{"type":{"const":"curve"},"points":{"type":"array","minItems":2,"maxItems":4096,"items":{"type":"object","maxProperties":4096,"additionalProperties":true,"required":["itemTimeUs","sourceTimeUs","interpolation"],"properties":{"itemTimeUs":{"$ref":"#/$defs/timeUs"},"sourceTimeUs":{"$ref":"#/$defs/timeUs"},"interpolation":{"enum":["linear","hold","cubic"]}}}},"boundary":{"enum":["error","hold","loop","transparent"]}}}]}}},"visual":{"type":"object","additionalProperties":false,"required":["fit","transform","crop","opacity","blendMode"],"properties":{"fit":{"enum":["contain","cover","fill","none"]},"transform":{"type":"object","additionalProperties":false,"required":["positionPx","anchor","scale","rotationDeg","skewDeg"],"properties":{"positionPx":{"$ref":"#/$defs/animatableVec2"},"anchor":{"$ref":"#/$defs/animatableVec2"},"scale":{"$ref":"#/$defs/animatableVec2"},"rotationDeg":{"$ref":"#/$defs/animatableNumber"},"skewDeg":{"$ref":"#/$defs/animatableVec2"}}},"crop":{"oneOf":[{"type":"object","additionalProperties":false,"required":["left","top","right","bottom"],"properties":{"left":{"type":"number","minimum":0,"maximum":1},"top":{"type":"number","minimum":0,"maximum":1},"right":{"type":"number","minimum":0,"maximum":1},"bottom":{"type":"number","minimum":0,"maximum":1}}},{"$ref":"#/$defs/animation"}]},"opacity":{"$ref":"#/$defs/animatableNumber"},"blendMode":{"enum":["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion"]},"mask":{"type":"object","additionalProperties":false,"required":["sourceItemId","channel","invert","featherPx","space","consumeSource"],"properties":{"sourceItemId":{"$ref":"#/$defs/entityId"},"channel":{"enum":["alpha","luma"]},"invert":{"type":"boolean"},"featherPx":{"type":"number","minimum":0,"maximum":4096},"space":{"enum":["source","canvas"]},"consumeSource":{"type":"boolean"}}}}},"audioProperties":{"type":"object","additionalProperties":false,"required":["gainDb","pan"],"properties":{"gainDb":{"$ref":"#/$defs/animatableNumber"},"pan":{"$ref":"#/$defs/animatableNumber"},"fadeInUs":{"$ref":"#/$defs/timeUs"},"fadeOutUs":{"$ref":"#/$defs/timeUs"},"pitchPolicy":{"enum":["varispeed","preserve"],"description":"Varispeed follows source time directly; preserve uses deterministic overlap-add time stretching."},"channelMap":{"type":"array","maxItems":16384,"items":{"type":"array","maxItems":16384,"items":{"type":"number"}}}}},"videoItem":{"type":"object","allOf":[{"$ref":"#/$defs/baseItem"},{"type":"object","required":["source","visual"],"properties":{"type":{"const":"video"},"source":{"$ref":"#/$defs/mediaSource"},"visual":{"$ref":"#/$defs/visual"}}}],"unevaluatedProperties":false},"audioItem":{"type":"object","allOf":[{"$ref":"#/$defs/baseItem"},{"type":"object","required":["source","audio"],"properties":{"type":{"const":"audio"},"source":{"$ref":"#/$defs/mediaSource"},"audio":{"$ref":"#/$defs/audioProperties"}}}],"unevaluatedProperties":false},"imageItem":{"type":"object","allOf":[{"$ref":"#/$defs/baseItem"},{"type":"object","required":["source","visual"],"properties":{"type":{"const":"image"},"source":{"$ref":"#/$defs/mediaSource"},"visual":{"$ref":"#/$defs/visual"}}}],"unevaluatedProperties":false},"textItem":{"type":"object","allOf":[{"$ref":"#/$defs/baseItem"},{"type":"object","required":["box","overflow","writingMode","paragraphs","visual"],"properties":{"type":{"const":"text"},"box":{"type":"object","additionalProperties":false,"required":["x","y","width","height"],"properties":{"x":{"type":"number"},"y":{"type":"number"},"width":{"type":"number","exclusiveMinimum":0},"height":{"type":"number","exclusiveMinimum":0}}},"overflow":{"enum":["clip","ellipsis","visible","auto-fit"]},"writingMode":{"enum":["horizontal-tb","vertical-rl","vertical-lr"]},"paragraphs":{"type":"array","minItems":1,"maxItems":10000,"items":{"type":"object","additionalProperties":false,"required":["style","runs"],"properties":{"style":{"$ref":"#/$defs/jsonObject"},"runs":{"type":"array","minItems":1,"maxItems":10000,"items":{"type":"object","additionalProperties":false,"required":["text","style"],"properties":{"text":{"type":"string","maxLength":1000000},"style":{"$ref":"#/$defs/jsonObject"}}}}}}},"visual":{"$ref":"#/$defs/visual"}}}],"unevaluatedProperties":false},"captionItem":{"type":"object","allOf":[{"$ref":"#/$defs/baseItem"},{"type":"object","required":["text","box","style","visual"],"properties":{"type":{"const":"caption"},"text":{"type":"string","maxLength":1000000},"box":{"type":"object","additionalProperties":false,"required":["x","y","width","height"],"properties":{"x":{"type":"number"},"y":{"type":"number"},"width":{"type":"number","exclusiveMinimum":0},"height":{"type":"number","exclusiveMinimum":0}}},"style":{"$ref":"#/$defs/jsonObject"},"overflow":{"enum":["clip","auto-fit"]},"cueSettings":{"$ref":"#/$defs/jsonObject"},"visual":{"$ref":"#/$defs/visual"}}}],"unevaluatedProperties":false},"nestedSequenceItem":{"type":"object","allOf":[{"$ref":"#/$defs/baseItem"},{"type":"object","required":["source","visual"],"properties":{"type":{"const":"nested-sequence"},"source":{"type":"object","additionalProperties":false,"required":["sequenceId","sourceRange","timeMapping"],"properties":{"sequenceId":{"$ref":"#/$defs/entityId"},"sourceRange":{"$ref":"#/$defs/range"},"timeMapping":{"$ref":"#/$defs/mediaSource/properties/timeMapping"}}},"visual":{"$ref":"#/$defs/visual"}}}],"unevaluatedProperties":false},"generatorItem":{"type":"object","allOf":[{"$ref":"#/$defs/baseItem"},{"type":"object","required":["generator","visual"],"properties":{"type":{"const":"generator"},"generator":{"type":"object","additionalProperties":false,"required":["kind","colors"],"properties":{"kind":{"enum":["solid","linear-gradient"]},"colors":{"type":"array","minItems":1,"maxItems":16,"items":{"$ref":"#/$defs/color"}},"angleDeg":{"type":"number"}}},"visual":{"$ref":"#/$defs/visual"}}}],"unevaluatedProperties":false},"adjustmentItem":{"type":"object","allOf":[{"$ref":"#/$defs/baseItem"},{"type":"object","required":["visual"],"properties":{"type":{"const":"adjustment"},"visual":{"$ref":"#/$defs/visual"}}}],"unevaluatedProperties":false},"shapeItem":{"type":"object","allOf":[{"$ref":"#/$defs/baseItem"},{"type":"object","required":["shape","visual"],"properties":{"type":{"const":"shape"},"shape":{"type":"object","additionalProperties":false,"required":["kind","box","fill"],"properties":{"kind":{"enum":["rectangle","ellipse","polygon"]},"box":{"type":"object","additionalProperties":false,"required":["x","y","width","height"],"properties":{"x":{"type":"number"},"y":{"type":"number"},"width":{"type":"number","exclusiveMinimum":0},"height":{"type":"number","exclusiveMinimum":0}}},"fill":{"$ref":"#/$defs/color"},"stroke":{"$ref":"#/$defs/color"},"strokeWidthPx":{"type":"number","minimum":0,"maximum":4096},"cornerRadiusPx":{"type":"number","minimum":0,"maximum":32768},"points":{"type":"array","minItems":3,"maxItems":1024,"items":{"$ref":"#/$defs/vec2"}}}},"visual":{"$ref":"#/$defs/visual"}}}],"unevaluatedProperties":false},"materialContentItem":{"type":"object","allOf":[{"$ref":"#/$defs/baseItem"},{"type":"object","required":["materialInstanceId","visual"],"properties":{"type":{"const":"material-content"},"materialInstanceId":{"$ref":"#/$defs/entityId"},"visual":{"$ref":"#/$defs/visual"}}}],"unevaluatedProperties":false},"item":{"oneOf":[{"$ref":"#/$defs/videoItem"},{"$ref":"#/$defs/audioItem"},{"$ref":"#/$defs/imageItem"},{"$ref":"#/$defs/textItem"},{"$ref":"#/$defs/captionItem"},{"$ref":"#/$defs/nestedSequenceItem"},{"$ref":"#/$defs/generatorItem"},{"$ref":"#/$defs/adjustmentItem"},{"$ref":"#/$defs/materialContentItem"},{"$ref":"#/$defs/shapeItem"}]},"itemMap":{"type":"object","maxProperties":4096,"propertyNames":{"$ref":"#/$defs/entityId"},"additionalProperties":{"$ref":"#/$defs/item"}},"transition":{"type":"object","additionalProperties":false,"required":["id","sequenceId","trackId","kind","fromItemId","toItemId","range","materialInstanceId"],"properties":{"id":{"$ref":"#/$defs/entityId"},"sequenceId":{"$ref":"#/$defs/entityId"},"trackId":{"$ref":"#/$defs/entityId"},"kind":{"enum":["visual","audio"]},"fromItemId":{"$ref":"#/$defs/entityId"},"toItemId":{"$ref":"#/$defs/entityId"},"range":{"$ref":"#/$defs/range"},"materialInstanceId":{"$ref":"#/$defs/entityId"},"extensions":{"$ref":"#/$defs/extensions"}}},"transitionMap":{"type":"object","maxProperties":4096,"propertyNames":{"$ref":"#/$defs/entityId"},"additionalProperties":{"$ref":"#/$defs/transition"}},"marker":{"type":"object","additionalProperties":false,"required":["id","owner","timeUs","durationUs"],"properties":{"id":{"$ref":"#/$defs/entityId"},"owner":{"type":"object","additionalProperties":false,"required":["type","id"],"properties":{"type":{"enum":["sequence","item"]},"id":{"$ref":"#/$defs/entityId"}}},"timeUs":{"$ref":"#/$defs/timeUs"},"durationUs":{"$ref":"#/$defs/timeUs"},"label":{"type":"string","maxLength":1024},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?$"},"payload":{"$ref":"#/$defs/jsonValue"}}},"markerMap":{"type":"object","maxProperties":4096,"propertyNames":{"$ref":"#/$defs/entityId"},"additionalProperties":{"$ref":"#/$defs/marker"}},"linkGroup":{"type":"object","additionalProperties":false,"required":["id","kind","itemIds"],"properties":{"id":{"$ref":"#/$defs/entityId"},"kind":{"enum":["av-sync","edit-group"]},"itemIds":{"$ref":"#/$defs/idList"},"syncOffsetsUs":{"type":"object","maxProperties":4096,"additionalProperties":{"$ref":"#/$defs/safeInteger"}}}},"linkGroupMap":{"type":"object","maxProperties":4096,"propertyNames":{"$ref":"#/$defs/entityId"},"additionalProperties":{"$ref":"#/$defs/linkGroup"}}}}`);
10
+ const materialInstanceSchema = JSON.parse(String.raw `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://schemas.aelion.dev/material/instance/v1.json","title":"Aelion Project Material Instance v1","type":"object","additionalProperties":false,"required":["id","definition","enabled","parameters"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128},"definition":{"type":"object","additionalProperties":false,"required":["packageId","packageVersion","packageIntegrity","materialId"],"properties":{"packageId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},"packageVersion":{"type":"string","pattern":"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"},"packageIntegrity":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"materialId":{"type":"string","minLength":1,"maxLength":96,"pattern":"^[A-Za-z][A-Za-z0-9_-]*$"}}},"name":{"type":"string","maxLength":256},"enabled":{"type":"boolean"},"previewPolicy":{"enum":["required","skippable-when-degraded"]},"parameters":{"type":"object","maxProperties":64,"additionalProperties":true},"resourceBindings":{"type":"object","maxProperties":16,"additionalProperties":true},"inputBindings":{"type":"object","maxProperties":16,"additionalProperties":true},"randomSeed":{"type":"integer","minimum":0,"maximum":4294967295},"extensions":{"type":"object","additionalProperties":true}}}`);
11
+ /**
12
+ * The canonical v1 validators bundled into the JavaScript artifact. Consumers
13
+ * can create a session without loading schema files or configuring asset URLs.
14
+ */
15
+ export const defaultSchemas = Object.freeze({
16
+ project: deepFreeze(projectSchema),
17
+ materialInstance: deepFreeze(materialInstanceSchema),
18
+ });
@@ -0,0 +1,22 @@
1
+ import type { AelionExportJobSnapshot, AelionExportJobState, AelionTypedExportJob } from './types.js';
2
+ export interface AelionExportJobOptions<TResult> {
3
+ readonly id: string;
4
+ readonly externalSignal?: AbortSignal;
5
+ readonly run: (signal: AbortSignal, onProgress: (progress: number) => void) => Promise<TResult>;
6
+ readonly onSnapshot?: (snapshot: AelionExportJobSnapshot) => void;
7
+ readonly onSettled?: (job: AelionTypedExportJob<TResult>) => void;
8
+ }
9
+ export declare class ExportJob<TResult> extends Promise<TResult> implements AelionTypedExportJob<TResult> {
10
+ #private;
11
+ constructor(options: AelionExportJobOptions<TResult>);
12
+ get id(): string;
13
+ get state(): AelionExportJobState;
14
+ get result(): Promise<TResult>;
15
+ then<TResult1 = TResult, TResult2 = never>(onfulfilled?: ((value: TResult) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
16
+ catch<TResult2 = never>(onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult | TResult2>;
17
+ finally(onfinally?: (() => void) | null): Promise<TResult>;
18
+ cancel(reason?: unknown): Promise<void>;
19
+ getSnapshot(): AelionExportJobSnapshot;
20
+ subscribe(listener: (snapshot: AelionExportJobSnapshot) => void): () => void;
21
+ }
22
+ //# sourceMappingURL=export-job.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-job.d.ts","sourceRoot":"","sources":["../src/export-job.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,sBAAsB,CAAC,OAAO;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAClE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACnE;AAsBD,qBAAa,SAAS,CAAC,OAAO,CAAE,SAAQ,OAAO,CAAC,OAAO,CAAE,YAAW,oBAAoB,CAAC,OAAO,CAAC;;gBAU5E,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC;IAyC3D,IAAW,EAAE,IAAI,MAAM,CAEtB;IAED,IAAW,KAAK,IAAI,oBAAoB,CAEvC;IAED,IAAW,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAEpC;IAEe,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,GAAG,KAAK,EACvD,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,EAC3E,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAC1E,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAIf,KAAK,CAAC,QAAQ,GAAG,KAAK,EACpC,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAC1E,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC;IAId,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7D,MAAM,CAAC,MAAM,GAAE,OAA4D;IAUjF,WAAW,IAAI,uBAAuB;IAItC,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,uBAAuB,KAAK,IAAI,GAAG,MAAM,IAAI;CAmCpF"}
@@ -0,0 +1,126 @@
1
+ function boundedProgress(value) {
2
+ return Number.isFinite(value) ? Math.min(1, Math.max(0, value)) : 0;
3
+ }
4
+ function isAbort(error, signal) {
5
+ if (signal.aborted)
6
+ return true;
7
+ if (error instanceof DOMException && error.name === 'AbortError')
8
+ return true;
9
+ if (error === null || typeof error !== 'object')
10
+ return false;
11
+ const diagnostics = Reflect.get(error, 'diagnostics');
12
+ return (Array.isArray(diagnostics) &&
13
+ diagnostics.some(value => value !== null &&
14
+ typeof value === 'object' &&
15
+ Reflect.get(value, 'code') === 'OPERATION_ABORTED'));
16
+ }
17
+ export class ExportJob extends Promise {
18
+ #id;
19
+ #controller = new AbortController();
20
+ #listeners = new Set();
21
+ #onSnapshot;
22
+ #state = 'running';
23
+ #progress = 0;
24
+ #result;
25
+ #detachExternalSignal;
26
+ constructor(options) {
27
+ // The native Promise backing this subclass deliberately stays pending. All
28
+ // Promise methods delegate to #result, which avoids a second rejection that
29
+ // could otherwise become unhandled while preserving await compatibility.
30
+ super(() => undefined);
31
+ this.#id = options.id;
32
+ this.#onSnapshot = options.onSnapshot;
33
+ const externalSignal = options.externalSignal;
34
+ if (externalSignal !== undefined) {
35
+ const abort = () => this.#controller.abort(externalSignal.reason);
36
+ if (externalSignal.aborted)
37
+ abort();
38
+ else {
39
+ externalSignal.addEventListener('abort', abort, { once: true });
40
+ this.#detachExternalSignal = () => externalSignal.removeEventListener('abort', abort);
41
+ }
42
+ }
43
+ const operation = Promise.resolve().then(() => options.run(this.#controller.signal, progress => this.#setProgress(progress)));
44
+ this.#result = operation.then(value => {
45
+ this.#state = 'completed';
46
+ this.#progress = 1;
47
+ this.#notify();
48
+ return value;
49
+ }, (error) => {
50
+ this.#state = isAbort(error, this.#controller.signal) ? 'cancelled' : 'failed';
51
+ this.#notify();
52
+ throw error;
53
+ });
54
+ void this.#result.catch(() => undefined);
55
+ void this.#result.then(() => this.#settled(options), () => this.#settled(options));
56
+ }
57
+ get id() {
58
+ return this.#id;
59
+ }
60
+ get state() {
61
+ return this.#state;
62
+ }
63
+ get result() {
64
+ return this.#result;
65
+ }
66
+ then(onfulfilled, onrejected) {
67
+ return this.#result.then(onfulfilled, onrejected);
68
+ }
69
+ catch(onrejected) {
70
+ return this.#result.catch(onrejected);
71
+ }
72
+ finally(onfinally) {
73
+ return this.#result.finally(onfinally);
74
+ }
75
+ async cancel(reason = new DOMException('Export cancelled', 'AbortError')) {
76
+ if (this.#state !== 'running')
77
+ return;
78
+ this.#controller.abort(reason);
79
+ try {
80
+ await this.#result;
81
+ }
82
+ catch {
83
+ // Cancellation observes cleanup completion; callers consume failures through `result`.
84
+ }
85
+ }
86
+ getSnapshot() {
87
+ return Object.freeze({ id: this.#id, state: this.#state, progress: this.#progress });
88
+ }
89
+ subscribe(listener) {
90
+ this.#listeners.add(listener);
91
+ return () => this.#listeners.delete(listener);
92
+ }
93
+ #setProgress(value) {
94
+ if (this.#state !== 'running')
95
+ return;
96
+ const progress = boundedProgress(value);
97
+ if (progress === this.#progress)
98
+ return;
99
+ this.#progress = progress;
100
+ this.#notify();
101
+ }
102
+ #notify() {
103
+ const snapshot = this.getSnapshot();
104
+ try {
105
+ this.#onSnapshot?.(snapshot);
106
+ }
107
+ catch {
108
+ // Observer failures cannot change the export result.
109
+ }
110
+ for (const listener of this.#listeners) {
111
+ try {
112
+ listener(snapshot);
113
+ }
114
+ catch {
115
+ // Observer failures cannot change the export result or other listeners.
116
+ }
117
+ }
118
+ if (this.#state !== 'running')
119
+ this.#listeners.clear();
120
+ }
121
+ #settled(options) {
122
+ this.#detachExternalSignal?.();
123
+ this.#detachExternalSignal = undefined;
124
+ options.onSettled?.(this);
125
+ }
126
+ }
@@ -0,0 +1,90 @@
1
+ import type { JsonValue } from '@aelionsdk/core';
2
+ export declare const AELION_EXTENSION_PROTOCOL: "aelion.extension/1";
3
+ export interface AelionExtensionManifest {
4
+ readonly id: string;
5
+ readonly version: string;
6
+ readonly methods: readonly string[];
7
+ }
8
+ export type AelionExtensionHostMessage = {
9
+ readonly protocol: typeof AELION_EXTENSION_PROTOCOL;
10
+ readonly type: 'initialize';
11
+ readonly maxPayloadBytes: number;
12
+ } | {
13
+ readonly protocol: typeof AELION_EXTENSION_PROTOCOL;
14
+ readonly type: 'invoke';
15
+ readonly id: number;
16
+ readonly method: string;
17
+ readonly payload: JsonValue;
18
+ } | {
19
+ readonly protocol: typeof AELION_EXTENSION_PROTOCOL;
20
+ readonly type: 'cancel';
21
+ readonly id: number;
22
+ };
23
+ export type AelionExtensionWorkerMessage = {
24
+ readonly protocol: typeof AELION_EXTENSION_PROTOCOL;
25
+ readonly type: 'ready';
26
+ readonly manifest: AelionExtensionManifest;
27
+ } | {
28
+ readonly protocol: typeof AELION_EXTENSION_PROTOCOL;
29
+ readonly type: 'result';
30
+ readonly id: number;
31
+ readonly payload: JsonValue;
32
+ } | {
33
+ readonly protocol: typeof AELION_EXTENSION_PROTOCOL;
34
+ readonly type: 'error';
35
+ readonly id: number;
36
+ readonly name: string;
37
+ readonly message: string;
38
+ };
39
+ export interface AelionExtensionTransport {
40
+ postMessage(message: AelionExtensionHostMessage): void;
41
+ addEventListener(type: 'message', listener: (event: MessageEvent<unknown>) => void): void;
42
+ addEventListener(type: 'error', listener: (event: ErrorEvent) => void): void;
43
+ removeEventListener(type: 'message', listener: (event: MessageEvent<unknown>) => void): void;
44
+ removeEventListener(type: 'error', listener: (event: ErrorEvent) => void): void;
45
+ terminate(): void;
46
+ }
47
+ export interface AelionExtensionHostOptions {
48
+ readonly maxPendingCalls?: number;
49
+ readonly maxPayloadBytes?: number;
50
+ readonly handshakeTimeoutMs?: number;
51
+ readonly invocationTimeoutMs?: number;
52
+ }
53
+ export interface AelionExtensionInvokeOptions {
54
+ readonly signal?: AbortSignal;
55
+ readonly timeoutMs?: number;
56
+ }
57
+ export interface AelionExtensionHostSnapshot {
58
+ readonly ready: boolean;
59
+ readonly disposed: boolean;
60
+ readonly pendingCalls: number;
61
+ readonly nextRequestId: number;
62
+ readonly manifest: AelionExtensionManifest | null;
63
+ }
64
+ /**
65
+ * Fault-isolated RPC host for extension module Workers. The Worker receives
66
+ * cloned JSON only—never Session, media providers, DOM nodes or credentials.
67
+ */
68
+ export declare class AelionExtensionHost {
69
+ #private;
70
+ constructor(transport: AelionExtensionTransport, options?: AelionExtensionHostOptions);
71
+ get ready(): Promise<AelionExtensionManifest>;
72
+ snapshot(): AelionExtensionHostSnapshot;
73
+ invoke(method: string, payload: JsonValue, options?: AelionExtensionInvokeOptions): Promise<JsonValue>;
74
+ dispose(reason?: unknown): void;
75
+ }
76
+ export interface AelionExtensionCallContext {
77
+ readonly signal: AbortSignal;
78
+ }
79
+ export type AelionExtensionHandler = (payload: JsonValue, context: AelionExtensionCallContext) => JsonValue | Promise<JsonValue>;
80
+ export interface AelionExtensionRuntimeEndpoint {
81
+ postMessage(message: AelionExtensionWorkerMessage): void;
82
+ addEventListener(type: 'message', listener: (event: MessageEvent<unknown>) => void): void;
83
+ removeEventListener(type: 'message', listener: (event: MessageEvent<unknown>) => void): void;
84
+ }
85
+ /**
86
+ * Worker-side counterpart. It exposes an explicit method table and supports
87
+ * cooperative cancellation without importing or receiving the editor Session.
88
+ */
89
+ export declare function exposeAelionExtension(endpoint: AelionExtensionRuntimeEndpoint, manifest: AelionExtensionManifest, handlers: Readonly<Record<string, AelionExtensionHandler>>): () => void;
90
+ //# sourceMappingURL=extension-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-host.d.ts","sourceRoot":"","sources":["../src/extension-host.ts"],"names":[],"mappings":"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"}