@apigames/json 23.1.6 → 23.2.1

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/lib/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { append, areEqual, clone, extractAndRedact, hasProperty, isArray, isArrayOfBooleans, isArrayOfDates, isArrayOfIntegers, isArrayOfNumbers, isArrayOfObjects, isArrayOfStrings, isBoolean, isDate, isDefined, isDefinedAndNotNull, isEmpty, isError, isFalse, isInteger, isNumber, isObject, isRegExp, isString, isTrue, isUndefined, isUndefinedOrNull, redactUndefinedValues, stringify, } from './utils';
1
+ export { append, areEqual, clone, extractAndRedact, hasProperty, isArray, isArrayOfBooleans, isArrayOfDates, isArrayOfIntegers, isArrayOfNumbers, isArrayOfObjects, isArrayOfStrings, isBoolean, isDate, isDefined, isDefinedAndNotNull, isEmpty, isError, isFalse, isInteger, isNumber, isObject, isRegExp, isString, isTrue, isUndefined, isUndefinedOrNull, redactUndefinedValues, stringify, } from './utils';
package/lib/index.js CHANGED
@@ -1,33 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stringify = exports.redactUndefinedValues = exports.isUndefinedOrNull = exports.isUndefined = exports.isTrue = exports.isString = exports.isRegExp = exports.isObject = exports.isNumber = exports.isInteger = exports.isFalse = exports.isError = exports.isEmpty = exports.isDefinedAndNotNull = exports.isDefined = exports.isDate = exports.isBoolean = exports.isArrayOfStrings = exports.isArrayOfObjects = exports.isArrayOfNumbers = exports.isArrayOfIntegers = exports.isArrayOfDates = exports.isArrayOfBooleans = exports.isArray = exports.hasProperty = exports.extractAndRedact = exports.clone = exports.areEqual = exports.append = void 0;
4
- var utils_1 = require("./utils");
5
- Object.defineProperty(exports, "append", { enumerable: true, get: function () { return utils_1.append; } });
6
- Object.defineProperty(exports, "areEqual", { enumerable: true, get: function () { return utils_1.areEqual; } });
7
- Object.defineProperty(exports, "clone", { enumerable: true, get: function () { return utils_1.clone; } });
8
- Object.defineProperty(exports, "extractAndRedact", { enumerable: true, get: function () { return utils_1.extractAndRedact; } });
9
- Object.defineProperty(exports, "hasProperty", { enumerable: true, get: function () { return utils_1.hasProperty; } });
10
- Object.defineProperty(exports, "isArray", { enumerable: true, get: function () { return utils_1.isArray; } });
11
- Object.defineProperty(exports, "isArrayOfBooleans", { enumerable: true, get: function () { return utils_1.isArrayOfBooleans; } });
12
- Object.defineProperty(exports, "isArrayOfDates", { enumerable: true, get: function () { return utils_1.isArrayOfDates; } });
13
- Object.defineProperty(exports, "isArrayOfIntegers", { enumerable: true, get: function () { return utils_1.isArrayOfIntegers; } });
14
- Object.defineProperty(exports, "isArrayOfNumbers", { enumerable: true, get: function () { return utils_1.isArrayOfNumbers; } });
15
- Object.defineProperty(exports, "isArrayOfObjects", { enumerable: true, get: function () { return utils_1.isArrayOfObjects; } });
16
- Object.defineProperty(exports, "isArrayOfStrings", { enumerable: true, get: function () { return utils_1.isArrayOfStrings; } });
17
- Object.defineProperty(exports, "isBoolean", { enumerable: true, get: function () { return utils_1.isBoolean; } });
18
- Object.defineProperty(exports, "isDate", { enumerable: true, get: function () { return utils_1.isDate; } });
19
- Object.defineProperty(exports, "isDefined", { enumerable: true, get: function () { return utils_1.isDefined; } });
20
- Object.defineProperty(exports, "isDefinedAndNotNull", { enumerable: true, get: function () { return utils_1.isDefinedAndNotNull; } });
21
- Object.defineProperty(exports, "isEmpty", { enumerable: true, get: function () { return utils_1.isEmpty; } });
22
- Object.defineProperty(exports, "isError", { enumerable: true, get: function () { return utils_1.isError; } });
23
- Object.defineProperty(exports, "isFalse", { enumerable: true, get: function () { return utils_1.isFalse; } });
24
- Object.defineProperty(exports, "isInteger", { enumerable: true, get: function () { return utils_1.isInteger; } });
25
- Object.defineProperty(exports, "isNumber", { enumerable: true, get: function () { return utils_1.isNumber; } });
26
- Object.defineProperty(exports, "isObject", { enumerable: true, get: function () { return utils_1.isObject; } });
27
- Object.defineProperty(exports, "isRegExp", { enumerable: true, get: function () { return utils_1.isRegExp; } });
28
- Object.defineProperty(exports, "isString", { enumerable: true, get: function () { return utils_1.isString; } });
29
- Object.defineProperty(exports, "isTrue", { enumerable: true, get: function () { return utils_1.isTrue; } });
30
- Object.defineProperty(exports, "isUndefined", { enumerable: true, get: function () { return utils_1.isUndefined; } });
31
- Object.defineProperty(exports, "isUndefinedOrNull", { enumerable: true, get: function () { return utils_1.isUndefinedOrNull; } });
32
- Object.defineProperty(exports, "redactUndefinedValues", { enumerable: true, get: function () { return utils_1.redactUndefinedValues; } });
33
- Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return utils_1.stringify; } });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringify = exports.redactUndefinedValues = exports.isUndefinedOrNull = exports.isUndefined = exports.isTrue = exports.isString = exports.isRegExp = exports.isObject = exports.isNumber = exports.isInteger = exports.isFalse = exports.isError = exports.isEmpty = exports.isDefinedAndNotNull = exports.isDefined = exports.isDate = exports.isBoolean = exports.isArrayOfStrings = exports.isArrayOfObjects = exports.isArrayOfNumbers = exports.isArrayOfIntegers = exports.isArrayOfDates = exports.isArrayOfBooleans = exports.isArray = exports.hasProperty = exports.extractAndRedact = exports.clone = exports.areEqual = exports.append = void 0;
4
+ var utils_1 = require("./utils");
5
+ Object.defineProperty(exports, "append", { enumerable: true, get: function () { return utils_1.append; } });
6
+ Object.defineProperty(exports, "areEqual", { enumerable: true, get: function () { return utils_1.areEqual; } });
7
+ Object.defineProperty(exports, "clone", { enumerable: true, get: function () { return utils_1.clone; } });
8
+ Object.defineProperty(exports, "extractAndRedact", { enumerable: true, get: function () { return utils_1.extractAndRedact; } });
9
+ Object.defineProperty(exports, "hasProperty", { enumerable: true, get: function () { return utils_1.hasProperty; } });
10
+ Object.defineProperty(exports, "isArray", { enumerable: true, get: function () { return utils_1.isArray; } });
11
+ Object.defineProperty(exports, "isArrayOfBooleans", { enumerable: true, get: function () { return utils_1.isArrayOfBooleans; } });
12
+ Object.defineProperty(exports, "isArrayOfDates", { enumerable: true, get: function () { return utils_1.isArrayOfDates; } });
13
+ Object.defineProperty(exports, "isArrayOfIntegers", { enumerable: true, get: function () { return utils_1.isArrayOfIntegers; } });
14
+ Object.defineProperty(exports, "isArrayOfNumbers", { enumerable: true, get: function () { return utils_1.isArrayOfNumbers; } });
15
+ Object.defineProperty(exports, "isArrayOfObjects", { enumerable: true, get: function () { return utils_1.isArrayOfObjects; } });
16
+ Object.defineProperty(exports, "isArrayOfStrings", { enumerable: true, get: function () { return utils_1.isArrayOfStrings; } });
17
+ Object.defineProperty(exports, "isBoolean", { enumerable: true, get: function () { return utils_1.isBoolean; } });
18
+ Object.defineProperty(exports, "isDate", { enumerable: true, get: function () { return utils_1.isDate; } });
19
+ Object.defineProperty(exports, "isDefined", { enumerable: true, get: function () { return utils_1.isDefined; } });
20
+ Object.defineProperty(exports, "isDefinedAndNotNull", { enumerable: true, get: function () { return utils_1.isDefinedAndNotNull; } });
21
+ Object.defineProperty(exports, "isEmpty", { enumerable: true, get: function () { return utils_1.isEmpty; } });
22
+ Object.defineProperty(exports, "isError", { enumerable: true, get: function () { return utils_1.isError; } });
23
+ Object.defineProperty(exports, "isFalse", { enumerable: true, get: function () { return utils_1.isFalse; } });
24
+ Object.defineProperty(exports, "isInteger", { enumerable: true, get: function () { return utils_1.isInteger; } });
25
+ Object.defineProperty(exports, "isNumber", { enumerable: true, get: function () { return utils_1.isNumber; } });
26
+ Object.defineProperty(exports, "isObject", { enumerable: true, get: function () { return utils_1.isObject; } });
27
+ Object.defineProperty(exports, "isRegExp", { enumerable: true, get: function () { return utils_1.isRegExp; } });
28
+ Object.defineProperty(exports, "isString", { enumerable: true, get: function () { return utils_1.isString; } });
29
+ Object.defineProperty(exports, "isTrue", { enumerable: true, get: function () { return utils_1.isTrue; } });
30
+ Object.defineProperty(exports, "isUndefined", { enumerable: true, get: function () { return utils_1.isUndefined; } });
31
+ Object.defineProperty(exports, "isUndefinedOrNull", { enumerable: true, get: function () { return utils_1.isUndefinedOrNull; } });
32
+ Object.defineProperty(exports, "redactUndefinedValues", { enumerable: true, get: function () { return utils_1.redactUndefinedValues; } });
33
+ Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return utils_1.stringify; } });
package/lib/utils.d.ts CHANGED
@@ -1,29 +1,29 @@
1
- export declare function isDefined(value: any): boolean;
2
- export declare function isDefinedAndNotNull(value: any): boolean;
3
- export declare function isUndefined(value: any): boolean;
4
- export declare function isUndefinedOrNull(value: any): boolean;
5
- export declare function isArray(value: any): value is Array<any>;
6
- export declare function isBoolean(value: any): value is boolean;
7
- export declare function isDate(value: any): value is Date;
8
- export declare function isError(value: any): value is Error;
9
- export declare function isFalse(value: any): boolean;
10
- export declare function isNumber(value: any): value is number;
11
- export declare function isInteger(value: any): value is number;
12
- export declare function isObject(value: any): value is Object;
13
- export declare function isEmpty(document: any): boolean;
14
- export declare function isRegExp(value: any): value is RegExp;
15
- export declare function isString(value: any): value is string;
16
- export declare function isArrayOfBooleans(values: any): values is boolean[];
17
- export declare function isArrayOfDates(values: any): values is Date[];
18
- export declare function isArrayOfIntegers(values: any): values is number[];
19
- export declare function isArrayOfNumbers(values: any): values is number[];
20
- export declare function isArrayOfStrings(values: any): values is string[];
21
- export declare function isArrayOfObjects(values: any): values is object[];
22
- export declare function isTrue(value: any): boolean;
23
- export declare function hasProperty(obj: any, property: string): boolean;
24
- export declare function append(document: any, extensionDocument: any): any;
25
- export declare function areEqual(firstObject: any, secondObject: any): boolean;
26
- export declare function redactUndefinedValues(document: any): void;
27
- export declare function clone(value: any, shouldRedactUndefinedValues?: boolean): any;
28
- export declare function stringify(obj: any, indent?: number, linePrefix?: string, quoteFieldNames?: boolean): string;
29
- export declare function extractAndRedact(document: any, propertyName: string): any;
1
+ export declare function isDefined(value: any): boolean;
2
+ export declare function isDefinedAndNotNull(value: any): boolean;
3
+ export declare function isUndefined(value: any): boolean;
4
+ export declare function isUndefinedOrNull(value: any): boolean;
5
+ export declare function isArray(value: any): value is Array<any>;
6
+ export declare function isBoolean(value: any): value is boolean;
7
+ export declare function isDate(value: any): value is Date;
8
+ export declare function isError(value: any): value is Error;
9
+ export declare function isFalse(value: any): boolean;
10
+ export declare function isNumber(value: any): value is number;
11
+ export declare function isInteger(value: any): value is number;
12
+ export declare function isObject(value: any): value is Object;
13
+ export declare function isEmpty(document: any): boolean;
14
+ export declare function isRegExp(value: any): value is RegExp;
15
+ export declare function isString(value: any): value is string;
16
+ export declare function isArrayOfBooleans(values: any): values is boolean[];
17
+ export declare function isArrayOfDates(values: any): values is Date[];
18
+ export declare function isArrayOfIntegers(values: any): values is number[];
19
+ export declare function isArrayOfNumbers(values: any): values is number[];
20
+ export declare function isArrayOfStrings(values: any): values is string[];
21
+ export declare function isArrayOfObjects(values: any): values is object[];
22
+ export declare function isTrue(value: any): boolean;
23
+ export declare function hasProperty(obj: any, property: string): boolean;
24
+ export declare function append(document: any, extensionDocument: any): any;
25
+ export declare function areEqual(firstObject: any, secondObject: any): boolean;
26
+ export declare function redactUndefinedValues(document: any): void;
27
+ export declare function clone(value: any, shouldRedactUndefinedValues?: boolean): any;
28
+ export declare function stringify(obj: any, indent?: number, linePrefix?: string, quoteFieldNames?: boolean): string;
29
+ export declare function extractAndRedact(document: any, propertyName: string): any;
package/lib/utils.js CHANGED
@@ -1,234 +1,234 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractAndRedact = exports.stringify = exports.clone = exports.redactUndefinedValues = exports.areEqual = exports.append = exports.hasProperty = exports.isTrue = exports.isArrayOfObjects = exports.isArrayOfStrings = exports.isArrayOfNumbers = exports.isArrayOfIntegers = exports.isArrayOfDates = exports.isArrayOfBooleans = exports.isString = exports.isRegExp = exports.isEmpty = exports.isObject = exports.isInteger = exports.isNumber = exports.isFalse = exports.isError = exports.isDate = exports.isBoolean = exports.isArray = exports.isUndefinedOrNull = exports.isUndefined = exports.isDefinedAndNotNull = exports.isDefined = void 0;
4
- const deepEqual = require('deep-equal');
5
- const clonedeep = require('lodash.clonedeep');
6
- function isDefined(value) {
7
- return (value !== undefined);
8
- }
9
- exports.isDefined = isDefined;
10
- function isDefinedAndNotNull(value) {
11
- return (value !== undefined) && (value !== null);
12
- }
13
- exports.isDefinedAndNotNull = isDefinedAndNotNull;
14
- function isUndefined(value) {
15
- return (value === undefined);
16
- }
17
- exports.isUndefined = isUndefined;
18
- function isUndefinedOrNull(value) {
19
- return (value === undefined) || (value === null);
20
- }
21
- exports.isUndefinedOrNull = isUndefinedOrNull;
22
- function isArray(value) {
23
- return isDefinedAndNotNull(value) && (typeof value === 'object')
24
- && (value.constructor === Array);
25
- }
26
- exports.isArray = isArray;
27
- function isBoolean(value) {
28
- return isDefinedAndNotNull(value) && (typeof value === 'boolean');
29
- }
30
- exports.isBoolean = isBoolean;
31
- function isDate(value) {
32
- return isDefinedAndNotNull(value) && (value instanceof Date);
33
- }
34
- exports.isDate = isDate;
35
- function isError(value) {
36
- return isDefinedAndNotNull(value) && (value instanceof Error) && (typeof value.message !== 'undefined');
37
- }
38
- exports.isError = isError;
39
- function isFalse(value) {
40
- return isBoolean(value) && (value === false);
41
- }
42
- exports.isFalse = isFalse;
43
- function isNumber(value) {
44
- return isDefinedAndNotNull(value) && (typeof value === 'number') && isFinite(value);
45
- }
46
- exports.isNumber = isNumber;
47
- function isInteger(value) {
48
- return isNumber(value) && (value % 1 === 0);
49
- }
50
- exports.isInteger = isInteger;
51
- function isObject(value) {
52
- return isDefinedAndNotNull(value) && (typeof value === 'object')
53
- && ((value.constructor === Object) || ((value instanceof Object) && (!isArray(value))));
54
- }
55
- exports.isObject = isObject;
56
- function isEmpty(document) {
57
- return (isUndefined(document)) || (isObject(document) && (Object.keys(document).length === 0));
58
- }
59
- exports.isEmpty = isEmpty;
60
- function isRegExp(value) {
61
- return isDefinedAndNotNull(value) && (typeof value === 'object') && (value.constructor === RegExp);
62
- }
63
- exports.isRegExp = isRegExp;
64
- function isString(value) {
65
- return isDefinedAndNotNull(value) && ((typeof value === 'string') || (value instanceof String));
66
- }
67
- exports.isString = isString;
68
- function isArrayOfBooleans(values) {
69
- if (isArray(values)) {
70
- for (const value of values)
71
- if (!isBoolean(value))
72
- return false;
73
- return true;
74
- }
75
- return false;
76
- }
77
- exports.isArrayOfBooleans = isArrayOfBooleans;
78
- function isArrayOfDates(values) {
79
- if (isArray(values)) {
80
- for (const value of values)
81
- if (!isDate(value))
82
- return false;
83
- return true;
84
- }
85
- return false;
86
- }
87
- exports.isArrayOfDates = isArrayOfDates;
88
- function isArrayOfIntegers(values) {
89
- if (isArray(values)) {
90
- for (const value of values)
91
- if (!isInteger(value))
92
- return false;
93
- return true;
94
- }
95
- return false;
96
- }
97
- exports.isArrayOfIntegers = isArrayOfIntegers;
98
- function isArrayOfNumbers(values) {
99
- if (isArray(values)) {
100
- for (const value of values)
101
- if (!isNumber(value))
102
- return false;
103
- return true;
104
- }
105
- return false;
106
- }
107
- exports.isArrayOfNumbers = isArrayOfNumbers;
108
- function isArrayOfStrings(values) {
109
- if (isArray(values)) {
110
- for (const value of values)
111
- if (!isString(value))
112
- return false;
113
- return true;
114
- }
115
- return false;
116
- }
117
- exports.isArrayOfStrings = isArrayOfStrings;
118
- function isArrayOfObjects(values) {
119
- if (isArray(values)) {
120
- for (const value of values)
121
- if (!isObject(value))
122
- return false;
123
- return true;
124
- }
125
- return false;
126
- }
127
- exports.isArrayOfObjects = isArrayOfObjects;
128
- function isTrue(value) {
129
- return isBoolean(value) && (value === true);
130
- }
131
- exports.isTrue = isTrue;
132
- function hasProperty(obj, property) {
133
- return isDefined(obj) && isObject(obj) && Object.prototype.hasOwnProperty.call(obj, property);
134
- }
135
- exports.hasProperty = hasProperty;
136
- function append(document, extensionDocument) {
137
- const doc = document || {};
138
- const extensionDoc = extensionDocument || {};
139
- const sourceKeys = Object.keys(extensionDoc);
140
- for (let i = 0; i < sourceKeys.length; i++) {
141
- if (isArray(extensionDoc[sourceKeys[i]])) {
142
- if (Object.prototype.hasOwnProperty.call(doc, sourceKeys[i])) {
143
- const sourceSet = new Set(doc[sourceKeys[i]]);
144
- const extensionSet = new Set(extensionDoc[sourceKeys[i]]);
145
- const mergedSet = new Set([...Array.from(sourceSet), ...Array.from(extensionSet)]);
146
- doc[sourceKeys[i]] = [...Array.from(mergedSet)];
147
- }
148
- else {
149
- doc[sourceKeys[i]] = extensionDoc[sourceKeys[i]];
150
- }
151
- }
152
- else if (isObject(extensionDoc[sourceKeys[i]])) {
153
- if (Object.prototype.hasOwnProperty.call(doc, sourceKeys[i])) {
154
- append(doc[sourceKeys[i]], extensionDoc[sourceKeys[i]]);
155
- }
156
- else {
157
- doc[sourceKeys[i]] = extensionDoc[sourceKeys[i]];
158
- }
159
- }
160
- else {
161
- doc[sourceKeys[i]] = extensionDoc[sourceKeys[i]];
162
- }
163
- }
164
- return doc;
165
- }
166
- exports.append = append;
167
- function areEqual(firstObject, secondObject) {
168
- return deepEqual(firstObject, secondObject);
169
- }
170
- exports.areEqual = areEqual;
171
- function redactUndefinedValues(document) {
172
- if (isArray(document)) {
173
- for (let index = document.length - 1; index >= 0; index--) {
174
- if (isDefined(document[index])) {
175
- redactUndefinedValues(document[index]);
176
- }
177
- else {
178
- document = document.splice(index, 1);
179
- }
180
- }
181
- }
182
- else if (isObject(document)) {
183
- for (const key in document) {
184
- if (Object.prototype.hasOwnProperty.call(document, key)) {
185
- if (isDefined(document[key])) {
186
- redactUndefinedValues(document[key]);
187
- }
188
- else {
189
- delete document[key];
190
- }
191
- }
192
- }
193
- }
194
- }
195
- exports.redactUndefinedValues = redactUndefinedValues;
196
- function clone(value, shouldRedactUndefinedValues = true) {
197
- if (value) {
198
- const clonedDocument = clonedeep(value);
199
- if (shouldRedactUndefinedValues) {
200
- redactUndefinedValues(clonedDocument);
201
- }
202
- return clonedDocument;
203
- }
204
- return undefined;
205
- }
206
- exports.clone = clone;
207
- function stringify(obj, indent = 4, linePrefix = '', quoteFieldNames = true) {
208
- const lines = JSON.stringify(obj, null, indent).split('\n');
209
- if (linePrefix !== '') {
210
- for (let i = 1; i < lines.length; i++) {
211
- lines[i] = linePrefix + lines[i];
212
- }
213
- }
214
- if (!quoteFieldNames) {
215
- for (let i = 1; i < lines.length - 1; i++) {
216
- if ((lines[i].match(/:/g) || []).length > 0) {
217
- const valuePair = lines[i].split(':');
218
- valuePair[0] = valuePair[0].replace(/"/g, '');
219
- lines[i] = valuePair.join(':');
220
- }
221
- }
222
- }
223
- return lines.join('\n');
224
- }
225
- exports.stringify = stringify;
226
- function extractAndRedact(document, propertyName) {
227
- if (Object.prototype.hasOwnProperty.call(document, propertyName)) {
228
- const value = clone(document[propertyName]);
229
- delete document[propertyName];
230
- return value;
231
- }
232
- return undefined;
233
- }
234
- exports.extractAndRedact = extractAndRedact;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractAndRedact = exports.stringify = exports.clone = exports.redactUndefinedValues = exports.areEqual = exports.append = exports.hasProperty = exports.isTrue = exports.isArrayOfObjects = exports.isArrayOfStrings = exports.isArrayOfNumbers = exports.isArrayOfIntegers = exports.isArrayOfDates = exports.isArrayOfBooleans = exports.isString = exports.isRegExp = exports.isEmpty = exports.isObject = exports.isInteger = exports.isNumber = exports.isFalse = exports.isError = exports.isDate = exports.isBoolean = exports.isArray = exports.isUndefinedOrNull = exports.isUndefined = exports.isDefinedAndNotNull = exports.isDefined = void 0;
4
+ const deepEqual = require('deep-equal');
5
+ const clonedeep = require('lodash.clonedeep');
6
+ function isDefined(value) {
7
+ return (value !== undefined);
8
+ }
9
+ exports.isDefined = isDefined;
10
+ function isDefinedAndNotNull(value) {
11
+ return (value !== undefined) && (value !== null);
12
+ }
13
+ exports.isDefinedAndNotNull = isDefinedAndNotNull;
14
+ function isUndefined(value) {
15
+ return (value === undefined);
16
+ }
17
+ exports.isUndefined = isUndefined;
18
+ function isUndefinedOrNull(value) {
19
+ return (value === undefined) || (value === null);
20
+ }
21
+ exports.isUndefinedOrNull = isUndefinedOrNull;
22
+ function isArray(value) {
23
+ return isDefinedAndNotNull(value) && (typeof value === 'object')
24
+ && (value.constructor === Array);
25
+ }
26
+ exports.isArray = isArray;
27
+ function isBoolean(value) {
28
+ return isDefinedAndNotNull(value) && (typeof value === 'boolean');
29
+ }
30
+ exports.isBoolean = isBoolean;
31
+ function isDate(value) {
32
+ return isDefinedAndNotNull(value) && (value instanceof Date);
33
+ }
34
+ exports.isDate = isDate;
35
+ function isError(value) {
36
+ return isDefinedAndNotNull(value) && (value instanceof Error) && (typeof value.message !== 'undefined');
37
+ }
38
+ exports.isError = isError;
39
+ function isFalse(value) {
40
+ return isBoolean(value) && (value === false);
41
+ }
42
+ exports.isFalse = isFalse;
43
+ function isNumber(value) {
44
+ return isDefinedAndNotNull(value) && (typeof value === 'number') && isFinite(value);
45
+ }
46
+ exports.isNumber = isNumber;
47
+ function isInteger(value) {
48
+ return isNumber(value) && (value % 1 === 0);
49
+ }
50
+ exports.isInteger = isInteger;
51
+ function isObject(value) {
52
+ return isDefinedAndNotNull(value) && (typeof value === 'object')
53
+ && ((value.constructor === Object) || ((value instanceof Object) && (!isArray(value))));
54
+ }
55
+ exports.isObject = isObject;
56
+ function isEmpty(document) {
57
+ return (isUndefined(document)) || (isObject(document) && (Object.keys(document).length === 0));
58
+ }
59
+ exports.isEmpty = isEmpty;
60
+ function isRegExp(value) {
61
+ return isDefinedAndNotNull(value) && (typeof value === 'object') && (value.constructor === RegExp);
62
+ }
63
+ exports.isRegExp = isRegExp;
64
+ function isString(value) {
65
+ return isDefinedAndNotNull(value) && ((typeof value === 'string') || (value instanceof String));
66
+ }
67
+ exports.isString = isString;
68
+ function isArrayOfBooleans(values) {
69
+ if (isArray(values)) {
70
+ for (const value of values)
71
+ if (!isBoolean(value))
72
+ return false;
73
+ return true;
74
+ }
75
+ return false;
76
+ }
77
+ exports.isArrayOfBooleans = isArrayOfBooleans;
78
+ function isArrayOfDates(values) {
79
+ if (isArray(values)) {
80
+ for (const value of values)
81
+ if (!isDate(value))
82
+ return false;
83
+ return true;
84
+ }
85
+ return false;
86
+ }
87
+ exports.isArrayOfDates = isArrayOfDates;
88
+ function isArrayOfIntegers(values) {
89
+ if (isArray(values)) {
90
+ for (const value of values)
91
+ if (!isInteger(value))
92
+ return false;
93
+ return true;
94
+ }
95
+ return false;
96
+ }
97
+ exports.isArrayOfIntegers = isArrayOfIntegers;
98
+ function isArrayOfNumbers(values) {
99
+ if (isArray(values)) {
100
+ for (const value of values)
101
+ if (!isNumber(value))
102
+ return false;
103
+ return true;
104
+ }
105
+ return false;
106
+ }
107
+ exports.isArrayOfNumbers = isArrayOfNumbers;
108
+ function isArrayOfStrings(values) {
109
+ if (isArray(values)) {
110
+ for (const value of values)
111
+ if (!isString(value))
112
+ return false;
113
+ return true;
114
+ }
115
+ return false;
116
+ }
117
+ exports.isArrayOfStrings = isArrayOfStrings;
118
+ function isArrayOfObjects(values) {
119
+ if (isArray(values)) {
120
+ for (const value of values)
121
+ if (!isObject(value))
122
+ return false;
123
+ return true;
124
+ }
125
+ return false;
126
+ }
127
+ exports.isArrayOfObjects = isArrayOfObjects;
128
+ function isTrue(value) {
129
+ return isBoolean(value) && (value === true);
130
+ }
131
+ exports.isTrue = isTrue;
132
+ function hasProperty(obj, property) {
133
+ return isDefined(obj) && isObject(obj) && Object.prototype.hasOwnProperty.call(obj, property);
134
+ }
135
+ exports.hasProperty = hasProperty;
136
+ function append(document, extensionDocument) {
137
+ const doc = document || {};
138
+ const extensionDoc = extensionDocument || {};
139
+ const sourceKeys = Object.keys(extensionDoc);
140
+ for (let i = 0; i < sourceKeys.length; i++) {
141
+ if (isArray(extensionDoc[sourceKeys[i]])) {
142
+ if (Object.prototype.hasOwnProperty.call(doc, sourceKeys[i])) {
143
+ const sourceSet = new Set(doc[sourceKeys[i]]);
144
+ const extensionSet = new Set(extensionDoc[sourceKeys[i]]);
145
+ const mergedSet = new Set([...Array.from(sourceSet), ...Array.from(extensionSet)]);
146
+ doc[sourceKeys[i]] = [...Array.from(mergedSet)];
147
+ }
148
+ else {
149
+ doc[sourceKeys[i]] = extensionDoc[sourceKeys[i]];
150
+ }
151
+ }
152
+ else if (isObject(extensionDoc[sourceKeys[i]])) {
153
+ if (Object.prototype.hasOwnProperty.call(doc, sourceKeys[i])) {
154
+ append(doc[sourceKeys[i]], extensionDoc[sourceKeys[i]]);
155
+ }
156
+ else {
157
+ doc[sourceKeys[i]] = extensionDoc[sourceKeys[i]];
158
+ }
159
+ }
160
+ else {
161
+ doc[sourceKeys[i]] = extensionDoc[sourceKeys[i]];
162
+ }
163
+ }
164
+ return doc;
165
+ }
166
+ exports.append = append;
167
+ function areEqual(firstObject, secondObject) {
168
+ return deepEqual(firstObject, secondObject);
169
+ }
170
+ exports.areEqual = areEqual;
171
+ function redactUndefinedValues(document) {
172
+ if (isArray(document)) {
173
+ for (let index = document.length - 1; index >= 0; index--) {
174
+ if (isDefined(document[index])) {
175
+ redactUndefinedValues(document[index]);
176
+ }
177
+ else {
178
+ document = document.splice(index, 1);
179
+ }
180
+ }
181
+ }
182
+ else if (isObject(document)) {
183
+ for (const key in document) {
184
+ if (Object.prototype.hasOwnProperty.call(document, key)) {
185
+ if (isDefined(document[key])) {
186
+ redactUndefinedValues(document[key]);
187
+ }
188
+ else {
189
+ delete document[key];
190
+ }
191
+ }
192
+ }
193
+ }
194
+ }
195
+ exports.redactUndefinedValues = redactUndefinedValues;
196
+ function clone(value, shouldRedactUndefinedValues = true) {
197
+ if (value) {
198
+ const clonedDocument = clonedeep(value);
199
+ if (shouldRedactUndefinedValues) {
200
+ redactUndefinedValues(clonedDocument);
201
+ }
202
+ return clonedDocument;
203
+ }
204
+ return undefined;
205
+ }
206
+ exports.clone = clone;
207
+ function stringify(obj, indent = 4, linePrefix = '', quoteFieldNames = true) {
208
+ const lines = JSON.stringify(obj, null, indent).split('\n');
209
+ if (linePrefix !== '') {
210
+ for (let i = 1; i < lines.length; i++) {
211
+ lines[i] = linePrefix + lines[i];
212
+ }
213
+ }
214
+ if (!quoteFieldNames) {
215
+ for (let i = 1; i < lines.length - 1; i++) {
216
+ if ((lines[i].match(/:/g) || []).length > 0) {
217
+ const valuePair = lines[i].split(':');
218
+ valuePair[0] = valuePair[0].replace(/"/g, '');
219
+ lines[i] = valuePair.join(':');
220
+ }
221
+ }
222
+ }
223
+ return lines.join('\n');
224
+ }
225
+ exports.stringify = stringify;
226
+ function extractAndRedact(document, propertyName) {
227
+ if (Object.prototype.hasOwnProperty.call(document, propertyName)) {
228
+ const value = clone(document[propertyName]);
229
+ delete document[propertyName];
230
+ return value;
231
+ }
232
+ return undefined;
233
+ }
234
+ exports.extractAndRedact = extractAndRedact;
package/package.json CHANGED
@@ -13,7 +13,7 @@
13
13
  ],
14
14
  "description": "API Games JSON Utilities",
15
15
  "license": "MIT",
16
- "version": "23.1.6",
16
+ "version": "23.2.1",
17
17
  "main": "lib/index.js",
18
18
  "types": "lib/index.d.ts",
19
19
  "scripts": {
@@ -38,19 +38,19 @@
38
38
  "lodash.clonedeep": "4.5.0"
39
39
  },
40
40
  "devDependencies": {
41
- "@types/jest": "29.5.0",
42
- "@types/node": "18.15.3",
43
- "@typescript-eslint/eslint-plugin": "5.55.0",
44
- "@typescript-eslint/parser": "5.55.0",
45
- "eslint": "8.36.0",
41
+ "@types/jest": "29.5.1",
42
+ "@types/node": "18.15.13",
43
+ "@typescript-eslint/eslint-plugin": "5.59.0",
44
+ "@typescript-eslint/parser": "5.59.0",
45
+ "eslint": "8.38.0",
46
46
  "eslint-config-airbnb": "19.0.4",
47
47
  "eslint-plugin-import": "2.27.5",
48
48
  "eslint-plugin-jsx-a11y": "6.7.1",
49
49
  "eslint-plugin-react": "7.32.2",
50
50
  "eslint-plugin-react-hooks": "4.6.0",
51
51
  "jest": "29.5.0",
52
- "ts-jest": "29.0.5",
53
- "typescript": "4.9.5"
52
+ "ts-jest": "29.1.0",
53
+ "typescript": "5.0.4"
54
54
  },
55
55
  "eslintConfig": {},
56
56
  "repository": {