@altopelago/aeon-aes 0.11.0 → 0.12.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 -2
- package/dist/candidate.d.ts +26 -0
- package/dist/candidate.d.ts.map +1 -0
- package/dist/candidate.js +2 -0
- package/dist/candidate.js.map +1 -0
- package/dist/datatype.d.ts.map +1 -1
- package/dist/datatype.js +6 -6
- package/dist/datatype.js.map +1 -1
- package/dist/events.d.ts +7 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +4 -0
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/modes.d.ts +0 -6
- package/dist/modes.d.ts.map +1 -1
- package/dist/modes.js +35 -138
- package/dist/modes.js.map +1 -1
- package/dist/paths.d.ts +1 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +34 -29
- package/dist/paths.js.map +1 -1
- package/dist/portable.d.ts +98 -0
- package/dist/portable.d.ts.map +1 -0
- package/dist/portable.js +524 -0
- package/dist/portable.js.map +1 -0
- package/dist/references.d.ts.map +1 -1
- package/dist/references.js +9 -4
- package/dist/references.js.map +1 -1
- package/dist/resolve.d.ts.map +1 -1
- package/dist/resolve.js +52 -2
- package/dist/resolve.js.map +1 -1
- package/dist/sha256.d.ts +3 -0
- package/dist/sha256.d.ts.map +1 -0
- package/dist/sha256.js +82 -0
- package/dist/sha256.js.map +1 -0
- package/dist/telex-datatype-internal.d.ts +12 -0
- package/dist/telex-datatype-internal.d.ts.map +1 -0
- package/dist/telex-datatype-internal.js +323 -0
- package/dist/telex-datatype-internal.js.map +1 -0
- package/dist/telex-internal.d.ts +60 -0
- package/dist/telex-internal.d.ts.map +1 -0
- package/dist/telex-internal.js +1101 -0
- package/dist/telex-internal.js.map +1 -0
- package/dist/telex-limits-internal.d.ts +35 -0
- package/dist/telex-limits-internal.d.ts.map +1 -0
- package/dist/telex-limits-internal.js +70 -0
- package/dist/telex-limits-internal.js.map +1 -0
- package/dist/telex.d.ts +128 -0
- package/dist/telex.d.ts.map +1 -0
- package/dist/telex.js +46 -0
- package/dist/telex.js.map +1 -0
- package/package.json +3 -3
package/dist/portable.js
ADDED
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
import { formatDatatypeAnnotation } from './datatype.js';
|
|
2
|
+
import { formatPath } from './paths.js';
|
|
3
|
+
import { sha256Hex } from './sha256.js';
|
|
4
|
+
import { parseDatatypeDescriptor, } from './telex.js';
|
|
5
|
+
export const TYPESCRIPT_ASSIGNMENT_EVENTS_CONTRACT_V0 = 'aeon.typescript.assignment-events.v0';
|
|
6
|
+
export const TYPESCRIPT_PORTABLE_AES_ADAPTER_V0 = 'aeon.typescript.assignment-events.v0-to-aes.events.v1';
|
|
7
|
+
export const TYPESCRIPT_PORTABLE_AES_ADAPTER_VERSION_V1 = '1.0.0';
|
|
8
|
+
export class PortableAesSourceError extends Error {
|
|
9
|
+
code;
|
|
10
|
+
constructor(code, message) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = 'PortableAesSourceError';
|
|
13
|
+
this.code = code;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Named, report-bearing compatibility adapter for the serialized TypeScript
|
|
18
|
+
* assignment-event contract. Existing projection helpers remain unchanged for
|
|
19
|
+
* same-process callers. Native spans are UTF-16 string indexes. They are
|
|
20
|
+
* omitted unless exact sourceBytes are supplied, in which case this boundary
|
|
21
|
+
* derives the source digest and converts scalar-aligned positions to UTF-8
|
|
22
|
+
* byte offsets.
|
|
23
|
+
*/
|
|
24
|
+
export function adaptTypeScriptAssignmentEventsToPortableAes(events, options = {}) {
|
|
25
|
+
const includeHeaders = options.includeHeaders === true;
|
|
26
|
+
const headerFieldNames = options.headerFieldNames === undefined
|
|
27
|
+
? undefined
|
|
28
|
+
: new Set(options.headerFieldNames);
|
|
29
|
+
const isHeader = (event) => isLegacyHeaderEvent(event, headerFieldNames);
|
|
30
|
+
const body = events.filter((event) => !isHeader(event));
|
|
31
|
+
const headers = includeHeaders ? events.filter(isHeader) : [];
|
|
32
|
+
const provenance = options.sourceBytes === undefined ? null : createPortableSourceContext(options.sourceBytes);
|
|
33
|
+
const bodyEvents = projectPortableEventsWithLocalSpans(body)
|
|
34
|
+
.map((event) => applyPortableProvenance(event, provenance));
|
|
35
|
+
const headerEvents = projectPortableEventsWithLocalSpans(headers).map((local) => {
|
|
36
|
+
const event = applyPortableProvenance(local, provenance);
|
|
37
|
+
const { path, span: _span, ...rest } = event;
|
|
38
|
+
if (path === undefined) {
|
|
39
|
+
throw new PortableAesSourceError('AES_COMPAT_HEADER_PATH_MISSING', 'A projected legacy header event must retain its source path.');
|
|
40
|
+
}
|
|
41
|
+
return { header: path, ...rest, ...(event.span !== undefined ? { span: event.span } : {}) };
|
|
42
|
+
});
|
|
43
|
+
const projected = [...headerEvents, ...bodyEvents];
|
|
44
|
+
const changes = compatibilityChanges(events, body, projected, includeHeaders, provenance !== null, headerFieldNames);
|
|
45
|
+
const provenanceLossless = events.length === 0 || (provenance !== null
|
|
46
|
+
&& projected.length > 0
|
|
47
|
+
&& projected.every((event) => event.origin !== undefined && event.span !== undefined));
|
|
48
|
+
return {
|
|
49
|
+
events: projected,
|
|
50
|
+
report: {
|
|
51
|
+
sourceContract: TYPESCRIPT_ASSIGNMENT_EVENTS_CONTRACT_V0,
|
|
52
|
+
targetContract: 'aes.events.v1',
|
|
53
|
+
adapter: TYPESCRIPT_PORTABLE_AES_ADAPTER_V0,
|
|
54
|
+
adapterVersion: TYPESCRIPT_PORTABLE_AES_ADAPTER_VERSION_V1,
|
|
55
|
+
profile: 'aes.complete.v1',
|
|
56
|
+
projection: includeHeaders ? 'aeon.document.v1' : null,
|
|
57
|
+
semanticLossless: true,
|
|
58
|
+
recordLossless: events.length === 0,
|
|
59
|
+
provenanceLossless,
|
|
60
|
+
semanticLossAuthorized: false,
|
|
61
|
+
changes,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Project legacy TypeScript AssignmentEvents into the portable flat shape.
|
|
67
|
+
*
|
|
68
|
+
* Every NodeLiteral becomes a value-less `NodeLiteral` event followed by one
|
|
69
|
+
* synthetic `NodeHead` event. Source child paths gain the NodeHead index,
|
|
70
|
+
* recursively, while ordinary member/list/tuple paths remain unchanged.
|
|
71
|
+
* Binding, anonymous-head, and node-head attributes are emitted as ordinary
|
|
72
|
+
* events beneath their owning path's `.@` address space. The default portable
|
|
73
|
+
* projection is body-only; use the named compatibility adapter with
|
|
74
|
+
* `includeHeaders: true` to select the explicit document projection.
|
|
75
|
+
*/
|
|
76
|
+
export function projectPortableEvents(events, options = {}) {
|
|
77
|
+
const headerFieldNames = options.headerFieldNames === undefined
|
|
78
|
+
? undefined
|
|
79
|
+
: new Set(options.headerFieldNames);
|
|
80
|
+
return projectPortableEventsWithLocalSpans(events.filter((event) => !isLegacyHeaderEvent(event, headerFieldNames)))
|
|
81
|
+
.map((projected) => projected.event);
|
|
82
|
+
}
|
|
83
|
+
function projectPortableEventsWithLocalSpans(events) {
|
|
84
|
+
const nodeSourcePaths = new Set(events
|
|
85
|
+
.filter((event) => unwrapTypedValue(event.value).type === 'NodeLiteral')
|
|
86
|
+
.map((event) => formatPath(event.path)));
|
|
87
|
+
const projected = [];
|
|
88
|
+
for (const event of events) {
|
|
89
|
+
const translatedPath = translateNodePath(event.path, nodeSourcePaths);
|
|
90
|
+
const translatedPathText = formatPath(translatedPath);
|
|
91
|
+
const value = unwrapTypedValue(event.value);
|
|
92
|
+
pushProjected(projected, projectEvent(event, translatedPath, value, nodeSourcePaths), event.span);
|
|
93
|
+
projectMappedAttributes(event.annotations, translatedPathText, projected, nodeSourcePaths);
|
|
94
|
+
if (value.type === 'NodeLiteral') {
|
|
95
|
+
const headPath = `${translatedPathText}[0]`;
|
|
96
|
+
pushProjected(projected, {
|
|
97
|
+
path: headPath,
|
|
98
|
+
kind: 'NodeHead',
|
|
99
|
+
...(value.structuralId !== null ? { identity: value.structuralId } : {}),
|
|
100
|
+
...projectDatatype(value.datatype === null ? undefined : formatDatatypeAnnotation(value.datatype)),
|
|
101
|
+
value: value.tag,
|
|
102
|
+
}, value.headSpan);
|
|
103
|
+
projectParserAttributes(value.attributes, headPath, projected, nodeSourcePaths);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return projected;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Map native AssignmentEvent paths to their portable AES occurrence paths.
|
|
110
|
+
*
|
|
111
|
+
* The map is structure-aware: every indexed source segment beneath a node
|
|
112
|
+
* gains the synthetic NodeHead index. Synthetic NodeHead paths themselves do
|
|
113
|
+
* not have a native AssignmentEvent counterpart and are therefore absent.
|
|
114
|
+
*/
|
|
115
|
+
export function createPortableEventPathMap(events) {
|
|
116
|
+
const nodeSourcePaths = new Set(events
|
|
117
|
+
.filter((event) => unwrapTypedValue(event.value).type === 'NodeLiteral')
|
|
118
|
+
.map((event) => formatPath(event.path)));
|
|
119
|
+
return new Map(events.map((event) => [
|
|
120
|
+
formatPath(event.path),
|
|
121
|
+
formatPath(translateNodePath(event.path, nodeSourcePaths)),
|
|
122
|
+
]));
|
|
123
|
+
}
|
|
124
|
+
/** Compatibility name retained while downstream callers adopt the complete projection name. */
|
|
125
|
+
export const projectPortableNodeEvents = projectPortableEvents;
|
|
126
|
+
function projectMappedAttributes(attributes, ownerPath, projected, nodeSourcePaths) {
|
|
127
|
+
if (!attributes)
|
|
128
|
+
return;
|
|
129
|
+
for (const [key, entry] of attributes) {
|
|
130
|
+
projectValueTree(appendAttribute(ownerPath, key), entry.value, {
|
|
131
|
+
...(entry.structuralId != null ? { identity: entry.structuralId } : {}),
|
|
132
|
+
...(entry.datatype !== undefined ? { datatype: entry.datatype } : {}),
|
|
133
|
+
...(entry.annotations !== undefined ? { mappedAttributes: entry.annotations } : {}),
|
|
134
|
+
...(entry.span !== undefined ? { sourceSpan: entry.span } : {}),
|
|
135
|
+
}, projected, nodeSourcePaths);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function projectParserAttributes(attributes, ownerPath, projected, nodeSourcePaths) {
|
|
139
|
+
for (const attribute of attributes) {
|
|
140
|
+
for (const [key, entry] of attribute.entries) {
|
|
141
|
+
projectValueTree(appendAttribute(ownerPath, key), entry.value, {
|
|
142
|
+
...(entry.structuralId !== null ? { identity: entry.structuralId } : {}),
|
|
143
|
+
...(entry.datatype !== null ? { datatype: formatDatatypeAnnotation(entry.datatype) } : {}),
|
|
144
|
+
parserAttributes: entry.attributes,
|
|
145
|
+
...(entry.span !== undefined ? { sourceSpan: entry.span } : {}),
|
|
146
|
+
}, projected, nodeSourcePaths);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function projectValueTree(path, rawValue, metadata, projected, nodeSourcePaths) {
|
|
151
|
+
const value = unwrapTypedValue(rawValue);
|
|
152
|
+
const portableValue = projectValue(value, nodeSourcePaths);
|
|
153
|
+
pushProjected(projected, {
|
|
154
|
+
path,
|
|
155
|
+
kind: portableValue.kind,
|
|
156
|
+
...(metadata.identity !== undefined ? { identity: metadata.identity } : {}),
|
|
157
|
+
...projectDatatype(metadata.datatype),
|
|
158
|
+
...(portableValue.value !== undefined ? { value: portableValue.value } : {}),
|
|
159
|
+
}, metadata.sourceSpan ?? rawValue.span);
|
|
160
|
+
projectMappedAttributes(metadata.mappedAttributes, path, projected, nodeSourcePaths);
|
|
161
|
+
projectParserAttributes(metadata.parserAttributes ?? [], path, projected, nodeSourcePaths);
|
|
162
|
+
switch (value.type) {
|
|
163
|
+
case 'ObjectNode':
|
|
164
|
+
for (const binding of value.bindings) {
|
|
165
|
+
projectBindingTree(appendMember(path, binding.key), binding, projected, nodeSourcePaths);
|
|
166
|
+
}
|
|
167
|
+
return;
|
|
168
|
+
case 'ListNode':
|
|
169
|
+
case 'TupleLiteral':
|
|
170
|
+
for (let index = 0; index < value.elements.length; index += 1) {
|
|
171
|
+
projectAnonymousTree(`${path}[${index}]`, value.elements[index], projected, nodeSourcePaths);
|
|
172
|
+
}
|
|
173
|
+
return;
|
|
174
|
+
case 'NodeLiteral': {
|
|
175
|
+
const headPath = `${path}[0]`;
|
|
176
|
+
pushProjected(projected, {
|
|
177
|
+
path: headPath,
|
|
178
|
+
kind: 'NodeHead',
|
|
179
|
+
...(value.structuralId !== null ? { identity: value.structuralId } : {}),
|
|
180
|
+
...projectDatatype(value.datatype === null ? undefined : formatDatatypeAnnotation(value.datatype)),
|
|
181
|
+
value: value.tag,
|
|
182
|
+
}, value.headSpan);
|
|
183
|
+
projectParserAttributes(value.attributes, headPath, projected, nodeSourcePaths);
|
|
184
|
+
for (let index = 0; index < value.children.length; index += 1) {
|
|
185
|
+
projectAnonymousTree(`${headPath}[${index}]`, value.children[index], projected, nodeSourcePaths);
|
|
186
|
+
}
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
default:
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function projectBindingTree(path, binding, projected, nodeSourcePaths) {
|
|
194
|
+
projectValueTree(path, binding.value, {
|
|
195
|
+
...(binding.structuralId !== null ? { identity: binding.structuralId } : {}),
|
|
196
|
+
...(binding.datatype !== null ? { datatype: formatDatatypeAnnotation(binding.datatype) } : {}),
|
|
197
|
+
parserAttributes: binding.attributes,
|
|
198
|
+
sourceSpan: binding.span,
|
|
199
|
+
}, projected, nodeSourcePaths);
|
|
200
|
+
}
|
|
201
|
+
function projectAnonymousTree(path, rawValue, projected, nodeSourcePaths) {
|
|
202
|
+
if (rawValue.type !== 'TypedValue') {
|
|
203
|
+
projectValueTree(path, rawValue, { sourceSpan: rawValue.span }, projected, nodeSourcePaths);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
projectValueTree(path, rawValue.value, {
|
|
207
|
+
...(rawValue.structuralId !== null ? { identity: rawValue.structuralId } : {}),
|
|
208
|
+
...(rawValue.datatype !== null ? { datatype: formatDatatypeAnnotation(rawValue.datatype) } : {}),
|
|
209
|
+
parserAttributes: rawValue.attributes,
|
|
210
|
+
sourceSpan: rawValue.span,
|
|
211
|
+
}, projected, nodeSourcePaths);
|
|
212
|
+
}
|
|
213
|
+
function appendMember(ownerPath, key) {
|
|
214
|
+
return `${ownerPath}${formatPath({ segments: [{ type: 'root' }, { type: 'member', key }] }).slice(1)}`;
|
|
215
|
+
}
|
|
216
|
+
function appendAttribute(ownerPath, key) {
|
|
217
|
+
return `${ownerPath}.@${formatPath({ segments: [{ type: 'root' }, { type: 'member', key }] }).slice(1)}`;
|
|
218
|
+
}
|
|
219
|
+
function translateNodePath(path, nodeSourcePaths) {
|
|
220
|
+
const sourceSegments = [];
|
|
221
|
+
const targetSegments = [];
|
|
222
|
+
for (const segment of path.segments) {
|
|
223
|
+
if (segment.type === 'index'
|
|
224
|
+
&& sourceSegments.length > 0
|
|
225
|
+
&& nodeSourcePaths.has(formatPath({ segments: sourceSegments }))) {
|
|
226
|
+
targetSegments.push({ type: 'index', index: 0 });
|
|
227
|
+
}
|
|
228
|
+
sourceSegments.push(segment);
|
|
229
|
+
targetSegments.push(segment);
|
|
230
|
+
}
|
|
231
|
+
return { segments: targetSegments };
|
|
232
|
+
}
|
|
233
|
+
function projectEvent(event, path, value, nodeSourcePaths) {
|
|
234
|
+
const projectedValue = projectValue(value, nodeSourcePaths);
|
|
235
|
+
return {
|
|
236
|
+
path: formatPath(path),
|
|
237
|
+
kind: projectedValue.kind,
|
|
238
|
+
...(event.structuralId != null ? { identity: event.structuralId } : {}),
|
|
239
|
+
...projectDatatype(event.datatype),
|
|
240
|
+
...(projectedValue.value !== undefined ? { value: projectedValue.value } : {}),
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
function projectDatatype(datatype) {
|
|
244
|
+
if (datatype === undefined)
|
|
245
|
+
return {};
|
|
246
|
+
const descriptor = parseDatatypeDescriptor(datatype);
|
|
247
|
+
return {
|
|
248
|
+
datatype: descriptor.datatype,
|
|
249
|
+
generics: descriptor.generics,
|
|
250
|
+
clarifiers: descriptor.clarifiers,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
function projectValue(value, nodeSourcePaths) {
|
|
254
|
+
switch (value.type) {
|
|
255
|
+
case 'TypedValue':
|
|
256
|
+
return projectValue(value.value, nodeSourcePaths);
|
|
257
|
+
case 'StringLiteral':
|
|
258
|
+
return { kind: 'StringLiteral', value: value.value };
|
|
259
|
+
case 'NumberLiteral':
|
|
260
|
+
return { kind: 'NumberLiteral', value: value.value };
|
|
261
|
+
case 'InfinityLiteral':
|
|
262
|
+
return { kind: 'InfinityLiteral', value: value.value };
|
|
263
|
+
case 'NaNLiteral':
|
|
264
|
+
return { kind: 'NaNLiteral', value: value.value };
|
|
265
|
+
case 'NullLiteral':
|
|
266
|
+
return { kind: 'NullLiteral', value: value.value };
|
|
267
|
+
case 'BooleanLiteral':
|
|
268
|
+
return { kind: 'BooleanLiteral', value: String(value.value) };
|
|
269
|
+
case 'ToggleLiteral':
|
|
270
|
+
return { kind: 'ToggleLiteral', value: value.value };
|
|
271
|
+
case 'HexLiteral':
|
|
272
|
+
return { kind: 'HexLiteral', value: value.value };
|
|
273
|
+
case 'RadixLiteral':
|
|
274
|
+
return { kind: 'RadixLiteral', value: value.value };
|
|
275
|
+
case 'EncodingLiteral':
|
|
276
|
+
return { kind: 'EncodingLiteral', value: value.value };
|
|
277
|
+
case 'SeparatorLiteral':
|
|
278
|
+
return { kind: 'SeparatorLiteral', value: value.value };
|
|
279
|
+
case 'SansaAddressLiteral':
|
|
280
|
+
return { kind: 'SansaAddressLiteral', value: value.canonical };
|
|
281
|
+
case 'DateLiteral':
|
|
282
|
+
return { kind: 'DateLiteral', value: value.value };
|
|
283
|
+
case 'TimeLiteral':
|
|
284
|
+
return { kind: 'TimeLiteral', value: value.value };
|
|
285
|
+
case 'DateTimeLiteral':
|
|
286
|
+
return { kind: value.raw.includes('&') ? 'WTCDateTimeLiteral' : 'DateTimeLiteral', value: value.value };
|
|
287
|
+
case 'ObjectNode':
|
|
288
|
+
return { kind: 'ObjectNode' };
|
|
289
|
+
case 'ListNode':
|
|
290
|
+
return { kind: 'ListNode' };
|
|
291
|
+
case 'TupleLiteral':
|
|
292
|
+
return { kind: 'TupleLiteral' };
|
|
293
|
+
case 'NodeLiteral':
|
|
294
|
+
return { kind: 'NodeLiteral' };
|
|
295
|
+
case 'CloneReference':
|
|
296
|
+
return { kind: 'CloneReference', value: translateReferenceTarget(value.path, nodeSourcePaths) };
|
|
297
|
+
case 'PointerReference':
|
|
298
|
+
return { kind: 'PointerReference', value: translateReferenceTarget(value.path, nodeSourcePaths) };
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
function translateReferenceTarget(segments, nodeSourcePaths) {
|
|
302
|
+
const sourceSegments = [{ type: 'root' }];
|
|
303
|
+
let sourcePathIsTrackable = true;
|
|
304
|
+
let out = '$';
|
|
305
|
+
for (const segment of segments) {
|
|
306
|
+
if (typeof segment === 'number') {
|
|
307
|
+
if (sourcePathIsTrackable && nodeSourcePaths.has(formatPath({ segments: sourceSegments }))) {
|
|
308
|
+
out += '[0]';
|
|
309
|
+
}
|
|
310
|
+
out += `[${segment}]`;
|
|
311
|
+
if (sourcePathIsTrackable)
|
|
312
|
+
sourceSegments.push({ type: 'index', index: segment });
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
const key = typeof segment === 'string' ? segment : segment.key;
|
|
316
|
+
const member = formatPath({ segments: [{ type: 'root' }, { type: 'member', key }] }).slice(1);
|
|
317
|
+
if (typeof segment === 'string') {
|
|
318
|
+
out += member;
|
|
319
|
+
if (sourcePathIsTrackable)
|
|
320
|
+
sourceSegments.push({ type: 'member', key: segment });
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
out += `.@${member}`;
|
|
324
|
+
sourcePathIsTrackable = false;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return out;
|
|
328
|
+
}
|
|
329
|
+
function isLegacyHeaderEvent(event, headerFieldNames) {
|
|
330
|
+
if (event.sourcePlane !== undefined)
|
|
331
|
+
return event.sourcePlane === 'header';
|
|
332
|
+
const segment = event.path.segments[1];
|
|
333
|
+
if (segment?.type !== 'member' || !segment.key.startsWith('aeon:'))
|
|
334
|
+
return false;
|
|
335
|
+
return headerFieldNames === undefined || headerFieldNames.has(segment.key.slice('aeon:'.length));
|
|
336
|
+
}
|
|
337
|
+
function compatibilityChanges(sourceEvents, bodyEvents, projected, includeHeaders, sourceBacked, headerFieldNames) {
|
|
338
|
+
const changes = [];
|
|
339
|
+
const pathMap = createPortableEventPathMap(bodyEvents);
|
|
340
|
+
for (const event of sourceEvents) {
|
|
341
|
+
const sourcePath = formatPath(event.path);
|
|
342
|
+
const header = isLegacyHeaderEvent(event, headerFieldNames);
|
|
343
|
+
const targetPath = header && includeHeaders ? sourcePath : pathMap.get(sourcePath);
|
|
344
|
+
if (!sourceBacked) {
|
|
345
|
+
changes.push({
|
|
346
|
+
kind: 'omitted',
|
|
347
|
+
code: 'AES_COMPAT_PROVENANCE_OMITTED',
|
|
348
|
+
field: 'span',
|
|
349
|
+
message: 'The local source span is omitted because it is not bound to an immutable portable origin.',
|
|
350
|
+
sourcePath,
|
|
351
|
+
...(targetPath !== undefined ? { targetPath } : {}),
|
|
352
|
+
requiresAuthorization: false,
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
changes.push({
|
|
356
|
+
kind: 'transformed',
|
|
357
|
+
code: 'AES_COMPAT_SOURCE_REPRESENTATION_REDUCED',
|
|
358
|
+
field: 'key,normalizedPath,value',
|
|
359
|
+
message: 'Implementation-specific navigation fields and AST representation are reduced to portable AES fields.',
|
|
360
|
+
sourcePath,
|
|
361
|
+
...(targetPath !== undefined ? { targetPath } : {}),
|
|
362
|
+
requiresAuthorization: false,
|
|
363
|
+
});
|
|
364
|
+
if (header && !includeHeaders) {
|
|
365
|
+
changes.push({
|
|
366
|
+
kind: 'omitted',
|
|
367
|
+
code: 'AES_COMPAT_HEADER_EXCLUDED',
|
|
368
|
+
field: 'event',
|
|
369
|
+
message: 'The synthetic AEON header event is excluded by the default body-only projection.',
|
|
370
|
+
sourcePath,
|
|
371
|
+
requiresAuthorization: false,
|
|
372
|
+
});
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
if (header) {
|
|
376
|
+
changes.push({
|
|
377
|
+
kind: 'transformed',
|
|
378
|
+
code: 'AES_COMPAT_HEADER_PROJECTED',
|
|
379
|
+
field: 'path',
|
|
380
|
+
message: 'The recognized synthetic AEON header event is moved to the header address plane.',
|
|
381
|
+
sourcePath,
|
|
382
|
+
targetPath: sourcePath,
|
|
383
|
+
requiresAuthorization: false,
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
else if (targetPath !== undefined && targetPath !== sourcePath) {
|
|
387
|
+
changes.push({
|
|
388
|
+
kind: 'transformed',
|
|
389
|
+
code: 'AES_COMPAT_PATH_TRANSLATED',
|
|
390
|
+
field: 'path',
|
|
391
|
+
message: 'The source occurrence path is translated through the explicit portable node-head level.',
|
|
392
|
+
sourcePath,
|
|
393
|
+
targetPath,
|
|
394
|
+
requiresAuthorization: false,
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
const value = unwrapTypedValue(event.value);
|
|
398
|
+
if (value.type === 'CloneReference' || value.type === 'PointerReference') {
|
|
399
|
+
const sourceTarget = translateReferenceTarget(value.path, new Set());
|
|
400
|
+
const nodePaths = new Set(bodyEvents
|
|
401
|
+
.filter((candidate) => unwrapTypedValue(candidate.value).type === 'NodeLiteral')
|
|
402
|
+
.map((candidate) => formatPath(candidate.path)));
|
|
403
|
+
const portableTarget = translateReferenceTarget(value.path, nodePaths);
|
|
404
|
+
if (sourceTarget !== portableTarget) {
|
|
405
|
+
changes.push({
|
|
406
|
+
kind: 'transformed',
|
|
407
|
+
code: 'AES_COMPAT_REFERENCE_TRANSLATED',
|
|
408
|
+
field: 'value.path',
|
|
409
|
+
message: `The reference target is translated from ${sourceTarget} to ${portableTarget}.`,
|
|
410
|
+
sourcePath,
|
|
411
|
+
...(targetPath !== undefined ? { targetPath } : {}),
|
|
412
|
+
requiresAuthorization: false,
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
for (const event of projected) {
|
|
418
|
+
const targetPath = event.path ?? event.header;
|
|
419
|
+
if (sourceBacked) {
|
|
420
|
+
changes.push(event.span === undefined ? {
|
|
421
|
+
kind: 'omitted',
|
|
422
|
+
code: 'AES_COMPAT_PROVENANCE_RANGE_OMITTED',
|
|
423
|
+
field: 'span',
|
|
424
|
+
message: 'The exact source is identified, but this occurrence has no independently retained source range.',
|
|
425
|
+
...(targetPath !== undefined ? { targetPath } : {}),
|
|
426
|
+
requiresAuthorization: false,
|
|
427
|
+
} : {
|
|
428
|
+
kind: 'transformed',
|
|
429
|
+
code: 'AES_COMPAT_UTF8_SPAN_CONVERTED',
|
|
430
|
+
field: 'span',
|
|
431
|
+
message: 'The native UTF-16 source range is converted to an exact UTF-8 byte range.',
|
|
432
|
+
...(targetPath !== undefined ? { targetPath } : {}),
|
|
433
|
+
requiresAuthorization: false,
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
if (event.kind === 'NodeHead') {
|
|
437
|
+
changes.push({
|
|
438
|
+
kind: 'synthesized',
|
|
439
|
+
code: 'AES_COMPAT_NODE_HEAD_SYNTHESIZED',
|
|
440
|
+
field: 'NodeHead',
|
|
441
|
+
message: 'The implicit implementation node tag is emitted as an explicit portable NodeHead event.',
|
|
442
|
+
...(targetPath !== undefined ? { targetPath } : {}),
|
|
443
|
+
requiresAuthorization: false,
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
if (targetPath?.includes('.@')) {
|
|
447
|
+
changes.push({
|
|
448
|
+
kind: 'transformed',
|
|
449
|
+
code: 'AES_COMPAT_ATTRIBUTE_FLATTENED',
|
|
450
|
+
field: 'attributes',
|
|
451
|
+
message: 'The nested implementation attribute entry is emitted as an ordinary flat AES event.',
|
|
452
|
+
targetPath,
|
|
453
|
+
requiresAuthorization: false,
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
if (event.datatype !== undefined) {
|
|
457
|
+
changes.push({
|
|
458
|
+
kind: 'transformed',
|
|
459
|
+
code: 'AES_COMPAT_DATATYPE_EXPANDED',
|
|
460
|
+
field: 'datatype',
|
|
461
|
+
message: 'The combined datatype descriptor is expanded into datatype, generics, and clarifiers.',
|
|
462
|
+
...(targetPath !== undefined ? { targetPath } : {}),
|
|
463
|
+
requiresAuthorization: false,
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
return changes;
|
|
468
|
+
}
|
|
469
|
+
function createPortableSourceContext(sourceBytes) {
|
|
470
|
+
if (!(sourceBytes instanceof Uint8Array)) {
|
|
471
|
+
throw new PortableAesSourceError('AES_COMPAT_SOURCE_REQUIRED', 'Portable source provenance requires exact UTF-8 bytes.');
|
|
472
|
+
}
|
|
473
|
+
const bytes = Uint8Array.from(sourceBytes);
|
|
474
|
+
let source;
|
|
475
|
+
try {
|
|
476
|
+
source = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(bytes);
|
|
477
|
+
}
|
|
478
|
+
catch {
|
|
479
|
+
throw new PortableAesSourceError('AES_SOURCE_INVALID_UTF8', 'Portable source provenance requires a valid UTF-8 artifact.');
|
|
480
|
+
}
|
|
481
|
+
const byteOffsets = new Array(source.length + 1).fill(null);
|
|
482
|
+
let utf16Offset = 0;
|
|
483
|
+
let byteOffset = 0;
|
|
484
|
+
byteOffsets[0] = 0;
|
|
485
|
+
while (utf16Offset < source.length) {
|
|
486
|
+
const codePoint = source.codePointAt(utf16Offset);
|
|
487
|
+
const codeUnitWidth = codePoint > 0xFFFF ? 2 : 1;
|
|
488
|
+
byteOffset += utf8CodePointWidth(codePoint);
|
|
489
|
+
utf16Offset += codeUnitWidth;
|
|
490
|
+
byteOffsets[utf16Offset] = byteOffset;
|
|
491
|
+
}
|
|
492
|
+
return {
|
|
493
|
+
origin: `sha256:${sha256Hex(bytes)}`,
|
|
494
|
+
byteOffsets,
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
function utf8CodePointWidth(codePoint) {
|
|
498
|
+
if (codePoint <= 0x7F)
|
|
499
|
+
return 1;
|
|
500
|
+
if (codePoint <= 0x7FF)
|
|
501
|
+
return 2;
|
|
502
|
+
if (codePoint <= 0xFFFF)
|
|
503
|
+
return 3;
|
|
504
|
+
return 4;
|
|
505
|
+
}
|
|
506
|
+
function applyPortableProvenance(projected, source) {
|
|
507
|
+
if (source === null)
|
|
508
|
+
return projected.event;
|
|
509
|
+
if (projected.sourceSpan === undefined)
|
|
510
|
+
return { ...projected.event, origin: source.origin };
|
|
511
|
+
const start = source.byteOffsets[projected.sourceSpan.start.offset];
|
|
512
|
+
const end = source.byteOffsets[projected.sourceSpan.end.offset];
|
|
513
|
+
if (start === undefined || end === undefined || start === null || end === null || start >= end) {
|
|
514
|
+
throw new PortableAesSourceError('AES_COMPAT_SOURCE_RANGE_INVALID', `Native source span ${projected.sourceSpan.start.offset}:${projected.sourceSpan.end.offset} is outside the exact UTF-8 artifact or splits a Unicode scalar.`);
|
|
515
|
+
}
|
|
516
|
+
return { ...projected.event, origin: source.origin, span: `${start}:${end}` };
|
|
517
|
+
}
|
|
518
|
+
function pushProjected(projected, event, sourceSpan) {
|
|
519
|
+
projected.push({ event, ...(sourceSpan !== undefined ? { sourceSpan } : {}) });
|
|
520
|
+
}
|
|
521
|
+
function unwrapTypedValue(value) {
|
|
522
|
+
return value.type === 'TypedValue' ? unwrapTypedValue(value.value) : value;
|
|
523
|
+
}
|
|
524
|
+
//# sourceMappingURL=portable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portable.js","sourceRoot":"","sources":["../src/portable.ts"],"names":[],"mappings":"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"}
|
package/dist/references.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,aAAa,CAAC;AAKnE,MAAM,MAAM,4BAA4B,GAClC,0BAA0B,GAC1B,mBAAmB,GACnB,gBAAgB,GAChB,0BAA0B,CAAC;AAEjC,qBAAa,wBAAyB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAC5C,sDAAsD;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,YACI,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,4BAA4B,EAClC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAQrB;CACJ;AAED,qBAAa,2BAA4B,SAAQ,wBAAwB;IACrE,YAAY,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAS7D;CACJ;AAED,qBAAa,qBAAsB,SAAQ,wBAAwB;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,YAAY,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAWvG;CACJ;AAED,qBAAa,kBAAmB,SAAQ,wBAAwB;IAC5D,YAAY,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAS7D;CACJ;AAED,qBAAa,2BAA4B,SAAQ,wBAAwB;IACrE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,YACI,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EAYhB;CACJ;AAED,MAAM,WAAW,0BAA0B;IACvC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,yBAAyB;IACtC,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACxD;AAMD,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,SAAS,eAAe,EAAE,EAClC,OAAO,GAAE,0BAA+B,GACzC,yBAAyB,CAiC3B"}
|
package/dist/references.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* - Do NOT transform values
|
|
9
9
|
* - Fail-closed by default (no events if any reference validation error)
|
|
10
10
|
*/
|
|
11
|
+
import { formatDatatypeAnnotation } from './datatype.js';
|
|
11
12
|
import { formatPath } from './paths.js';
|
|
12
13
|
import { formatReferenceTargetPath } from './reference-target.js';
|
|
13
14
|
export class ReferenceValidationError extends Error {
|
|
@@ -158,9 +159,9 @@ function* findOwnedReferences(value) {
|
|
|
158
159
|
for (const attr of value.attributes) {
|
|
159
160
|
yield* findReferencesInAttribute(attr);
|
|
160
161
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
162
|
+
// Node children have their own indexed AssignmentEvents. Validating
|
|
163
|
+
// them again through the outer node would duplicate diagnostics and
|
|
164
|
+
// report the collapsed owner path instead of the child's occurrence.
|
|
164
165
|
return;
|
|
165
166
|
default:
|
|
166
167
|
return;
|
|
@@ -327,7 +328,11 @@ function buildAnnotationMap(attributes) {
|
|
|
327
328
|
const result = new Map();
|
|
328
329
|
for (const attribute of attributes) {
|
|
329
330
|
for (const [key, entry] of attribute.entries) {
|
|
330
|
-
const mapped = {
|
|
331
|
+
const mapped = {
|
|
332
|
+
...(entry.structuralId !== null ? { structuralId: entry.structuralId } : {}),
|
|
333
|
+
value: entry.value,
|
|
334
|
+
...(entry.datatype ? { datatype: formatDatatypeAnnotation(entry.datatype) } : {}),
|
|
335
|
+
};
|
|
331
336
|
const nested = buildAnnotationMap(entry.attributes);
|
|
332
337
|
if (nested) {
|
|
333
338
|
mapped.annotations = nested;
|