@xylabs/object 2.88.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/LICENSE +840 -0
  2. package/README.md +69 -0
  3. package/dist/browser/AnyObject.d.cts +7 -0
  4. package/dist/browser/AnyObject.d.cts.map +1 -0
  5. package/dist/browser/AnyObject.d.mts +7 -0
  6. package/dist/browser/AnyObject.d.mts.map +1 -0
  7. package/dist/browser/AnyObject.d.ts +7 -0
  8. package/dist/browser/AnyObject.d.ts.map +1 -0
  9. package/dist/browser/AsObjectFactory.d.cts +8 -0
  10. package/dist/browser/AsObjectFactory.d.cts.map +1 -0
  11. package/dist/browser/AsObjectFactory.d.mts +8 -0
  12. package/dist/browser/AsObjectFactory.d.mts.map +1 -0
  13. package/dist/browser/AsObjectFactory.d.ts +8 -0
  14. package/dist/browser/AsObjectFactory.d.ts.map +1 -0
  15. package/dist/browser/AsTypeFactory.d.cts +12 -0
  16. package/dist/browser/AsTypeFactory.d.cts.map +1 -0
  17. package/dist/browser/AsTypeFactory.d.mts +12 -0
  18. package/dist/browser/AsTypeFactory.d.mts.map +1 -0
  19. package/dist/browser/AsTypeFactory.d.ts +12 -0
  20. package/dist/browser/AsTypeFactory.d.ts.map +1 -0
  21. package/dist/browser/Base.d.cts +13 -0
  22. package/dist/browser/Base.d.cts.map +1 -0
  23. package/dist/browser/Base.d.mts +13 -0
  24. package/dist/browser/Base.d.mts.map +1 -0
  25. package/dist/browser/Base.d.ts +13 -0
  26. package/dist/browser/Base.d.ts.map +1 -0
  27. package/dist/browser/EmptyObject.d.cts +9 -0
  28. package/dist/browser/EmptyObject.d.cts.map +1 -0
  29. package/dist/browser/EmptyObject.d.mts +9 -0
  30. package/dist/browser/EmptyObject.d.mts.map +1 -0
  31. package/dist/browser/EmptyObject.d.ts +9 -0
  32. package/dist/browser/EmptyObject.d.ts.map +1 -0
  33. package/dist/browser/IsObjectFactory.d.cts +10 -0
  34. package/dist/browser/IsObjectFactory.d.cts.map +1 -0
  35. package/dist/browser/IsObjectFactory.d.mts +10 -0
  36. package/dist/browser/IsObjectFactory.d.mts.map +1 -0
  37. package/dist/browser/IsObjectFactory.d.ts +10 -0
  38. package/dist/browser/IsObjectFactory.d.ts.map +1 -0
  39. package/dist/browser/JsonObject.d.cts +6 -0
  40. package/dist/browser/JsonObject.d.cts.map +1 -0
  41. package/dist/browser/JsonObject.d.mts +6 -0
  42. package/dist/browser/JsonObject.d.mts.map +1 -0
  43. package/dist/browser/JsonObject.d.ts +6 -0
  44. package/dist/browser/JsonObject.d.ts.map +1 -0
  45. package/dist/browser/ObjectWrapper.d.cts +8 -0
  46. package/dist/browser/ObjectWrapper.d.cts.map +1 -0
  47. package/dist/browser/ObjectWrapper.d.mts +8 -0
  48. package/dist/browser/ObjectWrapper.d.mts.map +1 -0
  49. package/dist/browser/ObjectWrapper.d.ts +8 -0
  50. package/dist/browser/ObjectWrapper.d.ts.map +1 -0
  51. package/dist/browser/Override.d.cts +3 -0
  52. package/dist/browser/Override.d.cts.map +1 -0
  53. package/dist/browser/Override.d.mts +3 -0
  54. package/dist/browser/Override.d.mts.map +1 -0
  55. package/dist/browser/Override.d.ts +3 -0
  56. package/dist/browser/Override.d.ts.map +1 -0
  57. package/dist/browser/PartialRecord.d.cts +5 -0
  58. package/dist/browser/PartialRecord.d.cts.map +1 -0
  59. package/dist/browser/PartialRecord.d.mts +5 -0
  60. package/dist/browser/PartialRecord.d.mts.map +1 -0
  61. package/dist/browser/PartialRecord.d.ts +5 -0
  62. package/dist/browser/PartialRecord.d.ts.map +1 -0
  63. package/dist/browser/StringKeyObject.d.cts +4 -0
  64. package/dist/browser/StringKeyObject.d.cts.map +1 -0
  65. package/dist/browser/StringKeyObject.d.mts +4 -0
  66. package/dist/browser/StringKeyObject.d.mts.map +1 -0
  67. package/dist/browser/StringKeyObject.d.ts +4 -0
  68. package/dist/browser/StringKeyObject.d.ts.map +1 -0
  69. package/dist/browser/Validator.d.cts +11 -0
  70. package/dist/browser/Validator.d.cts.map +1 -0
  71. package/dist/browser/Validator.d.mts +11 -0
  72. package/dist/browser/Validator.d.mts.map +1 -0
  73. package/dist/browser/Validator.d.ts +11 -0
  74. package/dist/browser/Validator.d.ts.map +1 -0
  75. package/dist/browser/WithAdditional.d.cts +3 -0
  76. package/dist/browser/WithAdditional.d.cts.map +1 -0
  77. package/dist/browser/WithAdditional.d.mts +3 -0
  78. package/dist/browser/WithAdditional.d.mts.map +1 -0
  79. package/dist/browser/WithAdditional.d.ts +3 -0
  80. package/dist/browser/WithAdditional.d.ts.map +1 -0
  81. package/dist/browser/asObject.d.cts +6 -0
  82. package/dist/browser/asObject.d.cts.map +1 -0
  83. package/dist/browser/asObject.d.mts +6 -0
  84. package/dist/browser/asObject.d.mts.map +1 -0
  85. package/dist/browser/asObject.d.ts +6 -0
  86. package/dist/browser/asObject.d.ts.map +1 -0
  87. package/dist/browser/index.cjs +165 -0
  88. package/dist/browser/index.cjs.map +1 -0
  89. package/dist/browser/index.d.cts +17 -0
  90. package/dist/browser/index.d.cts.map +1 -0
  91. package/dist/browser/index.d.mts +17 -0
  92. package/dist/browser/index.d.mts.map +1 -0
  93. package/dist/browser/index.d.ts +17 -0
  94. package/dist/browser/index.d.ts.map +1 -0
  95. package/dist/browser/index.js +144 -0
  96. package/dist/browser/index.js.map +1 -0
  97. package/dist/browser/isObject.d.cts +3 -0
  98. package/dist/browser/isObject.d.cts.map +1 -0
  99. package/dist/browser/isObject.d.mts +3 -0
  100. package/dist/browser/isObject.d.mts.map +1 -0
  101. package/dist/browser/isObject.d.ts +3 -0
  102. package/dist/browser/isObject.d.ts.map +1 -0
  103. package/dist/browser/isType.d.cts +4 -0
  104. package/dist/browser/isType.d.cts.map +1 -0
  105. package/dist/browser/isType.d.mts +4 -0
  106. package/dist/browser/isType.d.mts.map +1 -0
  107. package/dist/browser/isType.d.ts +4 -0
  108. package/dist/browser/isType.d.ts.map +1 -0
  109. package/dist/node/AnyObject.d.cts +7 -0
  110. package/dist/node/AnyObject.d.cts.map +1 -0
  111. package/dist/node/AnyObject.d.mts +7 -0
  112. package/dist/node/AnyObject.d.mts.map +1 -0
  113. package/dist/node/AnyObject.d.ts +7 -0
  114. package/dist/node/AnyObject.d.ts.map +1 -0
  115. package/dist/node/AsObjectFactory.d.cts +8 -0
  116. package/dist/node/AsObjectFactory.d.cts.map +1 -0
  117. package/dist/node/AsObjectFactory.d.mts +8 -0
  118. package/dist/node/AsObjectFactory.d.mts.map +1 -0
  119. package/dist/node/AsObjectFactory.d.ts +8 -0
  120. package/dist/node/AsObjectFactory.d.ts.map +1 -0
  121. package/dist/node/AsTypeFactory.d.cts +12 -0
  122. package/dist/node/AsTypeFactory.d.cts.map +1 -0
  123. package/dist/node/AsTypeFactory.d.mts +12 -0
  124. package/dist/node/AsTypeFactory.d.mts.map +1 -0
  125. package/dist/node/AsTypeFactory.d.ts +12 -0
  126. package/dist/node/AsTypeFactory.d.ts.map +1 -0
  127. package/dist/node/Base.d.cts +13 -0
  128. package/dist/node/Base.d.cts.map +1 -0
  129. package/dist/node/Base.d.mts +13 -0
  130. package/dist/node/Base.d.mts.map +1 -0
  131. package/dist/node/Base.d.ts +13 -0
  132. package/dist/node/Base.d.ts.map +1 -0
  133. package/dist/node/EmptyObject.d.cts +9 -0
  134. package/dist/node/EmptyObject.d.cts.map +1 -0
  135. package/dist/node/EmptyObject.d.mts +9 -0
  136. package/dist/node/EmptyObject.d.mts.map +1 -0
  137. package/dist/node/EmptyObject.d.ts +9 -0
  138. package/dist/node/EmptyObject.d.ts.map +1 -0
  139. package/dist/node/IsObjectFactory.d.cts +10 -0
  140. package/dist/node/IsObjectFactory.d.cts.map +1 -0
  141. package/dist/node/IsObjectFactory.d.mts +10 -0
  142. package/dist/node/IsObjectFactory.d.mts.map +1 -0
  143. package/dist/node/IsObjectFactory.d.ts +10 -0
  144. package/dist/node/IsObjectFactory.d.ts.map +1 -0
  145. package/dist/node/JsonObject.d.cts +6 -0
  146. package/dist/node/JsonObject.d.cts.map +1 -0
  147. package/dist/node/JsonObject.d.mts +6 -0
  148. package/dist/node/JsonObject.d.mts.map +1 -0
  149. package/dist/node/JsonObject.d.ts +6 -0
  150. package/dist/node/JsonObject.d.ts.map +1 -0
  151. package/dist/node/ObjectWrapper.d.cts +8 -0
  152. package/dist/node/ObjectWrapper.d.cts.map +1 -0
  153. package/dist/node/ObjectWrapper.d.mts +8 -0
  154. package/dist/node/ObjectWrapper.d.mts.map +1 -0
  155. package/dist/node/ObjectWrapper.d.ts +8 -0
  156. package/dist/node/ObjectWrapper.d.ts.map +1 -0
  157. package/dist/node/Override.d.cts +3 -0
  158. package/dist/node/Override.d.cts.map +1 -0
  159. package/dist/node/Override.d.mts +3 -0
  160. package/dist/node/Override.d.mts.map +1 -0
  161. package/dist/node/Override.d.ts +3 -0
  162. package/dist/node/Override.d.ts.map +1 -0
  163. package/dist/node/PartialRecord.d.cts +5 -0
  164. package/dist/node/PartialRecord.d.cts.map +1 -0
  165. package/dist/node/PartialRecord.d.mts +5 -0
  166. package/dist/node/PartialRecord.d.mts.map +1 -0
  167. package/dist/node/PartialRecord.d.ts +5 -0
  168. package/dist/node/PartialRecord.d.ts.map +1 -0
  169. package/dist/node/StringKeyObject.d.cts +4 -0
  170. package/dist/node/StringKeyObject.d.cts.map +1 -0
  171. package/dist/node/StringKeyObject.d.mts +4 -0
  172. package/dist/node/StringKeyObject.d.mts.map +1 -0
  173. package/dist/node/StringKeyObject.d.ts +4 -0
  174. package/dist/node/StringKeyObject.d.ts.map +1 -0
  175. package/dist/node/Validator.d.cts +11 -0
  176. package/dist/node/Validator.d.cts.map +1 -0
  177. package/dist/node/Validator.d.mts +11 -0
  178. package/dist/node/Validator.d.mts.map +1 -0
  179. package/dist/node/Validator.d.ts +11 -0
  180. package/dist/node/Validator.d.ts.map +1 -0
  181. package/dist/node/WithAdditional.d.cts +3 -0
  182. package/dist/node/WithAdditional.d.cts.map +1 -0
  183. package/dist/node/WithAdditional.d.mts +3 -0
  184. package/dist/node/WithAdditional.d.mts.map +1 -0
  185. package/dist/node/WithAdditional.d.ts +3 -0
  186. package/dist/node/WithAdditional.d.ts.map +1 -0
  187. package/dist/node/asObject.d.cts +6 -0
  188. package/dist/node/asObject.d.cts.map +1 -0
  189. package/dist/node/asObject.d.mts +6 -0
  190. package/dist/node/asObject.d.mts.map +1 -0
  191. package/dist/node/asObject.d.ts +6 -0
  192. package/dist/node/asObject.d.ts.map +1 -0
  193. package/dist/node/index.cjs +180 -0
  194. package/dist/node/index.cjs.map +1 -0
  195. package/dist/node/index.d.cts +17 -0
  196. package/dist/node/index.d.cts.map +1 -0
  197. package/dist/node/index.d.mts +17 -0
  198. package/dist/node/index.d.mts.map +1 -0
  199. package/dist/node/index.d.ts +17 -0
  200. package/dist/node/index.d.ts.map +1 -0
  201. package/dist/node/index.js +147 -0
  202. package/dist/node/index.js.map +1 -0
  203. package/dist/node/isObject.d.cts +3 -0
  204. package/dist/node/isObject.d.cts.map +1 -0
  205. package/dist/node/isObject.d.mts +3 -0
  206. package/dist/node/isObject.d.mts.map +1 -0
  207. package/dist/node/isObject.d.ts +3 -0
  208. package/dist/node/isObject.d.ts.map +1 -0
  209. package/dist/node/isType.d.cts +4 -0
  210. package/dist/node/isType.d.cts.map +1 -0
  211. package/dist/node/isType.d.mts +4 -0
  212. package/dist/node/isType.d.mts.map +1 -0
  213. package/dist/node/isType.d.ts +4 -0
  214. package/dist/node/isType.d.ts.map +1 -0
  215. package/package.json +63 -0
  216. package/src/AnyObject.ts +7 -0
  217. package/src/AsObjectFactory.ts +8 -0
  218. package/src/AsTypeFactory.ts +52 -0
  219. package/src/Base.ts +23 -0
  220. package/src/EmptyObject.ts +8 -0
  221. package/src/IsObjectFactory.ts +30 -0
  222. package/src/JsonObject.ts +3 -0
  223. package/src/ObjectWrapper.ts +12 -0
  224. package/src/Override.ts +3 -0
  225. package/src/PartialRecord.ts +6 -0
  226. package/src/StringKeyObject.ts +1 -0
  227. package/src/Validator.ts +13 -0
  228. package/src/WithAdditional.ts +5 -0
  229. package/src/asObject.ts +5 -0
  230. package/src/index.ts +16 -0
  231. package/src/isObject.ts +6 -0
  232. package/src/isType.ts +31 -0
  233. package/typedoc.json +5 -0
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
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 });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
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
+ };
25
+
26
+ // src/index.ts
27
+ var src_exports = {};
28
+ __export(src_exports, {
29
+ AsObjectFactory: () => AsObjectFactory,
30
+ AsTypeFactory: () => AsTypeFactory,
31
+ Base: () => Base,
32
+ IsObjectFactory: () => IsObjectFactory,
33
+ ObjectWrapper: () => ObjectWrapper,
34
+ ValidatorBase: () => ValidatorBase,
35
+ asAnyObject: () => asAnyObject,
36
+ isObject: () => isObject,
37
+ isType: () => isType
38
+ });
39
+ module.exports = __toCommonJS(src_exports);
40
+
41
+ // src/AsTypeFactory.ts
42
+ var import_assert = require("@xylabs/assert");
43
+ var AsTypeFactory = {
44
+ // eslint-disable-next-line @typescript-eslint/ban-types
45
+ create: (typeCheck) => {
46
+ function func(value, assertOrConfig, config) {
47
+ const noUndefined = /* @__PURE__ */ __name((resolvedAssert2) => {
48
+ return resolvedAssert2 !== void 0;
49
+ }, "noUndefined");
50
+ if (value === void 0) {
51
+ return void 0;
52
+ }
53
+ if (value === null) {
54
+ return void 0;
55
+ }
56
+ const resolvedAssert = typeof assertOrConfig === "object" ? void 0 : assertOrConfig;
57
+ const resolvedConfig = typeof assertOrConfig === "object" ? assertOrConfig : config;
58
+ const result = typeCheck(value, resolvedConfig) ? value : void 0;
59
+ return noUndefined(resolvedAssert) ? (0, import_assert.assertEx)(result, typeof resolvedAssert === "function" ? resolvedAssert() : resolvedAssert) : result;
60
+ }
61
+ __name(func, "func");
62
+ return func;
63
+ }
64
+ };
65
+
66
+ // src/AsObjectFactory.ts
67
+ var AsObjectFactory = {
68
+ create: (typeCheck) => {
69
+ return AsTypeFactory.create(typeCheck);
70
+ }
71
+ };
72
+
73
+ // src/isType.ts
74
+ var isType = /* @__PURE__ */ __name((value, expectedType) => {
75
+ const typeofValue = typeof value;
76
+ switch (expectedType) {
77
+ case "array": {
78
+ return Array.isArray(value);
79
+ }
80
+ case "null": {
81
+ return value === null;
82
+ }
83
+ case "undefined": {
84
+ return value === void 0;
85
+ }
86
+ case "object": {
87
+ if (value === null) {
88
+ return false;
89
+ }
90
+ return typeofValue === "object" && !Array.isArray(value);
91
+ }
92
+ default: {
93
+ return typeofValue === expectedType;
94
+ }
95
+ }
96
+ }, "isType");
97
+
98
+ // src/isObject.ts
99
+ var isObject = /* @__PURE__ */ __name((value) => {
100
+ return isType(value, "object");
101
+ }, "isObject");
102
+
103
+ // src/asObject.ts
104
+ var asAnyObject = (() => AsObjectFactory.create((obj) => isObject(obj)))();
105
+
106
+ // src/Base.ts
107
+ var _Base = class _Base {
108
+ params;
109
+ constructor(params) {
110
+ var _a;
111
+ this.params = params;
112
+ (_a = params.logger) == null ? void 0 : _a.debug(`Base constructed [${Object(this).name}]`);
113
+ }
114
+ get logger() {
115
+ var _a;
116
+ return ((_a = this.params) == null ? void 0 : _a.logger) ?? _Base.defaultLogger;
117
+ }
118
+ };
119
+ __name(_Base, "Base");
120
+ __publicField(_Base, "defaultLogger");
121
+ var Base = _Base;
122
+
123
+ // src/IsObjectFactory.ts
124
+ var _IsObjectFactory = class _IsObjectFactory {
125
+ create(shape, additionalChecks) {
126
+ return (obj, { log } = {}) => {
127
+ if (!obj || typeof obj !== "object") {
128
+ return false;
129
+ }
130
+ return (
131
+ //do primary check
132
+ Object.entries(shape ?? {}).filter(([key, type]) => {
133
+ const result = isType(obj[key], type);
134
+ if (!result && log) {
135
+ const logger = typeof log === "object" ? log : console;
136
+ logger.warn(`isType Failed: ${key}: ${type}`);
137
+ }
138
+ return !result;
139
+ }).length === 0 && //perform additional checks
140
+ ((additionalChecks == null ? void 0 : additionalChecks.reduce((prev, check) => prev && check(obj, {
141
+ log
142
+ }), true)) ?? true)
143
+ );
144
+ };
145
+ }
146
+ };
147
+ __name(_IsObjectFactory, "IsObjectFactory");
148
+ var IsObjectFactory = _IsObjectFactory;
149
+
150
+ // src/ObjectWrapper.ts
151
+ var _ObjectWrapper = class _ObjectWrapper {
152
+ obj;
153
+ constructor(obj) {
154
+ this.obj = obj;
155
+ }
156
+ get stringKeyObj() {
157
+ return this.obj;
158
+ }
159
+ };
160
+ __name(_ObjectWrapper, "ObjectWrapper");
161
+ var ObjectWrapper = _ObjectWrapper;
162
+
163
+ // src/Validator.ts
164
+ var _ValidatorBase = class _ValidatorBase extends ObjectWrapper {
165
+ };
166
+ __name(_ValidatorBase, "ValidatorBase");
167
+ var ValidatorBase = _ValidatorBase;
168
+ // Annotate the CommonJS export names for ESM import in node:
169
+ 0 && (module.exports = {
170
+ AsObjectFactory,
171
+ AsTypeFactory,
172
+ Base,
173
+ IsObjectFactory,
174
+ ObjectWrapper,
175
+ ValidatorBase,
176
+ asAnyObject,
177
+ isObject,
178
+ isType
179
+ });
180
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +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 './Override'\nexport * from './PartialRecord'\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\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","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"]}
@@ -0,0 +1,17 @@
1
+ export * from './AnyObject';
2
+ export * from './asObject';
3
+ export * from './AsObjectFactory';
4
+ export * from './AsTypeFactory';
5
+ export * from './Base';
6
+ export * from './EmptyObject';
7
+ export * from './isObject';
8
+ export * from './IsObjectFactory';
9
+ export * from './isType';
10
+ export * from './JsonObject';
11
+ export * from './ObjectWrapper';
12
+ export * from './Override';
13
+ export * from './PartialRecord';
14
+ export * from './StringKeyObject';
15
+ export * from './Validator';
16
+ export * from './WithAdditional';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,17 @@
1
+ export * from './AnyObject';
2
+ export * from './asObject';
3
+ export * from './AsObjectFactory';
4
+ export * from './AsTypeFactory';
5
+ export * from './Base';
6
+ export * from './EmptyObject';
7
+ export * from './isObject';
8
+ export * from './IsObjectFactory';
9
+ export * from './isType';
10
+ export * from './JsonObject';
11
+ export * from './ObjectWrapper';
12
+ export * from './Override';
13
+ export * from './PartialRecord';
14
+ export * from './StringKeyObject';
15
+ export * from './Validator';
16
+ export * from './WithAdditional';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,17 @@
1
+ export * from './AnyObject';
2
+ export * from './asObject';
3
+ export * from './AsObjectFactory';
4
+ export * from './AsTypeFactory';
5
+ export * from './Base';
6
+ export * from './EmptyObject';
7
+ export * from './isObject';
8
+ export * from './IsObjectFactory';
9
+ export * from './isType';
10
+ export * from './JsonObject';
11
+ export * from './ObjectWrapper';
12
+ export * from './Override';
13
+ export * from './PartialRecord';
14
+ export * from './StringKeyObject';
15
+ export * from './Validator';
16
+ export * from './WithAdditional';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,147 @@
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
+
9
+ // src/AsTypeFactory.ts
10
+ import { assertEx } from "@xylabs/assert";
11
+ var AsTypeFactory = {
12
+ // eslint-disable-next-line @typescript-eslint/ban-types
13
+ create: (typeCheck) => {
14
+ function func(value, assertOrConfig, config) {
15
+ const noUndefined = /* @__PURE__ */ __name((resolvedAssert2) => {
16
+ return resolvedAssert2 !== void 0;
17
+ }, "noUndefined");
18
+ if (value === void 0) {
19
+ return void 0;
20
+ }
21
+ if (value === null) {
22
+ return void 0;
23
+ }
24
+ const resolvedAssert = typeof assertOrConfig === "object" ? void 0 : assertOrConfig;
25
+ const resolvedConfig = typeof assertOrConfig === "object" ? assertOrConfig : config;
26
+ const result = typeCheck(value, resolvedConfig) ? value : void 0;
27
+ return noUndefined(resolvedAssert) ? assertEx(result, typeof resolvedAssert === "function" ? resolvedAssert() : resolvedAssert) : result;
28
+ }
29
+ __name(func, "func");
30
+ return func;
31
+ }
32
+ };
33
+
34
+ // src/AsObjectFactory.ts
35
+ var AsObjectFactory = {
36
+ create: (typeCheck) => {
37
+ return AsTypeFactory.create(typeCheck);
38
+ }
39
+ };
40
+
41
+ // src/isType.ts
42
+ var isType = /* @__PURE__ */ __name((value, expectedType) => {
43
+ const typeofValue = typeof value;
44
+ switch (expectedType) {
45
+ case "array": {
46
+ return Array.isArray(value);
47
+ }
48
+ case "null": {
49
+ return value === null;
50
+ }
51
+ case "undefined": {
52
+ return value === void 0;
53
+ }
54
+ case "object": {
55
+ if (value === null) {
56
+ return false;
57
+ }
58
+ return typeofValue === "object" && !Array.isArray(value);
59
+ }
60
+ default: {
61
+ return typeofValue === expectedType;
62
+ }
63
+ }
64
+ }, "isType");
65
+
66
+ // src/isObject.ts
67
+ var isObject = /* @__PURE__ */ __name((value) => {
68
+ return isType(value, "object");
69
+ }, "isObject");
70
+
71
+ // src/asObject.ts
72
+ var asAnyObject = (() => AsObjectFactory.create((obj) => isObject(obj)))();
73
+
74
+ // src/Base.ts
75
+ var _Base = class _Base {
76
+ params;
77
+ constructor(params) {
78
+ var _a;
79
+ this.params = params;
80
+ (_a = params.logger) == null ? void 0 : _a.debug(`Base constructed [${Object(this).name}]`);
81
+ }
82
+ get logger() {
83
+ var _a;
84
+ return ((_a = this.params) == null ? void 0 : _a.logger) ?? _Base.defaultLogger;
85
+ }
86
+ };
87
+ __name(_Base, "Base");
88
+ __publicField(_Base, "defaultLogger");
89
+ var Base = _Base;
90
+
91
+ // src/IsObjectFactory.ts
92
+ var _IsObjectFactory = class _IsObjectFactory {
93
+ create(shape, additionalChecks) {
94
+ return (obj, { log } = {}) => {
95
+ if (!obj || typeof obj !== "object") {
96
+ return false;
97
+ }
98
+ return (
99
+ //do primary check
100
+ Object.entries(shape ?? {}).filter(([key, type]) => {
101
+ const result = isType(obj[key], type);
102
+ if (!result && log) {
103
+ const logger = typeof log === "object" ? log : console;
104
+ logger.warn(`isType Failed: ${key}: ${type}`);
105
+ }
106
+ return !result;
107
+ }).length === 0 && //perform additional checks
108
+ ((additionalChecks == null ? void 0 : additionalChecks.reduce((prev, check) => prev && check(obj, {
109
+ log
110
+ }), true)) ?? true)
111
+ );
112
+ };
113
+ }
114
+ };
115
+ __name(_IsObjectFactory, "IsObjectFactory");
116
+ var IsObjectFactory = _IsObjectFactory;
117
+
118
+ // src/ObjectWrapper.ts
119
+ var _ObjectWrapper = class _ObjectWrapper {
120
+ obj;
121
+ constructor(obj) {
122
+ this.obj = obj;
123
+ }
124
+ get stringKeyObj() {
125
+ return this.obj;
126
+ }
127
+ };
128
+ __name(_ObjectWrapper, "ObjectWrapper");
129
+ var ObjectWrapper = _ObjectWrapper;
130
+
131
+ // src/Validator.ts
132
+ var _ValidatorBase = class _ValidatorBase extends ObjectWrapper {
133
+ };
134
+ __name(_ValidatorBase, "ValidatorBase");
135
+ var ValidatorBase = _ValidatorBase;
136
+ export {
137
+ AsObjectFactory,
138
+ AsTypeFactory,
139
+ Base,
140
+ IsObjectFactory,
141
+ ObjectWrapper,
142
+ ValidatorBase,
143
+ asAnyObject,
144
+ isObject,
145
+ isType
146
+ };
147
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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\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","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"]}
@@ -0,0 +1,3 @@
1
+ import { AnyObject } from './AnyObject';
2
+ export declare const isObject: (value: unknown) => value is AnyObject;
3
+ //# sourceMappingURL=isObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isObject.d.ts","sourceRoot":"","sources":["../../src/isObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,eAAO,MAAM,QAAQ,UAAW,OAAO,uBAEtC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { AnyObject } from './AnyObject';
2
+ export declare const isObject: (value: unknown) => value is AnyObject;
3
+ //# sourceMappingURL=isObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isObject.d.ts","sourceRoot":"","sources":["../../src/isObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,eAAO,MAAM,QAAQ,UAAW,OAAO,uBAEtC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { AnyObject } from './AnyObject';
2
+ export declare const isObject: (value: unknown) => value is AnyObject;
3
+ //# sourceMappingURL=isObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isObject.d.ts","sourceRoot":"","sources":["../../src/isObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,eAAO,MAAM,QAAQ,UAAW,OAAO,uBAEtC,CAAA"}
@@ -0,0 +1,4 @@
1
+ export type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function';
2
+ export type ObjectTypeShape = Record<string | number | symbol, FieldType>;
3
+ export declare const isType: (value: unknown, expectedType: FieldType) => boolean;
4
+ //# sourceMappingURL=isType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isType.d.ts","sourceRoot":"","sources":["../../src/isType.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAA;AAE1H,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,CAAA;AAEzE,eAAO,MAAM,MAAM,UAAW,OAAO,gBAAgB,SAAS,YAwB7D,CAAA"}
@@ -0,0 +1,4 @@
1
+ export type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function';
2
+ export type ObjectTypeShape = Record<string | number | symbol, FieldType>;
3
+ export declare const isType: (value: unknown, expectedType: FieldType) => boolean;
4
+ //# sourceMappingURL=isType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isType.d.ts","sourceRoot":"","sources":["../../src/isType.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAA;AAE1H,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,CAAA;AAEzE,eAAO,MAAM,MAAM,UAAW,OAAO,gBAAgB,SAAS,YAwB7D,CAAA"}
@@ -0,0 +1,4 @@
1
+ export type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function';
2
+ export type ObjectTypeShape = Record<string | number | symbol, FieldType>;
3
+ export declare const isType: (value: unknown, expectedType: FieldType) => boolean;
4
+ //# sourceMappingURL=isType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isType.d.ts","sourceRoot":"","sources":["../../src/isType.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAA;AAE1H,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,CAAA;AAEzE,eAAO,MAAM,MAAM,UAAW,OAAO,gBAAgB,SAAS,YAwB7D,CAAA"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@xylabs/object",
3
+ "author": {
4
+ "email": "support@xyo.network",
5
+ "name": "XYO Development Team",
6
+ "url": "https://xyo.network"
7
+ },
8
+ "bugs": {
9
+ "email": "support@xyo.network",
10
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
+ },
12
+ "description": "Primary SDK for using XYO Protocol 2.0",
13
+ "dependencies": {
14
+ "@xylabs/assert": "^2.13.27",
15
+ "@xylabs/logger": "^2.13.27",
16
+ "@xylabs/promise": "^2.13.27"
17
+ },
18
+ "devDependencies": {
19
+ "@xylabs/ts-scripts-yarn3": "^3.2.42",
20
+ "@xylabs/tsconfig": "^3.2.42",
21
+ "typescript": "^5.3.3"
22
+ },
23
+ "exports": {
24
+ ".": {
25
+ "browser": {
26
+ "require": {
27
+ "types": "./dist/browser/index.d.cts",
28
+ "default": "./dist/browser/index.cjs"
29
+ },
30
+ "import": {
31
+ "types": "./dist/browser/index.d.mts",
32
+ "default": "./dist/browser/index.js"
33
+ }
34
+ },
35
+ "node": {
36
+ "require": {
37
+ "types": "./dist/node/index.d.cts",
38
+ "default": "./dist/node/index.cjs"
39
+ },
40
+ "import": {
41
+ "types": "./dist/node/index.d.mts",
42
+ "default": "./dist/node/index.js"
43
+ }
44
+ }
45
+ },
46
+ "./package.json": "./package.json"
47
+ },
48
+ "main": "dist/node/index.cjs",
49
+ "module": "dist/node/index.js",
50
+ "types": "dist/node/index.d.mts",
51
+ "homepage": "https://xyo.network",
52
+ "license": "LGPL-3.0-or-later",
53
+ "publishConfig": {
54
+ "access": "public"
55
+ },
56
+ "repository": {
57
+ "type": "git",
58
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
59
+ },
60
+ "sideEffects": false,
61
+ "version": "2.88.3",
62
+ "type": "module"
63
+ }
@@ -0,0 +1,7 @@
1
+ import { EmptyObject } from './EmptyObject'
2
+
3
+ /**
4
+ * Any object, which means that it does not enforce the set of fields that it has. Extending from AnyObject
5
+ * will result in a type that includes the universal set of field names
6
+ */
7
+ export type AnyObject = EmptyObject & Record<string | number | symbol, unknown>
@@ -0,0 +1,8 @@
1
+ import { AsTypeFactory, TypeCheck } from './AsTypeFactory'
2
+ import { EmptyObject } from './EmptyObject'
3
+
4
+ export const AsObjectFactory = {
5
+ create: <T extends EmptyObject>(typeCheck: TypeCheck<T>) => {
6
+ return AsTypeFactory.create<T>(typeCheck)
7
+ },
8
+ }
@@ -0,0 +1,52 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import { Logger } from '@xylabs/logger'
3
+
4
+ export interface TypeCheckConfig {
5
+ log?: boolean | Logger
6
+ }
7
+
8
+ export type TypeCheck<T> = (obj: unknown, config?: TypeCheckConfig) => obj is T
9
+
10
+ export const AsTypeFactory = {
11
+ // eslint-disable-next-line @typescript-eslint/ban-types
12
+ create: <T>(typeCheck: TypeCheck<T>) => {
13
+ function func<TType extends T>(
14
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ value: unknown,
16
+ config?: TypeCheckConfig,
17
+ ): TType | undefined
18
+ function func<TType extends T>(
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ value: unknown,
21
+ assert: string | (() => string),
22
+ config?: TypeCheckConfig,
23
+ ): TType
24
+ function func<TType extends T>(
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ value: unknown,
27
+ assertOrConfig?: string | (() => string) | TypeCheckConfig,
28
+ config?: TypeCheckConfig,
29
+ ): TType | undefined {
30
+ const noUndefined = (resolvedAssert: unknown): resolvedAssert is T => {
31
+ return resolvedAssert !== undefined
32
+ }
33
+
34
+ if (value === undefined) {
35
+ return undefined
36
+ }
37
+
38
+ if (value === null) {
39
+ return undefined
40
+ }
41
+
42
+ const resolvedAssert = typeof assertOrConfig === 'object' ? undefined : assertOrConfig
43
+ const resolvedConfig = typeof assertOrConfig === 'object' ? assertOrConfig : config
44
+ const result = typeCheck(value, resolvedConfig) ? value : undefined
45
+
46
+ return noUndefined(resolvedAssert)
47
+ ? (assertEx(result, typeof resolvedAssert === 'function' ? resolvedAssert() : resolvedAssert) as TType)
48
+ : (result as TType)
49
+ }
50
+ return func
51
+ },
52
+ }