@interopio/ng
Version:
IO Connect library for Angular - Browser and Desktop
1 lines • 15.1 kB
Source Map (JSON)
{"version":3,"file":"interopio-ng.mjs","sources":["../../src/lib/tokens.ts","../../src/lib/glue-config.service.ts","../../src/lib/glue-initializer.service.ts","../../src/lib/glue-store.service.ts","../../src/lib/ng.module.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\nimport { IOConnectNgSettings } from \"./types\";\n\nexport const CONFIG_TOKEN = new InjectionToken<IOConnectNgSettings>(\"CONFIG_TOKEN\");","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Inject, Injectable } from \"@angular/core\";\nimport { CONFIG_TOKEN } from \"./tokens\";\nimport { IOConnectNgFactory, IOConnectNgFactoryConfig, IOConnectNgSettings } from \"./types\";\n\n@Injectable()\nexport class IOConnectConfigService {\n private readonly _userSettings: IOConnectNgSettings;\n private readonly isDesktop: boolean;\n\n constructor(@Inject(CONFIG_TOKEN) userSettings: IOConnectNgSettings) {\n this._userSettings = Object.assign({ holdInit: true }, userSettings);\n this.isDesktop = (typeof (window as any).glue42gd !== \"undefined\") || (typeof (window as any).iodesktop !== \"undefined\");\n }\n\n public getSettings(): IOConnectNgSettings {\n return this._userSettings;\n }\n\n public verifyConfig(): void {\n if (this._userSettings.browser && this._userSettings.browserPlatform) {\n throw new Error(\"Cannot initialize, because the config is over-specified: it contains settings for both web and webPlatform. Please set one or the other\");\n }\n }\n\n public getFactory(): IOConnectNgFactory | undefined {\n if (this.isDesktop) {\n return this._userSettings.desktop?.factory ||\n this._userSettings.browser?.factory ||\n this._userSettings.browserPlatform?.factory ||\n (window as any).Glue;\n }\n\n return this._userSettings.browser?.factory || this._userSettings.browserPlatform?.factory || (window as any).IOBrowser || (window as any).IOBrowserPlatform;\n }\n\n public getConfig(): IOConnectNgFactoryConfig | undefined {\n if (this.isDesktop) {\n return this._userSettings.desktop?.config ||\n this._userSettings.browser?.config ||\n this._userSettings.browserPlatform?.config;\n }\n\n return this._userSettings.browser?.config || this._userSettings.browserPlatform?.config;\n }\n\n public getHoldInit(): boolean {\n return !!this._userSettings.holdInit;\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable } from \"@angular/core\";\nimport { IOConnectDesktop } from \"@interopio/desktop\";\nimport { IOConnectBrowser } from \"@interopio/browser\";\nimport { Subject, Observable } from \"rxjs\";\nimport { IOConnectConfigService } from \"./glue-config.service\";\n\n@Injectable()\nexport class IOConnectInitializer {\n private readonly defaultInitTimeoutMilliseconds = 60000;\n private initializationSource = new Subject<{ glueInstance?: IOConnectBrowser.API | IOConnectDesktop.API; error?: any }>();\n\n constructor(private readonly configService: IOConnectConfigService) { }\n\n public start(): Promise<void> {\n\n try {\n this.configService.verifyConfig();\n } catch (error) {\n this.initializationSource.next({ error: { message: (error as any).message } });\n this.initializationSource.complete();\n return Promise.resolve();\n }\n\n const config = this.configService.getConfig();\n const factory = this.configService.getFactory();\n\n if (!factory) {\n const errorMessage = \"Initialization failed, because no Glue Factory function was found. Please provide a factory function when importing the Glue42Ng module. Alternatively make sure there is a GlueWeb or Glue or GlueWebPlatform function attached to the global window object\";\n this.initializationSource.next({ error: { message: errorMessage } });\n this.initializationSource.complete();\n return Promise.resolve();\n }\n\n const gluePromise = this.safeCallFactory(config, factory, this.defaultInitTimeoutMilliseconds, `Glue factory timeout hit. Set at: ${this.defaultInitTimeoutMilliseconds} milliseconds`)\n .then((glueResult) => {\n this.initializationSource.next({ glueInstance: glueResult.glue });\n this.initializationSource.complete();\n })\n .catch((error) => {\n this.initializationSource.next({ error });\n this.initializationSource.complete();\n });\n\n return this.configService.getSettings().holdInit ? gluePromise : Promise.resolve();\n }\n\n public onState(): Observable<{ glueInstance?: IOConnectBrowser.API | IOConnectDesktop.API; error?: any }> {\n return this.initializationSource.asObservable();\n }\n\n private safeCallFactory(config: any, factory: any, timeoutMilliseconds: number, timeoutMessage: string): Promise<{ glue: IOConnectDesktop.API | IOConnectBrowser.API }> {\n return new Promise((resolve, reject) => {\n let timeoutHit = false;\n\n const timeout = setTimeout(() => {\n timeoutHit = true;\n\n const message = timeoutMessage;\n\n reject(message);\n }, timeoutMilliseconds);\n\n factory(config)\n .then((result: any) => {\n if (!timeoutHit) {\n clearTimeout(timeout);\n\n const glue = result.glue || result.io || result;\n\n resolve({ glue });\n }\n })\n .catch((error: any) => {\n if (!timeoutHit) {\n clearTimeout(timeout);\n reject(error);\n }\n });\n });\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectDesktop } from \"@interopio/desktop\";\nimport { IOConnectBrowser } from \"@interopio/browser\";\nimport { Observable, ReplaySubject } from \"rxjs\";\nimport { Injectable } from \"@angular/core\";\nimport { IOConnectInitializer } from \"./glue-initializer.service\";\n\n@Injectable()\nexport class IOConnectStore {\n private readonly readySource: ReplaySubject<{ error?: any }>;\n private glueInstance?: IOConnectDesktop.API | IOConnectBrowser.API;\n private _initError: any;\n\n constructor(private readonly initializer: IOConnectInitializer) {\n this.readySource = new ReplaySubject<{ error?: any }>(1);\n this.initializer.onState().subscribe(this.handleState.bind(this));\n }\n\n public ready(): Observable<{ error?: any }> {\n return this.readySource.asObservable();\n }\n\n public getInitError(): any {\n return this._initError;\n }\n\n public getIOConnect(): IOConnectDesktop.API | IOConnectBrowser.API {\n if (!this.glueInstance) {\n throw new Error(\"Accessing uninitialized glue. This might happen, because Glue is not initialized yet or because there was an error during Glue initialization. Please check the initError object or subscribe to the ready observable.\");\n }\n\n return this.glueInstance;\n }\n\n private handleState(result: { glueInstance?: IOConnectBrowser.API | IOConnectDesktop.API; error?: any }): void {\n if (result.glueInstance) {\n this.glueInstance = result.glueInstance;\n this.readySource.next({});\n return;\n }\n\n if (result.error) {\n this._initError = result.error;\n this.readySource.next({ error: this.getInitError() });\n return;\n }\n }\n}\n","import { NgModule, APP_INITIALIZER, ModuleWithProviders } from \"@angular/core\";\nimport { IOConnectStore } from \"./glue-store.service\";\nimport { IOConnectNgSettings } from \"./types\";\nimport { IOConnectInitializer } from \"./glue-initializer.service\";\nimport { CONFIG_TOKEN } from \"./tokens\";\nimport { IOConnectConfigService } from \"./glue-config.service\";\n\nexport const initFactory = (initializer: IOConnectInitializer) => (): void | Promise<void> => initializer.start();\n\n// @dynamic\n@NgModule()\nexport class IOConnectNg {\n public static forRoot(settings?: IOConnectNgSettings): ModuleWithProviders<IOConnectNg> {\n return {\n ngModule: IOConnectNg,\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: initFactory,\n multi: true,\n deps: [IOConnectInitializer, IOConnectConfigService, IOConnectStore]\n },\n {\n provide: CONFIG_TOKEN,\n useValue: settings\n },\n IOConnectConfigService,\n IOConnectStore,\n IOConnectInitializer\n ]\n };\n }\n}"],"names":["i1.IOConnectConfigService","i1.IOConnectInitializer"],"mappings":"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"}