@sparted/shared-library 0.0.14 → 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.
- package/_virtual/_tslib.js +6 -1
- package/_virtual/_tslib.js.map +1 -1
- package/array/array-to-map.js +5 -1
- package/array/array-to-map.js.map +1 -1
- package/array/get-values-from-keys.js +5 -1
- package/array/get-values-from-keys.js.map +1 -1
- package/array/index.js +11 -2
- package/array/index.js.map +1 -1
- package/date/constants.js +8 -1
- package/date/constants.js.map +1 -1
- package/date/convert.js +9 -4
- package/date/convert.js.map +1 -1
- package/date/format-minutes.js +5 -1
- package/date/format-minutes.js.map +1 -1
- package/date/get-time-diff-as-string.js +13 -9
- package/date/get-time-diff-as-string.js.map +1 -1
- package/date/index.js +16 -3
- package/date/index.js.map +1 -1
- package/formatting/format-number.js +5 -1
- package/formatting/format-number.js.map +1 -1
- package/formatting/index.js +9 -1
- package/formatting/index.js.map +1 -1
- package/fp/index.js +9 -1
- package/fp/index.js.map +1 -1
- package/fp/run-while.js +5 -1
- package/fp/run-while.js.map +1 -1
- package/http/encode-search-object.js +6 -1
- package/http/encode-search-object.js.map +1 -1
- package/http/fetch-with-timeout.js +7 -3
- package/http/fetch-with-timeout.js.map +1 -1
- package/http/index.js +12 -2
- package/http/index.js.map +1 -1
- package/index.js +67 -27
- package/index.js.map +1 -1
- package/linked-list/apply-diff-linked-list.js +5 -1
- package/linked-list/apply-diff-linked-list.js.map +1 -1
- package/linked-list/create-linked-list.js +23 -19
- package/linked-list/create-linked-list.js.map +1 -1
- package/linked-list/find-linked-list.js +7 -3
- package/linked-list/find-linked-list.js.map +1 -1
- package/linked-list/get-linked-list.js +5 -1
- package/linked-list/get-linked-list.js.map +1 -1
- package/linked-list/index.js +9 -1
- package/linked-list/index.js.map +1 -1
- package/linked-list/insert-linked-list.js +11 -7
- package/linked-list/insert-linked-list.js.map +1 -1
- package/linked-list/linked-list-utils.js +11 -3
- package/linked-list/linked-list-utils.js.map +1 -1
- package/linked-list/reduce-linked-list.js +7 -3
- package/linked-list/reduce-linked-list.js.map +1 -1
- package/linked-list/remove-linked-list.js +10 -6
- package/linked-list/remove-linked-list.js.map +1 -1
- package/linked-list/update-linked-list.js +9 -5
- package/linked-list/update-linked-list.js.map +1 -1
- package/linked-list/while-linked-list.js +7 -3
- package/linked-list/while-linked-list.js.map +1 -1
- package/math/clamp-number.js +7 -3
- package/math/clamp-number.js.map +1 -1
- package/math/index.js +16 -4
- package/math/index.js.map +1 -1
- package/math/interpolate.js +7 -3
- package/math/interpolate.js.map +1 -1
- package/math/number-range.js +6 -1
- package/math/number-range.js.map +1 -1
- package/math/random-number.js +7 -3
- package/math/random-number.js.map +1 -1
- package/object/index.js +9 -1
- package/object/index.js.map +1 -1
- package/object/merge-deep.js +5 -1
- package/object/merge-deep.js.map +1 -1
- package/package.json +1 -1
- package/parsing/index.js +13 -3
- package/parsing/index.js.map +1 -1
- package/parsing/parse-boolean.js +5 -1
- package/parsing/parse-boolean.js.map +1 -1
- package/parsing/parse-enum.js +5 -1
- package/parsing/parse-enum.js.map +1 -1
- package/parsing/parse-number.js +5 -1
- package/parsing/parse-number.js.map +1 -1
- package/predicates/index.js +18 -5
- package/predicates/index.js.map +1 -1
- package/predicates/is-function.js +5 -1
- package/predicates/is-function.js.map +1 -1
- package/predicates/is-null.js +5 -1
- package/predicates/is-null.js.map +1 -1
- package/predicates/is-object.js +5 -1
- package/predicates/is-object.js.map +1 -1
- package/predicates/is-primitive.js +6 -1
- package/predicates/is-primitive.js.map +1 -1
- package/predicates/is-undefined.js +5 -1
- package/predicates/is-undefined.js.map +1 -1
- package/promise/delay.js +5 -1
- package/promise/delay.js.map +1 -1
- package/promise/execute-or-resolve-default.js +5 -1
- package/promise/execute-or-resolve-default.js.map +1 -1
- package/promise/execute-with-delay.js +9 -5
- package/promise/execute-with-delay.js.map +1 -1
- package/promise/index.js +13 -3
- package/promise/index.js.map +1 -1
- package/string/index.js +9 -1
- package/string/index.js.map +1 -1
- package/string/replace-in-template.js +7 -3
- package/string/replace-in-template.js.map +1 -1
- package/types/index.js +1 -0
- package/types/index.js.map +1 -1
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var reduceLinkedList = require('./reduce-linked-list.js');
|
|
6
|
+
var findLinkedList = require('./find-linked-list.js');
|
|
7
|
+
var whileLinkedList = require('./while-linked-list.js');
|
|
8
|
+
var linkedListUtils = require('./linked-list-utils.js');
|
|
9
|
+
var removeLinkedList = require('./remove-linked-list.js');
|
|
10
|
+
var insertLinkedList = require('./insert-linked-list.js');
|
|
11
|
+
var getLinkedList = require('./get-linked-list.js');
|
|
12
|
+
var updateLinkedList = require('./update-linked-list.js');
|
|
13
|
+
var applyDiffLinkedList = require('./apply-diff-linked-list.js');
|
|
10
14
|
|
|
11
15
|
const createLinkedList = (headId, items) => {
|
|
12
16
|
const head = headId ? items[headId] : null;
|
|
@@ -14,7 +18,7 @@ const createLinkedList = (headId, items) => {
|
|
|
14
18
|
throw new Error('Cannot find the head.');
|
|
15
19
|
}
|
|
16
20
|
const list = { headId, items };
|
|
17
|
-
const { isDoubleLinked, count } = walkListItemRecord((acc, current) => {
|
|
21
|
+
const { isDoubleLinked, count } = linkedListUtils.walkListItemRecord((acc, current) => {
|
|
18
22
|
const newCount = acc.count + 1;
|
|
19
23
|
const isDoubleLinked = current.previousId !== undefined;
|
|
20
24
|
const incompatibleFormats = acc.isDoubleLinked !== undefined && acc.isDoubleLinked !== isDoubleLinked;
|
|
@@ -50,17 +54,17 @@ const createLinkedList = (headId, items) => {
|
|
|
50
54
|
items,
|
|
51
55
|
size: count,
|
|
52
56
|
isDoubleLinked: isDoubleLinked,
|
|
53
|
-
reduce: (cb, initValue) => reduceLinkedList(cb, initValue, list),
|
|
54
|
-
find: (predicate) => findLinkedList(predicate, list),
|
|
55
|
-
while: (predicate, startId) => whileLinkedList(predicate, list, startId),
|
|
56
|
-
remove: (id) => removeLinkedList(id, manipulationConfig),
|
|
57
|
-
insert: (item) => insertLinkedList(item, manipulationConfig),
|
|
58
|
-
get: (id) => getLinkedList(id, list),
|
|
59
|
-
update: (item) => updateLinkedList(item, manipulationConfig),
|
|
60
|
-
applyDiff: (before, after) => applyDiffLinkedList(before, after, linkedList),
|
|
57
|
+
reduce: (cb, initValue) => reduceLinkedList.reduceLinkedList(cb, initValue, list),
|
|
58
|
+
find: (predicate) => findLinkedList.findLinkedList(predicate, list),
|
|
59
|
+
while: (predicate, startId) => whileLinkedList.whileLinkedList(predicate, list, startId),
|
|
60
|
+
remove: (id) => removeLinkedList.removeLinkedList(id, manipulationConfig),
|
|
61
|
+
insert: (item) => insertLinkedList.insertLinkedList(item, manipulationConfig),
|
|
62
|
+
get: (id) => getLinkedList.getLinkedList(id, list),
|
|
63
|
+
update: (item) => updateLinkedList.updateLinkedList(item, manipulationConfig),
|
|
64
|
+
applyDiff: (before, after) => applyDiffLinkedList.applyDiffLinkedList(before, after, linkedList),
|
|
61
65
|
};
|
|
62
66
|
return linkedList;
|
|
63
67
|
};
|
|
64
68
|
|
|
65
|
-
|
|
69
|
+
exports.createLinkedList = createLinkedList;
|
|
66
70
|
//# sourceMappingURL=create-linked-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-linked-list.js","sources":["../../src/linked-list/create-linked-list.ts"],"sourcesContent":["import { LinkedListItem, LinkedList, ManipulationConfig } from './type';\n\nimport { reduceLinkedList } from './reduce-linked-list';\nimport { findLinkedList } from './find-linked-list';\nimport { whileLinkedList } from './while-linked-list';\nimport { walkListItemRecord } from './linked-list-utils';\nimport { removeLinkedList } from './remove-linked-list';\nimport { insertLinkedList } from './insert-linked-list';\nimport { getLinkedList } from './get-linked-list';\nimport { updateLinkedList } from './update-linked-list';\nimport { applyDiffLinkedList } from './apply-diff-linked-list';\n\ntype LinkedListValidation = {\n isDoubleLinked?: boolean,\n previousId: null | string,\n count: number,\n}\n\nexport const createLinkedList = <T extends LinkedListItem>(headId: string | null, items: Record<string, T>): LinkedList<T> => {\n const head = headId ? items[headId] : null;\n\n if (head === undefined) {\n throw new Error('Cannot find the head.');\n }\n\n const list = { headId, items };\n\n const { isDoubleLinked, count } = walkListItemRecord((acc, current) => {\n const newCount = acc.count + 1;\n const isDoubleLinked = current.previousId !== undefined;\n const incompatibleFormats = acc.isDoubleLinked !== undefined && acc.isDoubleLinked !== isDoubleLinked;\n\n if (incompatibleFormats || (isDoubleLinked && current.previousId !== acc.previousId)) {\n throw new Error('Invalid previous node in the linked list');\n }\n\n return {\n result: {\n previousId: current.id,\n count: newCount,\n isDoubleLinked,\n }\n }\n }, {\n initValue: {\n isDoubleLinked: undefined,\n count: 0,\n previousId: null,\n } as LinkedListValidation,\n startId: headId,\n items,\n });\n\n const manipulationConfig: ManipulationConfig<T> = {\n factory: (list) => createLinkedList(list.headId, list.items),\n /**\n * At this point isDoubleLinked cannot be undefined\n */\n isDoubleLinkList: isDoubleLinked!,\n list,\n };\n\n const linkedList: LinkedList<T> = {\n head,\n items,\n size: count,\n isDoubleLinked: isDoubleLinked!,\n reduce: (cb, initValue) => reduceLinkedList(cb, initValue, list),\n find: (predicate) => findLinkedList(predicate, list),\n while: (predicate, startId) => whileLinkedList(predicate, list, startId),\n remove: (id) => removeLinkedList(id, manipulationConfig),\n insert: (item) => insertLinkedList(item, manipulationConfig),\n get: (id) => getLinkedList(id, list),\n update: (item) => updateLinkedList(item, manipulationConfig),\n applyDiff: (before, after) => applyDiffLinkedList(before, after, linkedList),\n };\n\n return linkedList;\n};"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-linked-list.js","sources":["../../src/linked-list/create-linked-list.ts"],"sourcesContent":["import { LinkedListItem, LinkedList, ManipulationConfig } from './type';\n\nimport { reduceLinkedList } from './reduce-linked-list';\nimport { findLinkedList } from './find-linked-list';\nimport { whileLinkedList } from './while-linked-list';\nimport { walkListItemRecord } from './linked-list-utils';\nimport { removeLinkedList } from './remove-linked-list';\nimport { insertLinkedList } from './insert-linked-list';\nimport { getLinkedList } from './get-linked-list';\nimport { updateLinkedList } from './update-linked-list';\nimport { applyDiffLinkedList } from './apply-diff-linked-list';\n\ntype LinkedListValidation = {\n isDoubleLinked?: boolean,\n previousId: null | string,\n count: number,\n}\n\nexport const createLinkedList = <T extends LinkedListItem>(headId: string | null, items: Record<string, T>): LinkedList<T> => {\n const head = headId ? items[headId] : null;\n\n if (head === undefined) {\n throw new Error('Cannot find the head.');\n }\n\n const list = { headId, items };\n\n const { isDoubleLinked, count } = walkListItemRecord((acc, current) => {\n const newCount = acc.count + 1;\n const isDoubleLinked = current.previousId !== undefined;\n const incompatibleFormats = acc.isDoubleLinked !== undefined && acc.isDoubleLinked !== isDoubleLinked;\n\n if (incompatibleFormats || (isDoubleLinked && current.previousId !== acc.previousId)) {\n throw new Error('Invalid previous node in the linked list');\n }\n\n return {\n result: {\n previousId: current.id,\n count: newCount,\n isDoubleLinked,\n }\n }\n }, {\n initValue: {\n isDoubleLinked: undefined,\n count: 0,\n previousId: null,\n } as LinkedListValidation,\n startId: headId,\n items,\n });\n\n const manipulationConfig: ManipulationConfig<T> = {\n factory: (list) => createLinkedList(list.headId, list.items),\n /**\n * At this point isDoubleLinked cannot be undefined\n */\n isDoubleLinkList: isDoubleLinked!,\n list,\n };\n\n const linkedList: LinkedList<T> = {\n head,\n items,\n size: count,\n isDoubleLinked: isDoubleLinked!,\n reduce: (cb, initValue) => reduceLinkedList(cb, initValue, list),\n find: (predicate) => findLinkedList(predicate, list),\n while: (predicate, startId) => whileLinkedList(predicate, list, startId),\n remove: (id) => removeLinkedList(id, manipulationConfig),\n insert: (item) => insertLinkedList(item, manipulationConfig),\n get: (id) => getLinkedList(id, list),\n update: (item) => updateLinkedList(item, manipulationConfig),\n applyDiff: (before, after) => applyDiffLinkedList(before, after, linkedList),\n };\n\n return linkedList;\n};"],"names":["walkListItemRecord","reduceLinkedList","findLinkedList","whileLinkedList","removeLinkedList","insertLinkedList","getLinkedList","updateLinkedList","applyDiffLinkedList"],"mappings":";;;;;;;;;;;;;;MAkBa,gBAAgB,GAAG,CAA2B,MAAqB,EAAE,KAAwB,KAAmB;AAC3H,IAAA,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAE3C,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,QAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC1C,KAAA;AAED,IAAA,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAE/B,IAAA,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,GAAGA,kCAAkB,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;AACpE,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/B,QAAA,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC;AACxD,QAAA,MAAM,mBAAmB,GAAG,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,GAAG,CAAC,cAAc,KAAK,cAAc,CAAC;AAEtG,QAAA,IAAI,mBAAmB,KAAK,cAAc,IAAI,OAAO,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,CAAC,EAAE;AACpF,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC7D,SAAA;QAED,OAAO;AACL,YAAA,MAAM,EAAE;gBACN,UAAU,EAAE,OAAO,CAAC,EAAE;AACtB,gBAAA,KAAK,EAAE,QAAQ;gBACf,cAAc;AACf,aAAA;SACF,CAAA;AACH,KAAC,EAAE;AACD,QAAA,SAAS,EAAE;AACT,YAAA,cAAc,EAAE,SAAS;AACzB,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,UAAU,EAAE,IAAI;AACO,SAAA;AACzB,QAAA,OAAO,EAAE,MAAM;QACf,KAAK;AACN,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,kBAAkB,GAA0B;AAChD,QAAA,OAAO,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;AAC5D;;AAEG;AACH,QAAA,gBAAgB,EAAE,cAAe;QACjC,IAAI;KACL,CAAC;AAEF,IAAA,MAAM,UAAU,GAAkB;QAChC,IAAI;QACJ,KAAK;AACL,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,cAAc,EAAE,cAAe;AAC/B,QAAA,MAAM,EAAE,CAAC,EAAE,EAAE,SAAS,KAAKC,iCAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC;QAChE,IAAI,EAAE,CAAC,SAAS,KAAKC,6BAAc,CAAC,SAAS,EAAE,IAAI,CAAC;AACpD,QAAA,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,KAAKC,+BAAe,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC;QACxE,MAAM,EAAE,CAAC,EAAE,KAAKC,iCAAgB,CAAC,EAAE,EAAE,kBAAkB,CAAC;QACxD,MAAM,EAAE,CAAC,IAAI,KAAKC,iCAAgB,CAAC,IAAI,EAAE,kBAAkB,CAAC;QAC5D,GAAG,EAAE,CAAC,EAAE,KAAKC,2BAAa,CAAC,EAAE,EAAE,IAAI,CAAC;QACpC,MAAM,EAAE,CAAC,IAAI,KAAKC,iCAAgB,CAAC,IAAI,EAAE,kBAAkB,CAAC;AAC5D,QAAA,SAAS,EAAE,CAAC,MAAM,EAAE,KAAK,KAAKC,uCAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;KAC7E,CAAC;AAEF,IAAA,OAAO,UAAU,CAAC;AACpB;;;;"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var linkedListUtils = require('./linked-list-utils.js');
|
|
2
6
|
|
|
3
7
|
const findLinkedList = (predicate, list) => {
|
|
4
|
-
return walkListItemRecord((acc, item) => {
|
|
8
|
+
return linkedListUtils.walkListItemRecord((acc, item) => {
|
|
5
9
|
if (predicate(item)) {
|
|
6
10
|
return {
|
|
7
11
|
result: item,
|
|
@@ -20,5 +24,5 @@ const findLinkedList = (predicate, list) => {
|
|
|
20
24
|
});
|
|
21
25
|
};
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
exports.findLinkedList = findLinkedList;
|
|
24
28
|
//# sourceMappingURL=find-linked-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-linked-list.js","sources":["../../src/linked-list/find-linked-list.ts"],"sourcesContent":["import { LinkedListItem, ItemPredicate, HeadAndItems } from './type';\nimport { walkListItemRecord } from './linked-list-utils';\n\nexport const findLinkedList = <Item extends LinkedListItem>(\n predicate: ItemPredicate<Item>,\n list: HeadAndItems<Item>,\n): Item | null => {\n const { headId } = list;\n\n return walkListItemRecord(\n (acc, item) => {\n if (predicate(item)) {\n return {\n result: item,\n control: {\n stop: true,\n },\n };\n };\n\n return {\n result: acc,\n };\n }, {\n initValue: null as Item | null,\n items: list.items,\n startId: list.headId,\n },\n );\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"find-linked-list.js","sources":["../../src/linked-list/find-linked-list.ts"],"sourcesContent":["import { LinkedListItem, ItemPredicate, HeadAndItems } from './type';\nimport { walkListItemRecord } from './linked-list-utils';\n\nexport const findLinkedList = <Item extends LinkedListItem>(\n predicate: ItemPredicate<Item>,\n list: HeadAndItems<Item>,\n): Item | null => {\n const { headId } = list;\n\n return walkListItemRecord(\n (acc, item) => {\n if (predicate(item)) {\n return {\n result: item,\n control: {\n stop: true,\n },\n };\n };\n\n return {\n result: acc,\n };\n }, {\n initValue: null as Item | null,\n items: list.items,\n startId: list.headId,\n },\n );\n};\n"],"names":["walkListItemRecord"],"mappings":";;;;;;MAGa,cAAc,GAAG,CAC5B,SAA8B,EAC9B,IAAwB,KACT;AAGf,IAAA,OAAOA,kCAAkB,CACvB,CAAC,GAAG,EAAE,IAAI,KAAI;AACZ,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;YACnB,OAAO;AACL,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;aACF,CAAC;AACH,SAAA;QAED,OAAO;AACL,YAAA,MAAM,EAAE,GAAG;SACZ,CAAC;AACJ,KAAC,EAAE;AACD,QAAA,SAAS,EAAE,IAAmB;QAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,MAAM;AACrB,KAAA,CACF,CAAC;AACJ;;;;"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
1
5
|
const getLinkedList = (id, list) => {
|
|
2
6
|
if (list.items[id]) {
|
|
3
7
|
return list.items[id];
|
|
@@ -5,5 +9,5 @@ const getLinkedList = (id, list) => {
|
|
|
5
9
|
return null;
|
|
6
10
|
};
|
|
7
11
|
|
|
8
|
-
|
|
12
|
+
exports.getLinkedList = getLinkedList;
|
|
9
13
|
//# sourceMappingURL=get-linked-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-linked-list.js","sources":["../../src/linked-list/get-linked-list.ts"],"sourcesContent":["import { HeadAndItems, LinkedListItem } from './type';\n\nexport const getLinkedList = <T extends LinkedListItem>(id: string, list: HeadAndItems<T>) => {\n if (list.items[id]) {\n return list.items[id];\n }\n\n return null;\n}"],"names":[],"mappings":"MAEa,aAAa,GAAG,CAA2B,EAAU,EAAE,IAAqB,KAAI;AAC3F,IAAA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACvB,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AACd;;;;"}
|
|
1
|
+
{"version":3,"file":"get-linked-list.js","sources":["../../src/linked-list/get-linked-list.ts"],"sourcesContent":["import { HeadAndItems, LinkedListItem } from './type';\n\nexport const getLinkedList = <T extends LinkedListItem>(id: string, list: HeadAndItems<T>) => {\n if (list.items[id]) {\n return list.items[id];\n }\n\n return null;\n}"],"names":[],"mappings":";;;;MAEa,aAAa,GAAG,CAA2B,EAAU,EAAE,IAAqB,KAAI;AAC3F,IAAA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACvB,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AACd;;;;"}
|
package/linked-list/index.js
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var createLinkedList = require('./create-linked-list.js');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
exports.createLinkedList = createLinkedList.createLinkedList;
|
|
2
10
|
//# sourceMappingURL=index.js.map
|
package/linked-list/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,14 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var linkedListUtils = require('./linked-list-utils.js');
|
|
2
6
|
|
|
3
7
|
const insertLinkedList = (item, config) => {
|
|
4
8
|
const { isDoubleLinkList, list, factory } = config;
|
|
5
|
-
assertItemCompatibility(item, isDoubleLinkList);
|
|
6
|
-
assertPresence(item.nextId, list.items);
|
|
7
|
-
assertPresence(item.previousId, list.items);
|
|
9
|
+
linkedListUtils.assertItemCompatibility(item, isDoubleLinkList);
|
|
10
|
+
linkedListUtils.assertPresence(item.nextId, list.items);
|
|
11
|
+
linkedListUtils.assertPresence(item.previousId, list.items);
|
|
8
12
|
const previousId = isDoubleLinkList
|
|
9
13
|
? item.previousId
|
|
10
|
-
: findPreviousId(item.nextId, list);
|
|
11
|
-
assertNewNodePosition(item, {
|
|
14
|
+
: linkedListUtils.findPreviousId(item.nextId, list);
|
|
15
|
+
linkedListUtils.assertNewNodePosition(item, {
|
|
12
16
|
previousId,
|
|
13
17
|
list,
|
|
14
18
|
});
|
|
@@ -24,5 +28,5 @@ const insertLinkedList = (item, config) => {
|
|
|
24
28
|
});
|
|
25
29
|
};
|
|
26
30
|
|
|
27
|
-
|
|
31
|
+
exports.insertLinkedList = insertLinkedList;
|
|
28
32
|
//# sourceMappingURL=insert-linked-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-linked-list.js","sources":["../../src/linked-list/insert-linked-list.ts"],"sourcesContent":["import { ManipulationConfig, LinkedListItem } from './type';\n\nimport {\n findPreviousId,\n assertItemCompatibility,\n assertPresence,\n assertNewNodePosition,\n} from './linked-list-utils';\n\nexport const insertLinkedList = <T extends LinkedListItem>(item: T, config: ManipulationConfig<T>) => {\n const { isDoubleLinkList, list, factory } = config;\n\n assertItemCompatibility(item, isDoubleLinkList);\n assertPresence(item.nextId, list.items);\n assertPresence(item.previousId, list.items);\n\n const previousId = isDoubleLinkList\n ? item.previousId!\n : findPreviousId(item.nextId, list);\n\n assertNewNodePosition(item, {\n previousId,\n list,\n });\n\n const newHeadId = item.nextId === list.headId ? item.id : list.headId;\n const newItems = {\n ...list.items,\n ...(previousId ? {\n [previousId]: {\n ...list.items[previousId],\n nextId: item.id,\n },\n } : {}),\n ...(isDoubleLinkList && item.nextId ? {\n [item.nextId]: {\n ...list.items[item.nextId],\n ...(isDoubleLinkList ? { previousId: item.id } : {}),\n },\n } : {}),\n [item.id]: item,\n };\n\n return factory({\n headId: newHeadId,\n items: newItems,\n });\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"insert-linked-list.js","sources":["../../src/linked-list/insert-linked-list.ts"],"sourcesContent":["import { ManipulationConfig, LinkedListItem } from './type';\n\nimport {\n findPreviousId,\n assertItemCompatibility,\n assertPresence,\n assertNewNodePosition,\n} from './linked-list-utils';\n\nexport const insertLinkedList = <T extends LinkedListItem>(item: T, config: ManipulationConfig<T>) => {\n const { isDoubleLinkList, list, factory } = config;\n\n assertItemCompatibility(item, isDoubleLinkList);\n assertPresence(item.nextId, list.items);\n assertPresence(item.previousId, list.items);\n\n const previousId = isDoubleLinkList\n ? item.previousId!\n : findPreviousId(item.nextId, list);\n\n assertNewNodePosition(item, {\n previousId,\n list,\n });\n\n const newHeadId = item.nextId === list.headId ? item.id : list.headId;\n const newItems = {\n ...list.items,\n ...(previousId ? {\n [previousId]: {\n ...list.items[previousId],\n nextId: item.id,\n },\n } : {}),\n ...(isDoubleLinkList && item.nextId ? {\n [item.nextId]: {\n ...list.items[item.nextId],\n ...(isDoubleLinkList ? { previousId: item.id } : {}),\n },\n } : {}),\n [item.id]: item,\n };\n\n return factory({\n headId: newHeadId,\n items: newItems,\n });\n};\n"],"names":["assertItemCompatibility","assertPresence","findPreviousId","assertNewNodePosition"],"mappings":";;;;;;MASa,gBAAgB,GAAG,CAA2B,IAAO,EAAE,MAA6B,KAAI;IACnG,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;AAEnD,IAAAA,uCAAuB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAChDC,8BAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACxCA,8BAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,gBAAgB;UAC/B,IAAI,CAAC,UAAW;UAChBC,8BAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEtCC,qCAAqB,CAAC,IAAI,EAAE;QAC1B,UAAU;QACV,IAAI;AACL,KAAA,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IACtE,MAAM,QAAQ,GACT,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,KAAK,IACT,UAAU,GAAG;AACf,QAAA,CAAC,UAAU,GACN,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KACzB,MAAM,EAAE,IAAI,CAAC,EAAE,EAChB,CAAA;AACF,KAAA,GAAG,EAAE,EACH,GAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,GAAG;AACpC,QAAA,CAAC,IAAI,CAAC,MAAM,GACP,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CACvB,GAAC,gBAAgB,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,EACpD;AACF,KAAA,GAAG,EAAE,EACN,EAAA,EAAA,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,GAChB,CAAC;AAEF,IAAA,OAAO,OAAO,CAAC;AACb,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA,CAAC,CAAC;AACL;;;;"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var runWhile = require('../fp/run-while.js');
|
|
2
6
|
|
|
3
7
|
const walkListItemRecord = (callback, config) => {
|
|
4
8
|
var _a;
|
|
5
9
|
const { items, startId, initValue } = config;
|
|
6
10
|
const visited = new Set();
|
|
7
11
|
const totalNodes = Object.keys(items).length;
|
|
8
|
-
const { iterationCount, result } = runWhile({
|
|
12
|
+
const { iterationCount, result } = runWhile.runWhile({
|
|
9
13
|
iterationLimit: totalNodes + 1,
|
|
10
14
|
initialValue: {
|
|
11
15
|
currentId: startId,
|
|
@@ -92,5 +96,9 @@ const assertNewNodePosition = (item, config) => {
|
|
|
92
96
|
}
|
|
93
97
|
};
|
|
94
98
|
|
|
95
|
-
|
|
99
|
+
exports.assertItemCompatibility = assertItemCompatibility;
|
|
100
|
+
exports.assertNewNodePosition = assertNewNodePosition;
|
|
101
|
+
exports.assertPresence = assertPresence;
|
|
102
|
+
exports.findPreviousId = findPreviousId;
|
|
103
|
+
exports.walkListItemRecord = walkListItemRecord;
|
|
96
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":"
|
|
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":";;;;;;MAwBa,kBAAkB,GAAG,CAChC,QAAiC,EACjC,MAA6B,KAC3B;;IACF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;AAC7C,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAE7C,IAAA,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAGA,iBAAQ,CAAC;QAC1C,cAAc,EAAE,UAAU,GAAG,CAAC;AAC9B,QAAA,YAAY,EAAE;AACZ,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,KAAK;AACZ,aAAA;AACuB,SAAA;QAC1B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAI;YACpC,MAAM,IAAI,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI,CAAC;AAC3B,YAAA,MAAM,UAAU,GAAG,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;AAErD;;AAEG;AACH,YAAA,OAAO,CAAC,UAAU,IAAI,SAAS,KAAK,IAAI,CAAC;SAC1C;AACD,QAAA,QAAQ,EAAE,CAAC,OAAO,KAAI;YACpB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAClC,gBAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACxC,aAAA;AAED,YAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAE/B,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAU,CAAC,CAAC;YAE9C,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACxC,aAAA;AAED,YAAA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAEvE,OAAO;AACL,gBAAA,WAAW,EAAE,MAAM;gBACnB,SAAS,EAAE,WAAW,CAAC,MAAM;AAC7B,gBAAA,OAAO,EAAE,OAAO;aACjB,CAAC;SACH;AACF,KAAA,CAAC,CAAC;AAEH;;;AAGG;AACH,IAAA,IAAI,cAAc,KAAK,UAAU,IAAI,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,MAAK,IAAI,EAAE;AAClE,QAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACzC,KAAA;IAED,OAAO,MAAM,CAAC,WAAW,CAAC;AAC5B,EAAE;MAEW,cAAc,GAAG,CAA2B,EAAiB,EAAE,IAAqB,KAAI;AACnG,IAAA,IAAI,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE;AACtB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,OAAO,kBAAkB,CACvB,CAAC,GAAG,EAAE,OAAO,KAAI;AACf,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,EAAE;YACzB,OAAO;gBACL,MAAM,EAAE,OAAO,CAAC,EAAE;AAClB,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;aACF,CAAC;AACH,SAAA;QAED,OAAO;AACL,YAAA,MAAM,EAAE,GAAG;SACZ,CAAA;AACH,KAAC,EACD;AACE,QAAA,SAAS,EAAE,IAAqB;QAChC,OAAO,EAAE,IAAI,CAAC,MAAM;QACpB,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,KAAA,CACF,CAAA;AACH,EAAE;MAEW,uBAAuB,GAAG,CAA2B,IAAO,EAAE,gBAAyB,KAAI;IACtG,MAAM,2BAA2B,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,gBAAgB,CAAC;IACtF,MAAM,0BAA0B,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC;IAEtF,IAAI,2BAA2B,IAAI,0BAA0B,EAAE;QAC7D,MAAM,IAAI,KAAK,CAAC,CAAA,wCAAA,EAA2C,IAAI,CAAC,EAAE,CAAG,CAAA,CAAA,CAAC,CAAC;AACxE,KAAA;AACH,EAAC;MAEY,cAAc,GAAG,CAAC,EAA6B,EAAE,KAA8B,KAAI;AAC9F,IAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,EAAE,CAAA,CAAA,CAAG,CAAC,CAAC;AAC3D,KAAA;AACH,EAAC;MAOY,qBAAqB,GAAG,CAA2B,IAAO,EAAE,MAA+B,KAAI;AAC1G,IAAA,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;AAEpC,IAAA,MAAM,oBAAoB,GAAG,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;IACzF,MAAM,kBAAkB,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC;AACxG,IAAA,MAAM,kBAAkB,GAAG,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;AAE9E,IAAA,IAAI,oBAAoB,IAAI,kBAAkB,IAAI,kBAAkB,EAAE;QACpE,MAAM,IAAI,KAAK,CAAC,CAAA,qCAAA,EAAwC,IAAI,CAAC,EAAE,CAAG,CAAA,CAAA,CAAC,CAAC;AACrE,KAAA;AACH;;;;;;;;"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var linkedListUtils = require('./linked-list-utils.js');
|
|
2
6
|
|
|
3
7
|
const reduceLinkedList = (cb, initValue, list) => {
|
|
4
8
|
const { items, headId } = list;
|
|
5
|
-
return walkListItemRecord((acc, current) => {
|
|
9
|
+
return linkedListUtils.walkListItemRecord((acc, current) => {
|
|
6
10
|
return {
|
|
7
11
|
result: cb(acc, current),
|
|
8
12
|
};
|
|
@@ -13,5 +17,5 @@ const reduceLinkedList = (cb, initValue, list) => {
|
|
|
13
17
|
});
|
|
14
18
|
};
|
|
15
19
|
|
|
16
|
-
|
|
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":"
|
|
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,13 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _tslib = require('../_virtual/_tslib.js');
|
|
6
|
+
var linkedListUtils = require('./linked-list-utils.js');
|
|
3
7
|
|
|
4
8
|
const removeLinkedList = (id, config) => {
|
|
5
9
|
const { isDoubleLinkList, list, factory } = config;
|
|
6
|
-
const _a = list.items, _b = id, itemToDelete = _a[_b], otherItems = __rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
|
|
7
|
-
assertPresence(id, list.items);
|
|
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);
|
|
8
12
|
const previousId = isDoubleLinkList
|
|
9
13
|
? itemToDelete.previousId
|
|
10
|
-
: findPreviousId(id, list);
|
|
14
|
+
: linkedListUtils.findPreviousId(id, list);
|
|
11
15
|
const newHeadId = previousId === null ? itemToDelete.nextId : list.headId;
|
|
12
16
|
const newItems = Object.assign(Object.assign(Object.assign({}, otherItems), (previousId ? {
|
|
13
17
|
[previousId]: Object.assign(Object.assign({}, otherItems[previousId]), { nextId: itemToDelete.nextId }),
|
|
@@ -20,5 +24,5 @@ const removeLinkedList = (id, config) => {
|
|
|
20
24
|
});
|
|
21
25
|
};
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
exports.removeLinkedList = removeLinkedList;
|
|
24
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":"
|
|
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,13 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _tslib = require('../_virtual/_tslib.js');
|
|
6
|
+
var linkedListUtils = require('./linked-list-utils.js');
|
|
3
7
|
|
|
4
8
|
const updateLinkedList = (item, config) => {
|
|
5
9
|
const { list, factory } = config;
|
|
6
|
-
assertPresence(item.id, list.items);
|
|
10
|
+
linkedListUtils.assertPresence(item.id, list.items);
|
|
7
11
|
/**
|
|
8
12
|
* This method should not update any ids.
|
|
9
13
|
*/
|
|
10
|
-
const updatableProperties = __rest(item, ["nextId", "previousId", "id"]);
|
|
14
|
+
const updatableProperties = _tslib.__rest(item, ["nextId", "previousId", "id"]);
|
|
11
15
|
const currentItem = list.items[item.id];
|
|
12
16
|
const newItems = Object.assign(Object.assign({}, list.items), { [item.id]: Object.assign(Object.assign({}, currentItem), updatableProperties) });
|
|
13
17
|
return factory({
|
|
@@ -16,5 +20,5 @@ const updateLinkedList = (item, config) => {
|
|
|
16
20
|
});
|
|
17
21
|
};
|
|
18
22
|
|
|
19
|
-
|
|
23
|
+
exports.updateLinkedList = updateLinkedList;
|
|
20
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":"
|
|
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,10 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var linkedListUtils = require('./linked-list-utils.js');
|
|
2
6
|
|
|
3
7
|
const whileLinkedList = (predicate, list, startId) => {
|
|
4
8
|
if (startId && !list.items[startId]) {
|
|
5
9
|
throw new Error('Cannot start from a node that does not exist');
|
|
6
10
|
}
|
|
7
|
-
return walkListItemRecord((acc, item) => {
|
|
11
|
+
return linkedListUtils.walkListItemRecord((acc, item) => {
|
|
8
12
|
const itemMatched = predicate(item);
|
|
9
13
|
if (itemMatched) {
|
|
10
14
|
return {
|
|
@@ -24,5 +28,5 @@ const whileLinkedList = (predicate, list, startId) => {
|
|
|
24
28
|
});
|
|
25
29
|
};
|
|
26
30
|
|
|
27
|
-
|
|
31
|
+
exports.whileLinkedList = whileLinkedList;
|
|
28
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":"
|
|
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;;;;"}
|
package/math/clamp-number.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var numberRange = require('./number-range.js');
|
|
2
6
|
|
|
3
7
|
const clampNumber = (num, { min, max }) => {
|
|
4
|
-
assertNumberRange({ min, max });
|
|
8
|
+
numberRange.assertNumberRange({ min, max });
|
|
5
9
|
return Math.min(Math.max(num, min), max);
|
|
6
10
|
};
|
|
7
11
|
|
|
8
|
-
|
|
12
|
+
exports.clampNumber = clampNumber;
|
|
9
13
|
//# sourceMappingURL=clamp-number.js.map
|
package/math/clamp-number.js.map
CHANGED
|
@@ -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":"
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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":";;;;;;;;;;;;;;;"}
|
package/math/interpolate.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var numberRange = require('./number-range.js');
|
|
2
6
|
|
|
3
7
|
const interpolate = (num, inputRange, outputRange) => {
|
|
4
8
|
const [x1, x2] = inputRange;
|
|
@@ -6,11 +10,11 @@ const interpolate = (num, inputRange, 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 })) {
|
|
13
|
+
if (!numberRange.isNumberInRange(num, { min: x1, max: x2 })) {
|
|
10
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
|
-
|
|
19
|
+
exports.interpolate = interpolate;
|
|
16
20
|
//# sourceMappingURL=interpolate.js.map
|
package/math/interpolate.js.map
CHANGED
|
@@ -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":"
|
|
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;;;;"}
|
package/math/number-range.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
1
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');
|
|
@@ -8,5 +12,6 @@ const isNumberInRange = (num, { min, max }) => {
|
|
|
8
12
|
return num >= min && num <= max;
|
|
9
13
|
};
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
exports.assertNumberRange = assertNumberRange;
|
|
16
|
+
exports.isNumberInRange = isNumberInRange;
|
|
12
17
|
//# sourceMappingURL=number-range.js.map
|
package/math/number-range.js.map
CHANGED
|
@@ -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":"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
|
+
{"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;;;;;"}
|
package/math/random-number.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var numberRange = require('./number-range.js');
|
|
2
6
|
|
|
3
7
|
const randomNumber = ({ min, max }) => {
|
|
4
|
-
assertNumberRange({ min, max });
|
|
8
|
+
numberRange.assertNumberRange({ min, max });
|
|
5
9
|
return Math.floor(Math.random() * (max - min) + min);
|
|
6
10
|
};
|
|
7
11
|
|
|
8
|
-
|
|
12
|
+
exports.randomNumber = randomNumber;
|
|
9
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":"
|
|
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
|
-
|
|
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
|
package/object/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":";;;;;;;;"}
|
package/object/merge-deep.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
1
5
|
// https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript/8511350#8511350
|
|
2
6
|
const isObject = (a) => typeof a === 'object' && a !== null;
|
|
3
7
|
const isValueType = (a) => (!isObject(a) || Array.isArray(a));
|
|
@@ -17,5 +21,5 @@ const mergeDeep = (a, b) => {
|
|
|
17
21
|
}, a);
|
|
18
22
|
};
|
|
19
23
|
|
|
20
|
-
|
|
24
|
+
exports.mergeDeep = mergeDeep;
|
|
21
25
|
//# sourceMappingURL=merge-deep.js.map
|