@shapediver/viewer.session-engine.session-engine 2.10.1-rc.0 → 2.12.0

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 (47) hide show
  1. package/dist/implementation/OutputDelayException.js +5 -1
  2. package/dist/implementation/OutputDelayException.js.map +1 -1
  3. package/dist/implementation/OutputLoader.d.ts +4 -1
  4. package/dist/implementation/OutputLoader.d.ts.map +1 -1
  5. package/dist/implementation/OutputLoader.js +41 -30
  6. package/dist/implementation/OutputLoader.js.map +1 -1
  7. package/dist/implementation/SessionData.js +6 -2
  8. package/dist/implementation/SessionData.js.map +1 -1
  9. package/dist/implementation/SessionEngine.d.ts +22 -12
  10. package/dist/implementation/SessionEngine.d.ts.map +1 -1
  11. package/dist/implementation/SessionEngine.js +442 -301
  12. package/dist/implementation/SessionEngine.js.map +1 -1
  13. package/dist/implementation/SessionOutputData.js +6 -2
  14. package/dist/implementation/SessionOutputData.js.map +1 -1
  15. package/dist/implementation/SessionTreeNode.js +6 -2
  16. package/dist/implementation/SessionTreeNode.js.map +1 -1
  17. package/dist/implementation/dto/Export.js +17 -13
  18. package/dist/implementation/dto/Export.js.map +1 -1
  19. package/dist/implementation/dto/FileParameter.js +34 -7
  20. package/dist/implementation/dto/FileParameter.js.map +1 -1
  21. package/dist/implementation/dto/Output.d.ts +6 -6
  22. package/dist/implementation/dto/Output.d.ts.map +1 -1
  23. package/dist/implementation/dto/Output.js +21 -14
  24. package/dist/implementation/dto/Output.js.map +1 -1
  25. package/dist/implementation/dto/Parameter.js +60 -33
  26. package/dist/implementation/dto/Parameter.js.map +1 -1
  27. package/dist/index.js +20 -11
  28. package/dist/index.js.map +1 -1
  29. package/dist/interfaces/ISessionData.js +2 -1
  30. package/dist/interfaces/ISessionEngine.d.ts +12 -8
  31. package/dist/interfaces/ISessionEngine.d.ts.map +1 -1
  32. package/dist/interfaces/ISessionEngine.js +7 -5
  33. package/dist/interfaces/ISessionEngine.js.map +1 -1
  34. package/dist/interfaces/ISessionOutputData.js +2 -1
  35. package/dist/interfaces/ISessionTreeNode.js +2 -1
  36. package/dist/interfaces/dto/IExport.js +2 -1
  37. package/dist/interfaces/dto/IFileParameter.js +2 -1
  38. package/dist/interfaces/dto/IOutput.d.ts +1 -1
  39. package/dist/interfaces/dto/IOutput.d.ts.map +1 -1
  40. package/dist/interfaces/dto/IOutput.js +2 -1
  41. package/dist/interfaces/dto/IParameter.js +2 -1
  42. package/package.json +9 -9
  43. package/src/implementation/OutputLoader.ts +16 -5
  44. package/src/implementation/SessionEngine.ts +682 -500
  45. package/src/implementation/dto/Output.ts +16 -15
  46. package/src/interfaces/ISessionEngine.ts +51 -44
  47. package/src/interfaces/dto/IOutput.ts +1 -1
@@ -1,8 +1,8 @@
1
- import { ShapeDiverResponseModelComputationStatus, ShapeDiverResponseOutput } from "@shapediver/sdk.geometry-api-sdk-v2";
2
- import { ITreeNode, TreeNode } from "@shapediver/viewer.shared.node-tree";
3
- import { InputValidator, UuidGenerator, Logger } from "@shapediver/viewer.shared.services";
4
- import { IOutput, ShapeDiverResponseOutputContent, ShapeDiverResponseOutputChunk } from "../../interfaces/dto/IOutput";
5
- import { SessionEngine } from "../SessionEngine";
1
+ import { InputValidator, Logger, UuidGenerator } from '@shapediver/viewer.shared.services';
2
+ import { IOutput, ShapeDiverResponseOutputChunk, ShapeDiverResponseOutputContent } from '../../interfaces/dto/IOutput';
3
+ import { ITreeNode, TreeNode } from '@shapediver/viewer.shared.node-tree';
4
+ import { SessionEngine } from '../SessionEngine';
5
+ import { ShapeDiverResponseModelComputationStatus, ShapeDiverResponseOutput } from '@shapediver/sdk.geometry-api-sdk-v2';
6
6
 
