@itwin/imodel-transformer 0.1.13 → 0.1.14-fedguidopt.2
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/CHANGELOG.md +9 -1
- package/lib/cjs/Algo.d.ts +7 -0
- package/lib/cjs/Algo.d.ts.map +1 -0
- package/lib/cjs/Algo.js +50 -0
- package/lib/cjs/Algo.js.map +1 -0
- package/lib/cjs/IModelExporter.d.ts +31 -9
- package/lib/cjs/IModelExporter.d.ts.map +1 -1
- package/lib/cjs/IModelExporter.js +44 -24
- package/lib/cjs/IModelExporter.js.map +1 -1
- package/lib/cjs/IModelTransformer.d.ts +148 -29
- package/lib/cjs/IModelTransformer.d.ts.map +1 -1
- package/lib/cjs/IModelTransformer.js +858 -207
- package/lib/cjs/IModelTransformer.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
# Change Log - @itwin/imodel-transformer
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Thu, 01 Jun 2023 22:51:33 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 0.1.14
|
|
8
|
+
|
|
9
|
+
Thu, 01 Jun 2023 22:51:33 GMT
|
|
10
|
+
|
|
11
|
+
### Patches
|
|
12
|
+
|
|
13
|
+
- update deps to support 3.6-4.0 ([commit](https://github.com/iTwin/transformer/commit/5a175aa5b15fb48e747cccd18be5886727fecb6a))
|
|
14
|
+
|
|
7
15
|
## 0.1.12
|
|
8
16
|
|
|
9
17
|
Wed, 31 May 2023 13:40:07 GMT
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** given a discrete inclusive range [start, end] e.g. [-10, 12] and several "skipped" values", e.g.
|
|
2
|
+
* (-10, 1, -3, 5, 15), return the ordered set of subranges of the original range that exclude
|
|
3
|
+
* those values
|
|
4
|
+
*/
|
|
5
|
+
export declare function rangesFromRangeAndSkipped(start: number, end: number, skipped: number[]): [number, number][];
|
|
6
|
+
export declare function renderRanges(ranges: [number, number][]): number[];
|
|
7
|
+
//# sourceMappingURL=Algo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Algo.d.ts","sourceRoot":"","sources":["../../src/Algo.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAiC3G;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAMjE"}
|
package/lib/cjs/Algo.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.renderRanges = exports.rangesFromRangeAndSkipped = void 0;
|
|
8
|
+
// FIXME: tests
|
|
9
|
+
/** given a discrete inclusive range [start, end] e.g. [-10, 12] and several "skipped" values", e.g.
|
|
10
|
+
* (-10, 1, -3, 5, 15), return the ordered set of subranges of the original range that exclude
|
|
11
|
+
* those values
|
|
12
|
+
*/
|
|
13
|
+
function rangesFromRangeAndSkipped(start, end, skipped) {
|
|
14
|
+
function validRange(range) {
|
|
15
|
+
return range[0] <= range[1];
|
|
16
|
+
}
|
|
17
|
+
const firstRange = [start, end];
|
|
18
|
+
if (!validRange(firstRange))
|
|
19
|
+
throw RangeError(`invalid range: [${start}, ${end}]`);
|
|
20
|
+
const ranges = [firstRange];
|
|
21
|
+
function findRangeContaining(pt, inRanges) {
|
|
22
|
+
// TODO: binary search
|
|
23
|
+
return inRanges.findIndex((r) => (pt >= r[0] && pt <= r[1]));
|
|
24
|
+
}
|
|
25
|
+
for (const skip of skipped) {
|
|
26
|
+
const rangeIndex = findRangeContaining(skip, ranges);
|
|
27
|
+
if (rangeIndex === -1)
|
|
28
|
+
continue;
|
|
29
|
+
const range = ranges[rangeIndex];
|
|
30
|
+
const leftRange = [range[0], skip - 1];
|
|
31
|
+
const rightRange = [skip + 1, range[1]];
|
|
32
|
+
if (validRange(leftRange) && validRange(rightRange))
|
|
33
|
+
ranges.splice(rangeIndex, 1, leftRange, rightRange);
|
|
34
|
+
else if (validRange(leftRange))
|
|
35
|
+
ranges.splice(rangeIndex, 1, leftRange);
|
|
36
|
+
else if (validRange(rightRange))
|
|
37
|
+
ranges.splice(rangeIndex, 1, rightRange);
|
|
38
|
+
}
|
|
39
|
+
return ranges;
|
|
40
|
+
}
|
|
41
|
+
exports.rangesFromRangeAndSkipped = rangesFromRangeAndSkipped;
|
|
42
|
+
function renderRanges(ranges) {
|
|
43
|
+
const result = [];
|
|
44
|
+
for (const range of ranges)
|
|
45
|
+
for (let i = range[0]; i <= range[1]; ++i)
|
|
46
|
+
result.push(i);
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
exports.renderRanges = renderRanges;
|
|
50
|
+
//# sourceMappingURL=Algo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Algo.js","sourceRoot":"","sources":["../../src/Algo.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,eAAe;AACf;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,KAAa,EAAE,GAAW,EAAE,OAAiB;IACrF,SAAS,UAAU,CAAC,KAAsB;QACxC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,GAAG,CAAqB,CAAC;IAEpD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QACzB,MAAM,UAAU,CAAC,mBAAmB,KAAK,KAAK,GAAG,GAAG,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;IAE5B,SAAS,mBAAmB,CAAC,EAAU,EAAE,QAA4B;QACnE,sBAAsB;QACtB,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;QAC1B,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,UAAU,KAAK,CAAC,CAAC;YACnB,SAAS;QACX,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAqB,CAAC;QAC3D,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAqB,CAAC;QAC5D,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;aACjD,IAAI,UAAU,CAAC,SAAS,CAAC;YAC5B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;aACrC,IAAI,UAAU,CAAC,UAAU,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;KAC5C;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAjCD,8DAiCC;AAED,SAAgB,YAAY,CAAC,MAA0B;IACrD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,KAAK,IAAI,MAAM;QACxB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO,MAAM,CAAC;AAChB,CAAC;AAND,oCAMC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n// FIXME: tests\n/** given a discrete inclusive range [start, end] e.g. [-10, 12] and several \"skipped\" values\", e.g.\n * (-10, 1, -3, 5, 15), return the ordered set of subranges of the original range that exclude\n * those values\n */\nexport function rangesFromRangeAndSkipped(start: number, end: number, skipped: number[]): [number, number][] {\n function validRange(range: [number,number]): boolean {\n return range[0] <= range[1];\n }\n\n const firstRange = [start, end] as [number, number];\n\n if (!validRange(firstRange))\n throw RangeError(`invalid range: [${start}, ${end}]`);\n\n const ranges = [firstRange];\n\n function findRangeContaining(pt: number, inRanges: [number, number][]): number {\n // TODO: binary search\n return inRanges.findIndex((r) => (pt >= r[0] && pt <= r[1]));\n }\n\n for (const skip of skipped) {\n const rangeIndex = findRangeContaining(skip, ranges);\n if (rangeIndex === -1)\n continue;\n const range = ranges[rangeIndex];\n const leftRange = [range[0], skip - 1] as [number, number];\n const rightRange = [skip + 1, range[1]] as [number, number];\n if (validRange(leftRange) && validRange(rightRange))\n ranges.splice(rangeIndex, 1, leftRange, rightRange);\n else if (validRange(leftRange))\n ranges.splice(rangeIndex, 1, leftRange);\n else if (validRange(rightRange))\n ranges.splice(rangeIndex, 1, rightRange);\n }\n\n return ranges;\n}\n\nexport function renderRanges(ranges: [number, number][]): number[] {\n const result = [];\n for (const range of ranges)\n for (let i = range[0]; i <= range[1]; ++i)\n result.push(i);\n return result;\n}\n\n"]}
|
|
@@ -3,8 +3,26 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { BriefcaseDb, Element, ElementAspect, ElementMultiAspect, ElementUniqueAspect, IModelDb, IModelJsNative, Model, Relationship } from "@itwin/core-backend";
|
|
5
5
|
import { AccessToken, CompressedId64Set, Id64String } from "@itwin/core-bentley";
|
|
6
|
-
import { CodeSpec, FontProps } from "@itwin/core-common";
|
|
6
|
+
import { ChangesetIndexOrId, CodeSpec, FontProps } from "@itwin/core-common";
|
|
7
7
|
import { Schema, SchemaKey } from "@itwin/ecschema-metadata";
|
|
8
|
+
import type { InitArgs } from "./IModelTransformer";
|
|
9
|
+
export interface ExportChangesArgs extends InitArgs {
|
|
10
|
+
accessToken?: AccessToken;
|
|
11
|
+
/**
|
|
12
|
+
* A changeset id or index signifiying the inclusive start of changes
|
|
13
|
+
* to include. The end is implicitly the changeset of the source iModel
|
|
14
|
+
* @note mutually exclusive with @see changesetRanges
|
|
15
|
+
*/
|
|
16
|
+
startChangeset?: ChangesetIndexOrId;
|
|
17
|
+
/**
|
|
18
|
+
* An array of changeset index ranges, e.g. [[2,2], [4,5]] is [2,4,5]
|
|
19
|
+
* @note mutually exclusive with @see startChangeset
|
|
20
|
+
*/
|
|
21
|
+
changesetRanges?: [number, number][];
|
|
22
|
+
}
|
|
23
|
+
export interface ChangedInstanceIdsInitOptions extends ExportChangesArgs {
|
|
24
|
+
iModel: BriefcaseDb;
|
|
25
|
+
}
|
|
8
26
|
/**
|
|
9
27
|
* @beta
|
|
10
28
|
* The (optional) result of [[IModelExportHandler.onExportSchema]]
|
|
@@ -192,12 +210,18 @@ export declare class IModelExporter {
|
|
|
192
210
|
*/
|
|
193
211
|
exportAll(): Promise<void>;
|
|
194
212
|
/** Export changes from the source iModel.
|
|
195
|
-
*
|
|
213
|
+
* Inserts, updates, and deletes are determined by inspecting the changeset(s).
|
|
214
|
+
* @param accessToken A valid access token string
|
|
196
215
|
* @param startChangesetId Include changes from this changeset up through and including the current changeset.
|
|
197
216
|
* If this parameter is not provided, then just the current changeset will be exported.
|
|
198
|
-
* @note To form a range of versions to
|
|
217
|
+
* @note To form a range of versions to process, set `startChangesetId` for the start (inclusive) of the desired
|
|
218
|
+
* range and open the source iModel as of the end (inclusive) of the desired range.
|
|
219
|
+
*/
|
|
220
|
+
exportChanges(options: ExportChangesArgs): Promise<void>;
|
|
221
|
+
/**
|
|
222
|
+
* @deprecated in 0.1.x.
|
|
199
223
|
*/
|
|
200
|
-
exportChanges(
|
|
224
|
+
exportChanges(accessToken: AccessToken, startChangesetId?: string): Promise<void>;
|
|
201
225
|
/** Export schemas from the source iModel.
|
|
202
226
|
* @note This must be called separately from [[exportAll]] or [[exportChanges]].
|
|
203
227
|
*/
|
|
@@ -343,11 +367,9 @@ export declare class ChangedInstanceIds {
|
|
|
343
367
|
private constructor();
|
|
344
368
|
/**
|
|
345
369
|
* Initializes a new ChangedInstanceIds object with information taken from a range of changesets.
|
|
346
|
-
* @param accessToken Access token.
|
|
347
|
-
* @param iModel IModel briefcase whose changesets will be queried.
|
|
348
|
-
* @param firstChangesetId Changeset id.
|
|
349
|
-
* @note Modified element information will be taken from a range of changesets. First changeset in a range will be the 'firstChangesetId', the last will be whichever changeset the 'iModel' briefcase is currently opened on.
|
|
350
370
|
*/
|
|
351
|
-
static initialize(
|
|
371
|
+
static initialize(opts: ChangedInstanceIdsInitOptions): Promise<ChangedInstanceIds>;
|
|
372
|
+
/** @deprecated in 0.1.x. Pass a [[ChangedInstanceIdsInitOptions]] object instead of a changeset id */
|
|
373
|
+
static initialize(accessToken: AccessToken | undefined, iModel: BriefcaseDb, startChangesetId: string): Promise<ChangedInstanceIds>;
|
|
352
374
|
}
|
|
353
375
|
//# sourceMappingURL=IModelExporter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelExporter.d.ts","sourceRoot":"","sources":["../../src/IModelExporter.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACL,WAAW,EAAqD,OAAO,EAAE,aAAa,EACtF,kBAAkB,EAA2B,mBAAmB,EAAoB,QAAQ,EAChF,cAAc,EAAE,KAAK,EAA2B,YAAY,EACzE,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAU,iBAAiB,EAAkB,UAAU,EAAsC,MAAM,qBAAqB,CAAC;AAC7I,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAuB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"IModelExporter.d.ts","sourceRoot":"","sources":["../../src/IModelExporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ const core_bentley_1 = require("@itwin/core-bentley");
|
|
|
13
13
|
const core_common_1 = require("@itwin/core-common");
|
|
14
14
|
const ecschema_metadata_1 = require("@itwin/ecschema-metadata");
|
|
15
15
|
const TransformerLoggerCategory_1 = require("./TransformerLoggerCategory");
|
|
16
|
+
const nodeAssert = require("assert");
|
|
16
17
|
const loggerCategory = TransformerLoggerCategory_1.TransformerLoggerCategory.IModelExporter;
|
|
17
18
|
/** Handles the events generated by IModelExporter.
|
|
18
19
|
* @note Change information is available when `IModelExportHandler` methods are invoked via [IModelExporter.exportChanges]($transformer), but not available when invoked via [IModelExporter.exportAll]($transformer).
|
|
@@ -217,13 +218,15 @@ class IModelExporter {
|
|
|
217
218
|
await this.exportModel(core_common_1.IModel.repositoryModelId);
|
|
218
219
|
await this.exportRelationships(core_backend_1.ElementRefersToElements.classFullName);
|
|
219
220
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
221
|
+
async exportChanges(optionsOrAccessToken, startChangesetId) {
|
|
222
|
+
const args = typeof optionsOrAccessToken === "string"
|
|
223
|
+
? {
|
|
224
|
+
accessToken: optionsOrAccessToken,
|
|
225
|
+
startChangeset: startChangesetId
|
|
226
|
+
? { id: startChangesetId }
|
|
227
|
+
: this.sourceDb.changeset,
|
|
228
|
+
}
|
|
229
|
+
: optionsOrAccessToken;
|
|
227
230
|
if (!this.sourceDb.isBriefcaseDb()) {
|
|
228
231
|
throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadRequest, "Must be a briefcase to export changes");
|
|
229
232
|
}
|
|
@@ -231,10 +234,7 @@ class IModelExporter {
|
|
|
231
234
|
await this.exportAll(); // no changesets, so revert to exportAll
|
|
232
235
|
return;
|
|
233
236
|
}
|
|
234
|
-
|
|
235
|
-
startChangesetId = this.sourceDb.changeset.id;
|
|
236
|
-
}
|
|
237
|
-
this._sourceDbChanges = await ChangedInstanceIds.initialize(user, this.sourceDb, startChangesetId);
|
|
237
|
+
this._sourceDbChanges = await ChangedInstanceIds.initialize({ ...args, iModel: this.sourceDb });
|
|
238
238
|
await this.exportCodeSpecs();
|
|
239
239
|
await this.exportFonts();
|
|
240
240
|
await this.exportModelContents(core_common_1.IModel.repositoryModelId);
|
|
@@ -773,21 +773,41 @@ class ChangedInstanceIds {
|
|
|
773
773
|
this.relationship = new ChangedInstanceOps();
|
|
774
774
|
this.font = new ChangedInstanceOps();
|
|
775
775
|
}
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
const
|
|
786
|
-
const
|
|
787
|
-
const
|
|
776
|
+
static async initialize(accessTokenOrOpts, iModel, startChangesetId) {
|
|
777
|
+
const opts = typeof accessTokenOrOpts === "object"
|
|
778
|
+
? accessTokenOrOpts
|
|
779
|
+
: {
|
|
780
|
+
accessToken: accessTokenOrOpts,
|
|
781
|
+
iModel: iModel,
|
|
782
|
+
startChangeset: { id: startChangesetId },
|
|
783
|
+
};
|
|
784
|
+
nodeAssert(((opts.startChangeset ? 1 : 0) + (opts.changesetRanges ? 1 : 0)) === 1, "exactly one of options.startChangeset XOR opts.changesetRanges may be used");
|
|
785
|
+
const iModelId = opts.iModel.iModelId;
|
|
786
|
+
const accessToken = opts.accessToken;
|
|
787
|
+
const changesetRanges = opts.changesetRanges
|
|
788
|
+
?? [[
|
|
789
|
+
opts.startChangeset.index
|
|
790
|
+
?? (await core_backend_1.IModelHost.hubAccess.queryChangeset({
|
|
791
|
+
iModelId,
|
|
792
|
+
changeset: { id: opts.startChangeset.id },
|
|
793
|
+
accessToken,
|
|
794
|
+
})).index,
|
|
795
|
+
opts.iModel.changeset.index
|
|
796
|
+
?? (await core_backend_1.IModelHost.hubAccess.queryChangeset({
|
|
797
|
+
iModelId,
|
|
798
|
+
changeset: { id: opts.iModel.changeset.id },
|
|
799
|
+
accessToken,
|
|
800
|
+
})).index,
|
|
801
|
+
]];
|
|
802
|
+
core_bentley_1.Logger.logTrace(loggerCategory, `ChangedInstanceIds.initialize ranges: ${changesetRanges.join("|")}`);
|
|
803
|
+
const changesets = (await Promise.all(changesetRanges.map(async ([first, end]) => core_backend_1.IModelHost.hubAccess.downloadChangesets({
|
|
804
|
+
accessToken,
|
|
805
|
+
iModelId, range: { first, end },
|
|
806
|
+
targetDir: core_backend_1.BriefcaseManager.getChangeSetsPath(iModelId),
|
|
807
|
+
})))).flat();
|
|
788
808
|
const changedInstanceIds = new ChangedInstanceIds();
|
|
789
809
|
const changesetFiles = changesets.map((c) => c.pathname);
|
|
790
|
-
const statusOrResult = iModel.nativeDb.extractChangedInstanceIdsFromChangeSets(changesetFiles);
|
|
810
|
+
const statusOrResult = opts.iModel.nativeDb.extractChangedInstanceIdsFromChangeSets(changesetFiles);
|
|
791
811
|
if (statusOrResult.error) {
|
|
792
812
|
throw new core_common_1.IModelError(statusOrResult.error.status, "Error processing changeset");
|
|
793
813
|
}
|