@oxog/vld 1.5.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/README.md +558 -517
  3. package/dist/chunks/bigint-ZKkWLdmi.js +1628 -0
  4. package/dist/chunks/bigint-ZKkWLdmi.js.map +1 -0
  5. package/dist/{coercion/string.js → chunks/date-7Iz2BGsL.js} +271 -5
  6. package/dist/chunks/date-7Iz2BGsL.js.map +1 -0
  7. package/dist/chunks/index-BoV-4S1F.js +894 -0
  8. package/dist/chunks/index-BoV-4S1F.js.map +1 -0
  9. package/dist/chunks/index-eWXdjyyy.js +426 -0
  10. package/dist/chunks/index-eWXdjyyy.js.map +1 -0
  11. package/dist/chunks/json-nIhyRPOU.js +1934 -0
  12. package/dist/chunks/json-nIhyRPOU.js.map +1 -0
  13. package/dist/{validators/unknown.js → chunks/unknown-CjSRcELI.js} +6 -3
  14. package/dist/chunks/unknown-CjSRcELI.js.map +1 -0
  15. package/dist/cjs/errors.cjs +387 -0
  16. package/dist/cjs/errors.cjs.map +1 -0
  17. package/dist/cjs/index.cjs +9815 -0
  18. package/dist/cjs/index.cjs.map +1 -0
  19. package/dist/cjs/locales/index.cjs +2877 -0
  20. package/dist/cjs/locales/index.cjs.map +1 -0
  21. package/dist/cjs/locales/lazy.cjs +3169 -0
  22. package/dist/cjs/locales/lazy.cjs.map +1 -0
  23. package/dist/cjs/mini.cjs +7161 -0
  24. package/dist/cjs/mini.cjs.map +1 -0
  25. package/dist/codecs/index.js +4 -275
  26. package/dist/codecs/index.js.map +1 -1
  27. package/dist/coercion/index.d.ts +11 -0
  28. package/dist/coercion/index.d.ts.map +1 -0
  29. package/dist/coercion/{bigint.js → index.js} +7 -4
  30. package/dist/coercion/index.js.map +1 -0
  31. package/dist/compat/emitter.js +6 -4
  32. package/dist/compat/emitter.js.map +1 -1
  33. package/dist/compat/result.js +21 -19
  34. package/dist/compat/result.js.map +1 -1
  35. package/dist/errors.js +13 -10
  36. package/dist/errors.js.map +1 -1
  37. package/dist/index.js +225 -126
  38. package/dist/index.js.map +1 -1
  39. package/dist/kernel.js +10 -7
  40. package/dist/kernel.js.map +1 -1
  41. package/dist/locales/af.js +4 -2
  42. package/dist/locales/af.js.map +1 -1
  43. package/dist/locales/ar.js +4 -2
  44. package/dist/locales/ar.js.map +1 -1
  45. package/dist/locales/bn.js +4 -2
  46. package/dist/locales/bn.js.map +1 -1
  47. package/dist/locales/da.js +4 -2
  48. package/dist/locales/da.js.map +1 -1
  49. package/dist/locales/de.js +4 -2
  50. package/dist/locales/de.js.map +1 -1
  51. package/dist/locales/en.js +4 -2
  52. package/dist/locales/en.js.map +1 -1
  53. package/dist/locales/es-MX.js +4 -2
  54. package/dist/locales/es-MX.js.map +1 -1
  55. package/dist/locales/es.js +4 -2
  56. package/dist/locales/es.js.map +1 -1
  57. package/dist/locales/fi.js +4 -2
  58. package/dist/locales/fi.js.map +1 -1
  59. package/dist/locales/fr.js +4 -2
  60. package/dist/locales/fr.js.map +1 -1
  61. package/dist/locales/hi.js +4 -2
  62. package/dist/locales/hi.js.map +1 -1
  63. package/dist/locales/id.js +4 -2
  64. package/dist/locales/id.js.map +1 -1
  65. package/dist/locales/index.js +3 -91
  66. package/dist/locales/index.js.map +1 -1
  67. package/dist/locales/it.js +4 -2
  68. package/dist/locales/it.js.map +1 -1
  69. package/dist/locales/ja.js +4 -2
  70. package/dist/locales/ja.js.map +1 -1
  71. package/dist/locales/ko.js +4 -2
  72. package/dist/locales/ko.js.map +1 -1
  73. package/dist/locales/lazy.d.ts +111 -0
  74. package/dist/locales/lazy.d.ts.map +1 -0
  75. package/dist/locales/lazy.js +220 -0
  76. package/dist/locales/lazy.js.map +1 -0
  77. package/dist/locales/nl.js +4 -2
  78. package/dist/locales/nl.js.map +1 -1
  79. package/dist/locales/no.js +4 -2
  80. package/dist/locales/no.js.map +1 -1
  81. package/dist/locales/pl.js +4 -2
  82. package/dist/locales/pl.js.map +1 -1
  83. package/dist/locales/pt-BR.js +4 -2
  84. package/dist/locales/pt-BR.js.map +1 -1
  85. package/dist/locales/pt.js +4 -2
  86. package/dist/locales/pt.js.map +1 -1
  87. package/dist/locales/ru.js +4 -2
  88. package/dist/locales/ru.js.map +1 -1
  89. package/dist/locales/sv.js +4 -2
  90. package/dist/locales/sv.js.map +1 -1
  91. package/dist/locales/sw.js +4 -2
  92. package/dist/locales/sw.js.map +1 -1
  93. package/dist/locales/th.js +4 -2
  94. package/dist/locales/th.js.map +1 -1
  95. package/dist/locales/tr.js +4 -2
  96. package/dist/locales/tr.js.map +1 -1
  97. package/dist/locales/vi.js +4 -2
  98. package/dist/locales/vi.js.map +1 -1
  99. package/dist/locales/zh.js +4 -2
  100. package/dist/locales/zh.js.map +1 -1
  101. package/dist/mini.d.ts +182 -0
  102. package/dist/mini.d.ts.map +1 -0
  103. package/dist/mini.js +132 -0
  104. package/dist/mini.js.map +1 -0
  105. package/dist/pigment.js +8 -7
  106. package/dist/pigment.js.map +1 -1
  107. package/dist/validators/index.js +5 -45
  108. package/dist/validators/index.js.map +1 -1
  109. package/package.json +69 -11
  110. package/dist/cli/benchmark.d.ts +0 -15
  111. package/dist/cli/benchmark.d.ts.map +0 -1
  112. package/dist/cli/benchmark.js +0 -248
  113. package/dist/cli/benchmark.js.map +0 -1
  114. package/dist/cli/bin.js +0 -35
  115. package/dist/cli/bin.js.map +0 -1
  116. package/dist/cli/commands/benchmark.js +0 -204
  117. package/dist/cli/commands/benchmark.js.map +0 -1
  118. package/dist/cli/commands/validate.js +0 -157
  119. package/dist/cli/commands/validate.js.map +0 -1
  120. package/dist/cli/generate.d.ts +0 -14
  121. package/dist/cli/generate.d.ts.map +0 -1
  122. package/dist/cli/generate.js +0 -233
  123. package/dist/cli/generate.js.map +0 -1
  124. package/dist/cli/index.js +0 -182
  125. package/dist/cli/index.js.map +0 -1
  126. package/dist/cli/validate.d.ts +0 -15
  127. package/dist/cli/validate.d.ts.map +0 -1
  128. package/dist/cli/validate.js +0 -162
  129. package/dist/cli/validate.js.map +0 -1
  130. package/dist/coercion/bigint.js.map +0 -1
  131. package/dist/coercion/boolean.js +0 -59
  132. package/dist/coercion/boolean.js.map +0 -1
  133. package/dist/coercion/date.js +0 -52
  134. package/dist/coercion/date.js.map +0 -1
  135. package/dist/coercion/number.js +0 -160
  136. package/dist/coercion/number.js.map +0 -1
  137. package/dist/coercion/string.js.map +0 -1
  138. package/dist/compat/index.js +0 -14
  139. package/dist/compat/index.js.map +0 -1
  140. package/dist/events.js +0 -8
  141. package/dist/events.js.map +0 -1
  142. package/dist/guards.d.ts +0 -143
  143. package/dist/guards.d.ts.map +0 -1
  144. package/dist/guards.js +0 -238
  145. package/dist/guards.js.map +0 -1
  146. package/dist/index-new.d.ts.map +0 -1
  147. package/dist/locales/backup-en.js +0 -105
  148. package/dist/locales/backup-en.js.map +0 -1
  149. package/dist/locales/types.js +0 -2
  150. package/dist/locales/types.js.map +0 -1
  151. package/dist/locales.d.ts +0 -54
  152. package/dist/locales.d.ts.map +0 -1
  153. package/dist/locales.js +0 -732
  154. package/dist/locales.js.map +0 -1
  155. package/dist/logger.js +0 -184
  156. package/dist/logger.js.map +0 -1
  157. package/dist/plugins/codecs.d.ts +0 -17
  158. package/dist/plugins/codecs.d.ts.map +0 -1
  159. package/dist/plugins/codecs.js +0 -29
  160. package/dist/plugins/codecs.js.map +0 -1
  161. package/dist/plugins/coercion.d.ts +0 -13
  162. package/dist/plugins/coercion.d.ts.map +0 -1
  163. package/dist/plugins/coercion.js +0 -34
  164. package/dist/plugins/coercion.js.map +0 -1
  165. package/dist/plugins/core-validators.d.ts +0 -13
  166. package/dist/plugins/core-validators.d.ts.map +0 -1
  167. package/dist/plugins/core-validators.js +0 -96
  168. package/dist/plugins/core-validators.js.map +0 -1
  169. package/dist/plugins/index.js +0 -8
  170. package/dist/plugins/index.js.map +0 -1
  171. package/dist/plugins/kernel.d.ts +0 -29
  172. package/dist/plugins/kernel.d.ts.map +0 -1
  173. package/dist/plugins/kernel.js +0 -486
  174. package/dist/plugins/kernel.js.map +0 -1
  175. package/dist/plugins/types.js +0 -8
  176. package/dist/plugins/types.js.map +0 -1
  177. package/dist/style.d.ts +0 -123
  178. package/dist/style.d.ts.map +0 -1
  179. package/dist/style.js +0 -369
  180. package/dist/style.js.map +0 -1
  181. package/dist/utils/codec-utils.js +0 -229
  182. package/dist/utils/codec-utils.js.map +0 -1
  183. package/dist/utils/deep-merge.js +0 -76
  184. package/dist/utils/deep-merge.js.map +0 -1
  185. package/dist/utils/ip-validation.js +0 -98
  186. package/dist/utils/ip-validation.js.map +0 -1
  187. package/dist/utils/security.js +0 -61
  188. package/dist/utils/security.js.map +0 -1
  189. package/dist/validators/any.js +0 -25
  190. package/dist/validators/any.js.map +0 -1
  191. package/dist/validators/array.js +0 -190
  192. package/dist/validators/array.js.map +0 -1
  193. package/dist/validators/base.js +0 -499
  194. package/dist/validators/base.js.map +0 -1
  195. package/dist/validators/base64.js +0 -65
  196. package/dist/validators/base64.js.map +0 -1
  197. package/dist/validators/bigint.js +0 -142
  198. package/dist/validators/bigint.js.map +0 -1
  199. package/dist/validators/boolean.js +0 -114
  200. package/dist/validators/boolean.js.map +0 -1
  201. package/dist/validators/codec.js +0 -182
  202. package/dist/validators/codec.js.map +0 -1
  203. package/dist/validators/custom.js +0 -50
  204. package/dist/validators/custom.js.map +0 -1
  205. package/dist/validators/date.js +0 -227
  206. package/dist/validators/date.js.map +0 -1
  207. package/dist/validators/discriminated-union.js +0 -98
  208. package/dist/validators/discriminated-union.js.map +0 -1
  209. package/dist/validators/enum.js +0 -82
  210. package/dist/validators/enum.js.map +0 -1
  211. package/dist/validators/file.js +0 -114
  212. package/dist/validators/file.js.map +0 -1
  213. package/dist/validators/function.js +0 -45
  214. package/dist/validators/function.js.map +0 -1
  215. package/dist/validators/hex.js +0 -62
  216. package/dist/validators/hex.js.map +0 -1
  217. package/dist/validators/intersection.js +0 -64
  218. package/dist/validators/intersection.js.map +0 -1
  219. package/dist/validators/json.js +0 -64
  220. package/dist/validators/json.js.map +0 -1
  221. package/dist/validators/lazy.js +0 -42
  222. package/dist/validators/lazy.js.map +0 -1
  223. package/dist/validators/literal.js +0 -45
  224. package/dist/validators/literal.js.map +0 -1
  225. package/dist/validators/map.js +0 -54
  226. package/dist/validators/map.js.map +0 -1
  227. package/dist/validators/nan.js +0 -32
  228. package/dist/validators/nan.js.map +0 -1
  229. package/dist/validators/never.js +0 -29
  230. package/dist/validators/never.js.map +0 -1
  231. package/dist/validators/null.js +0 -31
  232. package/dist/validators/null.js.map +0 -1
  233. package/dist/validators/number.js +0 -225
  234. package/dist/validators/number.js.map +0 -1
  235. package/dist/validators/object-optimized.d.ts +0 -23
  236. package/dist/validators/object-optimized.d.ts.map +0 -1
  237. package/dist/validators/object-optimized.js +0 -179
  238. package/dist/validators/object-optimized.js.map +0 -1
  239. package/dist/validators/object-ultra.d.ts +0 -34
  240. package/dist/validators/object-ultra.d.ts.map +0 -1
  241. package/dist/validators/object-ultra.js +0 -175
  242. package/dist/validators/object-ultra.js.map +0 -1
  243. package/dist/validators/object.js +0 -458
  244. package/dist/validators/object.js.map +0 -1
  245. package/dist/validators/record.js +0 -128
  246. package/dist/validators/record.js.map +0 -1
  247. package/dist/validators/set.js +0 -51
  248. package/dist/validators/set.js.map +0 -1
  249. package/dist/validators/string-bool.js +0 -127
  250. package/dist/validators/string-bool.js.map +0 -1
  251. package/dist/validators/string-formats.js +0 -120
  252. package/dist/validators/string-formats.js.map +0 -1
  253. package/dist/validators/string-ultra.d.ts +0 -49
  254. package/dist/validators/string-ultra.d.ts.map +0 -1
  255. package/dist/validators/string-ultra.js +0 -217
  256. package/dist/validators/string-ultra.js.map +0 -1
  257. package/dist/validators/string.js +0 -253
  258. package/dist/validators/string.js.map +0 -1
  259. package/dist/validators/symbol.js +0 -42
  260. package/dist/validators/symbol.js.map +0 -1
  261. package/dist/validators/template-literal.js +0 -102
  262. package/dist/validators/template-literal.js.map +0 -1
  263. package/dist/validators/tuple.js +0 -55
  264. package/dist/validators/tuple.js.map +0 -1
  265. package/dist/validators/uint8array.js +0 -98
  266. package/dist/validators/uint8array.js.map +0 -1
  267. package/dist/validators/undefined.js +0 -31
  268. package/dist/validators/undefined.js.map +0 -1
  269. package/dist/validators/union-optimized.d.ts +0 -15
  270. package/dist/validators/union-optimized.d.ts.map +0 -1
  271. package/dist/validators/union-optimized.js +0 -92
  272. package/dist/validators/union-optimized.js.map +0 -1
  273. package/dist/validators/union.js +0 -126
  274. package/dist/validators/union.js.map +0 -1
  275. package/dist/validators/unknown.js.map +0 -1
  276. package/dist/validators/void.js +0 -35
  277. package/dist/validators/void.js.map +0 -1
  278. package/dist/validators/xor.js +0 -64
  279. package/dist/validators/xor.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"core-validators.js","sourceRoot":"","sources":["../../src/plugins/core-validators.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Core Validators Plugin\n *\n * Bu plugin tüm temel validator'ları içerir.\n * VLD'nin varsayılan olarak yüklediği ana plugin'dir.\n */\n\nimport type { ValidatorPlugin } from './types.js';\nimport { VldString } from '../validators/string.js';\nimport { VldNumber } from '../validators/number.js';\nimport { VldBoolean } from '../validators/boolean.js';\nimport { VldDate } from '../validators/date.js';\nimport { VldBigInt } from '../validators/bigint.js';\nimport { VldSymbol } from '../validators/symbol.js';\nimport { VldArray } from '../validators/array.js';\nimport { VldObject } from '../validators/object.js';\nimport { VldTuple } from '../validators/tuple.js';\nimport { VldRecord } from '../validators/record.js';\nimport { VldSet } from '../validators/set.js';\nimport { VldMap } from '../validators/map.js';\nimport { VldUnion } from '../validators/union.js';\nimport { VldIntersection } from '../validators/intersection.js';\nimport { VldLiteral } from '../validators/literal.js';\nimport { VldEnum } from '../validators/enum.js';\nimport { VldAny } from '../validators/any.js';\nimport { VldUnknown } from '../validators/unknown.js';\nimport { VldVoid } from '../validators/void.js';\nimport { VldNever } from '../validators/never.js';\nimport { VldNull } from '../validators/null.js';\nimport { VldUndefined } from '../validators/undefined.js';\nimport { VldNan } from '../validators/nan.js';\nimport { VldLazy } from '../validators/lazy.js';\nimport { VldStringBool } from '../validators/string-bool.js';\n\n/**\n * Core Validators Plugin\n */\nexport const coreValidatorsPlugin: ValidatorPlugin = {\n name: 'vld-core-validators',\n version: '2.0.0',\n description: 'Core validator types for VLD',\n\n validators: {\n // Primitive types\n string: () => VldString.create(),\n number: () => VldNumber.create(),\n int: () => VldNumber.create().int(),\n boolean: () => VldBoolean.create(),\n date: () => VldDate.create(),\n bigint: () => VldBigInt.create(),\n symbol: () => VldSymbol.create(),\n stringbool: (options?: { truthy?: readonly string[]; falsy?: readonly string[]; caseSensitive?: boolean }) =>\n VldStringBool.create(options as any),\n\n // Complex types\n array: (item: any) => VldArray.create(item),\n object: (shape: any) => VldObject.create(shape),\n tuple: (...items: any[]) => VldTuple.create(...items),\n record: (value: any) => VldRecord.create(value),\n set: (item: any) => VldSet.create(item),\n map: (key: any, value: any) => VldMap.create(key, value),\n\n // Union and intersection\n union: (...validators: any[]) => VldUnion.create(...validators),\n intersection: (first: any, second: any) => VldIntersection.create(first, second),\n\n // Literal and enum\n literal: (value: any) => VldLiteral.create(value),\n enum: (values: readonly [string, ...string[]]) => VldEnum.create(values),\n\n // Special types\n any: () => VldAny.create(),\n unknown: () => VldUnknown.create(),\n void: () => VldVoid.create(),\n never: () => VldNever.create() as any, // Type assertion needed for never type\n null: () => VldNull.create(),\n undefined: () => VldUndefined.create(),\n nan: () => VldNan.create(),\n\n // Lazy (recursive schemas)\n lazy: (schemaGetter: () => any) => VldLazy.create(schemaGetter)\n },\n\n install(kernel) {\n if (kernel.getContext().debug) {\n console.log('[VLD] Core validators plugin installed');\n }\n\n // Parse event'lerini dinle (debug mode)\n kernel.on('vld:parse:start', ({ schema }) => {\n if (kernel.getContext().debug) {\n console.log(`[VLD] Parsing: ${schema.constructor.name}`);\n }\n });\n\n kernel.on('vld:parse:success', ({ schema, duration }) => {\n if (kernel.getContext().debug) {\n console.log(`[VLD] Parse success: ${schema.constructor.name} (${duration.toFixed(2)}ms)`);\n }\n });\n\n kernel.on('vld:parse:error', ({ schema, error, duration }) => {\n if (kernel.getContext().debug) {\n console.log(`[VLD] Parse error: ${schema.constructor.name} (${duration.toFixed(2)}ms) - ${error.message}`);\n }\n });\n }\n};\n\nexport default coreValidatorsPlugin;\n"]}
