@murumets-ee/entity 0.2.2 → 0.4.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.
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as _$drizzle_orm0 from "drizzle-orm";
2
2
  import { SQL } from "drizzle-orm";
3
3
  import * as _$drizzle_orm_pg_core0 from "drizzle-orm/pg-core";
4
- import { PgTable, PgTableWithColumns } from "drizzle-orm/pg-core";
4
+ import { PgTable } from "drizzle-orm/pg-core";
5
5
  import { PostgresJsDatabase } from "drizzle-orm/postgres-js";
6
6
 
7
7
  //#region src/admin-config.d.ts
@@ -155,21 +155,22 @@ interface BlocksField extends BaseFieldConfig {
155
155
  type FieldConfig = IdField | TextField | NumberField | BooleanField | DateField | SelectField | ReferenceField | MediaField | RichTextField | SlugField | JsonField | BlocksField;
156
156
  //#endregion
157
157
  //#region src/types/infer.d.ts
158
+ /**
159
+ * Recursive JSON-compatible value, for `field.json()` (jsonb column).
160
+ * Mirrors what Postgres jsonb can store: primitives, arrays, or objects.
161
+ */
162
+ type JsonValue = string | number | boolean | null | JsonValue[] | {
163
+ [key: string]: JsonValue;
164
+ };
158
165
  /**
159
166
  * Maps a single FieldConfig to its TypeScript output type.
160
167
  * Each branch is a shallow comparison — no recursion.
161
168
  */
162
- type FieldToTS<F extends FieldConfig> = F extends IdField ? string : F extends TextField ? string : F extends NumberField ? number : F extends BooleanField ? boolean : F extends DateField ? Date | string : F extends SelectField ? F['options'][number] : F extends ReferenceField ? F['cardinality'] extends 'many' ? string[] : string : F extends MediaField ? string : F extends RichTextField ? Record<string, unknown>[] : F extends SlugField ? string : F extends JsonField ? Record<string, unknown> : F extends BlocksField ? Array<{
169
+ type FieldToTS<F extends FieldConfig> = F extends IdField ? string : F extends TextField ? string : F extends NumberField ? number : F extends BooleanField ? boolean : F extends DateField ? Date | string : F extends SelectField ? F['options'][number] : F extends ReferenceField ? F['cardinality'] extends 'many' ? string[] : string : F extends MediaField ? string : F extends RichTextField ? Record<string, unknown>[] : F extends SlugField ? string : F extends JsonField ? JsonValue : F extends BlocksField ? Array<{
163
170
  _block: string;
164
171
  _id: string;
165
172
  [key: string]: unknown;
166
173
  }> : never;
167
- /**
168
- * Extract keys of fields where `required` is literally `true`.
169
- * Fields without `required` or with `required?: false` are optional.
170
- */
171
- type RequiredFieldKeys<Fields extends Record<string, FieldConfig>> = { [K in keyof Fields]: Fields[K]['required'] extends true ? K : never }[keyof Fields];
172
- type OptionalFieldKeys<Fields extends Record<string, FieldConfig>> = { [K in keyof Fields]: Fields[K]['required'] extends true ? never : K }[keyof Fields];
173
174
  /**
174
175
  * Maps a full field record to its TypeScript output type.
175
176
  * Required fields are non-nullable; optional fields are `T | null | undefined`.
@@ -180,18 +181,7 @@ type OptionalFieldKeys<Fields extends Record<string, FieldConfig>> = { [K in key
180
181
  */
181
182
  type InferEntityDTO<Fields extends Record<string, FieldConfig>> = {
182
183
  id: string;
183
- } & { [K in Exclude<RequiredFieldKeys<Fields>, 'id'>]: FieldToTS<Fields[K]> } & { [K in OptionalFieldKeys<Fields>]?: FieldToTS<Fields[K]> | null };
184
- /** Fields that are auto-generated and should not appear in create input. */
185
- type AutoGeneratedFields = 'id' | 'createdAt' | 'updatedAt' | 'createdBy' | 'updatedBy' | '_version';
186
- /**
187
- * The input type for creating an entity.
188
- * - Omits auto-generated fields (id, timestamps, version)
189
- * - Required fields stay required; optional fields stay optional
190
- */
191
- type InferCreateInput<Fields extends Record<string, FieldConfig>> = Omit<{ [K in Exclude<RequiredFieldKeys<Fields>, 'id'>]: FieldToTS<Fields[K]> } & { [K in OptionalFieldKeys<Fields>]?: FieldToTS<Fields[K]> | null }, AutoGeneratedFields>;
192
- /** Fields that cannot be changed after creation. */
193
- type ImmutableFields = 'id' | 'createdAt' | 'createdBy';
194
- type InferUpdateInput<Fields extends Record<string, FieldConfig>> = Partial<Omit<InferEntityDTO<Fields>, ImmutableFields>>;
184
+ } & { [K in keyof Fields as K extends 'id' ? never : Fields[K]['required'] extends true ? K : never]: FieldToTS<Fields[K]> } & { [K in keyof Fields as Fields[K]['required'] extends true ? never : K]?: FieldToTS<Fields[K]> | null };
195
185
  /**
196
186
  * Behavior field types use `type` (not `interface`) because interfaces
197
187
  * lack implicit index signatures needed for Record<string, FieldConfig>.
@@ -242,7 +232,7 @@ type InferEntity<E> = E extends {
242
232
  } ? InferEntityDTO<F> : never;
243
233
  //#endregion
244
234
  //#region src/behaviors/types.d.ts
245
- interface Behavior<F extends Record<string, FieldConfig> = Record<string, FieldConfig>> {
235
+ interface Behavior<F extends Record<string, FieldConfig> = {}> {
246
236
  name: string;
247
237
  fields?: F;
248
238
  hooks?: {
@@ -254,7 +244,6 @@ interface Behavior<F extends Record<string, FieldConfig> = Record<string, FieldC
254
244
  afterDelete?: (id: string) => Promise<void>;
255
245
  };
256
246
  }
257
- type BehaviorFactory = (...args: unknown[]) => Behavior;
258
247
  //#endregion
259
248
  //#region src/behaviors/auditable.d.ts
260
249
  declare function auditable(): Behavior<AuditableFields>;
@@ -313,7 +302,9 @@ declare const field: {
313
302
  /**
314
303
  * Select field (enum)
315
304
  * Preserves literal option types for type inference.
305
+ * String options → varchar column, number options → integer column.
316
306
  * e.g. field.select({ options: ['news', 'tutorial'] }) infers 'news' | 'tutorial'
307
+ * e.g. field.select({ options: [0, 1, 2, 3] }) infers 0 | 1 | 2 | 3
317
308
  */
318
309
  select: <const O extends readonly string[], const C extends Omit<Partial<SelectField>, "options"> = {}>(config: {
319
310
  options: O;
@@ -491,7 +482,7 @@ declare function decodeCursor(encoded: string): DecodedCursor | null;
491
482
  * @param cursor - Decoded and validated cursor
492
483
  * @returns SQL condition, or null if the field doesn't exist on the table
493
484
  */
494
- declare function buildCursorCondition(table: PgTableWithColumns<any>, cursor: DecodedCursor): SQL | null;
485
+ declare function buildCursorCondition(table: PgTable, cursor: DecodedCursor): SQL | null;
495
486
  //#endregion
496
487
  //#region src/define-entity.d.ts
497
488
  /**
@@ -540,13 +531,24 @@ interface Entity<AllFields extends Record<string, FieldConfig> = Record<string,
540
531
  /** Admin UI configuration — controls sidebar, list, and form display */
541
532
  admin?: EntityAdminConfig;
542
533
  allFields: AllFields;
543
- hooks: Behavior['hooks'];
544
534
  }
545
535
  /**
546
536
  * Extract and intersect behavior field types from a behaviors tuple.
547
537
  * Walks the tuple recursively (depth bounded by number of behaviors, max ~5).
538
+ *
539
+ * Inferring `F` via `Behavior<infer F1>` is unreliable for inline hook-only
540
+ * behaviors: when the literal has no `fields` property, TS falls back to the
541
+ * `Behavior` constraint bound (`Record<string, FieldConfig>`) rather than the
542
+ * declared default. That bound would widen every `AllFields[K]` access to
543
+ * `FieldConfig` and break per-field type inference downstream (e.g. reference
544
+ * cardinality, select option literals). Instead, derive the field map from
545
+ * the behavior's `fields` property directly — if absent/undefined, contribute
546
+ * nothing (empty object) to the intersection.
548
547
  */
549
- type ExtractBehaviorFields<B extends Behavior[]> = B extends [Behavior<infer F1>, ...infer Rest extends Behavior[]] ? F1 & ExtractBehaviorFields<Rest> : {};
548
+ type BehaviorFieldsOf<B> = B extends {
549
+ fields?: infer F;
550
+ } ? F extends Record<string, FieldConfig> ? F : {} : {};
551
+ type ExtractBehaviorFields<B extends Behavior[]> = B extends [infer B1, ...infer Rest extends Behavior[]] ? BehaviorFieldsOf<B1> & ExtractBehaviorFields<Rest> : {};
550
552
  /**
551
553
  * Define an entity with full type inference.
552
554
  *
@@ -569,6 +571,40 @@ declare function defineEntity<F extends Record<string, FieldConfig>, const B ext
569
571
  id: IdField;
570
572
  } & ExtractBehaviorFields<B> & F>;
571
573
  //#endregion
574
+ //#region src/shared/entity-data-ops.d.ts
575
+ /**
576
+ * Security context resolved per-request. Provided by the consumer
577
+ * (e.g., via React.cache() in Next.js, or runAsCli for CLI).
578
+ * The entity package has zero knowledge of how this is resolved.
579
+ */
580
+ interface SecurityContext {
581
+ user: {
582
+ id: string;
583
+ groups: string[];
584
+ };
585
+ checker: (role: string, resource: string, action: string) => boolean;
586
+ scope?: {
587
+ type: string;
588
+ id: string;
589
+ };
590
+ }
591
+ /**
592
+ * Function that resolves the current request's security context.
593
+ * Injected at construction time — the entity package never imports
594
+ * @murumets-ee/core or any framework-specific code.
595
+ *
596
+ * Returns undefined only when intentionally skipping enforcement
597
+ * (should not happen in production — throw ForbiddenError instead).
598
+ */
599
+ type ContextResolver = () => SecurityContext | undefined | Promise<SecurityContext | undefined>;
600
+ /**
601
+ * Thrown when a user lacks permission for an entity operation.
602
+ * Consumers (api-handler) catch this and return HTTP 403.
603
+ */
604
+ declare class ForbiddenError extends Error {
605
+ constructor(message: string);
606
+ }
607
+ //#endregion
572
608
  //#region src/refs/find-usages.d.ts
573
609
  interface EntityUsage {
574
610
  sourceEntity: string;
@@ -585,13 +621,6 @@ declare class ReferencedEntityError extends Error {
585
621
  }
586
622
  //#endregion
587
623
  //#region src/schema-generator.d.ts
588
- type AnyTable = PgTable<any>;
589
- /**
590
- * Convert a field config to a Drizzle column.
591
- *
592
- * @param nullable - When true, skips notNull and default constraints.
593
- * Used for translation table columns (translations are partial overrides).
594
- */
595
624
  /**
596
625
  * Generate a runtime Drizzle schema from an entity definition.
597
626
  * Every field becomes its own column — no JSONB.
@@ -629,7 +658,7 @@ declare function generateSchema(entity: Entity): _$drizzle_orm_pg_core0.PgTableW
629
658
  * DELETE CASCADE`. Callers that only need the table shape for query
630
659
  * building (core/app.ts, content/plugin.ts) can omit `parent`.
631
660
  */
632
- declare function generateTranslationSchema(entity: Entity, parent?: AnyTable): _$drizzle_orm_pg_core0.PgTableWithColumns<{
661
+ declare function generateTranslationSchema(entity: Entity, parent?: PgTable): _$drizzle_orm_pg_core0.PgTableWithColumns<{
633
662
  name: string;
634
663
  schema: undefined;
635
664
  columns: {
@@ -667,7 +696,7 @@ declare function hasBlocksFields(entity: Entity): boolean;
667
696
  * `parent` is optional — when provided, emits a `.references()` FK (for
668
697
  * migration generation); query-runtime callers can omit it.
669
698
  */
670
- declare function generateLayoutSchema(entity: Entity, parent?: AnyTable): _$drizzle_orm_pg_core0.PgTableWithColumns<{
699
+ declare function generateLayoutSchema(entity: Entity, parent?: PgTable): _$drizzle_orm_pg_core0.PgTableWithColumns<{
671
700
  name: string;
672
701
  schema: undefined;
673
702
  columns: {
@@ -813,7 +842,7 @@ declare function needsLocaleStatus(entity: Entity): boolean;
813
842
  */
814
843
  declare function isPublishable(entity: Entity): boolean;
815
844
  /** Per-locale publish status table for publishable + translatable entities. */
816
- declare function generateLocaleStatusSchema(entity: Entity, parent: AnyTable): _$drizzle_orm_pg_core0.PgTableWithColumns<{
845
+ declare function generateLocaleStatusSchema(entity: Entity, parent: PgTable): _$drizzle_orm_pg_core0.PgTableWithColumns<{
817
846
  name: string;
818
847
  schema: undefined;
819
848
  columns: {
@@ -910,7 +939,7 @@ declare function generateLocaleStatusSchema(entity: Entity, parent: AnyTable): _
910
939
  dialect: "pg";
911
940
  }>;
912
941
  /** Drafts overlay table for publishable entities. */
913
- declare function generateDraftsSchema(entity: Entity, parent: AnyTable): _$drizzle_orm_pg_core0.PgTableWithColumns<{
942
+ declare function generateDraftsSchema(entity: Entity, parent: PgTable): _$drizzle_orm_pg_core0.PgTableWithColumns<{
914
943
  name: string;
915
944
  schema: undefined;
916
945
  columns: {
@@ -1060,7 +1089,7 @@ declare function generateDraftsSchema(entity: Entity, parent: AnyTable): _$drizz
1060
1089
  dialect: "pg";
1061
1090
  }>;
1062
1091
  /** Versions history table for versionable entities. */
1063
- declare function generateVersionsSchema(entity: Entity, parent: AnyTable): _$drizzle_orm_pg_core0.PgTableWithColumns<{
1092
+ declare function generateVersionsSchema(entity: Entity, parent: PgTable): _$drizzle_orm_pg_core0.PgTableWithColumns<{
1064
1093
  name: string;
1065
1094
  schema: undefined;
1066
1095
  columns: {
@@ -1430,7 +1459,7 @@ declare function hasTranslatableBlocks(entity: Entity): boolean;
1430
1459
  * pointing at the corresponding `{entity}_layout` table (for migration
1431
1460
  * generation).
1432
1461
  */
1433
- declare function generateLayoutTranslationSchema(entity: Entity, layoutParent?: AnyTable): _$drizzle_orm_pg_core0.PgTableWithColumns<{
1462
+ declare function generateLayoutTranslationSchema(entity: Entity, layoutParent?: PgTable): _$drizzle_orm_pg_core0.PgTableWithColumns<{
1434
1463
  name: string;
1435
1464
  schema: undefined;
1436
1465
  columns: {
@@ -1521,7 +1550,7 @@ declare function generateLayoutTranslationSchema(entity: Entity, layoutParent?:
1521
1550
  * internal tables are added separately by reading each plugin's
1522
1551
  * `tables` field.
1523
1552
  */
1524
- declare function buildEntitySchemaMap(entities: Entity[]): Record<string, AnyTable>;
1553
+ declare function buildEntitySchemaMap(entities: Entity[]): Record<string, PgTable>;
1525
1554
  //#endregion
1526
- export { type AuditableFields, type Behavior, type BehaviorFactory, type BlockDefinitionRef, type BlocksField, type BooleanField, CountCache, type CountCacheLike, type CursorInput, type DateField, type Entity, type EntityAdminConfig, type EntityDefinition, type EntityInput, type EntityUsage, type FieldConfig, type FieldToTS, type HierarchicalFields, type IdField, type InferCreateInput, type InferEntity, type InferEntityDTO, type InferUpdateInput, type JsonField, type MediaField, type NumberField, type PublishableFields, type ReferenceField, ReferencedEntityError, type RevisionableFields, type RichTextField, type SelectField, type SlugField, type SluggableFields, type SluggableOptions, type TextField, auditable, behavior, buildCursorCondition, buildEntitySchemaMap, decodeCursor, defineEntity, encodeCursor, estimateRowCount, field, generateContentLocksSchema, generateDraftsSchema, generateLayoutSchema, generateLayoutTranslationSchema, generateLocaleStatusSchema, generateSchema, generateTranslationSchema, generateVersionsSchema, hasBlocksFields, hasTranslatableBlocks, hierarchical, isPublishable, isVersionable, needsLocaleStatus, publishable, revisionable, sluggable, slugify, timestamped };
1555
+ export { type AuditableFields, type Behavior, type BlockDefinitionRef, type BlocksField, type BooleanField, type ContextResolver, CountCache, type CountCacheLike, type CursorInput, type DateField, type Entity, type EntityAdminConfig, type EntityDefinition, type EntityInput, type EntityUsage, type FieldConfig, type FieldToTS, ForbiddenError, type IdField, type InferEntity, type InferEntityDTO, type JsonField, type MediaField, type NumberField, type PublishableFields, type ReferenceField, ReferencedEntityError, type RichTextField, type SecurityContext, type SelectField, type SlugField, type TextField, auditable, behavior, buildCursorCondition, buildEntitySchemaMap, decodeCursor, defineEntity, encodeCursor, estimateRowCount, field, generateContentLocksSchema, generateDraftsSchema, generateLayoutSchema, generateLayoutTranslationSchema, generateLocaleStatusSchema, generateSchema, generateTranslationSchema, generateVersionsSchema, hasBlocksFields, hasTranslatableBlocks, hierarchical, isPublishable, isVersionable, needsLocaleStatus, publishable, revisionable, sluggable, slugify, timestamped };
1527
1556
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/admin-config.ts","../src/fields/base.ts","../src/types/infer.ts","../src/behaviors/types.ts","../src/behaviors/auditable.ts","../src/behaviors/hierarchical.ts","../src/behaviors/publishable.ts","../src/behaviors/revisionable.ts","../src/behaviors/sluggable.ts","../src/fields/builders.ts","../src/behaviors/timestamped.ts","../src/behaviors/index.ts","../src/count-cache.ts","../src/count-estimate.ts","../src/cursor.ts","../src/define-entity.ts","../src/refs/find-usages.ts","../src/refs/errors.ts","../src/schema-generator.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/admin-config.ts","../src/fields/base.ts","../src/types/infer.ts","../src/behaviors/types.ts","../src/behaviors/auditable.ts","../src/behaviors/hierarchical.ts","../src/behaviors/publishable.ts","../src/behaviors/revisionable.ts","../src/behaviors/sluggable.ts","../src/fields/builders.ts","../src/behaviors/timestamped.ts","../src/behaviors/index.ts","../src/count-cache.ts","../src/count-estimate.ts","../src/cursor.ts","../src/define-entity.ts","../src/shared/entity-data-ops.ts","../src/refs/find-usages.ts","../src/refs/errors.ts","../src/schema-generator.ts"],"mappings":";;;;;;;;;;;UAIiB,iBAAA;;EAEf,KAAA;EAFe;EAIf,KAAA;;EAEA,aAAA;EAJA;EAMA,IAAA;EAFA;EAIA,WAAA;EAAA;EAEA,MAAA;EAEA;EAAA,YAAA;EAIA;EAFA,aAAA;EAEkC;EAAlC,cAAA,GAAiB,MAAA;IAAiB,KAAA;IAAgB,WAAA;IAAsB,WAAA;EAAA;EAQxE;EANA,WAAA;EAUA;EARA,oBAAA;EAoBA;EAlBA,QAAA;EAuBiB;EArBjB,UAAA;;EAEA,aAAA;;EAEA,SAAA;EC7B8B;;;;;EDmC9B,MAAA;EC/BA;;;;;EDqCA,YAAA;ECjCM;AAIR;;;EDkCE,iBAAA;AAAA;;;;;;;UC9Ce,eAAA;EACf,QAAA;EACA,OAAA;EACA,YAAA;EACA,OAAA;EACA,MAAA;EACA,MAAA;IACE,IAAA;IACA,IAAA;EAAA;AAAA;AAAA,UAIa,OAAA,SAAgB,eAAA;EAC/B,IAAA;AAAA;AAAA,UAGe,SAAA,SAAkB,eAAA;EACjC,IAAA;EACA,SAAA;EACA,SAAA;EACA,OAAA,GAAU,MAAA;AAAA;AAAA,UAGK,WAAA,SAAoB,eAAA;EACnC,IAAA;EACA,GAAA;EACA,GAAA;EACA,OAAA;AAAA;AAAA,UAGe,YAAA,SAAqB,eAAA;EACpC,IAAA;AAAA;AAAA,UAGe,SAAA,SAAkB,eAAA;EACjC,IAAA;EACA,OAAA,GAAU,IAAA;EACV,OAAA,GAAU,IAAA;AAAA;AAAA,UAGK,WAAA,SAAoB,eAAA;EACnC,IAAA;EACA,OAAA;AAAA;AAAA,UAGe,cAAA,SAAuB,eAAA;EACtC,IAAA;EACA,MAAA;EACA,WAAA;EACA,QAAA;AAAA;AAAA,UAGe,UAAA,SAAmB,eAAA;EAClC,IAAA;EACA,MAAA;EACA,OAAA;AAAA;AAAA,UAGe,aAAA,SAAsB,eAAA;EACrC,IAAA;EACA,MAAA;AAAA;AAAA,UAGe,SAAA,SAAkB,eAAA;EACjC,IAAA;EACA,IAAA;EACA,MAAA;AAAA;;;;;UAOe,kBAAA;EACf,IAAA;EACA,MAAA,EAAQ,MAAA,SAAe,WAAA;AAAA;;;;;;;;;UAWR,SAAA,SAAkB,eAAA;EACjC,IAAA;AAAA;AAAA,UAGe,WAAA,SAAoB,eAAA;EACnC,IAAA;EACA,MAAA,WAAiB,kBAAA;EACjB,GAAA;EACA,GAAA;EACA,SAAA;AAAA;AAAA,KAGU,WAAA,GACR,OAAA,GACA,SAAA,GACA,WAAA,GACA,YAAA,GACA,SAAA,GACA,WAAA,GACA,cAAA,GACA,UAAA,GACA,aAAA,GACA,SAAA,GACA,SAAA,GACA,WAAA;;;;;;;KCjFQ,SAAA,sCAKR,SAAA;EAAA,CACG,GAAA,WAAc,SAAA;AAAA;;;;;KAUT,SAAA,WAAoB,WAAA,IAAe,CAAA,SAAU,OAAA,YAErD,CAAA,SAAU,SAAA,YAER,CAAA,SAAU,WAAA,YAER,CAAA,SAAU,YAAA,aAER,CAAA,SAAU,SAAA,GACR,IAAA,YACA,CAAA,SAAU,WAAA,GACR,CAAA,sBACA,CAAA,SAAU,cAAA,GACR,CAAA,qDAGA,CAAA,SAAU,UAAA,YAER,CAAA,SAAU,aAAA,GACR,MAAA,sBACA,CAAA,SAAU,SAAA,YAER,CAAA,SAAU,SAAA,GACR,SAAA,GACA,CAAA,SAAU,WAAA,GACR,KAAA;EAAQ,MAAA;EAAgB,GAAA;EAAA,CAAc,GAAA;AAAA;;;;;;;;;KAsCpD,cAAA,gBAA8B,MAAA,SAAe,WAAA;EAAkB,EAAA;AAAA,kBAC7D,MAAA,IAAU,CAAA,wBAElB,MAAA,CAAO,CAAA,6BACL,CAAA,WACQ,SAAA,CAAU,MAAA,CAAO,CAAA,qBAEnB,MAAA,IAAU,MAAA,CAAO,CAAA,qCAAsC,CAAA,IAC/D,SAAA,CAAU,MAAA,CAAO,CAAA;;;;;;;;;ADtFvB;AAAA,KCkJY,iBAAA;EACV,MAAA,EAAQ,WAAA;IAAgB,OAAA;EAAA;EACxB,WAAA,EAAa,SAAA;AAAA;;KAIH,eAAA;EACV,SAAA,EAAW,SAAA;EACX,SAAA,EAAW,SAAA;EACX,SAAA,EAAW,SAAA;EACX,SAAA,EAAW,SAAA;AAAA;;KAID,eAAA;EACV,IAAA,EAAM,SAAA;AAAA;;KAII,kBAAA;EACV,QAAA,EAAU,WAAA;AAAA;;KAIA,kBAAA;EACV,QAAA,EAAU,cAAA;IAAmB,WAAA;EAAA;EAC7B,IAAA,EAAM,SAAA;EACN,KAAA,EAAO,WAAA;AAAA;AD9JT;;;;;;;AAAA,KC+KY,WAAA,MAAiB,CAAA;EAAY,SAAA,kBAA2B,MAAA,SAAe,WAAA;AAAA,IAC/E,cAAA,CAAe,CAAA;;;UCpNF,QAAA,WAAmB,MAAA,SAAe,WAAA;EACjD,IAAA;EACA,MAAA,GAAS,CAAA;EACT,KAAA;IACE,YAAA,IAAgB,IAAA,EAAM,MAAA,sBAA4B,OAAA,CAAQ,MAAA;IAC1D,WAAA,IAAe,MAAA,EAAQ,MAAA,sBAA4B,OAAA;IACnD,YAAA,IAAgB,EAAA,UAAY,IAAA,EAAM,MAAA,sBAA4B,OAAA,CAAQ,MAAA;IACtE,WAAA,IAAe,MAAA,EAAQ,MAAA,sBAA4B,OAAA;IACnD,YAAA,IAAgB,EAAA,aAAe,OAAA;IAC/B,WAAA,IAAe,EAAA,aAAe,OAAA;EAAA;AAAA;;;iBCSlB,SAAA,CAAA,GAAa,QAAA,CAAS,eAAA;;;UCfrB,mBAAA;ELHf;;;;;;EKUA,QAAA;AAAA;AAAA,iBAGc,YAAA,CAAa,QAAA,GAAW,mBAAA,GAAsB,QAAA,CAAS,kBAAA;;;iBClBvD,WAAA,CAAA,GAAe,QAAA,CAAS,iBAAA;;;iBCAxB,YAAA,CAAA,GAAgB,QAAA,CAAS,kBAAA;;;UCAxB,gBAAA;ERLA;EQOf,YAAA;AAAA;;;;iBAMc,OAAA,CAAQ,IAAA;AAAA,iBASR,SAAA,CACd,WAAA,UACA,OAAA,GAAU,gBAAA,GACT,QAAA,CAAS,eAAA;;;cCJC,KAAA;ETHY;;;uBSQF,OAAA,CAAQ,OAAA,QAAQ,MAAA,GAAgB,CAAA,KAAI,OAAA,GAAU,CAAA;ETlBnE;;;yBS8BuB,OAAA,CAAQ,SAAA,QAAU,MAAA,GAAgB,CAAA,KAAI,SAAA,GAAY,CAAA;ETtBzE;;;2BSgCyB,OAAA,CAAQ,WAAA,QAAY,MAAA,GAAgB,CAAA,KAAI,WAAA,GAAc,CAAA;ET9B7B;;;4BSwCxB,OAAA,CAAQ,YAAA,QAAa,MAAA,GAAgB,CAAA,KAAI,YAAA,GAAe,CAAA;ETlClF;;;yBS6CuB,OAAA,CAAQ,SAAA,QAAU,MAAA,GAAgB,CAAA,KAAI,SAAA,GAAY,CAAA;ETjCzE;;;;;;;8DSiDkB,IAAA,CAAK,OAAA,CAAQ,WAAA,oBAAwB,MAAA;IAE3C,OAAA,EAAS,CAAA;EAAA,IAAM,CAAA,KACxB,WAAA;IAAgB,OAAA,EAAS,CAAA;EAAA,IAAM,CAAA;ERtFlC;;;;gEQmGkB,OAAA,CAAQ,IAAA,CAAK,cAAA,mCAA0C,MAAA;IAE7D,MAAA;IAAgB,WAAA,GAAc,CAAA;EAAA,IAAM,CAAA,KAC7C,cAAA;IAAmB,WAAA,EAAa,CAAA;EAAA,IAAM,CAAA;ER3F1B;;;0BQuGS,OAAA,CAAQ,UAAA,QAAW,MAAA,GAAgB,CAAA,KAAI,UAAA,GAAa,CAAA;ERtGxE;AAGN;;6BQ6G6B,OAAA,CAAQ,aAAA,QAAc,MAAA,GAAgB,CAAA,KAAI,aAAA,GAAgB,CAAA;ER7GrC;;;yBQuHzB,OAAA,CAAQ,SAAA,QAAU,MAAA,EAC/B,IAAA,CAAK,SAAA,YAAqB,CAAA,KACjC,SAAA,GAAY,CAAA;ERtHf;;;yBQkIuB,OAAA,CAAQ,SAAA,QAAU,MAAA,GAAgB,CAAA,KAAI,SAAA,GAAY,CAAA;ERjIzD;AAGlB;;;oCQwIoC,kBAAA,IAAoB,MAAA;IACpD,MAAA,EAAQ,CAAA;IACR,GAAA;IACA,GAAA;IACA,SAAA;EAAA,MACE,WAAA;IAAgB,MAAA,EAAQ,CAAA;EAAA;AAAA;;;KChKlB,iBAAA;EACV,SAAA,EAAW,UAAA,QAAkB,KAAA,CAAM,IAAA;EACnC,SAAA,EAAW,UAAA,QAAkB,KAAA,CAAM,IAAA;AAAA;AAAA,iBAGrB,WAAA,CAAA,GAAe,QAAA,CAAS,iBAAA;;;;;;cCM3B,QAAA;;;;;;;;;;;;;;;;;AXhBb;;;;;;;;;UYaiB,cAAA;EACf,GAAA,CAAI,GAAA;EACJ,GAAA,CAAI,GAAA,UAAa,KAAA;EACjB,UAAA,CAAW,MAAA;AAAA;AAAA,cAQA,UAAA,YAAsB,cAAA;EAAA,QACzB,KAAA;EAAA,QACA,KAAA;cAEI,KAAA;EZNZ;;;EYaA,GAAA,CAAI,GAAA;EZLJ;;;EYiBA,GAAA,CAAI,GAAA,UAAa,KAAA;EZAA;;;;EYQjB,UAAA,CAAW,MAAA;EXtDI;;;EWiEf,KAAA,CAAA;EXhEA;;;EW4EA,KAAA,CAAA;EXxEA;;;EAAA,IW+EI,IAAA,CAAA;AAAA;;;;;;;;;;;;;;iBC/DgB,gBAAA,CAAiB,EAAA,EAAI,kBAAA,EAAoB,SAAA,WAAoB,OAAA;;;;UCDlE,WAAA;EdHE;EcKjB,KAAA;EdLkD;EcOlD,KAAA;EdLA;EcOA,SAAA;EdHA;EcKA,EAAA;AAAA;;UAIQ,aAAA;EACR,KAAA;EACA,KAAA;EACA,SAAA;EACA,EAAA;AAAA;;;AbpCF;;iBaqDgB,YAAA,CACd,IAAA,EAAM,MAAA,mBACN,SAAA,UACA,SAAA;;;;;;;;iBAkBc,YAAA,CAAa,OAAA,WAAkB,aAAA;;;;Ab9D/C;;;;;AAIA;;;;iBamHgB,oBAAA,CACd,KAAA,EAAO,OAAA,EACP,MAAA,EAAQ,aAAA,GACP,GAAA;;;;;;;;;UCpHc,gBAAA,WACL,MAAA,SAAe,WAAA,IAAe,MAAA,SAAe,WAAA;EAEvD,IAAA;EACA,IAAA;EACA,MAAA,EAAQ,CAAA;EACR,KAAA;EACA,MAAA;IACE,IAAA;IACA,MAAA;IACA,MAAA;IACA,MAAA;EAAA;EfYF;EeTA,KAAA,GAAQ,iBAAA;AAAA;;;;;KAOE,WAAA,WACA,MAAA,SAAe,WAAA,IAAe,MAAA,SAAe,WAAA,aAC7C,QAAA,KAAa,QAAA,MACrB,gBAAA,CAAiB,CAAA;EAAO,SAAA,GAAY,CAAA;AAAA;;;;;UAMvB,MAAA,mBACG,MAAA,SAAe,WAAA,IAAe,MAAA,SAAe,WAAA;EAE/D,IAAA;EACA,IAAA;EACA,MAAA,EAAQ,MAAA,SAAe,WAAA;EACvB,SAAA,GAAY,QAAA;EACZ,KAAA;EACA,MAAA;IACE,IAAA;IACA,MAAA;IACA,MAAA;IACA,MAAA;EAAA;Ed5Ca;Ec+Cf,KAAA,GAAQ,iBAAA;EACR,SAAA,EAAW,SAAA;AAAA;;;;;;;;;AdzCb;;;;;KcyDK,gBAAA,MAAsB,CAAA;EAAY,MAAA;AAAA,IACnC,CAAA,SAAU,MAAA,SAAe,WAAA,IACvB,CAAA;AAAA,KAMD,qBAAA,WAAgC,QAAA,MAAc,CAAA,0CAE3B,QAAA,MAEpB,gBAAA,CAAiB,EAAA,IAAM,qBAAA,CAAsB,IAAA;;;;;Ad1DjD;;;;;;;;;;;;iBc8EgB,YAAA,WACJ,MAAA,SAAe,WAAA,mBACT,QAAA,QAAA,CAEhB,UAAA,EAAY,gBAAA,CAAiB,CAAA;EAAO,SAAA,GAAY,CAAA;AAAA,IAC/C,MAAA;EAAS,EAAA,EAAI,OAAA;AAAA,IAAY,qBAAA,CAAsB,CAAA,IAAK,CAAA;;;;;;;;UClGtC,eAAA;EACf,IAAA;IAAQ,EAAA;IAAY,MAAA;EAAA;EACpB,OAAA,GAAU,IAAA,UAAc,QAAA,UAAkB,MAAA;EAC1C,KAAA;IAAU,IAAA;IAAc,EAAA;EAAA;AAAA;;;;;;;;;KAWd,eAAA,SAAwB,eAAA,eAA8B,OAAA,CAAQ,eAAA;;;AfC1E;;ceuTa,cAAA,SAAuB,KAAA;cACtB,OAAA;AAAA;;;UCrVG,WAAA;EACf,YAAA;EACA,QAAA;EACA,WAAA;AAAA;;;cCPW,qBAAA,SAA8B,KAAA;EAAA,SACzB,UAAA;EAAA,SACA,QAAA;EAAA,SACA,MAAA,EAAQ,WAAA;cAEZ,UAAA,UAAoB,QAAA,UAAkB,MAAA,EAAQ,WAAA;AAAA;;;;;;;iBC8H5C,cAAA,CAAe,MAAA,EAAQ,MAAA,0BAAM,kBAAA;;;;;;;gBAAA,cAAA,CAAA,cAAA;;;;;;;;;;;;;;;;;;;;;;;;AlBxH7C;;iBkBgLgB,yBAAA,CAA0B,MAAA,EAAQ,MAAA,EAAQ,MAAA,GAAS,OAAA,0BAAO,kBAAA;;;;;;;gBAAA,cAAA,CAAA,cAAA;;;;;;;;;;;;;;;;;;;AlB9J1E;iBkBmMgB,eAAA,CAAgB,MAAA,EAAQ,MAAA;;;;AlB/LxC;;;;;;;iBkB6MgB,oBAAA,CAAqB,MAAA,EAAQ,MAAA,EAAQ,MAAA,GAAS,OAAA,0BAAO,kBAAA;;;;QAAA,sBAAA,CAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmCrD,aAAA,CAAc,MAAA,EAAQ,MAAA;;;;;iBAQtB,iBAAA,CAAkB,MAAA,EAAQ,MAAA;;;;iBAU1B,aAAA,CAAc,MAAA,EAAQ,MAAA;;iBActB,0BAAA,CAA2B,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,OAAA,0BAAO,kBAAA;;;;QAAA,sBAAA,CAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoB1D,oBAAA,CAAqB,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,OAAA,0BAAO,kBAAA;;;;QAAA,sBAAA,CAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Ad1TpE;AAAA,iBciVgB,sBAAA,CAAuB,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,OAAA,0BAAO,kBAAA;;;;QAAA,sBAAA,CAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BtD,0BAAA,CAAA,0BAA0B,kBAAA;;;;QAAA,sBAAA,CAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsB1B,qBAAA,CAAsB,MAAA,EAAQ,MAAA;;;;;;;;iBAuB9B,+BAAA,CAAgC,MAAA,EAAQ,MAAA,EAAQ,YAAA,GAAe,OAAA,0BAAO,kBAAA;;;;QAAA,sBAAA,CAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiDtE,oBAAA,CAAqB,QAAA,EAAU,MAAA,KAAW,MAAA,SAAe,OAAA"}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{and as e,eq as t,gt as n,lt as r,or as i,sql as a}from"drizzle-orm";import{boolean as o,doublePrecision as s,index as c,integer as l,jsonb as u,pgTable as d,text as f,timestamp as p,unique as m,uuid as h,varchar as g}from"drizzle-orm/pg-core";const _={id:e=>({type:`id`,required:!0,indexed:!0,...e}),text:e=>({type:`text`,...e}),number:e=>({type:`number`,...e}),boolean:e=>({type:`boolean`,default:!1,...e}),date:e=>({type:`date`,...e}),select:e=>({type:`select`,...e}),reference:e=>({type:`reference`,cardinality:`one`,onDelete:`set-null`,...e}),media:e=>({type:`media`,...e}),richtext:e=>({type:`richtext`,...e}),slug:e=>({type:`slug`,unique:!0,indexed:!0,...e}),json:e=>({type:`json`,...e}),blocks:e=>({type:`blocks`,...e})};async function v(){try{return(await import([`@murumets-ee`,`core`].join(`/`))).getCurrentUser()?.id}catch{return}}function y(){return{name:`auditable`,fields:{createdBy:_.text(),updatedBy:_.text(),createdAt:_.date({indexed:!0}),updatedAt:_.date({indexed:!0})},hooks:{beforeCreate:async e=>{e.createdAt=new Date,e.updatedAt=new Date;let t=await v();return t&&(e.createdBy=t,e.updatedBy=t),e},beforeUpdate:async(e,t)=>{t.updatedAt=new Date;let n=await v();return n&&(t.updatedBy=n),t}}}}function b(e){return{name:`hierarchical`,fields:{parentId:_.reference({entity:`_self`,required:!1}),path:_.text({indexed:!0,maxLength:2048}),depth:_.number({integer:!0,default:0,indexed:!0})},hooks:{beforeCreate:async e=>(e.parentId||(e.depth=0),e)}}}function x(){return{name:`publishable`,fields:{status:_.select({options:[`draft`,`published`],default:`draft`,indexed:!0}),publishedAt:_.date({indexed:!0})},hooks:{beforeUpdate:async(e,t)=>(t.status===`published`&&!t.publishedAt&&(t.publishedAt=new Date),t)}}}function S(){return{name:`revisionable`,fields:{_version:_.number({required:!0,default:1,integer:!0})},hooks:{beforeCreate:async e=>(e._version=1,e),beforeUpdate:async(e,t)=>(t._version=(Number(t._version)||0)+1,t)}}}function C(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}function w(e,t){return{name:`sluggable`,fields:{slug:_.slug({from:e,...t?.translatable?{translatable:!0}:{}})},hooks:{beforeCreate:async t=>(!t.slug&&t[e]&&(t.slug=C(String(t[e]))),t),beforeUpdate:async(t,n)=>(n[e]&&!n.slug&&(n.slug=C(String(n[e]))),n)}}}function T(){return{name:`timestamped`,fields:{createdAt:_.date({indexed:!0}),updatedAt:_.date({indexed:!0})},hooks:{beforeCreate:async e=>(e.createdAt=new Date,e.updatedAt=new Date,e),beforeUpdate:async(e,t)=>(t.updatedAt=new Date,t)}}}const E={publishable:x,auditable:y,sluggable:w,revisionable:S,hierarchical:b,timestamped:T};var D=class{cache=new Map;ttlMs;constructor(e=5e3){this.ttlMs=e}get(e){let t=this.cache.get(e);if(!t||Date.now()>t.expiresAt){t&&this.cache.delete(e);return}return t.count}set(e,t){this.cache.set(e,{count:t,expiresAt:Date.now()+this.ttlMs})}invalidate(e){for(let t of this.cache.keys())t.startsWith(e)&&this.cache.delete(t)}prune(){let e=Date.now();for(let[t,n]of this.cache.entries())e>n.expiresAt&&this.cache.delete(t)}clear(){this.cache.clear()}get size(){return this.cache.size}};async function O(e,t){let n=await e.execute(a`SELECT reltuples::bigint AS estimate FROM pg_class WHERE relname = ${t}`),r=(Array.isArray(n)?n:n.rows??[])[0],i=Number(r?.estimate??0);return i>0?i:0}const k=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function A(e,t,n){let r={field:t,value:e[t],direction:n,id:e.id};return btoa(JSON.stringify(r))}function j(e){try{let t=atob(e),n=JSON.parse(t);if(typeof n!=`object`||!n)return null;let r=n;return typeof r.field!=`string`||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r.field)||typeof r.value!=`string`&&typeof r.value!=`number`||r.direction!==`asc`&&r.direction!==`desc`||r.id!==void 0&&(typeof r.id!=`string`||!k.test(r.id))?null:{field:r.field,value:r.value,direction:r.direction,id:r.id}}catch{return null}}function M(a,o){let s=a[o.field];if(!s)return null;let c=o.direction===`desc`?r:n,l=c(s,o.value);if(!o.id)return l;let u=a.id;if(!u)return l;let d=c(u,o.id);return i(l,e(t(s,o.value),d))}function N(e){let t={},n={};for(let r of e.behaviors||[]){if(r.fields)for(let[e,n]of Object.entries(r.fields)){if(t[e]){console.warn(`Field '${e}' from behavior '${r.name}' conflicts with existing field. Skipping.`);continue}t[e]=n}if(r.hooks)for(let[e,t]of Object.entries(r.hooks)){let r=e;if(t){let e=n[r];if(e){let i=e,a=t;n[r]=async(...e)=>{let t=await i(...e);if(t!==void 0){let n=[...e];return n[n.length-1]=t,await a(...n)}return await a(...e)}}else n[r]=t}}}let r={id:_.id(),...t,...e.fields};for(let[,e]of Object.entries(r))e.type===`slug`&&!e.translatable&&r[e.from]?.translatable&&(e.translatable=!0);return{...e,allFields:r,hooks:n}}var P=class extends Error{entityName;entityId;usages;constructor(e,t,n){let r=n.length;super(`Cannot delete ${e} '${t}': referenced by ${r} other entit${r===1?`y`:`ies`}`),this.name=`ReferencedEntityError`,this.entityName=e,this.entityId=t,this.usages=n}};const F=d(`entity_refs`,{sourceEntity:g(`source_entity`,{length:100}).notNull(),sourceId:h(`source_id`).notNull(),sourceField:g(`source_field`,{length:100}).notNull(),targetEntity:g(`target_entity`,{length:100}).notNull(),targetId:h(`target_id`).notNull()},e=>[m(`uq_entity_refs`).on(e.sourceEntity,e.sourceId,e.sourceField,e.targetEntity,e.targetId),c(`idx_entity_refs_target`).on(e.targetEntity,e.targetId),c(`idx_entity_refs_source`).on(e.sourceEntity,e.sourceId)]);function I(e,t,n){let r=n?.nullable??!1;switch(t.type){case`id`:return h(e).primaryKey().defaultRandom();case`text`:if(t.maxLength&&t.maxLength<=255){let n=g(e,{length:t.maxLength});return t.unique&&(n=n.unique()),!r&&t.required&&(n=n.notNull()),!r&&t.default!==void 0&&(n=n.default(t.default)),n}else{let n=f(e);return t.unique&&(n=n.unique()),!r&&t.required&&(n=n.notNull()),!r&&t.default!==void 0&&(n=n.default(t.default)),n}case`number`:{let n=t.integer?l(e):s(e);return!r&&t.required&&(n=n.notNull()),!r&&t.default!==void 0&&(n=n.default(t.default)),n}case`boolean`:{let n=o(e);if(!r&&t.required&&(n=n.notNull()),!r){let e=t.default===void 0?!1:t.default;n=n.default(e)}return n}case`date`:{let n=p(e,{withTimezone:!0});return!r&&t.required&&(n=n.notNull()),!r&&t.default!==void 0&&(n=n.default(t.default)),n}case`select`:{let n=g(e,{length:100});return!r&&t.required&&(n=n.notNull()),!r&&t.default!==void 0&&(n=n.default(t.default)),n}case`reference`:{if(t.cardinality===`many`)return h(e).array();let n=h(e);return!r&&t.required&&(n=n.notNull()),n}case`media`:{let n=h(e);return!r&&t.required&&(n=n.notNull()),n}case`slug`:{let n=g(e,{length:255});return t.unique&&!r&&(n=n.unique()),!r&&t.required&&(n=n.notNull()),n}case`richtext`:{let n=f(e);return!r&&t.required&&(n=n.notNull()),n}case`json`:return u(e);default:return f(e)}}function L(e){let t=e.name,n={};for(let[t,r]of Object.entries(e.allFields))r.type!==`blocks`&&(n[t]=I(t,r));(e.scope===`team`||e.scope===`user`)&&(n._scopeId=h(`_scope_id`));let r=Object.entries(e.allFields).filter(([e,t])=>t.type!==`blocks`&&t.type!==`id`&&t.indexed&&!t.unique),i=e.behaviors?.some(e=>e.name===`publishable`)??!1;return r.length===0&&!i?d(t,n):d(t,n,e=>{let n={};for(let[i]of r)n[`idx_${t}_${i}`]=c(`idx_${t}_${i}`).on(e[i]);return i&&e.status&&e.createdAt&&(n[`idx_${t}_status_created`]=c(`idx_${t}_status_created`).on(e.status,e.createdAt)),n})}function R(e,t){let n=Object.entries(e.allFields).filter(([e,t])=>t.translatable);if(n.length===0)return null;let r=`${e.name}_translations`,i=t?h(`entity_id`).notNull().references(()=>t.id,{onDelete:`cascade`}):h(`entity_id`).notNull(),a={id:h(`id`).primaryKey().defaultRandom(),entityId:i,locale:g(`locale`,{length:10}).notNull()},o=n.some(([e,t])=>t.type===`slug`);for(let[e,t]of n)a[e]=I(e,t,{nullable:!0});return d(r,a,e=>({uniqueEntityLocale:m().on(e.entityId,e.locale),...o&&e.slug?{uniqueSlugLocale:m().on(e.slug,e.locale)}:{}}))}function z(e){return Object.values(e.allFields).some(e=>e.type===`blocks`)}function B(e,t){if(!z(e))return null;let n=`${e.name}_layout`,r=t?h(`entity_id`).notNull().references(()=>t.id,{onDelete:`cascade`}):h(`entity_id`).notNull();return d(n,{id:h(`id`).primaryKey().defaultRandom(),entityId:r,fieldName:g(`field_name`,{length:100}).notNull(),blockType:g(`block_type`,{length:100}).notNull(),sortOrder:l(`sort_order`).notNull().default(0),data:u(`data`),locale:g(`locale`,{length:10})},e=>({idx_entity_locale_sort:c(`idx_${n}_entity_locale_sort`).on(e.entityId,e.locale,e.sortOrder)}))}function V(e){return e.behaviors?.some(e=>e.name===`versionable`)??!1}function H(e){if(!(e.behaviors?.some(e=>e.name===`publishable`)??!1))return!1;let t=e.allFields;return Object.values(t).some(e=>e.translatable)}function U(e){return e.behaviors?.some(e=>e.name===`publishable`)??!1}function W(e,t){return d(`${e.name}_locale_status`,{id:h(`id`).primaryKey().defaultRandom(),entityId:h(`entity_id`).notNull().references(()=>t.id,{onDelete:`cascade`}),locale:g(`locale`,{length:10}).notNull(),status:g(`status`,{length:20}).notNull().default(`draft`),publishedAt:p(`published_at`,{withTimezone:!0})},e=>({uniqueEntityLocale:m().on(e.entityId,e.locale)}))}function G(e,t){return d(`${e.name}_drafts`,{id:h(`id`).primaryKey().defaultRandom(),entityId:h(`entity_id`).notNull().references(()=>t.id,{onDelete:`cascade`}),locale:g(`locale`,{length:10}).notNull().default(`_`),data:u(`data`).notNull(),createdBy:g(`created_by`,{length:255}).notNull(),createdByName:g(`created_by_name`,{length:255}),createdAt:p(`created_at`,{withTimezone:!0}).notNull().defaultNow(),updatedAt:p(`updated_at`,{withTimezone:!0}).notNull().defaultNow()},e=>({uniqueEntityLocale:m().on(e.entityId,e.locale)}))}function K(e,t){return d(`${e.name}_versions`,{id:h(`id`).primaryKey().defaultRandom(),entityId:h(`entity_id`).notNull().references(()=>t.id,{onDelete:`cascade`}),version:l(`version`).notNull(),locale:g(`locale`,{length:10}).notNull().default(`_`),data:u(`data`).notNull(),delta:u(`delta`),status:g(`status`,{length:20}),createdBy:g(`created_by`,{length:255}),createdByName:g(`created_by_name`,{length:255}),createdAt:p(`created_at`,{withTimezone:!0}).notNull().defaultNow(),isAutosave:o(`is_autosave`).notNull().default(!1)},e=>({uniqueEntityVersionLocale:m().on(e.entityId,e.version,e.locale)}))}function q(){return d(`toolkit_content_locks`,{id:h(`id`).primaryKey().defaultRandom(),entityType:g(`entity_type`,{length:100}).notNull(),entityId:g(`entity_id`,{length:255}).notNull(),locale:g(`locale`,{length:10}).notNull().default(`_`),lockedBy:g(`locked_by`,{length:255}).notNull(),lockedByName:g(`locked_by_name`,{length:255}),lockedAt:p(`locked_at`,{withTimezone:!0}).notNull().defaultNow(),expiresAt:p(`expires_at`,{withTimezone:!0}).notNull()},e=>({uniqueEntityLock:m().on(e.entityType,e.entityId,e.locale)}))}function J(e){let t=e.allFields;return Object.values(t).some(e=>e.type!==`blocks`||e.localized?!1:e.blocks?.some(e=>Object.values(e.fields).some(e=>e.translatable)))}function Y(e,t){let n=Object.values(e.allFields).filter(e=>e.type===`blocks`&&!(`localized`in e&&e.localized));if(n.length===0||!n.some(e=>e.type===`blocks`?e.blocks.some(e=>Object.values(e.fields).some(e=>e.translatable)):!1))return null;let r=`${e.name}_layout_translations`,i=t?h(`layout_id`).notNull().references(()=>t.id,{onDelete:`cascade`}):h(`layout_id`).notNull();return d(r,{id:h(`id`).primaryKey().defaultRandom(),layoutId:i,locale:g(`locale`,{length:10}).notNull(),fields:u(`fields`).notNull()},e=>({uniqueLayoutLocale:m().on(e.layoutId,e.locale)}))}function X(e){let t={},n=!1;for(let r of e){let e=L(r);t[r.name]=e;let i=R(r,e);if(i&&(t[`${r.name}_translations`]=i),z(r)){let n=B(r,e);if(n){t[`${r.name}_layout`]=n;let e=Y(r,n);e&&(t[`${r.name}_layout_translations`]=e)}}V(r)&&(t[`${r.name}_versions`]=K(r,e)),H(r)&&(t[`${r.name}_locale_status`]=W(r,e)),U(r)&&(t[`${r.name}_drafts`]=G(r,e),n=!0)}return n&&(t.toolkit_content_locks=q()),t.entity_refs=F,t}export{D as CountCache,P as ReferencedEntityError,y as auditable,E as behavior,M as buildCursorCondition,X as buildEntitySchemaMap,j as decodeCursor,N as defineEntity,A as encodeCursor,O as estimateRowCount,_ as field,q as generateContentLocksSchema,G as generateDraftsSchema,B as generateLayoutSchema,Y as generateLayoutTranslationSchema,W as generateLocaleStatusSchema,L as generateSchema,R as generateTranslationSchema,K as generateVersionsSchema,z as hasBlocksFields,J as hasTranslatableBlocks,b as hierarchical,U as isPublishable,V as isVersionable,H as needsLocaleStatus,x as publishable,S as revisionable,w as sluggable,C as slugify,T as timestamped};
1
+ import{and as e,eq as t,getTableColumns as n,gt as r,lt as i,or as a,sql as o}from"drizzle-orm";import"@murumets-ee/db";import{boolean as s,doublePrecision as c,index as l,integer as u,jsonb as d,pgTable as f,text as p,timestamp as m,unique as h,uuid as g,varchar as _}from"drizzle-orm/pg-core";const v={id:e=>({type:`id`,required:!0,indexed:!0,...e}),text:e=>({type:`text`,...e}),number:e=>({type:`number`,...e}),boolean:e=>({type:`boolean`,default:!1,...e}),date:e=>({type:`date`,...e}),select:e=>({type:`select`,...e}),reference:e=>({type:`reference`,cardinality:`one`,onDelete:`set-null`,...e}),media:e=>({type:`media`,...e}),richtext:e=>({type:`richtext`,...e}),slug:e=>({type:`slug`,unique:!0,indexed:!0,...e}),json:e=>({type:`json`,...e}),blocks:e=>({type:`blocks`,...e})};async function y(){try{return(await import([`@murumets-ee`,`core`].join(`/`))).getCurrentUser()?.id}catch{return}}function b(){return{name:`auditable`,fields:{createdBy:v.text(),updatedBy:v.text(),createdAt:v.date({indexed:!0}),updatedAt:v.date({indexed:!0})},hooks:{beforeCreate:async e=>{e.createdAt=new Date,e.updatedAt=new Date;let t=await y();return t&&(e.createdBy=t,e.updatedBy=t),e},beforeUpdate:async(e,t)=>{t.updatedAt=new Date;let n=await y();return n&&(t.updatedBy=n),t}}}}function x(e){return{name:`hierarchical`,fields:{parentId:v.reference({entity:`_self`,required:!1}),path:v.text({indexed:!0,maxLength:2048}),depth:v.number({integer:!0,default:0,indexed:!0})},hooks:{beforeCreate:async e=>(e.parentId||(e.depth=0),e)}}}function S(){return{name:`publishable`,fields:{status:v.select({options:[`draft`,`published`],default:`draft`,indexed:!0}),publishedAt:v.date({indexed:!0})},hooks:{beforeUpdate:async(e,t)=>(t.status===`published`&&!t.publishedAt&&(t.publishedAt=new Date),t)}}}function C(){return{name:`revisionable`,fields:{_version:v.number({required:!0,default:1,integer:!0})},hooks:{beforeCreate:async e=>(e._version=1,e),beforeUpdate:async(e,t)=>(t._version=(Number(t._version)||0)+1,t)}}}function w(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}function T(e,t){return{name:`sluggable`,fields:{slug:v.slug({from:e,...t?.translatable?{translatable:!0}:{}})},hooks:{beforeCreate:async t=>(!t.slug&&t[e]&&(t.slug=w(String(t[e]))),t),beforeUpdate:async(t,n)=>(n[e]&&!n.slug&&(n.slug=w(String(n[e]))),n)}}}function E(){return{name:`timestamped`,fields:{createdAt:v.date({indexed:!0}),updatedAt:v.date({indexed:!0})},hooks:{beforeCreate:async e=>(e.createdAt=new Date,e.updatedAt=new Date,e),beforeUpdate:async(e,t)=>(t.updatedAt=new Date,t)}}}const D={publishable:S,auditable:b,sluggable:T,revisionable:C,hierarchical:x,timestamped:E};var O=class{cache=new Map;ttlMs;constructor(e=5e3){this.ttlMs=e}get(e){let t=this.cache.get(e);if(!t||Date.now()>t.expiresAt){t&&this.cache.delete(e);return}return t.count}set(e,t){this.cache.set(e,{count:t,expiresAt:Date.now()+this.ttlMs})}invalidate(e){for(let t of this.cache.keys())t.startsWith(e)&&this.cache.delete(t)}prune(){let e=Date.now();for(let[t,n]of this.cache.entries())e>n.expiresAt&&this.cache.delete(t)}clear(){this.cache.clear()}get size(){return this.cache.size}};async function k(e,t){let n=await e.execute(o`SELECT reltuples::bigint AS estimate FROM pg_class WHERE relname = ${t}`),r=(Array.isArray(n)?n:n.rows??[])[0],i=Number(r?.estimate??0);return i>0?i:0}const A=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function j(e,t,n){let r={field:t,value:e[t],direction:n,id:e.id};return btoa(JSON.stringify(r))}function M(e){try{let t=atob(e),n=JSON.parse(t);if(typeof n!=`object`||!n)return null;let r=n;return typeof r.field!=`string`||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r.field)||typeof r.value!=`string`&&typeof r.value!=`number`||r.direction!==`asc`&&r.direction!==`desc`||r.id!==void 0&&(typeof r.id!=`string`||!A.test(r.id))?null:{field:r.field,value:r.value,direction:r.direction,id:r.id}}catch{return null}}function N(o,s){let c=n(o),l=c[s.field];if(!l)return null;let u=s.direction===`desc`?i:r,d=u(l,s.value);if(!s.id)return d;let f=c.id;if(!f)return d;let p=u(f,s.id);return a(d,e(t(l,s.value),p))}function P(e){let t={};for(let n of e.behaviors||[])if(n.fields)for(let[e,r]of Object.entries(n.fields)){if(t[e]){console.warn(`Field '${e}' from behavior '${n.name}' conflicts with existing field. Skipping.`);continue}t[e]=r}let n={id:v.id(),...t,...e.fields};for(let[,e]of Object.entries(n))e.type===`slug`&&!e.translatable&&n[e.from]?.translatable&&(e.translatable=!0);return{...e,allFields:n}}var F=class extends Error{constructor(e){super(e),this.name=`ForbiddenError`}},I=class extends Error{entityName;entityId;usages;constructor(e,t,n){let r=n.length;super(`Cannot delete ${e} '${t}': referenced by ${r} other entit${r===1?`y`:`ies`}`),this.name=`ReferencedEntityError`,this.entityName=e,this.entityId=t,this.usages=n}};const L=f(`entity_refs`,{sourceEntity:_(`source_entity`,{length:100}).notNull(),sourceId:g(`source_id`).notNull(),sourceField:_(`source_field`,{length:100}).notNull(),targetEntity:_(`target_entity`,{length:100}).notNull(),targetId:g(`target_id`).notNull()},e=>[h(`uq_entity_refs`).on(e.sourceEntity,e.sourceId,e.sourceField,e.targetEntity,e.targetId),l(`idx_entity_refs_target`).on(e.targetEntity,e.targetId),l(`idx_entity_refs_source`).on(e.sourceEntity,e.sourceId)]);function R(e,t,n){let r=n?.nullable??!1;switch(t.type){case`id`:return g(e).primaryKey().defaultRandom();case`text`:if(t.maxLength&&t.maxLength<=255){let n=_(e,{length:t.maxLength});return t.unique&&(n=n.unique()),!r&&t.required&&(n=n.notNull()),!r&&t.default!==void 0&&(n=n.default(t.default)),n}else{let n=p(e);return t.unique&&(n=n.unique()),!r&&t.required&&(n=n.notNull()),!r&&t.default!==void 0&&(n=n.default(t.default)),n}case`number`:{let n=t.integer?u(e):c(e);return!r&&t.required&&(n=n.notNull()),!r&&t.default!==void 0&&(n=n.default(t.default)),n}case`boolean`:{let n=s(e);if(!r&&t.required&&(n=n.notNull()),!r){let e=t.default===void 0?!1:t.default;n=n.default(e)}return n}case`date`:{let n=m(e,{withTimezone:!0});return!r&&t.required&&(n=n.notNull()),!r&&t.default!==void 0&&(n=n.default(t.default)),n}case`select`:{let n=_(e,{length:100});return!r&&t.required&&(n=n.notNull()),!r&&t.default!==void 0&&(n=n.default(t.default)),n}case`reference`:{if(t.cardinality===`many`)return g(e).array();let n=g(e);return!r&&t.required&&(n=n.notNull()),n}case`media`:{let n=g(e);return!r&&t.required&&(n=n.notNull()),n}case`slug`:{let n=_(e,{length:255});return t.unique&&!r&&(n=n.unique()),!r&&t.required&&(n=n.notNull()),n}case`richtext`:{let n=p(e);return!r&&t.required&&(n=n.notNull()),n}case`json`:return d(e);default:return p(e)}}function z(e){let t=e.name,n={};for(let[t,r]of Object.entries(e.allFields))r.type!==`blocks`&&(n[t]=R(t,r));(e.scope===`team`||e.scope===`user`)&&(n._scopeId=g(`_scope_id`));let r=Object.entries(e.allFields).filter(([e,t])=>t.type!==`blocks`&&t.type!==`id`&&t.indexed&&!t.unique),i=e.behaviors?.some(e=>e.name===`publishable`)??!1;return r.length===0&&!i?f(t,n):f(t,n,e=>{let n={};for(let[i]of r)n[`idx_${t}_${i}`]=l(`idx_${t}_${i}`).on(e[i]);return i&&e.status&&e.createdAt&&(n[`idx_${t}_status_created`]=l(`idx_${t}_status_created`).on(e.status,e.createdAt)),n})}function B(e,t){let r=Object.entries(e.allFields).filter(([e,t])=>t.translatable);if(r.length===0)return null;let i=`${e.name}_translations`,a=t?g(`entity_id`).notNull().references(()=>n(t).id,{onDelete:`cascade`}):g(`entity_id`).notNull(),o={id:g(`id`).primaryKey().defaultRandom(),entityId:a,locale:_(`locale`,{length:10}).notNull()},s=r.some(([e,t])=>t.type===`slug`);for(let[e,t]of r)o[e]=R(e,t,{nullable:!0});return f(i,o,e=>({uniqueEntityLocale:h().on(e.entityId,e.locale),...s&&e.slug?{uniqueSlugLocale:h().on(e.slug,e.locale)}:{}}))}function V(e){return Object.values(e.allFields).some(e=>e.type===`blocks`)}function H(e,t){if(!V(e))return null;let r=`${e.name}_layout`,i=t?g(`entity_id`).notNull().references(()=>n(t).id,{onDelete:`cascade`}):g(`entity_id`).notNull();return f(r,{id:g(`id`).primaryKey().defaultRandom(),entityId:i,fieldName:_(`field_name`,{length:100}).notNull(),blockType:_(`block_type`,{length:100}).notNull(),sortOrder:u(`sort_order`).notNull().default(0),data:d(`data`),locale:_(`locale`,{length:10})},e=>({idx_entity_locale_sort:l(`idx_${r}_entity_locale_sort`).on(e.entityId,e.locale,e.sortOrder)}))}function U(e){return e.behaviors?.some(e=>e.name===`versionable`)??!1}function W(e){if(!(e.behaviors?.some(e=>e.name===`publishable`)??!1))return!1;let t=e.allFields;return Object.values(t).some(e=>e.translatable)}function G(e){return e.behaviors?.some(e=>e.name===`publishable`)??!1}function K(e,t){return f(`${e.name}_locale_status`,{id:g(`id`).primaryKey().defaultRandom(),entityId:g(`entity_id`).notNull().references(()=>n(t).id,{onDelete:`cascade`}),locale:_(`locale`,{length:10}).notNull(),status:_(`status`,{length:20}).notNull().default(`draft`),publishedAt:m(`published_at`,{withTimezone:!0})},e=>({uniqueEntityLocale:h().on(e.entityId,e.locale)}))}function q(e,t){return f(`${e.name}_drafts`,{id:g(`id`).primaryKey().defaultRandom(),entityId:g(`entity_id`).notNull().references(()=>n(t).id,{onDelete:`cascade`}),locale:_(`locale`,{length:10}).notNull().default(`_`),data:d(`data`).notNull(),createdBy:_(`created_by`,{length:255}).notNull(),createdByName:_(`created_by_name`,{length:255}),createdAt:m(`created_at`,{withTimezone:!0}).notNull().defaultNow(),updatedAt:m(`updated_at`,{withTimezone:!0}).notNull().defaultNow()},e=>({uniqueEntityLocale:h().on(e.entityId,e.locale)}))}function J(e,t){return f(`${e.name}_versions`,{id:g(`id`).primaryKey().defaultRandom(),entityId:g(`entity_id`).notNull().references(()=>n(t).id,{onDelete:`cascade`}),version:u(`version`).notNull(),locale:_(`locale`,{length:10}).notNull().default(`_`),data:d(`data`).notNull(),delta:d(`delta`),status:_(`status`,{length:20}),createdBy:_(`created_by`,{length:255}),createdByName:_(`created_by_name`,{length:255}),createdAt:m(`created_at`,{withTimezone:!0}).notNull().defaultNow(),isAutosave:s(`is_autosave`).notNull().default(!1)},e=>({uniqueEntityVersionLocale:h().on(e.entityId,e.version,e.locale)}))}function Y(){return f(`toolkit_content_locks`,{id:g(`id`).primaryKey().defaultRandom(),entityType:_(`entity_type`,{length:100}).notNull(),entityId:_(`entity_id`,{length:255}).notNull(),locale:_(`locale`,{length:10}).notNull().default(`_`),lockedBy:_(`locked_by`,{length:255}).notNull(),lockedByName:_(`locked_by_name`,{length:255}),lockedAt:m(`locked_at`,{withTimezone:!0}).notNull().defaultNow(),expiresAt:m(`expires_at`,{withTimezone:!0}).notNull()},e=>({uniqueEntityLock:h().on(e.entityType,e.entityId,e.locale)}))}function X(e){let t=e.allFields;return Object.values(t).some(e=>e.type!==`blocks`||e.localized?!1:e.blocks?.some(e=>Object.values(e.fields).some(e=>e.translatable)))}function Z(e,t){let r=Object.values(e.allFields).filter(e=>e.type===`blocks`&&!(`localized`in e&&e.localized));if(r.length===0||!r.some(e=>e.type===`blocks`?e.blocks.some(e=>Object.values(e.fields).some(e=>e.translatable)):!1))return null;let i=`${e.name}_layout_translations`,a=t?g(`layout_id`).notNull().references(()=>n(t).id,{onDelete:`cascade`}):g(`layout_id`).notNull();return f(i,{id:g(`id`).primaryKey().defaultRandom(),layoutId:a,locale:_(`locale`,{length:10}).notNull(),fields:d(`fields`).notNull()},e=>({uniqueLayoutLocale:h().on(e.layoutId,e.locale)}))}function Q(e){let t={},n=!1;for(let r of e){let e=z(r);t[r.name]=e;let i=B(r,e);if(i&&(t[`${r.name}_translations`]=i),V(r)){let n=H(r,e);if(n){t[`${r.name}_layout`]=n;let e=Z(r,n);e&&(t[`${r.name}_layout_translations`]=e)}}U(r)&&(t[`${r.name}_versions`]=J(r,e)),W(r)&&(t[`${r.name}_locale_status`]=K(r,e)),G(r)&&(t[`${r.name}_drafts`]=q(r,e),n=!0)}return n&&(t.toolkit_content_locks=Y()),t.entity_refs=L,t}export{O as CountCache,F as ForbiddenError,I as ReferencedEntityError,b as auditable,D as behavior,N as buildCursorCondition,Q as buildEntitySchemaMap,M as decodeCursor,P as defineEntity,j as encodeCursor,k as estimateRowCount,v as field,Y as generateContentLocksSchema,q as generateDraftsSchema,H as generateLayoutSchema,Z as generateLayoutTranslationSchema,K as generateLocaleStatusSchema,z as generateSchema,B as generateTranslationSchema,J as generateVersionsSchema,V as hasBlocksFields,X as hasTranslatableBlocks,x as hierarchical,G as isPublishable,U as isVersionable,W as needsLocaleStatus,S as publishable,C as revisionable,T as sluggable,w as slugify,E as timestamped};
2
2
  //# sourceMappingURL=index.mjs.map