@skenion/contracts 0.34.0

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 (54) hide show
  1. package/README.md +7 -0
  2. package/dist/audioClock.d.ts +3 -0
  3. package/dist/audioClock.d.ts.map +1 -0
  4. package/dist/audioClock.js +41 -0
  5. package/dist/audioClock.js.map +1 -0
  6. package/dist/builtins.generated.d.ts +2689 -0
  7. package/dist/builtins.generated.d.ts.map +1 -0
  8. package/dist/builtins.generated.js +6031 -0
  9. package/dist/builtins.generated.js.map +1 -0
  10. package/dist/clock.d.ts +39 -0
  11. package/dist/clock.d.ts.map +1 -0
  12. package/dist/clock.js +157 -0
  13. package/dist/clock.js.map +1 -0
  14. package/dist/conversion.d.ts +158 -0
  15. package/dist/conversion.d.ts.map +1 -0
  16. package/dist/conversion.js +199 -0
  17. package/dist/conversion.js.map +1 -0
  18. package/dist/generated/schemas.d.ts +2189 -0
  19. package/dist/generated/schemas.d.ts.map +1 -0
  20. package/dist/generated/schemas.js +2839 -0
  21. package/dist/generated/schemas.js.map +1 -0
  22. package/dist/index.d.ts +15 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +12 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/objectText.d.ts +3 -0
  27. package/dist/objectText.d.ts.map +1 -0
  28. package/dist/objectText.js +292 -0
  29. package/dist/objectText.js.map +1 -0
  30. package/dist/patch.d.ts +7 -0
  31. package/dist/patch.d.ts.map +1 -0
  32. package/dist/patch.js +296 -0
  33. package/dist/patch.js.map +1 -0
  34. package/dist/project.d.ts +3 -0
  35. package/dist/project.d.ts.map +1 -0
  36. package/dist/project.js +22 -0
  37. package/dist/project.js.map +1 -0
  38. package/dist/runtimeHttp.d.ts +23 -0
  39. package/dist/runtimeHttp.d.ts.map +1 -0
  40. package/dist/runtimeHttp.js +474 -0
  41. package/dist/runtimeHttp.js.map +1 -0
  42. package/dist/shaderInterface.d.ts +6 -0
  43. package/dist/shaderInterface.d.ts.map +1 -0
  44. package/dist/shaderInterface.js +262 -0
  45. package/dist/shaderInterface.js.map +1 -0
  46. package/dist/types.d.ts +1122 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +2 -0
  49. package/dist/types.js.map +1 -0
  50. package/dist/validate.d.ts +16 -0
  51. package/dist/validate.d.ts.map +1 -0
  52. package/dist/validate.js +485 -0
  53. package/dist/validate.js.map +1 -0
  54. package/package.json +104 -0
