🚀 Big News:Socket Has Acquired Secure Annex.Learn More
Socket
Book a DemoSign in
Socket

tcompare

Package Overview
Dependencies
Maintainers
1
Versions
57
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tcompare - npm Package Compare versions

Comparing version
6.0.1-3
to
6.0.1-4
+31
-20
dist/cjs/format.d.ts
/// <reference types="node" resolution-mode="require"/>
import { Style, StyleType } from './styles.js';
/**
* The base class for all other comparators, and used
* directly by comparators for their "simplePrint" methods.
* It doesn't do comparison, just formatting.
* Options to control the formatting of objects.
*/
export interface FormatOptions {
/** set when formatting keys and values of collections */
parent?: Format;
/** sort items alphabetically by key */
sort?: boolean;
/** how to print this thing */
style?: StyleType;
/**
* optinally override {@link tcompare!styles.Style#bufferChunkSize }
* */
bufferChunkSize?: number;
/**
* Include any and all enumerable properties, including those inherited on
* the prototype chain. By default, only `own` properties are printed.
*/
includeEnumerable?: boolean;
/**
* Include getter properties
*/
includeGetters?: boolean;
/**
* set when formatting keys and values of collections
*
* @internal
* */
parent?: Format;
/**
* test whether an object has been seen, and get a reference to the

@@ -18,11 +35,7 @@ * Format handling them, if so.

* overridden in child classes when doing simplePrint()
*
* @internal
*/
seen?: (obj?: any) => false | Format;
/** how to print this thing */
style?: StyleType;
/**
* optinally override {@link tcompare!styles.Style#bufferChunkSize }
* */
bufferChunkSize?: number;
/**
* Set when printing child fields

@@ -58,16 +71,14 @@ *

/**
* Include any and all enumerable properties, including those inherited on
* the prototype chain. By default, only `own` properties are printed.
*/
includeEnumerable?: boolean;
/**
* Include getter properties
*/
includeGetters?: boolean;
/**
* The object being compared against in comparison classes. (Not used
* in {@link tcompare!format.Format}.)
*
* @internal
*/
expect?: any;
}
/**
* The base class for all other comparators, and used
* directly by comparators for their "simplePrint" methods.
* It doesn't do comparison, just formatting.
*/
export declare class Format {

@@ -74,0 +85,0 @@ options: FormatOptions;

@@ -1,1 +0,1 @@

{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"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"}

@@ -15,2 +15,7 @@ "use strict";

const objToString = (obj) => toString.call(obj);
/**
* The base class for all other comparators, and used
* directly by comparators for their "simplePrint" methods.
* It doesn't do comparison, just formatting.
*/
class Format {

@@ -17,0 +22,0 @@ options;

@@ -1,1 +0,1 @@

{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":";;;AACA,2CAAoC;AAEpC,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAE,EAAE;IAC7B,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACvB;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,IAAI,CAAA;KACZ;AACH,CAAC,CAAA;AAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;AACrC,MAAM,WAAW,GAAG,CAAC,GAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAwEpD,MAAa,MAAM;IACjB,OAAO,CAAe;IACtB,MAAM,CAAe;IACrB,IAAI,CAAe;IACnB,IAAI,CAAS;IACb,EAAE,CAAe;IACjB,SAAS,CAAQ;IACjB,KAAK,CAAkB;IACvB,KAAK,CAAO;IACZ,eAAe,CAAQ;IACvB,GAAG,CAAK;IACR,KAAK,CAAS;IACd,KAAK,CAAQ;IACb,MAAM,CAAQ;IACd,KAAK,CAAS;IACd,MAAM,CAAK;IACX,MAAM,CAAK;IAEX,YAAY,GAAQ,EAAE,UAAyB,EAAE;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAA;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAA;QAC1B,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE;YACtC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;SACzB;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;QACd,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAA;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;YACvB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;YACnB,CAAC,CAAC,kBAAM,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAA;QACrC,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,SAAS,CAAC,kBAAkB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;SACvD;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,eAAe;YAClB,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,QAAQ;gBACrC,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAA;QAE3D,8CAA8C;QAC9C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;QAEtB,wBAAwB;QACxB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAA;QAC5B,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE;YACvD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;SACzD;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;YACvB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YACpB,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ;gBACpC,CAAC,CAAC,OAAO,CAAC,MAAM;gBAChB,CAAC,CAAC,IAAI,CAAA;QACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAA;IACnB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAA;IAClE,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,EAAE,EAAE;YACX,OAAO,IAAI,CAAC,EAAE,CAAA;SACf;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3C,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAA;SAC3B;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,CAAO;QACV,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;YACnD,OAAO,KAAK,CAAA;SACb;QAED,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;YACzC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;gBAC5B,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAA;gBACxB,OAAO,CAAC,CAAA;aACT;SACF;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,GAAQ,EAAE,OAAsB,EAAE,GAAmB;QACzD,2DAA2D;QAC3D,wDAAwD;QACxD,kBAAkB;QAClB,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE;YACxC,GAAG,IAAI,CAAC,OAAO;YACf,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,KAAK;YAClB,GAAG,OAAO;YACV,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;IACJ,CAAC;IAED,uBAAuB;IACvB,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,YAAY,KAAK,CAAA;IACrC,CAAC;IAED,WAAW;QACT,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,oBAAoB,CAAA;IAC1D,CAAC;IAED,OAAO;QACL,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,UAAU,EAAE,CAClB,CAAA;IACH,CAAC;IAED,wEAAwE;IACxE,yDAAyD;IACzD,UAAU;QACR,OAAO,CACL,IAAI,CAAC,MAAM;YACX,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;YAC/B,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU,CACnD,CAAA;IACH,CAAC;IAED,SAAS;QACP,OAAO,CACL,CAAC,IAAI,CAAC,MAAM;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACtB,IAAI,CAAC,KAAK,CACX,CAAA;IACH,CAAC;IAED,QAAQ;QACN,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QACrB,OAAO,CACL,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,QAAQ;YACrB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,WAAW;gBAC1C,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,kBAAkB;gBACpD,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU;oBAC5B,OAAO,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW;SAC9C,CAAA;IACH,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,YAAY,GAAG,CAAA;IACnC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,YAAY,GAAG,CAAA;IACnC,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrC,CAAC;IAED,QAAQ;QACN,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAA;IACxC,CAAC;IAED,8BAA8B;IAE9B,QAAQ;QACN,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,MAAM;YACvC,IAAI,CAAC,MAAM,CAAC,WAAW;YACvB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI;YAC5B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE;YACnC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI;YAC9B,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrC,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,EAAE,CAAA;IACR,CAAC;IAED,IAAI,aAAa;QACf,kDAAkD;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,MAAM;YACb,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;gBAChB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;gBACxB,CAAC,CAAC,IAAI,CAAA;QAER,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,KAAK,CAAA;SAC3B;QAED,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;YAC3C,KAAK;YACL,YAAY,EAAE,IAAI;SACnB,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,mBAAmB;IAEnB,2DAA2D;IAC3D,2DAA2D;IAC3D,mEAAmE;IACnE,qBAAqB;IACrB,KAAK;QACH,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;YACtB,OAAO,IAAI,CAAC,IAAI,CAAA;SACjB;QACD,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;SACzB;aAAM;YACL,IAAI,CAAC,UAAU,EAAE,CAAA;SAClB;QACD,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,CAAC,QAAQ,EAAE,CAAA;QACf,4BAA4B;QAC5B,qBAAqB;QACrB,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;SACjE;QACD,oBAAoB;QACpB,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,UAAU;QACR,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE;YAC1B,KAAK,WAAW;gBACd,IAAI,CAAC,cAAc,EAAE,CAAA;gBACrB,MAAK;YAEP,KAAK,QAAQ;gBACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAChB,IAAI,CAAC,SAAS,EAAE,CAAA;iBACjB;qBAAM,IAAI,IAAI,CAAC,MAAM,YAAY,MAAM,EAAE;oBACxC,IAAI,CAAC,WAAW,EAAE,CAAA;iBACnB;qBAAM,IAAI,IAAI,CAAC,MAAM,YAAY,IAAI,EAAE;oBACtC,IAAI,CAAC,SAAS,EAAE,CAAA;iBACjB;qBAAM;oBACL,IAAI,CAAC,eAAe,EAAE,CAAA;iBACvB;gBACD,MAAK;YAEP,KAAK,QAAQ;gBACX,IAAI,CAAC,WAAW,EAAE,CAAA;gBAClB,MAAK;YAEP,KAAK,QAAQ;gBACX,IAAI,CAAC,WAAW,EAAE,CAAA;gBAClB,MAAK;YAEP,KAAK,QAAQ;gBACX,IAAI,CAAC,WAAW,EAAE,CAAA;gBAClB,MAAK;YAEP,KAAK,SAAS;gBACZ,IAAI,CAAC,YAAY,EAAE,CAAA;gBACnB,MAAK;YAEP,KAAK,QAAQ;gBACX,IAAI,CAAC,WAAW,EAAE,CAAA;gBAClB,MAAK;YAEP,KAAK,UAAU;gBACb,IAAI,CAAC,OAAO,EAAE,CAAA;gBACd,MAAK;SACR;IACH,CAAC;IAED,SAAS;QACP,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;IACxC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;IACrC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,IAAI,WAAW,CAAA;IAC1B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,IAAI,IAAI,MAAM,CAAA;IACrB,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;IACrC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAA;IAC3C,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAA;YACrC,OAAM;SACP;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;QACjD,MAAM,GAAG,GAAG,CAAC,GAAG;YACd,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACpC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;gBAC3B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAA;QAC9B,IAAI,CAAC,IAAI;YACP,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAA;IAClE,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAM;SACP;QACD,IAAI,CAAC,IAAI;YACP,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;gBACxB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;oBACrB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;oBAC1B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACxB,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;4BACvB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;4BAC5B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gCACrB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gCAC1B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;oCACxB,CAAC,CAAC,EAAE;oCACJ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAA;IACjC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE;YAChE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAED,aAAa,CAAC,IAAY;QACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,WAAW,CAAC,CAAC,GAAG,CAAC;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,EAAE;YACnB,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;YACnB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;gBACd,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACjB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;oBACd,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;oBACjB,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;wBACjB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;wBACpB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,aAAa;4BACtC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;4BACnB,CAAC,CAAC,oBAAoB;gCACpB,IAAI,CAAC,SAAS,EAAE,CAAA;IACtB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAClD,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE;YACzC,IAAI,CAAC,IAAI;gBACP,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC9B,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;oBACzB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;SAC3D;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;SACtC;aAAM,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI;gBACP,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;oBACxB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;oBAClC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SACpC;aAAM;YACL,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,eAAe,EAAE,CAAA;SACvB;IACH,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;IACtD,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAA;IACtC,CAAC;IAED,eAAe;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAA;QAC9B,IAAI,CAAS,CAAA;QACb,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YAC9C,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;SACrD;QACD,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,eAAe,CAAC,GAAW,EAAE,GAAW;QACtC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAClC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAA;IACzC,CAAC;IAED,mBAAmB,CAAC,GAAQ,EAAE,GAAW;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAA;IACzB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,aAAa,EAAE,CAAA;SACrB;aAAM;YACL,IAAI,CAAC,YAAY,EAAE,CAAA;YACnB,IAAI,CAAC,YAAY,EAAE,CAAA;YACnB,IAAI,CAAC,YAAY,EAAE,CAAA;SACpB;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,YAAY;QACV,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;YAC7B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;SACxB;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,aAAa,CAAC,GAAQ;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3C,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAA;IACzB,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,aAAa,EAAE,CAAA;SACrB;aAAM;YACL,IAAI,CAAC,YAAY,EAAE,CAAA;YACnB,IAAI,CAAC,YAAY,EAAE,CAAA;YACnB,IAAI,CAAC,YAAY,EAAE,CAAA;SACpB;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,aAAa,CAAC,MAAW,IAAI,CAAC,MAAM;QAClC,iDAAiD;QACjD,qBAAqB;QACrB,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE;YACzB,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAA;SACjE;QACD,oBAAoB;QACpB,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3B,CAAC;IAED,YAAY;QACV,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YAC7C,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;SAC7B;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,aAAa,CAAC,GAAQ,EAAE,GAAQ;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAA;IACzB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE;YACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAC/C;aAAM,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAA;SACxB;aAAM,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YACjC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAA;SACjC;aAAM;YACL,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,eAAe,EAAE,CAAA;SACvB;IACH,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAA;IACjC,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;IACvC,CAAC;IAED,eAAe;QACb,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpD,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAA;IACtC,CAAC;IAED,eAAe;QACb,MAAM,KAAK,GAAa,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAA;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACrB,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,CAAA;SACrC;QACD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAA;IACzD,CAAC;IAED,eAAe,CAAC,GAAQ,EAAE,GAAW;QACnC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAClC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAA;IACzC,CAAC;IAED,mBAAmB,CAAC,GAAQ,EAAE,GAAW;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAA;IACzB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,IAAI,CAAC,eAAe,EAAE,CAAA;SACvB;aAAM;YACL,IAAI,CAAC,cAAc,EAAE,CAAA;YACrB,IAAI,CAAC,cAAc,EAAE,CAAA;YACrB,IAAI,CAAC,cAAc,EAAE,CAAA;SACtB;IACH,CAAC;IAED,YAAY;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAA;QAC5B,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CACtC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAC/B,CAAA;SACF;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,eAAe,CAAC,GAAQ,EAAE,GAAQ;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAA;IACzB,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,IAAI,CAAC,eAAe,EAAE,CAAA;SACvB;aAAM;YACL,IAAI,CAAC,cAAc,EAAE,CAAA;YACrB,IAAI,CAAC,cAAc,EAAE,CAAA;YACrB,IAAI,CAAC,cAAc,EAAE,CAAA;SACtB;IACH,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3B,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACjE,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC;IAED,WAAW,CAAC,MAAW,IAAI,CAAC,MAAM;QAChC,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAClC,MAAM,IAAI,GAAG,EAAE,CAAA;YACf,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;aACb;YACD,OAAO,IAAI,CAAA;SACZ;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YACtC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;YACxC,IAAI,KAAK,EAAE;gBACT,MAAM,IAAI,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAA;gBACpD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC/C,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,UAAU,EAAE;wBACrD,2DAA2D;wBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;qBACd;iBACF;aACF;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACvB;aAAM;YACL,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACxB;IACH,CAAC;IAED,SAAS;QACP,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,IAAI,CAAC,cAAc,EAAE,CAAA;SACtB;aAAM;YACL,IAAI,CAAC,aAAa,EAAE,CAAA;YACpB,IAAI,CAAC,aAAa,EAAE,CAAA;YACpB,IAAI,CAAC,aAAa,EAAE,CAAA;SACrB;IACH,CAAC;IAED,WAAW,CAAC,MAAW,IAAI,CAAC,MAAM;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;IAC3C,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,aAAa;QACX,aAAa;QACb,qBAAqB;QACrB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QACD,oBAAoB;QACpB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,aAAa;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;SAC9B;IACH,CAAC;IAED,cAAc,CAAC,GAAQ;QACrB,MAAM,GAAG,GAAoB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACzD,IAAI;gBACF,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;aACnB;YAAC,MAAM;gBACN,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;aACtB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,IAAI;YACd,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACpD,CAAC,CAAC,GAAG,CAAA;IACT,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,cAAc,CAAC,GAAQ,EAAE,GAAQ;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QACtC,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAA;IACzB,CAAC;CACF;AA9tBD,wBA8tBC","sourcesContent":["import { Style, StyleType } from './styles.js'\nimport { styles } from './styles.js'\n\nconst arrayFrom = (obj: any) => {\n try {\n return Array.from(obj)\n } catch (_) {\n return null\n }\n}\n\nconst { toString } = Object.prototype\nconst objToString = (obj: any) => toString.call(obj)\n\n/**\n * The base class for all other comparators, and used\n * directly by comparators for their \"simplePrint\" methods.\n * It doesn't do comparison, just formatting.\n */\nexport interface FormatOptions {\n /** set when formatting keys and values of collections */\n parent?: Format\n /** sort items alphabetically by key */\n sort?: boolean\n /**\n * test whether an object has been seen, and get a reference to the\n * Format handling them, if so.\n *\n * overridden in child classes when doing simplePrint()\n */\n seen?: (obj?: any) => false | Format\n /** how to print this thing */\n style?: StyleType\n /**\n * optinally override {@link tcompare!styles.Style#bufferChunkSize }\n * */\n bufferChunkSize?: number\n /**\n * Set when printing child fields\n *\n * @internal\n */\n key?: any\n /**\n * used when formatting Map keys\n *\n * @internal\n */\n isKey?: boolean\n /**\n * level within the object graph being printed\n *\n * @internal\n */\n level?: number\n /**\n * indentation level of this object within the object graph\n *\n * @internal\n */\n indent?: string\n /**\n * used when provisionally exploring a path for comparison\n *\n * @internal\n */\n provisional?: boolean\n /**\n * Include any and all enumerable properties, including those inherited on\n * the prototype chain. By default, only `own` properties are printed.\n */\n includeEnumerable?: boolean\n /**\n * Include getter properties\n */\n includeGetters?: boolean\n\n /**\n * The object being compared against in comparison classes. (Not used\n * in {@link tcompare!format.Format}.)\n */\n expect?: any\n}\n\nexport class Format {\n options: FormatOptions\n parent: Format | null\n memo: null | string\n sort: boolean\n id: null | number\n idCounter: number\n idMap: Map<any, number>\n style: Style\n bufferChunkSize: number\n key: any\n isKey: boolean\n level: number\n indent: string\n match: boolean\n object: any\n expect: any\n\n constructor(obj: any, options: FormatOptions = {}) {\n this.options = options\n this.parent = options.parent || null\n this.memo = null\n this.sort = !!options.sort\n if (typeof options.seen === 'function') {\n this.seen = options.seen\n }\n this.id = null\n this.idCounter = 0\n this.idMap = this.parent ? this.parent.idMap : new Map()\n const style = this.parent\n ? this.parent.style\n : styles[options.style || 'pretty']\n if (!style) {\n throw new TypeError(`unknown style: ${options.style}`)\n }\n this.style = style\n this.bufferChunkSize =\n this.style.bufferChunkSize === Infinity\n ? Infinity\n : options.bufferChunkSize || this.style.bufferChunkSize\n\n // for printing child values of pojos and maps\n this.key = options.key\n\n // for printing Map keys\n this.isKey = !!options.isKey\n if (this.isKey && !(this.parent && this.parent.isMap())) {\n throw new Error('isKey should only be set for Map keys')\n }\n\n this.level = this.parent ? this.parent.level + 1 : 0\n this.indent = this.parent\n ? this.parent.indent\n : typeof options.indent === 'string'\n ? options.indent\n : ' '\n this.match = true\n this.object = obj\n this.expect = obj\n }\n\n incId(): number {\n return this.parent ? this.parent.incId() : (this.idCounter += 1)\n }\n\n getId(): number {\n if (this.id) {\n return this.id\n }\n const fromMap = this.idMap.get(this.object)\n if (fromMap) {\n return (this.id = fromMap)\n }\n const id = this.incId()\n this.idMap.set(this.object, id)\n return (this.id = id)\n }\n\n seen(_?: any): false | Format {\n if (!this.object || typeof this.object !== 'object') {\n return false\n }\n\n for (let p = this.parent; p; p = p.parent) {\n if (p.object === this.object) {\n p.id = p.id || p.getId()\n return p\n }\n }\n return false\n }\n\n child(obj: any, options: FormatOptions, cls?: typeof Format) {\n // This raises an error because ts thinks 'typeof Class' is\n // a normal function, not an instantiable class. Ignore.\n //@ts-expect-error\n return new (cls || this.constructor)(obj, {\n ...this.options,\n isKey: false,\n provisional: false,\n ...options,\n parent: this,\n })\n }\n\n // type testing methods\n isError(): boolean {\n return this.object instanceof Error\n }\n\n isArguments(): boolean {\n return objToString(this.object) === '[object Arguments]'\n }\n\n isArray(): boolean {\n return (\n Array.isArray(this.object) ||\n this.isArguments() ||\n this.isIterable()\n )\n }\n\n // technically this means \"is an iterable we don't have another fit for\"\n // sets, arrays, maps, and streams all handled specially.\n isIterable(): boolean {\n return (\n this.object &&\n typeof this.object === 'object' &&\n !this.isSet() &&\n !this.isMap() &&\n !this.isStream() &&\n typeof this.object[Symbol.iterator] === 'function'\n )\n }\n\n isKeyless(): boolean {\n return (\n !this.parent ||\n this.parent.isSet() ||\n this.parent.isArray() ||\n this.parent.isString() ||\n this.isKey\n )\n }\n\n isStream(): boolean {\n const s = this.object\n return (\n !!s &&\n typeof s === 'object' &&\n (typeof s.pipe === 'function' || // readable\n typeof s.pipeTo === 'function' || // whatwg readable\n (typeof s.write === 'function' &&\n typeof s.end === 'function')) // writable\n )\n }\n\n isMap(): boolean {\n return this.object instanceof Map\n }\n\n isSet(): boolean {\n return this.object instanceof Set\n }\n\n isBuffer(): boolean {\n return Buffer.isBuffer(this.object)\n }\n\n isString(): boolean {\n return typeof this.object === 'string'\n }\n\n // end type checking functions\n\n getClass(): string {\n const ts = objToString(this.object).slice(8, -1)\n return this.object.constructor !== Object &&\n this.object.constructor &&\n this.object.constructor.name &&\n this.object.constructor.name !== ts\n ? this.object.constructor.name\n : !Object.getPrototypeOf(this.object)\n ? 'Null Object'\n : ts\n }\n\n get objectAsArray(): any[] | null {\n // return the object as an actual array, if we can\n const value = Array.isArray(this.object)\n ? this.object\n : this.isArray()\n ? arrayFrom(this.object)\n : null\n\n if (value === null) {\n this.isArray = () => false\n }\n\n Object.defineProperty(this, 'objectAsArray', {\n value,\n configurable: true,\n })\n return value\n }\n\n // printing methods\n\n // Change from v5: ONLY the print() method returns a string\n // everything else mutates this.memo, so that child classes\n // can track both this.memo AND this.expectMemo, and then calculate\n // a diff at the end.\n print(): string {\n if (this.memo !== null) {\n return this.memo\n }\n this.memo = ''\n const seen = this.seen(this.object)\n if (seen) {\n this.printCircular(seen)\n } else {\n this.printValue()\n }\n this.printStart()\n this.printEnd()\n // this should be impossible\n /* c8 ignore start */\n if (typeof this.memo !== 'string') {\n throw new Error('failed to build memo string in print() method')\n }\n /* c8 ignore stop */\n return this.memo\n }\n\n printValue(): void {\n switch (typeof this.object) {\n case 'undefined':\n this.printUndefined()\n break\n\n case 'object':\n if (!this.object) {\n this.printNull()\n } else if (this.object instanceof RegExp) {\n this.printRegExp()\n } else if (this.object instanceof Date) {\n this.printDate()\n } else {\n this.printCollection()\n }\n break\n\n case 'symbol':\n this.printSymbol()\n break\n\n case 'bigint':\n this.printBigInt()\n break\n\n case 'string':\n this.printString()\n break\n\n case 'boolean':\n this.printBoolean()\n break\n\n case 'number':\n this.printNumber()\n break\n\n case 'function':\n this.printFn()\n break\n }\n }\n\n printDate(): void {\n this.memo += this.object.toISOString()\n }\n\n printRegExp(): void {\n this.memo += this.object.toString()\n }\n\n printUndefined(): void {\n this.memo += 'undefined'\n }\n\n printNull(): void {\n this.memo += 'null'\n }\n\n printSymbol(): void {\n this.memo += this.object.toString()\n }\n\n printBigInt(): void {\n this.memo += this.object.toString() + 'n'\n }\n\n printBoolean(): void {\n this.memo += JSON.stringify(this.object)\n }\n\n printNumber(): void {\n this.memo += JSON.stringify(this.object)\n }\n\n printStart(): void {\n if (!this.parent) {\n this.memo = this.nodeId() + this.memo\n return\n }\n const indent = this.isKey ? '' : this.indentLevel()\n const key = this.isKeyless() ? '' : this.getKey()\n const sep = !key\n ? ''\n : this.parent && this.parent.isMap()\n ? this.style.mapKeyValSep()\n : this.style.pojoKeyValSep()\n this.memo =\n this.style.start(indent, key, sep) + this.nodeId() + this.memo\n }\n\n printEnd(): void {\n if (!this.parent) {\n return\n }\n this.memo +=\n this.isKey || !this.parent\n ? ''\n : this.parent.isMap()\n ? this.style.mapEntrySep()\n : this.parent.isBuffer()\n ? ''\n : this.parent.isArray()\n ? this.style.arrayEntrySep()\n : this.parent.isSet()\n ? this.style.setEntrySep()\n : this.parent.isString()\n ? ''\n : this.style.pojoEntrySep()\n }\n\n getKey(): string {\n return this.parent && this.parent.isMap()\n ? this.style.mapKeyStart() +\n this.parent.child(this.key, { isKey: true }, Format).print()\n : JSON.stringify(this.key)\n }\n\n printCircular(seen: Format): void {\n this.memo += this.style.circular(seen)\n }\n\n indentLevel(n = 0): string {\n return this.indent.repeat(this.level + n)\n }\n\n printCollection(): void {\n return this.isError()\n ? this.printError()\n : this.isSet()\n ? this.printSet()\n : this.isMap()\n ? this.printMap()\n : this.isBuffer()\n ? this.printBuffer()\n : this.isArray() && this.objectAsArray\n ? this.printArray()\n : // TODO streams, JSX\n this.printPojo()\n }\n\n nodeId(): string {\n return this.id ? this.style.nodeId(this.id) : ''\n }\n\n printBuffer(): void {\n if (this.parent && this.parent.isBuffer()) {\n this.memo +=\n this.style.bufferKey(this.key) +\n this.style.bufferKeySep() +\n this.style.bufferLine(this.object, this.bufferChunkSize)\n } else if (this.object.length === 0) {\n this.memo += this.style.bufferEmpty()\n } else if (this.bufferIsShort()) {\n this.memo +=\n this.style.bufferStart() +\n this.style.bufferBody(this.object) +\n this.style.bufferEnd(this.object)\n } else {\n this.printBufferHead()\n this.printBufferBody()\n this.printBufferTail()\n }\n }\n\n bufferIsShort(): boolean {\n return this.object.length < this.bufferChunkSize + 5\n }\n\n printBufferHead(): void {\n this.memo += this.style.bufferHead()\n }\n\n printBufferBody(): void {\n const c = this.bufferChunkSize\n let i: number\n for (i = 0; i < this.object.length - c; i += c) {\n this.printBufferLine(i, this.object.slice(i, i + c))\n }\n this.printBufferLastLine(i, this.object.slice(i, i + c))\n }\n\n printBufferLine(key: number, val: Buffer): void {\n this.printBufferLastLine(key, val)\n this.memo += this.style.bufferLineSep()\n }\n\n printBufferLastLine(key: any, val: Buffer): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printBufferTail(): void {\n this.memo += this.style.bufferTail(this.indentLevel())\n }\n\n printSet(): void {\n if (this.setIsEmpty()) {\n this.printSetEmpty()\n } else {\n this.printSetHead()\n this.printSetBody()\n this.printSetTail()\n }\n }\n\n setIsEmpty(): boolean {\n return this.object.size === 0\n }\n\n printSetEmpty(): void {\n this.memo += this.style.setEmpty(this.getClass())\n }\n\n printSetHead(): void {\n this.memo += this.style.setHead(this.getClass())\n }\n\n printSetBody(): void {\n for (const val of this.object) {\n this.printSetEntry(val)\n }\n }\n\n printSetTail(): void {\n this.memo += this.style.setTail(this.indentLevel())\n }\n\n printSetEntry(val: any): void {\n const child = this.child(val, { key: val })\n child.print()\n this.memo += child.memo\n }\n\n printMap(): void {\n if (this.mapIsEmpty()) {\n this.printMapEmpty()\n } else {\n this.printMapHead()\n this.printMapBody()\n this.printMapTail()\n }\n }\n\n mapIsEmpty(): boolean {\n return this.object.size === 0\n }\n\n printMapEmpty(): void {\n this.memo += this.style.mapEmpty(this.getClass())\n }\n\n printMapHead(): void {\n this.memo += this.style.mapHead(this.getClass())\n }\n\n getMapEntries(obj: any = this.object): [string, any][] {\n // can never get here unless obj is already a map\n /* c8 ignore start */\n if (!(obj instanceof Map)) {\n throw new TypeError('cannot get map entries for non-Map object')\n }\n /* c8 ignore stop */\n return [...obj.entries()]\n }\n\n printMapBody(): void {\n for (const [key, val] of this.getMapEntries()) {\n this.printMapEntry(key, val)\n }\n }\n\n printMapTail(): void {\n this.memo += this.style.mapTail(this.indentLevel())\n }\n\n printMapEntry(key: any, val: any): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printFn(): void {\n this.memo += this.style.fn(this.object, this.getClass())\n }\n\n printString(): void {\n if (this.parent && this.parent.isString()) {\n this.memo = this.style.stringLine(this.object)\n } else if (this.stringIsEmpty()) {\n this.printStringEmpty()\n } else if (this.stringIsOneLine()) {\n return this.printStringOneLine()\n } else {\n this.printStringHead()\n this.printStringBody()\n this.printStringTail()\n }\n }\n\n stringIsEmpty(): boolean {\n return this.object.length === 0\n }\n\n printStringEmpty(): void {\n this.memo += this.style.stringEmpty()\n }\n\n stringIsOneLine(): boolean {\n return /^[^\\n]*\\n?$/.test(this.object)\n }\n\n printStringOneLine(): void {\n this.memo += this.style.stringOneLine(this.object)\n }\n\n printStringHead(): void {\n this.memo += this.style.stringHead()\n }\n\n printStringBody(): void {\n const lines: string[] = this.object.split('\\n')\n const lastLine = lines.pop()\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n this.printStringLine(i, line + '\\n')\n }\n this.printStringLastLine(lines.length, lastLine + '\\n')\n }\n\n printStringLine(key: any, val: string): void {\n this.printStringLastLine(key, val)\n this.memo += this.style.stringLineSep()\n }\n\n printStringLastLine(key: any, val: string): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printStringTail(): void {\n this.memo += this.style.stringTail(this.indentLevel())\n }\n\n printArray(): void {\n if (this.arrayIsEmpty()) {\n this.printArrayEmpty()\n } else {\n this.printArrayHead()\n this.printArrayBody()\n this.printArrayTail()\n }\n }\n\n arrayIsEmpty(): boolean {\n const a = this.objectAsArray\n return !!a && a.length === 0\n }\n\n printArrayEmpty(): void {\n this.memo += this.style.arrayEmpty(this.getClass())\n }\n\n printArrayHead(): void {\n this.memo += this.style.arrayHead(this.getClass())\n }\n\n printArrayBody(): void {\n if (this.objectAsArray) {\n this.objectAsArray.forEach((val, key) =>\n this.printArrayEntry(key, val)\n )\n }\n }\n\n printArrayTail(): void {\n this.memo += this.style.arrayTail(this.indentLevel())\n }\n\n printArrayEntry(key: any, val: any): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printError(): void {\n if (this.errorIsEmpty()) {\n this.printErrorEmpty()\n } else {\n this.printErrorHead()\n this.printErrorBody()\n this.printErrorTail()\n }\n }\n\n errorIsEmpty(): boolean {\n return this.pojoIsEmpty()\n }\n\n printErrorEmpty(): void {\n this.memo += this.style.errorEmpty(this.object, this.getClass())\n }\n\n printErrorHead(): void {\n this.memo += this.style.errorHead(this.object, this.getClass())\n }\n\n printErrorTail(): void {\n this.memo += this.style.errorTail(this.indentLevel())\n }\n\n printErrorBody(): void {\n this.printPojoBody()\n }\n\n getPojoKeys(obj: any = this.object): string[] {\n if (this.options.includeEnumerable) {\n const keys = []\n for (const i in obj) {\n keys.push(i)\n }\n return keys\n } else if (this.options.includeGetters) {\n const own = new Set(Object.keys(obj))\n const proto = Object.getPrototypeOf(obj)\n if (proto) {\n const desc = Object.getOwnPropertyDescriptors(proto)\n for (const [name, prop] of Object.entries(desc)) {\n if (prop.enumerable && typeof prop.get === 'function') {\n // public wrappers around internal things are worth showing\n own.add(name)\n }\n }\n }\n return Array.from(own)\n } else {\n return Object.keys(obj)\n }\n }\n\n printPojo(): void {\n if (this.pojoIsEmpty()) {\n this.printPojoEmpty()\n } else {\n this.printPojoHead()\n this.printPojoBody()\n this.printPojoTail()\n }\n }\n\n pojoIsEmpty(obj: any = this.object): boolean {\n return this.getPojoKeys(obj).length === 0\n }\n\n printPojoEmpty(): void {\n this.memo += this.style.pojoEmpty(this.getClass())\n }\n\n printPojoHead(): void {\n // impossible\n /* c8 ignore start */\n if (this.memo === null) {\n throw new Error('pojo head while memo is null')\n }\n /* c8 ignore stop */\n this.memo += this.style.pojoHead(this.getClass())\n }\n\n printPojoBody(): void {\n const ent = this.getPojoEntries(this.object)\n for (const [key, val] of ent) {\n this.printPojoEntry(key, val)\n }\n }\n\n getPojoEntries(obj: any): [string, any][] {\n const ent: [string, any][] = this.getPojoKeys(obj).map(k => {\n try {\n return [k, obj[k]]\n } catch {\n return [k, undefined]\n }\n })\n return this.sort\n ? ent.sort((a, b) => a[0].localeCompare(b[0], 'en'))\n : ent\n }\n\n printPojoTail(): void {\n this.memo += this.style.pojoTail(this.indentLevel())\n }\n\n printPojoEntry(key: any, val: any): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n}\n"]}
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"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","sourcesContent":["import { Style, styles, StyleType } from './styles.js'\n\nconst arrayFrom = (obj: any) => {\n try {\n return Array.from(obj)\n } catch (_) {\n return null\n }\n}\n\nconst { toString } = Object.prototype\nconst objToString = (obj: any) => toString.call(obj)\n\n/**\n * Options to control the formatting of objects.\n */\nexport interface FormatOptions {\n /** sort items alphabetically by key */\n sort?: boolean\n /** how to print this thing */\n style?: StyleType\n /**\n * optinally override {@link tcompare!styles.Style#bufferChunkSize }\n * */\n bufferChunkSize?: number\n /**\n * Include any and all enumerable properties, including those inherited on\n * the prototype chain. By default, only `own` properties are printed.\n */\n includeEnumerable?: boolean\n /**\n * Include getter properties\n */\n includeGetters?: boolean\n\n /**\n * set when formatting keys and values of collections\n *\n * @internal\n * */\n parent?: Format\n /**\n * test whether an object has been seen, and get a reference to the\n * Format handling them, if so.\n *\n * overridden in child classes when doing simplePrint()\n *\n * @internal\n */\n seen?: (obj?: any) => false | Format\n /**\n * Set when printing child fields\n *\n * @internal\n */\n key?: any\n /**\n * used when formatting Map keys\n *\n * @internal\n */\n isKey?: boolean\n /**\n * level within the object graph being printed\n *\n * @internal\n */\n level?: number\n /**\n * indentation level of this object within the object graph\n *\n * @internal\n */\n indent?: string\n /**\n * used when provisionally exploring a path for comparison\n *\n * @internal\n */\n provisional?: boolean\n /**\n * The object being compared against in comparison classes. (Not used\n * in {@link tcompare!format.Format}.)\n *\n * @internal\n */\n expect?: any\n}\n\n/**\n * The base class for all other comparators, and used\n * directly by comparators for their \"simplePrint\" methods.\n * It doesn't do comparison, just formatting.\n */\nexport class Format {\n options: FormatOptions\n parent: Format | null\n memo: null | string\n sort: boolean\n id: null | number\n idCounter: number\n idMap: Map<any, number>\n style: Style\n bufferChunkSize: number\n key: any\n isKey: boolean\n level: number\n indent: string\n match: boolean\n object: any\n expect: any\n\n constructor(obj: any, options: FormatOptions = {}) {\n this.options = options\n this.parent = options.parent || null\n this.memo = null\n this.sort = !!options.sort\n if (typeof options.seen === 'function') {\n this.seen = options.seen\n }\n this.id = null\n this.idCounter = 0\n this.idMap = this.parent ? this.parent.idMap : new Map()\n const style = this.parent\n ? this.parent.style\n : styles[options.style || 'pretty']\n if (!style) {\n throw new TypeError(`unknown style: ${options.style}`)\n }\n this.style = style\n this.bufferChunkSize =\n this.style.bufferChunkSize === Infinity\n ? Infinity\n : options.bufferChunkSize || this.style.bufferChunkSize\n\n // for printing child values of pojos and maps\n this.key = options.key\n\n // for printing Map keys\n this.isKey = !!options.isKey\n if (this.isKey && !(this.parent && this.parent.isMap())) {\n throw new Error('isKey should only be set for Map keys')\n }\n\n this.level = this.parent ? this.parent.level + 1 : 0\n this.indent = this.parent\n ? this.parent.indent\n : typeof options.indent === 'string'\n ? options.indent\n : ' '\n this.match = true\n this.object = obj\n this.expect = obj\n }\n\n incId(): number {\n return this.parent ? this.parent.incId() : (this.idCounter += 1)\n }\n\n getId(): number {\n if (this.id) {\n return this.id\n }\n const fromMap = this.idMap.get(this.object)\n if (fromMap) {\n return (this.id = fromMap)\n }\n const id = this.incId()\n this.idMap.set(this.object, id)\n return (this.id = id)\n }\n\n seen(_?: any): false | Format {\n if (!this.object || typeof this.object !== 'object') {\n return false\n }\n\n for (let p = this.parent; p; p = p.parent) {\n if (p.object === this.object) {\n p.id = p.id || p.getId()\n return p\n }\n }\n return false\n }\n\n child(obj: any, options: FormatOptions, cls?: typeof Format) {\n // This raises an error because ts thinks 'typeof Class' is\n // a normal function, not an instantiable class. Ignore.\n //@ts-expect-error\n return new (cls || this.constructor)(obj, {\n ...this.options,\n isKey: false,\n provisional: false,\n ...options,\n parent: this,\n })\n }\n\n // type testing methods\n isError(): boolean {\n return this.object instanceof Error\n }\n\n isArguments(): boolean {\n return objToString(this.object) === '[object Arguments]'\n }\n\n isArray(): boolean {\n return (\n Array.isArray(this.object) ||\n this.isArguments() ||\n this.isIterable()\n )\n }\n\n // technically this means \"is an iterable we don't have another fit for\"\n // sets, arrays, maps, and streams all handled specially.\n isIterable(): boolean {\n return (\n this.object &&\n typeof this.object === 'object' &&\n !this.isSet() &&\n !this.isMap() &&\n !this.isStream() &&\n typeof this.object[Symbol.iterator] === 'function'\n )\n }\n\n isKeyless(): boolean {\n return (\n !this.parent ||\n this.parent.isSet() ||\n this.parent.isArray() ||\n this.parent.isString() ||\n this.isKey\n )\n }\n\n isStream(): boolean {\n const s = this.object\n return (\n !!s &&\n typeof s === 'object' &&\n (typeof s.pipe === 'function' || // readable\n typeof s.pipeTo === 'function' || // whatwg readable\n (typeof s.write === 'function' &&\n typeof s.end === 'function')) // writable\n )\n }\n\n isMap(): boolean {\n return this.object instanceof Map\n }\n\n isSet(): boolean {\n return this.object instanceof Set\n }\n\n isBuffer(): boolean {\n return Buffer.isBuffer(this.object)\n }\n\n isString(): boolean {\n return typeof this.object === 'string'\n }\n\n // end type checking functions\n\n getClass(): string {\n const ts = objToString(this.object).slice(8, -1)\n return this.object.constructor !== Object &&\n this.object.constructor &&\n this.object.constructor.name &&\n this.object.constructor.name !== ts\n ? this.object.constructor.name\n : !Object.getPrototypeOf(this.object)\n ? 'Null Object'\n : ts\n }\n\n get objectAsArray(): any[] | null {\n // return the object as an actual array, if we can\n const value = Array.isArray(this.object)\n ? this.object\n : this.isArray()\n ? arrayFrom(this.object)\n : null\n\n if (value === null) {\n this.isArray = () => false\n }\n\n Object.defineProperty(this, 'objectAsArray', {\n value,\n configurable: true,\n })\n return value\n }\n\n // printing methods\n\n // Change from v5: ONLY the print() method returns a string\n // everything else mutates this.memo, so that child classes\n // can track both this.memo AND this.expectMemo, and then calculate\n // a diff at the end.\n print(): string {\n if (this.memo !== null) {\n return this.memo\n }\n this.memo = ''\n const seen = this.seen(this.object)\n if (seen) {\n this.printCircular(seen)\n } else {\n this.printValue()\n }\n this.printStart()\n this.printEnd()\n // this should be impossible\n /* c8 ignore start */\n if (typeof this.memo !== 'string') {\n throw new Error('failed to build memo string in print() method')\n }\n /* c8 ignore stop */\n return this.memo\n }\n\n printValue(): void {\n switch (typeof this.object) {\n case 'undefined':\n this.printUndefined()\n break\n\n case 'object':\n if (!this.object) {\n this.printNull()\n } else if (this.object instanceof RegExp) {\n this.printRegExp()\n } else if (this.object instanceof Date) {\n this.printDate()\n } else {\n this.printCollection()\n }\n break\n\n case 'symbol':\n this.printSymbol()\n break\n\n case 'bigint':\n this.printBigInt()\n break\n\n case 'string':\n this.printString()\n break\n\n case 'boolean':\n this.printBoolean()\n break\n\n case 'number':\n this.printNumber()\n break\n\n case 'function':\n this.printFn()\n break\n }\n }\n\n printDate(): void {\n this.memo += this.object.toISOString()\n }\n\n printRegExp(): void {\n this.memo += this.object.toString()\n }\n\n printUndefined(): void {\n this.memo += 'undefined'\n }\n\n printNull(): void {\n this.memo += 'null'\n }\n\n printSymbol(): void {\n this.memo += this.object.toString()\n }\n\n printBigInt(): void {\n this.memo += this.object.toString() + 'n'\n }\n\n printBoolean(): void {\n this.memo += JSON.stringify(this.object)\n }\n\n printNumber(): void {\n this.memo += JSON.stringify(this.object)\n }\n\n printStart(): void {\n if (!this.parent) {\n this.memo = this.nodeId() + this.memo\n return\n }\n const indent = this.isKey ? '' : this.indentLevel()\n const key = this.isKeyless() ? '' : this.getKey()\n const sep = !key\n ? ''\n : this.parent && this.parent.isMap()\n ? this.style.mapKeyValSep()\n : this.style.pojoKeyValSep()\n this.memo =\n this.style.start(indent, key, sep) + this.nodeId() + this.memo\n }\n\n printEnd(): void {\n if (!this.parent) {\n return\n }\n this.memo +=\n this.isKey || !this.parent\n ? ''\n : this.parent.isMap()\n ? this.style.mapEntrySep()\n : this.parent.isBuffer()\n ? ''\n : this.parent.isArray()\n ? this.style.arrayEntrySep()\n : this.parent.isSet()\n ? this.style.setEntrySep()\n : this.parent.isString()\n ? ''\n : this.style.pojoEntrySep()\n }\n\n getKey(): string {\n return this.parent && this.parent.isMap()\n ? this.style.mapKeyStart() +\n this.parent.child(this.key, { isKey: true }, Format).print()\n : JSON.stringify(this.key)\n }\n\n printCircular(seen: Format): void {\n this.memo += this.style.circular(seen)\n }\n\n indentLevel(n = 0): string {\n return this.indent.repeat(this.level + n)\n }\n\n printCollection(): void {\n return this.isError()\n ? this.printError()\n : this.isSet()\n ? this.printSet()\n : this.isMap()\n ? this.printMap()\n : this.isBuffer()\n ? this.printBuffer()\n : this.isArray() && this.objectAsArray\n ? this.printArray()\n : // TODO streams, JSX\n this.printPojo()\n }\n\n nodeId(): string {\n return this.id ? this.style.nodeId(this.id) : ''\n }\n\n printBuffer(): void {\n if (this.parent && this.parent.isBuffer()) {\n this.memo +=\n this.style.bufferKey(this.key) +\n this.style.bufferKeySep() +\n this.style.bufferLine(this.object, this.bufferChunkSize)\n } else if (this.object.length === 0) {\n this.memo += this.style.bufferEmpty()\n } else if (this.bufferIsShort()) {\n this.memo +=\n this.style.bufferStart() +\n this.style.bufferBody(this.object) +\n this.style.bufferEnd(this.object)\n } else {\n this.printBufferHead()\n this.printBufferBody()\n this.printBufferTail()\n }\n }\n\n bufferIsShort(): boolean {\n return this.object.length < this.bufferChunkSize + 5\n }\n\n printBufferHead(): void {\n this.memo += this.style.bufferHead()\n }\n\n printBufferBody(): void {\n const c = this.bufferChunkSize\n let i: number\n for (i = 0; i < this.object.length - c; i += c) {\n this.printBufferLine(i, this.object.slice(i, i + c))\n }\n this.printBufferLastLine(i, this.object.slice(i, i + c))\n }\n\n printBufferLine(key: number, val: Buffer): void {\n this.printBufferLastLine(key, val)\n this.memo += this.style.bufferLineSep()\n }\n\n printBufferLastLine(key: any, val: Buffer): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printBufferTail(): void {\n this.memo += this.style.bufferTail(this.indentLevel())\n }\n\n printSet(): void {\n if (this.setIsEmpty()) {\n this.printSetEmpty()\n } else {\n this.printSetHead()\n this.printSetBody()\n this.printSetTail()\n }\n }\n\n setIsEmpty(): boolean {\n return this.object.size === 0\n }\n\n printSetEmpty(): void {\n this.memo += this.style.setEmpty(this.getClass())\n }\n\n printSetHead(): void {\n this.memo += this.style.setHead(this.getClass())\n }\n\n printSetBody(): void {\n for (const val of this.object) {\n this.printSetEntry(val)\n }\n }\n\n printSetTail(): void {\n this.memo += this.style.setTail(this.indentLevel())\n }\n\n printSetEntry(val: any): void {\n const child = this.child(val, { key: val })\n child.print()\n this.memo += child.memo\n }\n\n printMap(): void {\n if (this.mapIsEmpty()) {\n this.printMapEmpty()\n } else {\n this.printMapHead()\n this.printMapBody()\n this.printMapTail()\n }\n }\n\n mapIsEmpty(): boolean {\n return this.object.size === 0\n }\n\n printMapEmpty(): void {\n this.memo += this.style.mapEmpty(this.getClass())\n }\n\n printMapHead(): void {\n this.memo += this.style.mapHead(this.getClass())\n }\n\n getMapEntries(obj: any = this.object): [string, any][] {\n // can never get here unless obj is already a map\n /* c8 ignore start */\n if (!(obj instanceof Map)) {\n throw new TypeError('cannot get map entries for non-Map object')\n }\n /* c8 ignore stop */\n return [...obj.entries()]\n }\n\n printMapBody(): void {\n for (const [key, val] of this.getMapEntries()) {\n this.printMapEntry(key, val)\n }\n }\n\n printMapTail(): void {\n this.memo += this.style.mapTail(this.indentLevel())\n }\n\n printMapEntry(key: any, val: any): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printFn(): void {\n this.memo += this.style.fn(this.object, this.getClass())\n }\n\n printString(): void {\n if (this.parent && this.parent.isString()) {\n this.memo = this.style.stringLine(this.object)\n } else if (this.stringIsEmpty()) {\n this.printStringEmpty()\n } else if (this.stringIsOneLine()) {\n return this.printStringOneLine()\n } else {\n this.printStringHead()\n this.printStringBody()\n this.printStringTail()\n }\n }\n\n stringIsEmpty(): boolean {\n return this.object.length === 0\n }\n\n printStringEmpty(): void {\n this.memo += this.style.stringEmpty()\n }\n\n stringIsOneLine(): boolean {\n return /^[^\\n]*\\n?$/.test(this.object)\n }\n\n printStringOneLine(): void {\n this.memo += this.style.stringOneLine(this.object)\n }\n\n printStringHead(): void {\n this.memo += this.style.stringHead()\n }\n\n printStringBody(): void {\n const lines: string[] = this.object.split('\\n')\n const lastLine = lines.pop()\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n this.printStringLine(i, line + '\\n')\n }\n this.printStringLastLine(lines.length, lastLine + '\\n')\n }\n\n printStringLine(key: any, val: string): void {\n this.printStringLastLine(key, val)\n this.memo += this.style.stringLineSep()\n }\n\n printStringLastLine(key: any, val: string): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printStringTail(): void {\n this.memo += this.style.stringTail(this.indentLevel())\n }\n\n printArray(): void {\n if (this.arrayIsEmpty()) {\n this.printArrayEmpty()\n } else {\n this.printArrayHead()\n this.printArrayBody()\n this.printArrayTail()\n }\n }\n\n arrayIsEmpty(): boolean {\n const a = this.objectAsArray\n return !!a && a.length === 0\n }\n\n printArrayEmpty(): void {\n this.memo += this.style.arrayEmpty(this.getClass())\n }\n\n printArrayHead(): void {\n this.memo += this.style.arrayHead(this.getClass())\n }\n\n printArrayBody(): void {\n if (this.objectAsArray) {\n this.objectAsArray.forEach((val, key) =>\n this.printArrayEntry(key, val)\n )\n }\n }\n\n printArrayTail(): void {\n this.memo += this.style.arrayTail(this.indentLevel())\n }\n\n printArrayEntry(key: any, val: any): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printError(): void {\n if (this.errorIsEmpty()) {\n this.printErrorEmpty()\n } else {\n this.printErrorHead()\n this.printErrorBody()\n this.printErrorTail()\n }\n }\n\n errorIsEmpty(): boolean {\n return this.pojoIsEmpty()\n }\n\n printErrorEmpty(): void {\n this.memo += this.style.errorEmpty(this.object, this.getClass())\n }\n\n printErrorHead(): void {\n this.memo += this.style.errorHead(this.object, this.getClass())\n }\n\n printErrorTail(): void {\n this.memo += this.style.errorTail(this.indentLevel())\n }\n\n printErrorBody(): void {\n this.printPojoBody()\n }\n\n getPojoKeys(obj: any = this.object): string[] {\n if (this.options.includeEnumerable) {\n const keys = []\n for (const i in obj) {\n keys.push(i)\n }\n return keys\n } else if (this.options.includeGetters) {\n const own = new Set(Object.keys(obj))\n const proto = Object.getPrototypeOf(obj)\n if (proto) {\n const desc = Object.getOwnPropertyDescriptors(proto)\n for (const [name, prop] of Object.entries(desc)) {\n if (prop.enumerable && typeof prop.get === 'function') {\n // public wrappers around internal things are worth showing\n own.add(name)\n }\n }\n }\n return Array.from(own)\n } else {\n return Object.keys(obj)\n }\n }\n\n printPojo(): void {\n if (this.pojoIsEmpty()) {\n this.printPojoEmpty()\n } else {\n this.printPojoHead()\n this.printPojoBody()\n this.printPojoTail()\n }\n }\n\n pojoIsEmpty(obj: any = this.object): boolean {\n return this.getPojoKeys(obj).length === 0\n }\n\n printPojoEmpty(): void {\n this.memo += this.style.pojoEmpty(this.getClass())\n }\n\n printPojoHead(): void {\n // impossible\n /* c8 ignore start */\n if (this.memo === null) {\n throw new Error('pojo head while memo is null')\n }\n /* c8 ignore stop */\n this.memo += this.style.pojoHead(this.getClass())\n }\n\n printPojoBody(): void {\n const ent = this.getPojoEntries(this.object)\n for (const [key, val] of ent) {\n this.printPojoEntry(key, val)\n }\n }\n\n getPojoEntries(obj: any): [string, any][] {\n const ent: [string, any][] = this.getPojoKeys(obj).map(k => {\n try {\n return [k, obj[k]]\n } catch {\n return [k, undefined]\n }\n })\n return this.sort\n ? ent.sort((a, b) => a[0].localeCompare(b[0], 'en'))\n : ent\n }\n\n printPojoTail(): void {\n this.memo += this.style.pojoTail(this.indentLevel())\n }\n\n printPojoEntry(key: any, val: any): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n}\n"]}

@@ -21,2 +21,5 @@ /**

}
/**
* Options that can be used to set how diffs are formatted.
*/
export type CompareOptions = FormatOptions & Pick<SameOptions, 'diffContext'>;

@@ -23,0 +26,0 @@ /** format a value and return the formatted string */

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAU,aAAa,EAAE,MAAM,aAAa,CAAA;AAOnD,OAAO,EAAQ,WAAW,EAAE,MAAM,WAAW,CAAA;AAG7C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;CACf;AAOD,MAAM,MAAM,cAAc,GAAG,aAAa,GACxC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;AAYlC,qDAAqD;AACrD,eAAO,MAAM,MAAM,QACZ,GAAG,YACC,aAAa,KACrB,MAA0C,CAAA;AAC7C,wDAAwD;AACxD,eAAO,MAAM,IAAI,QAfT,GAAG,WAAW,GAAG,YAAW,cAAc,WAetB,CAAA;AAC5B,4CAA4C;AAC5C,eAAO,MAAM,MAAM,QAjBX,GAAG,WAAW,GAAG,YAAW,cAAc,WAiBlB,CAAA;AAChC,yCAAyC;AACzC,eAAO,MAAM,GAAG,QAnBR,GAAG,WAAW,GAAG,YAAW,cAAc,WAmBxB,CAAA;AAC1B,+CAA+C;AAC/C,eAAO,MAAM,SAAS,QArBd,GAAG,WAAW,GAAG,YAAW,cAAc,WAqBZ,CAAA;AACtC,2CAA2C;AAC3C,eAAO,MAAM,KAAK,QAvBV,GAAG,WAAW,GAAG,YAAW,cAAc,WAuBpB,CAAA;AAC9B,+CAA+C;AAC/C,eAAO,MAAM,SAAS,QAzBd,GAAG,WAAW,GAAG,YAAW,cAAc,WAyBZ,CAAA;AACtC,iDAAiD;AACjD,eAAO,MAAM,WAAW,QA3BhB,GAAG,WAAW,GAAG,YAAW,cAAc,WA2BR,CAAA;AAC1C,qDAAqD;AACrD,eAAO,MAAM,eAAe,QA7BpB,GAAG,WAAW,GAAG,YAAW,cAAc,WA6BA,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAU,aAAa,EAAE,MAAM,aAAa,CAAA;AAOnD,OAAO,EAAQ,WAAW,EAAE,MAAM,WAAW,CAAA;AAG7C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;CACf;AAQD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GACxC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;AAYlC,qDAAqD;AACrD,eAAO,MAAM,MAAM,QACZ,GAAG,YACC,aAAa,KACrB,MAA0C,CAAA;AAC7C,wDAAwD;AACxD,eAAO,MAAM,IAAI,QAfT,GAAG,WAAW,GAAG,YAAW,cAAc,WAetB,CAAA;AAC5B,4CAA4C;AAC5C,eAAO,MAAM,MAAM,QAjBX,GAAG,WAAW,GAAG,YAAW,cAAc,WAiBlB,CAAA;AAChC,yCAAyC;AACzC,eAAO,MAAM,GAAG,QAnBR,GAAG,WAAW,GAAG,YAAW,cAAc,WAmBxB,CAAA;AAC1B,+CAA+C;AAC/C,eAAO,MAAM,SAAS,QArBd,GAAG,WAAW,GAAG,YAAW,cAAc,WAqBZ,CAAA;AACtC,2CAA2C;AAC3C,eAAO,MAAM,KAAK,QAvBV,GAAG,WAAW,GAAG,YAAW,cAAc,WAuBpB,CAAA;AAC9B,+CAA+C;AAC/C,eAAO,MAAM,SAAS,QAzBd,GAAG,WAAW,GAAG,YAAW,cAAc,WAyBZ,CAAA;AACtC,iDAAiD;AACjD,eAAO,MAAM,WAAW,QA3BhB,GAAG,WAAW,GAAG,YAAW,cAAc,WA2BR,CAAA;AAC1C,qDAAqD;AACrD,eAAO,MAAM,eAAe,QA7BpB,GAAG,WAAW,GAAG,YAAW,cAAc,WA6BA,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA"}

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,2CAAmD;AACnD,mDAA2C;AAC3C,qCAA8B;AAC9B,mDAA2C;AAC3C,uDAA+C;AAC/C,iEAAwD;AACxD,yCAAkC;AAClC,uCAA6C;AAC7C,2CAAoC;AAgBpC,MAAM,MAAM,GAAG,CAAiB,CAAI,EAAU,EAAE,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE;IACf,KAAK,EAAE,CAAC,CAAC,KAAK;CACf,CAAC,CAAA;AAKF,MAAM,EAAE,GACN,CAAiB,GAAa,EAAE,EAAE,CAClC,CAAC,GAAQ,EAAE,OAAY,EAAE,UAA0B,EAAE,EAAE,EAAE,CACvD,MAAM,CACJ,IAAI,GAAG,CAAC,GAAG,EAAE;IACX,GAAG,OAAO;IACV,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,SAAS;CAClB,CAAC,CACH,CAAA;AAEL,qDAAqD;AAC9C,MAAM,MAAM,GAAG,CACpB,GAAQ,EACR,UAAyB,EAAE,EACnB,EAAE,CAAC,IAAI,kBAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAA;AAHhC,QAAA,MAAM,UAG0B;AAC7C,wDAAwD;AAC3C,QAAA,IAAI,GAAG,EAAE,CAAC,cAAI,CAAC,CAAA;AAC5B,4CAA4C;AAC/B,QAAA,MAAM,GAAG,EAAE,CAAC,kBAAM,CAAC,CAAA;AAChC,yCAAyC;AAC5B,QAAA,GAAG,GAAG,EAAE,CAAC,YAAG,CAAC,CAAA;AAC1B,+CAA+C;AAClC,QAAA,SAAS,GAAG,EAAE,CAAC,yBAAS,CAAC,CAAA;AACtC,2CAA2C;AAC9B,QAAA,KAAK,GAAG,EAAE,CAAC,gBAAK,CAAC,CAAA;AAC9B,+CAA+C;AAClC,QAAA,SAAS,GAAG,EAAE,CAAC,yBAAS,CAAC,CAAA;AACtC,iDAAiD;AACpC,QAAA,WAAW,GAAG,EAAE,CAAC,6BAAW,CAAC,CAAA;AAC1C,qDAAqD;AACxC,QAAA,eAAe,GAAG,EAAE,CAAC,sCAAe,CAAC,CAAA;AAElD,yCAAoC;AAA3B,mGAAA,MAAM,OAAA;AAEf,iDAA2C;AAAlC,0GAAA,SAAS,OAAA;AAClB,mCAA8B;AAArB,6FAAA,GAAG,OAAA;AACZ,iDAA2C;AAAlC,0GAAA,SAAS,OAAA;AAClB,qDAA+C;AAAtC,8GAAA,WAAW,OAAA;AACpB,+DAAwD;AAA/C,uHAAA,eAAe,OAAA;AACxB,uCAAkC;AAAzB,iGAAA,KAAK,OAAA;AACd,qCAAgC;AAAvB,+FAAA,IAAI,OAAA;AAEb,yCAAoC;AAA3B,mGAAA,MAAM,OAAA;AACf,yCAAoC;AAA3B,mGAAA,MAAM,OAAA","sourcesContent":["/**\n * Export all implementation classes, and convenience methods for each\n * @module\n */\nimport { Format, FormatOptions } from './format.js'\nimport { HasStrict } from './has-strict.js'\nimport { Has } from './has.js'\nimport { MatchOnly } from './match-only.js'\nimport { MatchStrict } from './match-strict.js'\nimport { MatchOnlyStrict } from './match-only-strict.js'\nimport { Match } from './match.js'\nimport { Same, SameOptions } from './same.js'\nimport { Strict } from './strict.js'\n\n/**\n * The return value from all comparison functions.\n */\nexport interface Result {\n /**\n * Diff of formatted test object and expected pattern. Only shows\n * properties which differ, not the entire object.\n */\n diff: string\n /**\n * whether or not the objects are a satisfying match\n */\n match: boolean\n}\nconst simple = <T extends Same>(o: T): Result => ({\n diff: o.print(),\n match: o.match,\n})\n\ntype Class<T> = { new (obj: any, options: SameOptions): T }\nexport type CompareOptions = FormatOptions &\n Pick<SameOptions, 'diffContext'>\nconst fn =\n <T extends Same>(Cls: Class<T>) =>\n (obj: any, pattern: any, options: CompareOptions = {}) =>\n simple<T>(\n new Cls(obj, {\n ...options,\n expect: pattern,\n parent: undefined,\n })\n )\n\n/** format a value and return the formatted string */\nexport const format = (\n obj: any,\n options: FormatOptions = {}\n): string => new Format(obj, options).print()\n/** convenience method for {@link tcompare!same.Same} */\nexport const same = fn(Same)\n/** convenience method for {@link Strict} */\nexport const strict = fn(Strict)\n/** convenience method for {@link Has} */\nexport const has = fn(Has)\n/** convenience method for {@link HasStrict} */\nexport const hasStrict = fn(HasStrict)\n/** convenience method for {@link Match} */\nexport const match = fn(Match)\n/** convenience method for {@link MatchOnly} */\nexport const matchOnly = fn(MatchOnly)\n/** convenience method for {@link MatchStrict} */\nexport const matchStrict = fn(MatchStrict)\n/** convenience method for {@link MatchOnlyStrict} */\nexport const matchOnlyStrict = fn(MatchOnlyStrict)\n\nexport { Format } from './format.js'\nexport type { FormatOptions } from './format.js'\nexport { HasStrict } from './has-strict.js'\nexport { Has } from './has.js'\nexport { MatchOnly } from './match-only.js'\nexport { MatchStrict } from './match-strict.js'\nexport { MatchOnlyStrict } from './match-only-strict.js'\nexport { Match } from './match.js'\nexport { Same } from './same.js'\nexport type { SameOptions } from './same.js'\nexport { Strict } from './strict.js'\nexport { styles } from './styles.js'\nexport type { Style } from './styles.js'\n"]}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,2CAAmD;AACnD,mDAA2C;AAC3C,qCAA8B;AAC9B,mDAA2C;AAC3C,uDAA+C;AAC/C,iEAAwD;AACxD,yCAAkC;AAClC,uCAA6C;AAC7C,2CAAoC;AAgBpC,MAAM,MAAM,GAAG,CAAiB,CAAI,EAAU,EAAE,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE;IACf,KAAK,EAAE,CAAC,CAAC,KAAK;CACf,CAAC,CAAA;AASF,MAAM,EAAE,GACN,CAAiB,GAAa,EAAE,EAAE,CAClC,CAAC,GAAQ,EAAE,OAAY,EAAE,UAA0B,EAAE,EAAE,EAAE,CACvD,MAAM,CACJ,IAAI,GAAG,CAAC,GAAG,EAAE;IACX,GAAG,OAAO;IACV,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,SAAS;CAClB,CAAC,CACH,CAAA;AAEL,qDAAqD;AAC9C,MAAM,MAAM,GAAG,CACpB,GAAQ,EACR,UAAyB,EAAE,EACnB,EAAE,CAAC,IAAI,kBAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAA;AAHhC,QAAA,MAAM,UAG0B;AAC7C,wDAAwD;AAC3C,QAAA,IAAI,GAAG,EAAE,CAAC,cAAI,CAAC,CAAA;AAC5B,4CAA4C;AAC/B,QAAA,MAAM,GAAG,EAAE,CAAC,kBAAM,CAAC,CAAA;AAChC,yCAAyC;AAC5B,QAAA,GAAG,GAAG,EAAE,CAAC,YAAG,CAAC,CAAA;AAC1B,+CAA+C;AAClC,QAAA,SAAS,GAAG,EAAE,CAAC,yBAAS,CAAC,CAAA;AACtC,2CAA2C;AAC9B,QAAA,KAAK,GAAG,EAAE,CAAC,gBAAK,CAAC,CAAA;AAC9B,+CAA+C;AAClC,QAAA,SAAS,GAAG,EAAE,CAAC,yBAAS,CAAC,CAAA;AACtC,iDAAiD;AACpC,QAAA,WAAW,GAAG,EAAE,CAAC,6BAAW,CAAC,CAAA;AAC1C,qDAAqD;AACxC,QAAA,eAAe,GAAG,EAAE,CAAC,sCAAe,CAAC,CAAA;AAElD,yCAAoC;AAA3B,mGAAA,MAAM,OAAA;AAEf,iDAA2C;AAAlC,0GAAA,SAAS,OAAA;AAClB,mCAA8B;AAArB,6FAAA,GAAG,OAAA;AACZ,iDAA2C;AAAlC,0GAAA,SAAS,OAAA;AAClB,qDAA+C;AAAtC,8GAAA,WAAW,OAAA;AACpB,+DAAwD;AAA/C,uHAAA,eAAe,OAAA;AACxB,uCAAkC;AAAzB,iGAAA,KAAK,OAAA;AACd,qCAAgC;AAAvB,+FAAA,IAAI,OAAA;AAEb,yCAAoC;AAA3B,mGAAA,MAAM,OAAA;AACf,yCAAoC;AAA3B,mGAAA,MAAM,OAAA","sourcesContent":["/**\n * Export all implementation classes, and convenience methods for each\n * @module\n */\nimport { Format, FormatOptions } from './format.js'\nimport { HasStrict } from './has-strict.js'\nimport { Has } from './has.js'\nimport { MatchOnly } from './match-only.js'\nimport { MatchStrict } from './match-strict.js'\nimport { MatchOnlyStrict } from './match-only-strict.js'\nimport { Match } from './match.js'\nimport { Same, SameOptions } from './same.js'\nimport { Strict } from './strict.js'\n\n/**\n * The return value from all comparison functions.\n */\nexport interface Result {\n /**\n * Diff of formatted test object and expected pattern. Only shows\n * properties which differ, not the entire object.\n */\n diff: string\n /**\n * whether or not the objects are a satisfying match\n */\n match: boolean\n}\nconst simple = <T extends Same>(o: T): Result => ({\n diff: o.print(),\n match: o.match,\n})\n\ntype Class<T> = { new (obj: any, options: SameOptions): T }\n\n/**\n * Options that can be used to set how diffs are formatted.\n */\nexport type CompareOptions = FormatOptions &\n Pick<SameOptions, 'diffContext'>\nconst fn =\n <T extends Same>(Cls: Class<T>) =>\n (obj: any, pattern: any, options: CompareOptions = {}) =>\n simple<T>(\n new Cls(obj, {\n ...options,\n expect: pattern,\n parent: undefined,\n })\n )\n\n/** format a value and return the formatted string */\nexport const format = (\n obj: any,\n options: FormatOptions = {}\n): string => new Format(obj, options).print()\n/** convenience method for {@link tcompare!same.Same} */\nexport const same = fn(Same)\n/** convenience method for {@link Strict} */\nexport const strict = fn(Strict)\n/** convenience method for {@link Has} */\nexport const has = fn(Has)\n/** convenience method for {@link HasStrict} */\nexport const hasStrict = fn(HasStrict)\n/** convenience method for {@link Match} */\nexport const match = fn(Match)\n/** convenience method for {@link MatchOnly} */\nexport const matchOnly = fn(MatchOnly)\n/** convenience method for {@link MatchStrict} */\nexport const matchStrict = fn(MatchStrict)\n/** convenience method for {@link MatchOnlyStrict} */\nexport const matchOnlyStrict = fn(MatchOnlyStrict)\n\nexport { Format } from './format.js'\nexport type { FormatOptions } from './format.js'\nexport { HasStrict } from './has-strict.js'\nexport { Has } from './has.js'\nexport { MatchOnly } from './match-only.js'\nexport { MatchStrict } from './match-strict.js'\nexport { MatchOnlyStrict } from './match-only-strict.js'\nexport { Match } from './match.js'\nexport { Same } from './same.js'\nexport type { SameOptions } from './same.js'\nexport { Strict } from './strict.js'\nexport { styles } from './styles.js'\nexport type { Style } from './styles.js'\n"]}
/// <reference types="node" resolution-mode="require"/>
import { Style, StyleType } from './styles.js';
/**
* The base class for all other comparators, and used
* directly by comparators for their "simplePrint" methods.
* It doesn't do comparison, just formatting.
* Options to control the formatting of objects.
*/
export interface FormatOptions {
/** set when formatting keys and values of collections */
parent?: Format;
/** sort items alphabetically by key */
sort?: boolean;
/** how to print this thing */
style?: StyleType;
/**
* optinally override {@link tcompare!styles.Style#bufferChunkSize }
* */
bufferChunkSize?: number;
/**
* Include any and all enumerable properties, including those inherited on
* the prototype chain. By default, only `own` properties are printed.
*/
includeEnumerable?: boolean;
/**
* Include getter properties
*/
includeGetters?: boolean;
/**
* set when formatting keys and values of collections
*
* @internal
* */
parent?: Format;
/**
* test whether an object has been seen, and get a reference to the

@@ -18,11 +35,7 @@ * Format handling them, if so.

* overridden in child classes when doing simplePrint()
*
* @internal
*/
seen?: (obj?: any) => false | Format;
/** how to print this thing */
style?: StyleType;
/**
* optinally override {@link tcompare!styles.Style#bufferChunkSize }
* */
bufferChunkSize?: number;
/**
* Set when printing child fields

@@ -58,16 +71,14 @@ *

/**
* Include any and all enumerable properties, including those inherited on
* the prototype chain. By default, only `own` properties are printed.
*/
includeEnumerable?: boolean;
/**
* Include getter properties
*/
includeGetters?: boolean;
/**
* The object being compared against in comparison classes. (Not used
* in {@link tcompare!format.Format}.)
*
* @internal
*/
expect?: any;
}
/**
* The base class for all other comparators, and used
* directly by comparators for their "simplePrint" methods.
* It doesn't do comparison, just formatting.
*/
export declare class Format {

@@ -74,0 +85,0 @@ options: FormatOptions;

@@ -1,1 +0,1 @@

{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"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"}

@@ -12,2 +12,7 @@ import { styles } from './styles.js';

const objToString = (obj) => toString.call(obj);
/**
* The base class for all other comparators, and used
* directly by comparators for their "simplePrint" methods.
* It doesn't do comparison, just formatting.
*/
export class Format {

@@ -14,0 +19,0 @@ options;

@@ -1,1 +0,1 @@

{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"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","sourcesContent":["import { Style, StyleType } from './styles.js'\nimport { styles } from './styles.js'\n\nconst arrayFrom = (obj: any) => {\n try {\n return Array.from(obj)\n } catch (_) {\n return null\n }\n}\n\nconst { toString } = Object.prototype\nconst objToString = (obj: any) => toString.call(obj)\n\n/**\n * The base class for all other comparators, and used\n * directly by comparators for their \"simplePrint\" methods.\n * It doesn't do comparison, just formatting.\n */\nexport interface FormatOptions {\n /** set when formatting keys and values of collections */\n parent?: Format\n /** sort items alphabetically by key */\n sort?: boolean\n /**\n * test whether an object has been seen, and get a reference to the\n * Format handling them, if so.\n *\n * overridden in child classes when doing simplePrint()\n */\n seen?: (obj?: any) => false | Format\n /** how to print this thing */\n style?: StyleType\n /**\n * optinally override {@link tcompare!styles.Style#bufferChunkSize }\n * */\n bufferChunkSize?: number\n /**\n * Set when printing child fields\n *\n * @internal\n */\n key?: any\n /**\n * used when formatting Map keys\n *\n * @internal\n */\n isKey?: boolean\n /**\n * level within the object graph being printed\n *\n * @internal\n */\n level?: number\n /**\n * indentation level of this object within the object graph\n *\n * @internal\n */\n indent?: string\n /**\n * used when provisionally exploring a path for comparison\n *\n * @internal\n */\n provisional?: boolean\n /**\n * Include any and all enumerable properties, including those inherited on\n * the prototype chain. By default, only `own` properties are printed.\n */\n includeEnumerable?: boolean\n /**\n * Include getter properties\n */\n includeGetters?: boolean\n\n /**\n * The object being compared against in comparison classes. (Not used\n * in {@link tcompare!format.Format}.)\n */\n expect?: any\n}\n\nexport class Format {\n options: FormatOptions\n parent: Format | null\n memo: null | string\n sort: boolean\n id: null | number\n idCounter: number\n idMap: Map<any, number>\n style: Style\n bufferChunkSize: number\n key: any\n isKey: boolean\n level: number\n indent: string\n match: boolean\n object: any\n expect: any\n\n constructor(obj: any, options: FormatOptions = {}) {\n this.options = options\n this.parent = options.parent || null\n this.memo = null\n this.sort = !!options.sort\n if (typeof options.seen === 'function') {\n this.seen = options.seen\n }\n this.id = null\n this.idCounter = 0\n this.idMap = this.parent ? this.parent.idMap : new Map()\n const style = this.parent\n ? this.parent.style\n : styles[options.style || 'pretty']\n if (!style) {\n throw new TypeError(`unknown style: ${options.style}`)\n }\n this.style = style\n this.bufferChunkSize =\n this.style.bufferChunkSize === Infinity\n ? Infinity\n : options.bufferChunkSize || this.style.bufferChunkSize\n\n // for printing child values of pojos and maps\n this.key = options.key\n\n // for printing Map keys\n this.isKey = !!options.isKey\n if (this.isKey && !(this.parent && this.parent.isMap())) {\n throw new Error('isKey should only be set for Map keys')\n }\n\n this.level = this.parent ? this.parent.level + 1 : 0\n this.indent = this.parent\n ? this.parent.indent\n : typeof options.indent === 'string'\n ? options.indent\n : ' '\n this.match = true\n this.object = obj\n this.expect = obj\n }\n\n incId(): number {\n return this.parent ? this.parent.incId() : (this.idCounter += 1)\n }\n\n getId(): number {\n if (this.id) {\n return this.id\n }\n const fromMap = this.idMap.get(this.object)\n if (fromMap) {\n return (this.id = fromMap)\n }\n const id = this.incId()\n this.idMap.set(this.object, id)\n return (this.id = id)\n }\n\n seen(_?: any): false | Format {\n if (!this.object || typeof this.object !== 'object') {\n return false\n }\n\n for (let p = this.parent; p; p = p.parent) {\n if (p.object === this.object) {\n p.id = p.id || p.getId()\n return p\n }\n }\n return false\n }\n\n child(obj: any, options: FormatOptions, cls?: typeof Format) {\n // This raises an error because ts thinks 'typeof Class' is\n // a normal function, not an instantiable class. Ignore.\n //@ts-expect-error\n return new (cls || this.constructor)(obj, {\n ...this.options,\n isKey: false,\n provisional: false,\n ...options,\n parent: this,\n })\n }\n\n // type testing methods\n isError(): boolean {\n return this.object instanceof Error\n }\n\n isArguments(): boolean {\n return objToString(this.object) === '[object Arguments]'\n }\n\n isArray(): boolean {\n return (\n Array.isArray(this.object) ||\n this.isArguments() ||\n this.isIterable()\n )\n }\n\n // technically this means \"is an iterable we don't have another fit for\"\n // sets, arrays, maps, and streams all handled specially.\n isIterable(): boolean {\n return (\n this.object &&\n typeof this.object === 'object' &&\n !this.isSet() &&\n !this.isMap() &&\n !this.isStream() &&\n typeof this.object[Symbol.iterator] === 'function'\n )\n }\n\n isKeyless(): boolean {\n return (\n !this.parent ||\n this.parent.isSet() ||\n this.parent.isArray() ||\n this.parent.isString() ||\n this.isKey\n )\n }\n\n isStream(): boolean {\n const s = this.object\n return (\n !!s &&\n typeof s === 'object' &&\n (typeof s.pipe === 'function' || // readable\n typeof s.pipeTo === 'function' || // whatwg readable\n (typeof s.write === 'function' &&\n typeof s.end === 'function')) // writable\n )\n }\n\n isMap(): boolean {\n return this.object instanceof Map\n }\n\n isSet(): boolean {\n return this.object instanceof Set\n }\n\n isBuffer(): boolean {\n return Buffer.isBuffer(this.object)\n }\n\n isString(): boolean {\n return typeof this.object === 'string'\n }\n\n // end type checking functions\n\n getClass(): string {\n const ts = objToString(this.object).slice(8, -1)\n return this.object.constructor !== Object &&\n this.object.constructor &&\n this.object.constructor.name &&\n this.object.constructor.name !== ts\n ? this.object.constructor.name\n : !Object.getPrototypeOf(this.object)\n ? 'Null Object'\n : ts\n }\n\n get objectAsArray(): any[] | null {\n // return the object as an actual array, if we can\n const value = Array.isArray(this.object)\n ? this.object\n : this.isArray()\n ? arrayFrom(this.object)\n : null\n\n if (value === null) {\n this.isArray = () => false\n }\n\n Object.defineProperty(this, 'objectAsArray', {\n value,\n configurable: true,\n })\n return value\n }\n\n // printing methods\n\n // Change from v5: ONLY the print() method returns a string\n // everything else mutates this.memo, so that child classes\n // can track both this.memo AND this.expectMemo, and then calculate\n // a diff at the end.\n print(): string {\n if (this.memo !== null) {\n return this.memo\n }\n this.memo = ''\n const seen = this.seen(this.object)\n if (seen) {\n this.printCircular(seen)\n } else {\n this.printValue()\n }\n this.printStart()\n this.printEnd()\n // this should be impossible\n /* c8 ignore start */\n if (typeof this.memo !== 'string') {\n throw new Error('failed to build memo string in print() method')\n }\n /* c8 ignore stop */\n return this.memo\n }\n\n printValue(): void {\n switch (typeof this.object) {\n case 'undefined':\n this.printUndefined()\n break\n\n case 'object':\n if (!this.object) {\n this.printNull()\n } else if (this.object instanceof RegExp) {\n this.printRegExp()\n } else if (this.object instanceof Date) {\n this.printDate()\n } else {\n this.printCollection()\n }\n break\n\n case 'symbol':\n this.printSymbol()\n break\n\n case 'bigint':\n this.printBigInt()\n break\n\n case 'string':\n this.printString()\n break\n\n case 'boolean':\n this.printBoolean()\n break\n\n case 'number':\n this.printNumber()\n break\n\n case 'function':\n this.printFn()\n break\n }\n }\n\n printDate(): void {\n this.memo += this.object.toISOString()\n }\n\n printRegExp(): void {\n this.memo += this.object.toString()\n }\n\n printUndefined(): void {\n this.memo += 'undefined'\n }\n\n printNull(): void {\n this.memo += 'null'\n }\n\n printSymbol(): void {\n this.memo += this.object.toString()\n }\n\n printBigInt(): void {\n this.memo += this.object.toString() + 'n'\n }\n\n printBoolean(): void {\n this.memo += JSON.stringify(this.object)\n }\n\n printNumber(): void {\n this.memo += JSON.stringify(this.object)\n }\n\n printStart(): void {\n if (!this.parent) {\n this.memo = this.nodeId() + this.memo\n return\n }\n const indent = this.isKey ? '' : this.indentLevel()\n const key = this.isKeyless() ? '' : this.getKey()\n const sep = !key\n ? ''\n : this.parent && this.parent.isMap()\n ? this.style.mapKeyValSep()\n : this.style.pojoKeyValSep()\n this.memo =\n this.style.start(indent, key, sep) + this.nodeId() + this.memo\n }\n\n printEnd(): void {\n if (!this.parent) {\n return\n }\n this.memo +=\n this.isKey || !this.parent\n ? ''\n : this.parent.isMap()\n ? this.style.mapEntrySep()\n : this.parent.isBuffer()\n ? ''\n : this.parent.isArray()\n ? this.style.arrayEntrySep()\n : this.parent.isSet()\n ? this.style.setEntrySep()\n : this.parent.isString()\n ? ''\n : this.style.pojoEntrySep()\n }\n\n getKey(): string {\n return this.parent && this.parent.isMap()\n ? this.style.mapKeyStart() +\n this.parent.child(this.key, { isKey: true }, Format).print()\n : JSON.stringify(this.key)\n }\n\n printCircular(seen: Format): void {\n this.memo += this.style.circular(seen)\n }\n\n indentLevel(n = 0): string {\n return this.indent.repeat(this.level + n)\n }\n\n printCollection(): void {\n return this.isError()\n ? this.printError()\n : this.isSet()\n ? this.printSet()\n : this.isMap()\n ? this.printMap()\n : this.isBuffer()\n ? this.printBuffer()\n : this.isArray() && this.objectAsArray\n ? this.printArray()\n : // TODO streams, JSX\n this.printPojo()\n }\n\n nodeId(): string {\n return this.id ? this.style.nodeId(this.id) : ''\n }\n\n printBuffer(): void {\n if (this.parent && this.parent.isBuffer()) {\n this.memo +=\n this.style.bufferKey(this.key) +\n this.style.bufferKeySep() +\n this.style.bufferLine(this.object, this.bufferChunkSize)\n } else if (this.object.length === 0) {\n this.memo += this.style.bufferEmpty()\n } else if (this.bufferIsShort()) {\n this.memo +=\n this.style.bufferStart() +\n this.style.bufferBody(this.object) +\n this.style.bufferEnd(this.object)\n } else {\n this.printBufferHead()\n this.printBufferBody()\n this.printBufferTail()\n }\n }\n\n bufferIsShort(): boolean {\n return this.object.length < this.bufferChunkSize + 5\n }\n\n printBufferHead(): void {\n this.memo += this.style.bufferHead()\n }\n\n printBufferBody(): void {\n const c = this.bufferChunkSize\n let i: number\n for (i = 0; i < this.object.length - c; i += c) {\n this.printBufferLine(i, this.object.slice(i, i + c))\n }\n this.printBufferLastLine(i, this.object.slice(i, i + c))\n }\n\n printBufferLine(key: number, val: Buffer): void {\n this.printBufferLastLine(key, val)\n this.memo += this.style.bufferLineSep()\n }\n\n printBufferLastLine(key: any, val: Buffer): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printBufferTail(): void {\n this.memo += this.style.bufferTail(this.indentLevel())\n }\n\n printSet(): void {\n if (this.setIsEmpty()) {\n this.printSetEmpty()\n } else {\n this.printSetHead()\n this.printSetBody()\n this.printSetTail()\n }\n }\n\n setIsEmpty(): boolean {\n return this.object.size === 0\n }\n\n printSetEmpty(): void {\n this.memo += this.style.setEmpty(this.getClass())\n }\n\n printSetHead(): void {\n this.memo += this.style.setHead(this.getClass())\n }\n\n printSetBody(): void {\n for (const val of this.object) {\n this.printSetEntry(val)\n }\n }\n\n printSetTail(): void {\n this.memo += this.style.setTail(this.indentLevel())\n }\n\n printSetEntry(val: any): void {\n const child = this.child(val, { key: val })\n child.print()\n this.memo += child.memo\n }\n\n printMap(): void {\n if (this.mapIsEmpty()) {\n this.printMapEmpty()\n } else {\n this.printMapHead()\n this.printMapBody()\n this.printMapTail()\n }\n }\n\n mapIsEmpty(): boolean {\n return this.object.size === 0\n }\n\n printMapEmpty(): void {\n this.memo += this.style.mapEmpty(this.getClass())\n }\n\n printMapHead(): void {\n this.memo += this.style.mapHead(this.getClass())\n }\n\n getMapEntries(obj: any = this.object): [string, any][] {\n // can never get here unless obj is already a map\n /* c8 ignore start */\n if (!(obj instanceof Map)) {\n throw new TypeError('cannot get map entries for non-Map object')\n }\n /* c8 ignore stop */\n return [...obj.entries()]\n }\n\n printMapBody(): void {\n for (const [key, val] of this.getMapEntries()) {\n this.printMapEntry(key, val)\n }\n }\n\n printMapTail(): void {\n this.memo += this.style.mapTail(this.indentLevel())\n }\n\n printMapEntry(key: any, val: any): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printFn(): void {\n this.memo += this.style.fn(this.object, this.getClass())\n }\n\n printString(): void {\n if (this.parent && this.parent.isString()) {\n this.memo = this.style.stringLine(this.object)\n } else if (this.stringIsEmpty()) {\n this.printStringEmpty()\n } else if (this.stringIsOneLine()) {\n return this.printStringOneLine()\n } else {\n this.printStringHead()\n this.printStringBody()\n this.printStringTail()\n }\n }\n\n stringIsEmpty(): boolean {\n return this.object.length === 0\n }\n\n printStringEmpty(): void {\n this.memo += this.style.stringEmpty()\n }\n\n stringIsOneLine(): boolean {\n return /^[^\\n]*\\n?$/.test(this.object)\n }\n\n printStringOneLine(): void {\n this.memo += this.style.stringOneLine(this.object)\n }\n\n printStringHead(): void {\n this.memo += this.style.stringHead()\n }\n\n printStringBody(): void {\n const lines: string[] = this.object.split('\\n')\n const lastLine = lines.pop()\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n this.printStringLine(i, line + '\\n')\n }\n this.printStringLastLine(lines.length, lastLine + '\\n')\n }\n\n printStringLine(key: any, val: string): void {\n this.printStringLastLine(key, val)\n this.memo += this.style.stringLineSep()\n }\n\n printStringLastLine(key: any, val: string): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printStringTail(): void {\n this.memo += this.style.stringTail(this.indentLevel())\n }\n\n printArray(): void {\n if (this.arrayIsEmpty()) {\n this.printArrayEmpty()\n } else {\n this.printArrayHead()\n this.printArrayBody()\n this.printArrayTail()\n }\n }\n\n arrayIsEmpty(): boolean {\n const a = this.objectAsArray\n return !!a && a.length === 0\n }\n\n printArrayEmpty(): void {\n this.memo += this.style.arrayEmpty(this.getClass())\n }\n\n printArrayHead(): void {\n this.memo += this.style.arrayHead(this.getClass())\n }\n\n printArrayBody(): void {\n if (this.objectAsArray) {\n this.objectAsArray.forEach((val, key) =>\n this.printArrayEntry(key, val)\n )\n }\n }\n\n printArrayTail(): void {\n this.memo += this.style.arrayTail(this.indentLevel())\n }\n\n printArrayEntry(key: any, val: any): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printError(): void {\n if (this.errorIsEmpty()) {\n this.printErrorEmpty()\n } else {\n this.printErrorHead()\n this.printErrorBody()\n this.printErrorTail()\n }\n }\n\n errorIsEmpty(): boolean {\n return this.pojoIsEmpty()\n }\n\n printErrorEmpty(): void {\n this.memo += this.style.errorEmpty(this.object, this.getClass())\n }\n\n printErrorHead(): void {\n this.memo += this.style.errorHead(this.object, this.getClass())\n }\n\n printErrorTail(): void {\n this.memo += this.style.errorTail(this.indentLevel())\n }\n\n printErrorBody(): void {\n this.printPojoBody()\n }\n\n getPojoKeys(obj: any = this.object): string[] {\n if (this.options.includeEnumerable) {\n const keys = []\n for (const i in obj) {\n keys.push(i)\n }\n return keys\n } else if (this.options.includeGetters) {\n const own = new Set(Object.keys(obj))\n const proto = Object.getPrototypeOf(obj)\n if (proto) {\n const desc = Object.getOwnPropertyDescriptors(proto)\n for (const [name, prop] of Object.entries(desc)) {\n if (prop.enumerable && typeof prop.get === 'function') {\n // public wrappers around internal things are worth showing\n own.add(name)\n }\n }\n }\n return Array.from(own)\n } else {\n return Object.keys(obj)\n }\n }\n\n printPojo(): void {\n if (this.pojoIsEmpty()) {\n this.printPojoEmpty()\n } else {\n this.printPojoHead()\n this.printPojoBody()\n this.printPojoTail()\n }\n }\n\n pojoIsEmpty(obj: any = this.object): boolean {\n return this.getPojoKeys(obj).length === 0\n }\n\n printPojoEmpty(): void {\n this.memo += this.style.pojoEmpty(this.getClass())\n }\n\n printPojoHead(): void {\n // impossible\n /* c8 ignore start */\n if (this.memo === null) {\n throw new Error('pojo head while memo is null')\n }\n /* c8 ignore stop */\n this.memo += this.style.pojoHead(this.getClass())\n }\n\n printPojoBody(): void {\n const ent = this.getPojoEntries(this.object)\n for (const [key, val] of ent) {\n this.printPojoEntry(key, val)\n }\n }\n\n getPojoEntries(obj: any): [string, any][] {\n const ent: [string, any][] = this.getPojoKeys(obj).map(k => {\n try {\n return [k, obj[k]]\n } catch {\n return [k, undefined]\n }\n })\n return this.sort\n ? ent.sort((a, b) => a[0].localeCompare(b[0], 'en'))\n : ent\n }\n\n printPojoTail(): void {\n this.memo += this.style.pojoTail(this.indentLevel())\n }\n\n printPojoEntry(key: any, val: any): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n}\n"]}
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"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","sourcesContent":["import { Style, styles, StyleType } from './styles.js'\n\nconst arrayFrom = (obj: any) => {\n try {\n return Array.from(obj)\n } catch (_) {\n return null\n }\n}\n\nconst { toString } = Object.prototype\nconst objToString = (obj: any) => toString.call(obj)\n\n/**\n * Options to control the formatting of objects.\n */\nexport interface FormatOptions {\n /** sort items alphabetically by key */\n sort?: boolean\n /** how to print this thing */\n style?: StyleType\n /**\n * optinally override {@link tcompare!styles.Style#bufferChunkSize }\n * */\n bufferChunkSize?: number\n /**\n * Include any and all enumerable properties, including those inherited on\n * the prototype chain. By default, only `own` properties are printed.\n */\n includeEnumerable?: boolean\n /**\n * Include getter properties\n */\n includeGetters?: boolean\n\n /**\n * set when formatting keys and values of collections\n *\n * @internal\n * */\n parent?: Format\n /**\n * test whether an object has been seen, and get a reference to the\n * Format handling them, if so.\n *\n * overridden in child classes when doing simplePrint()\n *\n * @internal\n */\n seen?: (obj?: any) => false | Format\n /**\n * Set when printing child fields\n *\n * @internal\n */\n key?: any\n /**\n * used when formatting Map keys\n *\n * @internal\n */\n isKey?: boolean\n /**\n * level within the object graph being printed\n *\n * @internal\n */\n level?: number\n /**\n * indentation level of this object within the object graph\n *\n * @internal\n */\n indent?: string\n /**\n * used when provisionally exploring a path for comparison\n *\n * @internal\n */\n provisional?: boolean\n /**\n * The object being compared against in comparison classes. (Not used\n * in {@link tcompare!format.Format}.)\n *\n * @internal\n */\n expect?: any\n}\n\n/**\n * The base class for all other comparators, and used\n * directly by comparators for their \"simplePrint\" methods.\n * It doesn't do comparison, just formatting.\n */\nexport class Format {\n options: FormatOptions\n parent: Format | null\n memo: null | string\n sort: boolean\n id: null | number\n idCounter: number\n idMap: Map<any, number>\n style: Style\n bufferChunkSize: number\n key: any\n isKey: boolean\n level: number\n indent: string\n match: boolean\n object: any\n expect: any\n\n constructor(obj: any, options: FormatOptions = {}) {\n this.options = options\n this.parent = options.parent || null\n this.memo = null\n this.sort = !!options.sort\n if (typeof options.seen === 'function') {\n this.seen = options.seen\n }\n this.id = null\n this.idCounter = 0\n this.idMap = this.parent ? this.parent.idMap : new Map()\n const style = this.parent\n ? this.parent.style\n : styles[options.style || 'pretty']\n if (!style) {\n throw new TypeError(`unknown style: ${options.style}`)\n }\n this.style = style\n this.bufferChunkSize =\n this.style.bufferChunkSize === Infinity\n ? Infinity\n : options.bufferChunkSize || this.style.bufferChunkSize\n\n // for printing child values of pojos and maps\n this.key = options.key\n\n // for printing Map keys\n this.isKey = !!options.isKey\n if (this.isKey && !(this.parent && this.parent.isMap())) {\n throw new Error('isKey should only be set for Map keys')\n }\n\n this.level = this.parent ? this.parent.level + 1 : 0\n this.indent = this.parent\n ? this.parent.indent\n : typeof options.indent === 'string'\n ? options.indent\n : ' '\n this.match = true\n this.object = obj\n this.expect = obj\n }\n\n incId(): number {\n return this.parent ? this.parent.incId() : (this.idCounter += 1)\n }\n\n getId(): number {\n if (this.id) {\n return this.id\n }\n const fromMap = this.idMap.get(this.object)\n if (fromMap) {\n return (this.id = fromMap)\n }\n const id = this.incId()\n this.idMap.set(this.object, id)\n return (this.id = id)\n }\n\n seen(_?: any): false | Format {\n if (!this.object || typeof this.object !== 'object') {\n return false\n }\n\n for (let p = this.parent; p; p = p.parent) {\n if (p.object === this.object) {\n p.id = p.id || p.getId()\n return p\n }\n }\n return false\n }\n\n child(obj: any, options: FormatOptions, cls?: typeof Format) {\n // This raises an error because ts thinks 'typeof Class' is\n // a normal function, not an instantiable class. Ignore.\n //@ts-expect-error\n return new (cls || this.constructor)(obj, {\n ...this.options,\n isKey: false,\n provisional: false,\n ...options,\n parent: this,\n })\n }\n\n // type testing methods\n isError(): boolean {\n return this.object instanceof Error\n }\n\n isArguments(): boolean {\n return objToString(this.object) === '[object Arguments]'\n }\n\n isArray(): boolean {\n return (\n Array.isArray(this.object) ||\n this.isArguments() ||\n this.isIterable()\n )\n }\n\n // technically this means \"is an iterable we don't have another fit for\"\n // sets, arrays, maps, and streams all handled specially.\n isIterable(): boolean {\n return (\n this.object &&\n typeof this.object === 'object' &&\n !this.isSet() &&\n !this.isMap() &&\n !this.isStream() &&\n typeof this.object[Symbol.iterator] === 'function'\n )\n }\n\n isKeyless(): boolean {\n return (\n !this.parent ||\n this.parent.isSet() ||\n this.parent.isArray() ||\n this.parent.isString() ||\n this.isKey\n )\n }\n\n isStream(): boolean {\n const s = this.object\n return (\n !!s &&\n typeof s === 'object' &&\n (typeof s.pipe === 'function' || // readable\n typeof s.pipeTo === 'function' || // whatwg readable\n (typeof s.write === 'function' &&\n typeof s.end === 'function')) // writable\n )\n }\n\n isMap(): boolean {\n return this.object instanceof Map\n }\n\n isSet(): boolean {\n return this.object instanceof Set\n }\n\n isBuffer(): boolean {\n return Buffer.isBuffer(this.object)\n }\n\n isString(): boolean {\n return typeof this.object === 'string'\n }\n\n // end type checking functions\n\n getClass(): string {\n const ts = objToString(this.object).slice(8, -1)\n return this.object.constructor !== Object &&\n this.object.constructor &&\n this.object.constructor.name &&\n this.object.constructor.name !== ts\n ? this.object.constructor.name\n : !Object.getPrototypeOf(this.object)\n ? 'Null Object'\n : ts\n }\n\n get objectAsArray(): any[] | null {\n // return the object as an actual array, if we can\n const value = Array.isArray(this.object)\n ? this.object\n : this.isArray()\n ? arrayFrom(this.object)\n : null\n\n if (value === null) {\n this.isArray = () => false\n }\n\n Object.defineProperty(this, 'objectAsArray', {\n value,\n configurable: true,\n })\n return value\n }\n\n // printing methods\n\n // Change from v5: ONLY the print() method returns a string\n // everything else mutates this.memo, so that child classes\n // can track both this.memo AND this.expectMemo, and then calculate\n // a diff at the end.\n print(): string {\n if (this.memo !== null) {\n return this.memo\n }\n this.memo = ''\n const seen = this.seen(this.object)\n if (seen) {\n this.printCircular(seen)\n } else {\n this.printValue()\n }\n this.printStart()\n this.printEnd()\n // this should be impossible\n /* c8 ignore start */\n if (typeof this.memo !== 'string') {\n throw new Error('failed to build memo string in print() method')\n }\n /* c8 ignore stop */\n return this.memo\n }\n\n printValue(): void {\n switch (typeof this.object) {\n case 'undefined':\n this.printUndefined()\n break\n\n case 'object':\n if (!this.object) {\n this.printNull()\n } else if (this.object instanceof RegExp) {\n this.printRegExp()\n } else if (this.object instanceof Date) {\n this.printDate()\n } else {\n this.printCollection()\n }\n break\n\n case 'symbol':\n this.printSymbol()\n break\n\n case 'bigint':\n this.printBigInt()\n break\n\n case 'string':\n this.printString()\n break\n\n case 'boolean':\n this.printBoolean()\n break\n\n case 'number':\n this.printNumber()\n break\n\n case 'function':\n this.printFn()\n break\n }\n }\n\n printDate(): void {\n this.memo += this.object.toISOString()\n }\n\n printRegExp(): void {\n this.memo += this.object.toString()\n }\n\n printUndefined(): void {\n this.memo += 'undefined'\n }\n\n printNull(): void {\n this.memo += 'null'\n }\n\n printSymbol(): void {\n this.memo += this.object.toString()\n }\n\n printBigInt(): void {\n this.memo += this.object.toString() + 'n'\n }\n\n printBoolean(): void {\n this.memo += JSON.stringify(this.object)\n }\n\n printNumber(): void {\n this.memo += JSON.stringify(this.object)\n }\n\n printStart(): void {\n if (!this.parent) {\n this.memo = this.nodeId() + this.memo\n return\n }\n const indent = this.isKey ? '' : this.indentLevel()\n const key = this.isKeyless() ? '' : this.getKey()\n const sep = !key\n ? ''\n : this.parent && this.parent.isMap()\n ? this.style.mapKeyValSep()\n : this.style.pojoKeyValSep()\n this.memo =\n this.style.start(indent, key, sep) + this.nodeId() + this.memo\n }\n\n printEnd(): void {\n if (!this.parent) {\n return\n }\n this.memo +=\n this.isKey || !this.parent\n ? ''\n : this.parent.isMap()\n ? this.style.mapEntrySep()\n : this.parent.isBuffer()\n ? ''\n : this.parent.isArray()\n ? this.style.arrayEntrySep()\n : this.parent.isSet()\n ? this.style.setEntrySep()\n : this.parent.isString()\n ? ''\n : this.style.pojoEntrySep()\n }\n\n getKey(): string {\n return this.parent && this.parent.isMap()\n ? this.style.mapKeyStart() +\n this.parent.child(this.key, { isKey: true }, Format).print()\n : JSON.stringify(this.key)\n }\n\n printCircular(seen: Format): void {\n this.memo += this.style.circular(seen)\n }\n\n indentLevel(n = 0): string {\n return this.indent.repeat(this.level + n)\n }\n\n printCollection(): void {\n return this.isError()\n ? this.printError()\n : this.isSet()\n ? this.printSet()\n : this.isMap()\n ? this.printMap()\n : this.isBuffer()\n ? this.printBuffer()\n : this.isArray() && this.objectAsArray\n ? this.printArray()\n : // TODO streams, JSX\n this.printPojo()\n }\n\n nodeId(): string {\n return this.id ? this.style.nodeId(this.id) : ''\n }\n\n printBuffer(): void {\n if (this.parent && this.parent.isBuffer()) {\n this.memo +=\n this.style.bufferKey(this.key) +\n this.style.bufferKeySep() +\n this.style.bufferLine(this.object, this.bufferChunkSize)\n } else if (this.object.length === 0) {\n this.memo += this.style.bufferEmpty()\n } else if (this.bufferIsShort()) {\n this.memo +=\n this.style.bufferStart() +\n this.style.bufferBody(this.object) +\n this.style.bufferEnd(this.object)\n } else {\n this.printBufferHead()\n this.printBufferBody()\n this.printBufferTail()\n }\n }\n\n bufferIsShort(): boolean {\n return this.object.length < this.bufferChunkSize + 5\n }\n\n printBufferHead(): void {\n this.memo += this.style.bufferHead()\n }\n\n printBufferBody(): void {\n const c = this.bufferChunkSize\n let i: number\n for (i = 0; i < this.object.length - c; i += c) {\n this.printBufferLine(i, this.object.slice(i, i + c))\n }\n this.printBufferLastLine(i, this.object.slice(i, i + c))\n }\n\n printBufferLine(key: number, val: Buffer): void {\n this.printBufferLastLine(key, val)\n this.memo += this.style.bufferLineSep()\n }\n\n printBufferLastLine(key: any, val: Buffer): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printBufferTail(): void {\n this.memo += this.style.bufferTail(this.indentLevel())\n }\n\n printSet(): void {\n if (this.setIsEmpty()) {\n this.printSetEmpty()\n } else {\n this.printSetHead()\n this.printSetBody()\n this.printSetTail()\n }\n }\n\n setIsEmpty(): boolean {\n return this.object.size === 0\n }\n\n printSetEmpty(): void {\n this.memo += this.style.setEmpty(this.getClass())\n }\n\n printSetHead(): void {\n this.memo += this.style.setHead(this.getClass())\n }\n\n printSetBody(): void {\n for (const val of this.object) {\n this.printSetEntry(val)\n }\n }\n\n printSetTail(): void {\n this.memo += this.style.setTail(this.indentLevel())\n }\n\n printSetEntry(val: any): void {\n const child = this.child(val, { key: val })\n child.print()\n this.memo += child.memo\n }\n\n printMap(): void {\n if (this.mapIsEmpty()) {\n this.printMapEmpty()\n } else {\n this.printMapHead()\n this.printMapBody()\n this.printMapTail()\n }\n }\n\n mapIsEmpty(): boolean {\n return this.object.size === 0\n }\n\n printMapEmpty(): void {\n this.memo += this.style.mapEmpty(this.getClass())\n }\n\n printMapHead(): void {\n this.memo += this.style.mapHead(this.getClass())\n }\n\n getMapEntries(obj: any = this.object): [string, any][] {\n // can never get here unless obj is already a map\n /* c8 ignore start */\n if (!(obj instanceof Map)) {\n throw new TypeError('cannot get map entries for non-Map object')\n }\n /* c8 ignore stop */\n return [...obj.entries()]\n }\n\n printMapBody(): void {\n for (const [key, val] of this.getMapEntries()) {\n this.printMapEntry(key, val)\n }\n }\n\n printMapTail(): void {\n this.memo += this.style.mapTail(this.indentLevel())\n }\n\n printMapEntry(key: any, val: any): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printFn(): void {\n this.memo += this.style.fn(this.object, this.getClass())\n }\n\n printString(): void {\n if (this.parent && this.parent.isString()) {\n this.memo = this.style.stringLine(this.object)\n } else if (this.stringIsEmpty()) {\n this.printStringEmpty()\n } else if (this.stringIsOneLine()) {\n return this.printStringOneLine()\n } else {\n this.printStringHead()\n this.printStringBody()\n this.printStringTail()\n }\n }\n\n stringIsEmpty(): boolean {\n return this.object.length === 0\n }\n\n printStringEmpty(): void {\n this.memo += this.style.stringEmpty()\n }\n\n stringIsOneLine(): boolean {\n return /^[^\\n]*\\n?$/.test(this.object)\n }\n\n printStringOneLine(): void {\n this.memo += this.style.stringOneLine(this.object)\n }\n\n printStringHead(): void {\n this.memo += this.style.stringHead()\n }\n\n printStringBody(): void {\n const lines: string[] = this.object.split('\\n')\n const lastLine = lines.pop()\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n this.printStringLine(i, line + '\\n')\n }\n this.printStringLastLine(lines.length, lastLine + '\\n')\n }\n\n printStringLine(key: any, val: string): void {\n this.printStringLastLine(key, val)\n this.memo += this.style.stringLineSep()\n }\n\n printStringLastLine(key: any, val: string): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printStringTail(): void {\n this.memo += this.style.stringTail(this.indentLevel())\n }\n\n printArray(): void {\n if (this.arrayIsEmpty()) {\n this.printArrayEmpty()\n } else {\n this.printArrayHead()\n this.printArrayBody()\n this.printArrayTail()\n }\n }\n\n arrayIsEmpty(): boolean {\n const a = this.objectAsArray\n return !!a && a.length === 0\n }\n\n printArrayEmpty(): void {\n this.memo += this.style.arrayEmpty(this.getClass())\n }\n\n printArrayHead(): void {\n this.memo += this.style.arrayHead(this.getClass())\n }\n\n printArrayBody(): void {\n if (this.objectAsArray) {\n this.objectAsArray.forEach((val, key) =>\n this.printArrayEntry(key, val)\n )\n }\n }\n\n printArrayTail(): void {\n this.memo += this.style.arrayTail(this.indentLevel())\n }\n\n printArrayEntry(key: any, val: any): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n\n printError(): void {\n if (this.errorIsEmpty()) {\n this.printErrorEmpty()\n } else {\n this.printErrorHead()\n this.printErrorBody()\n this.printErrorTail()\n }\n }\n\n errorIsEmpty(): boolean {\n return this.pojoIsEmpty()\n }\n\n printErrorEmpty(): void {\n this.memo += this.style.errorEmpty(this.object, this.getClass())\n }\n\n printErrorHead(): void {\n this.memo += this.style.errorHead(this.object, this.getClass())\n }\n\n printErrorTail(): void {\n this.memo += this.style.errorTail(this.indentLevel())\n }\n\n printErrorBody(): void {\n this.printPojoBody()\n }\n\n getPojoKeys(obj: any = this.object): string[] {\n if (this.options.includeEnumerable) {\n const keys = []\n for (const i in obj) {\n keys.push(i)\n }\n return keys\n } else if (this.options.includeGetters) {\n const own = new Set(Object.keys(obj))\n const proto = Object.getPrototypeOf(obj)\n if (proto) {\n const desc = Object.getOwnPropertyDescriptors(proto)\n for (const [name, prop] of Object.entries(desc)) {\n if (prop.enumerable && typeof prop.get === 'function') {\n // public wrappers around internal things are worth showing\n own.add(name)\n }\n }\n }\n return Array.from(own)\n } else {\n return Object.keys(obj)\n }\n }\n\n printPojo(): void {\n if (this.pojoIsEmpty()) {\n this.printPojoEmpty()\n } else {\n this.printPojoHead()\n this.printPojoBody()\n this.printPojoTail()\n }\n }\n\n pojoIsEmpty(obj: any = this.object): boolean {\n return this.getPojoKeys(obj).length === 0\n }\n\n printPojoEmpty(): void {\n this.memo += this.style.pojoEmpty(this.getClass())\n }\n\n printPojoHead(): void {\n // impossible\n /* c8 ignore start */\n if (this.memo === null) {\n throw new Error('pojo head while memo is null')\n }\n /* c8 ignore stop */\n this.memo += this.style.pojoHead(this.getClass())\n }\n\n printPojoBody(): void {\n const ent = this.getPojoEntries(this.object)\n for (const [key, val] of ent) {\n this.printPojoEntry(key, val)\n }\n }\n\n getPojoEntries(obj: any): [string, any][] {\n const ent: [string, any][] = this.getPojoKeys(obj).map(k => {\n try {\n return [k, obj[k]]\n } catch {\n return [k, undefined]\n }\n })\n return this.sort\n ? ent.sort((a, b) => a[0].localeCompare(b[0], 'en'))\n : ent\n }\n\n printPojoTail(): void {\n this.memo += this.style.pojoTail(this.indentLevel())\n }\n\n printPojoEntry(key: any, val: any): void {\n const child = this.child(val, { key })\n child.print()\n this.memo += child.memo\n }\n}\n"]}

@@ -21,2 +21,5 @@ /**

}
/**
* Options that can be used to set how diffs are formatted.
*/
export type CompareOptions = FormatOptions & Pick<SameOptions, 'diffContext'>;

@@ -23,0 +26,0 @@ /** format a value and return the formatted string */

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAU,aAAa,EAAE,MAAM,aAAa,CAAA;AAOnD,OAAO,EAAQ,WAAW,EAAE,MAAM,WAAW,CAAA;AAG7C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;CACf;AAOD,MAAM,MAAM,cAAc,GAAG,aAAa,GACxC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;AAYlC,qDAAqD;AACrD,eAAO,MAAM,MAAM,QACZ,GAAG,YACC,aAAa,KACrB,MAA0C,CAAA;AAC7C,wDAAwD;AACxD,eAAO,MAAM,IAAI,QAfT,GAAG,WAAW,GAAG,YAAW,cAAc,WAetB,CAAA;AAC5B,4CAA4C;AAC5C,eAAO,MAAM,MAAM,QAjBX,GAAG,WAAW,GAAG,YAAW,cAAc,WAiBlB,CAAA;AAChC,yCAAyC;AACzC,eAAO,MAAM,GAAG,QAnBR,GAAG,WAAW,GAAG,YAAW,cAAc,WAmBxB,CAAA;AAC1B,+CAA+C;AAC/C,eAAO,MAAM,SAAS,QArBd,GAAG,WAAW,GAAG,YAAW,cAAc,WAqBZ,CAAA;AACtC,2CAA2C;AAC3C,eAAO,MAAM,KAAK,QAvBV,GAAG,WAAW,GAAG,YAAW,cAAc,WAuBpB,CAAA;AAC9B,+CAA+C;AAC/C,eAAO,MAAM,SAAS,QAzBd,GAAG,WAAW,GAAG,YAAW,cAAc,WAyBZ,CAAA;AACtC,iDAAiD;AACjD,eAAO,MAAM,WAAW,QA3BhB,GAAG,WAAW,GAAG,YAAW,cAAc,WA2BR,CAAA;AAC1C,qDAAqD;AACrD,eAAO,MAAM,eAAe,QA7BpB,GAAG,WAAW,GAAG,YAAW,cAAc,WA6BA,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAU,aAAa,EAAE,MAAM,aAAa,CAAA;AAOnD,OAAO,EAAQ,WAAW,EAAE,MAAM,WAAW,CAAA;AAG7C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;CACf;AAQD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GACxC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;AAYlC,qDAAqD;AACrD,eAAO,MAAM,MAAM,QACZ,GAAG,YACC,aAAa,KACrB,MAA0C,CAAA;AAC7C,wDAAwD;AACxD,eAAO,MAAM,IAAI,QAfT,GAAG,WAAW,GAAG,YAAW,cAAc,WAetB,CAAA;AAC5B,4CAA4C;AAC5C,eAAO,MAAM,MAAM,QAjBX,GAAG,WAAW,GAAG,YAAW,cAAc,WAiBlB,CAAA;AAChC,yCAAyC;AACzC,eAAO,MAAM,GAAG,QAnBR,GAAG,WAAW,GAAG,YAAW,cAAc,WAmBxB,CAAA;AAC1B,+CAA+C;AAC/C,eAAO,MAAM,SAAS,QArBd,GAAG,WAAW,GAAG,YAAW,cAAc,WAqBZ,CAAA;AACtC,2CAA2C;AAC3C,eAAO,MAAM,KAAK,QAvBV,GAAG,WAAW,GAAG,YAAW,cAAc,WAuBpB,CAAA;AAC9B,+CAA+C;AAC/C,eAAO,MAAM,SAAS,QAzBd,GAAG,WAAW,GAAG,YAAW,cAAc,WAyBZ,CAAA;AACtC,iDAAiD;AACjD,eAAO,MAAM,WAAW,QA3BhB,GAAG,WAAW,GAAG,YAAW,cAAc,WA2BR,CAAA;AAC1C,qDAAqD;AACrD,eAAO,MAAM,eAAe,QA7BpB,GAAG,WAAW,GAAG,YAAW,cAAc,WA6BA,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA"}

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,IAAI,EAAe,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAgBpC,MAAM,MAAM,GAAG,CAAiB,CAAI,EAAU,EAAE,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE;IACf,KAAK,EAAE,CAAC,CAAC,KAAK;CACf,CAAC,CAAA;AAKF,MAAM,EAAE,GACN,CAAiB,GAAa,EAAE,EAAE,CAClC,CAAC,GAAQ,EAAE,OAAY,EAAE,UAA0B,EAAE,EAAE,EAAE,CACvD,MAAM,CACJ,IAAI,GAAG,CAAC,GAAG,EAAE;IACX,GAAG,OAAO;IACV,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,SAAS;CAClB,CAAC,CACH,CAAA;AAEL,qDAAqD;AACrD,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,GAAQ,EACR,UAAyB,EAAE,EACnB,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAA;AAC7C,wDAAwD;AACxD,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;AAC5B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;AAChC,yCAAyC;AACzC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AAC1B,+CAA+C;AAC/C,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;AACtC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AAC9B,+CAA+C;AAC/C,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;AACtC,iDAAiD;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAA;AAC1C,qDAAqD;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC,eAAe,CAAC,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA","sourcesContent":["/**\n * Export all implementation classes, and convenience methods for each\n * @module\n */\nimport { Format, FormatOptions } from './format.js'\nimport { HasStrict } from './has-strict.js'\nimport { Has } from './has.js'\nimport { MatchOnly } from './match-only.js'\nimport { MatchStrict } from './match-strict.js'\nimport { MatchOnlyStrict } from './match-only-strict.js'\nimport { Match } from './match.js'\nimport { Same, SameOptions } from './same.js'\nimport { Strict } from './strict.js'\n\n/**\n * The return value from all comparison functions.\n */\nexport interface Result {\n /**\n * Diff of formatted test object and expected pattern. Only shows\n * properties which differ, not the entire object.\n */\n diff: string\n /**\n * whether or not the objects are a satisfying match\n */\n match: boolean\n}\nconst simple = <T extends Same>(o: T): Result => ({\n diff: o.print(),\n match: o.match,\n})\n\ntype Class<T> = { new (obj: any, options: SameOptions): T }\nexport type CompareOptions = FormatOptions &\n Pick<SameOptions, 'diffContext'>\nconst fn =\n <T extends Same>(Cls: Class<T>) =>\n (obj: any, pattern: any, options: CompareOptions = {}) =>\n simple<T>(\n new Cls(obj, {\n ...options,\n expect: pattern,\n parent: undefined,\n })\n )\n\n/** format a value and return the formatted string */\nexport const format = (\n obj: any,\n options: FormatOptions = {}\n): string => new Format(obj, options).print()\n/** convenience method for {@link tcompare!same.Same} */\nexport const same = fn(Same)\n/** convenience method for {@link Strict} */\nexport const strict = fn(Strict)\n/** convenience method for {@link Has} */\nexport const has = fn(Has)\n/** convenience method for {@link HasStrict} */\nexport const hasStrict = fn(HasStrict)\n/** convenience method for {@link Match} */\nexport const match = fn(Match)\n/** convenience method for {@link MatchOnly} */\nexport const matchOnly = fn(MatchOnly)\n/** convenience method for {@link MatchStrict} */\nexport const matchStrict = fn(MatchStrict)\n/** convenience method for {@link MatchOnlyStrict} */\nexport const matchOnlyStrict = fn(MatchOnlyStrict)\n\nexport { Format } from './format.js'\nexport type { FormatOptions } from './format.js'\nexport { HasStrict } from './has-strict.js'\nexport { Has } from './has.js'\nexport { MatchOnly } from './match-only.js'\nexport { MatchStrict } from './match-strict.js'\nexport { MatchOnlyStrict } from './match-only-strict.js'\nexport { Match } from './match.js'\nexport { Same } from './same.js'\nexport type { SameOptions } from './same.js'\nexport { Strict } from './strict.js'\nexport { styles } from './styles.js'\nexport type { Style } from './styles.js'\n"]}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,IAAI,EAAe,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAgBpC,MAAM,MAAM,GAAG,CAAiB,CAAI,EAAU,EAAE,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE;IACf,KAAK,EAAE,CAAC,CAAC,KAAK;CACf,CAAC,CAAA;AASF,MAAM,EAAE,GACN,CAAiB,GAAa,EAAE,EAAE,CAClC,CAAC,GAAQ,EAAE,OAAY,EAAE,UAA0B,EAAE,EAAE,EAAE,CACvD,MAAM,CACJ,IAAI,GAAG,CAAC,GAAG,EAAE;IACX,GAAG,OAAO;IACV,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,SAAS;CAClB,CAAC,CACH,CAAA;AAEL,qDAAqD;AACrD,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,GAAQ,EACR,UAAyB,EAAE,EACnB,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAA;AAC7C,wDAAwD;AACxD,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;AAC5B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;AAChC,yCAAyC;AACzC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AAC1B,+CAA+C;AAC/C,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;AACtC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AAC9B,+CAA+C;AAC/C,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;AACtC,iDAAiD;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,CAAA;AAC1C,qDAAqD;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC,eAAe,CAAC,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA","sourcesContent":["/**\n * Export all implementation classes, and convenience methods for each\n * @module\n */\nimport { Format, FormatOptions } from './format.js'\nimport { HasStrict } from './has-strict.js'\nimport { Has } from './has.js'\nimport { MatchOnly } from './match-only.js'\nimport { MatchStrict } from './match-strict.js'\nimport { MatchOnlyStrict } from './match-only-strict.js'\nimport { Match } from './match.js'\nimport { Same, SameOptions } from './same.js'\nimport { Strict } from './strict.js'\n\n/**\n * The return value from all comparison functions.\n */\nexport interface Result {\n /**\n * Diff of formatted test object and expected pattern. Only shows\n * properties which differ, not the entire object.\n */\n diff: string\n /**\n * whether or not the objects are a satisfying match\n */\n match: boolean\n}\nconst simple = <T extends Same>(o: T): Result => ({\n diff: o.print(),\n match: o.match,\n})\n\ntype Class<T> = { new (obj: any, options: SameOptions): T }\n\n/**\n * Options that can be used to set how diffs are formatted.\n */\nexport type CompareOptions = FormatOptions &\n Pick<SameOptions, 'diffContext'>\nconst fn =\n <T extends Same>(Cls: Class<T>) =>\n (obj: any, pattern: any, options: CompareOptions = {}) =>\n simple<T>(\n new Cls(obj, {\n ...options,\n expect: pattern,\n parent: undefined,\n })\n )\n\n/** format a value and return the formatted string */\nexport const format = (\n obj: any,\n options: FormatOptions = {}\n): string => new Format(obj, options).print()\n/** convenience method for {@link tcompare!same.Same} */\nexport const same = fn(Same)\n/** convenience method for {@link Strict} */\nexport const strict = fn(Strict)\n/** convenience method for {@link Has} */\nexport const has = fn(Has)\n/** convenience method for {@link HasStrict} */\nexport const hasStrict = fn(HasStrict)\n/** convenience method for {@link Match} */\nexport const match = fn(Match)\n/** convenience method for {@link MatchOnly} */\nexport const matchOnly = fn(MatchOnly)\n/** convenience method for {@link MatchStrict} */\nexport const matchStrict = fn(MatchStrict)\n/** convenience method for {@link MatchOnlyStrict} */\nexport const matchOnlyStrict = fn(MatchOnlyStrict)\n\nexport { Format } from './format.js'\nexport type { FormatOptions } from './format.js'\nexport { HasStrict } from './has-strict.js'\nexport { Has } from './has.js'\nexport { MatchOnly } from './match-only.js'\nexport { MatchStrict } from './match-strict.js'\nexport { MatchOnlyStrict } from './match-only-strict.js'\nexport { Match } from './match.js'\nexport { Same } from './same.js'\nexport type { SameOptions } from './same.js'\nexport { Strict } from './strict.js'\nexport { styles } from './styles.js'\nexport type { Style } from './styles.js'\n"]}
{
"name": "tcompare",
"version": "6.0.1-3",
"version": "6.0.1-4",
"description": "A comprehensive comparison library, for use in test frameworks",

@@ -5,0 +5,0 @@ "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",