@xyo-network/object 2.84.19 → 2.85.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/browser/index.cjs +25 -8
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +27 -8
- package/dist/browser/index.js.map +1 -1
- package/dist/node/index.cjs +31 -13
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +33 -13
- package/dist/node/index.js.map +1 -1
- package/package.json +1 -1
package/dist/browser/index.cjs
CHANGED
|
@@ -3,6 +3,7 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
7
|
var __export = (target, all) => {
|
|
7
8
|
for (var name in all)
|
|
8
9
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -38,9 +39,9 @@ var AsTypeFactory = {
|
|
|
38
39
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
39
40
|
create: (typeCheck) => {
|
|
40
41
|
function func(value, assertOrConfig, config) {
|
|
41
|
-
const noUndefined = (resolvedAssert2) => {
|
|
42
|
+
const noUndefined = /* @__PURE__ */ __name((resolvedAssert2) => {
|
|
42
43
|
return resolvedAssert2 !== void 0;
|
|
43
|
-
};
|
|
44
|
+
}, "noUndefined");
|
|
44
45
|
if (value === void 0) {
|
|
45
46
|
return void 0;
|
|
46
47
|
}
|
|
@@ -52,6 +53,7 @@ var AsTypeFactory = {
|
|
|
52
53
|
const result = typeCheck(value, resolvedConfig) ? value : void 0;
|
|
53
54
|
return noUndefined(resolvedAssert) ? (0, import_assert.assertEx)(result, typeof resolvedAssert === "function" ? resolvedAssert() : resolvedAssert) : result;
|
|
54
55
|
}
|
|
56
|
+
__name(func, "func");
|
|
55
57
|
return func;
|
|
56
58
|
}
|
|
57
59
|
};
|
|
@@ -64,7 +66,7 @@ var AsObjectFactory = {
|
|
|
64
66
|
};
|
|
65
67
|
|
|
66
68
|
// src/isType.ts
|
|
67
|
-
var isType = (value, expectedType) => {
|
|
69
|
+
var isType = /* @__PURE__ */ __name((value, expectedType) => {
|
|
68
70
|
const typeofValue = typeof value;
|
|
69
71
|
switch (expectedType) {
|
|
70
72
|
case "array": {
|
|
@@ -86,23 +88,27 @@ var isType = (value, expectedType) => {
|
|
|
86
88
|
return typeofValue === expectedType;
|
|
87
89
|
}
|
|
88
90
|
}
|
|
89
|
-
};
|
|
91
|
+
}, "isType");
|
|
90
92
|
|
|
91
93
|
// src/isObject.ts
|
|
92
|
-
var isObject = (value) => {
|
|
94
|
+
var isObject = /* @__PURE__ */ __name((value) => {
|
|
93
95
|
return isType(value, "object");
|
|
94
|
-
};
|
|
96
|
+
}, "isObject");
|
|
95
97
|
|
|
96
98
|
// src/asObject.ts
|
|
97
99
|
var asAnyObject = (() => AsObjectFactory.create((obj) => isObject(obj)))();
|
|
98
100
|
|
|
99
101
|
// src/Base.ts
|
|
100
102
|
var Base = class _Base {
|
|
103
|
+
static {
|
|
104
|
+
__name(this, "Base");
|
|
105
|
+
}
|
|
106
|
+
params;
|
|
107
|
+
static defaultLogger;
|
|
101
108
|
constructor(params) {
|
|
102
109
|
this.params = params;
|
|
103
110
|
params.logger?.debug(`Base constructed [${Object(this).name}]`);
|
|
104
111
|
}
|
|
105
|
-
static defaultLogger;
|
|
106
112
|
get logger() {
|
|
107
113
|
return this.params?.logger ?? _Base.defaultLogger ?? console;
|
|
108
114
|
}
|
|
@@ -110,6 +116,9 @@ var Base = class _Base {
|
|
|
110
116
|
|
|
111
117
|
// src/IsObjectFactory.ts
|
|
112
118
|
var IsObjectFactory = class {
|
|
119
|
+
static {
|
|
120
|
+
__name(this, "IsObjectFactory");
|
|
121
|
+
}
|
|
113
122
|
create(shape, additionalChecks) {
|
|
114
123
|
return (obj, { log } = {}) => {
|
|
115
124
|
if (!obj || typeof obj !== "object") {
|
|
@@ -125,7 +134,9 @@ var IsObjectFactory = class {
|
|
|
125
134
|
}
|
|
126
135
|
return !result;
|
|
127
136
|
}).length === 0 && //perform additional checks
|
|
128
|
-
(additionalChecks?.reduce((prev, check) => prev && check(obj, {
|
|
137
|
+
(additionalChecks?.reduce((prev, check) => prev && check(obj, {
|
|
138
|
+
log
|
|
139
|
+
}), true) ?? true)
|
|
129
140
|
);
|
|
130
141
|
};
|
|
131
142
|
}
|
|
@@ -133,6 +144,9 @@ var IsObjectFactory = class {
|
|
|
133
144
|
|
|
134
145
|
// src/ObjectWrapper.ts
|
|
135
146
|
var ObjectWrapper = class {
|
|
147
|
+
static {
|
|
148
|
+
__name(this, "ObjectWrapper");
|
|
149
|
+
}
|
|
136
150
|
obj;
|
|
137
151
|
constructor(obj) {
|
|
138
152
|
this.obj = obj;
|
|
@@ -144,5 +158,8 @@ var ObjectWrapper = class {
|
|
|
144
158
|
|
|
145
159
|
// src/Validator.ts
|
|
146
160
|
var ValidatorBase = class extends ObjectWrapper {
|
|
161
|
+
static {
|
|
162
|
+
__name(this, "ValidatorBase");
|
|
163
|
+
}
|
|
147
164
|
};
|
|
148
165
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/AsTypeFactory.ts","../../src/AsObjectFactory.ts","../../src/isType.ts","../../src/isObject.ts","../../src/asObject.ts","../../src/Base.ts","../../src/IsObjectFactory.ts","../../src/ObjectWrapper.ts","../../src/Validator.ts"],"sourcesContent":["export * from './AnyObject'\nexport * from './asObject'\nexport * from './AsObjectFactory'\nexport * from './AsTypeFactory'\nexport * from './Base'\nexport * from './EmptyObject'\nexport * from './isObject'\nexport * from './IsObjectFactory'\nexport * from './isType'\nexport * from './JsonObject'\nexport * from './ObjectWrapper'\nexport * from './StringKeyObject'\nexport * from './Validator'\nexport * from './WithAdditional'\n","import { assertEx } from '@xylabs/assert'\nimport { Logger } from '@xylabs/logger'\n\nexport interface TypeCheckConfig {\n log?: boolean | Logger\n}\n\nexport type TypeCheck<T> = (obj: unknown, config?: TypeCheckConfig) => obj is T\n\nexport const AsTypeFactory = {\n // eslint-disable-next-line @typescript-eslint/ban-types\n create: <T>(typeCheck: TypeCheck<T>) => {\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n config?: TypeCheckConfig,\n ): TType | undefined\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assert: string | (() => string),\n config?: TypeCheckConfig,\n ): TType\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assertOrConfig?: string | (() => string) | TypeCheckConfig,\n config?: TypeCheckConfig,\n ): TType | undefined {\n const noUndefined = (resolvedAssert: unknown): resolvedAssert is T => {\n return resolvedAssert !== undefined\n }\n\n if (value === undefined) {\n return undefined\n }\n\n if (value === null) {\n return undefined\n }\n\n const resolvedAssert = typeof assertOrConfig === 'object' ? undefined : assertOrConfig\n const resolvedConfig = typeof assertOrConfig === 'object' ? assertOrConfig : config\n const result = typeCheck(value, resolvedConfig) ? value : undefined\n\n return noUndefined(resolvedAssert)\n ? (assertEx(result, typeof resolvedAssert === 'function' ? resolvedAssert() : resolvedAssert) as TType)\n : (result as TType)\n }\n return func\n },\n}\n","import { AsTypeFactory, TypeCheck } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\n\nexport const AsObjectFactory = {\n create: <T extends EmptyObject>(typeCheck: TypeCheck<T>) => {\n return AsTypeFactory.create<T>(typeCheck)\n },\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function'\n\nexport type ObjectTypeShape = Record<string | number | symbol, FieldType>\n\nexport const isType = (value: unknown, expectedType: FieldType) => {\n const typeofValue = typeof value\n switch (expectedType) {\n case 'array': {\n return Array.isArray(value)\n }\n case 'null': {\n return value === null\n }\n case 'undefined': {\n return value === undefined\n }\n case 'object': {\n //nulls resolve to objects, so exclude them\n if (value === null) {\n return false\n }\n //arrays resolve to objects, so exclude them\n return typeofValue === 'object' && !Array.isArray(value)\n }\n default: {\n return typeofValue === expectedType\n }\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { isType } from './isType'\n\nexport const isObject = (value: unknown): value is AnyObject => {\n return isType(value, 'object')\n}\n","import { AnyObject } from './AnyObject'\nimport { AsObjectFactory } from './AsObjectFactory'\nimport { isObject } from './isObject'\n\nexport const asAnyObject = (() => AsObjectFactory.create<AnyObject>(<T extends AnyObject>(obj: unknown): obj is T => isObject(obj)))()\n","import { Logger } from '@xylabs/logger'\n\nimport { EmptyObject } from './EmptyObject'\n\nexport type BaseParamsFields = {\n logger?: Logger\n}\n\nexport type BaseParams<TAdditionalParams extends EmptyObject | void = void> = TAdditionalParams extends EmptyObject\n ? BaseParamsFields & TAdditionalParams\n : BaseParamsFields\n\nexport abstract class Base<TParams extends BaseParams = BaseParams> {\n static defaultLogger?: Logger\n\n constructor(readonly params: TParams) {\n params.logger?.debug(`Base constructed [${Object(this).name}]`)\n }\n\n protected get logger() {\n return this.params?.logger ?? Base.defaultLogger ?? console\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { TypeCheck, TypeCheckConfig } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\nimport { isType, ObjectTypeShape } from './isType'\n\nexport interface ObjectTypeConfig extends TypeCheckConfig {}\n\nexport class IsObjectFactory<T extends EmptyObject> {\n create(shape?: ObjectTypeShape, additionalChecks?: TypeCheck<AnyObject | EmptyObject>[]): TypeCheck<T> {\n return (obj, { log } = {}): obj is T => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n return (\n //do primary check\n Object.entries(shape ?? {}).filter(([key, type]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = isType((obj as any)[key], type)\n if (!result && log) {\n const logger = typeof log === 'object' ? log : console\n logger.warn(`isType Failed: ${key}: ${type}`)\n }\n return !result\n }).length === 0 &&\n //perform additional checks\n (additionalChecks?.reduce((prev, check) => prev && check(obj, { log }), true) ?? true)\n )\n }\n }\n}\n","import { EmptyObject } from './EmptyObject'\nimport { StringKeyObject } from './StringKeyObject'\n\nexport abstract class ObjectWrapper<T extends EmptyObject = EmptyObject> {\n readonly obj: T\n constructor(obj: T) {\n this.obj = obj\n }\n protected get stringKeyObj() {\n return this.obj as StringKeyObject\n }\n}\n","import { Promisable } from '@xylabs/promise'\n\nimport { AnyObject } from './AnyObject'\nimport { EmptyObject } from './EmptyObject'\nimport { ObjectWrapper } from './ObjectWrapper'\n\nexport interface Validator<T extends EmptyObject = AnyObject> {\n validate(payload: T): Promisable<Error[]>\n}\n\nexport abstract class ValidatorBase<T extends EmptyObject = AnyObject> extends ObjectWrapper<T> implements Validator<T> {\n abstract validate(payload: T): Promisable<Error[]>\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/AsTypeFactory.ts","../../src/AsObjectFactory.ts","../../src/isType.ts","../../src/isObject.ts","../../src/asObject.ts","../../src/Base.ts","../../src/IsObjectFactory.ts","../../src/ObjectWrapper.ts","../../src/Validator.ts"],"sourcesContent":["export * from './AnyObject'\nexport * from './asObject'\nexport * from './AsObjectFactory'\nexport * from './AsTypeFactory'\nexport * from './Base'\nexport * from './EmptyObject'\nexport * from './isObject'\nexport * from './IsObjectFactory'\nexport * from './isType'\nexport * from './JsonObject'\nexport * from './ObjectWrapper'\nexport * from './StringKeyObject'\nexport * from './Validator'\nexport * from './WithAdditional'\n","import { assertEx } from '@xylabs/assert'\nimport { Logger } from '@xylabs/logger'\n\nexport interface TypeCheckConfig {\n log?: boolean | Logger\n}\n\nexport type TypeCheck<T> = (obj: unknown, config?: TypeCheckConfig) => obj is T\n\nexport const AsTypeFactory = {\n // eslint-disable-next-line @typescript-eslint/ban-types\n create: <T>(typeCheck: TypeCheck<T>) => {\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n config?: TypeCheckConfig,\n ): TType | undefined\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assert: string | (() => string),\n config?: TypeCheckConfig,\n ): TType\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assertOrConfig?: string | (() => string) | TypeCheckConfig,\n config?: TypeCheckConfig,\n ): TType | undefined {\n const noUndefined = (resolvedAssert: unknown): resolvedAssert is T => {\n return resolvedAssert !== undefined\n }\n\n if (value === undefined) {\n return undefined\n }\n\n if (value === null) {\n return undefined\n }\n\n const resolvedAssert = typeof assertOrConfig === 'object' ? undefined : assertOrConfig\n const resolvedConfig = typeof assertOrConfig === 'object' ? assertOrConfig : config\n const result = typeCheck(value, resolvedConfig) ? value : undefined\n\n return noUndefined(resolvedAssert)\n ? (assertEx(result, typeof resolvedAssert === 'function' ? resolvedAssert() : resolvedAssert) as TType)\n : (result as TType)\n }\n return func\n },\n}\n","import { AsTypeFactory, TypeCheck } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\n\nexport const AsObjectFactory = {\n create: <T extends EmptyObject>(typeCheck: TypeCheck<T>) => {\n return AsTypeFactory.create<T>(typeCheck)\n },\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function'\n\nexport type ObjectTypeShape = Record<string | number | symbol, FieldType>\n\nexport const isType = (value: unknown, expectedType: FieldType) => {\n const typeofValue = typeof value\n switch (expectedType) {\n case 'array': {\n return Array.isArray(value)\n }\n case 'null': {\n return value === null\n }\n case 'undefined': {\n return value === undefined\n }\n case 'object': {\n //nulls resolve to objects, so exclude them\n if (value === null) {\n return false\n }\n //arrays resolve to objects, so exclude them\n return typeofValue === 'object' && !Array.isArray(value)\n }\n default: {\n return typeofValue === expectedType\n }\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { isType } from './isType'\n\nexport const isObject = (value: unknown): value is AnyObject => {\n return isType(value, 'object')\n}\n","import { AnyObject } from './AnyObject'\nimport { AsObjectFactory } from './AsObjectFactory'\nimport { isObject } from './isObject'\n\nexport const asAnyObject = (() => AsObjectFactory.create<AnyObject>(<T extends AnyObject>(obj: unknown): obj is T => isObject(obj)))()\n","import { Logger } from '@xylabs/logger'\n\nimport { EmptyObject } from './EmptyObject'\n\nexport type BaseParamsFields = {\n logger?: Logger\n}\n\nexport type BaseParams<TAdditionalParams extends EmptyObject | void = void> = TAdditionalParams extends EmptyObject\n ? BaseParamsFields & TAdditionalParams\n : BaseParamsFields\n\nexport abstract class Base<TParams extends BaseParams = BaseParams> {\n static defaultLogger?: Logger\n\n constructor(readonly params: TParams) {\n params.logger?.debug(`Base constructed [${Object(this).name}]`)\n }\n\n protected get logger() {\n return this.params?.logger ?? Base.defaultLogger ?? console\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { TypeCheck, TypeCheckConfig } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\nimport { isType, ObjectTypeShape } from './isType'\n\nexport interface ObjectTypeConfig extends TypeCheckConfig {}\n\nexport class IsObjectFactory<T extends EmptyObject> {\n create(shape?: ObjectTypeShape, additionalChecks?: TypeCheck<AnyObject | EmptyObject>[]): TypeCheck<T> {\n return (obj, { log } = {}): obj is T => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n return (\n //do primary check\n Object.entries(shape ?? {}).filter(([key, type]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = isType((obj as any)[key], type)\n if (!result && log) {\n const logger = typeof log === 'object' ? log : console\n logger.warn(`isType Failed: ${key}: ${type}`)\n }\n return !result\n }).length === 0 &&\n //perform additional checks\n (additionalChecks?.reduce((prev, check) => prev && check(obj, { log }), true) ?? true)\n )\n }\n }\n}\n","import { EmptyObject } from './EmptyObject'\nimport { StringKeyObject } from './StringKeyObject'\n\nexport abstract class ObjectWrapper<T extends EmptyObject = EmptyObject> {\n readonly obj: T\n constructor(obj: T) {\n this.obj = obj\n }\n protected get stringKeyObj() {\n return this.obj as StringKeyObject\n }\n}\n","import { Promisable } from '@xylabs/promise'\n\nimport { AnyObject } from './AnyObject'\nimport { EmptyObject } from './EmptyObject'\nimport { ObjectWrapper } from './ObjectWrapper'\n\nexport interface Validator<T extends EmptyObject = AnyObject> {\n validate(payload: T): Promisable<Error[]>\n}\n\nexport abstract class ValidatorBase<T extends EmptyObject = AnyObject> extends ObjectWrapper<T> implements Validator<T> {\n abstract validate(payload: T): Promisable<Error[]>\n}\n"],"mappings":"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","names":["AsTypeFactory","create","typeCheck","func","value","assertOrConfig","config","noUndefined","resolvedAssert","undefined","resolvedConfig","result","assertEx","AsObjectFactory","create","typeCheck","AsTypeFactory","isType","value","expectedType","typeofValue","Array","isArray","undefined","isObject","value","isType","asAnyObject","AsObjectFactory","create","obj","isObject","Base","defaultLogger","constructor","params","logger","debug","Object","name","console","IsObjectFactory","create","shape","additionalChecks","obj","log","Object","entries","filter","key","type","result","isType","logger","console","warn","length","reduce","prev","check","ObjectWrapper","obj","constructor","stringKeyObj","ValidatorBase","ObjectWrapper"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
1
4
|
// src/AsTypeFactory.ts
|
|
2
5
|
import { assertEx } from "@xylabs/assert";
|
|
3
6
|
var AsTypeFactory = {
|
|
4
7
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
5
8
|
create: (typeCheck) => {
|
|
6
9
|
function func(value, assertOrConfig, config) {
|
|
7
|
-
const noUndefined = (resolvedAssert2) => {
|
|
10
|
+
const noUndefined = /* @__PURE__ */ __name((resolvedAssert2) => {
|
|
8
11
|
return resolvedAssert2 !== void 0;
|
|
9
|
-
};
|
|
12
|
+
}, "noUndefined");
|
|
10
13
|
if (value === void 0) {
|
|
11
14
|
return void 0;
|
|
12
15
|
}
|
|
@@ -18,6 +21,7 @@ var AsTypeFactory = {
|
|
|
18
21
|
const result = typeCheck(value, resolvedConfig) ? value : void 0;
|
|
19
22
|
return noUndefined(resolvedAssert) ? assertEx(result, typeof resolvedAssert === "function" ? resolvedAssert() : resolvedAssert) : result;
|
|
20
23
|
}
|
|
24
|
+
__name(func, "func");
|
|
21
25
|
return func;
|
|
22
26
|
}
|
|
23
27
|
};
|
|
@@ -30,7 +34,7 @@ var AsObjectFactory = {
|
|
|
30
34
|
};
|
|
31
35
|
|
|
32
36
|
// src/isType.ts
|
|
33
|
-
var isType = (value, expectedType) => {
|
|
37
|
+
var isType = /* @__PURE__ */ __name((value, expectedType) => {
|
|
34
38
|
const typeofValue = typeof value;
|
|
35
39
|
switch (expectedType) {
|
|
36
40
|
case "array": {
|
|
@@ -52,23 +56,27 @@ var isType = (value, expectedType) => {
|
|
|
52
56
|
return typeofValue === expectedType;
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
|
-
};
|
|
59
|
+
}, "isType");
|
|
56
60
|
|
|
57
61
|
// src/isObject.ts
|
|
58
|
-
var isObject = (value) => {
|
|
62
|
+
var isObject = /* @__PURE__ */ __name((value) => {
|
|
59
63
|
return isType(value, "object");
|
|
60
|
-
};
|
|
64
|
+
}, "isObject");
|
|
61
65
|
|
|
62
66
|
// src/asObject.ts
|
|
63
67
|
var asAnyObject = (() => AsObjectFactory.create((obj) => isObject(obj)))();
|
|
64
68
|
|
|
65
69
|
// src/Base.ts
|
|
66
70
|
var Base = class _Base {
|
|
71
|
+
static {
|
|
72
|
+
__name(this, "Base");
|
|
73
|
+
}
|
|
74
|
+
params;
|
|
75
|
+
static defaultLogger;
|
|
67
76
|
constructor(params) {
|
|
68
77
|
this.params = params;
|
|
69
78
|
params.logger?.debug(`Base constructed [${Object(this).name}]`);
|
|
70
79
|
}
|
|
71
|
-
static defaultLogger;
|
|
72
80
|
get logger() {
|
|
73
81
|
return this.params?.logger ?? _Base.defaultLogger ?? console;
|
|
74
82
|
}
|
|
@@ -76,6 +84,9 @@ var Base = class _Base {
|
|
|
76
84
|
|
|
77
85
|
// src/IsObjectFactory.ts
|
|
78
86
|
var IsObjectFactory = class {
|
|
87
|
+
static {
|
|
88
|
+
__name(this, "IsObjectFactory");
|
|
89
|
+
}
|
|
79
90
|
create(shape, additionalChecks) {
|
|
80
91
|
return (obj, { log } = {}) => {
|
|
81
92
|
if (!obj || typeof obj !== "object") {
|
|
@@ -91,7 +102,9 @@ var IsObjectFactory = class {
|
|
|
91
102
|
}
|
|
92
103
|
return !result;
|
|
93
104
|
}).length === 0 && //perform additional checks
|
|
94
|
-
(additionalChecks?.reduce((prev, check) => prev && check(obj, {
|
|
105
|
+
(additionalChecks?.reduce((prev, check) => prev && check(obj, {
|
|
106
|
+
log
|
|
107
|
+
}), true) ?? true)
|
|
95
108
|
);
|
|
96
109
|
};
|
|
97
110
|
}
|
|
@@ -99,6 +112,9 @@ var IsObjectFactory = class {
|
|
|
99
112
|
|
|
100
113
|
// src/ObjectWrapper.ts
|
|
101
114
|
var ObjectWrapper = class {
|
|
115
|
+
static {
|
|
116
|
+
__name(this, "ObjectWrapper");
|
|
117
|
+
}
|
|
102
118
|
obj;
|
|
103
119
|
constructor(obj) {
|
|
104
120
|
this.obj = obj;
|
|
@@ -110,6 +126,9 @@ var ObjectWrapper = class {
|
|
|
110
126
|
|
|
111
127
|
// src/Validator.ts
|
|
112
128
|
var ValidatorBase = class extends ObjectWrapper {
|
|
129
|
+
static {
|
|
130
|
+
__name(this, "ValidatorBase");
|
|
131
|
+
}
|
|
113
132
|
};
|
|
114
133
|
export {
|
|
115
134
|
AsObjectFactory,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/AsTypeFactory.ts","../../src/AsObjectFactory.ts","../../src/isType.ts","../../src/isObject.ts","../../src/asObject.ts","../../src/Base.ts","../../src/IsObjectFactory.ts","../../src/ObjectWrapper.ts","../../src/Validator.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Logger } from '@xylabs/logger'\n\nexport interface TypeCheckConfig {\n log?: boolean | Logger\n}\n\nexport type TypeCheck<T> = (obj: unknown, config?: TypeCheckConfig) => obj is T\n\nexport const AsTypeFactory = {\n // eslint-disable-next-line @typescript-eslint/ban-types\n create: <T>(typeCheck: TypeCheck<T>) => {\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n config?: TypeCheckConfig,\n ): TType | undefined\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assert: string | (() => string),\n config?: TypeCheckConfig,\n ): TType\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assertOrConfig?: string | (() => string) | TypeCheckConfig,\n config?: TypeCheckConfig,\n ): TType | undefined {\n const noUndefined = (resolvedAssert: unknown): resolvedAssert is T => {\n return resolvedAssert !== undefined\n }\n\n if (value === undefined) {\n return undefined\n }\n\n if (value === null) {\n return undefined\n }\n\n const resolvedAssert = typeof assertOrConfig === 'object' ? undefined : assertOrConfig\n const resolvedConfig = typeof assertOrConfig === 'object' ? assertOrConfig : config\n const result = typeCheck(value, resolvedConfig) ? value : undefined\n\n return noUndefined(resolvedAssert)\n ? (assertEx(result, typeof resolvedAssert === 'function' ? resolvedAssert() : resolvedAssert) as TType)\n : (result as TType)\n }\n return func\n },\n}\n","import { AsTypeFactory, TypeCheck } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\n\nexport const AsObjectFactory = {\n create: <T extends EmptyObject>(typeCheck: TypeCheck<T>) => {\n return AsTypeFactory.create<T>(typeCheck)\n },\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function'\n\nexport type ObjectTypeShape = Record<string | number | symbol, FieldType>\n\nexport const isType = (value: unknown, expectedType: FieldType) => {\n const typeofValue = typeof value\n switch (expectedType) {\n case 'array': {\n return Array.isArray(value)\n }\n case 'null': {\n return value === null\n }\n case 'undefined': {\n return value === undefined\n }\n case 'object': {\n //nulls resolve to objects, so exclude them\n if (value === null) {\n return false\n }\n //arrays resolve to objects, so exclude them\n return typeofValue === 'object' && !Array.isArray(value)\n }\n default: {\n return typeofValue === expectedType\n }\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { isType } from './isType'\n\nexport const isObject = (value: unknown): value is AnyObject => {\n return isType(value, 'object')\n}\n","import { AnyObject } from './AnyObject'\nimport { AsObjectFactory } from './AsObjectFactory'\nimport { isObject } from './isObject'\n\nexport const asAnyObject = (() => AsObjectFactory.create<AnyObject>(<T extends AnyObject>(obj: unknown): obj is T => isObject(obj)))()\n","import { Logger } from '@xylabs/logger'\n\nimport { EmptyObject } from './EmptyObject'\n\nexport type BaseParamsFields = {\n logger?: Logger\n}\n\nexport type BaseParams<TAdditionalParams extends EmptyObject | void = void> = TAdditionalParams extends EmptyObject\n ? BaseParamsFields & TAdditionalParams\n : BaseParamsFields\n\nexport abstract class Base<TParams extends BaseParams = BaseParams> {\n static defaultLogger?: Logger\n\n constructor(readonly params: TParams) {\n params.logger?.debug(`Base constructed [${Object(this).name}]`)\n }\n\n protected get logger() {\n return this.params?.logger ?? Base.defaultLogger ?? console\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { TypeCheck, TypeCheckConfig } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\nimport { isType, ObjectTypeShape } from './isType'\n\nexport interface ObjectTypeConfig extends TypeCheckConfig {}\n\nexport class IsObjectFactory<T extends EmptyObject> {\n create(shape?: ObjectTypeShape, additionalChecks?: TypeCheck<AnyObject | EmptyObject>[]): TypeCheck<T> {\n return (obj, { log } = {}): obj is T => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n return (\n //do primary check\n Object.entries(shape ?? {}).filter(([key, type]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = isType((obj as any)[key], type)\n if (!result && log) {\n const logger = typeof log === 'object' ? log : console\n logger.warn(`isType Failed: ${key}: ${type}`)\n }\n return !result\n }).length === 0 &&\n //perform additional checks\n (additionalChecks?.reduce((prev, check) => prev && check(obj, { log }), true) ?? true)\n )\n }\n }\n}\n","import { EmptyObject } from './EmptyObject'\nimport { StringKeyObject } from './StringKeyObject'\n\nexport abstract class ObjectWrapper<T extends EmptyObject = EmptyObject> {\n readonly obj: T\n constructor(obj: T) {\n this.obj = obj\n }\n protected get stringKeyObj() {\n return this.obj as StringKeyObject\n }\n}\n","import { Promisable } from '@xylabs/promise'\n\nimport { AnyObject } from './AnyObject'\nimport { EmptyObject } from './EmptyObject'\nimport { ObjectWrapper } from './ObjectWrapper'\n\nexport interface Validator<T extends EmptyObject = AnyObject> {\n validate(payload: T): Promisable<Error[]>\n}\n\nexport abstract class ValidatorBase<T extends EmptyObject = AnyObject> extends ObjectWrapper<T> implements Validator<T> {\n abstract validate(payload: T): Promisable<Error[]>\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/AsTypeFactory.ts","../../src/AsObjectFactory.ts","../../src/isType.ts","../../src/isObject.ts","../../src/asObject.ts","../../src/Base.ts","../../src/IsObjectFactory.ts","../../src/ObjectWrapper.ts","../../src/Validator.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Logger } from '@xylabs/logger'\n\nexport interface TypeCheckConfig {\n log?: boolean | Logger\n}\n\nexport type TypeCheck<T> = (obj: unknown, config?: TypeCheckConfig) => obj is T\n\nexport const AsTypeFactory = {\n // eslint-disable-next-line @typescript-eslint/ban-types\n create: <T>(typeCheck: TypeCheck<T>) => {\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n config?: TypeCheckConfig,\n ): TType | undefined\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assert: string | (() => string),\n config?: TypeCheckConfig,\n ): TType\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assertOrConfig?: string | (() => string) | TypeCheckConfig,\n config?: TypeCheckConfig,\n ): TType | undefined {\n const noUndefined = (resolvedAssert: unknown): resolvedAssert is T => {\n return resolvedAssert !== undefined\n }\n\n if (value === undefined) {\n return undefined\n }\n\n if (value === null) {\n return undefined\n }\n\n const resolvedAssert = typeof assertOrConfig === 'object' ? undefined : assertOrConfig\n const resolvedConfig = typeof assertOrConfig === 'object' ? assertOrConfig : config\n const result = typeCheck(value, resolvedConfig) ? value : undefined\n\n return noUndefined(resolvedAssert)\n ? (assertEx(result, typeof resolvedAssert === 'function' ? resolvedAssert() : resolvedAssert) as TType)\n : (result as TType)\n }\n return func\n },\n}\n","import { AsTypeFactory, TypeCheck } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\n\nexport const AsObjectFactory = {\n create: <T extends EmptyObject>(typeCheck: TypeCheck<T>) => {\n return AsTypeFactory.create<T>(typeCheck)\n },\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function'\n\nexport type ObjectTypeShape = Record<string | number | symbol, FieldType>\n\nexport const isType = (value: unknown, expectedType: FieldType) => {\n const typeofValue = typeof value\n switch (expectedType) {\n case 'array': {\n return Array.isArray(value)\n }\n case 'null': {\n return value === null\n }\n case 'undefined': {\n return value === undefined\n }\n case 'object': {\n //nulls resolve to objects, so exclude them\n if (value === null) {\n return false\n }\n //arrays resolve to objects, so exclude them\n return typeofValue === 'object' && !Array.isArray(value)\n }\n default: {\n return typeofValue === expectedType\n }\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { isType } from './isType'\n\nexport const isObject = (value: unknown): value is AnyObject => {\n return isType(value, 'object')\n}\n","import { AnyObject } from './AnyObject'\nimport { AsObjectFactory } from './AsObjectFactory'\nimport { isObject } from './isObject'\n\nexport const asAnyObject = (() => AsObjectFactory.create<AnyObject>(<T extends AnyObject>(obj: unknown): obj is T => isObject(obj)))()\n","import { Logger } from '@xylabs/logger'\n\nimport { EmptyObject } from './EmptyObject'\n\nexport type BaseParamsFields = {\n logger?: Logger\n}\n\nexport type BaseParams<TAdditionalParams extends EmptyObject | void = void> = TAdditionalParams extends EmptyObject\n ? BaseParamsFields & TAdditionalParams\n : BaseParamsFields\n\nexport abstract class Base<TParams extends BaseParams = BaseParams> {\n static defaultLogger?: Logger\n\n constructor(readonly params: TParams) {\n params.logger?.debug(`Base constructed [${Object(this).name}]`)\n }\n\n protected get logger() {\n return this.params?.logger ?? Base.defaultLogger ?? console\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { TypeCheck, TypeCheckConfig } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\nimport { isType, ObjectTypeShape } from './isType'\n\nexport interface ObjectTypeConfig extends TypeCheckConfig {}\n\nexport class IsObjectFactory<T extends EmptyObject> {\n create(shape?: ObjectTypeShape, additionalChecks?: TypeCheck<AnyObject | EmptyObject>[]): TypeCheck<T> {\n return (obj, { log } = {}): obj is T => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n return (\n //do primary check\n Object.entries(shape ?? {}).filter(([key, type]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = isType((obj as any)[key], type)\n if (!result && log) {\n const logger = typeof log === 'object' ? log : console\n logger.warn(`isType Failed: ${key}: ${type}`)\n }\n return !result\n }).length === 0 &&\n //perform additional checks\n (additionalChecks?.reduce((prev, check) => prev && check(obj, { log }), true) ?? true)\n )\n }\n }\n}\n","import { EmptyObject } from './EmptyObject'\nimport { StringKeyObject } from './StringKeyObject'\n\nexport abstract class ObjectWrapper<T extends EmptyObject = EmptyObject> {\n readonly obj: T\n constructor(obj: T) {\n this.obj = obj\n }\n protected get stringKeyObj() {\n return this.obj as StringKeyObject\n }\n}\n","import { Promisable } from '@xylabs/promise'\n\nimport { AnyObject } from './AnyObject'\nimport { EmptyObject } from './EmptyObject'\nimport { ObjectWrapper } from './ObjectWrapper'\n\nexport interface Validator<T extends EmptyObject = AnyObject> {\n validate(payload: T): Promisable<Error[]>\n}\n\nexport abstract class ValidatorBase<T extends EmptyObject = AnyObject> extends ObjectWrapper<T> implements Validator<T> {\n abstract validate(payload: T): Promisable<Error[]>\n}\n"],"mappings":"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","names":["assertEx","AsTypeFactory","create","typeCheck","func","value","assertOrConfig","config","noUndefined","resolvedAssert","undefined","resolvedConfig","result","assertEx","AsObjectFactory","create","typeCheck","AsTypeFactory","isType","value","expectedType","typeofValue","Array","isArray","undefined","isObject","value","isType","asAnyObject","AsObjectFactory","create","obj","isObject","Base","defaultLogger","constructor","params","logger","debug","Object","name","console","IsObjectFactory","create","shape","additionalChecks","obj","log","Object","entries","filter","key","type","result","isType","logger","console","warn","length","reduce","prev","check","ObjectWrapper","obj","constructor","stringKeyObj","ValidatorBase","ObjectWrapper"]}
|
package/dist/node/index.cjs
CHANGED
|
@@ -3,6 +3,8 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
8
10
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -16,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
18
20
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
var __publicField = (obj, key, value) => {
|
|
22
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
23
|
+
return value;
|
|
24
|
+
};
|
|
19
25
|
|
|
20
26
|
// src/index.ts
|
|
21
27
|
var src_exports = {};
|
|
@@ -38,9 +44,9 @@ var AsTypeFactory = {
|
|
|
38
44
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
39
45
|
create: (typeCheck) => {
|
|
40
46
|
function func(value, assertOrConfig, config) {
|
|
41
|
-
const noUndefined = (resolvedAssert2) => {
|
|
47
|
+
const noUndefined = /* @__PURE__ */ __name((resolvedAssert2) => {
|
|
42
48
|
return resolvedAssert2 !== void 0;
|
|
43
|
-
};
|
|
49
|
+
}, "noUndefined");
|
|
44
50
|
if (value === void 0) {
|
|
45
51
|
return void 0;
|
|
46
52
|
}
|
|
@@ -52,6 +58,7 @@ var AsTypeFactory = {
|
|
|
52
58
|
const result = typeCheck(value, resolvedConfig) ? value : void 0;
|
|
53
59
|
return noUndefined(resolvedAssert) ? (0, import_assert.assertEx)(result, typeof resolvedAssert === "function" ? resolvedAssert() : resolvedAssert) : result;
|
|
54
60
|
}
|
|
61
|
+
__name(func, "func");
|
|
55
62
|
return func;
|
|
56
63
|
}
|
|
57
64
|
};
|
|
@@ -64,7 +71,7 @@ var AsObjectFactory = {
|
|
|
64
71
|
};
|
|
65
72
|
|
|
66
73
|
// src/isType.ts
|
|
67
|
-
var isType = (value, expectedType) => {
|
|
74
|
+
var isType = /* @__PURE__ */ __name((value, expectedType) => {
|
|
68
75
|
const typeofValue = typeof value;
|
|
69
76
|
switch (expectedType) {
|
|
70
77
|
case "array": {
|
|
@@ -86,32 +93,35 @@ var isType = (value, expectedType) => {
|
|
|
86
93
|
return typeofValue === expectedType;
|
|
87
94
|
}
|
|
88
95
|
}
|
|
89
|
-
};
|
|
96
|
+
}, "isType");
|
|
90
97
|
|
|
91
98
|
// src/isObject.ts
|
|
92
|
-
var isObject = (value) => {
|
|
99
|
+
var isObject = /* @__PURE__ */ __name((value) => {
|
|
93
100
|
return isType(value, "object");
|
|
94
|
-
};
|
|
101
|
+
}, "isObject");
|
|
95
102
|
|
|
96
103
|
// src/asObject.ts
|
|
97
104
|
var asAnyObject = (() => AsObjectFactory.create((obj) => isObject(obj)))();
|
|
98
105
|
|
|
99
106
|
// src/Base.ts
|
|
100
|
-
var
|
|
107
|
+
var _Base = class _Base {
|
|
108
|
+
params;
|
|
101
109
|
constructor(params) {
|
|
102
|
-
this.params = params;
|
|
103
110
|
var _a;
|
|
111
|
+
this.params = params;
|
|
104
112
|
(_a = params.logger) == null ? void 0 : _a.debug(`Base constructed [${Object(this).name}]`);
|
|
105
113
|
}
|
|
106
|
-
static defaultLogger;
|
|
107
114
|
get logger() {
|
|
108
115
|
var _a;
|
|
109
116
|
return ((_a = this.params) == null ? void 0 : _a.logger) ?? _Base.defaultLogger ?? console;
|
|
110
117
|
}
|
|
111
118
|
};
|
|
119
|
+
__name(_Base, "Base");
|
|
120
|
+
__publicField(_Base, "defaultLogger");
|
|
121
|
+
var Base = _Base;
|
|
112
122
|
|
|
113
123
|
// src/IsObjectFactory.ts
|
|
114
|
-
var
|
|
124
|
+
var _IsObjectFactory = class _IsObjectFactory {
|
|
115
125
|
create(shape, additionalChecks) {
|
|
116
126
|
return (obj, { log } = {}) => {
|
|
117
127
|
if (!obj || typeof obj !== "object") {
|
|
@@ -127,14 +137,18 @@ var IsObjectFactory = class {
|
|
|
127
137
|
}
|
|
128
138
|
return !result;
|
|
129
139
|
}).length === 0 && //perform additional checks
|
|
130
|
-
((additionalChecks == null ? void 0 : additionalChecks.reduce((prev, check) => prev && check(obj, {
|
|
140
|
+
((additionalChecks == null ? void 0 : additionalChecks.reduce((prev, check) => prev && check(obj, {
|
|
141
|
+
log
|
|
142
|
+
}), true)) ?? true)
|
|
131
143
|
);
|
|
132
144
|
};
|
|
133
145
|
}
|
|
134
146
|
};
|
|
147
|
+
__name(_IsObjectFactory, "IsObjectFactory");
|
|
148
|
+
var IsObjectFactory = _IsObjectFactory;
|
|
135
149
|
|
|
136
150
|
// src/ObjectWrapper.ts
|
|
137
|
-
var
|
|
151
|
+
var _ObjectWrapper = class _ObjectWrapper {
|
|
138
152
|
obj;
|
|
139
153
|
constructor(obj) {
|
|
140
154
|
this.obj = obj;
|
|
@@ -143,10 +157,14 @@ var ObjectWrapper = class {
|
|
|
143
157
|
return this.obj;
|
|
144
158
|
}
|
|
145
159
|
};
|
|
160
|
+
__name(_ObjectWrapper, "ObjectWrapper");
|
|
161
|
+
var ObjectWrapper = _ObjectWrapper;
|
|
146
162
|
|
|
147
163
|
// src/Validator.ts
|
|
148
|
-
var
|
|
164
|
+
var _ValidatorBase = class _ValidatorBase extends ObjectWrapper {
|
|
149
165
|
};
|
|
166
|
+
__name(_ValidatorBase, "ValidatorBase");
|
|
167
|
+
var ValidatorBase = _ValidatorBase;
|
|
150
168
|
// Annotate the CommonJS export names for ESM import in node:
|
|
151
169
|
0 && (module.exports = {
|
|
152
170
|
AsObjectFactory,
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/AsTypeFactory.ts","../../src/AsObjectFactory.ts","../../src/isType.ts","../../src/isObject.ts","../../src/asObject.ts","../../src/Base.ts","../../src/IsObjectFactory.ts","../../src/ObjectWrapper.ts","../../src/Validator.ts"],"sourcesContent":["export * from './AnyObject'\nexport * from './asObject'\nexport * from './AsObjectFactory'\nexport * from './AsTypeFactory'\nexport * from './Base'\nexport * from './EmptyObject'\nexport * from './isObject'\nexport * from './IsObjectFactory'\nexport * from './isType'\nexport * from './JsonObject'\nexport * from './ObjectWrapper'\nexport * from './StringKeyObject'\nexport * from './Validator'\nexport * from './WithAdditional'\n","import { assertEx } from '@xylabs/assert'\nimport { Logger } from '@xylabs/logger'\n\nexport interface TypeCheckConfig {\n log?: boolean | Logger\n}\n\nexport type TypeCheck<T> = (obj: unknown, config?: TypeCheckConfig) => obj is T\n\nexport const AsTypeFactory = {\n // eslint-disable-next-line @typescript-eslint/ban-types\n create: <T>(typeCheck: TypeCheck<T>) => {\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n config?: TypeCheckConfig,\n ): TType | undefined\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assert: string | (() => string),\n config?: TypeCheckConfig,\n ): TType\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assertOrConfig?: string | (() => string) | TypeCheckConfig,\n config?: TypeCheckConfig,\n ): TType | undefined {\n const noUndefined = (resolvedAssert: unknown): resolvedAssert is T => {\n return resolvedAssert !== undefined\n }\n\n if (value === undefined) {\n return undefined\n }\n\n if (value === null) {\n return undefined\n }\n\n const resolvedAssert = typeof assertOrConfig === 'object' ? undefined : assertOrConfig\n const resolvedConfig = typeof assertOrConfig === 'object' ? assertOrConfig : config\n const result = typeCheck(value, resolvedConfig) ? value : undefined\n\n return noUndefined(resolvedAssert)\n ? (assertEx(result, typeof resolvedAssert === 'function' ? resolvedAssert() : resolvedAssert) as TType)\n : (result as TType)\n }\n return func\n },\n}\n","import { AsTypeFactory, TypeCheck } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\n\nexport const AsObjectFactory = {\n create: <T extends EmptyObject>(typeCheck: TypeCheck<T>) => {\n return AsTypeFactory.create<T>(typeCheck)\n },\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function'\n\nexport type ObjectTypeShape = Record<string | number | symbol, FieldType>\n\nexport const isType = (value: unknown, expectedType: FieldType) => {\n const typeofValue = typeof value\n switch (expectedType) {\n case 'array': {\n return Array.isArray(value)\n }\n case 'null': {\n return value === null\n }\n case 'undefined': {\n return value === undefined\n }\n case 'object': {\n //nulls resolve to objects, so exclude them\n if (value === null) {\n return false\n }\n //arrays resolve to objects, so exclude them\n return typeofValue === 'object' && !Array.isArray(value)\n }\n default: {\n return typeofValue === expectedType\n }\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { isType } from './isType'\n\nexport const isObject = (value: unknown): value is AnyObject => {\n return isType(value, 'object')\n}\n","import { AnyObject } from './AnyObject'\nimport { AsObjectFactory } from './AsObjectFactory'\nimport { isObject } from './isObject'\n\nexport const asAnyObject = (() => AsObjectFactory.create<AnyObject>(<T extends AnyObject>(obj: unknown): obj is T => isObject(obj)))()\n","import { Logger } from '@xylabs/logger'\n\nimport { EmptyObject } from './EmptyObject'\n\nexport type BaseParamsFields = {\n logger?: Logger\n}\n\nexport type BaseParams<TAdditionalParams extends EmptyObject | void = void> = TAdditionalParams extends EmptyObject\n ? BaseParamsFields & TAdditionalParams\n : BaseParamsFields\n\nexport abstract class Base<TParams extends BaseParams = BaseParams> {\n static defaultLogger?: Logger\n\n constructor(readonly params: TParams) {\n params.logger?.debug(`Base constructed [${Object(this).name}]`)\n }\n\n protected get logger() {\n return this.params?.logger ?? Base.defaultLogger ?? console\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { TypeCheck, TypeCheckConfig } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\nimport { isType, ObjectTypeShape } from './isType'\n\nexport interface ObjectTypeConfig extends TypeCheckConfig {}\n\nexport class IsObjectFactory<T extends EmptyObject> {\n create(shape?: ObjectTypeShape, additionalChecks?: TypeCheck<AnyObject | EmptyObject>[]): TypeCheck<T> {\n return (obj, { log } = {}): obj is T => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n return (\n //do primary check\n Object.entries(shape ?? {}).filter(([key, type]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = isType((obj as any)[key], type)\n if (!result && log) {\n const logger = typeof log === 'object' ? log : console\n logger.warn(`isType Failed: ${key}: ${type}`)\n }\n return !result\n }).length === 0 &&\n //perform additional checks\n (additionalChecks?.reduce((prev, check) => prev && check(obj, { log }), true) ?? true)\n )\n }\n }\n}\n","import { EmptyObject } from './EmptyObject'\nimport { StringKeyObject } from './StringKeyObject'\n\nexport abstract class ObjectWrapper<T extends EmptyObject = EmptyObject> {\n readonly obj: T\n constructor(obj: T) {\n this.obj = obj\n }\n protected get stringKeyObj() {\n return this.obj as StringKeyObject\n }\n}\n","import { Promisable } from '@xylabs/promise'\n\nimport { AnyObject } from './AnyObject'\nimport { EmptyObject } from './EmptyObject'\nimport { ObjectWrapper } from './ObjectWrapper'\n\nexport interface Validator<T extends EmptyObject = AnyObject> {\n validate(payload: T): Promisable<Error[]>\n}\n\nexport abstract class ValidatorBase<T extends EmptyObject = AnyObject> extends ObjectWrapper<T> implements Validator<T> {\n abstract validate(payload: T): Promisable<Error[]>\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/AsTypeFactory.ts","../../src/AsObjectFactory.ts","../../src/isType.ts","../../src/isObject.ts","../../src/asObject.ts","../../src/Base.ts","../../src/IsObjectFactory.ts","../../src/ObjectWrapper.ts","../../src/Validator.ts"],"sourcesContent":["export * from './AnyObject'\nexport * from './asObject'\nexport * from './AsObjectFactory'\nexport * from './AsTypeFactory'\nexport * from './Base'\nexport * from './EmptyObject'\nexport * from './isObject'\nexport * from './IsObjectFactory'\nexport * from './isType'\nexport * from './JsonObject'\nexport * from './ObjectWrapper'\nexport * from './StringKeyObject'\nexport * from './Validator'\nexport * from './WithAdditional'\n","import { assertEx } from '@xylabs/assert'\nimport { Logger } from '@xylabs/logger'\n\nexport interface TypeCheckConfig {\n log?: boolean | Logger\n}\n\nexport type TypeCheck<T> = (obj: unknown, config?: TypeCheckConfig) => obj is T\n\nexport const AsTypeFactory = {\n // eslint-disable-next-line @typescript-eslint/ban-types\n create: <T>(typeCheck: TypeCheck<T>) => {\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n config?: TypeCheckConfig,\n ): TType | undefined\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assert: string | (() => string),\n config?: TypeCheckConfig,\n ): TType\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assertOrConfig?: string | (() => string) | TypeCheckConfig,\n config?: TypeCheckConfig,\n ): TType | undefined {\n const noUndefined = (resolvedAssert: unknown): resolvedAssert is T => {\n return resolvedAssert !== undefined\n }\n\n if (value === undefined) {\n return undefined\n }\n\n if (value === null) {\n return undefined\n }\n\n const resolvedAssert = typeof assertOrConfig === 'object' ? undefined : assertOrConfig\n const resolvedConfig = typeof assertOrConfig === 'object' ? assertOrConfig : config\n const result = typeCheck(value, resolvedConfig) ? value : undefined\n\n return noUndefined(resolvedAssert)\n ? (assertEx(result, typeof resolvedAssert === 'function' ? resolvedAssert() : resolvedAssert) as TType)\n : (result as TType)\n }\n return func\n },\n}\n","import { AsTypeFactory, TypeCheck } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\n\nexport const AsObjectFactory = {\n create: <T extends EmptyObject>(typeCheck: TypeCheck<T>) => {\n return AsTypeFactory.create<T>(typeCheck)\n },\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function'\n\nexport type ObjectTypeShape = Record<string | number | symbol, FieldType>\n\nexport const isType = (value: unknown, expectedType: FieldType) => {\n const typeofValue = typeof value\n switch (expectedType) {\n case 'array': {\n return Array.isArray(value)\n }\n case 'null': {\n return value === null\n }\n case 'undefined': {\n return value === undefined\n }\n case 'object': {\n //nulls resolve to objects, so exclude them\n if (value === null) {\n return false\n }\n //arrays resolve to objects, so exclude them\n return typeofValue === 'object' && !Array.isArray(value)\n }\n default: {\n return typeofValue === expectedType\n }\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { isType } from './isType'\n\nexport const isObject = (value: unknown): value is AnyObject => {\n return isType(value, 'object')\n}\n","import { AnyObject } from './AnyObject'\nimport { AsObjectFactory } from './AsObjectFactory'\nimport { isObject } from './isObject'\n\nexport const asAnyObject = (() => AsObjectFactory.create<AnyObject>(<T extends AnyObject>(obj: unknown): obj is T => isObject(obj)))()\n","import { Logger } from '@xylabs/logger'\n\nimport { EmptyObject } from './EmptyObject'\n\nexport type BaseParamsFields = {\n logger?: Logger\n}\n\nexport type BaseParams<TAdditionalParams extends EmptyObject | void = void> = TAdditionalParams extends EmptyObject\n ? BaseParamsFields & TAdditionalParams\n : BaseParamsFields\n\nexport abstract class Base<TParams extends BaseParams = BaseParams> {\n static defaultLogger?: Logger\n\n constructor(readonly params: TParams) {\n params.logger?.debug(`Base constructed [${Object(this).name}]`)\n }\n\n protected get logger() {\n return this.params?.logger ?? Base.defaultLogger ?? console\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { TypeCheck, TypeCheckConfig } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\nimport { isType, ObjectTypeShape } from './isType'\n\nexport interface ObjectTypeConfig extends TypeCheckConfig {}\n\nexport class IsObjectFactory<T extends EmptyObject> {\n create(shape?: ObjectTypeShape, additionalChecks?: TypeCheck<AnyObject | EmptyObject>[]): TypeCheck<T> {\n return (obj, { log } = {}): obj is T => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n return (\n //do primary check\n Object.entries(shape ?? {}).filter(([key, type]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = isType((obj as any)[key], type)\n if (!result && log) {\n const logger = typeof log === 'object' ? log : console\n logger.warn(`isType Failed: ${key}: ${type}`)\n }\n return !result\n }).length === 0 &&\n //perform additional checks\n (additionalChecks?.reduce((prev, check) => prev && check(obj, { log }), true) ?? true)\n )\n }\n }\n}\n","import { EmptyObject } from './EmptyObject'\nimport { StringKeyObject } from './StringKeyObject'\n\nexport abstract class ObjectWrapper<T extends EmptyObject = EmptyObject> {\n readonly obj: T\n constructor(obj: T) {\n this.obj = obj\n }\n protected get stringKeyObj() {\n return this.obj as StringKeyObject\n }\n}\n","import { Promisable } from '@xylabs/promise'\n\nimport { AnyObject } from './AnyObject'\nimport { EmptyObject } from './EmptyObject'\nimport { ObjectWrapper } from './ObjectWrapper'\n\nexport interface Validator<T extends EmptyObject = AnyObject> {\n validate(payload: T): Promisable<Error[]>\n}\n\nexport abstract class ValidatorBase<T extends EmptyObject = AnyObject> extends ObjectWrapper<T> implements Validator<T> {\n abstract validate(payload: T): Promisable<Error[]>\n}\n"],"mappings":"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","names":["AsTypeFactory","create","typeCheck","func","value","assertOrConfig","config","noUndefined","resolvedAssert","undefined","resolvedConfig","result","assertEx","AsObjectFactory","create","typeCheck","AsTypeFactory","isType","value","expectedType","typeofValue","Array","isArray","undefined","isObject","value","isType","asAnyObject","AsObjectFactory","create","obj","isObject","Base","constructor","params","logger","debug","Object","name","defaultLogger","console","IsObjectFactory","create","shape","additionalChecks","obj","log","Object","entries","filter","key","type","result","isType","logger","console","warn","length","reduce","prev","check","ObjectWrapper","obj","constructor","stringKeyObj","ValidatorBase","ObjectWrapper"]}
|
package/dist/node/index.js
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
4
|
+
var __publicField = (obj, key, value) => {
|
|
5
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
6
|
+
return value;
|
|
7
|
+
};
|
|
8
|
+
|
|
1
9
|
// src/AsTypeFactory.ts
|
|
2
10
|
import { assertEx } from "@xylabs/assert";
|
|
3
11
|
var AsTypeFactory = {
|
|
4
12
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
5
13
|
create: (typeCheck) => {
|
|
6
14
|
function func(value, assertOrConfig, config) {
|
|
7
|
-
const noUndefined = (resolvedAssert2) => {
|
|
15
|
+
const noUndefined = /* @__PURE__ */ __name((resolvedAssert2) => {
|
|
8
16
|
return resolvedAssert2 !== void 0;
|
|
9
|
-
};
|
|
17
|
+
}, "noUndefined");
|
|
10
18
|
if (value === void 0) {
|
|
11
19
|
return void 0;
|
|
12
20
|
}
|
|
@@ -18,6 +26,7 @@ var AsTypeFactory = {
|
|
|
18
26
|
const result = typeCheck(value, resolvedConfig) ? value : void 0;
|
|
19
27
|
return noUndefined(resolvedAssert) ? assertEx(result, typeof resolvedAssert === "function" ? resolvedAssert() : resolvedAssert) : result;
|
|
20
28
|
}
|
|
29
|
+
__name(func, "func");
|
|
21
30
|
return func;
|
|
22
31
|
}
|
|
23
32
|
};
|
|
@@ -30,7 +39,7 @@ var AsObjectFactory = {
|
|
|
30
39
|
};
|
|
31
40
|
|
|
32
41
|
// src/isType.ts
|
|
33
|
-
var isType = (value, expectedType) => {
|
|
42
|
+
var isType = /* @__PURE__ */ __name((value, expectedType) => {
|
|
34
43
|
const typeofValue = typeof value;
|
|
35
44
|
switch (expectedType) {
|
|
36
45
|
case "array": {
|
|
@@ -52,32 +61,35 @@ var isType = (value, expectedType) => {
|
|
|
52
61
|
return typeofValue === expectedType;
|
|
53
62
|
}
|
|
54
63
|
}
|
|
55
|
-
};
|
|
64
|
+
}, "isType");
|
|
56
65
|
|
|
57
66
|
// src/isObject.ts
|
|
58
|
-
var isObject = (value) => {
|
|
67
|
+
var isObject = /* @__PURE__ */ __name((value) => {
|
|
59
68
|
return isType(value, "object");
|
|
60
|
-
};
|
|
69
|
+
}, "isObject");
|
|
61
70
|
|
|
62
71
|
// src/asObject.ts
|
|
63
72
|
var asAnyObject = (() => AsObjectFactory.create((obj) => isObject(obj)))();
|
|
64
73
|
|
|
65
74
|
// src/Base.ts
|
|
66
|
-
var
|
|
75
|
+
var _Base = class _Base {
|
|
76
|
+
params;
|
|
67
77
|
constructor(params) {
|
|
68
|
-
this.params = params;
|
|
69
78
|
var _a;
|
|
79
|
+
this.params = params;
|
|
70
80
|
(_a = params.logger) == null ? void 0 : _a.debug(`Base constructed [${Object(this).name}]`);
|
|
71
81
|
}
|
|
72
|
-
static defaultLogger;
|
|
73
82
|
get logger() {
|
|
74
83
|
var _a;
|
|
75
84
|
return ((_a = this.params) == null ? void 0 : _a.logger) ?? _Base.defaultLogger ?? console;
|
|
76
85
|
}
|
|
77
86
|
};
|
|
87
|
+
__name(_Base, "Base");
|
|
88
|
+
__publicField(_Base, "defaultLogger");
|
|
89
|
+
var Base = _Base;
|
|
78
90
|
|
|
79
91
|
// src/IsObjectFactory.ts
|
|
80
|
-
var
|
|
92
|
+
var _IsObjectFactory = class _IsObjectFactory {
|
|
81
93
|
create(shape, additionalChecks) {
|
|
82
94
|
return (obj, { log } = {}) => {
|
|
83
95
|
if (!obj || typeof obj !== "object") {
|
|
@@ -93,14 +105,18 @@ var IsObjectFactory = class {
|
|
|
93
105
|
}
|
|
94
106
|
return !result;
|
|
95
107
|
}).length === 0 && //perform additional checks
|
|
96
|
-
((additionalChecks == null ? void 0 : additionalChecks.reduce((prev, check) => prev && check(obj, {
|
|
108
|
+
((additionalChecks == null ? void 0 : additionalChecks.reduce((prev, check) => prev && check(obj, {
|
|
109
|
+
log
|
|
110
|
+
}), true)) ?? true)
|
|
97
111
|
);
|
|
98
112
|
};
|
|
99
113
|
}
|
|
100
114
|
};
|
|
115
|
+
__name(_IsObjectFactory, "IsObjectFactory");
|
|
116
|
+
var IsObjectFactory = _IsObjectFactory;
|
|
101
117
|
|
|
102
118
|
// src/ObjectWrapper.ts
|
|
103
|
-
var
|
|
119
|
+
var _ObjectWrapper = class _ObjectWrapper {
|
|
104
120
|
obj;
|
|
105
121
|
constructor(obj) {
|
|
106
122
|
this.obj = obj;
|
|
@@ -109,10 +125,14 @@ var ObjectWrapper = class {
|
|
|
109
125
|
return this.obj;
|
|
110
126
|
}
|
|
111
127
|
};
|
|
128
|
+
__name(_ObjectWrapper, "ObjectWrapper");
|
|
129
|
+
var ObjectWrapper = _ObjectWrapper;
|
|
112
130
|
|
|
113
131
|
// src/Validator.ts
|
|
114
|
-
var
|
|
132
|
+
var _ValidatorBase = class _ValidatorBase extends ObjectWrapper {
|
|
115
133
|
};
|
|
134
|
+
__name(_ValidatorBase, "ValidatorBase");
|
|
135
|
+
var ValidatorBase = _ValidatorBase;
|
|
116
136
|
export {
|
|
117
137
|
AsObjectFactory,
|
|
118
138
|
AsTypeFactory,
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/AsTypeFactory.ts","../../src/AsObjectFactory.ts","../../src/isType.ts","../../src/isObject.ts","../../src/asObject.ts","../../src/Base.ts","../../src/IsObjectFactory.ts","../../src/ObjectWrapper.ts","../../src/Validator.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Logger } from '@xylabs/logger'\n\nexport interface TypeCheckConfig {\n log?: boolean | Logger\n}\n\nexport type TypeCheck<T> = (obj: unknown, config?: TypeCheckConfig) => obj is T\n\nexport const AsTypeFactory = {\n // eslint-disable-next-line @typescript-eslint/ban-types\n create: <T>(typeCheck: TypeCheck<T>) => {\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n config?: TypeCheckConfig,\n ): TType | undefined\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assert: string | (() => string),\n config?: TypeCheckConfig,\n ): TType\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assertOrConfig?: string | (() => string) | TypeCheckConfig,\n config?: TypeCheckConfig,\n ): TType | undefined {\n const noUndefined = (resolvedAssert: unknown): resolvedAssert is T => {\n return resolvedAssert !== undefined\n }\n\n if (value === undefined) {\n return undefined\n }\n\n if (value === null) {\n return undefined\n }\n\n const resolvedAssert = typeof assertOrConfig === 'object' ? undefined : assertOrConfig\n const resolvedConfig = typeof assertOrConfig === 'object' ? assertOrConfig : config\n const result = typeCheck(value, resolvedConfig) ? value : undefined\n\n return noUndefined(resolvedAssert)\n ? (assertEx(result, typeof resolvedAssert === 'function' ? resolvedAssert() : resolvedAssert) as TType)\n : (result as TType)\n }\n return func\n },\n}\n","import { AsTypeFactory, TypeCheck } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\n\nexport const AsObjectFactory = {\n create: <T extends EmptyObject>(typeCheck: TypeCheck<T>) => {\n return AsTypeFactory.create<T>(typeCheck)\n },\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function'\n\nexport type ObjectTypeShape = Record<string | number | symbol, FieldType>\n\nexport const isType = (value: unknown, expectedType: FieldType) => {\n const typeofValue = typeof value\n switch (expectedType) {\n case 'array': {\n return Array.isArray(value)\n }\n case 'null': {\n return value === null\n }\n case 'undefined': {\n return value === undefined\n }\n case 'object': {\n //nulls resolve to objects, so exclude them\n if (value === null) {\n return false\n }\n //arrays resolve to objects, so exclude them\n return typeofValue === 'object' && !Array.isArray(value)\n }\n default: {\n return typeofValue === expectedType\n }\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { isType } from './isType'\n\nexport const isObject = (value: unknown): value is AnyObject => {\n return isType(value, 'object')\n}\n","import { AnyObject } from './AnyObject'\nimport { AsObjectFactory } from './AsObjectFactory'\nimport { isObject } from './isObject'\n\nexport const asAnyObject = (() => AsObjectFactory.create<AnyObject>(<T extends AnyObject>(obj: unknown): obj is T => isObject(obj)))()\n","import { Logger } from '@xylabs/logger'\n\nimport { EmptyObject } from './EmptyObject'\n\nexport type BaseParamsFields = {\n logger?: Logger\n}\n\nexport type BaseParams<TAdditionalParams extends EmptyObject | void = void> = TAdditionalParams extends EmptyObject\n ? BaseParamsFields & TAdditionalParams\n : BaseParamsFields\n\nexport abstract class Base<TParams extends BaseParams = BaseParams> {\n static defaultLogger?: Logger\n\n constructor(readonly params: TParams) {\n params.logger?.debug(`Base constructed [${Object(this).name}]`)\n }\n\n protected get logger() {\n return this.params?.logger ?? Base.defaultLogger ?? console\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { TypeCheck, TypeCheckConfig } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\nimport { isType, ObjectTypeShape } from './isType'\n\nexport interface ObjectTypeConfig extends TypeCheckConfig {}\n\nexport class IsObjectFactory<T extends EmptyObject> {\n create(shape?: ObjectTypeShape, additionalChecks?: TypeCheck<AnyObject | EmptyObject>[]): TypeCheck<T> {\n return (obj, { log } = {}): obj is T => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n return (\n //do primary check\n Object.entries(shape ?? {}).filter(([key, type]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = isType((obj as any)[key], type)\n if (!result && log) {\n const logger = typeof log === 'object' ? log : console\n logger.warn(`isType Failed: ${key}: ${type}`)\n }\n return !result\n }).length === 0 &&\n //perform additional checks\n (additionalChecks?.reduce((prev, check) => prev && check(obj, { log }), true) ?? true)\n )\n }\n }\n}\n","import { EmptyObject } from './EmptyObject'\nimport { StringKeyObject } from './StringKeyObject'\n\nexport abstract class ObjectWrapper<T extends EmptyObject = EmptyObject> {\n readonly obj: T\n constructor(obj: T) {\n this.obj = obj\n }\n protected get stringKeyObj() {\n return this.obj as StringKeyObject\n }\n}\n","import { Promisable } from '@xylabs/promise'\n\nimport { AnyObject } from './AnyObject'\nimport { EmptyObject } from './EmptyObject'\nimport { ObjectWrapper } from './ObjectWrapper'\n\nexport interface Validator<T extends EmptyObject = AnyObject> {\n validate(payload: T): Promisable<Error[]>\n}\n\nexport abstract class ValidatorBase<T extends EmptyObject = AnyObject> extends ObjectWrapper<T> implements Validator<T> {\n abstract validate(payload: T): Promisable<Error[]>\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/AsTypeFactory.ts","../../src/AsObjectFactory.ts","../../src/isType.ts","../../src/isObject.ts","../../src/asObject.ts","../../src/Base.ts","../../src/IsObjectFactory.ts","../../src/ObjectWrapper.ts","../../src/Validator.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Logger } from '@xylabs/logger'\n\nexport interface TypeCheckConfig {\n log?: boolean | Logger\n}\n\nexport type TypeCheck<T> = (obj: unknown, config?: TypeCheckConfig) => obj is T\n\nexport const AsTypeFactory = {\n // eslint-disable-next-line @typescript-eslint/ban-types\n create: <T>(typeCheck: TypeCheck<T>) => {\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n config?: TypeCheckConfig,\n ): TType | undefined\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assert: string | (() => string),\n config?: TypeCheckConfig,\n ): TType\n function func<TType extends T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: unknown,\n assertOrConfig?: string | (() => string) | TypeCheckConfig,\n config?: TypeCheckConfig,\n ): TType | undefined {\n const noUndefined = (resolvedAssert: unknown): resolvedAssert is T => {\n return resolvedAssert !== undefined\n }\n\n if (value === undefined) {\n return undefined\n }\n\n if (value === null) {\n return undefined\n }\n\n const resolvedAssert = typeof assertOrConfig === 'object' ? undefined : assertOrConfig\n const resolvedConfig = typeof assertOrConfig === 'object' ? assertOrConfig : config\n const result = typeCheck(value, resolvedConfig) ? value : undefined\n\n return noUndefined(resolvedAssert)\n ? (assertEx(result, typeof resolvedAssert === 'function' ? resolvedAssert() : resolvedAssert) as TType)\n : (result as TType)\n }\n return func\n },\n}\n","import { AsTypeFactory, TypeCheck } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\n\nexport const AsObjectFactory = {\n create: <T extends EmptyObject>(typeCheck: TypeCheck<T>) => {\n return AsTypeFactory.create<T>(typeCheck)\n },\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function'\n\nexport type ObjectTypeShape = Record<string | number | symbol, FieldType>\n\nexport const isType = (value: unknown, expectedType: FieldType) => {\n const typeofValue = typeof value\n switch (expectedType) {\n case 'array': {\n return Array.isArray(value)\n }\n case 'null': {\n return value === null\n }\n case 'undefined': {\n return value === undefined\n }\n case 'object': {\n //nulls resolve to objects, so exclude them\n if (value === null) {\n return false\n }\n //arrays resolve to objects, so exclude them\n return typeofValue === 'object' && !Array.isArray(value)\n }\n default: {\n return typeofValue === expectedType\n }\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { isType } from './isType'\n\nexport const isObject = (value: unknown): value is AnyObject => {\n return isType(value, 'object')\n}\n","import { AnyObject } from './AnyObject'\nimport { AsObjectFactory } from './AsObjectFactory'\nimport { isObject } from './isObject'\n\nexport const asAnyObject = (() => AsObjectFactory.create<AnyObject>(<T extends AnyObject>(obj: unknown): obj is T => isObject(obj)))()\n","import { Logger } from '@xylabs/logger'\n\nimport { EmptyObject } from './EmptyObject'\n\nexport type BaseParamsFields = {\n logger?: Logger\n}\n\nexport type BaseParams<TAdditionalParams extends EmptyObject | void = void> = TAdditionalParams extends EmptyObject\n ? BaseParamsFields & TAdditionalParams\n : BaseParamsFields\n\nexport abstract class Base<TParams extends BaseParams = BaseParams> {\n static defaultLogger?: Logger\n\n constructor(readonly params: TParams) {\n params.logger?.debug(`Base constructed [${Object(this).name}]`)\n }\n\n protected get logger() {\n return this.params?.logger ?? Base.defaultLogger ?? console\n }\n}\n","import { AnyObject } from './AnyObject'\nimport { TypeCheck, TypeCheckConfig } from './AsTypeFactory'\nimport { EmptyObject } from './EmptyObject'\nimport { isType, ObjectTypeShape } from './isType'\n\nexport interface ObjectTypeConfig extends TypeCheckConfig {}\n\nexport class IsObjectFactory<T extends EmptyObject> {\n create(shape?: ObjectTypeShape, additionalChecks?: TypeCheck<AnyObject | EmptyObject>[]): TypeCheck<T> {\n return (obj, { log } = {}): obj is T => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n return (\n //do primary check\n Object.entries(shape ?? {}).filter(([key, type]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = isType((obj as any)[key], type)\n if (!result && log) {\n const logger = typeof log === 'object' ? log : console\n logger.warn(`isType Failed: ${key}: ${type}`)\n }\n return !result\n }).length === 0 &&\n //perform additional checks\n (additionalChecks?.reduce((prev, check) => prev && check(obj, { log }), true) ?? true)\n )\n }\n }\n}\n","import { EmptyObject } from './EmptyObject'\nimport { StringKeyObject } from './StringKeyObject'\n\nexport abstract class ObjectWrapper<T extends EmptyObject = EmptyObject> {\n readonly obj: T\n constructor(obj: T) {\n this.obj = obj\n }\n protected get stringKeyObj() {\n return this.obj as StringKeyObject\n }\n}\n","import { Promisable } from '@xylabs/promise'\n\nimport { AnyObject } from './AnyObject'\nimport { EmptyObject } from './EmptyObject'\nimport { ObjectWrapper } from './ObjectWrapper'\n\nexport interface Validator<T extends EmptyObject = AnyObject> {\n validate(payload: T): Promisable<Error[]>\n}\n\nexport abstract class ValidatorBase<T extends EmptyObject = AnyObject> extends ObjectWrapper<T> implements Validator<T> {\n abstract validate(payload: T): Promisable<Error[]>\n}\n"],"mappings":"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","names":["assertEx","AsTypeFactory","create","typeCheck","func","value","assertOrConfig","config","noUndefined","resolvedAssert","undefined","resolvedConfig","result","assertEx","AsObjectFactory","create","typeCheck","AsTypeFactory","isType","value","expectedType","typeofValue","Array","isArray","undefined","isObject","value","isType","asAnyObject","AsObjectFactory","create","obj","isObject","Base","constructor","params","logger","debug","Object","name","defaultLogger","console","IsObjectFactory","create","shape","additionalChecks","obj","log","Object","entries","filter","key","type","result","isType","logger","console","warn","length","reduce","prev","check","ObjectWrapper","obj","constructor","stringKeyObj","ValidatorBase","ObjectWrapper"]}
|