lib0 0.2.43 → 0.2.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/cache.d.ts +50 -0
- package/cache.d.ts.map +1 -0
- package/cache.js +178 -0
- package/cache.test.d.ts +3 -0
- package/cache.test.d.ts.map +1 -0
- package/diff.d.ts +5 -0
- package/diff.d.ts.map +1 -1
- package/diff.js +47 -10
- package/diff.test.d.ts +1 -0
- package/diff.test.d.ts.map +1 -1
- package/dist/{broadcastchannel-044f32d2.cjs → broadcastchannel-7da37795.cjs} +2 -2
- package/dist/{broadcastchannel-044f32d2.cjs.map → broadcastchannel-7da37795.cjs.map} +1 -1
- package/dist/broadcastchannel.cjs +4 -4
- package/dist/{buffer-49880125.cjs → buffer-b0dea3b0.cjs} +3 -3
- package/dist/{buffer-49880125.cjs.map → buffer-b0dea3b0.cjs.map} +1 -1
- package/dist/buffer.cjs +3 -3
- package/dist/cache.cjs +185 -0
- package/dist/cache.cjs.map +1 -0
- package/dist/cache.d.ts +50 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.test.d.ts +3 -0
- package/dist/cache.test.d.ts.map +1 -0
- package/dist/component.cjs +2 -2
- package/dist/decoding.cjs +3 -3
- package/dist/{diff-75787d87.cjs → diff-233747fa.cjs} +51 -12
- package/dist/diff-233747fa.cjs.map +1 -0
- package/dist/diff.cjs +2 -1
- package/dist/diff.cjs.map +1 -1
- package/dist/diff.d.ts +5 -0
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.test.d.ts +1 -0
- package/dist/diff.test.d.ts.map +1 -1
- package/dist/dom.d.ts.map +1 -1
- package/dist/encoding.cjs +3 -3
- package/dist/{environment-7e2ffaea.cjs → environment-60b83194.cjs} +2 -2
- package/dist/{environment-7e2ffaea.cjs.map → environment-60b83194.cjs.map} +1 -1
- package/dist/environment.cjs +2 -2
- package/dist/index.cjs +9 -9
- package/dist/list.cjs +172 -0
- package/dist/list.cjs.map +1 -0
- package/dist/list.d.ts +33 -0
- package/dist/list.d.ts.map +1 -0
- package/dist/list.test.d.ts +4 -0
- package/dist/list.test.d.ts.map +1 -0
- package/dist/{logging-7cc36806.cjs → logging-f6d41f58.cjs} +2 -2
- package/dist/{logging-7cc36806.cjs.map → logging-f6d41f58.cjs.map} +1 -1
- package/dist/logging.cjs +3 -3
- package/dist/observable.cjs +1 -1
- package/dist/{prng-97174619.cjs → prng-25602bac.cjs} +3 -3
- package/dist/{prng-97174619.cjs.map → prng-25602bac.cjs.map} +1 -1
- package/dist/prng.cjs +4 -4
- package/dist/queue.cjs +3 -0
- package/dist/queue.cjs.map +1 -1
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.test.d.ts.map +1 -1
- package/dist/set-b596ef38.cjs +49 -0
- package/dist/set-b596ef38.cjs.map +1 -0
- package/dist/set.cjs +3 -1
- package/dist/set.cjs.map +1 -1
- package/dist/set.d.ts +2 -0
- package/dist/set.d.ts.map +1 -1
- package/dist/set.test.d.ts +2 -0
- package/dist/set.test.d.ts.map +1 -1
- package/dist/{string-f3c3d805.cjs → string-ad04f734.cjs} +12 -2
- package/dist/{string-f3c3d805.cjs.map → string-ad04f734.cjs.map} +1 -1
- package/dist/string.cjs +2 -1
- package/dist/string.cjs.map +1 -1
- package/dist/string.d.ts +1 -0
- package/dist/string.d.ts.map +1 -1
- package/dist/string.test.d.ts +1 -0
- package/dist/string.test.d.ts.map +1 -1
- package/dist/test.cjs +721 -101
- package/dist/test.cjs.map +1 -1
- package/dist/test.js +721 -101
- package/dist/test.js.map +1 -1
- package/dist/testing.cjs +6 -6
- package/dist/{websocket-bfe7f545.cjs → websocket-08bd4c7b.cjs} +1 -1
- package/dist/{websocket-bfe7f545.cjs.map → websocket-08bd4c7b.cjs.map} +1 -1
- package/dist/websocket.cjs +2 -2
- package/dom.d.ts.map +1 -1
- package/list.d.ts +33 -0
- package/list.d.ts.map +1 -0
- package/list.js +155 -0
- package/list.test.d.ts +4 -0
- package/list.test.d.ts.map +1 -0
- package/package.json +13 -1
- package/queue.d.ts.map +1 -1
- package/queue.js +3 -0
- package/queue.test.d.ts.map +1 -1
- package/set.d.ts +2 -0
- package/set.d.ts.map +1 -1
- package/set.js +18 -0
- package/set.test.d.ts +2 -0
- package/set.test.d.ts.map +1 -1
- package/string.d.ts +1 -0
- package/string.d.ts.map +1 -1
- package/string.js +8 -0
- package/string.test.d.ts +1 -0
- package/string.test.d.ts.map +1 -1
- package/test.js +7 -1
- package/dist/diff-75787d87.cjs.map +0 -1
- package/dist/set-7ae96d21.cjs +0 -27
- package/dist/set-7ae96d21.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.test.d.ts","sourceRoot":"","sources":["../cache.test.js"],"names":[],"mappings":"AAQO,8BAFI,EAAE,QAAQ,iBAuDpB"}
|
package/dist/component.cjs
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var dom = require('./dom-58958c04.cjs');
|
|
6
|
-
var diff = require('./diff-
|
|
6
|
+
var diff = require('./diff-233747fa.cjs');
|
|
7
7
|
var object = require('./object-dcdd6eed.cjs');
|
|
8
8
|
var json = require('./json-092190a1.cjs');
|
|
9
|
-
var string = require('./string-
|
|
9
|
+
var string = require('./string-ad04f734.cjs');
|
|
10
10
|
var array = require('./array-b2d24238.cjs');
|
|
11
11
|
var number = require('./number-e62129bc.cjs');
|
|
12
12
|
var _function = require('./function-f8acb5f5.cjs');
|
package/dist/decoding.cjs
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var encoding = require('./buffer-
|
|
5
|
+
var encoding = require('./buffer-b0dea3b0.cjs');
|
|
6
6
|
require('./binary-ac8e39e2.cjs');
|
|
7
7
|
require('./math-08e068f9.cjs');
|
|
8
|
-
require('./string-
|
|
9
|
-
require('./environment-
|
|
8
|
+
require('./string-ad04f734.cjs');
|
|
9
|
+
require('./environment-60b83194.cjs');
|
|
10
10
|
require('./map-28a001c9.cjs');
|
|
11
11
|
require('./conditions-fb475c70.cjs');
|
|
12
12
|
require('./storage.cjs');
|
|
@@ -46,11 +46,8 @@ const simpleDiffString = (a, b) => {
|
|
|
46
46
|
while (left < a.length && left < b.length && a[left] === b[left]) {
|
|
47
47
|
left++;
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {
|
|
52
|
-
right++;
|
|
53
|
-
}
|
|
49
|
+
while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {
|
|
50
|
+
right++;
|
|
54
51
|
}
|
|
55
52
|
return {
|
|
56
53
|
index: left,
|
|
@@ -86,11 +83,51 @@ const simpleDiffArray = (a, b, compare = _function.equalityStrict) => {
|
|
|
86
83
|
while (left < a.length && left < b.length && compare(a[left], b[left])) {
|
|
87
84
|
left++;
|
|
88
85
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
86
|
+
while (right + left < a.length && right + left < b.length && compare(a[a.length - right - 1], b[b.length - right - 1])) {
|
|
87
|
+
right++;
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
index: left,
|
|
91
|
+
remove: a.length - left - right,
|
|
92
|
+
insert: b.slice(left, b.length - right)
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Diff text and try to diff at the current cursor position.
|
|
98
|
+
*
|
|
99
|
+
* @param {string} a
|
|
100
|
+
* @param {string} b
|
|
101
|
+
* @param {number} cursor This should refer to the current left cursor-range position
|
|
102
|
+
*/
|
|
103
|
+
const simpleDiffStringWithCursor = (a, b, cursor) => {
|
|
104
|
+
let left = 0; // number of same characters counting from left
|
|
105
|
+
let right = 0; // number of same characters counting from right
|
|
106
|
+
// Iterate left to the right until we find a changed character
|
|
107
|
+
// First iteration considers the current cursor position
|
|
108
|
+
while (
|
|
109
|
+
left < a.length &&
|
|
110
|
+
left < b.length &&
|
|
111
|
+
a[left] === b[left] &&
|
|
112
|
+
left < cursor
|
|
113
|
+
) {
|
|
114
|
+
left++;
|
|
115
|
+
}
|
|
116
|
+
// Iterate right to the left until we find a changed character
|
|
117
|
+
while (
|
|
118
|
+
right + left < a.length &&
|
|
119
|
+
right + left < b.length &&
|
|
120
|
+
a[a.length - right - 1] === b[b.length - right - 1]
|
|
121
|
+
) {
|
|
122
|
+
right++;
|
|
123
|
+
}
|
|
124
|
+
// Try to iterate left further to the right without caring about the current cursor position
|
|
125
|
+
while (
|
|
126
|
+
right + left < a.length &&
|
|
127
|
+
right + left < b.length &&
|
|
128
|
+
a[left] === b[left]
|
|
129
|
+
) {
|
|
130
|
+
left++;
|
|
94
131
|
}
|
|
95
132
|
return {
|
|
96
133
|
index: left,
|
|
@@ -103,11 +140,13 @@ var diff = /*#__PURE__*/Object.freeze({
|
|
|
103
140
|
__proto__: null,
|
|
104
141
|
simpleDiffString: simpleDiffString,
|
|
105
142
|
simpleDiff: simpleDiff,
|
|
106
|
-
simpleDiffArray: simpleDiffArray
|
|
143
|
+
simpleDiffArray: simpleDiffArray,
|
|
144
|
+
simpleDiffStringWithCursor: simpleDiffStringWithCursor
|
|
107
145
|
});
|
|
108
146
|
|
|
109
147
|
exports.diff = diff;
|
|
110
148
|
exports.simpleDiff = simpleDiff;
|
|
111
149
|
exports.simpleDiffArray = simpleDiffArray;
|
|
112
150
|
exports.simpleDiffString = simpleDiffString;
|
|
113
|
-
|
|
151
|
+
exports.simpleDiffStringWithCursor = simpleDiffStringWithCursor;
|
|
152
|
+
//# sourceMappingURL=diff-233747fa.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-233747fa.cjs","sources":["../diff.js"],"sourcesContent":["/**\n * Efficient diffs.\n *\n * @module diff\n */\n\nimport { equalityStrict } from './function.js'\n\n/**\n * A SimpleDiff describes a change on a String.\n *\n * ```js\n * console.log(a) // the old value\n * console.log(b) // the updated value\n * // Apply changes of diff (pseudocode)\n * a.remove(diff.index, diff.remove) // Remove `diff.remove` characters\n * a.insert(diff.index, diff.insert) // Insert `diff.insert`\n * a === b // values match\n * ```\n *\n * @typedef {Object} SimpleDiff\n * @property {Number} index The index where changes were applied\n * @property {Number} remove The number of characters to delete starting\n * at `index`.\n * @property {T} insert The new text to insert at `index` after applying\n * `delete`\n *\n * @template T\n */\n\n/**\n * Create a diff between two strings. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * @function\n *\n * @param {string} a The old version of the string\n * @param {string} b The updated version of the string\n * @return {SimpleDiff<string>} The diff description.\n */\nexport const simpleDiffString = (a, b) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && a[left] === b[left]) {\n left++\n }\n while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {\n right++\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * @todo Remove in favor of simpleDiffString\n * @deprecated\n */\nexport const simpleDiff = simpleDiffString\n\n/**\n * Create a diff between two arrays. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * Note: This is basically the same function as above. Another function was created so that the runtime\n * can better optimize these function calls.\n *\n * @function\n * @template T\n *\n * @param {Array<T>} a The old version of the array\n * @param {Array<T>} b The updated version of the array\n * @param {function(T, T):boolean} [compare]\n * @return {SimpleDiff<Array<T>>} The diff description.\n */\nexport const simpleDiffArray = (a, b, compare = equalityStrict) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && compare(a[left], b[left])) {\n left++\n }\n while (right + left < a.length && right + left < b.length && compare(a[a.length - right - 1], b[b.length - right - 1])) {\n right++\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * Diff text and try to diff at the current cursor position.\n *\n * @param {string} a\n * @param {string} b\n * @param {number} cursor This should refer to the current left cursor-range position\n */\nexport const simpleDiffStringWithCursor = (a, b, cursor) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n // Iterate left to the right until we find a changed character\n // First iteration considers the current cursor position\n while (\n left < a.length &&\n left < b.length &&\n a[left] === b[left] &&\n left < cursor\n ) {\n left++\n }\n // Iterate right to the left until we find a changed character\n while (\n right + left < a.length &&\n right + left < b.length &&\n a[a.length - right - 1] === b[b.length - right - 1]\n ) {\n right++\n }\n // Try to iterate left further to the right without caring about the current cursor position\n while (\n right + left < a.length &&\n right + left < b.length &&\n a[left] === b[left]\n ) {\n left++\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n"],"names":["equalityStrict"],"mappings":"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"}
|
package/dist/diff.cjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
require('./function-f8acb5f5.cjs');
|
|
6
|
-
var diff = require('./diff-
|
|
6
|
+
var diff = require('./diff-233747fa.cjs');
|
|
7
7
|
require('./array-b2d24238.cjs');
|
|
8
8
|
require('./object-dcdd6eed.cjs');
|
|
9
9
|
|
|
@@ -12,4 +12,5 @@ require('./object-dcdd6eed.cjs');
|
|
|
12
12
|
exports.simpleDiff = diff.simpleDiff;
|
|
13
13
|
exports.simpleDiffArray = diff.simpleDiffArray;
|
|
14
14
|
exports.simpleDiffString = diff.simpleDiffString;
|
|
15
|
+
exports.simpleDiffStringWithCursor = diff.simpleDiffStringWithCursor;
|
|
15
16
|
//# sourceMappingURL=diff.cjs.map
|
package/dist/diff.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diff.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
package/dist/diff.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export function simpleDiffString(a: string, b: string): SimpleDiff<string>;
|
|
2
2
|
export function simpleDiff(a: string, b: string): SimpleDiff<string>;
|
|
3
3
|
export function simpleDiffArray<T>(a: T[], b: T[], compare?: ((arg0: T, arg1: T) => boolean) | undefined): SimpleDiff<T[]>;
|
|
4
|
+
export function simpleDiffStringWithCursor(a: string, b: string, cursor: number): {
|
|
5
|
+
index: number;
|
|
6
|
+
remove: number;
|
|
7
|
+
insert: string;
|
|
8
|
+
};
|
|
4
9
|
/**
|
|
5
10
|
* A SimpleDiff describes a change on a String.
|
|
6
11
|
*
|
package/dist/diff.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../diff.js"],"names":[],"mappings":"AAwCO,oCAJI,MAAM,KACN,MAAM,GACL,WAAW,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../diff.js"],"names":[],"mappings":"AAwCO,oCAJI,MAAM,KACN,MAAM,GACL,WAAW,MAAM,CAAC,CAgB7B;AAdM,8BAJI,MAAM,KACN,MAAM,GACL,WAAW,MAAM,CAAC,CAgB7B;AAuBM,oFAHmB,OAAO,gCAiBhC;AASM,8CAJI,MAAM,KACN,MAAM,UACN,MAAM;;;;EAoChB;;;;;;;;;;;;;;;;;;;;;;;;;;;YA9Ga,CAAC"}
|
package/dist/diff.test.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export function testDiffing(tc: t.TestCase): void;
|
|
2
2
|
export function testRepeatDiffing(tc: t.TestCase): void;
|
|
3
|
+
export function testSimpleDiffWithCursor(tc: t.TestCase): void;
|
|
3
4
|
export function testArrayDiffing(tc: t.TestCase): void;
|
|
4
5
|
import * as t from "./testing.js";
|
|
5
6
|
//# sourceMappingURL=diff.test.d.ts.map
|
package/dist/diff.test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.test.d.ts","sourceRoot":"","sources":["../diff.test.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diff.test.d.ts","sourceRoot":"","sources":["../diff.test.js"],"names":[],"mappings":"AAuBO,gCAFI,EAAE,QAAQ,QAWpB;AAKM,sCAFI,EAAE,QAAQ,QAQpB;AAKM,6CAFI,EAAE,QAAQ,QA8BpB;AAKM,qCAFI,EAAE,QAAQ,QAQpB"}
|
package/dist/dom.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../dom.js"],"names":[],"mappings":"AAYA;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../dom.js"],"names":[],"mappings":"AAYA;;GAEG;AACH,kBAFU,QAAQ,CAE0E;AAOrF,oCAJI,MAAM,GACL,WAAW,CAGqC;AAMrD,0CAHK,gBAAgB,CAG4C;AAOjE,qCAJI,MAAM,GACL,IAAI,CAG8C;AAG9D,kCAA6G;AAQtG,oCALI,WAAW,QACX,MAAM,QACN,MAAM,WAG+E;AAQzF,kCALI,OAAO,SACP,MAAM,KAAK,IAAI,CAAC,MAAM,EAAC,MAAM,GAAC,OAAO,CAAC,CAAC,GACtC,OAAO,CAelB;AAQM,qCALI,OAAO,SACP,IAAI,MAAM,EAAE,MAAM,CAAC,GAClB,OAAO,CAMlB;AAOM,mCAJI,MAAM,IAAI,CAAC,GAAC,cAAc,GACzB,gBAAgB,CAS3B;AAQM,+BALI,OAAO,SACP,MAAM,IAAI,CAAC,GACV,OAAO,CAMlB;AAMM,2BAHI,WAAW,QAGiB;AAQhC,qCALI,WAAW,QACX,MAAM,KACN,aAAa,QAGqD;AAQtE,wCALI,WAAW,QACX,MAAM,KACN,aAAa,QAG2D;AAQ5E,wCALI,IAAI,aACJ,MAAM,KAAK,IAAI,CAAC,MAAM,EAAC,aAAa,CAAC,CAAC,GACrC,IAAI,CAMf;AAQM,2CALI,IAAI,aACJ,MAAM,KAAK,IAAI,CAAC,MAAM,EAAC,aAAa,CAAC,CAAC,GACrC,IAAI,CAMf;AASM,8BANI,MAAM,UACN,MAAM,KAAK,IAAI,CAAC,MAAM,EAAC,MAAM,CAAC,GAAC,KAAK,IAAI,CAAC,MAAM,EAAC,OAAO,CAAC,CAAC,aACzD,MAAM,IAAI,CAAC,GACV,OAAO,CAI0C;AAOtD,8BAJI,MAAM,UACN,MAAM,qBAQhB;AApIM,2BAJI,MAAM,GACL,IAAI,CAG8C;AAiJvD,wCAHI,KAAK,IAAI,CAAC,MAAM,EAAC,MAAM,CAAC,UAGmC;AAO/D,0CAJI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC,GAC9B,MAAM,CAG8D;AAOzE,oCAJI,IAAI,MAAM,EAAC,MAAM,CAAC,GACjB,MAAM,CAG0E;AAUrF,kCALI,WAAW,GAAC,UAAU,SACtB,MAAM,GACL,WAAW,GAAG,IAAI,CAGqC;AAQ5D,qCALI,WAAW,GAAC,UAAU,SACtB,MAAM,GACL,WAAW,WAAW,CAAC,CAGsC;AAOlE,mCAJI,MAAM,GACL,WAAW,CAGgE;AAchF,oCAJI,MAAM,GACL,gBAAgB,CAG+D;AAOpF,mCAJI,MAAM,GACL,WAAW,CAGsE;AAOtF,mCAJI,WAAW,SACX,WAAW,GAAC,gBAAgB,QAG8B;AAS9D,qCANI,WAAW,MACX,WAAW,OACX,IAAI,GAAC,IAAI,GACR,WAAW,CAGsD;AAQtE,oCALI,IAAI,SACJ,IAAI,GACH,IAAI,CAGuD;AAEvE,kCAA4C;AAC5C,+BAAsC;AACtC,wCAAwD;AACxD,kCAA4C;AAC5C,mCAA8C;AAC9C,wCAAwD;AACxD,4CAAgE;AAMzD,oCAHI,GAAG,QACH,MAAM,WAEkD;AAM5D,mCAHI,IAAI,SACJ,WAAW,WAQrB"}
|
package/dist/encoding.cjs
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var encoding = require('./buffer-
|
|
5
|
+
var encoding = require('./buffer-b0dea3b0.cjs');
|
|
6
6
|
require('./math-08e068f9.cjs');
|
|
7
7
|
require('./number-e62129bc.cjs');
|
|
8
8
|
require('./binary-ac8e39e2.cjs');
|
|
9
|
-
require('./string-
|
|
10
|
-
require('./environment-
|
|
9
|
+
require('./string-ad04f734.cjs');
|
|
10
|
+
require('./environment-60b83194.cjs');
|
|
11
11
|
require('./map-28a001c9.cjs');
|
|
12
12
|
require('./conditions-fb475c70.cjs');
|
|
13
13
|
require('./storage.cjs');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var map = require('./map-28a001c9.cjs');
|
|
4
|
-
var string = require('./string-
|
|
4
|
+
var string = require('./string-ad04f734.cjs');
|
|
5
5
|
var conditions = require('./conditions-fb475c70.cjs');
|
|
6
6
|
var storage = require('./storage.cjs');
|
|
7
7
|
|
|
@@ -129,4 +129,4 @@ exports.isBrowser = isBrowser;
|
|
|
129
129
|
exports.isMac = isMac;
|
|
130
130
|
exports.isNode = isNode;
|
|
131
131
|
exports.production = production;
|
|
132
|
-
//# sourceMappingURL=environment-
|
|
132
|
+
//# sourceMappingURL=environment-60b83194.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment-
|
|
1
|
+
{"version":3,"file":"environment-60b83194.cjs","sources":["../environment.js"],"sourcesContent":["/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module map\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\n\n/* istanbul ignore next */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release && /node|io\\.js/.test(process.release.name)\n/* istanbul ignore next */\nexport const isBrowser = typeof window !== 'undefined' && !isNode\n/* istanbul ignore next */\nexport const isMac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false\n\n/**\n * @type {Map<string,string>}\n */\nlet params\nconst args = []\n\n/* istanbul ignore next */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n /* istanbul ignore next */\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create()\n // eslint-disable-next-line no-undef\n ;(location.search || '?').slice(1).split('&').forEach(kv => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasParam = name => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* istanbul ignore next */\nexport const getParam = (name, defaultVal) => computeParams().get(name) || defaultVal\n// export const getArgs = name => computeParams() && args\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* istanbul ignore next */\nexport const getVariable = name => isNode ? conditions.undefinedToNull(process.env[name.toUpperCase()]) : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\nexport const getConf = name => computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasConf = name => hasParam('--' + name) || getVariable(name) !== null\n\n/* istanbul ignore next */\nexport const production = hasConf('production')\n"],"names":["map.create","string.fromCamelCase","conditions.undefinedToNull","storage.varStorage"],"mappings":"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"}
|
package/dist/environment.cjs
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
require('./map-28a001c9.cjs');
|
|
6
|
-
require('./string-
|
|
6
|
+
require('./string-ad04f734.cjs');
|
|
7
7
|
require('./conditions-fb475c70.cjs');
|
|
8
8
|
require('./storage.cjs');
|
|
9
|
-
var environment = require('./environment-
|
|
9
|
+
var environment = require('./environment-60b83194.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
package/dist/index.cjs
CHANGED
|
@@ -4,35 +4,35 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var array = require('./array-b2d24238.cjs');
|
|
6
6
|
var binary = require('./binary-ac8e39e2.cjs');
|
|
7
|
-
var broadcastchannel = require('./broadcastchannel-
|
|
8
|
-
var encoding = require('./buffer-
|
|
7
|
+
var broadcastchannel = require('./broadcastchannel-7da37795.cjs');
|
|
8
|
+
var encoding = require('./buffer-b0dea3b0.cjs');
|
|
9
9
|
var conditions = require('./conditions-fb475c70.cjs');
|
|
10
|
-
var diff = require('./diff-
|
|
10
|
+
var diff = require('./diff-233747fa.cjs');
|
|
11
11
|
var dom = require('./dom-58958c04.cjs');
|
|
12
|
-
var environment = require('./environment-
|
|
12
|
+
var environment = require('./environment-60b83194.cjs');
|
|
13
13
|
var error = require('./error-873c9cbf.cjs');
|
|
14
14
|
var eventloop = require('./eventloop-c60b5658.cjs');
|
|
15
15
|
var _function = require('./function-f8acb5f5.cjs');
|
|
16
16
|
var indexeddb = require('./indexeddb-5b4b0e13.cjs');
|
|
17
17
|
var iterator = require('./iterator-fe01d209.cjs');
|
|
18
18
|
var json = require('./json-092190a1.cjs');
|
|
19
|
-
var logging = require('./logging-
|
|
19
|
+
var logging = require('./logging-f6d41f58.cjs');
|
|
20
20
|
var map = require('./map-28a001c9.cjs');
|
|
21
21
|
var math = require('./math-08e068f9.cjs');
|
|
22
22
|
var mutex = require('./mutex-63f09c81.cjs');
|
|
23
23
|
var number = require('./number-e62129bc.cjs');
|
|
24
24
|
var object = require('./object-dcdd6eed.cjs');
|
|
25
25
|
var pair = require('./pair-ab022bc3.cjs');
|
|
26
|
-
var prng = require('./prng-
|
|
26
|
+
var prng = require('./prng-25602bac.cjs');
|
|
27
27
|
var promise = require('./promise-1a9fe712.cjs');
|
|
28
|
-
var set = require('./set-
|
|
28
|
+
var set = require('./set-b596ef38.cjs');
|
|
29
29
|
var sort = require('./sort-b8702761.cjs');
|
|
30
30
|
var statistics = require('./statistics-c2316dca.cjs');
|
|
31
|
-
var string = require('./string-
|
|
31
|
+
var string = require('./string-ad04f734.cjs');
|
|
32
32
|
var symbol = require('./symbol-c5caa724.cjs');
|
|
33
33
|
var time = require('./time-e00067da.cjs');
|
|
34
34
|
var tree = require('./tree-92f764b3.cjs');
|
|
35
|
-
var websocket = require('./websocket-
|
|
35
|
+
var websocket = require('./websocket-08bd4c7b.cjs');
|
|
36
36
|
require('./storage.cjs');
|
|
37
37
|
require('./metric.cjs');
|
|
38
38
|
require('./observable.cjs');
|
package/dist/list.cjs
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var error = require('./error-873c9cbf.cjs');
|
|
6
|
+
|
|
7
|
+
class ListNode {
|
|
8
|
+
constructor () {
|
|
9
|
+
/**
|
|
10
|
+
* @type {this|null}
|
|
11
|
+
*/
|
|
12
|
+
this.next = null;
|
|
13
|
+
/**
|
|
14
|
+
* @type {this|null}
|
|
15
|
+
*/
|
|
16
|
+
this.prev = null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @template {ListNode} N
|
|
22
|
+
*/
|
|
23
|
+
class List {
|
|
24
|
+
constructor () {
|
|
25
|
+
/**
|
|
26
|
+
* @type {N | null}
|
|
27
|
+
*/
|
|
28
|
+
this.start = null;
|
|
29
|
+
/**
|
|
30
|
+
* @type {N | null}
|
|
31
|
+
*/
|
|
32
|
+
this.end = null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @note The queue implementation is experimental and unfinished.
|
|
38
|
+
* Don't use this in production yet.
|
|
39
|
+
*
|
|
40
|
+
* @template {ListNode} N
|
|
41
|
+
*
|
|
42
|
+
* @return {List<N>}
|
|
43
|
+
*/
|
|
44
|
+
const create = () => new List();
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @template {ListNode} N
|
|
48
|
+
*
|
|
49
|
+
* @param {List<N>} queue
|
|
50
|
+
*/
|
|
51
|
+
const isEmpty = queue => queue.start === null;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Remove a single node from the queue. Only works with Queues that operate on Doubly-linked lists of nodes.
|
|
55
|
+
*
|
|
56
|
+
* @template {ListNode} N
|
|
57
|
+
*
|
|
58
|
+
* @param {List<N>} queue
|
|
59
|
+
* @param {N} node
|
|
60
|
+
*/
|
|
61
|
+
const removeNode = (queue, node) => {
|
|
62
|
+
const prev = node.prev;
|
|
63
|
+
const next = node.next;
|
|
64
|
+
if (prev) {
|
|
65
|
+
prev.next = next;
|
|
66
|
+
} else {
|
|
67
|
+
queue.start = next;
|
|
68
|
+
}
|
|
69
|
+
if (next) {
|
|
70
|
+
next.prev = prev;
|
|
71
|
+
} else {
|
|
72
|
+
queue.end = prev;
|
|
73
|
+
}
|
|
74
|
+
return node
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @template {ListNode} N
|
|
79
|
+
*
|
|
80
|
+
* @param {List<N>} queue
|
|
81
|
+
* @param {N| null} left
|
|
82
|
+
* @param {N| null} right
|
|
83
|
+
* @param {N} node
|
|
84
|
+
*/
|
|
85
|
+
const insertBetween = (queue, left, right, node) => {
|
|
86
|
+
/* istanbul ignore if */
|
|
87
|
+
if (left != null && left.next !== right) {
|
|
88
|
+
throw error.unexpectedCase()
|
|
89
|
+
}
|
|
90
|
+
if (left) {
|
|
91
|
+
left.next = node;
|
|
92
|
+
} else {
|
|
93
|
+
queue.start = node;
|
|
94
|
+
}
|
|
95
|
+
if (right) {
|
|
96
|
+
right.prev = node;
|
|
97
|
+
} else {
|
|
98
|
+
queue.end = node;
|
|
99
|
+
}
|
|
100
|
+
node.prev = left;
|
|
101
|
+
node.next = right;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* @template {ListNode} N
|
|
106
|
+
*
|
|
107
|
+
* @param {List<N>} queue
|
|
108
|
+
* @param {N} n
|
|
109
|
+
*/
|
|
110
|
+
const pushEnd = (queue, n) =>
|
|
111
|
+
insertBetween(queue, queue.end, null, n);
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @template {ListNode} N
|
|
115
|
+
*
|
|
116
|
+
* @param {List<N>} queue
|
|
117
|
+
* @param {N} n
|
|
118
|
+
*/
|
|
119
|
+
const pushFront = (queue, n) =>
|
|
120
|
+
insertBetween(queue, null, queue.start, n);
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* @template {ListNode} N
|
|
124
|
+
*
|
|
125
|
+
* @param {List<N>} list
|
|
126
|
+
* @return {N| null}
|
|
127
|
+
*/
|
|
128
|
+
const popFront = list =>
|
|
129
|
+
list.start ? removeNode(list, list.start) : null;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* @template {ListNode} N
|
|
133
|
+
*
|
|
134
|
+
* @param {List<N>} list
|
|
135
|
+
* @return {N| null}
|
|
136
|
+
*/
|
|
137
|
+
const popEnd = list =>
|
|
138
|
+
list.end ? removeNode(list, list.end) : null;
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* @template {ListNode} N
|
|
142
|
+
* @template M
|
|
143
|
+
*
|
|
144
|
+
* @param {List<N>} list
|
|
145
|
+
* @param {function(N):M} f
|
|
146
|
+
* @return {Array<M>}
|
|
147
|
+
*/
|
|
148
|
+
const map = (list, f) => {
|
|
149
|
+
/**
|
|
150
|
+
* @type {Array<M>}
|
|
151
|
+
*/
|
|
152
|
+
const arr = [];
|
|
153
|
+
let n = list.start;
|
|
154
|
+
while (n) {
|
|
155
|
+
arr.push(f(n));
|
|
156
|
+
n = n.next;
|
|
157
|
+
}
|
|
158
|
+
return arr
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
exports.List = List;
|
|
162
|
+
exports.ListNode = ListNode;
|
|
163
|
+
exports.create = create;
|
|
164
|
+
exports.insertBetween = insertBetween;
|
|
165
|
+
exports.isEmpty = isEmpty;
|
|
166
|
+
exports.map = map;
|
|
167
|
+
exports.popEnd = popEnd;
|
|
168
|
+
exports.popFront = popFront;
|
|
169
|
+
exports.pushEnd = pushEnd;
|
|
170
|
+
exports.pushFront = pushFront;
|
|
171
|
+
exports.removeNode = removeNode;
|
|
172
|
+
//# sourceMappingURL=list.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.cjs","sources":["../list.js"],"sourcesContent":["import * as error from './error.js'\n\nexport class ListNode {\n constructor () {\n /**\n * @type {this|null}\n */\n this.next = null\n /**\n * @type {this|null}\n */\n this.prev = null\n }\n}\n\n/**\n * @template {ListNode} N\n */\nexport class List {\n constructor () {\n /**\n * @type {N | null}\n */\n this.start = null\n /**\n * @type {N | null}\n */\n this.end = null\n }\n}\n\n/**\n * @note The queue implementation is experimental and unfinished.\n * Don't use this in production yet.\n *\n * @template {ListNode} N\n *\n * @return {List<N>}\n */\nexport const create = () => new List()\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n */\nexport const isEmpty = queue => queue.start === null\n\n/**\n * Remove a single node from the queue. Only works with Queues that operate on Doubly-linked lists of nodes.\n *\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} node\n */\nexport const removeNode = (queue, node) => {\n const prev = node.prev\n const next = node.next\n if (prev) {\n prev.next = next\n } else {\n queue.start = next\n }\n if (next) {\n next.prev = prev\n } else {\n queue.end = prev\n }\n return node\n}\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N| null} left\n * @param {N| null} right\n * @param {N} node\n */\nexport const insertBetween = (queue, left, right, node) => {\n /* istanbul ignore if */\n if (left != null && left.next !== right) {\n throw error.unexpectedCase()\n }\n if (left) {\n left.next = node\n } else {\n queue.start = node\n }\n if (right) {\n right.prev = node\n } else {\n queue.end = node\n }\n node.prev = left\n node.next = right\n}\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} n\n */\nexport const pushEnd = (queue, n) =>\n insertBetween(queue, queue.end, null, n)\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} queue\n * @param {N} n\n */\nexport const pushFront = (queue, n) =>\n insertBetween(queue, null, queue.start, n)\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} list\n * @return {N| null}\n */\nexport const popFront = list =>\n list.start ? removeNode(list, list.start) : null\n\n/**\n * @template {ListNode} N\n *\n * @param {List<N>} list\n * @return {N| null}\n */\nexport const popEnd = list =>\n list.end ? removeNode(list, list.end) : null\n\n/**\n * @template {ListNode} N\n * @template M\n *\n * @param {List<N>} list\n * @param {function(N):M} f\n * @return {Array<M>}\n */\nexport const map = (list, f) => {\n /**\n * @type {Array<M>}\n */\n const arr = []\n let n = list.start\n while (n) {\n arr.push(f(n))\n n = n.next\n }\n return arr\n}\n"],"names":["error.unexpectedCase"],"mappings":";;;;;;AAEO,MAAM,QAAQ,CAAC;AACtB,EAAE,WAAW,CAAC,GAAG;AACjB;AACA;AACA;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;AACpB;AACA;AACA;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;AACpB,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACO,MAAM,IAAI,CAAC;AAClB,EAAE,WAAW,CAAC,GAAG;AACjB;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,KAAI;AACrB;AACA;AACA;AACA,IAAI,IAAI,CAAC,GAAG,GAAG,KAAI;AACnB,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG,MAAM,IAAI,IAAI,GAAE;AACtC;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAI;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,UAAU,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK;AAC3C,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAI;AACxB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAI;AACxB,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;AACpB,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,KAAK,GAAG,KAAI;AACtB,GAAG;AACH,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;AACpB,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,GAAG,GAAG,KAAI;AACpB,GAAG;AACH,EAAE,OAAO,IAAI;AACb,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,aAAa,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK;AAC3D;AACA,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AAC3C,IAAI,MAAMA,oBAAoB,EAAE;AAChC,GAAG;AACH,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;AACpB,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,KAAK,GAAG,KAAI;AACtB,GAAG;AACH,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,KAAK,CAAC,IAAI,GAAG,KAAI;AACrB,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,GAAG,GAAG,KAAI;AACpB,GAAG;AACH,EAAE,IAAI,CAAC,IAAI,GAAG,KAAI;AAClB,EAAE,IAAI,CAAC,IAAI,GAAG,MAAK;AACnB,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;AAChC,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,SAAS,GAAG,CAAC,KAAK,EAAE,CAAC;AAClC,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,QAAQ,GAAG,IAAI;AAC5B,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAI;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG,IAAI;AAC1B,EAAE,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK;AAChC;AACA;AACA;AACA,EAAE,MAAM,GAAG,GAAG,GAAE;AAChB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAK;AACpB,EAAE,OAAO,CAAC,EAAE;AACZ,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC;AAClB,IAAI,CAAC,GAAG,CAAC,CAAC,KAAI;AACd,GAAG;AACH,EAAE,OAAO,GAAG;AACZ;;;;;;;;;;;;;;"}
|
package/dist/list.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export class ListNode {
|
|
2
|
+
/**
|
|
3
|
+
* @type {this|null}
|
|
4
|
+
*/
|
|
5
|
+
next: ListNode | null;
|
|
6
|
+
/**
|
|
7
|
+
* @type {this|null}
|
|
8
|
+
*/
|
|
9
|
+
prev: ListNode | null;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @template {ListNode} N
|
|
13
|
+
*/
|
|
14
|
+
export class List<N extends ListNode> {
|
|
15
|
+
/**
|
|
16
|
+
* @type {N | null}
|
|
17
|
+
*/
|
|
18
|
+
start: N | null;
|
|
19
|
+
/**
|
|
20
|
+
* @type {N | null}
|
|
21
|
+
*/
|
|
22
|
+
end: N | null;
|
|
23
|
+
}
|
|
24
|
+
export function create<N extends ListNode>(): List<N>;
|
|
25
|
+
export function isEmpty<N extends ListNode>(queue: List<N>): boolean;
|
|
26
|
+
export function removeNode<N extends ListNode>(queue: List<N>, node: N): N;
|
|
27
|
+
export function insertBetween<N extends ListNode>(queue: List<N>, left: N | null, right: N | null, node: N): void;
|
|
28
|
+
export function pushEnd<N extends ListNode>(queue: List<N>, n: N): void;
|
|
29
|
+
export function pushFront<N extends ListNode>(queue: List<N>, n: N): void;
|
|
30
|
+
export function popFront<N extends ListNode>(list: List<N>): N | null;
|
|
31
|
+
export function popEnd<N extends ListNode>(list: List<N>): N | null;
|
|
32
|
+
export function map<N extends ListNode, M>(list: List<N>, f: (arg0: N) => M): M[];
|
|
33
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../list.js"],"names":[],"mappings":"AAEA;IAEI;;OAEG;IACH,sBAAgB;IAChB;;OAEG;IACH,sBAAgB;CAEnB;AAED;;GAEG;AACH;IAEI;;OAEG;IACH,OAFU,CAAC,GAAG,IAAI,CAED;IACjB;;OAEG;IACH,KAFU,CAAC,GAAG,IAAI,CAEH;CAElB;AAUM,sDAA+B;AAO/B,qEAA6C;AAU7C,2EAcN;AAUM,kHAiBN;AAQM,wEACmC;AAQnC,0EACqC;AAQrC,sEAC2C;AAQ3C,oEACuC;AAUvC,kFAWN"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.test.d.ts","sourceRoot":"","sources":["../list.test.js"],"names":[],"mappings":"AAgBO,uCAFI,EAAE,QAAQ,QA8BpB;AAKM,qCAFI,EAAE,QAAQ,QAkBpB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var environment = require('./environment-
|
|
3
|
+
var environment = require('./environment-60b83194.cjs');
|
|
4
4
|
var symbol = require('./symbol-c5caa724.cjs');
|
|
5
5
|
var pair = require('./pair-ab022bc3.cjs');
|
|
6
6
|
var dom = require('./dom-58958c04.cjs');
|
|
@@ -459,4 +459,4 @@ exports.printImg = printImg;
|
|
|
459
459
|
exports.printImgBase64 = printImgBase64;
|
|
460
460
|
exports.vconsoles = vconsoles;
|
|
461
461
|
exports.warn = warn;
|
|
462
|
-
//# sourceMappingURL=logging-
|
|
462
|
+
//# sourceMappingURL=logging-f6d41f58.cjs.map
|