@contember/bindx 0.1.40 → 0.1.42

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.
@@ -23,6 +23,7 @@ export declare class ContemberAdapter implements BackendAdapter {
23
23
  query(queries: readonly Query[], options?: QueryOptions): Promise<QueryResult[]>;
24
24
  private buildGetQuery;
25
25
  private buildListQuery;
26
+ private buildCountQuery;
26
27
  persist(entityType: string, id: string, changes: Record<string, unknown>): Promise<PersistResult>;
27
28
  create(entityType: string, data: Record<string, unknown>): Promise<CreateResult>;
28
29
  delete(entityType: string, id: string): Promise<DeleteResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"ContemberAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/ContemberAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EAeb,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,4BAA4B,CAAA;AAC3E,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;IAiCnB,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;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsE5G"}
1
+ {"version":3,"file":"ContemberAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/ContemberAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EAeb,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,4BAA4B,CAAA;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAmC,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9J,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;IA0CtF,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,eAAe;IAiBjB,OAAO,CACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,aAAa,CAAC;IAiCnB,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;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsE5G"}
@@ -37,6 +37,7 @@ export declare class MockAdapter implements BackendAdapter {
37
37
  query(queries: readonly Query[], options?: QueryOptions): Promise<QueryResult[]>;
38
38
  private executeGet;
39
39
  private executeList;
40
+ private executeCount;
40
41
  persist(entityType: string, id: string, changes: Record<string, unknown>): Promise<PersistResult>;
41
42
  /**
42
43
  * Applies changes to an entity, handling Contember-style relation operations.
@@ -1 +1 @@
1
- {"version":3,"file":"MockAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/MockAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAuB,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGlJ;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC3B,CAAC,UAAU,EAAE,MAAM,GAAG;QACrB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACrC,CAAA;CACD,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;;GAGG;AACH,qBAAa,WAAY,YAAW,cAAc;IAMhD,OAAO,CAAC,KAAK;IALd,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;gBAGpC,KAAK,EAAE,aAAa,EAC5B,OAAO,GAAE,kBAAuB;IAOjC;;OAEG;YACW,aAAa;IA0B3B;;OAEG;IACH,OAAO,CAAC,GAAG;IAML,KAAK,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAatF,OAAO,CAAC,UAAU;IAiClB,OAAO,CAAC,WAAW;IA2Bb,OAAO,CACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,aAAa,CAAC;IA2BzB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAuDpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA0D9B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IASrB,MAAM,CACX,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,YAAY,CAAC;IAmBlB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAYnE;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,QAAQ,IAAI,aAAa;IAIzB;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;CAGzC"}
1
+ {"version":3,"file":"MockAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/MockAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAmC,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAG9J;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC3B,CAAC,UAAU,EAAE,MAAM,GAAG;QACrB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACrC,CAAA;CACD,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;;GAGG;AACH,qBAAa,WAAY,YAAW,cAAc;IAMhD,OAAO,CAAC,KAAK;IALd,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;gBAGpC,KAAK,EAAE,aAAa,EAC5B,OAAO,GAAE,kBAAuB;IAOjC;;OAEG;YACW,aAAa;IA0B3B;;OAEG;IACH,OAAO,CAAC,GAAG;IAML,KAAK,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAetF,OAAO,CAAC,UAAU;IAiClB,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,YAAY;IAed,OAAO,CACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,aAAa,CAAC;IA2BzB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAuDpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA0D9B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IASrB,MAAM,CACX,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,YAAY,CAAC;IAmBlB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAYnE;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,QAAQ,IAAI,aAAa;IAIzB;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;CAGzC"}
@@ -1,4 +1,4 @@
1
- export type { BackendAdapter, QueryOptions, Query, GetQuery, ListQuery, QueryResult, GetQueryResult, ListQueryResult, PersistResult, CreateResult, DeleteResult, EntityUniqueWhere, UniqueWhereValue, TransactionMutation, TransactionMutationResult, TransactionResult, } from './types.js';
1
+ export type { BackendAdapter, QueryOptions, Query, GetQuery, ListQuery, CountQuery, QueryResult, GetQueryResult, ListQueryResult, CountQueryResult, PersistResult, CreateResult, DeleteResult, EntityUniqueWhere, UniqueWhereValue, TransactionMutation, TransactionMutationResult, TransactionResult, } from './types.js';
2
2
  export { MockAdapter, type MockDataStore, type MockAdapterOptions } from './MockAdapter.js';
3
3
  export { MockQueryEngine } from './MockQueryEngine.js';
4
4
  export { ContemberAdapter, type ContemberAdapterOptions, unwrapPaginateFields } from './ContemberAdapter.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,cAAc,EACd,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,GACjB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,cAAc,EACd,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,GACjB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -45,10 +45,22 @@ export interface ListQuery<TEntity = unknown> {
45
45
  readonly offset?: number;
46
46
  readonly spec: QuerySpec;
47
47
  }
48
+ /**
49
+ * Query for the total number of entities matching a filter.
50
+ *
51
+ * Issued independently from {@link ListQuery} and keyed only on the filter
52
+ * (not on limit/offset/orderBy), so paging through a list does not recompute
53
+ * the count. Mirrors Contember's `paginate<Entity> { pageInfo { totalCount } }`.
54
+ */
55
+ export interface CountQuery<TEntity = unknown> {
56
+ readonly type: 'count';
57
+ readonly entityType: string;
58
+ readonly filter?: EntityWhere<TEntity>;
59
+ }
48
60
  /**
49
61
  * Union of all query types
50
62
  */
51
- export type Query<TEntity = unknown> = GetQuery | ListQuery<TEntity>;
63
+ export type Query<TEntity = unknown> = GetQuery | ListQuery<TEntity> | CountQuery<TEntity>;
52
64
  /**
53
65
  * Result for a single get query
54
66
  */
@@ -63,10 +75,17 @@ export interface ListQueryResult {
63
75
  readonly type: 'list';
64
76
  readonly data: readonly Record<string, unknown>[];
65
77
  }
78
+ /**
79
+ * Result for a count query
80
+ */
81
+ export interface CountQueryResult {
82
+ readonly type: 'count';
83
+ readonly count: number;
84
+ }
66
85
  /**
67
86
  * Union of query results
68
87
  */
69
- export type QueryResult = GetQueryResult | ListQueryResult;
88
+ export type QueryResult = GetQueryResult | ListQueryResult | CountQueryResult;
70
89
  /**
71
90
  * Result of a persist operation.
72
91
  * Contains detailed error information for error mapping.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapter/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapter/types.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,11 @@ export declare class PlaceholderHandle<TEntity extends object = object, TSelecte
24
24
  readonly __brands?: Set<symbol>;
25
25
  /** Placeholder ID for this handle */
26
26
  private readonly placeholderId;
27
+ /**
28
+ * Stable temp id this placeholder collapses into once it must become a real entity
29
+ * (the first time a child is added to one of its has-many relations). Lazily minted.
30
+ */
31
+ private materializedId;
27
32
  private constructor();
28
33
  static create<TEntity extends object = object, TSelected = TEntity>(parentEntityType: string, parentEntityId: string, fieldName: string, targetType: string, store: SnapshotStore, dispatcher: ActionDispatcher, schema?: SchemaRegistry | null, brands?: Set<symbol>): EntityAccessor<TEntity, TSelected>;
29
34
  static createRaw<TEntity extends object = object, TSelected = TEntity>(parentEntityType: string, parentEntityId: string, fieldName: string, targetType: string, store: SnapshotStore, dispatcher: ActionDispatcher, schema?: SchemaRegistry | null, brands?: Set<symbol>): PlaceholderHandle<TEntity, TSelected>;
@@ -56,9 +61,23 @@ export declare class PlaceholderHandle<TEntity extends object = object, TSelecte
56
61
  * Gets field accessors that read/write placeholder data.
57
62
  */
58
63
  get fields(): EntityFieldsAccessor<TEntity, TSelected>;
64
+ /**
65
+ * Stable temp id this placeholder collapses into when it must become a real entity.
66
+ */
67
+ private getMaterializedId;
68
+ /**
69
+ * Promotes this placeholder into a real (temp) entity connected to its parent relation.
70
+ * Called lazily the first time a child is added to one of the placeholder's has-many
71
+ * relations — a has-many child needs a real parent to belong to. The entity is seeded
72
+ * with whatever placeholder scalar data was typed so far, then connected via the normal
73
+ * create path, so persist collects both the entity and its children (see collectHasOne/
74
+ * collectHasManyOperations → create). Idempotent.
75
+ */
76
+ private materializeIntoParent;
59
77
  /**
60
78
  * Creates a field handle for placeholder data.
61
- * For has-many relations, returns an empty has-many-like handle with items/map/length.
79
+ * For has-many relations, returns a real (empty) has-many handle bound to this
80
+ * placeholder entity, so it behaves identically to a connected one.
62
81
  */
63
82
  private createPlaceholderFieldHandle;
64
83
  /**
@@ -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":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,EAEN,KAAK,oBAAoB,EAEzB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,MAAM,oBAAoB,CAAA;AAK3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAEjE;;;;;;;GAOG;AACH,qBAAa,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,OAAO;IAcjF,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAnBxB,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAE/B,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IAEtC;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAsB;IAE5C,OAAO;IAcP,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,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,gBAAgB,EAC5B,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,EAC9B,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAClB,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC;IAIrC,MAAM,CAAC,SAAS,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,OAAO,EACpE,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,gBAAgB,EAC5B,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,EAC9B,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAClB,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC;IAIxC,MAAM,CAAC,SAAS,CAAC,OAAO,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC;IAItI;;OAEG;IACH,IAAI,EAAE,IAAI,MAAM,CAEf;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,GAAG,IAAI,CAU3B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAOrB;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,IAAI,CAEtB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAMrD;IAED;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IAoIpC;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,SAAS,UAAU,EAAE,CAElC;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIlC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,cAAc,IAAI,IAAI;IAOtB;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,eAAe,EAC3B,UAAU,EAAE,CAAC,EACb,SAAS,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GACvC,WAAW;IAId;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,gBAAgB,EACnC,UAAU,EAAE,CAAC,EACb,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GACxC,WAAW;IAId;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC,GAAG,WAAW;IAIxE;;OAEG;IACH,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,qBAAqB,CAAC,GAAG,WAAW;CAIlF"}
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export type { SelectionBuilder, SelectionMeta, SelectionFieldMeta, FluentFragmen
8
8
  export type { HasOneRelationState, InputProps, EntityFields, EntityFieldsAccessor, EntityFieldsRef, ScalarKeys, HasManyKeys, HasOneKeys, FieldRefMeta, FieldRef, HasManyRef, HasOneRef, HasOneRefInterface, EntityRef, EntityRefInterface, FieldAccessor, HasManyAccessor, HasOneAccessor, EntityAccessor, ExtractHasOneEntityName, ExtractHasManyEntityName, ExtractHasOneEntity, ExtractHasManyEntity, ExtractEntityRefEntity, ExtractRoleMap, } from './handles/index.js';
9
9
  export type { AnyBrand } from './brand/ComponentBrand.js';
10
10
  export { ComponentBrand } from './brand/ComponentBrand.js';
11
- export type { BackendAdapter, QueryOptions, Query, GetQuery, ListQuery, QueryResult, GetQueryResult, ListQueryResult, PersistResult, CreateResult, DeleteResult, MockDataStore, MockAdapterOptions, ContemberAdapterOptions, EntityUniqueWhere, UniqueWhereValue, TransactionMutation as AdapterTransactionMutation, TransactionMutationResult as AdapterTransactionMutationResult, TransactionResult as AdapterTransactionResult, } from './adapter/index.js';
11
+ export type { BackendAdapter, QueryOptions, Query, GetQuery, ListQuery, CountQuery, QueryResult, GetQueryResult, ListQueryResult, CountQueryResult, PersistResult, CreateResult, DeleteResult, MockDataStore, MockAdapterOptions, ContemberAdapterOptions, EntityUniqueWhere, UniqueWhereValue, TransactionMutation as AdapterTransactionMutation, TransactionMutationResult as AdapterTransactionMutationResult, TransactionResult as AdapterTransactionResult, } from './adapter/index.js';
12
12
  export type { EntityLoadResult, EntityListLoadResult, LoadEntityOptions, LoadEntityListOptions, SelectionInput, FluentDefiner as CoreFluentDefiner, MutationDataCollector, } from './core/index.js';
13
13
  export type { EntitySnapshot, FieldSnapshot, HasOneRelationSnapshot, HasManySnapshot, EntityState, LoadStatus, } from './store/snapshots.js';
14
14
  export { scalar, enumScalar, hasOne, hasMany, defineSchema, entityDef, roleEntityDef, SchemaRegistry, ContemberSchema, SchemaLoader } from './schema/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/bindx",
3
- "version": "0.1.40",
3
+ "version": "0.1.42",
4
4
  "description": "Type-safe data binding framework (core)",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
@@ -17,7 +17,7 @@
17
17
  ],
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@contember/bindx-client": "0.1.40",
20
+ "@contember/bindx-client": "0.1.42",
21
21
  "@contember/graphql-builder": "^2.1.0-beta.1",
22
22
  "@contember/graphql-client": "^2.1.0-beta.1"
23
23
  },
@@ -17,7 +17,7 @@ import {
17
17
  } from '@contember/bindx-client'
18
18
  import type { GraphQlClient } from '@contember/graphql-client'
19
19
  import type { QuerySpec, QueryFieldSpec } from '../selection/buildQuery.js'
20
- import type { BackendAdapter, Query, QueryResult, QueryOptions, GetQuery, ListQuery, PersistResult, CreateResult, DeleteResult } from './types.js'
20
+ import type { BackendAdapter, Query, QueryResult, QueryOptions, GetQuery, ListQuery, CountQuery, PersistResult, CreateResult, DeleteResult } from './types.js'
21
21
  import type { ContemberMutationResult } from '../errors/pathMapper.js'
22
22
  import type { SchemaRegistry } from '../schema/SchemaRegistry.js'
23
23
  import { GraphQlField } from '@contember/graphql-builder'
@@ -56,6 +56,8 @@ export class ContemberAdapter implements BackendAdapter {
56
56
 
57
57
  if (q.type === 'get') {
58
58
  contentQueries[key] = this.buildGetQuery(q)
59
+ } else if (q.type === 'count') {
60
+ contentQueries[key] = this.buildCountQuery(q)
59
61
  } else {
60
62
  contentQueries[key] = this.buildListQuery(q)
61
63
  }
@@ -74,6 +76,9 @@ export class ContemberAdapter implements BackendAdapter {
74
76
  if (q.type === 'get') {
75
77
  const unwrapped = data ? unwrapPaginateFields(data as Record<string, unknown>, q.spec) : null
76
78
  return { type: 'get' as const, data: unwrapped }
79
+ } else if (q.type === 'count') {
80
+ const connection = data as { pageInfo?: { totalCount?: number } } | null
81
+ return { type: 'count' as const, count: connection?.pageInfo?.totalCount ?? 0 }
77
82
  } else {
78
83
  const items = (data ?? []) as readonly Record<string, unknown>[]
79
84
  return { type: 'list' as const, data: items.map(item => unwrapPaginateFields(item, q.spec)) }
@@ -114,6 +119,23 @@ export class ContemberAdapter implements BackendAdapter {
114
119
  )
115
120
  }
116
121
 
122
+ private buildCountQuery(query: CountQuery): ContentQuery<unknown> {
123
+ const args = buildListArgs(query.entityType, { filter: query.filter }, 'paginate')
124
+ const selectionSet = [
125
+ new GraphQlField(null, 'pageInfo', {}, [
126
+ new GraphQlField(null, 'totalCount'),
127
+ ]),
128
+ ]
129
+
130
+ return new ContentOperation(
131
+ 'query',
132
+ `paginate${query.entityType}`,
133
+ args,
134
+ selectionSet,
135
+ value => value,
136
+ )
137
+ }
138
+
117
139
  async persist(
118
140
  entityType: string,
119
141
  id: string,
@@ -1,4 +1,4 @@
1
- import type { BackendAdapter, Query, QueryResult, QueryOptions, GetQuery, ListQuery, PersistResult, CreateResult, DeleteResult } from './types.js'
1
+ import type { BackendAdapter, Query, QueryResult, QueryOptions, GetQuery, ListQuery, CountQuery, PersistResult, CreateResult, DeleteResult } from './types.js'
2
2
  import { MockQueryEngine } from './MockQueryEngine.js'
3
3
 
4
4
  /**
@@ -83,6 +83,8 @@ export class MockAdapter implements BackendAdapter {
83
83
  return queries.map(q => {
84
84
  if (q.type === 'get') {
85
85
  return this.executeGet(q)
86
+ } else if (q.type === 'count') {
87
+ return this.executeCount(q)
86
88
  } else {
87
89
  return this.executeList(q)
88
90
  }
@@ -149,6 +151,21 @@ export class MockAdapter implements BackendAdapter {
149
151
  return { type: 'list', data: results }
150
152
  }
151
153
 
154
+ private executeCount(query: CountQuery): QueryResult {
155
+ const entityStore = this.store[query.entityType]
156
+ if (!entityStore) {
157
+ return { type: 'count', count: 0 }
158
+ }
159
+
160
+ let entities = Object.values(entityStore)
161
+ if (query.filter) {
162
+ entities = this.queryEngine.filter(entities, query.filter as Record<string, unknown>)
163
+ }
164
+
165
+ this.log('executeCount result', entities.length)
166
+ return { type: 'count', count: entities.length }
167
+ }
168
+
152
169
  async persist(
153
170
  entityType: string,
154
171
  id: string,
@@ -4,9 +4,11 @@ export type {
4
4
  Query,
5
5
  GetQuery,
6
6
  ListQuery,
7
+ CountQuery,
7
8
  QueryResult,
8
9
  GetQueryResult,
9
10
  ListQueryResult,
11
+ CountQueryResult,
10
12
  PersistResult,
11
13
  CreateResult,
12
14
  DeleteResult,
@@ -47,10 +47,23 @@ export interface ListQuery<TEntity = unknown> {
47
47
  readonly spec: QuerySpec
48
48
  }
49
49
 
50
+ /**
51
+ * Query for the total number of entities matching a filter.
52
+ *
53
+ * Issued independently from {@link ListQuery} and keyed only on the filter
54
+ * (not on limit/offset/orderBy), so paging through a list does not recompute
55
+ * the count. Mirrors Contember's `paginate<Entity> { pageInfo { totalCount } }`.
56
+ */
57
+ export interface CountQuery<TEntity = unknown> {
58
+ readonly type: 'count'
59
+ readonly entityType: string
60
+ readonly filter?: EntityWhere<TEntity>
61
+ }
62
+
50
63
  /**
51
64
  * Union of all query types
52
65
  */
53
- export type Query<TEntity = unknown> = GetQuery | ListQuery<TEntity>
66
+ export type Query<TEntity = unknown> = GetQuery | ListQuery<TEntity> | CountQuery<TEntity>
54
67
 
55
68
  /**
56
69
  * Result for a single get query
@@ -68,10 +81,18 @@ export interface ListQueryResult {
68
81
  readonly data: readonly Record<string, unknown>[]
69
82
  }
70
83
 
84
+ /**
85
+ * Result for a count query
86
+ */
87
+ export interface CountQueryResult {
88
+ readonly type: 'count'
89
+ readonly count: number
90
+ }
91
+
71
92
  /**
72
93
  * Union of query results
73
94
  */
74
- export type QueryResult = GetQueryResult | ListQueryResult
95
+ export type QueryResult = GetQueryResult | ListQueryResult | CountQueryResult
75
96
 
76
97
  /**
77
98
  * Result of a persist operation.
@@ -19,6 +19,9 @@ import type {
19
19
  EntityPersistingEvent,
20
20
  } from '../events/types.js'
21
21
  import { createHandleProxy } from './proxyFactory.js'
22
+ import { HasManyListHandle } from './HasManyListHandle.js'
23
+ import { generateTempId } from '../store/entityId.js'
24
+ import { connectRelation } from '../core/actions.js'
22
25
  import type { SchemaRegistry } from '../schema/SchemaRegistry.js'
23
26
 
24
27
  /**
@@ -36,6 +39,12 @@ export class PlaceholderHandle<TEntity extends object = object, TSelected = TEnt
36
39
  /** Placeholder ID for this handle */
37
40
  private readonly placeholderId: string
38
41
 
42
+ /**
43
+ * Stable temp id this placeholder collapses into once it must become a real entity
44
+ * (the first time a child is added to one of its has-many relations). Lazily minted.
45
+ */
46
+ private materializedId: string | null = null
47
+
39
48
  private constructor(
40
49
  private readonly parentEntityType: string,
41
50
  private readonly parentEntityId: string,
@@ -146,24 +155,76 @@ export class PlaceholderHandle<TEntity extends object = object, TSelected = TEnt
146
155
  })
