lang-json 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. package/babel.config.js +8 -0
  2. package/coverage/clover.xml +6 -0
  3. package/coverage/coverage-final.json +1 -0
  4. package/coverage/lcov-report/base.css +224 -0
  5. package/coverage/lcov-report/block-navigation.js +87 -0
  6. package/coverage/lcov-report/favicon.png +0 -0
  7. package/coverage/lcov-report/index.html +101 -0
  8. package/coverage/lcov-report/prettify.css +1 -0
  9. package/coverage/lcov-report/prettify.js +2 -0
  10. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  11. package/coverage/lcov-report/sorter.js +196 -0
  12. package/dist/esm/src/index.d.ts +18 -0
  13. package/dist/esm/src/index.js +415 -0
  14. package/dist/esm/src/index.js.map +1 -0
  15. package/dist/esm/src/modules/is-this/index.d.ts +136 -0
  16. package/dist/esm/src/modules/is-this/index.js +484 -0
  17. package/dist/esm/src/modules/is-this/index.js.map +1 -0
  18. package/dist/esm/tests/helpers.test.d.ts +1 -0
  19. package/dist/esm/tests/helpers.test.js +220 -0
  20. package/dist/esm/tests/helpers.test.js.map +1 -0
  21. package/dist/esm/tests/index.test.d.ts +1 -0
  22. package/dist/esm/tests/index.test.js +537 -0
  23. package/dist/esm/tests/index.test.js.map +1 -0
  24. package/jest.config.ts +212 -0
  25. package/package.json +19 -9
  26. package/src/index.ts +450 -296
  27. package/src/modules/is-this/index.ts +682 -0
  28. package/tests/helpers.test.ts +259 -0
  29. package/tests/index.test.ts +681 -0
  30. package/tsconfig.json +15 -16
  31. package/dist/esm/dump.js +0 -2
  32. package/dist/esm/dump.js.map +0 -1
  33. package/dist/esm/example.d.ts +0 -13
  34. package/dist/esm/example.js +0 -93
  35. package/dist/esm/example.js.map +0 -1
  36. package/dist/esm/index.d.ts +0 -36
  37. package/dist/esm/index.js +0 -326
  38. package/dist/esm/index.js.map +0 -1
  39. package/src/example.ts +0 -116
  40. /package/{dist/esm/dump.d.ts → coverage/lcov.info} +0 -0
