@did-btcr2/common 2.2.1 → 3.0.0

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.
Files changed (85) hide show
  1. package/dist/cjs/canonicalization.js +66 -54
  2. package/dist/cjs/canonicalization.js.map +1 -1
  3. package/dist/cjs/constants.js +28 -24
  4. package/dist/cjs/constants.js.map +1 -1
  5. package/dist/cjs/index.js +5 -3
  6. package/dist/cjs/index.js.map +1 -1
  7. package/dist/cjs/json-patch.js +98 -0
  8. package/dist/cjs/json-patch.js.map +1 -0
  9. package/dist/cjs/logger.js +46 -12
  10. package/dist/cjs/logger.js.map +1 -1
  11. package/dist/cjs/utils/date.js +32 -0
  12. package/dist/cjs/utils/date.js.map +1 -0
  13. package/dist/cjs/utils/json.js +280 -0
  14. package/dist/cjs/utils/json.js.map +1 -0
  15. package/dist/cjs/utils/set.js +23 -0
  16. package/dist/cjs/utils/set.js.map +1 -0
  17. package/dist/cjs/utils/string.js +55 -0
  18. package/dist/cjs/utils/string.js.map +1 -0
  19. package/dist/esm/canonicalization.js +66 -54
  20. package/dist/esm/canonicalization.js.map +1 -1
  21. package/dist/esm/constants.js +28 -24
  22. package/dist/esm/constants.js.map +1 -1
  23. package/dist/esm/index.js +5 -3
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/json-patch.js +98 -0
  26. package/dist/esm/json-patch.js.map +1 -0
  27. package/dist/esm/logger.js +46 -12
  28. package/dist/esm/logger.js.map +1 -1
  29. package/dist/esm/utils/date.js +32 -0
  30. package/dist/esm/utils/date.js.map +1 -0
  31. package/dist/esm/utils/json.js +280 -0
  32. package/dist/esm/utils/json.js.map +1 -0
  33. package/dist/esm/utils/set.js +23 -0
  34. package/dist/esm/utils/set.js.map +1 -0
  35. package/dist/esm/utils/string.js +55 -0
  36. package/dist/esm/utils/string.js.map +1 -0
  37. package/dist/types/canonicalization.d.ts +38 -29
  38. package/dist/types/canonicalization.d.ts.map +1 -1
  39. package/dist/types/constants.d.ts +6 -11
  40. package/dist/types/constants.d.ts.map +1 -1
  41. package/dist/types/index.d.ts +5 -3
  42. package/dist/types/index.d.ts.map +1 -1
  43. package/dist/types/interfaces.d.ts +2 -2
  44. package/dist/types/interfaces.d.ts.map +1 -1
  45. package/dist/types/json-patch.d.ts +47 -0
  46. package/dist/types/json-patch.d.ts.map +1 -0
  47. package/dist/types/logger.d.ts +31 -8
  48. package/dist/types/logger.d.ts.map +1 -1
  49. package/dist/types/types.d.ts +13 -5
  50. package/dist/types/types.d.ts.map +1 -1
  51. package/dist/types/utils/date.d.ts +19 -0
  52. package/dist/types/utils/date.d.ts.map +1 -0
  53. package/dist/types/utils/json.d.ts +89 -0
  54. package/dist/types/utils/json.d.ts.map +1 -0
  55. package/dist/types/utils/set.d.ts +14 -0
  56. package/dist/types/utils/set.d.ts.map +1 -0
  57. package/dist/types/utils/string.d.ts +39 -0
  58. package/dist/types/utils/string.d.ts.map +1 -0
  59. package/package.json +3 -4
  60. package/src/canonicalization.ts +75 -58
  61. package/src/constants.ts +30 -25
  62. package/src/index.ts +5 -5
  63. package/src/interfaces.ts +2 -2
  64. package/src/json-patch.ts +103 -0
  65. package/src/logger.ts +59 -27
  66. package/src/types.ts +13 -7
  67. package/src/utils/date.ts +32 -0
  68. package/src/utils/json.ts +315 -0
  69. package/src/utils/set.ts +23 -0
  70. package/src/utils/string.ts +59 -0
  71. package/dist/cjs/exts.js +0 -182
  72. package/dist/cjs/exts.js.map +0 -1
  73. package/dist/cjs/patch.js +0 -163
  74. package/dist/cjs/patch.js.map +0 -1
  75. package/dist/esm/exts.js +0 -182
  76. package/dist/esm/exts.js.map +0 -1
  77. package/dist/esm/patch.js +0 -163
  78. package/dist/esm/patch.js.map +0 -1
  79. package/dist/types/exts.d.ts +0 -82
  80. package/dist/types/exts.d.ts.map +0 -1
  81. package/dist/types/patch.d.ts +0 -63
  82. package/dist/types/patch.d.ts.map +0 -1
  83. package/src/exts.ts +0 -293
  84. package/src/patch.ts +0 -181
  85. package/src/rdf-canonize.d.ts +0 -6
