@oxog/vld 1.5.0 → 2.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 (293) hide show
  1. package/CHANGELOG.md +168 -0
  2. package/LICENSE +20 -20
  3. package/README.md +558 -517
  4. package/dist/chunks/bigint-DgsCr2dC.js +1709 -0
  5. package/dist/chunks/bigint-DgsCr2dC.js.map +1 -0
  6. package/dist/{coercion/string.js → chunks/date-ODue_rtq.js} +271 -5
  7. package/dist/chunks/date-ODue_rtq.js.map +1 -0
  8. package/dist/chunks/index-BZqWZvVe.js +426 -0
  9. package/dist/chunks/index-BZqWZvVe.js.map +1 -0
  10. package/dist/chunks/index-CETyGkrv.js +894 -0
  11. package/dist/chunks/index-CETyGkrv.js.map +1 -0
  12. package/dist/chunks/json-o20GFhTh.js +2021 -0
  13. package/dist/chunks/json-o20GFhTh.js.map +1 -0
  14. package/dist/{validators/unknown.js → chunks/unknown-SLIH1VCf.js} +6 -3
  15. package/dist/chunks/unknown-SLIH1VCf.js.map +1 -0
  16. package/dist/cjs/errors.cjs +387 -0
  17. package/dist/cjs/errors.cjs.map +1 -0
  18. package/dist/cjs/index.cjs +9983 -0
  19. package/dist/cjs/index.cjs.map +1 -0
  20. package/dist/cjs/locales/index.cjs +2877 -0
  21. package/dist/cjs/locales/index.cjs.map +1 -0
  22. package/dist/cjs/locales/lazy.cjs +3169 -0
  23. package/dist/cjs/locales/lazy.cjs.map +1 -0
  24. package/dist/cjs/mini.cjs +7329 -0
  25. package/dist/cjs/mini.cjs.map +1 -0
  26. package/dist/codecs/index.js +4 -275
  27. package/dist/codecs/index.js.map +1 -1
  28. package/dist/coercion/index.d.ts +11 -0
  29. package/dist/coercion/index.d.ts.map +1 -0
  30. package/dist/coercion/{bigint.js → index.js} +7 -4
  31. package/dist/coercion/index.js.map +1 -0
  32. package/dist/compat/emitter.js +6 -4
  33. package/dist/compat/emitter.js.map +1 -1
  34. package/dist/compat/result.js +21 -19
  35. package/dist/compat/result.js.map +1 -1
  36. package/dist/errors.js +13 -10
  37. package/dist/errors.js.map +1 -1
  38. package/dist/index.js +225 -126
  39. package/dist/index.js.map +1 -1
  40. package/dist/kernel.js +10 -7
  41. package/dist/kernel.js.map +1 -1
  42. package/dist/locales/af.js +4 -2
  43. package/dist/locales/af.js.map +1 -1
  44. package/dist/locales/ar.js +4 -2
  45. package/dist/locales/ar.js.map +1 -1
  46. package/dist/locales/bn.js +4 -2
  47. package/dist/locales/bn.js.map +1 -1
  48. package/dist/locales/da.js +4 -2
  49. package/dist/locales/da.js.map +1 -1
  50. package/dist/locales/de.js +4 -2
  51. package/dist/locales/de.js.map +1 -1
  52. package/dist/locales/en.js +4 -2
  53. package/dist/locales/en.js.map +1 -1
  54. package/dist/locales/es-MX.js +4 -2
  55. package/dist/locales/es-MX.js.map +1 -1
  56. package/dist/locales/es.js +4 -2
  57. package/dist/locales/es.js.map +1 -1
  58. package/dist/locales/fi.js +4 -2
  59. package/dist/locales/fi.js.map +1 -1
  60. package/dist/locales/fr.js +4 -2
  61. package/dist/locales/fr.js.map +1 -1
  62. package/dist/locales/hi.js +4 -2
  63. package/dist/locales/hi.js.map +1 -1
  64. package/dist/locales/id.js +4 -2
  65. package/dist/locales/id.js.map +1 -1
  66. package/dist/locales/index.js +3 -91
  67. package/dist/locales/index.js.map +1 -1
  68. package/dist/locales/it.js +4 -2
  69. package/dist/locales/it.js.map +1 -1
  70. package/dist/locales/ja.js +4 -2
  71. package/dist/locales/ja.js.map +1 -1
  72. package/dist/locales/ko.js +4 -2
  73. package/dist/locales/ko.js.map +1 -1
  74. package/dist/locales/lazy.d.ts +111 -0
  75. package/dist/locales/lazy.d.ts.map +1 -0
  76. package/dist/locales/lazy.js +220 -0
  77. package/dist/locales/lazy.js.map +1 -0
  78. package/dist/locales/nl.js +4 -2
  79. package/dist/locales/nl.js.map +1 -1
  80. package/dist/locales/no.js +4 -2
  81. package/dist/locales/no.js.map +1 -1
  82. package/dist/locales/pl.js +4 -2
  83. package/dist/locales/pl.js.map +1 -1
  84. package/dist/locales/pt-BR.js +4 -2
  85. package/dist/locales/pt-BR.js.map +1 -1
  86. package/dist/locales/pt.js +4 -2
  87. package/dist/locales/pt.js.map +1 -1
  88. package/dist/locales/ru.js +4 -2
  89. package/dist/locales/ru.js.map +1 -1
  90. package/dist/locales/sv.js +4 -2
  91. package/dist/locales/sv.js.map +1 -1
  92. package/dist/locales/sw.js +4 -2
  93. package/dist/locales/sw.js.map +1 -1
  94. package/dist/locales/th.js +4 -2
  95. package/dist/locales/th.js.map +1 -1
  96. package/dist/locales/tr.js +4 -2
  97. package/dist/locales/tr.js.map +1 -1
  98. package/dist/locales/vi.js +4 -2
  99. package/dist/locales/vi.js.map +1 -1
  100. package/dist/locales/zh.js +4 -2
  101. package/dist/locales/zh.js.map +1 -1
  102. package/dist/mini.d.ts +182 -0
  103. package/dist/mini.d.ts.map +1 -0
  104. package/dist/mini.js +132 -0
  105. package/dist/mini.js.map +1 -0
  106. package/dist/pigment.js +8 -7
  107. package/dist/pigment.js.map +1 -1
  108. package/dist/validators/array.d.ts +5 -0
  109. package/dist/validators/array.d.ts.map +1 -1
  110. package/dist/validators/discriminated-union.d.ts.map +1 -1
  111. package/dist/validators/enum.d.ts +5 -1
  112. package/dist/validators/enum.d.ts.map +1 -1
  113. package/dist/validators/index.js +5 -45
  114. package/dist/validators/index.js.map +1 -1
  115. package/dist/validators/lazy.d.ts +8 -1
  116. package/dist/validators/lazy.d.ts.map +1 -1
  117. package/dist/validators/literal.d.ts +5 -1
  118. package/dist/validators/literal.d.ts.map +1 -1
  119. package/dist/validators/object.d.ts +30 -3
  120. package/dist/validators/object.d.ts.map +1 -1
  121. package/dist/validators/string.d.ts +12 -1
  122. package/dist/validators/string.d.ts.map +1 -1
  123. package/package.json +69 -11
  124. package/dist/cli/benchmark.d.ts +0 -15
  125. package/dist/cli/benchmark.d.ts.map +0 -1
  126. package/dist/cli/benchmark.js +0 -248
  127. package/dist/cli/benchmark.js.map +0 -1
  128. package/dist/cli/bin.js +0 -35
  129. package/dist/cli/bin.js.map +0 -1
  130. package/dist/cli/commands/benchmark.js +0 -204
  131. package/dist/cli/commands/benchmark.js.map +0 -1
  132. package/dist/cli/commands/validate.js +0 -157
  133. package/dist/cli/commands/validate.js.map +0 -1
  134. package/dist/cli/generate.d.ts +0 -14
  135. package/dist/cli/generate.d.ts.map +0 -1
  136. package/dist/cli/generate.js +0 -233
  137. package/dist/cli/generate.js.map +0 -1
  138. package/dist/cli/index.js +0 -182
  139. package/dist/cli/index.js.map +0 -1
  140. package/dist/cli/validate.d.ts +0 -15
  141. package/dist/cli/validate.d.ts.map +0 -1
  142. package/dist/cli/validate.js +0 -162
  143. package/dist/cli/validate.js.map +0 -1
  144. package/dist/coercion/bigint.js.map +0 -1
  145. package/dist/coercion/boolean.js +0 -59
  146. package/dist/coercion/boolean.js.map +0 -1
  147. package/dist/coercion/date.js +0 -52
  148. package/dist/coercion/date.js.map +0 -1
  149. package/dist/coercion/number.js +0 -160
  150. package/dist/coercion/number.js.map +0 -1
  151. package/dist/coercion/string.js.map +0 -1
  152. package/dist/compat/index.js +0 -14
  153. package/dist/compat/index.js.map +0 -1
  154. package/dist/events.js +0 -8
  155. package/dist/events.js.map +0 -1
  156. package/dist/guards.d.ts +0 -143
  157. package/dist/guards.d.ts.map +0 -1
  158. package/dist/guards.js +0 -238
  159. package/dist/guards.js.map +0 -1
  160. package/dist/index-new.d.ts.map +0 -1
  161. package/dist/locales/backup-en.js +0 -105
  162. package/dist/locales/backup-en.js.map +0 -1
  163. package/dist/locales/types.js +0 -2
  164. package/dist/locales/types.js.map +0 -1
  165. package/dist/locales.d.ts +0 -54
  166. package/dist/locales.d.ts.map +0 -1
  167. package/dist/locales.js +0 -732
  168. package/dist/locales.js.map +0 -1
  169. package/dist/logger.js +0 -184
  170. package/dist/logger.js.map +0 -1
  171. package/dist/plugins/codecs.d.ts +0 -17
  172. package/dist/plugins/codecs.d.ts.map +0 -1
  173. package/dist/plugins/codecs.js +0 -29
  174. package/dist/plugins/codecs.js.map +0 -1
  175. package/dist/plugins/coercion.d.ts +0 -13
  176. package/dist/plugins/coercion.d.ts.map +0 -1
  177. package/dist/plugins/coercion.js +0 -34
  178. package/dist/plugins/coercion.js.map +0 -1
  179. package/dist/plugins/core-validators.d.ts +0 -13
  180. package/dist/plugins/core-validators.d.ts.map +0 -1
  181. package/dist/plugins/core-validators.js +0 -96
  182. package/dist/plugins/core-validators.js.map +0 -1
  183. package/dist/plugins/index.js +0 -8
  184. package/dist/plugins/index.js.map +0 -1
  185. package/dist/plugins/kernel.d.ts +0 -29
  186. package/dist/plugins/kernel.d.ts.map +0 -1
  187. package/dist/plugins/kernel.js +0 -486
  188. package/dist/plugins/kernel.js.map +0 -1
  189. package/dist/plugins/types.js +0 -8
  190. package/dist/plugins/types.js.map +0 -1
  191. package/dist/style.d.ts +0 -123
  192. package/dist/style.d.ts.map +0 -1
  193. package/dist/style.js +0 -369
  194. package/dist/style.js.map +0 -1
  195. package/dist/utils/codec-utils.js +0 -229
  196. package/dist/utils/codec-utils.js.map +0 -1
  197. package/dist/utils/deep-merge.js +0 -76
  198. package/dist/utils/deep-merge.js.map +0 -1
  199. package/dist/utils/ip-validation.js +0 -98
  200. package/dist/utils/ip-validation.js.map +0 -1
  201. package/dist/utils/security.js +0 -61
  202. package/dist/utils/security.js.map +0 -1
  203. package/dist/validators/any.js +0 -25
  204. package/dist/validators/any.js.map +0 -1
  205. package/dist/validators/array.js +0 -190
  206. package/dist/validators/array.js.map +0 -1
  207. package/dist/validators/base.js +0 -499
  208. package/dist/validators/base.js.map +0 -1
  209. package/dist/validators/base64.js +0 -65
  210. package/dist/validators/base64.js.map +0 -1
  211. package/dist/validators/bigint.js +0 -142
  212. package/dist/validators/bigint.js.map +0 -1
  213. package/dist/validators/boolean.js +0 -114
  214. package/dist/validators/boolean.js.map +0 -1
  215. package/dist/validators/codec.js +0 -182
  216. package/dist/validators/codec.js.map +0 -1
  217. package/dist/validators/custom.js +0 -50
  218. package/dist/validators/custom.js.map +0 -1
  219. package/dist/validators/date.js +0 -227
  220. package/dist/validators/date.js.map +0 -1
  221. package/dist/validators/discriminated-union.js +0 -98
  222. package/dist/validators/discriminated-union.js.map +0 -1
  223. package/dist/validators/enum.js +0 -82
  224. package/dist/validators/enum.js.map +0 -1
  225. package/dist/validators/file.js +0 -114
  226. package/dist/validators/file.js.map +0 -1
  227. package/dist/validators/function.js +0 -45
  228. package/dist/validators/function.js.map +0 -1
  229. package/dist/validators/hex.js +0 -62
  230. package/dist/validators/hex.js.map +0 -1
  231. package/dist/validators/intersection.js +0 -64
  232. package/dist/validators/intersection.js.map +0 -1
  233. package/dist/validators/json.js +0 -64
  234. package/dist/validators/json.js.map +0 -1
  235. package/dist/validators/lazy.js +0 -42
  236. package/dist/validators/lazy.js.map +0 -1
  237. package/dist/validators/literal.js +0 -45
  238. package/dist/validators/literal.js.map +0 -1
  239. package/dist/validators/map.js +0 -54
  240. package/dist/validators/map.js.map +0 -1
  241. package/dist/validators/nan.js +0 -32
  242. package/dist/validators/nan.js.map +0 -1
  243. package/dist/validators/never.js +0 -29
  244. package/dist/validators/never.js.map +0 -1
  245. package/dist/validators/null.js +0 -31
  246. package/dist/validators/null.js.map +0 -1
  247. package/dist/validators/number.js +0 -225
  248. package/dist/validators/number.js.map +0 -1
  249. package/dist/validators/object-optimized.d.ts +0 -23
  250. package/dist/validators/object-optimized.d.ts.map +0 -1
  251. package/dist/validators/object-optimized.js +0 -179
  252. package/dist/validators/object-optimized.js.map +0 -1
  253. package/dist/validators/object-ultra.d.ts +0 -34
  254. package/dist/validators/object-ultra.d.ts.map +0 -1
  255. package/dist/validators/object-ultra.js +0 -175
  256. package/dist/validators/object-ultra.js.map +0 -1
  257. package/dist/validators/object.js +0 -458
  258. package/dist/validators/object.js.map +0 -1
  259. package/dist/validators/record.js +0 -128
  260. package/dist/validators/record.js.map +0 -1
  261. package/dist/validators/set.js +0 -51
  262. package/dist/validators/set.js.map +0 -1
  263. package/dist/validators/string-bool.js +0 -127
  264. package/dist/validators/string-bool.js.map +0 -1
  265. package/dist/validators/string-formats.js +0 -120
  266. package/dist/validators/string-formats.js.map +0 -1
  267. package/dist/validators/string-ultra.d.ts +0 -49
  268. package/dist/validators/string-ultra.d.ts.map +0 -1
  269. package/dist/validators/string-ultra.js +0 -217
  270. package/dist/validators/string-ultra.js.map +0 -1
  271. package/dist/validators/string.js +0 -253
  272. package/dist/validators/string.js.map +0 -1
  273. package/dist/validators/symbol.js +0 -42
  274. package/dist/validators/symbol.js.map +0 -1
  275. package/dist/validators/template-literal.js +0 -102
  276. package/dist/validators/template-literal.js.map +0 -1
  277. package/dist/validators/tuple.js +0 -55
  278. package/dist/validators/tuple.js.map +0 -1
  279. package/dist/validators/uint8array.js +0 -98
  280. package/dist/validators/uint8array.js.map +0 -1
  281. package/dist/validators/undefined.js +0 -31
  282. package/dist/validators/undefined.js.map +0 -1
  283. package/dist/validators/union-optimized.d.ts +0 -15
  284. package/dist/validators/union-optimized.d.ts.map +0 -1
  285. package/dist/validators/union-optimized.js +0 -92
  286. package/dist/validators/union-optimized.js.map +0 -1
  287. package/dist/validators/union.js +0 -126
  288. package/dist/validators/union.js.map +0 -1
  289. package/dist/validators/unknown.js.map +0 -1
  290. package/dist/validators/void.js +0 -35
  291. package/dist/validators/void.js.map +0 -1
  292. package/dist/validators/xor.js +0 -64
  293. 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"]}