147
156
  }
148
157
 
158
+ /**
159
+ * Stable temp id this placeholder collapses into when it must become a real entity.
160
+ */
161
+ private getMaterializedId(): string {
162
+ if (!this.materializedId) this.materializedId = generateTempId()
163
+ return this.materializedId
164
+ }
165
+
166
+ /**
167
+ * Promotes this placeholder into a real (temp) entity connected to its parent relation.
168
+ * Called lazily the first time a child is added to one of the placeholder's has-many
169
+ * relations — a has-many child needs a real parent to belong to. The entity is seeded
170
+ * with whatever placeholder scalar data was typed so far, then connected via the normal
171
+ * create path, so persist collects both the entity and its children (see collectHasOne/
172
+ * collectHasManyOperations → create). Idempotent.
173
+ */
174
+ private materializeIntoParent(): void {
175
+ const tempId = this.getMaterializedId()
176
+ const relation = this.store.getRelation(this.parentEntityType, this.parentEntityId, this.fieldName)
177
+ if (relation?.currentId === tempId) return // already materialized
178
+ if (!this.store.getEntitySnapshot(this.targetType, tempId)) {
179
+ this.store.createEntity(this.targetType, { ...(relation?.placeholderData ?? {}), id: tempId })
180
+ }
181
+ this.dispatcher.dispatch(
182
+ connectRelation(this.parentEntityType, this.parentEntityId, this.fieldName, tempId, this.targetType),
183
+ )
184
+ }
185
+
149
186
  /**
150
187
  * Creates a field handle for placeholder data.
151
- * For has-many relations, returns an empty has-many-like handle with items/map/length.
188
+ * For has-many relations, returns a real (empty) has-many handle bound to this
189
+ * placeholder entity, so it behaves identically to a connected one.
152
190
  */
