@aelionsdk/project-schema 1.0.0-rc.1 → 1.1.0-rc.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.
- package/README.md +26 -4
- package/dist/image-sequence.d.ts +13 -0
- package/dist/image-sequence.d.ts.map +1 -0
- package/dist/image-sequence.js +23 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +20 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,7 +1,29 @@
|
|
|
1
|
-
#
|
|
1
|
+
# `@aelionsdk/project-schema`
|
|
2
2
|
|
|
3
|
-
Project v1 types, validation and canonical serialization for
|
|
3
|
+
Project v1 types, bounded admission, validation and canonical serialization for
|
|
4
|
+
AelionSDK.
|
|
4
5
|
|
|
5
|
-
Install
|
|
6
|
+
## Install
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
```bash
|
|
9
|
+
npm install @aelionsdk/project-schema@next
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
`next` currently resolves to `1.1.0-rc.1`. Use this package in importers,
|
|
13
|
+
services and Project tooling that must validate data without creating a browser
|
|
14
|
+
Session.
|
|
15
|
+
|
|
16
|
+
## Public surface
|
|
17
|
+
|
|
18
|
+
- Project v1 TypeScript types;
|
|
19
|
+
- bounded plain-JSON admission;
|
|
20
|
+
- `ProjectValidator` and stable diagnostics;
|
|
21
|
+
- canonical clone and serialization helpers.
|
|
22
|
+
|
|
23
|
+
Treat every file or network Project as untrusted input. Run admission before
|
|
24
|
+
schema and semantic validation; never invoke accessors or iterators on
|
|
25
|
+
untrusted values.
|
|
26
|
+
|
|
27
|
+
See the [Project Schema reference](https://foyonaczy.github.io/AelionSDK/reference/project-schema/)
|
|
28
|
+
and [API reference](https://foyonaczy.github.io/AelionSDK/api/aelionsdk/project-schema/overview/).
|
|
29
|
+
Licensed under MIT.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ImageSequenceReference } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Map an item time to the image-sequence frame whose interval contains it.
|
|
4
|
+
*
|
|
5
|
+
* Frames are uniform-duration and contiguous starting at zero. The mapping is
|
|
6
|
+
* deterministic and integer-based so preview and export agree on every frame
|
|
7
|
+
* boundary. Returns `undefined` when `itemTimeUs` is negative or at/after the
|
|
8
|
+
* last frame boundary, which callers must treat as fail-closed.
|
|
9
|
+
*/
|
|
10
|
+
export declare function imageSequenceFrameIndex(sequence: ImageSequenceReference, itemTimeUs: number): number | undefined;
|
|
11
|
+
/** Total duration of the sequence in microseconds. */
|
|
12
|
+
export declare function imageSequenceDurationUs(sequence: ImageSequenceReference): number;
|
|
13
|
+
//# sourceMappingURL=image-sequence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-sequence.d.ts","sourceRoot":"","sources":["../src/image-sequence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,sBAAsB,EAChC,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CAOpB;AAED,sDAAsD;AACtD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,CAEhF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Map an item time to the image-sequence frame whose interval contains it.
|
|
3
|
+
*
|
|
4
|
+
* Frames are uniform-duration and contiguous starting at zero. The mapping is
|
|
5
|
+
* deterministic and integer-based so preview and export agree on every frame
|
|
6
|
+
* boundary. Returns `undefined` when `itemTimeUs` is negative or at/after the
|
|
7
|
+
* last frame boundary, which callers must treat as fail-closed.
|
|
8
|
+
*/
|
|
9
|
+
export function imageSequenceFrameIndex(sequence, itemTimeUs) {
|
|
10
|
+
if (!Number.isSafeInteger(itemTimeUs) || itemTimeUs < 0)
|
|
11
|
+
return undefined;
|
|
12
|
+
const frameDurationUs = sequence.frameDurationUs;
|
|
13
|
+
if (!Number.isSafeInteger(frameDurationUs) || frameDurationUs <= 0)
|
|
14
|
+
return undefined;
|
|
15
|
+
const index = Math.floor(itemTimeUs / frameDurationUs);
|
|
16
|
+
if (index < 0 || index >= sequence.frameAssetIds.length)
|
|
17
|
+
return undefined;
|
|
18
|
+
return index;
|
|
19
|
+
}
|
|
20
|
+
/** Total duration of the sequence in microseconds. */
|
|
21
|
+
export function imageSequenceDurationUs(sequence) {
|
|
22
|
+
return sequence.frameDurationUs * sequence.frameAssetIds.length;
|
|
23
|
+
}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/types.d.ts
CHANGED
|
@@ -14,6 +14,18 @@ export interface ProjectSettings extends JsonObject {
|
|
|
14
14
|
locale?: string;
|
|
15
15
|
timezone?: string;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Frame manifest of an `image-sequence` asset. Frames are uniform-duration
|
|
19
|
+
* stills; each `frameAssetIds` entry references an `image` Asset in the same
|
|
20
|
+
* Project. Sampling a sequence at an item time maps to the frame whose
|
|
21
|
+
* interval contains that time (see {@link imageSequenceFrameIndex}).
|
|
22
|
+
*/
|
|
23
|
+
export interface ImageSequenceReference extends JsonObject {
|
|
24
|
+
/** Duration of every frame in microseconds. */
|
|
25
|
+
readonly frameDurationUs: number;
|
|
26
|
+
/** Ordered image Asset ids, one per frame, referencing `image` kind Assets. */
|
|
27
|
+
readonly frameAssetIds: EntityId[];
|
|
28
|
+
}
|
|
17
29
|
export interface ProjectEntity extends JsonObject {
|
|
18
30
|
id: EntityId;
|
|
19
31
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,UAAU,EAAa,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGjF,OAAO,EAAoB,KAAK,aAAa,EAAuB,MAAM,YAAY,CAAC;AAmCvF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;IACnC,QAAQ,CAAC,sBAAsB,EAAE,UAAU,CAAC;CAC7C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,UAAU,EAAa,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGjF,OAAO,EAAoB,KAAK,aAAa,EAAuB,MAAM,YAAY,CAAC;AAmCvF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;IACnC,QAAQ,CAAC,sBAAsB,EAAE,UAAU,CAAC;CAC7C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC;AAkwBD,qBAAa,gBAAgB;;gBAGR,OAAO,EAAE,uBAAuB;IAY5C,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,wBAAwB,CAAC;CAgDlE"}
|
package/dist/validate.js
CHANGED
|
@@ -372,6 +372,25 @@ function validateColorSemantics(project, diagnostics) {
|
|
|
372
372
|
}
|
|
373
373
|
}
|
|
374
374
|
}
|
|
375
|
+
function validateImageSequenceReferences(project, diagnostics) {
|
|
376
|
+
for (const asset of Object.values(project.assets)) {
|
|
377
|
+
if (asset.kind !== 'image-sequence')
|
|
378
|
+
continue;
|
|
379
|
+
const sequence = asset.imageSequence;
|
|
380
|
+
const frameAssetIds = sequence?.frameAssetIds;
|
|
381
|
+
if (frameAssetIds === undefined)
|
|
382
|
+
continue;
|
|
383
|
+
frameAssetIds.forEach((frameAssetId, index) => {
|
|
384
|
+
const frameAsset = project.assets[frameAssetId];
|
|
385
|
+
if (frameAsset === undefined) {
|
|
386
|
+
diagnostics.push(semanticDiagnostic('PROJECT_IMAGE_SEQUENCE_FRAME_MISSING', `Image sequence ${asset.id} references missing frame Asset ${frameAssetId}`, ['assets', asset.id, 'imageSequence', 'frameAssetIds', index], asset.id));
|
|
387
|
+
}
|
|
388
|
+
else if (frameAsset.kind !== 'image') {
|
|
389
|
+
diagnostics.push(semanticDiagnostic('PROJECT_IMAGE_SEQUENCE_FRAME_KIND_INVALID', `Frame Asset ${frameAssetId} of image sequence ${asset.id} must be an image Asset`, ['assets', asset.id, 'imageSequence', 'frameAssetIds', index], asset.id));
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
}
|
|
375
394
|
export class ProjectValidator {
|
|
376
395
|
#schemaValidator;
|
|
377
396
|
constructor(options) {
|
|
@@ -423,6 +442,7 @@ export class ProjectValidator {
|
|
|
423
442
|
validateTimeMappingSemantics(project, diagnostics);
|
|
424
443
|
validateAudioSemantics(project, diagnostics);
|
|
425
444
|
validateColorSemantics(project, diagnostics);
|
|
445
|
+
validateImageSequenceReferences(project, diagnostics);
|
|
426
446
|
return diagnostics.diagnostics.length === 0 ? ok({ project }) : err(...diagnostics.diagnostics);
|
|
427
447
|
}
|
|
428
448
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aelionsdk/project-schema",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0-rc.1",
|
|
4
4
|
"description": "Project v1 types, validation and canonical serialization for AelionSDK",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
"!dist/.tsbuildinfo"
|
|
28
28
|
],
|
|
29
29
|
"engines": {
|
|
30
|
-
"node": ">=
|
|
30
|
+
"node": ">=24 <25"
|
|
31
31
|
},
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public",
|
|
34
34
|
"provenance": true
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@aelionsdk/core": "1.
|
|
37
|
+
"@aelionsdk/core": "1.1.0-rc.1",
|
|
38
38
|
"ajv": "8.18.0",
|
|
39
39
|
"ajv-formats": "3.0.1"
|
|
40
40
|
},
|