@@ -0,0 +1,18 @@
1
+ type HelperFunction = (args: any, data: any, innerTemplate: any) => any;
2
+ export default class LangJSON {
3
+ helpers: Record<string, HelperFunction>;
4
+ private memory;
5
+ constructor();
6
+ registerHelper(name: string, fn: HelperFunction): void;
7
+ registerHelpers(helpers: {
8
+ [key: string]: HelperFunction;
9
+ }): void;
10
+ getHelper(name: string): HelperFunction | undefined;
11
+ applyTemplate(template: any, data: any, innerTemplate?: any): any;
12
+ lookup(varPath: string | number, data: any): any;
13
+ sanitizeArg(arg: any, helperName: any, data: any): any;
14
+ handleSpitStringArgs(stringArg: string): string[];
15
+ processHelperArgs(helperArgs: string, data: any, innerTemplate: any): any;
16
+ processHelper(string: string, data: any, innerTemplate?: any, stringMatches?: any): any;
17
+ }
18
+ export {};
@@ -0,0 +1,415 @@
1
+ // import isThis from "@devanshdeveloper/is-this";
2
+ import isThis from "./modules/is-this/index";
3
+ class MemoryAddresses {
4
+ storage = {};
5
+ // Helper function to generate a random string key
6
+ generateKey(length = 4) {
7
+ const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";
8
+ let key = "";
9
+ for (let i = 0; i < length; i++) {
10
+ key += chars.charAt(Math.floor(Math.random() * chars.length));
11
+ }
12
+ return key;
13
+ }
14
+ // Store data with a random key
15
+ storeData(data) {
16
+ const key = this.generateKey();
17
+ this.storage[key] = data;
18
+ return key;
19
+ }
20
+ getData(key) {
21
+ return this.storage[key] !== undefined ? this.storage[key] : null;
22
+ }
23
+ removeData(key) {
24
+ if (this.storage[key]) {
25
+ delete this.storage[key];
26
+ }
27
+ }
28
+ }
29
+ export default class LangJSON {
30
+ helpers = {};
31
+ memory = {};
32
+ constructor() {
33
+ // Registering Default Helpers
34
+ this.registerHelpers({
35
+ var: ([string], data) => {
36
+ return this.lookup(string, data);
37
+ },
38
+ // manupilating helpers
39
+ each: ([arr], data, innerTemplate) => {
40
+ const result = [];
41
+ for (let i = 0; i < arr.length; i++) {
42
+ const element = arr[i];
43
+ result.push(this.applyTemplate(innerTemplate, {
44
+ ...data,
45
+ item: element,
46
+ index: i,
47
+ }));
48
+ }
49
+ return result;
50
+ },
51
+ loop: (number, data, innerTemplate) => {
52
+ const result = [];
53
+ for (let i = 0; i < number; i++) {
54
+ result.push(this.applyTemplate(innerTemplate, {
55
+ ...data,
56
+ index: i,
57
+ }));
58
+ }
59
+ return result;
60
+ },
61
+ // String Helpers
62
+ uppercase: ([str]) => str.toUpperCase(),
63
+ lowercase: ([str]) => str.toLowerCase(),
64
+ capitalize: ([str]) => str.charAt(0).toUpperCase() + str.slice(1),
65
+ trim: ([str]) => str.trim(),
66
+ substring: ([str, start, length]) => str.substring(start, start + length),
67
+ concat: ([...args]) => args.join(""),
68
+ replace: ([str, search, replacement]) => str.replace(new RegExp(search, "g"), replacement),
69
+ split: ([str, separator]) => str.split(separator),
70
+ join: ([arr, separator]) => arr.join(separator),
71
+ contains: ([str, substring]) => str.includes(substring),
72
+ length: ([str]) => str.length,
73
+ startsWith: ([str, prefix]) => str.startsWith(prefix),
74
+ endsWith: ([str, suffix]) => str.endsWith(suffix),
75
+ reverseString: ([str]) => str.split("").reverse().join(""),
76
+ isEmpty: ([str]) => !str || str.length === 0,
77
+ formatPhoneNumber: ([number]) => number.replace(/(\d{3})(\d{3})(\d{4})/, "($1) $2-$3"),
78
+ toTitleCase: ([str]) => str.toLowerCase().replace(/\b\w/g, (char) => char.toUpperCase()),
79
+ repeat: ([str, times]) => str.repeat(times),
80
+ // Mathematical Helpers
81
+ add: ([a, b]) => a + b,
82
+ subtract: ([a, b]) => a - b,
83
+ multiply: ([a, b]) => a * b,
84
+ divide: ([a, b]) => a / b,
85
+ modulo: ([a, b]) => a % b,
86
+ max: ([...args]) => Math.max(...args),
87
+ min: ([...args]) => Math.min(...args),
88
+ round: ([num]) => Math.round(num),
89
+ floor: ([num]) => Math.floor(num),
90
+ ceil: ([num]) => Math.ceil(num),
91
+ // Logical Helpers
92
+ if: ([condition, trueValue, falseValue]) => condition ? trueValue : falseValue,
93
+ and: ([...conditions]) => conditions.every(Boolean),
94
+ or: ([...conditions]) => conditions.some(Boolean),
95
+ not: ([condition]) => !condition,
96
+ // Date and Time Helpers
97
+ getCurrentDate: () => new Date().toISOString().split("T")[0],
98
+ getCurrentTime: () => new Date().toLocaleTimeString(),
99
+ // Array Helpers
100
+ arrayLength: ([arr]) => arr.length,
101
+ arrayIncludes: ([arr, item]) => arr.includes(item),
102
+ arrayJoin: ([arr, separator]) => arr.join(separator),
103
+ arrayMap: ([arr, fn]) => arr.map(fn),
104
+ arrayFilter: ([arr, fn]) => arr.filter(fn),
105
+ arrayReduce: ([arr, fn, initial]) => arr.reduce(fn, initial),
106
+ uniqueArray: ([arr]) => [...new Set(arr)],
107
+ flattenArray: ([arr]) => arr.flat(),
108
+ arraySort: ([arr, compareFn]) => arr.sort(compareFn),
109
+ arrayFind: ([arr, fn]) => arr.find(fn),
110
+ arrayEvery: ([arr, fn]) => arr.every(fn),
111
+ arraySome: ([arr, fn]) => arr.some(fn),
112
+ // Object Helpers
113
+ objectKeys: ([obj]) => Object.keys(obj),
114
+ objectValues: ([obj]) => Object.values(obj),
115
+ objectEntries: ([obj]) => Object.entries(obj),
116
+ objectHasKey: ([obj, key]) => Object.prototype.hasOwnProperty.call(obj, key),
117
+ mergeObjects: ([obj1, obj2]) => ({ ...obj1, ...obj2 }),
118
+ deepClone: ([obj]) => JSON.parse(JSON.stringify(obj)),
119
+ objectFreeze: ([obj]) => Object.freeze(obj),
120
+ objectMergeDeep: ([obj1, obj2]) => {
121
+ function mergeDeep(obj1, obj2) {
122
+ const result = { ...obj1 };
123
+ for (const key in obj2) {
124
+ if (obj2[key] instanceof Object && !Array.isArray(obj2[key])) {
125
+ result[key] = mergeDeep(obj1[key], obj2[key]); // Use the named function 'mergeDeep'
126
+ }
127
+ else {
128
+ result[key] = obj2[key];
129
+ }
130
+ }
131
+ return result;
132
+ }
133
+ return mergeDeep(obj1, obj2);
134
+ },
135
+ // Random Helpers
136
+ randomNumber: ([min, max]) => Math.floor(Math.random() * (max - min + 1)) + min,
137
+ randomElement: ([arr]) => arr[Math.floor(Math.random() * arr.length)],
138
+ // Formatting Helpers
139
+ currency: ([amount, currencySymbol]) => `${currencySymbol}${amount.toFixed(2)}`,
140
+ percent: ([num]) => `${(num * 100).toFixed(2)}%`,
141
+ // Miscellaneous Helpers
142
+ jsonStringify: ([obj]) => JSON.stringify(obj),
143
+ jsonParse: ([str]) => JSON.parse(str),
144
+ delay: ([ms]) => new Promise((resolve) => setTimeout(resolve, ms)),
145
+ noop: () => { }, // No operation function
146
+ deepEqual: ([obj1, obj2]) => JSON.stringify(obj1) === JSON.stringify(obj2), // Deep equality check
147
+ // Additional String Manipulation Helpers
148
+ snakeToCamel: ([str]) => str.replace(/([-_]\w)/g, (g) => g[1].toUpperCase()),
149
+ camelToSnake: ([str]) => str.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase(),
150
+ // Additional Array Helpers
151
+ chunkArray: ([arr, size]) => Array.from({ length: Math.ceil(arr.length / size) }, (_, i) => arr.slice(i * size, i * size + size)),
152
+ shuffleArray: ([arr]) => arr.sort(() => Math.random() - 0.5),
153
+ removeDuplicates: ([arr]) => arr.filter((item, index) => arr.indexOf(item) === index),
154
+ // Additional Object Helpers
155
+ objectMap: ([obj, fn]) => Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, fn(value)])),
156
+ });
157
+ this.memory = new MemoryAddresses();
158
+ }
159
+ // Managing Helpers
160
+ registerHelper(name, fn) {
161
+ this.helpers[name] = fn;
162
+ }
163
+ registerHelpers(helpers) {
164
+ for (const [name, fn] of Object.entries(helpers)) {
165
+ this.registerHelper(name, fn);
166
+ }
167
+ }
168
+ getHelper(name) {
169
+ return this.lookup(name, this.helpers);
170
+ }
171
+ applyTemplate(template, data, innerTemplate) {
172
+ if (typeof template === "string") {
173
+ const stringResult = this.processHelper(template, data);
174
+ // console.log({ stringResult });
175
+ return stringResult;
176
+ }
177
+ else if (Array.isArray(template)) {
178
+ return template.map((item, index) => this.applyTemplate(item, { ...data, currentItem: item, index }));
179
+ }
180
+ else if (typeof template === "object") {
181
+ let result = {};
182
+ for (const key in template) {
183
+ if (Object.prototype.hasOwnProperty.call(template, key)) {
184
+ const value = template[key];
185
+ const currentKeyResult = this.processHelper(key, data, value);
186
+ // console.log({ currentKeyResult });
187
+ if (isThis.isArrayOrObject(currentKeyResult)) {
188
+ result = this.applyTemplate(currentKeyResult, data);
189
+ }
190
+ else {
191
+ if (value) {
192
+ result[`${currentKeyResult}`] = this.applyTemplate(value, data);
193
+ }
194
+ else {
195
+ result = currentKeyResult;
196
+ }
197
+ }
198
+ }
199
+ }
200
+ return result;
201
+ }
202
+ return template;
203
+ }
204
+ lookup(varPath, data) {
205
+ if (typeof varPath !== "string")
206
+ return varPath;
207
+ let normalizedPath = varPath.replace(/\[(\d+)\]/g, ".$1");
208
+ if (normalizedPath.startsWith(".")) {
209
+ normalizedPath = normalizedPath.slice(1);
210
+ }
211
+ let path = normalizedPath.split(".");
212
+ const returnValue = path.reduce((acc, part) => {
213
+ return acc?.[part];
214
+ }, data);
215
+ return returnValue;
216
+ }
217
+ sanitizeArg(arg, helperName, data) {
218
+ if (helperName === "var")
219
+ return arg;
220
+ if (arg.match(/^(['"])([\s\S]*?)\1$/g)) {
221
+ return arg.replace(/^(['"])([\s\S]*?)\1$/g, (_, __, innerText) => innerText);
222
+ }
223
+ if (isThis.isNumberString(arg)) {
224
+ return Number(arg);
225
+ }
226
+ if (isThis.isBooleanString(arg)) {
227
+ return arg === "true";
228
+ }
229
+ const lookUpValue = this.lookup(arg, data);
230
+ const memoryValue = this.memory.getData(arg);
231
+ // console.log({ lookUpValue, memoryValue, arg });
232
+ if (!isThis.isNullOrUndefined(memoryValue)) {
233
+ return memoryValue;
234
+ }
235
+ if (!isThis.isUndefined(lookUpValue)) {
236
+ return lookUpValue;
237
+ }
238
+ return arg;
239
+ }
240
+ handleSpitStringArgs(stringArg) {
241
+ let currentQuote = null;
242
+ let result = [];
243
+ let currentPart = "";
244
+ for (let i = 0; i < stringArg.length; i++) {
245
+ const char = stringArg[i];
246
+ if (char === " " && currentQuote === null) {
247
+ if (currentPart) {
248
+ result.push(currentPart);
249
+ currentPart = "";
250
+ }
251
+ continue;
252
+ }
253
+ if (char === '"' || char === "'") {
254
+ if (currentQuote === char) {
255
+ currentQuote = null;
256
+ }
257
+ else if (currentQuote === null) {
258
+ currentQuote = char;
259
+ }
260
+ continue;
261
+ }
262
+ currentPart += char;
263
+ }
264
+ if (currentPart) {
265
+ result.push(currentPart);
266
+ }
267
+ return result;
268
+ }
269
+ processHelperArgs(helperArgs, data, innerTemplate) {
270
+ const helperArgsMatches = [...helperArgs.matchAll(/\(([^()]+)\)/g)]?.[0];
271
+ if (helperArgsMatches) {
272
+ const innerString = helperArgsMatches[1];
273
+ const splitedInnerArgs = this.handleSpitStringArgs(innerString);
274
+ const helperName = splitedInnerArgs[0];
275
+ const helperArgsArray = splitedInnerArgs.slice(1);
276
+ const helper = this.getHelper(helperName);
277
+ if (!helper) {
278
+ throw new Error("Missing helper: " + helperName);
279
+ }
280
+ const splittedArgs = helperArgsArray.map((e) => this.sanitizeArg(e, helperName, data));
281
+ let helperResult = helper(splittedArgs, data, innerTemplate);
282
+ // console.log({ helperName, helperArgs, splitedInnerArgs, helperResult });
283
+ if (isThis.isArrayOrObject(helperResult)) {
284
+ helperResult = this.memory.storeData(helperResult);
285
+ }
286
+ const returnValue = helperArgs.replace(helperArgsMatches[0], `"${helperResult}"`);
287
+ return this.processHelperArgs(returnValue, data, innerTemplate);
288
+ }
289
+ else {
290
+ return helperArgs;
291
+ }
292
+ }
293
+ processHelper(string, data, innerTemplate, stringMatches) {
294
+ stringMatches = stringMatches
295
+ ? stringMatches
296
+ : [...string.matchAll(/{{#(\w+)\s*([^}]*)}}/g)]?.[0];
297
+ if (stringMatches) {
298
+ const capturedString = stringMatches[0];
299
+ const helperName = stringMatches[1];
300
+ const helperArgs = stringMatches[2];
301
+ const helper = this.getHelper(helperName);
302
+ if (!helper) {
303
+ throw new Error("Missing helper : " + helperName);
304
+ }
305
+ let splitedArgs = [];
306
+ if (!isThis.isEmptyString(helperArgs)) {
307
+ const processedHelperArgs = this.processHelperArgs(helperArgs, data, innerTemplate);
308
+ splitedArgs = this.handleSpitStringArgs(processedHelperArgs).map((e) => this.sanitizeArg(e, helperName, data));
309
+ // console.log({
310
+ // string,
311
+ // helperName,
312
+ // helperArgs,
313
+ // processedHelperArgs,
314
+ // splitedArgs,
315
+ // });
316
+ }
317
+ const helperResult = helper(splitedArgs, data, innerTemplate);
318
+ // console.log({ helperResult });
319
+ if (isThis.isArrayOrObject(helperResult)) {
320
+ return helperResult;
321
+ }
322
+ const resultString = string.replace(capturedString, helperResult);
323
+ stringMatches = [...resultString.matchAll(/{{#(\w+)\s*([^}]*)}}/g)]?.[0];
324
+ // console.log({ resultString, stringMatches });
325
+ if (stringMatches) {
326
+ return this.processHelper(resultString, data, innerTemplate, stringMatches);
327
+ }
328
+ else {
329
+ if (isThis.isBooleanString(resultString) &&
330
+ isThis.isBoolean(helperResult)) {
331
+ return helperResult;
332
+ }
333
+ if (isThis.isNullString(resultString) && isThis.isNull(helperResult)) {
334
+ return null;
335
+ }
336
+ if (isThis.isUndefinedString(resultString) ||
337
+ isThis.isUndefined(helperResult)) {
338
+ return undefined;
339
+ }
340
+ if ((isThis.isNumberString(resultString) ||
341
+ isThis.isNumber(helperResult)) &&
342
+ helperResult === parseFloat(resultString)) {
343
+ return helperResult;
344
+ }
345
+ return resultString;
346
+ }
347
+ }
348
+ else {
349
+ return string;
350
+ }
351
+ }
352
+ }
353
+ // const langJson = new LangJSON();
354
+ // langJson.registerHelpers({
355
+ // upper: ([str]) => str.toUpperCase(),
356
+ // lower: ([str]) => str.toLowerCase(),
357
+ // isTrue: ([arg]) => arg === "true",
358
+ // getLength: ([arr]) => arr.length,
359
+ // });
360
+ // // Define a complex data structure
361
+ // const data = {
362
+ // user: {
363
+ // name: "Alice",
364
+ // age: 30,
365
+ // roles: ["admin", "editor"],
366
+ // address: {
367
+ // city: "Wonderland",
368
+ // zip: "12345",
369
+ // coordinates: { lat: 51.5074, long: -0.1278 },
370
+ // },
371
+ // preferences: {
372
+ // notifications: { email: true, sms: false },
373
+ // theme: "dark",
374
+ // },
375
+ // },
376
+ // isActive: "true",
377
+ // items: [
378
+ // { id: 1, name: "Item1", description: "First Item" },
379
+ // { id: 2, name: "Item2", description: "Second Item" },
380
+ // { id: 3, name: "Item3", description: "Third Item" },
381
+ // ],
382
+ // };
383
+ // // // Define a complex template
384
+ // const template = {
385
+ // "{{#upper user.name}}": {
386
+ // age: "{{#var user.age}}",
387
+ // active: "{{#isTrue isActive}}",
388
+ // address: {
389
+ // city: "{{#var user.address.city}}",
390
+ // zip: "{{#var user.address.zip}}",
391
+ // coordinates:
392
+ // "{{#var user.address.coordinates.lat}}, {{#var user.address.coordinates.long}}",
393
+ // },
394
+ // roles: {
395
+ // "{{#arrayJoin (var user.roles) ', '}}": {
396
+ // roleCount: "{{#getLength user.roles}}",
397
+ // roleList: "{{#var user.roles[0]}} and {{#var user.roles[1]}}",
398
+ // },
399
+ // },
400
+ // items: "{{#repeat (concat 'Item: ' (var items[0].name) ' ') 3}}",
401
+ // preferences: {
402
+ // theme: "{{#var user.preferences.theme}}",
403
+ // notificationStatus: {
404
+ // email: "{{#var user.preferences.notifications.email}}",
405
+ // sms: "{{#var user.preferences.notifications.sms}}",
406
+ // },
407
+ // },
408
+ // },
409
+ // };
410
+ // const result = langJson.applyTemplate(template, data);
411
+ // const returnValue = {
412
+ // 1: result,
413
+ // };
414
+ // console.log(JSON.stringify({ returnValue }, null, 2));
415
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ declare class IsThis {
2
+ isString(value: any): value is string;
3
+ isNumber(value: any): value is number;
4
+ isBoolean(value: any): value is boolean;
5
+ isNull(value: any): value is null;
6
+ isUndefined(value: any): value is undefined;
7
+ isNullOrUndefined(value: any): boolean;
8
+ isBigInt(value: any): value is bigint;
9
+ isSymbol(value: any): value is symbol;
10
+ isArray(value: any): value is any[];
11
+ isObject(value: any): value is object;
12
+ isArrayOrObject(value: any): value is object | any[];
13
+ isFunction(value: any): value is Function;
14
+ isHTMLElement(value: any): boolean;
15
+ isMap(value: any): boolean;
16
+ isSet(value: any): boolean;
17
+ isWeakMap(value: any): value is WeakMap<any, any>;
18
+ isWeakSet(value: any): value is WeakSet<any>;
19
+ isPromise(value: any): boolean;
20
+ isArrayBuffer(value: any): value is ArrayBuffer;
21
+ isTypedArray(value: any): boolean;
22
+ isBlob(value: any): value is Blob;
23
+ isFile(value: any): value is File;
24
+ isDataView(value: any): value is DataView;
25
+ isInt(value: any): boolean;
26
+ isFloat(value: any): boolean;
27
+ isFiniteNumber(value: any): boolean;
28
+ isInfinity(value: any): boolean;
29
+ isEven(value: any): boolean;
30
+ isOdd(value: any): boolean;
31
+ isPositive(value: any): boolean;
32
+ isNegative(value: any): boolean;
33
+ isPrime(value: any): boolean;
34
+ isSafeInteger(value: any): boolean;
35
+ isDivisibleBy(value: any, divisor: number): boolean;
36
+ isPerfectSquare(value: any): boolean;
37
+ isFibonacci(value: any): boolean;
38
+ isEmptyString(value: any): boolean;
39
+ isNumberString(value: any): boolean;
40
+ isBooleanString(value: any): boolean;
41
+ isNullString(value: any): boolean;
42
+ isUndefinedString(value: any): boolean;
43
+ isNullOrUndefinedString(value: any): boolean;
44
+ isDateString(value: any): boolean;
45
+ isUUID(value: any): boolean;
46
+ isHexColor(value: any): boolean;
47
+ isPhoneNumber(value: any): boolean;
48
+ isValidEmail(value: any): boolean;
49
+ isAlpha(value: any): boolean;
50
+ isAlphanumeric(value: any): boolean;
51
+ isLowerCase(value: any): boolean;
52
+ isUpperCase(value: any): boolean;
53
+ isJSONString(value: any): boolean;
54
+ isIPv4(value: any): boolean;
55
+ isIPv6(value: any): boolean;
56
+ isMACAddress(value: any): boolean;
57
+ isBase64(value: any): boolean;
58
+ isCreditCard(value: any): boolean;
59
+ isPalindrome(value: any): boolean;
60
+ isEmptyObject(value: any): boolean;
61
+ isObjectWithKeys(value: any, keys: string[]): boolean;
62
+ isPlainObject(value: any): boolean;
63
+ isInstanceOf(value: any, classRef: Function): boolean;
64
+ hasProperty(value: any, prop: string | symbol): boolean;
65
+ hasMethod(value: any, methodName: string): boolean;
66
+ hasKeys(value: any, keys: string[]): boolean;
67
+ isPrototypeOf(value: any, prototype: any): boolean;
68
+ isFrozen(value: any): boolean;
69
+ isSealed(value: any): boolean;
70
+ isExtensible(value: any): boolean;
71
+ isEmptyArray(value: any): boolean;
72
+ isNonEmptyArray(value: any): boolean;
73
+ isArrayLike(value: any): boolean;
74
+ isArrayOfType(value: any, typeCheck: (item: any) => boolean): boolean;
75
+ isArrayOfStrings(value: any): boolean;
76
+ isArrayOfNumbers(value: any): boolean;
77
+ isArrayOfBooleans(value: any): boolean;
78
+ isArrayOfObjects(value: any): boolean;
79
+ isArrayOfPrimitives(value: any): boolean;
80
+ isSubset(subset: any[], superset: any[]): boolean;
81
+ isArrayOfUniqueElements(value: any): boolean;
82
+ isDeepEqual(a: any, b: any): boolean;
83
+ isShallowEqual(a: any, b: any): boolean;
84
+ isGreaterThan(a: any, b: any): boolean;
85
+ isLessThan(a: any, b: any): boolean;
86
+ isBetween(value: number, min: number, max: number): boolean;
87
+ isInstanceOfAll(value: any, constructors: Function[]): boolean;
88
+ isInstanceOfAny(value: any, constructors: Function[]): boolean;
89
+ isSimilarObject(obj1: any, obj2: any): boolean;
90
+ isApproxEqual(value: number, comparison: number, tolerance?: number): boolean;
91
+ isNonStrictEqual(a: any, b: any): boolean;
92
+ isRegExp(value: any): boolean;
93
+ isURL(value: any): boolean;
94
+ isDomain(value: any): boolean;
95
+ isRelativeURL(value: any): boolean;
96
+ isAbsoluteURL(value: any): boolean;
97
+ isSecureURL(value: any): boolean;
98
+ isTruthy(value: any): boolean;
99
+ isFalsy(value: any): boolean;
100
+ isInRange(value: any, min: number, max: number): boolean;
101
+ isFileSizeInRange(value: File, minBytes: number, maxBytes: number): boolean;
102
+ isBrowser(): boolean;
103
+ isNode(): boolean;
104
+ isUserDefinedType(value: any, constructor: Function): boolean;
105
+ isWeakRef(value: any): boolean;
106
+ isNativeFunction(value: any): boolean;
107
+ isMimeType(value: any): boolean;
108
+ isMobileDevice(): boolean;
109
+ isDevEnvironment(): boolean;
110
+ isProdEnvironment(): boolean;
111
+ isIterable(value: any): boolean;
112
+ isEmptyIterable(value: any): boolean;
113
+ isNonEmptyIterable(value: any): boolean;
114
+ isNonEmptyMap(value: any): boolean;
115
+ isNonEmptySet(value: any): boolean;
116
+ isAsyncFunction(value: any): boolean;
117
+ isPromiseLike(value: any): boolean;
118
+ isFunctionType(value: any, constructor: Function): boolean;
119
+ isGeneratorFunction(value: any): boolean;
120
+ isArrowFunction(value: any): boolean;
121
+ isAsyncGeneratorFunction(value: any): boolean;
122
+ isDate(value: any): value is Date;
123
+ isPastDate(value: any): boolean;
124
+ isFutureDate(value: any): boolean;
125
+ isValidDate(value: any): boolean;
126
+ isLeapYear(year: number): boolean;
127
+ isWeekend(value: any): boolean;
128
+ isToday(value: any): boolean;
129
+ isTomorrow(value: any): boolean;
130
+ isError(value: any): boolean;
131
+ isTypeError(value: any): boolean;
132
+ isSyntaxError(value: any): boolean;
133
+ isRangeError(value: any): boolean;
134
+ }
135
+ declare const isThis: IsThis;
136
+ export default isThis;