@oxog/vld 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/CHANGELOG.md +333 -333
  2. package/README.md +1130 -1130
  3. package/dist/cli/benchmark.d.ts +15 -0
  4. package/dist/cli/benchmark.d.ts.map +1 -0
  5. package/dist/cli/benchmark.js +248 -0
  6. package/dist/cli/benchmark.js.map +1 -0
  7. package/dist/cli/bin.d.ts +8 -0
  8. package/dist/cli/bin.d.ts.map +1 -0
  9. package/dist/cli/bin.js +35 -0
  10. package/dist/cli/bin.js.map +1 -0
  11. package/dist/cli/commands/benchmark.d.ts +11 -0
  12. package/dist/cli/commands/benchmark.d.ts.map +1 -0
  13. package/dist/cli/commands/benchmark.js +204 -0
  14. package/dist/cli/commands/benchmark.js.map +1 -0
  15. package/dist/cli/commands/validate.d.ts +11 -0
  16. package/dist/cli/commands/validate.d.ts.map +1 -0
  17. package/dist/cli/commands/validate.js +157 -0
  18. package/dist/cli/commands/validate.js.map +1 -0
  19. package/dist/cli/generate.d.ts +14 -0
  20. package/dist/cli/generate.d.ts.map +1 -0
  21. package/dist/cli/generate.js +233 -0
  22. package/dist/cli/generate.js.map +1 -0
  23. package/dist/cli/index.d.ts +59 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +182 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/cli/validate.d.ts +15 -0
  28. package/dist/cli/validate.d.ts.map +1 -0
  29. package/dist/cli/validate.js +162 -0
  30. package/dist/cli/validate.js.map +1 -0
  31. package/dist/codecs/index.d.ts.map +1 -1
  32. package/dist/codecs/index.js +29 -10
  33. package/dist/codecs/index.js.map +1 -1
  34. package/dist/coercion/boolean.d.ts.map +1 -1
  35. package/dist/coercion/boolean.js +23 -31
  36. package/dist/coercion/boolean.js.map +1 -1
  37. package/dist/coercion/date.js +1 -1
  38. package/dist/coercion/date.js.map +1 -1
  39. package/dist/compat/emitter.d.ts +73 -0
  40. package/dist/compat/emitter.d.ts.map +1 -0
  41. package/dist/compat/emitter.js +179 -0
  42. package/dist/compat/emitter.js.map +1 -0
  43. package/dist/compat/index.d.ts +15 -0
  44. package/dist/compat/index.d.ts.map +1 -0
  45. package/dist/compat/index.js +14 -0
  46. package/dist/compat/index.js.map +1 -0
  47. package/dist/compat/result.d.ts +128 -0
  48. package/dist/compat/result.d.ts.map +1 -0
  49. package/dist/compat/result.js +169 -0
  50. package/dist/compat/result.js.map +1 -0
  51. package/dist/errors.d.ts +58 -1
  52. package/dist/errors.d.ts.map +1 -1
  53. package/dist/errors.js +97 -9
  54. package/dist/errors.js.map +1 -1
  55. package/dist/events.d.ts +140 -0
  56. package/dist/events.d.ts.map +1 -0
  57. package/dist/events.js +8 -0
  58. package/dist/events.js.map +1 -0
  59. package/dist/guards.d.ts +143 -0
  60. package/dist/guards.d.ts.map +1 -0
  61. package/dist/guards.js +238 -0
  62. package/dist/guards.js.map +1 -0
  63. package/dist/index-new.d.ts.map +1 -0
  64. package/dist/index.d.ts +13 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +29 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/kernel.d.ts +29 -0
  69. package/dist/kernel.d.ts.map +1 -0
  70. package/dist/kernel.js +402 -0
  71. package/dist/kernel.js.map +1 -0
  72. package/dist/locales/af.js.map +1 -1
  73. package/dist/locales/ar.js.map +1 -1
  74. package/dist/locales/backup-en.js.map +1 -1
  75. package/dist/locales/bn.js.map +1 -1
  76. package/dist/locales/da.js.map +1 -1
  77. package/dist/locales/de.js.map +1 -1
  78. package/dist/locales/en.js.map +1 -1
  79. package/dist/locales/es-MX.js.map +1 -1
  80. package/dist/locales/es.js.map +1 -1
  81. package/dist/locales/fi.js.map +1 -1
  82. package/dist/locales/fr.js.map +1 -1
  83. package/dist/locales/hi.js.map +1 -1
  84. package/dist/locales/id.js.map +1 -1
  85. package/dist/locales/it.js.map +1 -1
  86. package/dist/locales/ja.js.map +1 -1
  87. package/dist/locales/ko.js.map +1 -1
  88. package/dist/locales/nl.js.map +1 -1
  89. package/dist/locales/no.js.map +1 -1
  90. package/dist/locales/pl.js.map +1 -1
  91. package/dist/locales/pt-BR.js.map +1 -1
  92. package/dist/locales/pt.js.map +1 -1
  93. package/dist/locales/ru.js.map +1 -1
  94. package/dist/locales/sv.js.map +1 -1
  95. package/dist/locales/sw.js.map +1 -1
  96. package/dist/locales/th.js.map +1 -1
  97. package/dist/locales/tr.js.map +1 -1
  98. package/dist/locales/types.js.map +1 -1
  99. package/dist/locales/vi.js.map +1 -1
  100. package/dist/locales/zh.js.map +1 -1
  101. package/dist/locales.d.ts +54 -0
  102. package/dist/locales.d.ts.map +1 -0
  103. package/dist/locales.js +732 -0
  104. package/dist/locales.js.map +1 -0
  105. package/dist/logger.d.ts +94 -0
  106. package/dist/logger.d.ts.map +1 -0
  107. package/dist/logger.js +184 -0
  108. package/dist/logger.js.map +1 -0
  109. package/dist/pigment.d.ts +124 -0
  110. package/dist/pigment.d.ts.map +1 -0
  111. package/dist/pigment.js +177 -0
  112. package/dist/pigment.js.map +1 -0
  113. package/dist/plugins/codecs.d.ts +17 -0
  114. package/dist/plugins/codecs.d.ts.map +1 -0
  115. package/dist/plugins/codecs.js +29 -0
  116. package/dist/plugins/codecs.js.map +1 -0
  117. package/dist/plugins/coercion.d.ts +13 -0
  118. package/dist/plugins/coercion.d.ts.map +1 -0
  119. package/dist/plugins/coercion.js +34 -0
  120. package/dist/plugins/coercion.js.map +1 -0
  121. package/dist/plugins/core-validators.d.ts +13 -0
  122. package/dist/plugins/core-validators.d.ts.map +1 -0
  123. package/dist/plugins/core-validators.js +96 -0
  124. package/dist/plugins/core-validators.js.map +1 -0
  125. package/dist/plugins/index.d.ts +8 -0
  126. package/dist/plugins/index.d.ts.map +1 -0
  127. package/dist/plugins/index.js +8 -0
  128. package/dist/plugins/index.js.map +1 -0
  129. package/dist/plugins/kernel.d.ts +29 -0
  130. package/dist/plugins/kernel.d.ts.map +1 -0
  131. package/dist/plugins/kernel.js +486 -0
  132. package/dist/plugins/kernel.js.map +1 -0
  133. package/dist/plugins/types.d.ts +186 -0
  134. package/dist/plugins/types.d.ts.map +1 -0
  135. package/dist/plugins/types.js +8 -0
  136. package/dist/plugins/types.js.map +1 -0
  137. package/dist/style.d.ts +123 -0
  138. package/dist/style.d.ts.map +1 -0
  139. package/dist/style.js +369 -0
  140. package/dist/style.js.map +1 -0
  141. package/dist/utils/codec-utils.d.ts.map +1 -1
  142. package/dist/utils/codec-utils.js +6 -0
  143. package/dist/utils/codec-utils.js.map +1 -1
  144. package/dist/utils/ip-validation.d.ts.map +1 -1
  145. package/dist/utils/ip-validation.js +34 -14
  146. package/dist/utils/ip-validation.js.map +1 -1
  147. package/dist/validators/base.d.ts +3 -0
  148. package/dist/validators/base.d.ts.map +1 -1
  149. package/dist/validators/base.js +8 -0
  150. package/dist/validators/base.js.map +1 -1
  151. package/dist/validators/bigint.js.map +1 -1
  152. package/dist/validators/custom.js.map +1 -1
  153. package/dist/validators/discriminated-union.js.map +1 -1
  154. package/dist/validators/file.js.map +1 -1
  155. package/dist/validators/function.js.map +1 -1
  156. package/dist/validators/index.js.map +1 -1
  157. package/dist/validators/json.js.map +1 -1
  158. package/dist/validators/lazy.js.map +1 -1
  159. package/dist/validators/nan.js.map +1 -1
  160. package/dist/validators/null.js.map +1 -1
  161. package/dist/validators/object-optimized.d.ts +23 -0
  162. package/dist/validators/object-optimized.d.ts.map +1 -0
  163. package/dist/validators/object-optimized.js +179 -0
  164. package/dist/validators/object-optimized.js.map +1 -0
  165. package/dist/validators/object-ultra.d.ts +34 -0
  166. package/dist/validators/object-ultra.d.ts.map +1 -0
  167. package/dist/validators/object-ultra.js +175 -0
  168. package/dist/validators/object-ultra.js.map +1 -0
  169. package/dist/validators/object.d.ts.map +1 -1
  170. package/dist/validators/object.js +1 -1
  171. package/dist/validators/object.js.map +1 -1
  172. package/dist/validators/string-bool.js.map +1 -1
  173. package/dist/validators/string-formats.js.map +1 -1
  174. package/dist/validators/string-ultra.d.ts +49 -0
  175. package/dist/validators/string-ultra.d.ts.map +1 -0
  176. package/dist/validators/string-ultra.js +217 -0
  177. package/dist/validators/string-ultra.js.map +1 -0
  178. package/dist/validators/template-literal.d.ts.map +1 -1
  179. package/dist/validators/template-literal.js +13 -12
  180. package/dist/validators/template-literal.js.map +1 -1
  181. package/dist/validators/undefined.js.map +1 -1
  182. package/dist/validators/union-optimized.d.ts +15 -0
  183. package/dist/validators/union-optimized.d.ts.map +1 -0
  184. package/dist/validators/union-optimized.js +92 -0
  185. package/dist/validators/union-optimized.js.map +1 -0
  186. package/dist/validators/xor.js.map +1 -1
  187. package/package.json +95 -79
@@ -0,0 +1,486 @@
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
@@ -0,0 +1 @@
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"]}