map-transform 0.4.0-alpha.9 → 0.4.0-beta.0

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.
Files changed (106) hide show
  1. package/README.md +186 -40
  2. package/dist/functions/compare.d.ts +2 -1
  3. package/dist/functions/compare.js +26 -5
  4. package/dist/functions/compare.js.map +1 -1
  5. package/dist/functions/explode.js +4 -3
  6. package/dist/functions/explode.js.map +1 -1
  7. package/dist/functions/index.d.ts +4 -0
  8. package/dist/functions/index.js +4 -0
  9. package/dist/functions/index.js.map +1 -1
  10. package/dist/functions/indexFn.d.ts +2 -0
  11. package/dist/functions/indexFn.js +9 -0
  12. package/dist/functions/indexFn.js.map +1 -0
  13. package/dist/functions/joinSplit.d.ts +4 -4
  14. package/dist/functions/joinSplit.js +12 -4
  15. package/dist/functions/joinSplit.js.map +1 -1
  16. package/dist/functions/map.js +5 -4
  17. package/dist/functions/map.js.map +1 -1
  18. package/dist/functions/not.js +1 -1
  19. package/dist/functions/not.js.map +1 -1
  20. package/dist/functions/sort.d.ts +7 -0
  21. package/dist/functions/sort.js +33 -0
  22. package/dist/functions/sort.js.map +1 -0
  23. package/dist/functions/validate.js +2 -2
  24. package/dist/functions/validate.js.map +1 -1
  25. package/dist/functions/value.js +2 -2
  26. package/dist/functions/value.js.map +1 -1
  27. package/dist/index.d.ts +4 -1
  28. package/dist/index.js +8 -2
  29. package/dist/index.js.map +1 -1
  30. package/dist/operations/alt.d.ts +1 -1
  31. package/dist/operations/alt.js +28 -6
  32. package/dist/operations/alt.js.map +1 -1
  33. package/dist/operations/apply.js +10 -5
  34. package/dist/operations/apply.js.map +1 -1
  35. package/dist/operations/concat.js +9 -5
  36. package/dist/operations/concat.js.map +1 -1
  37. package/dist/operations/directionals.js +7 -6
  38. package/dist/operations/directionals.js.map +1 -1
  39. package/dist/operations/filter.js +5 -6
  40. package/dist/operations/filter.js.map +1 -1
  41. package/dist/operations/fixed.js +2 -4
  42. package/dist/operations/fixed.js.map +1 -1
  43. package/dist/operations/getSet.d.ts +3 -3
  44. package/dist/operations/getSet.js +139 -30
  45. package/dist/operations/getSet.js.map +1 -1
  46. package/dist/operations/ifelse.d.ts +1 -1
  47. package/dist/operations/ifelse.js +21 -10
  48. package/dist/operations/ifelse.js.map +1 -1
  49. package/dist/operations/iterate.d.ts +2 -1
  50. package/dist/operations/iterate.js +14 -10
  51. package/dist/operations/iterate.js.map +1 -1
  52. package/dist/operations/logical.d.ts +3 -0
  53. package/dist/operations/logical.js +17 -0
  54. package/dist/operations/logical.js.map +1 -0
  55. package/dist/operations/lookup.js +9 -5
  56. package/dist/operations/lookup.js.map +1 -1
  57. package/dist/operations/merge.js +9 -7
  58. package/dist/operations/merge.js.map +1 -1
  59. package/dist/operations/modify.js +13 -6
  60. package/dist/operations/modify.js.map +1 -1
  61. package/dist/operations/pipe.js +14 -16
  62. package/dist/operations/pipe.js.map +1 -1
  63. package/dist/operations/plug.js +1 -1
  64. package/dist/operations/plug.js.map +1 -1
  65. package/dist/operations/props.d.ts +2 -0
  66. package/dist/operations/props.js +114 -0
  67. package/dist/operations/props.js.map +1 -0
  68. package/dist/operations/root.js +3 -5
  69. package/dist/operations/root.js.map +1 -1
  70. package/dist/operations/transform.js +4 -2
  71. package/dist/operations/transform.js.map +1 -1
  72. package/dist/operations/value.js +2 -4
  73. package/dist/operations/value.js.map +1 -1
  74. package/dist/types.d.ts +39 -12
  75. package/dist/utils/array.d.ts +1 -0
  76. package/dist/utils/array.js +3 -1
  77. package/dist/utils/array.js.map +1 -1
  78. package/dist/utils/definitionHelpers.d.ts +3 -1
  79. package/dist/utils/definitionHelpers.js +72 -17
  80. package/dist/utils/definitionHelpers.js.map +1 -1
  81. package/dist/utils/escape.d.ts +2 -0
  82. package/dist/utils/escape.js +8 -0
  83. package/dist/utils/escape.js.map +1 -0
  84. package/dist/utils/is.d.ts +2 -0
  85. package/dist/utils/is.js +5 -1
  86. package/dist/utils/is.js.map +1 -1
  87. package/dist/utils/pathGetter.js +12 -3
  88. package/dist/utils/pathGetter.js.map +1 -1
  89. package/dist/utils/pathSetter.d.ts +1 -0
  90. package/dist/utils/pathSetter.js +16 -6
  91. package/dist/utils/pathSetter.js.map +1 -1
  92. package/dist/utils/stateHelpers.d.ts +30 -6
  93. package/dist/utils/stateHelpers.js +30 -14
  94. package/dist/utils/stateHelpers.js.map +1 -1
  95. package/dist/utils/xor.d.ts +1 -0
  96. package/dist/utils/xor.js +7 -0
  97. package/dist/utils/xor.js.map +1 -0
  98. package/package.json +6 -6
  99. package/ava-dist.config.cjs +0 -3
  100. package/ava.config.cjs +0 -5
  101. package/dist/functions/join.d.ts +0 -7
  102. package/dist/functions/join.js +0 -12
  103. package/dist/functions/join.js.map +0 -1
  104. package/dist/operations/mutate.d.ts +0 -2
  105. package/dist/operations/mutate.js +0 -80
  106. package/dist/operations/mutate.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/functions/map.ts"],"names":[],"mappings":";;AAAA,kCAAkC;AAOlC,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAA2B,EAAE,CAClE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC;IACrD,IAAI,KAAK,IAAI;IACb,IAAI,KAAK,SAAS,CAAA;AAEpB,SAAS,cAAc,CACrB,KAAsB,EACtB,UAAsB,EACtB,SAAgB;IAGhB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAA;IAClE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACjD,CAAC;AAED,SAAS,SAAS,CAAC,IAAa,EAAE,UAAsB,EAAE,GAAY;IACpE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAU,CAAA;IACtC,OAAO,MAAM,CAAC,CAAC,IAAa,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QACvD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;QAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;YAC5D,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;SACnD;QACD,OAAO,KAAK,CAAA;IACd,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC;AAED,SAAS,iBAAiB,CACxB,UAAgC,EAChC,YAA2B;IAE3B,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,OAAO,YAAY,IAAI,YAAY,CAAC,UAAU,CAAC,CAAA;KAChD;SAAM;QACL,OAAO,UAAU,CAAA;KAClB;AACH,CAAC;AAED,SAAwB,GAAG,CACzB,QAAkB,EAClB,OAAyC;IAEzC,MAAM,UAAU,GAAG,iBAAiB,CAClC,QAAQ,CAAC,UAAU,EACnB,OAAO,IAAI,OAAO,CAAC,YAAY,CAChC,CAAA;IACD,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,GAAG,EAAE,CAAC,SAAS,CAAA;KACvB;IACD,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACvB,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;QACvB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;QAC9C,OAAO,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IACrC,CAAC,CAAA;AACH,CAAC;AAhBD,sBAgBC"}
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/functions/map.ts"],"names":[],"mappings":";;AAAA,kCAAkC;AAClC,4CAA4D;AAO5D,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAA2B,EAAE,CAClE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC;IACrD,IAAI,KAAK,IAAI;IACb,IAAI,KAAK,SAAS,CAAA;AAEpB,SAAS,cAAc,CACrB,KAAsB,EACtB,UAAsB,EACtB,SAAgB;IAGhB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAA;IAClE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACjD,CAAC;AAED,SAAS,SAAS,CAAC,IAAa,EAAE,UAAsB,EAAE,GAAY;IACpE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAU,CAAA;IACtC,OAAO,MAAM,CAAC,CAAC,IAAa,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QACvD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;QAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;YAC5D,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;SACnD;QACD,OAAO,KAAK,CAAA;IACd,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC;AAED,SAAS,iBAAiB,CACxB,UAAgC,EAChC,YAA2B;IAE3B,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,OAAO,YAAY,IAAI,YAAY,CAAC,UAAU,CAAC,CAAA;KAChD;SAAM;QACL,OAAO,UAAU,CAAA;KAClB;AACH,CAAC;AAED,SAAwB,GAAG,CACzB,QAAkB,EAClB,OAAyC;IAEzC,MAAM,UAAU,GAAG,iBAAiB,CAClC,QAAQ,CAAC,UAAU,EACnB,OAAO,IAAI,OAAO,CAAC,YAAY,CAChC,CAAA;IACD,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,GAAG,EAAE,CAAC,SAAS,CAAA;KACvB;IACD,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,KAAK,CAAA;QAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAA,oBAAW,EAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;QAC3D,OAAO,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,sBAAa,EAAC,KAAK,CAAC,CAAA;IACpD,CAAC,CAAA;AACH,CAAC;AAhBD,sBAgBC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  function not(fn) {
4
- return (value, context) => !fn(value, context);
4
+ return (value, state) => !fn(value, state);
5
5
  }