@@ -0,0 +1,199 @@
1
+ export const representationRegistryV01 = [
2
+ { id: "f64", semanticDataKind: "number.float", bitsPerComponent: 64, signed: true },
3
+ { id: "f32", semanticDataKind: "number.float", bitsPerComponent: 32, signed: true },
4
+ { id: "f16", semanticDataKind: "number.float", bitsPerComponent: 16, signed: true },
5
+ { id: "f8.e4m3", semanticDataKind: "number.float", bitsPerComponent: 8, signed: true },
6
+ { id: "f8.e5m2", semanticDataKind: "number.float", bitsPerComponent: 8, signed: true },
7
+ { id: "ufloat16", semanticDataKind: "number.float", bitsPerComponent: 16, signed: false },
8
+ { id: "ufloat8", semanticDataKind: "number.float", bitsPerComponent: 8, signed: false },
9
+ { id: "i64", semanticDataKind: "number.int", bitsPerComponent: 64, signed: true, integer: true },
10
+ { id: "i32", semanticDataKind: "number.int", bitsPerComponent: 32, signed: true, integer: true },
11
+ { id: "i16", semanticDataKind: "number.int", bitsPerComponent: 16, signed: true, integer: true },
12
+ { id: "i8", semanticDataKind: "number.int", bitsPerComponent: 8, signed: true, integer: true },
13
+ { id: "u64", semanticDataKind: "number.uint", bitsPerComponent: 64, signed: false, integer: true },
14
+ { id: "u32", semanticDataKind: "number.uint", bitsPerComponent: 32, signed: false, integer: true },
15
+ { id: "u16", semanticDataKind: "number.uint", bitsPerComponent: 16, signed: false, integer: true },
16
+ { id: "u8", semanticDataKind: "number.uint", bitsPerComponent: 8, signed: false, integer: true },
17
+ { id: "rgba32f", semanticDataKind: "color", bitsPerComponent: 32, signed: false, channels: 4 },
18
+ { id: "rgba16f", semanticDataKind: "color", bitsPerComponent: 16, signed: false, channels: 4 },
19
+ { id: "rgba8unorm", semanticDataKind: "color", bitsPerComponent: 8, signed: false, normalized: true, channels: 4 },
20
+ { id: "rgb8unorm", semanticDataKind: "color", bitsPerComponent: 8, signed: false, normalized: true, channels: 3 }
21
+ ];
22
+ const representationById = new Map(representationRegistryV01.map((representation) => [representation.id, representation]));
23
+ const defaultRepresentationByDataKind = new Map([
24
+ ["number.float", "f32"],
25
+ ["number.int", "i32"],
26
+ ["number.uint", "u32"],
27
+ ["color", "rgba32f"]
28
+ ]);
29
+ const numericKinds = new Set(["number.float", "number.int", "number.uint"]);
30
+ const controlMessageDataKinds = new Set([
31
+ "boolean",
32
+ "color",
33
+ "event.bang",
34
+ "message.any",
35
+ "number.float",
36
+ "number.int",
37
+ "number.uint",
38
+ "string"
39
+ ]);
40
+ export function representationForDataType(type) {
41
+ const format = Array.isArray(type.format) ? type.format[0] : type.format;
42
+ return format ?? defaultRepresentationByDataKind.get(type.dataKind);
43
+ }
44
+ export function typeDescriptorForDataType(type) {
45
+ return {
46
+ dataKind: type.dataKind,
47
+ representation: representationForDataType(type)
48
+ };
49
+ }
50
+ export function planConversion(sourceType, targetType) {
51
+ const source = typeDescriptorForDataType(sourceType);
52
+ const target = typeDescriptorForDataType(targetType);
53
+ const base = {
54
+ source,
55
+ target,
56
+ implicit: true
57
+ };
58
+ if (targetType.dataKind === "message.any" && isMessageAnyCompatible(sourceType, targetType)) {
59
+ return {
60
+ ...base,
61
+ ok: true,
62
+ lossy: false,
63
+ steps: [{ policy: "identity" }],
64
+ diagnostics: []
65
+ };
66
+ }
67
+ if (sourceType.flow !== targetType.flow) {
68
+ return failedPlan(base, `flow ${sourceType.flow} is not compatible with ${targetType.flow}`);
69
+ }
70
+ if (source.dataKind === target.dataKind && source.representation === target.representation) {
71
+ return {
72
+ ...base,
73
+ ok: true,
74
+ lossy: false,
75
+ steps: [{ policy: "identity" }],
76
+ diagnostics: []
77
+ };
78
+ }
79
+ if (numericKinds.has(String(source.dataKind)) && numericKinds.has(String(target.dataKind))) {
80
+ return numericConversionPlan(base);
81
+ }
82
+ if (source.dataKind === "color" && target.dataKind === "color") {
83
+ const sourceRepresentation = representationById.get(String(source.representation));
84
+ const targetRepresentation = representationById.get(String(target.representation));
85
+ if (!sourceRepresentation || sourceRepresentation.semanticDataKind !== "color") {
86
+ return failedPlan(base, `unknown or mismatched source representation ${source.representation} for color`);
87
+ }
88
+ if (!targetRepresentation || targetRepresentation.semanticDataKind !== "color") {
89
+ return failedPlan(base, `unknown or mismatched target representation ${target.representation} for color`);
90
+ }
91
+ return {
92
+ ...base,
93
+ ok: true,
94
+ lossy: source.representation !== target.representation,
95
+ steps: [{
96
+ policy: "color-cast",
97
+ clamp: "unit",
98
+ quantize: true,
99
+ sanitize: "nan-inf-to-finite"
100
+ }],
101
+ diagnostics: [lossyDiagnostic(source, target)]
102
+ };
103
+ }
104
+ return failedPlan(base, `${source.dataKind} is not compatible with ${target.dataKind}`);
105
+ }
106
+ function isMessageAnyCompatible(sourceType, targetType) {
107
+ if (targetType.flow === "event") {
108
+ return (sourceType.flow === "event" ||
109
+ (sourceType.flow === "value" && controlMessageDataKinds.has(sourceType.dataKind)));
110
+ }
111
+ if (targetType.flow === "value") {
112
+ return sourceType.flow === "value" && controlMessageDataKinds.has(sourceType.dataKind);
113
+ }
114
+ return false;
115
+ }
116
+ function numericConversionPlan(base) {
117
+ const sourceKind = base.source.dataKind;
118
+ const targetKind = base.target.dataKind;
119
+ const sourceRepresentation = representationById.get(String(base.source.representation));
120
+ const targetRepresentation = representationById.get(String(base.target.representation));
121
+ if (!sourceRepresentation || sourceRepresentation.semanticDataKind !== sourceKind) {
122
+ return failedPlan(base, `unknown or mismatched source representation ${base.source.representation} for ${sourceKind}`);
123
+ }
124
+ if (!targetRepresentation || targetRepresentation.semanticDataKind !== targetKind) {
125
+ return failedPlan(base, `unknown or mismatched target representation ${base.target.representation} for ${targetKind}`);
126
+ }
127
+ const narrowing = Boolean(sourceRepresentation.bitsPerComponent > targetRepresentation.bitsPerComponent);
128
+ const lossy = narrowing || sourceKind !== targetKind || base.source.representation !== base.target.representation;
129
+ if (sourceKind === "number.float" && (targetKind === "number.int" || targetKind === "number.uint")) {
130
+ return {
131
+ ...base,
132
+ ok: true,
133
+ lossy: true,
134
+ steps: [{
135
+ policy: "float-to-integer",
136
+ clamp: "saturating",
137
+ trunc: "toward-zero",
138
+ sanitize: "nan-inf-to-finite"
139
+ }],
140
+ diagnostics: [lossyDiagnostic(base.source, base.target)]
141
+ };
142
+ }
143
+ if ((sourceKind === "number.int" || sourceKind === "number.uint") && targetKind === "number.float") {
144
+ return {
145
+ ...base,
146
+ ok: true,
147
+ lossy,
148
+ steps: [{
149
+ policy: "integer-to-float",
150
+ clamp: "saturating",
151
+ quantize: true,
152
+ sanitize: "nan-inf-to-finite"
153
+ }],
154
+ diagnostics: [lossyDiagnostic(base.source, base.target)]
155
+ };
156
+ }
157
+ if ((sourceKind === "number.int" && targetKind === "number.uint") ||
158
+ (sourceKind === "number.uint" && targetKind === "number.int")) {
159
+ return {
160
+ ...base,
161
+ ok: true,
162
+ lossy: true,
163
+ steps: [{ policy: "integer-signedness", clamp: "saturating" }],
164
+ diagnostics: [lossyDiagnostic(base.source, base.target)]
165
+ };
166
+ }
167
+ return {
168
+ ...base,
169
+ ok: true,
170
+ lossy,
171
+ steps: [{
172
+ policy: "numeric-cast",
173
+ clamp: "saturating",
174
+ quantize: true,
175
+ sanitize: "nan-inf-to-finite"
176
+ }],
177
+ diagnostics: [lossyDiagnostic(base.source, base.target)]
178
+ };
179
+ }
180
+ function failedPlan(base, message) {
181
+ return {
182
+ ...base,
183
+ ok: false,
184
+ lossy: false,
185
+ steps: [],
186
+ diagnostics: [{ severity: "error", code: "incompatible-types", message }]
187
+ };
188
+ }
189
+ function lossyDiagnostic(source, target) {
190
+ return {
191
+ severity: "warning",
192
+ code: "implicit-lossy-conversion",
193
+ message: `${typeDescriptorLabel(source)} converts to ${typeDescriptorLabel(target)} with saturating conversion policy`
194
+ };
195
+ }
196
+ function typeDescriptorLabel(type) {
197
+ return `${type.dataKind}/${type.representation}`;
198
+ }
199
+ //# sourceMappingURL=conversion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"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"}