@workflow/core 4.1.0-beta.55 → 4.1.0-beta.56
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/dist/runtime/helpers.d.ts +8 -0
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +38 -4
- package/dist/runtime/step-handler.d.ts.map +1 -1
- package/dist/runtime/step-handler.js +33 -14
- package/dist/serialization-format.d.ts +117 -0
- package/dist/serialization-format.d.ts.map +1 -0
- package/dist/serialization-format.js +363 -0
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +67 -18
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/api-reference/create-hook.mdx +7 -0
- package/docs/api-reference/create-webhook.mdx +6 -0
- package/docs/api-reference/define-hook.mdx +6 -0
- package/docs/api-reference/fatal-error.mdx +6 -0
- package/docs/api-reference/fetch.mdx +6 -0
- package/docs/api-reference/get-step-metadata.mdx +4 -0
- package/docs/api-reference/get-workflow-metadata.mdx +4 -0
- package/docs/api-reference/get-writable.mdx +4 -0
- package/docs/api-reference/index.mdx +7 -0
- package/docs/api-reference/retryable-error.mdx +6 -0
- package/docs/api-reference/sleep.mdx +6 -0
- package/docs/foundations/common-patterns.mdx +7 -0
- package/docs/foundations/errors-and-retries.mdx +7 -0
- package/docs/foundations/hooks.mdx +8 -0
- package/docs/foundations/idempotency.mdx +6 -0
- package/docs/foundations/index.mdx +5 -0
- package/docs/foundations/serialization.mdx +6 -0
- package/docs/foundations/starting-workflows.mdx +6 -0
- package/docs/foundations/streaming.mdx +7 -0
- package/docs/foundations/workflows-and-steps.mdx +7 -0
- package/docs/how-it-works/code-transform.mdx +6 -0
- package/docs/how-it-works/event-sourcing.mdx +6 -0
- package/docs/how-it-works/framework-integrations.mdx +6 -0
- package/docs/how-it-works/understanding-directives.mdx +6 -0
- package/package.json +5 -6
- package/dist/observability.d.ts +0 -84
- package/dist/observability.d.ts.map +0 -1
- package/dist/observability.js +0 -360
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-safe serialization format utilities.
|
|
3
|
+
*
|
|
4
|
+
* This module contains the format prefix handling, generic hydrate/dehydrate
|
|
5
|
+
* dispatch, and shared types/classes used by all environments (runtime, web
|
|
6
|
+
* o11y, CLI o11y). It has NO Node.js dependencies.
|
|
7
|
+
*/
|
|
8
|
+
import { parse, unflatten } from 'devalue';
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Format prefix constants and encoding/decoding
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
export const SerializationFormat = {
|
|
13
|
+
/** devalue stringify/parse with TextEncoder/TextDecoder */
|
|
14
|
+
DEVALUE_V1: 'devl',
|
|
15
|
+
};
|
|
16
|
+
/** Length of the format prefix in bytes */
|
|
17
|
+
const FORMAT_PREFIX_LENGTH = 4;
|
|
18
|
+
const formatEncoder = new TextEncoder();
|
|
19
|
+
const formatDecoder = new TextDecoder();
|
|
20
|
+
/**
|
|
21
|
+
* Encode a payload with a format prefix.
|
|
22
|
+
*/
|
|
23
|
+
export function encodeWithFormatPrefix(format, payload) {
|
|
24
|
+
if (!(payload instanceof Uint8Array)) {
|
|
25
|
+
return payload;
|
|
26
|
+
}
|
|
27
|
+
const prefixBytes = formatEncoder.encode(format);
|
|
28
|
+
if (prefixBytes.length !== FORMAT_PREFIX_LENGTH) {
|
|
29
|
+
throw new Error(`Format identifier must be exactly ${FORMAT_PREFIX_LENGTH} ASCII characters, got "${format}" (${prefixBytes.length} bytes)`);
|
|
30
|
+
}
|
|
31
|
+
const result = new Uint8Array(FORMAT_PREFIX_LENGTH + payload.length);
|
|
32
|
+
result.set(prefixBytes, 0);
|
|
33
|
+
result.set(payload, FORMAT_PREFIX_LENGTH);
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Decode a format-prefixed payload.
|
|
38
|
+
*/
|
|
39
|
+
export function decodeFormatPrefix(data) {
|
|
40
|
+
if (!(data instanceof Uint8Array)) {
|
|
41
|
+
return {
|
|
42
|
+
format: SerializationFormat.DEVALUE_V1,
|
|
43
|
+
payload: new TextEncoder().encode(JSON.stringify(data)),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (data.length < FORMAT_PREFIX_LENGTH) {
|
|
47
|
+
throw new Error(`Data too short to contain format prefix: expected at least ${FORMAT_PREFIX_LENGTH} bytes, got ${data.length}`);
|
|
48
|
+
}
|
|
49
|
+
const prefixBytes = data.subarray(0, FORMAT_PREFIX_LENGTH);
|
|
50
|
+
const format = formatDecoder.decode(prefixBytes);
|
|
51
|
+
const knownFormats = Object.values(SerializationFormat);
|
|
52
|
+
if (!knownFormats.includes(format)) {
|
|
53
|
+
throw new Error(`Unknown serialization format: "${format}". Known formats: ${knownFormats.join(', ')}`);
|
|
54
|
+
}
|
|
55
|
+
const payload = data.subarray(FORMAT_PREFIX_LENGTH);
|
|
56
|
+
return { format: format, payload };
|
|
57
|
+
}
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
// Generic hydrate/dehydrate dispatch
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
/**
|
|
62
|
+
* Hydrate (deserialize) a value that was stored in the database.
|
|
63
|
+
*
|
|
64
|
+
* Handles three data shapes:
|
|
65
|
+
* 1. `Uint8Array` with a format prefix (specVersion 2+) → decode prefix, parse
|
|
66
|
+
* 2. `Array` (legacy specVersion 1, "revived devalue") → unflatten
|
|
67
|
+
* 3. Other (already a plain JS value) → return as-is
|
|
68
|
+
*/
|
|
69
|
+
export function hydrateData(value, revivers) {
|
|
70
|
+
if (value instanceof Uint8Array) {
|
|
71
|
+
const { format, payload } = decodeFormatPrefix(value);
|
|
72
|
+
if (format === SerializationFormat.DEVALUE_V1) {
|
|
73
|
+
const str = new TextDecoder().decode(payload);
|
|
74
|
+
return parse(str, revivers);
|
|
75
|
+
}
|
|
76
|
+
throw new Error(`Unsupported serialization format: ${format}`);
|
|
77
|
+
}
|
|
78
|
+
if (Array.isArray(value)) {
|
|
79
|
+
return unflatten(value, revivers);
|
|
80
|
+
}
|
|
81
|
+
// Already a plain JS value (e.g., number, string, null)
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
// Shared marker types for o11y display
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
const STREAM_ID_PREFIX = 'strm_';
|
|
88
|
+
/** Marker for stream reference objects rendered as links in the UI */
|
|
89
|
+
export const STREAM_REF_TYPE = '__workflow_stream_ref__';
|
|
90
|
+
/** Marker for custom class instance references */
|
|
91
|
+
export const CLASS_INSTANCE_REF_TYPE = '__workflow_class_instance_ref__';
|
|
92
|
+
/**
|
|
93
|
+
* A class instance reference for o11y display.
|
|
94
|
+
*
|
|
95
|
+
* Browser-safe base class — no `util.inspect.custom`. Environment-specific
|
|
96
|
+
* rendering (CLI inspect, web component) is handled by each consumer.
|
|
97
|
+
*/
|
|
98
|
+
export class ClassInstanceRef {
|
|
99
|
+
className;
|
|
100
|
+
classId;
|
|
101
|
+
data;
|
|
102
|
+
__type = CLASS_INSTANCE_REF_TYPE;
|
|
103
|
+
constructor(className, classId, data) {
|
|
104
|
+
this.className = className;
|
|
105
|
+
this.classId = classId;
|
|
106
|
+
this.data = data;
|
|
107
|
+
}
|
|
108
|
+
toJSON() {
|
|
109
|
+
return {
|
|
110
|
+
__type: this.__type,
|
|
111
|
+
className: this.className,
|
|
112
|
+
classId: this.classId,
|
|
113
|
+
data: this.data,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/** Check if a value is a ClassInstanceRef object */
|
|
118
|
+
export const isClassInstanceRef = (value) => {
|
|
119
|
+
return (value instanceof ClassInstanceRef ||
|
|
120
|
+
(value !== null &&
|
|
121
|
+
typeof value === 'object' &&
|
|
122
|
+
'__type' in value &&
|
|
123
|
+
value.__type === CLASS_INSTANCE_REF_TYPE &&
|
|
124
|
+
'className' in value &&
|
|
125
|
+
typeof value.className === 'string'));
|
|
126
|
+
};
|
|
127
|
+
/** Check if a value is a stream ID string */
|
|
128
|
+
export const isStreamId = (value) => {
|
|
129
|
+
return typeof value === 'string' && value.startsWith(STREAM_ID_PREFIX);
|
|
130
|
+
};
|
|
131
|
+
/** Check if a value is a StreamRef object */
|
|
132
|
+
export const isStreamRef = (value) => {
|
|
133
|
+
return (value !== null &&
|
|
134
|
+
typeof value === 'object' &&
|
|
135
|
+
'__type' in value &&
|
|
136
|
+
value.__type === STREAM_REF_TYPE &&
|
|
137
|
+
'streamId' in value &&
|
|
138
|
+
typeof value.streamId === 'string');
|
|
139
|
+
};
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
// Shared o11y reviver helpers
|
|
142
|
+
// ---------------------------------------------------------------------------
|
|
143
|
+
/**
|
|
144
|
+
* Convert a serialized stream value to a StreamRef for display.
|
|
145
|
+
*/
|
|
146
|
+
export const streamToStreamRef = (value) => {
|
|
147
|
+
let streamId;
|
|
148
|
+
if ('name' in value) {
|
|
149
|
+
const name = String(value.name);
|
|
150
|
+
if (!name.startsWith(STREAM_ID_PREFIX)) {
|
|
151
|
+
streamId = `${STREAM_ID_PREFIX}${name}`;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
streamId = name;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
streamId = `${STREAM_ID_PREFIX}null`;
|
|
159
|
+
}
|
|
160
|
+
return { __type: STREAM_REF_TYPE, streamId };
|
|
161
|
+
};
|
|
162
|
+
/** Convert a serialized step function to a display string */
|
|
163
|
+
export const serializedStepFunctionToString = (value) => {
|
|
164
|
+
if (!value)
|
|
165
|
+
return 'null';
|
|
166
|
+
if (typeof value !== 'object')
|
|
167
|
+
return 'null';
|
|
168
|
+
if ('stepId' in value) {
|
|
169
|
+
return `<step:${value.stepId}>`;
|
|
170
|
+
}
|
|
171
|
+
return '<function>';
|
|
172
|
+
};
|
|
173
|
+
/** Extract the class name from a classId */
|
|
174
|
+
export const extractClassName = (classId) => {
|
|
175
|
+
if (!classId)
|
|
176
|
+
return 'Unknown';
|
|
177
|
+
const parts = classId.split('/');
|
|
178
|
+
return parts[parts.length - 1] || classId;
|
|
179
|
+
};
|
|
180
|
+
/** Convert a serialized class instance to a ClassInstanceRef for display */
|
|
181
|
+
export const serializedInstanceToRef = (value) => {
|
|
182
|
+
return new ClassInstanceRef(extractClassName(value.classId), value.classId, value.data);
|
|
183
|
+
};
|
|
184
|
+
/** Convert a serialized class reference to a display string */
|
|
185
|
+
export const serializedClassToString = (value) => {
|
|
186
|
+
return `<class:${extractClassName(value.classId)}>`;
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Standard o11y revivers that override runtime-specific types with
|
|
190
|
+
* display-friendly values. Used by both web and CLI hydration.
|
|
191
|
+
*/
|
|
192
|
+
export const observabilityRevivers = {
|
|
193
|
+
ReadableStream: streamToStreamRef,
|
|
194
|
+
WritableStream: streamToStreamRef,
|
|
195
|
+
TransformStream: streamToStreamRef,
|
|
196
|
+
StepFunction: serializedStepFunctionToString,
|
|
197
|
+
Instance: serializedInstanceToRef,
|
|
198
|
+
Class: serializedClassToString,
|
|
199
|
+
};
|
|
200
|
+
// ---------------------------------------------------------------------------
|
|
201
|
+
// Resource-level hydration dispatch (for o11y)
|
|
202
|
+
// ---------------------------------------------------------------------------
|
|
203
|
+
/**
|
|
204
|
+
* Hydrate the data fields of a step resource.
|
|
205
|
+
*/
|
|
206
|
+
function hydrateStepIO(resource, revivers) {
|
|
207
|
+
let hydratedInput = resource.input;
|
|
208
|
+
let hydratedOutput = resource.output;
|
|
209
|
+
if (resource.input != null) {
|
|
210
|
+
try {
|
|
211
|
+
hydratedInput = hydrateData(resource.input, revivers);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
// Leave un-hydrated
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (resource.output != null) {
|
|
218
|
+
try {
|
|
219
|
+
hydratedOutput = hydrateData(resource.output, revivers);
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
// Leave un-hydrated
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return { ...resource, input: hydratedInput, output: hydratedOutput };
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Hydrate the data fields of a workflow run resource.
|
|
229
|
+
*/
|
|
230
|
+
function hydrateWorkflowIO(resource, revivers) {
|
|
231
|
+
let hydratedInput = resource.input;
|
|
232
|
+
let hydratedOutput = resource.output;
|
|
233
|
+
if (resource.input != null) {
|
|
234
|
+
try {
|
|
235
|
+
hydratedInput = hydrateData(resource.input, revivers);
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
// Leave un-hydrated
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (resource.output != null) {
|
|
242
|
+
try {
|
|
243
|
+
hydratedOutput = hydrateData(resource.output, revivers);
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
// Leave un-hydrated
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return { ...resource, input: hydratedInput, output: hydratedOutput };
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Hydrate the eventData fields of an event resource.
|
|
253
|
+
*/
|
|
254
|
+
function hydrateEventData(resource, revivers) {
|
|
255
|
+
if (!resource.eventData)
|
|
256
|
+
return resource;
|
|
257
|
+
const eventData = { ...resource.eventData };
|
|
258
|
+
// step_completed events have eventData.result (serialized return value)
|
|
259
|
+
if ('result' in eventData && eventData.result != null) {
|
|
260
|
+
try {
|
|
261
|
+
eventData.result = hydrateData(eventData.result, revivers);
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
// Leave un-hydrated
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// step_created events have eventData.input (serialized step arguments)
|
|
268
|
+
if ('input' in eventData && eventData.input != null) {
|
|
269
|
+
try {
|
|
270
|
+
eventData.input = hydrateData(eventData.input, revivers);
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
// Leave un-hydrated
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return { ...resource, eventData };
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Hydrate the metadata field of a hook resource.
|
|
280
|
+
*/
|
|
281
|
+
function hydrateHookMetadata(resource, revivers) {
|
|
282
|
+
if (resource.metadata == null)
|
|
283
|
+
return resource;
|
|
284
|
+
let hydratedMetadata = resource.metadata;
|
|
285
|
+
try {
|
|
286
|
+
hydratedMetadata = hydrateData(resource.metadata, revivers);
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
// Leave un-hydrated
|
|
290
|
+
}
|
|
291
|
+
return { ...resource, metadata: hydratedMetadata };
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Hydrate the serialized data fields of any resource for o11y display.
|
|
295
|
+
*
|
|
296
|
+
* Dispatches by resource type (step, hook, event, workflow) and calls
|
|
297
|
+
* `hydrateData` with the provided revivers for each data field.
|
|
298
|
+
*
|
|
299
|
+
* Each environment (web, CLI) provides its own revivers — this function
|
|
300
|
+
* only handles the dispatch logic and field mapping.
|
|
301
|
+
*/
|
|
302
|
+
export function hydrateResourceIO(resource, revivers) {
|
|
303
|
+
if (!resource)
|
|
304
|
+
return resource;
|
|
305
|
+
let hydrated;
|
|
306
|
+
if ('stepId' in resource) {
|
|
307
|
+
hydrated = hydrateStepIO(resource, revivers);
|
|
308
|
+
}
|
|
309
|
+
else if ('hookId' in resource) {
|
|
310
|
+
hydrated = hydrateHookMetadata(resource, revivers);
|
|
311
|
+
}
|
|
312
|
+
else if ('eventId' in resource) {
|
|
313
|
+
hydrated = hydrateEventData(resource, revivers);
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
hydrated = hydrateWorkflowIO(resource, revivers);
|
|
317
|
+
}
|
|
318
|
+
// Strip executionContext, preserving only workflowCoreVersion for display
|
|
319
|
+
if ('executionContext' in hydrated) {
|
|
320
|
+
const { executionContext, ...rest } = hydrated;
|
|
321
|
+
const workflowCoreVersion = executionContext &&
|
|
322
|
+
typeof executionContext === 'object' &&
|
|
323
|
+
'workflowCoreVersion' in executionContext
|
|
324
|
+
? executionContext.workflowCoreVersion
|
|
325
|
+
: undefined;
|
|
326
|
+
if (workflowCoreVersion) {
|
|
327
|
+
return { ...rest, workflowCoreVersion };
|
|
328
|
+
}
|
|
329
|
+
return rest;
|
|
330
|
+
}
|
|
331
|
+
return hydrated;
|
|
332
|
+
}
|
|
333
|
+
// ---------------------------------------------------------------------------
|
|
334
|
+
// Utility functions
|
|
335
|
+
// ---------------------------------------------------------------------------
|
|
336
|
+
/** Extract all stream IDs from a value (recursively traverses objects/arrays) */
|
|
337
|
+
export function extractStreamIds(obj) {
|
|
338
|
+
const streamIds = [];
|
|
339
|
+
function traverse(value) {
|
|
340
|
+
if (isStreamId(value)) {
|
|
341
|
+
streamIds.push(value);
|
|
342
|
+
}
|
|
343
|
+
else if (Array.isArray(value)) {
|
|
344
|
+
for (const item of value) {
|
|
345
|
+
traverse(item);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
else if (value && typeof value === 'object') {
|
|
349
|
+
for (const val of Object.values(value)) {
|
|
350
|
+
traverse(val);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
traverse(obj);
|
|
355
|
+
return Array.from(new Set(streamIds));
|
|
356
|
+
}
|
|
357
|
+
/** Truncate a string to a maximum length, adding ellipsis if needed */
|
|
358
|
+
export function truncateId(id, maxLength = 12) {
|
|
359
|
+
if (id.length <= maxLength)
|
|
360
|
+
return id;
|
|
361
|
+
return `${id.slice(0, maxLength)}...`;
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXphdGlvbi1mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2VyaWFsaXphdGlvbi1mb3JtYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFM0MsOEVBQThFO0FBQzlFLGdEQUFnRDtBQUNoRCw4RUFBOEU7QUFFOUUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsMkRBQTJEO0lBQzNELFVBQVUsRUFBRSxNQUFNO0NBQ1YsQ0FBQztBQUtYLDJDQUEyQztBQUMzQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQztBQUUvQixNQUFNLGFBQWEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQ3hDLE1BQU0sYUFBYSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLE1BQStCLEVBQy9CLE9BQTZCO0lBRTdCLElBQUksQ0FBQyxDQUFDLE9BQU8sWUFBWSxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQ2IscUNBQXFDLG9CQUFvQiwyQkFBMkIsTUFBTSxNQUFNLFdBQVcsQ0FBQyxNQUFNLFNBQVMsQ0FDNUgsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AA8CA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;IAC9B,2DAA2D;;CAEnD,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAWjE;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,UAAU,GAAG,OAAO,GAC5B,UAAU,GAAG,OAAO,CAgBtB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG;IAC9D,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,EAAE,UAAU,CAAC;CACrB,CA6BA;AAoCD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,GAAG,SAAS,CAMzE;
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"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"}
|