@itwin/frontend-tiles 3.7.0-dev.6 → 3.7.0-dev.8

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 (78) hide show
  1. package/.rush/temp/66eda89ae927be7163ab4886bb1a316597deda28.log +10 -0
  2. package/.rush/temp/operation/build_ci/state.json +1 -1
  3. package/lib/cjs/BatchedSpatialTileTreeRefs.d.ts +4 -3
  4. package/lib/cjs/BatchedSpatialTileTreeRefs.d.ts.map +1 -1
  5. package/lib/cjs/BatchedSpatialTileTreeRefs.js +133 -34
  6. package/lib/cjs/BatchedSpatialTileTreeRefs.js.map +1 -1
  7. package/lib/cjs/BatchedTile.d.ts +23 -23
  8. package/lib/cjs/BatchedTile.d.ts.map +1 -1
  9. package/lib/cjs/BatchedTile.js +251 -250
  10. package/lib/cjs/BatchedTile.js.map +1 -1
  11. package/lib/cjs/BatchedTileContentReader.d.ts +22 -22
  12. package/lib/cjs/BatchedTileContentReader.js +76 -76
  13. package/lib/cjs/BatchedTileContentReader.js.map +1 -1
  14. package/lib/cjs/BatchedTileTree.d.ts +22 -22
  15. package/lib/cjs/BatchedTileTree.js +52 -52
  16. package/lib/cjs/BatchedTileTree.js.map +1 -1
  17. package/lib/cjs/BatchedTileTreeReference.d.ts +21 -17
  18. package/lib/cjs/BatchedTileTreeReference.d.ts.map +1 -1
  19. package/lib/cjs/BatchedTileTreeReference.js +73 -49
  20. package/lib/cjs/BatchedTileTreeReference.js.map +1 -1
  21. package/lib/cjs/BatchedTileTreeSupplier.d.ts +5 -5
  22. package/lib/cjs/BatchedTileTreeSupplier.js +38 -38
  23. package/lib/cjs/BatchedTileTreeSupplier.js.map +1 -1
  24. package/lib/cjs/BatchedTilesetReader.d.ts +13 -13
  25. package/lib/cjs/BatchedTilesetReader.js +88 -88
  26. package/lib/cjs/BatchedTilesetReader.js.map +1 -1
  27. package/lib/cjs/FrontendTiles.d.ts +32 -14
  28. package/lib/cjs/FrontendTiles.d.ts.map +1 -1
  29. package/lib/cjs/FrontendTiles.js +26 -16
  30. package/lib/cjs/FrontendTiles.js.map +1 -1
  31. package/lib/cjs/LoggerCategory.d.ts +2 -2
  32. package/lib/cjs/LoggerCategory.js +9 -9
  33. package/lib/cjs/LoggerCategory.js.map +1 -1
  34. package/lib/cjs/frontend-tiles.d.ts +1 -1
  35. package/lib/cjs/frontend-tiles.js +17 -17
  36. package/lib/cjs/frontend-tiles.js.map +1 -1
  37. package/lib/cjs/tsconfig.tsbuildinfo +1 -1
  38. package/lib/esm/BatchedSpatialTileTreeRefs.d.ts +4 -3
  39. package/lib/esm/BatchedSpatialTileTreeRefs.d.ts.map +1 -1
  40. package/lib/esm/BatchedSpatialTileTreeRefs.js +129 -30
  41. package/lib/esm/BatchedSpatialTileTreeRefs.js.map +1 -1
  42. package/lib/esm/BatchedTile.d.ts +23 -23
  43. package/lib/esm/BatchedTile.d.ts.map +1 -1
  44. package/lib/esm/BatchedTile.js +247 -246
  45. package/lib/esm/BatchedTile.js.map +1 -1
  46. package/lib/esm/BatchedTileContentReader.d.ts +22 -22
  47. package/lib/esm/BatchedTileContentReader.js +72 -72
  48. package/lib/esm/BatchedTileContentReader.js.map +1 -1
  49. package/lib/esm/BatchedTileTree.d.ts +22 -22
  50. package/lib/esm/BatchedTileTree.js +48 -48
  51. package/lib/esm/BatchedTileTree.js.map +1 -1
  52. package/lib/esm/BatchedTileTreeReference.d.ts +21 -17
  53. package/lib/esm/BatchedTileTreeReference.d.ts.map +1 -1
  54. package/lib/esm/BatchedTileTreeReference.js +69 -45
  55. package/lib/esm/BatchedTileTreeReference.js.map +1 -1
  56. package/lib/esm/BatchedTileTreeSupplier.d.ts +5 -5
  57. package/lib/esm/BatchedTileTreeSupplier.js +34 -34
  58. package/lib/esm/BatchedTileTreeSupplier.js.map +1 -1
  59. package/lib/esm/BatchedTilesetReader.d.ts +13 -13
  60. package/lib/esm/BatchedTilesetReader.js +84 -84
  61. package/lib/esm/BatchedTilesetReader.js.map +1 -1
  62. package/lib/esm/FrontendTiles.d.ts +32 -14
  63. package/lib/esm/FrontendTiles.d.ts.map +1 -1
  64. package/lib/esm/FrontendTiles.js +21 -12
  65. package/lib/esm/FrontendTiles.js.map +1 -1
  66. package/lib/esm/LoggerCategory.d.ts +2 -2
  67. package/lib/esm/LoggerCategory.js +6 -6
  68. package/lib/esm/LoggerCategory.js.map +1 -1
  69. package/lib/esm/frontend-tiles.d.ts +1 -1
  70. package/lib/esm/frontend-tiles.js +5 -5
  71. package/lib/esm/frontend-tiles.js.map +1 -1
  72. package/lib/esm/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +11 -11
  74. package/src/BatchedSpatialTileTreeRefs.ts +122 -5
  75. package/src/BatchedTile.ts +2 -1
  76. package/src/BatchedTileTreeReference.ts +36 -4
  77. package/src/FrontendTiles.ts +31 -3
  78. package/.rush/temp/package-deps_build_ci.json +0 -21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/frontend-tiles",
