@workflow/core 5.0.0-beta.38 → 5.0.0-beta.39
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/capabilities.d.ts +5 -0
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +20 -2
- package/dist/context-violation-error.d.ts.map +1 -1
- package/dist/context-violation-error.js +4 -2
- package/dist/replay-payload-cache.d.ts +11 -0
- package/dist/replay-payload-cache.d.ts.map +1 -1
- package/dist/replay-payload-cache.js +21 -4
- package/dist/runtime/compute-instance.d.ts +12 -0
- package/dist/runtime/compute-instance.d.ts.map +1 -0
- package/dist/runtime/compute-instance.js +13 -0
- package/dist/runtime/constants.d.ts +18 -0
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +42 -1
- package/dist/runtime/helpers.d.ts +103 -31
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +138 -61
- package/dist/runtime/replay-recovery-reporter.d.ts +36 -0
- package/dist/runtime/replay-recovery-reporter.d.ts.map +1 -0
- package/dist/runtime/replay-recovery-reporter.js +64 -0
- package/dist/runtime/resume-hook.d.ts +22 -2
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +281 -47
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +50 -3
- package/dist/runtime/step-executor.d.ts +17 -13
- package/dist/runtime/step-executor.d.ts.map +1 -1
- package/dist/runtime/step-executor.js +36 -24
- package/dist/runtime/suspension-handler.d.ts +13 -8
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +60 -18
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +622 -67
- package/dist/serialization/codec-devalue.d.ts.map +1 -1
- package/dist/serialization/codec-devalue.js +9 -2
- package/dist/serialization/codec.d.ts +17 -0
- package/dist/serialization/codec.d.ts.map +1 -1
- package/dist/serialization/codec.js +1 -1
- package/dist/serialization/hardened.d.ts +155 -0
- package/dist/serialization/hardened.d.ts.map +1 -0
- package/dist/serialization/hardened.js +523 -0
- package/dist/serialization/index.d.ts +2 -1
- package/dist/serialization/index.d.ts.map +1 -1
- package/dist/serialization/index.js +1 -1
- package/dist/serialization/reducers/class.d.ts.map +1 -1
- package/dist/serialization/reducers/class.js +11 -6
- package/dist/serialization/reducers/common.d.ts +1 -1
- package/dist/serialization/reducers/common.d.ts.map +1 -1
- package/dist/serialization/reducers/common.js +100 -61
- package/dist/serialization/reducers/step-function.d.ts.map +1 -1
- package/dist/serialization/reducers/step-function.js +25 -9
- package/dist/serialization.d.ts +13 -9
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +149 -48
- package/dist/set-attributes.d.ts.map +1 -1
- package/dist/set-attributes.js +5 -1
- package/dist/step/context-storage.d.ts +1 -1
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js +6 -4
- package/dist/step/writable-stream.d.ts.map +1 -1
- package/dist/step/writable-stream.js +3 -2
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +9 -2
- package/dist/telemetry/semantic-conventions.d.ts +41 -0
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +32 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -2
- package/dist/workflow/hook.d.ts.map +1 -1
- package/dist/workflow/hook.js +38 -1
- package/dist/workflow.d.ts +1 -1
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +6 -2
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec-devalue.d.ts","sourceRoot":"","sources":["../../src/serialization/codec-devalue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAmC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"codec-devalue.d.ts","sourceRoot":"","sources":["../../src/serialization/codec-devalue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAmC,MAAM,YAAY,CAAC;AAyFzE,eAAO,MAAM,YAAY,EAAE,KAmD1B,CAAC"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* typed arrays, Map, Set natively).
|
|
11
11
|
*/
|
|
12
12
|
import { parse, stringify, unflatten } from 'devalue';
|
|
13
|
+
import { hardenedStringifyOperations, withGuestCodeStats } from './hardened.js';
|
|
13
14
|
import { getClassReducers, getClassRevivers } from './reducers/class.js';
|
|
14
15
|
import { getCommonReducers, getCommonRevivers } from './reducers/common.js';
|
|
15
16
|
import { getStepFunctionReducer, getStepFunctionReviver, } from './reducers/step-function.js';
|
|
@@ -82,7 +83,13 @@ export const devalueCodec = {
|
|
|
82
83
|
formatPrefix: SerializationFormat.DEVALUE_V1,
|
|
83
84
|
serialize(value, mode, options) {
|
|
84
85
|
const reducers = getReducersForMode(mode, options?.global, options?.extraReducers);
|
|
85
|
-
|
|
86
|
+
// Hardened operations: devalue's own introspection (classification,
|
|
87
|
+
// built-in extraction, property reads) goes through captured host
|
|
88
|
+
// intrinsics and descriptor reads, so serializing a value constructed
|
|
89
|
+
// inside a workflow VM cannot execute sandbox code behind our back.
|
|
90
|
+
// Where workflow code must run (getters, proxies, custom serializers),
|
|
91
|
+
// the execution is recorded into `options.guestCodeStats`.
|
|
92
|
+
const str = withGuestCodeStats(options?.guestCodeStats, () => stringify(value, reducers, { operations: hardenedStringifyOperations }));
|
|
86
93
|
return encoder.encode(str);
|
|
87
94
|
},
|
|
88
95
|
deserialize(data, mode, options) {
|
|
@@ -95,4 +102,4 @@ export const devalueCodec = {
|
|
|
95
102
|
return unflatten(data, revivers);
|
|
96
103
|
},
|
|
97
104
|
};
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMtZGV2YWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL2NvZGVjLWRldmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHNCQUFzQixHQUN2QixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBZ0MsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFL0UsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBRWxDLGlEQUFpRDtBQUVqRCxTQUFTLGtCQUFrQixDQUN6QixJQUF1QixFQUN2QixTQUE4QixVQUFVLEVBQ3hDLGFBQW1EO0lBRW5ELElBQUksSUFBdUIsQ0FBQztJQUM1QixRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxVQUFVO1lBQ2IsaUZBQWlGO1lBQ2pGLElBQUksR0FBRztnQkFDTCxHQUFHLGdCQUFnQixFQUFFO2dCQUNyQixHQUFHLHNCQUFzQixFQUFFO2dCQUMzQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQzthQUM3QixDQUFDO1lBQ0YsTUFBTTtRQUNSLEtBQUssTUFBTTtZQUNULElBQUksR0FBRztnQkFDTCxHQUFHLGdCQUFnQixFQUFFO2dCQUNyQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQzthQUM3QixDQUFDO1lBQ0YsTUFBTTtRQUNSLEtBQUssUUFBUTtZQUNYLElBQUksR0FBRztnQkFDTCxHQUFHLGdCQUFnQixFQUFFO2dCQUNyQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQzthQUM3QixDQUFDO1lBQ0YsTUFBTTtJQUNWLENBQUM7SUFDRCxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLGFBQWEsRUFBeUMsQ0FBQztJQUM5RSxDQUFDO0lBQ0QsT0FBTyxJQUEyQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUN6QixJQUF1QixFQUN2QixTQUE4QixVQUFVLEVBQ3hDLGFBQW1EO0lBRW5ELElBQUksSUFBdUIsQ0FBQztJQUM1QixRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxVQUFVO1lBQ2IsSUFBSSxHQUFHO2dCQUNMLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO2dCQUMzQixHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztnQkFDakMsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7YUFDN0IsQ0FBQztZQUNGLE1BQU07UUFDUixLQUFLLE1BQU07WUFDVCxJQUFJLEdBQUc7Z0JBQ0wsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7Z0JBQzNCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO2FBQzdCLENBQUM7WUFDRixNQUFNO1FBQ1IsS0FBSyxRQUFRO1lBQ1gsSUFBSSxHQUFHO2dCQUNMLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO2dCQUMzQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztnQkFDNUIsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FDYiwwREFBMEQsQ0FDM0QsQ0FBQztnQkFDSixDQUFDO2FBQ0YsQ0FBQztZQUNGLE1BQU07SUFDVixDQUFDO0lBQ0QsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxhQUFhLEVBQXlDLENBQUM7SUFDOUUsQ0FBQztJQUNELE9BQU8sSUFBMkMsQ0FBQztBQUNyRCxDQUFDO0FBRUQsaUNBQWlDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBVTtJQUNqQyxZQUFZLEVBQUUsbUJBQW1CLENBQUMsVUFBVTtJQUU1QyxTQUFTLENBQ1AsS0FBYyxFQUNkLElBQXVCLEVBQ3ZCLE9BQXNCO1FBRXRCLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUNqQyxJQUFJLEVBQ0osT0FBTyxFQUFFLE1BQU0sRUFDZixPQUFPLEVBQUUsYUFBYSxDQUN2QixDQUFDO1FBQ0YsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVcsQ0FDVCxJQUFnQixFQUNoQixJQUF1QixFQUN2QixPQUFzQjtRQUV0QixNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FDakMsSUFBSSxFQUNKLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLGFBQWEsQ0FDdkIsQ0FBQztRQUNGLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxpQkFBaUIsQ0FDZixJQUFhLEVBQ2IsSUFBdUIsRUFDdkIsT0FBc0I7UUFFdEIsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQ2pDLElBQUksRUFDSixPQUFPLEVBQUUsTUFBTSxFQUNmLE9BQU8sRUFBRSxhQUFhLENBQ3ZCLENBQUM7UUFDRixPQUFPLFNBQVMsQ0FBQyxJQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERldmFsdWUgY29kZWMgaW1wbGVtZW50YXRpb24uXG4gKlxuICogVXNlcyB0aGUgYGRldmFsdWVgIGxpYnJhcnkgZm9yIHNlcmlhbGl6YXRpb24uIEhhbmRsZXMgY3VzdG9tIHR5cGVzIHZpYVxuICogcmVkdWNlcnMgKHNlcmlhbGl6ZSkgYW5kIHJldml2ZXJzIChkZXNlcmlhbGl6ZSkgd2hpY2ggYXJlIGNvbXBvc2VkXG4gKiBpbnRlcm5hbGx5IGJhc2VkIG9uIHRoZSBzZXJpYWxpemF0aW9uIG1vZGUuXG4gKlxuICogVGhlIHJlZHVjZXIvcmV2aXZlciBwYXR0ZXJuIGlzIHNwZWNpZmljIHRvIGRldmFsdWUg4oCUIG90aGVyIGNvZGVjc1xuICogKENCT1IsIEpTT04pIHdvdWxkIGhhbmRsZSB0eXBlcyBkaWZmZXJlbnRseSAoZS5nLiBDQk9SIHN1cHBvcnRzIERhdGUsXG4gKiB0eXBlZCBhcnJheXMsIE1hcCwgU2V0IG5hdGl2ZWx5KS5cbiAqL1xuXG5pbXBvcnQgeyBwYXJzZSwgc3RyaW5naWZ5LCB1bmZsYXR0ZW4gfSBmcm9tICdkZXZhbHVlJztcbmltcG9ydCB0eXBlIHsgQ29kZWMsIENvZGVjT3B0aW9ucywgU2VyaWFsaXphdGlvbk1vZGUgfSBmcm9tICcuL2NvZGVjLmpzJztcbmltcG9ydCB7IGdldENsYXNzUmVkdWNlcnMsIGdldENsYXNzUmV2aXZlcnMgfSBmcm9tICcuL3JlZHVjZXJzL2NsYXNzLmpzJztcbmltcG9ydCB7IGdldENvbW1vblJlZHVjZXJzLCBnZXRDb21tb25SZXZpdmVycyB9IGZyb20gJy4vcmVkdWNlcnMvY29tbW9uLmpzJztcbmltcG9ydCB7XG4gIGdldFN0ZXBGdW5jdGlvblJlZHVjZXIsXG4gIGdldFN0ZXBGdW5jdGlvblJldml2ZXIsXG59IGZyb20gJy4vcmVkdWNlcnMvc3RlcC1mdW5jdGlvbi5qcyc7XG5pbXBvcnQgeyB0eXBlIFJlZHVjZXJzLCB0eXBlIFJldml2ZXJzLCBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbmNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcblxuLy8gLS0tLSBSZWR1Y2VyL1Jldml2ZXIgY29tcG9zaXRpb24gcGVyIG1vZGUgLS0tLVxuXG5mdW5jdGlvbiBnZXRSZWR1Y2Vyc0Zvck1vZGUoXG4gIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlLFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzLFxuICBleHRyYVJlZHVjZXJzPzogUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT5cbik6IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+IHtcbiAgbGV0IGJhc2U6IFBhcnRpYWw8UmVkdWNlcnM+O1xuICBzd2l0Y2ggKG1vZGUpIHtcbiAgICBjYXNlICd3b3JrZmxvdyc6XG4gICAgICAvLyBDbGFzcy9JbnN0YW5jZSBNVVNUIGNvbWUgYmVmb3JlIGNvbW1vbiAoZmlyc3QtbWF0Y2gtd2lucyBmb3IgRXJyb3Igc3ViY2xhc3NlcylcbiAgICAgIGJhc2UgPSB7XG4gICAgICAgIC4uLmdldENsYXNzUmVkdWNlcnMoKSxcbiAgICAgICAgLi4uZ2V0U3RlcEZ1bmN0aW9uUmVkdWNlcigpLFxuICAgICAgICAuLi5nZXRDb21tb25SZWR1Y2VycyhnbG9iYWwpLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3N0ZXAnOlxuICAgICAgYmFzZSA9IHtcbiAgICAgICAgLi4uZ2V0Q2xhc3NSZWR1Y2VycygpLFxuICAgICAgICAuLi5nZXRDb21tb25SZWR1Y2VycyhnbG9iYWwpLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NsaWVudCc6XG4gICAgICBiYXNlID0ge1xuICAgICAgICAuLi5nZXRDbGFzc1JlZHVjZXJzKCksXG4gICAgICAgIC4uLmdldENvbW1vblJlZHVjZXJzKGdsb2JhbCksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gIH1cbiAgaWYgKGV4dHJhUmVkdWNlcnMpIHtcbiAgICByZXR1cm4geyAuLi5iYXNlLCAuLi5leHRyYVJlZHVjZXJzIH0gYXMgUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT47XG4gIH1cbiAgcmV0dXJuIGJhc2UgYXMgUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT47XG59XG5cbmZ1bmN0aW9uIGdldFJldml2ZXJzRm9yTW9kZShcbiAgbW9kZTogU2VyaWFsaXphdGlvbk1vZGUsXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXMsXG4gIGV4dHJhUmV2aXZlcnM/OiBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PlxuKTogUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT4ge1xuICBsZXQgYmFzZTogUGFydGlhbDxSZXZpdmVycz47XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgJ3dvcmtmbG93JzpcbiAgICAgIGJhc2UgPSB7XG4gICAgICAgIC4uLmdldENsYXNzUmV2aXZlcnMoZ2xvYmFsKSxcbiAgICAgICAgLi4uZ2V0U3RlcEZ1bmN0aW9uUmV2aXZlcihnbG9iYWwpLFxuICAgICAgICAuLi5nZXRDb21tb25SZXZpdmVycyhnbG9iYWwpLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3N0ZXAnOlxuICAgICAgYmFzZSA9IHtcbiAgICAgICAgLi4uZ2V0Q2xhc3NSZXZpdmVycyhnbG9iYWwpLFxuICAgICAgICAuLi5nZXRDb21tb25SZXZpdmVycyhnbG9iYWwpLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NsaWVudCc6XG4gICAgICBiYXNlID0ge1xuICAgICAgICAuLi5nZXRDbGFzc1Jldml2ZXJzKGdsb2JhbCksXG4gICAgICAgIC4uLmdldENvbW1vblJldml2ZXJzKGdsb2JhbCksXG4gICAgICAgIFN0ZXBGdW5jdGlvbjogKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdTdGVwIGZ1bmN0aW9ucyBjYW5ub3QgYmUgZGVzZXJpYWxpemVkIGluIGNsaWVudCBjb250ZXh0LidcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGlmIChleHRyYVJldml2ZXJzKSB7XG4gICAgcmV0dXJuIHsgLi4uYmFzZSwgLi4uZXh0cmFSZXZpdmVycyB9IGFzIFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+O1xuICB9XG4gIHJldHVybiBiYXNlIGFzIFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+O1xufVxuXG4vLyAtLS0tIENvZGVjIGltcGxlbWVudGF0aW9uIC0tLS1cblxuZXhwb3J0IGNvbnN0IGRldmFsdWVDb2RlYzogQ29kZWMgPSB7XG4gIGZvcm1hdFByZWZpeDogU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuXG4gIHNlcmlhbGl6ZShcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSxcbiAgICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4gICk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IHJlZHVjZXJzID0gZ2V0UmVkdWNlcnNGb3JNb2RlKFxuICAgICAgbW9kZSxcbiAgICAgIG9wdGlvbnM/Lmdsb2JhbCxcbiAgICAgIG9wdGlvbnM/LmV4dHJhUmVkdWNlcnNcbiAgICApO1xuICAgIGNvbnN0IHN0ciA9IHN0cmluZ2lmeSh2YWx1ZSwgcmVkdWNlcnMpO1xuICAgIHJldHVybiBlbmNvZGVyLmVuY29kZShzdHIpO1xuICB9LFxuXG4gIGRlc2VyaWFsaXplKFxuICAgIGRhdGE6IFVpbnQ4QXJyYXksXG4gICAgbW9kZTogU2VyaWFsaXphdGlvbk1vZGUsXG4gICAgb3B0aW9ucz86IENvZGVjT3B0aW9uc1xuICApOiB1bmtub3duIHtcbiAgICBjb25zdCByZXZpdmVycyA9IGdldFJldml2ZXJzRm9yTW9kZShcbiAgICAgIG1vZGUsXG4gICAgICBvcHRpb25zPy5nbG9iYWwsXG4gICAgICBvcHRpb25zPy5leHRyYVJldml2ZXJzXG4gICAgKTtcbiAgICBjb25zdCBzdHIgPSBkZWNvZGVyLmRlY29kZShkYXRhKTtcbiAgICByZXR1cm4gcGFyc2Uoc3RyLCByZXZpdmVycyk7XG4gIH0sXG5cbiAgZGVzZXJpYWxpemVMZWdhY3koXG4gICAgZGF0YTogdW5rbm93bixcbiAgICBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSxcbiAgICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4gICk6IHVua25vd24ge1xuICAgIGNvbnN0IHJldml2ZXJzID0gZ2V0UmV2aXZlcnNGb3JNb2RlKFxuICAgICAgbW9kZSxcbiAgICAgIG9wdGlvbnM/Lmdsb2JhbCxcbiAgICAgIG9wdGlvbnM/LmV4dHJhUmV2aXZlcnNcbiAgICApO1xuICAgIHJldHVybiB1bmZsYXR0ZW4oZGF0YSBhcyBhbnlbXSwgcmV2aXZlcnMpO1xuICB9LFxufTtcbiJdfQ==
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMtZGV2YWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL2NvZGVjLWRldmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV0RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsR0FDdkIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQWdDLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRS9FLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUVsQyxpREFBaUQ7QUFFakQsU0FBUyxrQkFBa0IsQ0FDekIsSUFBdUIsRUFDdkIsU0FBOEIsVUFBVSxFQUN4QyxhQUFtRDtJQUVuRCxJQUFJLElBQXVCLENBQUM7SUFDNUIsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssVUFBVTtZQUNiLGlGQUFpRjtZQUNqRixJQUFJLEdBQUc7Z0JBQ0wsR0FBRyxnQkFBZ0IsRUFBRTtnQkFDckIsR0FBRyxzQkFBc0IsRUFBRTtnQkFDM0IsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7YUFDN0IsQ0FBQztZQUNGLE1BQU07UUFDUixLQUFLLE1BQU07WUFDVCxJQUFJLEdBQUc7Z0JBQ0wsR0FBRyxnQkFBZ0IsRUFBRTtnQkFDckIsR0FBRyxpQkFB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QUNKLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLGFBQWEsQ0FDdkIsQ0FBQztRQUNGLE9BQU8sU0FBUyxDQUFDLElBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGV2YWx1ZSBjb2RlYyBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBVc2VzIHRoZSBgZGV2YWx1ZWAgbGlicmFyeSBmb3Igc2VyaWFsaXphdGlvbi4gSGFuZGxlcyBjdXN0b20gdHlwZXMgdmlhXG4gKiByZWR1Y2VycyAoc2VyaWFsaXplKSBhbmQgcmV2aXZlcnMgKGRlc2VyaWFsaXplKSB3aGljaCBhcmUgY29tcG9zZWRcbiAqIGludGVybmFsbHkgYmFzZWQgb24gdGhlIHNlcmlhbGl6YXRpb24gbW9kZS5cbiAqXG4gKiBUaGUgcmVkdWNlci9yZXZpdmVyIHBhdHRlcm4gaXMgc3BlY2lmaWMgdG8gZGV2YWx1ZSDigJQgb3RoZXIgY29kZWNzXG4gKiAoQ0JPUiwgSlNPTikgd291bGQgaGFuZGxlIHR5cGVzIGRpZmZlcmVudGx5IChlLmcuIENCT1Igc3VwcG9ydHMgRGF0ZSxcbiAqIHR5cGVkIGFycmF5cywgTWFwLCBTZXQgbmF0aXZlbHkpLlxuICovXG5cbmltcG9ydCB7IHBhcnNlLCBzdHJpbmdpZnksIHVuZmxhdHRlbiB9IGZyb20gJ2RldmFsdWUnO1xuaW1wb3J0IHR5cGUgeyBDb2RlYywgQ29kZWNPcHRpb25zLCBTZXJpYWxpemF0aW9uTW9kZSB9IGZyb20gJy4vY29kZWMuanMnO1xuaW1wb3J0IHsgaGFyZGVuZWRTdHJpbmdpZnlPcGVyYXRpb25zLCB3aXRoR3Vlc3RDb2RlU3RhdHMgfSBmcm9tICcuL2hhcmRlbmVkLmpzJztcbmltcG9ydCB7IGdldENsYXNzUmVkdWNlcnMsIGdldENsYXNzUmV2aXZlcnMgfSBmcm9tICcuL3JlZHVjZXJzL2NsYXNzLmpzJztcbmltcG9ydCB7IGdldENvbW1vblJlZHVjZXJzLCBnZXRDb21tb25SZXZpdmVycyB9IGZyb20gJy4vcmVkdWNlcnMvY29tbW9uLmpzJztcbmltcG9ydCB7XG4gIGdldFN0ZXBGdW5jdGlvblJlZHVjZXIsXG4gIGdldFN0ZXBGdW5jdGlvblJldml2ZXIsXG59IGZyb20gJy4vcmVkdWNlcnMvc3RlcC1mdW5jdGlvbi5qcyc7XG5pbXBvcnQgeyB0eXBlIFJlZHVjZXJzLCB0eXBlIFJldml2ZXJzLCBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbmNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcblxuLy8gLS0tLSBSZWR1Y2VyL1Jldml2ZXIgY29tcG9zaXRpb24gcGVyIG1vZGUgLS0tLVxuXG5mdW5jdGlvbiBnZXRSZWR1Y2Vyc0Zvck1vZGUoXG4gIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlLFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzLFxuICBleHRyYVJlZHVjZXJzPzogUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT5cbik6IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+IHtcbiAgbGV0IGJhc2U6IFBhcnRpYWw8UmVkdWNlcnM+O1xuICBzd2l0Y2ggKG1vZGUpIHtcbiAgICBjYXNlICd3b3JrZmxvdyc6XG4gICAgICAvLyBDbGFzcy9JbnN0YW5jZSBNVVNUIGNvbWUgYmVmb3JlIGNvbW1vbiAoZmlyc3QtbWF0Y2gtd2lucyBmb3IgRXJyb3Igc3ViY2xhc3NlcylcbiAgICAgIGJhc2UgPSB7XG4gICAgICAgIC4uLmdldENsYXNzUmVkdWNlcnMoKSxcbiAgICAgICAgLi4uZ2V0U3RlcEZ1bmN0aW9uUmVkdWNlcigpLFxuICAgICAgICAuLi5nZXRDb21tb25SZWR1Y2VycyhnbG9iYWwpLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3N0ZXAnOlxuICAgICAgYmFzZSA9IHtcbiAgICAgICAgLi4uZ2V0Q2xhc3NSZWR1Y2VycygpLFxuICAgICAgICAuLi5nZXRDb21tb25SZWR1Y2VycyhnbG9iYWwpLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NsaWVudCc6XG4gICAgICBiYXNlID0ge1xuICAgICAgICAuLi5nZXRDbGFzc1JlZHVjZXJzKCksXG4gICAgICAgIC4uLmdldENvbW1vblJlZHVjZXJzKGdsb2JhbCksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gIH1cbiAgaWYgKGV4dHJhUmVkdWNlcnMpIHtcbiAgICByZXR1cm4geyAuLi5iYXNlLCAuLi5leHRyYVJlZHVjZXJzIH0gYXMgUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT47XG4gIH1cbiAgcmV0dXJuIGJhc2UgYXMgUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT47XG59XG5cbmZ1bmN0aW9uIGdldFJldml2ZXJzRm9yTW9kZShcbiAgbW9kZTogU2VyaWFsaXphdGlvbk1vZGUsXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXMsXG4gIGV4dHJhUmV2aXZlcnM/OiBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PlxuKTogUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT4ge1xuICBsZXQgYmFzZTogUGFydGlhbDxSZXZpdmVycz47XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgJ3dvcmtmbG93JzpcbiAgICAgIGJhc2UgPSB7XG4gICAgICAgIC4uLmdldENsYXNzUmV2aXZlcnMoZ2xvYmFsKSxcbiAgICAgICAgLi4uZ2V0U3RlcEZ1bmN0aW9uUmV2aXZlcihnbG9iYWwpLFxuICAgICAgICAuLi5nZXRDb21tb25SZXZpdmVycyhnbG9iYWwpLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3N0ZXAnOlxuICAgICAgYmFzZSA9IHtcbiAgICAgICAgLi4uZ2V0Q2xhc3NSZXZpdmVycyhnbG9iYWwpLFxuICAgICAgICAuLi5nZXRDb21tb25SZXZpdmVycyhnbG9iYWwpLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NsaWVudCc6XG4gICAgICBiYXNlID0ge1xuICAgICAgICAuLi5nZXRDbGFzc1Jldml2ZXJzKGdsb2JhbCksXG4gICAgICAgIC4uLmdldENvbW1vblJldml2ZXJzKGdsb2JhbCksXG4gICAgICAgIFN0ZXBGdW5jdGlvbjogKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdTdGVwIGZ1bmN0aW9ucyBjYW5ub3QgYmUgZGVzZXJpYWxpemVkIGluIGNsaWVudCBjb250ZXh0LidcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGlmIChleHRyYVJldml2ZXJzKSB7XG4gICAgcmV0dXJuIHsgLi4uYmFzZSwgLi4uZXh0cmFSZXZpdmVycyB9IGFzIFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+O1xuICB9XG4gIHJldHVybiBiYXNlIGFzIFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+O1xufVxuXG4vLyAtLS0tIENvZGVjIGltcGxlbWVudGF0aW9uIC0tLS1cblxuZXhwb3J0IGNvbnN0IGRldmFsdWVDb2RlYzogQ29kZWMgPSB7XG4gIGZvcm1hdFByZWZpeDogU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuXG4gIHNlcmlhbGl6ZShcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSxcbiAgICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4gICk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IHJlZHVjZXJzID0gZ2V0UmVkdWNlcnNGb3JNb2RlKFxuICAgICAgbW9kZSxcbiAgICAgIG9wdGlvbnM/Lmdsb2JhbCxcbiAgICAgIG9wdGlvbnM/LmV4dHJhUmVkdWNlcnNcbiAgICApO1xuICAgIC8vIEhhcmRlbmVkIG9wZXJhdGlvbnM6IGRldmFsdWUncyBvd24gaW50cm9zcGVjdGlvbiAoY2xhc3NpZmljYXRpb24sXG4gICAgLy8gYnVpbHQtaW4gZXh0cmFjdGlvbiwgcHJvcGVydHkgcmVhZHMpIGdvZXMgdGhyb3VnaCBjYXB0dXJlZCBob3N0XG4gICAgLy8gaW50cmluc2ljcyBhbmQgZGVzY3JpcHRvciByZWFkcywgc28gc2VyaWFsaXppbmcgYSB2YWx1ZSBjb25zdHJ1Y3RlZFxuICAgIC8vIGluc2lkZSBhIHdvcmtmbG93IFZNIGNhbm5vdCBleGVjdXRlIHNhbmRib3ggY29kZSBiZWhpbmQgb3VyIGJhY2suXG4gICAgLy8gV2hlcmUgd29ya2Zsb3cgY29kZSBtdXN0IHJ1biAoZ2V0dGVycywgcHJveGllcywgY3VzdG9tIHNlcmlhbGl6ZXJzKSxcbiAgICAvLyB0aGUgZXhlY3V0aW9uIGlzIHJlY29yZGVkIGludG8gYG9wdGlvbnMuZ3Vlc3RDb2RlU3RhdHNgLlxuICAgIGNvbnN0IHN0ciA9IHdpdGhHdWVzdENvZGVTdGF0cyhvcHRpb25zPy5ndWVzdENvZGVTdGF0cywgKCkgPT5cbiAgICAgIHN0cmluZ2lmeSh2YWx1ZSwgcmVkdWNlcnMsIHsgb3BlcmF0aW9uczogaGFyZGVuZWRTdHJpbmdpZnlPcGVyYXRpb25zIH0pXG4gICAgKTtcbiAgICByZXR1cm4gZW5jb2Rlci5lbmNvZGUoc3RyKTtcbiAgfSxcblxuICBkZXNlcmlhbGl6ZShcbiAgICBkYXRhOiBVaW50OEFycmF5LFxuICAgIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlLFxuICAgIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbiAgKTogdW5rbm93biB7XG4gICAgY29uc3QgcmV2aXZlcnMgPSBnZXRSZXZpdmVyc0Zvck1vZGUoXG4gICAgICBtb2RlLFxuICAgICAgb3B0aW9ucz8uZ2xvYmFsLFxuICAgICAgb3B0aW9ucz8uZXh0cmFSZXZpdmVyc1xuICAgICk7XG4gICAgY29uc3Qgc3RyID0gZGVjb2Rlci5kZWNvZGUoZGF0YSk7XG4gICAgcmV0dXJuIHBhcnNlKHN0ciwgcmV2aXZlcnMpO1xuICB9LFxuXG4gIGRlc2VyaWFsaXplTGVnYWN5KFxuICAgIGRhdGE6IHVua25vd24sXG4gICAgbW9kZTogU2VyaWFsaXphdGlvbk1vZGUsXG4gICAgb3B0aW9ucz86IENvZGVjT3B0aW9uc1xuICApOiB1bmtub3duIHtcbiAgICBjb25zdCByZXZpdmVycyA9IGdldFJldml2ZXJzRm9yTW9kZShcbiAgICAgIG1vZGUsXG4gICAgICBvcHRpb25zPy5nbG9iYWwsXG4gICAgICBvcHRpb25zPy5leHRyYVJldml2ZXJzXG4gICAgKTtcbiAgICByZXR1cm4gdW5mbGF0dGVuKGRhdGEgYXMgYW55W10sIHJldml2ZXJzKTtcbiAgfSxcbn07XG4iXX0=
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* plain objects). No Date, Map, Set, typed arrays, etc.
|
|
15
15
|
*/
|
|
16
16
|
import type { CompressionStats } from './compression.js';
|
|
17
|
+
import type { GuestCodeStats } from './hardened.js';
|
|
17
18
|
import type { FormatPrefix } from './types.js';
|
|
18
19
|
/**
|
|
19
20
|
* The serialization mode determines which types are supported and how
|
|
@@ -67,6 +68,22 @@ export interface CodecOptions {
|
|
|
67
68
|
* Used by the dehydrate/hydrate wrappers to emit OTel span attributes.
|
|
68
69
|
*/
|
|
69
70
|
compressionStats?: CompressionStats;
|
|
71
|
+
/**
|
|
72
|
+
* Optional sink populated by the hardened serializer with every
|
|
73
|
+
* workflow (guest) code execution that serialization could not avoid —
|
|
74
|
+
* getters, proxies, and custom `[WORKFLOW_SERIALIZE]` methods. A non-empty
|
|
75
|
+
* `executions` array means serialization may have perturbed VM state
|
|
76
|
+
* (it runs exactly once per payload and is never replayed, so any side
|
|
77
|
+
* effect it triggers diverges from replay).
|
|
78
|
+
*
|
|
79
|
+
* Every dehydrate path already reports this as span attributes. Passing a
|
|
80
|
+
* sink is for callers that need the executions *programmatically* — a
|
|
81
|
+
* retained-VM gate deciding whether the VM is still reusable. No caller
|
|
82
|
+
* does that yet, so nothing in the runtime currently passes one.
|
|
83
|
+
*
|
|
84
|
+
* Serialize side only.
|
|
85
|
+
*/
|
|
86
|
+
guestCodeStats?: GuestCodeStats;
|
|
70
87
|
}
|
|
71
88
|
export interface Codec {
|
|
72
89
|
/** The 4-character format prefix identifier (e.g. "devl", "cbor", "json") */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/serialization/codec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IAEpD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IAEpD;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/serialization/codec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IAEpD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IAEpD;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,KAAK;IACpB,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAEpC;;;;;;;;;OASG;IACH,SAAS,CACP,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,UAAU,CAAC;IAEd;;;;;;;;;OASG;IACH,WAAW,CACT,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC;IAEX;;;;;;;;;OASG;IACH,iBAAiB,CAAC,CAChB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC;CACZ"}
|
|
@@ -14,4 +14,4 @@
|
|
|
14
14
|
* plain objects). No Date, Map, Set, typed arrays, etc.
|
|
15
15
|
*/
|
|
16
16
|
export {};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi9jb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29kZWMgaW50ZXJmYWNlIGZvciBzZXJpYWxpemF0aW9uIGZvcm1hdHMuXG4gKlxuICogQSBjb2RlYyBoYW5kbGVzIHRoZSBjb3JlIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBsb2dpYyBmb3IgYSBzcGVjaWZpY1xuICogd2lyZSBmb3JtYXQgKGRldmFsdWUsIENCT1IsIEpTT04sIGV0Yy4pLiBFYWNoIGNvZGVjIGlzIHJlc3BvbnNpYmxlXG4gKiBmb3IgaGFuZGxpbmcgYWxsIHN1cHBvcnRlZCBkYXRhIHR5cGVzIGludGVybmFsbHkg4oCUIHRoZSBjYWxsZXIgb25seVxuICogc3BlY2lmaWVzIHdoaWNoIHNlcmlhbGl6YXRpb24gbW9kZSB0byB1c2UuXG4gKlxuICogLSAqKmRldmFsdWUqKjogVXNlcyBjdXN0b20gcmVkdWNlcnMvcmV2aXZlcnMgZm9yIERhdGUsIEVycm9yLCBNYXAsIFNldCxcbiAqICAgdHlwZWQgYXJyYXlzLCBjbGFzcyBpbnN0YW5jZXMsIGV0Yy5cbiAqIC0gKipjYm9yKio6IFdvdWxkIGhhbmRsZSBEYXRlLCB0eXBlZCBhcnJheXMsIE1hcCwgU2V0IG5hdGl2ZWx5IHZpYSB0aGVcbiAqICAgQ0JPUiB0eXBlIHN5c3RlbS4gQ2xhc3MgaW5zdGFuY2VzIHdvdWxkIHN0aWxsIG5lZWQgY3VzdG9tIGhhbmRsaW5nLlxuICogLSAqKmpzb24qKjogV291bGQgb25seSBzdXBwb3J0IHN0YW5kYXJkIEpTT04gdHlwZXMgKHByaW1pdGl2ZXMsIGFycmF5cyxcbiAqICAgcGxhaW4gb2JqZWN0cykuIE5vIERhdGUsIE1hcCwgU2V0LCB0eXBlZCBhcnJheXMsIGV0Yy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvbXByZXNzaW9uU3RhdHMgfSBmcm9tICcuL2NvbXByZXNzaW9uLmpzJztcbmltcG9ydCB0eXBlIHsgR3Vlc3RDb2RlU3RhdHMgfSBmcm9tICcuL2hhcmRlbmVkLmpzJztcbmltcG9ydCB0eXBlIHsgRm9ybWF0UHJlZml4IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogVGhlIHNlcmlhbGl6YXRpb24gbW9kZSBkZXRlcm1pbmVzIHdoaWNoIHR5cGVzIGFyZSBzdXBwb3J0ZWQgYW5kIGhvd1xuICogdGhleSdyZSBoYW5kbGVkLiBEaWZmZXJlbnQgbW9kZXMgY29tcG9zZSBkaWZmZXJlbnQgc2V0cyBvZiB0eXBlIGhhbmRsZXJzLlxuICpcbiAqIC0gYHdvcmtmbG93YDogUnVucyBpbnNpZGUgdGhlIHdvcmtmbG93IFZNLiBJbmNsdWRlcyBjbGFzcyBzZXJpYWxpemF0aW9uLFxuICogICBzdGVwIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb24uIE5vIHN0cmVhbSBoYW5kbGluZy5cbiAqIC0gYHN0ZXBgOiBSdW5zIGluIHRoZSBzdGVwIGV4ZWN1dG9yIChOb2RlLmpzKS4gSW5jbHVkZXMgY2xhc3Mgc2VyaWFsaXphdGlvbi5cbiAqICAgTm8gc3RlcCBmdW5jdGlvbiBzZXJpYWxpemF0aW9uLiBTdHJlYW0gaGFuZGxpbmcgYXQgY2FsbCBzaXRlcy5cbiAqIC0gYGNsaWVudGA6IFJ1bnMgb24gdGhlIGNsaWVudCBzaWRlLiBJbmNsdWRlcyBjbGFzcyBzZXJpYWxpemF0aW9uLlxuICogICBObyBzdGVwIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb24uIFN0cmVhbSBoYW5kbGluZyBhdCBjYWxsIHNpdGVzLlxuICovXG5leHBvcnQgdHlwZSBTZXJpYWxpemF0aW9uTW9kZSA9ICd3b3JrZmxvdycgfCAnc3RlcCcgfCAnY2xpZW50JztcblxuLyoqXG4gKiBPcHRpb25zIHBhc3NlZCB0byBjb2RlYyBzZXJpYWxpemUvZGVzZXJpYWxpemUgdG8gc3VwcG9ydCBWTS1jb250ZXh0XG4gKiBzZXJpYWxpemF0aW9uIGFuZCBtb2RlLXNwZWNpZmljIHR5cGUgaGFuZGxpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZWNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBnbG9iYWwgb2JqZWN0IHRvIHVzZSBmb3IgYGluc3RhbmNlb2ZgIGNoZWNrcyBhbmQgY29uc3RydWN0b3JzLlxuICAgKiBEZWZhdWx0cyB0byBgZ2xvYmFsVGhpc2AuIE11c3QgYmUgc2V0IHRvIHRoZSBWTSdzIGdsb2JhbCB3aGVuXG4gICAqIHNlcmlhbGl6aW5nL2Rlc2VyaWFsaXppbmcgZGF0YSB0aGF0IGNyb3NzZXMgVk0gYm91bmRhcmllcy5cbiAgICovXG4gIGdsb2JhbD86IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcmVkdWNlcnMgdG8gbWVyZ2UgaW50byB0aGUgbW9kZSdzIGRlZmF1bHQgcmVkdWNlcnMuXG4gICAqIFVzZWQgYnkgZGVoeWRyYXRlL2h5ZHJhdGUgZnVuY3Rpb25zIHRoYXQgbmVlZCBzdHJlYW0gaGFuZGxpbmdcbiAgICogb3Igb3RoZXIgbW9kZS1zcGVjaWZpYyB0eXBlIHJlZHVjZXJzLlxuICAgKi9cbiAgZXh0cmFSZWR1Y2Vycz86IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+O1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHJldml2ZXJzIHRvIG1lcmdlIGludG8gdGhlIG1vZGUncyBkZWZhdWx0IHJldml2ZXJzLlxuICAgKiBVc2VkIGJ5IGRlaHlkcmF0ZS9oeWRyYXRlIGZ1bmN0aW9ucyB0aGF0IG5lZWQgc3RyZWFtIGhhbmRsaW5nXG4gICAqIG9yIG90aGVyIG1vZGUtc3BlY2lmaWMgdHlwZSByZXZpdmVycy5cbiAgICovXG4gIGV4dHJhUmV2aXZlcnM/OiBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBjb21wcmVzcyB0aGUgc2VyaWFsaXplZCBwYXlsb2FkICh3cml0ZSBzaWRlIG9ubHk7IHpzdGQgaXNcbiAgICogcHJlZmVycmVkIGFuZCBnemlwIGlzIHRoZSBwb3J0YWJsZSBmYWxsYmFjaykuIFJlYWRzIGRpc3BhdGNoIGNvbXByZXNzZWRcbiAgICogcGF5bG9hZHMgYnkgZm9ybWF0IHByZWZpeDsgenN0ZCBkZWNvZGluZyBzdGlsbCByZXF1aXJlcyBydW50aW1lIG9yXG4gICAqIHJlZ2lzdGVyZWQgZGVjb2RlciBzdXBwb3J0LiBNdXN0IG9ubHkgYmUgZW5hYmxlZCB3aGVuIHRoZSB0YXJnZXQgcnVuXG4gICAqIHN1cHBvcnRzIGNvbXByZXNzZWQgcGF5bG9hZHM6XG4gICAqIHJ1biBzcGVjVmVyc2lvbiA+PSBTUEVDX1ZFUlNJT05fU1VQUE9SVFNfQ09NUFJFU1NJT04sIGFuZCBmb3JcbiAgICogY3Jvc3MtZGVwbG95bWVudCB3cml0ZXMgdGhlIHRhcmdldCBkZXBsb3ltZW50J3MgY2FwYWJpbGl0aWVzIChzZWVcbiAgICogYGdldFJ1bkNhcGFiaWxpdGllc2AgaW4gY2FwYWJpbGl0aWVzLnRzKS4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIGNvbXByZXNzaW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdGVsZW1ldHJ5IHNpbmsgcG9wdWxhdGVkIGJ5IHRoZSBjb21wcmVzc2lvbiBsYXllciB3aXRoIHdoYXRcbiAgICogaXQgZGlkIHRvIHRoZSBwYXlsb2FkICh3aGV0aGVyIGl0IGNvbXByZXNzZWQsIGxvZ2ljYWwgdnMgc3RvcmVkIHNpemUpLlxuICAgKiBVc2VkIGJ5IHRoZSBkZWh5ZHJhdGUvaHlkcmF0ZSB3cmFwcGVycyB0byBlbWl0IE9UZWwgc3BhbiBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgY29tcHJlc3Npb25TdGF0cz86IENvbXByZXNzaW9uU3RhdHM7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHNpbmsgcG9wdWxhdGVkIGJ5IHRoZSBoYXJkZW5lZCBzZXJpYWxpemVyIHdpdGggZXZlcnlcbiAgICogd29ya2Zsb3cgKGd1ZXN0KSBjb2RlIGV4ZWN1dGlvbiB0aGF0IHNlcmlhbGl6YXRpb24gY291bGQgbm90IGF2b2lkIOKAlFxuICAgKiBnZXR0ZXJzLCBwcm94aWVzLCBhbmQgY3VzdG9tIGBbV09SS0ZMT1dfU0VSSUFMSVpFXWAgbWV0aG9kcy4gQSBub24tZW1wdHlcbiAgICogYGV4ZWN1dGlvbnNgIGFycmF5IG1lYW5zIHNlcmlhbGl6YXRpb24gbWF5IGhhdmUgcGVydHVyYmVkIFZNIHN0YXRlXG4gICAqIChpdCBydW5zIGV4YWN0bHkgb25jZSBwZXIgcGF5bG9hZCBhbmQgaXMgbmV2ZXIgcmVwbGF5ZWQsIHNvIGFueSBzaWRlXG4gICAqIGVmZmVjdCBpdCB0cmlnZ2VycyBkaXZlcmdlcyBmcm9tIHJlcGxheSkuXG4gICAqXG4gICAqIEV2ZXJ5IGRlaHlkcmF0ZSBwYXRoIGFscmVhZHkgcmVwb3J0cyB0aGlzIGFzIHNwYW4gYXR0cmlidXRlcy4gUGFzc2luZyBhXG4gICAqIHNpbmsgaXMgZm9yIGNhbGxlcnMgdGhhdCBuZWVkIHRoZSBleGVjdXRpb25zICpwcm9ncmFtbWF0aWNhbGx5KiDigJQgYVxuICAgKiByZXRhaW5lZC1WTSBnYXRlIGRlY2lkaW5nIHdoZXRoZXIgdGhlIFZNIGlzIHN0aWxsIHJldXNhYmxlLiBObyBjYWxsZXJcbiAgICogZG9lcyB0aGF0IHlldCwgc28gbm90aGluZyBpbiB0aGUgcnVudGltZSBjdXJyZW50bHkgcGFzc2VzIG9uZS5cbiAgICpcbiAgICogU2VyaWFsaXplIHNpZGUgb25seS5cbiAgICovXG4gIGd1ZXN0Q29kZVN0YXRzPzogR3Vlc3RDb2RlU3RhdHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZWMge1xuICAvKiogVGhlIDQtY2hhcmFjdGVyIGZvcm1hdCBwcmVmaXggaWRlbnRpZmllciAoZS5nLiBcImRldmxcIiwgXCJjYm9yXCIsIFwianNvblwiKSAqL1xuICByZWFkb25seSBmb3JtYXRQcmVmaXg6IEZvcm1hdFByZWZpeDtcblxuICAvKipcbiAgICogU2VyaWFsaXplIGEgdmFsdWUgdG8gYnl0ZXMuXG4gICAqXG4gICAqIFRoZSBjb2RlYyBoYW5kbGVzIGFsbCBzdXBwb3J0ZWQgdHlwZXMgaW50ZXJuYWxseSBiYXNlZCBvbiB0aGUgbW9kZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gbW9kZSAtIFRoZSBzZXJpYWxpemF0aW9uIG1vZGVcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBnbG9iYWwsIGV4dHJhIHJlZHVjZXJzL3Jldml2ZXJzXG4gICAqIEByZXR1cm5zIFRoZSBzZXJpYWxpemVkIHBheWxvYWQgKHdpdGhvdXQgZm9ybWF0IHByZWZpeClcbiAgICovXG4gIHNlcmlhbGl6ZShcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSxcbiAgICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4gICk6IFVpbnQ4QXJyYXk7XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplIGJ5dGVzIGJhY2sgdG8gYSB2YWx1ZS5cbiAgICpcbiAgICogVGhlIGNvZGVjIGhhbmRsZXMgYWxsIHN1cHBvcnRlZCB0eXBlcyBpbnRlcm5hbGx5IGJhc2VkIG9uIHRoZSBtb2RlLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBzZXJpYWxpemVkIHBheWxvYWQgKHdpdGhvdXQgZm9ybWF0IHByZWZpeClcbiAgICogQHBhcmFtIG1vZGUgLSBUaGUgc2VyaWFsaXphdGlvbiBtb2RlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgZ2xvYmFsLCBleHRyYSByZXZpdmVyc1xuICAgKiBAcmV0dXJucyBUaGUgZGVzZXJpYWxpemVkIHZhbHVlXG4gICAqL1xuICBkZXNlcmlhbGl6ZShcbiAgICBkYXRhOiBVaW50OEFycmF5LFxuICAgIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlLFxuICAgIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbiAgKTogdW5rbm93bjtcblxuICAvKipcbiAgICogRGVzZXJpYWxpemUgbGVnYWN5IChwcmUtZm9ybWF0LXByZWZpeCkgZGF0YS5cbiAgICogVXNlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBzcGVjVmVyc2lvbiAxIHJ1bnMgdGhhdCBzdG9yZWRcbiAgICogZGF0YSBhcyBwbGFpbiBKU09OIGFycmF5cyBpbnN0ZWFkIG9mIGJpbmFyeS5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgbGVnYWN5IGRhdGFcbiAgICogQHBhcmFtIG1vZGUgLSBUaGUgc2VyaWFsaXphdGlvbiBtb2RlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgZ2xvYmFsLCBleHRyYSByZXZpdmVyc1xuICAgKiBAcmV0dXJucyBUaGUgZGVzZXJpYWxpemVkIHZhbHVlXG4gICAqL1xuICBkZXNlcmlhbGl6ZUxlZ2FjeT8oXG4gICAgZGF0YTogdW5rbm93bixcbiAgICBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSxcbiAgICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4gICk6IHVua25vd247XG59XG4iXX0=
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hardened introspection for serializing values that may originate inside a
|
|
3
|
+
* workflow VM (`node:vm`) sandbox realm.
|
|
4
|
+
*
|
|
5
|
+
* Serialization runs on the host, but the values it inspects were
|
|
6
|
+
* constructed by workflow code — so a naive dynamic operation like
|
|
7
|
+
* `value.toISOString()`, `Array.from(map)`, or `Object.prototype.toString`
|
|
8
|
+
* dispatches into the sandbox realm and executes workflow code (patched
|
|
9
|
+
* prototype methods, getters, proxy traps, `Symbol.toStringTag` accessors).
|
|
10
|
+
* That is a determinism hazard: serialization happens exactly once per
|
|
11
|
+
* payload (never again on replay), so any workflow-visible side effect it
|
|
12
|
+
* triggers exists only on the live execution path and diverges from replay.
|
|
13
|
+
*
|
|
14
|
+
* This module makes serialization side-effect free wherever the data allows
|
|
15
|
+
* it, and *observable* where it does not:
|
|
16
|
+
*
|
|
17
|
+
* - **Classification** uses engine-level brand checks (`node:util` `types`,
|
|
18
|
+
* internal-slot probes) instead of `instanceof` / `Object.prototype.toString`
|
|
19
|
+
* — immune to `Symbol.hasInstance`, `Symbol.toStringTag`, and reassigned
|
|
20
|
+
* globals.
|
|
21
|
+
* - **Extraction** goes through intrinsics captured at module load (host
|
|
22
|
+
* boot, before any workflow code runs). Internal slots are realm-agnostic,
|
|
23
|
+
* so host intrinsics read VM-realm objects without touching the sandbox's
|
|
24
|
+
* (patchable) prototypes.
|
|
25
|
+
* - **Property access** reads through descriptors, so plain data never
|
|
26
|
+
* invokes anything. Where workflow code *must* run because the data itself
|
|
27
|
+
* lives behind it — getters, proxies, custom `[WORKFLOW_SERIALIZE]`
|
|
28
|
+
* methods, `toString()` on toStringTag-branded objects (e.g. Temporal
|
|
29
|
+
* polyfills) — the execution is preserved for compatibility and recorded
|
|
30
|
+
* in the active {@link GuestCodeStats} sink, so callers (e.g. a retained-VM
|
|
31
|
+
* gate) can react.
|
|
32
|
+
*
|
|
33
|
+
* **Recording is not prevention.** For the recorded cases the determinism
|
|
34
|
+
* hazard is still live: a getter that calls `Math.random()` advances the
|
|
35
|
+
* run's seeded PRNG during serialization, and because serialization happens
|
|
36
|
+
* exactly once and is never replayed, every subsequent draw — including the
|
|
37
|
+
* correlation ids derived from that stream — shifts relative to replay. The
|
|
38
|
+
* report is the only trace of that; acting on it (warning, demoting a
|
|
39
|
+
* retained VM to replay) is left to the caller.
|
|
40
|
+
*
|
|
41
|
+
* The recorder is ambient module state, set for the duration of a
|
|
42
|
+
* synchronous `stringify` call via {@link withGuestCodeStats}. devalue's
|
|
43
|
+
* `stringify` is fully synchronous, so this is safe without async context.
|
|
44
|
+
*/
|
|
45
|
+
import type { StringifyOperations } from 'devalue';
|
|
46
|
+
/**
|
|
47
|
+
* A single instance of workflow (guest) code executing during serialization.
|
|
48
|
+
*/
|
|
49
|
+
export interface GuestCodeExecution {
|
|
50
|
+
/**
|
|
51
|
+
* What forced the execution:
|
|
52
|
+
* - `getter`: an accessor property was invoked to read data
|
|
53
|
+
* - `proxy`: a proxy was introspected, firing its traps. Note this also
|
|
54
|
+
* implies a **shape change**: brand checks answer "not that type" for a
|
|
55
|
+
* proxy, so a proxied `Map` serializes as a plain object rather than as a
|
|
56
|
+
* `Map`, and this report is the only evidence of it. (Such values were
|
|
57
|
+
* never serializable before — the internal-slot reads in the previous
|
|
58
|
+
* implementation threw on them — so the shape change replaces a crash,
|
|
59
|
+
* but it is silent.)
|
|
60
|
+
* - `method`: a workflow-defined function was invoked (e.g. a custom
|
|
61
|
+
* `[WORKFLOW_SERIALIZE]` serializer, `toString()` on a
|
|
62
|
+
* `Symbol.toStringTag`-branded object, a duck-typed `getTime()`, or a
|
|
63
|
+
* `__closureVarsFn` this package did not generate)
|
|
64
|
+
*/
|
|
65
|
+
kind: 'getter' | 'proxy' | 'method';
|
|
66
|
+
/** Best-effort context: the property key, method name, or tag involved. */
|
|
67
|
+
detail?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Mutable sink recording every workflow-code execution serialization could
|
|
71
|
+
* not avoid. Pass via `CodecOptions.guestCodeStats`; consumers that retain
|
|
72
|
+
* the VM across steps can use a non-empty `executions` array as a signal
|
|
73
|
+
* that the VM state may have been perturbed by serialization.
|
|
74
|
+
*/
|
|
75
|
+
export interface GuestCodeStats {
|
|
76
|
+
executions: GuestCodeExecution[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Runs `fn` (synchronously) with `stats` as the active guest-code sink.
|
|
80
|
+
* Nested calls stack correctly; a `null`/`undefined` sink disables
|
|
81
|
+
* recording without disabling hardening.
|
|
82
|
+
*/
|
|
83
|
+
export declare function withGuestCodeStats<T>(stats: GuestCodeStats | undefined, fn: () => T): T;
|
|
84
|
+
/** Marks a function as having been passed to `useStep`. */
|
|
85
|
+
export declare function markUseStepClosureFn<T extends object>(fn: T): T;
|
|
86
|
+
/** Whether `fn` was marked by {@link markUseStepClosureFn}. */
|
|
87
|
+
export declare function isUseStepClosureFn(fn: unknown): boolean;
|
|
88
|
+
export declare function recordGuestCode(kind: GuestCodeExecution['kind'], detail?: string): void;
|
|
89
|
+
/** `Date.prototype.getDate`, for invalid-date checks. */
|
|
90
|
+
export declare const dateGetDate: (thisArg: unknown) => number;
|
|
91
|
+
/** `Date.prototype.getTime`. */
|
|
92
|
+
export declare const dateGetTime: (thisArg: unknown) => number;
|
|
93
|
+
/** `Date.prototype.toISOString`. */
|
|
94
|
+
export declare const dateToISOString: (thisArg: unknown) => string;
|
|
95
|
+
/** `RegExp.prototype.source` getter. */
|
|
96
|
+
export declare const regExpSource: (value: unknown) => string;
|
|
97
|
+
/** `RegExp.prototype.flags` getter. */
|
|
98
|
+
export declare const regExpFlags: (value: unknown) => string;
|
|
99
|
+
/** `ArrayBuffer.prototype.byteLength` getter (internal slot read). */
|
|
100
|
+
export declare const arrayBufferByteLength: (value: unknown) => number;
|
|
101
|
+
/**
|
|
102
|
+
* Reads `value[key]` with `[[Get]]` semantics, but through descriptors:
|
|
103
|
+
* plain data properties never invoke anything; accessor properties are
|
|
104
|
+
* invoked (the data lives behind them) and recorded; proxies fall back to
|
|
105
|
+
* a plain read (their traps are the only access path) and are recorded.
|
|
106
|
+
*/
|
|
107
|
+
export declare function readProperty(value: unknown, key: PropertyKey): unknown;
|
|
108
|
+
/**
|
|
109
|
+
* `key in value` semantics without firing proxy traps for ordinary
|
|
110
|
+
* objects. Proxies fall back to the `in` operator and are recorded.
|
|
111
|
+
*/
|
|
112
|
+
export declare function hasProperty(value: unknown, key: PropertyKey): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* `value instanceof C` semantics for a known `C.prototype`, without
|
|
115
|
+
* consulting `Symbol.hasInstance` (which workflow code can define). Used
|
|
116
|
+
* for host classes that are injected into the sandbox (Headers, URL,
|
|
117
|
+
* URLSearchParams, DOMException), where the instances — from any realm the
|
|
118
|
+
* host handed the class to — carry the host prototype in their chain.
|
|
119
|
+
*
|
|
120
|
+
* Proxies are walked rather than rejected: `Reflect.getPrototypeOf` fires
|
|
121
|
+
* the proxy's `getPrototypeOf` trap, matching `instanceof` semantics, and
|
|
122
|
+
* real values depend on that — Next.js hands the runtime a proxied
|
|
123
|
+
* `NextRequest`, and answering "not a Request" for it would silently break
|
|
124
|
+
* webhooks. The traps are guest-observable, so the proxy is recorded.
|
|
125
|
+
*/
|
|
126
|
+
export declare function isInstanceOfPrototype(value: unknown, prototype: object | undefined): boolean;
|
|
127
|
+
/** `URL.prototype.href` getter. */
|
|
128
|
+
export declare function urlHref(value: URL): string;
|
|
129
|
+
/** `URLSearchParams.prototype.toString` — returns `''` iff empty. */
|
|
130
|
+
export declare function urlSearchParamsToString(value: URLSearchParams): string;
|
|
131
|
+
/**
|
|
132
|
+
* Iterates a Headers instance through the captured host iterator, so the
|
|
133
|
+
* iterator object — and its `next` — are host-realm.
|
|
134
|
+
*/
|
|
135
|
+
export declare function headersToEntries(value: Headers): [string, string][];
|
|
136
|
+
/**
|
|
137
|
+
* Iterates a genuine Map's entries entirely through host intrinsics: the
|
|
138
|
+
* iterator object is created by the host `Map.prototype.entries`, so its
|
|
139
|
+
* realm — and therefore its `next` — is the host's, not the sandbox's.
|
|
140
|
+
*/
|
|
141
|
+
export declare function mapToEntries(value: Map<unknown, unknown>): [unknown, unknown][];
|
|
142
|
+
/** See {@link mapToEntries}. */
|
|
143
|
+
export declare function setToValues(value: Set<unknown>): unknown[];
|
|
144
|
+
/**
|
|
145
|
+
* The bytes of an `ArrayBufferView`, read via internal-slot getters —
|
|
146
|
+
* own-property shadowing and prototype patches cannot change which bytes
|
|
147
|
+
* are serialized.
|
|
148
|
+
*/
|
|
149
|
+
export declare function viewInfo(value: ArrayBufferView): {
|
|
150
|
+
buffer: ArrayBufferLike;
|
|
151
|
+
byteOffset: number;
|
|
152
|
+
byteLength: number;
|
|
153
|
+
};
|
|
154
|
+
export declare const hardenedStringifyOperations: Partial<StringifyOperations>;
|
|
155
|
+
//# sourceMappingURL=hardened.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hardened.d.ts","sourceRoot":"","sources":["../../src/serialization/hardened.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAKnD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;OAcG;IACH,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAKD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAWH;AAkBD,2DAA2D;AAC3D,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAG/D;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAEvD;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAChC,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,CAKN;AAwCD,yDAAyD;AACzD,eAAO,MAAM,WAAW,8BAAsC,CAAC;AAC/D,gCAAgC;AAChC,eAAO,MAAM,WAAW,8BAAsC,CAAC;AAC/D,oCAAoC;AACpC,eAAO,MAAM,eAAe,8BAA0C,CAAC;AACvE,wCAAwC;AACxC,eAAO,MAAM,YAAY,UAlBd,OAAO,WAkByD,CAAC;AAC5E,uCAAuC;AACvC,eAAO,MAAM,WAAW,UApBb,OAAO,WAoBuD,CAAC;AAC1E,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,UAtBvB,OAAO,WAyBjB,CAAC;AAiGF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAiCtE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAsBrE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAWT;AASD,mCAAmC;AACnC,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAM1C;AAED,qEAAqE;AACrE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAMtE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAMnE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,GAC3B,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAEtB;AAED,gCAAgC;AAChC,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG;IAChD,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAaA;AAyFD,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAAC,mBAAmB,CAgFpE,CAAC"}
|