@equinor/fusion-framework-cli 10.7.4-next-c88655f3c93bff52499b1301c9a009301f818f5a → 11.0.0-next.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.
- package/CHANGELOG.md +46 -2
- package/README.md +144 -17
- package/bin/cli.mjs +4 -1
- package/dist/esm/bin/app-build.js +34 -0
- package/dist/esm/bin/app-build.js.map +1 -0
- package/dist/esm/bin/app-check.js +63 -0
- package/dist/esm/bin/app-check.js.map +1 -0
- package/dist/esm/bin/app-config-publish.js +89 -0
- package/dist/esm/bin/app-config-publish.js.map +1 -0
- package/dist/esm/bin/app-config.js +48 -0
- package/dist/esm/bin/app-config.js.map +1 -0
- package/dist/esm/bin/app-dev.js +92 -0
- package/dist/esm/bin/app-dev.js.map +1 -0
- package/dist/esm/bin/app-manifest.js +38 -0
- package/dist/esm/bin/app-manifest.js.map +1 -0
- package/dist/esm/bin/app-pack.js +51 -0
- package/dist/esm/bin/app-pack.js.map +1 -0
- package/dist/esm/bin/app-tag.js +89 -0
- package/dist/esm/bin/app-tag.js.map +1 -0
- package/dist/esm/bin/app-upload.js +109 -0
- package/dist/esm/bin/app-upload.js.map +1 -0
- package/dist/esm/bin/helpers/load-bundle-metadata.js +32 -0
- package/dist/esm/bin/helpers/load-bundle-metadata.js.map +1 -0
- package/dist/esm/bin/helpers/load-vite-config.js +55 -0
- package/dist/esm/bin/helpers/load-vite-config.js.map +1 -0
- package/dist/esm/bin/helpers/resolve-app-config.js +46 -0
- package/dist/esm/bin/helpers/resolve-app-config.js.map +1 -0
- package/dist/esm/bin/helpers/resolve-app-manifest.js +55 -0
- package/dist/esm/bin/helpers/resolve-app-manifest.js.map +1 -0
- package/dist/esm/bin/helpers/resolve-portal-manifest.js +55 -0
- package/dist/esm/bin/helpers/resolve-portal-manifest.js.map +1 -0
- package/dist/esm/bin/helpers/resolve-project-package.js +32 -0
- package/dist/esm/bin/helpers/resolve-project-package.js.map +1 -0
- package/dist/esm/bin/index.js +10 -0
- package/dist/esm/bin/index.js.map +1 -0
- package/dist/esm/bin/pack.js +70 -0
- package/dist/esm/bin/pack.js.map +1 -0
- package/dist/esm/bin/portal-build.js +40 -0
- package/dist/esm/bin/portal-build.js.map +1 -0
- package/dist/esm/bin/portal-dev.js +69 -0
- package/dist/esm/bin/portal-dev.js.map +1 -0
- package/dist/esm/bin/portal-manifest.js +38 -0
- package/dist/esm/bin/portal-manifest.js.map +1 -0
- package/dist/esm/bin/portal-pack.js +60 -0
- package/dist/esm/bin/portal-pack.js.map +1 -0
- package/dist/esm/bin/portal-tag.js +96 -0
- package/dist/esm/bin/portal-tag.js.map +1 -0
- package/dist/esm/bin/portal-upload.js +99 -0
- package/dist/esm/bin/portal-upload.js.map +1 -0
- package/dist/esm/bin/utils/ConsoleLogger.js +112 -0
- package/dist/esm/bin/utils/ConsoleLogger.js.map +1 -0
- package/dist/esm/bin/utils/create-dev-server.js +167 -0
- package/dist/esm/bin/utils/create-dev-server.js.map +1 -0
- package/dist/esm/bin/utils/format.js +47 -0
- package/dist/esm/bin/utils/format.js.map +1 -0
- package/dist/esm/bin/utils/index.js +5 -0
- package/dist/esm/bin/utils/index.js.map +1 -0
- package/dist/esm/bin/utils/spinner.js +142 -0
- package/dist/esm/bin/utils/spinner.js.map +1 -0
- package/dist/esm/cli/commands/app/alias.js +42 -0
- package/dist/esm/cli/commands/app/alias.js.map +1 -0
- package/dist/esm/cli/commands/app/build.js +46 -0
- package/dist/esm/cli/commands/app/build.js.map +1 -0
- package/dist/esm/cli/commands/app/check.js +47 -0
- package/dist/esm/cli/commands/app/check.js.map +1 -0
- package/dist/esm/cli/commands/app/config.js +91 -0
- package/dist/esm/cli/commands/app/config.js.map +1 -0
- package/dist/esm/cli/commands/app/dev.js +61 -0
- package/dist/esm/cli/commands/app/dev.js.map +1 -0
- package/dist/esm/cli/commands/app/index.js +25 -0
- package/dist/esm/cli/commands/app/index.js.map +1 -0
- package/dist/esm/cli/commands/app/manifest.js +73 -0
- package/dist/esm/cli/commands/app/manifest.js.map +1 -0
- package/dist/esm/cli/commands/app/pack.js +64 -0
- package/dist/esm/cli/commands/app/pack.js.map +1 -0
- package/dist/esm/cli/commands/app/publish.js +119 -0
- package/dist/esm/cli/commands/app/publish.js.map +1 -0
- package/dist/esm/cli/commands/app/tag.js +101 -0
- package/dist/esm/cli/commands/app/tag.js.map +1 -0
- package/dist/esm/cli/commands/app/upload.js +80 -0
- package/dist/esm/cli/commands/app/upload.js.map +1 -0
- package/dist/esm/cli/commands/auth/index.js +10 -0
- package/dist/esm/cli/commands/auth/index.js.map +1 -0
- package/dist/esm/cli/commands/auth/login.js +68 -0
- package/dist/esm/cli/commands/auth/login.js.map +1 -0
- package/dist/esm/cli/commands/auth/logout.js +55 -0
- package/dist/esm/cli/commands/auth/logout.js.map +1 -0
- package/dist/esm/cli/commands/auth/token.js +74 -0
- package/dist/esm/cli/commands/auth/token.js.map +1 -0
- package/dist/esm/cli/commands/disco/index.js +6 -0
- package/dist/esm/cli/commands/disco/index.js.map +1 -0
- package/dist/esm/cli/commands/disco/resolve.js +61 -0
- package/dist/esm/cli/commands/disco/resolve.js.map +1 -0
- package/dist/esm/cli/commands/index.js +11 -0
- package/dist/esm/cli/commands/index.js.map +1 -0
- package/dist/esm/cli/commands/portal/build.js +22 -0
- package/dist/esm/cli/commands/portal/build.js.map +1 -0
- package/dist/esm/cli/commands/portal/dev.js +24 -0
- package/dist/esm/cli/commands/portal/dev.js.map +1 -0
- package/dist/esm/cli/commands/portal/index.js +21 -0
- package/dist/esm/cli/commands/portal/index.js.map +1 -0
- package/dist/esm/cli/commands/portal/manifest.js +45 -0
- package/dist/esm/cli/commands/portal/manifest.js.map +1 -0
- package/dist/esm/cli/commands/portal/pack.js +35 -0
- package/dist/esm/cli/commands/portal/pack.js.map +1 -0
- package/dist/esm/cli/commands/portal/publish.js +73 -0
- package/dist/esm/cli/commands/portal/publish.js.map +1 -0
- package/dist/esm/cli/commands/portal/schema.js +68 -0
- package/dist/esm/cli/commands/portal/schema.js.map +1 -0
- package/dist/esm/cli/commands/portal/tag.js +69 -0
- package/dist/esm/cli/commands/portal/tag.js.map +1 -0
- package/dist/esm/cli/commands/portal/upload.js +40 -0
- package/dist/esm/cli/commands/portal/upload.js.map +1 -0
- package/dist/esm/cli/main.js +52 -0
- package/dist/esm/cli/main.js.map +1 -0
- package/dist/esm/cli/options/auth.js +96 -0
- package/dist/esm/cli/options/auth.js.map +1 -0
- package/dist/esm/cli/options/env.js +30 -0
- package/dist/esm/cli/options/env.js.map +1 -0
- package/dist/esm/lib/app/app-config.js +12 -0
- package/dist/esm/lib/app/app-config.js.map +1 -0
- package/dist/esm/lib/app/app-manifest.js +15 -0
- package/dist/esm/lib/app/app-manifest.js.map +1 -0
- package/dist/{lib → esm/lib/app}/app-package.js +30 -10
- package/dist/esm/lib/app/app-package.js.map +1 -0
- package/dist/esm/lib/app/create-app-manifest.js +72 -0
- package/dist/esm/lib/app/create-app-manifest.js.map +1 -0
- package/dist/esm/lib/app/index.js +9 -0
- package/dist/esm/lib/app/index.js.map +1 -0
- package/dist/esm/lib/app/load-app-config.js +47 -0
- package/dist/esm/lib/app/load-app-config.js.map +1 -0
- package/dist/esm/lib/app/load-app-manifest.js +61 -0
- package/dist/esm/lib/app/load-app-manifest.js.map +1 -0
- package/dist/esm/lib/app/merge-app-config.js +21 -0
- package/dist/esm/lib/app/merge-app-config.js.map +1 -0
- package/dist/esm/lib/app/merge-app-manifest.js +31 -0
- package/dist/esm/lib/app/merge-app-manifest.js.map +1 -0
- package/dist/esm/lib/app/schemas.js +28 -0
- package/dist/esm/lib/app/schemas.js.map +1 -0
- package/dist/esm/lib/dev-server.js +3 -0
- package/dist/esm/lib/dev-server.js.map +1 -0
- package/dist/esm/lib/framework.node.js +104 -0
- package/dist/esm/lib/framework.node.js.map +1 -0
- package/dist/esm/lib/index.js +5 -0
- package/dist/esm/lib/index.js.map +1 -0
- package/dist/esm/lib/legacy.js +38 -0
- package/dist/esm/lib/legacy.js.map +1 -0
- package/dist/esm/lib/load-dev-server-config.js +43 -0
- package/dist/esm/lib/load-dev-server-config.js.map +1 -0
- package/dist/esm/lib/merge-dev-server-config.js +37 -0
- package/dist/esm/lib/merge-dev-server-config.js.map +1 -0
- package/dist/esm/lib/portal/create-portal-manifest.js +93 -0
- package/dist/esm/lib/portal/create-portal-manifest.js.map +1 -0
- package/dist/esm/lib/portal/index.js +3 -0
- package/dist/esm/lib/portal/index.js.map +1 -0
- package/dist/esm/lib/portal/load-portal-manifest.js +54 -0
- package/dist/esm/lib/portal/load-portal-manifest.js.map +1 -0
- package/dist/esm/lib/portal/load-portal-schema.js +49 -0
- package/dist/esm/lib/portal/load-portal-schema.js.map +1 -0
- package/dist/esm/lib/portal/portal-manifest.js +21 -0
- package/dist/esm/lib/portal/portal-manifest.js.map +1 -0
- package/dist/esm/lib/portal/portal-manifest.schema.js +134 -0
- package/dist/esm/lib/portal/portal-manifest.schema.js.map +1 -0
- package/dist/esm/lib/static.js +20 -0
- package/dist/esm/lib/static.js.map +1 -0
- package/dist/{lib/utils → esm/lib}/types.js.map +1 -1
- package/dist/esm/lib/utils/assert.js +87 -0
- package/dist/esm/lib/utils/assert.js.map +1 -0
- package/dist/esm/lib/utils/expect.js.map +1 -0
- package/dist/{lib/plugins/app-assets/extension-filter-pattern.js → esm/lib/utils/extension-filter.js} +1 -1
- package/dist/esm/lib/utils/extension-filter.js.map +1 -0
- package/dist/esm/lib/utils/file-exists.js.map +1 -0
- package/dist/esm/lib/utils/index.js +6 -0
- package/dist/esm/lib/utils/index.js.map +1 -0
- package/dist/{lib → esm/lib}/utils/parse-json-request.js +3 -1
- package/dist/esm/lib/utils/parse-json-request.js.map +1 -0
- package/dist/esm/lib/utils/resolve-annotations.js +28 -0
- package/dist/esm/lib/utils/resolve-annotations.js.map +1 -0
- package/dist/esm/lib/utils/resolve-devops-annotations.js +59 -0
- package/dist/esm/lib/utils/resolve-devops-annotations.js.map +1 -0
- package/dist/esm/lib/utils/resolve-git-commit-sha.js +23 -0
- package/dist/esm/lib/utils/resolve-git-commit-sha.js.map +1 -0
- package/dist/esm/lib/utils/resolve-git-remote-url.js +24 -0
- package/dist/esm/lib/utils/resolve-git-remote-url.js.map +1 -0
- package/dist/esm/lib/utils/resolve-github-annotations.js +127 -0
- package/dist/esm/lib/utils/resolve-github-annotations.js.map +1 -0
- package/dist/esm/lib/utils/resolve-package-repo.js +14 -0
- package/dist/esm/lib/utils/resolve-package-repo.js.map +1 -0
- package/dist/esm/lib/utils/resolve-package.js +18 -0
- package/dist/esm/lib/utils/resolve-package.js.map +1 -0
- package/dist/esm/lib/utils/resolve-source-entry-point.js +39 -0
- package/dist/esm/lib/utils/resolve-source-entry-point.js.map +1 -0
- package/dist/esm/lib/utils/types.js.map +1 -0
- package/dist/esm/lib/utils/write-file.js +25 -0
- package/dist/esm/lib/utils/write-file.js.map +1 -0
- package/dist/esm/version.js +3 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/bin/app-build.d.ts +52 -0
- package/dist/types/bin/app-check.d.ts +31 -0
- package/dist/types/bin/app-config-publish.d.ts +23 -0
- package/dist/types/bin/app-config.d.ts +52 -0
- package/dist/types/bin/app-dev.d.ts +45 -0
- package/dist/types/bin/app-manifest.d.ts +42 -0
- package/dist/types/bin/app-pack.d.ts +38 -0
- package/dist/types/bin/app-tag.d.ts +51 -0
- package/dist/types/bin/app-upload.d.ts +40 -0
- package/dist/types/bin/helpers/load-bundle-metadata.d.ts +15 -0
- package/dist/types/bin/helpers/load-vite-config.d.ts +12 -0
- package/dist/types/bin/helpers/resolve-app-config.d.ts +18 -0
- package/dist/types/bin/helpers/resolve-app-manifest.d.ts +17 -0
- package/dist/types/bin/helpers/resolve-portal-manifest.d.ts +27 -0
- package/dist/types/bin/helpers/resolve-project-package.d.ts +13 -0
- package/dist/types/bin/index.d.ts +9 -0
- package/dist/types/bin/pack.d.ts +36 -0
- package/dist/types/bin/portal-build.d.ts +54 -0
- package/dist/types/bin/portal-dev.d.ts +37 -0
- package/dist/types/bin/portal-manifest.d.ts +60 -0
- package/dist/types/bin/portal-pack.d.ts +54 -0
- package/dist/types/bin/portal-tag.d.ts +51 -0
- package/dist/types/bin/portal-upload.d.ts +37 -0
- package/dist/types/bin/utils/ConsoleLogger.d.ts +84 -0
- package/dist/types/bin/utils/create-dev-server.d.ts +49 -0
- package/dist/types/bin/utils/format.d.ts +27 -0
- package/dist/types/bin/utils/index.d.ts +3 -13
- package/dist/types/bin/utils/spinner.d.ts +75 -0
- package/dist/types/cli/commands/app/alias.d.ts +6 -0
- package/dist/types/cli/commands/app/build.d.ts +27 -0
- package/dist/types/cli/commands/app/check.d.ts +26 -0
- package/dist/types/cli/commands/app/config.d.ts +34 -0
- package/dist/types/cli/commands/app/dev.d.ts +29 -0
- package/dist/types/cli/commands/app/index.d.ts +3 -0
- package/dist/types/cli/commands/app/manifest.d.ts +30 -0
- package/dist/types/cli/commands/app/pack.d.ts +31 -0
- package/dist/types/cli/commands/app/publish.d.ts +31 -0
- package/dist/types/cli/commands/app/tag.d.ts +33 -0
- package/dist/types/cli/commands/app/upload.d.ts +29 -0
- package/dist/types/cli/commands/auth/index.d.ts +3 -0
- package/dist/types/cli/commands/auth/login.d.ts +2 -0
- package/dist/types/cli/commands/auth/logout.d.ts +12 -0
- package/dist/types/cli/commands/auth/token.d.ts +13 -0
- package/dist/types/cli/commands/disco/index.d.ts +2 -0
- package/dist/types/cli/commands/disco/resolve.d.ts +25 -0
- package/dist/types/cli/commands/portal/build.d.ts +2 -0
- package/dist/types/cli/commands/portal/dev.d.ts +2 -0
- package/dist/types/cli/commands/portal/index.d.ts +2 -0
- package/dist/types/cli/commands/portal/manifest.d.ts +2 -0
- package/dist/types/cli/commands/portal/pack.d.ts +2 -0
- package/dist/types/cli/commands/portal/publish.d.ts +2 -0
- package/dist/types/cli/commands/portal/schema.d.ts +2 -0
- package/dist/types/cli/commands/portal/tag.d.ts +2 -0
- package/dist/types/cli/commands/portal/upload.d.ts +2 -0
- package/dist/types/cli/main.d.ts +21 -0
- package/dist/types/cli/options/auth.d.ts +37 -0
- package/dist/types/cli/options/env.d.ts +19 -0
- package/dist/types/lib/app/app-config.d.ts +31 -0
- package/dist/types/lib/app/app-manifest.d.ts +39 -0
- package/dist/types/lib/{app-package.d.ts → app/app-package.d.ts} +27 -10
- package/dist/types/lib/app/create-app-manifest.d.ts +17 -0
- package/dist/types/lib/app/index.d.ts +8 -0
- package/dist/types/lib/app/load-app-config.d.ts +54 -0
- package/dist/types/lib/app/load-app-manifest.d.ts +57 -0
- package/dist/types/lib/app/merge-app-config.d.ts +13 -0
- package/dist/types/lib/app/merge-app-manifest.d.ts +25 -0
- package/dist/types/{schemas.d.ts → lib/app/schemas.d.ts} +10 -1
- package/dist/types/lib/dev-server.d.ts +2 -0
- package/dist/types/lib/framework.node.d.ts +77 -0
- package/dist/types/lib/index.d.ts +4 -3
- package/dist/types/lib/legacy.d.ts +24 -0
- package/dist/types/lib/load-dev-server-config.d.ts +40 -0
- package/dist/types/lib/merge-dev-server-config.d.ts +16 -0
- package/dist/types/lib/portal/create-portal-manifest.d.ts +22 -0
- package/dist/types/lib/portal/index.d.ts +2 -0
- package/dist/types/lib/portal/load-portal-manifest.d.ts +65 -0
- package/dist/types/lib/portal/load-portal-schema.d.ts +43 -0
- package/dist/types/lib/portal/portal-manifest.d.ts +16 -0
- package/dist/types/lib/portal/portal-manifest.schema.d.ts +154 -0
- package/dist/types/lib/static.d.ts +10 -0
- package/dist/types/lib/types.d.ts +34 -0
- package/dist/types/lib/utils/assert.d.ts +48 -0
- package/dist/types/lib/utils/index.d.ts +5 -0
- package/dist/types/lib/utils/resolve-annotations.d.ts +11 -0
- package/dist/types/lib/utils/resolve-devops-annotations.d.ts +30 -0
- package/dist/types/lib/utils/resolve-git-commit-sha.d.ts +13 -0
- package/dist/types/lib/utils/resolve-git-remote-url.d.ts +13 -0
- package/dist/types/lib/utils/resolve-github-annotations.d.ts +65 -0
- package/dist/types/lib/utils/resolve-package-repo.d.ts +9 -0
- package/dist/types/lib/utils/resolve-package.d.ts +15 -0
- package/dist/types/lib/utils/resolve-source-entry-point.d.ts +17 -0
- package/dist/types/lib/utils/types.d.ts +1 -1
- package/dist/types/lib/utils/write-file.d.ts +14 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +48 -69
- package/dist/bin/build-application.js +0 -55
- package/dist/bin/build-application.js.map +0 -1
- package/dist/bin/bundle-application.js +0 -41
- package/dist/bin/bundle-application.js.map +0 -1
- package/dist/bin/create-dev-serve.js +0 -127
- package/dist/bin/create-dev-serve.js.map +0 -1
- package/dist/bin/create-export-config.js +0 -40
- package/dist/bin/create-export-config.js.map +0 -1
- package/dist/bin/create-export-manifest.js +0 -67
- package/dist/bin/create-export-manifest.js.map +0 -1
- package/dist/bin/dev-portal/AppLoader.js +0 -80
- package/dist/bin/dev-portal/AppLoader.js.map +0 -1
- package/dist/bin/dev-portal/BookMarkSideSheet.js +0 -13
- package/dist/bin/dev-portal/BookMarkSideSheet.js.map +0 -1
- package/dist/bin/dev-portal/ContextSelector/ContextSelector.js +0 -40
- package/dist/bin/dev-portal/ContextSelector/ContextSelector.js.map +0 -1
- package/dist/bin/dev-portal/ContextSelector/index.js +0 -2
- package/dist/bin/dev-portal/ContextSelector/index.js.map +0 -1
- package/dist/bin/dev-portal/ContextSelector/useContextResolver.js +0 -171
- package/dist/bin/dev-portal/ContextSelector/useContextResolver.js.map +0 -1
- package/dist/bin/dev-portal/EquinorLoader.js +0 -14
- package/dist/bin/dev-portal/EquinorLoader.js.map +0 -1
- package/dist/bin/dev-portal/ErrorViewer.js +0 -7
- package/dist/bin/dev-portal/ErrorViewer.js.map +0 -1
- package/dist/bin/dev-portal/FusionLogo.js +0 -4
- package/dist/bin/dev-portal/FusionLogo.js.map +0 -1
- package/dist/bin/dev-portal/Header.Actions.js +0 -12
- package/dist/bin/dev-portal/Header.Actions.js.map +0 -1
- package/dist/bin/dev-portal/Header.js +0 -41
- package/dist/bin/dev-portal/Header.js.map +0 -1
- package/dist/bin/dev-portal/PersonSideSheet/index.js +0 -32
- package/dist/bin/dev-portal/PersonSideSheet/index.js.map +0 -1
- package/dist/bin/dev-portal/PersonSideSheet/sheets/FeatureSheetContent.js +0 -16
- package/dist/bin/dev-portal/PersonSideSheet/sheets/FeatureSheetContent.js.map +0 -1
- package/dist/bin/dev-portal/PersonSideSheet/sheets/FeatureTogglerApp.js +0 -15
- package/dist/bin/dev-portal/PersonSideSheet/sheets/FeatureTogglerApp.js.map +0 -1
- package/dist/bin/dev-portal/PersonSideSheet/sheets/FeatureTogglerPortal.js +0 -13
- package/dist/bin/dev-portal/PersonSideSheet/sheets/FeatureTogglerPortal.js.map +0 -1
- package/dist/bin/dev-portal/PersonSideSheet/sheets/LandingSheetContent.js +0 -19
- package/dist/bin/dev-portal/PersonSideSheet/sheets/LandingSheetContent.js.map +0 -1
- package/dist/bin/dev-portal/PersonSideSheet/sheets/Styled.js +0 -30
- package/dist/bin/dev-portal/PersonSideSheet/sheets/Styled.js.map +0 -1
- package/dist/bin/dev-portal/PersonSideSheet/sheets/index.js +0 -3
- package/dist/bin/dev-portal/PersonSideSheet/sheets/index.js.map +0 -1
- package/dist/bin/dev-portal/PersonSideSheet/sheets/types.js.map +0 -1
- package/dist/bin/dev-portal/Router.js +0 -59
- package/dist/bin/dev-portal/Router.js.map +0 -1
- package/dist/bin/dev-portal/config.js +0 -79
- package/dist/bin/dev-portal/config.js.map +0 -1
- package/dist/bin/dev-portal/main.js +0 -13
- package/dist/bin/dev-portal/main.js.map +0 -1
- package/dist/bin/dev-portal/resources/fallback-photo.svg.js +0 -3
- package/dist/bin/dev-portal/resources/fallback-photo.svg.js.map +0 -1
- package/dist/bin/dev-portal/useAppContextNavigation.js +0 -87
- package/dist/bin/dev-portal/useAppContextNavigation.js.map +0 -1
- package/dist/bin/main.app.js +0 -172
- package/dist/bin/main.app.js.map +0 -1
- package/dist/bin/main.js +0 -20
- package/dist/bin/main.js.map +0 -1
- package/dist/bin/public/assets/index-zNJWGyEE.js +0 -3686
- package/dist/bin/public/index.html +0 -37
- package/dist/bin/publish-application.js +0 -96
- package/dist/bin/publish-application.js.map +0 -1
- package/dist/bin/tag-application.js +0 -73
- package/dist/bin/tag-application.js.map +0 -1
- package/dist/bin/upload-application.js +0 -63
- package/dist/bin/upload-application.js.map +0 -1
- package/dist/bin/upload-export-config.js +0 -78
- package/dist/bin/upload-export-config.js.map +0 -1
- package/dist/bin/utils/execute-command.js +0 -14
- package/dist/bin/utils/execute-command.js.map +0 -1
- package/dist/bin/utils/format.js +0 -16
- package/dist/bin/utils/format.js.map +0 -1
- package/dist/bin/utils/getEndpointUrl.js +0 -40
- package/dist/bin/utils/getEndpointUrl.js.map +0 -1
- package/dist/bin/utils/index.js +0 -14
- package/dist/bin/utils/index.js.map +0 -1
- package/dist/bin/utils/isAppRegistered.js +0 -26
- package/dist/bin/utils/isAppRegistered.js.map +0 -1
- package/dist/bin/utils/load-app-config.js +0 -26
- package/dist/bin/utils/load-app-config.js.map +0 -1
- package/dist/bin/utils/load-manifest.js +0 -31
- package/dist/bin/utils/load-manifest.js.map +0 -1
- package/dist/bin/utils/load-package.js +0 -18
- package/dist/bin/utils/load-package.js.map +0 -1
- package/dist/bin/utils/load-vite-config.js +0 -45
- package/dist/bin/utils/load-vite-config.js.map +0 -1
- package/dist/bin/utils/proxy-request-logger.js +0 -33
- package/dist/bin/utils/proxy-request-logger.js.map +0 -1
- package/dist/bin/utils/publishAppConfig.js +0 -29
- package/dist/bin/utils/publishAppConfig.js.map +0 -1
- package/dist/bin/utils/requireToken.js +0 -9
- package/dist/bin/utils/requireToken.js.map +0 -1
- package/dist/bin/utils/spinner.js +0 -65
- package/dist/bin/utils/spinner.js.map +0 -1
- package/dist/bin/utils/tagAppBundle.js +0 -26
- package/dist/bin/utils/tagAppBundle.js.map +0 -1
- package/dist/bin/utils/uploadAppBundle.js +0 -45
- package/dist/bin/utils/uploadAppBundle.js.map +0 -1
- package/dist/lib/app-config.js +0 -32
- package/dist/lib/app-config.js.map +0 -1
- package/dist/lib/app-manifest.js +0 -142
- package/dist/lib/app-manifest.js.map +0 -1
- package/dist/lib/app-package.js.map +0 -1
- package/dist/lib/index.js +0 -4
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/plugins/app-assets/app-asset-plugin.js +0 -96
- package/dist/lib/plugins/app-assets/app-asset-plugin.js.map +0 -1
- package/dist/lib/plugins/app-assets/emit-asset.js +0 -46
- package/dist/lib/plugins/app-assets/emit-asset.js.map +0 -1
- package/dist/lib/plugins/app-assets/extension-filter-pattern.js.map +0 -1
- package/dist/lib/plugins/app-assets/index.js +0 -4
- package/dist/lib/plugins/app-assets/index.js.map +0 -1
- package/dist/lib/plugins/app-assets/read-asset-content.js +0 -34
- package/dist/lib/plugins/app-assets/read-asset-content.js.map +0 -1
- package/dist/lib/plugins/app-assets/resolve-asset-id.js +0 -54
- package/dist/lib/plugins/app-assets/resolve-asset-id.js.map +0 -1
- package/dist/lib/plugins/app-assets/static.js +0 -15
- package/dist/lib/plugins/app-assets/static.js.map +0 -1
- package/dist/lib/plugins/app-proxy/app-proxy-plugin.js +0 -125
- package/dist/lib/plugins/app-proxy/app-proxy-plugin.js.map +0 -1
- package/dist/lib/plugins/app-proxy/index.js +0 -2
- package/dist/lib/plugins/app-proxy/index.js.map +0 -1
- package/dist/lib/plugins/app-settings/index.js +0 -36
- package/dist/lib/plugins/app-settings/index.js.map +0 -1
- package/dist/lib/plugins/external-public/external-public-plugin.js +0 -101
- package/dist/lib/plugins/external-public/external-public-plugin.js.map +0 -1
- package/dist/lib/plugins/external-public/index.js +0 -2
- package/dist/lib/plugins/external-public/index.js.map +0 -1
- package/dist/lib/plugins/help-proxy/help-proxy-plugin.js +0 -78
- package/dist/lib/plugins/help-proxy/help-proxy-plugin.js.map +0 -1
- package/dist/lib/plugins/help-proxy/index.js +0 -2
- package/dist/lib/plugins/help-proxy/index.js.map +0 -1
- package/dist/lib/utils/assert.js +0 -28
- package/dist/lib/utils/assert.js.map +0 -1
- package/dist/lib/utils/config.js +0 -67
- package/dist/lib/utils/config.js.map +0 -1
- package/dist/lib/utils/expect.js.map +0 -1
- package/dist/lib/utils/file-exists.js.map +0 -1
- package/dist/lib/utils/parse-json-request.js.map +0 -1
- package/dist/lib/utils/ts-transpile.js +0 -45
- package/dist/lib/utils/ts-transpile.js.map +0 -1
- package/dist/lib/vite-config.js +0 -76
- package/dist/lib/vite-config.js.map +0 -1
- package/dist/lib/vite-logger.js +0 -21
- package/dist/lib/vite-logger.js.map +0 -1
- package/dist/schemas.js +0 -14
- package/dist/schemas.js.map +0 -1
- package/dist/types/bin/build-application.d.ts +0 -13
- package/dist/types/bin/bundle-application.d.ts +0 -4
- package/dist/types/bin/create-dev-serve.d.ts +0 -12
- package/dist/types/bin/create-export-config.d.ts +0 -13
- package/dist/types/bin/create-export-manifest.d.ts +0 -16
- package/dist/types/bin/dev-portal/AppLoader.d.ts +0 -11
- package/dist/types/bin/dev-portal/BookMarkSideSheet.d.ts +0 -6
- package/dist/types/bin/dev-portal/ContextSelector/ContextSelector.d.ts +0 -8
- package/dist/types/bin/dev-portal/ContextSelector/index.d.ts +0 -1
- package/dist/types/bin/dev-portal/ContextSelector/useContextResolver.d.ts +0 -15
- package/dist/types/bin/dev-portal/EquinorLoader.d.ts +0 -5
- package/dist/types/bin/dev-portal/ErrorViewer.d.ts +0 -4
- package/dist/types/bin/dev-portal/FusionLogo.d.ts +0 -6
- package/dist/types/bin/dev-portal/Header.Actions.d.ts +0 -7
- package/dist/types/bin/dev-portal/Header.d.ts +0 -2
- package/dist/types/bin/dev-portal/PersonSideSheet/index.d.ts +0 -11
- package/dist/types/bin/dev-portal/PersonSideSheet/sheets/FeatureSheetContent.d.ts +0 -6
- package/dist/types/bin/dev-portal/PersonSideSheet/sheets/FeatureTogglerApp.d.ts +0 -5
- package/dist/types/bin/dev-portal/PersonSideSheet/sheets/FeatureTogglerPortal.d.ts +0 -5
- package/dist/types/bin/dev-portal/PersonSideSheet/sheets/LandingSheetContent.d.ts +0 -5
- package/dist/types/bin/dev-portal/PersonSideSheet/sheets/Styled.d.ts +0 -6
- package/dist/types/bin/dev-portal/PersonSideSheet/sheets/index.d.ts +0 -2
- package/dist/types/bin/dev-portal/PersonSideSheet/sheets/types.d.ts +0 -5
- package/dist/types/bin/dev-portal/Router.d.ts +0 -1
- package/dist/types/bin/dev-portal/config.d.ts +0 -3
- package/dist/types/bin/dev-portal/main.d.ts +0 -1
- package/dist/types/bin/dev-portal/resources/fallback-photo.svg.d.ts +0 -2
- package/dist/types/bin/dev-portal/useAppContextNavigation.d.ts +0 -5
- package/dist/types/bin/main.d.ts +0 -1
- package/dist/types/bin/publish-application.d.ts +0 -6
- package/dist/types/bin/tag-application.d.ts +0 -12
- package/dist/types/bin/upload-application.d.ts +0 -6
- package/dist/types/bin/upload-export-config.d.ts +0 -10
- package/dist/types/bin/utils/execute-command.d.ts +0 -8
- package/dist/types/bin/utils/getEndpointUrl.d.ts +0 -10
- package/dist/types/bin/utils/isAppRegistered.d.ts +0 -5
- package/dist/types/bin/utils/load-app-config.d.ts +0 -10
- package/dist/types/bin/utils/load-manifest.d.ts +0 -10
- package/dist/types/bin/utils/load-package.d.ts +0 -5
- package/dist/types/bin/utils/load-vite-config.d.ts +0 -10
- package/dist/types/bin/utils/proxy-request-logger.d.ts +0 -15
- package/dist/types/bin/utils/publishAppConfig.d.ts +0 -9
- package/dist/types/bin/utils/requireToken.d.ts +0 -4
- package/dist/types/bin/utils/tagAppBundle.d.ts +0 -7
- package/dist/types/bin/utils/uploadAppBundle.d.ts +0 -7
- package/dist/types/lib/app-config.d.ts +0 -27
- package/dist/types/lib/app-manifest.d.ts +0 -52
- package/dist/types/lib/plugins/app-assets/app-asset-plugin.d.ts +0 -36
- package/dist/types/lib/plugins/app-assets/emit-asset.d.ts +0 -18
- package/dist/types/lib/plugins/app-assets/index.d.ts +0 -3
- package/dist/types/lib/plugins/app-assets/read-asset-content.d.ts +0 -14
- package/dist/types/lib/plugins/app-assets/resolve-asset-id.d.ts +0 -16
- package/dist/types/lib/plugins/app-assets/static.d.ts +0 -5
- package/dist/types/lib/plugins/app-proxy/app-proxy-plugin.d.ts +0 -89
- package/dist/types/lib/plugins/app-proxy/index.d.ts +0 -1
- package/dist/types/lib/plugins/app-settings/index.d.ts +0 -32
- package/dist/types/lib/plugins/external-public/external-public-plugin.d.ts +0 -30
- package/dist/types/lib/plugins/external-public/index.d.ts +0 -1
- package/dist/types/lib/plugins/help-proxy/help-proxy-plugin.d.ts +0 -42
- package/dist/types/lib/plugins/help-proxy/index.d.ts +0 -1
- package/dist/types/lib/utils/config.d.ts +0 -32
- package/dist/types/lib/utils/ts-transpile.d.ts +0 -2
- package/dist/types/lib/vite-config.d.ts +0 -17
- package/dist/types/lib/vite-logger.d.ts +0 -2
- package/dist/version.js +0 -3
- package/dist/version.js.map +0 -1
- /package/dist/{bin/dev-portal/PersonSideSheet/sheets → esm/lib}/types.js +0 -0
- /package/dist/{lib → esm/lib}/utils/expect.js +0 -0
- /package/dist/{lib → esm/lib}/utils/file-exists.js +0 -0
- /package/dist/{lib → esm/lib}/utils/types.js +0 -0
- /package/dist/types/{bin/main.app.d.ts → cli/commands/index.d.ts} +0 -0
- /package/dist/types/lib/{plugins/app-assets/extension-filter-pattern.d.ts → utils/extension-filter.d.ts} +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { importConfig } from '@equinor/fusion-imports';
|
|
2
|
+
import mergeAppManifests from './merge-app-manifest.js';
|
|
3
|
+
/**
|
|
4
|
+
* Loads an application manifest file and processes its contents.
|
|
5
|
+
*
|
|
6
|
+
* This function attempts to load a configuration file (defaulting to `app.manifest`) and resolves
|
|
7
|
+
* its contents using a provided script resolver. The manifest can either be a static object
|
|
8
|
+
* or a function that dynamically generates the manifest based on the runtime environment.
|
|
9
|
+
*
|
|
10
|
+
* If the specified file is not found and the runtime environment includes an `environment` property,
|
|
11
|
+
* the function will attempt to load a manifest file specific to that environment (e.g., `app.manifest.<environment>`).
|
|
12
|
+
*
|
|
13
|
+
* @param env - The runtime environment object, containing information such as the root directory and environment name.
|
|
14
|
+
* @param options - Optional parameters for loading the manifest.
|
|
15
|
+
* @returns A promise that resolves to an object containing the loaded manifest, the file path, and the file extension.
|
|
16
|
+
* @throws {FileNotFoundError} If the manifest file cannot be found and no fallback is available.
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export const loadAppManifest = async (env, options) => {
|
|
20
|
+
// Suggest config filenames based on environment
|
|
21
|
+
const suggestions = options?.file ?? [
|
|
22
|
+
`app.manifest.${env.environment}`,
|
|
23
|
+
'app.manifest',
|
|
24
|
+
'app.manifest.config',
|
|
25
|
+
];
|
|
26
|
+
// Use importConfig to dynamically import and resolve the manifest
|
|
27
|
+
const importResult = await importConfig(suggestions, {
|
|
28
|
+
baseDir: env.root,
|
|
29
|
+
extensions: options?.extensions,
|
|
30
|
+
script: {
|
|
31
|
+
/**
|
|
32
|
+
* Custom resolver for the imported manifest module.
|
|
33
|
+
*
|
|
34
|
+
* This function determines if the imported module's default export is a function or an object.
|
|
35
|
+
* If it's a function, it is invoked with the runtime environment and the base manifest, allowing
|
|
36
|
+
* for dynamic manifest generation. If it's an object, it is used directly as the manifest.
|
|
37
|
+
*
|
|
38
|
+
* @param module - The imported module containing the manifest export (either function or object).
|
|
39
|
+
* @returns The resolved manifest of type T.
|
|
40
|
+
*/
|
|
41
|
+
resolve: async (module) => {
|
|
42
|
+
const base = options?.base ?? {}; // Use provided base or fallback to empty object
|
|
43
|
+
// If the module's default export is a function, invoke it with the environment and base manifest
|
|
44
|
+
if (typeof module.default === 'function') {
|
|
45
|
+
const result = await module.default(env, { base });
|
|
46
|
+
return mergeAppManifests(base, result ?? {}); // Merge and cast to Record<string, unknown>
|
|
47
|
+
}
|
|
48
|
+
// If the module's default export is not a function, treat it as a manifest object
|
|
49
|
+
return mergeAppManifests(base, module.default ?? {});
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
// Return the loaded manifest, file path, and extension for further use
|
|
54
|
+
// Maintainers: This return structure is used by downstream consumers to access the manifest and its metadata
|
|
55
|
+
return {
|
|
56
|
+
manifest: importResult.config,
|
|
57
|
+
path: importResult.path,
|
|
58
|
+
extension: importResult.extension,
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=load-app-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-app-manifest.js","sourceRoot":"","sources":["../../../../src/lib/app/load-app-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAMvD,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AAyCxD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,GAAe,EACf,OAAgC,EACA,EAAE;IAClC,gDAAgD;IAChD,MAAM,WAAW,GAAG,OAAO,EAAE,IAAI,IAAI;QACnC,gBAAgB,GAAG,CAAC,WAAW,EAAE;QACjC,cAAc;QACd,qBAAqB;KACtB,CAAC;IACF,kEAAkE;IAClE,MAAM,YAAY,GAAG,MAAM,YAAY,CACrC,WAAW,EACX;QACE,OAAO,EAAE,GAAG,CAAC,IAAI;QACjB,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,MAAM,EAAE;YACN;;;;;;;;;eASG;YACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACxB,MAAM,IAAI,GAAgB,OAAO,EAAE,IAAI,IAAK,EAAkB,CAAC,CAAC,gDAAgD;gBAChH,iGAAiG;gBACjG,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBACzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBACnD,OAAO,iBAAiB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,4CAA4C;gBAC5F,CAAC;gBACD,kFAAkF;gBAClF,OAAO,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC;SACF;KACF,CACF,CAAC;IACF,uEAAuE;IACvE,6GAA6G;IAC7G,OAAO;QACL,QAAQ,EAAE,YAAY,CAAC,MAAM;QAC7B,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,SAAS,EAAE,YAAY,CAAC,SAAS;KAClC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import mergeWith from 'lodash.mergewith';
|
|
2
|
+
/**
|
|
3
|
+
* Merges a base application configuration object with an overrides object,
|
|
4
|
+
* returning a new configuration object. If the `scopes` property is present
|
|
5
|
+
* in the overrides, it will replace the corresponding property in the base
|
|
6
|
+
* configuration instead of merging deeply.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam T - The type of the application configuration object, extending `AppConfig`.
|
|
9
|
+
* @param base - The base configuration object to merge into.
|
|
10
|
+
* @param overrides - An object containing properties to override in the base configuration.
|
|
11
|
+
* @returns A new configuration object resulting from merging `base` and `overrides`.
|
|
12
|
+
*/
|
|
13
|
+
export const mergeAppConfig = (base, overrides) => {
|
|
14
|
+
// if scopes are provided in overrides, use the new scopes
|
|
15
|
+
return mergeWith(base, overrides, (_, value, key) => {
|
|
16
|
+
if (key === 'scopes') {
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=merge-app-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-app-config.js","sourceRoot":"","sources":["../../../../src/lib/app/merge-app-config.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAGzC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAsB,IAAO,EAAE,SAAqB,EAAK,EAAE;IACvF,0DAA0D;IAC1D,OAAO,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAClD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAM,CAAC;AACV,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import mergeWith from 'lodash.mergewith';
|
|
2
|
+
/**
|
|
3
|
+
* Deeply merges two application manifests using lodash's mergeWith.
|
|
4
|
+
*
|
|
5
|
+
* This utility is intended for combining a base manifest with an override manifest,
|
|
6
|
+
* supporting recursive merging of nested properties. It is commonly used in scenarios
|
|
7
|
+
* where environment-specific or user-specific manifest customizations are required.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* export default defineAppManifest(base => mergeAppManifests(base, { prop: value }));
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @param base - The base manifest to merge with. Typically the default or environment-agnostic manifest.
|
|
15
|
+
* @param overrides - The manifest containing properties to override or extend the base manifest.
|
|
16
|
+
* @returns The deeply merged manifest object.
|
|
17
|
+
*
|
|
18
|
+
* @remarks
|
|
19
|
+
* - Maintainers: This function does not perform schema validation. Ensure validation is handled elsewhere.
|
|
20
|
+
* - Future: Consider adding assertions or schema checks after merging for safety.
|
|
21
|
+
*/
|
|
22
|
+
export const mergeAppManifests = (base, // The base manifest (may be partial)
|
|
23
|
+
overrides) => {
|
|
24
|
+
// Use lodash.mergeWith for deep merging of manifest objects
|
|
25
|
+
const manifest = mergeWith(base, overrides);
|
|
26
|
+
// TODO: Add assertions or schema validation here if needed
|
|
27
|
+
return manifest;
|
|
28
|
+
};
|
|
29
|
+
// Export as default for convenience in import statements
|
|
30
|
+
export default mergeAppManifests;
|
|
31
|
+
//# sourceMappingURL=merge-app-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-app-manifest.js","sourceRoot":"","sources":["../../../../src/lib/app/merge-app-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAIzC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAmC,EAAE,qCAAqC;AAC1E,SAAwC,EAC3B,EAAE;IACf,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAgB,CAAC;IAC3D,2DAA2D;IAC3D,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,yDAAyD;AACzD,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for validating the API application configuration object.
|
|
4
|
+
*
|
|
5
|
+
* This schema defines the structure and types for the app config used in the Fusion Framework CLI.
|
|
6
|
+
* It ensures that the configuration adheres to expected types and provides sensible defaults.
|
|
7
|
+
*/
|
|
8
|
+
export const ApiAppConfigSchema = z
|
|
9
|
+
.object({
|
|
10
|
+
environment: z
|
|
11
|
+
.record(z.any())
|
|
12
|
+
.describe('Key-value map of environment-specific variables for the application. Defaults to an empty object if not provided.')
|
|
13
|
+
.optional()
|
|
14
|
+
.default({}), // Arbitrary environment variables, default empty
|
|
15
|
+
endpoints: z
|
|
16
|
+
.record(z.object({
|
|
17
|
+
url: z.string().describe('The endpoint URL. This field is required.'),
|
|
18
|
+
scopes: z
|
|
19
|
+
.array(z.string())
|
|
20
|
+
.optional()
|
|
21
|
+
.default([])
|
|
22
|
+
.describe('List of scopes required for accessing this endpoint. Defaults to an empty array.'),
|
|
23
|
+
}))
|
|
24
|
+
.describe('A mapping of endpoint names to their configuration objects. Each endpoint must specify a URL and may specify scopes.')
|
|
25
|
+
.optional(), // Endpoints are optional
|
|
26
|
+
})
|
|
27
|
+
.describe('The API application configuration schema, defining environment variables and endpoints for the application.');
|
|
28
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../../src/lib/app/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,WAAW,EAAE,CAAC;SACX,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACf,QAAQ,CACP,mHAAmH,CACpH;SACA,QAAQ,EAAE;SACV,OAAO,CAAC,EAAE,CAAC,EAAE,iDAAiD;IACjE,SAAS,EAAE,CAAC;SACT,MAAM,CACL,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QACrE,MAAM,EAAE,CAAC;aACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,kFAAkF,CACnF;KACJ,CAAC,CACH;SACA,QAAQ,CACP,sHAAsH,CACvH;SACA,QAAQ,EAAE,EAAE,yBAAyB;CACzC,CAAC;KACD,QAAQ,CACP,6GAA6G,CAC9G,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../../../src/lib/dev-server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GAGtB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { ModulesConfigurator } from '@equinor/fusion-framework-module';
|
|
2
|
+
import { enableAuthModule } from '@equinor/fusion-framework-module-msal-node';
|
|
3
|
+
import { module as httpModule } from '@equinor/fusion-framework-module-http';
|
|
4
|
+
import { enableServiceDiscovery, } from '@equinor/fusion-framework-module-service-discovery';
|
|
5
|
+
import isContinuousIntegration from 'is-ci';
|
|
6
|
+
// Default scope for Fusion service discovery
|
|
7
|
+
const FUSION_SERVICE_SCOPE = ['5a842df8-3238-415d-b168-9f16a6a6031b/.default'];
|
|
8
|
+
/**
|
|
9
|
+
* Enum for supported Fusion environments.
|
|
10
|
+
* Used to select the correct environment for service discovery and authentication.
|
|
11
|
+
*/
|
|
12
|
+
export var FusionEnv;
|
|
13
|
+
(function (FusionEnv) {
|
|
14
|
+
FusionEnv["ContinuesIntegration"] = "ci";
|
|
15
|
+
FusionEnv["QualityAssurance"] = "fqa";
|
|
16
|
+
FusionEnv["Training"] = "tr";
|
|
17
|
+
FusionEnv["Production"] = "fprd";
|
|
18
|
+
FusionEnv["Development"] = "dev";
|
|
19
|
+
})(FusionEnv || (FusionEnv = {}));
|
|
20
|
+
/**
|
|
21
|
+
* Resolves the default environment based on CI status and dev allowance.
|
|
22
|
+
*
|
|
23
|
+
* @param allowDev - If true, allows development environment when not in CI.
|
|
24
|
+
* @returns The resolved Fusion environment.
|
|
25
|
+
*/
|
|
26
|
+
export const resolveDefaultEnv = (allowDev) => {
|
|
27
|
+
// If development is allowed and not running in CI, use development environment
|
|
28
|
+
if (allowDev && !isContinuousIntegration) {
|
|
29
|
+
return FusionEnv.Development;
|
|
30
|
+
}
|
|
31
|
+
// Otherwise, default to CI environment
|
|
32
|
+
return FusionEnv.ContinuesIntegration;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Initializes the Fusion Framework with the provided settings.
|
|
36
|
+
*
|
|
37
|
+
* This function configures HTTP, service discovery, and authentication modules
|
|
38
|
+
* based on the supplied configuration. It supports multiple authentication modes
|
|
39
|
+
* and allows customization of service discovery endpoints and scopes.
|
|
40
|
+
*
|
|
41
|
+
* @param config - The settings for framework initialization.
|
|
42
|
+
* @returns A promise resolving to the initialized Fusion Framework instance.
|
|
43
|
+
* @throws Will throw if required authentication parameters are missing.
|
|
44
|
+
*/
|
|
45
|
+
export const initializeFramework = async (config) => {
|
|
46
|
+
// Create a new module configurator for the framework
|
|
47
|
+
const configurator = new ModulesConfigurator();
|
|
48
|
+
// Determine the environment to use, defaulting to CI if not specified
|
|
49
|
+
const env = config.env ?? FusionEnv.ContinuesIntegration;
|
|
50
|
+
// Configure the HTTP module for service discovery
|
|
51
|
+
configurator.addConfig({
|
|
52
|
+
module: httpModule,
|
|
53
|
+
configure: (builder) => {
|
|
54
|
+
// Use CI environment for service discovery in development, otherwise use the selected env
|
|
55
|
+
const serviceDiscoveryEnv = env === FusionEnv.Development ? FusionEnv.ContinuesIntegration : env;
|
|
56
|
+
// Determine the base URI for service discovery
|
|
57
|
+
const baseUri = config.serviceDiscovery?.url ??
|
|
58
|
+
new URL(`/service-registry/environments/${serviceDiscoveryEnv}/services`, 'https://discovery.fusion.equinor.com').toString();
|
|
59
|
+
// Use provided scopes or default Fusion service scope
|
|
60
|
+
const defaultScopes = config.serviceDiscovery?.scope ?? FUSION_SERVICE_SCOPE;
|
|
61
|
+
// Register the service discovery client with the HTTP module
|
|
62
|
+
builder.configureClient('service_discovery', {
|
|
63
|
+
baseUri,
|
|
64
|
+
defaultScopes,
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
// Enable the service discovery module
|
|
69
|
+
enableServiceDiscovery(configurator);
|
|
70
|
+
// Enable the authentication module with custom configuration logic
|
|
71
|
+
enableAuthModule(configurator, (builder) => {
|
|
72
|
+
const { auth } = config;
|
|
73
|
+
// Handle direct token authentication
|
|
74
|
+
if ('token' in auth && auth.token) {
|
|
75
|
+
const { token } = auth;
|
|
76
|
+
builder.setMode('token_only');
|
|
77
|
+
builder.setAccessToken(token);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// Handle silent or interactive authentication
|
|
81
|
+
const { clientId, tenantId, interactive } = auth;
|
|
82
|
+
if (!clientId || !tenantId) {
|
|
83
|
+
// Both clientId and tenantId are required for these modes
|
|
84
|
+
throw new Error('clientId and tenantId are required for auth module');
|
|
85
|
+
}
|
|
86
|
+
// Set client configuration for authentication
|
|
87
|
+
builder.setClientConfig(tenantId, clientId);
|
|
88
|
+
// Set authentication mode based on interactive flag
|
|
89
|
+
builder.setMode(interactive ? 'interactive' : 'silent');
|
|
90
|
+
if (interactive) {
|
|
91
|
+
// For interactive mode, server configuration is required
|
|
92
|
+
const { server } = auth;
|
|
93
|
+
if (!server.port) {
|
|
94
|
+
throw new Error('server.port is required for interactive mode');
|
|
95
|
+
}
|
|
96
|
+
builder.setServerPort(server.port);
|
|
97
|
+
builder.setServerOnOpen(server.onOpen);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
// Initialize all configured modules and return the framework instance
|
|
101
|
+
const instance = await configurator.initialize();
|
|
102
|
+
return instance;
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=framework.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework.node.js","sourceRoot":"","sources":["../../../src/lib/framework.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { initializeFramework } from './framework.node.js';
|
|
2
|
+
// Legacy imports - these will be removed in the next major version
|
|
3
|
+
// @todo - remove these imports, introduced in v11
|
|
4
|
+
export { defineAppConfig, defineAppManifest } from './legacy.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAwB,MAAM,qBAAqB,CAAC;AAEhF,mEAAmE;AACnE,kDAAkD;AAClD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { defineAppConfig as _defineConfig } from './app/app-config.js';
|
|
3
|
+
import { defineAppManifest as _defineManifest } from './app/app-manifest.js';
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated
|
|
6
|
+
* Will be removed in the next major version.
|
|
7
|
+
* Please use `defineAppConfig` from `@equinor/fusion-framework-cli/app` instead.
|
|
8
|
+
*
|
|
9
|
+
* Transitional wrapper for legacy defineAppConfig. This function exists only to prevent immediate breaking changes
|
|
10
|
+
* and should be removed as soon as possible. Consumers should migrate to the new API without delay.
|
|
11
|
+
*
|
|
12
|
+
* @param args - Arguments passed to the new defineAppConfig function.
|
|
13
|
+
*/
|
|
14
|
+
export const defineAppConfig = (...args) => {
|
|
15
|
+
// Emit a strong warning to alert consumers that this usage is deprecated and must be fixed ASAP
|
|
16
|
+
console.warn(chalk.bgRed.white.bold('[DEPRECATION]'), chalk.redBright.bold('[@equinor/fusion-framework-cli] `defineAppConfig` is deprecated and will be removed in the next major version!\n' +
|
|
17
|
+
'Please update your code to use `defineAppConfig` from `@equinor/fusion-framework-cli/app` as soon as possible.'));
|
|
18
|
+
// Forward the call to the new implementation
|
|
19
|
+
return _defineConfig(...args);
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated
|
|
23
|
+
* Will be removed in the next major version.
|
|
24
|
+
* Please use `defineAppManifest` from `@equinor/fusion-framework-cli/app` instead.
|
|
25
|
+
*
|
|
26
|
+
* Transitional wrapper for legacy defineAppManifest. This function exists only to prevent immediate breaking changes
|
|
27
|
+
* and should be removed as soon as possible. Consumers should migrate to the new API without delay.
|
|
28
|
+
*
|
|
29
|
+
* @param args - Arguments passed to the new defineAppManifest function.
|
|
30
|
+
*/
|
|
31
|
+
export const defineAppManifest = (...args) => {
|
|
32
|
+
// Emit a strong warning to alert consumers that this usage is deprecated and must be fixed ASAP
|
|
33
|
+
console.warn(chalk.bgRed.white.bold('[DEPRECATION]'), chalk.redBright.bold('[@equinor/fusion-framework-cli] `defineAppManifest` is deprecated and will be removed in the next major version!\n' +
|
|
34
|
+
'Please update your code to use `defineAppManifest` from `@equinor/fusion-framework-cli/app` as soon as possible.'));
|
|
35
|
+
// Forward the call to the new implementation
|
|
36
|
+
return _defineManifest(...args);
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=legacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../../src/lib/legacy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,iBAAiB,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,IAAsC,EAAE,EAAE;IAC3E,gGAAgG;IAChG,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EACvC,KAAK,CAAC,SAAS,CAAC,IAAI,CAClB,kHAAkH;QAChH,gHAAgH,CACnH,CACF,CAAC;IACF,6CAA6C;IAC7C,OAAO,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAwC,EAAE,EAAE;IAC/E,gGAAgG;IAChG,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EACvC,KAAK,CAAC,SAAS,CAAC,IAAI,CAClB,oHAAoH;QAClH,kHAAkH,CACrH,CACF,CAAC;IACF,6CAA6C;IAC7C,OAAO,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { importConfig } from '@equinor/fusion-imports';
|
|
2
|
+
/**
|
|
3
|
+
* Helper to define a dev server config function with proper typing.
|
|
4
|
+
* @param fn - The configuration function to be used as the dev server config.
|
|
5
|
+
* @returns The same function, typed as DevServerConfigFn.
|
|
6
|
+
*/
|
|
7
|
+
export const defineDevServerConfig = (fn) => fn;
|
|
8
|
+
/**
|
|
9
|
+
* Loads the dev server configuration from a file or function.
|
|
10
|
+
*
|
|
11
|
+
* @param env - The runtime environment configuration.
|
|
12
|
+
* @param base - The base DevServerOptions to use as defaults.
|
|
13
|
+
* @param options - Optional settings for file name and extensions.
|
|
14
|
+
* @returns A promise resolving to the imported config result.
|
|
15
|
+
*
|
|
16
|
+
* This function uses importConfig to dynamically load the configuration file.
|
|
17
|
+
* If the config export is a function, it is invoked with the environment and a cloned base config.
|
|
18
|
+
* If the config export is an object, it is merged with the base config.
|
|
19
|
+
*
|
|
20
|
+
* Inline comments are provided for maintainability and clarity.
|
|
21
|
+
*/
|
|
22
|
+
export const loadDevServerConfig = async (env, base, options) => {
|
|
23
|
+
// Use importConfig to load the config file, defaulting to 'dev-server.config' if not specified
|
|
24
|
+
return importConfig(options?.file ?? 'dev-server.config', {
|
|
25
|
+
baseDir: env.root, // Set the base directory for config resolution
|
|
26
|
+
extensions: options?.extensions, // Allow custom file extensions
|
|
27
|
+
script: {
|
|
28
|
+
// Custom resolver for the config module
|
|
29
|
+
resolve: async (module) => {
|
|
30
|
+
// If the default export is a function, call it with env and a cloned base config
|
|
31
|
+
if (typeof module.default === 'function') {
|
|
32
|
+
const baseClone = { ...base }; // Clone base to avoid mutation
|
|
33
|
+
const result = (await module.default(env, { base: baseClone })) ?? base;
|
|
34
|
+
// TODO: Add zod validation of the config for type safety
|
|
35
|
+
return result ?? baseClone;
|
|
36
|
+
}
|
|
37
|
+
// If the default export is an object, return it or fallback to base
|
|
38
|
+
return module.default ?? base;
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=load-dev-server-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-dev-server-config.js","sourceRoot":"","sources":["../../../src/lib/load-dev-server-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA2B,MAAM,yBAAyB,CAAC;AAoBhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAqB,EAAE,EAAE,CAAC,EAAE,CAAC;AAEnE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,GAAe,EACf,IAAsB,EACtB,OAGC,EAC8C,EAAE;IACjD,+FAA+F;IAC/F,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,IAAI,mBAAmB,EAAE;QACxD,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,+CAA+C;QAClE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,+BAA+B;QAChE,MAAM,EAAE;YACN,wCAAwC;YACxC,OAAO,EAAE,KAAK,EAAE,MAA0C,EAA6B,EAAE;gBACvF,iFAAiF;gBACjF,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBACzC,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,+BAA+B;oBAC9D,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;oBACxE,yDAAyD;oBACzD,OAAO,MAAM,IAAI,SAAS,CAAC;gBAC7B,CAAC;gBACD,oEAAoE;gBACpE,OAAO,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;YAChC,CAAC;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import mergeWith from 'lodash.mergewith';
|
|
2
|
+
/**
|
|
3
|
+
* Customizer function for lodash.mergeWith to handle merging arrays.
|
|
4
|
+
*
|
|
5
|
+
* If the property being merged is an array, the source value replaces the object value.
|
|
6
|
+
* This prevents arrays from being concatenated, which is the default lodash behavior.
|
|
7
|
+
*
|
|
8
|
+
* @param objValue - The value from the base object.
|
|
9
|
+
* @param srcValue - The value from the overrides object.
|
|
10
|
+
* @returns The value to use in the merged result, or undefined to use default merging.
|
|
11
|
+
*/
|
|
12
|
+
const customizer = (objValue, srcValue) => {
|
|
13
|
+
if (Array.isArray(objValue)) {
|
|
14
|
+
// Replace arrays instead of merging/concatenating them
|
|
15
|
+
return srcValue;
|
|
16
|
+
}
|
|
17
|
+
// For non-arrays, use default merge behavior
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Merges a base development server configuration with an overrides object.
|
|
21
|
+
*
|
|
22
|
+
* Uses lodash.mergeWith to deeply merge properties, with custom logic for arrays.
|
|
23
|
+
* Arrays in the overrides object will replace arrays in the base config.
|
|
24
|
+
*
|
|
25
|
+
* @param base - The base development server configuration.
|
|
26
|
+
* @param overrides - A partial configuration object containing properties to override in the base configuration.
|
|
27
|
+
* @returns The merged development server configuration.
|
|
28
|
+
*
|
|
29
|
+
* Inline comments are provided for maintainability and clarity.
|
|
30
|
+
*/
|
|
31
|
+
export const mergeDevServerConfig = (base, overrides) => {
|
|
32
|
+
// Use lodash.mergeWith to merge base and overrides, applying the customizer for arrays
|
|
33
|
+
return mergeWith(base, overrides, customizer);
|
|
34
|
+
};
|
|
35
|
+
// Export as default for convenience in imports
|
|
36
|
+
export default mergeDevServerConfig;
|
|
37
|
+
//# sourceMappingURL=merge-dev-server-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-dev-server-config.js","sourceRoot":"","sources":["../../../src/lib/merge-dev-server-config.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAKzC;;;;;;;;;GASG;AACH,MAAM,UAAU,GAAG,CAAC,QAAiB,EAAE,QAAiB,EAAE,EAAE;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,uDAAuD;QACvD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,6CAA6C;AAC/C,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAAsB,EACtB,SAA6C,EAC3B,EAAE;IACpB,uFAAuF;IACvF,OAAO,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAqB,CAAC;AACpE,CAAC,CAAC;AAEF,+CAA+C;AAC/C,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { assert, assertObject } from '../utils/assert.js';
|
|
2
|
+
import { resolveAnnotations } from '../utils/resolve-annotations.js';
|
|
3
|
+
import { resolveEntryPoint } from '../utils/resolve-source-entry-point.js';
|
|
4
|
+
import { resolveRepoFromPackage } from '../utils/resolve-package-repo.js';
|
|
5
|
+
import { resolveGitRemoteUrl } from '../utils/resolve-git-remote-url.js';
|
|
6
|
+
import { resolveGitCommitSha } from '../utils/resolve-git-commit-sha.js';
|
|
7
|
+
import { ASSET_EXTENSIONS } from '../static.js';
|
|
8
|
+
import { PortalManifestSchema } from './portal-manifest.schema.js';
|
|
9
|
+
/**
|
|
10
|
+
* Resolves the appropriate entry point for a portal based on the current runtime environment.
|
|
11
|
+
*
|
|
12
|
+
* - In production or preview environments, it prefers the compiled entry point specified by
|
|
13
|
+
* the `main` or `module` fields in the provided `package.json`, falling back to `'dist/bundle.js'` if neither is present.
|
|
14
|
+
* - In development, it uses the source entry point for improved debugging.
|
|
15
|
+
*
|
|
16
|
+
* @param env - The runtime environment configuration, including command and preview status.
|
|
17
|
+
* @param packageJson - The parsed contents of the package's `package.json` file.
|
|
18
|
+
* @returns The resolved entry point path as a string.
|
|
19
|
+
*/
|
|
20
|
+
const resolvePortalEntryPoint = (env, packageJson) => {
|
|
21
|
+
// Use compiled entry point when building for production or preview environments
|
|
22
|
+
if (env.command === 'build' || env.isPreview) {
|
|
23
|
+
// Prefer 'main', then 'module', then fallback to default bundle path
|
|
24
|
+
return packageJson.main || packageJson.module || 'dist/bundle.js';
|
|
25
|
+
}
|
|
26
|
+
// Use source entry point during development for better debugging
|
|
27
|
+
return resolveEntryPoint(env.root);
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Creates a `PortalManifest` object from the provided `package.json` data and runtime environment.
|
|
31
|
+
*
|
|
32
|
+
* This function validates the input package information, determines the appropriate entry point,
|
|
33
|
+
* extracts metadata such as the app key, version, and repository information, and constructs a manifest
|
|
34
|
+
* object suitable for use in portal deployment and development workflows.
|
|
35
|
+
*
|
|
36
|
+
* @param env - The runtime environment, containing information such as the current command (e.g., 'build', 'dev').
|
|
37
|
+
* @param packageJson - The parsed `package.json` object for the portal package, expected to include at least `name` and `version`.
|
|
38
|
+
* @returns A fully constructed `PortalManifest` object containing metadata, build information, and asset configuration.
|
|
39
|
+
*
|
|
40
|
+
* @throws Will throw an error if `packageJson` is not a valid object or is missing required fields.
|
|
41
|
+
*
|
|
42
|
+
* @remarks
|
|
43
|
+
* - Maintainers: This function is the canonical way to generate a portal manifest from package metadata.
|
|
44
|
+
* - The manifest structure is tightly coupled to the portal build and deployment pipeline.
|
|
45
|
+
* - If you add new fields to the manifest, update this function and its documentation accordingly.
|
|
46
|
+
*/
|
|
47
|
+
export const createPortalManifestFromPackage = (env, packageJson) => {
|
|
48
|
+
// Validate that packageJson is a valid object and contains required fields
|
|
49
|
+
assertObject(packageJson, 'expected packageJson');
|
|
50
|
+
assert(packageJson.name, 'expected [name] in packageJson');
|
|
51
|
+
assert(packageJson.version, 'expected [version] in packageJson');
|
|
52
|
+
// Determine the entry point for the portal based on environment (prod/dev)
|
|
53
|
+
const entryPoint = resolvePortalEntryPoint(env, packageJson);
|
|
54
|
+
// Extract appKey from package name by removing the scope and leading @
|
|
55
|
+
// Example: '@scope/app-name' -> 'app-name'
|
|
56
|
+
const name = packageJson.name.replace(/^@|\w.*\//gm, '');
|
|
57
|
+
const version = packageJson.version;
|
|
58
|
+
// Only set assetPath when not building for production (used for dev/preview)
|
|
59
|
+
const assetPath = env.command === 'build' ? undefined : `bundles/portals/${name}/${version}`;
|
|
60
|
+
// Attempt to resolve GitHub repo from package, fallback to local git remote
|
|
61
|
+
const githubRepo = resolveRepoFromPackage(packageJson) ?? resolveGitRemoteUrl();
|
|
62
|
+
// Construct the portal manifest object with all required fields
|
|
63
|
+
const manifest = {
|
|
64
|
+
name,
|
|
65
|
+
displayName: packageJson.name,
|
|
66
|
+
description: packageJson.description || '',
|
|
67
|
+
build: {
|
|
68
|
+
templateEntry: entryPoint,
|
|
69
|
+
schemaEntry: 'portal.schema.json',
|
|
70
|
+
assetPath,
|
|
71
|
+
githubRepo,
|
|
72
|
+
version,
|
|
73
|
+
timestamp: new Date().toISOString(),
|
|
74
|
+
commitSha: resolveGitCommitSha(),
|
|
75
|
+
annotations: {
|
|
76
|
+
...resolveAnnotations(),
|
|
77
|
+
// ...packageJson.annotations ?? {}
|
|
78
|
+
},
|
|
79
|
+
projectPage: packageJson.homepage,
|
|
80
|
+
allowedExtensions: ASSET_EXTENSIONS.map((ext) => `.${ext}`),
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
// Validate manifest against schema and throw if invalid
|
|
84
|
+
const parsed = PortalManifestSchema.safeParse(manifest);
|
|
85
|
+
if (!parsed.success) {
|
|
86
|
+
const details = parsed.error.issues
|
|
87
|
+
.map((i) => `- ${i.path.join('.')}: ${i.message}`)
|
|
88
|
+
.join('\n');
|
|
89
|
+
throw new Error(['Invalid portal manifest generated from package.json:', details].join('\n'));
|
|
90
|
+
}
|
|
91
|
+
return parsed.data;
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=create-portal-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-portal-manifest.js","sourceRoot":"","sources":["../../../../src/lib/portal/create-portal-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/portal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GAIvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GAInB,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { importConfig } from '@equinor/fusion-imports';
|
|
2
|
+
import { PortalManifestSchema } from './portal-manifest.schema.js';
|
|
3
|
+
/**
|
|
4
|
+
* Loads a portal manifest configuration file, merging it with optional base values and supporting multiple file extensions.
|
|
5
|
+
*
|
|
6
|
+
* @template T - The type of the portal manifest, extending Partial<PortalManifest>. Defaults to PortalManifest.
|
|
7
|
+
* @param env - The runtime environment containing configuration such as the root directory and environment name.
|
|
8
|
+
* @param options - Optional settings for loading the manifest.
|
|
9
|
+
* @returns A promise that resolves to a `LoadAppManifestResult<T>` containing the loaded manifest, the file path, and the file extension.
|
|
10
|
+
*
|
|
11
|
+
* This function is the main entry point for loading portal manifest files. It supports merging with a base manifest, custom file name suggestions, and extension filtering.
|
|
12
|
+
*
|
|
13
|
+
* Example usage:
|
|
14
|
+
* ```ts
|
|
15
|
+
* const result = await loadPortalManifest(env, { base: {}, file: 'custom.manifest' });
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export const loadPortalManifest = async (env, options) => {
|
|
19
|
+
// Determine manifest file name suggestions, defaulting to environment-specific and generic names
|
|
20
|
+
const suggestions = options?.file ?? [`portal.manifest.${env.environment}`, 'portal.manifest'];
|
|
21
|
+
// Import the manifest configuration using the provided suggestions and options
|
|
22
|
+
const importResult = await importConfig(suggestions, {
|
|
23
|
+
baseDir: env.root, // Set the base directory for manifest resolution
|
|
24
|
+
extensions: options?.extensions, // Allow custom file extensions if provided
|
|
25
|
+
script: {
|
|
26
|
+
// Custom resolver for manifest modules
|
|
27
|
+
resolve: async (module) => {
|
|
28
|
+
// Use the provided base manifest or an empty object as the starting point
|
|
29
|
+
const base = options?.base ?? {};
|
|
30
|
+
// If the manifest export is a function, call it with the environment and base manifest
|
|
31
|
+
if (typeof module.default === 'function') {
|
|
32
|
+
// Await the result of the manifest function, falling back to base if undefined
|
|
33
|
+
const result = (await module.default(env, { base })) ?? base;
|
|
34
|
+
return result ?? base;
|
|
35
|
+
}
|
|
36
|
+
// If the manifest export is an object, merge or return it directly
|
|
37
|
+
return module.default ?? base;
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
// Return the loaded manifest, file path, and extension for downstream use
|
|
42
|
+
// Validate the manifest before returning using the PortalManifestSchema (Zod)
|
|
43
|
+
const manifest = importResult.config;
|
|
44
|
+
const validation = PortalManifestSchema.safeParse(manifest);
|
|
45
|
+
if (!validation.success) {
|
|
46
|
+
throw new Error(`Invalid portal manifest: ${validation.error.errors.map((e) => `${e.path.join('.')}: ${e.message}`).join('; ')}`);
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
manifest,
|
|
50
|
+
path: importResult.path,
|
|
51
|
+
extension: importResult.extension,
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=load-portal-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-portal-manifest.js","sourceRoot":"","sources":["../../../../src/lib/portal/load-portal-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAuDnE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,GAAe,EACf,OAAsC,EACH,EAAE;IACrC,iGAAiG;IACjG,MAAM,WAAW,GAAG,OAAO,EAAE,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,WAAW,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAE/F,+EAA+E;IAC/E,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE;QACnD,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,iDAAiD;QACpE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,2CAA2C;QAC5E,MAAM,EAAE;YACN,uCAAuC;YACvC,OAAO,EAAE,KAAK,EAAE,MAA4C,EAAc,EAAE;gBAC1E,0EAA0E;gBAC1E,MAAM,IAAI,GAAM,OAAO,EAAE,IAAI,IAAK,EAAQ,CAAC;gBAC3C,uFAAuF;gBACvF,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBACzC,+EAA+E;oBAC/E,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;oBAC7D,OAAO,MAAM,IAAI,IAAI,CAAC;gBACxB,CAAC;gBACD,mEAAmE;gBACnE,OAAQ,MAAM,CAAC,OAAa,IAAI,IAAI,CAAC;YACvC,CAAC;SACF;KACF,CAAC,CAAC;IAEH,0EAA0E;IAC1E,8EAA8E;IAC9E,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAW,CAAC;IAC1C,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,4BAA4B,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjH,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ;QACR,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,SAAS,EAAE,YAAY,CAAC,SAAS;KAClC,CAAC;AACJ,CAAC,CAAC"}
|