@@ -1,8 +0,0 @@
1
- /**
2
- * VLD Plugins Module
3
- *
4
- * This module exports all plugin-related functionality.
5
- */
6
- // Re-export kernel functionality
7
- export { createVldKernel, definePlugin, getVldKernel, resetVldKernel, usePlugin } from '../kernel.js';
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,iCAAiC;AACjC,OAAO,EACL,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,SAAS,EACV,MAAM,WAAW,CAAC","sourcesContent":["/**\r\n * VLD Plugins Module\r\n *\r\n * This module exports all plugin-related functionality.\r\n */\r\n\r\n// Export types\r\nexport type {\r\n VldContext,\r\n VldPlugin,\r\n VldKernelInstance,\r\n VldKernelOptions,\r\n ValidatorFactory,\r\n TransformFactory,\r\n CodecFactory,\r\n HookContext,\r\n PluginBuilder,\r\n PluginMeta,\r\n PluginHooks\r\n} from './types';\r\n\r\n// Re-export kernel functionality\r\nexport {\r\n createVldKernel,\r\n definePlugin,\r\n getVldKernel,\r\n resetVldKernel,\r\n usePlugin\r\n} from '../kernel';\r\n"]}
@@ -1,29 +0,0 @@
1
- /**
2
- * VLD Kernel Implementation
3
- *
4
- * Bu modül VLD plugin sistemi için merkezi yönetim noktasını sağlar.
5
- * @oxog/plugin paketi ile uyumlu micro-kernel mimarisi kullanır.
6
- */
7
- import type { VldKernel, VldKernelOptions } from './types.js';
8
- /**
9
- * Yeni VLD Kernel oluşturur
10
- */
11
- export declare function createVldKernel(options?: VldKernelOptions): VldKernel;
12
- /**
13
- * Global kernel'i alır veya oluşturur
14
- */
15
- export declare function getGlobalKernel(): VldKernel;
16
- /**
17
- * Global kernel'i ayarlar
18
- */
19
- export declare function setGlobalKernel(kernel: VldKernel): void;
20
- /**
21
- * Global kernel'i sıfırlar
22
- */
23
- export declare function resetGlobalKernel(): void;
24
- import type { PluginBuilder } from './types.js';
25
- /**
26
- * Plugin builder oluşturur
27
- */
28
- export declare function definePlugin(): PluginBuilder;
29
- //# sourceMappingURL=kernel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/plugins/kernel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAOjB,MAAM,YAAY,CAAC;AAwcpB;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAErE;AAQD;;GAEG;AACH,wBAAgB,eAAe,IAAI,SAAS,CAK3C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAMD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;GAEG;AACH,wBAAgB,YAAY,IAAI,aAAa,CA6F5C"}
@@ -1,486 +0,0 @@
1
- /**
2
- * VLD Kernel Implementation
3
- *
4
- * Bu modül VLD plugin sistemi için merkezi yönetim noktasını sağlar.
5
- * @oxog/plugin paketi ile uyumlu micro-kernel mimarisi kullanır.
6
- */
7
- import { emitVldEvent, enableEvents } from '../events.js';
8
- import { createEmitter } from '../compat/emitter.js';
9
- // ============================================================================
10
- // Kernel Implementation
11
- // ============================================================================
12
- /**
13
- * VLD Kernel - Plugin yönetimi için merkezi sınıf
14
- */
15
- class VldKernelImpl {
16
- constructor(options = {}) {
17
- this.plugins = new Map();
18
- this.validators = new Map();
19
- this.transforms = new Map();
20
- this.codecs = new Map();
21
- this.refinements = new Map();
22
- this.started = false;
23
- this.options = {
24
- locale: options.locale || 'en',
25
- strict: options.strict || false,
26
- debug: options.debug || false,
27
- errorStrategy: options.errorStrategy || 'throw',
28
- maxPlugins: options.maxPlugins || 100
29
- };
30
- this.context = {
31
- locale: this.options.locale,
32
- strict: this.options.strict,
33
- debug: this.options.debug
34
- };
35
- this._events = createEmitter();
36
- // Debug mode ise event'leri etkinleştir
37
- if (this.options.debug) {
38
- enableEvents();
39
- }
40
- }
41
- // ============================================================================
42
- // Context
43
- // ============================================================================
44
- getContext() {
45
- return { ...this.context };
46
- }
47
- setContext(context) {
48
- const oldLocale = this.context.locale;
49
- this.context = { ...this.context, ...context };
50
- // Locale değiştiyse event emit et
51
- if (context.locale && context.locale !== oldLocale) {
52
- this.emit('vld:locale:changed', {
53
- from: oldLocale,
54
- to: context.locale
55
- });
56
- }
57
- }
58
- // ============================================================================
59
- // Plugin Management
60
- // ============================================================================
61
- use(plugin) {
62
- // Plugin sayısı kontrolü
63
- if (this.plugins.size >= (this.options.maxPlugins || 100)) {
64
- throw new Error(`Maximum plugin count (${this.options.maxPlugins}) reached`);
65
- }
66
- // Duplicate kontrolü
67
- if (this.plugins.has(plugin.name)) {
68
- throw new Error(`Plugin "${plugin.name}" is already registered`);
69
- }
70
- // Bağımlılık kontrolü
71
- if (plugin.dependencies) {
72
- for (const dep of plugin.dependencies) {
73
- if (!this.plugins.has(dep)) {
74
- throw new Error(`Plugin "${plugin.name}" requires "${dep}" which is not installed`);
75
- }
76
- }
77
- }
78
- // Plugin'i kaydet
79
- this.plugins.set(plugin.name, plugin);
80
- // Validator'ları kaydet
81
- if (plugin.validators) {
82
- for (const [name, factory] of Object.entries(plugin.validators)) {
83
- this.validators.set(name, factory);
84
- }
85
- }
86
- // Transform'ları kaydet
87
- if (plugin.transforms) {
88
- for (const [name, factory] of Object.entries(plugin.transforms)) {
89
- this.transforms.set(name, factory);
90
- }
91
- }
92
- // Codec'leri kaydet
93
- if (plugin.codecs) {
94
- for (const [name, factory] of Object.entries(plugin.codecs)) {
95
- this.codecs.set(name, factory);
96
- }
97
- }
98
- // Refinement'ları kaydet
99
- if (plugin.refinements) {
100
- for (const [name, factory] of Object.entries(plugin.refinements)) {
101
- this.refinements.set(name, factory);
102
- }
103
- }
104
- // Install hook'unu çağır
105
- if (plugin.install) {
106
- const result = plugin.install(this);
107
- if (result instanceof Promise) {
108
- result.catch((error) => {
109
- console.error(`Error installing plugin "${plugin.name}":`, error);
110
- });
111
- }
112
- }
113
- // Event emit et
114
- this.emit('vld:plugin:registered', {
115
- name: plugin.name,
116
- version: plugin.version
117
- });
118
- if (this.context.debug) {
119
- console.log(`[VLD] Plugin registered: ${plugin.name}@${plugin.version}`);
120
- }
121
- return this;
122
- }
123
- remove(pluginName) {
124
- const plugin = this.plugins.get(pluginName);
125
- if (!plugin) {
126
- return false;
127
- }
128
- // Bağımlı plugin kontrolü
129
- for (const [name, p] of this.plugins) {
130
- if (p.dependencies?.includes(pluginName)) {
131
- throw new Error(`Cannot remove plugin "${pluginName}" because "${name}" depends on it`);
132
- }
133
- }
134
- // Uninstall hook'unu çağır
135
- if (plugin.uninstall) {
136
- const result = plugin.uninstall(this);
137
- if (result instanceof Promise) {
138
- result.catch((error) => {
139
- console.error(`Error uninstalling plugin "${pluginName}":`, error);
140
- });
141
- }
142
- }
143
- // Plugin kayıtlarını temizle
144
- if (plugin.validators) {
145
- for (const name of Object.keys(plugin.validators)) {
146
- this.validators.delete(name);
147
- }
148
- }
149
- if (plugin.transforms) {
150
- for (const name of Object.keys(plugin.transforms)) {
151
- this.transforms.delete(name);
152
- }
153
- }
154
- if (plugin.codecs) {
155
- for (const name of Object.keys(plugin.codecs)) {
156
- this.codecs.delete(name);
157
- }
158
- }
159
- if (plugin.refinements) {
160
- for (const name of Object.keys(plugin.refinements)) {
161
- this.refinements.delete(name);
162
- }
163
- }
164
- this.plugins.delete(pluginName);
165
- if (this.context.debug) {
166
- console.log(`[VLD] Plugin removed: ${pluginName}`);
167
- }
168
- return true;
169
- }
170
- hasPlugin(pluginName) {
171
- return this.plugins.has(pluginName);
172
- }
173
- listPlugins() {
174
- return Array.from(this.plugins.keys());
175
- }
176
- getPlugin(name) {
177
- return this.plugins.get(name);
178
- }
179
- // ============================================================================
180
- // Validators
181
- // ============================================================================
182
- registerValidator(name, factory) {
183
- if (this.validators.has(name)) {
184
- throw new Error(`Validator "${name}" is already registered`);
185
- }
186
- this.validators.set(name, factory);
187
- return this;
188
- }
189
- getValidator(name) {
190
- return this.validators.get(name);
191
- }
192
- listValidators() {
193
- return Array.from(this.validators.keys());
194
- }
195
- // ============================================================================
196
- // Transforms
197
- // ============================================================================
198
- registerTransform(name, factory) {
199
- if (this.transforms.has(name)) {
200
- throw new Error(`Transform "${name}" is already registered`);
201
- }
202
- this.transforms.set(name, factory);
203
- return this;
204
- }
205
- getTransform(name) {
206
- return this.transforms.get(name);
207
- }
208
- listTransforms() {
209
- return Array.from(this.transforms.keys());
210
- }
211
- // ============================================================================
212
- // Codecs
213
- // ============================================================================
214
- registerCodec(name, factory) {
215
- if (this.codecs.has(name)) {
216
- throw new Error(`Codec "${name}" is already registered`);
217
- }
218
- this.codecs.set(name, factory);
219
- return this;
220
- }
221
- getCodec(name) {
222
- return this.codecs.get(name);
223
- }
224
- listCodecs() {
225
- return Array.from(this.codecs.keys());
226
- }
227
- // ============================================================================
228
- // Refinements
229
- // ============================================================================
230
- registerRefinement(name, factory) {
231
- if (this.refinements.has(name)) {
232
- throw new Error(`Refinement "${name}" is already registered`);
233
- }
234
- this.refinements.set(name, factory);
235
- return this;
236
- }
237
- getRefinement(name) {
238
- return this.refinements.get(name);
239
- }
240
- listRefinements() {
241
- return Array.from(this.refinements.keys());
242
- }
243
- // ============================================================================
244
- // Events
245
- // ============================================================================
246
- get events() {
247
- return this._events;
248
- }
249
- on(event, handler) {
250
- return this._events.on(event, handler);
251
- }
252
- emit(event, payload) {
253
- this._events.emit(event, payload);
254
- // Global emitter'a da gönder
255
- emitVldEvent(event, payload);
256
- }
257
- // ============================================================================
258
- // Hooks
259
- // ============================================================================
260
- runBeforeParseHooks(value, schema) {
261
- let result = value;
262
- for (const plugin of this.plugins.values()) {
263
- if (plugin.onBeforeParse) {
264
- try {
265
- result = plugin.onBeforeParse(result, schema, this.context);
266
- }
267
- catch (error) {
268
- if (this.options.errorStrategy === 'throw') {
269
- throw error;
270
- }
271
- this.emit('vld:plugin:error', {
272
- name: plugin.name,
273
- error: error
274
- });
275
- }
276
- }
277
- }
278
- return result;
279
- }
280
- runAfterParseHooks(result, schema) {
281
- let current = result;
282
- for (const plugin of this.plugins.values()) {
283
- if (plugin.onAfterParse) {
284
- try {
285
- current = plugin.onAfterParse(current, schema, this.context);
286
- }
287
- catch (error) {
288
- if (this.options.errorStrategy === 'throw') {
289
- throw error;
290
- }
291
- this.emit('vld:plugin:error', {
292
- name: plugin.name,
293
- error: error
294
- });
295
- }
296
- }
297
- }
298
- return current;
299
- }
300
- runErrorHooks(error, schema) {
301
- for (const plugin of this.plugins.values()) {
302
- if (plugin.onError) {
303
- try {
304
- plugin.onError(error, schema, this.context);
305
- }
306
- catch (hookError) {
307
- console.error(`Error in plugin "${plugin.name}" error hook:`, hookError);
308
- }
309
- }
310
- }
311
- }
312
- // ============================================================================
313
- // Lifecycle
314
- // ============================================================================
315
- async start() {
316
- if (this.started) {
317
- return;
318
- }
319
- if (this.context.debug) {
320
- console.log('[VLD] Kernel starting...');
321
- }
322
- this.started = true;
323
- if (this.context.debug) {
324
- console.log(`[VLD] Kernel started with ${this.plugins.size} plugins`);
325
- }
326
- }
327
- async stop() {
328
- if (!this.started) {
329
- return;
330
- }
331
- if (this.context.debug) {
332
- console.log('[VLD] Kernel stopping...');
333
- }
334
- // Tüm plugin'leri kaldır
335
- const pluginNames = Array.from(this.plugins.keys()).reverse();
336
- for (const name of pluginNames) {
337
- try {
338
- this.remove(name);
339
- }
340
- catch (error) {
341
- console.error(`Error removing plugin "${name}":`, error);
342
- }
343
- }
344
- this.started = false;
345
- if (this.context.debug) {
346
- console.log('[VLD] Kernel stopped');
347
- }
348
- }
349
- reset() {
350
- this.plugins.clear();
351
- this.validators.clear();
352
- this.transforms.clear();
353
- this.codecs.clear();
354
- this.refinements.clear();
355
- this._events.removeAllListeners();
356
- this.context = {
357
- locale: this.options.locale,
358
- strict: this.options.strict,
359
- debug: this.options.debug
360
- };
361
- this.started = false;
362
- if (this.context.debug) {
363
- console.log('[VLD] Kernel reset');
364
- }
365
- }
366
- }
367
- // ============================================================================
368
- // Factory Function
369
- // ============================================================================
370
- /**
371
- * Yeni VLD Kernel oluşturur
372
- */
373
- export function createVldKernel(options) {
374
- return new VldKernelImpl(options);
375
- }
376
- // ============================================================================
377
- // Global Kernel
378
- // ============================================================================
379
- let globalKernel = null;
380
- /**
381
- * Global kernel'i alır veya oluşturur
382
- */
383
- export function getGlobalKernel() {
384
- if (!globalKernel) {
385
- globalKernel = createVldKernel();
386
- }
387
- return globalKernel;
388
- }
389
- /**
390
- * Global kernel'i ayarlar
391
- */
392
- export function setGlobalKernel(kernel) {
393
- globalKernel = kernel;
394
- }
395
- /**
396
- * Global kernel'i sıfırlar
397
- */
398
- export function resetGlobalKernel() {
399
- if (globalKernel) {
400
- globalKernel.reset();
401
- globalKernel = null;
402
- }
403
- }
404
- /**
405
- * Plugin builder oluşturur
406
- */
407
- export function definePlugin() {
408
- const plugin = {};
409
- const builder = {
410
- name(name) {
411
- plugin.name = name;
412
- return this;
413
- },
414
- version(version) {
415
- plugin.version = version;
416
- return this;
417
- },
418
- description(description) {
419
- plugin.description = description;
420
- return this;
421
- },
422
- dependencies(...deps) {
423
- plugin.dependencies = deps;
424
- return this;
425
- },
426
- validator(name, factory) {
427
- if (!plugin.validators) {
428
- plugin.validators = {};
429
- }
430
- plugin.validators[name] = factory;
431
- return this;
432
- },
433
- transform(name, factory) {
434
- if (!plugin.transforms) {
435
- plugin.transforms = {};
436
- }
437
- plugin.transforms[name] = factory;
438
- return this;
439
- },
440
- codec(name, factory) {
441
- if (!plugin.codecs) {
442
- plugin.codecs = {};
443
- }
444
- plugin.codecs[name] = factory;
445
- return this;
446
- },
447
- refinement(name, factory) {
448
- if (!plugin.refinements) {
449
- plugin.refinements = {};
450
- }
451
- plugin.refinements[name] = factory;
452
- return this;
453
- },
454
- beforeParse(hook) {
455
- plugin.onBeforeParse = hook;
456
- return this;
457
- },
458
- afterParse(hook) {
459
- plugin.onAfterParse = hook;
460
- return this;
461
- },
462
- onError(hook) {
463
- plugin.onError = hook;
464
- return this;
465
- },
466
- install(fn) {
467
- plugin.install = fn;
468
- return this;
469
- },
470
- uninstall(fn) {
471
- plugin.uninstall = fn;
472
- return this;
473
- },
474
- build() {
475
- if (!plugin.name) {
476
- throw new Error('Plugin name is required');
477
- }
478
- if (!plugin.version) {
479
- throw new Error('Plugin version is required');
480
- }
481
- return plugin;
482
- }
483
- };
484
- return builder;
485
- }
486
- //# sourceMappingURL=kernel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../src/plugins/kernel.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * VLD Kernel Implementation\n *\n * Bu modül VLD plugin sistemi için merkezi yönetim noktasını sağlar.\n * @oxog/plugin paketi ile uyumlu micro-kernel mimarisi kullanır.\n */\n\nimport type {\n VldKernel,\n VldKernelOptions,\n VldContext,\n ValidatorPlugin,\n ValidatorFactory,\n TransformFactory,\n CodecFactory,\n RefinementFactory\n} from './types.js';\nimport type { ParseResult } from '../validators/base.js';\nimport type { VldBase } from '../validators/base.js';\nimport { VldError } from '../errors.js';\nimport { type VldEvents, emitVldEvent, enableEvents } from '../events.js';\nimport { Emitter, createEmitter } from '../compat/emitter.js';\n\n// ============================================================================\n// Kernel Implementation\n// ============================================================================\n\n/**\n * VLD Kernel - Plugin yönetimi için merkezi sınıf\n */\nclass VldKernelImpl implements VldKernel {\n private context: VldContext;\n private plugins: Map<string, ValidatorPlugin> = new Map();\n private validators: Map<string, ValidatorFactory> = new Map();\n private transforms: Map<string, TransformFactory> = new Map();\n private codecs: Map<string, CodecFactory> = new Map();\n private refinements: Map<string, RefinementFactory> = new Map();\n private _events: Emitter<VldEvents>;\n private options: VldKernelOptions;\n private started = false;\n\n constructor(options: VldKernelOptions = {}) {\n this.options = {\n locale: options.locale || 'en',\n strict: options.strict || false,\n debug: options.debug || false,\n errorStrategy: options.errorStrategy || 'throw',\n maxPlugins: options.maxPlugins || 100\n };\n\n this.context = {\n locale: this.options.locale!,\n strict: this.options.strict!,\n debug: this.options.debug!\n };\n\n this._events = createEmitter<VldEvents>();\n\n // Debug mode ise event'leri etkinleştir\n if (this.options.debug) {\n enableEvents();\n }\n }\n\n // ============================================================================\n // Context\n // ============================================================================\n\n getContext(): VldContext {\n return { ...this.context };\n }\n\n setContext(context: Partial<VldContext>): void {\n const oldLocale = this.context.locale;\n this.context = { ...this.context, ...context };\n\n // Locale değiştiyse event emit et\n if (context.locale && context.locale !== oldLocale) {\n this.emit('vld:locale:changed', {\n from: oldLocale,\n to: context.locale\n });\n }\n }\n\n // ============================================================================\n // Plugin Management\n // ============================================================================\n\n use(plugin: ValidatorPlugin): this {\n // Plugin sayısı kontrolü\n if (this.plugins.size >= (this.options.maxPlugins || 100)) {\n throw new Error(`Maximum plugin count (${this.options.maxPlugins}) reached`);\n }\n\n // Duplicate kontrolü\n if (this.plugins.has(plugin.name)) {\n throw new Error(`Plugin \"${plugin.name}\" is already registered`);\n }\n\n // Bağımlılık kontrolü\n if (plugin.dependencies) {\n for (const dep of plugin.dependencies) {\n if (!this.plugins.has(dep)) {\n throw new Error(\n `Plugin \"${plugin.name}\" requires \"${dep}\" which is not installed`\n );\n }\n }\n }\n\n // Plugin'i kaydet\n this.plugins.set(plugin.name, plugin);\n\n // Validator'ları kaydet\n if (plugin.validators) {\n for (const [name, factory] of Object.entries(plugin.validators)) {\n this.validators.set(name, factory);\n }\n }\n\n // Transform'ları kaydet\n if (plugin.transforms) {\n for (const [name, factory] of Object.entries(plugin.transforms)) {\n this.transforms.set(name, factory);\n }\n }\n\n // Codec'leri kaydet\n if (plugin.codecs) {\n for (const [name, factory] of Object.entries(plugin.codecs)) {\n this.codecs.set(name, factory);\n }\n }\n\n // Refinement'ları kaydet\n if (plugin.refinements) {\n for (const [name, factory] of Object.entries(plugin.refinements)) {\n this.refinements.set(name, factory);\n }\n }\n\n // Install hook'unu çağır\n if (plugin.install) {\n const result = plugin.install(this);\n if (result instanceof Promise) {\n result.catch((error) => {\n console.error(`Error installing plugin \"${plugin.name}\":`, error);\n });\n }\n }\n\n // Event emit et\n this.emit('vld:plugin:registered', {\n name: plugin.name,\n version: plugin.version\n });\n\n if (this.context.debug) {\n console.log(`[VLD] Plugin registered: ${plugin.name}@${plugin.version}`);\n }\n\n return this;\n }\n\n remove(pluginName: string): boolean {\n const plugin = this.plugins.get(pluginName);\n if (!plugin) {\n return false;\n }\n\n // Bağımlı plugin kontrolü\n for (const [name, p] of this.plugins) {\n if (p.dependencies?.includes(pluginName)) {\n throw new Error(\n `Cannot remove plugin \"${pluginName}\" because \"${name}\" depends on it`\n );\n }\n }\n\n // Uninstall hook'unu çağır\n if (plugin.uninstall) {\n const result = plugin.uninstall(this);\n if (result instanceof Promise) {\n result.catch((error) => {\n console.error(`Error uninstalling plugin \"${pluginName}\":`, error);\n });\n }\n }\n\n // Plugin kayıtlarını temizle\n if (plugin.validators) {\n for (const name of Object.keys(plugin.validators)) {\n this.validators.delete(name);\n }\n }\n if (plugin.transforms) {\n for (const name of Object.keys(plugin.transforms)) {\n this.transforms.delete(name);\n }\n }\n if (plugin.codecs) {\n for (const name of Object.keys(plugin.codecs)) {\n this.codecs.delete(name);\n }\n }\n if (plugin.refinements) {\n for (const name of Object.keys(plugin.refinements)) {\n this.refinements.delete(name);\n }\n }\n\n this.plugins.delete(pluginName);\n\n if (this.context.debug) {\n console.log(`[VLD] Plugin removed: ${pluginName}`);\n }\n\n return true;\n }\n\n hasPlugin(pluginName: string): boolean {\n return this.plugins.has(pluginName);\n }\n\n listPlugins(): string[] {\n return Array.from(this.plugins.keys());\n }\n\n getPlugin(name: string): ValidatorPlugin | undefined {\n return this.plugins.get(name);\n }\n\n // ============================================================================\n // Validators\n // ============================================================================\n\n registerValidator(name: string, factory: ValidatorFactory): this {\n if (this.validators.has(name)) {\n throw new Error(`Validator \"${name}\" is already registered`);\n }\n this.validators.set(name, factory);\n return this;\n }\n\n getValidator(name: string): ValidatorFactory | undefined {\n return this.validators.get(name);\n }\n\n listValidators(): string[] {\n return Array.from(this.validators.keys());\n }\n\n // ============================================================================\n // Transforms\n // ============================================================================\n\n registerTransform(name: string, factory: TransformFactory): this {\n if (this.transforms.has(name)) {\n throw new Error(`Transform \"${name}\" is already registered`);\n }\n this.transforms.set(name, factory);\n return this;\n }\n\n getTransform(name: string): TransformFactory | undefined {\n return this.transforms.get(name);\n }\n\n listTransforms(): string[] {\n return Array.from(this.transforms.keys());\n }\n\n // ============================================================================\n // Codecs\n // ============================================================================\n\n registerCodec(name: string, factory: CodecFactory): this {\n if (this.codecs.has(name)) {\n throw new Error(`Codec \"${name}\" is already registered`);\n }\n this.codecs.set(name, factory);\n return this;\n }\n\n getCodec(name: string): CodecFactory | undefined {\n return this.codecs.get(name);\n }\n\n listCodecs(): string[] {\n return Array.from(this.codecs.keys());\n }\n\n // ============================================================================\n // Refinements\n // ============================================================================\n\n registerRefinement(name: string, factory: RefinementFactory): this {\n if (this.refinements.has(name)) {\n throw new Error(`Refinement \"${name}\" is already registered`);\n }\n this.refinements.set(name, factory);\n return this;\n }\n\n getRefinement(name: string): RefinementFactory | undefined {\n return this.refinements.get(name);\n }\n\n listRefinements(): string[] {\n return Array.from(this.refinements.keys());\n }\n\n // ============================================================================\n // Events\n // ============================================================================\n\n get events(): Emitter<VldEvents> {\n return this._events;\n }\n\n on<K extends keyof VldEvents>(\n event: K,\n handler: (payload: VldEvents[K]) => void\n ): () => void {\n return this._events.on(event, handler);\n }\n\n emit<K extends keyof VldEvents>(event: K, payload: VldEvents[K]): void {\n this._events.emit(event, payload);\n // Global emitter'a da gönder\n emitVldEvent(event, payload);\n }\n\n // ============================================================================\n // Hooks\n // ============================================================================\n\n runBeforeParseHooks(\n value: unknown,\n schema: VldBase<unknown, unknown>\n ): unknown {\n let result = value;\n\n for (const plugin of this.plugins.values()) {\n if (plugin.onBeforeParse) {\n try {\n result = plugin.onBeforeParse(result, schema, this.context);\n } catch (error) {\n if (this.options.errorStrategy === 'throw') {\n throw error;\n }\n this.emit('vld:plugin:error', {\n name: plugin.name,\n error: error as Error\n });\n }\n }\n }\n\n return result;\n }\n\n runAfterParseHooks<T>(\n result: ParseResult<T>,\n schema: VldBase<unknown, unknown>\n ): ParseResult<T> {\n let current = result;\n\n for (const plugin of this.plugins.values()) {\n if (plugin.onAfterParse) {\n try {\n current = plugin.onAfterParse(current, schema, this.context) as ParseResult<T>;\n } catch (error) {\n if (this.options.errorStrategy === 'throw') {\n throw error;\n }\n this.emit('vld:plugin:error', {\n name: plugin.name,\n error: error as Error\n });\n }\n }\n }\n\n return current;\n }\n\n runErrorHooks(error: VldError, schema: VldBase<unknown, unknown>): void {\n for (const plugin of this.plugins.values()) {\n if (plugin.onError) {\n try {\n plugin.onError(error, schema, this.context);\n } catch (hookError) {\n console.error(`Error in plugin \"${plugin.name}\" error hook:`, hookError);\n }\n }\n }\n }\n\n // ============================================================================\n // Lifecycle\n // ============================================================================\n\n async start(): Promise<void> {\n if (this.started) {\n return;\n }\n\n if (this.context.debug) {\n console.log('[VLD] Kernel starting...');\n }\n\n this.started = true;\n\n if (this.context.debug) {\n console.log(`[VLD] Kernel started with ${this.plugins.size} plugins`);\n }\n }\n\n async stop(): Promise<void> {\n if (!this.started) {\n return;\n }\n\n if (this.context.debug) {\n console.log('[VLD] Kernel stopping...');\n }\n\n // Tüm plugin'leri kaldır\n const pluginNames = Array.from(this.plugins.keys()).reverse();\n for (const name of pluginNames) {\n try {\n this.remove(name);\n } catch (error) {\n console.error(`Error removing plugin \"${name}\":`, error);\n }\n }\n\n this.started = false;\n\n if (this.context.debug) {\n console.log('[VLD] Kernel stopped');\n }\n }\n\n reset(): void {\n this.plugins.clear();\n this.validators.clear();\n this.transforms.clear();\n this.codecs.clear();\n this.refinements.clear();\n this._events.removeAllListeners();\n\n this.context = {\n locale: this.options.locale!,\n strict: this.options.strict!,\n debug: this.options.debug!\n };\n\n this.started = false;\n\n if (this.context.debug) {\n console.log('[VLD] Kernel reset');\n }\n }\n}\n\n// ============================================================================\n// Factory Function\n// ============================================================================\n\n/**\n * Yeni VLD Kernel oluşturur\n */\nexport function createVldKernel(options?: VldKernelOptions): VldKernel {\n return new VldKernelImpl(options);\n}\n\n// ============================================================================\n// Global Kernel\n// ============================================================================\n\nlet globalKernel: VldKernel | null = null;\n\n/**\n * Global kernel'i alır veya oluşturur\n */\nexport function getGlobalKernel(): VldKernel {\n if (!globalKernel) {\n globalKernel = createVldKernel();\n }\n return globalKernel;\n}\n\n/**\n * Global kernel'i ayarlar\n */\nexport function setGlobalKernel(kernel: VldKernel): void {\n globalKernel = kernel;\n}\n\n/**\n * Global kernel'i sıfırlar\n */\nexport function resetGlobalKernel(): void {\n if (globalKernel) {\n globalKernel.reset();\n globalKernel = null;\n }\n}\n\n// ============================================================================\n// Plugin Builder\n// ============================================================================\n\nimport type { PluginBuilder } from './types.js';\n\n/**\n * Plugin builder oluşturur\n */\nexport function definePlugin(): PluginBuilder {\n const plugin: Partial<ValidatorPlugin> = {};\n\n const builder: PluginBuilder = {\n name(name: string) {\n plugin.name = name;\n return this;\n },\n\n version(version: string) {\n plugin.version = version;\n return this;\n },\n\n description(description: string) {\n plugin.description = description;\n return this;\n },\n\n dependencies(...deps: string[]) {\n plugin.dependencies = deps;\n return this;\n },\n\n validator(name: string, factory: ValidatorFactory) {\n if (!plugin.validators) {\n plugin.validators = {};\n }\n plugin.validators[name] = factory;\n return this;\n },\n\n transform(name: string, factory: TransformFactory) {\n if (!plugin.transforms) {\n plugin.transforms = {};\n }\n plugin.transforms[name] = factory;\n return this;\n },\n\n codec(name: string, factory: CodecFactory) {\n if (!plugin.codecs) {\n plugin.codecs = {};\n }\n plugin.codecs[name] = factory;\n return this;\n },\n\n refinement(name: string, factory: RefinementFactory) {\n if (!plugin.refinements) {\n plugin.refinements = {};\n }\n plugin.refinements[name] = factory;\n return this;\n },\n\n beforeParse(hook) {\n plugin.onBeforeParse = hook;\n return this;\n },\n\n afterParse(hook) {\n plugin.onAfterParse = hook;\n return this;\n },\n\n onError(hook) {\n plugin.onError = hook;\n return this;\n },\n\n install(fn) {\n plugin.install = fn;\n return this;\n },\n\n uninstall(fn) {\n plugin.uninstall = fn;\n return this;\n },\n\n build(): ValidatorPlugin {\n if (!plugin.name) {\n throw new Error('Plugin name is required');\n }\n if (!plugin.version) {\n throw new Error('Plugin version is required');\n }\n return plugin as ValidatorPlugin;\n }\n };\n\n return builder;\n}\n"]}
@@ -1,8 +0,0 @@
1
- /**
2
- * VLD Plugin Types
3
- *
4
- * This module defines the plugin system interfaces and types
5
- * for extending VLD with custom validators, transforms, and codecs.
6
- */
7
- export {};
8
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG","sourcesContent":["/**\r\n * VLD Plugin Types\r\n *\r\n * This module defines the plugin system interfaces and types\r\n * for extending VLD with custom validators, transforms, and codecs.\r\n */\r\n\r\nimport type { VldBase } from '../validators/base';\r\nimport type { VldError } from '../errors';\r\nimport type { ParseResult } from '../validators/base';\r\nimport type { Locale } from '../locales';\r\n\r\n/**\r\n * Plugin metadata\r\n */\r\nexport interface PluginMeta {\r\n /** Plugin name (must be unique) */\r\n readonly name: string;\r\n /** Plugin version (semver) */\r\n readonly version: string;\r\n /** Plugin description */\r\n readonly description?: string;\r\n /** Plugin author */\r\n readonly author?: string;\r\n /** Plugin dependencies */\r\n readonly dependencies?: Record<string, string>;\r\n}\r\n\r\n/**\r\n * VLD context available to plugins\r\n */\r\nexport interface VldContext {\r\n /** Current locale */\r\n locale: Locale;\r\n /** Strict mode enabled */\r\n strict: boolean;\r\n /** Debug mode enabled */\r\n debug: boolean;\r\n /** Custom context data */\r\n custom: Record<string, unknown>;\r\n}\r\n\r\n/**\r\n * Validator factory function\r\n */\r\nexport type ValidatorFactory<T = unknown> = (\r\n ...args: unknown[]\r\n) => VldBase<unknown, T>;\r\n\r\n/**\r\n * Transform factory function\r\n */\r\nexport type TransformFactory<TInput = unknown, TOutput = unknown> = (\r\n ...args: unknown[]\r\n) => (value: TInput) => TOutput;\r\n\r\n/**\r\n * Codec factory function\r\n */\r\nexport interface CodecFactory<TInput = unknown, TOutput = unknown> {\r\n decode: (value: TInput) => TOutput | Promise<TOutput>;\r\n encode: (value: TOutput) => TInput | Promise<TInput>;\r\n}\r\n\r\n/**\r\n * Plugin hook context\r\n */\r\nexport interface HookContext {\r\n /** Path to current value in nested validation */\r\n path: (string | number)[];\r\n /** Parent schema (if nested) */\r\n parent?: VldBase<unknown, unknown>;\r\n /** Abort validation */\r\n abort: () => void;\r\n}\r\n\r\n/**\r\n * Plugin hooks for intercepting validation lifecycle\r\n */\r\nexport interface PluginHooks {\r\n /**\r\n * Called before parsing starts\r\n * Can modify the value before validation\r\n */\r\n onBeforeParse?: (\r\n value: unknown,\r\n schema: VldBase<unknown, unknown>,\r\n context: HookContext\r\n ) => unknown;\r\n\r\n /**\r\n * Called after parsing completes (success or failure)\r\n * Can modify the result\r\n */\r\n onAfterParse?: <T>(\r\n result: ParseResult<T>,\r\n schema: VldBase<unknown, unknown>,\r\n context: HookContext\r\n ) => ParseResult<T>;\r\n\r\n /**\r\n * Called when a validation error occurs\r\n * Can log, transform, or suppress errors\r\n */\r\n onError?: (\r\n error: VldError,\r\n schema: VldBase<unknown, unknown>,\r\n context: HookContext\r\n ) => void;\r\n\r\n /**\r\n * Called when validation succeeds\r\n * Useful for metrics and logging\r\n */\r\n onSuccess?: <T>(\r\n data: T,\r\n schema: VldBase<unknown, unknown>,\r\n context: HookContext\r\n ) => void;\r\n}\r\n\r\n/**\r\n * VLD Plugin interface\r\n */\r\nexport interface VldPlugin extends PluginMeta, PluginHooks {\r\n /**\r\n * Custom validators provided by this plugin\r\n */\r\n validators?: Record<string, ValidatorFactory>;\r\n\r\n /**\r\n * Custom transforms provided by this plugin\r\n */\r\n transforms?: Record<string, TransformFactory>;\r\n\r\n /**\r\n * Custom codecs provided by this plugin\r\n */\r\n codecs?: Record<string, CodecFactory>;\r\n\r\n /**\r\n * Install hook - called when plugin is registered\r\n * Receives the VLD kernel for additional setup\r\n */\r\n install?: (kernel: VldKernelInstance) => void | Promise<void>;\r\n\r\n /**\r\n * Uninstall hook - called when plugin is removed\r\n */\r\n uninstall?: (kernel: VldKernelInstance) => void | Promise<void>;\r\n}\r\n\r\n/**\r\n * Kernel options\r\n */\r\nexport interface VldKernelOptions {\r\n /** Initial context */\r\n context?: Partial<VldContext>;\r\n /** Plugins to load on creation */\r\n plugins?: VldPlugin[];\r\n /** Error handling strategy */\r\n errorStrategy?: 'throw' | 'isolate' | 'silent';\r\n /** Enable debug mode */\r\n debug?: boolean;\r\n}\r\n\r\n/**\r\n * VLD Kernel instance interface\r\n */\r\nexport interface VldKernelInstance {\r\n // ============================================\r\n // Context Management\r\n // ============================================\r\n\r\n /** Get current context */\r\n getContext(): VldContext;\r\n\r\n /** Update context */\r\n setContext(partial: Partial<VldContext>): void;\r\n\r\n // ============================================\r\n // Plugin Management\r\n // ============================================\r\n\r\n /** Register a plugin */\r\n use(plugin: VldPlugin): this;\r\n\r\n /** Remove a plugin by name */\r\n remove(name: string): boolean;\r\n\r\n /** Get a plugin by name */\r\n getPlugin(name: string): VldPlugin | undefined;\r\n\r\n /** Get all registered plugins */\r\n getPlugins(): VldPlugin[];\r\n\r\n /** Check if a plugin is registered */\r\n hasPlugin(name: string): boolean;\r\n\r\n // ============================================\r\n // Validator Registry\r\n // ============================================\r\n\r\n /** Register a custom validator */\r\n registerValidator(name: string, factory: ValidatorFactory): this;\r\n\r\n /** Get a validator by name */\r\n getValidator(name: string): VldBase<unknown, unknown> | undefined;\r\n\r\n /** Get all registered validators */\r\n getValidators(): Record<string, ValidatorFactory>;\r\n\r\n // ============================================\r\n // Transform Registry\r\n // ============================================\r\n\r\n /** Register a custom transform */\r\n registerTransform(name: string, factory: TransformFactory): this;\r\n\r\n /** Get a transform by name */\r\n getTransform(name: string): TransformFactory | undefined;\r\n\r\n // ============================================\r\n // Codec Registry\r\n // ============================================\r\n\r\n /** Register a custom codec */\r\n registerCodec(name: string, codec: CodecFactory): this;\r\n\r\n /** Get a codec by name */\r\n getCodec(name: string): CodecFactory | undefined;\r\n\r\n // ============================================\r\n // Hook Execution\r\n // ============================================\r\n\r\n /** Execute beforeParse hooks */\r\n executeBeforeParse(\r\n value: unknown,\r\n schema: VldBase<unknown, unknown>,\r\n context: HookContext\r\n ): unknown;\r\n\r\n /** Execute afterParse hooks */\r\n executeAfterParse<T>(\r\n result: ParseResult<T>,\r\n schema: VldBase<unknown, unknown>,\r\n context: HookContext\r\n ): ParseResult<T>;\r\n\r\n /** Execute error hooks */\r\n executeOnError(\r\n error: VldError,\r\n schema: VldBase<unknown, unknown>,\r\n context: HookContext\r\n ): void;\r\n\r\n /** Execute success hooks */\r\n executeOnSuccess<T>(\r\n data: T,\r\n schema: VldBase<unknown, unknown>,\r\n context: HookContext\r\n ): void;\r\n\r\n // ============================================\r\n // Lifecycle\r\n // ============================================\r\n\r\n /** Dispose of all plugins and cleanup */\r\n dispose(): Promise<void>;\r\n}\r\n\r\n/**\r\n * Plugin builder for fluent plugin creation\r\n */\r\nexport interface PluginBuilder {\r\n name(name: string): this;\r\n version(version: string): this;\r\n description(description: string): this;\r\n validator(name: string, factory: ValidatorFactory): this;\r\n transform(name: string, factory: TransformFactory): this;\r\n codec(name: string, codec: CodecFactory): this;\r\n hook<K extends keyof PluginHooks>(name: K, fn: PluginHooks[K]): this;\r\n install(fn: VldPlugin['install']): this;\r\n build(): VldPlugin;\r\n}\r\n"]}