@forestadmin-experimental/datasource-cosmos 1.6.2 → 1.6.4

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.
@@ -21,5 +21,10 @@ export default class CosmosCollection extends BaseCollection {
21
21
  update(caller: Caller, filter: Filter, patch: RecordData): Promise<void>;
22
22
  delete(caller: Caller, filter: Filter): Promise<void>;
23
23
  aggregate(caller: Caller, filter: Filter, aggregation: Aggregation, limit?: number): Promise<AggregateResult[]>;
24
+ /**
25
+ * Get the partition key field name in Forest Admin notation (with -> for nested paths)
26
+ * Converts Cosmos DB path like "/tenantId" or "/address/city" to "tenantId" or "address->city"
27
+ */
28
+ private getPartitionKeyFieldName;
24
29
  }
25
30
  //# sourceMappingURL=collection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,WAAW,EACX,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,EACN,MAAM,EACN,eAAe,EACf,UAAU,EACV,UAAU,EACX,MAAM,iCAAiC,CAAC;AAEzC,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAKhD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,cAAc;IAC1D;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAK;IAEvD,SAAS,CAAC,aAAa,EAAE,WAAW,CAAC;IAErC,OAAO,CAAC,cAAc,CAAiB;gBAGrC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY;IAmB5B;;;OAGG;IACI,kCAAkC,CAAC,qBAAqB,EAAE,MAAM,EAAE,GAAG,IAAI;IAgB1E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAkBjE,IAAI,CACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,UAAU,EAAE,CAAC;IAqElB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBxE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBrD,SAAS,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,EAAE,CAAC;CAyB9B"}
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,WAAW,EACX,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,EACN,MAAM,EACN,eAAe,EACf,UAAU,EACV,UAAU,EACX,MAAM,iCAAiC,CAAC;AAEzC,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAMhD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,cAAc;IAC1D;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAK;IAEvD,SAAS,CAAC,aAAa,EAAE,WAAW,CAAC;IAErC,OAAO,CAAC,cAAc,CAAiB;gBAGrC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY;IA6B5B;;;OAGG;IACI,kCAAkC,CAAC,qBAAqB,EAAE,MAAM,EAAE,GAAG,IAAI;IAgB1E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAkBjE,IAAI,CACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,UAAU,EAAE,CAAC;IA4ElB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BxE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BrD,SAAS,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,EAAE,CAAC;IAgC7B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;CAMjC"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
7
7
  const aggregation_converter_1 = __importDefault(require("./utils/aggregation-converter"));
8
8
  const model_to_collection_schema_converter_1 = __importDefault(require("./utils/model-to-collection-schema-converter"));
9
+ const partition_key_extractor_1 = require("./utils/partition-key-extractor");
9
10
  const query_converter_1 = __importDefault(require("./utils/query-converter"));
