@itwin/imodel-transformer 2.0.0-dev.42 → 2.0.0-dev.44
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/README.md +1 -1
- package/lib/cjs/IModelExporter.d.ts +5 -0
- package/lib/cjs/IModelExporter.d.ts.map +1 -1
- package/lib/cjs/IModelExporter.js +20 -17
- package/lib/cjs/IModelExporter.js.map +1 -1
- package/lib/cjs/IModelTransformer.d.ts +9 -11
- package/lib/cjs/IModelTransformer.d.ts.map +1 -1
- package/lib/cjs/IModelTransformer.js +19 -64
- package/lib/cjs/IModelTransformer.js.map +1 -1
- package/lib/cjs/IModelTransformerError.d.ts +4 -0
- package/lib/cjs/IModelTransformerError.d.ts.map +1 -1
- package/lib/cjs/IModelTransformerError.js +4 -0
- package/lib/cjs/IModelTransformerError.js.map +1 -1
- package/lib/cjs/imodel-transformer.d.ts +1 -0
- package/lib/cjs/imodel-transformer.d.ts.map +1 -1
- package/lib/cjs/imodel-transformer.js +1 -0
- package/lib/cjs/imodel-transformer.js.map +1 -1
- package/lib/cjs/schema-processing/DynamicSchemaUnionStrategy.d.ts +29 -0
- package/lib/cjs/schema-processing/DynamicSchemaUnionStrategy.d.ts.map +1 -0
- package/lib/cjs/schema-processing/DynamicSchemaUnionStrategy.js +212 -0
- package/lib/cjs/schema-processing/DynamicSchemaUnionStrategy.js.map +1 -0
- package/lib/cjs/schema-processing/SchemaProcessingCoordinator.d.ts +25 -0
- package/lib/cjs/schema-processing/SchemaProcessingCoordinator.d.ts.map +1 -0
- package/lib/cjs/schema-processing/SchemaProcessingCoordinator.js +163 -0
- package/lib/cjs/schema-processing/SchemaProcessingCoordinator.js.map +1 -0
- package/lib/cjs/schema-processing/SchemaProcessingStrategy.d.ts +59 -0
- package/lib/cjs/schema-processing/SchemaProcessingStrategy.d.ts.map +1 -0
- package/lib/cjs/schema-processing/SchemaProcessingStrategy.js +28 -0
- package/lib/cjs/schema-processing/SchemaProcessingStrategy.js.map +1 -0
- package/lib/cjs/schema-processing.d.ts +7 -0
- package/lib/cjs/schema-processing.d.ts.map +1 -0
- package/lib/cjs/schema-processing.js +27 -0
- package/lib/cjs/schema-processing.js.map +1 -0
- package/package.json +37 -4
|
@@ -7,6 +7,7 @@ import { ChangedInstanceIds, ExportChangesOptions, ExportSchemaResult, IModelExp
|
|
|
7
7
|
import { IModelImporter, OptimizeGeometryOptions } from "./IModelImporter";
|
|
8
8
|
import type { IModelTransformContext } from "./IModelTransformContext";
|
|
9
9
|
import { ProvenanceManager } from "./ProvenanceManager";
|
|
10
|
+
import { ProcessSchemasOptions } from "./schema-processing/SchemaProcessingStrategy";
|
|
10
11
|
/** Required arguments for the [[IModelTransformer]] constructor.
|
|
11
12
|
* @beta
|
|
12
13
|
*/
|
|
@@ -219,6 +220,7 @@ export interface RelationshipPropsForDelete {
|
|
|
219
220
|
export declare class IModelTransformer extends IModelExportHandler {
|
|
220
221
|
/** The IModelExporter that will export from the source iModel. */
|
|
221
222
|
readonly exporter: IModelExporter;
|
|
223
|
+
private readonly _schemaProcessingCoordinator;
|
|
222
224
|
/** The IModelImporter that will import into the target iModel. */
|
|
223
225
|
readonly importer: IModelImporter;
|
|
224
226
|
/** The normally read-only source iModel.
|
|
@@ -483,22 +485,18 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
483
485
|
* @note the default behavior doesn't import schemas older than those already in the target
|
|
484
486
|
*/
|
|
485
487
|
shouldExportSchema(schemaKey: ECSchemaMetaData.SchemaKey): Promise<boolean>;
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
*
|
|
489
|
-
* @returns {Promise<ExportSchemaResult>} Although the type is possibly void for backwards compatibility of subclasses,
|
|
490
|
-
* `IModelTransformer.onExportSchema` always returns an[[IModelExportHandler.ExportSchemaResult]]
|
|
491
|
-
* with a defined `schemaPath` property, for subclasses to know where the schema was written.
|
|
492
|
-
* Schemas are *not* guaranteed to be written to [[IModelTransformer._schemaExportDir]] by a
|
|
493
|
-
* known pattern derivable from the schema's name, so you must use this to find it.
|
|
488
|
+
/** Serialize a source schema to the temporary directory used by [[processSchemas]].
|
|
489
|
+
* @returns A path to the serialized schema file.
|
|
490
|
+
* @note The file name is not derived reliably from the schema name. Use the returned path when a subclass calls `super`.
|
|
494
491
|
*/
|
|
495
492
|
onExportSchema(schema: ECSchemaMetaData.Schema): Promise<void | ExportSchemaResult>;
|
|
496
|
-
|
|
497
|
-
|
|
493
|
+
/** Process source schemas and import selected or generated definitions into the target iModel.
|
|
494
|
+
* @param options Selects the schema processing strategy.
|
|
495
|
+
* @note When no strategy is supplied, [[NewerVersionSchemaImportStrategy]] is used.
|
|
498
496
|
* @note For performance reasons, it is recommended that [IModelDb.saveChanges]($backend) be called after `processSchemas` is complete.
|
|
499
497
|
* It is more efficient to process *data* changes after the schema changes have been saved.
|
|
500
498
|
*/
|
|
501
|
-
processSchemas(): Promise<void>;
|
|
499
|
+
processSchemas(options?: ProcessSchemasOptions): Promise<void>;
|
|
502
500
|
/** Cause all fonts to be exported from the source iModel and imported into the target iModel.
|
|
503
501
|
* @note This method is called from [[process]], so it only needs to be called directly when processing a subset of an iModel.
|
|
504
502
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../../src/IModelTransformer.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,SAAS,EACT,OAAO,EACP,UAAU,EAMX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,gBAAgB,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAKL,SAAS,EAEV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,
|
|
1
|
+
{"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../../src/IModelTransformer.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,SAAS,EACT,OAAO,EACP,UAAU,EAMX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,gBAAgB,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAKL,SAAS,EAEV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EASL,OAAO,EAEP,OAAO,EACP,aAAa,EACb,kBAAkB,EAElB,mBAAmB,EACnB,MAAM,EAEN,oBAAoB,EAGpB,QAAQ,EAIR,KAAK,EAEL,YAAY,EACZ,iBAAiB,EAGlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,mBAAmB,EAGnB,QAAQ,EAGR,kBAAkB,EAClB,YAAY,EAEZ,yBAAyB,EACzB,SAAS,EAGT,oBAAoB,EAGpB,UAAU,EACV,WAAW,EACX,WAAW,EAIZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EAEpB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAG3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAEL,qBAAqB,EACtB,MAAM,8CAA8C,CAAC;AActD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,MAAM,EAAE,QAAQ,GAAG,cAAc,CAAC;IAClC,uKAAuK;IACvK,MAAM,EAAE,OAAO,GAAG,cAAc,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAElC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;OAIG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IAExC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;;;;OASG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;;;;;;OAQG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAEzC;;;;;;;;;;;OAWG;IACH,0BAA0B,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAEjD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAE3C;;;;;OAKG;IACH,mCAAmC,CAAC,EAAE,OAAO,CAAC;IAE9C;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;;OAOG;IACH,8BAA8B,CAAC,EAAE,gBAAgB,GAAG,QAAQ,CAAC;IAE7D;;;;OAIG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAE7C;;;OAGG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,kCAAkC,EAAE,MAAM,EAAE,CAAC;IAC7C;;;;OAIG;IACH,2BAA2B,EAAE,MAAM,EAAE,CAAC;IACtC,8DAA8D;IAC9D,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AA2CD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,cAAc,CAAC,EAAE;QACf,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,6HAA6H;IAC7H,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;OAKG;IACH,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C;;;;;OAKG;IACH,yCAAyC,CAAC,EAAE,OAAO,CAAC;CACrD,CAAC;AAQF;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,UAAU,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,kEAAkE;IAClE,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA8B;IAC3E,kEAAkE;IAClE,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC;;OAEG;IACH,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,oCAAoC;IACpC,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,iEAAiE;IACjE,IAAW,OAAO,IAAI,sBAAsB,CAE3C;IAED,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB,CAAC,CAAY;IAC5C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IAC3C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAC5C,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,SAAS,CAAC,kBAAkB,EAAG,iBAAiB,CAAC;IAEjD,qKAAqK;IACrK,IAAW,oBAAoB,IAAI,UAAU,CAE5C;IAED,wGAAwG;IACxG,SAAS,CAAC,wCAAwC,cAAyB;IAE3E,SAAS,CAAC,6BAA6B,EAAE,OAAO,CAAyB;IACzE,SAAS,CAAC,4BAA4B,EAAE,OAAO,CAAyB;IAExE;;;;;OAKG;IACH,OAAO,CAAC,+BAA+B,CAAkC;IAEzE;;;;OAIG;IACH,OAAO,CAAC,uCAAuC,CACvB;IAExB,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGvB;IACF,OAAO,CAAC,gBAAgB,CAA6C;IAErE;;;OAGG;IACH,OAAO,CAAC,0BAA0B,CAAC,CAAU;IAE7C,iFAAiF;IACjF,WAAkB,wBAAwB,IAAI,CAAC,OAAO,MAAM,CAAC,EAAE,CAE9D;IAED,wFAAwF;IACxF,WAAkB,8BAA8B,IAAI,CAAC,OAAO,MAAM,CAAC,EAAE,CAEpE;IAED;;;OAGG;gBAED,IAAI,EAAE,mBAAmB,EACzB,OAAO,CAAC,EAAE,sBAAsB;IAgIlC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA6BlC,2EAA2E;IACpE,OAAO,IAAI,IAAI;IAKtB,qEAAqE;IACrE,OAAO,CAAC,WAAW;IAqDnB;;;;;OAKG;IACH,OAAO,CAAC,qCAAqC,CAAS;IAEtD,mHAAmH;IACtG,qBAAqB,CAChC,eAAe,EAAE,UAAU,EAC3B,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,yBAAyB,CAAC;IAOrC;;;;;;OAMG;cACa,yBAAyB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIzE;;;OAGG;cACa,2BAA2B,IAAI,OAAO,CACpD,oBAAoB,GAAG,SAAS,CACjC;IAID;;;OAGG;cACa,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpD;;;OAGG;IACU,eAAe,IAAI,OAAO,CAAC,QAAQ,CAAC;IAMjD;;OAEG;IACU,2BAA2B,IAAI,OAAO,CAAC,OAAO,CAAC;IAI5D;;OAEG;IACU,2BAA2B,IAAI,OAAO,CAAC,OAAO,CAAC;IAI5D;;OAEG;IACU,4BAA4B,CAAC,EACxC,4BAAoC,GACrC;;KAAK;IAON;;;OAGG;cACa,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvD;;;;;OAKG;IACU,kBAAkB,CAC7B,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,YAAY,CAAC;IAsDxB;;;;;;OAMG;IACI,sBAAsB,IAAI,SAAS,GAAG,SAAS;WAuCxC,yBAAyB,CACrC,OAAO,EAAE,oBAAoB,GAAG,SAAS,GACxC,SAAS;IAoBL,uCAAuC,IAAI,SAAS,GAAG,SAAS;IAmGvE,OAAO,CAAC,8BAA8B,CAAC,CASzB;IAEd;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO;cAS5C,kCAAkC;cAmBlC,iCAAiC;YAkBnC,4BAA4B;YAgC5B,6BAA6B;IAuB3C;;;OAGG;IACU,cAAc,CAAC,eAAe,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvE;;;OAGG;IACU,oBAAoB,CAC/B,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,IAAI,CAAC;YAOF,0BAA0B;IAMxC;;OAEG;IACmB,mBAAmB,CACvC,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,OAAO,CAAC;IAInB;;;OAGG;IACmB,gBAAgB,CACpC,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC;YAmEF,qBAAqB;YAsBrB,oBAAoB;IAkClC;;OAEG;IACmB,eAAe,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA6J5E;;OAEG;IACmB,eAAe,CACnC,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,IAAI,CAAC;IAYhB;;OAEG;IACmB,aAAa,CAAC,WAAW,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BtE,iMAAiM;IAC3K,aAAa,CACjC,aAAa,EAAE,UAAU,GACxB,OAAO,CAAC,IAAI,CAAC;IA+DhB,0CAA0C;IAC1C,OAAO,CAAC,gCAAgC;IAQxC;;;OAGG;IACU,YAAY,CAAC,sBAAsB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5E;;;;;OAKG;IACU,oBAAoB,CAC/B,aAAa,EAAE,UAAU,EACzB,aAAa,EAAE,UAAU,EACzB,oBAAoB,GAAE,MAA8B,GACnD,OAAO,CAAC,IAAI,CAAC;IAShB,0JAA0J;YAC5I,uBAAuB;IAwCrC;;;;;OAKG;IACI,gBAAgB,CACrB,WAAW,EAAE,KAAK,EAClB,sBAAsB,EAAE,UAAU,GACjC,UAAU;YAwBC,sBAAsB;IAqBpC;;;OAGG;IACU,oBAAoB,CAC/B,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,IAAI,CAAC;IAKhB;;OAEG;IACmB,wBAAwB,CAC5C,mBAAmB,EAAE,YAAY,GAChC,OAAO,CAAC,OAAO,CAAC;IAInB;;OAEG;IACmB,oBAAoB,CACxC,kBAAkB,EAAE,YAAY,GAC/B,OAAO,CAAC,IAAI,CAAC;IA6ChB;;OAEG;IACmB,oBAAoB,CACxC,mBAAmB,EAAE,UAAU,GAC9B,OAAO,CAAC,IAAI,CAAC;IA2ChB,OAAO,CAAC,aAAa,CAAsB;IAE3C;;;;OAIG;IACH,SAAS,CAAC,uBAAuB,CAC/B,kBAAkB,EAAE,YAAY,GAC/B,iBAAiB;IA+BE,yBAAyB,CAC7C,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,OAAO,CAAC;YAML,qBAAqB;IAuBnC;;OAEG;IACmB,2BAA2B,CAC/C,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,IAAI,CAAC;IAUhB;;;OAGG;IACmB,2BAA2B,CAC/C,aAAa,EAAE,kBAAkB,EAAE,GAClC,OAAO,CAAC,IAAI,CAAC;IA4BhB;;;;OAIG;cACa,wBAAwB,CACtC,mBAAmB,EAAE,aAAa,GACjC,OAAO,CAAC,kBAAkB,CAAC;IAM9B,iFAAiF;IACjF,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAGhC;IAEF;;OAEG;IACmB,kBAAkB,CACtC,SAAS,EAAE,gBAAgB,CAAC,SAAS,GACpC,OAAO,CAAC,OAAO,CAAC;IASnB;;;OAGG;IACmB,cAAc,CAClC,MAAM,EAAE,gBAAgB,CAAC,MAAM,GAC9B,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAC;IAIrC;;;;;OAKG;IACU,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3E;;OAEG;IACU,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1C,0JAA0J;IACpI,YAAY,CAChC,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,OAAO,GAAG,SAAS,GAC7B,OAAO,CAAC,IAAI,CAAC;IAIhB;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9C;;OAEG;IACU,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE;;OAEG;IACmB,oBAAoB,CACxC,eAAe,EAAE,QAAQ,GACxB,OAAO,CAAC,OAAO,CAAC;IAInB,kKAAkK;IAC5I,gBAAgB,CACpC,cAAc,EAAE,QAAQ,GACvB,OAAO,CAAC,IAAI,CAAC;IAIhB,6FAA6F;IAChF,cAAc,CACzB,eAAe,EAAE,UAAU,EAC3B,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,IAAI,CAAC;IAahB,6DAA6D;IAC7D,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,sBAAsB,CAA+B;IAC7D,6GAA6G;IAC7G,OAAO,CAAC,YAAY,CAAC,CAAmC;IACxD,OAAO,CAAC,2BAA2B,CAAC,CAAsC;IAE1E;;;;;OAKG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAoB1B,kCAAkC;IAiChD;;;;;OAKG;YACW,iBAAiB;IA8F/B;;;;;;;OAOG;cACa,gBAAgB,CAC9B,gBAAgB,EAAE,kBAAkB,GACnC,OAAO,CAAC,IAAI,CAAC;IAEhB;;;;;;;;;OASG;YACW,gBAAgB;YAyJhB,qBAAqB;IAwFnC,sEAAsE;IACtE,OAAO,CAAC,mBAAmB;IAuB3B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC;;OAEG;YACW,UAAU;IA6CxB;;;;;;;;OAQG;YACW,cAAc;IAqB5B;;OAEG;YACW,iBAAiB;IA8B/B;;;;OAIG;IACI,eAAe,CACpB,gBAAgB,EAAE,SAAS,EAC3B,eAAe,EAAE,UAAU;CAO9B;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,8CAA8C;IAC9C,OAAO,CAAC,YAAY,CAAC,CAAY;IACjC,gIAAgI;IAChI,OAAO,CAAC,sBAAsB,CAAC,CAA8B;IAC7D;;;OAGG;gBACgB,OAAO,EAAE,OAAO;IAMnC;;;;;;OAMG;IACU,eAAe,CAC1B,qBAAqB,EAAE,UAAU,EACjC,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,WAAW,GACrB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAkBvC;;;;;;OAMG;IACU,eAAe,CAC1B,qBAAqB,EAAE,UAAU,EACjC,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,WAAW,GACrB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAkBvC,4EAA4E;IACtD,kBAAkB,CACtC,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,YAAY,CAAC;CA6DzB"}
|
|
@@ -24,6 +24,8 @@ const EntityUnifier_1 = require("./EntityUnifier");
|
|
|
24
24
|
const Algo_1 = require("./Algo");
|
|
25
25
|
const SyncTypeResolver_1 = require("./SyncTypeResolver");
|
|
26
26
|
const ProvenanceManager_1 = require("./ProvenanceManager");
|
|
27
|
+
const SchemaProcessingStrategy_1 = require("./schema-processing/SchemaProcessingStrategy");
|
|
28
|
+
const SchemaProcessingCoordinator_1 = require("./schema-processing/SchemaProcessingCoordinator");
|
|
27
29
|
const ChangesetScanner_1 = require("./ChangesetScanner");
|
|
28
30
|
const IModelTransformerError_1 = require("./IModelTransformerError");
|
|
29
31
|
const loggerCategory = TransformerLoggerCategory_1.TransformerLoggerCategory.IModelTransformer;
|
|
@@ -72,6 +74,7 @@ function mapId64(idContainer, func) {
|
|
|
72
74
|
class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
73
75
|
/** The IModelExporter that will export from the source iModel. */
|
|
74
76
|
exporter;
|
|
77
|
+
_schemaProcessingCoordinator;
|
|
75
78
|
/** The IModelImporter that will import into the target iModel. */
|
|
76
79
|
importer;
|
|
77
80
|
/** The normally read-only source iModel.
|
|
@@ -200,6 +203,13 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
200
203
|
this.targetDb = this.importer.targetDb;
|
|
201
204
|
this._targetEditTxn = this.importer.editTxn;
|
|
202
205
|
this._sourceEditTxn = options?.sourceEditTxn;
|
|
206
|
+
this._schemaProcessingCoordinator = new SchemaProcessingCoordinator_1.SchemaProcessingCoordinator({
|
|
207
|
+
exporter: this.exporter,
|
|
208
|
+
targetDb: this.targetDb,
|
|
209
|
+
getSchemaExportDirectory: () => this._schemaExportDir,
|
|
210
|
+
shouldExportSchema: async (schemaKey) => this.shouldExportSchema(schemaKey),
|
|
211
|
+
serializeSourceSchema: async (schema) => this.onExportSchema(schema),
|
|
212
|
+
});
|
|
203
213
|
this.exporter.elementAspectExportCoordinator.setPreparation(async (excludedClasses, elementIds) => this.prepareElementAspects(excludedClasses, elementIds));
|
|
204
214
|
// create the IModelCloneContext, it must be initialized later
|
|
205
215
|
this._cloneContext = new IModelCloneContext_1.IModelCloneContext(this.sourceDb, this.targetDb);
|
|
@@ -1189,76 +1199,21 @@ class IModelTransformer extends IModelExporter_1.IModelExportHandler {
|
|
|
1189
1199
|
return true;
|
|
1190
1200
|
return Semver.gt(`${schemaKey.version.read}.${schemaKey.version.write}.${schemaKey.version.minor}`, core_backend_1.Schema.toSemverString(versionInTarget));
|
|
1191
1201
|
}
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
*
|
|
1195
|
-
* @returns {Promise<ExportSchemaResult>} Although the type is possibly void for backwards compatibility of subclasses,
|
|
1196
|
-
* `IModelTransformer.onExportSchema` always returns an[[IModelExportHandler.ExportSchemaResult]]
|
|
1197
|
-
* with a defined `schemaPath` property, for subclasses to know where the schema was written.
|
|
1198
|
-
* Schemas are *not* guaranteed to be written to [[IModelTransformer._schemaExportDir]] by a
|
|
1199
|
-
* known pattern derivable from the schema's name, so you must use this to find it.
|
|
1202
|
+
/** Serialize a source schema to the temporary directory used by [[processSchemas]].
|
|
1203
|
+
* @returns A path to the serialized schema file.
|
|
1204
|
+
* @note The file name is not derived reliably from the schema name. Use the returned path when a subclass calls `super`.
|
|
1200
1205
|
*/
|
|
1201
1206
|
async onExportSchema(schema) {
|
|
1202
|
-
|
|
1203
|
-
let schemaFileName = schema.name + ext;
|
|
1204
|
-
// many file systems have a max file-name/path-segment size of 255, so we workaround that on all systems
|
|
1205
|
-
const systemMaxPathSegmentSize = 255;
|
|
1206
|
-
// windows usually has a limit for the total path length of 260
|
|
1207
|
-
const windowsMaxPathLimit = 260;
|
|
1208
|
-
if (schemaFileName.length > systemMaxPathSegmentSize ||
|
|
1209
|
-
path.join(this._schemaExportDir, schemaFileName).length >=
|
|
1210
|
-
windowsMaxPathLimit) {
|
|
1211
|
-
// this name should be well under 255 bytes
|
|
1212
|
-
// ( 100 + (Number.MAX_SAFE_INTEGER.toString().length = 16) + (ext.length = 13) ) = 129 which is less than 255
|
|
1213
|
-
// You'd have to be past 2**53-1 (Number.MAX_SAFE_INTEGER) long named schemas in order to hit decimal formatting,
|
|
1214
|
-
// and that's on the scale of at least petabytes. `Map.prototype.size` shouldn't return floating points, and even
|
|
1215
|
-
// if they do they're in scientific notation, size bound and contain no invalid windows path chars
|
|
1216
|
-
schemaFileName = `${schema.name.slice(0, 100)}${this._longNamedSchemasMap.size}${ext}`;
|
|
1217
|
-
(0, node_assert_1.strict)(schemaFileName.length <= systemMaxPathSegmentSize, "Schema name was still long. This is a bug.");
|
|
1218
|
-
this._longNamedSchemasMap.set(schema.name, schemaFileName);
|
|
1219
|
-
}
|
|
1220
|
-
this.sourceDb.exportSchema({
|
|
1221
|
-
schemaName: schema.name,
|
|
1222
|
-
outputDirectory: this._schemaExportDir,
|
|
1223
|
-
outputFileName: schemaFileName,
|
|
1224
|
-
});
|
|
1225
|
-
return { schemaPath: path.join(this._schemaExportDir, schemaFileName) };
|
|
1226
|
-
}
|
|
1227
|
-
_makeLongNameResolvingSchemaCtx() {
|
|
1228
|
-
const result = new core_backend_1.ECSchemaXmlContext();
|
|
1229
|
-
result.setSchemaLocater((key) => {
|
|
1230
|
-
const match = this._longNamedSchemasMap.get(key.name);
|
|
1231
|
-
if (match !== undefined)
|
|
1232
|
-
return path.join(this._schemaExportDir, match);
|
|
1233
|
-
return undefined;
|
|
1234
|
-
});
|
|
1235
|
-
return result;
|
|
1207
|
+
return this._schemaProcessingCoordinator.serializeSourceSchema(schema);
|
|
1236
1208
|
}
|
|
1237
|
-
/**
|
|
1209
|
+
/** Process source schemas and import selected or generated definitions into the target iModel.
|
|
1210
|
+
* @param options Selects the schema processing strategy.
|
|
1211
|
+
* @note When no strategy is supplied, [[NewerVersionSchemaImportStrategy]] is used.
|
|
1238
1212
|
* @note For performance reasons, it is recommended that [IModelDb.saveChanges]($backend) be called after `processSchemas` is complete.
|
|
1239
1213
|
* It is more efficient to process *data* changes after the schema changes have been saved.
|
|
1240
1214
|
*/
|
|
1241
|
-
async processSchemas() {
|
|
1242
|
-
|
|
1243
|
-
try {
|
|
1244
|
-
core_backend_1.IModelJsFs.mkdirSync(this._schemaExportDir);
|
|
1245
|
-
this._longNamedSchemasMap.clear();
|
|
1246
|
-
await this.exporter.exportSchemas();
|
|
1247
|
-
const exportedSchemaFiles = core_backend_1.IModelJsFs.readdirSync(this._schemaExportDir);
|
|
1248
|
-
if (exportedSchemaFiles.length === 0)
|
|
1249
|
-
return;
|
|
1250
|
-
const schemaFullPaths = exportedSchemaFiles.map((s) => path.join(this._schemaExportDir, s));
|
|
1251
|
-
const maybeLongNameResolvingSchemaCtx = this._longNamedSchemasMap.size > 0
|
|
1252
|
-
? this._makeLongNameResolvingSchemaCtx()
|
|
1253
|
-
: undefined;
|
|
1254
|
-
return await this.targetDb.importSchemas(schemaFullPaths, {
|
|
1255
|
-
ecSchemaXmlContext: maybeLongNameResolvingSchemaCtx,
|
|
1256
|
-
});
|
|
1257
|
-
}
|
|
1258
|
-
finally {
|
|
1259
|
-
core_backend_1.IModelJsFs.removeSync(this._schemaExportDir);
|
|
1260
|
-
this._longNamedSchemasMap.clear();
|
|
1261
|
-
}
|
|
1215
|
+
async processSchemas(options) {
|
|
1216
|
+
return this._schemaProcessingCoordinator.process(options?.strategy ?? new SchemaProcessingStrategy_1.NewerVersionSchemaImportStrategy());
|
|
1262
1217
|
}
|
|
1263
1218
|
/** Cause all fonts to be exported from the source iModel and imported into the target iModel.
|
|
1264
1219
|
* @note This method is called from [[process]], so it only needs to be called directly when processing a subset of an iModel.
|