6
6
  exports.default = not;
7
7
  //# sourceMappingURL=not.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"not.js","sourceRoot":"","sources":["../../src/functions/not.ts"],"names":[],"mappings":";;AAEA,SAAwB,GAAG,CAAC,EAAc;IACxC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAChD,CAAC;AAFD,sBAEC"}
1
+ {"version":3,"file":"not.js","sourceRoot":"","sources":["../../src/functions/not.ts"],"names":[],"mappings":";;AAEA,SAAwB,GAAG,CAAC,EAAc;IACxC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC5C,CAAC;AAFD,sBAEC"}
@@ -0,0 +1,7 @@
1
+ import { Path, DataMapper } from '../types';
2
+ interface Operands {
3
+ asc?: boolean;
4
+ path?: Path;
5
+ }
6
+ export default function template(operands: Operands): DataMapper;
7
+ export {};
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const pathGetter_1 = require("../utils/pathGetter");
4
+ const functional_1 = require("../utils/functional");
5
+ const compare = (direction, getFn) => function compare(valueA, valueB) {
6
+ const a = getFn(valueA);
7
+ const b = getFn(valueB);
8
+ if (typeof a === 'number' && typeof b === 'number') {
9
+ return (a - b) * direction;
10
+ }
11
+ else if (a instanceof Date && b instanceof Date) {
12
+ return (a.getTime() - b.getTime()) * direction;
13
+ }
14
+ else if (a === undefined || a === null || b === undefined || b === null) {
15
+ return a === undefined || a === null ? 1 : -1;
16
+ }
17
+ else {
18
+ const strA = String(a);
19
+ const strB = String(b);
20
+ return strA === strB ? 0 : strA > strB ? 1 * direction : -1 * direction;
21
+ }
22
+ };
23
+ function template(operands) {
24
+ const direction = operands?.asc === false ? -1 : 1;
25
+ const getFn = operands?.path ? (0, pathGetter_1.default)(operands.path) : functional_1.identity;
26
+ return (data) => {
27
+ return Array.isArray(data)
28
+ ? data.slice().sort(compare(direction, getFn))
29
+ : data;
30
+ };
31
+ }
32
+ exports.default = template;
33
+ //# sourceMappingURL=sort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../src/functions/sort.ts"],"names":[],"mappings":";;AACA,oDAAwC;AACxC,oDAA8C;AAO9C,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,KAAiC,EAAE,EAAE,CACvE,SAAS,OAAO,CAAC,MAAe,EAAE,MAAe;IAC/C,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IACvB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IACvB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QAClD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAA;KAC3B;SAAM,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;QACjD,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAA;KAC/C;SAAM,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,EAAE;QACzE,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAC9C;SAAM;QACL,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACtB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACtB,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;KACxE;AACH,CAAC,CAAA;AAEH,SAAwB,QAAQ,CAAC,QAAkB;IACjD,MAAM,SAAS,GAAG,QAAQ,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,IAAA,oBAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAQ,CAAA;IAE/D,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAA;IACV,CAAC,CAAA;AACH,CAAC;AATD,2BASC"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const Ajv = require("ajv");
3
+ const ajv_1 = require("ajv");
4
4
  const pathGetter_1 = require("../utils/pathGetter");
