@sparted/shared-library 0.0.13 → 0.0.15

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 (105) hide show
  1. package/_virtual/_tslib.js +6 -50
  2. package/_virtual/_tslib.js.map +1 -1
  3. package/array/array-to-map.js +10 -9
  4. package/array/array-to-map.js.map +1 -1
  5. package/array/get-values-from-keys.js +7 -3
  6. package/array/get-values-from-keys.js.map +1 -1
  7. package/array/index.js +11 -2
  8. package/array/index.js.map +1 -1
  9. package/date/constants.js +12 -5
  10. package/date/constants.js.map +1 -1
  11. package/date/convert.js +9 -4
  12. package/date/convert.js.map +1 -1
  13. package/date/format-minutes.js +11 -7
  14. package/date/format-minutes.js.map +1 -1
  15. package/date/get-time-diff-as-string.js +41 -39
  16. package/date/get-time-diff-as-string.js.map +1 -1
  17. package/date/index.js +16 -3
  18. package/date/index.js.map +1 -1
  19. package/formatting/format-number.js +12 -8
  20. package/formatting/format-number.js.map +1 -1
  21. package/formatting/index.js +9 -1
  22. package/formatting/index.js.map +1 -1
  23. package/fp/index.js +9 -1
  24. package/fp/index.js.map +1 -1
  25. package/fp/run-while.js +10 -7
  26. package/fp/run-while.js.map +1 -1
  27. package/http/encode-search-object.js +15 -14
  28. package/http/encode-search-object.js.map +1 -1
  29. package/http/fetch-with-timeout.js +11 -7
  30. package/http/fetch-with-timeout.js.map +1 -1
  31. package/http/index.js +12 -2
  32. package/http/index.js.map +1 -1
  33. package/index.js +67 -27
  34. package/index.js.map +1 -1
  35. package/linked-list/apply-diff-linked-list.js +7 -3
  36. package/linked-list/apply-diff-linked-list.js.map +1 -1
  37. package/linked-list/create-linked-list.js +38 -34
  38. package/linked-list/create-linked-list.js.map +1 -1
  39. package/linked-list/find-linked-list.js +8 -5
  40. package/linked-list/find-linked-list.js.map +1 -1
  41. package/linked-list/get-linked-list.js +6 -2
  42. package/linked-list/get-linked-list.js.map +1 -1
  43. package/linked-list/index.js +9 -1
  44. package/linked-list/index.js.map +1 -1
  45. package/linked-list/insert-linked-list.js +22 -20
  46. package/linked-list/insert-linked-list.js.map +1 -1
  47. package/linked-list/linked-list-utils.js +36 -29
  48. package/linked-list/linked-list-utils.js.map +1 -1
  49. package/linked-list/reduce-linked-list.js +11 -7
  50. package/linked-list/reduce-linked-list.js.map +1 -1
  51. package/linked-list/remove-linked-list.js +19 -16
  52. package/linked-list/remove-linked-list.js.map +1 -1
  53. package/linked-list/update-linked-list.js +13 -10
  54. package/linked-list/update-linked-list.js.map +1 -1
  55. package/linked-list/while-linked-list.js +10 -7
  56. package/linked-list/while-linked-list.js.map +1 -1
  57. package/math/clamp-number.js +8 -5
  58. package/math/clamp-number.js.map +1 -1
  59. package/math/index.js +16 -4
  60. package/math/index.js.map +1 -1
  61. package/math/interpolate.js +11 -7
  62. package/math/interpolate.js.map +1 -1
  63. package/math/number-range.js +9 -5
  64. package/math/number-range.js.map +1 -1
  65. package/math/random-number.js +8 -5
  66. package/math/random-number.js.map +1 -1
  67. package/object/index.js +9 -1
  68. package/object/index.js.map +1 -1
  69. package/object/merge-deep.js +10 -9
  70. package/object/merge-deep.js.map +1 -1
  71. package/package.json +1 -1
  72. package/parsing/index.js +13 -3
  73. package/parsing/index.js.map +1 -1
  74. package/parsing/parse-boolean.js +6 -2
  75. package/parsing/parse-boolean.js.map +1 -1
  76. package/parsing/parse-enum.js +8 -4
  77. package/parsing/parse-enum.js.map +1 -1
  78. package/parsing/parse-number.js +7 -3
  79. package/parsing/parse-number.js.map +1 -1
  80. package/predicates/index.js +18 -5
  81. package/predicates/index.js.map +1 -1
  82. package/predicates/is-function.js +6 -2
  83. package/predicates/is-function.js.map +1 -1
  84. package/predicates/is-null.js +6 -2
  85. package/predicates/is-null.js.map +1 -1
  86. package/predicates/is-object.js +6 -2
  87. package/predicates/is-object.js.map +1 -1
  88. package/predicates/is-primitive.js +10 -5
  89. package/predicates/is-primitive.js.map +1 -1
  90. package/predicates/is-undefined.js +6 -2
  91. package/predicates/is-undefined.js.map +1 -1
  92. package/promise/delay.js +7 -3
  93. package/promise/delay.js.map +1 -1
  94. package/promise/execute-or-resolve-default.js +7 -3
  95. package/promise/execute-or-resolve-default.js.map +1 -1
  96. package/promise/execute-with-delay.js +11 -13
  97. package/promise/execute-with-delay.js.map +1 -1
  98. package/promise/index.js +13 -3
  99. package/promise/index.js.map +1 -1
  100. package/string/index.js +9 -1
  101. package/string/index.js.map +1 -1
  102. package/string/replace-in-template.js +15 -13
  103. package/string/replace-in-template.js.map +1 -1
  104. package/types/index.js +1 -0
  105. package/types/index.js.map +1 -1
@@ -1,11 +1,15 @@
1
- import { runWhile } from '../fp/run-while.js';
1
+ 'use strict';
2
2
 
