@contember/bindx 0.1.34 → 0.1.35

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.ts CHANGED
@@ -11,7 +11,7 @@ export { ComponentBrand } from './brand/ComponentBrand.js';
11
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';
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
- export { scalar, hasOne, hasMany, defineSchema, entityDef, roleEntityDef, SchemaRegistry, ContemberSchema, SchemaLoader } from './schema/index.js';
14
+ export { scalar, enumScalar, hasOne, hasMany, defineSchema, entityDef, roleEntityDef, SchemaRegistry, ContemberSchema, SchemaLoader } from './schema/index.js';
15
15
  export type { UnionToIntersection, RoleNames, CommonEntity, EntityForRoles, ResolveEntity, SingleRoleMap, DefaultRole, } from './schema/index.js';
16
16
  export { DEFAULT_ROLE } from './schema/index.js';
17
17
  export type { SchemaColumnType, SchemaColumn, SchemaRelationOrderBy, OwningRelation, InverseRelation, SchemaRelation, SchemaField, SchemaEntity, SchemaEnum, ContemberSchemaStore, RawContemberSchema, SchemaLoaderClient, } 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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"}
@@ -107,12 +107,37 @@ export declare class MutationCollector implements MutationDataCollector {
107
107
  */
108
108
  private isExistingEntity;
109
109
  /**
110
- * Materializes embedded relation data in an entity's snapshot into proper
111
- * store entities and relations. This normalizes inline objects (e.g.
112
- * `reviews: [{ reviewType: 'expert' }]`) into tracked entities with temp IDs,
113
- * enabling proper post-persist ID mapping and commit.
114
- */
115
- private materializeEntityRelations;
110
+ * Materializes all relation state into trackable store entities on the
111
+ * create path: placeholder-backed 'creating' hasOne relations AND embedded
112
+ * inline objects/arrays in the snapshot data. After this pass, the
113
+ * collection phase is a pure read over the store.
114
+ *
115
+ * Called recursively for every newly materialized temp entity (both from
116
+ * placeholder and embedded paths), since a newly-created entity can itself
117
+ * carry further embedded or placeholder data.
118
+ */
119
+ private materializeForCreate;
120
+ /**
121
+ * Materializes placeholder-backed 'creating' hasOne relations only. Safe
122
+ * to call on existing (server-side) entities — never touches hasMany state
123
+ * or embedded snapshot data, because for an already-persisted parent the
124
+ * store-level hasMany/connected state is already authoritative.
125
+ *
126
+ * Newly created temp entities below still go through the full create-path
127
+ * materialization, since they have no server state yet.
128
+ */
129
+ private materializeForUpdate;
130
+ /**
131
+ * Materializes a hasOne relation in the 'creating' state with non-empty
132
+ * placeholderData (PlaceholderHandle pattern). Creates a real store entity
133
+ * from the placeholder data and flips the relation to 'connected' with a
134
+ * temp ID, so subsequent collection goes through the standard
135
+ * tempId-inline-create branch and post-persist ID mapping works.
136
+ *
137
+ * Returns true if materialization happened (caller should skip embedded
138
+ * processing for this field).
139
+ */
140
+ private materializePlaceholderHasOne;
116
141
  /**
117
142
  * Materializes an embedded hasMany array into store entities.
118
143
  * Skips if the hasMany state already has store-managed entities.
@@ -1 +1 @@
1
- {"version":3,"file":"MutationCollector.d.ts","sourceRoot":"","sources":["../../src/persistence/MutationCollector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAA2B,MAAM,2BAA2B,CAAA;AAEvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAGvD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,kDAAkD;IAClD,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACpC,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,YAAW,qBAAqB;IAO7D,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAPhC,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;IAC1D,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiC;gBAGlD,KAAK,EAAE,aAAa,EACpB,cAAc,EAAE,sBAAsB;IAGxD;;;;OAIG;IACH,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI;IAMnD;;;;OAIG;IACH,kBAAkB,IAAI,WAAW,CAAC,MAAM,CAAC;IAIzC;;;OAGG;IACH,oBAAoB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAMnD;;;OAGG;IACH,eAAe,CACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACd,oBAAoB,GAAG,IAAI;IAkD9B;;;OAGG;IACH,iBAAiB,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAqBjC;;;OAGG;IACH,iBAAiB,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiDjC;;;OAGG;IACH,iBAAiB,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA6CjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAuE9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA8BhC;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAuEhC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA+BjC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAgDzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;;OAKG;IACH,OAAO,CAAC,0BAA0B;IAuBlC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IA0ClC;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA8CjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAa1B"}
1
+ {"version":3,"file":"MutationCollector.d.ts","sourceRoot":"","sources":["../../src/persistence/MutationCollector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAA2B,MAAM,2BAA2B,CAAA;AAEvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAGvD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,kDAAkD;IAClD,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACpC,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,YAAW,qBAAqB;IAO7D,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAPhC,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;IAC1D,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiC;gBAGlD,KAAK,EAAE,aAAa,EACpB,cAAc,EAAE,sBAAsB;IAGxD;;;;OAIG;IACH,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI;IAMnD;;;;OAIG;IACH,kBAAkB,IAAI,WAAW,CAAC,MAAM,CAAC;IAIzC;;;OAGG;IACH,oBAAoB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAMnD;;;OAGG;IACH,eAAe,CACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACd,oBAAoB,GAAG,IAAI;IAkD9B;;;OAGG;IACH,iBAAiB,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA2BjC;;;OAGG;IACH,iBAAiB,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiDjC;;;OAGG;IACH,iBAAiB,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA6CjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAgF9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA8BhC;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAuEhC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA+BjC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAgDzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IA4B5B;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;;;;;;;;OASG;IACH,OAAO,CAAC,4BAA4B;IAwBpC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IA0ClC;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA8CjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAa1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/bindx",
3
- "version": "0.1.34",
3
+ "version": "0.1.35",
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.34",
20
+ "@contember/bindx-client": "0.1.35",
21
21
  "@contember/graphql-builder": "^2.1.0-beta.1",
22
22
  "@contember/graphql-client": "^2.1.0-beta.1"
23
23
  },
package/src/index.ts CHANGED
@@ -126,7 +126,7 @@ export type {
126
126
  // ============================================================================
127
127
 
128
128
  // Schema utilities
129
- export { scalar, hasOne, hasMany, defineSchema, entityDef, roleEntityDef, SchemaRegistry, ContemberSchema, SchemaLoader } from './schema/index.js'
129
+ export { scalar, enumScalar, hasOne, hasMany, defineSchema, entityDef, roleEntityDef, SchemaRegistry, ContemberSchema, SchemaLoader } from './schema/index.js'
130
130
 
131
131
  // Role types
132
132
  export type {
@@ -149,6 +149,12 @@ export class MutationCollector implements MutationDataCollector {
149
149
  // Collect scalar field changes
150
150
  this.collectScalarChanges(entityType, snapshot, mutation)
151
151
 
152
+ // Materialize placeholder-backed creating-state hasOne relations before
153
+ // collecting, so the collection phase can remain a pure read over the
154
+ // store. Embedded data is not materialized here — for existing
155
+ // (server-side) parents, hasMany state is already authoritative.
156
+ this.materializeForUpdate(entityType, entityId)
157
+
152
158
  // Collect relation changes
153
159
  this.collectRelationChanges(entityType, entityId, mutation)
154
160
 
@@ -188,7 +194,7 @@ export class MutationCollector implements MutationDataCollector {
188
194
 
189
195
  // Materialize embedded relation data into store entities,
190
196
  // then collect from store for consistent tracking and post-persist ID mapping
191
- this.materializeEntityRelations(entityType, entityId)
197
+ this.materializeForCreate(entityType, entityId)
192
198
 
193
199
  // Collect relation values from store
194
200
  const relationFields = this.schemaProvider.getRelationFields(entityType)
@@ -378,12 +384,21 @@ export class MutationCollector implements MutationDataCollector {
378
384
  return { delete: true }
379
385
 
380
386
  case 'creating':
381
- // Create new entity with placeholder data
382
- if (Object.keys(placeholderData).length > 0) {
383
- const createData = this.processNestedData(placeholderData)
384
- return { create: createData }
387
+ // Empty placeholderData is a legitimate no-op (user opened a create
388
+ // form but typed nothing). Non-empty placeholderData reaching this
389
+ // branch is an invariant violation — the materialization pass
390
+ // (materializeForCreate / materializeForUpdate) must run before
391
+ // collection and flip the relation to 'connected' with a tempId.
392
+ // Reaching here means a caller skipped materialization, which
393
+ // would produce a mutation the server accepts but whose returned
394
+ // ID we can't map back (see issue #23).
395
+ if (Object.keys(placeholderData).length === 0) {
396
+ return null
385
397
  }
386
- return null
398
+ throw new Error(
399
+ `Invariant: hasOne relation ${entityType}.${fieldName} in 'creating' state ` +
400
+ `with non-empty placeholderData must be materialized before collection`,
401
+ )
387
402
 
388
403
  default:
389
404
  return null
@@ -592,15 +607,19 @@ export class MutationCollector implements MutationDataCollector {
592
607
  return isPersistedId(id)
593
608
  }
594
609
 
595
- // ==================== Embedded Data Materialization ====================
610
+ // ==================== Materialization ====================
596
611
 
597
612
  /**
598
- * Materializes embedded relation data in an entity's snapshot into proper
599
- * store entities and relations. This normalizes inline objects (e.g.
600
- * `reviews: [{ reviewType: 'expert' }]`) into tracked entities with temp IDs,
601
- * enabling proper post-persist ID mapping and commit.
613
+ * Materializes all relation state into trackable store entities on the
614
+ * create path: placeholder-backed 'creating' hasOne relations AND embedded
615
+ * inline objects/arrays in the snapshot data. After this pass, the
616
+ * collection phase is a pure read over the store.
617
+ *
618
+ * Called recursively for every newly materialized temp entity (both from
619
+ * placeholder and embedded paths), since a newly-created entity can itself
620
+ * carry further embedded or placeholder data.
602
621
  */
603
- private materializeEntityRelations(entityType: string, entityId: string): void {
622
+ private materializeForCreate(entityType: string, entityId: string): void {
604
623
  if (!this.schemaProvider.hasEntity(entityType)) return
605
624
 
606
625
  const snapshot = this.store.getEntitySnapshot(entityType, entityId)
@@ -610,19 +629,76 @@ export class MutationCollector implements MutationDataCollector {
610
629
  const relationFields = this.schemaProvider.getRelationFields(entityType)
611
630
 
612
631
  for (const fieldName of relationFields) {
613
- const value = data[fieldName]
614
- if (value === null || value === undefined) continue
615
-
616
632
  const relationType = this.schemaProvider.getRelationType(entityType, fieldName)
617
633
 
618
- if (relationType === 'hasOne' && typeof value === 'object' && !Array.isArray(value)) {
619
- this.materializeEmbeddedHasOne(entityType, entityId, fieldName, value as Record<string, unknown>)
620
- } else if (relationType === 'hasMany' && Array.isArray(value) && value.length > 0) {
621
- this.materializeEmbeddedHasMany(entityType, entityId, fieldName, value)
634
+ if (relationType === 'hasOne') {
635
+ if (this.materializePlaceholderHasOne(entityType, entityId, fieldName)) continue
636
+
637
+ const value = data[fieldName]
638
+ if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
639
+ this.materializeEmbeddedHasOne(entityType, entityId, fieldName, value as Record<string, unknown>)
640
+ }
641
+ } else if (relationType === 'hasMany') {
642
+ const value = data[fieldName]
643
+ if (Array.isArray(value) && value.length > 0) {
644
+ this.materializeEmbeddedHasMany(entityType, entityId, fieldName, value)
645
+ }
622
646
  }
623
647
  }
624
648
  }
625
649
 
650
+ /**
651
+ * Materializes placeholder-backed 'creating' hasOne relations only. Safe
652
+ * to call on existing (server-side) entities — never touches hasMany state
653
+ * or embedded snapshot data, because for an already-persisted parent the
654
+ * store-level hasMany/connected state is already authoritative.
655
+ *
656
+ * Newly created temp entities below still go through the full create-path
657
+ * materialization, since they have no server state yet.
658
+ */
659
+ private materializeForUpdate(entityType: string, entityId: string): void {
660
+ if (!this.schemaProvider.hasEntity(entityType)) return
661
+
662
+ for (const fieldName of this.schemaProvider.getRelationFields(entityType)) {
663
+ if (this.schemaProvider.getRelationType(entityType, fieldName) !== 'hasOne') continue
664
+ this.materializePlaceholderHasOne(entityType, entityId, fieldName)
665
+ }
666
+ }
667
+
668
+ /**
669
+ * Materializes a hasOne relation in the 'creating' state with non-empty
670
+ * placeholderData (PlaceholderHandle pattern). Creates a real store entity
671
+ * from the placeholder data and flips the relation to 'connected' with a
672
+ * temp ID, so subsequent collection goes through the standard
673
+ * tempId-inline-create branch and post-persist ID mapping works.
674
+ *
675
+ * Returns true if materialization happened (caller should skip embedded
676
+ * processing for this field).
677
+ */
678
+ private materializePlaceholderHasOne(
679
+ entityType: string,
680
+ entityId: string,
681
+ fieldName: string,
682
+ ): boolean {
683
+ const relation = this.store.getRelation(entityType, entityId, fieldName)
684
+ if (!relation || relation.state !== 'creating') return false
685
+ if (Object.keys(relation.placeholderData).length === 0) return false
686
+
687
+ const targetType = this.schemaProvider.getRelationTarget(entityType, fieldName)
688
+ if (!targetType) return false
689
+
690
+ const tempId = this.store.createEntity(targetType, relation.placeholderData)
691
+ this.store.setRelation(entityType, entityId, fieldName, {
692
+ currentId: tempId,
693
+ state: 'connected',
694
+ placeholderData: {},
695
+ })
696
+
697
+ // Newly created temp entity — walk its embedded/placeholder data too.
698
+ this.materializeForCreate(targetType, tempId)
699
+ return true
700
+ }
701
+
626
702
  /**
627
703
  * Materializes an embedded hasMany array into store entities.
628
704
  * Skips if the hasMany state already has store-managed entities.
@@ -662,7 +738,7 @@ export class MutationCollector implements MutationDataCollector {
662
738
  this.store.addToHasMany(entityType, entityId, fieldName, tempId)
663
739
 
664
740
  // Recursively materialize nested relations in the new entity
665
- this.materializeEntityRelations(targetType, tempId)
741
+ this.materializeForCreate(targetType, tempId)
666
742
  }
667
743
 
668
744
  // Clear embedded array from parent snapshot
@@ -712,7 +788,7 @@ export class MutationCollector implements MutationDataCollector {
712
788
  })
713
789
 
714
790
  // Recursively materialize nested relations
715
- this.materializeEntityRelations(targetType, tempId)
791
+ this.materializeForCreate(targetType, tempId)
716
792
  }
717
793
 
718
794
  // Clear embedded data from parent snapshot