5
- const ajv = new Ajv();
5
+ const ajv = new ajv_1.default();
6
6
  function validate(path, schema) {
7
7
  const getFn = (0, pathGetter_1.default)(path);
8
8
  const validate = ajv.compile(schema);
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/functions/validate.ts"],"names":[],"mappings":";;AAAA,2BAA2B;AAE3B,oDAAwC;AAExC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;AAErB,SAAwB,QAAQ,CAC9B,IAAU,EACV,MAAyC;IAEzC,MAAM,KAAK,GAAG,IAAA,oBAAM,EAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAEpC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAY,CAAA;AACnD,CAAC;AARD,2BAQC"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/functions/validate.ts"],"names":[],"mappings":";;AAAA,6BAAqB;AAErB,oDAAwC;AAExC,MAAM,GAAG,GAAG,IAAI,aAAG,EAAE,CAAA;AAErB,SAAwB,QAAQ,CAC9B,IAAU,EACV,MAAyC;IAEzC,MAAM,KAAK,GAAG,IAAA,oBAAM,EAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAEpC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAY,CAAA;AACnD,CAAC;AARD,2BAQC"}
@@ -9,12 +9,12 @@ const extractValue = (value) => {
9
9
  exports.extractValue = extractValue;
10
10
  function value(operands) {
11
11
  const value = (0, exports.extractValue)(operands);
12
- return (_data, context) => (context.onlyMappedValues ? undefined : value);
12
+ return (_data, state) => (state.onlyMapped ? undefined : value);
13
13
  }
14
14
  exports.value = value;
15
15
  function fixed(operands) {
16
16
  const value = (0, exports.extractValue)(operands);
17
- return (_data, _context) => value;
17
+ return (_data, _state) => value;
18
18
  }
19
19
  exports.fixed = fixed;
20
20
  //# sourceMappingURL=value.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"value.js","sourceRoot":"","sources":["../../src/functions/value.ts"],"names":[],"mappings":";;;AAOA,MAAM,SAAS,GAAG,CAAC,KAAc,EAAoB,EAAE,CACrD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAA;AAEtC,MAAM,YAAY,GAAG,CAAC,KAAc,EAAO,EAAE;IAClD,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;IAClD,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;AAChD,CAAC,CAAA;AAHY,QAAA,YAAY,gBAGxB;AAED,SAAgB,KAAK,CAAC,QAAiB;IACrC,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAA;IACpC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AAC3E,CAAC;AAHD,sBAGC;AAED,SAAgB,KAAK,CAAC,QAAiB;IACrC,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAA;IACpC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAA;AACnC,CAAC;AAHD,sBAGC"}
1
+ {"version":3,"file":"value.js","sourceRoot":"","sources":["../../src/functions/value.ts"],"names":[],"mappings":";;;AAOA,MAAM,SAAS,GAAG,CAAC,KAAc,EAAoB,EAAE,CACrD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAA;AAEtC,MAAM,YAAY,GAAG,CAAC,KAAc,EAAO,EAAE;IAClD,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;IAClD,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;AAChD,CAAC,CAAA;AAHY,QAAA,YAAY,gBAGxB;AAED,SAAgB,KAAK,CAAC,QAAiB;IACrC,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAA;IACpC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AACjE,CAAC;AAHD,sBAGC;AAED,SAAgB,KAAK,CAAC,QAAiB;IACrC,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAA;IACpC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAA;AACjC,CAAC;AAHD,sBAGC"}
package/dist/index.d.ts CHANGED
@@ -19,5 +19,8 @@ export { fwd, rev, divide } from './operations/directionals';
19
19
  export { default as merge } from './operations/merge';
20
20
  export { default as modify } from './operations/modify';
21
21
  export { iterate, functions };
22
- export { CustomFunction, DataMapper, MapDefinition, MapObject, MapPipe, MapTransform, Dictionary, Dictionaries, } from './types';
22
+ export { CustomFunction, DataMapper, MapDefinition, MapObject, MapPipe, MapTransform, Dictionary, Dictionaries, OperationObject, TransformObject, FilterObject, ApplyObject, AltObject, } from './types';
23
+ export { default as pathGetter } from './utils/pathGetter';
24
+ export { default as pathSetter } from './utils/pathSetter';
23
25
  export declare function mapTransform(def: MapDefinition, options?: Options): MapTransform;
26
+ export default mapTransform;
package/dist/index.js CHANGED
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapTransform = exports.functions = exports.iterate = exports.modify = exports.merge = exports.divide = exports.rev = exports.fwd = exports.ifelse = exports.filter = exports.transform = exports.lookup = exports.plug = exports.not = exports.validate = exports.concat = exports.fixed = exports.value = exports.apply = exports.alt = exports.root = exports.set = exports.get = void 0;
3
+ exports.mapTransform = exports.pathSetter = exports.pathGetter = exports.functions = exports.iterate = exports.modify = exports.merge = exports.divide = exports.rev = exports.fwd = exports.ifelse = exports.filter = exports.transform = exports.lookup = exports.plug = exports.not = exports.validate = exports.concat = exports.fixed = exports.value = exports.apply = exports.alt = exports.root = exports.set = exports.get = void 0;
4
4
  const definitionHelpers_1 = require("./utils/definitionHelpers");
5
5
  const stateHelpers_1 = require("./utils/stateHelpers");
6
6
  const functions_1 = require("./functions");
7
7
  exports.functions = functions_1.default;
8
8
  const iterate_1 = require("./operations/iterate");
9
9
  exports.iterate = iterate_1.default;
10
+ const functional_1 = require("./utils/functional");
10
11
  var getSet_1 = require("./operations/getSet");
11
12
  Object.defineProperty(exports, "get", { enumerable: true, get: function () { return getSet_1.get; } });
12
13
  Object.defineProperty(exports, "set", { enumerable: true, get: function () { return getSet_1.set; } });
@@ -44,6 +45,10 @@ var merge_1 = require("./operations/merge");
44
45
  Object.defineProperty(exports, "merge", { enumerable: true, get: function () { return merge_1.default; } });
45
46
  var modify_1 = require("./operations/modify");
46
47
  Object.defineProperty(exports, "modify", { enumerable: true, get: function () { return modify_1.default; } });
48
+ var pathGetter_1 = require("./utils/pathGetter");
49
+ Object.defineProperty(exports, "pathGetter", { enumerable: true, get: function () { return pathGetter_1.default; } });
50
+ var pathSetter_1 = require("./utils/pathSetter");
51
+ Object.defineProperty(exports, "pathSetter", { enumerable: true, get: function () { return pathSetter_1.default; } });
47
52
  const composeMapFunction = (mapFn, initialState) => {
48
53
  const createState = (0, stateHelpers_1.populateState)(initialState);
49
54
  return (data) => data === undefined ? undefined : (0, stateHelpers_1.getStateValue)(mapFn(createState(data)));
@@ -57,7 +62,7 @@ const mergeOptions = (options) => ({
57
62
  });
58
63
  function mapTransform(def, options = {}) {
59
64
  const completeOptions = mergeOptions(options);
60
- const mapFn = (0, definitionHelpers_1.mapFunctionFromDef)(def)(completeOptions);
65
+ const mapFn = (0, definitionHelpers_1.operationFromDef)(def)(completeOptions)(functional_1.identity);
61
66
  return Object.assign(composeMapFunction(mapFn, {}), {
62
67
  onlyMappedValues: composeMapFunction(mapFn, { onlyMapped: true }),
63
68
  rev: Object.assign(composeMapFunction(mapFn, { rev: true }), {
@@ -69,4 +74,5 @@ function mapTransform(def, options = {}) {
69
74
  });
70
75
  }
71
76
  exports.mapTransform = mapTransform;
77
+ exports.default = mapTransform;
72
78
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAOA,iEAA8D;AAC9D,uDAAmE;AACnE,2CAAmC;AAoBjB,oBApBX,mBAAS,CAoBW;AAnB3B,kDAA0C;AAmBjC,kBAnBF,iBAAO,CAmBE;AAjBhB,8CAA8C;AAArC,6FAAA,GAAG,OAAA;AAAE,6FAAA,GAAG,OAAA;AACjB,0CAAmD;AAA1C,4FAAA,OAAO,OAAQ;AACxB,wCAAiD;AAAxC,0FAAA,OAAO,OAAO;AACvB,4CAAqD;AAA5C,8FAAA,OAAO,OAAS;AACzB,4CAAqD;AAA5C,8FAAA,OAAO,OAAS;AACzB,4CAAqD;AAA5C,8FAAA,OAAO,OAAS;AACzB,8CAAuD;AAA9C,gGAAA,OAAO,OAAU;AAC1B,iDAA0D;AAAjD,oGAAA,OAAO,OAAY;AAC5B,uCAAgD;AAAvC,0FAAA,OAAO,OAAO;AACvB,0CAAmD;AAA1C,4FAAA,OAAO,OAAQ;AACxB,8CAAuD;AAA9C,gGAAA,OAAO,OAAU;AAC1B,oDAA6D;AAApD,sGAAA,OAAO,OAAa;AAC7B,8CAAuD;AAA9C,gGAAA,OAAO,OAAU;AAC1B,8CAAuD;AAA9C,gGAAA,OAAO,OAAU;AAC1B,0DAA4D;AAAnD,mGAAA,GAAG,OAAA;AAAE,mGAAA,GAAG,OAAA;AAAE,sGAAA,MAAM,OAAA;AACzB,4CAAqD;AAA5C,8FAAA,OAAO,OAAS;AACzB,8CAAuD;AAA9C,gGAAA,OAAO,OAAU;AAa1B,MAAM,kBAAkB,GAAG,CACzB,KAAkB,EAClB,YAA4B,EAC5B,EAAE;IACF,MAAM,WAAW,GAAG,IAAA,4BAAa,EAAC,YAAY,CAAC,CAAA;IAE/C,OAAO,CAAC,IAAa,EAAE,EAAE,CACvB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,4BAAa,EAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC5E,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC;IAC1C,GAAG,OAAO;IACV,SAAS,EAAE;QACT,GAAG,mBAAS;QACZ,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;KAC7B;CACF,CAAC,CAAA;AAEF,SAAgB,YAAY,CAC1B,GAAkB,EAClB,UAAmB,EAAE;IAErB,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,KAAK,GAAG,IAAA,sCAAkB,EAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAA;IAEtD,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE;QAClD,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACjE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;YAC3D,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,EAAE;gBAC1C,GAAG,EAAE,IAAI;gBACT,UAAU,EAAE,IAAI;aACjB,CAAC;SACH,CAAC;KACH,CAAC,CAAA;AACJ,CAAC;AAhBD,oCAgBC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAOA,iEAA4D;AAC5D,uDAAmE;AACnE,2CAAmC;AAqBjB,oBArBX,mBAAS,CAqBW;AApB3B,kDAA0C;AAoBjC,kBApBF,iBAAO,CAoBE;AAnBhB,mDAA6C;AAE7C,8CAA8C;AAArC,6FAAA,GAAG,OAAA;AAAE,6FAAA,GAAG,OAAA;AACjB,0CAAmD;AAA1C,4FAAA,OAAO,OAAQ;AACxB,wCAAiD;AAAxC,0FAAA,OAAO,OAAO;AACvB,4CAAqD;AAA5C,8FAAA,OAAO,OAAS;AACzB,4CAAqD;AAA5C,8FAAA,OAAO,OAAS;AACzB,4CAAqD;AAA5C,8FAAA,OAAO,OAAS;AACzB,8CAAuD;AAA9C,gGAAA,OAAO,OAAU;AAC1B,iDAA0D;AAAjD,oGAAA,OAAO,OAAY;AAC5B,uCAAgD;AAAvC,0FAAA,OAAO,OAAO;AACvB,0CAAmD;AAA1C,4FAAA,OAAO,OAAQ;AACxB,8CAAuD;AAA9C,gGAAA,OAAO,OAAU;AAC1B,oDAA6D;AAApD,sGAAA,OAAO,OAAa;AAC7B,8CAAuD;AAA9C,gGAAA,OAAO,OAAU;AAC1B,8CAAuD;AAA9C,gGAAA,OAAO,OAAU;AAC1B,0DAA4D;AAAnD,mGAAA,GAAG,OAAA;AAAE,mGAAA,GAAG,OAAA;AAAE,sGAAA,MAAM,OAAA;AACzB,4CAAqD;AAA5C,8FAAA,OAAO,OAAS;AACzB,8CAAuD;AAA9C,gGAAA,OAAO,OAAU;AAiB1B,iDAA0D;AAAjD,wGAAA,OAAO,OAAc;AAC9B,iDAA0D;AAAjD,wGAAA,OAAO,OAAc;AAE9B,MAAM,kBAAkB,GAAG,CACzB,KAAkB,EAClB,YAA4B,EAC5B,EAAE;IACF,MAAM,WAAW,GAAG,IAAA,4BAAa,EAAC,YAAY,CAAC,CAAA;IAE/C,OAAO,CAAC,IAAa,EAAE,EAAE,CACvB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,4BAAa,EAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC5E,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC;IAC1C,GAAG,OAAO;IACV,SAAS,EAAE;QACT,GAAG,mBAAS;QACZ,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;KAC7B;CACF,CAAC,CAAA;AAEF,SAAgB,YAAY,CAC1B,GAAkB,EAClB,UAAmB,EAAE;IAErB,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,KAAK,GAAG,IAAA,oCAAgB,EAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,qBAAQ,CAAC,CAAA;IAE9D,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE;QAClD,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACjE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;YAC3D,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,EAAE;gBAC1C,GAAG,EAAE,IAAI;gBACT,UAAU,EAAE,IAAI;aACjB,CAAC;SACH,CAAC;KACH,CAAC,CAAA;AACJ,CAAC;AAhBD,oCAgBC;AAED,kBAAe,YAAY,CAAA"}
@@ -1,2 +1,2 @@
1
1
  import { Operation, MapDefinition } from '../types';
2
- export default function alt(fn: MapDefinition): Operation;
2
+ export default function alt(...defs: MapDefinition[]): Operation[];
@@ -2,13 +2,35 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const stateHelpers_1 = require("../utils/stateHelpers");
4
4
  const definitionHelpers_1 = require("../utils/definitionHelpers");
5
- function alt(fn) {
6
- return (options) => {
7
- const runAlt = (0, definitionHelpers_1.mapFunctionFromDef)(fn)(options);
8
- return (state) => (0, stateHelpers_1.getStateValue)(state) === undefined
9
- ? runAlt((0, stateHelpers_1.setStateValue)(state, state.context))
10
- : state;
5
+ const functional_1 = require("../utils/functional");
6
+ const runAlt = (isOneMode) => function runAlt(operation, index) {
7
+ return (options) => (next) => (state) => {
8
+ const nextState = next(state);
9
+ const { noneValues } = options;
10
+ const isFirst = !isOneMode && index === 0;
11
+ if (isFirst) {
12
+ const thisState = operation(options)(functional_1.identity)(nextState);
13
+ return (0, stateHelpers_1.isNoneValueState)(thisState, noneValues)
14
+ ? { ...thisState, context: [...nextState.context, nextState.value] }
15
+ : thisState;
16
+ }
17
+ else {
18
+ if ((0, stateHelpers_1.isNoneValueState)(nextState, noneValues)) {
19
+ const thisState = operation(options)(functional_1.identity)((0, stateHelpers_1.removeLastContext)((0, stateHelpers_1.setStateValue)(nextState, (0, stateHelpers_1.getLastContext)(nextState))));
20
+ return (0, stateHelpers_1.isNoneValueState)(thisState, noneValues)
21
+ ? (0, stateHelpers_1.setValueFromState)(nextState, thisState)
22
+ : thisState;
23
+ }
24
+ else {
25
+ return nextState;
26
+ }
27
+ }
11
28
  };
29
+ };
30
+ function alt(...defs) {
31
+ const altOperations = defs.map((def) => (0, definitionHelpers_1.operationFromDef)(def));
32
+ const isOneMode = altOperations.length === 1;
33
+ return altOperations.map(runAlt(isOneMode));
12
34
  }
13
35
  exports.default = alt;
14
36
  //# sourceMappingURL=alt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alt.js","sourceRoot":"","sources":["../../src/operations/alt.ts"],"names":[],"mappings":";;AACA,wDAAoE;AACpE,kEAA+D;AAE/D,SAAwB,GAAG,CAAC,EAAiB;IAC3C,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,MAAM,GAAG,IAAA,sCAAkB,EAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;QAE9C,OAAO,CAAC,KAAK,EAAE,EAAE,CACf,IAAA,4BAAa,EAAC,KAAK,CAAC,KAAK,SAAS;YAChC,CAAC,CAAC,MAAM,CAAC,IAAA,4BAAa,EAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC,CAAC,KAAK,CAAA;IACb,CAAC,CAAA;AACH,CAAC;AATD,sBASC"}
1
+ {"version":3,"file":"alt.js","sourceRoot":"","sources":["../../src/operations/alt.ts"],"names":[],"mappings":";;AACA,wDAM8B;AAC9B,kEAA6D;AAC7D,oDAA8C;AAE9C,MAAM,MAAM,GAAG,CAAC,SAAkB,EAAE,EAAE,CACpC,SAAS,MAAM,CAAC,SAAoB,EAAE,KAAa;IACjD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;QAC9B,MAAM,OAAO,GAAG,CAAC,SAAS,IAAI,KAAK,KAAK,CAAC,CAAA;QAEzC,IAAI,OAAO,EAAE;YACX,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,qBAAQ,CAAC,CAAC,SAAS,CAAC,CAAA;YACzD,OAAO,IAAA,+BAAgB,EAAC,SAAS,EAAE,UAAU,CAAC;gBAC5C,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpE,CAAC,CAAC,SAAS,CAAA;SACd;aAAM;YACL,IAAI,IAAA,+BAAgB,EAAC,SAAS,EAAE,UAAU,CAAC,EAAE;gBAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,qBAAQ,CAAC,CAC5C,IAAA,gCAAiB,EACf,IAAA,4BAAa,EAAC,SAAS,EAAE,IAAA,6BAAc,EAAC,SAAS,CAAC,CAAC,CACpD,CACF,CAAA;gBACD,OAAO,IAAA,+BAAgB,EAAC,SAAS,EAAE,UAAU,CAAC;oBAC5C,CAAC,CAAC,IAAA,gCAAiB,EAAC,SAAS,EAAE,SAAS,CAAC;oBACzC,CAAC,CAAC,SAAS,CAAA;aACd;iBAAM;gBACL,OAAO,SAAS,CAAA;aACjB;SACF;IACH,CAAC,CAAA;AACH,CAAC,CAAA;AAEH,SAAwB,GAAG,CAAC,GAAG,IAAqB;IAElD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,oCAAgB,EAAC,GAAG,CAAC,CAAC,CAAA;IAC9D,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,CAAA;IAK5C,OAAO,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;AAC7C,CAAC;AATD,sBASC"}
@@ -1,14 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const definitionHelpers_1 = require("../utils/definitionHelpers");
4
- const stateHelpers_1 = require("../utils/stateHelpers");
4
+ const functional_1 = require("../utils/functional");
5
5
  const extractPipeline = (pipelineId, { pipelines }) => pipelineId && pipelines ? pipelines[pipelineId] : undefined;
6
+ const removeFlip = ({ flip, ...state }) => state;
6
7
  function apply(pipelineId) {
7
- return (options) => {
8
+ return (options) => (next) => {
8
9
  const pipeline = extractPipeline(pipelineId, options);
9
- return pipeline
10
- ? (0, definitionHelpers_1.mapFunctionFromDef)(pipeline)(options)
11
- : (state) => (0, stateHelpers_1.setStateValue)(state, undefined);
10
+ const fn = pipeline
11
+ ? (0, definitionHelpers_1.operationFromDef)(pipeline)(options)(functional_1.identity)
12
+ : undefined;
13
+ return (state) => {
14
+ const nextState = next(state);
15
+ return fn ? fn(removeFlip(nextState)) : nextState;
16
+ };
12
17
  };
13
18
  }
14
19
  exports.default = apply;
@@ -1 +1 @@
1
- {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/operations/apply.ts"],"names":[],"mappings":";;AACA,kEAA+D;AAC/D,wDAAqD;AAErD,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,EAAE,SAAS,EAAW,EAAE,EAAE,CACrE,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAE7D,SAAwB,KAAK,CAAC,UAAkB;IAC9C,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACrD,OAAO,QAAQ;YACb,CAAC,CAAC,IAAA,sCAAkB,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YACvC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,4BAAa,EAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAChD,CAAC,CAAA;AACH,CAAC;AAPD,wBAOC"}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/operations/apply.ts"],"names":[],"mappings":";;AACA,kEAA6D;AAC7D,oDAA8C;AAE9C,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,EAAE,SAAS,EAAW,EAAE,EAAE,CACrE,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAE7D,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAS,EAAE,EAAE,CAAC,KAAK,CAAA;AAEvD,SAAwB,KAAK,CAAC,UAAkB;IAC9C,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACrD,MAAM,EAAE,GAAG,QAAQ;YACjB,CAAC,CAAC,IAAA,oCAAgB,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,qBAAQ,CAAC;YAC/C,CAAC,CAAC,SAAS,CAAA;QACb,OAAO,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;YAC7B,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACnD,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAXD,wBAWC"}
@@ -2,13 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const stateHelpers_1 = require("../utils/stateHelpers");
4
4
  const definitionHelpers_1 = require("../utils/definitionHelpers");
5
+ const functional_1 = require("../utils/functional");
5
6
  const merge = (left, right) => Array.isArray(right) ? [...left, ...right] : [...left, right];
6
7
  function concat(...defs) {
7
- return (options) => {
8
- const fns = defs.map((def) => (0, definitionHelpers_1.mapFunctionFromDef)(def)(options));
9
- return (state) => (0, stateHelpers_1.setStateValue)(state, fns
10
- .reduce((value, fn) => merge(value, (0, stateHelpers_1.getStateValue)(fn(state))), [])
11
- .filter((val) => val !== undefined));
8
+ return (options) => (next) => {
9
+ const fns = defs.map((def) => (0, definitionHelpers_1.operationFromDef)(def)(options)(functional_1.identity));
10
+ return function doConcat(state) {
11
+ const nextState = next(state);
12
+ return (0, stateHelpers_1.setStateValue)(nextState, fns
13
+ .reduce((value, fn) => merge(value, (0, stateHelpers_1.getStateValue)(fn(nextState))), [])
14
+ .filter((val) => val !== undefined));
15
+ };
12
16
  };
13
17
  }
14
18
  exports.default = concat;
@@ -1 +1 @@
1
- {"version":3,"file":"concat.js","sourceRoot":"","sources":["../../src/operations/concat.ts"],"names":[],"mappings":";;AACA,wDAAoE;AACpE,kEAA+D;AAE/D,MAAM,KAAK,GAAG,CAAO,IAAS,EAAE,KAAc,EAAE,EAAE,CAChD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAA;AAE/D,SAAwB,MAAM,CAAC,GAAG,IAAqB;IACrD,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,sCAAkB,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;QAE/D,OAAO,CAAC,KAAK,EAAE,EAAE,CACf,IAAA,4BAAa,EACX,KAAK,EACL,GAAG;aACA,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAA,4BAAa,EAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EACrD,EAAe,CAChB;aACA,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CACtC,CAAA;IACL,CAAC,CAAA;AACH,CAAC;AAfD,yBAeC"}
1
+ {"version":3,"file":"concat.js","sourceRoot":"","sources":["../../src/operations/concat.ts"],"names":[],"mappings":";;AACA,wDAAoE;AACpE,kEAA6D;AAC7D,oDAA8C;AAE9C,MAAM,KAAK,GAAG,CAAO,IAAS,EAAE,KAAc,EAAE,EAAE,CAChD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAA;AAE/D,SAAwB,MAAM,CAAC,GAAG,IAAqB;IACrD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,oCAAgB,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,qBAAQ,CAAC,CAAC,CAAA;QAEvE,OAAO,SAAS,QAAQ,CAAC,KAAK;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;YAC7B,OAAO,IAAA,4BAAa,EAClB,SAAS,EACT,GAAG;iBACA,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAA,4BAAa,EAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EACzD,EAAe,CAChB;iBACA,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CACtC,CAAA;QACH,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAjBD,yBAiBC"}
@@ -2,10 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.divide = exports.rev = exports.fwd = void 0;
4
4
  const definitionHelpers_1 = require("../utils/definitionHelpers");
5
+ const xor_1 = require("../utils/xor");
5
6
  const applyInDirection = (def, rev) => {
6
- return (options) => {
7
- const fn = (0, definitionHelpers_1.mapFunctionFromDef)(def)(options);
8
- return (state) => ((rev ? state.rev : !state.rev) ? fn(state) : state);
7
+ return (options) => (next) => {
8
+ const fn = (0, definitionHelpers_1.operationFromDef)(def)(options)(next);
9
+ return (state) => ((0, xor_1.default)(rev, !state.rev) ? fn(state) : next(state));
9
10
  };
10
11
  };
11
12
  function fwd(def) {
@@ -17,9 +18,9 @@ function rev(def) {
17
18
  }
18
19
  exports.rev = rev;
19
20
  function divide(fwdDef, revDef) {
20
- return (options) => {
21
- const fwdFn = (0, definitionHelpers_1.mapFunctionFromDef)(fwdDef)(options);
22
- const revFn = (0, definitionHelpers_1.mapFunctionFromDef)(revDef)(options);
21
+ return (options) => (next) => {
22
+ const fwdFn = (0, definitionHelpers_1.operationFromDef)(fwdDef)(options)(next);
23
+ const revFn = (0, definitionHelpers_1.operationFromDef)(revDef)(options)(next);
23
24
  return (state) => (state.rev ? revFn(state) : fwdFn(state));
24
25
  };
25
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"directionals.js","sourceRoot":"","sources":["../../src/operations/directionals.ts"],"names":[],"mappings":";;;AACA,kEAA+D;AAE/D,MAAM,gBAAgB,GAAG,CAAC,GAAkB,EAAE,GAAY,EAAa,EAAE;IACvE,OAAO,CAAC,OAAgB,EAAE,EAAE;QAC1B,MAAM,EAAE,GAAG,IAAA,sCAAkB,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;QAC3C,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACxE,CAAC,CAAA;AACH,CAAC,CAAA;AAED,SAAgB,GAAG,CAAC,GAAkB;IACpC,OAAO,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACrC,CAAC;AAFD,kBAEC;AAED,SAAgB,GAAG,CAAC,GAAkB;IACpC,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AACpC,CAAC;AAFD,kBAEC;AAED,SAAgB,MAAM,CACpB,MAAqB,EACrB,MAAqB;IAErB,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,IAAA,sCAAkB,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAA;QACjD,MAAM,KAAK,GAAG,IAAA,sCAAkB,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAA;QACjD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7D,CAAC,CAAA;AACH,CAAC;AATD,wBASC"}
1
+ {"version":3,"file":"directionals.js","sourceRoot":"","sources":["../../src/operations/directionals.ts"],"names":[],"mappings":";;;AACA,kEAA6D;AAC7D,sCAA8B;AAE9B,MAAM,gBAAgB,GAAG,CAAC,GAAkB,EAAE,GAAY,EAAa,EAAE;IACvE,OAAO,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,MAAM,EAAE,GAAG,IAAA,oCAAgB,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA;QAC/C,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAA,aAAG,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACpE,CAAC,CAAA;AACH,CAAC,CAAA;AAED,SAAgB,GAAG,CAAC,GAAkB;IACpC,OAAO,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACrC,CAAC;AAFD,kBAEC;AAED,SAAgB,GAAG,CAAC,GAAkB;IACpC,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AACpC,CAAC;AAFD,kBAEC;AAED,SAAgB,MAAM,CACpB,MAAqB,EACrB,MAAqB;IAErB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAAA,oCAAgB,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA;QACrD,MAAM,KAAK,GAAG,IAAA,oCAAgB,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA;QACrD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7D,CAAC,CAAA;AACH,CAAC;AATD,wBASC"}
@@ -1,21 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const stateHelpers_1 = require("../utils/stateHelpers");
4
- const functional_1 = require("../utils/functional");
5
4
  const filterValue = (value, filterFn) => Array.isArray(value)
6
5
  ? value.filter(filterFn)
7
6
  : filterFn(value)
8
7
  ? value
9
8
  : undefined;
10
9
  function filter(fn) {
11
- return (_options) => {
10
+ return (_options) => (next) => {
12
11
  if (typeof fn !== 'function') {
13
- return functional_1.identity;
12
+ return (state) => next(state);
14
13
  }
15
14
  return (state) => {
16
- const filterFn = (data) => !!fn(data, (0, stateHelpers_1.contextFromState)(state));
17
- const value = (0, stateHelpers_1.getStateValue)(state);
18
- return (0, stateHelpers_1.setStateValue)(state, filterValue(value, filterFn));
15
+ const nextState = next(state);
16
+ const filterFn = (data) => !!fn(data, nextState);
17
+ return (0, stateHelpers_1.setStateValue)(nextState, filterValue((0, stateHelpers_1.getStateValue)(nextState), filterFn));
19
18
  };
20
19
  };
21
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/operations/filter.ts"],"names":[],"mappings":";;AACA,wDAI8B;AAC9B,oDAA8C;AAE9C,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,QAAoC,EAAE,EAAE,CAC3E,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;IACxB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAA;AAEf,SAAwB,MAAM,CAAC,EAAc;IAC3C,OAAO,CAAC,QAAQ,EAAE,EAAE;QAClB,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;YAC5B,OAAO,qBAAQ,CAAA;SAChB;QAED,OAAO,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAA,+BAAgB,EAAC,KAAK,CAAC,CAAC,CAAA;YACvE,MAAM,KAAK,GAAG,IAAA,4BAAa,EAAC,KAAK,CAAC,CAAA;YAClC,OAAO,IAAA,4BAAa,EAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC3D,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAZD,yBAYC"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/operations/filter.ts"],"names":[],"mappings":";;AACA,wDAAoE;AAEpE,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,QAAoC,EAAE,EAAE,CAC3E,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;IACxB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAA;AAEf,SAAwB,MAAM,CAAC,EAAc;IAC3C,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5B,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;YAC5B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;SAC9B;QAED,OAAO,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;YAC7B,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;YACzD,OAAO,IAAA,4BAAa,EAClB,SAAS,EACT,WAAW,CAAC,IAAA,4BAAa,EAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAChD,CAAA;QACH,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAfD,yBAeC"}
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const value_1 = require("../functions/value");
4
+ const stateHelpers_1 = require("../utils/stateHelpers");
4
5
  function fixed(val) {
5
- return () => (state) => ({
6
- ...state,
7
- value: (0, value_1.extractValue)(val),
8
- });
6
+ return () => (_next) => (state) => (0, stateHelpers_1.setStateValue)(state, (0, value_1.extractValue)(val), true);
9
7
  }
10
8
  exports.default = fixed;
11
9
  //# sourceMappingURL=fixed.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fixed.js","sourceRoot":"","sources":["../../src/operations/fixed.ts"],"names":[],"mappings":";;AACA,8CAAiD;AAEjD,SAAwB,KAAK,CAAC,GAA4B;IACxD,OAAO,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvB,GAAG,KAAK;QACR,KAAK,EAAE,IAAA,oBAAY,EAAC,GAAG,CAAC;KACzB,CAAC,CAAA;AACJ,CAAC;AALD,wBAKC"}
1
+ {"version":3,"file":"fixed.js","sourceRoot":"","sources":["../../src/operations/fixed.ts"],"names":[],"mappings":";;AACA,8CAAiD;AACjD,wDAAqD;AAErD,SAAwB,KAAK,CAAC,GAA4B;IACxD,OAAO,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAChC,IAAA,4BAAa,EAAC,KAAK,EAAE,IAAA,oBAAY,EAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;AACjD,CAAC;AAHD,wBAGC"}
@@ -1,3 +1,3 @@
1
- import { Operation, Path } from '../types';
2
- export declare const get: (path: Path) => Operation;
3
- export declare const set: (path: Path) => Operation;
1
+ import { Path, Operation } from '../types';
2
+ export declare const get: (path: Path) => Operation[];
3
+ export declare const set: (path: Path) => Operation[];
@@ -1,36 +1,145 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.set = exports.get = void 0;
4
- const pathGetter_1 = require("../utils/pathGetter");
5
- const pathSetter_1 = require("../utils/pathSetter");
4
+ const mapAny = require("map-any");
6
5
  const stateHelpers_1 = require("../utils/stateHelpers");
7
- const root_1 = require("./root");
8
- const plug_1 = require("./plug");
9
- const directionals_1 = require("./directionals");
10
- const isGet = (isGetOperation, isRev = false) => isGetOperation ? !isRev : isRev;
11
- const setWithOnlyMapped = (state, setFn) => (value) => state.onlyMapped && value === undefined
12
- ? state.target
13
- : setFn(value, state.target);
14
- const getValueFromState = (path) => (state) => (0, pathGetter_1.default)(path)((0, stateHelpers_1.getStateValue)(state));
15
- const setValueFromState = (path) => (state) => {
16
- const setFn = setWithOnlyMapped(state, (0, pathSetter_1.default)(path));
17
- return setFn((0, stateHelpers_1.getStateValue)(state), undefined);
18
- };
19
- const getOrSet = (isGetOperation) => (path) => {
20
- if (path && path.startsWith('^')) {
21
- const rootGetSet = (0, root_1.default)(getOrSet(isGetOperation)(path.slice(1)));
22
- return isGetOperation
23
- ? (0, directionals_1.divide)(rootGetSet, (0, plug_1.default)())
24
- : (0, directionals_1.divide)((0, plug_1.default)(), rootGetSet);
6
+ const is_1 = require("../utils/is");
7
+ const array_1 = require("../utils/array");
8
+ const functional_1 = require("../utils/functional");
9
+ const xor_1 = require("../utils/xor");
10
+ const adjustIsSet = (isSet, { rev = false, flip = false }) => (0, xor_1.default)(isSet, (0, xor_1.default)(rev, flip));
11
+ function flatMapAny(fn) {
12
+ return (value, target) => Array.isArray(value)
13
+ ? value.flatMap((value) => fn(value, target))
14
+ : fn(value, target);
15
+ }
16
+ function preparePath(path) {
17
+ if (typeof path === 'string' && path.includes('[')) {
18
+ if (path.endsWith('][')) {
19
+ return [path.slice(0, path.length - 2), false, true];
20
+ }
21
+ const pos = path.indexOf('[');
22
+ if (path[pos - 1] === '\\') {
23
+ return [path.replace('\\[', '['), false, false];
24
+ }
25
+ else {
26
+ const isArr = path[pos + 1] === ']';
27
+ return [path.slice(0, pos), isArr, false];
28
+ }
25
29
  }
26
- const getFn = getValueFromState(path);
27
- const setFn = setValueFromState(path);
28
- return () => Object.assign((state) => (0, stateHelpers_1.setStateValue)(state, isGet(isGetOperation, state.rev) ? getFn(state) : setFn(state)), {
29
- getTarget: (state) => !isGet(isGetOperation, state.rev)
30
- ? (0, pathGetter_1.default)(path)(state.target)
31
- : state.target,
32
- });
33
- };
34
- exports.get = getOrSet(true);
35
- exports.set = getOrSet(false);
30
+ return [path, false, false];
31
+ }
32
+ function getSetProp(path) {
33
+ if (path === '') {
34
+ return functional_1.identity;
35
+ }
36
+ const getFn = flatMapAny((value) => (0, is_1.isObject)(value) ? value[path] : undefined);
37
+ const setFn = (value, target) => (0, is_1.isObject)(target) ? { ...target, [path]: value } : { [path]: value };
38
+ return (value, isSet, target) => {
39
+ if (isSet) {
40
+ return setFn(value, target);
41
+ }
42
+ else {
43
+ return getFn(value);
44
+ }
45
+ };
46
+ }
47
+ function getSetIndex(index) {
48
+ return (value, isSet, target) => {
49
+ if (isSet) {
50
+ const arr = Array.isArray(target) ? [...target] : [];
51
+ arr[index] = value;
52
+ return arr;
53
+ }
54
+ else {
55
+ return Array.isArray(value) ? value[index] : undefined;
56
+ }
57
+ };
58
+ }
59
+ function getParent(state) {
60
+ const nextValue = (0, stateHelpers_1.getLastContext)(state);
61
+ const nextContext = state.context.slice(0, -1);
62
+ return { ...state, context: nextContext, value: nextValue };
63
+ }
64
+ function getRoot(state) {
65
+ const nextValue = (0, stateHelpers_1.getRootFromState)(state);
66
+ const nextContext = [];
67
+ return { ...state, context: nextContext, value: nextValue };
68
+ }
69
+ function getSet(isSet = false) {
70
+ return (path) => {
71
+ if (typeof path === 'string' && path[0] === '^') {
72
+ const getFn = path[1] === '^' ? getRoot : getParent;
73
+ return () => (next) => (state) => {
74
+ if (adjustIsSet(isSet, state)) {
75
+ return (0, stateHelpers_1.setStateValue)(next(state), state.target);
76
+ }
77
+ else {
78
+ return next(getFn(state));
79
+ }
80
+ };
81
+ }
82
+ const [basePath, isArr, isIndexProp] = preparePath(path);
83
+ const isIndex = typeof basePath === 'number';
84
+ const getArrAwareStateValue = isArr
85
+ ? (0, functional_1.compose)(array_1.ensureArray, stateHelpers_1.getStateValue)
86
+ : stateHelpers_1.getStateValue;
87
+ const getSetFn = isIndex ? getSetIndex(basePath) : getSetProp(basePath);
88
+ return (_options) => (next) => (state) => {
89
+ if (adjustIsSet(isSet, state)) {
90
+ const target = (0, stateHelpers_1.getTargetFromState)(state);
91
+ const nextTarget = getSetFn(target, false);
92
+ const nextState = next((0, stateHelpers_1.setTargetOnState)({ ...state, iterate: state.iterate || isArr }, nextTarget));
93
+ const setIt = (value, index) => getSetFn(value, true, (0, array_1.indexOfIfArray)(target, index));
94
+ const thisValue = nextState.iterate && !isArr && !isIndexProp
95
+ ? mapAny(setIt, (0, stateHelpers_1.getStateValue)(nextState))
96
+ : setIt(getArrAwareStateValue(nextState));
97
+ return (0, stateHelpers_1.setStateValue)(state, thisValue);
98
+ }
99
+ else {
100
+ const nextState = next(state);
101
+ const thisValue = getSetFn((0, stateHelpers_1.getStateValue)(nextState), false);
102
+ return (0, stateHelpers_1.setStateValue)(nextState, isArr ? (0, array_1.ensureArray)(thisValue) : thisValue, true);
103
+ }
104
+ };
105
+ };
106
+ }
107
+ function dividePath(path) {
108
+ const pos = path.indexOf('[');
109
+ if (pos > -1 && path[pos - 1] !== '\\') {
110
+ const index = Number.parseInt(path.slice(pos + 1), 10);
111
+ if (!Number.isNaN(index)) {
112
+ const basePath = path.slice(0, pos).trim();
113
+ return basePath ? [`${basePath}][`, index] : [index];
114
+ }
115
+ }
116
+ else if (path.startsWith('^')) {
117
+ if (path.startsWith('^^') && path.length > 2) {
118
+ return ['^^', path.slice(2)];
119
+ }
120
+ else if (path.length > 1 && path !== '^^') {
121
+ return ['^^', path.slice(1)];
122
+ }
123
+ }
124
+ return path.trim();
125
+ }
126
+ function pathToNextOperations(path, isSet = false) {
127
+ if (!path || path === '.') {
128
+ return [() => (next) => (state) => next(state)];
129
+ }
130
+ if (path[0] === '>') {
131
+ path = path.slice(1);
132
+ isSet = true;
133
+ }
134
+ const parts = path.split('.').flatMap(dividePath);
135
+ const operations = parts.map(getSet(isSet));
136
+ if (isSet) {
137
+ operations.reverse();
138
+ }
139
+ return operations;
140
+ }
141
+ const get = (path) => pathToNextOperations(path, false);
142
+ exports.get = get;
143
+ const set = (path) => pathToNextOperations(path, true);
144
+ exports.set = set;
36
145
  //# sourceMappingURL=getSet.js.map