lib0 0.2.68 → 0.2.69

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/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,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"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["diff.js"],"names":[],"mappings":"AA2CO,oCAJI,MAAM,KACN,MAAM,GACL,WAAW,MAAM,CAAC,CAoB7B;AAlBM,8BAJI,MAAM,KACN,MAAM,GACL,WAAW,MAAM,CAAC,CAoB7B;AAuBM,oFAHmB,OAAO,gCAiBhC;AASM,8CAJI,MAAM,KACN,MAAM,UACN,MAAM;;;;EAyChB;;;;;;;;;;;;;;;;;;;;;;;;;;;YA1Ha,CAAC"}
package/diff.js CHANGED
@@ -28,6 +28,9 @@ import { equalityStrict } from './function.js'
28
28
  * @template T
29
29
  */
30
30
 
31
+ const highSurrogateRegex = /[\uD800-\uDBFF]/
32
+ const lowSurrogateRegex = /[\uDC00-\uDFFF]/
33
+
31
34
  /**
32
35
  * Create a diff between two strings. This diff implementation is highly
33
36
  * efficient, but not very sophisticated.
@@ -44,9 +47,13 @@ export const simpleDiffString = (a, b) => {
44
47
  while (left < a.length && left < b.length && a[left] === b[left]) {
45
48
  left++
46
49
  }
50
+ // If the last same character is a high surrogate, we need to rollback to the previous character
51
+ if (highSurrogateRegex.test(a[left - 1])) left--
47
52
  while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {
48
53
  right++
49
54
  }
55
+ // If the last same character is a low surrogate, we need to rollback to the previous character
56
+ if (lowSurrogateRegex.test(a[a.length - right])) right--
50
57
  return {
51
58
  index: left,
52
59
  remove: a.length - left - right,
@@ -111,6 +118,8 @@ export const simpleDiffStringWithCursor = (a, b, cursor) => {
111
118
  ) {
112
119
  left++
113
120
  }
121
+ // If the last same character is a high surrogate, we need to rollback to the previous character
122
+ if (highSurrogateRegex.test(a[left - 1])) left--
114
123
  // Iterate right to the left until we find a changed character
115
124
  while (
116
125
  right + left < a.length &&
@@ -119,6 +128,8 @@ export const simpleDiffStringWithCursor = (a, b, cursor) => {
119
128
  ) {
120
129
  right++
121
130
  }
131
+ // If the last same character is a low surrogate, we need to rollback to the previous character
132
+ if (lowSurrogateRegex.test(a[a.length - right])) right--
122
133
  // Try to iterate left further to the right without caring about the current cursor position
123
134
  while (
124
135
  right + left < a.length &&
@@ -127,6 +138,7 @@ export const simpleDiffStringWithCursor = (a, b, cursor) => {
127
138
  ) {
128
139
  left++
129
140
  }
141
+ if (highSurrogateRegex.test(a[left - 1])) left--
130
142
  return {
131
143
  index: left,
132
144
  remove: a.length - left - right,
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"diff.test.d.ts","sourceRoot":"","sources":["diff.test.js"],"names":[],"mappings":"AA0BO,gCAFI,EAAE,QAAQ,QAgBpB;AAKM,sCAFI,EAAE,QAAQ,QAQpB;AAKM,6CAFI,EAAE,QAAQ,QA4CpB;AAKM,qCAFI,EAAE,QAAQ,QAQpB"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var dom = require('./dom-7ef10fba.cjs');
6
- var diff = require('./diff-55061848.cjs');
6
+ var diff = require('./diff-6e7deac6.cjs');
7
7
  var object = require('./object-aad630ed.cjs');
8
8
  var json = require('./json-092190a1.cjs');
9
9
  var string = require('./string-b1bee84b.cjs');
@@ -30,6 +30,9 @@ var _function = require('./function-35e8ddea.cjs');
30
30
  * @template T
31
31
  */
32
32
 
