@itwin/core-backend 5.0.0-dev.41 → 5.0.0-dev.49

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.
Files changed (147) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/BackendHubAccess.js.map +1 -1
  3. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  4. package/lib/cjs/BisCoreSchema.js.map +1 -1
  5. package/lib/cjs/BlobContainerService.d.ts +4 -4
  6. package/lib/cjs/BlobContainerService.d.ts.map +1 -1
  7. package/lib/cjs/BlobContainerService.js.map +1 -1
  8. package/lib/cjs/BriefcaseManager.js.map +1 -1
  9. package/lib/cjs/Category.js.map +1 -1
  10. package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -1
  11. package/lib/cjs/ChangeSummaryManager.js +88 -20
  12. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  13. package/lib/cjs/ChangedElementsDb.d.ts +3 -3
  14. package/lib/cjs/ChangedElementsDb.d.ts.map +1 -1
  15. package/lib/cjs/ChangedElementsDb.js +1 -1
  16. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  17. package/lib/cjs/ChangesetECAdaptor.d.ts +3 -3
  18. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  19. package/lib/cjs/ChangesetECAdaptor.js +243 -243
  20. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  21. package/lib/cjs/ChannelControl.js.map +1 -1
  22. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  23. package/lib/cjs/CheckpointManager.js +2 -0
  24. package/lib/cjs/CheckpointManager.js.map +1 -1
  25. package/lib/cjs/ClassRegistry.js +5 -5
  26. package/lib/cjs/ClassRegistry.js.map +1 -1
  27. package/lib/cjs/CloudSqlite.js.map +1 -1
  28. package/lib/cjs/CodeService.js.map +1 -1
  29. package/lib/cjs/CodeSpecs.js.map +1 -1
  30. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  31. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  32. package/lib/cjs/DevTools.js.map +1 -1
  33. package/lib/cjs/DisplayStyle.js.map +1 -1
  34. package/lib/cjs/ECDb.d.ts +3 -5
  35. package/lib/cjs/ECDb.d.ts.map +1 -1
  36. package/lib/cjs/ECDb.js +7 -3
  37. package/lib/cjs/ECDb.js.map +1 -1
  38. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  39. package/lib/cjs/ECSqlStatement.d.ts +4 -2
  40. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  41. package/lib/cjs/ECSqlStatement.js +5 -1
  42. package/lib/cjs/ECSqlStatement.js.map +1 -1
  43. package/lib/cjs/Element.js.map +1 -1
  44. package/lib/cjs/ElementAspect.js.map +1 -1
  45. package/lib/cjs/ElementGraphics.js.map +1 -1
  46. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  47. package/lib/cjs/Entity.js.map +1 -1
  48. package/lib/cjs/EntityReferences.js.map +1 -1
  49. package/lib/cjs/ExportGraphics.js.map +1 -1
  50. package/lib/cjs/ExternalSource.js.map +1 -1
  51. package/lib/cjs/FontFile.js.map +1 -1
  52. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  53. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  54. package/lib/cjs/GeometrySummary.js +47 -47
  55. package/lib/cjs/GeometrySummary.js.map +1 -1
  56. package/lib/cjs/HubMock.js.map +1 -1
  57. package/lib/cjs/IModelCloneContext.js.map +1 -1
  58. package/lib/cjs/IModelDb.js +10 -10
  59. package/lib/cjs/IModelDb.js.map +1 -1
  60. package/lib/cjs/IModelDbFonts.js.map +1 -1
  61. package/lib/cjs/IModelElementCloneContext.d.ts +2 -0
  62. package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
  63. package/lib/cjs/IModelElementCloneContext.js +5 -1
  64. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  65. package/lib/cjs/IModelHost.js.map +1 -1
  66. package/lib/cjs/IModelJsFs.js.map +1 -1
  67. package/lib/cjs/IpcHost.js.map +1 -1
  68. package/lib/cjs/LineStyle.js.map +1 -1
  69. package/lib/cjs/LocalHub.js +1 -1
  70. package/lib/cjs/LocalHub.js.map +1 -1
  71. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  72. package/lib/cjs/LockControl.js.map +1 -1
  73. package/lib/cjs/Material.js.map +1 -1
  74. package/lib/cjs/Model.js.map +1 -1
  75. package/lib/cjs/NativeAppStorage.js.map +1 -1
  76. package/lib/cjs/NativeHost.js.map +1 -1
  77. package/lib/cjs/NavigationRelationship.js.map +1 -1
  78. package/lib/cjs/PromiseMemoizer.d.ts +2 -3
  79. package/lib/cjs/PromiseMemoizer.d.ts.map +1 -1
  80. package/lib/cjs/PromiseMemoizer.js +1 -1
  81. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  82. package/lib/cjs/PropertyStore.js.map +1 -1
  83. package/lib/cjs/Relationship.js.map +1 -1
  84. package/lib/cjs/RpcBackend.js.map +1 -1
  85. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  86. package/lib/cjs/SQLiteDb.js +60 -3
  87. package/lib/cjs/SQLiteDb.js.map +1 -1
  88. package/lib/cjs/Schema.js.map +1 -1
  89. package/lib/cjs/SchemaSync.js.map +1 -1
  90. package/lib/cjs/SchemaUtils.js.map +1 -1
  91. package/lib/cjs/SheetIndex.js.map +1 -1
  92. package/lib/cjs/SqliteChangesetReader.d.ts +3 -3
  93. package/lib/cjs/SqliteChangesetReader.d.ts.map +1 -1
  94. package/lib/cjs/SqliteChangesetReader.js +1 -1
  95. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  96. package/lib/cjs/SqliteStatement.d.ts +4 -2
  97. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  98. package/lib/cjs/SqliteStatement.js +5 -1
  99. package/lib/cjs/SqliteStatement.js.map +1 -1
  100. package/lib/cjs/TextAnnotationElement.js.map +1 -1
  101. package/lib/cjs/TextAnnotationGeometry.js.map +1 -1
  102. package/lib/cjs/TextAnnotationLayout.js.map +1 -1
  103. package/lib/cjs/Texture.js.map +1 -1
  104. package/lib/cjs/TileStorage.js.map +1 -1
  105. package/lib/cjs/TxnManager.js.map +1 -1
  106. package/lib/cjs/ViewDefinition.js.map +1 -1
  107. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  108. package/lib/cjs/ViewStore.js.map +1 -1
  109. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  110. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  111. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  112. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  113. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  114. package/lib/cjs/core-backend.js.map +1 -1
  115. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  116. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  117. package/lib/cjs/domains/GenericElements.js.map +1 -1
  118. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  119. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  120. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  121. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  122. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  123. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  124. package/lib/cjs/internal/NoLocks.js.map +1 -1
  125. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  126. package/lib/cjs/internal/Symbols.js.map +1 -1
  127. package/lib/cjs/internal/cross-package.js.map +1 -1
  128. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  129. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  130. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  131. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  132. package/lib/cjs/rpc/multipart.js.map +1 -1
  133. package/lib/cjs/rpc/tracing.js.map +1 -1
  134. package/lib/cjs/rpc/web/logging.js.map +1 -1
  135. package/lib/cjs/rpc/web/request.js.map +1 -1
  136. package/lib/cjs/rpc/web/response.js.map +1 -1
  137. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  138. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  139. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +2 -2
  140. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  141. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  142. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  143. package/lib/cjs/workspace/Settings.js.map +1 -1
  144. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  145. package/lib/cjs/workspace/Workspace.js.map +1 -1
  146. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  147. package/package.json +12 -13