3
- "version": "3.7.0-dev.6",
3
+ "version": "3.7.0-dev.8",
4
4
  "description": "Experimental alternative technique for visualizing the contents of iModels",
5
5
  "main": "lib/cjs/frontend-tiles.js",
6
6
  "module": "lib/esm/frontend-tiles.js",
@@ -22,18 +22,18 @@
22
22
  "url": "http://www.bentley.com"
23
23
  },
24
24
  "peerDependencies": {
25
- "@itwin/core-bentley": "3.7.0-dev.6",
26
- "@itwin/core-common": "3.7.0-dev.6",
27
- "@itwin/core-frontend": "3.7.0-dev.6",
28
- "@itwin/core-geometry": "3.7.0-dev.6"
25
+ "@itwin/core-bentley": "3.7.0-dev.8",
26
+ "@itwin/core-common": "3.7.0-dev.8",
27
+ "@itwin/core-frontend": "3.7.0-dev.8",
28
+ "@itwin/core-geometry": "3.7.0-dev.8"
29
29
  },
30
30
  "devDependencies": {
31
- "@itwin/build-tools": "3.7.0-dev.6",
32
- "@itwin/core-bentley": "3.7.0-dev.6",
33
- "@itwin/core-common": "3.7.0-dev.6",
34
- "@itwin/core-frontend": "3.7.0-dev.6",
35
- "@itwin/core-geometry": "3.7.0-dev.6",
36
- "@itwin/eslint-plugin": "3.7.0-dev.6",
31
+ "@itwin/build-tools": "3.7.0-dev.8",
32
+ "@itwin/core-bentley": "3.7.0-dev.8",
33
+ "@itwin/core-common": "3.7.0-dev.8",
34
+ "@itwin/core-frontend": "3.7.0-dev.8",
35
+ "@itwin/core-geometry": "3.7.0-dev.8",
36
+ "@itwin/eslint-plugin": "3.7.0-dev.8",
37
37
  "@types/node": "18.11.5",
38
38
  "eslint": "^7.11.0",
39
39
  "rimraf": "^3.0.2",
@@ -4,11 +4,13 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
 
6
6
  import {
7
- AttachToViewportArgs, IModelConnection, SpatialTileTreeReferences, SpatialViewState, TileTreeReference,
7
+ AttachToViewportArgs, IModelConnection, SpatialTileTreeReferences, SpatialViewState, TileTreeLoadStatus, TileTreeOwner, TileTreeReference,
8
8
  } from "@itwin/core-frontend";
9
9
  import { BatchedTileTreeReference } from "./BatchedTileTreeReference";
10
+ import { ComputeSpatialTilesetBaseUrl, createFallbackSpatialTileTreeReferences } from "./FrontendTiles";
10
11
 
11
- class TreeRefs implements SpatialTileTreeReferences {
12
+ // Obtains tiles pre-published by mesh export service.
13
+ class BatchedSpatialTileTreeReferences implements SpatialTileTreeReferences {
12
14
  private readonly _treeRef: BatchedTileTreeReference;
13
15
 
14
16
  public constructor(treeRef: BatchedTileTreeReference) {
@@ -36,8 +38,123 @@ class TreeRefs implements SpatialTileTreeReferences {
36
38
  }
37
39
  }
38
40
 
41
+ // A placeholder used by [[ProxySpatialTileTreeReferences]] until asynchronous loading completes.
42
+ // It provides a TileTreeOwner that never loads a tile tree.
43
+ // This ensures that [ViewState.areAllTileTreesLoaded]($frontend) will not return `true` while we are loading.
44
+ class ProxyTileTreeReference extends TileTreeReference {
45
+ private readonly _treeOwner: TileTreeOwner;
46
+
47
+ public constructor(iModel: IModelConnection) {
48
+ super();
49
+ this._treeOwner = {
50
+ iModel,
51
+ tileTree: undefined,
52
+ loadStatus: TileTreeLoadStatus.NotLoaded,
53
+ load: () => undefined,
54
+ dispose: () => { },
55
+ loadTree: async () => Promise.resolve(undefined),
56
+ };
57
+ }
58
+
59
+ public override get treeOwner() {
60
+ return this._treeOwner;
61
+ }
62
+
63
+ // eslint-disable-next-line @typescript-eslint/naming-convention
64
+ public override get _isLoadingComplete() {
65
+ return false;
66
+ }
67
+ }
68
+
69
+ // Serves as a placeholder while we asynchronously obtain the base URL for a pre-published tileset (or asynchronously determine
70
+ // that no such tileset exists).
71
+ class ProxySpatialTileTreeReferences implements SpatialTileTreeReferences {
72
+ // Once async loading completes, all methods will be forwarded to this implementation.
73
+ private _impl?: SpatialTileTreeReferences;
74
+ private readonly _proxyRef: ProxyTileTreeReference;
75
+ // Retained if attachToViewport is called while we are still loading; and reset if detachFromViewport is called while loading.
76
+ private _attachArgs?: AttachToViewportArgs;
77
+
78
+ public constructor(view: SpatialViewState, getBaseUrl: Promise<URL | undefined>) {
79
+ this._proxyRef = new ProxyTileTreeReference(view.iModel);
80
+ getBaseUrl.then((url: URL | undefined) => {
81
+ if (url) {
82
+ const ref = BatchedTileTreeReference.create(view, url);
83
+ this.setTreeRefs(new BatchedSpatialTileTreeReferences(ref));
84
+ } else {
85
+ this.setTreeRefs(createFallbackSpatialTileTreeReferences(view));
86
+ }
87
+ }).catch(() => {
88
+ this.setTreeRefs(createFallbackSpatialTileTreeReferences(view));
89
+ });
90
+ }
91
+
92
+ private setTreeRefs(refs: SpatialTileTreeReferences): void {
93
+ this._impl = refs;
94
+ if (this._attachArgs) {
95
+ this._impl.attachToViewport(this._attachArgs);
96
+ this._attachArgs.invalidateSymbologyOverrides();
97
+ this._attachArgs = undefined;
98
+ }
99
+ }
100
+
101
+ public update(): void {
102
+ this._impl?.update();
103
+ }
104
+
105
+ public attachToViewport(args: AttachToViewportArgs): void {
106
+ if (this._impl)
107
+ this._impl.attachToViewport(args);
108
+ else
109
+ this._attachArgs = args;
110
+ }
111
+
112
+ public detachFromViewport(): void {
113
+ if (this._impl)
114
+ this._impl.detachFromViewport();
115
+ else
116
+ this._attachArgs = undefined;
117
+ }
118
+
119
+ public setDeactivated(): void { }
120
+
121
+ public *[Symbol.iterator](): Iterator<TileTreeReference> {
122
+ if (this._impl) {
123
+ for (const ref of this._impl)
124
+ yield ref;
125
+ } else {
126
+ yield this._proxyRef;
127
+ }
128
+ }
129
+ }
130
+
131
+ const iModelToBaseUrl = new Map<IModelConnection, URL | null | Promise<URL | undefined>>();
132
+
39
133
  /** @internal */
40
- export function createBatchedSpatialTileTreeReferences(view: SpatialViewState, computeBaseUrl: (iModel: IModelConnection) => URL): SpatialTileTreeReferences {
41
- const treeRef = BatchedTileTreeReference.create(view, computeBaseUrl(view.iModel));
42
- return new TreeRefs(treeRef);
134
+ export function createBatchedSpatialTileTreeReferences(view: SpatialViewState, computeBaseUrl: ComputeSpatialTilesetBaseUrl): SpatialTileTreeReferences {
135
+ const iModel = view.iModel;
136
+ let entry = iModelToBaseUrl.get(iModel);
137
+ if (undefined === entry) {
138
+ const promise = computeBaseUrl(iModel);
139
+ iModelToBaseUrl.set(iModel, entry = promise);
140
+ iModel.onClose.addOnce(() => iModelToBaseUrl.delete(iModel));
141
+ promise.then((url: URL | undefined) => {
142
+ if (iModelToBaseUrl.has(iModel))
143
+ iModelToBaseUrl.set(iModel, url ?? null);
144
+ }).catch(() => {
145
+ if (iModelToBaseUrl.has(iModel))
146
+ iModelToBaseUrl.set(iModel, null);
147
+ });
148
+ }
149
+
150
+ if (null === entry) {
151
+ // No tileset exists for this iModel - use default tile generation instead.
152
+ return createFallbackSpatialTileTreeReferences(view);
153
+ }
154
+
155
+ if (entry instanceof Promise)
156
+ return new ProxySpatialTileTreeReferences(view, entry);
157
+
158
+ const ref = BatchedTileTreeReference.create(view, entry);
159
+ return new BatchedSpatialTileTreeReferences(ref);
43
160
  }
@@ -12,6 +12,7 @@ import {
12
12
  import { loggerCategory } from "./LoggerCategory";
13
13
  import { BatchedTileTree } from "./BatchedTileTree";
14
14
  import { BatchedTileContentReader } from "./BatchedTileContentReader";
15
+ import { getMaxLevelsToSkip } from "./FrontendTiles";
15
16
 
16
17
  /** @internal */
17
18
  export interface BatchedTileParams extends TileParams {
@@ -105,7 +106,7 @@ export class BatchedTile extends Tile {
105
106
  // This tile is too coarse to draw. Try to draw something more appropriate.
106
107
  // If it is not ready to draw, we may want to skip loading in favor of loading its descendants.
107
108
  // If we previously loaded and later unloaded content for this tile to free memory, don't force it to reload its content - proceed to children.
108
- const maximumLevelsToSkip = IModelApp.tileAdmin.maximumLevelsToSkip;
109
+ const maximumLevelsToSkip = getMaxLevelsToSkip();
109
110
  let canSkipThisTile = (this._hadGraphics && !this.hasGraphics) /* || this.depth < this.iModelTree.maxInitialTilesToSkip */ ;
110
111
  if (canSkipThisTile) {
111
112
  numSkipped = 1;
@@ -3,8 +3,11 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
 
6
- import { Id64 } from "@itwin/core-bentley";
7
- import { BatchType, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass } from "@itwin/core-common";
6
+ import { Id64, Id64String } from "@itwin/core-bentley";
7
+ import { Range3d } from "@itwin/core-geometry";
8
+ import {
9
+ BatchType, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass, ModelExtentsProps,
10
+ } from "@itwin/core-common";
8
11
  import {
9
12
  AttachToViewportArgs, SpatialViewState, TileTreeOwner, TileTreeReference,
10
13
  } from "@itwin/core-frontend";
@@ -15,6 +18,8 @@ export class BatchedTileTreeReference extends TileTreeReference implements Featu
15
18
  private readonly _treeOwner: TileTreeOwner;
16
19
  private readonly _view: SpatialViewState;
17
20
  private readonly _viewedModels = new Id64.Uint32Set();
21
+ private readonly _modelRanges = new Map<Id64String, Range3d>();
22
+ private _modelRangePromise?: Promise<void>;
18
23
  private _onModelSelectorChanged?: () => void;
19
24
 
20
25
  private constructor(treeOwner: TileTreeOwner, view: SpatialViewState) {
@@ -44,8 +49,35 @@ export class BatchedTileTreeReference extends TileTreeReference implements Featu
44
49
  public updateViewedModels(): void {
45
50
  this._viewedModels.clear();
46
51
  this._viewedModels.addIds(this._view.modelSelector.models);
47
- if (this._onModelSelectorChanged)
48
- this._onModelSelectorChanged();
52
+ if (!this._onModelSelectorChanged) {
53
+ // Don't bother updating model ranges if we're not attached to a viewport.
54
+ return;
55
+ }
56
+
57
+ this._onModelSelectorChanged();
58
+
59
+ this._modelRangePromise = undefined;
60
+ const modelIds = Array.from(this._view.modelSelector.models).filter((modelId) => !this._modelRanges.has(modelId));
61
+ if (modelIds.length === 0)
62
+ return;
63
+
64
+ const modelRangePromise = this._modelRangePromise = this._treeOwner.iModel.models.queryExtents(modelIds).then((extents: ModelExtentsProps[]) => {
65
+ if (modelRangePromise !== this._modelRangePromise)
66
+ return;
67
+
68
+ this._modelRangePromise = undefined;
69
+ for (const extent of extents)
70
+ this._modelRanges.set(extent.id, Range3d.fromJSON(extent.extents));
71
+ }).catch(() => { });
72
+ }
73
+
74
+ public override unionFitRange(union: Range3d): void {
75
+ this._viewedModels.forEach((low: number, high: number) => {
76
+ const id = Id64.fromUint32Pair(low, high);
77
+ const extent = this._modelRanges.get(id);
78
+ if (extent)
79
+ union.extendRange(extent);
80
+ });
49
81
  }
50
82
 
51
83
  public override getAppearanceProvider(): FeatureAppearanceProvider | undefined {
@@ -6,19 +6,47 @@
6
6
  import { IModelConnection, SpatialTileTreeReferences, SpatialViewState } from "@itwin/core-frontend";
7
7
  import { createBatchedSpatialTileTreeReferences } from "./BatchedSpatialTileTreeRefs";
8
8
 
9
+ /** A function that can provide the base URL where a tileset representing all of the spatial models in a given iModel are stored.
10
+ * The tileset is expected to reside at "baseUrl/tileset.json" and to have been produced by the [mesh export service](https://developer.bentley.com/apis/mesh-export/).
11
+ * If no such tileset exists for the given iModel, return `undefined`.
12
+ * @see [[FrontendTilesOptions.computeSpatialTilesetBaseUrl]].
13
+ * @alpha
14
+ */
15
+ export type ComputeSpatialTilesetBaseUrl = (iModel: IModelConnection) => Promise<URL | undefined>;
16
+
9
17
  /** Options supplied to [[initializeFrontendTiles]].
10
18
  * @alpha
11
19
  */
12
20
  export interface FrontendTilesOptions {
13
- /** Given an iModel, provide the base URL where the tiles are stored representing all of the spatial models in the iModel.
14
- * It is expected that baseUrl/tileset.json exists and contains a 3d tileset in which all relative URLs are relative to baseUrl.
21
+ /** Provide the base URL for the pre-published tileset for a given iModel. */
22
+ computeSpatialTilesetBaseUrl: ComputeSpatialTilesetBaseUrl;
23
+ /** The maximum number of levels in the tile tree to skip loading if they do not provide the desired level of detail for the current view.
24
+ * Default: 4.
25
+ * Reducing this value will load more intermediate tiles, which causes more gradual refinement: low-resolution tiles will display quickly, followed more gradually by
26
+ * successively higher-resolution ones.
27
+ * Increasing the value jumps more directly to tiles of the exact level of detail desired, which may load more, smaller tiles up-front, leaving some areas of the view
28
+ * vacant for longer; and when zooming out some newly-exposed areas of the view may remain vacant for longer because no lower-resolution tiles are initially available to
29
+ * fill them. However, tiles close to the viewer (and therefore likely of most interest to them) will refine to an appropriate level of detail more quickly.
15
30
  */
16
- computeSpatialTilesetBaseUrl: (iModel: IModelConnection) => URL;
31
+ maxLevelsToSkip?: number;
32
+ }
33
+
34
+ /** @internal */
35
+ export const createFallbackSpatialTileTreeReferences = SpatialTileTreeReferences.create;
36
+
37
+ let maxLevelsToSkip = 4;
38
+
39
+ /** @internal */
40
+ export function getMaxLevelsToSkip(): number {
41
+ return maxLevelsToSkip;
17
42
  }
18
43
 
19
44
  /** Initialize the frontend-tiles package to obtain tiles for spatial views.
20
45
  * @alpha
21
46
  */
22
47
  export function initializeFrontendTiles(options: FrontendTilesOptions): void {
48
+ if (undefined !== options.maxLevelsToSkip && options.maxLevelsToSkip >= 0)
49
+ maxLevelsToSkip = options.maxLevelsToSkip;
50
+
23
51
  SpatialTileTreeReferences.create = (view: SpatialViewState) => createBatchedSpatialTileTreeReferences(view, options.computeSpatialTilesetBaseUrl);
24
52
  }
@@ -1,21 +0,0 @@
1
- {
2
- "files": {
3
- "extensions/frontend-tiles/.rush/temp/shrinkwrap-deps.json": "26b8d7130ce28f6f411cc64fa48f47de86afe4d9",
4
- "extensions/frontend-tiles/LICENSE.md": "77dfb5043040cc16a3611930daba56d86ef54334",
5
- "extensions/frontend-tiles/README.md": "4ea38e83e862cdfa6fab08adc92eb62bcb2fe238",
6
- "extensions/frontend-tiles/config/rush-project.json": "10683a57d3bd2b8ae364fbe8f844c01619f1a821",
7
- "extensions/frontend-tiles/package.json": "a824dc1f48483b2d57e4505147140e84857da0b4",
8
- "extensions/frontend-tiles/src/BatchedSpatialTileTreeRefs.ts": "6e3311dba4539560b7585d640676d98f0c33912a",
9
- "extensions/frontend-tiles/src/BatchedTile.ts": "b67686d0bcea3a6a1a9c563a1574d82e546ee9fa",
10
- "extensions/frontend-tiles/src/BatchedTileContentReader.ts": "7a1392a3e55882eedd68f0fb098db9009f190a3e",
11
- "extensions/frontend-tiles/src/BatchedTileTree.ts": "bc27ba7b54de36cfe58ce3ecd62c7795569d3509",
12
- "extensions/frontend-tiles/src/BatchedTileTreeReference.ts": "0c57e84a7d361ef6d81c1c7c419e9f5891683843",
13
- "extensions/frontend-tiles/src/BatchedTileTreeSupplier.ts": "916587d978864b4f9595b560ee1bac3033a123f5",
14
- "extensions/frontend-tiles/src/BatchedTilesetReader.ts": "0cc90a58fc8f4cafab8c2bbdac6dc1186337b4f0",
15
- "extensions/frontend-tiles/src/FrontendTiles.ts": "441dade9ada6338bf2e4db805b2af944f8f17a36",
16
- "extensions/frontend-tiles/src/LoggerCategory.ts": "458e67157ea150f6bff37674320dfc8cf5886049",
17
- "extensions/frontend-tiles/src/frontend-tiles.ts": "2778da0ad9afc43273e7105641ef1213edc47a83",
18
- "extensions/frontend-tiles/tsconfig.json": "67be9deac4eea3b76c3e1a66b0e9004ed0f6255e"
19
- },
20
- "arguments": "npm run -s build && npm run -s build:esm "
21
- }