@stonecrop/stonecrop 0.10.12 → 0.10.14

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 (50) hide show
  1. package/dist/composables/stonecrop.js +19 -144
  2. package/dist/index.js +9 -6
  3. package/dist/plugins/index.js +4 -1
  4. package/dist/schema-validator.js +1 -13
  5. package/dist/src/composables/stonecrop.d.ts +2 -74
  6. package/dist/src/composables/stonecrop.d.ts.map +1 -1
  7. package/dist/src/doctype.d.ts +1 -27
  8. package/dist/src/doctype.d.ts.map +1 -1
  9. package/dist/src/index.d.ts +6 -9
  10. package/dist/src/index.d.ts.map +1 -1
  11. package/dist/src/plugins/index.d.ts.map +1 -1
  12. package/dist/src/schema-validator.d.ts +1 -62
  13. package/dist/src/schema-validator.d.ts.map +1 -1
  14. package/dist/src/stonecrop.d.ts +38 -17
  15. package/dist/src/stonecrop.d.ts.map +1 -1
  16. package/dist/src/stores/operation-log.d.ts +1 -1
  17. package/dist/src/types/composable.d.ts +230 -0
  18. package/dist/src/types/composable.d.ts.map +1 -0
  19. package/dist/src/types/doctype.d.ts +57 -0
  20. package/dist/src/types/doctype.d.ts.map +1 -0
  21. package/dist/src/types/index.d.ts +6 -67
  22. package/dist/src/types/index.d.ts.map +1 -1
  23. package/dist/src/types/plugin.d.ts +37 -0
  24. package/dist/src/types/plugin.d.ts.map +1 -0
  25. package/dist/src/types/schema-validator.d.ts +64 -0
  26. package/dist/src/types/schema-validator.d.ts.map +1 -0
  27. package/dist/src/types/stonecrop.d.ts +17 -0
  28. package/dist/src/types/stonecrop.d.ts.map +1 -0
  29. package/dist/stonecrop.d.ts +192 -3
  30. package/dist/stonecrop.js +1509 -1517
  31. package/dist/stonecrop.js.map +1 -1
  32. package/dist/types/composable.js +0 -0
  33. package/dist/types/doctype.js +0 -0
  34. package/dist/types/index.js +7 -2
  35. package/dist/types/plugin.js +0 -0
  36. package/dist/types/schema-validator.js +13 -0
  37. package/dist/types/stonecrop.js +0 -0
  38. package/package.json +5 -5
  39. package/src/composables/stonecrop.ts +26 -266
  40. package/src/doctype.ts +2 -29
  41. package/src/index.ts +12 -19
  42. package/src/plugins/index.ts +4 -1
  43. package/src/schema-validator.ts +3 -66
  44. package/src/stonecrop.ts +147 -16
  45. package/src/types/composable.ts +245 -0
  46. package/src/types/doctype.ts +60 -0
  47. package/src/types/index.ts +7 -74
  48. package/src/types/plugin.ts +38 -0
  49. package/src/types/schema-validator.ts +67 -0
  50. package/src/types/stonecrop.ts +17 -0
@@ -1,4 +1,3 @@
1
- import { isDoctypeMany, } from '@stonecrop/aform';
2
1
  import { storeToRefs } from 'pinia';
3
2
  import { inject, onMounted, ref, watch, provide, computed } from 'vue';
4
3
  import { Stonecrop } from '../stonecrop';
