@beechcms/core 0.5.0 → 0.6.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/auth/hash-provider.d.ts.map +1 -1
  2. package/dist/auth/hash-provider.js +2 -0
  3. package/dist/auth/password-reset-token.repository.d.ts.map +1 -1
  4. package/dist/auth/password-reset-token.repository.js +2 -0
  5. package/dist/auth/session.repository.d.ts.map +1 -1
  6. package/dist/auth/session.repository.js +2 -0
  7. package/dist/auth/token-service.d.ts +2 -0
  8. package/dist/auth/token-service.d.ts.map +1 -1
  9. package/dist/auth/token-service.js +2 -0
  10. package/dist/auth/user.repository.d.ts +4 -1
  11. package/dist/auth/user.repository.d.ts.map +1 -1
  12. package/dist/auth/user.repository.js +2 -0
  13. package/dist/automations-grammar-words.d.ts.map +1 -1
  14. package/dist/automations-grammar-words.js +2 -0
  15. package/dist/automations.repository.interface.d.ts.map +1 -1
  16. package/dist/automations.repository.interface.js +2 -0
  17. package/dist/automations.runner.interface.d.ts.map +1 -1
  18. package/dist/automations.runner.interface.js +2 -0
  19. package/dist/automations.runner.stub.d.ts.map +1 -1
  20. package/dist/automations.runner.stub.js +2 -0
  21. package/dist/automations.types.d.ts +2 -0
  22. package/dist/automations.types.d.ts.map +1 -1
  23. package/dist/automations.types.js +2 -0
  24. package/dist/clock.d.ts.map +1 -1
  25. package/dist/clock.js +2 -0
  26. package/dist/content-scan.repository.d.ts.map +1 -1
  27. package/dist/content-scan.repository.js +2 -0
  28. package/dist/content.repository.d.ts +62 -0
  29. package/dist/content.repository.d.ts.map +1 -1
  30. package/dist/content.repository.js +18 -0
  31. package/dist/define-seed.d.ts.map +1 -1
  32. package/dist/define-seed.js +2 -0
  33. package/dist/demo-data.repository.d.ts +5 -0
  34. package/dist/demo-data.repository.d.ts.map +1 -0
  35. package/dist/demo-data.repository.js +3 -0
  36. package/dist/engine.d.ts +76 -0
  37. package/dist/engine.d.ts.map +1 -1
  38. package/dist/engine.js +246 -5
  39. package/dist/file-types.d.ts +13 -0
  40. package/dist/file-types.d.ts.map +1 -0
  41. package/dist/file-types.js +85 -0
  42. package/dist/id-generator.d.ts +7 -0
  43. package/dist/id-generator.d.ts.map +1 -1
  44. package/dist/id-generator.js +5 -0
  45. package/dist/idempotency.repository.d.ts.map +1 -1
  46. package/dist/idempotency.repository.js +2 -0
  47. package/dist/index.d.ts +12 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +14 -1
  50. package/dist/layout-permissions.d.ts +3 -0
  51. package/dist/layout-permissions.d.ts.map +1 -0
  52. package/dist/layout-permissions.js +11 -0
  53. package/dist/media.repository.d.ts.map +1 -1
  54. package/dist/media.repository.js +2 -0
  55. package/dist/notifications/notification-service.d.ts.map +1 -1
  56. package/dist/notifications/notification-service.js +2 -0
  57. package/dist/notifications/notification.repository.d.ts.map +1 -1
  58. package/dist/notifications/notification.repository.js +2 -9
  59. package/dist/observability/activity-log.repository.d.ts.map +1 -1
  60. package/dist/observability/activity-log.repository.js +2 -0
  61. package/dist/observability/activity-logger.d.ts +2 -2
  62. package/dist/observability/activity-logger.d.ts.map +1 -1
  63. package/dist/observability/activity-logger.js +2 -11
  64. package/dist/observability/analytics.repository.d.ts.map +1 -1
  65. package/dist/observability/analytics.repository.js +2 -0
  66. package/dist/policies.d.ts.map +1 -1
  67. package/dist/policies.js +2 -0
  68. package/dist/rate-limit/rate-limiter.d.ts.map +1 -1
  69. package/dist/rate-limit/rate-limiter.js +2 -0
  70. package/dist/relations.d.ts +28 -0
  71. package/dist/relations.d.ts.map +1 -0
  72. package/dist/relations.js +25 -0
  73. package/dist/richtext-render.d.ts.map +1 -1
  74. package/dist/richtext-render.js +2 -0
  75. package/dist/richtext.d.ts.map +1 -1
  76. package/dist/richtext.js +2 -0
  77. package/dist/scheduler.interface.d.ts.map +1 -1
  78. package/dist/scheduler.interface.js +2 -0
  79. package/dist/scheduler.stub.d.ts.map +1 -1
  80. package/dist/scheduler.stub.js +2 -0
  81. package/dist/schema-mutator.d.ts +22 -0
  82. package/dist/schema-mutator.d.ts.map +1 -0
  83. package/dist/schema-mutator.js +3 -0
  84. package/dist/search/search.repository.d.ts.map +1 -1
  85. package/dist/search/search.repository.js +2 -0
  86. package/dist/seed-ddl.d.ts +40 -0
  87. package/dist/seed-ddl.d.ts.map +1 -0
  88. package/dist/seed-ddl.js +100 -0
  89. package/dist/seed-layout.d.ts +117 -0
  90. package/dist/seed-layout.d.ts.map +1 -0
  91. package/dist/seed-layout.js +169 -0
  92. package/dist/seed-layout.repository.d.ts +18 -0
  93. package/dist/seed-layout.repository.d.ts.map +1 -0
  94. package/dist/seed-layout.repository.js +3 -0
  95. package/dist/seed-registry.d.ts +23 -1
  96. package/dist/seed-registry.d.ts.map +1 -1
  97. package/dist/seed-registry.js +105 -0
  98. package/dist/seed-validation.d.ts +23 -0
  99. package/dist/seed-validation.d.ts.map +1 -0
  100. package/dist/seed-validation.js +156 -0
  101. package/dist/seed.repository.d.ts +37 -0
  102. package/dist/seed.repository.d.ts.map +1 -0
  103. package/dist/seed.repository.js +3 -0
  104. package/dist/seeds.d.ts.map +1 -1
  105. package/dist/seeds.js +2 -0
  106. package/dist/site-settings.repository.d.ts +16 -0
  107. package/dist/site-settings.repository.d.ts.map +1 -0
  108. package/dist/site-settings.repository.js +3 -0
  109. package/dist/slug-utils.d.ts.map +1 -1
  110. package/dist/slug-utils.js +2 -0
  111. package/dist/storage.d.ts +12 -38
  112. package/dist/storage.d.ts.map +1 -1
  113. package/dist/storage.js +2 -0
  114. package/dist/types.d.ts +55 -1
  115. package/dist/types.d.ts.map +1 -1
  116. package/dist/types.js +2 -0
  117. package/dist/validation.d.ts +23 -17
  118. package/dist/validation.d.ts.map +1 -1
  119. package/dist/validation.js +428 -379
  120. package/dist/webhook-validation.d.ts +3 -0
  121. package/dist/webhook-validation.d.ts.map +1 -0
  122. package/dist/webhook-validation.js +6 -0
  123. package/dist/widget/widget.repository.d.ts.map +1 -1
  124. package/dist/widget/widget.repository.js +2 -0
  125. package/package.json +5 -4
