@webiny/app-admin 6.6.0-alpha.3 → 6.6.0-alpha.4
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base/resolveApiUrl.js","sources":["../../src/base/resolveApiUrl.ts"],"sourcesContent":["/**\n * Composition-root bootstrap: works out the API, GraphQL and WebSocket URLs that\n * `createRootContainer` seeds `EnvConfig` with.\n *\n * Plain functions rather than a feature on purpose. `EnvConfig` IS the abstraction here, and\n * everything downstream injects it (`WebinySdk`, `MainGraphQLClient`, `WcpService`, ...). These run\n * one step earlier, to produce the values that configure it, so a container is not yet available to\n * resolve them from. That's also why this is one of the few places allowed to read `process.env`\n * directly, alongside the other env reads sitting inline in `createRootContainer`.\n */\n\n/**\n * Resolves a configured API URL to an absolute one against the page origin, so the value baked into\n * the bundle can be relative.\n *\n * That's what lets one build run anywhere. `WEBINY_ADMIN_API_URL=/api` works on http://localhost:3001\n * behind the dev proxy, on a portless domain like https://wby6.localhost, and behind a reverse proxy\n * in production, because the origin is filled in by the browser rather than at build time. An absolute\n * value still passes through unchanged.\n */\nconst toAbsoluteUrl = (url: string): string => {\n if (typeof window === \"undefined\") {\n return url;\n }\n\n // `new URL` appends a trailing slash to a bare origin; callers append their own path segments.\n return new URL(url, window.location.origin).toString().replace(/\\/+$/, \"\");\n};\n\n// Prefer the configured API URL (baked by `<Admin.ApiUrl>` into WEBINY_ADMIN_API_URL); else\n// same-origin (a deployed
|
|
1
|
+
{"version":3,"file":"base/resolveApiUrl.js","sources":["../../src/base/resolveApiUrl.ts"],"sourcesContent":["/**\n * Composition-root bootstrap: works out the API, GraphQL and WebSocket URLs that\n * `createRootContainer` seeds `EnvConfig` with.\n *\n * Plain functions rather than a feature on purpose. `EnvConfig` IS the abstraction here, and\n * everything downstream injects it (`WebinySdk`, `MainGraphQLClient`, `WcpService`, ...). These run\n * one step earlier, to produce the values that configure it, so a container is not yet available to\n * resolve them from. That's also why this is one of the few places allowed to read `process.env`\n * directly, alongside the other env reads sitting inline in `createRootContainer`.\n */\n\n/**\n * Resolves a configured API URL to an absolute one against the page origin, so the value baked into\n * the bundle can be relative.\n *\n * That's what lets one build run anywhere. `WEBINY_ADMIN_API_URL=/api` works on http://localhost:3001\n * behind the dev proxy, on a portless domain like https://wby6.localhost, and behind a reverse proxy\n * in production, because the origin is filled in by the browser rather than at build time. An absolute\n * value still passes through unchanged.\n */\nconst toAbsoluteUrl = (url: string): string => {\n if (typeof window === \"undefined\") {\n return url;\n }\n\n // `new URL` appends a trailing slash to a bare origin; callers append their own path segments.\n return new URL(url, window.location.origin).toString().replace(/\\/+$/, \"\");\n};\n\n// Prefer the configured API URL (baked by `<Admin.ApiUrl>` into WEBINY_ADMIN_API_URL); else\n// same-origin (a deployed standalone admin served behind the same domain as the API needs no\n// baked-in URL). Never return the literal string \"undefined\".\nexport const resolveApiUrl = (): string => {\n const url = process.env.WEBINY_ADMIN_API_URL;\n if (url && url !== \"undefined\") {\n return toAbsoluteUrl(url);\n }\n return typeof window !== \"undefined\" ? window.location.origin : \"\";\n};\n\n// The GraphQL endpoint derived from the resolved API URL.\nexport const resolveGraphqlUrl = (): string => `${resolveApiUrl()}/graphql`;\n\n// Resolve the WebSocket URL for the admin, in order:\n// 1. REACT_APP_WEBSOCKET_URL — AWS: the dedicated API Gateway WebSocket URL.\n// 2. WEBINY_ADMIN_WS_API_URL — standalone: a dedicated WS URL (baked via `<Admin.WebsocketsUrl>`),\n// only needed when WS is served from a different origin than the API.\n// 3. derived from the API URL — standalone default: the server handles WS upgrades on its own\n// origin, so use the API origin with http(s) swapped for ws(s).\n// Returns \"\" when none is configured (real-time updates are then disabled). This is one of the few\n// spots allowed to read process.env — it runs at the admin composition root, like resolveApiUrl.\nexport const resolveWebsocketUrl = (): string => {\n const awsExplicit = process.env.REACT_APP_WEBSOCKET_URL;\n if (awsExplicit && awsExplicit !== \"undefined\") {\n return awsExplicit;\n }\n\n const serverExplicit = process.env.WEBINY_ADMIN_WS_API_URL;\n if (serverExplicit && serverExplicit !== \"undefined\") {\n return toWebsocketUrl(serverExplicit);\n }\n\n const apiUrl = process.env.WEBINY_ADMIN_API_URL;\n if (apiUrl && apiUrl !== \"undefined\") {\n return toWebsocketUrl(apiUrl);\n }\n\n return \"\";\n};\n\n/**\n * Turns a configured value into a WebSocket URL the browser can dial.\n *\n * Resolved against the page origin before the scheme is swapped, because a relative value like\n * `/api` has no scheme to swap: the prefix replacement alone would hand back `/api` unchanged, which\n * connects to nothing. A value that already names a ws(s) origin passes straight through.\n */\nconst toWebsocketUrl = (url: string): string => {\n if (/^wss?:\\/\\//.test(url)) {\n return url;\n }\n\n return toAbsoluteUrl(url).replace(/^http/, \"ws\");\n};\n"],"names":["toAbsoluteUrl","url","window","URL","resolveApiUrl","process","resolveGraphqlUrl","resolveWebsocketUrl","awsExplicit","serverExplicit","toWebsocketUrl","apiUrl"],"mappings":"AAoBA,MAAMA,gBAAgB,CAACC;IACnB,IAAI,AAAkB,MAAlB,OAAOC,QACP,OAAOD;IAIX,OAAO,IAAIE,IAAIF,KAAKC,OAAO,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ;AAC3E;AAKO,MAAME,gBAAgB;IACzB,MAAMH,MAAMI,QAAQ,GAAG,CAAC,oBAAoB;IAC5C,IAAIJ,OAAOA,AAAQ,gBAARA,KACP,OAAOD,cAAcC;IAEzB,OAAO,AAAkB,MAAlB,OAAOC,SAAyBA,OAAO,QAAQ,CAAC,MAAM,GAAG;AACpE;AAGO,MAAMI,oBAAoB,IAAc,GAAGF,gBAAgB,QAAQ,CAAC;AAUpE,MAAMG,sBAAsB;IAC/B,MAAMC,cAAcH,QAAQ,GAAG,CAAC,uBAAuB;IACvD,IAAIG,eAAeA,AAAgB,gBAAhBA,aACf,OAAOA;IAGX,MAAMC,iBAAiBJ,QAAQ,GAAG,CAAC,uBAAuB;IAC1D,IAAII,kBAAkBA,AAAmB,gBAAnBA,gBAClB,OAAOC,eAAeD;IAG1B,MAAME,SAASN,QAAQ,GAAG,CAAC,oBAAoB;IAC/C,IAAIM,UAAUA,AAAW,gBAAXA,QACV,OAAOD,eAAeC;IAG1B,OAAO;AACX;AASA,MAAMD,iBAAiB,CAACT;IACpB,IAAI,aAAa,IAAI,CAACA,MAClB,OAAOA;IAGX,OAAOD,cAAcC,KAAK,OAAO,CAAC,SAAS;AAC/C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-admin",
|
|
3
|
-
"version": "6.6.0-alpha.
|
|
3
|
+
"version": "6.6.0-alpha.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -24,25 +24,25 @@
|
|
|
24
24
|
"@iconify/json": "2.2.518",
|
|
25
25
|
"@lexical/utils": "0.49.0",
|
|
26
26
|
"@types/react": "18.3.31",
|
|
27
|
-
"@webiny/admin-ui": "6.6.0-alpha.
|
|
28
|
-
"@webiny/app": "6.6.0-alpha.
|
|
27
|
+
"@webiny/admin-ui": "6.6.0-alpha.4",
|
|
28
|
+
"@webiny/app": "6.6.0-alpha.4",
|
|
29
29
|
"@webiny/di": "1.1.0",
|
|
30
|
-
"@webiny/feature": "6.6.0-alpha.
|
|
31
|
-
"@webiny/feature-flags": "6.6.0-alpha.
|
|
32
|
-
"@webiny/form": "6.6.0-alpha.
|
|
33
|
-
"@webiny/icons": "6.6.0-alpha.
|
|
34
|
-
"@webiny/lexical-converter": "6.6.0-alpha.
|
|
35
|
-
"@webiny/lexical-editor": "6.6.0-alpha.
|
|
36
|
-
"@webiny/lexical-nodes": "6.6.0-alpha.
|
|
37
|
-
"@webiny/lexical-theme": "6.6.0-alpha.
|
|
38
|
-
"@webiny/plugins": "6.6.0-alpha.
|
|
39
|
-
"@webiny/react-composition": "6.6.0-alpha.
|
|
40
|
-
"@webiny/react-properties": "6.6.0-alpha.
|
|
41
|
-
"@webiny/sdk": "6.6.0-alpha.
|
|
42
|
-
"@webiny/telemetry": "6.6.0-alpha.
|
|
43
|
-
"@webiny/utils": "6.6.0-alpha.
|
|
44
|
-
"@webiny/validation": "6.6.0-alpha.
|
|
45
|
-
"@webiny/wcp": "6.6.0-alpha.
|
|
30
|
+
"@webiny/feature": "6.6.0-alpha.4",
|
|
31
|
+
"@webiny/feature-flags": "6.6.0-alpha.4",
|
|
32
|
+
"@webiny/form": "6.6.0-alpha.4",
|
|
33
|
+
"@webiny/icons": "6.6.0-alpha.4",
|
|
34
|
+
"@webiny/lexical-converter": "6.6.0-alpha.4",
|
|
35
|
+
"@webiny/lexical-editor": "6.6.0-alpha.4",
|
|
36
|
+
"@webiny/lexical-nodes": "6.6.0-alpha.4",
|
|
37
|
+
"@webiny/lexical-theme": "6.6.0-alpha.4",
|
|
38
|
+
"@webiny/plugins": "6.6.0-alpha.4",
|
|
39
|
+
"@webiny/react-composition": "6.6.0-alpha.4",
|
|
40
|
+
"@webiny/react-properties": "6.6.0-alpha.4",
|
|
41
|
+
"@webiny/sdk": "6.6.0-alpha.4",
|
|
42
|
+
"@webiny/telemetry": "6.6.0-alpha.4",
|
|
43
|
+
"@webiny/utils": "6.6.0-alpha.4",
|
|
44
|
+
"@webiny/validation": "6.6.0-alpha.4",
|
|
45
|
+
"@webiny/wcp": "6.6.0-alpha.4",
|
|
46
46
|
"bytes": "3.1.2",
|
|
47
47
|
"classnames": "2.5.1",
|
|
48
48
|
"graphql": "16.14.2",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"@types/react-transition-group": "4.4.12",
|
|
77
77
|
"@types/store": "2.0.5",
|
|
78
78
|
"@types/tinycolor2": "1.4.6",
|
|
79
|
-
"@webiny/build-tools": "6.6.0-alpha.
|
|
79
|
+
"@webiny/build-tools": "6.6.0-alpha.4",
|
|
80
80
|
"rimraf": "6.1.3",
|
|
81
81
|
"typescript": "7.0.2",
|
|
82
82
|
"vitest": "4.1.11"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js","sources":["../../../../../../../src/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.ts"],"sourcesContent":["import { getMachineId } from \"@webiny/telemetry/react.js\";\nimport type { ISystemInstallerPresenter } from \"~/presentation/installation/presenters/SystemInstaller/abstractions.js\";\n\nconst INSTALL_FINISH_URL =\n process.env.REACT_APP_WEBINY_INSTALL_FINISH_URL || \"https://www.webiny.com/install/finish\";\n\n/**\n * If telemetry is enabled, route the \"Start using Webiny\" CTA through the\n * marketing site's /install/finish page so the website's anonymous wts_did\n * cookie can be aliased to the deployer's machine_id. Falls through to the\n * local `finishInstallation` flow otherwise.\n *\n * This used to run only when the admin was served from a `.cloudfront.net`\n * host, which meant
|
|
1
|
+
{"version":3,"file":"presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js","sources":["../../../../../../../src/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.ts"],"sourcesContent":["import { getMachineId } from \"@webiny/telemetry/react.js\";\nimport type { ISystemInstallerPresenter } from \"~/presentation/installation/presenters/SystemInstaller/abstractions.js\";\n\nconst INSTALL_FINISH_URL =\n process.env.REACT_APP_WEBINY_INSTALL_FINISH_URL || \"https://www.webiny.com/install/finish\";\n\n/**\n * If telemetry is enabled, route the \"Start using Webiny\" CTA through the\n * marketing site's /install/finish page so the website's anonymous wts_did\n * cookie can be aliased to the deployer's machine_id. Falls through to the\n * local `finishInstallation` flow otherwise.\n *\n * This used to run only when the admin was served from a `.cloudfront.net`\n * host, which meant standalone installs were never aliased and the whole\n * install-to-marketing-visit link was AWS-only. The website side of the\n * handoff drops its matching CloudFront restriction, so both halves of the\n * path now work for any host.\n */\nconst buildInstallFinishHref = (): string | null => {\n if (process.env.REACT_APP_WEBINY_TELEMETRY === \"false\") {\n return null;\n }\n\n if (typeof window === \"undefined\") {\n return null;\n }\n\n const machineId = getMachineId();\n if (!machineId) {\n return null;\n }\n\n const currentUrl = window.location.origin + window.location.pathname;\n const params = new URLSearchParams({\n machine_id: machineId,\n return_to: currentUrl\n });\n return `${INSTALL_FINISH_URL}?${params.toString()}`;\n};\n\nexport const handleStartUsing = (\n finishInstallation: ISystemInstallerPresenter[\"finishInstallation\"]\n) => {\n if (typeof window !== \"undefined\") {\n const handoff = buildInstallFinishHref();\n if (handoff) {\n window.location.assign(handoff);\n return;\n }\n }\n finishInstallation();\n};\n"],"names":["INSTALL_FINISH_URL","process","buildInstallFinishHref","window","machineId","getMachineId","currentUrl","params","URLSearchParams","handleStartUsing","finishInstallation","handoff"],"mappings":";AAGA,MAAMA,qBACFC,QAAQ,GAAG,CAAC,mCAAmC,IAAI;AAcvD,MAAMC,yBAAyB;IAC3B,IAAID,AAA2C,YAA3CA,QAAQ,GAAG,CAAC,0BAA0B,EACtC,OAAO;IAGX,IAAI,AAAkB,MAAlB,OAAOE,QACP,OAAO;IAGX,MAAMC,YAAYC;IAClB,IAAI,CAACD,WACD,OAAO;IAGX,MAAME,aAAaH,OAAO,QAAQ,CAAC,MAAM,GAAGA,OAAO,QAAQ,CAAC,QAAQ;IACpE,MAAMI,SAAS,IAAIC,gBAAgB;QAC/B,YAAYJ;QACZ,WAAWE;IACf;IACA,OAAO,GAAGN,mBAAmB,CAAC,EAAEO,OAAO,QAAQ,IAAI;AACvD;AAEO,MAAME,mBAAmB,CAC5BC;IAEA,IAAI,AAAkB,MAAlB,OAAOP,QAAwB;QAC/B,MAAMQ,UAAUT;QAChB,IAAIS,SAAS,YACTR,OAAO,QAAQ,CAAC,MAAM,CAACQ;IAG/B;IACAD;AACJ"}
|
package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js","sources":["../../../../../src/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, toJS } from \"mobx\";\nimport { createImplementation } from \"@webiny/di\";\nimport {\n SystemInstallerPresenter as Abstraction,\n InstallationInput,\n SystemInstallerRepository,\n type SystemInstallerViewModel,\n type WizardStep,\n type WizardStepState,\n type ErrorObject\n} from \"./abstractions.js\";\nimport { TelemetryService } from \"~/features/telemetry/index.js\";\nimport { NewsletterSubscriptionService } from \"~/features/newsletter/index.js\";\n\nclass SystemInstallerPresenterImpl implements Abstraction.Interface {\n private loading = true;\n private isInstalled = false;\n private currentStep = 0;\n private error: ErrorObject | undefined = undefined;\n private installing = false;\n private startUsing = false;\n private installerData: Record<string, any> = {};\n private wizardSteps: WizardStep[];\n\n constructor(\n private telemetry: TelemetryService.Interface,\n private newsletter: NewsletterSubscriptionService.Interface,\n private repository: SystemInstallerRepository.Interface\n ) {\n // TODO: Wizard steps need to be implemented via plugins, but this will do for now.\n this.wizardSteps = [\n { name: \"introduction\", label: \"Introduction\" },\n { name: \"basic-info\", label: \"Basic info\" },\n // Show the admin-account step for IdPs that seed the first admin user during install:\n // Cognito (idp type) or any IdP that declares an installer app name (e.g.
|
|
1
|
+
{"version":3,"file":"presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js","sources":["../../../../../src/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, toJS } from \"mobx\";\nimport { createImplementation } from \"@webiny/di\";\nimport {\n SystemInstallerPresenter as Abstraction,\n InstallationInput,\n SystemInstallerRepository,\n type SystemInstallerViewModel,\n type WizardStep,\n type WizardStepState,\n type ErrorObject\n} from \"./abstractions.js\";\nimport { TelemetryService } from \"~/features/telemetry/index.js\";\nimport { NewsletterSubscriptionService } from \"~/features/newsletter/index.js\";\n\nclass SystemInstallerPresenterImpl implements Abstraction.Interface {\n private loading = true;\n private isInstalled = false;\n private currentStep = 0;\n private error: ErrorObject | undefined = undefined;\n private installing = false;\n private startUsing = false;\n private installerData: Record<string, any> = {};\n private wizardSteps: WizardStep[];\n\n constructor(\n private telemetry: TelemetryService.Interface,\n private newsletter: NewsletterSubscriptionService.Interface,\n private repository: SystemInstallerRepository.Interface\n ) {\n // TODO: Wizard steps need to be implemented via plugins, but this will do for now.\n this.wizardSteps = [\n { name: \"introduction\", label: \"Introduction\" },\n { name: \"basic-info\", label: \"Basic info\" },\n // Show the admin-account step for IdPs that seed the first admin user during install:\n // Cognito (idp type) or any IdP that declares an installer app name (e.g. standalone).\n // External IdPs (Okta/Auth0) set neither, so the step stays hidden for them.\n process.env.REACT_APP_IDP_TYPE === \"cognito\" ||\n Boolean(process.env.REACT_APP_AUTH_INSTALLER_APP_NAME)\n ? { name: \"admin-account\", label: \"Admin account\" }\n : undefined,\n { name: \"finish\", label: \"Finish setup\" }\n ].filter(Boolean) as WizardStep[];\n\n makeAutoObservable(this, {}, { autoBind: true });\n this.initialize();\n }\n\n private async initialize(): Promise<void> {\n runInAction(() => {\n this.loading = true;\n });\n\n try {\n const isInstalled = await this.repository.isSystemInstalled();\n runInAction(() => {\n this.isInstalled = isInstalled;\n this.startUsing = isInstalled;\n this.loading = false;\n });\n\n if (!isInstalled) {\n await this.telemetry.sendEvent(\"install-wizard-start\");\n }\n } catch {\n runInAction(() => {\n this.loading = false;\n });\n }\n }\n\n get vm(): SystemInstallerViewModel {\n return {\n error: this.error,\n loading: this.loading,\n isInstalled: this.isInstalled,\n startUsing: this.startUsing,\n currentStep: this.wizardSteps[this.currentStep].name,\n steps: this.wizardSteps.map((step, index) => {\n let state: WizardStepState = \"idle\";\n if (index === this.currentStep) {\n state = \"current\";\n }\n\n if (index < this.currentStep) {\n state = \"completed\";\n }\n\n return {\n ...step,\n state\n };\n }),\n installing: this.installing\n };\n }\n\n nextStep = (data: Record<string, any> = {}): void => {\n if (this.currentStep < this.wizardSteps.length - 1) {\n Object.assign(this.installerData, data ?? {});\n this.currentStep++;\n }\n };\n\n previousStep = (): void => {\n if (this.currentStep > 0) {\n this.currentStep--;\n }\n };\n\n goToStep = (name: WizardStep[\"name\"]): void => {\n const stepIndex = this.wizardSteps.findIndex(step => step.name === name);\n\n if (stepIndex > -1) {\n this.currentStep = stepIndex;\n }\n };\n\n installSystem = async (): Promise<void> => {\n runInAction(() => {\n this.installing = true;\n });\n try {\n const { basicInfo, ...installerData } = toJS(this.installerData);\n const installationInput: InstallationInput = Object.keys(installerData).map(key => {\n return {\n app: key,\n data: installerData[key]\n };\n });\n await this.repository.installSystem(installationInput);\n\n // We intentionally do NOT send `projectName` or `organizationName` to\n // telemetry — those are user-typed free-text fields that risk\n // identifying the user's company. Only the categorical\n // `referralSource` is forwarded for funnel attribution.\n await this.telemetry.sendEvent(\"install-wizard-end\", {\n referralSource: basicInfo.referralSource\n });\n\n runInAction(() => {\n this.isInstalled = true;\n this.installing = false;\n });\n\n // ToS acceptance in the basic-info step covers consent. Fire-and-forget\n // so a slow/failed newsletter call never blocks the wizard.\n // Admin-user data is keyed by the active IdP's installer app name (Cognito,\n // SelfHostedAuth, …), so don't hardcode \"Cognito\".\n const authApp = process.env.REACT_APP_AUTH_INSTALLER_APP_NAME || \"Cognito\";\n const adminUser = installerData[authApp];\n if (adminUser) {\n this.newsletter.subscribe({\n email: adminUser.email,\n firstName: adminUser.firstName,\n lastName: adminUser.lastName\n });\n }\n } catch (error) {\n runInAction(() => {\n this.error = error;\n this.installing = false;\n console.log(\"error\", error);\n });\n }\n };\n\n finishInstallation = () => {\n this.startUsing = true;\n };\n}\n\nexport const SystemInstallerPresenter = createImplementation({\n abstraction: Abstraction,\n implementation: SystemInstallerPresenterImpl,\n dependencies: [TelemetryService, NewsletterSubscriptionService, SystemInstallerRepository]\n});\n"],"names":["SystemInstallerPresenterImpl","telemetry","newsletter","repository","undefined","data","Object","name","stepIndex","step","runInAction","basicInfo","installerData","toJS","installationInput","key","authApp","process","adminUser","error","console","Boolean","makeAutoObservable","isInstalled","index","state","SystemInstallerPresenter","createImplementation","Abstraction","TelemetryService","NewsletterSubscriptionService","SystemInstallerRepository"],"mappings":"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"}
|