10
11
  class CosmosCollection extends datasource_toolkit_1.BaseCollection {
11
12
  constructor(datasource, model, logger, nativeDriver) {
@@ -13,8 +14,17 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
13
14
  throw new Error('Invalid (null) model instance.');
14
15
  super(model.name, datasource, nativeDriver);
15
16
  this.internalModel = model;
16
- this.queryConverter = new query_converter_1.default();
17
17
  const modelSchema = model_to_collection_schema_converter_1.default.convert(this.internalModel, logger);
18
+ // Extract schema field names for query validation
19
+ const schemaFields = Object.keys(modelSchema.fields);
20
+ // Initialize query converter with schema validation
21
+ this.queryConverter = new query_converter_1.default({
22
+ schemaFields,
23
+ validationOptions: {
24
+ // Allow unknown fields since schema might not include all nested paths
25
+ allowUnknownFields: true,
26
+ },
27
+ });
18
28
  if (this.internalModel.enableCount !== false)
19
29
  this.enableCount();
20
30
  this.addFields(modelSchema.fields);
@@ -78,9 +88,11 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
78
88
  }
79
89
  // Build query with projection to only fetch needed fields
80
90
  const querySpec = this.queryConverter.getSqlQuerySpec(filter.conditionTree, filteredSort, projection);
91
+ // Extract partition key from filter for single-partition query optimization
92
+ const partitionKey = (0, partition_key_extractor_1.extractPartitionKeyFromFilter)(filter.conditionTree, this.internalModel.getPartitionKeyPath());
81
93
  try {
82
- // Execute the query with pagination
83
- const recordsResponse = await this.internalModel.query(querySpec, filter.page?.skip, filter.page?.limit);
94
+ // Execute the query with pagination and partition key optimization
95
+ const recordsResponse = await this.internalModel.query(querySpec, filter.page?.skip, filter.page?.limit, partitionKey);
84
96
  return recordsResponse;
85
97
  }
86
98
  catch (error) {
@@ -102,13 +114,19 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
102
114
  }
103
115
  async update(caller, filter, patch) {
104
116
  try {
105
- // First, get the IDs of records to update
106
- const records = await this.list(caller, filter, new datasource_toolkit_1.Projection('id'));
107
- const ids = records.map(record => record.id);
108
- if (ids.length === 0) {
117
+ // Fetch id and partition key field for efficient point operations
118
+ const partitionKeyField = this.getPartitionKeyFieldName();
119
+ const projection = new datasource_toolkit_1.Projection('id', partitionKeyField);
120
+ const records = await this.list(caller, filter, projection);
121
+ if (records.length === 0) {
109
122
  return; // Nothing to update
110
123
  }
111
- await this.internalModel.update(ids, patch);
124
+ // Extract id and partition key pairs for point operations
125
+ const itemsWithPartitionKeys = records.map(record => ({
126
+ id: record.id,
127
+ partitionKey: record[partitionKeyField],
128
+ }));
129
+ await this.internalModel.update(itemsWithPartitionKeys, patch);
112
130
  }
113
131
  catch (error) {
114
132
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
@@ -121,13 +139,19 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
121
139
  }
122
140
  async delete(caller, filter) {
123
141
  try {
124
- // First, get the IDs of records to delete
125
- const records = await this.list(caller, filter, new datasource_toolkit_1.Projection('id'));
126
- const ids = records.map(record => record.id);
127
- if (ids.length === 0) {
142
+ // Fetch id and partition key field for efficient point operations
143
+ const partitionKeyField = this.getPartitionKeyFieldName();
144
+ const projection = new datasource_toolkit_1.Projection('id', partitionKeyField);
145
+ const records = await this.list(caller, filter, projection);
146
+ if (records.length === 0) {
128
147
  return; // Nothing to delete
129
148
  }
130
- await this.internalModel.delete(ids);
149
+ // Extract id and partition key pairs for point operations
150
+ const itemsWithPartitionKeys = records.map(record => ({
151
+ id: record.id,
152
+ partitionKey: record[partitionKeyField],
153
+ }));
154
+ await this.internalModel.delete(itemsWithPartitionKeys);
131
155
  }
132
156
  catch (error) {
133
157
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
@@ -142,8 +166,10 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
142
166
  try {
143
167
  // Build aggregation query
144
168
  const querySpec = aggregation_converter_1.default.buildAggregationQuery(aggregation, filter.conditionTree, limit);
145
- // Execute aggregation query
146
- const rawResults = await this.internalModel.aggregateQuery(querySpec);
169
+ // Extract partition key from filter for single-partition query optimization
170
+ const partitionKey = (0, partition_key_extractor_1.extractPartitionKeyFromFilter)(filter.conditionTree, this.internalModel.getPartitionKeyPath());
171
+ // Execute aggregation query with partition key optimization
172
+ const rawResults = await this.internalModel.aggregateQuery(querySpec, partitionKey);
147
173
  // Process results into Forest Admin format
148
174
  return aggregation_converter_1.default.processAggregationResults(rawResults, aggregation);
149
175
  }
@@ -156,6 +182,16 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
156
182
  throw wrappedError;
157
183
  }
158
184
  }
185
+ /**
186
+ * Get the partition key field name in Forest Admin notation (with -> for nested paths)
187
+ * Converts Cosmos DB path like "/tenantId" or "/address/city" to "tenantId" or "address->city"
188
+ */
189
+ getPartitionKeyFieldName() {
190
+ return this.internalModel
191
+ .getPartitionKeyPath()
192
+ .replace(/^\//, '') // Remove leading slash
193
+ .replace(/\//g, '->'); // Convert nested paths to arrow notation
194
+ }
159
195
  }
160
196
  /**
161
197
  * Maximum nesting depth for sortable fields
@@ -164,4 +200,4 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
164
200
  */
165
201
  CosmosCollection.MAX_SORTABLE_NESTING_DEPTH = 2;
166
202
  exports.default = CosmosCollection;
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esd0VBV3lDO0FBR3pDLDBGQUFpRTtBQUNqRSx3SEFBMEU7QUFDMUUsOEVBQXFEO0FBRXJELE1BQXFCLGdCQUFpQixTQUFRLG1DQUFjO0lBWTFELFlBQ0UsVUFBc0IsRUFDdEIsS0FBa0IsRUFDbEIsTUFBYyxFQUNkLFlBQTBCO1FBRTFCLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBRTlELEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUUzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUkseUJBQWMsRUFBRSxDQUFDO1FBRTNDLE1BQU0sV0FBVyxHQUFHLDhDQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFdkUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsS0FBSyxLQUFLO1lBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQ0FBa0MsQ0FBQyxxQkFBK0I7UUFDdkUsS0FBSyxNQUFNLFNBQVMsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1lBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENB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
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esd0VBV3lDO0FBR3pDLDBGQUFpRTtBQUNqRSx3SEFBMEU7QUFDMUUsNkVBQWdGO0FBQ2hGLDhFQUFxRDtBQUVyRCxNQUFxQixnQkFBaUIsU0FBUSxtQ0FBYztJQVkxRCxZQUNFLFVBQXNCLEVBQ3RCLEtBQWtCLEVBQ2xCLE1BQWMsRUFDZCxZQUEwQjtRQUUxQixJQUFJLENBQUMsS0FBSztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUU5RCxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFFM0IsTUFBTSxXQUFXLEdBQUcsOENBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV2RSxrREFBa0Q7UUFDbEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckQsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSx5QkFBYyxDQUFDO1lBQ3ZDLFlBQVk7WUFDWixpQkFBaUIsRUFBRTtnQkFDakIsdUVBQXVFO2dCQUN2RSxrQkFBa0IsRUFBRSxJQUFJO2FBQ3pCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsS0FBSyxLQUFLO1lBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZD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
package/dist/index.d.ts CHANGED
@@ -49,8 +49,16 @@ export { default as CosmosDataSource } from './datasource';
49
49
  export { default as ArrayCollection } from './array-collection';
50
50
  export { default as TypeConverter } from './utils/type-converter';
51
51
  export { default as ModelCosmos } from './model-builder/model';
52
+ export { configurePaginationCache, getSharedPaginationCache } from './model-builder/model';
53
+ export { configureRetryOptions, getSharedRetryOptions } from './model-builder/model';
54
+ export { default as PaginationCache } from './utils/pagination-cache';
55
+ export { withRetry, createRetryWrapper, isRateLimitError, isTransientError, } from './utils/retry-handler';
56
+ export { default as QueryValidator, QueryValidationError, QueryValidationErrorCode, } from './utils/query-validator';
52
57
  export type { CosmosSchema } from './model-builder/model';
53
58
  export type { VirtualArrayCollectionConfig } from './introspection/introspector';
59
+ export type { PaginationCacheOptions } from './utils/pagination-cache';
60
+ export type { QueryValidatorOptions } from './utils/query-validator';
61
+ export type { RetryOptions } from './utils/retry-handler';
54
62
  export type { CollectionDefinition, FieldDefinition, ManualSchemaConfig, } from './types/manual-schema';
55
63
  /**
56
64
  * Create a Cosmos DB datasource with an existing CosmosClient instance
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAU,MAAM,iCAAiC,CAAC;AAG5E,OAAO,EAAE,oBAAoB,EAA2B,MAAM,yBAAyB,CAAC;AACxF,OAAqB,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACjC;AAED,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AACjF,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wCAAwC,CACtD,MAAM,EAAE,YAAY,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,iBAAiB,CAqBnB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IACR,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,uBAAuB,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACzD,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,GACA,iBAAiB,CAqFnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAC/C,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IACR,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,GACA,iBAAiB,CAOnB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createCosmosDataSourceForEmulator = exports.createCosmosDataSource = exports.createCosmosDataSourceWithExistingClient = exports.ModelCosmos = exports.TypeConverter = exports.ArrayCollection = exports.CosmosDataSource = exports.CosmosCollection = void 0;
6
+ exports.createCosmosDataSourceForEmulator = exports.createCosmosDataSource = exports.createCosmosDataSourceWithExistingClient = exports.QueryValidationErrorCode = exports.QueryValidationError = exports.QueryValidator = exports.isTransientError = exports.isRateLimitError = exports.createRetryWrapper = exports.withRetry = exports.PaginationCache = exports.getSharedRetryOptions = exports.configureRetryOptions = exports.getSharedPaginationCache = exports.configurePaginationCache = exports.ModelCosmos = exports.TypeConverter = exports.ArrayCollection = exports.CosmosDataSource = exports.CosmosCollection = void 0;
7
7
  const cosmos_1 = require("@azure/cosmos");
8
8
  const datasource_1 = __importDefault(require("./datasource"));
9
9
  const builder_1 = require("./introspection/builder");
@@ -20,6 +20,23 @@ var type_converter_1 = require("./utils/type-converter");
20
20
  Object.defineProperty(exports, "TypeConverter", { enumerable: true, get: function () { return __importDefault(type_converter_1).default; } });
21
21
  var model_1 = require("./model-builder/model");
22
22
  Object.defineProperty(exports, "ModelCosmos", { enumerable: true, get: function () { return __importDefault(model_1).default; } });
23
+ var model_2 = require("./model-builder/model");
24
+ Object.defineProperty(exports, "configurePaginationCache", { enumerable: true, get: function () { return model_2.configurePaginationCache; } });
25
+ Object.defineProperty(exports, "getSharedPaginationCache", { enumerable: true, get: function () { return model_2.getSharedPaginationCache; } });
26
+ var model_3 = require("./model-builder/model");
27
+ Object.defineProperty(exports, "configureRetryOptions", { enumerable: true, get: function () { return model_3.configureRetryOptions; } });
28
+ Object.defineProperty(exports, "getSharedRetryOptions", { enumerable: true, get: function () { return model_3.getSharedRetryOptions; } });
29
+ var pagination_cache_1 = require("./utils/pagination-cache");
30
+ Object.defineProperty(exports, "PaginationCache", { enumerable: true, get: function () { return __importDefault(pagination_cache_1).default; } });
31
+ var retry_handler_1 = require("./utils/retry-handler");
32
+ Object.defineProperty(exports, "withRetry", { enumerable: true, get: function () { return retry_handler_1.withRetry; } });
33
+ Object.defineProperty(exports, "createRetryWrapper", { enumerable: true, get: function () { return retry_handler_1.createRetryWrapper; } });
34
+ Object.defineProperty(exports, "isRateLimitError", { enumerable: true, get: function () { return retry_handler_1.isRateLimitError; } });
35
+ Object.defineProperty(exports, "isTransientError", { enumerable: true, get: function () { return retry_handler_1.isTransientError; } });
36
+ var query_validator_1 = require("./utils/query-validator");
37
+ Object.defineProperty(exports, "QueryValidator", { enumerable: true, get: function () { return __importDefault(query_validator_1).default; } });
38
+ Object.defineProperty(exports, "QueryValidationError", { enumerable: true, get: function () { return query_validator_1.QueryValidationError; } });
39
+ Object.defineProperty(exports, "QueryValidationErrorCode", { enumerable: true, get: function () { return query_validator_1.QueryValidationErrorCode; } });
23
40
  /**
24
41
  * Create a Cosmos DB datasource with an existing CosmosClient instance
25
42
  * @param client Existing CosmosClient instance
@@ -150,4 +167,4 @@ function createCosmosDataSourceForEmulator(databaseName, options) {
150
167
  return createCosmosDataSource(endpoint, key, databaseName, options);
151
168
  }
152
169
  exports.createCosmosDataSourceForEmulator = createCosmosDataSourceForEmulator;
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMENBQWtFO0FBR2xFLDhEQUE0QztBQUM1QyxxREFBd0Y7QUFDeEYsZ0ZBQTBGO0FBRTFGLDZFQUE4RTtBQUM5RSw4RkFBb0U7QUE4Q3BFLDJDQUEyRDtBQUFsRCwrSEFBQSxPQUFPLE9BQW9CO0FBQ3BDLDJDQUEyRDtBQUFsRCwrSEFBQSxPQUFPLE9BQW9CO0FBQ3BDLHVEQUFnRTtBQUF2RCxvSUFBQSxPQUFPLE9BQW1CO0FBQ25DLHlEQUFrRTtBQUF6RCxnSUFBQSxPQUFPLE9BQWlCO0FBQ2pDLCtDQUErRDtBQUF0RCxxSEFBQSxPQUFPLE9BQWU7QUFTL0I7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsU0FBZ0Isd0NBQXdDLENBQ3RELE1BQW9CLEVBQ3BCLFlBQXFCLEVBQ3JCLE9BQThCO0lBRTlCLE9BQU8sS0FBSyxFQUFFLE1BQWMsRUFBRSxFQUFFO1FBQzlCLElBQUksZ0JBQWdCLENBQUM7UUFFckIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLGlDQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUE0QixDQUFDO1lBQ3hGLGdCQUFnQixHQUFHLE1BQU0sT0FBTyxDQUFDLGtDQUFrQyxFQUFFLENBQUM7UUFDeEUsQ0FBQzthQUFNLElBQUksWUFBWSxFQUFFLENBQUM7WUFDeEIsZ0JBQWdCLEdBQUcsTUFBTSxzQkFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pGLENBQUM7YUFBTSxDQUFDO1lBQ04sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFFRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5QyxNQUFNLE9BQU8sR0FD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
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMENBQWtFO0FBR2xFLDhEQUE0QztBQUM1QyxxREFBd0Y7QUFDeEYsZ0ZBQTBGO0FBRTFGLDZFQUE4RTtBQUM5RSw4RkFBb0U7QUE4Q3BFLDJDQUEyRDtBQUFsRCwrSEFBQSxPQUFPLE9BQW9CO0FBQ3BDLDJDQUEyRDtBQUFsRCwrSEFBQSxPQUFPLE9BQW9CO0FBQ3BDLHVEQUFnRTtBQUF2RCxvSUFBQSxPQUFPLE9BQW1CO0FBQ25DLHlEQUFrRTtBQUF6RCxnSUFBQSxPQUFPLE9BQWlCO0FBQ2pDLCtDQUErRDtBQUF0RCxxSEFBQSxPQUFPLE9BQWU7QUFDL0IsK0NBQTJGO0FBQWxGLGlIQUFBLHdCQUF3QixPQUFBO0FBQUUsaUhBQUEsd0JBQXdCLE9BQUE7QUFDM0QsK0NBQXFGO0FBQTVFLDhHQUFBLHFCQUFxQixPQUFBO0FBQUUsOEdBQUEscUJBQXFCLE9BQUE7QUFDckQsNkRBQXNFO0FBQTdELG9JQUFBLE9BQU8sT0FBbUI7QUFDbkMsdURBSytCO0FBSjdCLDBHQUFBLFNBQVMsT0FBQTtBQUNULG1IQUFBLGtCQUFrQixPQUFBO0FBQ2xCLGlIQUFBLGdCQUFnQixPQUFBO0FBQ2hCLGlIQUFBLGdCQUFnQixPQUFBO0FBRWxCLDJEQUlpQztBQUgvQixrSUFBQSxPQUFPLE9BQWtCO0FBQ3pCLHVIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDJIQUFBLHdCQUF3QixPQUFBO0FBYTFCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFNBQWdCLHdDQUF3QyxDQUN0RCxNQUFvQixFQUNwQixZQUFxQixFQUNyQixPQUE4QjtJQUU5QixPQUFPLEtBQUssRUFBRSxNQUFjLEVBQUUsRUFBRTtRQUM5QixJQUFJLGdCQUFnQixDQUFDO1FBRXJCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxpQ0FBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBNEIsQ0FBQztZQUN4RixnQkFBZ0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1FBQ3hFLENBQUM7YUFBTSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ3hCLGdCQUFnQixHQUFHLE1BQU0sc0JBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRixDQUFDO2FBQU0sQ0FBQztZQUNOLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN4QixDQUFDO1FBRUQsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUMsTUFBTSxPQUFPLEdBQ1gscUZBQXFGLENBQUM7WUFDeEYsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCxPQUFPLElBQUksb0JBQWdCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hFLENBQUMsQ0FBQztBQUNKLENBQUM7QUF6QkQsNEZBeUJDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQ3BDLFFBQWdCLEVBQ2hCLEdBQVcsRUFDWCxZQUFxQixFQUNyQixPQW1CQztJQUVELE9BQU8sS0FBSyxFQUFFLE1BQWMsRUFBRSxFQUFFO1FBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUkscUJBQVksQ0FBQztZQUM5QixRQUFRO1lBQ1IsR0FBRztZQUNILEdBQUcsT0FBTyxFQUFFLGFBQWE7U0FDMUIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxFQUNKLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsT0FBTyxFQUNQLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLE1BQU0sR0FDUCxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFbEIsc0NBQXNDO1FBQ3RDLE1BQU0sd0JBQXdCLEdBQXdCO1lBQ3BELFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLElBQUksR0FBRztZQUNsRCxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsWUFBWTtZQUMvQyxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxJQUFJLE1BQU07U0FDOUQsQ0FBQztRQUVGLElBQUksZ0JBQWdCLENBQUM7UUFFckIscUNBQXFDO1FBQ3JDLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1osTUFBTSxJQUFJLEtBQUssQ0FDYiw2RUFBNkU7b0JBQzNFLDZCQUE2QixDQUNoQyxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSw0REFBNEQsQ0FBQyxDQUFDO1lBQy9FLGdCQUFnQixHQUFHLE1BQU0sSUFBQSxxREFBMkIsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM3RixDQUFDO2FBQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNuQixNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FDL0IsSUFBSSxpQ0FBdUIsQ0FBQyxNQUFNLENBQUMsQ0FDVCxDQUFDO1lBRTdCLGdCQUFnQixHQUFHLE1BQU0saUJBQWlCLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztRQUNsRixDQUFDO2FBQU0sSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN4QixnQkFBZ0IsR0FBRyxNQUFNLHNCQUFZLENBQUMsVUFBVSxDQUM5QyxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFDTix3QkFBd0IsQ0FBQyxVQUFVLEVBQ25DLHdCQUF3QixDQUFDLFlBQVksRUFDckMsd0JBQXdCLENBQUMsY0FBYyxDQUN4QyxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDdkUsTUFBTSxPQUFPLEdBQ1gscUZBQXFGLENBQUM7WUFDeEYsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLG9CQUFnQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUU7WUFDeEUsb0JBQW9CO1lBQ3BCLGlCQUFpQjtTQUNsQixDQUFDLENBQUM7UUFFSCw2Q0FBNkM7UUFDN0MsSUFBSSx1QkFBdUIsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEUsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLG9DQUF3QixDQUMzRCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLENBQ1AsQ0FBQztZQUVGLE1BQU0sd0JBQXdCLENBQUMsd0JBQXdCLENBQ3JELHVCQUF1QixFQUN2Qix3QkFBd0IsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUMzQyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUMsQ0FBQztBQUNKLENBQUM7QUE3R0Qsd0RBNkdDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILFNBQWdCLGlDQUFpQyxDQUMvQyxZQUFxQixFQUNyQixPQVFDO0lBRUQsc0NBQXNDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLHdCQUF3QixDQUFDO0lBQzFDLE1BQU0sR0FBRyxHQUNQLDBGQUEwRixDQUFDO0lBRTdGLE9BQU8sc0JBQXNCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQWxCRCw4RUFrQkMifQ==
@@ -1,6 +1,9 @@
1
1
  import { Container, CosmosClient, SqlQuerySpec } from '@azure/cosmos';
2
2
  import { RecordData } from '@forestadmin/datasource-toolkit';
3
3
  import { OverrideTypeConverter } from '../introspection/builder';
4
+ import PaginationCache, { PaginationCacheOptions } from '../utils/pagination-cache';
5
+ import { RetryOptions, configureRetryOptions, getSharedRetryOptions } from '../utils/retry-handler';
6
+ export { RetryOptions, configureRetryOptions, getSharedRetryOptions };
4
7
  export interface CosmosSchema {
5
8
  [key: string]: {
6
9
  type: string;
@@ -8,6 +11,21 @@ export interface CosmosSchema {
8
11
  indexed?: boolean;
9
12
  };
10
13
  }
14
+ export interface ItemWithPartitionKey {
15
+ id: string;
16
+ partitionKey: string | number;
17
+ }
18
+ /**
19
+ * Get or create the shared pagination cache instance
20
+ * @param options Optional configuration options (only used on first call)
21
+ */
22
+ export declare function getSharedPaginationCache(options?: PaginationCacheOptions): PaginationCache;
23
+ /**
24
+ * Configure the shared pagination cache with custom options
25
+ * Must be called before any queries are made
26
+ * @param options Pagination cache configuration
27
+ */
28
+ export declare function configurePaginationCache(options: PaginationCacheOptions): void;
11
29
  export default class ModelCosmos {
12
30
  name: string;
13
31
  /**
@@ -34,24 +52,29 @@ export default class ModelCosmos {
34
52
  * Container reference for direct operations
35
53
  */
36
54
  private container;
55
+ /**
56
+ * Pagination cache for efficient cursor-based pagination
57
+ */
58
+ private paginationCache;
59
+ /**
60
+ * Retry options for handling rate limiting (429 errors)
61
+ */
62
+ private retryOptions;
37
63
  overrideTypeConverter?: OverrideTypeConverter;
38
64
  enableCount?: boolean;
39
65
  constructor(cosmosClient: CosmosClient, name: string, databaseName: string, containerName: string, partitionKeyPath: string, schema: CosmosSchema, overrideTypeConverter?: OverrideTypeConverter, enableCount?: boolean);
40
66
  getCosmosClient(): CosmosClient;
41
67
  create(data: RecordData[]): Promise<RecordData[]>;
42
- update(ids: string[], patch: RecordData): Promise<void>;
43
- delete(ids: string[]): Promise<void>;
44
- query(querySpec: SqlQuerySpec, offset?: number, limit?: number): Promise<RecordData[]>;
45
- aggregateQuery(querySpec: SqlQuerySpec): Promise<RecordData[]>;
46
- count(querySpec?: SqlQuerySpec): Promise<number>;
47
- /**
48
- * Get items by their IDs (requires scanning as we don't have partition keys)
49
- */
50
- private getItemsByIds;
68
+ update(items: ItemWithPartitionKey[], patch: RecordData): Promise<void>;
69
+ delete(items: ItemWithPartitionKey[]): Promise<void>;
70
+ query(querySpec: SqlQuerySpec, offset?: number, limit?: number, partitionKey?: string | number): Promise<RecordData[]>;
71
+ aggregateQuery(querySpec: SqlQuerySpec, partitionKey?: string | number): Promise<RecordData[]>;
72
+ count(querySpec?: SqlQuerySpec, partitionKey?: string | number): Promise<number>;
51
73
  /**
52
- * Extract the partition key value from an item
74
+ * Convert a SELECT query to a COUNT query
75
+ * Extracts the WHERE clause and creates a COUNT query with the same filters
53
76
  */
54
- private getPartitionKeyValue;
77
+ private convertToCountQuery;
55
78
  /**
56
79
  * Generate a unique ID for new items
57
80
  */
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model-builder/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAkB,YAAY,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,MAAM,CAAC,OAAO,OAAO,WAAW;IACvB,IAAI,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,YAAY,CAAS;IAE7B;;OAEG;IACH,OAAO,CAAC,aAAa,CAAS;IAE9B;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAS;IAEjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAe;IAE7B;;OAEG;IACH,OAAO,CAAC,YAAY,CAAe;IAEnC;;OAEG;IACH,OAAO,CAAC,SAAS,CAAY;IAEtB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C,WAAW,CAAC,EAAE,OAAO,CAAC;gBAG3B,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,YAAY,EACpB,qBAAqB,CAAC,EAAE,qBAAqB,EAC7C,WAAW,CAAC,EAAE,OAAO;IAchB,eAAe,IAAI,YAAY;IAIzB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAiCjD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBvD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpC,KAAK,CAChB,SAAS,EAAE,YAAY,EACvB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,EAAE,CAAC;IA6CX,cAAc,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAM9D,KAAK,CAAC,SAAS,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB7D;;OAEG;YACW,aAAa;IAgB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACI,aAAa,IAAI,YAAY;IAIpC;;OAEG;IACI,YAAY,IAAI,SAAS;IAIhC;;OAEG;IACI,mBAAmB,IAAI,MAAM;IAIpC;;OAEG;IACI,eAAe,IAAI,MAAM;IAIhC;;OAEG;IACI,gBAAgB,IAAI,MAAM;CAGlC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model-builder/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAkB,YAAY,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,eAAe,EAAE,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EAEtB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B;AAQD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,eAAe,CAM1F;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAE9E;AAED,MAAM,CAAC,OAAO,OAAO,WAAW;IACvB,IAAI,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,YAAY,CAAS;IAE7B;;OAEG;IACH,OAAO,CAAC,aAAa,CAAS;IAE9B;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAS;IAEjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAe;IAE7B;;OAEG;IACH,OAAO,CAAC,YAAY,CAAe;IAEnC;;OAEG;IACH,OAAO,CAAC,SAAS,CAAY;IAE7B;;OAEG;IACH,OAAO,CAAC,eAAe,CAAkB;IAEzC;;OAEG;IACH,OAAO,CAAC,YAAY,CAAe;IAE5B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C,WAAW,CAAC,EAAE,OAAO,CAAC;gBAG3B,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,YAAY,EACpB,qBAAqB,CAAC,EAAE,qBAAqB,EAC7C,WAAW,CAAC,EAAE,OAAO;IAgBhB,eAAe,IAAI,YAAY;IAIzB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAoCjD,MAAM,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BvE,MAAM,CAAC,KAAK,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASpD,KAAK,CAChB,SAAS,EAAE,YAAY,EACvB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAC7B,OAAO,CAAC,UAAU,EAAE,CAAC;IAsHX,cAAc,CACzB,SAAS,EAAE,YAAY,EACvB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAC7B,OAAO,CAAC,UAAU,EAAE,CAAC;IAgBX,KAAK,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+B7F;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACI,aAAa,IAAI,YAAY;IAIpC;;OAEG;IACI,YAAY,IAAI,SAAS;IAIhC;;OAEG;IACI,mBAAmB,IAAI,MAAM;IAIpC;;OAEG;IACI,eAAe,IAAI,MAAM;IAIhC;;OAEG;IACI,gBAAgB,IAAI,MAAM;CAGlC"}