package/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export type BranchType = 'text' | 'number' | 'boolean' | 'json' | 'date' | 'richtext' | 'file' | 'tags';
1
+ import type { FileAccept } from './file-types.js';
2
+ export type BranchType = 'text' | 'number' | 'boolean' | 'json' | 'date' | 'richtext' | 'file' | 'tags' | 'relation';
2
3
  /** Configurazioni specializzate per il tipo di branch 'number' */
3
4
  export interface NumberFieldOptions {
4
5
  /** Stile di presentazione visiva. Default: 'decimal' */
@@ -22,12 +23,42 @@ export interface NumberFieldOptions {
22
23
  /** Incremento del valore (es. 1 per interi stretti, 0.5 per mezzi passi) */
23
24
  step?: number;
24
25
  }
26
+ /** Configurazioni specializzate per il tipo di branch 'file' */
27
+ export interface FileFieldOptions {
28
+ /**
29
+ * Tipo semantico di file accettato.
30
+ * - 'image': immagini renderizzabili come anteprima
31
+ * - 'document': PDF/Office/text
32
+ * - 'any': qualsiasi file (default — UI mostra icona generica, nessun tentativo di render immagine)
33
+ * Default: 'any'.
34
+ */
35
+ accept?: FileAccept;
36
+ /**
37
+ * Dimensione massima del singolo file in byte.
38
+ * NOTA: il backend /upload applica MAX_FILE_SIZE_BYTES (5MB) globale —
39
+ * questo campo è informativo per la UI; non viene enforced in upload.
40
+ * Default: 5_242_880.
41
+ */
42
+ maxSize?: number;
43
+ }
25
44
  /** Branch: definizione di una proprietà. alias = nome colonna SQL. */
26
45
  export interface Branch {
46
+ /**
47
+ * Stable logical id of this branch, e.g. 'br_01', 'br_title'.
48
+ * Format: ^br_[A-Za-z0-9]+$ — enforced by SeedRegistry at boot (sprint 04-pre).
49
+ *
50
+ * Used by every persistence layer that needs a reference that survives alias renames
51
+ * (FTS triggers, draft indexing, layout JSON, automations). NEVER use alias for that purpose.
52
+ *
53
+ * The Botanical Engine still emits alias as the SQL column name; id is a logical handle.
54
+ */
55
+ id: string;
27
56
  /** Alias human-readable, usato nel payload API e come nome colonna SQL nella tabella dedicata */
28
57
  alias: string;
29
58
  /** Etichetta per la UI */
30
59
  label: string;
60
+ /** Testo di aiuto opzionale mostrato come tooltip accanto al label nella form. UI-only, ignorato dall'engine. */
61
+ hint?: string;
31
62
  /** Tipo del valore */
32
63
  type: BranchType;
33
64
  /**
@@ -70,6 +101,25 @@ export interface Branch {
70
101
  };
71
102
  /** Opzioni avanzate per i campi numerici. Ignorato se type !== 'number' */
72
103
  numberOptions?: NumberFieldOptions;
104
+ /** Opzioni avanzate per i campi file. Ignorato se type !== 'file' */
105
+ fileOptions?: FileFieldOptions;
106
+ /**
107
+ * Slug of the referenced Seed (without the `content_` prefix).
108
+ * REQUIRED when `type === 'relation'`. Ignored otherwise.
109
+ * Example: 'team' → references table `content_team(id)`.
110
+ */
111
+ targetSeed?: string;
112
+ /**
113
+ * SQLite ON DELETE rule applied to the foreign-key constraint.
114
+ * Defaults to 'SET NULL' when `type === 'relation'` and no value is provided.
115
+ * - CASCADE : delete dependent rows when the parent is deleted.
116
+ * - SET NULL : null out the column when the parent is deleted (default).
117
+ * - RESTRICT : block parent deletion while dependent rows exist.
118
+ *
119
+ * NOTE: When `multiple: true` (introduced in Sprint 5 for many-to-many), this
120
+ * rule applies to the FK from the junction table to the target table.
121
+ */
122
+ onDelete?: 'CASCADE' | 'SET NULL' | 'RESTRICT';
73
123
  }
74
124
  /** Dashboard-specific config embedded in a Seed. All fields optional — defaults applied by the dashboard. */
75
125
  export interface DashboardSeedConfig {
@@ -120,6 +170,10 @@ export interface Seed {
120
170
  branches: Branch[];
121
171
  /** Optional dashboard-specific UI config. Ignored by the Botanical Engine. */
122
172
  dashboard?: DashboardSeedConfig;
173
+ /** Custom editor form layout. Absent when no override is stored.
174
+ * Populated server-side by GET /api/schema. Ignored by the Botanical Engine.
175
+ * Type matches FormLayout from seed-layout.ts — kept as unknown here to avoid circular imports. */
176
+ layout?: unknown;
123
177
  }
124
178
  export type FilterOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with' | 'is_empty' | 'is_not_empty' | 'in' | 'not_in' | 'has_tag' | 'has_any_tag' | 'has_all_tags';
125
179
  export type FilterType = 'text' | 'number' | 'date' | 'boolean' | 'tags' | 'select' | 'system' | 'json';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1 +1,3 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Copyright (c) 2024–2026 Flavio De Musso
1
3
  export {};
@@ -1,4 +1,6 @@
1
- import type { Seed } from './types.js';
1
+ import type { Branch, Seed } from './types.js';
2
+ import type { FileAccept } from './file-types.js';
3
+ import type { IIdGenerator } from './id-generator.js';
2
4
  export interface ValidationDetail {
3
5
  field: string;
4
6
  expected: string;
@@ -11,6 +13,13 @@ export interface ValidateSeedPayloadOptions {
11
13
  requireAtLeastOneValidField?: boolean;
12
14
  enforceRequiredFields?: boolean;
13
15
  maxTextLength?: number;
16
+ /**
17
+ * Required when the seed has branches of type `'relation'`.
18
+ * Must be the same IIdGenerator instance used for id generation so that
19
+ * swapping implementations (e.g. ULIDs) automatically updates validation.
20
+ * Do NOT pass a concrete class — inject via the middleware / factory.
21
+ */
22
+ idGenerator?: IIdGenerator;
14
23
  }
15
24
  export interface ValidateSeedPayloadResult {
16
25
  data: Record<string, unknown>;
@@ -20,25 +29,22 @@ export interface ValidateSeedPayloadResult {
20
29
  requiredFieldsMissing: string[];
21
30
  hasAnyValidField: boolean;
22
31
  }
32
+ declare const STATUS_VALUES: readonly ["draft", "review", "published"];
33
+ export declare function resolveFileOptions(branch: Branch): {
34
+ accept: FileAccept;
35
+ maxSize: number;
36
+ };
23
37
  /**
24
- * Common foundation for schema-driven validation and sanitization of payloads.
25
- * Used by the Public API and reusable in the Botanical Engine.
26
- *
27
- * Mandatory execution order at the time of writing:
28
- * validate raw hash (privacy policy) store
29
- * Hashing occurs AFTER validation, not before.
30
- * This ensures that the validated value is the original raw value,
31
- * not the digest — avoiding false failures on fields with formats (e.g., email).
38
+ * Schema-driven validation and sanitization of a seed payload.
39
+ * - Drops unknown aliases (reports them as details).
40
+ * - Runs branch-specific schemas to coerce / sanitize known values.
41
+ * - Optionally enforces required-on-create / required-on-update branches.
42
+ * - Never throws on malformed input — returns a structured result.
32
43
  */
33
44
  export declare function validateAndSanitizeSeedPayload(seed: Seed, payload: Record<string, unknown>, options?: ValidateSeedPayloadOptions): ValidateSeedPayloadResult;
34
45
  /**
35
- * Validates content status supported by the CMS.
36
- */
37
- export declare function isValidContentStatus(value: unknown): value is 'draft' | 'review' | 'published';
38
- /**
39
- * Full Zod runtime compiler:
40
- * - compile per-seed/per-operation with cache
41
- * - strict unknown aliases
42
- * - required fields by operation
46
+ * Type-guard for the content status enum.
43
47
  */
48
+ export declare function isValidContentStatus(value: unknown): value is (typeof STATUS_VALUES)[number];
49
+ export {};
44
50
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,IAAI,EAAE,MAAM,YAAY,CAAA;AAG9C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC/B,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,qBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAgkBD;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,GAAE,0BAA+B,GACvC,yBAAyB,CAyC3B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,QAAQ,GAAG,WAAW,CAE9F;AAED;;;;;GAKG"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC/B,2BAA2B,CAAC,EAAE,OAAO,CAAA;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,qBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAuBD,QAAA,MAAM,aAAa,2CAA4C,CAAA;AAmD/D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAM1F;AA8hBD;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,GAAE,0BAA+B,GACvC,yBAAyB,CAqD3B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAE5F"}