153
191
  private createPlaceholderFieldHandle(fieldName: string): unknown {
154
- // For has-many relations, return an empty has-many-like handle
192
+ // For has-many relations, return a real HasManyListHandle bound to this placeholder's
193
+ // stable temp id. Hand-rolling a degenerate stub here used to drop FIELD_REF_META,
194
+ // getById and a working add() — which crashed the BlockEditor
195
+ // (`references[FIELD_REF_META].entityType`) on render for any parent without a
196
+ // connected entity yet. Reads stay empty (no snapshot for the temp id until something
197
+ // is added); the first add() promotes the placeholder into a real connected entity
198
+ // (materializeIntoParent) so the children — and the parent itself — round-trip on persist.
155
199
  if (this.schema?.isHasMany(this.targetType, fieldName)) {
156
- const emptyItems: EntityAccessor<object>[] = []
157
- const emptyHasMany: Record<string, unknown> = {
158
- get items() { return emptyItems },
159
- get length() { return 0 },
160
- map: () => [],
161
- add: () => { throw new Error(`Cannot add items to disconnected has-many relation "${fieldName}" on placeholder entity`) },
162
- remove: () => {},
163
- $state: 'disconnected',
164
- [Symbol.iterator]: () => emptyItems[Symbol.iterator](),
200
+ const itemType = this.schema.getRelationTarget(this.targetType, fieldName)
201
+ if (!itemType) {
202
+ throw new Error(`Field "${fieldName}" is not a relation on entity "${this.targetType}"`)
165
203
  }
166
- return emptyHasMany
204
+ const handle = HasManyListHandle.create(
205
+ this.targetType,
206
+ this.getMaterializedId(),
207
+ fieldName,
208
+ itemType,
209
+ this.store,
210
+ this.dispatcher,
211
+ this.schema,
212
+ this.__brands,
213
+ )
214
+ // Intercept add() to lazily promote the placeholder to a real entity first — a child
215
+ // can't belong to a parent that doesn't exist. Reads pass through untouched.
216
+ return new Proxy(handle as object, {
217
+ get: (target, prop, receiver) => {
218
+ const value = Reflect.get(target, prop, receiver)
219
+ if (prop === 'add' && typeof value === 'function') {
220
+ return (...args: unknown[]): unknown => {
221
+ this.materializeIntoParent()
222
+ return (value as (...a: unknown[]) => unknown).apply(target, args)
223
+ }
224
+ }
225
+ return value
226
+ },
227
+ })
167
228
  }
168
229
 
169
230
  const self = this
package/src/index.ts CHANGED
@@ -87,9 +87,11 @@ export type {
87
87
  Query,
88
88
  GetQuery,
89
89
  ListQuery,
90
+ CountQuery,
90
91
  QueryResult,
91
92
  GetQueryResult,
92
93
  ListQueryResult,
94
+ CountQueryResult,
93
95
  PersistResult,
94
96
  CreateResult,
95
97
  DeleteResult,