3
- var walkListItemRecord = function (callback, config) {
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var runWhile = require('../fp/run-while.js');
6
+
7
+ const walkListItemRecord = (callback, config) => {
4
8
  var _a;
5
- var items = config.items, startId = config.startId, initValue = config.initValue;
6
- var visited = new Set();
7
- var totalNodes = Object.keys(items).length;
8
- var _b = runWhile({
9
+ const { items, startId, initValue } = config;
10
+ const visited = new Set();
11
+ const totalNodes = Object.keys(items).length;
12
+ const { iterationCount, result } = runWhile.runWhile({
9
13
  iterationLimit: totalNodes + 1,
10
14
  initialValue: {
11
15
  currentId: startId,
@@ -14,32 +18,31 @@ var walkListItemRecord = function (callback, config) {
14
18
  stop: false,
15
19
  },
16
20
  },
17
- predicate: function (_a) {
18
- var control = _a.control, currentId = _a.currentId;
19
- var stop = control === null || control === void 0 ? void 0 : control.stop;
20
- var forcedStop = stop === undefined ? false : stop;
21
+ predicate: ({ control, currentId }) => {
22
+ const stop = control === null || control === void 0 ? void 0 : control.stop;
23
+ const forcedStop = stop === undefined ? false : stop;
21
24
  /**
22
25
  * Stop early or when the end is reached
23
26
  */
24
27
  return !forcedStop && currentId !== null;
25
28
  },
26
- callback: function (current) {
29
+ callback: (current) => {
27
30
  if (visited.has(current.currentId)) {
28
31
  throw new Error('Infinite loop found');
29
32
  }
30
33
  visited.add(current.currentId);
31
- var currentItem = items[current.currentId];
34
+ const currentItem = items[current.currentId];
32
35
  if (!currentItem) {
33
36
  throw new Error('Cul de sac detected');
34
37
  }
35
- var _a = callback(current.accumulator, currentItem), result = _a.result, control = _a.control;
38
+ const { result, control } = callback(current.accumulator, currentItem);
36
39
  return {
37
40
  accumulator: result,
38
41
  currentId: currentItem.nextId,
39
42
  control: control,
40
43
  };
41
44
  },
42
- }), iterationCount = _b.iterationCount, result = _b.result;
45
+ });
43
46
  /**
44
47
  * When force stopping the walk, we will always have unvisited
45
48
  * nodes, so we skip this check.
@@ -49,11 +52,11 @@ var walkListItemRecord = function (callback, config) {
49
52
  }
50
53
  return result.accumulator;
51
54
  };
52
- var findPreviousId = function (id, list) {
55
+ const findPreviousId = (id, list) => {
53
56
  if (id === list.headId) {
54
57
  return null;
55
58
  }
56
- return walkListItemRecord(function (acc, current) {
59
+ return walkListItemRecord((acc, current) => {
57
60
  if (current.nextId === id) {
58
61
  return {
59
62
  result: current.id,
@@ -71,27 +74,31 @@ var findPreviousId = function (id, list) {
71
74
  items: list.items,
72
75
  });
73
76
  };
74
- var assertItemCompatibility = function (item, isDoubleLinkList) {
75
- var incompatibleWithDoubleLinks = item.previousId === undefined && isDoubleLinkList;
76
- var incompatibleWithSingleLink = item.previousId !== undefined && !isDoubleLinkList;
77
+ const assertItemCompatibility = (item, isDoubleLinkList) => {
78
+ const incompatibleWithDoubleLinks = item.previousId === undefined && isDoubleLinkList;
79
+ const incompatibleWithSingleLink = item.previousId !== undefined && !isDoubleLinkList;
77
80
  if (incompatibleWithDoubleLinks || incompatibleWithSingleLink) {
78
- throw new Error("Node is incompatible with the list (id: ".concat(item.id, ")"));
81
+ throw new Error(`Node is incompatible with the list (id: ${item.id})`);
79
82
  }
80
83
  };
81
- var assertPresence = function (id, items) {
84
+ const assertPresence = (id, items) => {
82
85
  if (id && !items[id]) {
83
- throw new Error("Node not found in the list (id: ".concat(id, ")"));
86
+ throw new Error(`Node not found in the list (id: ${id})`);
84
87
  }
85
88
  };
86
- var assertNewNodePosition = function (item, config) {
87
- var previousId = config.previousId, list = config.list;
88
- var insertionMiddleError = previousId && list.items[previousId].nextId !== item.nextId;
89
- var insertionTailError = previousId && item.nextId === null && list.items[previousId].nextId !== null;
90
- var insertionHeadError = previousId === null && item.nextId !== list.headId;
89
+ const assertNewNodePosition = (item, config) => {
90
+ const { previousId, list } = config;
91
+ const insertionMiddleError = previousId && list.items[previousId].nextId !== item.nextId;
92
+ const insertionTailError = previousId && item.nextId === null && list.items[previousId].nextId !== null;
93
+ const insertionHeadError = previousId === null && item.nextId !== list.headId;
91
94
  if (insertionMiddleError || insertionTailError || insertionHeadError) {
92
- throw new Error("Invalid position for given node (id: ".concat(item.id, ")"));
95
+ throw new Error(`Invalid position for given node (id: ${item.id})`);
93
96
  }
94
97
  };
95
98
 
96
- export { assertItemCompatibility, assertNewNodePosition, assertPresence, findPreviousId, walkListItemRecord };
99
+ exports.assertItemCompatibility = assertItemCompatibility;
100
+ exports.assertNewNodePosition = assertNewNodePosition;
101
+ exports.assertPresence = assertPresence;
102
+ exports.findPreviousId = findPreviousId;
103
+ exports.walkListItemRecord = walkListItemRecord;
97
104
  //# sourceMappingURL=linked-list-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"linked-list-utils.js","sources":["../../src/linked-list/linked-list-utils.ts"],"sourcesContent":["import { runWhile } from '../fp';\nimport { LinkedListItem, HeadAndItems} from './type';\n\nexport type WalkConfig<T extends LinkedListItem, Result> = {\n startId: string | null,\n items: Record<string, T>,\n initValue: Result,\n}\n\ntype WalkCallbackResult<R> = {\n result: R,\n control?: {\n stop?: boolean,\n },\n};\n\nexport type WalkCallback<Item, Result> = (accumulator: Result, current: Item) => WalkCallbackResult<Result>;\n\ntype RunWhileValue<T> = {\n currentId: string | null,\n accumulator: T,\n control: WalkCallbackResult<any>['control'],\n}\n\nexport const walkListItemRecord = <T extends LinkedListItem, Result>(\n callback: WalkCallback<T, Result>,\n config: WalkConfig<T, Result>,\n) => {\n const { items, startId, initValue } = config;\n const visited = new Set();\n const totalNodes = Object.keys(items).length;\n\n const { iterationCount, result } = runWhile({\n iterationLimit: totalNodes + 1,\n initialValue: {\n currentId: startId, \n accumulator: initValue,\n control: {\n stop: false,\n },\n } as RunWhileValue<Result>,\n predicate: ({ control, currentId }) => {\n const stop = control?.stop;\n const forcedStop = stop === undefined ? false : stop;\n\n /**\n * Stop early or when the end is reached\n */\n return !forcedStop && currentId !== null;\n },\n callback: (current) => {\n if (visited.has(current.currentId)) {\n throw new Error('Infinite loop found');\n }\n\n visited.add(current.currentId);\n\n const currentItem = items[current.currentId!];\n\n if (!currentItem) {\n throw new Error('Cul de sac detected');\n }\n\n const { result, control } = callback(current.accumulator, currentItem);\n\n return {\n accumulator: result,\n currentId: currentItem.nextId,\n control: control,\n };\n },\n });\n\n /**\n * When force stopping the walk, we will always have unvisited\n * nodes, so we skip this check.\n */\n if (iterationCount !== totalNodes && result.control?.stop !== true) {\n throw new Error('Isolated nodes found');\n }\n\n return result.accumulator;\n};\n\nexport const findPreviousId = <T extends LinkedListItem>(id: string | null, list: HeadAndItems<T>) => {\n if (id === list.headId) {\n return null;\n }\n\n return walkListItemRecord(\n (acc, current) => {\n if (current.nextId === id) {\n return {\n result: current.id,\n control: {\n stop: true,\n },\n };\n }\n\n return {\n result: acc,\n }\n },\n {\n initValue: null as null | string,\n startId: list.headId,\n items: list.items,\n }\n )\n};\n\nexport const assertItemCompatibility = <T extends LinkedListItem>(item: T, isDoubleLinkList: boolean) => {\n const incompatibleWithDoubleLinks = item.previousId === undefined && isDoubleLinkList;\n const incompatibleWithSingleLink = item.previousId !== undefined && !isDoubleLinkList;\n\n if (incompatibleWithDoubleLinks || incompatibleWithSingleLink) {\n throw new Error(`Node is incompatible with the list (id: ${item.id})`);\n }\n}\n\nexport const assertPresence = (id: string | null | undefined, items: Record<string, unknown>) => {\n if (id && !items[id]) {\n throw new Error(`Node not found in the list (id: ${id})`);\n }\n}\n\ntype PositionAssertionConfig = {\n previousId: string | null,\n list: HeadAndItems<LinkedListItem>,\n};\n\nexport const assertNewNodePosition = <T extends LinkedListItem>(item: T, config: PositionAssertionConfig) => {\n const { previousId, list } = config;\n\n const insertionMiddleError = previousId && list.items[previousId].nextId !== item.nextId;\n const insertionTailError = previousId && item.nextId === null && list.items[previousId].nextId !== null;\n const insertionHeadError = previousId === null && item.nextId !== list.headId;\n\n if (insertionMiddleError || insertionTailError || insertionHeadError) {\n throw new Error(`Invalid position for given node (id: ${item.id})`);\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linked-list-utils.js","sources":["../../src/linked-list/linked-list-utils.ts"],"sourcesContent":["import { runWhile } from '../fp';\nimport { LinkedListItem, HeadAndItems} from './type';\n\nexport type WalkConfig<T extends LinkedListItem, Result> = {\n startId: string | null,\n items: Record<string, T>,\n initValue: Result,\n}\n\ntype WalkCallbackResult<R> = {\n result: R,\n control?: {\n stop?: boolean,\n },\n};\n\nexport type WalkCallback<Item, Result> = (accumulator: Result, current: Item) => WalkCallbackResult<Result>;\n\ntype RunWhileValue<T> = {\n currentId: string | null,\n accumulator: T,\n control: WalkCallbackResult<any>['control'],\n}\n\nexport const walkListItemRecord = <T extends LinkedListItem, Result>(\n callback: WalkCallback<T, Result>,\n config: WalkConfig<T, Result>,\n) => {\n const { items, startId, initValue } = config;\n const visited = new Set();\n const totalNodes = Object.keys(items).length;\n\n const { iterationCount, result } = runWhile({\n iterationLimit: totalNodes + 1,\n initialValue: {\n currentId: startId, \n accumulator: initValue,\n control: {\n stop: false,\n },\n } as RunWhileValue<Result>,\n predicate: ({ control, currentId }) => {\n const stop = control?.stop;\n const forcedStop = stop === undefined ? false : stop;\n\n /**\n * Stop early or when the end is reached\n */\n return !forcedStop && currentId !== null;\n },\n callback: (current) => {\n if (visited.has(current.currentId)) {\n throw new Error('Infinite loop found');\n }\n\n visited.add(current.currentId);\n\n const currentItem = items[current.currentId!];\n\n if (!currentItem) {\n throw new Error('Cul de sac detected');\n }\n\n const { result, control } = callback(current.accumulator, currentItem);\n\n return {\n accumulator: result,\n currentId: currentItem.nextId,\n control: control,\n };\n },\n });\n\n /**\n * When force stopping the walk, we will always have unvisited\n * nodes, so we skip this check.\n */\n if (iterationCount !== totalNodes && result.control?.stop !== true) {\n throw new Error('Isolated nodes found');\n }\n\n return result.accumulator;\n};\n\nexport const findPreviousId = <T extends LinkedListItem>(id: string | null, list: HeadAndItems<T>) => {\n if (id === list.headId) {\n return null;\n }\n\n return walkListItemRecord(\n (acc, current) => {\n if (current.nextId === id) {\n return {\n result: current.id,\n control: {\n stop: true,\n },\n };\n }\n\n return {\n result: acc,\n }\n },\n {\n initValue: null as null | string,\n startId: list.headId,\n items: list.items,\n }\n )\n};\n\nexport const assertItemCompatibility = <T extends LinkedListItem>(item: T, isDoubleLinkList: boolean) => {\n const incompatibleWithDoubleLinks = item.previousId === undefined && isDoubleLinkList;\n const incompatibleWithSingleLink = item.previousId !== undefined && !isDoubleLinkList;\n\n if (incompatibleWithDoubleLinks || incompatibleWithSingleLink) {\n throw new Error(`Node is incompatible with the list (id: ${item.id})`);\n }\n}\n\nexport const assertPresence = (id: string | null | undefined, items: Record<string, unknown>) => {\n if (id && !items[id]) {\n throw new Error(`Node not found in the list (id: ${id})`);\n }\n}\n\ntype PositionAssertionConfig = {\n previousId: string | null,\n list: HeadAndItems<LinkedListItem>,\n};\n\nexport const assertNewNodePosition = <T extends LinkedListItem>(item: T, config: PositionAssertionConfig) => {\n const { previousId, list } = config;\n\n const insertionMiddleError = previousId && list.items[previousId].nextId !== item.nextId;\n const insertionTailError = previousId && item.nextId === null && list.items[previousId].nextId !== null;\n const insertionHeadError = previousId === null && item.nextId !== list.headId;\n\n if (insertionMiddleError || insertionTailError || insertionHeadError) {\n throw new Error(`Invalid position for given node (id: ${item.id})`);\n }\n}"],"names":["runWhile"],"mappings":"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"}
@@ -1,17 +1,21 @@
1
- import { walkListItemRecord } from './linked-list-utils.js';
1
+ 'use strict';
2
2
 
3
- var reduceLinkedList = function (cb, initValue, list) {
4
- var items = list.items, headId = list.headId;
5
- return walkListItemRecord(function (acc, current) {
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var linkedListUtils = require('./linked-list-utils.js');
6
+
7
+ const reduceLinkedList = (cb, initValue, list) => {
8
+ const { items, headId } = list;
9
+ return linkedListUtils.walkListItemRecord((acc, current) => {
6
10
  return {
7
11
  result: cb(acc, current),
8
12
  };
9
13
  }, {
10
14
  startId: headId,
11
- items: items,
12
- initValue: initValue,
15
+ items,
16
+ initValue,
13
17
  });
14
18
  };
15
19
 
16
- export { reduceLinkedList };
20
+ exports.reduceLinkedList = reduceLinkedList;
17
21
  //# sourceMappingURL=reduce-linked-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reduce-linked-list.js","sources":["../../src/linked-list/reduce-linked-list.ts"],"sourcesContent":["import { ReduceCallback, LinkedListItem, HeadAndItems } from './type';\nimport { walkListItemRecord } from './linked-list-utils';\n\nexport const reduceLinkedList = <Item extends LinkedListItem, Result>(\n cb: ReduceCallback<Item, Result>,\n initValue: Result,\n list: HeadAndItems<Item>,\n): Result => {\n const { items, headId } = list;\n\n return walkListItemRecord((acc, current) => {\n return {\n result: cb(acc, current),\n };\n }, {\n startId: headId,\n items,\n initValue,\n });\n};\n"],"names":[],"mappings":";;IAGa,gBAAgB,GAAG,UAC9B,EAAgC,EAChC,SAAiB,EACjB,IAAwB,EAAA;IAEhB,IAAA,KAAK,GAAa,IAAI,CAAA,KAAjB,EAAE,MAAM,GAAK,IAAI,CAAA,MAAT,CAAU;AAE/B,IAAA,OAAO,kBAAkB,CAAC,UAAC,GAAG,EAAE,OAAO,EAAA;QACrC,OAAO;AACL,YAAA,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;SACzB,CAAC;AACJ,KAAC,EAAE;AACD,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,KAAK,EAAA,KAAA;AACL,QAAA,SAAS,EAAA,SAAA;AACV,KAAA,CAAC,CAAC;AACL;;;;"}
1
+ {"version":3,"file":"reduce-linked-list.js","sources":["../../src/linked-list/reduce-linked-list.ts"],"sourcesContent":["import { ReduceCallback, LinkedListItem, HeadAndItems } from './type';\nimport { walkListItemRecord } from './linked-list-utils';\n\nexport const reduceLinkedList = <Item extends LinkedListItem, Result>(\n cb: ReduceCallback<Item, Result>,\n initValue: Result,\n list: HeadAndItems<Item>,\n): Result => {\n const { items, headId } = list;\n\n return walkListItemRecord((acc, current) => {\n return {\n result: cb(acc, current),\n };\n }, {\n startId: headId,\n items,\n initValue,\n });\n};\n"],"names":["walkListItemRecord"],"mappings":";;;;;;AAGa,MAAA,gBAAgB,GAAG,CAC9B,EAAgC,EAChC,SAAiB,EACjB,IAAwB,KACd;AACV,IAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AAE/B,IAAA,OAAOA,kCAAkB,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;QACzC,OAAO;AACL,YAAA,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;SACzB,CAAC;AACJ,KAAC,EAAE;AACD,QAAA,OAAO,EAAE,MAAM;QACf,KAAK;QACL,SAAS;AACV,KAAA,CAAC,CAAC;AACL;;;;"}
@@ -1,25 +1,28 @@
1
- import { __rest, __assign } from '../_virtual/_tslib.js';
2
- import { assertPresence, findPreviousId } from './linked-list-utils.js';
1
+ 'use strict';
3
2
 
4
- var removeLinkedList = function (id, config) {
5
- var _a, _b;
6
- var isDoubleLinkList = config.isDoubleLinkList, list = config.list, factory = config.factory;
7
- var _c = list.items, _d = id, itemToDelete = _c[_d], otherItems = __rest(_c, [typeof _d === "symbol" ? _d : _d + ""]);
8
- assertPresence(id, list.items);
9
- var previousId = isDoubleLinkList
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _tslib = require('../_virtual/_tslib.js');
6
+ var linkedListUtils = require('./linked-list-utils.js');
7
+
8
+ const removeLinkedList = (id, config) => {
9
+ const { isDoubleLinkList, list, factory } = config;
10
+ const _a = list.items, _b = id, itemToDelete = _a[_b], otherItems = _tslib.__rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
11
+ linkedListUtils.assertPresence(id, list.items);
12
+ const previousId = isDoubleLinkList
10
13
  ? itemToDelete.previousId
11
- : findPreviousId(id, list);
12
- var newHeadId = previousId === null ? itemToDelete.nextId : list.headId;
13
- var newItems = __assign(__assign(__assign({}, otherItems), (previousId ? (_a = {},
14
- _a[previousId] = __assign(__assign({}, otherItems[previousId]), { nextId: itemToDelete.nextId }),
15
- _a) : {})), (isDoubleLinkList && itemToDelete.nextId ? (_b = {},
16
- _b[itemToDelete.nextId] = __assign(__assign({}, otherItems[itemToDelete.nextId]), (isDoubleLinkList ? { previousId: previousId } : {})),
17
- _b) : {}));
14
+ : linkedListUtils.findPreviousId(id, list);
15
+ const newHeadId = previousId === null ? itemToDelete.nextId : list.headId;
16
+ const newItems = Object.assign(Object.assign(Object.assign({}, otherItems), (previousId ? {
17
+ [previousId]: Object.assign(Object.assign({}, otherItems[previousId]), { nextId: itemToDelete.nextId }),
18
+ } : {})), (isDoubleLinkList && itemToDelete.nextId ? {
19
+ [itemToDelete.nextId]: Object.assign(Object.assign({}, otherItems[itemToDelete.nextId]), (isDoubleLinkList ? { previousId } : {}))
20
+ } : {}));
18
21
  return factory({
19
22
  headId: newHeadId,
20
23
  items: newItems,
21
24
  });
22
25
  };
23
26
 
24
- export { removeLinkedList };
27
+ exports.removeLinkedList = removeLinkedList;
25
28
  //# sourceMappingURL=remove-linked-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remove-linked-list.js","sources":["../../src/linked-list/remove-linked-list.ts"],"sourcesContent":["import { ManipulationConfig, LinkedListItem } from './type';\nimport { assertPresence, findPreviousId } from './linked-list-utils';\n\nexport const removeLinkedList = <T extends LinkedListItem>(id: string, config: ManipulationConfig<T>) => {\n const { isDoubleLinkList, list, factory } = config;\n const { [id]: itemToDelete, ...otherItems } = list.items;\n\n assertPresence(id, list.items);\n\n const previousId = isDoubleLinkList\n ? itemToDelete.previousId!\n : findPreviousId(id, list);\n\n const newHeadId = previousId === null ? itemToDelete.nextId : list.headId;\n const newItems = {\n ...otherItems,\n ...(previousId ? {\n [previousId]: {\n ...otherItems[previousId],\n nextId: itemToDelete.nextId,\n },\n } : {}),\n ...(isDoubleLinkList && itemToDelete.nextId ? {\n [itemToDelete.nextId]: {\n ...otherItems[itemToDelete.nextId],\n ...(isDoubleLinkList ? { previousId } : {}),\n }\n } : {}),\n };\n\n return factory({\n headId: newHeadId,\n items: newItems,\n });\n};"],"names":[],"mappings":";;;AAGa,IAAA,gBAAgB,GAAG,UAA2B,EAAU,EAAE,MAA6B,EAAA;;AAC1F,IAAA,IAAA,gBAAgB,GAAoB,MAAM,CAAA,gBAA1B,EAAE,IAAI,GAAc,MAAM,CAAA,IAApB,EAAE,OAAO,GAAK,MAAM,QAAX,CAAY;AACnD,IAAA,IAA8C,EAAA,GAAA,IAAI,CAAC,KAAK,EAAhD,EAAC,GAAA,EAAG,EAAE,YAAY,SAAA,EAAK,UAAU,GAAnC,MAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA,KAAA,QAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,CAAqC,CAAa,CAAC;AAEzD,IAAA,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAE/B,IAAM,UAAU,GAAG,gBAAgB;UAC/B,YAAY,CAAC,UAAW;AAC1B,UAAE,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAE7B,IAAA,IAAM,SAAS,GAAG,UAAU,KAAK,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1E,IAAA,IAAM,QAAQ,GACT,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,UAAU,IACT,UAAU,IAAE,EAAA,GAAA,EAAA;AACd,QAAA,EAAA,CAAC,UAAU,CAAA,GAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACN,UAAU,CAAC,UAAU,CAAC,CACzB,EAAA,EAAA,MAAM,EAAE,YAAY,CAAC,MAAM,EAC5B,CAAA;cACC,EAAE,EACH,GAAC,gBAAgB,IAAI,YAAY,CAAC,MAAM,IAAE,EAAA,GAAA,EAAA;QAC3C,EAAC,CAAA,YAAY,CAAC,MAAM,CACf,GAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAC/B,GAAC,gBAAgB,GAAG,EAAE,UAAU,EAAA,UAAA,EAAE,GAAG,EAAE,EAC3C;AACD,QAAA,EAAA,IAAE,EAAE,EACP,CAAC;AAEF,IAAA,OAAO,OAAO,CAAC;AACb,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC,CAAC;AACL;;;;"}
1
+ {"version":3,"file":"remove-linked-list.js","sources":["../../src/linked-list/remove-linked-list.ts"],"sourcesContent":["import { ManipulationConfig, LinkedListItem } from './type';\nimport { assertPresence, findPreviousId } from './linked-list-utils';\n\nexport const removeLinkedList = <T extends LinkedListItem>(id: string, config: ManipulationConfig<T>) => {\n const { isDoubleLinkList, list, factory } = config;\n const { [id]: itemToDelete, ...otherItems } = list.items;\n\n assertPresence(id, list.items);\n\n const previousId = isDoubleLinkList\n ? itemToDelete.previousId!\n : findPreviousId(id, list);\n\n const newHeadId = previousId === null ? itemToDelete.nextId : list.headId;\n const newItems = {\n ...otherItems,\n ...(previousId ? {\n [previousId]: {\n ...otherItems[previousId],\n nextId: itemToDelete.nextId,\n },\n } : {}),\n ...(isDoubleLinkList && itemToDelete.nextId ? {\n [itemToDelete.nextId]: {\n ...otherItems[itemToDelete.nextId],\n ...(isDoubleLinkList ? { previousId } : {}),\n }\n } : {}),\n };\n\n return factory({\n headId: newHeadId,\n items: newItems,\n });\n};"],"names":["__rest","assertPresence","findPreviousId"],"mappings":";;;;;;;MAGa,gBAAgB,GAAG,CAA2B,EAAU,EAAE,MAA6B,KAAI;IACtG,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;AACnD,IAAA,MAA8C,EAAA,GAAA,IAAI,CAAC,KAAK,EAAhD,EAAC,GAAA,EAAG,EAAE,YAAY,SAAA,EAAK,UAAU,GAAnCA,aAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA,KAAA,QAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,CAAqC,CAAa,CAAC;AAEzD,IAAAC,8BAAc,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAE/B,MAAM,UAAU,GAAG,gBAAgB;UAC/B,YAAY,CAAC,UAAW;AAC1B,UAAEC,8BAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAE7B,IAAA,MAAM,SAAS,GAAG,UAAU,KAAK,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1E,MAAM,QAAQ,iDACT,UAAU,CAAA,GACT,UAAU,GAAG;AACf,QAAA,CAAC,UAAU,GACN,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,UAAU,CAAC,UAAU,CAAC,CAAA,EAAA,EACzB,MAAM,EAAE,YAAY,CAAC,MAAM,EAC5B,CAAA;AACF,KAAA,GAAG,EAAE,EACH,GAAC,gBAAgB,IAAI,YAAY,CAAC,MAAM,GAAG;QAC5C,CAAC,YAAY,CAAC,MAAM,GAAC,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAChB,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA,GAC9B,gBAAgB,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,EAC3C;AACF,KAAA,GAAG,EAAE,EACP,CAAC;AAEF,IAAA,OAAO,OAAO,CAAC;AACb,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC,CAAC;AACL;;;;"}
@@ -1,21 +1,24 @@
1
- import { __rest, __assign } from '../_virtual/_tslib.js';
2
- import { assertPresence } from './linked-list-utils.js';
1
+ 'use strict';
3
2
 
4
- var updateLinkedList = function (item, config) {
5
- var _a;
6
- var list = config.list, factory = config.factory;
7
- assertPresence(item.id, list.items);
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _tslib = require('../_virtual/_tslib.js');
6
+ var linkedListUtils = require('./linked-list-utils.js');
7
+
8
+ const updateLinkedList = (item, config) => {
9
+ const { list, factory } = config;
10
+ linkedListUtils.assertPresence(item.id, list.items);
8
11
  /**
9
12
  * This method should not update any ids.
10
13
  */
11
- item.nextId; item.previousId; item.id; var updatableProperties = __rest(item, ["nextId", "previousId", "id"]);
12
- var currentItem = list.items[item.id];
13
- var newItems = __assign(__assign({}, list.items), (_a = {}, _a[item.id] = __assign(__assign({}, currentItem), updatableProperties), _a));
14
+ const updatableProperties = _tslib.__rest(item, ["nextId", "previousId", "id"]);
15
+ const currentItem = list.items[item.id];
16
+ const newItems = Object.assign(Object.assign({}, list.items), { [item.id]: Object.assign(Object.assign({}, currentItem), updatableProperties) });
14
17
  return factory({
15
18
  headId: list.headId,
16
19
  items: newItems,
17
20
  });
18
21
  };
19
22
 
20
- export { updateLinkedList };
23
+ exports.updateLinkedList = updateLinkedList;
21
24
  //# sourceMappingURL=update-linked-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-linked-list.js","sources":["../../src/linked-list/update-linked-list.ts"],"sourcesContent":["import { ManipulationConfig, LinkedListItem } from './type';\nimport { assertPresence } from './linked-list-utils';\n\nexport const updateLinkedList = <T extends LinkedListItem>(item: T, config: ManipulationConfig<T>) => {\n const { list, factory } = config;\n\n assertPresence(item.id, list.items);\n\n /**\n * This method should not update any ids.\n */\n const { nextId, previousId, id, ...updatableProperties } = item;\n const currentItem = list.items[item.id];\n\n const newItems = {\n ...list.items,\n [item.id]: {\n ...currentItem,\n ...updatableProperties,\n },\n };\n\n return factory({\n headId: list.headId,\n items: newItems,\n });\n};\n"],"names":[],"mappings":";;;AAGa,IAAA,gBAAgB,GAAG,UAA2B,IAAO,EAAG,MAA6B,EAAA;;IACxF,IAAA,IAAI,GAAc,MAAM,CAAA,IAApB,EAAE,OAAO,GAAK,MAAM,CAAA,OAAX,CAAY;IAEjC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAEpC;;AAEG;IACwD,IAAI,CAAA,MAAjD,EAA6C,IAAI,CAArC,UAAA,CAAA,CAAiC,IAAI,GAAjC,CAAK,KAAA,mBAAmB,UAAK,IAAI,EAAzD,CAAkD,QAAA,EAAA,YAAA,EAAA,IAAA,CAAA,EAAQ;IAChE,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAExC,IAAA,IAAM,QAAQ,GAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACT,IAAI,CAAC,KAAK,CACZ,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAA,IAAI,CAAC,EAAE,CACH,GAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,WAAW,CACX,EAAA,mBAAmB,OAEzB,CAAC;AAEF,IAAA,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC,CAAC;AACL;;;;"}
1
+ {"version":3,"file":"update-linked-list.js","sources":["../../src/linked-list/update-linked-list.ts"],"sourcesContent":["import { ManipulationConfig, LinkedListItem } from './type';\nimport { assertPresence } from './linked-list-utils';\n\nexport const updateLinkedList = <T extends LinkedListItem>(item: T, config: ManipulationConfig<T>) => {\n const { list, factory } = config;\n\n assertPresence(item.id, list.items);\n\n /**\n * This method should not update any ids.\n */\n const { nextId, previousId, id, ...updatableProperties } = item;\n const currentItem = list.items[item.id];\n\n const newItems = {\n ...list.items,\n [item.id]: {\n ...currentItem,\n ...updatableProperties,\n },\n };\n\n return factory({\n headId: list.headId,\n items: newItems,\n });\n};\n"],"names":["assertPresence","__rest"],"mappings":";;;;;;;MAGa,gBAAgB,GAAG,CAA2B,IAAO,EAAG,MAA6B,KAAI;AACpG,IAAA,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEjCA,8BAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAEpC;;AAEG;AACH,IAAA,MAAmC,mBAAmB,GAAKC,aAAA,CAAA,IAAI,EAAzD,CAAA,QAAA,EAAA,YAAA,EAAA,IAAA,CAAkD,EAAQ;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAExC,IAAA,MAAM,QAAQ,GACT,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,KAAK,KACb,CAAC,IAAI,CAAC,EAAE,GACH,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,WAAW,CACX,EAAA,mBAAmB,IAEzB,CAAC;AAEF,IAAA,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC,CAAC;AACL;;;;"}
@@ -1,15 +1,18 @@
1
- import { __spreadArray } from '../_virtual/_tslib.js';
2
- import { walkListItemRecord } from './linked-list-utils.js';
1
+ 'use strict';
3
2
 
4
- var whileLinkedList = function (predicate, list, startId) {
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var linkedListUtils = require('./linked-list-utils.js');
6
+
7
+ const whileLinkedList = (predicate, list, startId) => {
5
8
  if (startId && !list.items[startId]) {
6
9
  throw new Error('Cannot start from a node that does not exist');
7
10
  }
8
- return walkListItemRecord(function (acc, item) {
9
- var itemMatched = predicate(item);
11
+ return linkedListUtils.walkListItemRecord((acc, item) => {
12
+ const itemMatched = predicate(item);
10
13
  if (itemMatched) {
11
14
  return {
12
- result: __spreadArray(__spreadArray([], acc, true), [item.id], false),
15
+ result: [...acc, item.id],
13
16
  };
14
17
  }
15
18
  return {
@@ -25,5 +28,5 @@ var whileLinkedList = function (predicate, list, startId) {
25
28
  });
26
29
  };
27
30
 
28
- export { whileLinkedList };
31
+ exports.whileLinkedList = whileLinkedList;
29
32
  //# sourceMappingURL=while-linked-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"while-linked-list.js","sources":["../../src/linked-list/while-linked-list.ts"],"sourcesContent":["\n\nimport { LinkedListItem, ItemPredicate, HeadAndItems } from './type';\nimport { walkListItemRecord } from './linked-list-utils';\n\nexport const whileLinkedList = <Item extends LinkedListItem>(\n predicate: ItemPredicate<Item>,\n list: HeadAndItems<Item>,\n startId?: string,\n): string[] => {\n if (startId && !list.items[startId]) {\n throw new Error('Cannot start from a node that does not exist');\n }\n\n return walkListItemRecord(\n (acc, item) => {\n const itemMatched = predicate(item);\n\n if (itemMatched) {\n return {\n result: [...acc, item.id],\n };\n }\n\n return {\n result: acc,\n control: {\n stop: true,\n },\n };\n }, {\n initValue: [] as string[],\n startId: startId || list.headId,\n items: list.items,\n },\n );\n};\n"],"names":[],"mappings":";;;IAKa,eAAe,GAAG,UAC7B,SAA8B,EAC9B,IAAwB,EACxB,OAAgB,EAAA;IAEhB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACnC,QAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACjE,KAAA;AAED,IAAA,OAAO,kBAAkB,CACvB,UAAC,GAAG,EAAE,IAAI,EAAA;AACR,QAAA,IAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpC,QAAA,IAAI,WAAW,EAAE;YACf,OAAO;AACL,gBAAA,MAAM,kCAAM,GAAG,EAAA,IAAA,CAAA,EAAA,CAAE,IAAI,CAAC,EAAE,CAAC,EAAA,KAAA,CAAA;aAC1B,CAAC;AACH,SAAA;QAED,OAAO;AACL,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA;SACF,CAAC;AACJ,KAAC,EAAE;AACD,QAAA,SAAS,EAAE,EAAc;AACzB,QAAA,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM;QAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,KAAA,CACF,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"while-linked-list.js","sources":["../../src/linked-list/while-linked-list.ts"],"sourcesContent":["\n\nimport { LinkedListItem, ItemPredicate, HeadAndItems } from './type';\nimport { walkListItemRecord } from './linked-list-utils';\n\nexport const whileLinkedList = <Item extends LinkedListItem>(\n predicate: ItemPredicate<Item>,\n list: HeadAndItems<Item>,\n startId?: string,\n): string[] => {\n if (startId && !list.items[startId]) {\n throw new Error('Cannot start from a node that does not exist');\n }\n\n return walkListItemRecord(\n (acc, item) => {\n const itemMatched = predicate(item);\n\n if (itemMatched) {\n return {\n result: [...acc, item.id],\n };\n }\n\n return {\n result: acc,\n control: {\n stop: true,\n },\n };\n }, {\n initValue: [] as string[],\n startId: startId || list.headId,\n items: list.items,\n },\n );\n};\n"],"names":["walkListItemRecord"],"mappings":";;;;;;AAKa,MAAA,eAAe,GAAG,CAC7B,SAA8B,EAC9B,IAAwB,EACxB,OAAgB,KACJ;IACZ,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACnC,QAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACjE,KAAA;AAED,IAAA,OAAOA,kCAAkB,CACvB,CAAC,GAAG,EAAE,IAAI,KAAI;AACZ,QAAA,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpC,QAAA,IAAI,WAAW,EAAE;YACf,OAAO;gBACL,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;aAC1B,CAAC;AACH,SAAA;QAED,OAAO;AACL,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA;SACF,CAAC;AACJ,KAAC,EAAE;AACD,QAAA,SAAS,EAAE,EAAc;AACzB,QAAA,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM;QAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,KAAA,CACF,CAAC;AACJ;;;;"}
@@ -1,10 +1,13 @@
1
- import { assertNumberRange } from './number-range.js';
1
+ 'use strict';
2
2
 
3
- var clampNumber = function (num, _a) {
4
- var min = _a.min, max = _a.max;
5
- assertNumberRange({ min: min, max: max });
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var numberRange = require('./number-range.js');
6
+
7
+ const clampNumber = (num, { min, max }) => {
8
+ numberRange.assertNumberRange({ min, max });
6
9
  return Math.min(Math.max(num, min), max);
7
10
  };
8
11
 
9
- export { clampNumber };
12
+ exports.clampNumber = clampNumber;
10
13
  //# sourceMappingURL=clamp-number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clamp-number.js","sources":["../../src/math/clamp-number.ts"],"sourcesContent":["import { assertNumberRange } from './number-range';\nimport type { NumberRange } from './number-range';\n\nexport const clampNumber = (num: number, { min, max }: NumberRange) => {\n assertNumberRange({ min, max });\n\n return Math.min(Math.max(num, min), max);\n};"],"names":[],"mappings":";;AAGa,IAAA,WAAW,GAAG,UAAC,GAAW,EAAE,EAAyB,EAAA;QAAvB,GAAG,GAAA,EAAA,CAAA,GAAA,EAAE,GAAG,GAAA,EAAA,CAAA,GAAA,CAAA;IACjD,iBAAiB,CAAC,EAAE,GAAG,EAAA,GAAA,EAAE,GAAG,EAAA,GAAA,EAAE,CAAC,CAAC;AAEhC,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C;;;;"}
1
+ {"version":3,"file":"clamp-number.js","sources":["../../src/math/clamp-number.ts"],"sourcesContent":["import { assertNumberRange } from './number-range';\nimport type { NumberRange } from './number-range';\n\nexport const clampNumber = (num: number, { min, max }: NumberRange) => {\n assertNumberRange({ min, max });\n\n return Math.min(Math.max(num, min), max);\n};"],"names":["assertNumberRange"],"mappings":";;;;;;AAGO,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAe,KAAI;AACpE,IAAAA,6BAAiB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAEhC,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C;;;;"}
package/math/index.js CHANGED
@@ -1,5 +1,17 @@
1
- export { clampNumber } from './clamp-number.js';
2
- export { interpolate } from './interpolate.js';
3
- export { assertNumberRange, isNumberInRange } from './number-range.js';
4
- export { randomNumber } from './random-number.js';
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var clampNumber = require('./clamp-number.js');
6
+ var interpolate = require('./interpolate.js');
7
+ var numberRange = require('./number-range.js');
8
+ var randomNumber = require('./random-number.js');
9
+
10
+
11
+
12
+ exports.clampNumber = clampNumber.clampNumber;
13
+ exports.interpolate = interpolate.interpolate;
14
+ exports.assertNumberRange = numberRange.assertNumberRange;
15
+ exports.isNumberInRange = numberRange.isNumberInRange;
16
+ exports.randomNumber = randomNumber.randomNumber;
5
17
  //# sourceMappingURL=index.js.map
package/math/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
@@ -1,16 +1,20 @@
1
- import { isNumberInRange } from './number-range.js';
1
+ 'use strict';
2
2
 
3
- var interpolate = function (num, inputRange, outputRange) {
4
- var x1 = inputRange[0], x2 = inputRange[1];
5
- var y1 = outputRange[0], y2 = outputRange[1];
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var numberRange = require('./number-range.js');
6
+
7
+ const interpolate = (num, inputRange, outputRange) => {
8
+ const [x1, x2] = inputRange;
9
+ const [y1, y2] = outputRange;
6
10
  if (x1 > x2) {
7
11
  throw new Error('interpolate: inputRange[0] should not be superior to inputRange[1]');
8
12
  }
9
- if (!isNumberInRange(num, { min: x1, max: x2 })) {
10
- throw new Error("interpolate: input number {".concat(num, "} is not in range of {").concat(x1, "}-{").concat(x2, "}"));
13
+ if (!numberRange.isNumberInRange(num, { min: x1, max: x2 })) {
14
+ throw new Error(`interpolate: input number {${num}} is not in range of {${x1}}-{${x2}}`);
11
15
  }
12
16
  return y1 + ((num - x1) / (x2 - x1)) * (y2 - y1);
13
17
  };
14
18
 
15
- export { interpolate };
19
+ exports.interpolate = interpolate;
16
20
  //# sourceMappingURL=interpolate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interpolate.js","sources":["../../src/math/interpolate.ts"],"sourcesContent":["import { isNumberInRange } from './number-range';\n\nexport type RangeArray = [number, number];\n\nexport const interpolate = (num: number, inputRange: RangeArray, outputRange: RangeArray) => {\n const [x1, x2] = inputRange;\n const [y1, y2] = outputRange;\n\n if (x1 > x2) {\n throw new Error('interpolate: inputRange[0] should not be superior to inputRange[1]');\n }\n\n if (!isNumberInRange(num, { min: x1, max: x2 })) {\n throw new Error(`interpolate: input number {${num}} is not in range of {${x1}}-{${x2}}`);\n }\n\n return y1 + ((num - x1) / (x2 - x1)) * (y2 - y1);\n};"],"names":[],"mappings":";;IAIa,WAAW,GAAG,UAAC,GAAW,EAAE,UAAsB,EAAE,WAAuB,EAAA;IAC/E,IAAA,EAAE,GAAQ,UAAU,CAAA,CAAA,CAAlB,EAAE,EAAE,GAAI,UAAU,CAAA,CAAA,CAAd,CAAe;IACrB,IAAA,EAAE,GAAQ,WAAW,CAAA,CAAA,CAAnB,EAAE,EAAE,GAAI,WAAW,CAAA,CAAA,CAAf,CAAgB;IAE7B,IAAI,EAAE,GAAG,EAAE,EAAE;AACX,QAAA,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;AACvF,KAAA;AAED,IAAA,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;QAC/C,MAAM,IAAI,KAAK,CAAC,6BAA8B,CAAA,MAAA,CAAA,GAAG,EAAyB,wBAAA,CAAA,CAAA,MAAA,CAAA,EAAE,EAAM,KAAA,CAAA,CAAA,MAAA,CAAA,EAAE,EAAG,GAAA,CAAA,CAAC,CAAC;AAC1F,KAAA;IAED,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AACnD;;;;"}
1
+ {"version":3,"file":"interpolate.js","sources":["../../src/math/interpolate.ts"],"sourcesContent":["import { isNumberInRange } from './number-range';\n\nexport type RangeArray = [number, number];\n\nexport const interpolate = (num: number, inputRange: RangeArray, outputRange: RangeArray) => {\n const [x1, x2] = inputRange;\n const [y1, y2] = outputRange;\n\n if (x1 > x2) {\n throw new Error('interpolate: inputRange[0] should not be superior to inputRange[1]');\n }\n\n if (!isNumberInRange(num, { min: x1, max: x2 })) {\n throw new Error(`interpolate: input number {${num}} is not in range of {${x1}}-{${x2}}`);\n }\n\n return y1 + ((num - x1) / (x2 - x1)) * (y2 - y1);\n};"],"names":["isNumberInRange"],"mappings":";;;;;;AAIa,MAAA,WAAW,GAAG,CAAC,GAAW,EAAE,UAAsB,EAAE,WAAuB,KAAI;AAC1F,IAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC;AAC5B,IAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC;IAE7B,IAAI,EAAE,GAAG,EAAE,EAAE;AACX,QAAA,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;AACvF,KAAA;AAED,IAAA,IAAI,CAACA,2BAAe,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;QAC/C,MAAM,IAAI,KAAK,CAAC,CAA8B,2BAAA,EAAA,GAAG,CAAyB,sBAAA,EAAA,EAAE,CAAM,GAAA,EAAA,EAAE,CAAG,CAAA,CAAA,CAAC,CAAC;AAC1F,KAAA;IAED,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AACnD;;;;"}
@@ -1,13 +1,17 @@
1
- var assertNumberRange = function (range) {
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const assertNumberRange = (range) => {
2
6
  if (range.min > range.max) {
3
7
  throw new Error('Invalid number range: min must be lower than or equal to max');
4
8
  }
5
9
  };
6
- var isNumberInRange = function (num, _a) {
7
- var min = _a.min, max = _a.max;
8
- assertNumberRange({ min: min, max: max });
10
+ const isNumberInRange = (num, { min, max }) => {
11
+ assertNumberRange({ min, max });
9
12
  return num >= min && num <= max;
10
13
  };
11
14
 
12
- export { assertNumberRange, isNumberInRange };
15
+ exports.assertNumberRange = assertNumberRange;
16
+ exports.isNumberInRange = isNumberInRange;
13
17
  //# sourceMappingURL=number-range.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-range.js","sources":["../../src/math/number-range.ts"],"sourcesContent":["export type NumberRange = {\n min: number,\n max: number,\n};\n\nexport const assertNumberRange = (range: NumberRange) => {\n if (range.min > range.max) {\n throw new Error('Invalid number range: min must be lower than or equal to max');\n }\n};\n\nexport const isNumberInRange = (num: number, { min, max }: NumberRange) => {\n assertNumberRange({ min, max });\n\n return num >= min && num <= max;\n};\n"],"names":[],"mappings":"AAKO,IAAM,iBAAiB,GAAG,UAAC,KAAkB,EAAA;AAClD,IAAA,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AACjF,KAAA;AACH,EAAE;AAEW,IAAA,eAAe,GAAG,UAAC,GAAW,EAAE,EAAyB,EAAA;QAAvB,GAAG,GAAA,EAAA,CAAA,GAAA,EAAE,GAAG,GAAA,EAAA,CAAA,GAAA,CAAA;IACrD,iBAAiB,CAAC,EAAE,GAAG,EAAA,GAAA,EAAE,GAAG,EAAA,GAAA,EAAE,CAAC,CAAC;AAEhC,IAAA,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC;AAClC;;;;"}
1
+ {"version":3,"file":"number-range.js","sources":["../../src/math/number-range.ts"],"sourcesContent":["export type NumberRange = {\n min: number,\n max: number,\n};\n\nexport const assertNumberRange = (range: NumberRange) => {\n if (range.min > range.max) {\n throw new Error('Invalid number range: min must be lower than or equal to max');\n }\n};\n\nexport const isNumberInRange = (num: number, { min, max }: NumberRange) => {\n assertNumberRange({ min, max });\n\n return num >= min && num <= max;\n};\n"],"names":[],"mappings":";;;;AAKa,MAAA,iBAAiB,GAAG,CAAC,KAAkB,KAAI;AACtD,IAAA,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AACjF,KAAA;AACH,EAAE;AAEK,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAe,KAAI;AACxE,IAAA,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAEhC,IAAA,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC;AAClC;;;;;"}
@@ -1,10 +1,13 @@
1
- import { assertNumberRange } from './number-range.js';
1
+ 'use strict';
2
2
 
3
- var randomNumber = function (_a) {
4
- var min = _a.min, max = _a.max;
5
- assertNumberRange({ min: min, max: max });
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var numberRange = require('./number-range.js');
6
+
7
+ const randomNumber = ({ min, max }) => {
8
+ numberRange.assertNumberRange({ min, max });
6
9
  return Math.floor(Math.random() * (max - min) + min);
7
10
  };
8
11
 
9
- export { randomNumber };
12
+ exports.randomNumber = randomNumber;
10
13
  //# sourceMappingURL=random-number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"random-number.js","sources":["../../src/math/random-number.ts"],"sourcesContent":["import { assertNumberRange } from './number-range';\nimport type { NumberRange } from './number-range';\n\nexport const randomNumber = ({ min, max }: NumberRange) => {\n assertNumberRange({ min, max });\n\n return Math.floor(\n Math.random() * (max - min) + min,\n );\n};\n"],"names":[],"mappings":";;AAGO,IAAM,YAAY,GAAG,UAAC,EAAyB,EAAA;QAAvB,GAAG,GAAA,EAAA,CAAA,GAAA,EAAE,GAAG,GAAA,EAAA,CAAA,GAAA,CAAA;IACrC,iBAAiB,CAAC,EAAE,GAAG,EAAA,GAAA,EAAE,GAAG,EAAA,GAAA,EAAE,CAAC,CAAC;AAEhC,IAAA,OAAO,IAAI,CAAC,KAAK,CACf,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAClC,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"random-number.js","sources":["../../src/math/random-number.ts"],"sourcesContent":["import { assertNumberRange } from './number-range';\nimport type { NumberRange } from './number-range';\n\nexport const randomNumber = ({ min, max }: NumberRange) => {\n assertNumberRange({ min, max });\n\n return Math.floor(\n Math.random() * (max - min) + min,\n );\n};\n"],"names":["assertNumberRange"],"mappings":";;;;;;AAGa,MAAA,YAAY,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAe,KAAI;AACxD,IAAAA,6BAAiB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAEhC,IAAA,OAAO,IAAI,CAAC,KAAK,CACf,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAClC,CAAC;AACJ;;;;"}
package/object/index.js CHANGED
@@ -1,2 +1,10 @@
1
- export { mergeDeep } from './merge-deep.js';
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var mergeDeep = require('./merge-deep.js');
6
+
7
+
8
+
9
+ exports.mergeDeep = mergeDeep.mergeDeep;
2
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -1,24 +1,25 @@
1
- import { __assign } from '../_virtual/_tslib.js';
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
2
4
 
3
5
  // https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript/8511350#8511350
4
- var isObject = function (a) { return typeof a === 'object' && a !== null; };
5
- var isValueType = function (a) { return (!isObject(a) || Array.isArray(a)); };
6
- var mergeDeep = function (a, b) {
6
+ const isObject = (a) => typeof a === 'object' && a !== null;
7
+ const isValueType = (a) => (!isObject(a) || Array.isArray(a));
8
+ const mergeDeep = (a, b) => {
7
9
  if (isValueType(a) || isValueType(b)) {
8
10
  return b;
9
11
  }
10
- return Object.keys(b).reduce(function (acc, key) {
11
- var _a;
12
+ return Object.keys(b).reduce((acc, key) => {
12
13
  if (!(key in a)) {
13
14
  return acc;
14
15
  }
15
16
  if (b[key] === a[key]) {
16
17
  return acc;
17
18
  }
18
- var merged = mergeDeep(a[key], b[key]);
19
- return __assign(__assign({}, acc), (_a = {}, _a[key] = merged, _a));
19
+ const merged = mergeDeep(a[key], b[key]);
20
+ return Object.assign(Object.assign({}, acc), { [key]: merged });
20
21
  }, a);
21
22
  };
22
23
 
23
- export { mergeDeep };
24
+ exports.mergeDeep = mergeDeep;
24
25
  //# sourceMappingURL=merge-deep.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-deep.js","sources":["../../src/object/merge-deep.ts"],"sourcesContent":["import type { DeepPartial, ValueType } from '../types';\n\n// https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript/8511350#8511350\nconst isObject = (a: any) => typeof a === 'object' && a !== null;\nconst isValueType = (a: any): a is ValueType => (\n !isObject(a) || Array.isArray(a)\n);\n\nexport const mergeDeep = <T>(a: T, b: DeepPartial<T>): T => {\n if (isValueType(a) || isValueType(b)) {\n return b as T;\n }\n\n return (Object.keys(b) as (keyof T)[]).reduce((acc, key) => {\n if (!(key in a)) {\n return acc;\n }\n\n if (b[key] === a[key]) {\n return acc;\n }\n\n const merged = mergeDeep(a[key], (b[key] as DeepPartial<T[keyof T]>));\n\n return { ...acc, [key]: merged };\n }, a);\n};\n"],"names":[],"mappings":";;AAEA;AACA,IAAM,QAAQ,GAAG,UAAC,CAAM,EAAA,EAAK,OAAA,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAA,EAAA,CAAC;AACjE,IAAM,WAAW,GAAG,UAAC,CAAM,IAAqB,QAC9C,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EADc,EAE/C,CAAC;AAEW,IAAA,SAAS,GAAG,UAAI,CAAI,EAAE,CAAiB,EAAA;IAClD,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;AACpC,QAAA,OAAO,CAAM,CAAC;AACf,KAAA;AAED,IAAA,OAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAiB,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,EAAA;;AACrD,QAAA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE;AACf,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA;QAED,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA;AAED,QAAA,IAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAG,CAAC,CAAC,GAAG,CAA6B,CAAC,CAAC;AAEtE,QAAA,OAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAY,GAAG,CAAA,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAG,GAAG,CAAA,GAAG,MAAM,EAAG,EAAA,EAAA,CAAA;KAClC,EAAE,CAAC,CAAC,CAAC;AACR;;;;"}
1
+ {"version":3,"file":"merge-deep.js","sources":["../../src/object/merge-deep.ts"],"sourcesContent":["import type { DeepPartial, ValueType } from '../types';\n\n// https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript/8511350#8511350\nconst isObject = (a: any) => typeof a === 'object' && a !== null;\nconst isValueType = (a: any): a is ValueType => (\n !isObject(a) || Array.isArray(a)\n);\n\nexport const mergeDeep = <T>(a: T, b: DeepPartial<T>): T => {\n if (isValueType(a) || isValueType(b)) {\n return b as T;\n }\n\n return (Object.keys(b) as (keyof T)[]).reduce((acc, key) => {\n if (!(key in a)) {\n return acc;\n }\n\n if (b[key] === a[key]) {\n return acc;\n }\n\n const merged = mergeDeep(a[key], (b[key] as DeepPartial<T[keyof T]>));\n\n return { ...acc, [key]: merged };\n }, a);\n};\n"],"names":[],"mappings":";;;;AAEA;AACA,MAAM,QAAQ,GAAG,CAAC,CAAM,KAAK,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC;AACjE,MAAM,WAAW,GAAG,CAAC,CAAM,MACzB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CACjC,CAAC;MAEW,SAAS,GAAG,CAAI,CAAI,EAAE,CAAiB,KAAO;IACzD,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;AACpC,QAAA,OAAO,CAAM,CAAC;AACf,KAAA;AAED,IAAA,OAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AACzD,QAAA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE;AACf,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA;QAED,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAG,CAAC,CAAC,GAAG,CAA6B,CAAC,CAAC;AAEtE,QAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAY,GAAG,CAAE,EAAA,EAAA,CAAC,GAAG,GAAG,MAAM,EAAG,CAAA,CAAA;KAClC,EAAE,CAAC,CAAC,CAAC;AACR;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sparted/shared-library",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "repository": "git@github.com:Sparted/shared-library.git",
5
5
  "author": "Thomas <duprethomasfr@gmail.com>",
6
6
  "license": "MIT",
package/parsing/index.js CHANGED
@@ -1,4 +1,14 @@
1
- export { parseBoolean } from './parse-boolean.js';
2
- export { createEnumParser } from './parse-enum.js';
3
- export { parseNumber } from './parse-number.js';
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var parseBoolean = require('./parse-boolean.js');
6
+ var parseEnum = require('./parse-enum.js');
7
+ var parseNumber = require('./parse-number.js');
8
+
9
+
10
+
11
+ exports.parseBoolean = parseBoolean.parseBoolean;
12
+ exports.createEnumParser = parseEnum.createEnumParser;
13
+ exports.parseNumber = parseNumber.parseNumber;
4
14
  //# sourceMappingURL=index.js.map