lib0 0.2.43 → 0.2.46
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 +51 -0
- package/cache.d.ts +52 -0
- package/cache.d.ts.map +1 -0
- package/cache.js +207 -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 +216 -0
- package/dist/cache.cjs.map +1 -0
- package/dist/cache.d.ts +52 -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 +772 -101
- package/dist/test.cjs.map +1 -1
- package/dist/test.js +772 -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
package/dist/testing.cjs
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var logging = require('./logging-
|
|
6
|
-
var diff = require('./diff-
|
|
5
|
+
var logging = require('./logging-f6d41f58.cjs');
|
|
6
|
+
var diff = require('./diff-233747fa.cjs');
|
|
7
7
|
var object = require('./object-dcdd6eed.cjs');
|
|
8
|
-
var string = require('./string-
|
|
8
|
+
var string = require('./string-ad04f734.cjs');
|
|
9
9
|
var math = require('./math-08e068f9.cjs');
|
|
10
10
|
var random = require('./random.cjs');
|
|
11
|
-
var prng = require('./prng-
|
|
11
|
+
var prng = require('./prng-25602bac.cjs');
|
|
12
12
|
var statistics = require('./statistics-c2316dca.cjs');
|
|
13
13
|
var array = require('./array-b2d24238.cjs');
|
|
14
|
-
var environment = require('./environment-
|
|
14
|
+
var environment = require('./environment-60b83194.cjs');
|
|
15
15
|
var json = require('./json-092190a1.cjs');
|
|
16
16
|
var time = require('./time-e00067da.cjs');
|
|
17
17
|
var promise = require('./promise-1a9fe712.cjs');
|
|
@@ -23,7 +23,7 @@ require('./map-28a001c9.cjs');
|
|
|
23
23
|
require('./eventloop-c60b5658.cjs');
|
|
24
24
|
require('./function-f8acb5f5.cjs');
|
|
25
25
|
require('./binary-ac8e39e2.cjs');
|
|
26
|
-
require('./buffer-
|
|
26
|
+
require('./buffer-b0dea3b0.cjs');
|
|
27
27
|
require('./number-e62129bc.cjs');
|
|
28
28
|
require('./conditions-fb475c70.cjs');
|
|
29
29
|
require('./storage.cjs');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-
|
|
1
|
+
{"version":3,"file":"websocket-08bd4c7b.cjs","sources":["../websocket.js"],"sourcesContent":["/* eslint-env browser */\n\n/**\n * Tiny websocket connection handler.\n *\n * Implements exponential backoff reconnects, ping/pong, and a nice event system using [lib0/observable].\n *\n * @module websocket\n */\n\nimport { Observable } from './observable.js'\nimport * as time from './time.js'\nimport * as math from './math.js'\n\nconst reconnectTimeoutBase = 1200\nconst maxReconnectTimeout = 2500\n// @todo - this should depend on awareness.outdatedTime\nconst messageReconnectTimeout = 30000\n\n/**\n * @param {WebsocketClient} wsclient\n */\nconst setupWS = (wsclient) => {\n if (wsclient.shouldConnect && wsclient.ws === null) {\n const websocket = new WebSocket(wsclient.url)\n const binaryType = wsclient.binaryType\n /**\n * @type {any}\n */\n let pingTimeout = null\n if (binaryType) {\n websocket.binaryType = binaryType\n }\n wsclient.ws = websocket\n wsclient.connecting = true\n wsclient.connected = false\n websocket.onmessage = event => {\n wsclient.lastMessageReceived = time.getUnixTime()\n const data = event.data\n const message = typeof data === 'string' ? JSON.parse(data) : data\n if (message && message.type === 'pong') {\n clearTimeout(pingTimeout)\n pingTimeout = setTimeout(sendPing, messageReconnectTimeout / 2)\n }\n wsclient.emit('message', [message, wsclient])\n }\n /**\n * @param {any} error\n */\n const onclose = error => {\n if (wsclient.ws !== null) {\n wsclient.ws = null\n wsclient.connecting = false\n if (wsclient.connected) {\n wsclient.connected = false\n wsclient.emit('disconnect', [{ type: 'disconnect', error }, wsclient])\n } else {\n wsclient.unsuccessfulReconnects++\n }\n // Start with no reconnect timeout and increase timeout by\n // log10(wsUnsuccessfulReconnects).\n // The idea is to increase reconnect timeout slowly and have no reconnect\n // timeout at the beginning (log(1) = 0)\n setTimeout(setupWS, math.min(math.log10(wsclient.unsuccessfulReconnects + 1) * reconnectTimeoutBase, maxReconnectTimeout), wsclient)\n }\n clearTimeout(pingTimeout)\n }\n const sendPing = () => {\n if (wsclient.ws === websocket) {\n wsclient.send({\n type: 'ping'\n })\n }\n }\n websocket.onclose = () => onclose(null)\n websocket.onerror = error => onclose(error)\n websocket.onopen = () => {\n wsclient.lastMessageReceived = time.getUnixTime()\n wsclient.connecting = false\n wsclient.connected = true\n wsclient.unsuccessfulReconnects = 0\n wsclient.emit('connect', [{ type: 'connect' }, wsclient])\n // set ping\n pingTimeout = setTimeout(sendPing, messageReconnectTimeout / 2)\n }\n }\n}\n\n/**\n * @extends Observable<string>\n */\nexport class WebsocketClient extends Observable {\n /**\n * @param {string} url\n * @param {object} [opts]\n * @param {'arraybuffer' | 'blob' | null} [opts.binaryType] Set `ws.binaryType`\n */\n constructor (url, { binaryType } = {}) {\n super()\n this.url = url\n /**\n * @type {WebSocket?}\n */\n this.ws = null\n this.binaryType = binaryType || null\n this.connected = false\n this.connecting = false\n this.unsuccessfulReconnects = 0\n this.lastMessageReceived = 0\n /**\n * Whether to connect to other peers or not\n * @type {boolean}\n */\n this.shouldConnect = true\n this._checkInterval = setInterval(() => {\n if (this.connected && messageReconnectTimeout < time.getUnixTime() - this.lastMessageReceived) {\n // no message received in a long time - not even your own awareness\n // updates (which are updated every 15 seconds)\n /** @type {WebSocket} */ (this.ws).close()\n }\n }, messageReconnectTimeout / 2)\n setupWS(this)\n }\n\n /**\n * @param {any} message\n */\n send (message) {\n if (this.ws) {\n this.ws.send(JSON.stringify(message))\n }\n }\n\n destroy () {\n clearInterval(this._checkInterval)\n this.disconnect()\n super.destroy()\n }\n\n disconnect () {\n this.shouldConnect = false\n if (this.ws !== null) {\n this.ws.close()\n }\n }\n\n connect () {\n this.shouldConnect = true\n if (!this.connected && this.ws === null) {\n setupWS(this)\n }\n }\n}\n"],"names":["time.getUnixTime","math.min","math.log10","Observable"],"mappings":";;;;;;AAAA;AAaA;AACA,MAAM,oBAAoB,GAAG,KAAI;AACjC,MAAM,mBAAmB,GAAG,KAAI;AAChC;AACA,MAAM,uBAAuB,GAAG,MAAK;AACrC;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAG,CAAC,QAAQ,KAAK;AAC9B,EAAE,IAAI,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,EAAE,KAAK,IAAI,EAAE;AACtD,IAAI,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAC;AACjD,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAU;AAC1C;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG,KAAI;AAC1B,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,SAAS,CAAC,UAAU,GAAG,WAAU;AACvC,KAAK;AACL,IAAI,QAAQ,CAAC,EAAE,GAAG,UAAS;AAC3B,IAAI,QAAQ,CAAC,UAAU,GAAG,KAAI;AAC9B,IAAI,QAAQ,CAAC,SAAS,GAAG,MAAK;AAC9B,IAAI,SAAS,CAAC,SAAS,GAAG,KAAK,IAAI;AACnC,MAAM,QAAQ,CAAC,mBAAmB,GAAGA,gBAAgB,GAAE;AACvD,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,KAAI;AAC7B,MAAM,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAI;AACxE,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;AAC9C,QAAQ,YAAY,CAAC,WAAW,EAAC;AACjC,QAAQ,WAAW,GAAG,UAAU,CAAC,QAAQ,EAAE,uBAAuB,GAAG,CAAC,EAAC;AACvE,OAAO;AACP,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAC;AACnD,MAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG,KAAK,IAAI;AAC7B,MAAM,IAAI,QAAQ,CAAC,EAAE,KAAK,IAAI,EAAE;AAChC,QAAQ,QAAQ,CAAC,EAAE,GAAG,KAAI;AAC1B,QAAQ,QAAQ,CAAC,UAAU,GAAG,MAAK;AACnC,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE;AAChC,UAAU,QAAQ,CAAC,SAAS,GAAG,MAAK;AACpC,UAAU,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,EAAC;AAChF,SAAS,MAAM;AACf,UAAU,QAAQ,CAAC,sBAAsB,GAAE;AAC3C,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ,UAAU,CAAC,OAAO,EAAEC,QAAQ,CAACC,UAAU,CAAC,QAAQ,CAAC,sBAAsB,GAAG,CAAC,CAAC,GAAG,oBAAoB,EAAE,mBAAmB,CAAC,EAAE,QAAQ,EAAC;AAC5I,OAAO;AACP,MAAM,YAAY,CAAC,WAAW,EAAC;AAC/B,MAAK;AACL,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,MAAM,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE;AACrC,QAAQ,QAAQ,CAAC,IAAI,CAAC;AACtB,UAAU,IAAI,EAAE,MAAM;AACtB,SAAS,EAAC;AACV,OAAO;AACP,MAAK;AACL,IAAI,SAAS,CAAC,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAC;AAC3C,IAAI,SAAS,CAAC,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,KAAK,EAAC;AAC/C,IAAI,SAAS,CAAC,MAAM,GAAG,MAAM;AAC7B,MAAM,QAAQ,CAAC,mBAAmB,GAAGF,gBAAgB,GAAE;AACvD,MAAM,QAAQ,CAAC,UAAU,GAAG,MAAK;AACjC,MAAM,QAAQ,CAAC,SAAS,GAAG,KAAI;AAC/B,MAAM,QAAQ,CAAC,sBAAsB,GAAG,EAAC;AACzC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,CAAC,EAAC;AAC/D;AACA,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,EAAE,uBAAuB,GAAG,CAAC,EAAC;AACrE,MAAK;AACL,GAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACO,MAAM,eAAe,SAASG,qBAAU,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE;AACzC,IAAI,KAAK,GAAE;AACX,IAAI,IAAI,CAAC,GAAG,GAAG,IAAG;AAClB;AACA;AACA;AACA,IAAI,IAAI,CAAC,EAAE,GAAG,KAAI;AAClB,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,KAAI;AACxC,IAAI,IAAI,CAAC,SAAS,GAAG,MAAK;AAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,MAAK;AAC3B,IAAI,IAAI,CAAC,sBAAsB,GAAG,EAAC;AACnC,IAAI,IAAI,CAAC,mBAAmB,GAAG,EAAC;AAChC;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,aAAa,GAAG,KAAI;AAC7B,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,MAAM;AAC5C,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,uBAAuB,GAAGH,gBAAgB,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACrG;AACA;AACA,iCAAiC,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,GAAE;AAClD,OAAO;AACP,KAAK,EAAE,uBAAuB,GAAG,CAAC,EAAC;AACnC,IAAI,OAAO,CAAC,IAAI,EAAC;AACjB,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE;AACjB,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;AACjB,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAC;AAC3C,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,GAAG;AACb,IAAI,aAAa,CAAC,IAAI,CAAC,cAAc,EAAC;AACtC,IAAI,IAAI,CAAC,UAAU,GAAE;AACrB,IAAI,KAAK,CAAC,OAAO,GAAE;AACnB,GAAG;AACH;AACA,EAAE,UAAU,CAAC,GAAG;AAChB,IAAI,IAAI,CAAC,aAAa,GAAG,MAAK;AAC9B,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;AAC1B,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,GAAE;AACrB,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,GAAG;AACb,IAAI,IAAI,CAAC,aAAa,GAAG,KAAI;AAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;AAC7C,MAAM,OAAO,CAAC,IAAI,EAAC;AACnB,KAAK;AACL,GAAG;AACH;;;;;;;;;;"}
|
package/dist/websocket.cjs
CHANGED
|
@@ -5,9 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
require('./observable.cjs');
|
|
6
6
|
require('./time-e00067da.cjs');
|
|
7
7
|
require('./math-08e068f9.cjs');
|
|
8
|
-
var websocket = require('./websocket-
|
|
8
|
+
var websocket = require('./websocket-08bd4c7b.cjs');
|
|
9
9
|
require('./map-28a001c9.cjs');
|
|
10
|
-
require('./set-
|
|
10
|
+
require('./set-b596ef38.cjs');
|
|
11
11
|
require('./array-b2d24238.cjs');
|
|
12
12
|
require('./metric.cjs');
|
|
13
13
|
|
package/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/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
|
package/list.d.ts.map
ADDED
|
@@ -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"}
|
package/list.js
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import * as error from './error.js'
|
|
2
|
+
|
|
3
|
+
export class ListNode {
|
|
4
|
+
constructor () {
|
|
5
|
+
/**
|
|
6
|
+
* @type {this|null}
|
|
7
|
+
*/
|
|
8
|
+
this.next = null
|
|
9
|
+
/**
|
|
10
|
+
* @type {this|null}
|
|
11
|
+
*/
|
|
12
|
+
this.prev = null
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @template {ListNode} N
|
|
18
|
+
*/
|
|
19
|
+
export class List {
|
|
20
|
+
constructor () {
|
|
21
|
+
/**
|
|
22
|
+
* @type {N | null}
|
|
23
|
+
*/
|
|
24
|
+
this.start = null
|
|
25
|
+
/**
|
|
26
|
+
* @type {N | null}
|
|
27
|
+
*/
|
|
28
|
+
this.end = null
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @note The queue implementation is experimental and unfinished.
|
|
34
|
+
* Don't use this in production yet.
|
|
35
|
+
*
|
|
36
|
+
* @template {ListNode} N
|
|
37
|
+
*
|
|
38
|
+
* @return {List<N>}
|
|
39
|
+
*/
|
|
40
|
+
export const create = () => new List()
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @template {ListNode} N
|
|
44
|
+
*
|
|
45
|
+
* @param {List<N>} queue
|
|
46
|
+
*/
|
|
47
|
+
export const isEmpty = queue => queue.start === null
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Remove a single node from the queue. Only works with Queues that operate on Doubly-linked lists of nodes.
|
|
51
|
+
*
|
|
52
|
+
* @template {ListNode} N
|
|
53
|
+
*
|
|
54
|
+
* @param {List<N>} queue
|
|
55
|
+
* @param {N} node
|
|
56
|
+
*/
|
|
57
|
+
export const removeNode = (queue, node) => {
|
|
58
|
+
const prev = node.prev
|
|
59
|
+
const next = node.next
|
|
60
|
+
if (prev) {
|
|
61
|
+
prev.next = next
|
|
62
|
+
} else {
|
|
63
|
+
queue.start = next
|
|
64
|
+
}
|
|
65
|
+
if (next) {
|
|
66
|
+
next.prev = prev
|
|
67
|
+
} else {
|
|
68
|
+
queue.end = prev
|
|
69
|
+
}
|
|
70
|
+
return node
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* @template {ListNode} N
|
|
75
|
+
*
|
|
76
|
+
* @param {List<N>} queue
|
|
77
|
+
* @param {N| null} left
|
|
78
|
+
* @param {N| null} right
|
|
79
|
+
* @param {N} node
|
|
80
|
+
*/
|
|
81
|
+
export const insertBetween = (queue, left, right, node) => {
|
|
82
|
+
/* istanbul ignore if */
|
|
83
|
+
if (left != null && left.next !== right) {
|
|
84
|
+
throw error.unexpectedCase()
|
|
85
|
+
}
|
|
86
|
+
if (left) {
|
|
87
|
+
left.next = node
|
|
88
|
+
} else {
|
|
89
|
+
queue.start = node
|
|
90
|
+
}
|
|
91
|
+
if (right) {
|
|
92
|
+
right.prev = node
|
|
93
|
+
} else {
|
|
94
|
+
queue.end = node
|
|
95
|
+
}
|
|
96
|
+
node.prev = left
|
|
97
|
+
node.next = right
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @template {ListNode} N
|
|
102
|
+
*
|
|
103
|
+
* @param {List<N>} queue
|
|
104
|
+
* @param {N} n
|
|
105
|
+
*/
|
|
106
|
+
export const pushEnd = (queue, n) =>
|
|
107
|
+
insertBetween(queue, queue.end, null, n)
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @template {ListNode} N
|
|
111
|
+
*
|
|
112
|
+
* @param {List<N>} queue
|
|
113
|
+
* @param {N} n
|
|
114
|
+
*/
|
|
115
|
+
export const pushFront = (queue, n) =>
|
|
116
|
+
insertBetween(queue, null, queue.start, n)
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @template {ListNode} N
|
|
120
|
+
*
|
|
121
|
+
* @param {List<N>} list
|
|
122
|
+
* @return {N| null}
|
|
123
|
+
*/
|
|
124
|
+
export const popFront = list =>
|
|
125
|
+
list.start ? removeNode(list, list.start) : null
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @template {ListNode} N
|
|
129
|
+
*
|
|
130
|
+
* @param {List<N>} list
|
|
131
|
+
* @return {N| null}
|
|
132
|
+
*/
|
|
133
|
+
export const popEnd = list =>
|
|
134
|
+
list.end ? removeNode(list, list.end) : null
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @template {ListNode} N
|
|
138
|
+
* @template M
|
|
139
|
+
*
|
|
140
|
+
* @param {List<N>} list
|
|
141
|
+
* @param {function(N):M} f
|
|
142
|
+
* @return {Array<M>}
|
|
143
|
+
*/
|
|
144
|
+
export const map = (list, f) => {
|
|
145
|
+
/**
|
|
146
|
+
* @type {Array<M>}
|
|
147
|
+
*/
|
|
148
|
+
const arr = []
|
|
149
|
+
let n = list.start
|
|
150
|
+
while (n) {
|
|
151
|
+
arr.push(f(n))
|
|
152
|
+
n = n.next
|
|
153
|
+
}
|
|
154
|
+
return arr
|
|
155
|
+
}
|
package/list.test.d.ts
ADDED
|
@@ -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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lib0",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.46",
|
|
4
4
|
"description": "",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -41,6 +41,12 @@
|
|
|
41
41
|
"import": "./buffer.js",
|
|
42
42
|
"require": "./dist/buffer.cjs"
|
|
43
43
|
},
|
|
44
|
+
"./cache.js": "./cache.js",
|
|
45
|
+
"./dist/cache.cjs": "./dist/cache.cjs",
|
|
46
|
+
"./cache": {
|
|
47
|
+
"import": "./cache.js",
|
|
48
|
+
"require": "./dist/cache.cjs"
|
|
49
|
+
},
|
|
44
50
|
"./component.js": "./component.js",
|
|
45
51
|
"./dist/component.cjs": "./dist/component.cjs",
|
|
46
52
|
"./component": {
|
|
@@ -125,6 +131,12 @@
|
|
|
125
131
|
"import": "./json.js",
|
|
126
132
|
"require": "./dist/json.cjs"
|
|
127
133
|
},
|
|
134
|
+
"./list.js": "./list.js",
|
|
135
|
+
"./dist/list.cjs": "./dist/list.cjs",
|
|
136
|
+
"./list": {
|
|
137
|
+
"import": "./list.js",
|
|
138
|
+
"require": "./dist/list.cjs"
|
|
139
|
+
},
|
|
128
140
|
"./logging.js": "./logging.js",
|
|
129
141
|
"./dist/logging.cjs": "./dist/logging.cjs",
|
|
130
142
|
"./logging": {
|
package/queue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["queue.js"],"names":[],"mappings":"AACA;IAEI;;OAEG;IACH,MAFU,SAAS,GAAC,IAAI,CAER;CAEnB;AAED;IAEI;;OAEG;IACH,OAFU,SAAS,GAAG,IAAI,CAET;IACjB;;OAEG;IACH,KAFU,SAAS,GAAG,IAAI,CAEX;CAElB;AAQM,0BAFK,KAAK,CAEsB;AAKhC,+BAFI,KAAK,WAEoC;AAM7C,+BAHI,KAAK,KACL,SAAS,QAUnB;AAMM,+BAHI,KAAK,GACJ,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["queue.js"],"names":[],"mappings":"AACA;IAEI;;OAEG;IACH,MAFU,SAAS,GAAC,IAAI,CAER;CAEnB;AAED;IAEI;;OAEG;IACH,OAFU,SAAS,GAAG,IAAI,CAET;IACjB;;OAEG;IACH,KAFU,SAAS,GAAG,IAAI,CAEX;CAElB;AAQM,0BAFK,KAAK,CAEsB;AAKhC,+BAFI,KAAK,WAEoC;AAM7C,+BAHI,KAAK,KACL,SAAS,QAUnB;AAMM,+BAHI,KAAK,GACJ,SAAS,GAAG,IAAI,CAa3B"}
|
package/queue.js
CHANGED
package/queue.test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.test.d.ts","sourceRoot":"","sources":["queue.test.js"],"names":[],"mappings":"AAgBO,uCAFI,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"queue.test.d.ts","sourceRoot":"","sources":["queue.test.js"],"names":[],"mappings":"AAgBO,uCAFI,EAAE,QAAQ,QA8BpB"}
|
package/set.d.ts
CHANGED
package/set.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["set.js"],"names":[],"mappings":"AAMO,mCAA8B;AAO9B,6CAAsC"}
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["set.js"],"names":[],"mappings":"AAMO,mCAA8B;AAO9B,6CAAsC;AAOtC,yCAEN;AAOM,sDAEN"}
|
package/set.js
CHANGED
|
@@ -12,3 +12,21 @@ export const create = () => new Set()
|
|
|
12
12
|
* @return {Array<T>}
|
|
13
13
|
*/
|
|
14
14
|
export const toArray = set => Array.from(set)
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @template T
|
|
18
|
+
* @param {Set<T>} set
|
|
19
|
+
* @return {T}
|
|
20
|
+
*/
|
|
21
|
+
export const first = set => {
|
|
22
|
+
return set.values().next().value || undefined
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @template T
|
|
27
|
+
* @param {Iterable<T>} entries
|
|
28
|
+
* @return {Set<T>}
|
|
29
|
+
*/
|
|
30
|
+
export const from = entries => {
|
|
31
|
+
return new Set(entries)
|
|
32
|
+
}
|
package/set.test.d.ts
CHANGED
package/set.test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.test.d.ts","sourceRoot":"","sources":["set.test.js"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"set.test.d.ts","sourceRoot":"","sources":["set.test.js"],"names":[],"mappings":"AAQO,iCAFI,EAAE,QAAQ,QASpB"}
|
package/string.d.ts
CHANGED
|
@@ -16,4 +16,5 @@ export function _decodeUtf8Polyfill(buf: Uint8Array): string;
|
|
|
16
16
|
export let utf8TextDecoder: TextDecoder | null;
|
|
17
17
|
export function _decodeUtf8Native(buf: Uint8Array): string;
|
|
18
18
|
export function decodeUtf8(buf: Uint8Array): string;
|
|
19
|
+
export function splice(str: string, index: number, remove: number, insert?: string): string;
|
|
19
20
|
//# sourceMappingURL=string.d.ts.map
|
package/string.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["string.js"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0DAA+C;AAC/C,gEAAiD;AAc1C,4BAHI,MAAM,GACL,MAAM,CAEuC;AASlD,iCAJI,MAAM,aACN,MAAM,GACL,MAAM,CAEkH;AAO7H,oCAHI,MAAM,GACL,MAAM,CAE2D;AAMtE,yCAHI,MAAM,GACL,UAAU,CAUrB;AAGD,
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["string.js"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0DAA+C;AAC/C,gEAAiD;AAc1C,4BAHI,MAAM,GACL,MAAM,CAEuC;AASlD,iCAJI,MAAM,aACN,MAAM,GACL,MAAM,CAEkH;AAO7H,oCAHI,MAAM,GACL,MAAM,CAE2D;AAMtE,yCAHI,MAAM,GACL,UAAU,CAUrB;AAGD,0CAAyH;AAMlH,uCAHI,MAAM,GACL,UAAU,CAE6C;AAjB5D,gCAHI,MAAM,GACL,UAAU,CAUrB;AAsBM,yCAHI,UAAU,GACT,MAAM,CAejB;AAGD,+CAAmI;AAiB5H,uCAHI,UAAU,GACT,MAAM,CAE8E;AAjCzF,gCAHI,UAAU,GACT,MAAM,CAejB;AAmCM,4BALI,MAAM,SACN,MAAM,UACN,MAAM,WACN,MAAM,UAEkG"}
|
package/string.js
CHANGED
|
@@ -112,3 +112,11 @@ export const _decodeUtf8Native = buf => /** @type {TextDecoder} */ (utf8TextDeco
|
|
|
112
112
|
*/
|
|
113
113
|
/* istanbul ignore next */
|
|
114
114
|
export const decodeUtf8 = utf8TextDecoder ? _decodeUtf8Native : _decodeUtf8Polyfill
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @param {string} str The initial string
|
|
118
|
+
* @param {number} index Starting position
|
|
119
|
+
* @param {number} remove Number of characters to remove
|
|
120
|
+
* @param {string} insert New content to insert
|
|
121
|
+
*/
|
|
122
|
+
export const splice = (str, index, remove, insert = '') => str.slice(0, index) + insert + str.slice(index + remove)
|
package/string.test.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ export function testLowercaseTransformation(tc: t.TestCase): void;
|
|
|
2
2
|
export function testRepeatStringUtf8Encoding(tc: t.TestCase): void;
|
|
3
3
|
export function testRepeatStringUtf8Decoding(tc: t.TestCase): void;
|
|
4
4
|
export function testBomEncodingDecoding(tc: t.TestCase): void;
|
|
5
|
+
export function testSplice(tc: t.TestCase): void;
|
|
5
6
|
import * as t from "./testing.js";
|
|
6
7
|
//# sourceMappingURL=string.test.d.ts.map
|
package/string.test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.test.d.ts","sourceRoot":"","sources":["string.test.js"],"names":[],"mappings":"AAOO,gDAFI,EAAE,QAAQ,QAOpB;AAKM,iDAFI,EAAE,QAAQ,QAapB;AAKM,iDAFI,EAAE,QAAQ,QAapB;AAKM,4CAFI,EAAE,QAAQ,QAYpB"}
|
|
1
|
+
{"version":3,"file":"string.test.d.ts","sourceRoot":"","sources":["string.test.js"],"names":[],"mappings":"AAOO,gDAFI,EAAE,QAAQ,QAOpB;AAKM,iDAFI,EAAE,QAAQ,QAapB;AAKM,iDAFI,EAAE,QAAQ,QAapB;AAKM,4CAFI,EAAE,QAAQ,QAYpB;AAKM,+BAFI,EAAE,QAAQ,QAMpB"}
|
package/test.js
CHANGED
|
@@ -21,11 +21,14 @@ import * as object from './object.test.js'
|
|
|
21
21
|
import * as math from './math.test.js'
|
|
22
22
|
import * as number from './number.test.js'
|
|
23
23
|
import * as buffer from './buffer.test.js'
|
|
24
|
+
import * as set from './set.test.js'
|
|
24
25
|
import * as sort from './sort.test.js'
|
|
25
26
|
import * as url from './url.test.js'
|
|
26
27
|
import * as metric from './metric.test.js'
|
|
27
28
|
import * as func from './function.test.js'
|
|
28
29
|
import * as storage from './storage.test.js'
|
|
30
|
+
import * as list from './list.test.js'
|
|
31
|
+
import * as cache from './cache.test.js'
|
|
29
32
|
|
|
30
33
|
import { isBrowser, isNode } from './environment.js'
|
|
31
34
|
|
|
@@ -56,11 +59,14 @@ runTests({
|
|
|
56
59
|
math,
|
|
57
60
|
number,
|
|
58
61
|
buffer,
|
|
62
|
+
set,
|
|
59
63
|
sort,
|
|
60
64
|
url,
|
|
61
65
|
metric,
|
|
62
66
|
func,
|
|
63
|
-
storage
|
|
67
|
+
storage,
|
|
68
|
+
list,
|
|
69
|
+
cache
|
|
64
70
|
}).then(success => {
|
|
65
71
|
/* istanbul ignore next */
|
|
66
72
|
if (isNode) {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff-75787d87.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 if (left !== a.length || left !== b.length) {\n // Only check right if a !== b\n while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {\n right++\n }\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 if (left !== a.length || left !== b.length) {\n // Only check right if a !== b\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 }\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":";;;;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC1C,EAAE,IAAI,IAAI,GAAG,EAAC;AACd,EAAE,IAAI,KAAK,GAAG,EAAC;AACf,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;AACpE,IAAI,IAAI,GAAE;AACV,GAAG;AACH,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE;AAC9C;AACA,IAAI,OAAO,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,EAAE;AACtH,MAAM,KAAK,GAAE;AACb,KAAK;AACL,GAAG;AACH,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK;AACnC,IAAI,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;AAC3C,GAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACA;AACY,MAAC,UAAU,GAAG,iBAAgB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAGA,wBAAc,KAAK;AACnE,EAAE,IAAI,IAAI,GAAG,EAAC;AACd,EAAE,IAAI,KAAK,GAAG,EAAC;AACf,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1E,IAAI,IAAI,GAAE;AACV,GAAG;AACH,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE;AAC9C;AACA,IAAI,OAAO,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;AAC5H,MAAM,KAAK,GAAE;AACb,KAAK;AACL,GAAG;AACH,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK;AACnC,IAAI,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;AAC3C,GAAG;AACH;;;;;;;;;;;;;;"}
|
package/dist/set-7ae96d21.cjs
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Utility module to work with sets.
|
|
5
|
-
*
|
|
6
|
-
* @module set
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
const create = () => new Set();
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @template T
|
|
13
|
-
* @param {Set<T>} set
|
|
14
|
-
* @return {Array<T>}
|
|
15
|
-
*/
|
|
16
|
-
const toArray = set => Array.from(set);
|
|
17
|
-
|
|
18
|
-
var set = /*#__PURE__*/Object.freeze({
|
|
19
|
-
__proto__: null,
|
|
20
|
-
create: create,
|
|
21
|
-
toArray: toArray
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
exports.create = create;
|
|
25
|
-
exports.set = set;
|
|
26
|
-
exports.toArray = toArray;
|
|
27
|
-
//# sourceMappingURL=set-7ae96d21.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"set-7ae96d21.cjs","sources":["../set.js"],"sourcesContent":["/**\n * Utility module to work with sets.\n *\n * @module set\n */\n\nexport const create = () => new Set()\n\n/**\n * @template T\n * @param {Set<T>} set\n * @return {Array<T>}\n */\nexport const toArray = set => Array.from(set)\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG,MAAM,IAAI,GAAG,GAAE;AACrC;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,OAAO,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG;;;;;;;;;;;;"}
|