@@ -22,6 +21,12 @@ export function useStonecrop(options) {
22
21
  const isLoading = ref(false);
23
22
  const error = ref(null);
24
23
  const resolvedDoctype = ref();
24
+ // Initialize stonecrop instance synchronously using singleton pattern
25
+ // Use injected instance if available, otherwise fall back to the singleton root
26
+ const stonecropInstance = providedStonecrop || Stonecrop._root;
27
+ if (stonecropInstance) {
28
+ stonecrop.value = stonecropInstance;
29
+ }
25
30
  // If doctype is a Doctype instance (not string), set resolved immediately
26
31
  if (options?.doctype && typeof options.doctype !== 'string') {
27
32
  resolvedDoctype.value = options.doctype;
@@ -82,10 +87,9 @@ export function useStonecrop(options) {
82
87
  };
83
88
  // Initialize Stonecrop instance
84
89
  onMounted(async () => {
85
- if (!registry) {
90
+ if (!registry || !stonecrop.value) {
86
91
  return;
87
92
  }
88
- stonecrop.value = providedStonecrop || new Stonecrop(registry);
89
93
  // Set up reactive refs from operation log store - only if Pinia is available
90
94
  try {
91
95
  const opLogStore = stonecrop.value.getOperationLogStore();
@@ -149,12 +153,12 @@ export function useStonecrop(options) {
149
153
  }
150
154
  }
151
155
  catch {
152
- formData.value = initializeNewRecord(doctype);
156
+ formData.value = registry.initializeRecord(resolvedSchema.value);
153
157
  }
154
158
  }
155
159
  }
156
160
  else {
157
- formData.value = initializeNewRecord(doctype);
161
+ formData.value = registry.initializeRecord(resolvedSchema.value);
158
162
  }
159
163
  if (hstStore.value) {
160
164
  setupDeepReactivity(doctype, recordId || 'new', formData, hstStore.value);
@@ -230,12 +234,12 @@ export function useStonecrop(options) {
230
234
  }
231
235
  }
232
236
  catch {
233
- formData.value = initializeNewRecord(doctype);
237
+ formData.value = registry.initializeRecord(resolvedSchema.value);
234
238
  }
235
239
  }
236
240
  }
237
241
  else {
238
- formData.value = initializeNewRecord(doctype);
242
+ formData.value = registry.initializeRecord(resolvedSchema.value);
239
243
  }
240
244
  if (hstStore.value) {
241
245
  setupDeepReactivity(doctype, recordId || 'new', formData, hstStore.value);
@@ -299,80 +303,30 @@ export function useStonecrop(options) {
299
303
  }
300
304
  /**
301
305
  * Load nested doctype data from API or initialize empty structure
306
+ * Delegates to Stonecrop.loadNestedData method
302
307
  * @param parentPath - The parent path (e.g., "customer.123.address")
303
308
  * @param childDoctype - The child doctype metadata
304
309
  * @param recordId - Optional record ID to load
305
- * @returns Promise resolving to the loaded or initialized data
310
+ * @returns The loaded or initialized data
306
311
  */
307
312
  const loadNestedData = (parentPath, childDoctype, recordId) => {
308
313
  if (!stonecrop.value) {
309
- return initializeNewRecord(childDoctype);
310
- }
311
- // If recordId provided, try to load existing data
312
- if (recordId) {
313
- try {
314
- // Check if data already exists in HST
315
- const existingData = hstStore.value?.get(parentPath);
316
- if (existingData && typeof existingData === 'object') {
317
- return existingData;
318
- }
319
- // TODO: Add API fetch logic here if needed
320
- // For now, initialize new record
321
- return initializeNewRecord(childDoctype);
322
- }
323
- catch {
324
- return initializeNewRecord(childDoctype);
325
- }
314
+ throw new Error('Stonecrop instance not available');
326
315
  }
327
- // Initialize new record
328
- return initializeNewRecord(childDoctype);
316
+ return stonecrop.value.loadNestedData(parentPath, childDoctype, recordId);
329
317
  };
330
318
  /**
331
319
  * Collect a record payload with all nested doctype fields from HST
320
+ * Delegates to Stonecrop.collectRecordPayload method
332
321
  * @param doctype - The doctype metadata
333
322
  * @param recordId - The record ID to collect
334
323
  * @returns The complete record payload ready for API submission
335
324
  */
336
325
  const collectRecordPayload = (doctype, recordId) => {
337
- if (!hstStore.value || !stonecrop.value) {
338
- throw new Error('HST store not initialized');
339
- }
340
- const recordPath = `${doctype.slug}.${recordId}`;
341
- const recordData = hstStore.value.get(recordPath) || {};
342
- // Build the save payload using resolved schema
343
- const payload = { ...recordData };
344
- // Use resolveSchema to get the full resolved tree, then walk Doctype fields
345
- const schemaArray = doctype.schema
346
- ? Array.isArray(doctype.schema)
347
- ? doctype.schema
348
- : Array.from(doctype.schema)
349
- : [];
350
- const resolved = registry ? registry.resolveSchema(schemaArray) : schemaArray;
351
- // 1:1 nested Doctype fields (cardinality: 'one' or undefined)
352
- const doctypeFields = resolved.filter(field => 'fieldtype' in field &&
353
- field.fieldtype === 'Doctype' &&
354
- !isDoctypeMany(field) &&
355
- 'schema' in field &&
356
- Array.isArray(field.schema));
357
- // Recursively collect nested data from HST using resolved schemas
358
- for (const field of doctypeFields) {
359
- const doctypeField = field;
360
- const fieldPath = `${recordPath}.${doctypeField.fieldname}`;
361
- const nestedData = collectNestedData(doctypeField.schema, fieldPath, hstStore.value);
362
- payload[doctypeField.fieldname] = nestedData;
363
- }
364
- // 1:many child tables (cardinality: 'many')
365
- const doctypeManyFields = resolved.filter(field => 'fieldtype' in field && field.fieldtype === 'Doctype' && isDoctypeMany(field));
366
- // Read array data from HST for cardinality: 'many' fields
367
- for (const field of doctypeManyFields) {
368
- const doctypeField = field;
369
- const fieldPath = `${recordPath}.${doctypeField.fieldname}`;
370
- const arrayData = hstStore.value.get(fieldPath);
371
- if (Array.isArray(arrayData)) {
372
- payload[doctypeField.fieldname] = arrayData;
373
- }
326
+ if (!stonecrop.value) {
327
+ throw new Error('Stonecrop instance not available');
374
328
  }
375
- return payload;
329
+ return stonecrop.value.collectRecordPayload(doctype, recordId);
376
330
  };
377
331
  /**
378
332
  * Create a nested context for child forms
@@ -461,50 +415,6 @@ export function useStonecrop(options) {
461
415
  operationLog,
462
416
  };
463
417
  }
464
- /**
465
- * Initialize new record structure based on doctype schema
466
- */
467
- function initializeNewRecord(doctype) {
468
- const initialData = {};
469
- if (!doctype.schema) {
470
- return initialData;
471
- }
472
- doctype.schema.forEach(field => {
473
- const fieldtype = 'fieldtype' in field ? field.fieldtype : 'Data';
474
- switch (fieldtype) {
475
- case 'Data':
476
- case 'Text':
477
- initialData[field.fieldname] = '';
478
- break;
479
- case 'Check':
480
- initialData[field.fieldname] = false;
481
- break;
482
- case 'Int':
483
- case 'Float':
484
- initialData[field.fieldname] = 0;
485
- break;
486
- case 'JSON':
487
- initialData[field.fieldname] = {};
488
- break;
489
- case 'Doctype': {
490
- // Check cardinality to determine initial value
491
- const cardinality = 'cardinality' in field ? field.cardinality : undefined;
492
- if (cardinality === 'many') {
493
- // 1:many child table - initialize as empty array
494
- initialData[field.fieldname] = [];
495
- }
496
- else {
497
- // 1:1 nested form - initialize as empty object
498
- initialData[field.fieldname] = {};
499
- }
500
- break;
501
- }
502
- default:
503
- initialData[field.fieldname] = null;
504
- }
505
- });
506
- return initialData;
507
- }
508
418
  /**
509
419
  * Setup deep reactivity between form data and HST store
510
420
  */
@@ -537,38 +447,3 @@ function updateNestedObject(obj, path, value) {
537
447
  const finalKey = path[path.length - 1];
538
448
  current[finalKey] = value;
539
449
  }
540
- /**
541
- * Recursively collect nested data from HST using pre-resolved schemas
542
- * @param resolvedSchema - The already-resolved schema (with nested schemas embedded)
543
- * @param basePath - The base path in HST (e.g., "customer.123.address")
544
- * @param hstStore - The HST store instance
545
- * @returns The collected data object
546
- */
547
- function collectNestedData(resolvedSchema, basePath, hstStore) {
548
- const data = hstStore.get(basePath) || {};
549
- const payload = { ...data };
550
- // Find Doctype fields that have resolved child schemas (1:1 only, not cardinality: 'many')
551
- const doctypeFields = resolvedSchema.filter(field => 'fieldtype' in field &&
552
- field.fieldtype === 'Doctype' &&
553
- !isDoctypeMany(field) &&
554
- 'schema' in field &&
555
- Array.isArray(field.schema));
556
- // Recursively collect nested data
557
- for (const field of doctypeFields) {
558
- const doctypeField = field;
559
- const fieldPath = `${basePath}.${doctypeField.fieldname}`;
560
- const nestedData = collectNestedData(doctypeField.schema, fieldPath, hstStore);
561
- payload[doctypeField.fieldname] = nestedData;
562
- }
563
- // Also collect array data for cardinality: 'many' fields
564
- const doctypeManyFields = resolvedSchema.filter(field => 'fieldtype' in field && field.fieldtype === 'Doctype' && isDoctypeMany(field));
565
- for (const field of doctypeManyFields) {
566
- const doctypeField = field;
567
- const fieldPath = `${basePath}.${doctypeField.fieldname}`;
568
- const arrayData = hstStore.get(fieldPath);
569
- if (Array.isArray(arrayData)) {
570
- payload[doctypeField.fieldname] = arrayData;
571
- }
572
- }
573
- return payload;
574
- }
package/dist/index.js CHANGED
@@ -1,23 +1,26 @@
1
1
  import { useStonecrop } from './composables/stonecrop';
2
2
  import { useOperationLog, useUndoRedoShortcuts, withBatch } from './composables/operation-log';
3
3
  import Doctype from './doctype';
4
- import { getGlobalTriggerEngine, markOperationIrreversible, registerGlobalAction, registerTransitionAction, setFieldRollback, triggerTransition, } from './field-triggers';
4
+ import { FieldTriggerEngine, getGlobalTriggerEngine, markOperationIrreversible, registerGlobalAction, registerTransitionAction, setFieldRollback, triggerTransition, } from './field-triggers';
5
5
  import plugin from './plugins';
6
6
  import Registry from './registry';
7
- import { Stonecrop } from './stonecrop';
7
+ import { Stonecrop, collectNestedData } from './stonecrop';
8
8
  import { HST, createHST } from './stores/hst';
9
9
  import { useOperationLogStore } from './stores/operation-log';
10
- // Export schema validator
11
10
  import { SchemaValidator, createValidator, validateSchema } from './schema-validator';
12
- export { ValidationSeverity } from './schema-validator';
11
+ import { ValidationSeverity } from './types/schema-validator';
12
+ // Export enum as value (enums need runtime export, not just type)
13
+ export { ValidationSeverity };
13
14
  export { Doctype, Registry, Stonecrop, useStonecrop,
14
15
  // HST exports for advanced usage
15
16
  HST, createHST,
16
17
  // Field trigger system exports
17
- getGlobalTriggerEngine, registerGlobalAction, registerTransitionAction, setFieldRollback, triggerTransition, markOperationIrreversible,
18
+ FieldTriggerEngine, getGlobalTriggerEngine, registerGlobalAction, registerTransitionAction, setFieldRollback, triggerTransition, markOperationIrreversible,
18
19
  // Schema validator exports
19
20
  SchemaValidator, createValidator, validateSchema,
20
21
  // Operation log exports
21
- useOperationLog, useOperationLogStore, useUndoRedoShortcuts, withBatch, };
22
+ useOperationLog, useOperationLogStore, useUndoRedoShortcuts, withBatch,
23
+ // Utility functions
24
+ collectNestedData, };
22
25
  // Default export is the Vue plugin
23
26
  export default plugin;
@@ -61,7 +61,10 @@ const plugin = {
61
61
  app.provide('$registry', registry);
62
62
  app.config.globalProperties.$registry = registry;
63
63
  // Create and provide a global Stonecrop instance
64
- const stonecrop = new Stonecrop(registry, undefined, options?.client ? { client: options.client } : undefined);
64
+ const stonecrop = new Stonecrop(registry);
65
+ if (options?.client) {
66
+ stonecrop.setClient(options.client);
67
+ }
65
68
  app.provide('$stonecrop', stonecrop);
66
69
  app.config.globalProperties.$stonecrop = stonecrop;
67
70
  // Initialize operation log store if Pinia is available
@@ -4,19 +4,7 @@
4
4
  * @packageDocumentation
5
5
  */
6
6
  import { getGlobalTriggerEngine } from './field-triggers';
7
- /**
8
- * Validation severity levels
9
- * @public
10
- */
11
- export var ValidationSeverity;
12
- (function (ValidationSeverity) {
13
- /** Blocking error that prevents save */
14
- ValidationSeverity["ERROR"] = "error";
15
- /** Advisory warning that allows save */
16
- ValidationSeverity["WARNING"] = "warning";
17
- /** Informational message */
18
- ValidationSeverity["INFO"] = "info";
19
- })(ValidationSeverity || (ValidationSeverity = {}));
7
+ import { ValidationSeverity } from './types/schema-validator';
20
8
  /**
21
9
  * Schema validator class
22
10
  * @public
@@ -1,78 +1,6 @@
1
- import { type SchemaTypes } from '@stonecrop/aform';
2
- import { Ref, type ComputedRef } from 'vue';
3
- import Registry from '../registry';
4
- import { Stonecrop } from '../stonecrop';
5
1
  import Doctype from '../doctype';
6
- import type { HSTNode } from '../stores/hst';
7
- import type { HSTOperation, OperationLogConfig, OperationLogSnapshot } from '../types/operation-log';
8
- /**
9
- * Operation Log API - nested object containing all operation log functionality
10
- * @public
11
- */
12
- export type OperationLogAPI = {
13
- operations: Ref<HSTOperation[]>;
14
- currentIndex: Ref<number>;
15
- undoRedoState: ComputedRef<{
16
- canUndo: boolean;
17
- canRedo: boolean;
18
- undoCount: number;
19
- redoCount: number;
20
- currentIndex: number;
21
- }>;
22
- canUndo: ComputedRef<boolean>;
23
- canRedo: ComputedRef<boolean>;
24
- undoCount: ComputedRef<number>;
25
- redoCount: ComputedRef<number>;
26
- undo: (hstStore: HSTNode) => boolean;
27
- redo: (hstStore: HSTNode) => boolean;
28
- startBatch: () => void;
29
- commitBatch: (description?: string) => string | null;
30
- cancelBatch: () => void;
31
- clear: () => void;
32
- getOperationsFor: (doctype: string, recordId?: string) => HSTOperation[];
33
- getSnapshot: () => OperationLogSnapshot;
34
- markIrreversible: (operationId: string, reason: string) => void;
35
- logAction: (doctype: string, actionName: string, recordIds?: string[], result?: 'success' | 'failure' | 'pending', error?: string) => string;
36
- configure: (options: Partial<OperationLogConfig>) => void;
37
- };
38
- /**
39
- * Base Stonecrop composable return type - includes operation log functionality
40
- * @public
41
- */
42
- export type BaseStonecropReturn = {
43
- stonecrop: Ref<Stonecrop | undefined>;
44
- operationLog: OperationLogAPI;
45
- };
46
- /**
47
- * HST-enabled Stonecrop composable return type
48
- * @public
49
- */
50
- export type HSTStonecropReturn = BaseStonecropReturn & {
51
- provideHSTPath: (fieldname: string, recordId?: string) => string;
52
- handleHSTChange: (changeData: HSTChangeData) => void;
53
- hstStore: Ref<HSTNode | undefined>;
54
- formData: Ref<Record<string, any>>;
55
- resolvedSchema: Ref<SchemaTypes[]>;
56
- loadNestedData: (parentPath: string, childDoctype: Doctype, recordId?: string) => Record<string, any>;
57
- collectRecordPayload: (doctype: Doctype, recordId: string) => Record<string, any>;
58
- createNestedContext: (basePath: string, childDoctype: Doctype) => {
59
- provideHSTPath: (fieldname: string) => string;
60
- handleHSTChange: (changeData: HSTChangeData) => void;
61
- };
62
- isLoading: Ref<boolean>;
63
- error: Ref<Error | null>;
64
- resolvedDoctype: Ref<Doctype | undefined>;
65
- };
66
- /**
67
- * HST Change data structure
68
- * @public
69
- */
70
- export type HSTChangeData = {
71
- path: string;
72
- value: any;
73
- fieldname: string;
74
- recordId?: string;
75
- };
2
+ import Registry from '../registry';
3
+ import type { BaseStonecropReturn, HSTStonecropReturn } from '../types/composable';
76
4
  /**
77
5
  * Unified Stonecrop composable - handles both general operations and HST reactive integration
78
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"stonecrop.d.ts","sourceRoot":"","sources":["../../../src/composables/stonecrop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stonecrop.d.ts","sourceRoot":"","sources":["../../../src/composables/stonecrop.ts"],"names":[],"mappings":"AAIA,OAAO,OAAO,MAAM,YAAY,CAAA;AAChC,OAAO,QAAQ,MAAM,aAAa,CAAA;AAGlC,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAkC,MAAM,qBAAqB,CAAA;AAIlH;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,mBAAmB,GAAG,kBAAkB,CAAA;AACxE;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE;IACrC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,OAAO,EAAE,OAAO,GAAG,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,kBAAkB,CAAA"}
@@ -1,33 +1,7 @@
1
1
  import type { SchemaTypes } from '@stonecrop/aform';
2
- import type { WorkflowMeta } from '@stonecrop/schema';
3
2
  import { Component } from 'vue';
4
- import type { UnknownMachineConfig } from 'xstate';
5
3
  import type { ImmutableDoctype } from './types';
6
- /**
7
- * Plain object representation of doctype configuration for serialization/API responses.
8
- * Compatible with the DoctypeMeta type from \@stonecrop/schema.
9
- * @public
10
- */
11
- export type DoctypeConfig = {
12
- /** Display name of the doctype */
13
- name: string;
14
- /** URL-friendly slug (kebab-case) */
15
- slug?: string;
16
- /** Database table name */
17
- tableName?: string;
18
- /** Field definitions */
19
- fields?: SchemaTypes[];
20
- /** Workflow configuration (XState format or simple WorkflowMeta) */
21
- workflow?: UnknownMachineConfig | WorkflowMeta;
22
- /** Actions and their field triggers */
23
- actions?: Record<string, string[]>;
24
- /** Parent doctype for inheritance */
25
- inherits?: string;
26
- /** Doctype to use for list views */
27
- listDoctype?: string;
28
- /** Parent doctype for child tables */
29
- parentDoctype?: string;
30
- };
4
+ import type { DoctypeConfig } from './types/doctype';
31
5
  /**
32
6
  * Doctype runtime class with Immutable.js collections for HST change tracking.
33
7
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"doctype.d.ts","sourceRoot":"","sources":["../../src/doctype.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAA;AAElD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG;IAC3B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wBAAwB;IACxB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,oBAAoB,GAAG,YAAY,CAAA;IAC9C,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAClC,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB;;;;OAIG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAE3C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAA;IAE/C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAE7C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;IAE9B;;;;;;;OAOG;gBAEF,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAClC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,EACtC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,EACpC,SAAS,CAAC,EAAE,SAAS;IAStB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAOjD;;;;;;;;;;;;;;OAcG;IACH,cAAc,IAAI,WAAW,EAAE;IAK/B;;;;;;;OAOG;IACH,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAK5C;;;;;;;;;;;;;;OAcG;IACH,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAsC3F;;;;;;;;;;;;;;OAcG;IACH,aAAa,CACZ,UAAU,EAAE,MAAM,GAEhB;QACA,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;QACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;QACxB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC7B,GACD,SAAS;IAQZ;;;;;;;;;;;;;;;OAeG;IACH,IAAI,IAAI,WAKP;CACD"}
1
+ {"version":3,"file":"doctype.d.ts","sourceRoot":"","sources":["../../src/doctype.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAG/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB;;;;OAIG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAE3C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAA;IAE/C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAE7C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;IAE9B;;;;;;;OAOG;gBAEF,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAClC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,EACtC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,EACpC,SAAS,CAAC,EAAE,SAAS;IAStB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAOjD;;;;;;;;;;;;;;OAcG;IACH,cAAc,IAAI,WAAW,EAAE;IAK/B;;;;;;;OAOG;IACH,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAK5C;;;;;;;;;;;;;;OAcG;IACH,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAsC3F;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAC7B;QACA,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;QACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;QACxB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC7B,GACD,SAAS;IAQZ;;;;;;;;;;;;;;;OAeG;IACH,IAAI,IAAI,WAKP;CACD"}
@@ -2,20 +2,17 @@ export type * from '@stonecrop/aform/types';
2
2
  export type * from '@stonecrop/atable/types';
3
3
  import { useStonecrop } from './composables/stonecrop';
4
4
  import { useOperationLog, useUndoRedoShortcuts, withBatch } from './composables/operation-log';
5
- import Doctype, { type DoctypeConfig } from './doctype';
6
- import { getGlobalTriggerEngine, markOperationIrreversible, registerGlobalAction, registerTransitionAction, setFieldRollback, triggerTransition } from './field-triggers';
5
+ import Doctype from './doctype';
6
+ import { FieldTriggerEngine, getGlobalTriggerEngine, markOperationIrreversible, registerGlobalAction, registerTransitionAction, setFieldRollback, triggerTransition } from './field-triggers';
7
7
  import plugin from './plugins';
8
8
  import Registry from './registry';
9
- import { type StonecropOptions, Stonecrop } from './stonecrop';
9
+ import { Stonecrop, collectNestedData } from './stonecrop';
10
10
  import { HST, createHST, type HSTNode } from './stores/hst';
11
11
  import { useOperationLogStore } from './stores/operation-log';
12
12
  import { SchemaValidator, createValidator, validateSchema } from './schema-validator';
13
+ import { ValidationSeverity } from './types/schema-validator';
13
14
  export type * from './types';
14
- export type { BaseStonecropReturn, HSTChangeData, HSTStonecropReturn, OperationLogAPI } from './composables/stonecrop';
15
- export type { FieldTriggerEngine } from './field-triggers';
16
- export type { FieldChangeContext, TransitionChangeContext, FieldTriggerExecutionResult, ActionExecutionResult, TransitionExecutionResult, FieldActionFunction, TransitionActionFunction, } from './types/field-triggers';
17
- export type { ValidationIssue, ValidationResult, ValidatorOptions } from './schema-validator';
18
- export { ValidationSeverity } from './schema-validator';
19
- export { Doctype, DoctypeConfig, Registry, Stonecrop, StonecropOptions, useStonecrop, HST, createHST, HSTNode, getGlobalTriggerEngine, registerGlobalAction, registerTransitionAction, setFieldRollback, triggerTransition, markOperationIrreversible, SchemaValidator, createValidator, validateSchema, useOperationLog, useOperationLogStore, useUndoRedoShortcuts, withBatch, };
15
+ export { ValidationSeverity };
16
+ export { Doctype, Registry, Stonecrop, useStonecrop, HST, createHST, HSTNode, FieldTriggerEngine, getGlobalTriggerEngine, registerGlobalAction, registerTransitionAction, setFieldRollback, triggerTransition, markOperationIrreversible, SchemaValidator, createValidator, validateSchema, useOperationLog, useOperationLogStore, useUndoRedoShortcuts, withBatch, collectNestedData, };
20
17
  export default plugin;
21
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,wBAAwB,CAAA;AAC3C,mBAAmB,yBAAyB,CAAA;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC9F,OAAO,OAAO,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EACN,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,MAAM,MAAM,WAAW,CAAA;AAC9B,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACrF,mBAAmB,SAAS,CAAA;AAC5B,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACtH,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,YAAY,EACX,kBAAkB,EAClB,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,GACxB,MAAM,wBAAwB,CAAA;AAE/B,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,EACN,OAAO,EACP,aAAa,EACb,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,YAAY,EAEZ,GAAG,EACH,SAAS,EACT,OAAO,EAEP,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EAEzB,eAAe,EACf,eAAe,EACf,cAAc,EAEd,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,GACT,CAAA;AAGD,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,wBAAwB,CAAA;AAC3C,mBAAmB,yBAAyB,CAAA;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC9F,OAAO,OAAO,MAAM,WAAW,CAAA;AAC/B,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,MAAM,MAAM,WAAW,CAAA;AAC9B,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAG7D,mBAAmB,SAAS,CAAA;AAG5B,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAE7B,OAAO,EACN,OAAO,EACP,QAAQ,EACR,SAAS,EACT,YAAY,EAEZ,GAAG,EACH,SAAS,EACT,OAAO,EAEP,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EAEzB,eAAe,EACf,eAAe,EACf,cAAc,EAEd,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EAET,iBAAiB,GACjB,CAAA;AAGD,eAAe,MAAM,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,MAAM,EAAY,MAAM,KAAK,CAAA;AA2BhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,QAAA,MAAM,MAAM,EAAE,MAkDb,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,MAAM,EAAY,MAAM,KAAK,CAAA;AA2BhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,QAAA,MAAM,MAAM,EAAE,MAqDb,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -7,68 +7,7 @@ import type { SchemaTypes } from '@stonecrop/aform';
7
7
  import type { List, Map as ImmutableMap } from 'immutable';
8
8
  import type { AnyStateNodeConfig } from 'xstate';
9
9
  import type Registry from './registry';
10
- /**
11
- * Validation severity levels
12
- * @public
13
- */
14
- export declare enum ValidationSeverity {
15
- /** Blocking error that prevents save */
16
- ERROR = "error",
17
- /** Advisory warning that allows save */
18
- WARNING = "warning",
19
- /** Informational message */
20
- INFO = "info"
21
- }
22
- /**
23
- * Validation issue
24
- * @public
25
- */
26
- export interface ValidationIssue {
27
- /** Severity level */
28
- severity: ValidationSeverity;
29
- /** Validation rule that failed */
30
- rule: string;
31
- /** Human-readable message */
32
- message: string;
33
- /** Doctype name */
34
- doctype?: string;
35
- /** Field name if applicable */
36
- fieldname?: string;
37
- /** Additional context */
38
- context?: Record<string, unknown>;
39
- }
40
- /**
41
- * Validation result
42
- * @public
43
- */
44
- export interface ValidationResult {
45
- /** Whether validation passed (no blocking errors) */
46
- valid: boolean;
47
- /** List of validation issues */
48
- issues: ValidationIssue[];
49
- /** Count of errors */
50
- errorCount: number;
51
- /** Count of warnings */
52
- warningCount: number;
53
- /** Count of info messages */
54
- infoCount: number;
55
- }
56
- /**
57
- * Schema validator options
58
- * @public
59
- */
60
- export interface ValidatorOptions {
61
- /** Registry instance for doctype lookups */
62
- registry?: Registry;
63
- /** Whether to validate Link field targets */
64
- validateLinkTargets?: boolean;
65
- /** Whether to validate workflow reachability */
66
- validateWorkflows?: boolean;
67
- /** Whether to validate action registration */
68
- validateActions?: boolean;
69
- /** Whether to validate required schema properties */
70
- validateRequiredProperties?: boolean;
71
- }
10
+ import type { ValidationResult, ValidatorOptions } from './types/schema-validator';
72
11
  /**
73
12
  * Schema validator class
74
13
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"schema-validator.d.ts","sourceRoot":"","sources":["../../src/schema-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-validator.d.ts","sourceRoot":"","sources":["../../src/schema-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAGhD,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AAEtC,OAAO,KAAK,EAAmB,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEnG;;;GAGG;AACH,qBAAa,eAAe;IAC3B,OAAO,CAAC,OAAO,CAA4B;IAE3C;;;OAGG;gBACS,OAAO,GAAE,gBAAqB;IAU1C;;;;;;;OAOG;IACH,QAAQ,CACP,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,EAAE,GAAG,SAAS,EACrD,QAAQ,CAAC,EAAE,kBAAkB,EAC7B,OAAO,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC9D,gBAAgB;IAyCnB;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwClC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA4D1B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAmFxB;;;OAGG;IACH,OAAO,CAAC,0BAA0B;CAuClC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,eAAe,CAKxG;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,EAAE,GAAG,SAAS,EACrD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,CAAC,EAAE,kBAAkB,EAC7B,OAAO,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC9D,gBAAgB,CAGlB"}