7
7
  export class Output implements IOutput {
8
8
  // #region Properties (23)
@@ -47,7 +47,7 @@ export class Output implements IOutput {
47
47
 
48
48
  // #endregion Constructors (1)
49
49
 
50
- // #region Public Accessors (28)
50
+ // #region Public Accessors (30)
51
51
 
52
52
  public get bbmax(): number[] | undefined {
53
53
  return this.#bbmax;
@@ -169,10 +169,15 @@ export class Output implements IOutput {
169
169
  this.#version = value;
170
170
  }
171
171
 
172
- // #endregion Public Accessors (28)
172
+ // #endregion Public Accessors (30)
173
173
 
174
- // #region Public Methods (3)
174
+ // #region Public Methods (4)
175
175
 
176
+ public async triggerUpdateCallback(newNode?: TreeNode, oldNode?: TreeNode) {
177
+ if (this.#updateCallback) await Promise.resolve(this.#updateCallback(newNode, oldNode));
178
+ }
179
+
180
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
176
181
  public updateOutput(newNode?: TreeNode, oldNode?: TreeNode) {
177
182
  const outputDef = this.#sessionEngine.outputs[this.id];
178
183
  this.updateOutputDefinition(outputDef);
@@ -187,14 +192,10 @@ export class Output implements IOutput {
187
192
  }
188
193
  }
189
194
 
190
- public triggerUpdateCallback(newNode?: TreeNode, oldNode?: TreeNode) {
191
- if (this.#updateCallback) this.#updateCallback(newNode, oldNode);
192
- }
193
-
194
- public async updateOutputContent(outputContent: ShapeDiverResponseOutputContent[], preventUpdate: boolean = false): Promise<ITreeNode | undefined> {
195
+ public async updateOutputContent(outputContent: ShapeDiverResponseOutputContent[], preventUpdate: boolean = false, waitForViewportUpdate: boolean = false): Promise<ITreeNode | undefined> {
195
196
  this.#sessionEngine.outputs[this.id].content = outputContent;
196
197
  this.#sessionEngine.outputs[this.id].version = this.#uuidGenerator.create();
197
- if (!preventUpdate) await this.#sessionEngine.updateOutputs();
198
+ if (!preventUpdate) await this.#sessionEngine.updateOutputs(undefined, waitForViewportUpdate);
198
199
  return this.node;
199
200
  }
200
201
 
@@ -218,5 +219,5 @@ export class Output implements IOutput {
218
219
  this.#hidden = outputDef.hidden;
219
220
  }
220
221
 
221
- // #endregion Public Methods (3)
222
+ // #endregion Public Methods (4)
222
223
  }
@@ -1,5 +1,5 @@
1
- import { ShapeDiverRequestGltfUploadQueryConversion, ShapeDiverResponseDto, ShapeDiverResponseExport, ShapeDiverResponseOutput, ShapeDiverResponseParameter } from '@shapediver/sdk.geometry-api-sdk-v2';
2
- import { ITreeNode, TreeNode } from '@shapediver/viewer.shared.node-tree'
1
+ import { ShapeDiverRequestCustomization, ShapeDiverRequestExport, ShapeDiverRequestGltfUploadQueryConversion, ShapeDiverResponseDto, ShapeDiverResponseExport } from '@shapediver/sdk.geometry-api-sdk-v2';
2
+ import { ITreeNode } from '@shapediver/viewer.shared.node-tree';
3
3
  import { SettingsEngine } from '@shapediver/viewer.shared.services';
4
4
  import { OutputLoaderTaskEventInfo } from '../implementation/OutputLoader';
5
5
  import { IExport } from './dto/IExport';
@@ -62,48 +62,53 @@ export enum PARAMETER_VISUALIZATION {
62
62
  }
63
63
 
64
64
  export interface ISettingsSections {
65
+ // #region Properties (2)
66
+
65
67
  session?: {
66
- parameter?: {
67
- /** Option to update the displayname of the parameters (default: false) */
68
- displayname?: boolean,
69
- /** Option to update the order of the parameters (default: false) */
70
- order?: boolean,
71
- /** Option to update the hidden state of the parameters (default: false) */
72
- hidden?: boolean,
73
- /** Option to update the value of the parameters (default: false) */
74
- value?: boolean
75
- },
76
- export?: {
77
- /** Option to update the displayname of the exports (default: false) */
78
- displayname?: boolean,
79
- /** Option to update the order of the exports (default: false) */
80
- order?: boolean,
81
- /** Option to update the hidden state of the exports (default: false) */
82
- hidden?: boolean
83
- }
68
+ parameter?: {
69
+ /** Option to update the displayname of the parameters (default: false) */
70
+ displayname?: boolean,
71
+ /** Option to update the order of the parameters (default: false) */
72
+ order?: boolean,
73
+ /** Option to update the hidden state of the parameters (default: false) */
74
+ hidden?: boolean,
75
+ /** Option to update the value of the parameters (default: false) */
76
+ value?: boolean
77
+ },
78
+ export?: {
79
+ /** Option to update the displayname of the exports (default: false) */
80
+ displayname?: boolean,
81
+ /** Option to update the order of the exports (default: false) */
82
+ order?: boolean,
83
+ /** Option to update the hidden state of the exports (default: false) */
84
+ hidden?: boolean
85
+ }
84
86
  },
85
87
  viewport?: {
86
- /** Option to update the ar settings (default: false) */
87
- ar?: boolean,
88
- /** Option to update the scene settings (default: false) */
89
- scene?: boolean,
90
- /** Option to update the camera settings (default: false) */
91
- camera?: boolean,
92
- /** Option to update the light settings (default: false) */
93
- light?: boolean,
94
- /** Option to update the environment settings (default: false) */
95
- environment?: boolean
96
- /** Option to update the general settings (default: false) */
97
- general?: boolean
98
- /** Option to update the postprocessing settings (default: false) */
99
- postprocessing?: boolean
88
+ /** Option to update the ar settings (default: false) */
89
+ ar?: boolean,
90
+ /** Option to update the scene settings (default: false) */
91
+ scene?: boolean,
92
+ /** Option to update the camera settings (default: false) */
93
+ camera?: boolean,
94
+ /** Option to update the light settings (default: false) */
95
+ light?: boolean,
96
+ /** Option to update the environment settings (default: false) */
97
+ environment?: boolean
98
+ /** Option to update the general settings (default: false) */
99
+ general?: boolean
100
+ /** Option to update the postprocessing settings (default: false) */
101
+ postprocessing?: boolean
100
102
  }
101
- };
103
+
104
+ // #endregion Properties (2)
105
+ }
102
106
 
103
107
  export interface ISessionEngine {
104
- // #region Properties (11)
108
+ // #region Properties (13)
105
109
 
106
110
  readonly jwtToken?: string;
111
+
107
112
  canUploadGLTF: boolean;
108
113
  exports: { [key: string]: IExport };
109
114
  guid?: string;
@@ -111,36 +116,38 @@ export interface ISessionEngine {
111
116
  initialized: boolean;
112
117
  modelViewUrl: string;
113
118
  outputs: { [key: string]: IOutput };
114
- parameters: { [key: string]: IParameter<any> };
119
+ parameters: { [key: string]: IParameter<unknown> };
115
120
  refreshJwtToken: (() => Promise<string>) | undefined;
116
121
  settingsEngine: SettingsEngine;
117
122
  ticket?: string;
118
123
  updateCallback: ((newNode: ITreeNode, oldNode: ITreeNode) => void) | null;
119
124
 
120
- // #endregion Properties (11)
125
+ // #endregion Properties (13)
121
126
 
122
- // #region Public Methods (18)
127
+ // #region Public Methods (21)
123
128
 
124
129
  applySettings(response: ShapeDiverResponseDto, sections?: ISettingsSections): void;
125
130
  canGoBack(): boolean;
126
131
  canGoForward(): boolean;
127
132
  close(): Promise<void>;
128
- customize(force: boolean): Promise<ITreeNode>;
129
- customizeParallel(parameterValues: { [key: string]: string }): Promise<ITreeNode>;
133
+ customize(force: boolean, waitForViewportUpdate?: boolean):Promise<ITreeNode | ShapeDiverResponseDto>;
134
+ customizeParallel(parameterValues: { [key: string]: string }, loadOutputs: boolean): Promise<ITreeNode | ShapeDiverResponseDto>;
130
135
  goBack(): Promise<ITreeNode>;
131
136
  goForward(): Promise<ITreeNode>;
132
137
  init(parameterValues?: { [key: string]: string; }): Promise<void>;
138
+ loadCachedOutputsParallel(outputMapping: { [key: string]: string }, taskEventInfo?: OutputLoaderTaskEventInfo, retry?: boolean): Promise<{ [key: string]: ITreeNode | undefined }>;
133
139
  loadOutputs(cancelRequest: () => boolean, taskEventInfo: OutputLoaderTaskEventInfo): Promise<ITreeNode>;
134
140
  loadOutputsParallel(responseDto: ShapeDiverResponseDto, cancelRequest: () => boolean, taskEventInfo: OutputLoaderTaskEventInfo): Promise<ITreeNode>;
135
- requestExport(exportId: string, parameters: { [key: string]: string }, maxWaitTime: number): Promise<ShapeDiverResponseExport>;
141
+ requestExport(exportId: string, parameters: ShapeDiverRequestCustomization, maxWaitTime: number): Promise<ShapeDiverResponseExport>;
142
+ requestExports(body: ShapeDiverRequestExport, maxWaitMsec?: number): Promise<ShapeDiverResponseDto>;
136
143
  resetSettings(sections?: ISettingsSections): void;
137
144
  saveDefaultParameterValues(): Promise<boolean>;
138
145
  saveSettings(viewportId?: string): Promise<boolean>;
139
146
  saveUiProperties(): Promise<boolean>;
140
147
  setJwtToken(token: string): Promise<void>;
141
- updateOutputs(taskEventInfo?: OutputLoaderTaskEventInfo): Promise<ITreeNode>;
148
+ updateOutputs(taskEventInfo?: OutputLoaderTaskEventInfo, waitForViewportUpdate?: boolean): Promise<ITreeNode>;
142
149
  uploadFile(parameterId: string, data: File, type: string): Promise<string>;
143
150
  uploadGLTF(blob: Blob, conversion?: ShapeDiverRequestGltfUploadQueryConversion): Promise<ShapeDiverResponseDto>;
144
151
 
145
- // #endregion Public Methods (18)
152
+ // #endregion Public Methods (21)
146
153
  }
@@ -39,7 +39,7 @@ export interface IOutput extends ShapeDiverResponseOutput {
39
39
 
40
40
  triggerUpdateCallback(newNode?: ITreeNode, oldNode?: ITreeNode): void;
41
41
  updateOutput(newNode?: ITreeNode, oldNode?: ITreeNode): void;
42
- updateOutputContent(content: ShapeDiverResponseOutputContent[], preventUpdate?: boolean): Promise<ITreeNode | undefined>;
42
+ updateOutputContent(content: ShapeDiverResponseOutputContent[], preventUpdate?: boolean, waitForViewportUpdate?: boolean): Promise<ITreeNode | undefined>;
43
43
  updateOutputDefinition(outputDef: ShapeDiverResponseOutput): void;
44
44
 
45
45
  // #endregion Public Methods (1)