@dyrected/core 2.22.0 → 2.23.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.cjs CHANGED
@@ -1793,6 +1793,7 @@ __export(index_exports, {
1793
1793
  BUILTIN_JEXL_HELPERS: () => BUILTIN_JEXL_HELPERS,
1794
1794
  CROCKFORD_BASE32: () => CROCKFORD_BASE32,
1795
1795
  CURRENT_NAV_PREFERENCES_VERSION: () => CURRENT_NAV_PREFERENCES_VERSION,
1796
+ CUSTOM_VIEW_FETCH_ALL_LIMIT: () => CUSTOM_VIEW_FETCH_ALL_LIMIT,
1796
1797
  ConfigValidationError: () => ConfigValidationError,
1797
1798
  ConflictError: () => ConflictError,
1798
1799
  DEFAULT_USER_NAV_PREFERENCES: () => DEFAULT_USER_NAV_PREFERENCES,
@@ -1844,6 +1845,7 @@ __export(index_exports, {
1844
1845
  collectDeclarativeAccessValidationIssues: () => collectDeclarativeAccessValidationIssues,
1845
1846
  collectDeclarativeHookValidationIssues: () => collectDeclarativeHookValidationIssues,
1846
1847
  collectPreviewUrlValidationIssues: () => collectPreviewUrlValidationIssues,
1848
+ collectReferencedComponentKeys: () => collectReferencedComponentKeys,
1847
1849
  compact: () => compact,
1848
1850
  compileNavigation: () => compileNavigation,
1849
1851
  count: () => count,
@@ -1864,6 +1866,7 @@ __export(index_exports, {
1864
1866
  defineConfig: () => defineConfig,
1865
1867
  defineCreatedAtField: () => defineCreatedAtField,
1866
1868
  defineCreatedByField: () => defineCreatedByField,
1869
+ defineCustomView: () => defineCustomView,
1867
1870
  defineDateField: () => defineDateField,
1868
1871
  defineDateTimeField: () => defineDateTimeField,
1869
1872
  defineEmailField: () => defineEmailField,
@@ -1879,6 +1882,7 @@ __export(index_exports, {
1879
1882
  defineMultiSelectField: () => defineMultiSelectField,
1880
1883
  defineNumberField: () => defineNumberField,
1881
1884
  defineObjectField: () => defineObjectField,
1885
+ definePage: () => definePage,
1882
1886
  definePublishingWorkflow: () => definePublishingWorkflow,
1883
1887
  defineRadioField: () => defineRadioField,
1884
1888
  defineRelationshipField: () => defineRelationshipField,
@@ -2041,9 +2045,19 @@ var LIFECYCLE_EVENT_NAMES = [
2041
2045
  ];
2042
2046
 
2043
2047
  // src/types/views.ts
2048
+ var CUSTOM_VIEW_FETCH_ALL_LIMIT = 1e3;
2044
2049
  function defineView(config) {
2050
+ assertCustomViewComponent(config);
2045
2051
  return config;
2046
2052
  }
2053
+ function assertCustomViewComponent(config) {
2054
+ if (config.layout !== "custom") return;
2055
+ if (typeof config.component !== "string" || config.component.trim() === "") {
2056
+ throw new Error(
2057
+ `View "${config.slug ?? "(unnamed)"}" uses layout: "custom" but has no \`component\`. Set \`component\` to a key registered in AdminComponents.viewLayouts.`
2058
+ );
2059
+ }
2060
+ }
2047
2061
  function defineTableView(config) {
2048
2062
  return config;
2049
2063
  }
@@ -2056,6 +2070,10 @@ function defineCalendarView(config) {
2056
2070
  function defineGanttView(config) {
2057
2071
  return config;
2058
2072
  }
2073
+ function defineCustomView(config) {
2074
+ assertCustomViewComponent(config);
2075
+ return config;
2076
+ }
2059
2077
  function defineCardsView(config) {
2060
2078
  return config;
2061
2079
  }
@@ -2112,6 +2130,23 @@ var DEFAULT_USER_NAV_PREFERENCES = {
2112
2130
  items: []
2113
2131
  };
2114
2132
 
2133
+ // src/types/pages.ts
2134
+ function definePage(config) {
2135
+ return {
2136
+ slug: config.slug,
2137
+ label: config.label,
2138
+ icon: config.icon,
2139
+ group: config.group,
2140
+ order: config.order,
2141
+ after: config.after,
2142
+ before: config.before,
2143
+ position: config.position,
2144
+ badge: config.badge,
2145
+ access: config.access && typeof config.access === "object" && "read" in config.access ? config.access.read : config.access,
2146
+ page: config
2147
+ };
2148
+ }
2149
+
2115
2150
  // src/auth/token.ts
2116
2151
  var import_jose = require("jose");
2117
2152
 
@@ -5441,6 +5476,12 @@ var DuplicateKeyError = class _DuplicateKeyError extends ConflictError {
5441
5476
  function assertNever(op, context) {
5442
5477
  throw new Error(`[dyrected/core] Unhandled where operator "${op}" in ${context}`);
5443
5478
  }
5479
+ function escapeLike(value) {
5480
+ return value.replace(/[!%_]/g, "!$&");
5481
+ }
5482
+ function escapeRegex(value) {
5483
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
5484
+ }
5444
5485
  function parseSqlWhere(where, getJsonField, placeholder = "?", likeOperator = placeholder === "pg" ? "ILIKE" : "LIKE") {
5445
5486
  const params = [];
5446
5487
  let pgIndex = 1;
@@ -5450,6 +5491,19 @@ function parseSqlWhere(where, getJsonField, placeholder = "?", likeOperator = pl
5450
5491
  function col(field) {
5451
5492
  return field === "id" ? "id" : getJsonField(field);
5452
5493
  }
5494
+ function buildLike(column, pattern, escaped = false) {
5495
+ const esc = escaped ? ` ESCAPE '!'` : "";
5496
+ if (placeholder === "pg") {
5497
+ params.push(pattern);
5498
+ return `(${column})::text ${likeOperator} ${next()}${esc}`;
5499
+ }
5500
+ if (likeOperator === "ILIKE") {
5501
+ params.push(pattern);
5502
+ return `${column} ILIKE ${next()}${esc}`;
5503
+ }
5504
+ params.push(pattern.toLowerCase());
5505
+ return `LOWER(${column}) LIKE ${next()}${esc}`;
5506
+ }
5453
5507
  function buildOperator(field, value) {
5454
5508
  const c = col(field);
5455
5509
  const isJsonExtract = c.startsWith("data->>") || c.startsWith("json_extract(") || c.startsWith("JSON_UNQUOTE(");
@@ -5592,13 +5646,12 @@ function parseSqlWhere(where, getJsonField, placeholder = "?", likeOperator = pl
5592
5646
  case "less_than_or_equal":
5593
5647
  params.push(operand);
5594
5648
  return `${c} <= ${next()}`;
5595
- case "contains":
5596
5649
  case "like":
5597
- params.push(`%${operand}%`);
5598
- return placeholder === "pg" ? `(${c})::text ${likeOperator} ${next()}` : `${c} ${likeOperator} ${next()}`;
5650
+ return buildLike(c, `%${String(operand)}%`);
5651
+ case "contains":
5652
+ return buildLike(c, `%${escapeLike(String(operand))}%`, true);
5599
5653
  case "starts_with":
5600
- params.push(`${operand}%`);
5601
- return placeholder === "pg" ? `(${c})::text ${likeOperator} ${next()}` : `${c} ${likeOperator} ${next()}`;
5654
+ return buildLike(c, `${escapeLike(String(operand))}%`, true);
5602
5655
  case "exists":
5603
5656
  return operand ? `${c} IS NOT NULL` : `${c} IS NULL`;
5604
5657
  default:
@@ -5696,9 +5749,9 @@ function parseMongoWhere(where) {
5696
5749
  return { [field]: { $lte: operand } };
5697
5750
  case "contains":
5698
5751
  case "like":
5699
- return { [field]: { $regex: operand, $options: "i" } };
5752
+ return { [field]: { $regex: escapeRegex(String(operand)), $options: "i" } };
5700
5753
  case "starts_with":
5701
- return { [field]: { $regex: `^${operand}`, $options: "i" } };
5754
+ return { [field]: { $regex: `^${escapeRegex(String(operand))}`, $options: "i" } };
5702
5755
  case "exists":
5703
5756
  return { [field]: { $exists: operand } };
5704
5757
  default:
@@ -5808,6 +5861,96 @@ function buildSqlOrderBy(sort, existingColumns, numericFields, dialect) {
5808
5861
  }).join(", ");
5809
5862
  }
5810
5863
 
5864
+ // src/utils/component-keys.ts
5865
+ var DASHBOARD_SLOTS = ["beforeDashboard", "afterDashboard"];
5866
+ var LIST_SLOTS = ["beforeList", "beforeListTable", "afterListTable", "afterList"];
5867
+ var VIEW_SLOTS = ["beforeViewHeader", "afterViewHeader", "beforeViewContent", "afterViewContent"];
5868
+ function addKeys(target, value) {
5869
+ for (const key of Array.isArray(value) ? value : [value]) {
5870
+ if (typeof key === "string" && key) target.add(key);
5871
+ }
5872
+ }
5873
+ function addSlots(target, slots, names) {
5874
+ if (!slots || typeof slots !== "object") return;
5875
+ for (const name of names) addKeys(target, slots[name]);
5876
+ }
5877
+ function scanFields(fields, keys) {
5878
+ if (!Array.isArray(fields)) return;
5879
+ for (const field of fields) {
5880
+ if (!field || typeof field !== "object") continue;
5881
+ addKeys(keys.fields, field.admin?.component);
5882
+ scanFields(field.fields, keys);
5883
+ if (Array.isArray(field.blocks)) {
5884
+ for (const block of field.blocks) scanFields(block?.fields, keys);
5885
+ }
5886
+ if (Array.isArray(field.tabs)) {
5887
+ for (const tab of field.tabs) scanFields(tab?.fields, keys);
5888
+ }
5889
+ }
5890
+ }
5891
+ function scanDetail(items, keys) {
5892
+ if (!Array.isArray(items)) return;
5893
+ for (const item of items) {
5894
+ if (!item || typeof item !== "object") continue;
5895
+ if (item.type === "custom") addKeys(keys.customComponents, item.name);
5896
+ scanDetail(item.items, keys);
5897
+ if (Array.isArray(item.tabs)) {
5898
+ for (const tab of item.tabs) scanDetail(tab?.items, keys);
5899
+ }
5900
+ }
5901
+ }
5902
+ function scanViews(views, keys) {
5903
+ if (!Array.isArray(views)) return;
5904
+ for (const view of views) {
5905
+ addSlots(keys.collectionView, view?.components, VIEW_SLOTS);
5906
+ if (view?.layout === "custom") addKeys(keys.viewLayouts, view.component);
5907
+ }
5908
+ }
5909
+ function collectReferencedComponentKeys(schema) {
5910
+ const keys = {
5911
+ fields: /* @__PURE__ */ new Set(),
5912
+ dashboard: /* @__PURE__ */ new Set(),
5913
+ collectionList: /* @__PURE__ */ new Set(),
5914
+ collectionView: /* @__PURE__ */ new Set(),
5915
+ forms: /* @__PURE__ */ new Set(),
5916
+ viewLayouts: /* @__PURE__ */ new Set(),
5917
+ pages: /* @__PURE__ */ new Set(),
5918
+ customComponents: /* @__PURE__ */ new Set()
5919
+ };
5920
+ const root = schema;
5921
+ if (!root || typeof root !== "object") return keys;
5922
+ addSlots(keys.dashboard, root.admin?.components, DASHBOARD_SLOTS);
5923
+ if (Array.isArray(root.admin?.navigation)) {
5924
+ for (const item of root.admin.navigation) {
5925
+ if (item?.page) {
5926
+ if (typeof item.page === "string") {
5927
+ addKeys(keys.pages, item.page);
5928
+ } else if (item.page?.component) {
5929
+ addKeys(keys.pages, item.page.component);
5930
+ }
5931
+ }
5932
+ }
5933
+ }
5934
+ if (Array.isArray(root.admin?.pages)) {
5935
+ for (const page of root.admin.pages) addKeys(keys.pages, page?.component);
5936
+ }
5937
+ for (const block of root.blocks ?? []) scanFields(block?.fields, keys);
5938
+ for (const collection of root.collections ?? []) {
5939
+ scanFields(collection.fields, keys);
5940
+ scanDetail(collection.detail, keys);
5941
+ scanViews(collection.views, keys);
5942
+ const slots = collection.admin?.components;
5943
+ addSlots(keys.collectionList, slots, LIST_SLOTS);
5944
+ addSlots(keys.collectionView, slots, VIEW_SLOTS);
5945
+ addSlots(keys.collectionView, slots?.collectionView, VIEW_SLOTS);
5946
+ }
5947
+ for (const global of root.globals ?? []) {
5948
+ scanFields(global.fields, keys);
5949
+ scanDetail(global.detail, keys);
5950
+ }
5951
+ return keys;
5952
+ }
5953
+
5811
5954
  // src/utils/openapi.ts
5812
5955
  function getCollectionLabels(collection) {
5813
5956
  return collection.labels || { singular: collection.slug, plural: collection.slug };
@@ -8295,11 +8438,32 @@ var RESERVED_NAVIGATION_SLUGS = /* @__PURE__ */ new Set([
8295
8438
  "admin",
8296
8439
  "preferences",
8297
8440
  "auth",
8298
- "trash"
8441
+ "trash",
8442
+ "pages"
8299
8443
  ]);
8300
8444
  function assertValidNavigationSlugs(navigation) {
8445
+ const seenWorkspaceSlugs = /* @__PURE__ */ new Set();
8446
+ const seenPageSlugs = /* @__PURE__ */ new Set();
8301
8447
  for (const item of navigation) {
8302
8448
  if (item.dashboard || item.trash) continue;
8449
+ if (item.page) {
8450
+ const pageSlug = typeof item.page === "string" ? item.slug || item.page : item.slug || item.page.slug;
8451
+ if (pageSlug) {
8452
+ const normalized = pageSlug.toLowerCase().trim().replace(/^\//, "");
8453
+ if (RESERVED_NAVIGATION_SLUGS.has(normalized)) {
8454
+ throw new Error(
8455
+ `[Dyrected Config] The slug '${pageSlug}' in custom page '${item.label || pageSlug}' is a reserved system path and cannot be used as a page slug.`
8456
+ );
8457
+ }
8458
+ if (seenPageSlugs.has(normalized)) {
8459
+ throw new Error(
8460
+ `[Dyrected Config] Duplicate page slug '${pageSlug}' in navigation. Page slugs must be unique.`
8461
+ );
8462
+ }
8463
+ seenPageSlugs.add(normalized);
8464
+ }
8465
+ continue;
8466
+ }
8303
8467
  if (item.slug) {
8304
8468
  const normalizedSlug = item.slug.toLowerCase().trim().replace(/^\//, "");
8305
8469
  if (RESERVED_NAVIGATION_SLUGS.has(normalizedSlug)) {
@@ -8307,6 +8471,12 @@ function assertValidNavigationSlugs(navigation) {
8307
8471
  `[Dyrected Config] The slug '${item.slug}' in navigation item '${item.label || item.slug}' is a reserved system path and cannot be used as an operational workspace slug.`
8308
8472
  );
8309
8473
  }
8474
+ if (seenWorkspaceSlugs.has(normalizedSlug)) {
8475
+ throw new Error(
8476
+ `[Dyrected Config] Duplicate workspace slug '${item.slug}' in navigation. Workspace slugs must be unique.`
8477
+ );
8478
+ }
8479
+ seenWorkspaceSlugs.add(normalizedSlug);
8310
8480
  }
8311
8481
  }
8312
8482
  }
@@ -8449,6 +8619,43 @@ function compileNavigation(config) {
8449
8619
  });
8450
8620
  continue;
8451
8621
  }
8622
+ if (item.page) {
8623
+ const pageConfig = typeof item.page === "string" ? {
8624
+ slug: item.slug || item.page,
8625
+ label: item.label || item.page,
8626
+ icon: item.icon,
8627
+ component: item.page,
8628
+ group: typeof item.group === "string" ? item.group : item.group?.name,
8629
+ order: item.order,
8630
+ badge: item.badge,
8631
+ access: item.access
8632
+ } : {
8633
+ ...item.page,
8634
+ slug: item.slug || item.page.slug || "page",
8635
+ label: item.label || item.page.label || item.slug || "Page",
8636
+ icon: item.icon || item.page.icon,
8637
+ group: item.group ? typeof item.group === "string" ? item.group : item.group?.name : item.page.group,
8638
+ order: item.order ?? item.page.order,
8639
+ badge: item.badge || item.page.badge,
8640
+ access: item.access || (item.page.access && typeof item.page.access === "object" && "read" in item.page.access ? item.page.access.read : item.page.access)
8641
+ };
8642
+ const pageSlug = pageConfig.slug || "page";
8643
+ registerItem(groupName, {
8644
+ id: `page:${pageSlug}`,
8645
+ type: "page",
8646
+ slug: pageSlug,
8647
+ label: pageConfig.label || pageSlug,
8648
+ icon: pageConfig.icon || "FileText",
8649
+ href: `/pages/${pageSlug}`,
8650
+ group: groupName,
8651
+ order: pageConfig.order ?? 100,
8652
+ views: [],
8653
+ badge: pageConfig.badge,
8654
+ access: pageConfig.access && typeof pageConfig.access === "object" && "read" in pageConfig.access ? pageConfig.access.read : pageConfig.access,
8655
+ page: pageConfig
8656
+ });
8657
+ continue;
8658
+ }
8452
8659
  const workspaceSlug = item.slug || "workspace";
8453
8660
  registerItem(groupName, {
8454
8661
  id: `workspace_${workspaceSlug}`,
@@ -8831,6 +9038,7 @@ function defineTab(args) {
8831
9038
  BUILTIN_JEXL_HELPERS,
8832
9039
  CROCKFORD_BASE32,
8833
9040
  CURRENT_NAV_PREFERENCES_VERSION,
9041
+ CUSTOM_VIEW_FETCH_ALL_LIMIT,
8834
9042
  ConfigValidationError,
8835
9043
  ConflictError,
8836
9044
  DEFAULT_USER_NAV_PREFERENCES,
@@ -8882,6 +9090,7 @@ function defineTab(args) {
8882
9090
  collectDeclarativeAccessValidationIssues,
8883
9091
  collectDeclarativeHookValidationIssues,
8884
9092
  collectPreviewUrlValidationIssues,
9093
+ collectReferencedComponentKeys,
8885
9094
  compact,
8886
9095
  compileNavigation,
8887
9096
  count,
@@ -8902,6 +9111,7 @@ function defineTab(args) {
8902
9111
  defineConfig,
8903
9112
  defineCreatedAtField,
8904
9113
  defineCreatedByField,
9114
+ defineCustomView,
8905
9115
  defineDateField,
8906
9116
  defineDateTimeField,
8907
9117
  defineEmailField,
@@ -8917,6 +9127,7 @@ function defineTab(args) {
8917
9127
  defineMultiSelectField,
8918
9128
  defineNumberField,
8919
9129
  defineObjectField,
9130
+ definePage,
8920
9131
  definePublishingWorkflow,
8921
9132
  defineRadioField,
8922
9133
  defineRelationshipField,
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as Field, B as Block, C as CollectionConfig, D as DyrectedConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, G as GlobalConfig, a as DeclarativeHookExpression, W as WorkflowConfig, b as AuthenticatedUser, c as WorkflowTransition, L as LifecycleEventName, d as LifecycleEvent, e as DatabaseAdapter, f as BaseDocument, H as HookRequestContext, T as TaskRunResult, g as TaskConfig, h as DetailActionOptions, i as DetailAction, j as DetailComputedOptions, k as ComputedHandler, l as DetailComputed, m as DetailCustomOptions, n as DetailCustom, o as DetailDividerOptions, p as DetailDivider, q as DisplayFieldOptions, r as DetailField, s as DetailItem, t as DetailGridOptions, u as DetailGrid, v as DetailRepeatOptions, w as DetailRepeat, x as DetailSectionOptions, y as DetailSection, z as DetailTabOptions, E as DetailTab, I as DetailTabsOptions, J as DetailTabs, K as DetailTextOptions, M as DetailText, N as DetailSchema, O as DyrectedContext, Q as AIConfig, R as AIPIIConfig, S as IdStrategy, U as CompiledNavTree, V as CompiledNavItem, X as UserNavigationPreferences, Y as DefineWorkspaceOptions, Z as ViewConfig, _ as DateTimeField, $ as RelationshipField, a0 as SelectField, a1 as ArrayField, a2 as FieldType, a3 as BooleanField, a4 as AuthConfig, a5 as AccessPolicyResolver, a6 as DateField, a7 as TextField, a8 as EmailField, a9 as IconField, aa as ImageField, ab as JoinField, ac as JsonField, ad as MoneyField, ae as MultiSelectField, af as NumberField, ag as ObjectField, ah as RadioField, ai as RichTextField, aj as RowField, ak as TextareaField, al as TimeField, am as UrlField } from './app-BBHBP-6V.cjs';
2
- export { an as AIAction, ao as AIActionStatus, ap as AIActionType, aq as AIAuditActionType, ar as AIAuditRecord, as as AIChunk, at as AIMessage, au as AIPIIPattern, av as AIRateLimitResult, aw as AIRateLimitStore, ax as AIThread, ay as AIToolContext, az as AIToolDefinition, aA as AI_ACTIONS_COLLECTION, aB as AI_AUDIT_COLLECTION, aC as AI_CHUNKS_COLLECTION, aD as AI_MESSAGES_COLLECTION, aE as AI_THREADS_COLLECTION, aF as AccessConfig, aG as AccessFunction, aH as AccessFunctionArgs, aI as AccessResult, aJ as AccessRule, aK as ActionConfig, aL as ActionConfigBase, aM as ActionConfigWithHandler, aN as ActionConfigWithMutation, aO as ActionContext, aP as ActionType, aQ as AdminAuthAccessResolution, aR as AdminAuthClaimMapping, aS as AdminAuthMember, aT as AdminAuthProvider, aU as AdminAuthProviderMembersConfig, aV as AdminAuthProvisioningMode, aW as AdminAuthResolveAccessArgs, aX as AdminAuthResolvedIdentity, aY as AdminConfig, aZ as AdminDashboardComponentSlots, a_ as AdminIconName, a$ as AggregateArgs, b0 as AggregateCastType, b1 as AggregateCollectionResult, b2 as AggregateInput, b3 as AggregateOperation, b4 as AggregateResult, b5 as AppTrashConfig, b6 as BaseAdminAuthProvider, b7 as BaseFieldAdmin, b8 as BlockVariant, b9 as BlocksField, ba as BooleanFieldAdmin, bb as BooleanFormat, bc as CURRENT_NAV_PREFERENCES_VERSION, bd as CalendarViewConfig, be as CardsViewConfig, bf as CharacterLimitFieldAdmin, bg as CharacterLimitFieldConfig, bh as CollectionAfterChangeHook, bi as CollectionAfterDeleteHook, bj as CollectionAfterReadHook, bk as CollectionAfterReadHookEntry, bl as CollectionAfterRestoreHook, bm as CollectionAfterTransitionHook, bn as CollectionAfterTrashHook, bo as CollectionBeforeChangeHook, bp as CollectionBeforeChangeHookEntry, bq as CollectionBeforeCommitHook, br as CollectionBeforeDeleteHook, bs as CollectionBeforeReadHook, bt as CollectionBeforeReadHookEntry, bu as CollectionBeforeRestoreHook, bv as CollectionBeforeTransitionHook, bw as CollectionBeforeTrashHook, bx as CollectionEmailConfig, by as CollectionIndex, bz as CollectionListComponentSlots, bA as CollectionRAGConfig, bB as CollectionSchemaResult, bC as CollectionSummaryResult, bD as CollectionViewComponentSlots, bE as CompiledNavGroup, bF as CountOperation, bG as CustomAdminAuthProvider, bH as DEFAULT_USER_NAV_PREFERENCES, bI as DateFieldAdmin, bJ as DateFormat, bK as DefaultValueContext, bL as DefineActionOptions, bM as DefineCalendarViewOptions, bN as DefineCardsViewOptions, bO as DefineGanttViewOptions, bP as DefineKanbanViewOptions, bQ as DefineTableViewOptions, bR as DefineViewBaseOptions, bS as DefineViewOptions, bT as DetailSpan, bU as DisplayTone, bV as DisplayVariant, bW as DistinctCountOperation, bX as DistinctValuesOperation, bY as DynamicOptionItem, bZ as DynamicOptionsConfig, b_ as DynamicOptionsResolver, b$ as DynamicOptionsResolverArgs, c0 as DyrectedAIContext, c1 as DyrectedLoggerConfig, c2 as DyrectedObservabilityConfig, c3 as EmailFieldAdmin, c4 as EmailTemplateArgs, c5 as EmailTemplateResult, c6 as FieldAdminHooks, c7 as FieldAdminOnChangeHook, c8 as FieldAdminOnChangeHookArgs, c9 as FieldAdminOptionsHook, ca as FieldAdminOptionsHookArgs, cb as FieldAdminOptionsHookResult, cc as FieldAfterReadHook, cd as FieldAfterReadHookArgs, ce as FieldBase, cf as FieldBeforeChangeHook, cg as FieldBeforeChangeHookArgs, ch as FieldHook, ci as FieldHooks, cj as FileData, ck as GanttViewConfig, cl as GetDocumentResult, cm as GlobalAfterChangeHook, cn as GlobalAfterReadHook, co as GlobalAfterReadHookEntry, cp as GlobalBeforeChangeHook, cq as GlobalBeforeChangeHookEntry, cr as GlobalBeforeReadHook, cs as GlobalBeforeReadHookEntry, ct as GlobalRAGConfig, cu as GlobalSchemaResult, cv as GlobalSummaryResult, cw as HeadingLevel, cx as HookFunction, cy as IconFieldAdmin, cz as ImageService, cA as ImageTransformOptions, cB as InferAggregateResult, cC as JoinFieldAdmin, cD as JsonFieldAdmin, cE as JsonFormat, cF as KanbanViewConfig, cG as LIFECYCLE_EVENT_NAMES, cH as LifecycleEventHandler, cI as LinkFormat, cJ as MetricColor, cK as MoneyFieldAdmin, cL as MoneyFieldConfig, cM as MultiSelectFieldAdmin, cN as NamedAccessPolicy, cO as NavBadgeConfig, cP as NavGroup, cQ as NumberFieldAdmin, cR as NumberFormat, cS as NumberLimitFieldAdmin, cT as NumberLimitFieldConfig, cU as NumericOperation, cV as NumericUpdateOperator, cW as OIDCAdminAuthProvider, cX as OptionFormat, cY as OutboundEmail, cZ as PaginatedResult, c_ as PinnedNavItemRef, c$ as PublicAdminAuthProvider, d0 as QueryCollectionResult, d1 as RAGSearchResult, d2 as RadioFieldAdmin, d3 as RateLimitConfig, d4 as ReadonlyDatabaseAdapter, d5 as RichTextFeature, d6 as RichTextFieldConfig, d7 as SelectFieldAdmin, d8 as SqlWhereResult, d9 as StorageAdapter, da as TableViewConfig, db as TaskContext, dc as TaskLogger, dd as TaskRunStatus, de as TextFieldAdmin, df as TextFormat, dg as TextareaFieldAdmin, dh as TrashConfig, di as TrustProxyConfig, dj as TypedField, dk as UploadConfig, dl as UrlFieldAdmin, dm as UrlLinkValue, dn as ViewActionFeatures, dp as ViewComponentSlots, dq as ViewConfigBase, dr as ViewLayout, ds as ViewMetric, dt as ViewMetricGroupBy, du as ViewMetricGroupByConfig, dv as ViewMetricTrendConfig, dw as ViewSubMetric, dx as WhereClause, dy as WhereOperator, dz as WhereOperatorName, dA as WordLimitFieldAdmin, dB as WordLimitFieldConfig, dC as WorkflowMetadata, dD as WorkflowOnTransitionContext, dE as WorkflowOnTransitionHook, dF as WorkflowRole, dG as WorkflowState, dH as WorkflowTransitionContext, dI as coerceBooleanWhere, dJ as defineAction, dK as defineCalendarView, dL as defineCardsView, dM as defineGanttView, dN as defineKanbanView, dO as defineTableView, dP as defineView, dQ as defineWorkspace, dR as isAICollection, dS as parseMongoWhere, dT as parseSqlWhere } from './app-BBHBP-6V.cjs';
1
+ import { F as Field, B as Block, C as CollectionConfig, D as DyrectedConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, G as GlobalConfig, a as DeclarativeHookExpression, W as WorkflowConfig, b as AuthenticatedUser, c as WorkflowTransition, L as LifecycleEventName, d as LifecycleEvent, e as DatabaseAdapter, f as BaseDocument, H as HookRequestContext, T as TaskRunResult, g as TaskConfig, h as DetailActionOptions, i as DetailAction, j as DetailComputedOptions, k as ComputedHandler, l as DetailComputed, m as DetailCustomOptions, n as DetailCustom, o as DetailDividerOptions, p as DetailDivider, q as DisplayFieldOptions, r as DetailField, s as DetailItem, t as DetailGridOptions, u as DetailGrid, v as DetailRepeatOptions, w as DetailRepeat, x as DetailSectionOptions, y as DetailSection, z as DetailTabOptions, E as DetailTab, I as DetailTabsOptions, J as DetailTabs, K as DetailTextOptions, M as DetailText, N as DetailSchema, O as DyrectedContext, Q as AIConfig, R as AIPIIConfig, S as IdStrategy, U as CompiledNavTree, V as CompiledNavItem, X as UserNavigationPreferences, Y as DefineWorkspaceOptions, Z as ViewConfig, _ as DateTimeField, $ as RelationshipField, a0 as SelectField, a1 as ArrayField, a2 as FieldType, a3 as BooleanField, a4 as AuthConfig, a5 as AccessPolicyResolver, a6 as DateField, a7 as TextField, a8 as EmailField, a9 as IconField, aa as ImageField, ab as JoinField, ac as JsonField, ad as MoneyField, ae as MultiSelectField, af as NumberField, ag as ObjectField, ah as RadioField, ai as RichTextField, aj as RowField, ak as TextareaField, al as TimeField, am as UrlField } from './app-DregJnqR.cjs';
2
+ export { an as AIAction, ao as AIActionStatus, ap as AIActionType, aq as AIAuditActionType, ar as AIAuditRecord, as as AIChunk, at as AIMessage, au as AIPIIPattern, av as AIRateLimitResult, aw as AIRateLimitStore, ax as AIThread, ay as AIToolContext, az as AIToolDefinition, aA as AI_ACTIONS_COLLECTION, aB as AI_AUDIT_COLLECTION, aC as AI_CHUNKS_COLLECTION, aD as AI_MESSAGES_COLLECTION, aE as AI_THREADS_COLLECTION, aF as AccessConfig, aG as AccessFunction, aH as AccessFunctionArgs, aI as AccessResult, aJ as AccessRule, aK as ActionConfig, aL as ActionConfigBase, aM as ActionConfigWithHandler, aN as ActionConfigWithMutation, aO as ActionContext, aP as ActionType, aQ as AdminAuthAccessResolution, aR as AdminAuthClaimMapping, aS as AdminAuthMember, aT as AdminAuthProvider, aU as AdminAuthProviderMembersConfig, aV as AdminAuthProvisioningMode, aW as AdminAuthResolveAccessArgs, aX as AdminAuthResolvedIdentity, aY as AdminConfig, aZ as AdminDashboardComponentSlots, a_ as AdminIconName, a$ as AggregateArgs, b0 as AggregateCastType, b1 as AggregateCollectionResult, b2 as AggregateInput, b3 as AggregateOperation, b4 as AggregateResult, b5 as AppTrashConfig, b6 as BaseAdminAuthProvider, b7 as BaseFieldAdmin, b8 as BlockVariant, b9 as BlocksField, ba as BooleanFieldAdmin, bb as BooleanFormat, bc as CURRENT_NAV_PREFERENCES_VERSION, bd as CUSTOM_VIEW_FETCH_ALL_LIMIT, be as CalendarViewConfig, bf as CardsViewConfig, bg as CharacterLimitFieldAdmin, bh as CharacterLimitFieldConfig, bi as CollectionAfterChangeHook, bj as CollectionAfterDeleteHook, bk as CollectionAfterReadHook, bl as CollectionAfterReadHookEntry, bm as CollectionAfterRestoreHook, bn as CollectionAfterTransitionHook, bo as CollectionAfterTrashHook, bp as CollectionBeforeChangeHook, bq as CollectionBeforeChangeHookEntry, br as CollectionBeforeCommitHook, bs as CollectionBeforeDeleteHook, bt as CollectionBeforeReadHook, bu as CollectionBeforeReadHookEntry, bv as CollectionBeforeRestoreHook, bw as CollectionBeforeTransitionHook, bx as CollectionBeforeTrashHook, by as CollectionEmailConfig, bz as CollectionIndex, bA as CollectionListComponentSlots, bB as CollectionRAGConfig, bC as CollectionSchemaResult, bD as CollectionSummaryResult, bE as CollectionViewComponentSlots, bF as CompiledNavGroup, bG as CountOperation, bH as CustomAdminAuthProvider, bI as CustomViewConfig, bJ as CustomViewDataConfig, bK as DEFAULT_USER_NAV_PREFERENCES, bL as DateFieldAdmin, bM as DateFormat, bN as DefaultValueContext, bO as DefineActionOptions, bP as DefineCalendarViewOptions, bQ as DefineCardsViewOptions, bR as DefineCustomViewOptions, bS as DefineGanttViewOptions, bT as DefineKanbanViewOptions, bU as DefinePageInput, bV as DefineTableViewOptions, bW as DefineViewBaseOptions, bX as DefineViewOptions, bY as DetailSpan, bZ as DisplayTone, b_ as DisplayVariant, b$ as DistinctCountOperation, c0 as DistinctValuesOperation, c1 as DynamicOptionItem, c2 as DynamicOptionsConfig, c3 as DynamicOptionsResolver, c4 as DynamicOptionsResolverArgs, c5 as DyrectedAIContext, c6 as DyrectedLoggerConfig, c7 as DyrectedObservabilityConfig, c8 as EmailFieldAdmin, c9 as EmailTemplateArgs, ca as EmailTemplateResult, cb as FieldAdminHooks, cc as FieldAdminOnChangeHook, cd as FieldAdminOnChangeHookArgs, ce as FieldAdminOptionsHook, cf as FieldAdminOptionsHookArgs, cg as FieldAdminOptionsHookResult, ch as FieldAfterReadHook, ci as FieldAfterReadHookArgs, cj as FieldBase, ck as FieldBeforeChangeHook, cl as FieldBeforeChangeHookArgs, cm as FieldHook, cn as FieldHooks, co as FileData, cp as GanttViewConfig, cq as GetDocumentResult, cr as GlobalAfterChangeHook, cs as GlobalAfterReadHook, ct as GlobalAfterReadHookEntry, cu as GlobalBeforeChangeHook, cv as GlobalBeforeChangeHookEntry, cw as GlobalBeforeReadHook, cx as GlobalBeforeReadHookEntry, cy as GlobalRAGConfig, cz as GlobalSchemaResult, cA as GlobalSummaryResult, cB as HeadingLevel, cC as HookFunction, cD as IconFieldAdmin, cE as ImageService, cF as ImageTransformOptions, cG as InferAggregateResult, cH as JoinFieldAdmin, cI as JsonFieldAdmin, cJ as JsonFormat, cK as KanbanViewConfig, cL as LIFECYCLE_EVENT_NAMES, cM as LifecycleEventHandler, cN as LinkFormat, cO as MetricColor, cP as MoneyFieldAdmin, cQ as MoneyFieldConfig, cR as MultiSelectFieldAdmin, cS as NamedAccessPolicy, cT as NavBadgeConfig, cU as NavGroup, cV as NumberFieldAdmin, cW as NumberFormat, cX as NumberLimitFieldAdmin, cY as NumberLimitFieldConfig, cZ as NumericOperation, c_ as NumericUpdateOperator, c$ as OIDCAdminAuthProvider, d0 as OptionFormat, d1 as OutboundEmail, d2 as PageAction, d3 as PageBreadcrumbItem, d4 as PageConfig, d5 as PaginatedResult, d6 as PinnedNavItemRef, d7 as PublicAdminAuthProvider, d8 as QueryCollectionResult, d9 as RAGSearchResult, da as RadioFieldAdmin, db as RateLimitConfig, dc as ReadonlyDatabaseAdapter, dd as RichTextFeature, de as RichTextFieldConfig, df as SelectFieldAdmin, dg as SqlWhereResult, dh as StorageAdapter, di as TableViewConfig, dj as TaskContext, dk as TaskLogger, dl as TaskRunStatus, dm as TextFieldAdmin, dn as TextFormat, dp as TextareaFieldAdmin, dq as TrashConfig, dr as TrustProxyConfig, ds as TypedField, dt as UploadConfig, du as UrlFieldAdmin, dv as UrlLinkValue, dw as ViewActionFeatures, dx as ViewComponentSlots, dy as ViewConfigBase, dz as ViewLayout, dA as ViewMetric, dB as ViewMetricGroupBy, dC as ViewMetricGroupByConfig, dD as ViewMetricTrendConfig, dE as ViewSubMetric, dF as WhereClause, dG as WhereOperator, dH as WhereOperatorName, dI as WordLimitFieldAdmin, dJ as WordLimitFieldConfig, dK as WorkflowMetadata, dL as WorkflowOnTransitionContext, dM as WorkflowOnTransitionHook, dN as WorkflowRole, dO as WorkflowState, dP as WorkflowTransitionContext, dQ as coerceBooleanWhere, dR as defineAction, dS as defineCalendarView, dT as defineCardsView, dU as defineCustomView, dV as defineGanttView, dW as defineKanbanView, dX as definePage, dY as defineTableView, dZ as defineView, d_ as defineWorkspace, d$ as isAICollection, e0 as parseMongoWhere, e1 as parseSqlWhere } from './app-DregJnqR.cjs';
3
3
  import jexl from 'jexl';
4
4
  import { Context } from 'hono';
5
5
  export { z } from 'zod';
@@ -318,6 +318,38 @@ declare function isConfigValidationError(error: unknown): error is ConfigValidat
318
318
  declare function assertValidDeclarativeHooksInConfig(config: DeclarativeValidationConfig, source?: string): void;
319
319
  declare function assertValidDeclarativeAccessInConfig(config: DeclarativeValidationConfig, source?: string): void;
320
320
 
321
+ /**
322
+ * Component keys a schema references, grouped by the `AdminComponents`
323
+ * registry that must supply them.
324
+ *
325
+ * Registration happens in the host app's admin bundle, so this scan is the
326
+ * single source of truth for both type generation (CLI) and the admin's
327
+ * unused-registration warning.
328
+ */
329
+ interface ReferencedComponentKeys {
330
+ /** `field.admin.component` keys, resolved against `components.fields`. */
331
+ fields: Set<string>;
332
+ /** `admin.components.before/afterDashboard` keys. */
333
+ dashboard: Set<string>;
334
+ /** `collection.admin.components` list slots. */
335
+ collectionList: Set<string>;
336
+ /** Operational view slots (`collectionView` and per-view `components`). */
337
+ collectionView: Set<string>;
338
+ /** Reserved for custom document forms (spec 2). Empty until config can reference them. */
339
+ forms: Set<string>;
340
+ /** `component` of views with `layout: "custom"`. */
341
+ viewLayouts: Set<string>;
342
+ /** `admin.pages[].component` keys. */
343
+ pages: Set<string>;
344
+ /** `displayCustom(name)` keys used in Detail View layouts. */
345
+ customComponents: Set<string>;
346
+ }
347
+ /**
348
+ * Collects every component key a schema (or a `DyrectedConfig`) references.
349
+ * Tolerant of partial or unknown shapes: anything unrecognised is skipped.
350
+ */
351
+ declare function collectReferencedComponentKeys(schema: unknown): ReferencedComponentKeys;
352
+
321
353
  /**
322
354
  * Transforms a string into a clean, URL-safe slug.
323
355
  * Strips accents, lowercases, removes non-alphanumeric characters, and hyphens whitespace.
@@ -1522,7 +1554,7 @@ declare function reconcileNavigation(baseTree: CompiledNavTree | null | undefine
1522
1554
  */
1523
1555
  declare const RESERVED_NAVIGATION_SLUGS: Set<string>;
1524
1556
  /**
1525
- * Validates that no navigation item uses a reserved system route slug.
1557
+ * Validates that no navigation item uses a reserved system route slug or duplicate slug.
1526
1558
  */
1527
1559
  declare function assertValidNavigationSlugs(navigation: DefineWorkspaceOptions[]): void;
1528
1560
  /**
@@ -2340,4 +2372,4 @@ declare function defineTab<const T extends readonly Field[]>(args: {
2340
2372
  fields: T;
2341
2373
  }): T;
2342
2374
 
2343
- export { AIConfig, type AIErrorCode, AIPIIConfig, type AccessConditions, AccessPolicyResolver, AdminAuthConfig, ArrayField, AuthConfig, type AuthDocFields, AuthenticatedUser, BASE62_ALPHABET, BUILTIN_JEXL_HELPERS, BaseDocument, Block, BooleanField, CROCKFORD_BASE32, CollectionConfig, CompiledNavItem, CompiledNavTree, ComputedHandler, type ConfigDiagnostic, ConfigValidationError, ConflictError, type CreatedAtFieldOptions, type CreatedByFieldOptions, DatabaseAdapter, DateField, DateTimeField, type DeclarativeAccessSurface, type DeclarativeAccessValidationIssue, type DeclarativeAdminSurface, type DeclarativeAdminValidationIssue, DeclarativeHookExpression, type DeclarativeHookSurface, type DeclarativeHookValidationIssue, type DeclarativePreviewSurface, type DeclarativePreviewValidationIssue, DefineWorkspaceOptions, DetailAction, DetailActionOptions, DetailComputed, DetailComputedOptions, DetailCustom, DetailCustomOptions, DetailDivider, DetailDividerOptions, DetailField, DetailGrid, DetailGridOptions, DetailItem, DetailRepeat, DetailRepeatOptions, DetailSchema, DetailSection, DetailSectionOptions, DetailTab, DetailTabOptions, DetailTabs, DetailTabsOptions, DetailText, DetailTextOptions, DisplayFieldOptions, DuplicateKeyError, DyrectedAIError, DyrectedConfig, DyrectedError, EMAIL_TEMPLATES_COLLECTION_CONFIG, EMAIL_TEMPLATES_COLLECTION_SLUG, EmailField, type ExprFunction, type ExtractCollectionSlugs, Field, FieldConditionBuilder, FieldType, ForbiddenError, type GenerateIdOptions, GlobalConfig, HookRequestContext, INTERNAL_SYSTEM_COLLECTIONS, IconField, IdStrategy, ImageField, type InferDocShape, JoinField, JsonField, LIFECYCLE_EVENTS_COLLECTION, type LayoutOptions, LifecycleEvent, LifecycleEventName, MatchBuilder, MoneyField, MultiSelectField, NANOID_ALPHABET, NON_NEGOTIABLE_CREDENTIAL_FIELDS, NotFoundError, NumberField, ObjectField, PII_REGEX_PATTERNS, type Prettify, PublicAdminAuthConfig, type PublishingWorkflowOptions, RESERVED_NAVIGATION_SLUGS, RadioField, type ReconcileNavigationOptions, type ReconciledNavTree, RelationshipField, type ResolvedTrashConfig, type RestoreDocumentOptions, RichTextField, type RoleOption, type RolesFieldOptions, RowField, type SanitizeDocForAIOptions, SelectField, type SoftDeleteOptions, type SortClause, type SortDirection, type SqlSortDialect, type SystemDocFields, TASK_LOCKS_COLLECTION, TASK_LOCKS_COLLECTION_CONFIG, TRASH_COLLECTION, TRASH_COLLECTION_CONFIG, TaskConfig, TaskRunResult, type TaskRunner, type TemplateBlock, TextField, TextareaField, TimeField, UNASSIGNED_GROUP_KEY, type UpdatedAtFieldOptions, type UpdatedByFieldOptions, type UploadDocFields, UrlField, UserNavigationPreferences, ValidationError, ViewConfig, WORKFLOW_HISTORY_COLLECTION, type WhenFunction, WorkflowConfig, WorkflowTransition, abs, addDays, alertBox, asCollection, assertValidAdminConditionsInConfig, assertValidDeclarativeAccessInConfig, assertValidDeclarativeHookExpression, assertValidDeclarativeHookResult, assertValidDeclarativeHooksInConfig, assertValidNavigationSlugs, assertValidPreviewUrlsInConfig, assertValidTrashInConfig, availableWorkflowTransitions, buildSqlOrderBy, canViewWorkflowDraft, capitalize, ceil, clamp, coalesce, collectAdminConditionValidationIssues, collectConfigDiagnostics, collectDeclarativeAccessValidationIssues, collectDeclarativeHookValidationIssues, collectPreviewUrlValidationIssues, compact, compileNavigation, count, createLifecycleEvent, createTaskRunner, createTrashPurgeTask, createWorkflowDocument, ctaButton, defaultValue, defineArrayField, defineBlock, defineBlocksField, defineBooleanField, defineCollection, defineConfig, defineCreatedAtField, defineCreatedByField, defineDateField, defineDateTimeField, defineEmailField, defineField, defineGlobal, defineIconField, defineImageField, defineJoinField, defineJsonField, defineMoneyField, defineMultiSelectField, defineNumberField, defineObjectField, definePublishingWorkflow, defineRadioField, defineRelationshipField, defineRichTextField, defineRoles, defineRolesField, defineRowField, defineSelectField, defineTab, defineTask, defineTextField, defineTextareaField, defineTimeField, defineUpdatedAtField, defineUpdatedByField, defineUrlField, detailBox, diffDays, dispatchLifecycleEvent, dispatchPendingLifecycleEvents, displayAction, displayComputed, displayCustom, displayCustomComponent, displayDivider, displayField, displayGrid, displayRepeat, displaySection, displayTab, displayTabs, displayText, divider, emailTokens, endsWith, escapeHtml, evaluateDetailComputed, evaluateJexl, evaluateJexlSync, eventList, executeFieldAfterRead, executeFieldBeforeChange, expr, first, floor, formatConfigDiagnostics, formatDate, formatJexlValue, generateDefaultDetailSchema, generateDocumentId, generateId, generateOpenApi, get, getAdminAuthCollection, getAdminRoleForCollection, getAllowedSitesForUser, getDefaultEmailTemplate, getPublicAdminAuthConfig, getTrashEntryId, heading, includes, initializeWorkflowDocument, isConfigValidationError, isDetailItemVisible, isEmpty, isFuture, isPast, isSiteAuthorized, isUserAdmin, join, last, layout, length, lower, maskEmail, maskPhone, maskTextPII, materializeWorkflowDocument, max, min, nanoid, nextCronRun, normalizeConfig, normalizeDetailItem, normalizeGroupKey, now, numericFieldNames, paragraph, parseCron, parseSort, pow, prefixedId, pruneNavigationForUser, publishedStateName, publishingWorkflow, readingTime, reconcileNavigation, registerJexlHelpers, replace, resolveAdminAuthCollection, resolveAllCollectionViews, resolveAuthorizedSiteId, resolveBlocks, resolveDocumentTitle, resolveIndexName, resolvePrefix, resolveTrashConfig, restoreDocument, round, row, runCollectionHooks, safeLinkDetailBox, sanitizeDocForAI, saveWorkflowDraft, sectionLabel, simplePublishingWorkflow, slugify, softDeleteDocument, spacer, sqrt, startsWith, sum, table, today, transitionWorkflow, trim, truncate, ulid, unique, upper, uuid, validateAdminConditionExpression, validateDeclarativeAccessExpression, validateDeclarativeHookExpression, validatePreviewUrlExpression, when, wordCount, workflowCapabilities };
2375
+ export { AIConfig, type AIErrorCode, AIPIIConfig, type AccessConditions, AccessPolicyResolver, AdminAuthConfig, ArrayField, AuthConfig, type AuthDocFields, AuthenticatedUser, BASE62_ALPHABET, BUILTIN_JEXL_HELPERS, BaseDocument, Block, BooleanField, CROCKFORD_BASE32, CollectionConfig, CompiledNavItem, CompiledNavTree, ComputedHandler, type ConfigDiagnostic, ConfigValidationError, ConflictError, type CreatedAtFieldOptions, type CreatedByFieldOptions, DatabaseAdapter, DateField, DateTimeField, type DeclarativeAccessSurface, type DeclarativeAccessValidationIssue, type DeclarativeAdminSurface, type DeclarativeAdminValidationIssue, DeclarativeHookExpression, type DeclarativeHookSurface, type DeclarativeHookValidationIssue, type DeclarativePreviewSurface, type DeclarativePreviewValidationIssue, DefineWorkspaceOptions, DetailAction, DetailActionOptions, DetailComputed, DetailComputedOptions, DetailCustom, DetailCustomOptions, DetailDivider, DetailDividerOptions, DetailField, DetailGrid, DetailGridOptions, DetailItem, DetailRepeat, DetailRepeatOptions, DetailSchema, DetailSection, DetailSectionOptions, DetailTab, DetailTabOptions, DetailTabs, DetailTabsOptions, DetailText, DetailTextOptions, DisplayFieldOptions, DuplicateKeyError, DyrectedAIError, DyrectedConfig, DyrectedError, EMAIL_TEMPLATES_COLLECTION_CONFIG, EMAIL_TEMPLATES_COLLECTION_SLUG, EmailField, type ExprFunction, type ExtractCollectionSlugs, Field, FieldConditionBuilder, FieldType, ForbiddenError, type GenerateIdOptions, GlobalConfig, HookRequestContext, INTERNAL_SYSTEM_COLLECTIONS, IconField, IdStrategy, ImageField, type InferDocShape, JoinField, JsonField, LIFECYCLE_EVENTS_COLLECTION, type LayoutOptions, LifecycleEvent, LifecycleEventName, MatchBuilder, MoneyField, MultiSelectField, NANOID_ALPHABET, NON_NEGOTIABLE_CREDENTIAL_FIELDS, NotFoundError, NumberField, ObjectField, PII_REGEX_PATTERNS, type Prettify, PublicAdminAuthConfig, type PublishingWorkflowOptions, RESERVED_NAVIGATION_SLUGS, RadioField, type ReconcileNavigationOptions, type ReconciledNavTree, type ReferencedComponentKeys, RelationshipField, type ResolvedTrashConfig, type RestoreDocumentOptions, RichTextField, type RoleOption, type RolesFieldOptions, RowField, type SanitizeDocForAIOptions, SelectField, type SoftDeleteOptions, type SortClause, type SortDirection, type SqlSortDialect, type SystemDocFields, TASK_LOCKS_COLLECTION, TASK_LOCKS_COLLECTION_CONFIG, TRASH_COLLECTION, TRASH_COLLECTION_CONFIG, TaskConfig, TaskRunResult, type TaskRunner, type TemplateBlock, TextField, TextareaField, TimeField, UNASSIGNED_GROUP_KEY, type UpdatedAtFieldOptions, type UpdatedByFieldOptions, type UploadDocFields, UrlField, UserNavigationPreferences, ValidationError, ViewConfig, WORKFLOW_HISTORY_COLLECTION, type WhenFunction, WorkflowConfig, WorkflowTransition, abs, addDays, alertBox, asCollection, assertValidAdminConditionsInConfig, assertValidDeclarativeAccessInConfig, assertValidDeclarativeHookExpression, assertValidDeclarativeHookResult, assertValidDeclarativeHooksInConfig, assertValidNavigationSlugs, assertValidPreviewUrlsInConfig, assertValidTrashInConfig, availableWorkflowTransitions, buildSqlOrderBy, canViewWorkflowDraft, capitalize, ceil, clamp, coalesce, collectAdminConditionValidationIssues, collectConfigDiagnostics, collectDeclarativeAccessValidationIssues, collectDeclarativeHookValidationIssues, collectPreviewUrlValidationIssues, collectReferencedComponentKeys, compact, compileNavigation, count, createLifecycleEvent, createTaskRunner, createTrashPurgeTask, createWorkflowDocument, ctaButton, defaultValue, defineArrayField, defineBlock, defineBlocksField, defineBooleanField, defineCollection, defineConfig, defineCreatedAtField, defineCreatedByField, defineDateField, defineDateTimeField, defineEmailField, defineField, defineGlobal, defineIconField, defineImageField, defineJoinField, defineJsonField, defineMoneyField, defineMultiSelectField, defineNumberField, defineObjectField, definePublishingWorkflow, defineRadioField, defineRelationshipField, defineRichTextField, defineRoles, defineRolesField, defineRowField, defineSelectField, defineTab, defineTask, defineTextField, defineTextareaField, defineTimeField, defineUpdatedAtField, defineUpdatedByField, defineUrlField, detailBox, diffDays, dispatchLifecycleEvent, dispatchPendingLifecycleEvents, displayAction, displayComputed, displayCustom, displayCustomComponent, displayDivider, displayField, displayGrid, displayRepeat, displaySection, displayTab, displayTabs, displayText, divider, emailTokens, endsWith, escapeHtml, evaluateDetailComputed, evaluateJexl, evaluateJexlSync, eventList, executeFieldAfterRead, executeFieldBeforeChange, expr, first, floor, formatConfigDiagnostics, formatDate, formatJexlValue, generateDefaultDetailSchema, generateDocumentId, generateId, generateOpenApi, get, getAdminAuthCollection, getAdminRoleForCollection, getAllowedSitesForUser, getDefaultEmailTemplate, getPublicAdminAuthConfig, getTrashEntryId, heading, includes, initializeWorkflowDocument, isConfigValidationError, isDetailItemVisible, isEmpty, isFuture, isPast, isSiteAuthorized, isUserAdmin, join, last, layout, length, lower, maskEmail, maskPhone, maskTextPII, materializeWorkflowDocument, max, min, nanoid, nextCronRun, normalizeConfig, normalizeDetailItem, normalizeGroupKey, now, numericFieldNames, paragraph, parseCron, parseSort, pow, prefixedId, pruneNavigationForUser, publishedStateName, publishingWorkflow, readingTime, reconcileNavigation, registerJexlHelpers, replace, resolveAdminAuthCollection, resolveAllCollectionViews, resolveAuthorizedSiteId, resolveBlocks, resolveDocumentTitle, resolveIndexName, resolvePrefix, resolveTrashConfig, restoreDocument, round, row, runCollectionHooks, safeLinkDetailBox, sanitizeDocForAI, saveWorkflowDraft, sectionLabel, simplePublishingWorkflow, slugify, softDeleteDocument, spacer, sqrt, startsWith, sum, table, today, transitionWorkflow, trim, truncate, ulid, unique, upper, uuid, validateAdminConditionExpression, validateDeclarativeAccessExpression, validateDeclarativeHookExpression, validatePreviewUrlExpression, when, wordCount, workflowCapabilities };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as Field, B as Block, C as CollectionConfig, D as DyrectedConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, G as GlobalConfig, a as DeclarativeHookExpression, W as WorkflowConfig, b as AuthenticatedUser, c as WorkflowTransition, L as LifecycleEventName, d as LifecycleEvent, e as DatabaseAdapter, f as BaseDocument, H as HookRequestContext, T as TaskRunResult, g as TaskConfig, h as DetailActionOptions, i as DetailAction, j as DetailComputedOptions, k as ComputedHandler, l as DetailComputed, m as DetailCustomOptions, n as DetailCustom, o as DetailDividerOptions, p as DetailDivider, q as DisplayFieldOptions, r as DetailField, s as DetailItem, t as DetailGridOptions, u as DetailGrid, v as DetailRepeatOptions, w as DetailRepeat, x as DetailSectionOptions, y as DetailSection, z as DetailTabOptions, E as DetailTab, I as DetailTabsOptions, J as DetailTabs, K as DetailTextOptions, M as DetailText, N as DetailSchema, O as DyrectedContext, Q as AIConfig, R as AIPIIConfig, S as IdStrategy, U as CompiledNavTree, V as CompiledNavItem, X as UserNavigationPreferences, Y as DefineWorkspaceOptions, Z as ViewConfig, _ as DateTimeField, $ as RelationshipField, a0 as SelectField, a1 as ArrayField, a2 as FieldType, a3 as BooleanField, a4 as AuthConfig, a5 as AccessPolicyResolver, a6 as DateField, a7 as TextField, a8 as EmailField, a9 as IconField, aa as ImageField, ab as JoinField, ac as JsonField, ad as MoneyField, ae as MultiSelectField, af as NumberField, ag as ObjectField, ah as RadioField, ai as RichTextField, aj as RowField, ak as TextareaField, al as TimeField, am as UrlField } from './app-BBHBP-6V.js';
2
- export { an as AIAction, ao as AIActionStatus, ap as AIActionType, aq as AIAuditActionType, ar as AIAuditRecord, as as AIChunk, at as AIMessage, au as AIPIIPattern, av as AIRateLimitResult, aw as AIRateLimitStore, ax as AIThread, ay as AIToolContext, az as AIToolDefinition, aA as AI_ACTIONS_COLLECTION, aB as AI_AUDIT_COLLECTION, aC as AI_CHUNKS_COLLECTION, aD as AI_MESSAGES_COLLECTION, aE as AI_THREADS_COLLECTION, aF as AccessConfig, aG as AccessFunction, aH as AccessFunctionArgs, aI as AccessResult, aJ as AccessRule, aK as ActionConfig, aL as ActionConfigBase, aM as ActionConfigWithHandler, aN as ActionConfigWithMutation, aO as ActionContext, aP as ActionType, aQ as AdminAuthAccessResolution, aR as AdminAuthClaimMapping, aS as AdminAuthMember, aT as AdminAuthProvider, aU as AdminAuthProviderMembersConfig, aV as AdminAuthProvisioningMode, aW as AdminAuthResolveAccessArgs, aX as AdminAuthResolvedIdentity, aY as AdminConfig, aZ as AdminDashboardComponentSlots, a_ as AdminIconName, a$ as AggregateArgs, b0 as AggregateCastType, b1 as AggregateCollectionResult, b2 as AggregateInput, b3 as AggregateOperation, b4 as AggregateResult, b5 as AppTrashConfig, b6 as BaseAdminAuthProvider, b7 as BaseFieldAdmin, b8 as BlockVariant, b9 as BlocksField, ba as BooleanFieldAdmin, bb as BooleanFormat, bc as CURRENT_NAV_PREFERENCES_VERSION, bd as CalendarViewConfig, be as CardsViewConfig, bf as CharacterLimitFieldAdmin, bg as CharacterLimitFieldConfig, bh as CollectionAfterChangeHook, bi as CollectionAfterDeleteHook, bj as CollectionAfterReadHook, bk as CollectionAfterReadHookEntry, bl as CollectionAfterRestoreHook, bm as CollectionAfterTransitionHook, bn as CollectionAfterTrashHook, bo as CollectionBeforeChangeHook, bp as CollectionBeforeChangeHookEntry, bq as CollectionBeforeCommitHook, br as CollectionBeforeDeleteHook, bs as CollectionBeforeReadHook, bt as CollectionBeforeReadHookEntry, bu as CollectionBeforeRestoreHook, bv as CollectionBeforeTransitionHook, bw as CollectionBeforeTrashHook, bx as CollectionEmailConfig, by as CollectionIndex, bz as CollectionListComponentSlots, bA as CollectionRAGConfig, bB as CollectionSchemaResult, bC as CollectionSummaryResult, bD as CollectionViewComponentSlots, bE as CompiledNavGroup, bF as CountOperation, bG as CustomAdminAuthProvider, bH as DEFAULT_USER_NAV_PREFERENCES, bI as DateFieldAdmin, bJ as DateFormat, bK as DefaultValueContext, bL as DefineActionOptions, bM as DefineCalendarViewOptions, bN as DefineCardsViewOptions, bO as DefineGanttViewOptions, bP as DefineKanbanViewOptions, bQ as DefineTableViewOptions, bR as DefineViewBaseOptions, bS as DefineViewOptions, bT as DetailSpan, bU as DisplayTone, bV as DisplayVariant, bW as DistinctCountOperation, bX as DistinctValuesOperation, bY as DynamicOptionItem, bZ as DynamicOptionsConfig, b_ as DynamicOptionsResolver, b$ as DynamicOptionsResolverArgs, c0 as DyrectedAIContext, c1 as DyrectedLoggerConfig, c2 as DyrectedObservabilityConfig, c3 as EmailFieldAdmin, c4 as EmailTemplateArgs, c5 as EmailTemplateResult, c6 as FieldAdminHooks, c7 as FieldAdminOnChangeHook, c8 as FieldAdminOnChangeHookArgs, c9 as FieldAdminOptionsHook, ca as FieldAdminOptionsHookArgs, cb as FieldAdminOptionsHookResult, cc as FieldAfterReadHook, cd as FieldAfterReadHookArgs, ce as FieldBase, cf as FieldBeforeChangeHook, cg as FieldBeforeChangeHookArgs, ch as FieldHook, ci as FieldHooks, cj as FileData, ck as GanttViewConfig, cl as GetDocumentResult, cm as GlobalAfterChangeHook, cn as GlobalAfterReadHook, co as GlobalAfterReadHookEntry, cp as GlobalBeforeChangeHook, cq as GlobalBeforeChangeHookEntry, cr as GlobalBeforeReadHook, cs as GlobalBeforeReadHookEntry, ct as GlobalRAGConfig, cu as GlobalSchemaResult, cv as GlobalSummaryResult, cw as HeadingLevel, cx as HookFunction, cy as IconFieldAdmin, cz as ImageService, cA as ImageTransformOptions, cB as InferAggregateResult, cC as JoinFieldAdmin, cD as JsonFieldAdmin, cE as JsonFormat, cF as KanbanViewConfig, cG as LIFECYCLE_EVENT_NAMES, cH as LifecycleEventHandler, cI as LinkFormat, cJ as MetricColor, cK as MoneyFieldAdmin, cL as MoneyFieldConfig, cM as MultiSelectFieldAdmin, cN as NamedAccessPolicy, cO as NavBadgeConfig, cP as NavGroup, cQ as NumberFieldAdmin, cR as NumberFormat, cS as NumberLimitFieldAdmin, cT as NumberLimitFieldConfig, cU as NumericOperation, cV as NumericUpdateOperator, cW as OIDCAdminAuthProvider, cX as OptionFormat, cY as OutboundEmail, cZ as PaginatedResult, c_ as PinnedNavItemRef, c$ as PublicAdminAuthProvider, d0 as QueryCollectionResult, d1 as RAGSearchResult, d2 as RadioFieldAdmin, d3 as RateLimitConfig, d4 as ReadonlyDatabaseAdapter, d5 as RichTextFeature, d6 as RichTextFieldConfig, d7 as SelectFieldAdmin, d8 as SqlWhereResult, d9 as StorageAdapter, da as TableViewConfig, db as TaskContext, dc as TaskLogger, dd as TaskRunStatus, de as TextFieldAdmin, df as TextFormat, dg as TextareaFieldAdmin, dh as TrashConfig, di as TrustProxyConfig, dj as TypedField, dk as UploadConfig, dl as UrlFieldAdmin, dm as UrlLinkValue, dn as ViewActionFeatures, dp as ViewComponentSlots, dq as ViewConfigBase, dr as ViewLayout, ds as ViewMetric, dt as ViewMetricGroupBy, du as ViewMetricGroupByConfig, dv as ViewMetricTrendConfig, dw as ViewSubMetric, dx as WhereClause, dy as WhereOperator, dz as WhereOperatorName, dA as WordLimitFieldAdmin, dB as WordLimitFieldConfig, dC as WorkflowMetadata, dD as WorkflowOnTransitionContext, dE as WorkflowOnTransitionHook, dF as WorkflowRole, dG as WorkflowState, dH as WorkflowTransitionContext, dI as coerceBooleanWhere, dJ as defineAction, dK as defineCalendarView, dL as defineCardsView, dM as defineGanttView, dN as defineKanbanView, dO as defineTableView, dP as defineView, dQ as defineWorkspace, dR as isAICollection, dS as parseMongoWhere, dT as parseSqlWhere } from './app-BBHBP-6V.js';
1
+ import { F as Field, B as Block, C as CollectionConfig, D as DyrectedConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, G as GlobalConfig, a as DeclarativeHookExpression, W as WorkflowConfig, b as AuthenticatedUser, c as WorkflowTransition, L as LifecycleEventName, d as LifecycleEvent, e as DatabaseAdapter, f as BaseDocument, H as HookRequestContext, T as TaskRunResult, g as TaskConfig, h as DetailActionOptions, i as DetailAction, j as DetailComputedOptions, k as ComputedHandler, l as DetailComputed, m as DetailCustomOptions, n as DetailCustom, o as DetailDividerOptions, p as DetailDivider, q as DisplayFieldOptions, r as DetailField, s as DetailItem, t as DetailGridOptions, u as DetailGrid, v as DetailRepeatOptions, w as DetailRepeat, x as DetailSectionOptions, y as DetailSection, z as DetailTabOptions, E as DetailTab, I as DetailTabsOptions, J as DetailTabs, K as DetailTextOptions, M as DetailText, N as DetailSchema, O as DyrectedContext, Q as AIConfig, R as AIPIIConfig, S as IdStrategy, U as CompiledNavTree, V as CompiledNavItem, X as UserNavigationPreferences, Y as DefineWorkspaceOptions, Z as ViewConfig, _ as DateTimeField, $ as RelationshipField, a0 as SelectField, a1 as ArrayField, a2 as FieldType, a3 as BooleanField, a4 as AuthConfig, a5 as AccessPolicyResolver, a6 as DateField, a7 as TextField, a8 as EmailField, a9 as IconField, aa as ImageField, ab as JoinField, ac as JsonField, ad as MoneyField, ae as MultiSelectField, af as NumberField, ag as ObjectField, ah as RadioField, ai as RichTextField, aj as RowField, ak as TextareaField, al as TimeField, am as UrlField } from './app-DregJnqR.js';
2
+ export { an as AIAction, ao as AIActionStatus, ap as AIActionType, aq as AIAuditActionType, ar as AIAuditRecord, as as AIChunk, at as AIMessage, au as AIPIIPattern, av as AIRateLimitResult, aw as AIRateLimitStore, ax as AIThread, ay as AIToolContext, az as AIToolDefinition, aA as AI_ACTIONS_COLLECTION, aB as AI_AUDIT_COLLECTION, aC as AI_CHUNKS_COLLECTION, aD as AI_MESSAGES_COLLECTION, aE as AI_THREADS_COLLECTION, aF as AccessConfig, aG as AccessFunction, aH as AccessFunctionArgs, aI as AccessResult, aJ as AccessRule, aK as ActionConfig, aL as ActionConfigBase, aM as ActionConfigWithHandler, aN as ActionConfigWithMutation, aO as ActionContext, aP as ActionType, aQ as AdminAuthAccessResolution, aR as AdminAuthClaimMapping, aS as AdminAuthMember, aT as AdminAuthProvider, aU as AdminAuthProviderMembersConfig, aV as AdminAuthProvisioningMode, aW as AdminAuthResolveAccessArgs, aX as AdminAuthResolvedIdentity, aY as AdminConfig, aZ as AdminDashboardComponentSlots, a_ as AdminIconName, a$ as AggregateArgs, b0 as AggregateCastType, b1 as AggregateCollectionResult, b2 as AggregateInput, b3 as AggregateOperation, b4 as AggregateResult, b5 as AppTrashConfig, b6 as BaseAdminAuthProvider, b7 as BaseFieldAdmin, b8 as BlockVariant, b9 as BlocksField, ba as BooleanFieldAdmin, bb as BooleanFormat, bc as CURRENT_NAV_PREFERENCES_VERSION, bd as CUSTOM_VIEW_FETCH_ALL_LIMIT, be as CalendarViewConfig, bf as CardsViewConfig, bg as CharacterLimitFieldAdmin, bh as CharacterLimitFieldConfig, bi as CollectionAfterChangeHook, bj as CollectionAfterDeleteHook, bk as CollectionAfterReadHook, bl as CollectionAfterReadHookEntry, bm as CollectionAfterRestoreHook, bn as CollectionAfterTransitionHook, bo as CollectionAfterTrashHook, bp as CollectionBeforeChangeHook, bq as CollectionBeforeChangeHookEntry, br as CollectionBeforeCommitHook, bs as CollectionBeforeDeleteHook, bt as CollectionBeforeReadHook, bu as CollectionBeforeReadHookEntry, bv as CollectionBeforeRestoreHook, bw as CollectionBeforeTransitionHook, bx as CollectionBeforeTrashHook, by as CollectionEmailConfig, bz as CollectionIndex, bA as CollectionListComponentSlots, bB as CollectionRAGConfig, bC as CollectionSchemaResult, bD as CollectionSummaryResult, bE as CollectionViewComponentSlots, bF as CompiledNavGroup, bG as CountOperation, bH as CustomAdminAuthProvider, bI as CustomViewConfig, bJ as CustomViewDataConfig, bK as DEFAULT_USER_NAV_PREFERENCES, bL as DateFieldAdmin, bM as DateFormat, bN as DefaultValueContext, bO as DefineActionOptions, bP as DefineCalendarViewOptions, bQ as DefineCardsViewOptions, bR as DefineCustomViewOptions, bS as DefineGanttViewOptions, bT as DefineKanbanViewOptions, bU as DefinePageInput, bV as DefineTableViewOptions, bW as DefineViewBaseOptions, bX as DefineViewOptions, bY as DetailSpan, bZ as DisplayTone, b_ as DisplayVariant, b$ as DistinctCountOperation, c0 as DistinctValuesOperation, c1 as DynamicOptionItem, c2 as DynamicOptionsConfig, c3 as DynamicOptionsResolver, c4 as DynamicOptionsResolverArgs, c5 as DyrectedAIContext, c6 as DyrectedLoggerConfig, c7 as DyrectedObservabilityConfig, c8 as EmailFieldAdmin, c9 as EmailTemplateArgs, ca as EmailTemplateResult, cb as FieldAdminHooks, cc as FieldAdminOnChangeHook, cd as FieldAdminOnChangeHookArgs, ce as FieldAdminOptionsHook, cf as FieldAdminOptionsHookArgs, cg as FieldAdminOptionsHookResult, ch as FieldAfterReadHook, ci as FieldAfterReadHookArgs, cj as FieldBase, ck as FieldBeforeChangeHook, cl as FieldBeforeChangeHookArgs, cm as FieldHook, cn as FieldHooks, co as FileData, cp as GanttViewConfig, cq as GetDocumentResult, cr as GlobalAfterChangeHook, cs as GlobalAfterReadHook, ct as GlobalAfterReadHookEntry, cu as GlobalBeforeChangeHook, cv as GlobalBeforeChangeHookEntry, cw as GlobalBeforeReadHook, cx as GlobalBeforeReadHookEntry, cy as GlobalRAGConfig, cz as GlobalSchemaResult, cA as GlobalSummaryResult, cB as HeadingLevel, cC as HookFunction, cD as IconFieldAdmin, cE as ImageService, cF as ImageTransformOptions, cG as InferAggregateResult, cH as JoinFieldAdmin, cI as JsonFieldAdmin, cJ as JsonFormat, cK as KanbanViewConfig, cL as LIFECYCLE_EVENT_NAMES, cM as LifecycleEventHandler, cN as LinkFormat, cO as MetricColor, cP as MoneyFieldAdmin, cQ as MoneyFieldConfig, cR as MultiSelectFieldAdmin, cS as NamedAccessPolicy, cT as NavBadgeConfig, cU as NavGroup, cV as NumberFieldAdmin, cW as NumberFormat, cX as NumberLimitFieldAdmin, cY as NumberLimitFieldConfig, cZ as NumericOperation, c_ as NumericUpdateOperator, c$ as OIDCAdminAuthProvider, d0 as OptionFormat, d1 as OutboundEmail, d2 as PageAction, d3 as PageBreadcrumbItem, d4 as PageConfig, d5 as PaginatedResult, d6 as PinnedNavItemRef, d7 as PublicAdminAuthProvider, d8 as QueryCollectionResult, d9 as RAGSearchResult, da as RadioFieldAdmin, db as RateLimitConfig, dc as ReadonlyDatabaseAdapter, dd as RichTextFeature, de as RichTextFieldConfig, df as SelectFieldAdmin, dg as SqlWhereResult, dh as StorageAdapter, di as TableViewConfig, dj as TaskContext, dk as TaskLogger, dl as TaskRunStatus, dm as TextFieldAdmin, dn as TextFormat, dp as TextareaFieldAdmin, dq as TrashConfig, dr as TrustProxyConfig, ds as TypedField, dt as UploadConfig, du as UrlFieldAdmin, dv as UrlLinkValue, dw as ViewActionFeatures, dx as ViewComponentSlots, dy as ViewConfigBase, dz as ViewLayout, dA as ViewMetric, dB as ViewMetricGroupBy, dC as ViewMetricGroupByConfig, dD as ViewMetricTrendConfig, dE as ViewSubMetric, dF as WhereClause, dG as WhereOperator, dH as WhereOperatorName, dI as WordLimitFieldAdmin, dJ as WordLimitFieldConfig, dK as WorkflowMetadata, dL as WorkflowOnTransitionContext, dM as WorkflowOnTransitionHook, dN as WorkflowRole, dO as WorkflowState, dP as WorkflowTransitionContext, dQ as coerceBooleanWhere, dR as defineAction, dS as defineCalendarView, dT as defineCardsView, dU as defineCustomView, dV as defineGanttView, dW as defineKanbanView, dX as definePage, dY as defineTableView, dZ as defineView, d_ as defineWorkspace, d$ as isAICollection, e0 as parseMongoWhere, e1 as parseSqlWhere } from './app-DregJnqR.js';
3
3
  import jexl from 'jexl';
4
4
  import { Context } from 'hono';
5
5
  export { z } from 'zod';
@@ -318,6 +318,38 @@ declare function isConfigValidationError(error: unknown): error is ConfigValidat
318
318
  declare function assertValidDeclarativeHooksInConfig(config: DeclarativeValidationConfig, source?: string): void;
319
319
  declare function assertValidDeclarativeAccessInConfig(config: DeclarativeValidationConfig, source?: string): void;
320
320
 
321
+ /**
322
+ * Component keys a schema references, grouped by the `AdminComponents`
323
+ * registry that must supply them.
324
+ *
325
+ * Registration happens in the host app's admin bundle, so this scan is the
326
+ * single source of truth for both type generation (CLI) and the admin's
327
+ * unused-registration warning.
328
+ */
329
+ interface ReferencedComponentKeys {
330
+ /** `field.admin.component` keys, resolved against `components.fields`. */
331
+ fields: Set<string>;
332
+ /** `admin.components.before/afterDashboard` keys. */
333
+ dashboard: Set<string>;
334
+ /** `collection.admin.components` list slots. */
335
+ collectionList: Set<string>;
336
+ /** Operational view slots (`collectionView` and per-view `components`). */
337
+ collectionView: Set<string>;
338
+ /** Reserved for custom document forms (spec 2). Empty until config can reference them. */
339
+ forms: Set<string>;
340
+ /** `component` of views with `layout: "custom"`. */
341
+ viewLayouts: Set<string>;
342
+ /** `admin.pages[].component` keys. */
343
+ pages: Set<string>;
344
+ /** `displayCustom(name)` keys used in Detail View layouts. */
345
+ customComponents: Set<string>;
346
+ }
347
+ /**
348
+ * Collects every component key a schema (or a `DyrectedConfig`) references.
349
+ * Tolerant of partial or unknown shapes: anything unrecognised is skipped.
350
+ */
351
+ declare function collectReferencedComponentKeys(schema: unknown): ReferencedComponentKeys;
352
+
321
353
  /**
322
354
  * Transforms a string into a clean, URL-safe slug.
323
355
  * Strips accents, lowercases, removes non-alphanumeric characters, and hyphens whitespace.
@@ -1522,7 +1554,7 @@ declare function reconcileNavigation(baseTree: CompiledNavTree | null | undefine
1522
1554
  */
1523
1555
  declare const RESERVED_NAVIGATION_SLUGS: Set<string>;
1524
1556
  /**
1525
- * Validates that no navigation item uses a reserved system route slug.
1557
+ * Validates that no navigation item uses a reserved system route slug or duplicate slug.
1526
1558
  */
1527
1559
  declare function assertValidNavigationSlugs(navigation: DefineWorkspaceOptions[]): void;
1528
1560
  /**
@@ -2340,4 +2372,4 @@ declare function defineTab<const T extends readonly Field[]>(args: {
2340
2372
  fields: T;
2341
2373
  }): T;
2342
2374
 
2343
- export { AIConfig, type AIErrorCode, AIPIIConfig, type AccessConditions, AccessPolicyResolver, AdminAuthConfig, ArrayField, AuthConfig, type AuthDocFields, AuthenticatedUser, BASE62_ALPHABET, BUILTIN_JEXL_HELPERS, BaseDocument, Block, BooleanField, CROCKFORD_BASE32, CollectionConfig, CompiledNavItem, CompiledNavTree, ComputedHandler, type ConfigDiagnostic, ConfigValidationError, ConflictError, type CreatedAtFieldOptions, type CreatedByFieldOptions, DatabaseAdapter, DateField, DateTimeField, type DeclarativeAccessSurface, type DeclarativeAccessValidationIssue, type DeclarativeAdminSurface, type DeclarativeAdminValidationIssue, DeclarativeHookExpression, type DeclarativeHookSurface, type DeclarativeHookValidationIssue, type DeclarativePreviewSurface, type DeclarativePreviewValidationIssue, DefineWorkspaceOptions, DetailAction, DetailActionOptions, DetailComputed, DetailComputedOptions, DetailCustom, DetailCustomOptions, DetailDivider, DetailDividerOptions, DetailField, DetailGrid, DetailGridOptions, DetailItem, DetailRepeat, DetailRepeatOptions, DetailSchema, DetailSection, DetailSectionOptions, DetailTab, DetailTabOptions, DetailTabs, DetailTabsOptions, DetailText, DetailTextOptions, DisplayFieldOptions, DuplicateKeyError, DyrectedAIError, DyrectedConfig, DyrectedError, EMAIL_TEMPLATES_COLLECTION_CONFIG, EMAIL_TEMPLATES_COLLECTION_SLUG, EmailField, type ExprFunction, type ExtractCollectionSlugs, Field, FieldConditionBuilder, FieldType, ForbiddenError, type GenerateIdOptions, GlobalConfig, HookRequestContext, INTERNAL_SYSTEM_COLLECTIONS, IconField, IdStrategy, ImageField, type InferDocShape, JoinField, JsonField, LIFECYCLE_EVENTS_COLLECTION, type LayoutOptions, LifecycleEvent, LifecycleEventName, MatchBuilder, MoneyField, MultiSelectField, NANOID_ALPHABET, NON_NEGOTIABLE_CREDENTIAL_FIELDS, NotFoundError, NumberField, ObjectField, PII_REGEX_PATTERNS, type Prettify, PublicAdminAuthConfig, type PublishingWorkflowOptions, RESERVED_NAVIGATION_SLUGS, RadioField, type ReconcileNavigationOptions, type ReconciledNavTree, RelationshipField, type ResolvedTrashConfig, type RestoreDocumentOptions, RichTextField, type RoleOption, type RolesFieldOptions, RowField, type SanitizeDocForAIOptions, SelectField, type SoftDeleteOptions, type SortClause, type SortDirection, type SqlSortDialect, type SystemDocFields, TASK_LOCKS_COLLECTION, TASK_LOCKS_COLLECTION_CONFIG, TRASH_COLLECTION, TRASH_COLLECTION_CONFIG, TaskConfig, TaskRunResult, type TaskRunner, type TemplateBlock, TextField, TextareaField, TimeField, UNASSIGNED_GROUP_KEY, type UpdatedAtFieldOptions, type UpdatedByFieldOptions, type UploadDocFields, UrlField, UserNavigationPreferences, ValidationError, ViewConfig, WORKFLOW_HISTORY_COLLECTION, type WhenFunction, WorkflowConfig, WorkflowTransition, abs, addDays, alertBox, asCollection, assertValidAdminConditionsInConfig, assertValidDeclarativeAccessInConfig, assertValidDeclarativeHookExpression, assertValidDeclarativeHookResult, assertValidDeclarativeHooksInConfig, assertValidNavigationSlugs, assertValidPreviewUrlsInConfig, assertValidTrashInConfig, availableWorkflowTransitions, buildSqlOrderBy, canViewWorkflowDraft, capitalize, ceil, clamp, coalesce, collectAdminConditionValidationIssues, collectConfigDiagnostics, collectDeclarativeAccessValidationIssues, collectDeclarativeHookValidationIssues, collectPreviewUrlValidationIssues, compact, compileNavigation, count, createLifecycleEvent, createTaskRunner, createTrashPurgeTask, createWorkflowDocument, ctaButton, defaultValue, defineArrayField, defineBlock, defineBlocksField, defineBooleanField, defineCollection, defineConfig, defineCreatedAtField, defineCreatedByField, defineDateField, defineDateTimeField, defineEmailField, defineField, defineGlobal, defineIconField, defineImageField, defineJoinField, defineJsonField, defineMoneyField, defineMultiSelectField, defineNumberField, defineObjectField, definePublishingWorkflow, defineRadioField, defineRelationshipField, defineRichTextField, defineRoles, defineRolesField, defineRowField, defineSelectField, defineTab, defineTask, defineTextField, defineTextareaField, defineTimeField, defineUpdatedAtField, defineUpdatedByField, defineUrlField, detailBox, diffDays, dispatchLifecycleEvent, dispatchPendingLifecycleEvents, displayAction, displayComputed, displayCustom, displayCustomComponent, displayDivider, displayField, displayGrid, displayRepeat, displaySection, displayTab, displayTabs, displayText, divider, emailTokens, endsWith, escapeHtml, evaluateDetailComputed, evaluateJexl, evaluateJexlSync, eventList, executeFieldAfterRead, executeFieldBeforeChange, expr, first, floor, formatConfigDiagnostics, formatDate, formatJexlValue, generateDefaultDetailSchema, generateDocumentId, generateId, generateOpenApi, get, getAdminAuthCollection, getAdminRoleForCollection, getAllowedSitesForUser, getDefaultEmailTemplate, getPublicAdminAuthConfig, getTrashEntryId, heading, includes, initializeWorkflowDocument, isConfigValidationError, isDetailItemVisible, isEmpty, isFuture, isPast, isSiteAuthorized, isUserAdmin, join, last, layout, length, lower, maskEmail, maskPhone, maskTextPII, materializeWorkflowDocument, max, min, nanoid, nextCronRun, normalizeConfig, normalizeDetailItem, normalizeGroupKey, now, numericFieldNames, paragraph, parseCron, parseSort, pow, prefixedId, pruneNavigationForUser, publishedStateName, publishingWorkflow, readingTime, reconcileNavigation, registerJexlHelpers, replace, resolveAdminAuthCollection, resolveAllCollectionViews, resolveAuthorizedSiteId, resolveBlocks, resolveDocumentTitle, resolveIndexName, resolvePrefix, resolveTrashConfig, restoreDocument, round, row, runCollectionHooks, safeLinkDetailBox, sanitizeDocForAI, saveWorkflowDraft, sectionLabel, simplePublishingWorkflow, slugify, softDeleteDocument, spacer, sqrt, startsWith, sum, table, today, transitionWorkflow, trim, truncate, ulid, unique, upper, uuid, validateAdminConditionExpression, validateDeclarativeAccessExpression, validateDeclarativeHookExpression, validatePreviewUrlExpression, when, wordCount, workflowCapabilities };
2375
+ export { AIConfig, type AIErrorCode, AIPIIConfig, type AccessConditions, AccessPolicyResolver, AdminAuthConfig, ArrayField, AuthConfig, type AuthDocFields, AuthenticatedUser, BASE62_ALPHABET, BUILTIN_JEXL_HELPERS, BaseDocument, Block, BooleanField, CROCKFORD_BASE32, CollectionConfig, CompiledNavItem, CompiledNavTree, ComputedHandler, type ConfigDiagnostic, ConfigValidationError, ConflictError, type CreatedAtFieldOptions, type CreatedByFieldOptions, DatabaseAdapter, DateField, DateTimeField, type DeclarativeAccessSurface, type DeclarativeAccessValidationIssue, type DeclarativeAdminSurface, type DeclarativeAdminValidationIssue, DeclarativeHookExpression, type DeclarativeHookSurface, type DeclarativeHookValidationIssue, type DeclarativePreviewSurface, type DeclarativePreviewValidationIssue, DefineWorkspaceOptions, DetailAction, DetailActionOptions, DetailComputed, DetailComputedOptions, DetailCustom, DetailCustomOptions, DetailDivider, DetailDividerOptions, DetailField, DetailGrid, DetailGridOptions, DetailItem, DetailRepeat, DetailRepeatOptions, DetailSchema, DetailSection, DetailSectionOptions, DetailTab, DetailTabOptions, DetailTabs, DetailTabsOptions, DetailText, DetailTextOptions, DisplayFieldOptions, DuplicateKeyError, DyrectedAIError, DyrectedConfig, DyrectedError, EMAIL_TEMPLATES_COLLECTION_CONFIG, EMAIL_TEMPLATES_COLLECTION_SLUG, EmailField, type ExprFunction, type ExtractCollectionSlugs, Field, FieldConditionBuilder, FieldType, ForbiddenError, type GenerateIdOptions, GlobalConfig, HookRequestContext, INTERNAL_SYSTEM_COLLECTIONS, IconField, IdStrategy, ImageField, type InferDocShape, JoinField, JsonField, LIFECYCLE_EVENTS_COLLECTION, type LayoutOptions, LifecycleEvent, LifecycleEventName, MatchBuilder, MoneyField, MultiSelectField, NANOID_ALPHABET, NON_NEGOTIABLE_CREDENTIAL_FIELDS, NotFoundError, NumberField, ObjectField, PII_REGEX_PATTERNS, type Prettify, PublicAdminAuthConfig, type PublishingWorkflowOptions, RESERVED_NAVIGATION_SLUGS, RadioField, type ReconcileNavigationOptions, type ReconciledNavTree, type ReferencedComponentKeys, RelationshipField, type ResolvedTrashConfig, type RestoreDocumentOptions, RichTextField, type RoleOption, type RolesFieldOptions, RowField, type SanitizeDocForAIOptions, SelectField, type SoftDeleteOptions, type SortClause, type SortDirection, type SqlSortDialect, type SystemDocFields, TASK_LOCKS_COLLECTION, TASK_LOCKS_COLLECTION_CONFIG, TRASH_COLLECTION, TRASH_COLLECTION_CONFIG, TaskConfig, TaskRunResult, type TaskRunner, type TemplateBlock, TextField, TextareaField, TimeField, UNASSIGNED_GROUP_KEY, type UpdatedAtFieldOptions, type UpdatedByFieldOptions, type UploadDocFields, UrlField, UserNavigationPreferences, ValidationError, ViewConfig, WORKFLOW_HISTORY_COLLECTION, type WhenFunction, WorkflowConfig, WorkflowTransition, abs, addDays, alertBox, asCollection, assertValidAdminConditionsInConfig, assertValidDeclarativeAccessInConfig, assertValidDeclarativeHookExpression, assertValidDeclarativeHookResult, assertValidDeclarativeHooksInConfig, assertValidNavigationSlugs, assertValidPreviewUrlsInConfig, assertValidTrashInConfig, availableWorkflowTransitions, buildSqlOrderBy, canViewWorkflowDraft, capitalize, ceil, clamp, coalesce, collectAdminConditionValidationIssues, collectConfigDiagnostics, collectDeclarativeAccessValidationIssues, collectDeclarativeHookValidationIssues, collectPreviewUrlValidationIssues, collectReferencedComponentKeys, compact, compileNavigation, count, createLifecycleEvent, createTaskRunner, createTrashPurgeTask, createWorkflowDocument, ctaButton, defaultValue, defineArrayField, defineBlock, defineBlocksField, defineBooleanField, defineCollection, defineConfig, defineCreatedAtField, defineCreatedByField, defineDateField, defineDateTimeField, defineEmailField, defineField, defineGlobal, defineIconField, defineImageField, defineJoinField, defineJsonField, defineMoneyField, defineMultiSelectField, defineNumberField, defineObjectField, definePublishingWorkflow, defineRadioField, defineRelationshipField, defineRichTextField, defineRoles, defineRolesField, defineRowField, defineSelectField, defineTab, defineTask, defineTextField, defineTextareaField, defineTimeField, defineUpdatedAtField, defineUpdatedByField, defineUrlField, detailBox, diffDays, dispatchLifecycleEvent, dispatchPendingLifecycleEvents, displayAction, displayComputed, displayCustom, displayCustomComponent, displayDivider, displayField, displayGrid, displayRepeat, displaySection, displayTab, displayTabs, displayText, divider, emailTokens, endsWith, escapeHtml, evaluateDetailComputed, evaluateJexl, evaluateJexlSync, eventList, executeFieldAfterRead, executeFieldBeforeChange, expr, first, floor, formatConfigDiagnostics, formatDate, formatJexlValue, generateDefaultDetailSchema, generateDocumentId, generateId, generateOpenApi, get, getAdminAuthCollection, getAdminRoleForCollection, getAllowedSitesForUser, getDefaultEmailTemplate, getPublicAdminAuthConfig, getTrashEntryId, heading, includes, initializeWorkflowDocument, isConfigValidationError, isDetailItemVisible, isEmpty, isFuture, isPast, isSiteAuthorized, isUserAdmin, join, last, layout, length, lower, maskEmail, maskPhone, maskTextPII, materializeWorkflowDocument, max, min, nanoid, nextCronRun, normalizeConfig, normalizeDetailItem, normalizeGroupKey, now, numericFieldNames, paragraph, parseCron, parseSort, pow, prefixedId, pruneNavigationForUser, publishedStateName, publishingWorkflow, readingTime, reconcileNavigation, registerJexlHelpers, replace, resolveAdminAuthCollection, resolveAllCollectionViews, resolveAuthorizedSiteId, resolveBlocks, resolveDocumentTitle, resolveIndexName, resolvePrefix, resolveTrashConfig, restoreDocument, round, row, runCollectionHooks, safeLinkDetailBox, sanitizeDocForAI, saveWorkflowDraft, sectionLabel, simplePublishingWorkflow, slugify, softDeleteDocument, spacer, sqrt, startsWith, sum, table, today, transitionWorkflow, trim, truncate, ulid, unique, upper, uuid, validateAdminConditionExpression, validateDeclarativeAccessExpression, validateDeclarativeHookExpression, validatePreviewUrlExpression, when, wordCount, workflowCapabilities };