33
+ const highSurrogateRegex = /[\uD800-\uDBFF]/;
34
+ const lowSurrogateRegex = /[\uDC00-\uDFFF]/;
35
+
33
36
  /**
34
37
  * Create a diff between two strings. This diff implementation is highly
35
38
  * efficient, but not very sophisticated.
@@ -46,9 +49,13 @@ const simpleDiffString = (a, b) => {
46
49
  while (left < a.length && left < b.length && a[left] === b[left]) {
47
50
  left++;
48
51
  }
52
+ // If the last same character is a high surrogate, we need to rollback to the previous character
53
+ if (highSurrogateRegex.test(a[left - 1])) left--;
49
54
  while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {
50
55
  right++;
51
56
  }
57
+ // If the last same character is a low surrogate, we need to rollback to the previous character
58
+ if (lowSurrogateRegex.test(a[a.length - right])) right--;
52
59
  return {
53
60
  index: left,
54
61
  remove: a.length - left - right,
@@ -113,6 +120,8 @@ const simpleDiffStringWithCursor = (a, b, cursor) => {
113
120
  ) {
114
121
  left++;
115
122
  }
123
+ // If the last same character is a high surrogate, we need to rollback to the previous character
124
+ if (highSurrogateRegex.test(a[left - 1])) left--;
116
125
  // Iterate right to the left until we find a changed character
117
126
  while (
118
127
  right + left < a.length &&
@@ -121,6 +130,8 @@ const simpleDiffStringWithCursor = (a, b, cursor) => {
121
130
  ) {
122
131
  right++;
123
132
  }
133
+ // If the last same character is a low surrogate, we need to rollback to the previous character
134
+ if (lowSurrogateRegex.test(a[a.length - right])) right--;
124
135
  // Try to iterate left further to the right without caring about the current cursor position
125
136
  while (
126
137
  right + left < a.length &&
@@ -129,6 +140,7 @@ const simpleDiffStringWithCursor = (a, b, cursor) => {
129
140
  ) {
130
141
  left++;
131
142
  }
143
+ if (highSurrogateRegex.test(a[left - 1])) left--;
132
144
  return {
133
145
  index: left,
134
146
  remove: a.length - left - right,
@@ -149,4 +161,4 @@ exports.simpleDiff = simpleDiff;
149
161
  exports.simpleDiffArray = simpleDiffArray;
150
162
  exports.simpleDiffString = simpleDiffString;
151
163
  exports.simpleDiffStringWithCursor = simpleDiffStringWithCursor;
152
- //# sourceMappingURL=diff-55061848.cjs.map
164
+ //# sourceMappingURL=diff-6e7deac6.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-6e7deac6.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\nconst highSurrogateRegex = /[\\uD800-\\uDBFF]/\nconst lowSurrogateRegex = /[\\uDC00-\\uDFFF]/\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 the last same character is a high surrogate, we need to rollback to the previous character\n if (highSurrogateRegex.test(a[left - 1])) left--\n while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {\n right++\n }\n // If the last same character is a low surrogate, we need to rollback to the previous character\n if (lowSurrogateRegex.test(a[a.length - right])) right--\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 // If the last same character is a high surrogate, we need to rollback to the previous character\n if (highSurrogateRegex.test(a[left - 1])) left--\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 // If the last same character is a low surrogate, we need to rollback to the previous character\n if (lowSurrogateRegex.test(a[a.length - right])) right--\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 if (highSurrogateRegex.test(a[left - 1])) left--\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-35e8ddea.cjs');
6
- var diff = require('./diff-55061848.cjs');
6
+ var diff = require('./diff-6e7deac6.cjs');
7
7
  require('./array-a1682de6.cjs');
8
8
  require('./set-0f209abb.cjs');
9
9
  require('./object-aad630ed.cjs');
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../diff.js"],"names":[],"mappings":"AA2CO,oCAJI,MAAM,KACN,MAAM,GACL,WAAW,MAAM,CAAC,CAoB7B;AAlBM,8BAJI,MAAM,KACN,MAAM,GACL,WAAW,MAAM,CAAC,CAoB7B;AAuBM,oFAHmB,OAAO,gCAiBhC;AASM,8CAJI,MAAM,KACN,MAAM,UACN,MAAM;;;;EAyChB;;;;;;;;;;;;;;;;;;;;;;;;;;;YA1Ha,CAAC"}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"diff.test.d.ts","sourceRoot":"","sources":["../diff.test.js"],"names":[],"mappings":"AA0BO,gCAFI,EAAE,QAAQ,QAgBpB;AAKM,sCAFI,EAAE,QAAQ,QAQpB;AAKM,6CAFI,EAAE,QAAQ,QA4CpB;AAKM,qCAFI,EAAE,QAAQ,QAQpB"}
package/dist/index.cjs CHANGED
@@ -7,7 +7,7 @@ var binary = require('./binary-ac8e39e2.cjs');
7
7
  var broadcastchannel = require('./broadcastchannel-4e5909e2.cjs');
8
8
  var encoding = require('./buffer-9b566988.cjs');
9
9
  var conditions = require('./conditions-f5c0c102.cjs');
10
- var diff = require('./diff-55061848.cjs');
10
+ var diff = require('./diff-6e7deac6.cjs');
11
11
  var dom = require('./dom-7ef10fba.cjs');
12
12
  var environment = require('./environment-01c0e75b.cjs');
13
13
  var error = require('./error-8582d695.cjs');
package/dist/testing.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var logging = require('./logging-641c32f4.cjs');
6
- var diff = require('./diff-55061848.cjs');
6
+ var diff = require('./diff-6e7deac6.cjs');
7
7
  var object = require('./object-aad630ed.cjs');
8
8
  var string = require('./string-b1bee84b.cjs');
9
9
  var math = require('./math-08e068f9.cjs');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lib0",
3
- "version": "0.2.68",
3
+ "version": "0.2.69",
4
4
  "description": "",
5
5
  "sideEffects": false,
6
6
  "type": "module",