footprintjs 10.7.0 → 10.7.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.
@@ -9,11 +9,24 @@
9
9
  * call it (the composite used to keep only `name`/`data` and lost `meta`/`description`).
10
10
  *
11
11
  * A new bundle field is: one member on `RecorderSnapshot` (runner/ExecutionRuntime.ts) and
12
- * one line here. The three `toSnapshot?()` signatures (`ScopeRecorder`, `FlowRecorder`,
12
+ * one line here. The four `toSnapshot?()` signatures (`ScopeRecorder`, `FlowRecorder`,
13
13
  * `CombinedRecorder`, and `EmitRecorder`) all name `RecorderBundle`, so they follow.
14
14
  */
15
15
  import type { RecorderSnapshot } from '../runner/ExecutionRuntime.js';
16
- /** What `toSnapshot()` returns: a snapshot row without the `id` the attach site owns. */
17
- export type RecorderBundle = Omit<RecorderSnapshot, 'id'>;
16
+ /** A snapshot row without the `id` the attach site owns. */
17
+ type BundleFields = Omit<RecorderSnapshot, 'id'>;
18
+ /**
19
+ * What `toSnapshot()` returns: the row's fields, where each OPTIONAL member also takes an
20
+ * explicit `undefined` (required members are unchanged).
21
+ *
22
+ * A declaration emitted without `exactOptionalPropertyTypes` (this library's own build, for one)
23
+ * spells an inferred optional member as `capture?: … | undefined`, and an app compiled WITH the
24
+ * flag must still be able to attach that recorder. `copyBundle` copies field by field, so an
25
+ * explicit `undefined` gives the same row as an absent key. The row, `RecorderSnapshot`, is unchanged.
26
+ */
27
+ export type RecorderBundle = {
28
+ [K in keyof BundleFields]: Pick<BundleFields, K> extends Required<Pick<BundleFields, K>> ? BundleFields[K] : BundleFields[K] | undefined;
29
+ };
18
30
  /** Rebuild `bundle` as the snapshot row for the recorder attached under `id`. */
19
31
  export declare function copyBundle(id: string, bundle: RecorderBundle, includeCapture?: boolean): RecorderSnapshot;
32
+ export {};
@@ -9,7 +9,7 @@
9
9
  * call it (the composite used to keep only `name`/`data` and lost `meta`/`description`).
10
10
  *
11
11
  * A new bundle field is: one member on `RecorderSnapshot` (runner/ExecutionRuntime.ts) and
12
- * one line here. The three `toSnapshot?()` signatures (`ScopeRecorder`, `FlowRecorder`,
12
+ * one line here. The four `toSnapshot?()` signatures (`ScopeRecorder`, `FlowRecorder`,
13
13
  * `CombinedRecorder`, and `EmitRecorder`) all name `RecorderBundle`, so they follow.
14
14
  */
15
15
  import { copyCaptureAcknowledgement } from '../capture/nativeCoverage.js';
@@ -28,4 +28,4 @@ export function copyBundle(id, bundle, includeCapture = false) {
28
28
  ...(capture && { capture }),
29
29
  };
30
30
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JlY29yZGVyL3NuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU0xRSxpRkFBaUY7QUFDakYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxFQUFVLEVBQUUsTUFBc0IsRUFBRSxjQUFjLEdBQUcsS0FBSztJQUNuRixNQUFNLE9BQU8sR0FBRyxjQUFjO1FBQzVCLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUN2RixDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2QsT0FBTztRQUNMLEVBQUU7UUFDRixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7UUFDakIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1FBQy9CLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7UUFDN0MsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtRQUNqQixHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7S0FDNUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHJlY29yZGVyL3NuYXBzaG90LnRzIOKAlCB0aGUgT05FIGNvcGllciBmb3IgYSByZWNvcmRlcidzIGB0b1NuYXBzaG90KClgIGJ1bmRsZSAoRjYpLlxuICpcbiAqIEEgYnVuZGxlIGlzIG5ldmVyIHBhc3NlZCB0aHJvdWdoIGFzIHJldHVybmVkOiBpdCBpcyByZWJ1aWx0IGZpZWxkIGJ5IGZpZWxkLCBzbyBhIHJlY29yZGVyXG4gKiBjYW5ub3Qgc3Bvb2YgaXRzIG93biBgaWRgICh0aGUgZXhlY3V0b3IncywgYW5kIGNvbnN1bWVycyBpbmRleCBieSBpdCkgYW5kIG5vdGhpbmcgaXQgYWRkc1xuICogYmV5b25kIHRoZSBjb250cmFjdCBsZWFrcyBpbnRvIHRoZSBzbmFwc2hvdC4gVGhlIGNvc3QgaXMgdGhhdCBhIGZpZWxkIHRoaXMgY29waWVyIGZvcmdldHNcbiAqIGlzIGRyb3BwZWQgaW4gc2lsZW5jZSDigJQgd2hpY2ggaXMgd2h5IHRoZXJlIGlzIGV4YWN0bHkgb25lIGNvcGllciwgYW5kIHdoeVxuICogYHJ1bm5lci9zbmFwc2hvdC50cyDCtyBjb2xsZWN0UmVjb3JkZXJTbmFwc2hvdHNgIGFuZCBgQ29tcG9zaXRlUmVjb3JkZXIgwrcgdG9TbmFwc2hvdGAgYm90aFxuICogY2FsbCBpdCAodGhlIGNvbXBvc2l0ZSB1c2VkIHRvIGtlZXAgb25seSBgbmFtZWAvYGRhdGFgIGFuZCBsb3N0IGBtZXRhYC9gZGVzY3JpcHRpb25gKS5cbiAqXG4gKiBBIG5ldyBidW5kbGUgZmllbGQgaXM6IG9uZSBtZW1iZXIgb24gYFJlY29yZGVyU25hcHNob3RgIChydW5uZXIvRXhlY3V0aW9uUnVudGltZS50cykgYW5kXG4gKiBvbmUgbGluZSBoZXJlLiBUaGUgdGhyZWUgYHRvU25hcHNob3Q/KClgIHNpZ25hdHVyZXMgKGBTY29wZVJlY29yZGVyYCwgYEZsb3dSZWNvcmRlcmAsXG4gKiBgQ29tYmluZWRSZWNvcmRlcmAsIGFuZCBgRW1pdFJlY29yZGVyYCkgYWxsIG5hbWUgYFJlY29yZGVyQnVuZGxlYCwgc28gdGhleSBmb2xsb3cuXG4gKi9cblxuaW1wb3J0IHsgY29weUNhcHR1cmVBY2tub3dsZWRnZW1lbnQgfSBmcm9tICcuLi9jYXB0dXJlL25hdGl2ZUNvdmVyYWdlLmpzJztcbmltcG9ydCB0eXBlIHsgUmVjb3JkZXJTbmFwc2hvdCB9IGZyb20gJy4uL3J1bm5lci9FeGVjdXRpb25SdW50aW1lLmpzJztcblxuLyoqIFdoYXQgYHRvU25hcHNob3QoKWAgcmV0dXJuczogYSBzbmFwc2hvdCByb3cgd2l0aG91dCB0aGUgYGlkYCB0aGUgYXR0YWNoIHNpdGUgb3ducy4gKi9cbmV4cG9ydCB0eXBlIFJlY29yZGVyQnVuZGxlID0gT21pdDxSZWNvcmRlclNuYXBzaG90LCAnaWQnPjtcblxuLyoqIFJlYnVpbGQgYGJ1bmRsZWAgYXMgdGhlIHNuYXBzaG90IHJvdyBmb3IgdGhlIHJlY29yZGVyIGF0dGFjaGVkIHVuZGVyIGBpZGAuICovXG5leHBvcnQgZnVuY3Rpb24gY29weUJ1bmRsZShpZDogc3RyaW5nLCBidW5kbGU6IFJlY29yZGVyQnVuZGxlLCBpbmNsdWRlQ2FwdHVyZSA9IGZhbHNlKTogUmVjb3JkZXJTbmFwc2hvdCB7XG4gIGNvbnN0IGNhcHR1cmUgPSBpbmNsdWRlQ2FwdHVyZVxuICAgID8gY29weUNhcHR1cmVBY2tub3dsZWRnZW1lbnQoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihidW5kbGUsICdjYXB0dXJlJyk/LnZhbHVlKVxuICAgIDogdW5kZWZpbmVkO1xuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIG5hbWU6IGJ1bmRsZS5uYW1lLFxuICAgIGRlc2NyaXB0aW9uOiBidW5kbGUuZGVzY3JpcHRpb24sXG4gICAgcHJlZmVycmVkT3BlcmF0aW9uOiBidW5kbGUucHJlZmVycmVkT3BlcmF0aW9uLFxuICAgIGRhdGE6IGJ1bmRsZS5kYXRhLFxuICAgIG1ldGE6IGJ1bmRsZS5tZXRhLFxuICAgIC4uLihjYXB0dXJlICYmIHsgY2FwdHVyZSB9KSxcbiAgfTtcbn1cbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JlY29yZGVyL3NuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQXFCMUUsaUZBQWlGO0FBQ2pGLE1BQU0sVUFBVSxVQUFVLENBQUMsRUFBVSxFQUFFLE1BQXNCLEVBQUUsY0FBYyxHQUFHLEtBQUs7SUFDbkYsTUFBTSxPQUFPLEdBQUcsY0FBYztRQUM1QixDQUFDLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDdkYsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNkLE9BQU87UUFDTCxFQUFFO1FBQ0YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztRQUMvQixrQkFBa0IsRUFBRSxNQUFNLENBQUMsa0JBQWtCO1FBQzdDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtRQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7UUFDakIsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0tBQzVCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiByZWNvcmRlci9zbmFwc2hvdC50cyDigJQgdGhlIE9ORSBjb3BpZXIgZm9yIGEgcmVjb3JkZXIncyBgdG9TbmFwc2hvdCgpYCBidW5kbGUgKEY2KS5cbiAqXG4gKiBBIGJ1bmRsZSBpcyBuZXZlciBwYXNzZWQgdGhyb3VnaCBhcyByZXR1cm5lZDogaXQgaXMgcmVidWlsdCBmaWVsZCBieSBmaWVsZCwgc28gYSByZWNvcmRlclxuICogY2Fubm90IHNwb29mIGl0cyBvd24gYGlkYCAodGhlIGV4ZWN1dG9yJ3MsIGFuZCBjb25zdW1lcnMgaW5kZXggYnkgaXQpIGFuZCBub3RoaW5nIGl0IGFkZHNcbiAqIGJleW9uZCB0aGUgY29udHJhY3QgbGVha3MgaW50byB0aGUgc25hcHNob3QuIFRoZSBjb3N0IGlzIHRoYXQgYSBmaWVsZCB0aGlzIGNvcGllciBmb3JnZXRzXG4gKiBpcyBkcm9wcGVkIGluIHNpbGVuY2Ug4oCUIHdoaWNoIGlzIHdoeSB0aGVyZSBpcyBleGFjdGx5IG9uZSBjb3BpZXIsIGFuZCB3aHlcbiAqIGBydW5uZXIvc25hcHNob3QudHMgwrcgY29sbGVjdFJlY29yZGVyU25hcHNob3RzYCBhbmQgYENvbXBvc2l0ZVJlY29yZGVyIMK3IHRvU25hcHNob3RgIGJvdGhcbiAqIGNhbGwgaXQgKHRoZSBjb21wb3NpdGUgdXNlZCB0byBrZWVwIG9ubHkgYG5hbWVgL2BkYXRhYCBhbmQgbG9zdCBgbWV0YWAvYGRlc2NyaXB0aW9uYCkuXG4gKlxuICogQSBuZXcgYnVuZGxlIGZpZWxkIGlzOiBvbmUgbWVtYmVyIG9uIGBSZWNvcmRlclNuYXBzaG90YCAocnVubmVyL0V4ZWN1dGlvblJ1bnRpbWUudHMpIGFuZFxuICogb25lIGxpbmUgaGVyZS4gVGhlIGZvdXIgYHRvU25hcHNob3Q/KClgIHNpZ25hdHVyZXMgKGBTY29wZVJlY29yZGVyYCwgYEZsb3dSZWNvcmRlcmAsXG4gKiBgQ29tYmluZWRSZWNvcmRlcmAsIGFuZCBgRW1pdFJlY29yZGVyYCkgYWxsIG5hbWUgYFJlY29yZGVyQnVuZGxlYCwgc28gdGhleSBmb2xsb3cuXG4gKi9cblxuaW1wb3J0IHsgY29weUNhcHR1cmVBY2tub3dsZWRnZW1lbnQgfSBmcm9tICcuLi9jYXB0dXJlL25hdGl2ZUNvdmVyYWdlLmpzJztcbmltcG9ydCB0eXBlIHsgUmVjb3JkZXJTbmFwc2hvdCB9IGZyb20gJy4uL3J1bm5lci9FeGVjdXRpb25SdW50aW1lLmpzJztcblxuLyoqIEEgc25hcHNob3Qgcm93IHdpdGhvdXQgdGhlIGBpZGAgdGhlIGF0dGFjaCBzaXRlIG93bnMuICovXG50eXBlIEJ1bmRsZUZpZWxkcyA9IE9taXQ8UmVjb3JkZXJTbmFwc2hvdCwgJ2lkJz47XG5cbi8qKlxuICogV2hhdCBgdG9TbmFwc2hvdCgpYCByZXR1cm5zOiB0aGUgcm93J3MgZmllbGRzLCB3aGVyZSBlYWNoIE9QVElPTkFMIG1lbWJlciBhbHNvIHRha2VzIGFuXG4gKiBleHBsaWNpdCBgdW5kZWZpbmVkYCAocmVxdWlyZWQgbWVtYmVycyBhcmUgdW5jaGFuZ2VkKS5cbiAqXG4gKiBBIGRlY2xhcmF0aW9uIGVtaXR0ZWQgd2l0aG91dCBgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNgICh0aGlzIGxpYnJhcnkncyBvd24gYnVpbGQsIGZvciBvbmUpXG4gKiBzcGVsbHMgYW4gaW5mZXJyZWQgb3B0aW9uYWwgbWVtYmVyIGFzIGBjYXB0dXJlPzog4oCmIHwgdW5kZWZpbmVkYCwgYW5kIGFuIGFwcCBjb21waWxlZCBXSVRIIHRoZVxuICogZmxhZyBtdXN0IHN0aWxsIGJlIGFibGUgdG8gYXR0YWNoIHRoYXQgcmVjb3JkZXIuIGBjb3B5QnVuZGxlYCBjb3BpZXMgZmllbGQgYnkgZmllbGQsIHNvIGFuXG4gKiBleHBsaWNpdCBgdW5kZWZpbmVkYCBnaXZlcyB0aGUgc2FtZSByb3cgYXMgYW4gYWJzZW50IGtleS4gVGhlIHJvdywgYFJlY29yZGVyU25hcHNob3RgLCBpcyB1bmNoYW5nZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFJlY29yZGVyQnVuZGxlID0ge1xuICBbSyBpbiBrZXlvZiBCdW5kbGVGaWVsZHNdOiBQaWNrPEJ1bmRsZUZpZWxkcywgSz4gZXh0ZW5kcyBSZXF1aXJlZDxQaWNrPEJ1bmRsZUZpZWxkcywgSz4+XG4gICAgPyBCdW5kbGVGaWVsZHNbS11cbiAgICA6IEJ1bmRsZUZpZWxkc1tLXSB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKiBSZWJ1aWxkIGBidW5kbGVgIGFzIHRoZSBzbmFwc2hvdCByb3cgZm9yIHRoZSByZWNvcmRlciBhdHRhY2hlZCB1bmRlciBgaWRgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlCdW5kbGUoaWQ6IHN0cmluZywgYnVuZGxlOiBSZWNvcmRlckJ1bmRsZSwgaW5jbHVkZUNhcHR1cmUgPSBmYWxzZSk6IFJlY29yZGVyU25hcHNob3Qge1xuICBjb25zdCBjYXB0dXJlID0gaW5jbHVkZUNhcHR1cmVcbiAgICA/IGNvcHlDYXB0dXJlQWNrbm93bGVkZ2VtZW50KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYnVuZGxlLCAnY2FwdHVyZScpPy52YWx1ZSlcbiAgICA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHtcbiAgICBpZCxcbiAgICBuYW1lOiBidW5kbGUubmFtZSxcbiAgICBkZXNjcmlwdGlvbjogYnVuZGxlLmRlc2NyaXB0aW9uLFxuICAgIHByZWZlcnJlZE9wZXJhdGlvbjogYnVuZGxlLnByZWZlcnJlZE9wZXJhdGlvbixcbiAgICBkYXRhOiBidW5kbGUuZGF0YSxcbiAgICBtZXRhOiBidW5kbGUubWV0YSxcbiAgICAuLi4oY2FwdHVyZSAmJiB7IGNhcHR1cmUgfSksXG4gIH07XG59XG4iXX0=
@@ -10,7 +10,7 @@
10
10
  * call it (the composite used to keep only `name`/`data` and lost `meta`/`description`).
11
11
  *
12
12
  * A new bundle field is: one member on `RecorderSnapshot` (runner/ExecutionRuntime.ts) and
13
- * one line here. The three `toSnapshot?()` signatures (`ScopeRecorder`, `FlowRecorder`,
13
+ * one line here. The four `toSnapshot?()` signatures (`ScopeRecorder`, `FlowRecorder`,
14
14
  * `CombinedRecorder`, and `EmitRecorder`) all name `RecorderBundle`, so they follow.
15
15
  */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -32,4 +32,4 @@ function copyBundle(id, bundle, includeCapture = false) {
32
32
  };
33
33
  }
34
34
  exports.copyBundle = copyBundle;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3JlY29yZGVyL3NuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7OztHQWFHOzs7QUFFSCxvRUFBMEU7QUFNMUUsaUZBQWlGO0FBQ2pGLFNBQWdCLFVBQVUsQ0FBQyxFQUFVLEVBQUUsTUFBc0IsRUFBRSxjQUFjLEdBQUcsS0FBSztJQUNuRixNQUFNLE9BQU8sR0FBRyxjQUFjO1FBQzVCLENBQUMsQ0FBQyxJQUFBLDhDQUEwQixFQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDZCxPQUFPO1FBQ0wsRUFBRTtRQUNGLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtRQUNqQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7UUFDL0Isa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtRQUM3QyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7UUFDakIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztLQUM1QixDQUFDO0FBQ0osQ0FBQztBQWJELGdDQWFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiByZWNvcmRlci9zbmFwc2hvdC50cyDigJQgdGhlIE9ORSBjb3BpZXIgZm9yIGEgcmVjb3JkZXIncyBgdG9TbmFwc2hvdCgpYCBidW5kbGUgKEY2KS5cbiAqXG4gKiBBIGJ1bmRsZSBpcyBuZXZlciBwYXNzZWQgdGhyb3VnaCBhcyByZXR1cm5lZDogaXQgaXMgcmVidWlsdCBmaWVsZCBieSBmaWVsZCwgc28gYSByZWNvcmRlclxuICogY2Fubm90IHNwb29mIGl0cyBvd24gYGlkYCAodGhlIGV4ZWN1dG9yJ3MsIGFuZCBjb25zdW1lcnMgaW5kZXggYnkgaXQpIGFuZCBub3RoaW5nIGl0IGFkZHNcbiAqIGJleW9uZCB0aGUgY29udHJhY3QgbGVha3MgaW50byB0aGUgc25hcHNob3QuIFRoZSBjb3N0IGlzIHRoYXQgYSBmaWVsZCB0aGlzIGNvcGllciBmb3JnZXRzXG4gKiBpcyBkcm9wcGVkIGluIHNpbGVuY2Ug4oCUIHdoaWNoIGlzIHdoeSB0aGVyZSBpcyBleGFjdGx5IG9uZSBjb3BpZXIsIGFuZCB3aHlcbiAqIGBydW5uZXIvc25hcHNob3QudHMgwrcgY29sbGVjdFJlY29yZGVyU25hcHNob3RzYCBhbmQgYENvbXBvc2l0ZVJlY29yZGVyIMK3IHRvU25hcHNob3RgIGJvdGhcbiAqIGNhbGwgaXQgKHRoZSBjb21wb3NpdGUgdXNlZCB0byBrZWVwIG9ubHkgYG5hbWVgL2BkYXRhYCBhbmQgbG9zdCBgbWV0YWAvYGRlc2NyaXB0aW9uYCkuXG4gKlxuICogQSBuZXcgYnVuZGxlIGZpZWxkIGlzOiBvbmUgbWVtYmVyIG9uIGBSZWNvcmRlclNuYXBzaG90YCAocnVubmVyL0V4ZWN1dGlvblJ1bnRpbWUudHMpIGFuZFxuICogb25lIGxpbmUgaGVyZS4gVGhlIHRocmVlIGB0b1NuYXBzaG90PygpYCBzaWduYXR1cmVzIChgU2NvcGVSZWNvcmRlcmAsIGBGbG93UmVjb3JkZXJgLFxuICogYENvbWJpbmVkUmVjb3JkZXJgLCBhbmQgYEVtaXRSZWNvcmRlcmApIGFsbCBuYW1lIGBSZWNvcmRlckJ1bmRsZWAsIHNvIHRoZXkgZm9sbG93LlxuICovXG5cbmltcG9ydCB7IGNvcHlDYXB0dXJlQWNrbm93bGVkZ2VtZW50IH0gZnJvbSAnLi4vY2FwdHVyZS9uYXRpdmVDb3ZlcmFnZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlY29yZGVyU25hcHNob3QgfSBmcm9tICcuLi9ydW5uZXIvRXhlY3V0aW9uUnVudGltZS5qcyc7XG5cbi8qKiBXaGF0IGB0b1NuYXBzaG90KClgIHJldHVybnM6IGEgc25hcHNob3Qgcm93IHdpdGhvdXQgdGhlIGBpZGAgdGhlIGF0dGFjaCBzaXRlIG93bnMuICovXG5leHBvcnQgdHlwZSBSZWNvcmRlckJ1bmRsZSA9IE9taXQ8UmVjb3JkZXJTbmFwc2hvdCwgJ2lkJz47XG5cbi8qKiBSZWJ1aWxkIGBidW5kbGVgIGFzIHRoZSBzbmFwc2hvdCByb3cgZm9yIHRoZSByZWNvcmRlciBhdHRhY2hlZCB1bmRlciBgaWRgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlCdW5kbGUoaWQ6IHN0cmluZywgYnVuZGxlOiBSZWNvcmRlckJ1bmRsZSwgaW5jbHVkZUNhcHR1cmUgPSBmYWxzZSk6IFJlY29yZGVyU25hcHNob3Qge1xuICBjb25zdCBjYXB0dXJlID0gaW5jbHVkZUNhcHR1cmVcbiAgICA/IGNvcHlDYXB0dXJlQWNrbm93bGVkZ2VtZW50KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYnVuZGxlLCAnY2FwdHVyZScpPy52YWx1ZSlcbiAgICA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHtcbiAgICBpZCxcbiAgICBuYW1lOiBidW5kbGUubmFtZSxcbiAgICBkZXNjcmlwdGlvbjogYnVuZGxlLmRlc2NyaXB0aW9uLFxuICAgIHByZWZlcnJlZE9wZXJhdGlvbjogYnVuZGxlLnByZWZlcnJlZE9wZXJhdGlvbixcbiAgICBkYXRhOiBidW5kbGUuZGF0YSxcbiAgICBtZXRhOiBidW5kbGUubWV0YSxcbiAgICAuLi4oY2FwdHVyZSAmJiB7IGNhcHR1cmUgfSksXG4gIH07XG59XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3JlY29yZGVyL3NuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7OztHQWFHOzs7QUFFSCxvRUFBMEU7QUFxQjFFLGlGQUFpRjtBQUNqRixTQUFnQixVQUFVLENBQUMsRUFBVSxFQUFFLE1BQXNCLEVBQUUsY0FBYyxHQUFHLEtBQUs7SUFDbkYsTUFBTSxPQUFPLEdBQUcsY0FBYztRQUM1QixDQUFDLENBQUMsSUFBQSw4Q0FBMEIsRUFBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUN2RixDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2QsT0FBTztRQUNMLEVBQUU7UUFDRixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7UUFDakIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1FBQy9CLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7UUFDN0MsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtRQUNqQixHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7S0FDNUIsQ0FBQztBQUNKLENBQUM7QUFiRCxnQ0FhQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogcmVjb3JkZXIvc25hcHNob3QudHMg4oCUIHRoZSBPTkUgY29waWVyIGZvciBhIHJlY29yZGVyJ3MgYHRvU25hcHNob3QoKWAgYnVuZGxlIChGNikuXG4gKlxuICogQSBidW5kbGUgaXMgbmV2ZXIgcGFzc2VkIHRocm91Z2ggYXMgcmV0dXJuZWQ6IGl0IGlzIHJlYnVpbHQgZmllbGQgYnkgZmllbGQsIHNvIGEgcmVjb3JkZXJcbiAqIGNhbm5vdCBzcG9vZiBpdHMgb3duIGBpZGAgKHRoZSBleGVjdXRvcidzLCBhbmQgY29uc3VtZXJzIGluZGV4IGJ5IGl0KSBhbmQgbm90aGluZyBpdCBhZGRzXG4gKiBiZXlvbmQgdGhlIGNvbnRyYWN0IGxlYWtzIGludG8gdGhlIHNuYXBzaG90LiBUaGUgY29zdCBpcyB0aGF0IGEgZmllbGQgdGhpcyBjb3BpZXIgZm9yZ2V0c1xuICogaXMgZHJvcHBlZCBpbiBzaWxlbmNlIOKAlCB3aGljaCBpcyB3aHkgdGhlcmUgaXMgZXhhY3RseSBvbmUgY29waWVyLCBhbmQgd2h5XG4gKiBgcnVubmVyL3NuYXBzaG90LnRzIMK3IGNvbGxlY3RSZWNvcmRlclNuYXBzaG90c2AgYW5kIGBDb21wb3NpdGVSZWNvcmRlciDCtyB0b1NuYXBzaG90YCBib3RoXG4gKiBjYWxsIGl0ICh0aGUgY29tcG9zaXRlIHVzZWQgdG8ga2VlcCBvbmx5IGBuYW1lYC9gZGF0YWAgYW5kIGxvc3QgYG1ldGFgL2BkZXNjcmlwdGlvbmApLlxuICpcbiAqIEEgbmV3IGJ1bmRsZSBmaWVsZCBpczogb25lIG1lbWJlciBvbiBgUmVjb3JkZXJTbmFwc2hvdGAgKHJ1bm5lci9FeGVjdXRpb25SdW50aW1lLnRzKSBhbmRcbiAqIG9uZSBsaW5lIGhlcmUuIFRoZSBmb3VyIGB0b1NuYXBzaG90PygpYCBzaWduYXR1cmVzIChgU2NvcGVSZWNvcmRlcmAsIGBGbG93UmVjb3JkZXJgLFxuICogYENvbWJpbmVkUmVjb3JkZXJgLCBhbmQgYEVtaXRSZWNvcmRlcmApIGFsbCBuYW1lIGBSZWNvcmRlckJ1bmRsZWAsIHNvIHRoZXkgZm9sbG93LlxuICovXG5cbmltcG9ydCB7IGNvcHlDYXB0dXJlQWNrbm93bGVkZ2VtZW50IH0gZnJvbSAnLi4vY2FwdHVyZS9uYXRpdmVDb3ZlcmFnZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlY29yZGVyU25hcHNob3QgfSBmcm9tICcuLi9ydW5uZXIvRXhlY3V0aW9uUnVudGltZS5qcyc7XG5cbi8qKiBBIHNuYXBzaG90IHJvdyB3aXRob3V0IHRoZSBgaWRgIHRoZSBhdHRhY2ggc2l0ZSBvd25zLiAqL1xudHlwZSBCdW5kbGVGaWVsZHMgPSBPbWl0PFJlY29yZGVyU25hcHNob3QsICdpZCc+O1xuXG4vKipcbiAqIFdoYXQgYHRvU25hcHNob3QoKWAgcmV0dXJuczogdGhlIHJvdydzIGZpZWxkcywgd2hlcmUgZWFjaCBPUFRJT05BTCBtZW1iZXIgYWxzbyB0YWtlcyBhblxuICogZXhwbGljaXQgYHVuZGVmaW5lZGAgKHJlcXVpcmVkIG1lbWJlcnMgYXJlIHVuY2hhbmdlZCkuXG4gKlxuICogQSBkZWNsYXJhdGlvbiBlbWl0dGVkIHdpdGhvdXQgYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzYCAodGhpcyBsaWJyYXJ5J3Mgb3duIGJ1aWxkLCBmb3Igb25lKVxuICogc3BlbGxzIGFuIGluZmVycmVkIG9wdGlvbmFsIG1lbWJlciBhcyBgY2FwdHVyZT86IOKApiB8IHVuZGVmaW5lZGAsIGFuZCBhbiBhcHAgY29tcGlsZWQgV0lUSCB0aGVcbiAqIGZsYWcgbXVzdCBzdGlsbCBiZSBhYmxlIHRvIGF0dGFjaCB0aGF0IHJlY29yZGVyLiBgY29weUJ1bmRsZWAgY29waWVzIGZpZWxkIGJ5IGZpZWxkLCBzbyBhblxuICogZXhwbGljaXQgYHVuZGVmaW5lZGAgZ2l2ZXMgdGhlIHNhbWUgcm93IGFzIGFuIGFic2VudCBrZXkuIFRoZSByb3csIGBSZWNvcmRlclNuYXBzaG90YCwgaXMgdW5jaGFuZ2VkLlxuICovXG5leHBvcnQgdHlwZSBSZWNvcmRlckJ1bmRsZSA9IHtcbiAgW0sgaW4ga2V5b2YgQnVuZGxlRmllbGRzXTogUGljazxCdW5kbGVGaWVsZHMsIEs+IGV4dGVuZHMgUmVxdWlyZWQ8UGljazxCdW5kbGVGaWVsZHMsIEs+PlxuICAgID8gQnVuZGxlRmllbGRzW0tdXG4gICAgOiBCdW5kbGVGaWVsZHNbS10gfCB1bmRlZmluZWQ7XG59O1xuXG4vKiogUmVidWlsZCBgYnVuZGxlYCBhcyB0aGUgc25hcHNob3Qgcm93IGZvciB0aGUgcmVjb3JkZXIgYXR0YWNoZWQgdW5kZXIgYGlkYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3B5QnVuZGxlKGlkOiBzdHJpbmcsIGJ1bmRsZTogUmVjb3JkZXJCdW5kbGUsIGluY2x1ZGVDYXB0dXJlID0gZmFsc2UpOiBSZWNvcmRlclNuYXBzaG90IHtcbiAgY29uc3QgY2FwdHVyZSA9IGluY2x1ZGVDYXB0dXJlXG4gICAgPyBjb3B5Q2FwdHVyZUFja25vd2xlZGdlbWVudChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGJ1bmRsZSwgJ2NhcHR1cmUnKT8udmFsdWUpXG4gICAgOiB1bmRlZmluZWQ7XG4gIHJldHVybiB7XG4gICAgaWQsXG4gICAgbmFtZTogYnVuZGxlLm5hbWUsXG4gICAgZGVzY3JpcHRpb246IGJ1bmRsZS5kZXNjcmlwdGlvbixcbiAgICBwcmVmZXJyZWRPcGVyYXRpb246IGJ1bmRsZS5wcmVmZXJyZWRPcGVyYXRpb24sXG4gICAgZGF0YTogYnVuZGxlLmRhdGEsXG4gICAgbWV0YTogYnVuZGxlLm1ldGEsXG4gICAgLi4uKGNhcHR1cmUgJiYgeyBjYXB0dXJlIH0pLFxuICB9O1xufVxuIl19
@@ -9,11 +9,24 @@
9
9
  * call it (the composite used to keep only `name`/`data` and lost `meta`/`description`).
10
10
  *
11
11
  * A new bundle field is: one member on `RecorderSnapshot` (runner/ExecutionRuntime.ts) and
12
- * one line here. The three `toSnapshot?()` signatures (`ScopeRecorder`, `FlowRecorder`,
12
+ * one line here. The four `toSnapshot?()` signatures (`ScopeRecorder`, `FlowRecorder`,
13
13
  * `CombinedRecorder`, and `EmitRecorder`) all name `RecorderBundle`, so they follow.
14
14
  */
15
15
  import type { RecorderSnapshot } from '../runner/ExecutionRuntime.js';
16
- /** What `toSnapshot()` returns: a snapshot row without the `id` the attach site owns. */
17
- export type RecorderBundle = Omit<RecorderSnapshot, 'id'>;
16
+ /** A snapshot row without the `id` the attach site owns. */
17
+ type BundleFields = Omit<RecorderSnapshot, 'id'>;
18
+ /**
19
+ * What `toSnapshot()` returns: the row's fields, where each OPTIONAL member also takes an
20
+ * explicit `undefined` (required members are unchanged).
21
+ *
22
+ * A declaration emitted without `exactOptionalPropertyTypes` (this library's own build, for one)
23
+ * spells an inferred optional member as `capture?: … | undefined`, and an app compiled WITH the
24
+ * flag must still be able to attach that recorder. `copyBundle` copies field by field, so an
25
+ * explicit `undefined` gives the same row as an absent key. The row, `RecorderSnapshot`, is unchanged.
26
+ */
27
+ export type RecorderBundle = {
28
+ [K in keyof BundleFields]: Pick<BundleFields, K> extends Required<Pick<BundleFields, K>> ? BundleFields[K] : BundleFields[K] | undefined;
29
+ };
18
30
  /** Rebuild `bundle` as the snapshot row for the recorder attached under `id`. */
19
31
  export declare function copyBundle(id: string, bundle: RecorderBundle, includeCapture?: boolean): RecorderSnapshot;
32
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "footprintjs",
3
- "version": "10.7.0",
3
+ "version": "10.7.1",
4
4
  "description": "Explainable backend flows — automatic causal traces, decision evidence, and MCP tool generation for AI agents",
5
5
  "license": "MIT",
6
6
  "author": "Sanjay Krishna Anbalagan",