@carno.js/core 0.2.11 → 1.0.2

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 (314) hide show
  1. package/LICENSE +673 -673
  2. package/README.md +188 -0
  3. package/dist/Carno.js +272 -333
  4. package/dist/Carno.mjs +268 -0
  5. package/dist/DefaultRoutes.js +51 -0
  6. package/dist/DefaultRoutes.mjs +34 -0
  7. package/dist/bun/index.js +183 -0
  8. package/dist/bun/index.js.map +86 -0
  9. package/dist/cache/CacheDriver.js +13 -0
  10. package/dist/cache/CacheDriver.mjs +0 -0
  11. package/dist/cache/CacheService.js +113 -0
  12. package/dist/cache/CacheService.mjs +93 -0
  13. package/dist/cache/MemoryDriver.js +66 -0
  14. package/dist/cache/MemoryDriver.mjs +46 -0
  15. package/dist/cache/RedisDriver.js +81 -0
  16. package/dist/cache/RedisDriver.mjs +61 -0
  17. package/dist/compiler/JITCompiler.js +111 -0
  18. package/dist/compiler/JITCompiler.mjs +89 -0
  19. package/dist/container/Container.js +99 -0
  20. package/dist/container/Container.mjs +78 -0
  21. package/dist/context/Context.js +97 -0
  22. package/dist/context/Context.mjs +77 -0
  23. package/dist/cors/CorsHandler.js +90 -0
  24. package/dist/cors/CorsHandler.mjs +68 -0
  25. package/dist/decorators/Controller.js +42 -0
  26. package/dist/decorators/Controller.mjs +22 -0
  27. package/dist/decorators/Inject.js +30 -0
  28. package/dist/decorators/Inject.mjs +10 -0
  29. package/dist/decorators/Middleware.js +35 -0
  30. package/dist/decorators/Middleware.mjs +15 -0
  31. package/dist/decorators/Service.js +31 -0
  32. package/dist/decorators/Service.mjs +12 -0
  33. package/dist/decorators/methods.js +60 -0
  34. package/dist/decorators/methods.mjs +34 -0
  35. package/dist/decorators/params.js +63 -0
  36. package/dist/decorators/params.mjs +37 -0
  37. package/dist/events/Lifecycle.js +69 -0
  38. package/dist/events/Lifecycle.mjs +41 -0
  39. package/dist/exceptions/HttpException.js +112 -26
  40. package/dist/exceptions/HttpException.mjs +82 -0
  41. package/dist/index.js +129 -31
  42. package/dist/index.mjs +94 -0
  43. package/dist/metadata.js +34 -0
  44. package/dist/metadata.mjs +9 -0
  45. package/dist/middleware/CarnoMiddleware.js +13 -0
  46. package/dist/middleware/CarnoMiddleware.mjs +0 -0
  47. package/dist/router/RadixRouter.js +121 -0
  48. package/dist/router/RadixRouter.mjs +101 -0
  49. package/dist/testing/TestHarness.js +81 -0
  50. package/dist/testing/TestHarness.mjs +60 -0
  51. package/dist/utils/Metadata.js +53 -0
  52. package/dist/utils/Metadata.mjs +31 -0
  53. package/dist/validation/ValibotAdapter.js +67 -0
  54. package/dist/validation/ValibotAdapter.mjs +48 -0
  55. package/dist/validation/ValidatorAdapter.js +35 -19
  56. package/dist/validation/ValidatorAdapter.mjs +14 -0
  57. package/dist/validation/ZodAdapter.js +80 -0
  58. package/dist/validation/ZodAdapter.mjs +59 -0
  59. package/package.json +21 -63
  60. package/src/Carno.ts +605 -0
  61. package/src/DefaultRoutes.ts +34 -0
  62. package/src/cache/CacheDriver.ts +50 -0
  63. package/src/cache/CacheService.ts +139 -0
  64. package/src/cache/MemoryDriver.ts +104 -0
  65. package/src/cache/RedisDriver.ts +116 -0
  66. package/src/compiler/JITCompiler.ts +167 -0
  67. package/src/container/Container.ts +168 -0
  68. package/src/context/Context.ts +128 -0
  69. package/src/cors/CorsHandler.ts +145 -0
  70. package/src/decorators/Controller.ts +63 -0
  71. package/src/decorators/Inject.ts +16 -0
  72. package/src/decorators/Middleware.ts +22 -0
  73. package/src/decorators/Service.ts +18 -0
  74. package/src/decorators/methods.ts +58 -0
  75. package/src/decorators/params.ts +47 -0
  76. package/src/events/Lifecycle.ts +97 -0
  77. package/src/exceptions/HttpException.ts +99 -0
  78. package/src/index.ts +92 -0
  79. package/src/metadata.ts +46 -0
  80. package/src/middleware/CarnoMiddleware.ts +14 -0
  81. package/src/router/RadixRouter.ts +225 -0
  82. package/src/testing/TestHarness.ts +177 -0
  83. package/src/utils/Metadata.ts +43 -0
  84. package/src/validation/ValibotAdapter.ts +95 -0
  85. package/src/validation/ValidatorAdapter.ts +69 -0
  86. package/src/validation/ZodAdapter.ts +102 -0
  87. package/dist/Carno.d.ts +0 -75
  88. package/dist/cache/bento-cache.driver.d.ts +0 -13
  89. package/dist/cache/bento-cache.driver.js +0 -55
  90. package/dist/cache/cache.service.d.ts +0 -8
  91. package/dist/cache/cache.service.js +0 -6
  92. package/dist/commons/decorators/Injectable.decorator.d.ts +0 -20
  93. package/dist/commons/decorators/Injectable.decorator.js +0 -33
  94. package/dist/commons/decorators/controller.decorator.d.ts +0 -8
  95. package/dist/commons/decorators/controller.decorator.js +0 -22
  96. package/dist/commons/decorators/http.decorators.d.ts +0 -13
  97. package/dist/commons/decorators/http.decorators.js +0 -63
  98. package/dist/commons/decorators/index.d.ts +0 -6
  99. package/dist/commons/decorators/index.js +0 -22
  100. package/dist/commons/decorators/inject.decorator.d.ts +0 -1
  101. package/dist/commons/decorators/inject.decorator.js +0 -5
  102. package/dist/commons/decorators/middleware.decorator.d.ts +0 -2
  103. package/dist/commons/decorators/middleware.decorator.js +0 -30
  104. package/dist/commons/decorators/service.decorator.d.ts +0 -2
  105. package/dist/commons/decorators/service.decorator.js +0 -7
  106. package/dist/commons/decorators/validation.decorator.d.ts +0 -32
  107. package/dist/commons/decorators/validation.decorator.js +0 -40
  108. package/dist/commons/http-code.enum.d.ts +0 -50
  109. package/dist/commons/http-code.enum.js +0 -54
  110. package/dist/commons/index.d.ts +0 -3
  111. package/dist/commons/index.js +0 -19
  112. package/dist/commons/registries/ProviderControl.d.ts +0 -77
  113. package/dist/commons/registries/ProviderControl.js +0 -112
  114. package/dist/commons/registries/ProviderRegistry.d.ts +0 -7
  115. package/dist/commons/registries/ProviderRegistry.js +0 -20
  116. package/dist/constants.d.ts +0 -8
  117. package/dist/constants.js +0 -11
  118. package/dist/container/ContainerConfiguration.d.ts +0 -45
  119. package/dist/container/ContainerConfiguration.js +0 -121
  120. package/dist/container/DependencyResolver.d.ts +0 -20
  121. package/dist/container/DependencyResolver.js +0 -85
  122. package/dist/container/InjectorService.d.ts +0 -58
  123. package/dist/container/InjectorService.js +0 -286
  124. package/dist/container/MethodInvoker.d.ts +0 -21
  125. package/dist/container/MethodInvoker.js +0 -83
  126. package/dist/container/RouteResolver.d.ts +0 -27
  127. package/dist/container/RouteResolver.js +0 -173
  128. package/dist/container/container.d.ts +0 -41
  129. package/dist/container/container.js +0 -71
  130. package/dist/container/createContainer.d.ts +0 -3
  131. package/dist/container/createContainer.js +0 -12
  132. package/dist/container/createInjector.d.ts +0 -2
  133. package/dist/container/createInjector.js +0 -7
  134. package/dist/container/index.d.ts +0 -6
  135. package/dist/container/index.js +0 -22
  136. package/dist/container/middleware.resolver.d.ts +0 -9
  137. package/dist/container/middleware.resolver.js +0 -35
  138. package/dist/default-routes-carno.d.ts +0 -3
  139. package/dist/default-routes-carno.js +0 -29
  140. package/dist/domain/BaseContext.d.ts +0 -15
  141. package/dist/domain/BaseContext.js +0 -2
  142. package/dist/domain/CarnoClosure.d.ts +0 -1
  143. package/dist/domain/CarnoClosure.js +0 -2
  144. package/dist/domain/CarnoMiddleware.d.ts +0 -5
  145. package/dist/domain/CarnoMiddleware.js +0 -2
  146. package/dist/domain/Context.d.ts +0 -58
  147. package/dist/domain/Context.js +0 -188
  148. package/dist/domain/FastContext.d.ts +0 -34
  149. package/dist/domain/FastContext.js +0 -59
  150. package/dist/domain/LocalsContainer.d.ts +0 -4
  151. package/dist/domain/LocalsContainer.js +0 -10
  152. package/dist/domain/Metadata.d.ts +0 -449
  153. package/dist/domain/Metadata.js +0 -511
  154. package/dist/domain/cors-config.d.ts +0 -12
  155. package/dist/domain/cors-config.js +0 -18
  156. package/dist/domain/cors-headers-cache.d.ts +0 -17
  157. package/dist/domain/cors-headers-cache.js +0 -101
  158. package/dist/domain/http-method.d.ts +0 -7
  159. package/dist/domain/http-method.js +0 -11
  160. package/dist/domain/index.d.ts +0 -10
  161. package/dist/domain/index.js +0 -26
  162. package/dist/domain/provider-scope.d.ts +0 -5
  163. package/dist/domain/provider-scope.js +0 -9
  164. package/dist/domain/provider-type.d.ts +0 -6
  165. package/dist/domain/provider-type.js +0 -10
  166. package/dist/domain/provider.d.ts +0 -37
  167. package/dist/domain/provider.js +0 -70
  168. package/dist/events/hooks.decorator.d.ts +0 -3
  169. package/dist/events/hooks.decorator.js +0 -29
  170. package/dist/events/index.d.ts +0 -2
  171. package/dist/events/index.js +0 -18
  172. package/dist/events/on-event.d.ts +0 -13
  173. package/dist/events/on-event.js +0 -11
  174. package/dist/exceptions/HttpException.d.ts +0 -9
  175. package/dist/exceptions/index.d.ts +0 -1
  176. package/dist/exceptions/index.js +0 -17
  177. package/dist/index.d.ts +0 -16
  178. package/dist/route/CompiledRoute.d.ts +0 -23
  179. package/dist/route/CompiledRoute.js +0 -9
  180. package/dist/route/FastPathExecutor.d.ts +0 -12
  181. package/dist/route/FastPathExecutor.js +0 -50
  182. package/dist/route/JITCompiler.d.ts +0 -28
  183. package/dist/route/JITCompiler.js +0 -245
  184. package/dist/route/Matcher.d.ts +0 -11
  185. package/dist/route/Matcher.js +0 -48
  186. package/dist/route/ParamResolverFactory.d.ts +0 -14
  187. package/dist/route/ParamResolverFactory.js +0 -49
  188. package/dist/route/RouteCompiler.d.ts +0 -28
  189. package/dist/route/RouteCompiler.js +0 -157
  190. package/dist/route/RouteExecutor.d.ts +0 -12
  191. package/dist/route/RouteExecutor.js +0 -84
  192. package/dist/route/memoirist.d.ts +0 -31
  193. package/dist/route/memoirist.js +0 -373
  194. package/dist/services/logger.service.d.ts +0 -23
  195. package/dist/services/logger.service.js +0 -47
  196. package/dist/testing/core-testing.d.ts +0 -24
  197. package/dist/testing/core-testing.js +0 -102
  198. package/dist/testing/index.d.ts +0 -1
  199. package/dist/testing/index.js +0 -17
  200. package/dist/utils/ValidationCache.d.ts +0 -5
  201. package/dist/utils/ValidationCache.js +0 -35
  202. package/dist/utils/ancestorOf.d.ts +0 -2
  203. package/dist/utils/ancestorOf.js +0 -10
  204. package/dist/utils/ancestorsOf.d.ts +0 -6
  205. package/dist/utils/ancestorsOf.js +0 -20
  206. package/dist/utils/classOf.d.ts +0 -13
  207. package/dist/utils/classOf.js +0 -21
  208. package/dist/utils/cleanObject.d.ts +0 -6
  209. package/dist/utils/cleanObject.js +0 -22
  210. package/dist/utils/constructorOf.d.ts +0 -11
  211. package/dist/utils/constructorOf.js +0 -18
  212. package/dist/utils/createInstance.d.ts +0 -1
  213. package/dist/utils/createInstance.js +0 -7
  214. package/dist/utils/decoratorTypeOf.d.ts +0 -11
  215. package/dist/utils/decoratorTypeOf.js +0 -32
  216. package/dist/utils/deepClone.d.ts +0 -6
  217. package/dist/utils/deepClone.js +0 -63
  218. package/dist/utils/deepMerge.d.ts +0 -9
  219. package/dist/utils/deepMerge.js +0 -62
  220. package/dist/utils/descriptorOf.d.ts +0 -8
  221. package/dist/utils/descriptorOf.js +0 -16
  222. package/dist/utils/formatValidationErrors.d.ts +0 -5
  223. package/dist/utils/formatValidationErrors.js +0 -80
  224. package/dist/utils/getClassOrSymbol.d.ts +0 -1
  225. package/dist/utils/getClassOrSymbol.js +0 -8
  226. package/dist/utils/getConstructorArgNames.d.ts +0 -1
  227. package/dist/utils/getConstructorArgNames.js +0 -12
  228. package/dist/utils/getMethodArgTypes.d.ts +0 -1
  229. package/dist/utils/getMethodArgTypes.js +0 -9
  230. package/dist/utils/getValue.d.ts +0 -32
  231. package/dist/utils/getValue.js +0 -47
  232. package/dist/utils/hasJsonMethod.d.ts +0 -1
  233. package/dist/utils/hasJsonMethod.js +0 -6
  234. package/dist/utils/index.d.ts +0 -15
  235. package/dist/utils/index.js +0 -31
  236. package/dist/utils/isArray.d.ts +0 -13
  237. package/dist/utils/isArray.js +0 -21
  238. package/dist/utils/isArrowFn.d.ts +0 -1
  239. package/dist/utils/isArrowFn.js +0 -7
  240. package/dist/utils/isBoolean.d.ts +0 -7
  241. package/dist/utils/isBoolean.js +0 -15
  242. package/dist/utils/isBuffer.d.ts +0 -7
  243. package/dist/utils/isBuffer.js +0 -19
  244. package/dist/utils/isClass.d.ts +0 -1
  245. package/dist/utils/isClass.js +0 -26
  246. package/dist/utils/isCollection.d.ts +0 -6
  247. package/dist/utils/isCollection.js +0 -20
  248. package/dist/utils/isDate.d.ts +0 -6
  249. package/dist/utils/isDate.js +0 -11
  250. package/dist/utils/isEmpty.d.ts +0 -6
  251. package/dist/utils/isEmpty.js +0 -12
  252. package/dist/utils/isFunction.d.ts +0 -1
  253. package/dist/utils/isFunction.js +0 -6
  254. package/dist/utils/isInheritedFrom.d.ts +0 -1
  255. package/dist/utils/isInheritedFrom.js +0 -24
  256. package/dist/utils/isMomentObject.d.ts +0 -1
  257. package/dist/utils/isMomentObject.js +0 -6
  258. package/dist/utils/isMongooseObject.d.ts +0 -2
  259. package/dist/utils/isMongooseObject.js +0 -11
  260. package/dist/utils/isNil.d.ts +0 -1
  261. package/dist/utils/isNil.js +0 -6
  262. package/dist/utils/isNumber.d.ts +0 -7
  263. package/dist/utils/isNumber.js +0 -15
  264. package/dist/utils/isObject.d.ts +0 -1
  265. package/dist/utils/isObject.js +0 -6
  266. package/dist/utils/isObservable.d.ts +0 -1
  267. package/dist/utils/isObservable.js +0 -6
  268. package/dist/utils/isPlainObject.d.ts +0 -7
  269. package/dist/utils/isPlainObject.js +0 -16
  270. package/dist/utils/isPrimitive.d.ts +0 -14
  271. package/dist/utils/isPrimitive.js +0 -28
  272. package/dist/utils/isPrimitiveType.d.ts +0 -1
  273. package/dist/utils/isPrimitiveType.js +0 -11
  274. package/dist/utils/isPromise.d.ts +0 -7
  275. package/dist/utils/isPromise.js +0 -14
  276. package/dist/utils/isProtectedKey.d.ts +0 -5
  277. package/dist/utils/isProtectedKey.js +0 -10
  278. package/dist/utils/isRegExp.d.ts +0 -1
  279. package/dist/utils/isRegExp.js +0 -6
  280. package/dist/utils/isRequestScope.d.ts +0 -11
  281. package/dist/utils/isRequestScope.js +0 -23
  282. package/dist/utils/isSerializable.d.ts +0 -1
  283. package/dist/utils/isSerializable.js +0 -11
  284. package/dist/utils/isStream.d.ts +0 -1
  285. package/dist/utils/isStream.js +0 -6
  286. package/dist/utils/isString.d.ts +0 -6
  287. package/dist/utils/isString.js +0 -14
  288. package/dist/utils/isSymbol.d.ts +0 -6
  289. package/dist/utils/isSymbol.js +0 -14
  290. package/dist/utils/methodsOf.d.ts +0 -9
  291. package/dist/utils/methodsOf.js +0 -24
  292. package/dist/utils/nameOf.d.ts +0 -14
  293. package/dist/utils/nameOf.js +0 -31
  294. package/dist/utils/objectKeys.d.ts +0 -1
  295. package/dist/utils/objectKeys.js +0 -7
  296. package/dist/utils/primitiveOf.d.ts +0 -1
  297. package/dist/utils/primitiveOf.js +0 -18
  298. package/dist/utils/prototypeOf.d.ts +0 -6
  299. package/dist/utils/prototypeOf.js +0 -12
  300. package/dist/utils/setValue.d.ts +0 -1
  301. package/dist/utils/setValue.js +0 -32
  302. package/dist/utils/toMap.d.ts +0 -3
  303. package/dist/utils/toMap.js +0 -34
  304. package/dist/utils/toStringConstructor.d.ts +0 -1
  305. package/dist/utils/toStringConstructor.js +0 -10
  306. package/dist/validation/ValidatorAdapter.d.ts +0 -66
  307. package/dist/validation/adapters/ClassValidatorAdapter.d.ts +0 -23
  308. package/dist/validation/adapters/ClassValidatorAdapter.js +0 -47
  309. package/dist/validation/adapters/ZodAdapter.d.ts +0 -14
  310. package/dist/validation/adapters/ZodAdapter.js +0 -56
  311. package/dist/validation/adapters/index.d.ts +0 -4
  312. package/dist/validation/adapters/index.js +0 -7
  313. package/dist/validation/index.d.ts +0 -3
  314. package/dist/validation/index.js +0 -20
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getClass = getClass;
4
- exports.classOf = classOf;
5
- /**
6
- * Get the provide constructor if target is an instance.
7
- * @param target
8
- * @returns {*}
9
- */
10
- function getClass(target) {
11
- return target.prototype ? target : target.constructor;
12
- }
13
- /**
14
- * Get the provide constructor if target is an instance.
15
- * @param target
16
- * @returns {*}
17
- * @alias getClass
18
- */
19
- function classOf(target) {
20
- return getClass(target);
21
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Remove undefined value
3
- * @param obj
4
- * @param ignore
5
- */
6
- export declare function cleanObject(obj: any, ignore?: string[]): any;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cleanObject = cleanObject;
4
- const isProtectedKey_1 = require("./isProtectedKey");
5
- /**
6
- * Remove undefined value
7
- * @param obj
8
- * @param ignore
9
- */
10
- function cleanObject(obj, ignore = []) {
11
- return Object.entries(obj).reduce((obj, [key, value]) => {
12
- if ((0, isProtectedKey_1.isProtectedKey)(key) || ignore.includes(key)) {
13
- return obj;
14
- }
15
- return value === undefined
16
- ? obj
17
- : {
18
- ...obj,
19
- [key]: value
20
- };
21
- }, {});
22
- }
@@ -1,11 +0,0 @@
1
- import { Type } from "../commons";
2
- /**
3
- * Get the class constructor
4
- * @param target
5
- */
6
- export declare function getConstructor(target: any): Type<any>;
7
- /**
8
- * Get the class constructor
9
- * @param target
10
- */
11
- export declare function constructorOf(target: any): Type<any>;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getConstructor = getConstructor;
4
- exports.constructorOf = constructorOf;
5
- /**
6
- * Get the class constructor
7
- * @param target
8
- */
9
- function getConstructor(target) {
10
- return typeof target === "function" ? target : target.constructor;
11
- }
12
- /**
13
- * Get the class constructor
14
- * @param target
15
- */
16
- function constructorOf(target) {
17
- return getConstructor(target);
18
- }
@@ -1 +0,0 @@
1
- export declare function createInstance(obj: any): any;
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createInstance = createInstance;
4
- const classOf_1 = require("./classOf");
5
- function createInstance(obj) {
6
- return obj ? ((0, classOf_1.classOf)(obj) !== Object ? Object.create(obj) : {}) : {};
7
- }
@@ -1,11 +0,0 @@
1
- export declare enum DecoratorTypes {
2
- PARAM = "parameter",
3
- PARAM_CTOR = "parameter.constructor",
4
- PARAM_STC = "parameter.static",
5
- PROP = "property",
6
- PROP_STC = "property.static",
7
- METHOD = "method",
8
- METHOD_STC = "method.static",
9
- CLASS = "class"
10
- }
11
- export declare function decoratorTypeOf(args: any[]): DecoratorTypes;
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DecoratorTypes = void 0;
4
- exports.decoratorTypeOf = decoratorTypeOf;
5
- const classOf_1 = require("./classOf");
6
- var DecoratorTypes;
7
- (function (DecoratorTypes) {
8
- DecoratorTypes["PARAM"] = "parameter";
9
- DecoratorTypes["PARAM_CTOR"] = "parameter.constructor";
10
- DecoratorTypes["PARAM_STC"] = "parameter.static";
11
- DecoratorTypes["PROP"] = "property";
12
- DecoratorTypes["PROP_STC"] = "property.static";
13
- DecoratorTypes["METHOD"] = "method";
14
- DecoratorTypes["METHOD_STC"] = "method.static";
15
- DecoratorTypes["CLASS"] = "class";
16
- })(DecoratorTypes || (exports.DecoratorTypes = DecoratorTypes = {}));
17
- function decoratorTypeOf(args) {
18
- const [target, propertyKey, descriptor] = args;
19
- const staticType = (type) => {
20
- return target !== (0, classOf_1.classOf)(target) ? type : `${type}.static`;
21
- };
22
- if (typeof descriptor === "number") {
23
- return propertyKey ? staticType("parameter") : DecoratorTypes.PARAM_CTOR;
24
- }
25
- if (descriptor && descriptor.value) {
26
- return staticType("method");
27
- }
28
- if ((propertyKey && descriptor === undefined) || descriptor) {
29
- return staticType("property");
30
- }
31
- return DecoratorTypes.CLASS;
32
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Return a cloned value
3
- * @param source
4
- * @param stack
5
- */
6
- export declare function deepClone(source: any, stack?: WeakMap<object, any>): any;
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deepClone = deepClone;
4
- const isArray_1 = require("./isArray");
5
- const isDate_1 = require("./isDate");
6
- const isFunction_1 = require("./isFunction");
7
- const isNil_1 = require("./isNil");
8
- const isPrimitive_1 = require("./isPrimitive");
9
- const isSymbol_1 = require("./isSymbol");
10
- const isBuffer_1 = require("./isBuffer");
11
- const isRegExp_1 = require("./isRegExp");
12
- const isBasicType = (source) => (0, isNil_1.isNil)(source) || (0, isPrimitive_1.isPrimitive)(source) || (0, isSymbol_1.isSymbol)(source) || (0, isFunction_1.isFunction)(source);
13
- /**
14
- * Return a cloned value
15
- * @param source
16
- * @param stack
17
- */
18
- function deepClone(source, stack = new WeakMap()) {
19
- let dest;
20
- if (isBasicType(source)) {
21
- return source;
22
- }
23
- if ((0, isBuffer_1.isBuffer)(source)) {
24
- const copy = Buffer.alloc(source.length);
25
- source.copy(copy);
26
- return copy;
27
- }
28
- if ((0, isDate_1.isDate)(source)) {
29
- return new Date(source);
30
- }
31
- if ((0, isRegExp_1.isRegExp)(source)) {
32
- return new RegExp(source);
33
- }
34
- const stacked = stack.get(source);
35
- if (stacked) {
36
- // See issue #1619
37
- return stacked;
38
- }
39
- if ((0, isArray_1.isArray)(source)) {
40
- dest = [];
41
- }
42
- else {
43
- dest = {};
44
- stack.set(source, dest);
45
- }
46
- for (const key in source) {
47
- // Use getOwnPropertyDescriptor instead of source[key] to prevent from triggering setter/getter.
48
- const descriptor = Object.getOwnPropertyDescriptor(source, key);
49
- if (descriptor) {
50
- if (!(0, isFunction_1.isFunction)(descriptor.value)) {
51
- dest[key] = deepClone(descriptor.value, stack);
52
- }
53
- else {
54
- Object.defineProperty(dest, key, descriptor);
55
- }
56
- }
57
- }
58
- if (!(0, isArray_1.isArray)(source)) {
59
- const prototype = Reflect.getPrototypeOf(source);
60
- Reflect.setPrototypeOf(dest, prototype);
61
- }
62
- return dest;
63
- }
@@ -1,9 +0,0 @@
1
- export type DeepMergeReducerCB = (collection: any[], value: any, options?: DeepMergeOptions) => any;
2
- export type DeepMergeComparatorCB = (item: any, ref: any) => boolean;
3
- export interface DeepMergeOptions {
4
- reducers?: Record<string, DeepMergeReducerCB>;
5
- parentKey?: string;
6
- cleanUndefinedProps?: boolean;
7
- }
8
- export declare function mergeReducerBuilder(cb: DeepMergeComparatorCB): (collection: any[], value: any, options: DeepMergeOptions) => any[];
9
- export declare function deepMerge<T = any, C = any>(source: T & any, obj: C & any, options?: DeepMergeOptions): (T & C) | undefined | null;
@@ -1,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mergeReducerBuilder = mergeReducerBuilder;
4
- exports.deepMerge = deepMerge;
5
- const createInstance_1 = require("./createInstance");
6
- const isFunction_1 = require("./isFunction");
7
- const isPrimitive_1 = require("./isPrimitive");
8
- const isSymbol_1 = require("./isSymbol");
9
- const objectKeys_1 = require("./objectKeys");
10
- function mergeReducerBuilder(cb) {
11
- return (collection, value, options) => {
12
- const index = collection.findIndex((item) => cb(item, value));
13
- if (index === -1) {
14
- return [...collection, value];
15
- }
16
- collection[index] = deepMerge(collection[index], value, options);
17
- return collection;
18
- };
19
- }
20
- const defaultReducer = mergeReducerBuilder((a, b) => a === b);
21
- function getReducer({ reducers, parentKey }) {
22
- if (!reducers) {
23
- return defaultReducer;
24
- }
25
- if (parentKey && reducers[parentKey]) {
26
- return reducers[parentKey];
27
- }
28
- return reducers["default"] || defaultReducer;
29
- }
30
- function shouldReturnObj(obj, source) {
31
- return (0, isPrimitive_1.isPrimitive)(obj) || (0, isSymbol_1.isSymbol)(obj) || (0, isFunction_1.isFunction)(obj) || source === undefined;
32
- }
33
- function shouldReturnSource(obj, source) {
34
- return obj === undefined || obj === null || (obj === "" && source !== "");
35
- }
36
- function deepMerge(source, obj, options = {}) {
37
- if (shouldReturnSource(obj, source)) {
38
- return source;
39
- }
40
- if (shouldReturnObj(obj, source)) {
41
- return obj;
42
- }
43
- if (Array.isArray(source)) {
44
- const reducer = getReducer(options);
45
- // @ts-ignore
46
- return [].concat(obj).reduce((out, value) => reducer(out, value, options), [...source]);
47
- }
48
- return [...(0, objectKeys_1.objectKeys)(source), ...(0, objectKeys_1.objectKeys)(obj)].reduce((out, key) => {
49
- const src = source && source[key];
50
- const value = deepMerge(src, obj && obj[key], {
51
- ...options,
52
- parentKey: key
53
- });
54
- if (options.cleanUndefinedProps && value === undefined) {
55
- return out;
56
- }
57
- return {
58
- ...out,
59
- [key]: value
60
- };
61
- }, (0, createInstance_1.createInstance)(source));
62
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Return the descriptor for a given class and propertyKey
3
- * @param target
4
- * @param {string} propertyKey
5
- * @returns {PropertyDescriptor}
6
- */
7
- export declare function descriptorOf(target: any, propertyKey: string | symbol): PropertyDescriptor;
8
- export declare function isMethodDescriptor(target: any, propertyKey: string | symbol): any;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.descriptorOf = descriptorOf;
4
- exports.isMethodDescriptor = isMethodDescriptor;
5
- /**
6
- * Return the descriptor for a given class and propertyKey
7
- * @param target
8
- * @param {string} propertyKey
9
- * @returns {PropertyDescriptor}
10
- */
11
- function descriptorOf(target, propertyKey) {
12
- return Object.getOwnPropertyDescriptor((target && target.prototype) || target, propertyKey);
13
- }
14
- function isMethodDescriptor(target, propertyKey) {
15
- return descriptorOf(target, propertyKey)?.value;
16
- }
@@ -1,5 +0,0 @@
1
- export type ValidationIssue = {
2
- field: string;
3
- messages: string[];
4
- };
5
- export declare function formatValidationErrors(value: unknown): unknown;
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatValidationErrors = formatValidationErrors;
4
- function formatValidationErrors(value) {
5
- if (!shouldFormatErrors(value)) {
6
- return value;
7
- }
8
- return collectIssues(value);
9
- }
10
- function shouldFormatErrors(value) {
11
- if (!Array.isArray(value)) {
12
- return false;
13
- }
14
- if (value.length === 0) {
15
- return false;
16
- }
17
- return isValidationError(value[0]);
18
- }
19
- function isValidationError(value) {
20
- if (!value) {
21
- return false;
22
- }
23
- if (typeof value !== "object") {
24
- return false;
25
- }
26
- return hasValidationShape(value);
27
- }
28
- function hasValidationShape(value) {
29
- if ("constraints" in value) {
30
- return true;
31
- }
32
- if ("property" in value) {
33
- return true;
34
- }
35
- if ("children" in value) {
36
- return true;
37
- }
38
- return false;
39
- }
40
- function collectIssues(errors) {
41
- const issues = [];
42
- for (const error of errors) {
43
- appendIssues(error, "", issues);
44
- }
45
- return issues;
46
- }
47
- function appendIssues(error, prefix, issues) {
48
- const field = buildField(prefix, error.property);
49
- appendConstraints(error, field, issues);
50
- appendChildren(error, field, issues);
51
- }
52
- function appendConstraints(error, field, issues) {
53
- const constraints = error.constraints;
54
- if (!constraints) {
55
- return;
56
- }
57
- const messages = Object.values(constraints);
58
- if (messages.length === 0) {
59
- return;
60
- }
61
- issues.push({ field, messages });
62
- }
63
- function appendChildren(error, prefix, issues) {
64
- const children = error.children;
65
- if (!children || children.length === 0) {
66
- return;
67
- }
68
- for (const child of children) {
69
- appendIssues(child, prefix, issues);
70
- }
71
- }
72
- function buildField(prefix, property) {
73
- if (!property) {
74
- return prefix || "body";
75
- }
76
- if (!prefix) {
77
- return property;
78
- }
79
- return `${prefix}.${property}`;
80
- }
@@ -1 +0,0 @@
1
- export declare function getClassOrSymbol(target: any): any;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getClassOrSymbol = getClassOrSymbol;
4
- const classOf_1 = require("./classOf");
5
- const isClass_1 = require("./isClass");
6
- function getClassOrSymbol(target) {
7
- return (0, isClass_1.isClass)(target) ? (0, classOf_1.classOf)(target) : target;
8
- }
@@ -1 +0,0 @@
1
- export declare function getConstructorArgNames(target: any): string[];
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getConstructorArgNames = getConstructorArgNames;
4
- const toStringConstructor_1 = require("./toStringConstructor");
5
- function getConstructorArgNames(target) {
6
- return (0, toStringConstructor_1.toStringConstructor)(target)
7
- .split("constructor(")[1]
8
- .split(")")[0]
9
- .split(", ")
10
- .filter(Boolean)
11
- .map((s) => s.trim());
12
- }
@@ -1 +0,0 @@
1
- export declare function getMethodArgTypes(target: any, methodName: string): any;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMethodArgTypes = getMethodArgTypes;
4
- function getMethodArgTypes(target, methodName) {
5
- if (!target[methodName]) {
6
- throw new Error(`Method ${methodName} not found`);
7
- }
8
- return Reflect.getMetadata('design:paramtypes', target, methodName) || [];
9
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Get value from scope
3
- * @param {string} expression
4
- * @param scope
5
- * @returns {any}
6
- */
7
- export declare function getValue<T = any>(scope: any, expression: string | undefined): T | undefined;
8
- /**
9
- * Get value from scope
10
- * @param {string} expression
11
- * @param scope
12
- * @param defaultValue
13
- * @param separator
14
- * @returns {any}
15
- */
16
- export declare function getValue<T = any>(scope: any, expression: string | undefined, defaultValue: T, separator?: string): T;
17
- /**
18
- * Get value from scope
19
- * @param {string} expression
20
- * @param scope
21
- * @returns {any}
22
- */
23
- export declare function getValue<T = any>(expression: string | undefined, scope: any): T | undefined;
24
- /**
25
- * Get value from scope
26
- * @param {string} expression
27
- * @param scope
28
- * @param defaultValue
29
- * @param separator
30
- * @returns {any}
31
- */
32
- export declare function getValue<T = any>(expression: string | undefined, scope: any, defaultValue: T, separator?: string): T;
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getValue = getValue;
4
- const isFunction_1 = require("./isFunction");
5
- const isObject_1 = require("./isObject");
6
- const isString_1 = require("./isString");
7
- const mapOptions = (args) => {
8
- const [expression, scope, defaultValue, separator = "."] = args;
9
- if ((0, isObject_1.isObject)(scope) || (0, isString_1.isString)(expression)) {
10
- return {
11
- expression,
12
- scope,
13
- defaultValue,
14
- separator
15
- };
16
- }
17
- return {
18
- expression: scope,
19
- scope: expression,
20
- defaultValue,
21
- separator
22
- };
23
- };
24
- function getValue(...args) {
25
- const options = mapOptions(args);
26
- let scope = options.scope;
27
- const { expression, defaultValue, separator } = options;
28
- if (!expression) {
29
- return scope;
30
- }
31
- if (!scope) {
32
- return defaultValue;
33
- }
34
- const keys = expression.split(separator);
35
- const getValue = (key) => {
36
- if (scope) {
37
- if (scope[key] !== undefined || ((0, isObject_1.isObject)(scope) && key in scope)) {
38
- return scope[key];
39
- }
40
- if ((0, isFunction_1.isFunction)(scope.get)) {
41
- return scope.get(key);
42
- }
43
- }
44
- };
45
- while ((scope = getValue(keys.shift())) && keys.length) { }
46
- return scope === undefined ? defaultValue : scope;
47
- }
@@ -1 +0,0 @@
1
- export declare function hasJsonMethod(obj: any): boolean;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasJsonMethod = hasJsonMethod;
4
- function hasJsonMethod(obj) {
5
- return obj && typeof obj.toJSON === "function";
6
- }
@@ -1,15 +0,0 @@
1
- export * from './isObject';
2
- export * from './classOf';
3
- export * from './isString';
4
- export * from './isFunction';
5
- export * from './getConstructorArgNames';
6
- export * from './getValue';
7
- export * from './getMethodArgTypes';
8
- export * from './getClassOrSymbol';
9
- export * from './isRequestScope';
10
- export * from './nameOf';
11
- export * from './isPrimitiveType';
12
- export * from './setValue';
13
- export * from './isClass';
14
- export * from './methodsOf';
15
- export * from './formatValidationErrors';
@@ -1,31 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./isObject"), exports);
18
- __exportStar(require("./classOf"), exports);
19
- __exportStar(require("./isString"), exports);
20
- __exportStar(require("./isFunction"), exports);
21
- __exportStar(require("./getConstructorArgNames"), exports);
22
- __exportStar(require("./getValue"), exports);
23
- __exportStar(require("./getMethodArgTypes"), exports);
24
- __exportStar(require("./getClassOrSymbol"), exports);
25
- __exportStar(require("./isRequestScope"), exports);
26
- __exportStar(require("./nameOf"), exports);
27
- __exportStar(require("./isPrimitiveType"), exports);
28
- __exportStar(require("./setValue"), exports);
29
- __exportStar(require("./isClass"), exports);
30
- __exportStar(require("./methodsOf"), exports);
31
- __exportStar(require("./formatValidationErrors"), exports);
@@ -1,13 +0,0 @@
1
- /**
2
- * Return true if value is an array
3
- * @param target
4
- * @returns {boolean}
5
- */
6
- export declare function isArray<T = any>(target: unknown): target is T[];
7
- /**
8
- * Return true if the clazz is an array.
9
- * @param target
10
- * @returns {boolean}
11
- * @ignore
12
- */
13
- export declare function isArrayOrArrayClass<T = any>(target: unknown): target is T[];
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isArray = isArray;
4
- exports.isArrayOrArrayClass = isArrayOrArrayClass;
5
- /**
6
- * Return true if value is an array
7
- * @param target
8
- * @returns {boolean}
9
- */
10
- function isArray(target) {
11
- return Array.isArray(target);
12
- }
13
- /**
14
- * Return true if the clazz is an array.
15
- * @param target
16
- * @returns {boolean}
17
- * @ignore
18
- */
19
- function isArrayOrArrayClass(target) {
20
- return target === Array || isArray(target);
21
- }
@@ -1 +0,0 @@
1
- export declare function isArrowFn(target: any): target is Function;
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isArrowFn = isArrowFn;
4
- const isFunction_1 = require("./isFunction");
5
- function isArrowFn(target) {
6
- return target && (0, isFunction_1.isFunction)(target) && !target.prototype;
7
- }
@@ -1,7 +0,0 @@
1
- /**
2
- *
3
- * @param target
4
- * @returns {boolean}
5
- */
6
- export declare function isBoolean(target: any): target is boolean;
7
- export declare function isBooleanOrBooleanClass(target: any): target is boolean;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isBoolean = isBoolean;
4
- exports.isBooleanOrBooleanClass = isBooleanOrBooleanClass;
5
- /**
6
- *
7
- * @param target
8
- * @returns {boolean}
9
- */
10
- function isBoolean(target) {
11
- return typeof target === "boolean" || target instanceof Boolean || target === Boolean;
12
- }
13
- function isBooleanOrBooleanClass(target) {
14
- return typeof target === "boolean" || target instanceof Boolean || target === Boolean;
15
- }