@@ -16,14 +16,14 @@ class ECDbMap {
16
16
  this._cacheTables = new Map();
17
17
  }
18
18
  getAllDerivedClasses(classFullName) {
19
- const sql = `
20
- SELECT format('0x%x', ch.ClassId)
21
- FROM [ec_cache_ClassHierarchy] [ch]
22
- JOIN [ec_Class] [cs] ON [cs].[Id] = [ch].[BaseClassId]
23
- JOIN [ec_Schema] [sc] ON [sc].[Id] = [cs].[SchemaId]
24
- WHERE (([sc].[Alias] = :schemaNameOrAlias
25
- OR [sc].[Name] = :schemaNameOrAlias)
26
- AND ([cs].[Name] = :className))
19
+ const sql = `
20
+ SELECT format('0x%x', ch.ClassId)
21
+ FROM [ec_cache_ClassHierarchy] [ch]
22
+ JOIN [ec_Class] [cs] ON [cs].[Id] = [ch].[BaseClassId]
23
+ JOIN [ec_Schema] [sc] ON [sc].[Id] = [cs].[SchemaId]
24
+ WHERE (([sc].[Alias] = :schemaNameOrAlias
25
+ OR [sc].[Name] = :schemaNameOrAlias)
26
+ AND ([cs].[Name] = :className))
27
27
  `;
28
28
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
29
29
  const parts = classFullName.indexOf(".") !== -1 ? classFullName.split(".") : classFullName.split(":");
@@ -38,39 +38,39 @@ class ECDbMap {
38
38
  getTable(tableName) {
39
39
  if (this._cacheTables.has(tableName))
40
40
  return this._cacheTables.get(tableName);
41
- const sql = `
42
- SELECT
43
- JSON_OBJECT (
44
- 'id', FORMAT ('0x%x', [t].[id]),
45
- 'name', [t].[Name],
46
- 'type', (
47
- CASE
48
- [t].[type]
49
- WHEN 0 THEN 'Primary'
50
- WHEN 1 THEN 'Joined'
51
- WHEN 2 THEN 'Existing'
52
- WHEN 3 THEN 'Overflow'
53
- WHEN 4 THEN 'Virtual'
54
- END
55
- ),
56
- 'exclusiveRootClassId', FORMAT ('0x%x',
57
- COALESCE (
58
- [t].[ExclusiveRootClassId], (
59
- SELECT [parent].[ExclusiveRootClassId]
60
- FROM [ec_Table] [parent]
61
- WHERE [parent].[Id] = [t].[ParentTableId] AND [parent].[Type] = 1))),
62
- 'isClassIdVirtual', (
63
- SELECT
64
- [c].[IsVirtual]
65
- FROM
66
- [ec_Column] [c]
67
- WHERE
68
- [c].[Name] = 'ECClassId' AND [c].[TableId] = [t].[Id]
69
- )
70
- )
71
- FROM [ec_Table] [t]
72
- WHERE
73
- [t].[Name] = ?;
41
+ const sql = `
42
+ SELECT
43
+ JSON_OBJECT (
44
+ 'id', FORMAT ('0x%x', [t].[id]),
45
+ 'name', [t].[Name],
46
+ 'type', (
47
+ CASE
48
+ [t].[type]
49
+ WHEN 0 THEN 'Primary'
50
+ WHEN 1 THEN 'Joined'
51
+ WHEN 2 THEN 'Existing'
52
+ WHEN 3 THEN 'Overflow'
53
+ WHEN 4 THEN 'Virtual'
54
+ END
55
+ ),
56
+ 'exclusiveRootClassId', FORMAT ('0x%x',
57
+ COALESCE (
58
+ [t].[ExclusiveRootClassId], (
59
+ SELECT [parent].[ExclusiveRootClassId]
60
+ FROM [ec_Table] [parent]
61
+ WHERE [parent].[Id] = [t].[ParentTableId] AND [parent].[Type] = 1))),
62
+ 'isClassIdVirtual', (
63
+ SELECT
64
+ [c].[IsVirtual]
65
+ FROM
66
+ [ec_Column] [c]
67
+ WHERE
68
+ [c].[Name] = 'ECClassId' AND [c].[TableId] = [t].[Id]
69
+ )
70
+ )
71
+ FROM [ec_Table] [t]
72
+ WHERE
73
+ [t].[Name] = ?;
74
74
  `;
75
75
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
76
76
  stmt.bindString(1, tableName);
@@ -91,186 +91,186 @@ class ECDbMap {
91
91
  getClassMap(classId) {
92
92
  if (this._cachedClassMaps.has(classId))
93
93
  return this._cachedClassMaps.get(classId);
94
- const sql = `
95
- SELECT
96
- JSON_OBJECT(
97
- 'id', format('0x%x', cs.id),
98
- 'name', format('%s:%s', ss.Name, cs.Name),
99
- 'mapStrategy',
100
- (
101
- CASE cm.MapStrategy
102
- WHEN 0 THEN 'NotMapped'
103
- WHEN 1 THEN 'OwnTable'
104
- WHEN 2 THEN 'TablePerHierarchy'
105
- WHEN 3 THEN 'ExistingTable'
106
- WHEN 10 THEN 'ForeignKeyInTargetTable'
107
- WHEN 11 THEN 'ForeignKeyInSourceTable'
108
- END
109
- ),
110
- 'type',
111
- (
112
- CASE cs.Type
113
- WHEN 0 THEN 'Entity'
114
- WHEN 1 THEN 'Relationship'
115
- WHEN 2 THEN 'Struct'
116
- WHEN 3 THEN 'CustomAttribute'
117
- END
118
- ),
119
- 'modifier',
120
- (
121
- CASE cs.Modifier
122
- WHEN 0 THEN 'None'
123
- WHEN 1 THEN 'Abstract'
124
- WHEN 2 THEN 'Sealed'
125
- END
126
- ),
127
- 'properties',
128
- (
129
- SELECT
130
- JSON_GROUP_ARRAY(JSON(propJson))
131
- FROM
132
- (
133
- SELECT
134
- JSON_OBJECT(
135
- 'id', format('0x%x', pt.id),
136
- 'name', pt.Name,
137
- 'kind',
138
- (
139
- CASE pt.Kind
140
- WHEN 0 THEN 'Primitive'
141
- WHEN 1 THEN 'Struct'
142
- WHEN 2 THEN 'PrimitiveArray'
143
- WHEN 3 THEN 'StructArray'
144
- WHEN 4 THEN 'Navigation'
145
- END
146
- ),
147
- 'primitiveType',
148
- (
149
- CASE pt.PrimitiveType
150
- WHEN 0x101 THEN 'Binary'
151
- WHEN 0x201 THEN 'Boolean'
152
- WHEN 0x301 THEN 'DateTime'
153
- WHEN 0x401 THEN 'Double'
154
- WHEN 0x501 THEN 'Integer'
155
- WHEN 0x601 THEN 'Long'
156
- WHEN 0x701 THEN 'Point2d'
157
- WHEN 0x801 THEN 'Point3d'
158
- WHEN 0x901 THEN 'String'
159
- WHEN 0xa01 THEN 'IGeometry'
160
- END
161
- ),
162
- 'extendedTypeName', ExtendedTypeName,
163
- 'navigationRelationship',
164
- (
165
- SELECT
166
- JSON_OBJECT(
167
- 'classId', format('0x%x', nc.Id),
168
- 'classFullName', format('%s:%s', ns.Name, nc.Name)
169
- )
170
- FROM ec_Class nc
171
- JOIN ec_Schema ns ON ns.Id = nc.SchemaId
172
- WHERE
173
- nc.Id = pt.NavigationRelationshipClassId
174
- ),
175
- 'structClass',
176
- (
177
- SELECT
178
- JSON_OBJECT(
179
- 'classId', format('0x%x', nc.Id),
180
- 'classFullName', format('%s:%s', ns.Name, nc.Name)
181
- )
182
- FROM ec_Class nc
183
- JOIN ec_Schema ns ON ns.Id = nc.SchemaId
184
- WHERE
185
- nc.Id = pt.StructClassId
186
- ),
187
- 'dateTimeInfo', (
188
- SELECT
189
- JSON_OBJECT (
190
- 'dateTimeKind', (
191
- CASE
192
- WHEN [ca].[Instance] LIKE '%<DateTimeKind>Utc</DateTimeKind>%' COLLATE [NoCase] THEN 'Utc'
193
- WHEN [ca].[Instance] LIKE '%<DateTimeKind>Local</DateTimeKind>%' COLLATE [NoCase] THEN 'Local'
194
- ELSE 'Unspecified'
195
- END
196
- ),
197
- 'dateTimeComponent', (
198
- CASE
199
- WHEN [ca].[Instance] LIKE '%<DateTimeComponent>DateTime</DateTimeComponent>%' COLLATE [NoCase] THEN 'DateTime'
200
- WHEN [ca].[Instance] LIKE '%<DateTimeComponent>Date</DateTimeComponent>%' COLLATE [NoCase] THEN 'Date'
201
- WHEN [ca].[Instance] LIKE '%<DateTimeComponent>TimeOfDay</DateTimeComponent>%' COLLATE [NoCase] THEN 'TimeOfDay'
202
- ELSE 'DateTime'
203
- END
204
- )
205
- )
206
- FROM
207
- [ec_CustomAttribute] [ca]
208
- JOIN [ec_Class] [cl] ON [cl].[Id] = [ca].[ClassId]
209
- JOIN [ec_Schema] [sc] ON [sc].[Id] = [cl].[SchemaId]
210
- WHERE
211
- [ca].[ContainerType] = 992
212
- AND [cl].[Name] = 'DateTimeInfo'
213
- AND [sc].[Name] = 'CoreCustomAttributes'
214
- AND [ca].[ContainerId] = [pt].[Id]
215
- ),
216
- 'columns',
217
- (
218
- SELECT
219
- JSON_GROUP_ARRAY(JSON(columnJson))
220
- FROM
221
- (
222
- SELECT
223
- JSON_OBJECT(
224
- 'table', tb.Name,
225
- 'column', cc.Name,
226
- 'type',
227
- (
228
- CASE cc.Type
229
- WHEN 0 THEN 'Any'
230
- WHEN 1 THEN 'Boolean'
231
- WHEN 2 THEN 'Blob'
232
- WHEN 3 THEN 'Timestamp'
233
- WHEN 4 THEN 'Real'
234
- WHEN 5 THEN 'Integer'
235
- WHEN 6 THEN 'Text'
236
- END
237
- ),
238
- 'columnKind',
239
- (
240
- CASE cc.ColumnKind
241
- WHEN 0 THEN 'Default'
242
- WHEN 1 THEN 'Id'
243
- WHEN 2 THEN 'ClassId'
244
- WHEN 4 THEN 'SharedData'
245
- END
246
- ),
247
- 'accessString', pp0.AccessString,
248
- 'isVirtual', cc.IsVirtual OR tb.Type = 4
249
- ) columnJson
250
- FROM [ec_PropertyMap] [pm0]
251
- JOIN [ec_Column] [cc] ON [cc].[Id] = [pm0].[ColumnId]
252
- JOIN [ec_Table] [tb] ON [tb].[Id] = [cc].[TableId]
253
- JOIN [ec_PropertyPath] [pp0] ON [pp0].[Id] = [pm0].[PropertyPathId]
254
- WHERE
255
- [pp0].[RootPropertyId] = pt.Id AND pm0.ClassId = cs.Id
256
- )
257
- )
258
- ) propJson
259
- FROM [ec_PropertyMap] [pm]
260
- JOIN [ec_PropertyPath] [pp] ON [pp].[Id] = [pm].[PropertyPathId]
261
- JOIN [ec_Property] [pt] ON [pt].[Id] = [pp].[RootPropertyId]
262
- WHERE
263
- pm.ClassId = cs.Id
264
- GROUP BY
265
- pt.Id
266
- )
267
- )
268
- ) classDef
269
- FROM [ec_Class] [cs]
270
- JOIN [ec_ClassMap] [cm] ON [cm].[ClassId] = [cs].[Id]
271
- JOIN [ec_Schema] [ss] ON [ss].[Id] = [cs].[SchemaId]
272
- WHERE
273
- [cs].[Id] = ?
94
+ const sql = `
95
+ SELECT
96
+ JSON_OBJECT(
97
+ 'id', format('0x%x', cs.id),
98
+ 'name', format('%s:%s', ss.Name, cs.Name),
99
+ 'mapStrategy',
100
+ (
101
+ CASE cm.MapStrategy
102
+ WHEN 0 THEN 'NotMapped'
103
+ WHEN 1 THEN 'OwnTable'
104
+ WHEN 2 THEN 'TablePerHierarchy'
105
+ WHEN 3 THEN 'ExistingTable'
106
+ WHEN 10 THEN 'ForeignKeyInTargetTable'
107
+ WHEN 11 THEN 'ForeignKeyInSourceTable'
108
+ END
109
+ ),
110
+ 'type',
111
+ (
112
+ CASE cs.Type
113
+ WHEN 0 THEN 'Entity'
114
+ WHEN 1 THEN 'Relationship'
115
+ WHEN 2 THEN 'Struct'
116
+ WHEN 3 THEN 'CustomAttribute'
117
+ END
118
+ ),
119
+ 'modifier',
120
+ (
121
+ CASE cs.Modifier
122
+ WHEN 0 THEN 'None'
123
+ WHEN 1 THEN 'Abstract'
124
+ WHEN 2 THEN 'Sealed'
125
+ END
126
+ ),
127
+ 'properties',
128
+ (
129
+ SELECT
130
+ JSON_GROUP_ARRAY(JSON(propJson))
131
+ FROM
132
+ (
133
+ SELECT
134
+ JSON_OBJECT(
135
+ 'id', format('0x%x', pt.id),
136
+ 'name', pt.Name,
137
+ 'kind',
138
+ (
139
+ CASE pt.Kind
140
+ WHEN 0 THEN 'Primitive'
141
+ WHEN 1 THEN 'Struct'
142
+ WHEN 2 THEN 'PrimitiveArray'
143
+ WHEN 3 THEN 'StructArray'
144
+ WHEN 4 THEN 'Navigation'
145
+ END
146
+ ),
147
+ 'primitiveType',
148
+ (
149
+ CASE pt.PrimitiveType
150
+ WHEN 0x101 THEN 'Binary'
151
+ WHEN 0x201 THEN 'Boolean'
152
+ WHEN 0x301 THEN 'DateTime'
153
+ WHEN 0x401 THEN 'Double'
154
+ WHEN 0x501 THEN 'Integer'
155
+ WHEN 0x601 THEN 'Long'
156
+ WHEN 0x701 THEN 'Point2d'
157
+ WHEN 0x801 THEN 'Point3d'
158
+ WHEN 0x901 THEN 'String'
159
+ WHEN 0xa01 THEN 'IGeometry'
160
+ END
161
+ ),
162
+ 'extendedTypeName', ExtendedTypeName,
163
+ 'navigationRelationship',
164
+ (
165
+ SELECT
166
+ JSON_OBJECT(
167
+ 'classId', format('0x%x', nc.Id),
168
+ 'classFullName', format('%s:%s', ns.Name, nc.Name)
169
+ )
170
+ FROM ec_Class nc
171
+ JOIN ec_Schema ns ON ns.Id = nc.SchemaId
172
+ WHERE
173
+ nc.Id = pt.NavigationRelationshipClassId
174
+ ),
175
+ 'structClass',
176
+ (
177
+ SELECT
178
+ JSON_OBJECT(
179
+ 'classId', format('0x%x', nc.Id),
180
+ 'classFullName', format('%s:%s', ns.Name, nc.Name)
181
+ )
182
+ FROM ec_Class nc
183
+ JOIN ec_Schema ns ON ns.Id = nc.SchemaId
184
+ WHERE
185
+ nc.Id = pt.StructClassId
186
+ ),
187
+ 'dateTimeInfo', (
188
+ SELECT
189
+ JSON_OBJECT (
190
+ 'dateTimeKind', (
191
+ CASE
192
+ WHEN [ca].[Instance] LIKE '%<DateTimeKind>Utc</DateTimeKind>%' COLLATE [NoCase] THEN 'Utc'
193
+ WHEN [ca].[Instance] LIKE '%<DateTimeKind>Local</DateTimeKind>%' COLLATE [NoCase] THEN 'Local'
194
+ ELSE 'Unspecified'
195
+ END
196
+ ),
197
+ 'dateTimeComponent', (
198
+ CASE
199
+ WHEN [ca].[Instance] LIKE '%<DateTimeComponent>DateTime</DateTimeComponent>%' COLLATE [NoCase] THEN 'DateTime'
200
+ WHEN [ca].[Instance] LIKE '%<DateTimeComponent>Date</DateTimeComponent>%' COLLATE [NoCase] THEN 'Date'
201
+ WHEN [ca].[Instance] LIKE '%<DateTimeComponent>TimeOfDay</DateTimeComponent>%' COLLATE [NoCase] THEN 'TimeOfDay'
202
+ ELSE 'DateTime'
203
+ END
204
+ )
205
+ )
206
+ FROM
207
+ [ec_CustomAttribute] [ca]
208
+ JOIN [ec_Class] [cl] ON [cl].[Id] = [ca].[ClassId]
209
+ JOIN [ec_Schema] [sc] ON [sc].[Id] = [cl].[SchemaId]
210
+ WHERE
211
+ [ca].[ContainerType] = 992
212
+ AND [cl].[Name] = 'DateTimeInfo'
213
+ AND [sc].[Name] = 'CoreCustomAttributes'
214
+ AND [ca].[ContainerId] = [pt].[Id]
215
+ ),
216
+ 'columns',
217
+ (
218
+ SELECT
219
+ JSON_GROUP_ARRAY(JSON(columnJson))
220
+ FROM
221
+ (
222
+ SELECT
223
+ JSON_OBJECT(
224
+ 'table', tb.Name,
225
+ 'column', cc.Name,
226
+ 'type',
227
+ (
228
+ CASE cc.Type
229
+ WHEN 0 THEN 'Any'
230
+ WHEN 1 THEN 'Boolean'
231
+ WHEN 2 THEN 'Blob'
232
+ WHEN 3 THEN 'Timestamp'
233
+ WHEN 4 THEN 'Real'
234
+ WHEN 5 THEN 'Integer'
235
+ WHEN 6 THEN 'Text'
236
+ END
237
+ ),
238
+ 'columnKind',
239
+ (
240
+ CASE cc.ColumnKind
241
+ WHEN 0 THEN 'Default'
242
+ WHEN 1 THEN 'Id'
243
+ WHEN 2 THEN 'ClassId'
244
+ WHEN 4 THEN 'SharedData'
245
+ END
246
+ ),
247
+ 'accessString', pp0.AccessString,
248
+ 'isVirtual', cc.IsVirtual OR tb.Type = 4
249
+ ) columnJson
250
+ FROM [ec_PropertyMap] [pm0]
251
+ JOIN [ec_Column] [cc] ON [cc].[Id] = [pm0].[ColumnId]
252
+ JOIN [ec_Table] [tb] ON [tb].[Id] = [cc].[TableId]
253
+ JOIN [ec_PropertyPath] [pp0] ON [pp0].[Id] = [pm0].[PropertyPathId]
254
+ WHERE
255
+ [pp0].[RootPropertyId] = pt.Id AND pm0.ClassId = cs.Id
256
+ )
257
+ )
258
+ ) propJson
259
+ FROM [ec_PropertyMap] [pm]
260
+ JOIN [ec_PropertyPath] [pp] ON [pp].[Id] = [pm].[PropertyPathId]
261
+ JOIN [ec_Property] [pt] ON [pt].[Id] = [pp].[RootPropertyId]
262
+ WHERE
263
+ pm.ClassId = cs.Id
264
+ GROUP BY
265
+ pt.Id
266
+ )
267
+ )
268
+ ) classDef
269
+ FROM [ec_Class] [cs]
270
+ JOIN [ec_ClassMap] [cm] ON [cm].[ClassId] = [cs].[Id]
271
+ JOIN [ec_Schema] [ss] ON [ss].[Id] = [cs].[SchemaId]
272
+ WHERE
273
+ [cs].[Id] = ?
274
274
  `;
275
275
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
276
276
  stmt.bindId(1, classId);
@@ -338,27 +338,27 @@ class PartialECChangeUnifier {
338
338
  * @returns return root class id
339
339
  */
340
340
  static getRootClassId(classId, db) {
341
- const sql = `
342
- WITH
343
- [base_class]([classId], [baseClassId], [Level]) AS(
344
- SELECT [ch].[ClassId], [ch].[BaseClassId], 0
345
- FROM [ec_ClassHasBaseClasses] [ch] WHERE [ch].[ClassId] = ?
346
- UNION ALL
347
- SELECT [ch].[ClassId], [ch].[BaseClassId], [Level] + 1
348
- FROM [ec_ClassHasBaseClasses] [ch], [base_class] [bc] WHERE [bc].[BaseClassId] = [ch].[ClassId]
349
-
350
- )
351
- SELECT FORMAT('0x%x', [bc].[BaseClassId]) rootClass
352
- FROM [base_class] [bc]
353
- WHERE [bc].[ClassId] <> [bc].[BaseClassId]
354
- AND [bc].[BaseClassId] NOT IN (SELECT [ca].[ContainerId]
355
- FROM [ec_CustomAttribute] [ca]
356
- WHERE [ca].[ContainerType] = 30
357
- AND [ca].[ClassId] IN (SELECT [cc].[Id]
358
- FROM [ec_Class] [cc]
359
- JOIN [ec_Schema] [ss] ON [ss].[Id] = [cc].[SchemaId]
360
- WHERE [cc].[Name] = 'IsMixIn'
361
- AND [ss].[Name] = 'CoreCustomAttributes'))
341
+ const sql = `
342
+ WITH
343
+ [base_class]([classId], [baseClassId], [Level]) AS(
344
+ SELECT [ch].[ClassId], [ch].[BaseClassId], 0
345
+ FROM [ec_ClassHasBaseClasses] [ch] WHERE [ch].[ClassId] = ?
346
+ UNION ALL
347
+ SELECT [ch].[ClassId], [ch].[BaseClassId], [Level] + 1
348
+ FROM [ec_ClassHasBaseClasses] [ch], [base_class] [bc] WHERE [bc].[BaseClassId] = [ch].[ClassId]
349
+
350
+ )
351
+ SELECT FORMAT('0x%x', [bc].[BaseClassId]) rootClass
352
+ FROM [base_class] [bc]
353
+ WHERE [bc].[ClassId] <> [bc].[BaseClassId]
354
+ AND [bc].[BaseClassId] NOT IN (SELECT [ca].[ContainerId]
355
+ FROM [ec_CustomAttribute] [ca]
356
+ WHERE [ca].[ContainerType] = 30
357
+ AND [ca].[ClassId] IN (SELECT [cc].[Id]
358
+ FROM [ec_Class] [cc]
359
+ JOIN [ec_Schema] [ss] ON [ss].[Id] = [cc].[SchemaId]
360
+ WHERE [cc].[Name] = 'IsMixIn'
361
+ AND [ss].[Name] = 'CoreCustomAttributes'))
362
362
  ORDER BY [Level] DESC`;
363
363
  return db.withSqliteStatement(sql, (stmt) => {
364
364
  stmt.bindId(1, classId);
@@ -544,7 +544,7 @@ class ChangesetECAdaptor {
544
544
  /**
545
545
  * dispose current instance and it will also dispose the changeset reader.
546
546
  */
547
- dispose() {
547
+ [Symbol.dispose]() {
548
548
  this.close();
549
549
  }
550
550
  /**