@dyrected/core 2.5.58 → 2.5.59

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.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as Field, B as Block, D as DyrectedConfig, C as CollectionConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, W as WorkflowConfig, a as AuthenticatedUser, b as WorkflowTransition, L as LifecycleEventName, c as LifecycleEvent, d as BaseDocument, H as HookRequestContext, e as ArrayField, f as BlocksField, g as BooleanField, h as DateField, i as DateTimeField, E as EmailField, G as GlobalConfig, I as IconField, j as ImageField, J as JoinField, k as JsonField, M as MultiSelectField, N as NumberField, O as ObjectField, R as RadioField, l as RelationshipField, m as RichTextField, n as RowField, S as SelectField, T as TextField, o as TextareaField, p as TimeField, U as UrlField } from './app-config-oU1EGHND.cjs';
2
- export { q as AccessFunction, r as AccessFunctionArgs, s as AccessPolicyResolver, t as AccessResult, u as AccessRule, v as AdminAuthAccessResolution, w as AdminAuthClaimMapping, x as AdminAuthMember, y as AdminAuthProvider, z as AdminAuthProviderMembersConfig, K as AdminAuthProvisioningMode, Q as AdminAuthResolveAccessArgs, V as AdminAuthResolvedIdentity, X as AdminConfig, Y as AdminDashboardComponentSlots, Z as AdminIconName, _ as BaseAdminAuthProvider, $ as BaseFieldAdmin, a0 as BlockVariant, a1 as BooleanFieldAdmin, a2 as CharacterLimitFieldAdmin, a3 as CharacterLimitFieldConfig, a4 as CollectionAfterChangeHook, a5 as CollectionAfterDeleteHook, a6 as CollectionAfterReadHook, a7 as CollectionAfterTransitionHook, a8 as CollectionBeforeChangeHook, a9 as CollectionBeforeDeleteHook, aa as CollectionBeforeReadHook, ab as CollectionBeforeTransitionHook, ac as CollectionListComponentSlots, ad as CustomAdminAuthProvider, ae as DatabaseAdapter, af as DynamicOptionItem, ag as DynamicOptionsConfig, ah as DynamicOptionsResolver, ai as DynamicOptionsResolverArgs, aj as EmailFieldAdmin, ak as FieldAdminHooks, al as FieldAdminOnChangeHook, am as FieldAdminOnChangeHookArgs, an as FieldAdminOptionsHook, ao as FieldAdminOptionsHookArgs, ap as FieldAdminOptionsHookResult, aq as FieldAfterReadHook, ar as FieldAfterReadHookArgs, as as FieldBase, at as FieldBeforeChangeHook, au as FieldBeforeChangeHookArgs, av as FieldHook, aw as FieldHooks, ax as FieldType, ay as FileData, az as GlobalAfterChangeHook, aA as GlobalAfterReadHook, aB as GlobalBeforeChangeHook, aC as GlobalBeforeReadHook, aD as HeadingLevel, aE as HookFunction, aF as IconFieldAdmin, aG as ImageService, aH as LIFECYCLE_EVENT_NAMES, aI as LifecycleEventHandler, aJ as MultiSelectFieldAdmin, aK as NamedAccessPolicy, aL as OIDCAdminAuthProvider, aM as PaginatedResult, aN as PublicAdminAuthProvider, aO as RadioFieldAdmin, aP as ReadonlyDatabaseAdapter, aQ as RichTextFeature, aR as RichTextFieldConfig, aS as SelectFieldAdmin, aT as StorageAdapter, aU as TextFieldAdmin, aV as TextareaFieldAdmin, aW as TypedField, aX as UploadConfig, aY as UrlFieldAdmin, aZ as WordLimitFieldAdmin, a_ as WordLimitFieldConfig, a$ as WorkflowMetadata, b0 as WorkflowRole, b1 as WorkflowState, b2 as WorkflowTransitionContext } from './app-config-oU1EGHND.cjs';
1
+ import { F as Field, B as Block, D as DyrectedConfig, C as CollectionConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, W as WorkflowConfig, a as AuthenticatedUser, b as WorkflowTransition, L as LifecycleEventName, c as LifecycleEvent, d as BaseDocument, H as HookRequestContext, e as ArrayField, f as BlocksField, g as BooleanField, h as DateField, i as DateTimeField, E as EmailField, G as GlobalConfig, I as IconField, j as ImageField, J as JoinField, k as JsonField, M as MultiSelectField, N as NumberField, O as ObjectField, R as RadioField, l as RelationshipField, m as RichTextField, n as RowField, S as SelectField, T as TextField, o as TextareaField, p as TimeField, U as UrlField } from './app-config-C3X5BAyK.cjs';
2
+ export { q as AccessFunction, r as AccessFunctionArgs, s as AccessPolicyResolver, t as AccessResult, u as AccessRule, v as AdminAuthAccessResolution, w as AdminAuthClaimMapping, x as AdminAuthMember, y as AdminAuthProvider, z as AdminAuthProviderMembersConfig, K as AdminAuthProvisioningMode, Q as AdminAuthResolveAccessArgs, V as AdminAuthResolvedIdentity, X as AdminConfig, Y as AdminDashboardComponentSlots, Z as AdminIconName, _ as BaseAdminAuthProvider, $ as BaseFieldAdmin, a0 as BlockVariant, a1 as BooleanFieldAdmin, a2 as CharacterLimitFieldAdmin, a3 as CharacterLimitFieldConfig, a4 as CollectionAfterChangeHook, a5 as CollectionAfterDeleteHook, a6 as CollectionAfterReadHook, a7 as CollectionAfterTransitionHook, a8 as CollectionBeforeChangeHook, a9 as CollectionBeforeDeleteHook, aa as CollectionBeforeReadHook, ab as CollectionBeforeTransitionHook, ac as CollectionListComponentSlots, ad as CustomAdminAuthProvider, ae as DatabaseAdapter, af as DynamicOptionItem, ag as DynamicOptionsConfig, ah as DynamicOptionsResolver, ai as DynamicOptionsResolverArgs, aj as EmailFieldAdmin, ak as FieldAdminHooks, al as FieldAdminOnChangeHook, am as FieldAdminOnChangeHookArgs, an as FieldAdminOptionsHook, ao as FieldAdminOptionsHookArgs, ap as FieldAdminOptionsHookResult, aq as FieldAfterReadHook, ar as FieldAfterReadHookArgs, as as FieldBase, at as FieldBeforeChangeHook, au as FieldBeforeChangeHookArgs, av as FieldHook, aw as FieldHooks, ax as FieldType, ay as FileData, az as GlobalAfterChangeHook, aA as GlobalAfterReadHook, aB as GlobalBeforeChangeHook, aC as GlobalBeforeReadHook, aD as HeadingLevel, aE as HookFunction, aF as IconFieldAdmin, aG as ImageService, aH as LIFECYCLE_EVENT_NAMES, aI as LifecycleEventHandler, aJ as MultiSelectFieldAdmin, aK as NamedAccessPolicy, aL as OIDCAdminAuthProvider, aM as PaginatedResult, aN as PublicAdminAuthProvider, aO as RadioFieldAdmin, aP as ReadonlyDatabaseAdapter, aQ as RichTextFeature, aR as RichTextFieldConfig, aS as SelectFieldAdmin, aT as StorageAdapter, aU as TextFieldAdmin, aV as TextareaFieldAdmin, aW as TypedField, aX as UploadConfig, aY as UrlFieldAdmin, aZ as WordLimitFieldAdmin, a_ as WordLimitFieldConfig, a$ as WorkflowMetadata, b0 as WorkflowRole, b1 as WorkflowState, b2 as WorkflowTransitionContext } from './app-config-C3X5BAyK.cjs';
3
3
  import 'lucide-react';
