{"version":3,"sources":["app.ts"],"sourcesContent":["import { Datex, f } from \"datex-core-legacy/mod.ts\";\n\nimport type { FrontendManager  } from \"./frontend-manager.ts\";\nimport { Path } from \"datex-core-legacy/utils/path.ts\";\nimport { ImportMap } from \"../utils/importmap.ts\";\nimport type { Server } from \"../server/server.ts\";\n\nimport type { appOptions, normalizedAppOptions } from \"./options.ts\";\nimport { client_type } from \"datex-core-legacy/utils/constants.ts\";\nimport { displayInit } from \"datex-core-legacy/runtime/display.ts\";\nimport { ServiceWorker } from \"../sw/sw-installer.ts\";\nimport { logger } from \"../utils/global-values.ts\";\nimport { endpoint_config } from \"datex-core-legacy/runtime/endpoint_config.ts\";\nimport { getInjectedAppData, getInjectedImportmap } from \"./app-data.ts\";\n\nimport { addUIXNamespace } from \"../base/uix-datex-module.ts\"\nimport \"../../uix-short.ts\"\n\nimport \"../base/init.ts\"\nimport { bindingOptions } from \"./dom-context.ts\";\nimport { convertToWebPath } from \"./convert-to-web-path.ts\";\nimport { UIX_COOKIE, deleteCookie } from \"../session/cookies.ts\";\nimport { UIX } from \"../../uix.ts\";\nimport { formatEndpointURL } from \"datex-core-legacy/utils/format-endpoint-url.ts\";\n\nimport wasm_init, {init_runtime } from \"datex-core-legacy/wasm/adapter/pkg/datex_wasm.js\";\n\nexport const ALLOWED_ENTRYPOINT_FILE_NAMES = ['entrypoint.dx', 'entrypoint.ts', 'entrypoint.tsx']\n\ntype version_change_handler = (version:string, prev_version:string)=>void|Promise<void>;\n\nawait addUIXNamespace();\n\n// options passed in via command line arguments\nlet stage: string|undefined\nlet http_over_datex: boolean|undefined\nlet enable_datex_cli: boolean|undefined;\nif (client_type === \"deno\") {\n\t({ stage, http_over_datex, enable_datex_cli } = (await import(\"./args.ts\" /*lazy*/)))\n}\n\n// enable DATEX CLI\nif (enable_datex_cli && client_type === \"deno\") Datex.enableCLI();\n\nconst version = eternal ?? $(\"unknown\");\n\n\nexport type appMetadata = {\n\tname?: string,\n\tdescription?: string,\n\tversion?: string,\n\tstage?: string,\n\tbackend?: Datex.Endpoint,\n\tbackendLibVersions?: {uix: string, datex: string},\n\tusid?: string,\n\thod?: boolean // is http-over-datex enabled?\n}\n\nclass App {\n\n\tconstructor() {\n\t\t// get import map from <script type=importmap>\n\t\tconst importMapContent = getInjectedImportmap()\n\t\tif (importMapContent) {\n\t\t\t// @ts-ignore use pre injected import map\n\t\t\tthis.options = {import_map: new ImportMap(importMapContent)}\n\t\t}\n\n\t\t// set app meta data\n\t\tif (client_type == \"deno\") {\n\t\t\t// todo set default metadata on backend\n\t\t\tthis.#setMetadata({\n\t\t\t\thod: http_over_datex\n\t\t\t})\n\t\t}\n\n\t\t// get injected uix app metadata\n\t\telse {\n\t\t\tconst appDataContent = getInjectedAppData()\n\t\t\tif (appDataContent) {\n\t\t\t\tconst appdata: Record<string,any> = {...appDataContent}\n\t\t\t\tif (appdata.backend) {\n\t\t\t\t\tappdata.backend = f(appdata.backend)\n\n\t\t\t\t\t// add backend as trusted endpoints with full permissions\n\t\t\t\t\tDatex.Runtime.addTrustedEndpoint(appdata.backend.main, [\n\t\t\t\t\t\t\"protected-pointer-access\", \n\t\t\t\t\t\t\"remote-js-execution\",\n\t\t\t\t\t\t\"fallback-pointer-source\"\n\t\t\t\t\t])\n\t\t\t\t};\n\t\t\t\tif (appdata.host) appdata.host = f(appdata.host);\n\t\t\t\tif (appdata.experimental_features && this.options) {\n\t\t\t\t\tif (!this.options.experimental_features) this.options.experimental_features = [];\n\t\t\t\t\tthis.options.experimental_features.push(...appdata.experimental_features);\n\t\t\t\t}\n\t\t\t\tthis.#setMetadata(appdata)\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n\tbase_url!:URL\n\n\toptions?:normalizedAppOptions\n\n\tfrontends = new Map<string, FrontendManager>()\n\t#ready_handlers = new Set<()=>void>();\n\t#ready = false;\n\n\t#metadata: appMetadata = {}\n\n\t/**\n\t * The default web server instance (there might be multiple web server instances if there is more than one backend)\n\t */\n\tdefaultServer?: Server\n\n\t/**\n\t * Current deployment stage, default is 'dev'\n\t */\n\tget stage(){\n\t\treturn stage ?? this.metadata.stage;\n\t}\n\n\tget version() {\n\t\treturn version;\n\t}\n\n\tget metadata() {\n\t\treturn this.#metadata\n\t}\n\n\tget backend() {\n\t\treturn this.#metadata.backend\n\t}\n\n\t#setMetadata(metadata:appMetadata) {\n\t\tObject.assign(this.#metadata, metadata);\n        Datex.Unyt.setAppInfo(metadata)\n\t      \n        if (metadata.version) {\n            const prev_version = version.val;\n            version.val = metadata.version;\n            if (prev_version != \"unknown\" && prev_version != version.val) this.#handleVersionChange(prev_version, version.val)\n        }\n\t}\n\n\t#uniqueStartId = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'\n\t\t.replaceAll('x', function (c) {\n\t\t\tconst r = Math.random() * 16 | 0, \n\t\t\t\tv = c == 'x' ? r : (r & 0x3 | 0x8);\n\t\t\treturn v.toString(16);\n\t\t});\n\n\tget uniqueStartId() {\n\t\treturn this.metadata.usid ?? this.#uniqueStartId\n\t}\n\n\t/**\n\t * find a transpiler that can transpile files for a given path\n\t * @param path\n\t * @returns \n\t */\n\tgetTranspilerForPath(path: Path.File) {\n\t\tfor (const frontend of this.frontends.values()) {\n\t\t\tconst transpiler = frontend.getTranspilerForPath(path);\n\t\t\tif (transpiler) return transpiler;\n\t\t}\n\t}\n\n\t/**\n\t * Register a callback function that is called when the app is fully loaded\n\t * @param handler \n\t */\n\tpublic onReady(handler:()=>void) {\n\t\tif (this.#ready) handler();\n\t\telse this.#ready_handlers.add(handler);\n\t}\n\n\t#current_version_change_handler: version_change_handler|undefined;\n    #waiting_version_change: Function|undefined;\n\n\t/**\n\t * Register a handler that gets called when the app is loaded with a new version\n\t * @param handler\n\t */\n    onVersionChange(handler:version_change_handler) {\n        this.#current_version_change_handler = handler;\n        if (this.#waiting_version_change) this.#waiting_version_change();\n    }\n\n    #handleVersionChange(from:string, to:string) {\n        this.#waiting_version_change = async ()=> {\n            if (!this.#waiting_version_change) return;\n            this.#waiting_version_change = undefined;\n            displayInit(\"Updating App\");\n            logger.info(\"app version changed from \" + from + \" to \" + to);\n            await ServiceWorker.clearCache();\n            if (this.#current_version_change_handler) await this.#current_version_change_handler(from, to);\n            globalThis.location.reload();\n        }\n        if (this.#current_version_change_handler) this.#waiting_version_change(); // call if handler available\n        // show ui\n        displayInit(\"Updating App\");\n\n        // update if no handler called after some time\n        setTimeout(()=>this.#waiting_version_change?.(), 8000);\n    }\n\n\t/**\n\t * Resolved when the app is fully loaded\n\t * Dont await this in top level of a backend module!\n\t */\n\tpublic ready = new Promise<void>(resolve=>this.onReady(()=>resolve()))\n\n\t#domains?: string[]\n\n\t/**\n\t * A list of all known domains for this app instance, sorted by priority\n\t * This includes auto-generated *.unyt.app domains\n\t */\n\tpublic get domains() {\n\t\tif (!this.#domains) {\n\t\t\t// TODO: use this in the unyt core status logger, currently implemented twice\n\t\t\t// app domains inferred from current endpoint\n\t\t\tconst urlEndpoint = this.metadata.hod === false ? null : Datex.Runtime.endpoint.main;\n\t\t\tconst endpointURLs = urlEndpoint ? [formatEndpointURL(urlEndpoint)].filter(v=>!!v) as string[] : [];\n\n\t\t\tthis.#domains = [...new Set([...this.hostDomains, ...endpointURLs])];\n\t\t}\n\n\t\treturn this.#domains!;\n\t}\n\n\t#hostDomains?: string[]\n\n\t/**\n\t * A list of all known domains for this app instance, assigned by the host.\n\t * It is assumed that the host will directly forward all requests to these domains to the current endpoint.\n\t */\n\tpublic get hostDomains() {\n\t\tif (!this.#hostDomains) {\n\t\t\tthis.#hostDomains = globalThis.Deno?.env.get(\"UIX_HOST_DOMAINS\")?.split(\",\").filter(v=>!!v) ?? [];\n\t\t}\n\t\treturn this.#hostDomains;\n\t}\n\n\tpublic async start(options:appOptions = {}, originalBaseURL?:string|URL) {\n\t\tconst { startApp } = await import(\"./start-app.ts\" /*lazy*/);\n\t\tconst {nOptions, baseURL, defaultServer, frontends} = await startApp(this, options, originalBaseURL)\n\t\tthis.options = nOptions;\n\t\tthis.defaultServer = defaultServer;\n\t\tthis.base_url = baseURL;\n\t\tthis.frontends = frontends;\n\n\t\t// log enabled experimental features\n\t\tconst allowedFeatures = ['indirect-references', 'view-transitions', 'sqlite-storage'];\n\t\tfor (const feature of this.options.experimental_features) {\n\t\t\tif (allowedFeatures.includes(feature)) logger.info(`experimental feature \"${feature}\" enabled`)\n\t\t\telse logger.error(`unknown experimental feature \"${feature}\"`)\n\t\t}\n\t\t\n\t\tthis.#ready = true;\n\t\tfor (const handler of this.#ready_handlers) await handler();\n\t}\n\n\n\tasync reset(resetEndpoint = false) {\n\t\tif (resetEndpoint) endpoint_config.clear();\n\t\tlocalStorage.clear();\n\t\tsessionStorage.clear();\n\n\t\t// clear cookies\n\t\tdeleteCookie(UIX_COOKIE.endpoint)\n\t\tdeleteCookie(UIX_COOKIE.endpointNonce)\n\t\tdeleteCookie(UIX_COOKIE.endpointValidation)\n\t\tdeleteCookie(UIX_COOKIE.session)\n\t\tdeleteCookie(UIX_COOKIE.unverifiedSession)\n\t\tdeleteCookie(UIX_COOKIE.language)\n\t\tdeleteCookie(UIX_COOKIE.sharedData)\n\t\tdeleteCookie(UIX_COOKIE.themeDark)\n\t\tdeleteCookie(UIX_COOKIE.themeLight)\n\t\tdeleteCookie(UIX_COOKIE.colorMode)\n\n        // reset service worker\n        await ServiceWorker.clearCache();\n\n        // clear storage\n        await Datex.Storage.clearAndReload();\n    }\n\n}\n\n\n/**\n * The currrent UIXApp, accessible on a client or on the backend\n */\nexport const app = new App();\n\n// reset key shortcut\n\n// if (app.stage == \"dev\")  TODO: only in dev stage?\n(globalThis as any).addEventListener(\"keydown\", (e:any) => {\n\tif (e.code == \"KeyR\" && e.ctrlKey) app.reset();\n\telse if (e.code == \"KeyL\" && e.ctrlKey) {\n\t\tif (UIX.language == \"en\") UIX.language = \"de\"\n\t\telse UIX.language = \"en\";\n\t\tconsole.log(\"[Debug] Switched language to '\" + UIX.language + \"'\")\n\t}\n\telse if (e.code == \"KeyT\" && e.ctrlKey) {\n\t\tif (UIX.Theme.mode == \"dark\") UIX.Theme.mode = \"light\"\n\t\telse UIX.Theme.mode = \"dark\";\n\t\tconsole.log(\"[Debug] Switched theme to '\" + UIX.Theme.mode + \"'\")\n\t}\n})\n\nif (app.stage !== \"dev\") {\n\t// don't expose native error stack traces via DATEX\n\tDatex.Runtime.OPTIONS.NATIVE_ERROR_STACK_TRACES = false\n}\n\n// load DATEX WASM / Decompiler, only in backend by default\nif (client_type === \"deno\") {\n\tawait wasm_init();\n\tinit_runtime();\n}\n\nbindingOptions.mapFileURL = (url) => {\n\treturn convertToWebPath(url);\n}"],"names":["stage","http_over_datex","enable_datex_cli","Datex","f","ImportMap","client_type","displayInit","ServiceWorker","logger","endpoint_config","getInjectedAppData","getInjectedImportmap","addUIXNamespace","bindingOptions","convertToWebPath","UIX_COOKIE","deleteCookie","UIX","formatEndpointURL","wasm_init","init_runtime","ALLOWED_ENTRYPOINT_FILE_NAMES","enableCLI","version","eternal","$","App","constructor","importMapContent","options","import_map","hod","appDataContent","appdata","backend","Runtime","addTrustedEndpoint","main","host","experimental_features","push","base_url","frontends","Map","Set","defaultServer","metadata","Object","assign","Unyt","setAppInfo","prev_version","val","replaceAll","c","r","Math","random","v","toString","uniqueStartId","usid","getTranspilerForPath","path","frontend","values","transpiler","onReady","handler","add","onVersionChange","from","to","undefined","info","clearCache","globalThis","location","reload","setTimeout","ready","Promise","resolve","domains","urlEndpoint","endpoint","endpointURLs","filter","hostDomains","Deno","env","get","split","start","originalBaseURL","startApp","nOptions","baseURL","allowedFeatures","feature","includes","error","reset","resetEndpoint","clear","localStorage","sessionStorage","endpointNonce","endpointValidation","session","unverifiedSession","language","sharedData","themeDark","themeLight","colorMode","Storage","clearAndReload","app","addEventListener","e","code","ctrlKey","console","log","Theme","mode","OPTIONS","NATIVE_ERROR_STACK_TRACES","mapFileURL","url"],"mappings":"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","sourceRoot":"/lib/uix-0.4.39/src/app/","file":"app.ts"}