mol_compare_deep 0.0.631 → 0.0.633
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node.js +2 -2
- package/node.js.map +1 -1
- package/node.mjs +2 -2
- package/node.test.js +296 -2
- package/node.test.js.map +1 -1
- package/package.json +1 -1
- package/web.js +2 -2
- package/web.js.map +1 -1
- package/web.mjs +2 -2
- package/web.test.js +294 -0
- package/web.test.js.map +1 -1
package/node.js
CHANGED
|
@@ -75,6 +75,8 @@ var $;
|
|
|
75
75
|
result = compare_pojo(left, right);
|
|
76
76
|
else if (!Reflect.getPrototypeOf(left_proto))
|
|
77
77
|
result = compare_pojo(left, right);
|
|
78
|
+
else if (Symbol.toPrimitive in left)
|
|
79
|
+
result = compare_primitive(left, right);
|
|
78
80
|
else if (Array.isArray(left))
|
|
79
81
|
result = compare_array(left, right);
|
|
80
82
|
else if (left instanceof Set)
|
|
@@ -85,8 +87,6 @@ var $;
|
|
|
85
87
|
result = compare_buffer(left, right);
|
|
86
88
|
else if (Symbol.iterator in left)
|
|
87
89
|
result = compare_iterator(left[Symbol.iterator](), right[Symbol.iterator]());
|
|
88
|
-
else if (Symbol.toPrimitive in left)
|
|
89
|
-
result = compare_primitive(left, right);
|
|
90
90
|
else
|
|
91
91
|
result = false;
|
|
92
92
|
}
|
package/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["-","../../../../mam.ts","../../../../mol/compare/deep/deep.ts"],"names":[],"sourceRoot":"../../../../","mappings":";;AAAA;AACA;AACA;AACA;;ACHA,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;AAK3B,IAAU,CAAC,CAMV;AAND,WAAU,CAAC;AAMX,CAAC,EANS,CAAC,KAAD,CAAC,QAMV;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;;;ADblB;AACA;AACA;;;;;;;;;;;;;;;AEFA,IAAU,CAAC,CAsJV;AAtJD,WAAU,CAAC;IAEC,yBAAuB,GAAG,IAAI,OAAO,EAAoC,CAAA;IAMpF,SAAgB,iBAAiB,CAAW,IAAW,EAAE,KAAY;QAEpE,IAAI,MAAM,CAAC,EAAE,CAAE,IAAI,EAAG,KAAK,CAAE;YAAG,OAAO,IAAI,CAAA;QAE3C,IAAI,IAAI,KAAK,IAAI;YAAG,OAAO,KAAK,CAAA;QAChC,IAAI,KAAK,KAAK,IAAI;YAAG,OAAO,KAAK,CAAA;QAEjC,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAG,OAAO,KAAK,CAAA;QAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAG,OAAO,KAAK,CAAA;QAE5C,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAE,IAAW,CAAE,CAAA;QACxD,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAE,KAAY,CAAE,CAAA;QAE1D,IAAI,UAAU,KAAK,WAAW;YAAG,OAAO,KAAK,CAAA;QAE7C,IAAI,IAAI,YAAY,OAAO;YAAG,OAAO,MAAM,CAAC,EAAE,CAAE,IAAI,CAAC,OAAO,EAAE,EAAI,KAAc,CAAC,SAAS,CAAC,EAAE,CAAE,CAAA;QAC/F,IAAI,IAAI,YAAY,MAAM;YAAG,OAAO,MAAM,CAAC,EAAE,CAAE,IAAI,CAAC,OAAO,EAAE,EAAI,KAAc,CAAC,SAAS,CAAC,EAAE,CAAE,CAAA;QAC9F,IAAI,IAAI,YAAY,MAAM;YAAG,OAAO,MAAM,CAAC,EAAE,CAAE,IAAI,CAAC,OAAO,EAAE,EAAI,KAAc,CAAC,SAAS,CAAC,EAAE,CAAE,CAAA;QAC9F,IAAI,IAAI,YAAY,IAAI;YAAG,OAAO,MAAM,CAAC,EAAE,CAAE,IAAI,CAAC,OAAO,EAAE,EAAI,KAAc,CAAC,SAAS,CAAC,EAAE,CAAE,CAAA;QAC5F,IAAI,IAAI,YAAY,MAAM;YAAG,OAAO,IAAI,CAAC,MAAM,KAAM,KAAa,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAM,KAAa,CAAC,KAAK,CAAA;QAChH,IAAI,IAAI,YAAY,KAAK;YAAG,OAAO,IAAI,CAAC,OAAO,KAAM,KAAa,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAM,KAAa,CAAC,KAAK,CAAA;QAEjH,IAAI,UAAU,GAAG,EAAA,uBAAuB,CAAC,GAAG,CAAE,IAAI,CAAE,CAAA;QACpD,IAAI,UAAU,EAAG;YAEhB,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAE,KAAK,CAAE,CAAA;YAC3C,IAAI,OAAO,WAAW,KAAK,SAAS;gBAAG,OAAO,WAAW,CAAA;SAEzD;aAAM;YAEN,UAAU,GAAG,IAAI,OAAO,CAAkB,CAAC,CAAE,KAAK,EAAE,IAAI,CAAE,CAAC,CAAC,CAAA;YAC5D,EAAA,uBAAuB,CAAC,GAAG,CAAE,IAAI,EAAG,UAAU,CAAE,CAAA;SAEhD;QAED,IAAI,MAAgB,CAAA;QAEpB,IAAI;YAEH,IAAI,CAAC,UAAU;gBAAG,MAAM,GAAG,YAAY,CAAE,IAAI,EAAE,KAAY,CAAE,CAAA;iBACxD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAE,UAAU,CAAE;gBAAG,MAAM,GAAG,YAAY,CAAE,IAAI,EAAE,KAAY,CAAE,CAAA;iBACvF,IAAI,KAAK,CAAC,OAAO,CAAE,IAAI,CAAE;gBAAG,MAAM,GAAG,aAAa,CAAE,IAAI,EAAE,KAAY,CAAE,CAAA;iBACxE,IAAI,IAAI,YAAY,GAAG;gBAAG,MAAM,GAAG,WAAW,CAAE,IAAI,EAAE,KAAY,CAAE,CAAA;iBACpE,IAAI,IAAI,YAAY,GAAG;gBAAG,MAAM,GAAG,WAAW,CAAE,IAAI,EAAE,KAAY,CAAE,CAAA;iBACpE,IAAI,WAAW,CAAC,MAAM,CAAE,IAAI,CAAE;gBAAG,MAAM,GAAG,cAAc,CAAE,IAAI,EAAE,KAAY,CAAE,CAAA;iBAC9E,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI;gBAAG,MAAM,GAAG,gBAAgB,CAAI,IAAa,CAAE,MAAM,CAAC,QAAQ,CAAE,EAAE,EAAI,KAAc,CAAE,MAAM,CAAC,QAAQ,CAAE,EAAE,CAAE,CAAA;iBACtI,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI;gBAAG,MAAM,GAAG,iBAAiB,CAAE,IAAI,EAAE,KAAK,CAAE,CAAA;;gBAC1E,MAAM,GAAG,KAAK,CAAA;SAEnB;gBAAS;YACT,UAAU,CAAC,GAAG,CAAE,KAAK,EAAG,MAAM,CAAE,CAAA;SAChC;QAED,OAAO,MAAM,CAAA;IACd,CAAC;IAtDe,mBAAiB,oBAsDhC,CAAA;IAED,SAAS,aAAa,CAAyB,IAAW,EAAE,KAAY;QAEvE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;QACvB,IAAI,GAAG,KAAK,KAAK,CAAC,MAAM;YAAG,OAAO,KAAK,CAAA;QAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAG;YAC9B,IAAI,CAAC,iBAAiB,CAAE,IAAI,CAAC,CAAC,CAAC,EAAG,KAAK,CAAC,CAAC,CAAC,CAAE;gBAAG,OAAO,KAAK,CAAA;SAC3D;QAED,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,SAAS,cAAc,CAAE,IAAqB,EAAE,KAAsB;QAErE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAA;QAC3B,IAAI,GAAG,KAAK,KAAK,CAAC,UAAU;YAAG,OAAO,KAAK,CAAA;QAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAG;YAC9B,IAAK,IAAY,CAAC,CAAC,CAAC,KAAM,KAAa,CAAC,CAAC,CAAC;gBAAG,OAAO,KAAK,CAAA;SACzD;QAED,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,SAAS,gBAAgB,CACxB,IAAW,EACX,KAAY;QAGZ,OAAO,IAAI,EAAG;YAEb,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;YAE/B,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI;gBAAG,OAAO,KAAK,CAAA;YACrD,IAAI,SAAS,CAAC,IAAI;gBAAG,MAAK;YAE1B,IAAI,CAAC,iBAAiB,CAAE,SAAS,CAAC,KAAK,EAAG,UAAU,CAAC,KAAK,CAAE;gBAAG,OAAO,KAAK,CAAA;SAE3E;QAED,OAAO,IAAI,CAAA;IAEZ,CAAC;IAED,SAAS,WAAW,CAA4B,IAAW,EAAE,KAAY;QACxE,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YAAG,OAAO,KAAK,CAAA;QAC3C,OAAO,gBAAgB,CAAE,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,CAAE,CAAA;IACzD,CAAC;IAED,SAAS,WAAW,CAAgB,IAAuB,EAAG,KAAwB;QACrF,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YAAG,OAAO,KAAK,CAAA;QAC3C,OAAO,gBAAgB,CAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAE;eAChD,gBAAgB,CAAE,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,CAAE,CAAA;IACtD,CAAC;IAED,SAAS,YAAY,CAAE,IAAQ,EAAE,KAAS;QAEzC,MAAM,SAAS,GAAG,MAAM,CAAC,mBAAmB,CAAE,IAAI,CAAE,CAAA;QACpD,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAE,KAAK,CAAE,CAAA;QAEtD,IAAI,CAAC,aAAa,CAAE,SAAS,EAAE,UAAU,CAAE;YAAG,OAAO,KAAK,CAAA;QAE1D,KAAK,IAAI,GAAG,IAAI,SAAS,EAAG;YAC3B,IAAI,CAAC,iBAAiB,CAAI,IAAa,CAAE,GAAG,CAAE,EAAI,KAAc,CAAE,GAAG,CAAE,CAAE;gBAAG,OAAO,KAAK,CAAA;SACxF;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAE,IAAI,CAAE,CAAA;QACtD,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAE,KAAK,CAAE,CAAA;QAExD,IAAI,CAAC,aAAa,CAAE,SAAS,EAAE,UAAU,CAAE;YAAG,OAAO,KAAK,CAAA;QAE1D,KAAK,IAAI,GAAG,IAAI,SAAS,EAAG;YAC3B,IAAI,CAAC,iBAAiB,CAAI,IAAa,CAAE,GAAG,CAAE,EAAI,KAAc,CAAE,GAAG,CAAE,CAAE;gBAAG,OAAO,KAAK,CAAA;SACxF;QAED,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,SAAS,iBAAiB,CAAE,IAAQ,EAAE,KAAS;QAC9C,OAAO,MAAM,CAAC,EAAE,CACd,IAAY,CAAE,MAAM,CAAC,WAAW,CAAE,CAAE,SAAS,CAAE,EAC/C,KAAa,CAAE,MAAM,CAAC,WAAW,CAAE,CAAE,SAAS,CAAE,CACjD,CAAA;IACF,CAAC;AAEF,CAAC,EAtJS,CAAC,KAAD,CAAC,QAsJV;;","sourcesContent":[null,"Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n","namespace $ {\n\n\texport let $mol_compare_deep_cache = new WeakMap< any , WeakMap< any , boolean > >()\n\t\n\t/**\n\t * Deeply compares two values. Returns true if equal.\n\t * Define `Symbol.toPrimitive` to customize.\n\t */\n\texport function $mol_compare_deep< Value >( left: Value, right: Value ): boolean {\n\n\t\tif( Object.is( left , right ) ) return true\n\n\t\tif( left === null ) return false\n\t\tif( right === null ) return false\n\n\t\tif( typeof left !== 'object' ) return false\n\t\tif( typeof right !== 'object' ) return false\n\n\t\tconst left_proto = Reflect.getPrototypeOf( left as any )\n\t\tconst right_proto = Reflect.getPrototypeOf( right as any )\n\t\t\n\t\tif( left_proto !== right_proto ) return false\n\n\t\tif( left instanceof Boolean ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof Number ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof String ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof Date ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof RegExp ) return left.source === (right as any).source && left.flags === (right as any).flags\n\t\tif( left instanceof Error ) return left.message === (right as any).message && left.stack === (right as any).stack\n\n\t\tlet left_cache = $mol_compare_deep_cache.get( left )\n\t\tif( left_cache ) {\n\n\t\t\tconst right_cache = left_cache.get( right )\n\t\t\tif( typeof right_cache === 'boolean' ) return right_cache\n\n\t\t} else {\n\t\t\t\n\t\t\tleft_cache = new WeakMap< any , boolean >([[ right, true ]])\n\t\t\t$mol_compare_deep_cache.set( left , left_cache )\n\n\t\t}\n\n\t\tlet result!: boolean\n\n\t\ttry {\n\t\t\t\n\t\t\tif( !left_proto ) result = compare_pojo( left, right as any )\n\t\t\telse if( !Reflect.getPrototypeOf( left_proto ) ) result = compare_pojo( left, right as any )\n\t\t\telse if( Array.isArray( left ) ) result = compare_array( left, right as any )\n\t\t\telse if( left instanceof Set ) result = compare_set( left, right as any )\n\t\t\telse if( left instanceof Map ) result = compare_map( left, right as any )\n\t\t\telse if( ArrayBuffer.isView( left ) ) result = compare_buffer( left, right as any )\n\t\t\telse if( Symbol.iterator in left ) result = compare_iterator( ( left as any )[ Symbol.iterator ](), ( right as any )[ Symbol.iterator ]() )\n\t\t\telse if( Symbol.toPrimitive in left ) result = compare_primitive( left, right )\n\t\t\telse result = false\n\n\t\t} finally {\n\t\t\tleft_cache.set( right , result )\n\t\t}\n\t\t\n\t\treturn result\n\t}\n\n\tfunction compare_array< Value extends any[] >( left: Value, right: Value ): boolean {\n\t\t\n\t\tconst len = left.length\n\t\tif( len !== right.length ) return false\n\t\t\n\t\tfor( let i = 0; i < len; ++i ) {\n\t\t\tif( !$mol_compare_deep( left[i] , right[i] ) ) return false\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tfunction compare_buffer( left: ArrayBufferView, right: ArrayBufferView ): boolean {\n\t\t\n\t\tconst len = left.byteLength\n\t\tif( len !== right.byteLength ) return false\n\t\t\n\t\tfor( let i = 0; i < len; ++i ) {\n\t\t\tif( (left as any)[i] !== (right as any)[i] ) return false\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tfunction compare_iterator< Value extends IterableIterator<any> >(\n\t\tleft: Value,\n\t\tright: Value,\n\t): boolean {\n\t\t\n\t\twhile( true ) {\n\n\t\t\tconst left_next = left.next()\n\t\t\tconst right_next = right.next()\n\n\t\t\tif( left_next.done !== right_next.done ) return false\n\t\t\tif( left_next.done ) break\n\n\t\t\tif( !$mol_compare_deep( left_next.value , right_next.value ) ) return false\n\n\t\t}\n\n\t\treturn true\n\n\t}\n\t\n\tfunction compare_set< Value extends Set<any> >( left: Value, right: Value ): boolean {\n\t\tif( left.size !== right.size ) return false\n\t\treturn compare_iterator( left.values(), right.values() )\n\t}\n\t\n\tfunction compare_map< Key, Value >( left: Map< Key, Value > , right: Map< Key, Value > ): boolean {\n\t\tif( left.size !== right.size ) return false\n\t\treturn compare_iterator( left.keys(), right.keys() )\n\t\t\t&& compare_iterator( left.values(), right.values() )\n\t}\n\t\n\tfunction compare_pojo( left: {}, right: {} ): boolean {\n\t\t\n\t\tconst left_keys = Object.getOwnPropertyNames( left )\n\t\tconst right_keys = Object.getOwnPropertyNames( right )\n\t\t\n\t\tif( !compare_array( left_keys, right_keys ) ) return false\n\n\t\tfor( let key of left_keys ) {\n\t\t\tif( !$mol_compare_deep( ( left as any )[ key ], ( right as any )[ key ] ) ) return false\n\t\t}\n\n\t\tconst left_syms = Object.getOwnPropertySymbols( left )\n\t\tconst right_syms = Object.getOwnPropertySymbols( right )\n\t\t\n\t\tif( !compare_array( left_syms, right_syms ) ) return false\n\n\t\tfor( let key of left_syms ) {\n\t\t\tif( !$mol_compare_deep( ( left as any )[ key ], ( right as any )[ key ] ) ) return false\n\t\t}\n\n\t\treturn true\n\t}\n\t\n\tfunction compare_primitive( left: {}, right: {} ): boolean {\n\t\treturn Object.is(\n\t\t\t(left as any)[ Symbol.toPrimitive ]( 'default' ),\n\t\t\t(right as any)[ Symbol.toPrimitive ]( 'default' ),\n\t\t)\n\t}\n\t\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["-","../../../../mam.ts","../../../../mol/compare/deep/deep.ts"],"names":[],"sourceRoot":"../../../../","mappings":"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","sourcesContent":[null,"Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n","namespace $ {\n\n\texport let $mol_compare_deep_cache = new WeakMap< any , WeakMap< any , boolean > >()\n\t\n\t/**\n\t * Deeply compares two values. Returns true if equal.\n\t * Define `Symbol.toPrimitive` to customize.\n\t */\n\texport function $mol_compare_deep< Value >( left: Value, right: Value ): boolean {\n\n\t\tif( Object.is( left , right ) ) return true\n\n\t\tif( left === null ) return false\n\t\tif( right === null ) return false\n\n\t\tif( typeof left !== 'object' ) return false\n\t\tif( typeof right !== 'object' ) return false\n\n\t\tconst left_proto = Reflect.getPrototypeOf( left as any )\n\t\tconst right_proto = Reflect.getPrototypeOf( right as any )\n\t\t\n\t\tif( left_proto !== right_proto ) return false\n\n\t\tif( left instanceof Boolean ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof Number ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof String ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof Date ) return Object.is( left.valueOf(), ( right as any )['valueOf']() )\n\t\tif( left instanceof RegExp ) return left.source === (right as any).source && left.flags === (right as any).flags\n\t\tif( left instanceof Error ) return left.message === (right as any).message && left.stack === (right as any).stack\n\n\t\tlet left_cache = $mol_compare_deep_cache.get( left )\n\t\tif( left_cache ) {\n\n\t\t\tconst right_cache = left_cache.get( right )\n\t\t\tif( typeof right_cache === 'boolean' ) return right_cache\n\n\t\t} else {\n\t\t\t\n\t\t\tleft_cache = new WeakMap< any , boolean >([[ right, true ]])\n\t\t\t$mol_compare_deep_cache.set( left , left_cache )\n\n\t\t}\n\n\t\tlet result!: boolean\n\n\t\ttry {\n\t\t\t\n\t\t\tif( !left_proto ) result = compare_pojo( left, right as any )\n\t\t\telse if( !Reflect.getPrototypeOf( left_proto ) ) result = compare_pojo( left, right as any )\n\t\t\telse if( Symbol.toPrimitive in left ) result = compare_primitive( left, right )\n\t\t\telse if( Array.isArray( left ) ) result = compare_array( left, right as any )\n\t\t\telse if( left instanceof Set ) result = compare_set( left, right as any )\n\t\t\telse if( left instanceof Map ) result = compare_map( left, right as any )\n\t\t\telse if( ArrayBuffer.isView( left ) ) result = compare_buffer( left, right as any )\n\t\t\telse if( Symbol.iterator in left ) result = compare_iterator( ( left as any )[ Symbol.iterator ](), ( right as any )[ Symbol.iterator ]() )\n\t\t\telse result = false\n\n\t\t} finally {\n\t\t\tleft_cache.set( right , result )\n\t\t}\n\t\t\n\t\treturn result\n\t}\n\n\tfunction compare_array< Value extends any[] >( left: Value, right: Value ): boolean {\n\t\t\n\t\tconst len = left.length\n\t\tif( len !== right.length ) return false\n\t\t\n\t\tfor( let i = 0; i < len; ++i ) {\n\t\t\tif( !$mol_compare_deep( left[i] , right[i] ) ) return false\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tfunction compare_buffer( left: ArrayBufferView, right: ArrayBufferView ): boolean {\n\t\t\n\t\tconst len = left.byteLength\n\t\tif( len !== right.byteLength ) return false\n\t\t\n\t\tfor( let i = 0; i < len; ++i ) {\n\t\t\tif( (left as any)[i] !== (right as any)[i] ) return false\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tfunction compare_iterator< Value extends IterableIterator<any> >(\n\t\tleft: Value,\n\t\tright: Value,\n\t): boolean {\n\t\t\n\t\twhile( true ) {\n\n\t\t\tconst left_next = left.next()\n\t\t\tconst right_next = right.next()\n\n\t\t\tif( left_next.done !== right_next.done ) return false\n\t\t\tif( left_next.done ) break\n\n\t\t\tif( !$mol_compare_deep( left_next.value , right_next.value ) ) return false\n\n\t\t}\n\n\t\treturn true\n\n\t}\n\t\n\tfunction compare_set< Value extends Set<any> >( left: Value, right: Value ): boolean {\n\t\tif( left.size !== right.size ) return false\n\t\treturn compare_iterator( left.values(), right.values() )\n\t}\n\t\n\tfunction compare_map< Key, Value >( left: Map< Key, Value > , right: Map< Key, Value > ): boolean {\n\t\tif( left.size !== right.size ) return false\n\t\treturn compare_iterator( left.keys(), right.keys() )\n\t\t\t&& compare_iterator( left.values(), right.values() )\n\t}\n\t\n\tfunction compare_pojo( left: {}, right: {} ): boolean {\n\t\t\n\t\tconst left_keys = Object.getOwnPropertyNames( left )\n\t\tconst right_keys = Object.getOwnPropertyNames( right )\n\t\t\n\t\tif( !compare_array( left_keys, right_keys ) ) return false\n\n\t\tfor( let key of left_keys ) {\n\t\t\tif( !$mol_compare_deep( ( left as any )[ key ], ( right as any )[ key ] ) ) return false\n\t\t}\n\n\t\tconst left_syms = Object.getOwnPropertySymbols( left )\n\t\tconst right_syms = Object.getOwnPropertySymbols( right )\n\t\t\n\t\tif( !compare_array( left_syms, right_syms ) ) return false\n\n\t\tfor( let key of left_syms ) {\n\t\t\tif( !$mol_compare_deep( ( left as any )[ key ], ( right as any )[ key ] ) ) return false\n\t\t}\n\n\t\treturn true\n\t}\n\t\n\tfunction compare_primitive( left: {}, right: {} ): boolean {\n\t\treturn Object.is(\n\t\t\t(left as any)[ Symbol.toPrimitive ]( 'default' ),\n\t\t\t(right as any)[ Symbol.toPrimitive ]( 'default' ),\n\t\t)\n\t}\n\t\n}\n"]}
|
package/node.mjs
CHANGED
|
@@ -75,6 +75,8 @@ var $;
|
|
|
75
75
|
result = compare_pojo(left, right);
|
|
76
76
|
else if (!Reflect.getPrototypeOf(left_proto))
|
|
77
77
|
result = compare_pojo(left, right);
|
|
78
|
+
else if (Symbol.toPrimitive in left)
|
|
79
|
+
result = compare_primitive(left, right);
|
|
78
80
|
else if (Array.isArray(left))
|
|
79
81
|
result = compare_array(left, right);
|
|
80
82
|
else if (left instanceof Set)
|
|
@@ -85,8 +87,6 @@ var $;
|
|
|
85
87
|
result = compare_buffer(left, right);
|
|
86
88
|
else if (Symbol.iterator in left)
|
|
87
89
|
result = compare_iterator(left[Symbol.iterator](), right[Symbol.iterator]());
|
|
88
|
-
else if (Symbol.toPrimitive in left)
|
|
89
|
-
result = compare_primitive(left, right);
|
|
90
90
|
else
|
|
91
91
|
result = false;
|
|
92
92
|
}
|
package/node.test.js
CHANGED
|
@@ -67,6 +67,8 @@ var $;
|
|
|
67
67
|
result = compare_pojo(left, right);
|
|
68
68
|
else if (!Reflect.getPrototypeOf(left_proto))
|
|
69
69
|
result = compare_pojo(left, right);
|
|
70
|
+
else if (Symbol.toPrimitive in left)
|
|
71
|
+
result = compare_primitive(left, right);
|
|
70
72
|
else if (Array.isArray(left))
|
|
71
73
|
result = compare_array(left, right);
|
|
72
74
|
else if (left instanceof Set)
|
|
@@ -77,8 +79,6 @@ var $;
|
|
|
77
79
|
result = compare_buffer(left, right);
|
|
78
80
|
else if (Symbol.iterator in left)
|
|
79
81
|
result = compare_iterator(left[Symbol.iterator](), right[Symbol.iterator]());
|
|
80
|
-
else if (Symbol.toPrimitive in left)
|
|
81
|
-
result = compare_primitive(left, right);
|
|
82
82
|
else
|
|
83
83
|
result = false;
|
|
84
84
|
}
|
|
@@ -1738,6 +1738,298 @@ var $;
|
|
|
1738
1738
|
;
|
|
1739
1739
|
"use strict";
|
|
1740
1740
|
var $;
|
|
1741
|
+
(function ($) {
|
|
1742
|
+
function $mol_guid(length = 8, exists = () => false) {
|
|
1743
|
+
for (;;) {
|
|
1744
|
+
let id = Math.random().toString(36).substring(2, length + 2).toUpperCase();
|
|
1745
|
+
if (exists(id))
|
|
1746
|
+
continue;
|
|
1747
|
+
return id;
|
|
1748
|
+
}
|
|
1749
|
+
}
|
|
1750
|
+
$.$mol_guid = $mol_guid;
|
|
1751
|
+
})($ || ($ = {}));
|
|
1752
|
+
//mol/guid/guid.ts
|
|
1753
|
+
;
|
|
1754
|
+
"use strict";
|
|
1755
|
+
var $;
|
|
1756
|
+
(function ($) {
|
|
1757
|
+
function $mol_range2(item = index => index, size = () => Number.POSITIVE_INFINITY) {
|
|
1758
|
+
return new Proxy(new $mol_range2_array(), {
|
|
1759
|
+
get(target, field) {
|
|
1760
|
+
if (typeof field === 'string') {
|
|
1761
|
+
if (field === 'length')
|
|
1762
|
+
return size();
|
|
1763
|
+
const index = Number(field);
|
|
1764
|
+
if (index < 0)
|
|
1765
|
+
return undefined;
|
|
1766
|
+
if (index >= size())
|
|
1767
|
+
return undefined;
|
|
1768
|
+
if (index === Math.trunc(index))
|
|
1769
|
+
return item(index);
|
|
1770
|
+
}
|
|
1771
|
+
return target[field];
|
|
1772
|
+
},
|
|
1773
|
+
set(target, field) {
|
|
1774
|
+
return $mol_fail(new TypeError(`Lazy range is read only (trying to set field ${JSON.stringify(field)})`));
|
|
1775
|
+
},
|
|
1776
|
+
ownKeys(target) {
|
|
1777
|
+
return [...Array(size())].map((v, i) => String(i)).concat('length');
|
|
1778
|
+
},
|
|
1779
|
+
getOwnPropertyDescriptor(target, field) {
|
|
1780
|
+
if (field === "length")
|
|
1781
|
+
return {
|
|
1782
|
+
value: size(),
|
|
1783
|
+
writable: true,
|
|
1784
|
+
enumerable: false,
|
|
1785
|
+
configurable: false,
|
|
1786
|
+
};
|
|
1787
|
+
const index = Number(field);
|
|
1788
|
+
if (index === Math.trunc(index))
|
|
1789
|
+
return {
|
|
1790
|
+
get: () => this.get(target, field, this),
|
|
1791
|
+
enumerable: true,
|
|
1792
|
+
configurable: true,
|
|
1793
|
+
};
|
|
1794
|
+
return Object.getOwnPropertyDescriptor(target, field);
|
|
1795
|
+
}
|
|
1796
|
+
});
|
|
1797
|
+
}
|
|
1798
|
+
$.$mol_range2 = $mol_range2;
|
|
1799
|
+
class $mol_range2_array extends Array {
|
|
1800
|
+
concat(...tail) {
|
|
1801
|
+
if (tail.length === 0)
|
|
1802
|
+
return this;
|
|
1803
|
+
if (tail.length > 1) {
|
|
1804
|
+
let list = this;
|
|
1805
|
+
for (let item of tail)
|
|
1806
|
+
list = list.concat(item);
|
|
1807
|
+
return list;
|
|
1808
|
+
}
|
|
1809
|
+
return $mol_range2(index => index < this.length ? this[index] : tail[0][index - this.length], () => this.length + tail[0].length);
|
|
1810
|
+
}
|
|
1811
|
+
filter(check, context) {
|
|
1812
|
+
const filtered = new $mol_range2_array();
|
|
1813
|
+
for (let index = 0; index < this.length; ++index) {
|
|
1814
|
+
const item = this[index];
|
|
1815
|
+
if (check.call(context, item, index, this))
|
|
1816
|
+
filtered.push(item);
|
|
1817
|
+
}
|
|
1818
|
+
return filtered;
|
|
1819
|
+
}
|
|
1820
|
+
forEach(proceed, context) {
|
|
1821
|
+
for (let [key, value] of this.entries())
|
|
1822
|
+
proceed.call(context, value, key, this);
|
|
1823
|
+
}
|
|
1824
|
+
map(proceed, context) {
|
|
1825
|
+
return $mol_range2(index => proceed.call(context, this[index], index, this), () => this.length);
|
|
1826
|
+
}
|
|
1827
|
+
reduce(merge, result) {
|
|
1828
|
+
let index = 0;
|
|
1829
|
+
if (arguments.length === 1) {
|
|
1830
|
+
result = this[index++];
|
|
1831
|
+
}
|
|
1832
|
+
for (; index < this.length; ++index) {
|
|
1833
|
+
result = merge(result, this[index], index, this);
|
|
1834
|
+
}
|
|
1835
|
+
return result;
|
|
1836
|
+
}
|
|
1837
|
+
toReversed() {
|
|
1838
|
+
return $mol_range2(index => this[this.length - 1 - index], () => this.length);
|
|
1839
|
+
}
|
|
1840
|
+
slice(from = 0, to = this.length) {
|
|
1841
|
+
return $mol_range2(index => this[from + index], () => Math.min(to, this.length) - from);
|
|
1842
|
+
}
|
|
1843
|
+
some(check, context) {
|
|
1844
|
+
for (let index = 0; index < this.length; ++index) {
|
|
1845
|
+
if (check.call(context, this[index], index, this))
|
|
1846
|
+
return true;
|
|
1847
|
+
}
|
|
1848
|
+
return false;
|
|
1849
|
+
}
|
|
1850
|
+
every(check, context) {
|
|
1851
|
+
for (let index = 0; index < this.length; ++index) {
|
|
1852
|
+
if (!check.call(context, this[index], index, this))
|
|
1853
|
+
return false;
|
|
1854
|
+
}
|
|
1855
|
+
return true;
|
|
1856
|
+
}
|
|
1857
|
+
reverse() {
|
|
1858
|
+
return $mol_fail(new TypeError(`Mutable reverse is forbidden. Use toReversed instead.`));
|
|
1859
|
+
}
|
|
1860
|
+
sort() {
|
|
1861
|
+
return $mol_fail(new TypeError(`Mutable sort is forbidden. Use toSorted instead.`));
|
|
1862
|
+
}
|
|
1863
|
+
[Symbol.toPrimitive]() {
|
|
1864
|
+
return $mol_guid();
|
|
1865
|
+
}
|
|
1866
|
+
}
|
|
1867
|
+
$.$mol_range2_array = $mol_range2_array;
|
|
1868
|
+
})($ || ($ = {}));
|
|
1869
|
+
//mol/range2/range2.ts
|
|
1870
|
+
;
|
|
1871
|
+
"use strict";
|
|
1872
|
+
var $;
|
|
1873
|
+
(function ($) {
|
|
1874
|
+
$mol_test({
|
|
1875
|
+
'lazy calls'() {
|
|
1876
|
+
let calls = 0;
|
|
1877
|
+
const list = $mol_range2(index => (++calls, index), () => 10);
|
|
1878
|
+
$mol_assert_ok(list instanceof Array);
|
|
1879
|
+
$mol_assert_equal(list.length, 10);
|
|
1880
|
+
$mol_assert_equal(list[-1], undefined);
|
|
1881
|
+
$mol_assert_equal(list[0], 0);
|
|
1882
|
+
$mol_assert_equal(list[9], 9);
|
|
1883
|
+
$mol_assert_equal(list[9.5], undefined);
|
|
1884
|
+
$mol_assert_equal(list[10], undefined);
|
|
1885
|
+
$mol_assert_equal(calls, 2);
|
|
1886
|
+
},
|
|
1887
|
+
'infinity list'() {
|
|
1888
|
+
let calls = 0;
|
|
1889
|
+
const list = $mol_range2(index => (++calls, index));
|
|
1890
|
+
$mol_assert_equal(list.length, Number.POSITIVE_INFINITY);
|
|
1891
|
+
$mol_assert_equal(list[0], 0);
|
|
1892
|
+
$mol_assert_equal(list[4], 4);
|
|
1893
|
+
$mol_assert_equal(list[Number.MAX_SAFE_INTEGER], Number.MAX_SAFE_INTEGER);
|
|
1894
|
+
$mol_assert_equal(list[Number.POSITIVE_INFINITY], undefined);
|
|
1895
|
+
$mol_assert_equal(calls, 3);
|
|
1896
|
+
},
|
|
1897
|
+
'stringify'() {
|
|
1898
|
+
const list = $mol_range2(i => i, () => 5);
|
|
1899
|
+
$mol_assert_equal(list.toString(), '0,1,2,3,4');
|
|
1900
|
+
$mol_assert_equal(list.join(';'), '0;1;2;3;4');
|
|
1901
|
+
},
|
|
1902
|
+
'for-of'() {
|
|
1903
|
+
let log = '';
|
|
1904
|
+
for (let i of $mol_range2(i => i + 1, () => 5)) {
|
|
1905
|
+
log += i;
|
|
1906
|
+
}
|
|
1907
|
+
$mol_assert_equal(log, '12345');
|
|
1908
|
+
},
|
|
1909
|
+
'for-in'() {
|
|
1910
|
+
let log = '';
|
|
1911
|
+
for (let i in $mol_range2(i => i, () => 5)) {
|
|
1912
|
+
log += i;
|
|
1913
|
+
}
|
|
1914
|
+
$mol_assert_equal(log, '01234');
|
|
1915
|
+
},
|
|
1916
|
+
'forEach'() {
|
|
1917
|
+
let log = '';
|
|
1918
|
+
$mol_range2(i => i, () => 5).forEach(i => log += i);
|
|
1919
|
+
$mol_assert_equal(log, '01234');
|
|
1920
|
+
},
|
|
1921
|
+
'lazy concat'() {
|
|
1922
|
+
let calls1 = 0;
|
|
1923
|
+
let calls2 = 0;
|
|
1924
|
+
const list = $mol_range2(index => (++calls1, index), () => 5).concat([0, 1, 2, 3, 4], $mol_range2(index => (++calls2, index), () => 5));
|
|
1925
|
+
$mol_assert_ok(list instanceof Array);
|
|
1926
|
+
$mol_assert_equal(list.length, 15);
|
|
1927
|
+
$mol_assert_equal(list[0], 0);
|
|
1928
|
+
$mol_assert_equal(list[4], 4);
|
|
1929
|
+
$mol_assert_equal(list[5], 0);
|
|
1930
|
+
$mol_assert_equal(list[9], 4);
|
|
1931
|
+
$mol_assert_equal(list[10], 0);
|
|
1932
|
+
$mol_assert_equal(list[14], 4);
|
|
1933
|
+
$mol_assert_equal(list[15], undefined);
|
|
1934
|
+
$mol_assert_equal(calls1, 2);
|
|
1935
|
+
$mol_assert_equal(calls2, 2);
|
|
1936
|
+
},
|
|
1937
|
+
'filter'() {
|
|
1938
|
+
let calls = 0;
|
|
1939
|
+
const list = $mol_range2(index => (++calls, index), () => 10).filter(v => v % 2).slice(0, 3);
|
|
1940
|
+
$mol_assert_ok(list instanceof Array);
|
|
1941
|
+
$mol_assert_equal(list.length, 3);
|
|
1942
|
+
$mol_assert_equal(list[0], 1);
|
|
1943
|
+
$mol_assert_equal(list[2], 5);
|
|
1944
|
+
$mol_assert_equal(list[3], undefined);
|
|
1945
|
+
$mol_assert_equal(calls, 10);
|
|
1946
|
+
},
|
|
1947
|
+
'reverse'() {
|
|
1948
|
+
let calls = 0;
|
|
1949
|
+
const list = $mol_range2(index => (++calls, index), () => 10).toReversed().slice(0, 3);
|
|
1950
|
+
$mol_assert_ok(list instanceof Array);
|
|
1951
|
+
$mol_assert_equal(list.length, 3);
|
|
1952
|
+
$mol_assert_equal(list[0], 9);
|
|
1953
|
+
$mol_assert_equal(list[2], 7);
|
|
1954
|
+
$mol_assert_equal(list[3], undefined);
|
|
1955
|
+
$mol_assert_equal(calls, 2);
|
|
1956
|
+
},
|
|
1957
|
+
'reduce'() {
|
|
1958
|
+
let calls = 0;
|
|
1959
|
+
const list = $mol_range2().slice(1, 6);
|
|
1960
|
+
$mol_assert_equal(list.reduce((s, v) => s + v), 15);
|
|
1961
|
+
$mol_assert_equal(list.reduce((s, v) => s + v, 5), 20);
|
|
1962
|
+
},
|
|
1963
|
+
'lazy map'() {
|
|
1964
|
+
let calls1 = 0;
|
|
1965
|
+
let calls2 = 0;
|
|
1966
|
+
const source = $mol_range2(index => (++calls1, index), () => 5);
|
|
1967
|
+
const target = source.map((item, index, self) => {
|
|
1968
|
+
++calls2;
|
|
1969
|
+
$mol_assert_equal(source, self);
|
|
1970
|
+
return index + 10;
|
|
1971
|
+
}, () => 5);
|
|
1972
|
+
$mol_assert_ok(target instanceof Array);
|
|
1973
|
+
$mol_assert_equal(target.length, 5);
|
|
1974
|
+
$mol_assert_equal(target[0], 10);
|
|
1975
|
+
$mol_assert_equal(target[4], 14);
|
|
1976
|
+
$mol_assert_equal(target[5], undefined);
|
|
1977
|
+
$mol_assert_equal(calls1, 2);
|
|
1978
|
+
$mol_assert_equal(calls2, 2);
|
|
1979
|
+
},
|
|
1980
|
+
'lazy slice'() {
|
|
1981
|
+
let calls = 0;
|
|
1982
|
+
const list = $mol_range2(index => (++calls, index), () => 10).slice(3, 7);
|
|
1983
|
+
$mol_assert_ok(list instanceof Array);
|
|
1984
|
+
$mol_assert_equal(list.length, 4);
|
|
1985
|
+
$mol_assert_equal(list[0], 3);
|
|
1986
|
+
$mol_assert_equal(list[3], 6);
|
|
1987
|
+
$mol_assert_equal(list[4], undefined);
|
|
1988
|
+
$mol_assert_equal(calls, 2);
|
|
1989
|
+
},
|
|
1990
|
+
'lazy some'() {
|
|
1991
|
+
let calls = 0;
|
|
1992
|
+
$mol_assert_ok($mol_range2(index => (++calls, index), () => 5).some(v => v >= 2));
|
|
1993
|
+
$mol_assert_equal(calls, 3);
|
|
1994
|
+
$mol_assert_not($mol_range2(i => i, () => 0).some(v => true));
|
|
1995
|
+
$mol_assert_ok($mol_range2(i => i).some(v => v > 5));
|
|
1996
|
+
},
|
|
1997
|
+
'lazy every'() {
|
|
1998
|
+
let calls = 0;
|
|
1999
|
+
$mol_assert_not($mol_range2(index => (++calls, index), () => 5).every(v => v < 2));
|
|
2000
|
+
$mol_assert_equal(calls, 3);
|
|
2001
|
+
$mol_assert_ok($mol_range2(i => i, () => 0).every(v => false));
|
|
2002
|
+
$mol_assert_not($mol_range2(i => i).every(v => v < 5));
|
|
2003
|
+
},
|
|
2004
|
+
'lazyfy'() {
|
|
2005
|
+
let calls = 0;
|
|
2006
|
+
const list = new $mol_range2_array(...[0, 1, 2, 3, 4, 5]).map(i => (++calls, i + 10)).slice(2);
|
|
2007
|
+
$mol_assert_ok(list instanceof Array);
|
|
2008
|
+
$mol_assert_equal(list.length, 4);
|
|
2009
|
+
$mol_assert_equal(calls, 0);
|
|
2010
|
+
$mol_assert_equal(list[0], 12);
|
|
2011
|
+
$mol_assert_equal(list[3], 15);
|
|
2012
|
+
$mol_assert_equal(list[4], undefined);
|
|
2013
|
+
$mol_assert_equal(calls, 2);
|
|
2014
|
+
},
|
|
2015
|
+
'prevent modification'() {
|
|
2016
|
+
const list = $mol_range2(i => i, () => 5);
|
|
2017
|
+
$mol_assert_fail(() => list.push(4), TypeError);
|
|
2018
|
+
$mol_assert_fail(() => list.pop(), TypeError);
|
|
2019
|
+
$mol_assert_fail(() => list.unshift(4), TypeError);
|
|
2020
|
+
$mol_assert_fail(() => list.shift(), TypeError);
|
|
2021
|
+
$mol_assert_fail(() => list.splice(1, 2), TypeError);
|
|
2022
|
+
$mol_assert_fail(() => list[1] = 2, TypeError);
|
|
2023
|
+
$mol_assert_fail(() => list.reverse(), TypeError);
|
|
2024
|
+
$mol_assert_fail(() => list.sort(), TypeError);
|
|
2025
|
+
$mol_assert_equal(list.toString(), '0,1,2,3,4');
|
|
2026
|
+
}
|
|
2027
|
+
});
|
|
2028
|
+
})($ || ($ = {}));
|
|
2029
|
+
//mol/range2/range2.test.ts
|
|
2030
|
+
;
|
|
2031
|
+
"use strict";
|
|
2032
|
+
var $;
|
|
1741
2033
|
(function ($) {
|
|
1742
2034
|
const named = new WeakSet();
|
|
1743
2035
|
function $mol_func_name(func) {
|
|
@@ -1813,6 +2105,8 @@ var $;
|
|
|
1813
2105
|
$mol_assert_ok($mol_compare_deep([1, [2]], [1, [2]]));
|
|
1814
2106
|
$mol_assert_not($mol_compare_deep([1, 2], [1, 3]));
|
|
1815
2107
|
$mol_assert_not($mol_compare_deep([1, 2,], [1, 3, undefined]));
|
|
2108
|
+
$mol_assert_not($mol_compare_deep($mol_range2().slice(0, 0), new Array()));
|
|
2109
|
+
$mol_assert_not($mol_compare_deep($mol_range2(), $mol_range2()));
|
|
1816
2110
|
},
|
|
1817
2111
|
'Non POJO are different'() {
|
|
1818
2112
|
class Thing extends Object {
|