@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.
- package/_virtual/_tslib.js +6 -50
- package/_virtual/_tslib.js.map +1 -1
- package/array/array-to-map.js +10 -9
- package/array/array-to-map.js.map +1 -1
- package/array/get-values-from-keys.js +7 -3
- 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 +12 -5
- 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 +11 -7
- package/date/format-minutes.js.map +1 -1
- package/date/get-time-diff-as-string.js +41 -39
- 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 +12 -8
- 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 +10 -7
- package/fp/run-while.js.map +1 -1
- package/http/encode-search-object.js +15 -14
- package/http/encode-search-object.js.map +1 -1
- package/http/fetch-with-timeout.js +11 -7
- 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 +7 -3
- package/linked-list/apply-diff-linked-list.js.map +1 -1
- package/linked-list/create-linked-list.js +38 -34
- package/linked-list/create-linked-list.js.map +1 -1
- package/linked-list/find-linked-list.js +8 -5
- package/linked-list/find-linked-list.js.map +1 -1
- package/linked-list/get-linked-list.js +6 -2
- 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 +22 -20
- package/linked-list/insert-linked-list.js.map +1 -1
- package/linked-list/linked-list-utils.js +36 -29
- package/linked-list/linked-list-utils.js.map +1 -1
- package/linked-list/reduce-linked-list.js +11 -7
- package/linked-list/reduce-linked-list.js.map +1 -1
- package/linked-list/remove-linked-list.js +19 -16
- package/linked-list/remove-linked-list.js.map +1 -1
- package/linked-list/update-linked-list.js +13 -10
- package/linked-list/update-linked-list.js.map +1 -1
- package/linked-list/while-linked-list.js +10 -7
- package/linked-list/while-linked-list.js.map +1 -1
- package/math/clamp-number.js +8 -5
- 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 +11 -7
- package/math/interpolate.js.map +1 -1
- package/math/number-range.js +9 -5
- package/math/number-range.js.map +1 -1
- package/math/random-number.js +8 -5
- 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 +10 -9
- 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 +6 -2
- package/parsing/parse-boolean.js.map +1 -1
- package/parsing/parse-enum.js +8 -4
- package/parsing/parse-enum.js.map +1 -1
- package/parsing/parse-number.js +7 -3
- 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 +6 -2
- package/predicates/is-function.js.map +1 -1
- package/predicates/is-null.js +6 -2
- package/predicates/is-null.js.map +1 -1
- package/predicates/is-object.js +6 -2
- package/predicates/is-object.js.map +1 -1
- package/predicates/is-primitive.js +10 -5
- package/predicates/is-primitive.js.map +1 -1
- package/predicates/is-undefined.js +6 -2
- package/predicates/is-undefined.js.map +1 -1
- package/promise/delay.js +7 -3
- package/promise/delay.js.map +1 -1
- package/promise/execute-or-resolve-default.js +7 -3
- package/promise/execute-or-resolve-default.js.map +1 -1
- package/promise/execute-with-delay.js +11 -13
- 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 +15 -13
- package/string/replace-in-template.js.map +1 -1
- package/types/index.js +1 -0
- package/types/index.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode-search-object.js","sources":["../../src/http/encode-search-object.ts"],"sourcesContent":["import { SearchObject } from '../types';\n\nexport type EncodingConfig = {\n keyValueDelimiter: string,\n pairDelimiter: string,\n};\n\nconst defaultEncodingConfig: EncodingConfig = {\n keyValueDelimiter: ':',\n pairDelimiter: '+',\n};\n\nexport const encodeSearchValue = <T extends Record<string, string>>(\n searchValue: T,\n config: EncodingConfig = defaultEncodingConfig,\n) => {\n const { pairDelimiter, keyValueDelimiter } = config;\n\n return Object.entries(searchValue)\n .map(([key, value]) => `${key}${keyValueDelimiter}${encodeURI(value)}`)\n .join(pairDelimiter);\n};\n\nexport const encodeSearchObject = (searchObject: SearchObject): string => {\n const { sort, query, offset, limit } = searchObject;\n\n const sortEncoded = sort ? encodeSearchValue(sort) : null;\n const queryEncoded = query ? encodeSearchValue(query) : null;\n\n const urlParams = new URLSearchParams({\n offset: offset.toString(),\n limit: limit.toString(),\n });\n\n if (sortEncoded) urlParams.append('sort', sortEncoded);\n if (queryEncoded) urlParams.append('query', queryEncoded);\n\n return urlParams.toString();\n};\n"],"names":[],"mappings":"AAOA,
|
|
1
|
+
{"version":3,"file":"encode-search-object.js","sources":["../../src/http/encode-search-object.ts"],"sourcesContent":["import { SearchObject } from '../types';\n\nexport type EncodingConfig = {\n keyValueDelimiter: string,\n pairDelimiter: string,\n};\n\nconst defaultEncodingConfig: EncodingConfig = {\n keyValueDelimiter: ':',\n pairDelimiter: '+',\n};\n\nexport const encodeSearchValue = <T extends Record<string, string>>(\n searchValue: T,\n config: EncodingConfig = defaultEncodingConfig,\n) => {\n const { pairDelimiter, keyValueDelimiter } = config;\n\n return Object.entries(searchValue)\n .map(([key, value]) => `${key}${keyValueDelimiter}${encodeURI(value)}`)\n .join(pairDelimiter);\n};\n\nexport const encodeSearchObject = (searchObject: SearchObject): string => {\n const { sort, query, offset, limit } = searchObject;\n\n const sortEncoded = sort ? encodeSearchValue(sort) : null;\n const queryEncoded = query ? encodeSearchValue(query) : null;\n\n const urlParams = new URLSearchParams({\n offset: offset.toString(),\n limit: limit.toString(),\n });\n\n if (sortEncoded) urlParams.append('sort', sortEncoded);\n if (queryEncoded) urlParams.append('query', queryEncoded);\n\n return urlParams.toString();\n};\n"],"names":[],"mappings":";;;;AAOA,MAAM,qBAAqB,GAAmB;AAC5C,IAAA,iBAAiB,EAAE,GAAG;AACtB,IAAA,aAAa,EAAE,GAAG;CACnB,CAAC;AAEW,MAAA,iBAAiB,GAAG,CAC/B,WAAc,EACd,MAAA,GAAyB,qBAAqB,KAC5C;AACF,IAAA,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;AAEpD,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,GAAG,CAAA,EAAG,iBAAiB,CAAG,EAAA,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;SACtE,IAAI,CAAC,aAAa,CAAC,CAAC;AACzB,EAAE;AAEW,MAAA,kBAAkB,GAAG,CAAC,YAA0B,KAAY;IACvE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;AAEpD,IAAA,MAAM,WAAW,GAAG,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC1D,IAAA,MAAM,YAAY,GAAG,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAE7D,IAAA,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC;AACpC,QAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;AACzB,QAAA,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;AACxB,KAAA,CAAC,CAAC;AAEH,IAAA,IAAI,WAAW;AAAE,QAAA,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACvD,IAAA,IAAI,YAAY;AAAE,QAAA,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAE1D,IAAA,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC9B;;;;;"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _tslib = require('../_virtual/_tslib.js');
|
|
2
6
|
|
|
3
7
|
/**
|
|
4
8
|
* Use fetch to perform an HTTP request
|
|
5
9
|
* Add an optional timeout, that will abort the request if it has not returned before
|
|
6
10
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
const fetchWithTimeout = (input, init) => {
|
|
12
|
+
const abortController = new AbortController();
|
|
13
|
+
const _a = init || {}, { timeout } = _a, rest = _tslib.__rest(_a, ["timeout"]);
|
|
14
|
+
const params = Object.assign(Object.assign({}, rest), { signal: abortController.signal });
|
|
11
15
|
if (timeout !== undefined) {
|
|
12
|
-
setTimeout(
|
|
16
|
+
setTimeout(() => abortController.abort(), timeout);
|
|
13
17
|
}
|
|
14
18
|
return fetch(input, params);
|
|
15
19
|
};
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
exports.fetchWithTimeout = fetchWithTimeout;
|
|
18
22
|
//# sourceMappingURL=fetch-with-timeout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-with-timeout.js","sources":["../../src/http/fetch-with-timeout.ts"],"sourcesContent":["export type RequestInitWithTimeout = RequestInit & {\n timeout?: number\n};\n\n/**\n * Use fetch to perform an HTTP request\n * Add an optional timeout, that will abort the request if it has not returned before\n */\nexport const fetchWithTimeout = (input: RequestInfo, init?: Omit<RequestInitWithTimeout, 'signal'> | undefined): Promise<Response> => {\n const abortController = new AbortController();\n\n const { timeout, ...rest } = init || {};\n\n const params = {\n ...rest,\n signal: abortController.signal,\n };\n\n if (timeout !== undefined) {\n setTimeout(() => abortController.abort(), timeout);\n }\n\n return fetch(input, params);\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetch-with-timeout.js","sources":["../../src/http/fetch-with-timeout.ts"],"sourcesContent":["export type RequestInitWithTimeout = RequestInit & {\n timeout?: number\n};\n\n/**\n * Use fetch to perform an HTTP request\n * Add an optional timeout, that will abort the request if it has not returned before\n */\nexport const fetchWithTimeout = (input: RequestInfo, init?: Omit<RequestInitWithTimeout, 'signal'> | undefined): Promise<Response> => {\n const abortController = new AbortController();\n\n const { timeout, ...rest } = init || {};\n\n const params = {\n ...rest,\n signal: abortController.signal,\n };\n\n if (timeout !== undefined) {\n setTimeout(() => abortController.abort(), timeout);\n }\n\n return fetch(input, params);\n};\n"],"names":["__rest"],"mappings":";;;;;;AAIA;;;AAGG;MACU,gBAAgB,GAAG,CAAC,KAAkB,EAAE,IAAyD,KAAuB;AACnI,IAAA,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;AAE9C,IAAA,MAAM,EAAuB,GAAA,IAAI,IAAI,EAAE,EAAjC,EAAE,OAAO,EAAA,GAAA,EAAwB,EAAnB,IAAI,GAAlBA,aAAA,CAAA,EAAA,EAAA,CAAA,SAAA,CAAoB,CAAa,CAAC;IAExC,MAAM,MAAM,GACP,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CACP,EAAA,EAAA,MAAM,EAAE,eAAe,CAAC,MAAM,EAAA,CAC/B,CAAC;IAEF,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,UAAU,CAAC,MAAM,eAAe,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;AACpD,KAAA;AAED,IAAA,OAAO,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9B;;;;"}
|
package/http/index.js
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var encodeSearchObject = require('./encode-search-object.js');
|
|
6
|
+
var fetchWithTimeout = require('./fetch-with-timeout.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
exports.encodeSearchObject = encodeSearchObject.encodeSearchObject;
|
|
11
|
+
exports.encodeSearchValue = encodeSearchObject.encodeSearchValue;
|
|
12
|
+
exports.fetchWithTimeout = fetchWithTimeout.fetchWithTimeout;
|
|
3
13
|
//# sourceMappingURL=index.js.map
|
package/http/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/index.js
CHANGED
|
@@ -1,28 +1,68 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var arrayToMap = require('./array/array-to-map.js');
|
|
6
|
+
var getValuesFromKeys = require('./array/get-values-from-keys.js');
|
|
7
|
+
var constants = require('./date/constants.js');
|
|
8
|
+
var formatMinutes = require('./date/format-minutes.js');
|
|
9
|
+
var getTimeDiffAsString = require('./date/get-time-diff-as-string.js');
|
|
10
|
+
var formatNumber = require('./formatting/format-number.js');
|
|
11
|
+
var runWhile = require('./fp/run-while.js');
|
|
12
|
+
var encodeSearchObject = require('./http/encode-search-object.js');
|
|
13
|
+
var fetchWithTimeout = require('./http/fetch-with-timeout.js');
|
|
14
|
+
var createLinkedList = require('./linked-list/create-linked-list.js');
|
|
15
|
+
var clampNumber = require('./math/clamp-number.js');
|
|
16
|
+
var interpolate = require('./math/interpolate.js');
|
|
17
|
+
var numberRange = require('./math/number-range.js');
|
|
18
|
+
var randomNumber = require('./math/random-number.js');
|
|
19
|
+
var mergeDeep = require('./object/merge-deep.js');
|
|
20
|
+
var parseBoolean = require('./parsing/parse-boolean.js');
|
|
21
|
+
var parseEnum = require('./parsing/parse-enum.js');
|
|
22
|
+
var parseNumber = require('./parsing/parse-number.js');
|
|
23
|
+
var isFunction = require('./predicates/is-function.js');
|
|
24
|
+
var isNull = require('./predicates/is-null.js');
|
|
25
|
+
var isObject = require('./predicates/is-object.js');
|
|
26
|
+
var isPrimitive = require('./predicates/is-primitive.js');
|
|
27
|
+
var isUndefined = require('./predicates/is-undefined.js');
|
|
28
|
+
var executeOrResolveDefault = require('./promise/execute-or-resolve-default.js');
|
|
29
|
+
var executeWithDelay = require('./promise/execute-with-delay.js');
|
|
30
|
+
var delay = require('./promise/delay.js');
|
|
31
|
+
var replaceInTemplate = require('./string/replace-in-template.js');
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
exports.arrayToMap = arrayToMap.arrayToMap;
|
|
36
|
+
exports.valuesFromKeys = getValuesFromKeys.valuesFromKeys;
|
|
37
|
+
exports.MS_DAY = constants.MS_DAY;
|
|
38
|
+
exports.MS_HOUR = constants.MS_HOUR;
|
|
39
|
+
exports.MS_MINUTE = constants.MS_MINUTE;
|
|
40
|
+
exports.MS_SECOND = constants.MS_SECOND;
|
|
41
|
+
exports.formatMinutes = formatMinutes.formatMinutes;
|
|
42
|
+
exports.getTimeDiffAsString = getTimeDiffAsString.getTimeDiffAsString;
|
|
43
|
+
exports.formatNumber = formatNumber.formatNumber;
|
|
44
|
+
exports.runWhile = runWhile.runWhile;
|
|
45
|
+
exports.encodeSearchObject = encodeSearchObject.encodeSearchObject;
|
|
46
|
+
exports.encodeSearchValue = encodeSearchObject.encodeSearchValue;
|
|
47
|
+
exports.fetchWithTimeout = fetchWithTimeout.fetchWithTimeout;
|
|
48
|
+
exports.createLinkedList = createLinkedList.createLinkedList;
|
|
49
|
+
exports.clampNumber = clampNumber.clampNumber;
|
|
50
|
+
exports.interpolate = interpolate.interpolate;
|
|
51
|
+
exports.assertNumberRange = numberRange.assertNumberRange;
|
|
52
|
+
exports.isNumberInRange = numberRange.isNumberInRange;
|
|
53
|
+
exports.randomNumber = randomNumber.randomNumber;
|
|
54
|
+
exports.mergeDeep = mergeDeep.mergeDeep;
|
|
55
|
+
exports.parseBoolean = parseBoolean.parseBoolean;
|
|
56
|
+
exports.createEnumParser = parseEnum.createEnumParser;
|
|
57
|
+
exports.parseNumber = parseNumber.parseNumber;
|
|
58
|
+
exports.isFunction = isFunction.isFunction;
|
|
59
|
+
exports.isNull = isNull.isNull;
|
|
60
|
+
exports.isObject = isObject.isObject;
|
|
61
|
+
exports.isArrayOfPrimitive = isPrimitive.isArrayOfPrimitive;
|
|
62
|
+
exports.isPrimitive = isPrimitive.isPrimitive;
|
|
63
|
+
exports.isUndefined = isUndefined.isUndefined;
|
|
64
|
+
exports.executeOrResolveDefault = executeOrResolveDefault.executeOrResolveDefault;
|
|
65
|
+
exports.executeWithDelay = executeWithDelay.executeWithDelay;
|
|
66
|
+
exports.delay = delay.delay;
|
|
67
|
+
exports.replaceInTemplate = replaceInTemplate.replaceInTemplate;
|
|
28
68
|
//# sourceMappingURL=index.js.map
|
package/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,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const applyDiffLinkedList = (before, after, list) => {
|
|
2
6
|
// Delete
|
|
3
7
|
if (!after && before) {
|
|
4
8
|
return list.remove(before.id);
|
|
@@ -15,7 +19,7 @@ var applyDiffLinkedList = function (before, after, list) {
|
|
|
15
19
|
if (before.id !== after.id) {
|
|
16
20
|
throw new Error('Cannot change id of a ListNode');
|
|
17
21
|
}
|
|
18
|
-
|
|
22
|
+
const listWithPotentialReorder = before.nextId === after.nextId
|
|
19
23
|
? list
|
|
20
24
|
: list
|
|
21
25
|
.remove(before.id)
|
|
@@ -23,5 +27,5 @@ var applyDiffLinkedList = function (before, after, list) {
|
|
|
23
27
|
return listWithPotentialReorder.update(after);
|
|
24
28
|
};
|
|
25
29
|
|
|
26
|
-
|
|
30
|
+
exports.applyDiffLinkedList = applyDiffLinkedList;
|
|
27
31
|
//# sourceMappingURL=apply-diff-linked-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-diff-linked-list.js","sources":["../../src/linked-list/apply-diff-linked-list.ts"],"sourcesContent":["import { LinkedList, LinkedListItem, ManipulationConfig } from './type';\n\nexport const applyDiffLinkedList = <T extends LinkedListItem>(\n before: T | null,\n after: T | null,\n list: LinkedList<T>,\n) => {\n // Delete\n if (!after && before) {\n return list.remove(before.id);\n }\n\n // Insert\n if (!before && after) {\n return list.insert(after);\n }\n\n // For the following commands, none of the 2 items can be null\n // We dont use && because checks are already done above, but ts cannot infer that they cannot be null afterwards\n if (!before || !after) {\n throw new Error('Cannot have both before & after as null');\n }\n\n if (before.id !== after.id) {\n throw new Error('Cannot change id of a ListNode');\n }\n\n const listWithPotentialReorder = before.nextId === after.nextId\n ? list\n : list\n .remove(before.id)\n .insert(after);\n\n return listWithPotentialReorder.update(after);\n};"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apply-diff-linked-list.js","sources":["../../src/linked-list/apply-diff-linked-list.ts"],"sourcesContent":["import { LinkedList, LinkedListItem, ManipulationConfig } from './type';\n\nexport const applyDiffLinkedList = <T extends LinkedListItem>(\n before: T | null,\n after: T | null,\n list: LinkedList<T>,\n) => {\n // Delete\n if (!after && before) {\n return list.remove(before.id);\n }\n\n // Insert\n if (!before && after) {\n return list.insert(after);\n }\n\n // For the following commands, none of the 2 items can be null\n // We dont use && because checks are already done above, but ts cannot infer that they cannot be null afterwards\n if (!before || !after) {\n throw new Error('Cannot have both before & after as null');\n }\n\n if (before.id !== after.id) {\n throw new Error('Cannot change id of a ListNode');\n }\n\n const listWithPotentialReorder = before.nextId === after.nextId\n ? list\n : list\n .remove(before.id)\n .insert(after);\n\n return listWithPotentialReorder.update(after);\n};"],"names":[],"mappings":";;;;AAEa,MAAA,mBAAmB,GAAG,CACjC,MAAgB,EAChB,KAAe,EACf,IAAmB,KACjB;;AAEF,IAAA,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC/B,KAAA;;AAGD,IAAA,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;AACpB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,KAAA;;;AAID,IAAA,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;AACrB,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC5D,KAAA;AAED,IAAA,IAAI,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE;AAC1B,QAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACnD,KAAA;IAED,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AAC7D,UAAE,IAAI;AACN,UAAE,IAAI;AACH,aAAA,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aACjB,MAAM,CAAC,KAAK,CAAC,CAAC;AAEnB,IAAA,OAAO,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD;;;;"}
|
|
@@ -1,23 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
import { findLinkedList } from './find-linked-list.js';
|
|
3
|
-
import { whileLinkedList } from './while-linked-list.js';
|
|
4
|
-
import { walkListItemRecord } from './linked-list-utils.js';
|
|
5
|
-
import { removeLinkedList } from './remove-linked-list.js';
|
|
6
|
-
import { insertLinkedList } from './insert-linked-list.js';
|
|
7
|
-
import { getLinkedList } from './get-linked-list.js';
|
|
8
|
-
import { updateLinkedList } from './update-linked-list.js';
|
|
9
|
-
import { applyDiffLinkedList } from './apply-diff-linked-list.js';
|
|
1
|
+
'use strict';
|
|
10
2
|
|
|
11
|
-
|
|
12
|
-
|
|
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');
|
|
14
|
+
|
|
15
|
+
const createLinkedList = (headId, items) => {
|
|
16
|
+
const head = headId ? items[headId] : null;
|
|
13
17
|
if (head === undefined) {
|
|
14
18
|
throw new Error('Cannot find the head.');
|
|
15
19
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
const list = { headId, items };
|
|
21
|
+
const { isDoubleLinked, count } = linkedListUtils.walkListItemRecord((acc, current) => {
|
|
22
|
+
const newCount = acc.count + 1;
|
|
23
|
+
const isDoubleLinked = current.previousId !== undefined;
|
|
24
|
+
const incompatibleFormats = acc.isDoubleLinked !== undefined && acc.isDoubleLinked !== isDoubleLinked;
|
|
21
25
|
if (incompatibleFormats || (isDoubleLinked && current.previousId !== acc.previousId)) {
|
|
22
26
|
throw new Error('Invalid previous node in the linked list');
|
|
23
27
|
}
|
|
@@ -25,7 +29,7 @@ var createLinkedList = function (headId, items) {
|
|
|
25
29
|
result: {
|
|
26
30
|
previousId: current.id,
|
|
27
31
|
count: newCount,
|
|
28
|
-
isDoubleLinked
|
|
32
|
+
isDoubleLinked,
|
|
29
33
|
}
|
|
30
34
|
};
|
|
31
35
|
}, {
|
|
@@ -35,32 +39,32 @@ var createLinkedList = function (headId, items) {
|
|
|
35
39
|
previousId: null,
|
|
36
40
|
},
|
|
37
41
|
startId: headId,
|
|
38
|
-
items
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
factory:
|
|
42
|
+
items,
|
|
43
|
+
});
|
|
44
|
+
const manipulationConfig = {
|
|
45
|
+
factory: (list) => createLinkedList(list.headId, list.items),
|
|
42
46
|
/**
|
|
43
47
|
* At this point isDoubleLinked cannot be undefined
|
|
44
48
|
*/
|
|
45
49
|
isDoubleLinkList: isDoubleLinked,
|
|
46
|
-
list
|
|
50
|
+
list,
|
|
47
51
|
};
|
|
48
|
-
|
|
49
|
-
head
|
|
50
|
-
items
|
|
52
|
+
const linkedList = {
|
|
53
|
+
head,
|
|
54
|
+
items,
|
|
51
55
|
size: count,
|
|
52
56
|
isDoubleLinked: isDoubleLinked,
|
|
53
|
-
reduce:
|
|
54
|
-
find:
|
|
55
|
-
while:
|
|
56
|
-
remove:
|
|
57
|
-
insert:
|
|
58
|
-
get:
|
|
59
|
-
update:
|
|
60
|
-
applyDiff:
|
|
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,8 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var linkedListUtils = require('./linked-list-utils.js');
|
|
6
|
+
|
|
7
|
+
const findLinkedList = (predicate, list) => {
|
|
8
|
+
return linkedListUtils.walkListItemRecord((acc, item) => {
|
|
6
9
|
if (predicate(item)) {
|
|
7
10
|
return {
|
|
8
11
|
result: item,
|
|
@@ -21,5 +24,5 @@ var findLinkedList = function (predicate, list) {
|
|
|
21
24
|
});
|
|
22
25
|
};
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
exports.findLinkedList = findLinkedList;
|
|
25
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,9 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const getLinkedList = (id, list) => {
|
|
2
6
|
if (list.items[id]) {
|
|
3
7
|
return list.items[id];
|
|
4
8
|
}
|
|
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":"
|
|
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,30 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
import { assertItemCompatibility, assertPresence, findPreviousId, assertNewNodePosition } from './linked-list-utils.js';
|
|
1
|
+
'use strict';
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var linkedListUtils = require('./linked-list-utils.js');
|
|
6
|
+
|
|
7
|
+
const insertLinkedList = (item, config) => {
|
|
8
|
+
const { isDoubleLinkList, list, factory } = config;
|
|
9
|
+
linkedListUtils.assertItemCompatibility(item, isDoubleLinkList);
|
|
10
|
+
linkedListUtils.assertPresence(item.nextId, list.items);
|
|
11
|
+
linkedListUtils.assertPresence(item.previousId, list.items);
|
|
12
|
+
const previousId = isDoubleLinkList
|
|
11
13
|
? item.previousId
|
|
12
|
-
: findPreviousId(item.nextId, list);
|
|
13
|
-
assertNewNodePosition(item, {
|
|
14
|
-
previousId
|
|
15
|
-
list
|
|
14
|
+
: linkedListUtils.findPreviousId(item.nextId, list);
|
|
15
|
+
linkedListUtils.assertNewNodePosition(item, {
|
|
16
|
+
previousId,
|
|
17
|
+
list,
|
|
16
18
|
});
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
const newHeadId = item.nextId === list.headId ? item.id : list.headId;
|
|
20
|
+
const newItems = Object.assign(Object.assign(Object.assign(Object.assign({}, list.items), (previousId ? {
|
|
21
|
+
[previousId]: Object.assign(Object.assign({}, list.items[previousId]), { nextId: item.id }),
|
|
22
|
+
} : {})), (isDoubleLinkList && item.nextId ? {
|
|
23
|
+
[item.nextId]: Object.assign(Object.assign({}, list.items[item.nextId]), (isDoubleLinkList ? { previousId: item.id } : {})),
|
|
24
|
+
} : {})), { [item.id]: item });
|
|
23
25
|
return factory({
|
|
24
26
|
headId: newHeadId,
|
|
25
27
|
items: newItems,
|
|
26
28
|
});
|
|
27
29
|
};
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
exports.insertLinkedList = insertLinkedList;
|
|
30
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;;;;"}
|