@finos/legend-application 15.0.66 → 15.0.67

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.
@@ -46,6 +46,8 @@ export declare abstract class LegendApplication {
46
46
  protected baseAddress: string;
47
47
  protected pluginRegister?: ((pluginManager: LegendApplicationPluginManager<LegendApplicationPlugin>, config: LegendApplicationConfig) => void) | undefined;
48
48
  protected _isConfigured: boolean;
49
+ protected downloadHelperServiceWorkerPath: string | undefined;
50
+ protected downloadHelper: boolean;
49
51
  protected constructor(pluginManager: LegendApplicationPluginManager<LegendApplicationPlugin>);
50
52
  setup(options: {
51
53
  /** Base URL of the application. e.g. /studio/, /query/ */
@@ -60,6 +62,7 @@ export declare abstract class LegendApplication {
60
62
  protected withBasePlugins(plugins: AbstractPlugin[]): LegendApplication;
61
63
  withPresets(presets: AbstractPreset[]): LegendApplication;
62
64
  withPlugins(plugins: AbstractPlugin[]): LegendApplication;
65
+ withDownloadHelper(path?: string | undefined): LegendApplication;
63
66
  fetchApplicationConfiguration(baseUrl: string): Promise<[LegendApplicationConfig, ExtensionsConfigurationData]>;
64
67
  loadDocumentationRegistryData(config: LegendApplicationConfig): Promise<void>;
65
68
  protected abstract configureApplication(input: LegendApplicationConfigurationInput<LegendApplicationConfigurationData>): Promise<LegendApplicationConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"LegendApplication.d.ts","sourceRoot":"","sources":["../../src/application/LegendApplication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LegendApplication.d.ts","sourceRoot":"","sources":["../../src/application/LegendApplication.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ import { assertErrorThrown, LogEvent, guaranteeNonEmptyString, assertNonNullable
17
17
  import { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';
18
18
  import { collectKeyedDocumentationEntriesFromConfig, } from '../stores/DocumentationService.js';
19
19
  import { ApplicationStore } from '../stores/ApplicationStore.js';
20
+ import { registerDownloadHelperServiceWorker } from '../util/DownloadHelperServiceWorker.js';
20
21
  export class LegendApplicationLogger {
21
22
  }
22
23
  export class LegendApplicationWebConsole extends LegendApplicationLogger {
@@ -46,6 +47,8 @@ export class LegendApplication {
46
47
  baseAddress;
47
48
  pluginRegister;
48
49
  _isConfigured = false;
50
+ downloadHelperServiceWorkerPath;
51
+ downloadHelper = false;
49
52
  constructor(pluginManager) {
50
53
  this.pluginManager = pluginManager;
51
54
  this.logger = new LegendApplicationWebConsole();
@@ -72,6 +75,11 @@ export class LegendApplication {
72
75
  this.pluginManager.usePlugins([...this.basePlugins, ...plugins]);
73
76
  return this;
74
77
  }
78
+ withDownloadHelper(path) {
79
+ this.downloadHelper = true;
80
+ this.downloadHelperServiceWorkerPath = path;
81
+ return this;
82
+ }
75
83
  async fetchApplicationConfiguration(baseUrl) {
76
84
  const client = new NetworkClient();
77
85
  // app config
@@ -171,6 +179,9 @@ export class LegendApplication {
171
179
  // load application
172
180
  await this.loadApplication(applicationStore);
173
181
  this.logger.info(LogEvent.create(APPLICATION_EVENT.APPLICATION_LOAD__SUCCESS), 'Legend application loaded');
182
+ if (this.downloadHelper) {
183
+ registerDownloadHelperServiceWorker(this.downloadHelperServiceWorkerPath);
184
+ }
174
185
  }
175
186
  catch (error) {
176
187
  assertErrorThrown(error);
@@ -1 +1 @@
1
- {"version":3,"file":"LegendApplication.js","sourceRoot":"","sources":["../../src/application/LegendApplication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LegendApplication.js","sourceRoot":"","sources":["../../src/application/LegendApplication.ts"],"names":[],"mappings":"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"}
package/lib/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /** @license @finos/legend-application v15.0.66
1
+ /** @license @finos/legend-application v15.0.67
2
2
  * Copyright (c) 2020-present, Goldman Sachs
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
package/lib/index.d.ts CHANGED
@@ -29,6 +29,7 @@ export * from './components/useCommands.js';
29
29
  export { forceDispatchKeyboardEvent, BackdropContainer, } from './components/ApplicationComponentFrameworkProvider.js';
30
30
  export * from './stores/ApplicationStore.js';
31
31
  export { NAVIGATION_ZONE_SEPARATOR, NavigationService, type NavigationAddress, type NavigationLocation, type NavigationZone, } from './stores/navigation/NavigationService.js';
32
+ export { downloadStream } from './util/DownloadHelperServiceWorker.js';
32
33
  export * from './stores/storage/ApplicationStorage.js';
33
34
  export * from './stores/storage/StorageService.js';
34
35
  export * from './stores/SettingService.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,+BAA+B,CAAC;AAE9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,iDAAiD,CAAC;AAEhE,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAE1F,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,iDAAiD,CAAC;AAChE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,uDAAuD,CAAC;AAE/D,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,0CAA0C,CAAC;AAClD,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iDAAiD,CAAC;AAChE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,+BAA+B,CAAC;AAE9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,iDAAiD,CAAC;AAEhE,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAE1F,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,iDAAiD,CAAC;AAChE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,uDAAuD,CAAC;AAE/D,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iDAAiD,CAAC;AAChE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC"}
package/lib/index.js CHANGED
@@ -29,6 +29,7 @@ export * from './components/useCommands.js';
29
29
  export { forceDispatchKeyboardEvent, BackdropContainer, } from './components/ApplicationComponentFrameworkProvider.js';
30
30
  export * from './stores/ApplicationStore.js';
31
31
  export { NAVIGATION_ZONE_SEPARATOR, NavigationService, } from './stores/navigation/NavigationService.js';
32
+ export { downloadStream } from './util/DownloadHelperServiceWorker.js';
32
33
  export * from './stores/storage/ApplicationStorage.js';
33
34
  export * from './stores/storage/StorageService.js';
34
35
  export * from './stores/SettingService.js';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,+BAA+B,CAAC;AAE9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,iDAAiD,CAAC;AAEhE,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAE1F,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,iDAAiD,CAAC;AAChE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,uDAAuD,CAAC;AAE/D,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EACL,yBAAyB,EACzB,iBAAiB,GAIlB,MAAM,0CAA0C,CAAC;AAClD,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iDAAiD,CAAC;AAChE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,+BAA+B,CAAC;AAE9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,iDAAiD,CAAC;AAEhE,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAE1F,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,iDAAiD,CAAC;AAChE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,uDAAuD,CAAC;AAE/D,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EACL,yBAAyB,EACzB,iBAAiB,GAIlB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iDAAiD,CAAC;AAChE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC"}
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finos/legend-application",
3
- "version": "15.0.66",
3
+ "version": "15.0.67",
4
4
  "description": "Legend application core",
5
5
  "keywords": [
6
6
  "legend",
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { type ContentType } from '@finos/legend-shared';
17
+ export declare function downloadStream(response: Response, filename: string, contentType: ContentType): Promise<void>;
18
+ export declare function registerDownloadHelperServiceWorker(workerPath?: string | undefined): void;
19
+ //# sourceMappingURL=DownloadHelperServiceWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DownloadHelperServiceWorker.d.ts","sourceRoot":"","sources":["../../src/util/DownloadHelperServiceWorker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,WAAW,EAGjB,MAAM,sBAAsB,CAAC;AAqG9B,wBAAsB,cAAc,CAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAgB,mCAAmC,CACjD,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,GAC9B,IAAI,CAsBN"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { downloadFileUsingDataURI, guaranteeNonNullable, } from '@finos/legend-shared';
17
+ var DOWNLOAD_EVENTS;
18
+ (function (DOWNLOAD_EVENTS) {
19
+ DOWNLOAD_EVENTS["TAG_REQUEST"] = "download-request";
20
+ DOWNLOAD_EVENTS["TAG_RESPONSE"] = "download-response";
21
+ DOWNLOAD_EVENTS["STREAM_CLOSED"] = "#stream-closed";
22
+ DOWNLOAD_EVENTS["STREAM_ABORTED"] = "#stream-aborted";
23
+ })(DOWNLOAD_EVENTS || (DOWNLOAD_EVENTS = {}));
24
+ function createWritableStreamFromMessageChannel(channel) {
25
+ return new WritableStream({
26
+ write(chunk) {
27
+ channel.port1.postMessage(chunk);
28
+ },
29
+ close() {
30
+ channel.port1.postMessage(DOWNLOAD_EVENTS.STREAM_CLOSED);
31
+ },
32
+ abort() {
33
+ channel.port1.postMessage(DOWNLOAD_EVENTS.STREAM_ABORTED);
34
+ closeMessagePort(channel.port1);
35
+ closeMessagePort(channel.port2);
36
+ },
37
+ });
38
+ }
39
+ function closeMessagePort(port) {
40
+ port.onmessage = null;
41
+ port.close();
42
+ }
43
+ async function getServiceWorker() {
44
+ if (!('serviceWorker' in navigator)) {
45
+ return Promise.reject(new Error('Service worker is not available. Service Worker requires HTTPS protocol'));
46
+ }
47
+ return navigator.serviceWorker
48
+ .getRegistration()
49
+ .then((workerRegistration) => {
50
+ if (workerRegistration === undefined) {
51
+ return undefined;
52
+ }
53
+ const pending = workerRegistration.installing ?? workerRegistration.waiting;
54
+ return (workerRegistration.active ??
55
+ new Promise((resolve) => {
56
+ // if not activated, add listener to waiting or installing registration
57
+ const listener = () => {
58
+ if (pending?.state === 'activated') {
59
+ pending.removeEventListener('statechange', listener);
60
+ resolve(workerRegistration.active ?? undefined);
61
+ }
62
+ };
63
+ pending?.addEventListener('statechange', listener);
64
+ }));
65
+ });
66
+ }
67
+ function createDownloadRequest(filename) {
68
+ const PREFIX = 6;
69
+ const prefix = String(Math.random()).slice(-PREFIX);
70
+ const url = new URL(`${prefix}/${filename}`, window.location.href).toString();
71
+ return { tag: DOWNLOAD_EVENTS.TAG_REQUEST, filename, url };
72
+ }
73
+ function handleServiceWorkerDownloadResponse(event) {
74
+ const data = event.data;
75
+ if (data?.tag === DOWNLOAD_EVENTS.TAG_RESPONSE && data.downloadUrl.length) {
76
+ openInIframe(data.downloadUrl);
77
+ }
78
+ }
79
+ function openInIframe(src) {
80
+ const iframe = document.createElement('iframe');
81
+ iframe.hidden = true;
82
+ iframe.src = src;
83
+ document.body.appendChild(iframe);
84
+ return iframe;
85
+ }
86
+ export async function downloadStream(response, filename, contentType) {
87
+ const responseBody = guaranteeNonNullable(response.body);
88
+ // creates communication channel with service worker with response handler
89
+ const channel = new MessageChannel();
90
+ channel.port1.onmessage = handleServiceWorkerDownloadResponse;
91
+ // grabs service worker and handles it download along with response channel port
92
+ const serviceWorker = await getServiceWorker();
93
+ if (!serviceWorker) {
94
+ // TODO: remove once service worker workflow is tested
95
+ const text = await response.text();
96
+ // eslint-disable-next-line no-console
97
+ console.debug('service worker not found. Using in memory file download');
98
+ downloadFileUsingDataURI(filename, text, contentType);
99
+ return;
100
+ }
101
+ // eslint-disable-next-line no-console
102
+ console.debug('Service worker found. Continuing download');
103
+ const downloadRequest = createDownloadRequest(filename);
104
+ serviceWorker.postMessage(downloadRequest, [channel.port2]);
105
+ // creates new data stream over communication channel and pipes given stream in it
106
+ responseBody
107
+ .pipeTo(createWritableStreamFromMessageChannel(channel))
108
+ .then(() => {
109
+ // TODO: trace success
110
+ })
111
+ .catch(() => {
112
+ // TODO: fail
113
+ });
114
+ }
115
+ export function registerDownloadHelperServiceWorker(workerPath) {
116
+ if ('serviceWorker' in navigator) {
117
+ const path = workerPath ?? '/ServiceWorker.js';
118
+ navigator.serviceWorker
119
+ .register(path)
120
+ .then((reg) => {
121
+ // TODO: add trace
122
+ // eslint-disable-next-line no-console
123
+ console.debug(`register service worker success with path: ${path}`, reg);
124
+ })
125
+ .catch((error) => {
126
+ // TODO: add trace
127
+ // eslint-disable-next-line no-console
128
+ console.debug(`register service worker error with path: ${path}`, error);
129
+ });
130
+ }
131
+ }
132
+ //# sourceMappingURL=DownloadHelperServiceWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DownloadHelperServiceWorker.js","sourceRoot":"","sources":["../../src/util/DownloadHelperServiceWorker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finos/legend-application",
3
- "version": "15.0.66",
3
+ "version": "15.0.67",
4
4
  "description": "Legend application core",
5
5
  "keywords": [
6
6
  "legend",
@@ -68,7 +68,7 @@
68
68
  "xterm-addon-webgl": "0.16.0"
69
69
  },
70
70
  "devDependencies": {
71
- "@finos/legend-dev-utils": "2.1.2",
71
+ "@finos/legend-dev-utils": "2.1.3",
72
72
  "@jest/globals": "29.7.0",
73
73
  "cross-env": "7.0.3",
74
74
  "eslint": "8.52.0",
@@ -41,6 +41,7 @@ import {
41
41
  } from '../stores/DocumentationService.js';
42
42
  import type { LegendApplicationPlugin } from '../stores/LegendApplicationPlugin.js';
43
43
  import { ApplicationStore } from '../stores/ApplicationStore.js';
44
+ import { registerDownloadHelperServiceWorker } from '../util/DownloadHelperServiceWorker.js';
44
45
 
45
46
  export abstract class LegendApplicationLogger {
46
47
  abstract debug(event: LogEvent, ...data: unknown[]): void;
@@ -109,6 +110,9 @@ export abstract class LegendApplication {
109
110
  | undefined;
110
111
  protected _isConfigured = false;
111
112
 
113
+ protected downloadHelperServiceWorkerPath: string | undefined;
114
+ protected downloadHelper = false;
115
+
112
116
  protected constructor(
113
117
  pluginManager: LegendApplicationPluginManager<LegendApplicationPlugin>,
114
118
  ) {
@@ -157,6 +161,12 @@ export abstract class LegendApplication {
157
161
  return this;
158
162
  }
159
163
 
164
+ withDownloadHelper(path?: string | undefined): LegendApplication {
165
+ this.downloadHelper = true;
166
+ this.downloadHelperServiceWorkerPath = path;
167
+ return this;
168
+ }
169
+
160
170
  async fetchApplicationConfiguration(
161
171
  baseUrl: string,
162
172
  ): Promise<[LegendApplicationConfig, ExtensionsConfigurationData]> {
@@ -326,6 +336,11 @@ export abstract class LegendApplication {
326
336
  LogEvent.create(APPLICATION_EVENT.APPLICATION_LOAD__SUCCESS),
327
337
  'Legend application loaded',
328
338
  );
339
+ if (this.downloadHelper) {
340
+ registerDownloadHelperServiceWorker(
341
+ this.downloadHelperServiceWorkerPath,
342
+ );
343
+ }
329
344
  } catch (error) {
330
345
  assertErrorThrown(error);
331
346
  this.logger.error(
package/src/index.ts CHANGED
@@ -43,6 +43,7 @@ export {
43
43
  type NavigationLocation,
44
44
  type NavigationZone,
45
45
  } from './stores/navigation/NavigationService.js';
46
+ export { downloadStream } from './util/DownloadHelperServiceWorker.js';
46
47
  export * from './stores/storage/ApplicationStorage.js';
47
48
  export * from './stores/storage/StorageService.js';
48
49
  export * from './stores/SettingService.js';
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import {
18
+ type ContentType,
19
+ downloadFileUsingDataURI,
20
+ guaranteeNonNullable,
21
+ } from '@finos/legend-shared';
22
+
23
+ enum DOWNLOAD_EVENTS {
24
+ TAG_REQUEST = 'download-request',
25
+ TAG_RESPONSE = 'download-response',
26
+ STREAM_CLOSED = '#stream-closed',
27
+ STREAM_ABORTED = '#stream-aborted',
28
+ }
29
+
30
+ function createWritableStreamFromMessageChannel(
31
+ channel: MessageChannel,
32
+ ): WritableStream {
33
+ return new WritableStream({
34
+ write(chunk) {
35
+ channel.port1.postMessage(chunk);
36
+ },
37
+ close() {
38
+ channel.port1.postMessage(DOWNLOAD_EVENTS.STREAM_CLOSED);
39
+ },
40
+ abort() {
41
+ channel.port1.postMessage(DOWNLOAD_EVENTS.STREAM_ABORTED);
42
+ closeMessagePort(channel.port1);
43
+ closeMessagePort(channel.port2);
44
+ },
45
+ });
46
+ }
47
+
48
+ function closeMessagePort(port: MessagePort): void {
49
+ port.onmessage = null;
50
+ port.close();
51
+ }
52
+
53
+ interface LegendApplicationDownloadRequest {
54
+ tag: string;
55
+ filename: string;
56
+ url: string;
57
+ }
58
+
59
+ interface LegendApplicationTagResponse {
60
+ tag: string;
61
+ downloadUrl: string;
62
+ }
63
+
64
+ async function getServiceWorker(): Promise<ServiceWorker | undefined> {
65
+ if (!('serviceWorker' in navigator)) {
66
+ return Promise.reject(
67
+ new Error(
68
+ 'Service worker is not available. Service Worker requires HTTPS protocol',
69
+ ),
70
+ );
71
+ }
72
+ return navigator.serviceWorker
73
+ .getRegistration()
74
+ .then((workerRegistration) => {
75
+ if (workerRegistration === undefined) {
76
+ return undefined;
77
+ }
78
+ const pending =
79
+ workerRegistration.installing ?? workerRegistration.waiting;
80
+ return (
81
+ workerRegistration.active ??
82
+ new Promise((resolve) => {
83
+ // if not activated, add listener to waiting or installing registration
84
+ const listener = (): void => {
85
+ if (pending?.state === 'activated') {
86
+ pending.removeEventListener('statechange', listener);
87
+ resolve(workerRegistration.active ?? undefined);
88
+ }
89
+ };
90
+ pending?.addEventListener('statechange', listener);
91
+ })
92
+ );
93
+ });
94
+ }
95
+
96
+ function createDownloadRequest(
97
+ filename: string,
98
+ ): LegendApplicationDownloadRequest {
99
+ const PREFIX = 6;
100
+ const prefix = String(Math.random()).slice(-PREFIX);
101
+ const url = new URL(`${prefix}/${filename}`, window.location.href).toString();
102
+ return { tag: DOWNLOAD_EVENTS.TAG_REQUEST, filename, url };
103
+ }
104
+
105
+ function handleServiceWorkerDownloadResponse(
106
+ event: MessageEvent<LegendApplicationTagResponse | undefined>,
107
+ ): void {
108
+ const data = event.data;
109
+ if (data?.tag === DOWNLOAD_EVENTS.TAG_RESPONSE && data.downloadUrl.length) {
110
+ openInIframe(data.downloadUrl);
111
+ }
112
+ }
113
+
114
+ function openInIframe(src: string): HTMLIFrameElement {
115
+ const iframe = document.createElement('iframe');
116
+ iframe.hidden = true;
117
+ iframe.src = src;
118
+ document.body.appendChild(iframe);
119
+ return iframe;
120
+ }
121
+
122
+ export async function downloadStream(
123
+ response: Response,
124
+ filename: string,
125
+ contentType: ContentType,
126
+ ): Promise<void> {
127
+ const responseBody = guaranteeNonNullable(response.body);
128
+ // creates communication channel with service worker with response handler
129
+ const channel = new MessageChannel();
130
+ channel.port1.onmessage = handleServiceWorkerDownloadResponse;
131
+
132
+ // grabs service worker and handles it download along with response channel port
133
+ const serviceWorker = await getServiceWorker();
134
+ if (!serviceWorker) {
135
+ // TODO: remove once service worker workflow is tested
136
+ const text = await response.text();
137
+ // eslint-disable-next-line no-console
138
+ console.debug('service worker not found. Using in memory file download');
139
+ downloadFileUsingDataURI(filename, text, contentType);
140
+ return;
141
+ }
142
+ // eslint-disable-next-line no-console
143
+ console.debug('Service worker found. Continuing download');
144
+ const downloadRequest = createDownloadRequest(filename);
145
+ serviceWorker.postMessage(downloadRequest, [channel.port2]);
146
+ // creates new data stream over communication channel and pipes given stream in it
147
+ responseBody
148
+ .pipeTo(createWritableStreamFromMessageChannel(channel))
149
+ .then(() => {
150
+ // TODO: trace success
151
+ })
152
+ .catch(() => {
153
+ // TODO: fail
154
+ });
155
+ }
156
+
157
+ export function registerDownloadHelperServiceWorker(
158
+ workerPath?: string | undefined,
159
+ ): void {
160
+ if ('serviceWorker' in navigator) {
161
+ const path = workerPath ?? '/ServiceWorker.js';
162
+ navigator.serviceWorker
163
+ .register(path)
164
+ .then((reg) => {
165
+ // TODO: add trace
166
+ // eslint-disable-next-line no-console
167
+ console.debug(
168
+ `register service worker success with path: ${path}`,
169
+ reg,
170
+ );
171
+ })
172
+ .catch((error) => {
173
+ // TODO: add trace
174
+ // eslint-disable-next-line no-console
175
+ console.debug(
176
+ `register service worker error with path: ${path}`,
177
+ error,
178
+ );
179
+ });
180
+ }
181
+ }
package/tsconfig.json CHANGED
@@ -75,6 +75,7 @@
75
75
  "./src/stores/storage/StorageService.ts",
76
76
  "./src/stores/terminal/Terminal.ts",
77
77
  "./src/stores/terminal/XTerm.ts",
78
+ "./src/util/DownloadHelperServiceWorker.ts",
78
79
  "./src/components/ActionAlert.tsx",
79
80
  "./src/components/ApplicationComponentFrameworkProvider.tsx",
80
81
  "./src/components/ApplicationFrameworkProvider.tsx",