@did-btcr2/common 2.2.2 → 3.1.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.
- package/dist/cjs/canonicalization.js +68 -56
- package/dist/cjs/canonicalization.js.map +1 -1
- package/dist/cjs/constants.js +17 -12
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/errors.js +20 -3
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/index.js +5 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/json-patch.js +98 -0
- package/dist/cjs/json-patch.js.map +1 -0
- package/dist/cjs/logger.js +46 -12
- package/dist/cjs/logger.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/date.js +123 -0
- package/dist/cjs/utils/date.js.map +1 -0
- package/dist/cjs/utils/json.js +280 -0
- package/dist/cjs/utils/json.js.map +1 -0
- package/dist/cjs/utils/set.js +23 -0
- package/dist/cjs/utils/set.js.map +1 -0
- package/dist/cjs/utils/string.js +55 -0
- package/dist/cjs/utils/string.js.map +1 -0
- package/dist/esm/canonicalization.js +68 -56
- package/dist/esm/canonicalization.js.map +1 -1
- package/dist/esm/constants.js +17 -12
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/errors.js +20 -3
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/index.js +5 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/json-patch.js +98 -0
- package/dist/esm/json-patch.js.map +1 -0
- package/dist/esm/logger.js +46 -12
- package/dist/esm/logger.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/date.js +123 -0
- package/dist/esm/utils/date.js.map +1 -0
- package/dist/esm/utils/json.js +280 -0
- package/dist/esm/utils/json.js.map +1 -0
- package/dist/esm/utils/set.js +23 -0
- package/dist/esm/utils/set.js.map +1 -0
- package/dist/esm/utils/string.js +55 -0
- package/dist/esm/utils/string.js.map +1 -0
- package/dist/types/canonicalization.d.ts +40 -31
- package/dist/types/canonicalization.d.ts.map +1 -1
- package/dist/types/constants.d.ts +6 -9
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/errors.d.ts +14 -3
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces.d.ts +2 -273
- package/dist/types/interfaces.d.ts.map +1 -1
- package/dist/types/json-patch.d.ts +47 -0
- package/dist/types/json-patch.d.ts.map +1 -0
- package/dist/types/logger.d.ts +31 -8
- package/dist/types/logger.d.ts.map +1 -1
- package/dist/types/types.d.ts +12 -4
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils/date.d.ts +39 -0
- package/dist/types/utils/date.d.ts.map +1 -0
- package/dist/types/utils/json.d.ts +89 -0
- package/dist/types/utils/json.d.ts.map +1 -0
- package/dist/types/utils/set.d.ts +14 -0
- package/dist/types/utils/set.d.ts.map +1 -0
- package/dist/types/utils/string.d.ts +39 -0
- package/dist/types/utils/string.d.ts.map +1 -0
- package/package.json +3 -4
- package/src/canonicalization.ts +81 -64
- package/src/constants.ts +19 -13
- package/src/errors.ts +25 -3
- package/src/index.ts +5 -5
- package/src/interfaces.ts +2 -302
- package/src/json-patch.ts +103 -0
- package/src/logger.ts +59 -27
- package/src/types.ts +12 -6
- package/src/utils/date.ts +130 -0
- package/src/utils/json.ts +315 -0
- package/src/utils/set.ts +23 -0
- package/src/utils/string.ts +59 -0
- package/dist/cjs/exts.js +0 -189
- package/dist/cjs/exts.js.map +0 -1
- package/dist/cjs/patch.js +0 -163
- package/dist/cjs/patch.js.map +0 -1
- package/dist/esm/exts.js +0 -189
- package/dist/esm/exts.js.map +0 -1
- package/dist/esm/patch.js +0 -163
- package/dist/esm/patch.js.map +0 -1
- package/dist/types/exts.d.ts +0 -90
- package/dist/types/exts.d.ts.map +0 -1
- package/dist/types/patch.d.ts +0 -63
- package/dist/types/patch.d.ts.map +0 -1
- package/src/exts.ts +0 -310
- package/src/patch.ts +0 -181
- package/src/rdf-canonize.d.ts +0 -6
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility class string-related operations.
|
|
3
|
+
* @name StringUtils
|
|
4
|
+
* @class StringUtils
|
|
5
|
+
*/
|
|
6
|
+
export class StringUtils {
|
|
7
|
+
/**
|
|
8
|
+
* Escape special characters in a string for use in a regular expression.
|
|
9
|
+
* @param {string} value - The string to escape.
|
|
10
|
+
* @returns {string} The escaped string.
|
|
11
|
+
*/
|
|
12
|
+
static escapeRegExp(value: string): string {
|
|
13
|
+
return value.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Convert a camelCase string to snake_case.
|
|
18
|
+
* @param {string} value - The camelCase string to convert.
|
|
19
|
+
* @returns {string} The converted snake_case string.
|
|
20
|
+
*/
|
|
21
|
+
static toSnake(value: string): string {
|
|
22
|
+
return value
|
|
23
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1_$2')
|
|
24
|
+
.toLowerCase();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Convert a string to SNAKE_SCREAMING_CASE.
|
|
29
|
+
* @param {string} value - The string to convert.
|
|
30
|
+
* @returns {string} The converted SNAKE_SCREAMING_CASE string.
|
|
31
|
+
*/
|
|
32
|
+
static toSnakeScream(value: string): string {
|
|
33
|
+
return this.toSnake(value).toUpperCase();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Remove the last character from a string.
|
|
38
|
+
* @param {string} value - The string to chop.
|
|
39
|
+
* @returns {string} The chopped string.
|
|
40
|
+
*/
|
|
41
|
+
static chop(value: string): string {
|
|
42
|
+
return value.length > 0 ? value.slice(0, -1) : '';
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Replace the end of a string if it matches a given pattern.
|
|
47
|
+
* @param {string} value - The string to modify.
|
|
48
|
+
* @param {string | RegExp} pattern - The pattern to match at the end of the string.
|
|
49
|
+
* @param {string} [replacement=''] - The replacement string.
|
|
50
|
+
* @returns {string} The modified string.
|
|
51
|
+
*/
|
|
52
|
+
static replaceEnd(value: string, pattern: string | RegExp, replacement: string = ''): string {
|
|
53
|
+
const regex = pattern instanceof RegExp
|
|
54
|
+
? new RegExp(pattern.source.endsWith('$') ? pattern.source : `${pattern.source}$`, pattern.flags.replace(/g/g, ''))
|
|
55
|
+
: new RegExp(`${this.escapeRegExp(pattern)}$`);
|
|
56
|
+
|
|
57
|
+
return value.replace(regex, replacement);
|
|
58
|
+
}
|
|
59
|
+
}
|
package/dist/cjs/exts.js
DELETED
|
@@ -1,189 +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
|
-
/** Object Interface Extensions */
|
|
150
|
-
Object.json = function (o) {
|
|
151
|
-
return Object.fromEntries(Object.entries(o));
|
|
152
|
-
};
|
|
153
|
-
/** Set Interface Extensions */
|
|
154
|
-
Set.prototype.difference = function (other) {
|
|
155
|
-
const result = new Set(this);
|
|
156
|
-
for (const item of other) {
|
|
157
|
-
if (result.has(item)) {
|
|
158
|
-
result.delete(item);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return result;
|
|
162
|
-
};
|
|
163
|
-
/** String Interface Extensions */
|
|
164
|
-
String.prototype.toSnake = function () {
|
|
165
|
-
return this
|
|
166
|
-
.replace(/([a-z])([A-Z])/g, '$1_$2')
|
|
167
|
-
.toLowerCase();
|
|
168
|
-
};
|
|
169
|
-
String.prototype.toSnakeScream = function () {
|
|
170
|
-
return this.toSnake().toUpperCase();
|
|
171
|
-
};
|
|
172
|
-
String.prototype.chop = function () {
|
|
173
|
-
return this.length > 0 ? this.slice(0, -1) : '';
|
|
174
|
-
};
|
|
175
|
-
String.prototype.replaceEnd = function (e, r) {
|
|
176
|
-
const pattern = e instanceof RegExp
|
|
177
|
-
? new RegExp(e.source.endsWith('$') ? e.source : `${e.source}$`, e.flags.replace('g', ''))
|
|
178
|
-
: new RegExp(`${e.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')}$`);
|
|
179
|
-
return this.replace(pattern, r ?? '');
|
|
180
|
-
};
|
|
181
|
-
/** Uint8Array Interface Extensions */
|
|
182
|
-
Uint8Array.prototype.toArray = function () {
|
|
183
|
-
return Array.from(this);
|
|
184
|
-
};
|
|
185
|
-
Uint8Array.prototype.toHex = function () {
|
|
186
|
-
return Buffer.from(this).toString('hex');
|
|
187
|
-
};
|
|
188
|
-
export default global;
|
|
189
|
-
//# sourceMappingURL=exts.js.map
|
package/dist/cjs/exts.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exts.js","sourceRoot":"","sources":["../../src/exts.ts"],"names":[],"mappings":"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"}
|
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
|
package/dist/cjs/patch.js.map
DELETED
|
@@ -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,189 +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
|
-
/** Object Interface Extensions */
|
|
150
|
-
Object.json = function (o) {
|
|
151
|
-
return Object.fromEntries(Object.entries(o));
|
|
152
|
-
};
|
|
153
|
-
/** Set Interface Extensions */
|
|
154
|
-
Set.prototype.difference = function (other) {
|
|
155
|
-
const result = new Set(this);
|
|
156
|
-
for (const item of other) {
|
|
157
|
-
if (result.has(item)) {
|
|
158
|
-
result.delete(item);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return result;
|
|
162
|
-
};
|
|
163
|
-
/** String Interface Extensions */
|
|
164
|
-
String.prototype.toSnake = function () {
|
|
165
|
-
return this
|
|
166
|
-
.replace(/([a-z])([A-Z])/g, '$1_$2')
|
|
167
|
-
.toLowerCase();
|
|
168
|
-
};
|
|
169
|
-
String.prototype.toSnakeScream = function () {
|
|
170
|
-
return this.toSnake().toUpperCase();
|
|
171
|
-
};
|
|
172
|
-
String.prototype.chop = function () {
|
|
173
|
-
return this.length > 0 ? this.slice(0, -1) : '';
|
|
174
|
-
};
|
|
175
|
-
String.prototype.replaceEnd = function (e, r) {
|
|
176
|
-
const pattern = e instanceof RegExp
|
|
177
|
-
? new RegExp(e.source.endsWith('$') ? e.source : `${e.source}$`, e.flags.replace('g', ''))
|
|
178
|
-
: new RegExp(`${e.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')}$`);
|
|
179
|
-
return this.replace(pattern, r ?? '');
|
|
180
|
-
};
|
|
181
|
-
/** Uint8Array Interface Extensions */
|
|
182
|
-
Uint8Array.prototype.toArray = function () {
|
|
183
|
-
return Array.from(this);
|
|
184
|
-
};
|
|
185
|
-
Uint8Array.prototype.toHex = function () {
|
|
186
|
-
return Buffer.from(this).toString('hex');
|
|
187
|
-
};
|
|
188
|
-
export default global;
|
|
189
|
-
//# sourceMappingURL=exts.js.map
|
package/dist/esm/exts.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exts.js","sourceRoot":"","sources":["../../src/exts.ts"],"names":[],"mappings":"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"}
|