package/dist/cjs/patch.js DELETED
@@ -1,163 +0,0 @@
1
- import { MethodError } from './errors.js';
2
- /**
3
- * Implementation of {@link https://datatracker.ietf.org/doc/html/rfc6902 | IETF RFC 6902 JSON Patch}.
4
- *
5
- * JavaScript Object Notation (JSON) Patch defines a JSON document structure for expressing a sequence of operations to
6
- * apply to a JavaScript Object Notation (JSON) document; it is suitable for use with the HTTP PATCH method. The
7
- * "application/json-patch+json" media type is used to identify such patch documents.
8
- *
9
- * @class Patch
10
- * @type {Patch}
11
- */
12
- export class Patch {
13
- /**
14
- * Applies a JSON Patch to a source document and returns the patched document.
15
- * @param {JSONObject} sourceDocument The source document to patch.
16
- * @param {PatchOperation[]} operations The JSON Patch operations to apply.
17
- * @returns {JSONObject} The patched document.
18
- * @throws {Error} If an unsupported operation is provided.
19
- */
20
- apply(sourceDocument, operations) {
21
- const patchedDocument = JSON.normalize(sourceDocument);
22
- for (const operation of operations) {
23
- const { op, path, value, from } = operation;
24
- const segments = path.split('/').slice(1);
25
- switch (op) {
26
- case 'add':
27
- this.setValue(patchedDocument, segments, value);
28
- break;
29
- case 'remove':
30
- this.removeValue(patchedDocument, segments);
31
- break;
32
- case 'replace':
33
- this.setValue(patchedDocument, segments, value);
34
- break;
35
- case 'move': {
36
- if (!from)
37
- throw new Error('Missing \'from\' in move operation');
38
- const fromSegments = from.split('/').slice(1);
39
- const movedValue = this.getValue(patchedDocument, fromSegments);
40
- this.removeValue(patchedDocument, fromSegments);
41
- this.setValue(patchedDocument, segments, movedValue);
42
- break;
43
- }
44
- case 'copy': {
45
- if (!from)
46
- throw new Error('Missing \'from\' in copy operation');
47
- const copiedValue = this.getValue(patchedDocument, from.split('/').slice(1));
48
- this.setValue(patchedDocument, segments, copiedValue);
49
- break;
50
- }
51
- case 'test': {
52
- const existingValue = this.getValue(patchedDocument, segments);
53
- if (JSON.stringify(existingValue) !== JSON.stringify(value)) {
54
- throw new MethodError(`Test operation failed at path`, 'JSON_PATCH_APPLY_ERROR', { path });
55
- }
56
- break;
57
- }
58
- default:
59
- throw new MethodError(`Unsupported JSON Patch operation`, 'JSON_PATCH_APPLY_ERROR', { op });
60
- }
61
- }
62
- return patchedDocument;
63
- }
64
- /**
65
- * Constructs a JSON Patch with a single operation (e.g. add service).
66
- * @param {PatchOperation} patches - The patch operation to create.
67
- * @param {string} patch.op - The patch operation type (e.g. 'add').
68
- * @param {string} patch.path - The JSON Pointer path to apply the operation.
69
- * @param {*} patch.value - The value to apply (if applicable).
70
- * @returns {PatchOperation[]} A single-entry JSON Patch array.
71
- */
72
- create(patches) {
73
- return patches.map(({ op, path, value, from }) => {
74
- const operation = { op, path };
75
- if (value !== undefined) {
76
- operation.value = value;
77
- }
78
- if (from !== undefined) {
79
- operation.from = from;
80
- }
81
- return operation;
82
- });
83
- }
84
- /**
85
- * Find the diff between a source and target document constructing the patch operations from source => target.
86
- * @param {JSONObject} sourceDocument The original JSON object.
87
- * @param {JSONObject} targetDocument The target JSON object to transform into.
88
- * @returns {PatchOperation[]} An array of JSON Patch operations.
89
- */
90
- diff(sourceDocument, targetDocument, path) {
91
- const operations = [];
92
- const sourceKeys = new Set(Object.keys(sourceDocument || {}));
93
- const targetKeys = new Set(Object.keys(targetDocument || {}));
94
- // Handle removed keys
95
- for (const key of sourceKeys) {
96
- if (!targetKeys.has(key)) {
97
- operations.push({ op: 'remove', path: `${path}/${key}` });
98
- }
99
- }
100
- // Handle added or updated keys
101
- for (const key of targetKeys) {
102
- const sourceVal = sourceDocument?.[key];
103
- const targetVal = targetDocument?.[key];
104
- const currentPath = `${path}/${key}`;
105
- if (!(key in (sourceDocument || {}))) {
106
- operations.push({ op: 'add', path: currentPath, value: targetVal });
107
- }
108
- else if (typeof sourceVal === 'object' && sourceVal !== null && typeof targetVal === 'object' && targetVal !== null) {
109
- operations.push(...this.diff(sourceVal, targetVal, currentPath));
110
- }
111
- else if (JSON.stringify(sourceVal) !== JSON.stringify(targetVal)) {
112
- operations.push({ op: 'replace', path: currentPath, value: targetVal });
113
- }
114
- }
115
- return operations;
116
- }
117
- /**
118
- * Gets the value at a given path in an object.
119
- * @private
120
- * @param {*} obj The object to get the value from.
121
- * @param {string[]} path The path to the value.
122
- * @returns {*} The value at the given path.
123
- */
124
- getValue(obj, path) {
125
- return path.reduce((acc, key) => (acc && acc[key] !== undefined ? acc[key] : undefined), obj);
126
- }
127
- /**
128
- * Sets the value at a given path in an object.
129
- * @private
130
- * @param {*} obj The object to set the value in.
131
- * @param {string[]} path The path to the value.
132
- * @param {*} value The value to set.
133
- * @returns {*} The object with the value set.
134
- */
135
- setValue(obj, path, value) {
136
- let current = obj;
137
- for (let i = 0; i < path.length - 1; i++) {
138
- const key = path[i];
139
- if (!(key in current))
140
- current[key] = {};
141
- current = current[key];
142
- }
143
- current[path[path.length - 1]] = value;
144
- }
145
- /**
146
- * Removes the value at a given path in an object.
147
- * @private
148
- * @param {*} obj The object to remove the value from.
149
- * @param {string[]} path The path to the value.
150
- * @returns {*} The object with the value removed.
151
- */
152
- removeValue(obj, path) {
153
- let current = obj;
154
- for (let i = 0; i < path.length - 1; i++) {
155
- const key = path[i];
156
- if (!(key in current))
157
- return;
158
- current = current[key];
159
- }
160
- delete current[path[path.length - 1]];
161
- }
162
- }
163
- //# sourceMappingURL=patch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/patch.ts"],"names":[],"mappings":"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"}
package/dist/esm/exts.js DELETED
@@ -1,182 +0,0 @@
1
- import { Canonicalization } from './canonicalization.js';
2
- import { Patch } from './patch.js';
3
- /** Array Interface Extensions */
4
- Array.prototype.last = function () {
5
- return this[this.length - 1] ?? undefined;
6
- };
7
- Array.prototype[-1] = function () {
8
- return this.last();
9
- };
10
- Array.prototype.toUint8Array = function () {
11
- return new Uint8Array(this);
12
- };
13
- /** BufferConstructor/Buffer Interface Extensions */
14
- Buffer.fromHex = function (hex) {
15
- return Buffer.from(hex, 'hex');
16
- };
17
- Buffer.toHex = function (ui8) {
18
- return Buffer.from(ui8).toString('hex');
19
- };
20
- Buffer.toUint8Array = function (buf) {
21
- return new Uint8Array(buf);
22
- };
23
- /** Date Interface Extensions */
24
- Date.prototype.getUTCDateTime = function () {
25
- return `${this.toISOString().slice(0, -5)}Z`;
26
- };
27
- Date.prototype.toUnix = function () {
28
- const time = this.getTime();
29
- if (isNaN(time)) {
30
- throw new Error(`Invalid date string: "${this}"`);
31
- }
32
- return time;
33
- };
34
- /** JSON Interface Extensions */
35
- JSON.is = function (unknown) {
36
- if (unknown === null || typeof unknown !== 'object')
37
- return false;
38
- if (Array.isArray(unknown))
39
- return unknown.every(item => Object.getPrototypeOf(item) !== null);
40
- else
41
- return Object.getPrototypeOf(unknown) === null;
42
- };
43
- JSON.parsable = function (unknown) {
44
- try {
45
- JSON.parse(unknown);
46
- return true;
47
- }
48
- catch {
49
- return false;
50
- }
51
- };
52
- JSON.stringifiable = function (unknown) {
53
- try {
54
- JSON.stringify(unknown);
55
- return true;
56
- }
57
- catch {
58
- return false;
59
- }
60
- };
61
- JSON.unprototyped = function (unknown) {
62
- if (Array.isArray(unknown)) {
63
- return unknown.every(item => Object.getPrototypeOf(item) === null);
64
- }
65
- return Object.getPrototypeOf(unknown) === null;
66
- };
67
- JSON.normalize = function (unknown) {
68
- try {
69
- return JSON.parse(JSON.stringify(unknown));
70
- }
71
- catch {
72
- throw new Error('The object is not unprotocyped');
73
- }
74
- };
75
- JSON.copy = function (o) {
76
- return Object.assign({}, o);
77
- };
78
- JSON.clone = function (o) {
79
- return JSON.parse(JSON.stringify(o));
80
- };
81
- JSON.cloneReplace = function (o, e, r) {
82
- return JSON.parse(JSON.stringify(o).replaceAll(e, r));
83
- };
84
- JSON.equal = function (a, b) {
85
- return a === b;
86
- };
87
- JSON.deepEqual = function (a, b) {
88
- if (JSON.equal(a, b))
89
- return true;
90
- if (a === null || b === null || typeof a !== typeof b)
91
- return false;
92
- if (typeof a === 'object') {
93
- const isArrayA = Array.isArray(a);
94
- const isArrayB = Array.isArray(b);
95
- if (isArrayA !== isArrayB)
96
- return false;
97
- if (isArrayA && isArrayB) {
98
- if (a.length !== b.length)
99
- return false;
100
- for (let i = 0; i < a.length; i++) {
101
- if (!this.deepEqual(a[i], b[i]))
102
- return false;
103
- }
104
- return true;
105
- }
106
- else {
107
- const keysA = Object.keys(a);
108
- const keysB = Object.keys(b);
109
- if (keysA.length !== keysB.length)
110
- return false;
111
- for (const key of keysA) {
112
- if (!Object.prototype.hasOwnProperty.call(b, key)) {
113
- return false;
114
- }
115
- if (!this.deepEqual(a[key], b[key])) {
116
- return false;
117
- }
118
- }
119
- return true;
120
- }
121
- }
122
- return false;
123
- };
124
- JSON.delete = function (o, keys) {
125
- if (!JSON.is(o))
126
- return o;
127
- for (const key of keys) {
128
- if (Object.prototype.hasOwnProperty.call(o, key)) {
129
- delete o[key];
130
- }
131
- for (const key in o) {
132
- if (typeof o[key] === 'object') {
133
- o[key] = this.delete(o[key], [key]);
134
- }
135
- }
136
- }
137
- return o;
138
- };
139
- JSON.sanitize = function (o) {
140
- for (const key of Object.keys(o)) {
141
- if (o[key] === undefined) {
142
- delete o[key];
143
- }
144
- }
145
- return o;
146
- };
147
- JSON.canonicalization = new Canonicalization();
148
- JSON.patch = new Patch();
149
- /** Set Interface Extensions */
150
- Set.prototype.difference = function (other) {
151
- const result = new Set(this);
152
- for (const item of other) {
153
- if (result.has(item)) {
154
- result.delete(item);
155
- }
156
- }
157
- return result;
158
- };
159
- /** String Interface Extensions */
160
- String.prototype.toSnake = function () {
161
- return this
162
- .replace(/([a-z])([A-Z])/g, '$1_$2')
163
- .toLowerCase();
164
- };
165
- String.prototype.toSnakeScream = function () {
166
- return this.toSnake().toUpperCase();
167
- };
168
- String.prototype.chop = function () {
169
- return this.length > 0 ? this.slice(0, -1) : '';
170
- };
171
- String.prototype.replaceEnd = function (e, r) {
172
- const pattern = e instanceof RegExp
173
- ? new RegExp(e.source.endsWith('$') ? e.source : `${e.source}$`, e.flags.replace('g', ''))
174
- : new RegExp(`${e.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')}$`);
175
- return this.replace(pattern, r ?? '');
176
- };
177
- /** Uint8Array Interface Extensions */
178
- Uint8Array.prototype.toArray = function () {
179
- return Array.from(this);
180
- };
181
- export default global;
182
- //# sourceMappingURL=exts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exts.js","sourceRoot":"","sources":["../../src/exts.ts"],"names":[],"mappings":"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"}
package/dist/esm/patch.js DELETED
@@ -1,163 +0,0 @@
1
- import { MethodError } from './errors.js';
2
- /**
3
- * Implementation of {@link https://datatracker.ietf.org/doc/html/rfc6902 | IETF RFC 6902 JSON Patch}.
4
- *
5
- * JavaScript Object Notation (JSON) Patch defines a JSON document structure for expressing a sequence of operations to
6
- * apply to a JavaScript Object Notation (JSON) document; it is suitable for use with the HTTP PATCH method. The
7
- * "application/json-patch+json" media type is used to identify such patch documents.
8
- *
9
- * @class Patch
10
- * @type {Patch}
11
- */
12
- export class Patch {
13
- /**
14
- * Applies a JSON Patch to a source document and returns the patched document.
15
- * @param {JSONObject} sourceDocument The source document to patch.
16
- * @param {PatchOperation[]} operations The JSON Patch operations to apply.
17
- * @returns {JSONObject} The patched document.
18
- * @throws {Error} If an unsupported operation is provided.
19
- */
20
- apply(sourceDocument, operations) {
21
- const patchedDocument = JSON.normalize(sourceDocument);
22
- for (const operation of operations) {
23
- const { op, path, value, from } = operation;
24
- const segments = path.split('/').slice(1);
25
- switch (op) {
26
- case 'add':
27
- this.setValue(patchedDocument, segments, value);
28
- break;
29
- case 'remove':
30
- this.removeValue(patchedDocument, segments);
31
- break;
32
- case 'replace':
33
- this.setValue(patchedDocument, segments, value);
34
- break;
35
- case 'move': {
36
- if (!from)
37
- throw new Error('Missing \'from\' in move operation');
38
- const fromSegments = from.split('/').slice(1);
39
- const movedValue = this.getValue(patchedDocument, fromSegments);
40
- this.removeValue(patchedDocument, fromSegments);
41
- this.setValue(patchedDocument, segments, movedValue);
42
- break;
43
- }
44
- case 'copy': {
45
- if (!from)
46
- throw new Error('Missing \'from\' in copy operation');
47
- const copiedValue = this.getValue(patchedDocument, from.split('/').slice(1));
48
- this.setValue(patchedDocument, segments, copiedValue);
49
- break;
50
- }
51
- case 'test': {
52
- const existingValue = this.getValue(patchedDocument, segments);
53
- if (JSON.stringify(existingValue) !== JSON.stringify(value)) {
54
- throw new MethodError(`Test operation failed at path`, 'JSON_PATCH_APPLY_ERROR', { path });
55
- }
56
- break;
57
- }
58
- default:
59
- throw new MethodError(`Unsupported JSON Patch operation`, 'JSON_PATCH_APPLY_ERROR', { op });
60
- }
61
- }
62
- return patchedDocument;
63
- }
64
- /**
65
- * Constructs a JSON Patch with a single operation (e.g. add service).
66
- * @param {PatchOperation} patches - The patch operation to create.
67
- * @param {string} patch.op - The patch operation type (e.g. 'add').
68
- * @param {string} patch.path - The JSON Pointer path to apply the operation.
69
- * @param {*} patch.value - The value to apply (if applicable).
70
- * @returns {PatchOperation[]} A single-entry JSON Patch array.
71
- */
72
- create(patches) {
73
- return patches.map(({ op, path, value, from }) => {
74
- const operation = { op, path };
75
- if (value !== undefined) {
76
- operation.value = value;
77
- }
78
- if (from !== undefined) {
79
- operation.from = from;
80
- }
81
- return operation;
82
- });
83
- }
84
- /**
85
- * Find the diff between a source and target document constructing the patch operations from source => target.
86
- * @param {JSONObject} sourceDocument The original JSON object.
87
- * @param {JSONObject} targetDocument The target JSON object to transform into.
88
- * @returns {PatchOperation[]} An array of JSON Patch operations.
89
- */
90
- diff(sourceDocument, targetDocument, path) {
91
- const operations = [];
92
- const sourceKeys = new Set(Object.keys(sourceDocument || {}));
93
- const targetKeys = new Set(Object.keys(targetDocument || {}));
94
- // Handle removed keys
95
- for (const key of sourceKeys) {
96
- if (!targetKeys.has(key)) {
97
- operations.push({ op: 'remove', path: `${path}/${key}` });
98
- }
99
- }
100
- // Handle added or updated keys
101
- for (const key of targetKeys) {
102
- const sourceVal = sourceDocument?.[key];
103
- const targetVal = targetDocument?.[key];
104
- const currentPath = `${path}/${key}`;
105
- if (!(key in (sourceDocument || {}))) {
106
- operations.push({ op: 'add', path: currentPath, value: targetVal });
107
- }
108
- else if (typeof sourceVal === 'object' && sourceVal !== null && typeof targetVal === 'object' && targetVal !== null) {
109
- operations.push(...this.diff(sourceVal, targetVal, currentPath));
110
- }
111
- else if (JSON.stringify(sourceVal) !== JSON.stringify(targetVal)) {
112
- operations.push({ op: 'replace', path: currentPath, value: targetVal });
113
- }
114
- }
115
- return operations;
116
- }
117
- /**
118
- * Gets the value at a given path in an object.
119
- * @private
120
- * @param {*} obj The object to get the value from.
121
- * @param {string[]} path The path to the value.
122
- * @returns {*} The value at the given path.
123
- */
124
- getValue(obj, path) {
125
- return path.reduce((acc, key) => (acc && acc[key] !== undefined ? acc[key] : undefined), obj);
126
- }
127
- /**
128
- * Sets the value at a given path in an object.
129
- * @private
130
- * @param {*} obj The object to set the value in.
131
- * @param {string[]} path The path to the value.
132
- * @param {*} value The value to set.
133
- * @returns {*} The object with the value set.
134
- */
135
- setValue(obj, path, value) {
136
- let current = obj;
137
- for (let i = 0; i < path.length - 1; i++) {
138
- const key = path[i];
139
- if (!(key in current))
140
- current[key] = {};
141
- current = current[key];
142
- }
143
- current[path[path.length - 1]] = value;
144
- }
145
- /**
146
- * Removes the value at a given path in an object.
147
- * @private
148
- * @param {*} obj The object to remove the value from.
149
- * @param {string[]} path The path to the value.
150
- * @returns {*} The object with the value removed.
151
- */
152
- removeValue(obj, path) {
153
- let current = obj;
154
- for (let i = 0; i < path.length - 1; i++) {
155
- const key = path[i];
156
- if (!(key in current))
157
- return;
158
- current = current[key];
159
- }
160
- delete current[path[path.length - 1]];
161
- }
162
- }
163
- //# sourceMappingURL=patch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/patch.ts"],"names":[],"mappings":"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"}
@@ -1,82 +0,0 @@
1
- import { Canonicalization } from './canonicalization.js';
2
- import { Patch } from './patch.js';
3
- import { JSONObject, Maybe, Prototyped, Unprototyped } from './types.js';
4
- /** Extend the global namespace */
5
- declare global {
6
- /** Extend the global Array interface */
7
- interface Array<T> {
8
- /** Get the last element of the array */
9
- last(): T | undefined;
10
- /** Get the last element of the array */
11
- [-1](): T | undefined;
12
- /** Convert Array to Uint8Array */
13
- toUint8Array(): Uint8Array;
14
- }
15
- /** Extend the global Buffer interface */
16
- interface BufferConstructor {
17
- /** Convert a hex string to a Buffer */
18
- fromHex(hex: string): Buffer<ArrayBuffer>;
19
- /** Convert a Uint8Array to a hex string */
20
- toHex(ui8: Uint8Array): string;
21
- /** Convert Buffer to Uint8Array */
22
- toUint8Array(buf: Buffer<ArrayBuffer>): Uint8Array;
23
- }
24
- /** Extend the global Date interface */
25
- interface Date {
26
- /** Get the UTC date and time in ISO 8601 format */
27
- getUTCDateTime(): string;
28
- /** Convert date to Unix timestamp */
29
- toUnix(): number;
30
- }
31
- /** Extend global JSON interface */
32
- interface JSON {
33
- /** Check if an object is a JSON object */
34
- is(unknown: Maybe<JSONObject>): boolean;
35
- /** Check if JSON string can be parsed to JSON object */
36
- parsable(unknown: Maybe<string>): boolean;
37
- /** Check if JSON object can be converted to JSON string */
38
- stringifiable(unknown: Maybe<JSONObject>): boolean;
39
- /** Check if JSON object is unprototyped [Object: null prototype] {} */
40
- unprototyped(unknown: Maybe<Prototyped>): boolean;
41
- /** Normalize unprototyped JSON object to prototyped JSON object */
42
- normalize(unknown: Maybe<Unprototyped>): Prototyped;
43
- /** Shallow copy of JSON object */
44
- copy(o: JSONObject): JSONObject;
45
- /** Clone (deep copy) of JSON object */
46
- clone(o: JSONObject): JSONObject;
47
- /** Deep copy of JSON object with replacement */
48
- cloneReplace(o: JSONObject, e: RegExp, r: string): JSONObject;
49
- /** Check if two objects are strictly equal */
50
- equal(a: any, b: any): boolean;
51
- /** Check if two objects are deeply equal */
52
- deepEqual(a: any, b: any): boolean;
53
- /** Delete key/value pair(s) from a JSON object */
54
- delete(o: JSONObject, keys: Array<string | number | symbol>): JSONObject;
55
- /** Sanitize a JSON object by removing any keys whose value is undefined */
56
- sanitize(o: JSONObject): JSONObject;
57
- /** Canonicalization object */
58
- canonicalization: Canonicalization;
59
- /** JSON Patch (IETF RFC 6902) */
60
- patch: Patch;
61
- }
62
- /** Extend global Set interface */
63
- interface Set<T> {
64
- /** Get the difference between two sets */
65
- difference(other: Set<T>): Set<T>;
66
- }
67
- interface String {
68
- /** Convert to SCREAMING_SNAKE_CASE */
69
- toSnakeScream(): string;
70
- /** Convert to snake_case */
71
- toSnake(): string;
72
- /** Remove the last character from a string */
73
- chop(): string;
74
- /** Replace the end of a string */
75
- replaceEnd(e: string | RegExp, r?: string): string;
76
- }
77
- /** Extend the global Uint8Array interface */
78
- interface Uint8Array {
79
- toArray(): number[];
80
- }
81
- }
82
- export default global;
@@ -1 +0,0 @@
1
- {"version":3,"file":"exts.d.ts","sourceRoot":"","sources":["../../src/exts.ts"],"names":[],"mappings":"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"}