@contember/bindx 0.1.4 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/adapter/ContemberAdapter.d.ts +11 -14
  2. package/dist/adapter/ContemberAdapter.d.ts.map +1 -1
  3. package/dist/brand/ComponentBrand.d.ts +1 -24
  4. package/dist/brand/ComponentBrand.d.ts.map +1 -1
  5. package/dist/contember/index.d.ts +1 -2
  6. package/dist/contember/index.d.ts.map +1 -1
  7. package/dist/handles/EntityHandle.d.ts +18 -29
  8. package/dist/handles/EntityHandle.d.ts.map +1 -1
  9. package/dist/handles/FieldHandle.d.ts +5 -3
  10. package/dist/handles/FieldHandle.d.ts.map +1 -1
  11. package/dist/handles/HasManyListHandle.d.ts +4 -3
  12. package/dist/handles/HasManyListHandle.d.ts.map +1 -1
  13. package/dist/handles/HasOneHandle.d.ts +33 -36
  14. package/dist/handles/HasOneHandle.d.ts.map +1 -1
  15. package/dist/handles/PlaceholderHandle.d.ts +9 -19
  16. package/dist/handles/PlaceholderHandle.d.ts.map +1 -1
  17. package/dist/handles/proxyFactory.d.ts +9 -37
  18. package/dist/handles/proxyFactory.d.ts.map +1 -1
  19. package/dist/handles/types.d.ts +4 -0
  20. package/dist/handles/types.d.ts.map +1 -1
  21. package/dist/index.d.ts +3 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/persistence/ContemberSchemaMutationAdapter.d.ts +24 -1
  24. package/dist/persistence/ContemberSchemaMutationAdapter.d.ts.map +1 -1
  25. package/dist/schema/ContemberSchema.d.ts +1 -97
  26. package/dist/schema/ContemberSchema.d.ts.map +1 -1
  27. package/dist/schema/SchemaLoader.d.ts +1 -27
  28. package/dist/schema/SchemaLoader.d.ts.map +1 -1
  29. package/dist/schema/SchemaRegistry.d.ts +1 -94
  30. package/dist/schema/SchemaRegistry.d.ts.map +1 -1
  31. package/dist/schema/roles.d.ts +1 -61
  32. package/dist/schema/roles.d.ts.map +1 -1
  33. package/dist/schema/types.d.ts +1 -178
  34. package/dist/schema/types.d.ts.map +1 -1
  35. package/dist/selection/SelectionMetaCollector.d.ts +1 -31
  36. package/dist/selection/SelectionMetaCollector.d.ts.map +1 -1
  37. package/dist/selection/SelectionScope.d.ts +1 -76
  38. package/dist/selection/SelectionScope.d.ts.map +1 -1
  39. package/dist/selection/buildQuery.d.ts +1 -44
  40. package/dist/selection/buildQuery.d.ts.map +1 -1
  41. package/dist/selection/createFragment.d.ts +1 -28
  42. package/dist/selection/createFragment.d.ts.map +1 -1
  43. package/dist/selection/createSelectionBuilder.d.ts +1 -17
  44. package/dist/selection/createSelectionBuilder.d.ts.map +1 -1
  45. package/dist/selection/queryTypes.d.ts +1 -83
  46. package/dist/selection/queryTypes.d.ts.map +1 -1
  47. package/dist/selection/types.d.ts +1 -237
  48. package/dist/selection/types.d.ts.map +1 -1
  49. package/dist/utils/aliasGenerator.d.ts +1 -24
  50. package/dist/utils/aliasGenerator.d.ts.map +1 -1
  51. package/package.json +4 -4
  52. package/src/adapter/ContemberAdapter.ts +193 -123
  53. package/src/brand/ComponentBrand.ts +1 -28
  54. package/src/contember/index.ts +1 -8
  55. package/src/handles/EntityHandle.ts +131 -61
  56. package/src/handles/FieldHandle.ts +19 -3
  57. package/src/handles/HasManyListHandle.ts +15 -12
  58. package/src/handles/HasOneHandle.ts +98 -66
  59. package/src/handles/PlaceholderHandle.ts +26 -24
  60. package/src/handles/proxyFactory.ts +29 -128
  61. package/src/handles/types.ts +6 -0
  62. package/src/index.ts +22 -3
  63. package/src/persistence/ContemberSchemaMutationAdapter.ts +19 -1
  64. package/src/schema/ContemberSchema.ts +14 -132
  65. package/src/schema/SchemaLoader.ts +1 -93
  66. package/src/schema/SchemaRegistry.ts +1 -286
  67. package/src/schema/roles.ts +10 -83
  68. package/src/schema/types.ts +21 -238
  69. package/src/selection/SelectionMetaCollector.ts +1 -122
  70. package/src/selection/SelectionScope.ts +1 -208
  71. package/src/selection/buildQuery.ts +1 -134
  72. package/src/selection/createFragment.ts +1 -50
  73. package/src/selection/createSelectionBuilder.ts +1 -283
  74. package/src/selection/queryTypes.ts +8 -135
  75. package/src/selection/types.ts +13 -320
  76. package/src/utils/aliasGenerator.ts +1 -56
@@ -1,23 +1,24 @@
1
- import { GraphQlClient } from '@contember/graphql-client';
2
- import { ContentClient, ContentQueryBuilder, SchemaNames } from '@contember/client-content';
1
+ import { ContentClient } from '@contember/bindx-client';
2
+ import type { GraphQlClient } from '@contember/graphql-client';
3
3
  import type { BackendAdapter, Query, QueryResult, QueryOptions, PersistResult, CreateResult, DeleteResult } from './types.js';
4
+ import type { SchemaRegistry } from '../schema/SchemaRegistry.js';
4
5
  /**
5
6
  * Options for ContemberAdapter
6
7
  */