4
4
 
5
5
  type Prettify<T> = {
@@ -340,7 +340,7 @@ declare function defineGlobal<TDoc extends object>(config: GlobalConfig<TDoc>):
340
340
  * the database adapter, collections, globals, storage, email, and all other
341
341
  * server-level configuration.
342
342
  */
343
- declare function defineConfig(config: DyrectedConfig): DyrectedConfig;
343
+ declare function defineConfig<TUser extends AuthenticatedUser = AuthenticatedUser>(config: DyrectedConfig<TUser>): DyrectedConfig<TUser>;
344
344
  /**
345
345
  * Define a single field of any type. This is an identity helper: it returns the
346
346
  * field unchanged at runtime but preserves the exact literal type, so document
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as Field, B as Block, D as DyrectedConfig, C as CollectionConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, W as WorkflowConfig, a as AuthenticatedUser, b as WorkflowTransition, L as LifecycleEventName, c as LifecycleEvent, d as BaseDocument, H as HookRequestContext, e as ArrayField, f as BlocksField, g as BooleanField, h as DateField, i as DateTimeField, E as EmailField, G as GlobalConfig, I as IconField, j as ImageField, J as JoinField, k as JsonField, M as MultiSelectField, N as NumberField, O as ObjectField, R as RadioField, l as RelationshipField, m as RichTextField, n as RowField, S as SelectField, T as TextField, o as TextareaField, p as TimeField, U as UrlField } from './app-config-oU1EGHND.js';
2
- export { q as AccessFunction, r as AccessFunctionArgs, s as AccessPolicyResolver, t as AccessResult, u as AccessRule, v as AdminAuthAccessResolution, w as AdminAuthClaimMapping, x as AdminAuthMember, y as AdminAuthProvider, z as AdminAuthProviderMembersConfig, K as AdminAuthProvisioningMode, Q as AdminAuthResolveAccessArgs, V as AdminAuthResolvedIdentity, X as AdminConfig, Y as AdminDashboardComponentSlots, Z as AdminIconName, _ as BaseAdminAuthProvider, $ as BaseFieldAdmin, a0 as BlockVariant, a1 as BooleanFieldAdmin, a2 as CharacterLimitFieldAdmin, a3 as CharacterLimitFieldConfig, a4 as CollectionAfterChangeHook, a5 as CollectionAfterDeleteHook, a6 as CollectionAfterReadHook, a7 as CollectionAfterTransitionHook, a8 as CollectionBeforeChangeHook, a9 as CollectionBeforeDeleteHook, aa as CollectionBeforeReadHook, ab as CollectionBeforeTransitionHook, ac as CollectionListComponentSlots, ad as CustomAdminAuthProvider, ae as DatabaseAdapter, af as DynamicOptionItem, ag as DynamicOptionsConfig, ah as DynamicOptionsResolver, ai as DynamicOptionsResolverArgs, aj as EmailFieldAdmin, ak as FieldAdminHooks, al as FieldAdminOnChangeHook, am as FieldAdminOnChangeHookArgs, an as FieldAdminOptionsHook, ao as FieldAdminOptionsHookArgs, ap as FieldAdminOptionsHookResult, aq as FieldAfterReadHook, ar as FieldAfterReadHookArgs, as as FieldBase, at as FieldBeforeChangeHook, au as FieldBeforeChangeHookArgs, av as FieldHook, aw as FieldHooks, ax as FieldType, ay as FileData, az as GlobalAfterChangeHook, aA as GlobalAfterReadHook, aB as GlobalBeforeChangeHook, aC as GlobalBeforeReadHook, aD as HeadingLevel, aE as HookFunction, aF as IconFieldAdmin, aG as ImageService, aH as LIFECYCLE_EVENT_NAMES, aI as LifecycleEventHandler, aJ as MultiSelectFieldAdmin, aK as NamedAccessPolicy, aL as OIDCAdminAuthProvider, aM as PaginatedResult, aN as PublicAdminAuthProvider, aO as RadioFieldAdmin, aP as ReadonlyDatabaseAdapter, aQ as RichTextFeature, aR as RichTextFieldConfig, aS as SelectFieldAdmin, aT as StorageAdapter, aU as TextFieldAdmin, aV as TextareaFieldAdmin, aW as TypedField, aX as UploadConfig, aY as UrlFieldAdmin, aZ as WordLimitFieldAdmin, a_ as WordLimitFieldConfig, a$ as WorkflowMetadata, b0 as WorkflowRole, b1 as WorkflowState, b2 as WorkflowTransitionContext } from './app-config-oU1EGHND.js';
1
+ import { F as Field, B as Block, D as DyrectedConfig, C as CollectionConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, W as WorkflowConfig, a as AuthenticatedUser, b as WorkflowTransition, L as LifecycleEventName, c as LifecycleEvent, d as BaseDocument, H as HookRequestContext, e as ArrayField, f as BlocksField, g as BooleanField, h as DateField, i as DateTimeField, E as EmailField, G as GlobalConfig, I as IconField, j as ImageField, J as JoinField, k as JsonField, M as MultiSelectField, N as NumberField, O as ObjectField, R as RadioField, l as RelationshipField, m as RichTextField, n as RowField, S as SelectField, T as TextField, o as TextareaField, p as TimeField, U as UrlField } from './app-config-C3X5BAyK.js';
2
+ export { q as AccessFunction, r as AccessFunctionArgs, s as AccessPolicyResolver, t as AccessResult, u as AccessRule, v as AdminAuthAccessResolution, w as AdminAuthClaimMapping, x as AdminAuthMember, y as AdminAuthProvider, z as AdminAuthProviderMembersConfig, K as AdminAuthProvisioningMode, Q as AdminAuthResolveAccessArgs, V as AdminAuthResolvedIdentity, X as AdminConfig, Y as AdminDashboardComponentSlots, Z as AdminIconName, _ as BaseAdminAuthProvider, $ as BaseFieldAdmin, a0 as BlockVariant, a1 as BooleanFieldAdmin, a2 as CharacterLimitFieldAdmin, a3 as CharacterLimitFieldConfig, a4 as CollectionAfterChangeHook, a5 as CollectionAfterDeleteHook, a6 as CollectionAfterReadHook, a7 as CollectionAfterTransitionHook, a8 as CollectionBeforeChangeHook, a9 as CollectionBeforeDeleteHook, aa as CollectionBeforeReadHook, ab as CollectionBeforeTransitionHook, ac as CollectionListComponentSlots, ad as CustomAdminAuthProvider, ae as DatabaseAdapter, af as DynamicOptionItem, ag as DynamicOptionsConfig, ah as DynamicOptionsResolver, ai as DynamicOptionsResolverArgs, aj as EmailFieldAdmin, ak as FieldAdminHooks, al as FieldAdminOnChangeHook, am as FieldAdminOnChangeHookArgs, an as FieldAdminOptionsHook, ao as FieldAdminOptionsHookArgs, ap as FieldAdminOptionsHookResult, aq as FieldAfterReadHook, ar as FieldAfterReadHookArgs, as as FieldBase, at as FieldBeforeChangeHook, au as FieldBeforeChangeHookArgs, av as FieldHook, aw as FieldHooks, ax as FieldType, ay as FileData, az as GlobalAfterChangeHook, aA as GlobalAfterReadHook, aB as GlobalBeforeChangeHook, aC as GlobalBeforeReadHook, aD as HeadingLevel, aE as HookFunction, aF as IconFieldAdmin, aG as ImageService, aH as LIFECYCLE_EVENT_NAMES, aI as LifecycleEventHandler, aJ as MultiSelectFieldAdmin, aK as NamedAccessPolicy, aL as OIDCAdminAuthProvider, aM as PaginatedResult, aN as PublicAdminAuthProvider, aO as RadioFieldAdmin, aP as ReadonlyDatabaseAdapter, aQ as RichTextFeature, aR as RichTextFieldConfig, aS as SelectFieldAdmin, aT as StorageAdapter, aU as TextFieldAdmin, aV as TextareaFieldAdmin, aW as TypedField, aX as UploadConfig, aY as UrlFieldAdmin, aZ as WordLimitFieldAdmin, a_ as WordLimitFieldConfig, a$ as WorkflowMetadata, b0 as WorkflowRole, b1 as WorkflowState, b2 as WorkflowTransitionContext } from './app-config-C3X5BAyK.js';
3
3
  import 'lucide-react';
4
4
 
5
5
  type Prettify<T> = {
@@ -340,7 +340,7 @@ declare function defineGlobal<TDoc extends object>(config: GlobalConfig<TDoc>):
340
340
  * the database adapter, collections, globals, storage, email, and all other
341
341
  * server-level configuration.
342
342
  */
343
- declare function defineConfig(config: DyrectedConfig): DyrectedConfig;
343
+ declare function defineConfig<TUser extends AuthenticatedUser = AuthenticatedUser>(config: DyrectedConfig<TUser>): DyrectedConfig<TUser>;
344
344
  /**
345
345
  * Define a single field of any type. This is an identity helper: it returns the
346
346
  * field unchanged at runtime but preserves the exact literal type, so document
package/dist/server.cjs CHANGED
@@ -713,6 +713,10 @@ async function resolveCollectionAccess(config, collection, action, access, args)
713
713
  allowed: await matchesAccessConstraint(config, collection, args.id, result)
714
714
  };
715
715
  }
716
+ function resolveFieldAccessId(context) {
717
+ const candidate = context.id ?? context.doc?.id ?? context.data?.id;
718
+ return typeof candidate === "string" && candidate.length > 0 ? candidate : void 0;
719
+ }
716
720
  async function applyFieldReadAccess(context, doc) {
717
721
  if (!doc || typeof doc !== "object") return doc;
718
722
  const result = { ...doc };
@@ -727,7 +731,8 @@ async function applyFieldReadAccess(context, doc) {
727
731
  user: context.user,
728
732
  req: context.req,
729
733
  doc: context.doc,
730
- data: context.data
734
+ data: context.data,
735
+ id: resolveFieldAccessId(context)
731
736
  });
732
737
  if (!canRead) {
733
738
  delete result[field.name];
@@ -739,9 +744,10 @@ async function applyFieldReadAccess(context, doc) {
739
744
  continue;
740
745
  }
741
746
  if (field.type === "array" && field.fields && Array.isArray(value)) {
747
+ const childFields = field.fields;
742
748
  result[field.name] = await Promise.all(
743
749
  value.map(
744
- (item) => typeof item === "object" && item !== null ? applyFieldReadAccess({ ...context, fields: field.fields }, item) : item
750
+ (item) => typeof item === "object" && item !== null ? applyFieldReadAccess({ ...context, fields: childFields }, item) : item
745
751
  )
746
752
  );
747
753
  continue;
@@ -752,7 +758,7 @@ async function applyFieldReadAccess(context, doc) {
752
758
  if (typeof item !== "object" || item === null) return item;
753
759
  const typedItem = item;
754
760
  const block = field.blocks?.find((candidate) => candidate.slug === typedItem.blockType);
755
- if (!block) return item;
761
+ if (!block || !block.fields) return item;
756
762
  return applyFieldReadAccess({ ...context, fields: block.fields }, typedItem);
757
763
  })
758
764
  );
@@ -773,7 +779,8 @@ async function applyFieldWriteAccess(context, data) {
773
779
  user: context.user,
774
780
  req: context.req,
775
781
  doc: context.doc,
776
- data: context.data
782
+ data: context.data,
783
+ id: resolveFieldAccessId(context)
777
784
  });
778
785
  if (!canUpdate) {
779
786
  delete result[field.name];
@@ -786,9 +793,10 @@ async function applyFieldWriteAccess(context, data) {
786
793
  continue;
787
794
  }
788
795
  if (field.type === "array" && field.fields && Array.isArray(value)) {
796
+ const childFields = field.fields;
789
797
  result[field.name] = await Promise.all(
790
798
  value.map(
791
- (item) => typeof item === "object" && item !== null ? applyFieldWriteAccess({ ...context, fields: field.fields }, item) : item
799
+ (item) => typeof item === "object" && item !== null ? applyFieldWriteAccess({ ...context, fields: childFields }, item) : item
792
800
  )
793
801
  );
794
802
  continue;
@@ -799,7 +807,7 @@ async function applyFieldWriteAccess(context, data) {
799
807
  if (typeof item !== "object" || item === null) return item;
800
808
  const typedItem = item;
801
809
  const block = field.blocks?.find((candidate) => candidate.slug === typedItem.blockType);
802
- if (!block) return item;
810
+ if (!block || !block.fields) return item;
803
811
  return applyFieldWriteAccess({ ...context, fields: block.fields }, typedItem);
804
812
  })
805
813
  );
package/dist/server.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as hono_types from 'hono/types';
2
2
  import * as hono from 'hono';
3
3
  import { Hono, Context } from 'hono';
4
- import { D as DyrectedConfig, C as CollectionConfig, G as GlobalConfig } from './app-config-oU1EGHND.cjs';
4
+ import { D as DyrectedConfig, C as CollectionConfig, G as GlobalConfig } from './app-config-C3X5BAyK.cjs';
5
5
  import * as hono_utils_http_status from 'hono/utils/http-status';
6
6
  import * as hono_utils_types from 'hono/utils/types';
7
7
  import 'lucide-react';
package/dist/server.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as hono_types from 'hono/types';
2
2
  import * as hono from 'hono';
3
3
  import { Hono, Context } from 'hono';
4
- import { D as DyrectedConfig, C as CollectionConfig, G as GlobalConfig } from './app-config-oU1EGHND.js';
4
+ import { D as DyrectedConfig, C as CollectionConfig, G as GlobalConfig } from './app-config-C3X5BAyK.js';
5
5
  import * as hono_utils_http_status from 'hono/utils/http-status';
6
6
  import * as hono_utils_types from 'hono/utils/types';
7
7
  import 'lucide-react';
package/dist/server.js CHANGED
@@ -425,6 +425,10 @@ async function resolveCollectionAccess(config, collection, action, access, args)
425
425
  allowed: await matchesAccessConstraint(config, collection, args.id, result)
426
426
  };
427
427
  }
428
+ function resolveFieldAccessId(context) {
429
+ const candidate = context.id ?? context.doc?.id ?? context.data?.id;
430
+ return typeof candidate === "string" && candidate.length > 0 ? candidate : void 0;
431
+ }
428
432
  async function applyFieldReadAccess(context, doc) {
429
433
  if (!doc || typeof doc !== "object") return doc;
430
434
  const result = { ...doc };
@@ -439,7 +443,8 @@ async function applyFieldReadAccess(context, doc) {
439
443
  user: context.user,
440
444
  req: context.req,
441
445
  doc: context.doc,
442
- data: context.data
446
+ data: context.data,
447
+ id: resolveFieldAccessId(context)
443
448
  });
444
449
  if (!canRead) {
445
450
  delete result[field.name];
@@ -451,9 +456,10 @@ async function applyFieldReadAccess(context, doc) {
451
456
  continue;
452
457
  }
453
458
  if (field.type === "array" && field.fields && Array.isArray(value)) {
459
+ const childFields = field.fields;
454
460
  result[field.name] = await Promise.all(
455
461
  value.map(
456
- (item) => typeof item === "object" && item !== null ? applyFieldReadAccess({ ...context, fields: field.fields }, item) : item
462
+ (item) => typeof item === "object" && item !== null ? applyFieldReadAccess({ ...context, fields: childFields }, item) : item
457
463
  )
458
464
  );
459
465
  continue;
@@ -464,7 +470,7 @@ async function applyFieldReadAccess(context, doc) {
464
470
  if (typeof item !== "object" || item === null) return item;
465
471
  const typedItem = item;
466
472
  const block = field.blocks?.find((candidate) => candidate.slug === typedItem.blockType);
467
- if (!block) return item;
473
+ if (!block || !block.fields) return item;
468
474
  return applyFieldReadAccess({ ...context, fields: block.fields }, typedItem);
469
475
  })
470
476
  );
@@ -485,7 +491,8 @@ async function applyFieldWriteAccess(context, data) {
485
491
  user: context.user,
486
492
  req: context.req,
487
493
  doc: context.doc,
488
- data: context.data
494
+ data: context.data,
495
+ id: resolveFieldAccessId(context)
489
496
  });
490
497
  if (!canUpdate) {
491
498
  delete result[field.name];
@@ -498,9 +505,10 @@ async function applyFieldWriteAccess(context, data) {
498
505
  continue;
499
506
  }
500
507
  if (field.type === "array" && field.fields && Array.isArray(value)) {
508
+ const childFields = field.fields;
501
509
  result[field.name] = await Promise.all(
502
510
  value.map(
503
- (item) => typeof item === "object" && item !== null ? applyFieldWriteAccess({ ...context, fields: field.fields }, item) : item
511
+ (item) => typeof item === "object" && item !== null ? applyFieldWriteAccess({ ...context, fields: childFields }, item) : item
504
512
  )
505
513
  );
506
514
  continue;
@@ -511,7 +519,7 @@ async function applyFieldWriteAccess(context, data) {
511
519
  if (typeof item !== "object" || item === null) return item;
512
520
  const typedItem = item;
513
521
  const block = field.blocks?.find((candidate) => candidate.slug === typedItem.blockType);
514
- if (!block) return item;
522
+ if (!block || !block.fields) return item;
515
523
  return applyFieldWriteAccess({ ...context, fields: block.fields }, typedItem);
516
524
  })
517
525
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dyrected/core",
3
- "version": "2.5.58",
3
+ "version": "2.5.59",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",