bupkis 0.18.1 → 0.18.2
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/CHANGELOG.md +7 -0
- package/package.json +1 -4
- package/src/assertion/assertion-types.ts +4 -4
- package/src/assertion/impl/sync-parametric.ts +1 -1
- package/src/expect.ts +0 -4
- package/src/guards.ts +24 -24
- package/src/internal-schema.ts +16 -32
- package/src/value-to-schema.ts +1 -1
- package/dist/assertion/assertion-async.cjs +0 -268
- package/dist/assertion/assertion-async.cjs.map +0 -1
- package/dist/assertion/assertion-async.d.cts +0 -40
- package/dist/assertion/assertion-async.d.cts.map +0 -1
- package/dist/assertion/assertion-async.d.ts +0 -40
- package/dist/assertion/assertion-async.d.ts.map +0 -1
- package/dist/assertion/assertion-async.js +0 -259
- package/dist/assertion/assertion-async.js.map +0 -1
- package/dist/assertion/assertion-standard-schema-async.cjs +0 -132
- package/dist/assertion/assertion-standard-schema-async.cjs.map +0 -1
- package/dist/assertion/assertion-standard-schema-async.d.cts +0 -52
- package/dist/assertion/assertion-standard-schema-async.d.cts.map +0 -1
- package/dist/assertion/assertion-standard-schema-async.d.ts +0 -52
- package/dist/assertion/assertion-standard-schema-async.d.ts.map +0 -1
- package/dist/assertion/assertion-standard-schema-async.js +0 -128
- package/dist/assertion/assertion-standard-schema-async.js.map +0 -1
- package/dist/assertion/assertion-standard-schema-sync.cjs +0 -141
- package/dist/assertion/assertion-standard-schema-sync.cjs.map +0 -1
- package/dist/assertion/assertion-standard-schema-sync.d.cts +0 -52
- package/dist/assertion/assertion-standard-schema-sync.d.cts.map +0 -1
- package/dist/assertion/assertion-standard-schema-sync.d.ts +0 -52
- package/dist/assertion/assertion-standard-schema-sync.d.ts.map +0 -1
- package/dist/assertion/assertion-standard-schema-sync.js +0 -137
- package/dist/assertion/assertion-standard-schema-sync.js.map +0 -1
- package/dist/assertion/assertion-sync.cjs +0 -284
- package/dist/assertion/assertion-sync.cjs.map +0 -1
- package/dist/assertion/assertion-sync.d.cts +0 -60
- package/dist/assertion/assertion-sync.d.cts.map +0 -1
- package/dist/assertion/assertion-sync.d.ts +0 -60
- package/dist/assertion/assertion-sync.d.ts.map +0 -1
- package/dist/assertion/assertion-sync.js +0 -275
- package/dist/assertion/assertion-sync.js.map +0 -1
- package/dist/assertion/assertion-types.cjs +0 -20
- package/dist/assertion/assertion-types.cjs.map +0 -1
- package/dist/assertion/assertion-types.d.cts +0 -1086
- package/dist/assertion/assertion-types.d.cts.map +0 -1
- package/dist/assertion/assertion-types.d.ts +0 -1086
- package/dist/assertion/assertion-types.d.ts.map +0 -1
- package/dist/assertion/assertion-types.js +0 -19
- package/dist/assertion/assertion-types.js.map +0 -1
- package/dist/assertion/assertion.cjs +0 -382
- package/dist/assertion/assertion.cjs.map +0 -1
- package/dist/assertion/assertion.d.cts +0 -109
- package/dist/assertion/assertion.d.cts.map +0 -1
- package/dist/assertion/assertion.d.ts +0 -109
- package/dist/assertion/assertion.d.ts.map +0 -1
- package/dist/assertion/assertion.js +0 -375
- package/dist/assertion/assertion.js.map +0 -1
- package/dist/assertion/create.cjs +0 -148
- package/dist/assertion/create.cjs.map +0 -1
- package/dist/assertion/create.d.cts +0 -85
- package/dist/assertion/create.d.cts.map +0 -1
- package/dist/assertion/create.d.ts +0 -85
- package/dist/assertion/create.d.ts.map +0 -1
- package/dist/assertion/create.js +0 -143
- package/dist/assertion/create.js.map +0 -1
- package/dist/assertion/format-assertion-failure.cjs +0 -63
- package/dist/assertion/format-assertion-failure.cjs.map +0 -1
- package/dist/assertion/format-assertion-failure.d.cts +0 -21
- package/dist/assertion/format-assertion-failure.d.cts.map +0 -1
- package/dist/assertion/format-assertion-failure.d.ts +0 -21
- package/dist/assertion/format-assertion-failure.d.ts.map +0 -1
- package/dist/assertion/format-assertion-failure.js +0 -59
- package/dist/assertion/format-assertion-failure.js.map +0 -1
- package/dist/assertion/impl/assertion-util.cjs +0 -68
- package/dist/assertion/impl/assertion-util.cjs.map +0 -1
- package/dist/assertion/impl/assertion-util.d.cts +0 -36
- package/dist/assertion/impl/assertion-util.d.cts.map +0 -1
- package/dist/assertion/impl/assertion-util.d.ts +0 -36
- package/dist/assertion/impl/assertion-util.d.ts.map +0 -1
- package/dist/assertion/impl/assertion-util.js +0 -62
- package/dist/assertion/impl/assertion-util.js.map +0 -1
- package/dist/assertion/impl/async-iterable.cjs +0 -627
- package/dist/assertion/impl/async-iterable.cjs.map +0 -1
- package/dist/assertion/impl/async-iterable.d.cts +0 -406
- package/dist/assertion/impl/async-iterable.d.cts.map +0 -1
- package/dist/assertion/impl/async-iterable.d.ts +0 -406
- package/dist/assertion/impl/async-iterable.d.ts.map +0 -1
- package/dist/assertion/impl/async-iterable.js +0 -624
- package/dist/assertion/impl/async-iterable.js.map +0 -1
- package/dist/assertion/impl/async-parametric.cjs +0 -412
- package/dist/assertion/impl/async-parametric.cjs.map +0 -1
- package/dist/assertion/impl/async-parametric.d.cts +0 -278
- package/dist/assertion/impl/async-parametric.d.cts.map +0 -1
- package/dist/assertion/impl/async-parametric.d.ts +0 -278
- package/dist/assertion/impl/async-parametric.d.ts.map +0 -1
- package/dist/assertion/impl/async-parametric.js +0 -409
- package/dist/assertion/impl/async-parametric.js.map +0 -1
- package/dist/assertion/impl/async.cjs +0 -56
- package/dist/assertion/impl/async.cjs.map +0 -1
- package/dist/assertion/impl/async.d.cts +0 -179
- package/dist/assertion/impl/async.d.cts.map +0 -1
- package/dist/assertion/impl/async.d.ts +0 -179
- package/dist/assertion/impl/async.d.ts.map +0 -1
- package/dist/assertion/impl/async.js +0 -39
- package/dist/assertion/impl/async.js.map +0 -1
- package/dist/assertion/impl/index.cjs +0 -37
- package/dist/assertion/impl/index.cjs.map +0 -1
- package/dist/assertion/impl/index.d.cts +0 -21
- package/dist/assertion/impl/index.d.cts.map +0 -1
- package/dist/assertion/impl/index.d.ts +0 -21
- package/dist/assertion/impl/index.d.ts.map +0 -1
- package/dist/assertion/impl/index.js +0 -21
- package/dist/assertion/impl/index.js.map +0 -1
- package/dist/assertion/impl/iteration-util.cjs +0 -297
- package/dist/assertion/impl/iteration-util.cjs.map +0 -1
- package/dist/assertion/impl/iteration-util.d.cts +0 -12
- package/dist/assertion/impl/iteration-util.d.cts.map +0 -1
- package/dist/assertion/impl/iteration-util.d.ts +0 -12
- package/dist/assertion/impl/iteration-util.d.ts.map +0 -1
- package/dist/assertion/impl/iteration-util.js +0 -282
- package/dist/assertion/impl/iteration-util.js.map +0 -1
- package/dist/assertion/impl/snapshot.cjs +0 -276
- package/dist/assertion/impl/snapshot.cjs.map +0 -1
- package/dist/assertion/impl/snapshot.d.cts +0 -278
- package/dist/assertion/impl/snapshot.d.cts.map +0 -1
- package/dist/assertion/impl/snapshot.d.ts +0 -278
- package/dist/assertion/impl/snapshot.d.ts.map +0 -1
- package/dist/assertion/impl/snapshot.js +0 -273
- package/dist/assertion/impl/snapshot.js.map +0 -1
- package/dist/assertion/impl/sync-basic.cjs +0 -553
- package/dist/assertion/impl/sync-basic.cjs.map +0 -1
- package/dist/assertion/impl/sync-basic.d.cts +0 -528
- package/dist/assertion/impl/sync-basic.d.cts.map +0 -1
- package/dist/assertion/impl/sync-basic.d.ts +0 -528
- package/dist/assertion/impl/sync-basic.d.ts.map +0 -1
- package/dist/assertion/impl/sync-basic.js +0 -550
- package/dist/assertion/impl/sync-basic.js.map +0 -1
- package/dist/assertion/impl/sync-collection.cjs +0 -856
- package/dist/assertion/impl/sync-collection.cjs.map +0 -1
- package/dist/assertion/impl/sync-collection.d.cts +0 -607
- package/dist/assertion/impl/sync-collection.d.cts.map +0 -1
- package/dist/assertion/impl/sync-collection.d.ts +0 -607
- package/dist/assertion/impl/sync-collection.d.ts.map +0 -1
- package/dist/assertion/impl/sync-collection.js +0 -850
- package/dist/assertion/impl/sync-collection.js.map +0 -1
- package/dist/assertion/impl/sync-date.cjs +0 -341
- package/dist/assertion/impl/sync-date.cjs.map +0 -1
- package/dist/assertion/impl/sync-date.d.cts +0 -209
- package/dist/assertion/impl/sync-date.d.cts.map +0 -1
- package/dist/assertion/impl/sync-date.d.ts +0 -209
- package/dist/assertion/impl/sync-date.d.ts.map +0 -1
- package/dist/assertion/impl/sync-date.js +0 -338
- package/dist/assertion/impl/sync-date.js.map +0 -1
- package/dist/assertion/impl/sync-esoteric.cjs +0 -214
- package/dist/assertion/impl/sync-esoteric.cjs.map +0 -1
- package/dist/assertion/impl/sync-esoteric.d.cts +0 -191
- package/dist/assertion/impl/sync-esoteric.d.cts.map +0 -1
- package/dist/assertion/impl/sync-esoteric.d.ts +0 -191
- package/dist/assertion/impl/sync-esoteric.d.ts.map +0 -1
- package/dist/assertion/impl/sync-esoteric.js +0 -211
- package/dist/assertion/impl/sync-esoteric.js.map +0 -1
- package/dist/assertion/impl/sync-iterable.cjs +0 -512
- package/dist/assertion/impl/sync-iterable.cjs.map +0 -1
- package/dist/assertion/impl/sync-iterable.d.cts +0 -334
- package/dist/assertion/impl/sync-iterable.d.cts.map +0 -1
- package/dist/assertion/impl/sync-iterable.d.ts +0 -334
- package/dist/assertion/impl/sync-iterable.d.ts.map +0 -1
- package/dist/assertion/impl/sync-iterable.js +0 -509
- package/dist/assertion/impl/sync-iterable.js.map +0 -1
- package/dist/assertion/impl/sync-parametric.cjs +0 -805
- package/dist/assertion/impl/sync-parametric.cjs.map +0 -1
- package/dist/assertion/impl/sync-parametric.d.cts +0 -560
- package/dist/assertion/impl/sync-parametric.d.cts.map +0 -1
- package/dist/assertion/impl/sync-parametric.d.ts +0 -560
- package/dist/assertion/impl/sync-parametric.d.ts.map +0 -1
- package/dist/assertion/impl/sync-parametric.js +0 -802
- package/dist/assertion/impl/sync-parametric.js.map +0 -1
- package/dist/assertion/impl/sync.cjs +0 -214
- package/dist/assertion/impl/sync.cjs.map +0 -1
- package/dist/assertion/impl/sync.d.cts +0 -512
- package/dist/assertion/impl/sync.d.cts.map +0 -1
- package/dist/assertion/impl/sync.d.ts +0 -512
- package/dist/assertion/impl/sync.d.ts.map +0 -1
- package/dist/assertion/impl/sync.js +0 -197
- package/dist/assertion/impl/sync.js.map +0 -1
- package/dist/assertion/index.cjs +0 -38
- package/dist/assertion/index.cjs.map +0 -1
- package/dist/assertion/index.d.cts +0 -18
- package/dist/assertion/index.d.cts.map +0 -1
- package/dist/assertion/index.d.ts +0 -18
- package/dist/assertion/index.d.ts.map +0 -1
- package/dist/assertion/index.js +0 -17
- package/dist/assertion/index.js.map +0 -1
- package/dist/assertion/slotify.cjs +0 -165
- package/dist/assertion/slotify.cjs.map +0 -1
- package/dist/assertion/slotify.d.cts +0 -11
- package/dist/assertion/slotify.d.cts.map +0 -1
- package/dist/assertion/slotify.d.ts +0 -11
- package/dist/assertion/slotify.d.ts.map +0 -1
- package/dist/assertion/slotify.js +0 -161
- package/dist/assertion/slotify.js.map +0 -1
- package/dist/bootstrap.cjs +0 -43
- package/dist/bootstrap.cjs.map +0 -1
- package/dist/bootstrap.d.cts +0 -27
- package/dist/bootstrap.d.cts.map +0 -1
- package/dist/bootstrap.d.ts +0 -27
- package/dist/bootstrap.d.ts.map +0 -1
- package/dist/bootstrap.js +0 -40
- package/dist/bootstrap.js.map +0 -1
- package/dist/constant.cjs +0 -82
- package/dist/constant.cjs.map +0 -1
- package/dist/constant.d.cts +0 -69
- package/dist/constant.d.cts.map +0 -1
- package/dist/constant.d.ts +0 -69
- package/dist/constant.d.ts.map +0 -1
- package/dist/constant.js +0 -79
- package/dist/constant.js.map +0 -1
- package/dist/diff.cjs +0 -340
- package/dist/diff.cjs.map +0 -1
- package/dist/diff.d.cts +0 -51
- package/dist/diff.d.cts.map +0 -1
- package/dist/diff.d.ts +0 -51
- package/dist/diff.d.ts.map +0 -1
- package/dist/diff.js +0 -334
- package/dist/diff.js.map +0 -1
- package/dist/error.cjs +0 -204
- package/dist/error.cjs.map +0 -1
- package/dist/error.d.cts +0 -212
- package/dist/error.d.cts.map +0 -1
- package/dist/error.d.ts +0 -212
- package/dist/error.d.ts.map +0 -1
- package/dist/error.js +0 -191
- package/dist/error.js.map +0 -1
- package/dist/expect.cjs +0 -590
- package/dist/expect.cjs.map +0 -1
- package/dist/expect.d.cts +0 -138
- package/dist/expect.d.cts.map +0 -1
- package/dist/expect.d.ts +0 -138
- package/dist/expect.d.ts.map +0 -1
- package/dist/expect.js +0 -582
- package/dist/expect.js.map +0 -1
- package/dist/guards.cjs +0 -297
- package/dist/guards.cjs.map +0 -1
- package/dist/guards.d.cts +0 -231
- package/dist/guards.d.cts.map +0 -1
- package/dist/guards.d.ts +0 -231
- package/dist/guards.d.ts.map +0 -1
- package/dist/guards.js +0 -277
- package/dist/guards.js.map +0 -1
- package/dist/index.cjs +0 -111
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -448
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.ts +0 -448
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -71
- package/dist/index.js.map +0 -1
- package/dist/internal-schema.cjs +0 -253
- package/dist/internal-schema.cjs.map +0 -1
- package/dist/internal-schema.d.cts +0 -8
- package/dist/internal-schema.d.cts.map +0 -1
- package/dist/internal-schema.d.ts +0 -8
- package/dist/internal-schema.d.ts.map +0 -1
- package/dist/internal-schema.js +0 -248
- package/dist/internal-schema.js.map +0 -1
- package/dist/metadata.cjs +0 -57
- package/dist/metadata.cjs.map +0 -1
- package/dist/metadata.d.cts +0 -27
- package/dist/metadata.d.cts.map +0 -1
- package/dist/metadata.d.ts +0 -27
- package/dist/metadata.d.ts.map +0 -1
- package/dist/metadata.js +0 -54
- package/dist/metadata.js.map +0 -1
- package/dist/schema.cjs +0 -1522
- package/dist/schema.cjs.map +0 -1
- package/dist/schema.d.cts +0 -1196
- package/dist/schema.d.cts.map +0 -1
- package/dist/schema.d.ts +0 -1196
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js +0 -1516
- package/dist/schema.js.map +0 -1
- package/dist/snapshot/adapter.cjs +0 -31
- package/dist/snapshot/adapter.cjs.map +0 -1
- package/dist/snapshot/adapter.d.cts +0 -258
- package/dist/snapshot/adapter.d.cts.map +0 -1
- package/dist/snapshot/adapter.d.ts +0 -258
- package/dist/snapshot/adapter.d.ts.map +0 -1
- package/dist/snapshot/adapter.js +0 -27
- package/dist/snapshot/adapter.js.map +0 -1
- package/dist/snapshot/adapters/fallback.cjs +0 -453
- package/dist/snapshot/adapters/fallback.cjs.map +0 -1
- package/dist/snapshot/adapters/fallback.d.cts +0 -185
- package/dist/snapshot/adapters/fallback.d.cts.map +0 -1
- package/dist/snapshot/adapters/fallback.d.ts +0 -185
- package/dist/snapshot/adapters/fallback.d.ts.map +0 -1
- package/dist/snapshot/adapters/fallback.js +0 -446
- package/dist/snapshot/adapters/fallback.js.map +0 -1
- package/dist/snapshot/adapters/node-test.cjs +0 -301
- package/dist/snapshot/adapters/node-test.cjs.map +0 -1
- package/dist/snapshot/adapters/node-test.d.cts +0 -131
- package/dist/snapshot/adapters/node-test.d.cts.map +0 -1
- package/dist/snapshot/adapters/node-test.d.ts +0 -131
- package/dist/snapshot/adapters/node-test.d.ts.map +0 -1
- package/dist/snapshot/adapters/node-test.js +0 -297
- package/dist/snapshot/adapters/node-test.js.map +0 -1
- package/dist/snapshot/index.cjs +0 -61
- package/dist/snapshot/index.cjs.map +0 -1
- package/dist/snapshot/index.d.cts +0 -40
- package/dist/snapshot/index.d.cts.map +0 -1
- package/dist/snapshot/index.d.ts +0 -40
- package/dist/snapshot/index.d.ts.map +0 -1
- package/dist/snapshot/index.js +0 -44
- package/dist/snapshot/index.js.map +0 -1
- package/dist/snapshot/node-version.cjs +0 -49
- package/dist/snapshot/node-version.cjs.map +0 -1
- package/dist/snapshot/node-version.d.cts +0 -34
- package/dist/snapshot/node-version.d.cts.map +0 -1
- package/dist/snapshot/node-version.d.ts +0 -34
- package/dist/snapshot/node-version.d.ts.map +0 -1
- package/dist/snapshot/node-version.js +0 -44
- package/dist/snapshot/node-version.js.map +0 -1
- package/dist/snapshot/select-adapter.cjs +0 -170
- package/dist/snapshot/select-adapter.cjs.map +0 -1
- package/dist/snapshot/select-adapter.d.cts +0 -128
- package/dist/snapshot/select-adapter.d.cts.map +0 -1
- package/dist/snapshot/select-adapter.d.ts +0 -128
- package/dist/snapshot/select-adapter.d.ts.map +0 -1
- package/dist/snapshot/select-adapter.js +0 -164
- package/dist/snapshot/select-adapter.js.map +0 -1
- package/dist/snapshot/serializer.cjs +0 -246
- package/dist/snapshot/serializer.cjs.map +0 -1
- package/dist/snapshot/serializer.d.cts +0 -126
- package/dist/snapshot/serializer.d.cts.map +0 -1
- package/dist/snapshot/serializer.d.ts +0 -126
- package/dist/snapshot/serializer.d.ts.map +0 -1
- package/dist/snapshot/serializer.js +0 -238
- package/dist/snapshot/serializer.js.map +0 -1
- package/dist/standard-schema.cjs +0 -13
- package/dist/standard-schema.cjs.map +0 -1
- package/dist/standard-schema.d.cts +0 -192
- package/dist/standard-schema.d.cts.map +0 -1
- package/dist/standard-schema.d.ts +0 -192
- package/dist/standard-schema.d.ts.map +0 -1
- package/dist/standard-schema.js +0 -12
- package/dist/standard-schema.js.map +0 -1
- package/dist/types.cjs +0 -22
- package/dist/types.cjs.map +0 -1
- package/dist/types.d.cts +0 -905
- package/dist/types.d.cts.map +0 -1
- package/dist/types.d.ts +0 -905
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -21
- package/dist/types.js.map +0 -1
- package/dist/use.cjs +0 -240
- package/dist/use.cjs.map +0 -1
- package/dist/use.d.cts +0 -8
- package/dist/use.d.cts.map +0 -1
- package/dist/use.d.ts +0 -8
- package/dist/use.d.ts.map +0 -1
- package/dist/use.js +0 -236
- package/dist/use.js.map +0 -1
- package/dist/util.cjs +0 -255
- package/dist/util.cjs.map +0 -1
- package/dist/util.d.cts +0 -141
- package/dist/util.d.cts.map +0 -1
- package/dist/util.d.ts +0 -141
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js +0 -234
- package/dist/util.js.map +0 -1
- package/dist/value-to-schema.cjs +0 -537
- package/dist/value-to-schema.cjs.map +0 -1
- package/dist/value-to-schema.d.cts +0 -144
- package/dist/value-to-schema.d.cts.map +0 -1
- package/dist/value-to-schema.d.ts +0 -144
- package/dist/value-to-schema.d.ts.map +0 -1
- package/dist/value-to-schema.js +0 -533
- package/dist/value-to-schema.js.map +0 -1
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Serialization utilities for converting values to snapshot strings.
|
|
4
|
-
*
|
|
5
|
-
* Provides default serialization logic that handles:
|
|
6
|
-
*
|
|
7
|
-
* - Circular references
|
|
8
|
-
* - Non-JSON types (Functions, Symbols, BigInt, etc.)
|
|
9
|
-
* - Error objects
|
|
10
|
-
* - Map and Set collections
|
|
11
|
-
* - Key sorting for deterministic output
|
|
12
|
-
*
|
|
13
|
-
* @packageDocumentation
|
|
14
|
-
*/
|
|
15
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
16
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
17
|
-
};
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.nodeTestCompatibleSerializer = exports.defaultSerializer = void 0;
|
|
20
|
-
const { entries, getOwnPropertyNames } = Object;
|
|
21
|
-
const { isArray } = Array;
|
|
22
|
-
const json_stable_stringify_1 = __importDefault(require("json-stable-stringify"));
|
|
23
|
-
const guards_js_1 = require("../guards.cjs");
|
|
24
|
-
/**
|
|
25
|
-
* Default JSON replacer that handles non-JSON types.
|
|
26
|
-
*
|
|
27
|
-
* Converts JavaScript-specific types into JSON-serializable representations:
|
|
28
|
-
*
|
|
29
|
-
* - Functions: omitted (`undefined`)
|
|
30
|
-
* - Symbols: converted to string
|
|
31
|
-
* - BigInt: converted to string with `n` suffix
|
|
32
|
-
* - `undefined`: converted to string `'undefined'`
|
|
33
|
-
* - RegExp: converted to string representation
|
|
34
|
-
* - Date: converted to ISO string
|
|
35
|
-
* - Error: converted to object with name, message, and other properties
|
|
36
|
-
* - Map: converted to `{ __type: 'Map', entries: [...] }`
|
|
37
|
-
* - Set: converted to `{ __type: 'Set', values: [...] }`
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
*
|
|
41
|
-
* ```typescript
|
|
42
|
-
* defaultReplacer(Symbol('test')); // 'Symbol(test)'
|
|
43
|
-
* defaultReplacer(42n); // '42n'
|
|
44
|
-
* defaultReplacer(() => {}); // undefined (omitted)
|
|
45
|
-
* ```
|
|
46
|
-
*
|
|
47
|
-
* @function
|
|
48
|
-
* @param value - Value to convert
|
|
49
|
-
* @returns Converted value, or `undefined` to omit
|
|
50
|
-
*/
|
|
51
|
-
const defaultReplacer = (value) => {
|
|
52
|
-
// Functions are omitted
|
|
53
|
-
if (typeof value === 'function' || value === undefined) {
|
|
54
|
-
return undefined;
|
|
55
|
-
}
|
|
56
|
-
// Symbols converted to string
|
|
57
|
-
if (typeof value === 'symbol') {
|
|
58
|
-
return value.toString();
|
|
59
|
-
}
|
|
60
|
-
// BigInt converted to string with suffix
|
|
61
|
-
if (typeof value === 'bigint') {
|
|
62
|
-
return `${value.toString()}n`;
|
|
63
|
-
}
|
|
64
|
-
if ((0, guards_js_1.isA)(value, RegExp)) {
|
|
65
|
-
return value.toString();
|
|
66
|
-
}
|
|
67
|
-
if ((0, guards_js_1.isA)(value, Date)) {
|
|
68
|
-
return value.toISOString();
|
|
69
|
-
}
|
|
70
|
-
if ((0, guards_js_1.isError)(value)) {
|
|
71
|
-
const errorProps = {
|
|
72
|
-
message: value.message,
|
|
73
|
-
name: value.name,
|
|
74
|
-
};
|
|
75
|
-
// Include other enumerable properties
|
|
76
|
-
for (const prop of getOwnPropertyNames(value)) {
|
|
77
|
-
if (prop !== 'stack') {
|
|
78
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
79
|
-
errorProps[prop] = value[prop];
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return errorProps;
|
|
83
|
-
}
|
|
84
|
-
// Map to array of entries
|
|
85
|
-
if ((0, guards_js_1.isA)(value, Map)) {
|
|
86
|
-
return {
|
|
87
|
-
__type: 'Map',
|
|
88
|
-
entries: [...value.entries()],
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
// Set to array
|
|
92
|
-
if ((0, guards_js_1.isA)(value, Set)) {
|
|
93
|
-
return {
|
|
94
|
-
__type: 'Set',
|
|
95
|
-
values: [...value.values()],
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
return value;
|
|
99
|
-
};
|
|
100
|
-
/**
|
|
101
|
-
* Detects and marks circular references in an object graph, and applies
|
|
102
|
-
* replacer for special types.
|
|
103
|
-
*
|
|
104
|
-
* Uses a WeakSet to track visited objects without holding strong references.
|
|
105
|
-
* Circular references are replaced with the string `'[Circular]'`.
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
*
|
|
109
|
-
* ```typescript
|
|
110
|
-
* const obj: any = { a: 1 };
|
|
111
|
-
* obj.self = obj;
|
|
112
|
-
* detectCircular(obj, defaultReplacer); // { a: 1, self: '[Circular]' }
|
|
113
|
-
* ```
|
|
114
|
-
*
|
|
115
|
-
* @function
|
|
116
|
-
* @param value - Value to process
|
|
117
|
-
* @param replacer - Function to transform values
|
|
118
|
-
* @returns Value with circular references replaced and special types converted
|
|
119
|
-
*/
|
|
120
|
-
const detectCircular = (value, replacer) => {
|
|
121
|
-
const seen = new WeakSet();
|
|
122
|
-
/**
|
|
123
|
-
* @function
|
|
124
|
-
*/
|
|
125
|
-
const visit = (val) => {
|
|
126
|
-
// Apply replacer first (handles special types)
|
|
127
|
-
const replaced = replacer(val);
|
|
128
|
-
// If replacer returned something different, use it
|
|
129
|
-
if (replaced !== val) {
|
|
130
|
-
// If replaced is an object, we need to visit it recursively
|
|
131
|
-
if (typeof replaced === 'object' && replaced !== null) {
|
|
132
|
-
val = replaced;
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
// Primitive or special transformation, return as-is
|
|
136
|
-
return replaced;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
// Primitives can't be circular
|
|
140
|
-
if (typeof val !== 'object' || val === null) {
|
|
141
|
-
return val;
|
|
142
|
-
}
|
|
143
|
-
// Check if we've seen this object before
|
|
144
|
-
if (seen.has(val)) {
|
|
145
|
-
return '[Circular]';
|
|
146
|
-
}
|
|
147
|
-
// Mark as seen
|
|
148
|
-
seen.add(val);
|
|
149
|
-
// Handle arrays
|
|
150
|
-
if (isArray(val)) {
|
|
151
|
-
return val.map((item) => visit(item));
|
|
152
|
-
}
|
|
153
|
-
// Handle plain objects
|
|
154
|
-
const result = {};
|
|
155
|
-
for (const [key, value] of entries(val)) {
|
|
156
|
-
const visited = visit(value);
|
|
157
|
-
// Only include if not undefined (functions are omitted)
|
|
158
|
-
if (visited !== undefined) {
|
|
159
|
-
result[key] = visited;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
return result;
|
|
163
|
-
};
|
|
164
|
-
return visit(value);
|
|
165
|
-
};
|
|
166
|
-
/**
|
|
167
|
-
* Default serializer using JSON.stringify with custom handling.
|
|
168
|
-
*
|
|
169
|
-
* This serializer provides robust handling of JavaScript values including:
|
|
170
|
-
*
|
|
171
|
-
* - Circular reference detection
|
|
172
|
-
* - Non-JSON type conversion
|
|
173
|
-
* - Optional key sorting for deterministic output
|
|
174
|
-
* - Custom replacer support
|
|
175
|
-
*
|
|
176
|
-
* The output is formatted with 2-space indentation for readability.
|
|
177
|
-
*
|
|
178
|
-
* @example
|
|
179
|
-
*
|
|
180
|
-
* ```typescript
|
|
181
|
-
* const obj = { b: 2, a: 1, date: new Date('2025-01-01') };
|
|
182
|
-
* defaultSerializer(obj, { sortKeys: true });
|
|
183
|
-
* // Returns:
|
|
184
|
-
* // {
|
|
185
|
-
* // "a": 1,
|
|
186
|
-
* // "b": 2,
|
|
187
|
-
* // "date": "2025-01-01T00:00:00.000Z"
|
|
188
|
-
* // }
|
|
189
|
-
* ```
|
|
190
|
-
*
|
|
191
|
-
* @example
|
|
192
|
-
*
|
|
193
|
-
* ```typescript
|
|
194
|
-
* const circular: any = { a: 1 };
|
|
195
|
-
* circular.self = circular;
|
|
196
|
-
* defaultSerializer(circular);
|
|
197
|
-
* // Returns:
|
|
198
|
-
* // {
|
|
199
|
-
* // "a": 1,
|
|
200
|
-
* // "self": "[Circular]"
|
|
201
|
-
* // }
|
|
202
|
-
* ```
|
|
203
|
-
*
|
|
204
|
-
* @function
|
|
205
|
-
* @param value - Value to serialize
|
|
206
|
-
* @param options - Serialization options
|
|
207
|
-
* @returns JSON string representation
|
|
208
|
-
*/
|
|
209
|
-
const defaultSerializer = (value, options = {}) => {
|
|
210
|
-
const { replacer = defaultReplacer } = options;
|
|
211
|
-
// Handle circular references and apply replacer
|
|
212
|
-
const processed = detectCircular(value, replacer);
|
|
213
|
-
// Don't pass replacer to stringify - it's already been applied
|
|
214
|
-
return String((0, json_stable_stringify_1.default)(processed, { space: 2 }));
|
|
215
|
-
};
|
|
216
|
-
exports.defaultSerializer = defaultSerializer;
|
|
217
|
-
/**
|
|
218
|
-
* Serializer compatible with node:test's snapshot format.
|
|
219
|
-
*
|
|
220
|
-
* This is currently an alias for {@link defaultSerializer}, but exists as a
|
|
221
|
-
* separate export to allow for future node:test-specific customization.
|
|
222
|
-
*
|
|
223
|
-
* @example
|
|
224
|
-
*
|
|
225
|
-
* ```typescript
|
|
226
|
-
* import test from 'node:test';
|
|
227
|
-
* import { nodeTestCompatibleSerializer } from 'bupkis/snapshot';
|
|
228
|
-
*
|
|
229
|
-
* test('my test', (t) => {
|
|
230
|
-
* const data = { foo: 'bar' };
|
|
231
|
-
* expect(data, 'to match snapshot', t, {
|
|
232
|
-
* serializer: nodeTestCompatibleSerializer,
|
|
233
|
-
* });
|
|
234
|
-
* });
|
|
235
|
-
* ```
|
|
236
|
-
*
|
|
237
|
-
* @function
|
|
238
|
-
* @param value - Value to serialize
|
|
239
|
-
* @returns JSON string representation
|
|
240
|
-
*/
|
|
241
|
-
const nodeTestCompatibleSerializer = (value) => {
|
|
242
|
-
// Node:test expects the same format as our default serializer
|
|
243
|
-
return (0, exports.defaultSerializer)(value);
|
|
244
|
-
};
|
|
245
|
-
exports.nodeTestCompatibleSerializer = nodeTestCompatibleSerializer;
|
|
246
|
-
//# sourceMappingURL=serializer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/snapshot/serializer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;AAEH,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC;AAChD,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;AAE1B,kFAA8C;AAE9C,6CAA4C;AAgD5C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,eAAe,GAAG,CAAC,KAAc,EAAW,EAAE;IAClD,wBAAwB;IACxB,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,8BAA8B;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,yCAAyC;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC;IAChC,CAAC;IAED,IAAI,IAAA,eAAG,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,IAAA,eAAG,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,IAAA,mBAAO,EAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,UAAU,GAA4B;YAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC;QAEF,sCAAsC;QACtC,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,sEAAsE;gBACtE,UAAU,CAAC,IAAI,CAAC,GAAI,KAAa,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,0BAA0B;IAC1B,IAAI,IAAA,eAAG,EAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO;YACL,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;SAC9B,CAAC;IACJ,CAAC;IAED,eAAe;IACf,IAAI,IAAA,eAAG,EAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO;YACL,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;SAC5B,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,cAAc,GAAG,CACrB,KAAc,EACd,QAAqC,EAC5B,EAAE;IACX,MAAM,IAAI,GAAG,IAAI,OAAO,EAAU,CAAC;IAEnC;;OAEG;IACH,MAAM,KAAK,GAAG,CAAC,GAAY,EAAW,EAAE;QACtC,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE/B,mDAAmD;QACnD,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YACrB,4DAA4D;YAC5D,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtD,GAAG,GAAG,QAAQ,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,oDAAoD;gBACpD,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,GAAG,CAAC;QACb,CAAC;QAED,yCAAyC;QACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,eAAe;QACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEd,gBAAgB;QAChB,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,uBAAuB;QACvB,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,wDAAwD;YACxD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YACxB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACI,MAAM,iBAAiB,GAAG,CAC/B,KAAc,EACd,UAA6B,EAAE,EACvB,EAAE;IACV,MAAM,EAAE,QAAQ,GAAG,eAAe,EAAE,GAAG,OAAO,CAAC;IAE/C,gDAAgD;IAChD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClD,+DAA+D;IAC/D,OAAO,MAAM,CAAC,IAAA,+BAAS,EAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC;AAVW,QAAA,iBAAiB,qBAU5B;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACI,MAAM,4BAA4B,GAAG,CAAC,KAAc,EAAU,EAAE;IACrE,8DAA8D;IAC9D,OAAO,IAAA,yBAAiB,EAAC,KAAK,CAAC,CAAC;AAClC,CAAC,CAAC;AAHW,QAAA,4BAA4B,gCAGvC"}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Serialization utilities for converting values to snapshot strings.
|
|
3
|
-
*
|
|
4
|
-
* Provides default serialization logic that handles:
|
|
5
|
-
*
|
|
6
|
-
* - Circular references
|
|
7
|
-
* - Non-JSON types (Functions, Symbols, BigInt, etc.)
|
|
8
|
-
* - Error objects
|
|
9
|
-
* - Map and Set collections
|
|
10
|
-
* - Key sorting for deterministic output
|
|
11
|
-
*
|
|
12
|
-
* @packageDocumentation
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* Options for the default serializer.
|
|
16
|
-
*/
|
|
17
|
-
export interface SerializerOptions {
|
|
18
|
-
/**
|
|
19
|
-
* Maximum depth for nested objects.
|
|
20
|
-
*
|
|
21
|
-
* Deeper objects will be replaced with `[Object]` or `[Array]`.
|
|
22
|
-
*
|
|
23
|
-
* @default Infinity
|
|
24
|
-
*/
|
|
25
|
-
depth?: number;
|
|
26
|
-
/**
|
|
27
|
-
* Custom replacer for non-serializable values.
|
|
28
|
-
*
|
|
29
|
-
* This function is called for each value during serialization and can
|
|
30
|
-
* transform or filter values before they're converted to JSON.
|
|
31
|
-
*
|
|
32
|
-
* @example
|
|
33
|
-
*
|
|
34
|
-
* ```typescript
|
|
35
|
-
* replacer: (value) => {
|
|
36
|
-
* // Redact secrets
|
|
37
|
-
* if (typeof value === 'object' && value && 'password' in value) {
|
|
38
|
-
* return { ...value, password: '[REDACTED]' };
|
|
39
|
-
* }
|
|
40
|
-
* return value;
|
|
41
|
-
* };
|
|
42
|
-
* ```
|
|
43
|
-
*
|
|
44
|
-
* @param value - The value to process
|
|
45
|
-
* @returns The transformed value, or `undefined` to omit
|
|
46
|
-
*/
|
|
47
|
-
replacer?: (value: unknown) => unknown;
|
|
48
|
-
/**
|
|
49
|
-
* Whether to sort object keys alphabetically.
|
|
50
|
-
*
|
|
51
|
-
* This ensures deterministic output regardless of property insertion order.
|
|
52
|
-
*
|
|
53
|
-
* @default true
|
|
54
|
-
*/
|
|
55
|
-
sortKeys?: boolean;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Default serializer using JSON.stringify with custom handling.
|
|
59
|
-
*
|
|
60
|
-
* This serializer provides robust handling of JavaScript values including:
|
|
61
|
-
*
|
|
62
|
-
* - Circular reference detection
|
|
63
|
-
* - Non-JSON type conversion
|
|
64
|
-
* - Optional key sorting for deterministic output
|
|
65
|
-
* - Custom replacer support
|
|
66
|
-
*
|
|
67
|
-
* The output is formatted with 2-space indentation for readability.
|
|
68
|
-
*
|
|
69
|
-
* @example
|
|
70
|
-
*
|
|
71
|
-
* ```typescript
|
|
72
|
-
* const obj = { b: 2, a: 1, date: new Date('2025-01-01') };
|
|
73
|
-
* defaultSerializer(obj, { sortKeys: true });
|
|
74
|
-
* // Returns:
|
|
75
|
-
* // {
|
|
76
|
-
* // "a": 1,
|
|
77
|
-
* // "b": 2,
|
|
78
|
-
* // "date": "2025-01-01T00:00:00.000Z"
|
|
79
|
-
* // }
|
|
80
|
-
* ```
|
|
81
|
-
*
|
|
82
|
-
* @example
|
|
83
|
-
*
|
|
84
|
-
* ```typescript
|
|
85
|
-
* const circular: any = { a: 1 };
|
|
86
|
-
* circular.self = circular;
|
|
87
|
-
* defaultSerializer(circular);
|
|
88
|
-
* // Returns:
|
|
89
|
-
* // {
|
|
90
|
-
* // "a": 1,
|
|
91
|
-
* // "self": "[Circular]"
|
|
92
|
-
* // }
|
|
93
|
-
* ```
|
|
94
|
-
*
|
|
95
|
-
* @function
|
|
96
|
-
* @param value - Value to serialize
|
|
97
|
-
* @param options - Serialization options
|
|
98
|
-
* @returns JSON string representation
|
|
99
|
-
*/
|
|
100
|
-
export declare const defaultSerializer: (value: unknown, options?: SerializerOptions) => string;
|
|
101
|
-
/**
|
|
102
|
-
* Serializer compatible with node:test's snapshot format.
|
|
103
|
-
*
|
|
104
|
-
* This is currently an alias for {@link defaultSerializer}, but exists as a
|
|
105
|
-
* separate export to allow for future node:test-specific customization.
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
*
|
|
109
|
-
* ```typescript
|
|
110
|
-
* import test from 'node:test';
|
|
111
|
-
* import { nodeTestCompatibleSerializer } from 'bupkis/snapshot';
|
|
112
|
-
*
|
|
113
|
-
* test('my test', (t) => {
|
|
114
|
-
* const data = { foo: 'bar' };
|
|
115
|
-
* expect(data, 'to match snapshot', t, {
|
|
116
|
-
* serializer: nodeTestCompatibleSerializer,
|
|
117
|
-
* });
|
|
118
|
-
* });
|
|
119
|
-
* ```
|
|
120
|
-
*
|
|
121
|
-
* @function
|
|
122
|
-
* @param value - Value to serialize
|
|
123
|
-
* @returns JSON string representation
|
|
124
|
-
*/
|
|
125
|
-
export declare const nodeTestCompatibleSerializer: (value: unknown) => string;
|
|
126
|
-
//# sourceMappingURL=serializer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/snapshot/serializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAEvC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,OAAO,EACd,UAAS,iBAAsB,KAC9B,MAOF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,KAAG,MAG7D,CAAC"}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Serialization utilities for converting values to snapshot strings.
|
|
3
|
-
*
|
|
4
|
-
* Provides default serialization logic that handles:
|
|
5
|
-
*
|
|
6
|
-
* - Circular references
|
|
7
|
-
* - Non-JSON types (Functions, Symbols, BigInt, etc.)
|
|
8
|
-
* - Error objects
|
|
9
|
-
* - Map and Set collections
|
|
10
|
-
* - Key sorting for deterministic output
|
|
11
|
-
*
|
|
12
|
-
* @packageDocumentation
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* Options for the default serializer.
|
|
16
|
-
*/
|
|
17
|
-
export interface SerializerOptions {
|
|
18
|
-
/**
|
|
19
|
-
* Maximum depth for nested objects.
|
|
20
|
-
*
|
|
21
|
-
* Deeper objects will be replaced with `[Object]` or `[Array]`.
|
|
22
|
-
*
|
|
23
|
-
* @default Infinity
|
|
24
|
-
*/
|
|
25
|
-
depth?: number;
|
|
26
|
-
/**
|
|
27
|
-
* Custom replacer for non-serializable values.
|
|
28
|
-
*
|
|
29
|
-
* This function is called for each value during serialization and can
|
|
30
|
-
* transform or filter values before they're converted to JSON.
|
|
31
|
-
*
|
|
32
|
-
* @example
|
|
33
|
-
*
|
|
34
|
-
* ```typescript
|
|
35
|
-
* replacer: (value) => {
|
|
36
|
-
* // Redact secrets
|
|
37
|
-
* if (typeof value === 'object' && value && 'password' in value) {
|
|
38
|
-
* return { ...value, password: '[REDACTED]' };
|
|
39
|
-
* }
|
|
40
|
-
* return value;
|
|
41
|
-
* };
|
|
42
|
-
* ```
|
|
43
|
-
*
|
|
44
|
-
* @param value - The value to process
|
|
45
|
-
* @returns The transformed value, or `undefined` to omit
|
|
46
|
-
*/
|
|
47
|
-
replacer?: (value: unknown) => unknown;
|
|
48
|
-
/**
|
|
49
|
-
* Whether to sort object keys alphabetically.
|
|
50
|
-
*
|
|
51
|
-
* This ensures deterministic output regardless of property insertion order.
|
|
52
|
-
*
|
|
53
|
-
* @default true
|
|
54
|
-
*/
|
|
55
|
-
sortKeys?: boolean;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Default serializer using JSON.stringify with custom handling.
|
|
59
|
-
*
|
|
60
|
-
* This serializer provides robust handling of JavaScript values including:
|
|
61
|
-
*
|
|
62
|
-
* - Circular reference detection
|
|
63
|
-
* - Non-JSON type conversion
|
|
64
|
-
* - Optional key sorting for deterministic output
|
|
65
|
-
* - Custom replacer support
|
|
66
|
-
*
|
|
67
|
-
* The output is formatted with 2-space indentation for readability.
|
|
68
|
-
*
|
|
69
|
-
* @example
|
|
70
|
-
*
|
|
71
|
-
* ```typescript
|
|
72
|
-
* const obj = { b: 2, a: 1, date: new Date('2025-01-01') };
|
|
73
|
-
* defaultSerializer(obj, { sortKeys: true });
|
|
74
|
-
* // Returns:
|
|
75
|
-
* // {
|
|
76
|
-
* // "a": 1,
|
|
77
|
-
* // "b": 2,
|
|
78
|
-
* // "date": "2025-01-01T00:00:00.000Z"
|
|
79
|
-
* // }
|
|
80
|
-
* ```
|
|
81
|
-
*
|
|
82
|
-
* @example
|
|
83
|
-
*
|
|
84
|
-
* ```typescript
|
|
85
|
-
* const circular: any = { a: 1 };
|
|
86
|
-
* circular.self = circular;
|
|
87
|
-
* defaultSerializer(circular);
|
|
88
|
-
* // Returns:
|
|
89
|
-
* // {
|
|
90
|
-
* // "a": 1,
|
|
91
|
-
* // "self": "[Circular]"
|
|
92
|
-
* // }
|
|
93
|
-
* ```
|
|
94
|
-
*
|
|
95
|
-
* @function
|
|
96
|
-
* @param value - Value to serialize
|
|
97
|
-
* @param options - Serialization options
|
|
98
|
-
* @returns JSON string representation
|
|
99
|
-
*/
|
|
100
|
-
export declare const defaultSerializer: (value: unknown, options?: SerializerOptions) => string;
|
|
101
|
-
/**
|
|
102
|
-
* Serializer compatible with node:test's snapshot format.
|
|
103
|
-
*
|
|
104
|
-
* This is currently an alias for {@link defaultSerializer}, but exists as a
|
|
105
|
-
* separate export to allow for future node:test-specific customization.
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
*
|
|
109
|
-
* ```typescript
|
|
110
|
-
* import test from 'node:test';
|
|
111
|
-
* import { nodeTestCompatibleSerializer } from 'bupkis/snapshot';
|
|
112
|
-
*
|
|
113
|
-
* test('my test', (t) => {
|
|
114
|
-
* const data = { foo: 'bar' };
|
|
115
|
-
* expect(data, 'to match snapshot', t, {
|
|
116
|
-
* serializer: nodeTestCompatibleSerializer,
|
|
117
|
-
* });
|
|
118
|
-
* });
|
|
119
|
-
* ```
|
|
120
|
-
*
|
|
121
|
-
* @function
|
|
122
|
-
* @param value - Value to serialize
|
|
123
|
-
* @returns JSON string representation
|
|
124
|
-
*/
|
|
125
|
-
export declare const nodeTestCompatibleSerializer: (value: unknown) => string;
|
|
126
|
-
//# sourceMappingURL=serializer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/snapshot/serializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAEvC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,OAAO,EACd,UAAS,iBAAsB,KAC9B,MAOF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,KAAG,MAG7D,CAAC"}
|