7
8
  export interface ContemberAdapterOptions {
8
9
  /** GraphQL client instance */
9
10
  client: GraphQlClient;
10
- /** Contember schema names for query building */
11
- schema: SchemaNames;
11
+ /** Schema registry for relation target resolution */
12
+ schemaRegistry: SchemaRegistry;
12
13
  }
13
14
  /**
14
15
  * Backend adapter for Contember Content API.
15
- * Uses @contember/client-content for type-safe GraphQL operations.
16
+ * Uses @contember/bindx-client for GraphQL operations.
16
17
  */
17
18
  export declare class ContemberAdapter implements BackendAdapter {
18
19
  private readonly contentClient;
19
- private readonly queryBuilder;
20
- constructor(contentClient: ContentClient, queryBuilder: ContentQueryBuilder);
20
+ private readonly schemaRegistry;
21
+ constructor(contentClient: ContentClient, schemaRegistry: SchemaRegistry);
21
22
  query(queries: readonly Query[], options?: QueryOptions): Promise<QueryResult[]>;
22
23
  private buildGetQuery;
23
24
  private buildListQuery;
@@ -25,16 +26,12 @@ export declare class ContemberAdapter implements BackendAdapter {
25
26
  create(entityType: string, data: Record<string, unknown>): Promise<CreateResult>;
26
27
  delete(entityType: string, id: string): Promise<DeleteResult>;
27
28
  /**
28
- * Converts Contember mutation result to our ContemberMutationResult type.
29
+ * Converts raw mutation result to ContemberMutationResult type.
29
30
  */
30
31
  private toMutationResult;
31
32
  /**
32
- * Builds ContentEntitySelection from QuerySpec
33
+ * Creates a QuerySpecContext for an entity, wiring in SchemaRegistry for relation target resolution.
33
34
  */
34
- private buildEntitySelection;
35
- /**
36
- * Recursively applies QueryFieldSpec[] to ContentEntitySelection
37
- */
38
- private applyFieldsToSelection;
35
+ private createContext;
39
36
  }
40
37
  //# sourceMappingURL=ContemberAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContemberAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/ContemberAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EACN,aAAa,EACb,mBAAmB,EAEnB,WAAW,EAMX,MAAM,2BAA2B,CAAA;AAGlC,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAuB,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGlJ;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,8BAA8B;IAC9B,MAAM,EAAE,aAAa,CAAA;IACrB,gDAAgD;IAChD,MAAM,EAAE,WAAW,CAAA;CACnB;AAED;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,cAAc;IAGrD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,mBAAmB;IAI7C,KAAK,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAoCtF,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAWhB,OAAO,CACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,aAAa,CAAC;IAmBnB,MAAM,CACX,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,YAAY,CAAC;IAqBlB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAenE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CA4C9B"}
1
+ {"version":3,"file":"ContemberAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/ContemberAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EAcb,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAuB,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAElJ,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAGjE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,8BAA8B;IAC9B,MAAM,EAAE,aAAa,CAAA;IACrB,qDAAqD;IACrD,cAAc,EAAE,cAAc,CAAA;CAC9B;AAED;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,cAAc;IAGrD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc;IAI1C,KAAK,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAqCtF,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,cAAc;IAmBhB,OAAO,CACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,aAAa,CAAC;IA4BnB,MAAM,CACX,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,YAAY,CAAC;IAkClB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BnE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,aAAa;CAMrB"}
@@ -1,25 +1,2 @@
1
- /**
2
- * ComponentBrand provides unique identity for each component created with createComponent.
3
- * Each instance has a unique runtime Symbol for brand validation.
4
- * The class structure itself provides nominal typing in TypeScript.
5
- */
6
- export declare class ComponentBrand {
7
- readonly name: string;
8
- /**
9
- * Private property to ensure nominal typing.
10
- * Each class instance is considered a unique type.
11
- */
12
- private readonly __nominal;
13
- /**
14
- * Runtime symbol for brand validation.
15
- * Used to check that EntityRef includes required component brands.
16
- */
17
- readonly brandSymbol: symbol;
18
- constructor(name: string);
19
- }
20
- /**
21
- * Type alias for any ComponentBrand.
22
- * Used as default/base type in generic constraints.
23
- */
24
- export type AnyBrand = ComponentBrand;
1
+ export { ComponentBrand, type AnyBrand } from '@contember/bindx-client';
25
2
  //# sourceMappingURL=ComponentBrand.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentBrand.d.ts","sourceRoot":"","sources":["../../src/brand/ComponentBrand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,cAAc;aAaE,IAAI,EAAE,MAAM;IAZxC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAO;IAEjC;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;gBAEA,IAAI,EAAE,MAAM;CAGxC;AAED;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,cAAc,CAAA"}
1
+ {"version":3,"file":"ComponentBrand.d.ts","sourceRoot":"","sources":["../../src/brand/ComponentBrand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAA"}
@@ -4,7 +4,6 @@
4
4
  * @packageDocumentation
5
5
  */
6
6
  export { MutationCollector, type EntityMutationResult } from '../persistence/MutationCollector.js';
7
- export { ContemberSchemaMutationAdapter } from '../persistence/ContemberSchemaMutationAdapter.js';
7
+ export { ContemberSchemaMutationAdapter, type SchemaNames } from '../persistence/ContemberSchemaMutationAdapter.js';
8
8
  export type { MutationSchemaProvider } from '../persistence/MutationSchemaProvider.js';
9
- export type { SchemaNames, SchemaEntityNames, ContentClientInput, } from '@contember/client-content';
10
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contember/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAClG,OAAO,EAAE,8BAA8B,EAAE,MAAM,kDAAkD,CAAA;AACjG,YAAY,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;AAGtF,YAAY,EACX,WAAW,EACX,iBAAiB,EACjB,kBAAkB,GAClB,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contember/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAClG,OAAO,EAAE,8BAA8B,EAAE,KAAK,WAAW,EAAE,MAAM,kDAAkD,CAAA;AACnH,YAAY,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA"}
@@ -1,14 +1,11 @@
1
1
  import { EntityRelatedHandle } from './BaseHandle.js';
2
- import { FieldHandle } from './FieldHandle.js';
3
2
  import type { ActionDispatcher } from '../core/ActionDispatcher.js';
4
3
  import { type SnapshotStore } from '../store/SnapshotStore.js';
5
4
  import type { SchemaRegistry } from '../schema/SchemaRegistry.js';
6
5
  import type { EntitySnapshot } from '../store/snapshots.js';
7
- import { type EntityRef, type SelectedEntityFields, type Unsubscribe } from './types.js';
6
+ import { type FieldRef, type HasOneAccessor, type HasManyRef, type SelectedEntityFields, type Unsubscribe, type EntityAccessor } from './types.js';
8
7
  import { type ErrorInput, type FieldError } from '../errors/types.js';
9
8
  import type { EventTypeMap, AfterEventTypes, BeforeEventTypes, EventListener, Interceptor, EntityPersistedEvent, EntityPersistingEvent } from '../events/types.js';
10
- import { HasOneHandle } from './HasOneHandle.js';
11
- import { HasManyListHandle } from './HasManyListHandle.js';
12
9
  import type { SelectionMeta } from '../selection/types.js';
13
10
  /**
14
11
  * EntityHandle provides stable access to an entity.
@@ -27,7 +24,7 @@ import type { SelectionMeta } from '../selection/types.js';
27
24
  * @typeParam T - The full entity type
28
25
  * @typeParam TSelected - The selected subset of fields (defaults to T for backwards compatibility)
29
26
  */
30
- export declare class EntityHandle<T extends object = object, TSelected = T> extends EntityRelatedHandle implements EntityRef<T, TSelected> {
27
+ export declare class EntityHandle<T extends object = object, TSelected = T> extends EntityRelatedHandle {
31
28
  private readonly schema;
32
29
  private readonly selection?;
33
30
  /** Cache for field handles to ensure stable identity */
@@ -36,32 +33,14 @@ export declare class EntityHandle<T extends object = object, TSelected = T> exte
36
33
  private readonly relationHandleCache;
37
34
  /** Runtime brand symbols for validation */
38
35
  readonly __brands?: Set<symbol>;
39
- /** Type brand for schema - placeholder at runtime */
40
- readonly __schema: Record<string, object>;
41
- readonly $fields: SelectedEntityFields<T, TSelected>;
42
- readonly $data: TSelected | null;
43
- readonly $isDirty: boolean;
44
- readonly $persistedId: string | null;
45
- readonly $isNew: boolean;
46
- readonly $errors: readonly FieldError[];
47
- readonly $hasError: boolean;
48
- $addError: (error: ErrorInput) => void;
49
- $clearErrors: () => void;
50
- $clearAllErrors: () => void;
51
- $on: <E extends AfterEventTypes>(eventType: E, listener: EventListener<EventTypeMap[E]>) => Unsubscribe;
52
- $intercept: <E extends BeforeEventTypes>(eventType: E, interceptor: Interceptor<EventTypeMap[E]>) => Unsubscribe;
53
- $onPersisted: (listener: EventListener<EntityPersistedEvent>) => Unsubscribe;
54
- $interceptPersisting: (interceptor: Interceptor<EntityPersistingEvent>) => Unsubscribe;
55
36
  private constructor();
56
- static create<T extends object = object, TSelected = T>(id: string, entityType: string, store: SnapshotStore, dispatcher: ActionDispatcher, schema: SchemaRegistry, brands?: Set<symbol>, selection?: SelectionMeta): EntityHandle<T, TSelected>;
37
+ static create<T extends object = object, TSelected = T>(id: string, entityType: string, store: SnapshotStore, dispatcher: ActionDispatcher, schema: SchemaRegistry, brands?: Set<symbol>, selection?: SelectionMeta): EntityAccessor<T, TSelected>;
38
+ static createRaw<T extends object = object, TSelected = T>(id: string, entityType: string, store: SnapshotStore, dispatcher: ActionDispatcher, schema: SchemaRegistry, brands?: Set<symbol>, selection?: SelectionMeta): EntityHandle<T, TSelected>;
39
+ static wrapProxy<T extends object, TSelected>(handle: EntityHandle<T, TSelected>): EntityAccessor<T, TSelected>;
57
40
  /**
58
41
  * Gets the entity ID.
59
42
  */
60
43
  get id(): string;
61
- /**
62
- * Gets the entity type.
63
- */
64
- get type(): string;
65
44
  /**
66
45
  * Gets the current entity snapshot.
67
46
  */
@@ -113,18 +92,28 @@ export declare class EntityHandle<T extends object = object, TSelected = T> exte
113
92
  * Gets a field handle for a specific field.
114
93
  * Returns cached handle to ensure stable identity.
115
94
  */
116
- field<K extends keyof T>(fieldName: K): FieldHandle<T[K]>;
95
+ field<K extends keyof T>(fieldName: K): FieldRef<T[K]>;
117
96
  /**
118
97
  * Gets a has-one relation handle.
119
98
  */
120
- hasOne<TRelated extends object>(fieldName: string, nestedSelection?: SelectionMeta): HasOneHandle<TRelated>;
99
+ hasOne<TRelated extends object>(fieldName: string, nestedSelection?: SelectionMeta): HasOneAccessor<TRelated>;
121
100
  /**
122
101
  * Gets a has-many relation handle.
123
102
  *
124
103
  * @param alias - Optional alias for the relation. When the same field is used multiple times
125
104
  * with different parameters (filter, orderBy, limit), each needs a unique alias.
126
105
  */
127
- hasMany<TItem extends object>(fieldName: string, alias?: string, nestedSelection?: SelectionMeta): HasManyListHandle<TItem>;
106
+ hasMany<TItem extends object>(fieldName: string, alias?: string, nestedSelection?: SelectionMeta): HasManyRef<TItem>;
107
+ /**
108
+ * Gets a raw (unproxied) has-one relation handle from cache.
109
+ * Creates the handle if not cached yet.
110
+ */
111
+ private getHasOneHandleRaw;
112
+ /**
113
+ * Gets a raw (unproxied) has-many relation handle from cache.
114
+ * Creates the handle if not cached yet.
115
+ */
116
+ private getHasManyHandleRaw;
128
117
  /**
129
118
  * Resets the entity to server data.
130
119
  * Also resets all relation states (hasOne, hasMany).
@@ -1 +1 @@
1
- {"version":3,"file":"EntityHandle.d.ts","sourceRoot":"","sources":["../../src/handles/EntityHandle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntityHandle.d.ts","sourceRoot":"","sources":["../../src/handles/EntityHandle.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import type { FieldChangedEvent, FieldChangingEvent, EventListener, Interceptor
14
14
  * - Provides inputProps for form integration
15
15
  * - Implements FieldRef interface for JSX compatibility
16
16
  */
17
- export declare class FieldHandle<T = unknown> extends EntityRelatedHandle implements FieldRef<T> {
17
+ export declare class FieldHandle<T = unknown> extends EntityRelatedHandle {
18
18
  private readonly fieldPath;
19
19
  private readonly _enumName?;
20
20
  private readonly _columnType?;
@@ -22,7 +22,9 @@ export declare class FieldHandle<T = unknown> extends EntityRelatedHandle implem
22
22
  private _cachedInputPropsValue;
23
23
  private readonly _boundSetValue;
24
24
  private constructor();
25
- static create<T = unknown>(entityType: string, entityId: string, fieldPath: string[], store: SnapshotStore, dispatcher: ActionDispatcher, enumName?: string, columnType?: string): FieldHandle<T>;
25
+ static create<T = unknown>(entityType: string, entityId: string, fieldPath: string[], store: SnapshotStore, dispatcher: ActionDispatcher, enumName?: string, columnType?: string): FieldRef<T>;
26
+ static createRaw<T = unknown>(entityType: string, entityId: string, fieldPath: string[], store: SnapshotStore, dispatcher: ActionDispatcher, enumName?: string, columnType?: string): FieldHandle<T>;
27
+ static wrapProxy<T>(handle: FieldHandle<T>): FieldRef<T>;
26
28
  /**
27
29
  * JSX field reference metadata for collection phase.
28
30
  * Implements FieldRef interface.
@@ -96,7 +98,7 @@ export declare class FieldHandle<T = unknown> extends EntityRelatedHandle implem
96
98
  /**
97
99
  * Creates a nested field handle for a subfield.
98
100
  */
99
- nested<K extends keyof NonNullable<T>>(key: K): FieldHandle<NonNullable<T>[K]>;
101
+ nested<K extends keyof NonNullable<T>>(key: K): FieldRef<NonNullable<T>[K]>;
100
102
  /**
101
103
  * Subscribe to field value changes.
102
104
  * The listener is called after the value has changed.
@@ -1 +1 @@
1
- {"version":3,"file":"FieldHandle.d.ts","sourceRoot":"","sources":["../../src/handles/FieldHandle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAEhH,OAAO,EAAqB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACxF,OAAO,KAAK,EACX,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,MAAM,oBAAoB,CAAA;AAG3B;;;;;;;;;GASG;AACH,qBAAa,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,mBAAoB,YAAW,QAAQ,CAAC,CAAC,CAAC;IAStF,OAAO,CAAC,QAAQ,CAAC,SAAS;IAG1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAZ9B,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,sBAAsB,CAAkC;IAEhE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkD;IAEjF,OAAO;IAYP,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EACxB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GACjB,WAAW,CAAC,CAAC,CAAC;IAIjB;;;OAGG;IACH,IAAI,CAAC,cAAc,CAAC,IAAI,YAAY,CAWnC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAIpB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,CAAC,GAAG,IAAI,CAI1B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IAS/B;;OAEG;IACH,IAAI,MAAM,IAAI,SAAS,UAAU,EAAE,CAElC;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOjC;;OAEG;IACH,WAAW,IAAI,IAAI;IAOnB;;;;;;;;;;;;OAYG;IACH,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,CAW9B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,MAAM,EAAE,CAE5B;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,WAAW,CAAC,CAAC,CAAC,EACpC,GAAG,EAAE,CAAC,GACJ,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAYjC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAAG,WAAW;IAWjE;;;OAGG;IACH,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,kBAAkB,CAAC,GAAG,WAAW;CAWrE"}
1
+ {"version":3,"file":"FieldHandle.d.ts","sourceRoot":"","sources":["../../src/handles/FieldHandle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAEhH,OAAO,EAAqB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACxF,OAAO,KAAK,EACX,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,MAAM,oBAAoB,CAAA;AAG3B;;;;;;;;;GASG;AACH,qBAAa,WAAW,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,mBAAmB;IAS/D,OAAO,CAAC,QAAQ,CAAC,SAAS;IAG1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAZ9B,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,sBAAsB,CAAkC;IAEhE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkD;IAEjF,OAAO;IAYP,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,EACxB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GACjB,QAAQ,CAAC,CAAC,CAAC;IAId,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,EAC3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GACjB,WAAW,CAAC,CAAC,CAAC;IAIjB,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAIxD;;;OAGG;IACH,IAAI,CAAC,cAAc,CAAC,IAAI,YAAY,CAWnC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAIpB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,CAAC,GAAG,IAAI,CAI1B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IAS/B;;OAEG;IACH,IAAI,MAAM,IAAI,SAAS,UAAU,EAAE,CAElC;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOjC;;OAEG;IACH,WAAW,IAAI,IAAI;IAOnB;;;;;;;;;;;;OAYG;IACH,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,CAW9B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,MAAM,EAAE,CAE5B;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,WAAW,CAAC,CAAC,CAAC,EACpC,GAAG,EAAE,CAAC,GACJ,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAY9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAAG,WAAW;IAWjE;;;OAGG;IACH,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,kBAAkB,CAAC,GAAG,WAAW;CAWrE"}
@@ -13,12 +13,13 @@ import type { EventListener, Interceptor, HasManyConnectedEvent, HasManyDisconne
13
13
  * @typeParam TEntity - The full entity type of items in the relation
14
14
  * @typeParam TSelected - The selected subset of fields (defaults to TEntity for backwards compatibility)
15
15
  */
16
- export declare class HasManyListHandle<TEntity extends object = object, TSelected = TEntity> extends EntityRelatedHandle implements HasManyRef<TEntity, TSelected> {
16
+ export declare class HasManyListHandle<TEntity extends object = object, TSelected = TEntity> extends EntityRelatedHandle {
17
17
  private readonly fieldName;
18
18
  private readonly itemType;
19
19
  private readonly schema;
20
20
  private readonly selection?;
21
- private itemHandleCache;
21
+ private itemHandleCacheRaw;
22
+ private itemHandleCacheProxy;
22
23
  /** Runtime brand symbols for validation */
23
24
  readonly __brands?: Set<symbol>;
24
25
  /**
@@ -38,7 +39,7 @@ export declare class HasManyListHandle<TEntity extends object = object, TSelecte
38
39
  */
39
40
  private readonly alias;
40
41
  private constructor();
41
- static create<TEntity extends object = object, TSelected = TEntity>(parentEntityType: string, parentEntityId: string, fieldName: string, itemType: string, store: SnapshotStore, dispatcher: ActionDispatcher, schema: SchemaRegistry, brands?: Set<symbol>, alias?: string, selection?: SelectionMeta): HasManyListHandle<TEntity, TSelected>;
42
+ static create<TEntity extends object = object, TSelected = TEntity>(parentEntityType: string, parentEntityId: string, fieldName: string, itemType: string, store: SnapshotStore, dispatcher: ActionDispatcher, schema: SchemaRegistry, brands?: Set<symbol>, alias?: string, selection?: SelectionMeta): HasManyRef<TEntity, TSelected>;
42
43
  /**
43
44
  * JSX field reference metadata for collection phase.
44
45
  * Implements HasManyRef interface.
@@ -1 +1 @@
1
- {"version":3,"file":"HasManyListHandle.d.ts","sourceRoot":"","sources":["../../src/handles/HasManyListHandle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAK1D,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AACtH,OAAO,EAAqB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACxF,OAAO,KAAK,EACX,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,MAAM,oBAAoB,CAAA;AAG3B;;;;;;GAMG;AACH,qBAAa,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,OAAO,CAAE,SAAQ,mBAAoB,YAAW,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC;IAgCxJ,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAGzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAGvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAtC5B,OAAO,CAAC,eAAe,CAAsD;IAE7E,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAE/B;;;OAGG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,IAAI,QAAQ,IAAI,SAAS,CAExB;IAED;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAE9B,OAAO;IAiBP,MAAM,CAAC,MAAM,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,OAAO,EACjE,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,aAAa,GACvB,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC;IAIxC;;;OAGG;IACH,IAAI,CAAC,cAAc,CAAC,IAAI,YAAY,CAUnC;IAED;;;;;OAKG;IACH,IAAI,KAAK,IAAI,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAmChD;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAapB;;;;OAIG;IACH,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CASnC;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC;IAoBjE;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC;IAIvD;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAgBrB;IAED;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE;IAI/E;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAc7B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYhC;;;;OAIG;IACH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM;IAqBpC;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAY5B;;;;OAIG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAa9C;;;OAGG;IACH,KAAK,IAAI,IAAI;IAUb;;OAEG;IACM,OAAO,IAAI,IAAI;IASxB;;;OAGG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,SAAS,UAAU,EAAE,CAElC;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOjC;;OAEG;IACH,WAAW,IAAI,IAAI;IASnB;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,qBAAqB,CAAC,GAAG,WAAW;IAW5E;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,aAAa,CAAC,wBAAwB,CAAC,GAAG,WAAW;IAWlF;;OAEG;IACH,uBAAuB,CAAC,WAAW,EAAE,WAAW,CAAC,sBAAsB,CAAC,GAAG,WAAW;IAWtF;;OAEG;IACH,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,yBAAyB,CAAC,GAAG,WAAW;CAW5F"}
1
+ {"version":3,"file":"HasManyListHandle.d.ts","sourceRoot":"","sources":["../../src/handles/HasManyListHandle.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,11 @@ import type { ActionDispatcher } from '../core/ActionDispatcher.js';
3
3
  import type { SnapshotStore } from '../store/SnapshotStore.js';
4
4
  import type { SchemaRegistry } from '../schema/SchemaRegistry.js';
5
5
  import type { SelectionMeta } from '../selection/types.js';
6
- import { FIELD_REF_META, type HasOneRef, type FieldRefMeta, type SelectedEntityFields, type Unsubscribe, type EntityAccessor } from './types.js';
6
+ import { FIELD_REF_META, type FieldRefMeta, type SelectedEntityFields, type Unsubscribe, type EntityAccessor, type HasOneAccessor } from './types.js';
7
7
  import { type ErrorInput, type FieldError } from '../errors/types.js';
8
8
  import type { EventTypeMap, AfterEventTypes, BeforeEventTypes, EventListener, Interceptor, EntityPersistedEvent, EntityPersistingEvent, RelationConnectedEvent, RelationDisconnectedEvent, RelationConnectingEvent, RelationDisconnectingEvent } from '../events/types.js';
9
+ import { EntityHandle } from './EntityHandle.js';
10
+ import { PlaceholderHandle } from './PlaceholderHandle.js';
9
11
  /**
10
12
  * HasOneHandle provides access to a has-one relation.
11
13
  * Implements HasOneRef interface for JSX compatibility.
@@ -13,36 +15,21 @@ import type { EventTypeMap, AfterEventTypes, BeforeEventTypes, EventListener, In
13
15
  * @typeParam TEntity - The full entity type of the related entity
14
16
  * @typeParam TSelected - The selected subset of fields (defaults to TEntity for backwards compatibility)
15
17
  */
16
- export declare class HasOneHandle<TEntity extends object = object, TSelected = TEntity> extends EntityRelatedHandle implements HasOneRef<TEntity, TSelected> {
18
+ export declare class HasOneHandle<TEntity extends object = object, TSelected = TEntity> extends EntityRelatedHandle {
17
19
  private readonly fieldName;
18
20
  private readonly targetType;
19
21
  private readonly schema;
20
22
  private readonly selection?;
21
- private entityHandleCache;
22
- private placeholderCache;
23
+ private entityHandleCacheRaw;
24
+ private entityHandleCacheProxy;
25
+ private placeholderCacheRaw;
26
+ private placeholderCacheProxy;
23
27
  /** Runtime brand symbols for validation */
24
28
  readonly __brands?: Set<symbol>;
25
- /** Type brand for schema - placeholder at runtime */
26
- readonly __schema: Record<string, object>;
27
- readonly $id: string;
28
- readonly $isDirty: boolean;
29
- readonly $state: 'connected' | 'disconnected' | 'deleted' | 'creating';
30
- readonly $fields: SelectedEntityFields<TEntity, TSelected>;
31
- readonly $entity: EntityAccessor<TEntity, TSelected>;
32
- readonly $errors: readonly FieldError[];
33
- readonly $hasError: boolean;
34
- $connect: (id: string) => void;
35
- $disconnect: () => void;
36
- $delete: () => void;
37
- $reset: () => void;
38
- $addError: (error: ErrorInput) => void;
39
- $clearErrors: () => void;
40
- $onConnect: (listener: EventListener<RelationConnectedEvent>) => Unsubscribe;
41
- $onDisconnect: (listener: EventListener<RelationDisconnectedEvent>) => Unsubscribe;
42
- $interceptConnect: (interceptor: Interceptor<RelationConnectingEvent>) => Unsubscribe;
43
- $interceptDisconnect: (interceptor: Interceptor<RelationDisconnectingEvent>) => Unsubscribe;
44
29
  private constructor();
45
- static create<TEntity extends object = object, TSelected = TEntity>(parentEntityType: string, parentEntityId: string, fieldName: string, targetType: string, store: SnapshotStore, dispatcher: ActionDispatcher, schema: SchemaRegistry, brands?: Set<symbol>, selection?: SelectionMeta): HasOneHandle<TEntity, TSelected>;
30
+ static create<TEntity extends object = object, TSelected = TEntity>(parentEntityType: string, parentEntityId: string, fieldName: string, targetType: string, store: SnapshotStore, dispatcher: ActionDispatcher, schema: SchemaRegistry, brands?: Set<symbol>, selection?: SelectionMeta): HasOneAccessor<TEntity, TSelected>;
31
+ static createRaw<TEntity extends object = object, TSelected = TEntity>(parentEntityType: string, parentEntityId: string, fieldName: string, targetType: string, store: SnapshotStore, dispatcher: ActionDispatcher, schema: SchemaRegistry, brands?: Set<symbol>, selection?: SelectionMeta): HasOneHandle<TEntity, TSelected>;
32
+ static wrapProxy<TEntity extends object, TSelected>(handle: HasOneHandle<TEntity, TSelected>): HasOneAccessor<TEntity, TSelected>;
46
33
  /**
47
34
  * JSX field reference metadata for collection phase.
48
35
  * Implements HasOneRef interface.
@@ -73,6 +60,12 @@ export declare class HasOneHandle<TEntity extends object = object, TSelected = T
73
60
  * Delegates to the entity (either real EntityHandle or PlaceholderHandle).
74
61
  */
75
62
  get fields(): SelectedEntityFields<TEntity, TSelected>;
63
+ /**
64
+ * Gets the raw (unproxied) related entity handle.
65
+ * Returns raw EntityHandle or raw PlaceholderHandle.
66
+ * Used internally to avoid going through the proxy layer.
67
+ */
68
+ get entityRaw(): EntityHandle<TEntity, TSelected> | PlaceholderHandle<TEntity, TSelected>;
76
69
  /**
77
70
  * Gets the related entity accessor with direct field access.
78
71
  * Implements HasOneRef.$entity - returns EntityAccessor for the related entity.
@@ -85,6 +78,10 @@ export declare class HasOneHandle<TEntity extends object = object, TSelected = T
85
78
  * creates a snapshot from the embedded data.
86
79
  */
87
80
  private ensureRelatedEntitySnapshot;
81
+ /**
82
+ * Checks if the related entity is currently being persisted.
83
+ */
84
+ get isPersisting(): boolean;
88
85
  /**
89
86
  * Checks if the relation is dirty.
90
87
  */
@@ -146,23 +143,23 @@ export declare class HasOneHandle<TEntity extends object = object, TSelected = T
146
143
  * Intercept disconnection (can cancel).
147
144
  */
148
145
  interceptDisconnect(interceptor: Interceptor<RelationDisconnectingEvent>): Unsubscribe;
149
- /** Raw data snapshot of the related entity - delegates to $entity */
150
- get $data(): TSelected | null;
151
- /** Whether this entity is new - delegates to $entity */
152
- get $isNew(): boolean;
153
- /** Server-assigned ID after persistence - delegates to $entity */
154
- get $persistedId(): string | null;
146
+ /** Raw data snapshot of the related entity - delegates to entityRaw */
147
+ get data(): TSelected | null;
148
+ /** Whether this entity is new - delegates to entityRaw */
149
+ get isNew(): boolean;
150
+ /** Server-assigned ID after persistence - delegates to entityRaw */
151
+ get persistedId(): string | null;
155
152
  /** Type brand for entity name */
156
153
  get __entityName(): string;
157
- /** Clear all errors - delegates to $entity */
158
- $clearAllErrors(): void;
154
+ /** Clear all errors - delegates to entityRaw */
155
+ clearAllErrors(): void;
159
156
  /** Subscribe to any event on the related entity */
160
- $on<E extends AfterEventTypes>(eventType: E, listener: EventListener<EventTypeMap[E]>): Unsubscribe;
157
+ on<E extends AfterEventTypes>(eventType: E, listener: EventListener<EventTypeMap[E]>): Unsubscribe;
161
158
  /** Intercept any before event on the related entity */
162
- $intercept<E extends BeforeEventTypes>(eventType: E, interceptor: Interceptor<EventTypeMap[E]>): Unsubscribe;
159
+ intercept<E extends BeforeEventTypes>(eventType: E, interceptor: Interceptor<EventTypeMap[E]>): Unsubscribe;
163
160
  /** Subscribe to persist success events on the related entity */
164
- $onPersisted(listener: EventListener<EntityPersistedEvent>): Unsubscribe;
161
+ onPersisted(listener: EventListener<EntityPersistedEvent>): Unsubscribe;
165
162
  /** Intercept persist on the related entity */
166
- $interceptPersisting(interceptor: Interceptor<EntityPersistingEvent>): Unsubscribe;
163
+ interceptPersisting(interceptor: Interceptor<EntityPersistingEvent>): Unsubscribe;
167
164
  }
168
165
  //# sourceMappingURL=HasOneHandle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HasOneHandle.d.ts","sourceRoot":"","sources":["../../src/handles/HasOneHandle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HasOneHandle.d.ts","sourceRoot":"","sources":["../../src/handles/HasOneHandle.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { ActionDispatcher } from '../core/ActionDispatcher.js';
2
2
  import type { SnapshotStore } from '../store/SnapshotStore.js';
3
- import { type EntityRef, type SelectedEntityFields, type Unsubscribe } from './types.js';
3
+ import { type SelectedEntityFields, type Unsubscribe, type EntityAccessor } from './types.js';
4
4
  import type { ErrorInput, FieldError } from '../errors/types.js';
5
5
  import type { EventTypeMap, AfterEventTypes, BeforeEventTypes, EventListener, Interceptor, EntityPersistedEvent, EntityPersistingEvent } from '../events/types.js';
6
6
  /**
@@ -11,7 +11,7 @@ import type { EventTypeMap, AfterEventTypes, BeforeEventTypes, EventListener, In
11
11
  * @typeParam TEntity - The full entity type
12
12
  * @typeParam TSelected - The selected subset of fields
13
13
  */
14
- export declare class PlaceholderHandle<TEntity extends object = object, TSelected = TEntity> implements EntityRef<TEntity, TSelected> {
14
+ export declare class PlaceholderHandle<TEntity extends object = object, TSelected = TEntity> {
15
15
  private readonly parentEntityType;
16
16
  private readonly parentEntityId;
17
17
  private readonly fieldName;
@@ -20,26 +20,12 @@ export declare class PlaceholderHandle<TEntity extends object = object, TSelecte
20
20
  private readonly dispatcher;
21
21
  /** Runtime brand symbols for validation */
22
22
  readonly __brands?: Set<symbol>;
23
- /** Type brand for schema - placeholder at runtime */
24
- readonly __schema: Record<string, object>;
25
23
  /** Placeholder ID for this handle */
26
24
  private readonly placeholderId;
27
- readonly $fields: SelectedEntityFields<TEntity, TSelected>;
28
- readonly $data: TSelected | null;
29
- readonly $isDirty: boolean;
30
- readonly $persistedId: null;
31
- readonly $isNew: boolean;
32
- readonly $errors: readonly FieldError[];
33
- readonly $hasError: boolean;
34
- $addError: (error: ErrorInput) => void;
35
- $clearErrors: () => void;
36
- $clearAllErrors: () => void;
37
- $on: <E extends AfterEventTypes>(eventType: E, listener: EventListener<EventTypeMap[E]>) => Unsubscribe;
38
- $intercept: <E extends BeforeEventTypes>(eventType: E, interceptor: Interceptor<EventTypeMap[E]>) => Unsubscribe;
39
- $onPersisted: (listener: EventListener<EntityPersistedEvent>) => Unsubscribe;
40
- $interceptPersisting: (interceptor: Interceptor<EntityPersistingEvent>) => Unsubscribe;
41
25
  private constructor();
42
- static create<TEntity extends object = object, TSelected = TEntity>(parentEntityType: string, parentEntityId: string, fieldName: string, targetType: string, store: SnapshotStore, dispatcher: ActionDispatcher, brands?: Set<symbol>): PlaceholderHandle<TEntity, TSelected>;
26
+ static create<TEntity extends object = object, TSelected = TEntity>(parentEntityType: string, parentEntityId: string, fieldName: string, targetType: string, store: SnapshotStore, dispatcher: ActionDispatcher, brands?: Set<symbol>): EntityAccessor<TEntity, TSelected>;
27
+ static createRaw<TEntity extends object = object, TSelected = TEntity>(parentEntityType: string, parentEntityId: string, fieldName: string, targetType: string, store: SnapshotStore, dispatcher: ActionDispatcher, brands?: Set<symbol>): PlaceholderHandle<TEntity, TSelected>;
28
+ static wrapProxy<TEntity extends object, TSelected>(handle: PlaceholderHandle<TEntity, TSelected>): EntityAccessor<TEntity, TSelected>;
43
29
  /**
44
30
  * Gets the placeholder ID.
45
31
  */
@@ -52,6 +38,10 @@ export declare class PlaceholderHandle<TEntity extends object = object, TSelecte
52
38
  * Placeholder is dirty if it has any data.
53
39
  */
54
40
  get isDirty(): boolean;
41
+ /**
42
+ * Placeholder entities are never being persisted.
43
+ */
44
+ get isPersisting(): boolean;
55
45
  /**
56
46
  * Placeholder entities are always new (not yet persisted).
57
47
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PlaceholderHandle.d.ts","sourceRoot":"","sources":["../../src/handles/PlaceholderHandle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlaceholderHandle.d.ts","sourceRoot":"","sources":["../../src/handles/PlaceholderHandle.ts"],"names":[],"mappings":"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"}
@@ -8,50 +8,22 @@
8
8
  * The $ prefix convention allows handle properties to avoid collision with entity field names:
9
9
  * - `entity.title` → field access (returns FieldHandle)
10
10
  * - `entity.$isDirty` → handle property
11
+ * - `entity.id` → entity ID (special case, always passes through)
11
12
  */
12
- /**
13
- * Known properties on EntityHandle that should NOT be treated as field access.
14
- * Properties like `fields`, `data`, `errors` are NOT included - use $ prefix for those.
15
- */
16
- export declare const ENTITY_HANDLE_PROPERTIES: Set<string | symbol>;
17
- /**
18
- * Known properties on HasOneHandle that should NOT be treated as field access.
19
- * Properties like `fields`, `entity`, `errors`, `state` are NOT included - they require $ prefix.
20
- */
21
- export declare const HAS_ONE_HANDLE_PROPERTIES: Set<string | symbol>;
22
- /**
23
- * All properties on FieldHandle (no field access proxy needed, just $ aliasing).
24
- */
25
- export declare const FIELD_HANDLE_PROPERTIES: Set<string | symbol>;
26
- /**
27
- * All properties on HasManyListHandle (no field access proxy needed, just $ aliasing).
28
- */
29
- export declare const HAS_MANY_HANDLE_PROPERTIES: Set<string | symbol>;
30
- /**
31
- * All properties on PlaceholderHandle (no field access proxy needed, just $ aliasing).
32
- */
33
- export declare const PLACEHOLDER_HANDLE_PROPERTIES: Set<string | symbol>;
34
- /**
35
- * Configuration for creating a handle proxy.
36
- */
37
- export interface HandleProxyConfig<T extends object> {
38
- /** Set of property names that should pass through to the handle */
39
- knownProperties: Set<string | symbol>;
40
- /** Function to get the fields proxy from the handle */
41
- getFields: (target: T) => object;
42
- }
43
13
  /**
44
14
  * Creates a proxy around a handle that supports direct field access.
45
15
  *
46
- * - `handle.fieldName` is equivalent to `handle.$fields.fieldName`
47
- * - `handle.$propertyName` accesses handle properties with $ prefix stripped
48
- * - Known properties pass through directly to the handle
16
+ * Resolution order:
17
+ * 1. Symbols → pass through to handle
18
+ * 2. `id` / FIELD_REF_META → pass through to handle
19
+ * 3. `$xxx` → strip `$`, access handle property
20
+ * 4. Everything else → field access (returns FieldHandle/HasOneHandle/HasManyListHandle)
49
21
  *
50
22
  * @param handle - The handle instance to wrap
51
- * @param config - Configuration for the proxy
23
+ * @param getFields - Function to get the fields object from the handle
52
24
  * @returns Proxied handle with direct field access support
53
25
  */
54
- export declare function createHandleProxy<T extends object>(handle: T, config: HandleProxyConfig<T>): T;
26
+ export declare function createHandleProxy<T extends object, TResult = T>(handle: T, getFields: (target: T) => object): TResult;
55
27
  /**
56
28
  * Creates a simple proxy that only handles $ prefix aliasing.
57
29
  * Used for handles that don't need field access proxying (FieldHandle, HasManyListHandle, PlaceholderHandle).
@@ -62,5 +34,5 @@ export declare function createHandleProxy<T extends object>(handle: T, config: H
62
34
  * @param handle - The handle instance to wrap
63
35
  * @returns Proxied handle with $ alias support
64
36
  */
65
- export declare function createAliasProxy<T extends object>(handle: T): T;
37
+ export declare function createAliasProxy<T extends object, TResult = T>(handle: T): TResult;
66
38
  //# sourceMappingURL=proxyFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxyFactory.d.ts","sourceRoot":"","sources":["../../src/handles/proxyFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqBH;;;GAGG;AACH,eAAO,MAAM,wBAAwB,sBAUnC,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,sBAOpC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,sBAWlC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,sBAcrC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,sBAWxC,CAAA;AAEF;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,MAAM;IAClD,mEAAmE;IACnE,eAAe,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IACrC,uDAAuD;IACvD,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAA;CAChC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EACjD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC1B,CAAC,CA2CH;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CA2B/D"}
1
+ {"version":3,"file":"proxyFactory.d.ts","sourceRoot":"","sources":["../../src/handles/proxyFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAeH;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,GAAG,CAAC,EAC9D,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAC9B,OAAO,CAqCT;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CA2BlF"}