@x-oasis/shallow-array-equal 0.1.4 → 0.1.7

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/README.md CHANGED
@@ -16,4 +16,10 @@ import shallowArrayEqual from '@x-oasis/shallow-array-equal'
16
16
 
17
17
  ```bash
18
18
  $ pnpm test
19
+ ```
20
+
21
+ ## Simple Example
22
+
23
+ ```ts
24
+
19
25
  ```
package/dist/index.d.ts CHANGED
@@ -1,2 +1,7 @@
1
- declare const _default: (a: Array<any>, b: Array<any>) => boolean;
1
+ declare type Comparison = (a: any, b: any) => boolean;
2
+ export declare function getReason(): {
3
+ source: any;
4
+ target: any;
5
+ };
6
+ declare const _default: (a: Array<any>, b: Array<any>, comparison?: Comparison) => boolean;
2
7
  export default _default;
@@ -2,15 +2,42 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = (function (a, b) {
5
+ var defaultComparison = function defaultComparison(a, b) {
6
+ return a === b;
7
+ };
8
+ var createReason = function createReason() {
9
+ return {
10
+ source: null,
11
+ target: null
12
+ };
13
+ };
14
+ var reason = /*#__PURE__*/createReason();
15
+ function getReason() {
16
+ return reason;
17
+ }
18
+ var index = (function (a, b, comparison) {
19
+ if (comparison === void 0) {
20
+ comparison = defaultComparison;
21
+ }
6
22
  if (!Array.isArray(a) || !Array.isArray(b)) return false;
7
23
  if (a.length !== b.length) return false;
8
24
  var len = a.length;
9
25
  for (var index = 0; index < len; index++) {
10
- if (a[index] !== b[index]) return false;
26
+ var source = a[index];
27
+ var target = b[index];
28
+ var falsy = comparison(a[index], b[index]);
29
+ if (!falsy) {
30
+ if (reason) {
31
+ reason.source = source;
32
+ reason.target = target;
33
+ }
34
+ return false;
35
+ }
11
36
  }
37
+ reason = createReason();
12
38
  return true;
13
39
  });
14
40
 
15
41
  exports.default = index;
42
+ exports.getReason = getReason;
16
43
  //# sourceMappingURL=shallow-array-equal.cjs.development.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shallow-array-equal.cjs.development.js","sources":["../src/index.ts"],"sourcesContent":["export default (a: Array<any>, b: Array<any>) => {\n if (!Array.isArray(a) || !Array.isArray(b)) return false;\n if (a.length !== b.length) return false;\n const len = a.length;\n for (let index = 0; index < len; index++) {\n if (a[index] !== b[index]) return false;\n }\n\n return true;\n};\n"],"names":["a","b","Array","isArray","length","len","index"],"mappings":";;;;AAAA,aAAe,UAACA,CAAa,EAAEC,CAAa;EAC1C,IAAI,CAACC,KAAK,CAACC,OAAO,CAACH,CAAC,CAAC,IAAI,CAACE,KAAK,CAACC,OAAO,CAACF,CAAC,CAAC,EAAE,OAAO,KAAK;EACxD,IAAID,CAAC,CAACI,MAAM,KAAKH,CAAC,CAACG,MAAM,EAAE,OAAO,KAAK;EACvC,IAAMC,GAAG,GAAGL,CAAC,CAACI,MAAM;EACpB,KAAK,IAAIE,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGD,GAAG,EAAEC,KAAK,EAAE,EAAE;IACxC,IAAIN,CAAC,CAACM,KAAK,CAAC,KAAKL,CAAC,CAACK,KAAK,CAAC,EAAE,OAAO,KAAK;;EAGzC,OAAO,IAAI;AACb,CAAC;;;;"}
1
+ {"version":3,"file":"shallow-array-equal.cjs.development.js","sources":["../src/index.ts"],"sourcesContent":["type Comparison = (a: any, b: any) => boolean;\n\nconst defaultComparison = (a, b) => a === b;\n\nconst createReason = () => ({\n source: null,\n target: null,\n});\n\nlet reason = createReason();\n\nexport function getReason() {\n return reason;\n}\n\nexport default (\n a: Array<any>,\n b: Array<any>,\n comparison: Comparison = defaultComparison\n) => {\n if (!Array.isArray(a) || !Array.isArray(b)) return false;\n if (a.length !== b.length) return false;\n const len = a.length;\n for (let index = 0; index < len; index++) {\n const source = a[index];\n const target = b[index];\n const falsy = comparison(a[index], b[index]);\n if (!falsy) {\n if (reason) {\n reason.source = source;\n reason.target = target;\n }\n return false;\n }\n }\n\n reason = createReason();\n\n return true;\n};\n"],"names":["defaultComparison","a","b","createReason","source","target","reason","getReason","comparison","Array","isArray","length","len","index","falsy"],"mappings":";;;;AAEA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,CAAC,EAAEC,CAAC;EAAA,OAAKD,CAAC,KAAKC,CAAC;AAAA;AAE3C,IAAMC,YAAY,GAAG,SAAfA,YAAYA;EAAA,OAAU;IAC1BC,MAAM,EAAE,IAAI;IACZC,MAAM,EAAE;GACT;AAAA,CAAC;AAEF,IAAIC,MAAM,gBAAGH,YAAY,EAAE;SAEXI,SAASA;EACvB,OAAOD,MAAM;AACf;AAEA,aAAe,UACbL,CAAa,EACbC,CAAa,EACbM;MAAAA;IAAAA,aAAyBR,iBAAiB;;EAE1C,IAAI,CAACS,KAAK,CAACC,OAAO,CAACT,CAAC,CAAC,IAAI,CAACQ,KAAK,CAACC,OAAO,CAACR,CAAC,CAAC,EAAE,OAAO,KAAK;EACxD,IAAID,CAAC,CAACU,MAAM,KAAKT,CAAC,CAACS,MAAM,EAAE,OAAO,KAAK;EACvC,IAAMC,GAAG,GAAGX,CAAC,CAACU,MAAM;EACpB,KAAK,IAAIE,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGD,GAAG,EAAEC,KAAK,EAAE,EAAE;IACxC,IAAMT,MAAM,GAAGH,CAAC,CAACY,KAAK,CAAC;IACvB,IAAMR,MAAM,GAAGH,CAAC,CAACW,KAAK,CAAC;IACvB,IAAMC,KAAK,GAAGN,UAAU,CAACP,CAAC,CAACY,KAAK,CAAC,EAAEX,CAAC,CAACW,KAAK,CAAC,CAAC;IAC5C,IAAI,CAACC,KAAK,EAAE;MACV,IAAIR,MAAM,EAAE;QACVA,MAAM,CAACF,MAAM,GAAGA,MAAM;QACtBE,MAAM,CAACD,MAAM,GAAGA,MAAM;;MAExB,OAAO,KAAK;;;EAIhBC,MAAM,GAAGH,YAAY,EAAE;EAEvB,OAAO,IAAI;AACb,CAAC;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function(r,e){if(!Array.isArray(r)||!Array.isArray(e))return!1;if(r.length!==e.length)return!1;for(var t=r.length,n=0;n<t;n++)if(r[n]!==e[n])return!1;return!0};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=function(r,e){return r===e},e=function(){return{source:null,target:null}}();exports.default=function(t,n,u){if(void 0===u&&(u=r),!Array.isArray(t)||!Array.isArray(n))return!1;if(t.length!==n.length)return!1;for(var o=t.length,l=0;l<o;l++){var a=t[l],i=n[l];if(!u(t[l],n[l]))return e&&(e.source=a,e.target=i),!1}return e={source:null,target:null},!0},exports.getReason=function(){return e};
2
2
  //# sourceMappingURL=shallow-array-equal.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shallow-array-equal.cjs.production.min.js","sources":["../src/index.ts"],"sourcesContent":["export default (a: Array<any>, b: Array<any>) => {\n if (!Array.isArray(a) || !Array.isArray(b)) return false;\n if (a.length !== b.length) return false;\n const len = a.length;\n for (let index = 0; index < len; index++) {\n if (a[index] !== b[index]) return false;\n }\n\n return true;\n};\n"],"names":["a","b","Array","isArray","length","len","index"],"mappings":"6FAAgBA,EAAeC,GAC7B,IAAKC,MAAMC,QAAQH,KAAOE,MAAMC,QAAQF,GAAI,OAAO,EACnD,GAAID,EAAEI,SAAWH,EAAEG,OAAQ,OAAO,EAElC,IADA,IAAMC,EAAML,EAAEI,OACLE,EAAQ,EAAGA,EAAQD,EAAKC,IAC/B,GAAIN,EAAEM,KAAWL,EAAEK,GAAQ,OAAO,EAGpC,OAAO"}
1
+ {"version":3,"file":"shallow-array-equal.cjs.production.min.js","sources":["../src/index.ts"],"sourcesContent":["type Comparison = (a: any, b: any) => boolean;\n\nconst defaultComparison = (a, b) => a === b;\n\nconst createReason = () => ({\n source: null,\n target: null,\n});\n\nlet reason = createReason();\n\nexport function getReason() {\n return reason;\n}\n\nexport default (\n a: Array<any>,\n b: Array<any>,\n comparison: Comparison = defaultComparison\n) => {\n if (!Array.isArray(a) || !Array.isArray(b)) return false;\n if (a.length !== b.length) return false;\n const len = a.length;\n for (let index = 0; index < len; index++) {\n const source = a[index];\n const target = b[index];\n const falsy = comparison(a[index], b[index]);\n if (!falsy) {\n if (reason) {\n reason.source = source;\n reason.target = target;\n }\n return false;\n }\n }\n\n reason = createReason();\n\n return true;\n};\n"],"names":["defaultComparison","a","b","reason","source","target","createReason","comparison","Array","isArray","length","len","index"],"mappings":"oEAEA,IAAMA,EAAoB,SAACC,EAAGC,GAAC,OAAKD,IAAMC,GAOtCC,EALiB,WAAH,MAAU,CAC1BC,OAAQ,KACRC,OAAQ,MAGGC,4BAOXL,EACAC,EACAK,GAEA,YAFAA,IAAAA,EAAyBP,IAEpBQ,MAAMC,QAAQR,KAAOO,MAAMC,QAAQP,GAAI,OAAO,EACnD,GAAID,EAAES,SAAWR,EAAEQ,OAAQ,OAAO,EAElC,IADA,IAAMC,EAAMV,EAAES,OACLE,EAAQ,EAAGA,EAAQD,EAAKC,IAAS,CACxC,IAAMR,EAASH,EAAEW,GACXP,EAASH,EAAEU,GAEjB,IADcL,EAAWN,EAAEW,GAAQV,EAAEU,IAMnC,OAJIT,IACFA,EAAOC,OAASA,EAChBD,EAAOE,OAASA,IAEX,EAMX,OAFAF,EAhC0B,CAC1BC,OAAQ,KACRC,OAAQ,OAgCD,gCA1BP,OAAOF"}
@@ -1,12 +1,39 @@
1
- var index = (function (a, b) {
1
+ var defaultComparison = function defaultComparison(a, b) {
2
+ return a === b;
3
+ };
4
+ var createReason = function createReason() {
5
+ return {
6
+ source: null,
7
+ target: null
8
+ };
9
+ };
10
+ var reason = /*#__PURE__*/createReason();
11
+ function getReason() {
12
+ return reason;
13
+ }
14
+ var index = (function (a, b, comparison) {
15
+ if (comparison === void 0) {
16
+ comparison = defaultComparison;
17
+ }
2
18
  if (!Array.isArray(a) || !Array.isArray(b)) return false;
3
19
  if (a.length !== b.length) return false;
4
20
  var len = a.length;
5
21
  for (var index = 0; index < len; index++) {
6
- if (a[index] !== b[index]) return false;
22
+ var source = a[index];
23
+ var target = b[index];
24
+ var falsy = comparison(a[index], b[index]);
25
+ if (!falsy) {
26
+ if (reason) {
27
+ reason.source = source;
28
+ reason.target = target;
29
+ }
30
+ return false;
31
+ }
7
32
  }
33
+ reason = createReason();
8
34
  return true;
9
35
  });
10
36
 
11
37
  export default index;
38
+ export { getReason };
12
39
  //# sourceMappingURL=shallow-array-equal.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shallow-array-equal.esm.js","sources":["../src/index.ts"],"sourcesContent":["export default (a: Array<any>, b: Array<any>) => {\n if (!Array.isArray(a) || !Array.isArray(b)) return false;\n if (a.length !== b.length) return false;\n const len = a.length;\n for (let index = 0; index < len; index++) {\n if (a[index] !== b[index]) return false;\n }\n\n return true;\n};\n"],"names":["a","b","Array","isArray","length","len","index"],"mappings":"AAAA,aAAe,UAACA,CAAa,EAAEC,CAAa;EAC1C,IAAI,CAACC,KAAK,CAACC,OAAO,CAACH,CAAC,CAAC,IAAI,CAACE,KAAK,CAACC,OAAO,CAACF,CAAC,CAAC,EAAE,OAAO,KAAK;EACxD,IAAID,CAAC,CAACI,MAAM,KAAKH,CAAC,CAACG,MAAM,EAAE,OAAO,KAAK;EACvC,IAAMC,GAAG,GAAGL,CAAC,CAACI,MAAM;EACpB,KAAK,IAAIE,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGD,GAAG,EAAEC,KAAK,EAAE,EAAE;IACxC,IAAIN,CAAC,CAACM,KAAK,CAAC,KAAKL,CAAC,CAACK,KAAK,CAAC,EAAE,OAAO,KAAK;;EAGzC,OAAO,IAAI;AACb,CAAC;;;;"}
1
+ {"version":3,"file":"shallow-array-equal.esm.js","sources":["../src/index.ts"],"sourcesContent":["type Comparison = (a: any, b: any) => boolean;\n\nconst defaultComparison = (a, b) => a === b;\n\nconst createReason = () => ({\n source: null,\n target: null,\n});\n\nlet reason = createReason();\n\nexport function getReason() {\n return reason;\n}\n\nexport default (\n a: Array<any>,\n b: Array<any>,\n comparison: Comparison = defaultComparison\n) => {\n if (!Array.isArray(a) || !Array.isArray(b)) return false;\n if (a.length !== b.length) return false;\n const len = a.length;\n for (let index = 0; index < len; index++) {\n const source = a[index];\n const target = b[index];\n const falsy = comparison(a[index], b[index]);\n if (!falsy) {\n if (reason) {\n reason.source = source;\n reason.target = target;\n }\n return false;\n }\n }\n\n reason = createReason();\n\n return true;\n};\n"],"names":["defaultComparison","a","b","createReason","source","target","reason","getReason","comparison","Array","isArray","length","len","index","falsy"],"mappings":"AAEA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,CAAC,EAAEC,CAAC;EAAA,OAAKD,CAAC,KAAKC,CAAC;AAAA;AAE3C,IAAMC,YAAY,GAAG,SAAfA,YAAYA;EAAA,OAAU;IAC1BC,MAAM,EAAE,IAAI;IACZC,MAAM,EAAE;GACT;AAAA,CAAC;AAEF,IAAIC,MAAM,gBAAGH,YAAY,EAAE;SAEXI,SAASA;EACvB,OAAOD,MAAM;AACf;AAEA,aAAe,UACbL,CAAa,EACbC,CAAa,EACbM;MAAAA;IAAAA,aAAyBR,iBAAiB;;EAE1C,IAAI,CAACS,KAAK,CAACC,OAAO,CAACT,CAAC,CAAC,IAAI,CAACQ,KAAK,CAACC,OAAO,CAACR,CAAC,CAAC,EAAE,OAAO,KAAK;EACxD,IAAID,CAAC,CAACU,MAAM,KAAKT,CAAC,CAACS,MAAM,EAAE,OAAO,KAAK;EACvC,IAAMC,GAAG,GAAGX,CAAC,CAACU,MAAM;EACpB,KAAK,IAAIE,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGD,GAAG,EAAEC,KAAK,EAAE,EAAE;IACxC,IAAMT,MAAM,GAAGH,CAAC,CAACY,KAAK,CAAC;IACvB,IAAMR,MAAM,GAAGH,CAAC,CAACW,KAAK,CAAC;IACvB,IAAMC,KAAK,GAAGN,UAAU,CAACP,CAAC,CAACY,KAAK,CAAC,EAAEX,CAAC,CAACW,KAAK,CAAC,CAAC;IAC5C,IAAI,CAACC,KAAK,EAAE;MACV,IAAIR,MAAM,EAAE;QACVA,MAAM,CAACF,MAAM,GAAGA,MAAM;QACtBE,MAAM,CAACD,MAAM,GAAGA,MAAM;;MAExB,OAAO,KAAK;;;EAIhBC,MAAM,GAAGH,YAAY,EAAE;EAEvB,OAAO,IAAI;AACb,CAAC;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@x-oasis/shallow-array-equal",
3
- "version": "0.1.4",
3
+ "version": "0.1.7",
4
4
  "description": "shallow array equal function",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -1,10 +1,40 @@
1
- export default (a: Array<any>, b: Array<any>) => {
1
+ type Comparison = (a: any, b: any) => boolean;
2
+
3
+ const defaultComparison = (a, b) => a === b;
4
+
5
+ const createReason = () => ({
6
+ source: null,
7
+ target: null,
8
+ });
9
+
10
+ let reason = createReason();
11
+
12
+ export function getReason() {
13
+ return reason;
14
+ }
15
+
16
+ export default (
17
+ a: Array<any>,
18
+ b: Array<any>,
19
+ comparison: Comparison = defaultComparison
20
+ ) => {
2
21
  if (!Array.isArray(a) || !Array.isArray(b)) return false;
3
22
  if (a.length !== b.length) return false;
4
23
  const len = a.length;
5
24
  for (let index = 0; index < len; index++) {
6
- if (a[index] !== b[index]) return false;
25
+ const source = a[index];
26
+ const target = b[index];
27
+ const falsy = comparison(a[index], b[index]);
28
+ if (!falsy) {
29
+ if (reason) {
30
+ reason.source = source;
31
+ reason.target = target;
32
+ }
33
+ return false;
34
+ }
7
35
  }
8
36
 
37
+ reason = createReason();
38
+
9
39
  return true;
10
40
  };
package/test/test.spec.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { expect, test } from 'vitest'
1
+ import { expect, test } from 'vitest';
2
+ import shallowArrayEqual from '../src';
2
3
 
3
- test('vitest', async () => {
4
- expect('vitest').toBe('vitest')
5
- })
4
+ test('vitest', () => {
5
+ expect(shallowArrayEqual([], [])).toBe(true);
6
+ });