adnbn 0.13.0 → 0.15.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/dist/cli/builders/app/build.d.ts +7 -0
- package/dist/cli/builders/app/build.js +58 -0
- package/dist/cli/builders/app/build.js.map +1 -0
- package/dist/cli/builders/app/index.d.ts +6 -1
- package/dist/cli/builders/app/index.js +49 -14
- package/dist/cli/builders/app/index.js.map +1 -1
- package/dist/cli/builders/app/{command.d.ts → watch.d.ts} +0 -1
- package/dist/cli/builders/app/{command.js → watch.js} +1 -26
- package/dist/cli/builders/app/watch.js.map +1 -0
- package/dist/cli/builders/manifest/ManifestBase.d.ts +8 -1
- package/dist/cli/builders/manifest/ManifestBase.js +30 -0
- package/dist/cli/builders/manifest/ManifestBase.js.map +1 -1
- package/dist/cli/builders/manifest/ManifestV2.js +3 -15
- package/dist/cli/builders/manifest/ManifestV2.js.map +1 -1
- package/dist/cli/builders/manifest/ManifestV3.js +3 -15
- package/dist/cli/builders/manifest/ManifestV3.js.map +1 -1
- package/dist/cli/bundler/plugins/entrypoint/EntrypointPlugin.js +4 -0
- package/dist/cli/bundler/plugins/entrypoint/EntrypointPlugin.js.map +1 -1
- package/dist/cli/entrypoint/finder/AbstractOverrideFinder.d.ts +15 -0
- package/dist/cli/entrypoint/finder/AbstractOverrideFinder.js +20 -0
- package/dist/cli/entrypoint/finder/AbstractOverrideFinder.js.map +1 -0
- package/dist/cli/entrypoint/finder/AbstractViewFinder.d.ts +6 -1
- package/dist/cli/entrypoint/finder/AbstractViewFinder.js +15 -0
- package/dist/cli/entrypoint/finder/AbstractViewFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/BookmarksFinder.d.ts +9 -0
- package/dist/cli/entrypoint/finder/BookmarksFinder.js +18 -0
- package/dist/cli/entrypoint/finder/BookmarksFinder.js.map +1 -0
- package/dist/cli/entrypoint/finder/CommandFinder.d.ts +4 -0
- package/dist/cli/entrypoint/finder/CommandFinder.js +20 -6
- package/dist/cli/entrypoint/finder/CommandFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/HistoryFinder.d.ts +9 -0
- package/dist/cli/entrypoint/finder/HistoryFinder.js +18 -0
- package/dist/cli/entrypoint/finder/HistoryFinder.js.map +1 -0
- package/dist/cli/entrypoint/finder/NewtabFinder.d.ts +9 -0
- package/dist/cli/entrypoint/finder/NewtabFinder.js +18 -0
- package/dist/cli/entrypoint/finder/NewtabFinder.js.map +1 -0
- package/dist/cli/entrypoint/finder/OptionsFinder.d.ts +2 -2
- package/dist/cli/entrypoint/finder/OptionsFinder.js +2 -2
- package/dist/cli/entrypoint/finder/OptionsFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/PageFinder.js +1 -1
- package/dist/cli/entrypoint/finder/PageFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/PopupFinder.d.ts +2 -2
- package/dist/cli/entrypoint/finder/PopupFinder.js +2 -2
- package/dist/cli/entrypoint/finder/PopupFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/SidebarFinder.d.ts +2 -2
- package/dist/cli/entrypoint/finder/SidebarFinder.js +2 -2
- package/dist/cli/entrypoint/finder/SidebarFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/ViewCspFinder.d.ts +2 -3
- package/dist/cli/entrypoint/finder/ViewCspFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/ViewPermissionsFinder.d.ts +22 -0
- package/dist/cli/entrypoint/finder/ViewPermissionsFinder.js +43 -0
- package/dist/cli/entrypoint/finder/ViewPermissionsFinder.js.map +1 -0
- package/dist/cli/entrypoint/finder/index.d.ts +5 -0
- package/dist/cli/entrypoint/finder/index.js +50 -40
- package/dist/cli/entrypoint/finder/index.js.map +1 -1
- package/dist/cli/entrypoint/name/NameGenerator.d.ts +2 -0
- package/dist/cli/entrypoint/name/NameGenerator.js +5 -1
- package/dist/cli/entrypoint/name/NameGenerator.js.map +1 -1
- package/dist/cli/entrypoint/parser/AbstractOverrideParser.d.ts +9 -0
- package/dist/cli/entrypoint/parser/AbstractOverrideParser.js +11 -0
- package/dist/cli/entrypoint/parser/AbstractOverrideParser.js.map +1 -0
- package/dist/cli/entrypoint/parser/BackgroundParser.js +3 -6
- package/dist/cli/entrypoint/parser/BackgroundParser.js.map +1 -1
- package/dist/cli/entrypoint/parser/BookmarksParser.d.ts +5 -0
- package/dist/cli/entrypoint/parser/BookmarksParser.js +10 -0
- package/dist/cli/entrypoint/parser/BookmarksParser.js.map +1 -0
- package/dist/cli/entrypoint/parser/HistoryParser.d.ts +5 -0
- package/dist/cli/entrypoint/parser/HistoryParser.js +10 -0
- package/dist/cli/entrypoint/parser/HistoryParser.js.map +1 -0
- package/dist/cli/entrypoint/parser/NewtabParser.d.ts +5 -0
- package/dist/cli/entrypoint/parser/NewtabParser.js +10 -0
- package/dist/cli/entrypoint/parser/NewtabParser.js.map +1 -0
- package/dist/cli/entrypoint/parser/OptionsParser.js +2 -1
- package/dist/cli/entrypoint/parser/OptionsParser.js.map +1 -1
- package/dist/cli/entrypoint/parser/PopupParser.js +2 -1
- package/dist/cli/entrypoint/parser/PopupParser.js.map +1 -1
- package/dist/cli/entrypoint/parser/SidebarParser.js +2 -1
- package/dist/cli/entrypoint/parser/SidebarParser.js.map +1 -1
- package/dist/cli/entrypoint/parser/ViewCspParser.d.ts +1 -1
- package/dist/cli/entrypoint/parser/ViewParser.d.ts +1 -1243
- package/dist/cli/entrypoint/parser/ViewParser.js +2 -72
- package/dist/cli/entrypoint/parser/ViewParser.js.map +1 -1
- package/dist/cli/entrypoint/parser/index.d.ts +4 -0
- package/dist/cli/entrypoint/parser/index.js +28 -20
- package/dist/cli/entrypoint/parser/index.js.map +1 -1
- package/dist/cli/entrypoint/parser/schemas/html.d.ts +903 -0
- package/dist/cli/entrypoint/parser/schemas/html.js +64 -0
- package/dist/cli/entrypoint/parser/schemas/html.js.map +1 -0
- package/dist/cli/entrypoint/parser/schemas/permissions.d.ts +23 -0
- package/dist/cli/entrypoint/parser/schemas/permissions.js +11 -0
- package/dist/cli/entrypoint/parser/schemas/permissions.js.map +1 -0
- package/dist/cli/index.js +16 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/plugins/action.d.ts +2 -0
- package/dist/cli/plugins/action.js +13 -0
- package/dist/cli/plugins/action.js.map +1 -0
- package/dist/cli/plugins/index.d.ts +2 -0
- package/dist/cli/plugins/index.js +52 -48
- package/dist/cli/plugins/index.js.map +1 -1
- package/dist/cli/plugins/offscreen/index.js +2 -4
- package/dist/cli/plugins/offscreen/index.js.map +1 -1
- package/dist/cli/plugins/options/index.js +1 -1
- package/dist/cli/plugins/options/index.js.map +1 -1
- package/dist/cli/plugins/override/Override.d.ts +31 -0
- package/dist/cli/plugins/override/Override.js +112 -0
- package/dist/cli/plugins/override/Override.js.map +1 -0
- package/dist/cli/plugins/override/index.d.ts +2 -0
- package/dist/cli/plugins/override/index.js +48 -0
- package/dist/cli/plugins/override/index.js.map +1 -0
- package/dist/cli/plugins/popup/index.js +1 -1
- package/dist/cli/plugins/popup/index.js.map +1 -1
- package/dist/cli/plugins/sidebar/index.js +1 -2
- package/dist/cli/plugins/sidebar/index.js.map +1 -1
- package/dist/cli/plugins/style/index.js +34 -31
- package/dist/cli/plugins/style/index.js.map +1 -1
- package/dist/cli/plugins/style/rebase.d.ts +14 -0
- package/dist/cli/plugins/style/rebase.js +63 -0
- package/dist/cli/plugins/style/rebase.js.map +1 -0
- package/dist/cli/plugins/style/utils.d.ts +5 -1
- package/dist/cli/plugins/style/utils.js +21 -8
- package/dist/cli/plugins/style/utils.js.map +1 -1
- package/dist/cli/plugins/typescript/TypescriptConfig.js +2 -2
- package/dist/cli/plugins/typescript/TypescriptConfig.js.map +1 -1
- package/dist/cli/plugins/view/View.d.ts +1 -1
- package/dist/cli/plugins/view/View.js +2 -10
- package/dist/cli/plugins/view/View.js.map +1 -1
- package/dist/cli/plugins/view/index.js +10 -1
- package/dist/cli/plugins/view/index.js.map +1 -1
- package/dist/cli/resolvers/bundler.js +9 -1
- package/dist/cli/resolvers/bundler.js.map +1 -1
- package/dist/cli/resolvers/config.js +7 -1
- package/dist/cli/resolvers/config.js.map +1 -1
- package/dist/cli/utils/path.js +1 -1
- package/dist/cli/utils/path.js.map +1 -1
- package/dist/cli/virtual/index.js +14 -17
- package/dist/cli/virtual/virtual.d.ts +7 -127
- package/dist/entry/background/Builder.js +1 -1
- package/dist/entry/background/Builder.js.map +1 -1
- package/dist/entry/background/index.d.ts +1 -1
- package/dist/entry/background/index.js +3 -2
- package/dist/entry/background/index.js.map +1 -1
- package/dist/entry/background/resolvers/definition.d.ts +5 -1
- package/dist/entry/background/resolvers/definition.js +15 -4
- package/dist/entry/background/resolvers/definition.js.map +1 -1
- package/dist/entry/command/Builder.js +1 -1
- package/dist/entry/command/Builder.js.map +1 -1
- package/dist/entry/command/index.d.ts +1 -1
- package/dist/entry/command/index.js +3 -2
- package/dist/entry/command/index.js.map +1 -1
- package/dist/entry/command/resolvers/definition.d.ts +6 -2
- package/dist/entry/command/resolvers/definition.js +14 -4
- package/dist/entry/command/resolvers/definition.js.map +1 -1
- package/dist/entry/content/adapters/react/Builder.js +4 -2
- package/dist/entry/content/adapters/react/Builder.js.map +1 -1
- package/dist/entry/content/adapters/react/Node.js +11 -6
- package/dist/entry/content/adapters/react/Node.js.map +1 -1
- package/dist/entry/content/adapters/react/definition.js +3 -2
- package/dist/entry/content/adapters/react/definition.js.map +1 -1
- package/dist/entry/content/adapters/vanilla/Builder.js +2 -2
- package/dist/entry/content/adapters/vanilla/Builder.js.map +1 -1
- package/dist/entry/content/adapters/vanilla/Node.js +3 -5
- package/dist/entry/content/adapters/vanilla/Node.js.map +1 -1
- package/dist/entry/content/adapters/vanilla/definition.js +2 -2
- package/dist/entry/content/adapters/vanilla/definition.js.map +1 -1
- package/dist/entry/content/lifecycle/Builder.js +5 -9
- package/dist/entry/content/lifecycle/Builder.js.map +1 -1
- package/dist/entry/core/react.d.ts +6 -0
- package/dist/entry/core/react.js +16 -0
- package/dist/entry/core/react.js.map +1 -0
- package/dist/entry/core/render.d.ts +5 -0
- package/dist/entry/core/render.js +16 -0
- package/dist/entry/core/render.js.map +1 -0
- package/dist/entry/offscreen/Builder.d.ts +6 -7
- package/dist/entry/offscreen/Builder.js +12 -13
- package/dist/entry/offscreen/Builder.js.map +1 -1
- package/dist/entry/offscreen/TransportBuilder.d.ts +1 -1
- package/dist/entry/offscreen/TransportBuilder.js +4 -3
- package/dist/entry/offscreen/TransportBuilder.js.map +1 -1
- package/dist/entry/offscreen/index.d.ts +5 -2
- package/dist/entry/offscreen/index.js +8 -2
- package/dist/entry/offscreen/index.js.map +1 -1
- package/dist/entry/offscreen/resolvers/definition.d.ts +4 -0
- package/dist/entry/offscreen/resolvers/definition.js +8 -0
- package/dist/entry/offscreen/resolvers/definition.js.map +1 -0
- package/dist/entry/relay/Builder.d.ts +4 -3
- package/dist/entry/relay/Builder.js.map +1 -1
- package/dist/entry/relay/index.d.ts +4 -3
- package/dist/entry/relay/index.js.map +1 -1
- package/dist/entry/relay/resolvers/definition.d.ts +1 -1
- package/dist/entry/relay/resolvers/definition.js +2 -10
- package/dist/entry/relay/resolvers/definition.js.map +1 -1
- package/dist/entry/sandbox/Builder.d.ts +6 -7
- package/dist/entry/sandbox/Builder.js +8 -12
- package/dist/entry/sandbox/Builder.js.map +1 -1
- package/dist/entry/sandbox/TransportBuilder.d.ts +1 -1
- package/dist/entry/sandbox/TransportBuilder.js +4 -3
- package/dist/entry/sandbox/TransportBuilder.js.map +1 -1
- package/dist/entry/sandbox/index.d.ts +7 -2
- package/dist/entry/sandbox/index.js +10 -4
- package/dist/entry/sandbox/index.js.map +1 -1
- package/dist/entry/sandbox/resolvers/definition.d.ts +4 -0
- package/dist/entry/sandbox/resolvers/definition.js +8 -0
- package/dist/entry/sandbox/resolvers/definition.js.map +1 -0
- package/dist/entry/service/index.d.ts +1 -0
- package/dist/entry/service/index.js +3 -1
- package/dist/entry/service/index.js.map +1 -1
- package/dist/entry/service/resolvers/definition.d.ts +3 -0
- package/dist/entry/service/resolvers/definition.js +8 -0
- package/dist/entry/service/resolvers/definition.js.map +1 -0
- package/dist/entry/transport/AbstractBuilder.js +1 -1
- package/dist/entry/transport/AbstractBuilder.js.map +1 -1
- package/dist/entry/transport/resolvers/definition.d.ts +7 -5
- package/dist/entry/transport/resolvers/definition.js +15 -4
- package/dist/entry/transport/resolvers/definition.js.map +1 -1
- package/dist/entry/view/{core/Builder.d.ts → Builder.d.ts} +9 -4
- package/dist/entry/view/Builder.js +62 -0
- package/dist/entry/view/Builder.js.map +1 -0
- package/dist/entry/view/adapters/react/Builder.d.ts +6 -7
- package/dist/entry/view/adapters/react/Builder.js +20 -23
- package/dist/entry/view/adapters/react/Builder.js.map +1 -1
- package/dist/entry/view/adapters/react/definition.d.ts +2 -0
- package/dist/entry/view/adapters/react/definition.js +13 -0
- package/dist/entry/view/adapters/react/definition.js.map +1 -0
- package/dist/entry/view/adapters/react/index.d.ts +2 -1
- package/dist/entry/view/adapters/react/index.js +3 -1
- package/dist/entry/view/adapters/react/index.js.map +1 -1
- package/dist/entry/view/adapters/vanilla/Builder.d.ts +5 -6
- package/dist/entry/view/adapters/vanilla/Builder.js +14 -25
- package/dist/entry/view/adapters/vanilla/Builder.js.map +1 -1
- package/dist/entry/view/adapters/vanilla/definition.d.ts +2 -0
- package/dist/entry/view/adapters/vanilla/definition.js +9 -0
- package/dist/entry/view/adapters/vanilla/definition.js.map +1 -0
- package/dist/entry/view/adapters/vanilla/index.d.ts +2 -1
- package/dist/entry/view/adapters/vanilla/index.js +3 -1
- package/dist/entry/view/adapters/vanilla/index.js.map +1 -1
- package/dist/entry/view/{core/resolvers → resolvers}/container.d.ts +1 -1
- package/dist/entry/view/resolvers/container.js.map +1 -0
- package/dist/entry/view/resolvers/definition.d.ts +3 -0
- package/dist/entry/view/resolvers/definition.js +18 -0
- package/dist/entry/view/resolvers/definition.js.map +1 -0
- package/dist/locale/adapters/react/hooks/use-locale.js +1 -1
- package/dist/locale/adapters/react/hooks/use-locale.js.map +1 -1
- package/dist/locale/adapters/react/hooks/use-native-locale.js +1 -1
- package/dist/locale/adapters/react/hooks/use-native-locale.js.map +1 -1
- package/dist/locale/index.d.ts +1 -0
- package/dist/locale/index.js +3 -1
- package/dist/locale/index.js.map +1 -1
- package/dist/locale/{providers → observers}/ObservableLocale.js +2 -2
- package/dist/locale/observers/ObservableLocale.js.map +1 -0
- package/dist/locale/observers/index.d.ts +1 -0
- package/dist/locale/observers/index.js +5 -0
- package/dist/locale/observers/index.js.map +1 -0
- package/dist/locale/providers/index.d.ts +0 -1
- package/dist/locale/providers/index.js +1 -3
- package/dist/locale/providers/index.js.map +1 -1
- package/dist/main/config.d.ts +1 -0
- package/dist/main/config.js.map +1 -1
- package/dist/main/index.d.ts +2 -0
- package/dist/main/index.js +2 -0
- package/dist/main/index.js.map +1 -1
- package/dist/main/override.d.ts +5 -0
- package/dist/main/override.js +15 -0
- package/dist/main/override.js.map +1 -0
- package/dist/main/permissions.d.ts +1 -0
- package/dist/main/permissions.js +1 -0
- package/dist/main/relay.d.ts +1 -0
- package/dist/main/relay.js +2 -0
- package/dist/main/relay.js.map +1 -1
- package/dist/main/view.d.ts +1 -1
- package/dist/message/adapters/react/index.d.ts +1 -1
- package/dist/message/adapters/react/index.js +1 -1
- package/dist/message/adapters/react/index.js.map +1 -1
- package/dist/message/adapters/react/{useMessageHandler.js → use-message-handler.js} +6 -4
- package/dist/message/adapters/react/use-message-handler.js.map +1 -0
- package/dist/message/handlers/MapHandler.js +2 -1
- package/dist/message/handlers/MapHandler.js.map +1 -1
- package/dist/message/handlers/SingleHandler.js +2 -1
- package/dist/message/handlers/SingleHandler.js.map +1 -1
- package/dist/message/providers/Message.js +1 -1
- package/dist/message/providers/Message.js.map +1 -1
- package/dist/relay/RelayPermission.js +8 -2
- package/dist/relay/RelayPermission.js.map +1 -1
- package/dist/relay/adapters/RelayScriptingAdapter.d.ts +1 -0
- package/dist/relay/adapters/RelayScriptingAdapter.js +30 -64
- package/dist/relay/adapters/RelayScriptingAdapter.js.map +1 -1
- package/dist/relay/adapters/invoke-relay.d.ts +3 -0
- package/dist/relay/adapters/invoke-relay.js +69 -0
- package/dist/relay/adapters/invoke-relay.js.map +1 -0
- package/dist/relay/adapters/scripting-response.d.ts +12 -0
- package/dist/relay/adapters/scripting-response.js +1 -0
- package/dist/relay/adapters/scripting-response.js.map +1 -0
- package/dist/relay/result.d.ts +3 -0
- package/dist/relay/result.js +7 -0
- package/dist/relay/result.js.map +1 -1
- package/dist/types/action.d.ts +8 -0
- package/dist/types/action.js +1 -0
- package/dist/types/action.js.map +1 -0
- package/dist/types/background.d.ts +2 -8
- package/dist/types/background.js.map +1 -1
- package/dist/types/config.d.ts +17 -1
- package/dist/types/content/definition.d.ts +2 -1
- package/dist/types/entrypoint.d.ts +5 -1
- package/dist/types/entrypoint.js +3 -0
- package/dist/types/entrypoint.js.map +1 -1
- package/dist/types/manifest.d.ts +23 -2
- package/dist/types/manifest.js.map +1 -1
- package/dist/types/offscreen.d.ts +2 -2
- package/dist/types/offscreen.js.map +1 -1
- package/dist/types/options.d.ts +3 -2
- package/dist/types/override.d.ts +22 -0
- package/dist/types/override.js +1 -0
- package/dist/types/override.js.map +1 -0
- package/dist/types/page.d.ts +1 -1
- package/dist/types/permissions.d.ts +39 -0
- package/dist/types/permissions.js +1 -0
- package/dist/types/permissions.js.map +1 -0
- package/dist/types/plugin.d.ts +4 -1
- package/dist/types/popup.d.ts +5 -3
- package/dist/types/sandbox.d.ts +2 -2
- package/dist/types/sandbox.js.map +1 -1
- package/dist/types/sidebar.d.ts +5 -3
- package/dist/types/sidebar.js.map +1 -1
- package/dist/types/view/adapters/index.d.ts +2 -0
- package/dist/types/view/adapters/index.js +1 -0
- package/dist/types/view/adapters/index.js.map +1 -0
- package/dist/types/view/adapters/react.d.ts +4 -0
- package/dist/types/view/adapters/react.js +1 -0
- package/dist/types/view/adapters/react.js.map +1 -0
- package/dist/types/view/adapters/vanilla.d.ts +1 -0
- package/dist/types/view/adapters/vanilla.js +1 -0
- package/dist/types/view/adapters/vanilla.js.map +1 -0
- package/dist/types/{view.d.ts → view/common.d.ts} +2 -14
- package/dist/types/view/common.js +1 -0
- package/dist/types/view/common.js.map +1 -0
- package/dist/types/view/definition.d.ts +15 -0
- package/dist/types/view/definition.js +1 -0
- package/dist/types/view/definition.js.map +1 -0
- package/dist/types/view/index.d.ts +4 -0
- package/dist/types/view/index.js +1 -0
- package/dist/types/view/index.js.map +1 -0
- package/dist/types/view/render.d.ts +7 -0
- package/dist/types/view/render.js +1 -0
- package/dist/types/view/render.js.map +1 -0
- package/package.json +18 -31
- package/dist/cli/builders/app/command.js.map +0 -1
- package/dist/entry/background/resolvers/index.d.ts +0 -1
- package/dist/entry/background/resolvers/index.js +0 -2
- package/dist/entry/background/resolvers/index.js.map +0 -1
- package/dist/entry/command/resolvers/index.d.ts +0 -1
- package/dist/entry/command/resolvers/index.js +0 -2
- package/dist/entry/command/resolvers/index.js.map +0 -1
- package/dist/entry/content/adapters/vanilla/utils.d.ts +0 -1
- package/dist/entry/content/adapters/vanilla/utils.js +0 -7
- package/dist/entry/content/adapters/vanilla/utils.js.map +0 -1
- package/dist/entry/content/resolvers/index.d.ts +0 -6
- package/dist/entry/content/resolvers/index.js +0 -7
- package/dist/entry/content/resolvers/index.js.map +0 -1
- package/dist/entry/transport/index.d.ts +0 -1
- package/dist/entry/transport/index.js +0 -2
- package/dist/entry/transport/index.js.map +0 -1
- package/dist/entry/transport/resolvers/index.d.ts +0 -1
- package/dist/entry/transport/resolvers/index.js +0 -2
- package/dist/entry/transport/resolvers/index.js.map +0 -1
- package/dist/entry/view/adapters/react/resolvers/render.d.ts +0 -2
- package/dist/entry/view/adapters/react/resolvers/render.js +0 -11
- package/dist/entry/view/adapters/react/resolvers/render.js.map +0 -1
- package/dist/entry/view/core/Builder.js +0 -35
- package/dist/entry/view/core/Builder.js.map +0 -1
- package/dist/entry/view/core/resolvers/container.js.map +0 -1
- package/dist/entry/view/core/resolvers/definition.d.ts +0 -3
- package/dist/entry/view/core/resolvers/definition.js +0 -12
- package/dist/entry/view/core/resolvers/definition.js.map +0 -1
- package/dist/entry/view/core/resolvers/render.d.ts +0 -3
- package/dist/entry/view/core/resolvers/render.js +0 -18
- package/dist/entry/view/core/resolvers/render.js.map +0 -1
- package/dist/entry/view/index.d.ts +0 -1
- package/dist/entry/view/index.js +0 -2
- package/dist/entry/view/index.js.map +0 -1
- package/dist/locale/providers/ObservableLocale.js.map +0 -1
- package/dist/message/adapters/react/useMessageHandler.js.map +0 -1
- package/dist/types/view.js +0 -1
- package/scripts/clean-dist.js +0 -7
- package/scripts/copy-dts.js +0 -29
- package/scripts/merge-coverage.mjs +0 -12
- package/scripts/pre-commit.mjs +0 -22
- package/scripts/test-inventory.mjs +0 -38
- package/scripts/test-run.mjs +0 -25
- /package/dist/cli/virtual/{transport.d.ts → service.d.ts} +0 -0
- /package/dist/entry/view/{core/resolvers → resolvers}/container.js +0 -0
- /package/dist/locale/{providers → observers}/ObservableLocale.d.ts +0 -0
- /package/dist/{types/view.js.map → main/permissions.js.map} +0 -0
- /package/dist/message/adapters/react/{useMessageHandler.d.ts → use-message-handler.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/builders/manifest/ManifestV2.ts"],"sourcesContent":["import ManifestBase, {ManifestError} from \"./ManifestBase\";\n\nimport {filterHostPatterns, filterOptionalPermissions, filterPermissionsForMV2} from \"./utils\";\n\nimport {CoreManifest, ManifestVersion} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\nimport {SidebarAlternativeBrowsers} from \"@typing/sidebar\";\n\ntype ManifestV2 = chrome.runtime.ManifestV2;\ntype ManifestV3 = chrome.runtime.ManifestV3;\n\nexport default class extends ManifestBase<ManifestV2> {\n public constructor(browser: Browser) {\n super(browser);\n }\n\n public getManifestVersion(): ManifestVersion {\n return 2;\n }\n\n protected buildAction(): Partial<ManifestV2> | undefined {\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/builders/manifest/ManifestV2.ts"],"sourcesContent":["import ManifestBase, {ManifestError} from \"./ManifestBase\";\n\nimport {filterHostPatterns, filterOptionalPermissions, filterPermissionsForMV2} from \"./utils\";\n\nimport {CoreManifest, ManifestVersion} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\nimport {SidebarAlternativeBrowsers} from \"@typing/sidebar\";\n\ntype ManifestV2 = chrome.runtime.ManifestV2;\ntype ManifestV3 = chrome.runtime.ManifestV3;\n\nexport default class extends ManifestBase<ManifestV2> {\n public constructor(browser: Browser) {\n super(browser);\n }\n\n public getManifestVersion(): ManifestVersion {\n return 2;\n }\n\n protected buildAction(): Partial<ManifestV2> | undefined {\n const action = this.getAction();\n\n if (action) {\n return {browser_action: action};\n }\n }\n\n protected buildSidebar(): Partial<CoreManifest> | undefined {\n if (!SidebarAlternativeBrowsers.has(this.browser)) {\n return;\n }\n\n return super.buildSidebar();\n }\n\n protected buildContentScripts(): Partial<ManifestV2> | undefined {\n const manifest = super.buildContentScripts() as Partial<ManifestV3>;\n\n if (manifest) {\n const {content_scripts} = manifest;\n\n if (!content_scripts) {\n return;\n }\n\n const contentScripts = content_scripts\n //@ts-ignore\n .map(({world, match_origin_as_fallback, ...script}) => script);\n\n return {content_scripts: contentScripts};\n }\n }\n\n protected buildPermissions(): Partial<ManifestV2> | undefined {\n const permissions: string[] = Array.from(filterPermissionsForMV2(this.combinedPermissions));\n\n if (this.combinedHostPermissions.size > 0) {\n permissions.push(...filterHostPatterns(this.combinedHostPermissions));\n }\n\n if (permissions.length > 0) {\n return {permissions};\n }\n }\n\n protected buildOptionalPermissions(): Partial<ManifestV2> | undefined {\n const optionalPermissions: string[] = filterOptionalPermissions(\n filterPermissionsForMV2(this.combinedOptionalPermissions),\n filterPermissionsForMV2(this.combinedPermissions)\n );\n\n // prettier-ignore\n const optionalHostPermissions: string[] = Array\n .from(filterHostPatterns(new Set([...this.combinedHostPermissions, ...this.combinedOptionalHostPermissions])))\n .filter((permission) => !this.combinedHostPermissions.has(permission));\n\n if (optionalHostPermissions.length > 0) {\n optionalPermissions.push(...optionalHostPermissions);\n }\n\n if (optionalPermissions.length > 0) {\n return {optional_permissions: optionalPermissions};\n }\n }\n\n protected buildHostPermissions(): Partial<ManifestV2> | undefined {\n // In Manifest V2, host permissions are declared in the \"permissions\" array\n\n return undefined;\n }\n\n protected buildOptionalHostPermissions(): Partial<ManifestV2> | undefined {\n // In Manifest V2, optional host permissions are declared in the \"optional_permissions\" array\n\n return undefined;\n }\n\n protected buildWebAccessibleResources(): Partial<ManifestV2> | undefined {\n const resources: string[] = this.getWebAccessibleResources().flatMap(({resources}) => resources);\n\n if (resources.length > 0) {\n return {web_accessible_resources: Array.from(new Set(resources))};\n }\n }\n\n protected buildSandbox(): Partial<ManifestV2> | undefined {\n if (this.browser === Browser.Firefox) {\n return;\n }\n\n const rawSandbox = (this.combinedRaws.sandbox || {}) as Record<string, any>;\n const sandboxes = this.getSandboxes();\n const csp = this.sandboxCsp.build() || rawSandbox.content_security_policy;\n\n if (sandboxes.length === 0 && !csp && Object.keys(rawSandbox).length === 0) {\n return;\n }\n\n return {\n sandbox: {\n ...rawSandbox,\n pages: sandboxes,\n ...(csp ? {content_security_policy: csp} : {}),\n },\n } as Partial<ManifestV2>;\n }\n\n protected buildCsp(): Partial<ManifestV2> | undefined {\n const rawCsp = this.combinedRaws.content_security_policy;\n const csp = this.csp.build();\n\n if (rawCsp && csp) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with a raw content_security_policy.\"\n );\n }\n\n const policy = rawCsp || csp;\n\n return policy ? ({content_security_policy: policy} as Partial<ManifestV2>) : undefined;\n }\n}\n"],"mappings":"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","names":["resources"]}
|
|
@@ -34,21 +34,9 @@ class ManifestV3_default extends ManifestBase {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
buildAction() {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return {
|
|
40
|
-
action: {
|
|
41
|
-
default_title: title || this.name,
|
|
42
|
-
default_popup: path,
|
|
43
|
-
default_icon: this.getIconsByName(icon)
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
} else if (this.hasExecuteActionCommand()) {
|
|
47
|
-
return {
|
|
48
|
-
action: {
|
|
49
|
-
default_title: this.name
|
|
50
|
-
}
|
|
51
|
-
};
|
|
37
|
+
const action = this.getAction();
|
|
38
|
+
if (action) {
|
|
39
|
+
return { action };
|
|
52
40
|
}
|
|
53
41
|
}
|
|
54
42
|
buildPermissions() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/builders/manifest/ManifestV3.ts"],"sourcesContent":["import ManifestBase, {ManifestError} from \"./ManifestBase\";\n\nimport {filterHostPatterns, filterOptionalPermissions, filterPermissionsForMV3} from \"./utils\";\n\nimport {CoreManifest, ManifestAccessibleResource, ManifestVersion} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\n\nexport default class extends ManifestBase<ManifestV3> {\n public constructor(browser: Browser) {\n super(browser);\n }\n\n public getManifestVersion(): ManifestVersion {\n return 3;\n }\n\n protected buildBackground(): Partial<CoreManifest> | undefined {\n if (this.browser === Browser.Firefox) {\n const manifest = super.buildBackground();\n\n if (manifest) {\n const {background, ...other} = manifest;\n\n return {...other, background: {...background, persistent: undefined}};\n }\n\n return;\n }\n\n if (this.background) {\n const {entry} = this.background;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Background entry \"${entry}\" not found in dependencies`);\n }\n\n if (dependencies.js.size === 0) {\n throw new ManifestError(`Background entry \"${entry}\" has no dependencies`);\n }\n\n if (dependencies.js.size > 1) {\n throw new ManifestError(`Background entry \"${entry}\" has more than one dependency`);\n }\n\n const [js] = Array.from(dependencies.js);\n\n return {background: {service_worker: js}};\n }\n }\n\n protected buildAction(): Partial<ManifestV3> | undefined {\n if (this.popup) {\n const {path, icon, title} = this.popup;\n\n return {\n action: {\n default_title: title || this.name,\n default_popup: path,\n default_icon: this.getIconsByName(icon),\n },\n };\n } else if (this.hasExecuteActionCommand()) {\n return {\n action: {\n default_title: this.name,\n },\n };\n }\n }\n\n protected buildPermissions(): Partial<ManifestV3> | undefined {\n const permissions = Array.from(filterPermissionsForMV3(this.combinedPermissions));\n\n if (permissions.length > 0) {\n return {permissions};\n }\n }\n\n protected buildOptionalPermissions(): Partial<ManifestV3> | undefined {\n const optionalPermissions = filterOptionalPermissions(\n filterPermissionsForMV3(this.combinedOptionalPermissions),\n filterPermissionsForMV3(this.combinedPermissions)\n );\n\n if (optionalPermissions.length > 0) {\n return {optional_permissions: optionalPermissions};\n }\n }\n\n protected buildHostPermissions(): Partial<ManifestV3> | undefined {\n if (this.combinedHostPermissions.size > 0) {\n return {host_permissions: [...filterHostPatterns(this.combinedHostPermissions)]};\n }\n }\n\n protected buildOptionalHostPermissions(): Partial<ManifestV3> | undefined {\n // prettier-ignore\n const optionalHostPermissions = Array\n .from(filterHostPatterns(new Set([...this.combinedHostPermissions, ...this.combinedOptionalHostPermissions])))\n .filter((permission) => !this.combinedHostPermissions.has(permission));\n\n if (optionalHostPermissions.length > 0) {\n return {optional_host_permissions: optionalHostPermissions};\n }\n }\n\n protected buildWebAccessibleResources(): Partial<ManifestV3> | undefined {\n const resources: ManifestAccessibleResource[] = this.getWebAccessibleResources();\n\n const transformedResources = resources.map(resource => {\n const entry = {\n resources: resource.resources,\n ...(resource.useDynamicUrl !== undefined ? {use_dynamic_url: resource.useDynamicUrl} : {}),\n };\n\n return resource.extensionIds\n ? {\n ...entry,\n extension_ids: resource.extensionIds,\n ...(resource.matches ? {matches: resource.matches} : {}),\n }\n : {...entry, matches: resource.matches || []};\n });\n\n if (resources.length > 0) {\n return {web_accessible_resources: transformedResources};\n }\n }\n\n protected buildSandbox(): Partial<ManifestV3> | undefined {\n if (this.browser === Browser.Firefox) {\n return;\n }\n\n const rawSandbox = (this.combinedRaws.sandbox || {}) as Record<string, any>;\n const sandboxes = this.getSandboxes();\n\n if (sandboxes.length === 0 && Object.keys(rawSandbox).length === 0) {\n return;\n }\n\n return {\n sandbox: {\n ...rawSandbox,\n pages: sandboxes,\n },\n } as Partial<ManifestV3>;\n }\n\n protected buildCsp(): Partial<ManifestV3> | undefined {\n const rawCsp = this.combinedRaws.content_security_policy;\n const csp = this.csp.build();\n const sandboxCsp = this.sandboxCsp.build();\n\n if (this.browser === Browser.Firefox) {\n if (!rawCsp && !csp) {\n return;\n }\n\n if (typeof rawCsp === \"string\") {\n if (csp) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with a string content_security_policy.\"\n );\n }\n\n return {content_security_policy: rawCsp} as Partial<ManifestV3>;\n }\n\n const {sandbox, ...contentCsp} = rawCsp || {};\n\n if (csp && contentCsp.extension_pages) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with raw content_security_policy.extension_pages.\"\n );\n }\n\n if (csp) {\n contentCsp.extension_pages = csp;\n }\n\n return Object.keys(contentCsp).length > 0\n ? ({content_security_policy: contentCsp} as Partial<ManifestV3>)\n : undefined;\n }\n\n if (!rawCsp && !sandboxCsp && !csp) {\n return;\n }\n\n if (typeof rawCsp === \"string\") {\n if (sandboxCsp || csp) {\n throw new ManifestError(\n \"Cannot merge framework content security policy with a string content_security_policy.\"\n );\n }\n\n return {content_security_policy: rawCsp} as Partial<ManifestV3>;\n }\n\n if (csp && rawCsp?.extension_pages) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with raw content_security_policy.extension_pages.\"\n );\n }\n\n return {\n content_security_policy: {\n ...rawCsp,\n ...(csp ? {extension_pages: csp} : {}),\n ...(sandboxCsp || rawCsp?.sandbox ? {sandbox: sandboxCsp || rawCsp?.sandbox} : {}),\n },\n } as Partial<ManifestV3>;\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/builders/manifest/ManifestV3.ts"],"sourcesContent":["import ManifestBase, {ManifestError} from \"./ManifestBase\";\n\nimport {filterHostPatterns, filterOptionalPermissions, filterPermissionsForMV3} from \"./utils\";\n\nimport {CoreManifest, ManifestAccessibleResource, ManifestVersion} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\n\nexport default class extends ManifestBase<ManifestV3> {\n public constructor(browser: Browser) {\n super(browser);\n }\n\n public getManifestVersion(): ManifestVersion {\n return 3;\n }\n\n protected buildBackground(): Partial<CoreManifest> | undefined {\n if (this.browser === Browser.Firefox) {\n const manifest = super.buildBackground();\n\n if (manifest) {\n const {background, ...other} = manifest;\n\n return {...other, background: {...background, persistent: undefined}};\n }\n\n return;\n }\n\n if (this.background) {\n const {entry} = this.background;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Background entry \"${entry}\" not found in dependencies`);\n }\n\n if (dependencies.js.size === 0) {\n throw new ManifestError(`Background entry \"${entry}\" has no dependencies`);\n }\n\n if (dependencies.js.size > 1) {\n throw new ManifestError(`Background entry \"${entry}\" has more than one dependency`);\n }\n\n const [js] = Array.from(dependencies.js);\n\n return {background: {service_worker: js}};\n }\n }\n\n protected buildAction(): Partial<ManifestV3> | undefined {\n const action = this.getAction();\n\n if (action) {\n return {action};\n }\n }\n\n protected buildPermissions(): Partial<ManifestV3> | undefined {\n const permissions = Array.from(filterPermissionsForMV3(this.combinedPermissions));\n\n if (permissions.length > 0) {\n return {permissions};\n }\n }\n\n protected buildOptionalPermissions(): Partial<ManifestV3> | undefined {\n const optionalPermissions = filterOptionalPermissions(\n filterPermissionsForMV3(this.combinedOptionalPermissions),\n filterPermissionsForMV3(this.combinedPermissions)\n );\n\n if (optionalPermissions.length > 0) {\n return {optional_permissions: optionalPermissions};\n }\n }\n\n protected buildHostPermissions(): Partial<ManifestV3> | undefined {\n if (this.combinedHostPermissions.size > 0) {\n return {host_permissions: [...filterHostPatterns(this.combinedHostPermissions)]};\n }\n }\n\n protected buildOptionalHostPermissions(): Partial<ManifestV3> | undefined {\n // prettier-ignore\n const optionalHostPermissions = Array\n .from(filterHostPatterns(new Set([...this.combinedHostPermissions, ...this.combinedOptionalHostPermissions])))\n .filter((permission) => !this.combinedHostPermissions.has(permission));\n\n if (optionalHostPermissions.length > 0) {\n return {optional_host_permissions: optionalHostPermissions};\n }\n }\n\n protected buildWebAccessibleResources(): Partial<ManifestV3> | undefined {\n const resources: ManifestAccessibleResource[] = this.getWebAccessibleResources();\n\n const transformedResources = resources.map(resource => {\n const entry = {\n resources: resource.resources,\n ...(resource.useDynamicUrl !== undefined ? {use_dynamic_url: resource.useDynamicUrl} : {}),\n };\n\n return resource.extensionIds\n ? {\n ...entry,\n extension_ids: resource.extensionIds,\n ...(resource.matches ? {matches: resource.matches} : {}),\n }\n : {...entry, matches: resource.matches || []};\n });\n\n if (resources.length > 0) {\n return {web_accessible_resources: transformedResources};\n }\n }\n\n protected buildSandbox(): Partial<ManifestV3> | undefined {\n if (this.browser === Browser.Firefox) {\n return;\n }\n\n const rawSandbox = (this.combinedRaws.sandbox || {}) as Record<string, any>;\n const sandboxes = this.getSandboxes();\n\n if (sandboxes.length === 0 && Object.keys(rawSandbox).length === 0) {\n return;\n }\n\n return {\n sandbox: {\n ...rawSandbox,\n pages: sandboxes,\n },\n } as Partial<ManifestV3>;\n }\n\n protected buildCsp(): Partial<ManifestV3> | undefined {\n const rawCsp = this.combinedRaws.content_security_policy;\n const csp = this.csp.build();\n const sandboxCsp = this.sandboxCsp.build();\n\n if (this.browser === Browser.Firefox) {\n if (!rawCsp && !csp) {\n return;\n }\n\n if (typeof rawCsp === \"string\") {\n if (csp) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with a string content_security_policy.\"\n );\n }\n\n return {content_security_policy: rawCsp} as Partial<ManifestV3>;\n }\n\n const {sandbox, ...contentCsp} = rawCsp || {};\n\n if (csp && contentCsp.extension_pages) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with raw content_security_policy.extension_pages.\"\n );\n }\n\n if (csp) {\n contentCsp.extension_pages = csp;\n }\n\n return Object.keys(contentCsp).length > 0\n ? ({content_security_policy: contentCsp} as Partial<ManifestV3>)\n : undefined;\n }\n\n if (!rawCsp && !sandboxCsp && !csp) {\n return;\n }\n\n if (typeof rawCsp === \"string\") {\n if (sandboxCsp || csp) {\n throw new ManifestError(\n \"Cannot merge framework content security policy with a string content_security_policy.\"\n );\n }\n\n return {content_security_policy: rawCsp} as Partial<ManifestV3>;\n }\n\n if (csp && rawCsp?.extension_pages) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with raw content_security_policy.extension_pages.\"\n );\n }\n\n return {\n content_security_policy: {\n ...rawCsp,\n ...(csp ? {extension_pages: csp} : {}),\n ...(sandboxCsp || rawCsp?.sandbox ? {sandbox: sandboxCsp || rawCsp?.sandbox} : {}),\n },\n } as Partial<ManifestV3>;\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _ from "lodash";
|
|
2
2
|
import path from "path";
|
|
3
|
+
import { createHash } from "node:crypto";
|
|
3
4
|
import { DynamicEntryPlugin } from "@rspack/core";
|
|
4
5
|
import { RspackVirtualModulePlugin as VirtualModulesPlugin } from "rspack-plugin-virtual-module";
|
|
5
6
|
class EntrypointPlugin {
|
|
@@ -18,6 +19,9 @@ class EntrypointPlugin {
|
|
|
18
19
|
if (file.external) {
|
|
19
20
|
const { ext } = path.parse(name);
|
|
20
21
|
name = file.import + ext;
|
|
22
|
+
} else if (path.isAbsolute(name)) {
|
|
23
|
+
const key = createHash("sha256").update(name).digest("hex");
|
|
24
|
+
name = path.join(key, path.basename(name));
|
|
21
25
|
}
|
|
22
26
|
return path.join("virtual", name);
|
|
23
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/cli/bundler/plugins/entrypoint/EntrypointPlugin.ts"],"sourcesContent":["import _ from \"lodash\";\nimport path from \"path\";\n\nimport {Compiler, DynamicEntryPlugin, type EntryDescription, EntryNormalized} from \"@rspack/core\";\nimport {RspackVirtualModulePlugin as VirtualModulesPlugin} from \"rspack-plugin-virtual-module\";\n\nimport {EntrypointEntries, EntrypointFile} from \"@typing/entrypoint\";\n\nexport type EntrypointPluginTemplate = (file: EntrypointFile) => string;\n\nexport type EntrypointPluginUpdate = (files: ReadonlySet<string>) => Promise<EntrypointEntries>;\n\nexport interface EntrypointPluginModule {\n /**\n * Virtual module name, used in the rspack entry and virtual module.\n */\n name: string;\n\n /**\n * Virtual module content.\n */\n module: string;\n}\n\nexport type EntrypointPluginModules = Map<EntrypointFile, EntrypointPluginModule>;\n\nexport type EntrypointPluginEntryModules = Map<string, EntrypointPluginModules>;\n\nexport type EntrypointPluginEntryOptions = Omit<EntryDescription, \"import\">;\n\nexport type EntrypointPluginEntryOptionsResolver = (name: string) => EntrypointPluginEntryOptions;\n\nexport default class EntrypointPlugin {\n private readonly pluginName: string = \"EntrypointPlugin\";\n\n private _plugin?: VirtualModulesPlugin;\n private _modules?: EntrypointPluginEntryModules;\n private readonly _entryOptions: EntrypointPluginEntryOptionsResolver[] = [];\n\n protected template?: EntrypointPluginTemplate;\n protected update?: EntrypointPluginUpdate;\n\n public static filename(file: EntrypointFile): string {\n let name = file.file;\n\n if (file.external) {\n const {ext} = path.parse(name);\n name = file.import + ext;\n }\n\n return path.join(\"virtual\", name);\n }\n\n protected get plugin(): VirtualModulesPlugin {\n if (this._plugin) {\n return this._plugin;\n }\n\n const modules = Object.fromEntries(this.getModuleContents(this.modules));\n\n return (this._plugin = new VirtualModulesPlugin(modules, \"entrypoint\"));\n }\n\n protected get modules(): EntrypointPluginEntryModules {\n return (this._modules ??= this.createModules(this.entries));\n }\n\n protected get watchFiles(): ReadonlySet<string> {\n const files = Array.from(this.modules.values())\n .flatMap(modules => Array.from(modules.keys()))\n .filter(({external}) => !external)\n .map(({file}) => file);\n\n return new Set(files);\n }\n\n public static from(entries: EntrypointEntries): EntrypointPlugin {\n return new EntrypointPlugin(entries);\n }\n\n constructor(private readonly entries: EntrypointEntries = new Map()) {}\n\n public virtual(template: EntrypointPluginTemplate): this {\n this.template = template;\n\n return this;\n }\n\n public entryOptions(options: EntrypointPluginEntryOptions | EntrypointPluginEntryOptionsResolver): this {\n this._entryOptions.push(_.isFunction(options) ? options : () => options);\n\n return this;\n }\n\n public watch(update: EntrypointPluginUpdate): this {\n this.update = update;\n\n return this;\n }\n\n public apply(compiler: Compiler): void {\n this.plugin.apply(compiler);\n\n compiler.hooks.entryOption.tap(this.pluginName, (_, entry) => {\n this.hookEntryOption(entry);\n });\n\n if (this.update) {\n // Static EntryPlugin captures options once. Resolve the completed entry table\n // per compilation so watch changes to layers and asyncChunks reach Rspack too.\n // Register after other plugins have prepared their entryOption hooks, but\n // before Rspack installs its default static entry handler.\n compiler.hooks.afterEnvironment.tap(this.pluginName, () => {\n compiler.hooks.entryOption.tap(`${this.pluginName}:watch`, (context, entry) => {\n compiler.options.entry = entry;\n\n new DynamicEntryPlugin(context, async () => {\n const entry = compiler.options.entry;\n\n return typeof entry === \"function\" ? entry() : entry;\n }).apply(compiler);\n\n return true;\n });\n });\n\n compiler.hooks.watchRun.tapAsync(this.pluginName, (compiler, callback) => {\n this.hookWatchRun(compiler)\n .then(() => callback())\n .catch(callback);\n });\n }\n }\n\n protected hookEntryOption(entry: EntryNormalized): void {\n if (_.isPlainObject(entry)) {\n this.modules.entries().forEach(([name, modules]) => {\n const current = structuredClone(entry[name] ?? []);\n let currentFiles = current;\n let currentOptions: EntrypointPluginEntryOptions = {};\n\n if (\"import\" in currentFiles) {\n currentOptions = currentFiles;\n currentFiles = currentFiles.import;\n }\n\n currentFiles.push(...Array.from(modules.values(), ({name}) => name));\n\n entry[name] = {\n ...currentOptions,\n ...this.resolveEntryOptions(name),\n import: _.uniq(currentFiles),\n };\n });\n } else {\n throw new Error(\"EntrypointPlugin: entry is not an object\");\n }\n }\n\n protected async hookWatchRun(compiler: Compiler): Promise<void> {\n const {modifiedFiles = new Set()} = compiler;\n\n const watchFiles = new Set(Array.from(this.watchFiles, file => path.resolve(compiler.context, file)));\n const needUpdate = Array.from(modifiedFiles).some(file => watchFiles.has(path.resolve(compiler.context, file)));\n\n if (!needUpdate) {\n return;\n }\n\n const updatedEntries = await this.update!(modifiedFiles);\n\n const updatedModules = this.createModules(updatedEntries);\n\n const currentContents = this.getModuleContents(this.modules);\n const updatedContents = this.getModuleContents(updatedModules);\n\n const removedContents = new Map(Array.from(currentContents).filter(entry => !updatedContents.has(entry[0])));\n\n const changedContents = new Map(\n Array.from(updatedContents).filter(([name, content]) => currentContents.get(name) !== content)\n );\n\n removedContents.keys().forEach(name => {\n this.plugin.writeModule(name, \"\");\n });\n\n changedContents.forEach((content, name) => {\n this.plugin.writeModule(name, content);\n });\n\n this.modules.keys().forEach(name => {\n if (!updatedModules.has(name)) {\n delete compiler.options.entry[name];\n }\n });\n\n updatedModules.entries().forEach(([name, modules]) => {\n const current = structuredClone(compiler.options.entry[name] ?? []);\n let entry = current;\n let currentOptions: EntrypointPluginEntryOptions = {};\n\n if (\"import\" in entry) {\n currentOptions = entry;\n entry = entry.import as string[];\n }\n\n entry = entry.filter(file => !removedContents.has(file));\n\n entry.push(...Array.from(modules.values(), ({name}) => name));\n\n compiler.options.entry[name] = {\n ...currentOptions,\n ...this.resolveEntryOptions(name),\n import: _.uniq(entry),\n };\n });\n\n this._modules = updatedModules;\n }\n\n protected resolveEntryOptions(name: string): EntrypointPluginEntryOptions {\n return Object.assign({}, ...this._entryOptions.map(resolve => resolve(name)));\n }\n\n protected createModules(entries: EntrypointEntries): EntrypointPluginEntryModules {\n const entryModules: EntrypointPluginEntryModules = new Map();\n\n for (const [name, files] of entries) {\n const modules: EntrypointPluginModules = new Map();\n\n for (const file of files) {\n modules.set(file, {\n name: EntrypointPlugin.filename(file),\n module: this.template ? this.template(file) : \"\",\n });\n }\n\n entryModules.set(name, modules);\n }\n\n return entryModules;\n }\n\n protected getModuleContents(modules: EntrypointPluginEntryModules): Map<string, string> {\n const content = new Map<string, string>();\n\n modules.values().forEach(modules => {\n modules.forEach(({name, module}) => {\n content.set(name, module);\n });\n });\n\n return content;\n }\n}\n"],"mappings":"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","names":["_","entry","compiler","name","modules"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/cli/bundler/plugins/entrypoint/EntrypointPlugin.ts"],"sourcesContent":["import _ from \"lodash\";\nimport path from \"path\";\nimport {createHash} from \"node:crypto\";\n\nimport {Compiler, DynamicEntryPlugin, type EntryDescription, EntryNormalized} from \"@rspack/core\";\nimport {RspackVirtualModulePlugin as VirtualModulesPlugin} from \"rspack-plugin-virtual-module\";\n\nimport {EntrypointEntries, EntrypointFile} from \"@typing/entrypoint\";\n\nexport type EntrypointPluginTemplate = (file: EntrypointFile) => string;\n\nexport type EntrypointPluginUpdate = (files: ReadonlySet<string>) => Promise<EntrypointEntries>;\n\nexport interface EntrypointPluginModule {\n /**\n * Virtual module name, used in the rspack entry and virtual module.\n */\n name: string;\n\n /**\n * Virtual module content.\n */\n module: string;\n}\n\nexport type EntrypointPluginModules = Map<EntrypointFile, EntrypointPluginModule>;\n\nexport type EntrypointPluginEntryModules = Map<string, EntrypointPluginModules>;\n\nexport type EntrypointPluginEntryOptions = Omit<EntryDescription, \"import\">;\n\nexport type EntrypointPluginEntryOptionsResolver = (name: string) => EntrypointPluginEntryOptions;\n\nexport default class EntrypointPlugin {\n private readonly pluginName: string = \"EntrypointPlugin\";\n\n private _plugin?: VirtualModulesPlugin;\n private _modules?: EntrypointPluginEntryModules;\n private readonly _entryOptions: EntrypointPluginEntryOptionsResolver[] = [];\n\n protected template?: EntrypointPluginTemplate;\n protected update?: EntrypointPluginUpdate;\n\n public static filename(file: EntrypointFile): string {\n let name = file.file;\n\n if (file.external) {\n const {ext} = path.parse(name);\n name = file.import + ext;\n } else if (path.isAbsolute(name)) {\n // A drive or UNC root cannot be embedded inside the virtual directory.\n // Keep distinct absolute files distinct without carrying their root into it.\n const key = createHash(\"sha256\").update(name).digest(\"hex\");\n name = path.join(key, path.basename(name));\n }\n\n return path.join(\"virtual\", name);\n }\n\n protected get plugin(): VirtualModulesPlugin {\n if (this._plugin) {\n return this._plugin;\n }\n\n const modules = Object.fromEntries(this.getModuleContents(this.modules));\n\n return (this._plugin = new VirtualModulesPlugin(modules, \"entrypoint\"));\n }\n\n protected get modules(): EntrypointPluginEntryModules {\n return (this._modules ??= this.createModules(this.entries));\n }\n\n protected get watchFiles(): ReadonlySet<string> {\n const files = Array.from(this.modules.values())\n .flatMap(modules => Array.from(modules.keys()))\n .filter(({external}) => !external)\n .map(({file}) => file);\n\n return new Set(files);\n }\n\n public static from(entries: EntrypointEntries): EntrypointPlugin {\n return new EntrypointPlugin(entries);\n }\n\n constructor(private readonly entries: EntrypointEntries = new Map()) {}\n\n public virtual(template: EntrypointPluginTemplate): this {\n this.template = template;\n\n return this;\n }\n\n public entryOptions(options: EntrypointPluginEntryOptions | EntrypointPluginEntryOptionsResolver): this {\n this._entryOptions.push(_.isFunction(options) ? options : () => options);\n\n return this;\n }\n\n public watch(update: EntrypointPluginUpdate): this {\n this.update = update;\n\n return this;\n }\n\n public apply(compiler: Compiler): void {\n this.plugin.apply(compiler);\n\n compiler.hooks.entryOption.tap(this.pluginName, (_, entry) => {\n this.hookEntryOption(entry);\n });\n\n if (this.update) {\n // Static EntryPlugin captures options once. Resolve the completed entry table\n // per compilation so watch changes to layers and asyncChunks reach Rspack too.\n // Register after other plugins have prepared their entryOption hooks, but\n // before Rspack installs its default static entry handler.\n compiler.hooks.afterEnvironment.tap(this.pluginName, () => {\n compiler.hooks.entryOption.tap(`${this.pluginName}:watch`, (context, entry) => {\n compiler.options.entry = entry;\n\n new DynamicEntryPlugin(context, async () => {\n const entry = compiler.options.entry;\n\n return typeof entry === \"function\" ? entry() : entry;\n }).apply(compiler);\n\n return true;\n });\n });\n\n compiler.hooks.watchRun.tapAsync(this.pluginName, (compiler, callback) => {\n this.hookWatchRun(compiler)\n .then(() => callback())\n .catch(callback);\n });\n }\n }\n\n protected hookEntryOption(entry: EntryNormalized): void {\n if (_.isPlainObject(entry)) {\n this.modules.entries().forEach(([name, modules]) => {\n const current = structuredClone(entry[name] ?? []);\n let currentFiles = current;\n let currentOptions: EntrypointPluginEntryOptions = {};\n\n if (\"import\" in currentFiles) {\n currentOptions = currentFiles;\n currentFiles = currentFiles.import;\n }\n\n currentFiles.push(...Array.from(modules.values(), ({name}) => name));\n\n entry[name] = {\n ...currentOptions,\n ...this.resolveEntryOptions(name),\n import: _.uniq(currentFiles),\n };\n });\n } else {\n throw new Error(\"EntrypointPlugin: entry is not an object\");\n }\n }\n\n protected async hookWatchRun(compiler: Compiler): Promise<void> {\n const {modifiedFiles = new Set()} = compiler;\n\n const watchFiles = new Set(Array.from(this.watchFiles, file => path.resolve(compiler.context, file)));\n const needUpdate = Array.from(modifiedFiles).some(file => watchFiles.has(path.resolve(compiler.context, file)));\n\n if (!needUpdate) {\n return;\n }\n\n const updatedEntries = await this.update!(modifiedFiles);\n\n const updatedModules = this.createModules(updatedEntries);\n\n const currentContents = this.getModuleContents(this.modules);\n const updatedContents = this.getModuleContents(updatedModules);\n\n const removedContents = new Map(Array.from(currentContents).filter(entry => !updatedContents.has(entry[0])));\n\n const changedContents = new Map(\n Array.from(updatedContents).filter(([name, content]) => currentContents.get(name) !== content)\n );\n\n removedContents.keys().forEach(name => {\n this.plugin.writeModule(name, \"\");\n });\n\n changedContents.forEach((content, name) => {\n this.plugin.writeModule(name, content);\n });\n\n this.modules.keys().forEach(name => {\n if (!updatedModules.has(name)) {\n delete compiler.options.entry[name];\n }\n });\n\n updatedModules.entries().forEach(([name, modules]) => {\n const current = structuredClone(compiler.options.entry[name] ?? []);\n let entry = current;\n let currentOptions: EntrypointPluginEntryOptions = {};\n\n if (\"import\" in entry) {\n currentOptions = entry;\n entry = entry.import as string[];\n }\n\n entry = entry.filter(file => !removedContents.has(file));\n\n entry.push(...Array.from(modules.values(), ({name}) => name));\n\n compiler.options.entry[name] = {\n ...currentOptions,\n ...this.resolveEntryOptions(name),\n import: _.uniq(entry),\n };\n });\n\n this._modules = updatedModules;\n }\n\n protected resolveEntryOptions(name: string): EntrypointPluginEntryOptions {\n return Object.assign({}, ...this._entryOptions.map(resolve => resolve(name)));\n }\n\n protected createModules(entries: EntrypointEntries): EntrypointPluginEntryModules {\n const entryModules: EntrypointPluginEntryModules = new Map();\n\n for (const [name, files] of entries) {\n const modules: EntrypointPluginModules = new Map();\n\n for (const file of files) {\n modules.set(file, {\n name: EntrypointPlugin.filename(file),\n module: this.template ? this.template(file) : \"\",\n });\n }\n\n entryModules.set(name, modules);\n }\n\n return entryModules;\n }\n\n protected getModuleContents(modules: EntrypointPluginEntryModules): Map<string, string> {\n const content = new Map<string, string>();\n\n modules.values().forEach(modules => {\n modules.forEach(({name, module}) => {\n content.set(name, module);\n });\n });\n\n return content;\n }\n}\n"],"mappings":"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","names":["_","entry","compiler","name","modules"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import ViewPermissionsFinder from "./ViewPermissionsFinder.js";
|
|
2
|
+
import { ReadonlyConfig } from "../../../types/config.js";
|
|
3
|
+
import { EntrypointOptionsFinder } from "../../../types/entrypoint.js";
|
|
4
|
+
import { OverrideEntrypointOptions, OverrideEntrypointType } from "../../../types/override.js";
|
|
5
|
+
/**
|
|
6
|
+
* Override pages are singletons: app files replace shared ones instead of merging with them,
|
|
7
|
+
* and only the highest-precedence candidate becomes a view.
|
|
8
|
+
*/
|
|
9
|
+
export default abstract class AbstractOverrideFinder<O extends OverrideEntrypointOptions> extends ViewPermissionsFinder<O> {
|
|
10
|
+
protected constructor(config: ReadonlyConfig);
|
|
11
|
+
abstract type(): OverrideEntrypointType;
|
|
12
|
+
protected getPlugin(): EntrypointOptionsFinder<O>;
|
|
13
|
+
canMerge(): boolean;
|
|
14
|
+
allowMultiple(): boolean;
|
|
15
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import ViewPermissionsFinder from "./ViewPermissionsFinder.js";
|
|
2
|
+
import PluginFinder from "./PluginFinder.js";
|
|
3
|
+
class AbstractOverrideFinder extends ViewPermissionsFinder {
|
|
4
|
+
constructor(config) {
|
|
5
|
+
super(config);
|
|
6
|
+
}
|
|
7
|
+
getPlugin() {
|
|
8
|
+
return new PluginFinder(this.config, `${this.type()}`, this);
|
|
9
|
+
}
|
|
10
|
+
canMerge() {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
allowMultiple() {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
AbstractOverrideFinder as default
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=AbstractOverrideFinder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/AbstractOverrideFinder.ts"],"sourcesContent":["import ViewPermissionsFinder from \"./ViewPermissionsFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointOptionsFinder} from \"@typing/entrypoint\";\nimport {OverrideEntrypointOptions, OverrideEntrypointType} from \"@typing/override\";\n\n/**\n * Override pages are singletons: app files replace shared ones instead of merging with them,\n * and only the highest-precedence candidate becomes a view.\n */\nexport default abstract class AbstractOverrideFinder<\n O extends OverrideEntrypointOptions,\n> extends ViewPermissionsFinder<O> {\n protected constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public abstract type(): OverrideEntrypointType;\n\n protected getPlugin(): EntrypointOptionsFinder<O> {\n // Plugin handlers of override pages are keyed by their entrypoint type.\n return new PluginFinder(this.config, `${this.type()}` as const, this);\n }\n\n public canMerge(): boolean {\n return false;\n }\n\n public allowMultiple(): boolean {\n return false;\n }\n}\n"],"mappings":"AAAA,OAAO,2BAA2B;AAClC,OAAO,kBAAkB;AAUzB,MAAO,+BAEG,sBAAyB;AAAA,EACrB,YAAY,QAAwB;AAC1C,UAAM,MAAM;AAAA,EAChB;AAAA,EAIU,YAAwC;AAE9C,WAAO,IAAI,aAAa,KAAK,QAAQ,GAAG,KAAK,KAAK,CAAC,IAAa,IAAI;AAAA,EACxE;AAAA,EAEO,WAAoB;AACvB,WAAO;AAAA,EACX;AAAA,EAEO,gBAAyB;AAC5B,WAAO;AAAA,EACX;AACJ;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import AbstractPluginFinder from "./AbstractPluginFinder.js";
|
|
2
2
|
import { ReadonlyConfig } from "../../../types/config.js";
|
|
3
|
-
import { ViewEntrypointOptions } from "../../../types/view.js";
|
|
3
|
+
import { ViewEntrypointOptions } from "../../../types/view/index.js";
|
|
4
4
|
import { EntrypointFile, EntrypointNameGenerator } from "../../../types/entrypoint.js";
|
|
5
5
|
export interface ViewItem<O extends ViewEntrypointOptions> {
|
|
6
6
|
filename: string;
|
|
@@ -26,6 +26,11 @@ export default abstract class<O extends ViewEntrypointOptions> extends AbstractP
|
|
|
26
26
|
protected createViewName(file: EntrypointFile, options: O): string;
|
|
27
27
|
views(): Promise<ViewItems<O>>;
|
|
28
28
|
allowMultiple(): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Parsed options of the entrypoints that became views.
|
|
31
|
+
* Candidates that lost the selection are excluded, and the options keep manifest-only settings.
|
|
32
|
+
*/
|
|
33
|
+
selectedOptions(): Promise<O[]>;
|
|
29
34
|
getAliasToFilename(): Promise<ViewAliasToFilename>;
|
|
30
35
|
getAlias(): Promise<Set<string>>;
|
|
31
36
|
getFilenames(): Promise<ViewFileToFilename>;
|
|
@@ -58,6 +58,21 @@ class AbstractViewFinder_default extends AbstractPluginFinder {
|
|
|
58
58
|
allowMultiple() {
|
|
59
59
|
return true;
|
|
60
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Parsed options of the entrypoints that became views.
|
|
63
|
+
* Candidates that lost the selection are excluded, and the options keep manifest-only settings.
|
|
64
|
+
*/
|
|
65
|
+
async selectedOptions() {
|
|
66
|
+
const options = await this.plugin().options();
|
|
67
|
+
const selected = [];
|
|
68
|
+
for (const { file } of (await this.views()).values()) {
|
|
69
|
+
const option = options.get(file);
|
|
70
|
+
if (option) {
|
|
71
|
+
selected.push(option);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return selected;
|
|
75
|
+
}
|
|
61
76
|
async getAliasToFilename() {
|
|
62
77
|
return Array.from(await this.views()).reduce((aliases, [_, item]) => {
|
|
63
78
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/AbstractViewFinder.ts"],"sourcesContent":["import path from \"path\";\n\nimport {InlineNameGenerator, NameGenerator} from \"../name\";\n\nimport AbstractPluginFinder from \"./AbstractPluginFinder\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ViewEntrypointOptions} from \"@typing/view\";\nimport {EntrypointFile, EntrypointNameGenerator} from \"@typing/entrypoint\";\n\nexport interface ViewItem<O extends ViewEntrypointOptions> {\n filename: string;\n alias: string;\n file: EntrypointFile;\n options: O;\n}\n\nexport type ViewItems<O extends ViewEntrypointOptions> = Map<string, ViewItem<O>>;\n\nexport type ViewAliasToFilename = Map<string, string>;\n\nexport type ViewFileToFilename = Map<EntrypointFile, string>;\n\nexport default abstract class<O extends ViewEntrypointOptions> extends AbstractPluginFinder<O> {\n protected _views?: ViewItems<O>;\n\n protected readonly names: EntrypointNameGenerator;\n protected readonly aliases: EntrypointNameGenerator;\n protected readonly filenames: EntrypointNameGenerator;\n\n protected constructor(config: ReadonlyConfig) {\n super(config);\n\n this.names = this.createNameGenerator();\n this.aliases = this.createAliasGenerator();\n this.filenames = this.createFilenameGenerator();\n }\n\n protected createNameGenerator(): EntrypointNameGenerator {\n return new NameGenerator(this.type());\n }\n\n protected createAliasGenerator(): EntrypointNameGenerator {\n return new InlineNameGenerator(this.type());\n }\n\n protected createFilenameGenerator(): EntrypointNameGenerator {\n return new NameGenerator(this.type());\n }\n\n protected async getViews(): Promise<ViewItems<O>> {\n const views: ViewItems<O> = new Map();\n const entries = [...(await this.plugin().options())];\n const candidates = this.allowMultiple() ? entries : entries.slice(-1);\n\n for (const [file, options] of candidates) {\n views.set(this.createViewName(file, options), {\n alias: this.createViewAlias(file, options),\n filename: this.createViewFilename(file, options),\n file,\n options,\n });\n }\n\n return views;\n }\n\n protected createViewFilename(file: EntrypointFile, options: O): string {\n const {as} = options;\n\n const filename = as ? this.filenames.name(as) : this.filenames.file(file);\n\n return path.posix.join(this.config.htmlDir, filename + \".html\");\n }\n\n protected createViewAlias(file: EntrypointFile, options: O): string {\n const {as} = options;\n\n let alias = as ? this.aliases.name(as) : this.aliases.file(file);\n\n if (file.external) {\n alias = file.import;\n }\n\n return alias;\n }\n\n protected createViewName(file: EntrypointFile, options: O): string {\n const {as} = options;\n\n return as ? this.names.name(as) : this.names.file(file);\n }\n\n public async views(): Promise<ViewItems<O>> {\n return (this._views ??= await this.getViews());\n }\n\n public allowMultiple(): boolean {\n return true;\n }\n\n public async getAliasToFilename(): Promise<ViewAliasToFilename> {\n return Array.from(await this.views()).reduce((aliases, [_, item]) => {\n return {\n ...aliases,\n [item.alias]: item.filename,\n };\n }, new Map() as ViewAliasToFilename);\n }\n\n public async getAlias(): Promise<Set<string>> {\n const aliases = new Set<string>();\n\n const views = await this.views();\n\n for (const item of views.values()) {\n aliases.add(item.alias);\n }\n\n return aliases;\n }\n\n public async getFilenames(): Promise<ViewFileToFilename> {\n const views = await this.views();\n\n const filenames: ViewFileToFilename = new Map();\n\n for (const {file, filename} of views.values()) {\n filenames.set(file, filename);\n }\n\n return filenames;\n }\n\n public clear(): this {\n this._views = undefined;\n\n this.names.reset();\n this.aliases.reset();\n this.filenames.reset();\n\n return super.clear();\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/AbstractViewFinder.ts"],"sourcesContent":["import path from \"path\";\n\nimport {InlineNameGenerator, NameGenerator} from \"../name\";\n\nimport AbstractPluginFinder from \"./AbstractPluginFinder\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {ViewEntrypointOptions} from \"@typing/view\";\nimport {EntrypointFile, EntrypointNameGenerator} from \"@typing/entrypoint\";\n\nexport interface ViewItem<O extends ViewEntrypointOptions> {\n filename: string;\n alias: string;\n file: EntrypointFile;\n options: O;\n}\n\nexport type ViewItems<O extends ViewEntrypointOptions> = Map<string, ViewItem<O>>;\n\nexport type ViewAliasToFilename = Map<string, string>;\n\nexport type ViewFileToFilename = Map<EntrypointFile, string>;\n\nexport default abstract class<O extends ViewEntrypointOptions> extends AbstractPluginFinder<O> {\n protected _views?: ViewItems<O>;\n\n protected readonly names: EntrypointNameGenerator;\n protected readonly aliases: EntrypointNameGenerator;\n protected readonly filenames: EntrypointNameGenerator;\n\n protected constructor(config: ReadonlyConfig) {\n super(config);\n\n this.names = this.createNameGenerator();\n this.aliases = this.createAliasGenerator();\n this.filenames = this.createFilenameGenerator();\n }\n\n protected createNameGenerator(): EntrypointNameGenerator {\n return new NameGenerator(this.type());\n }\n\n protected createAliasGenerator(): EntrypointNameGenerator {\n return new InlineNameGenerator(this.type());\n }\n\n protected createFilenameGenerator(): EntrypointNameGenerator {\n return new NameGenerator(this.type());\n }\n\n protected async getViews(): Promise<ViewItems<O>> {\n const views: ViewItems<O> = new Map();\n const entries = [...(await this.plugin().options())];\n const candidates = this.allowMultiple() ? entries : entries.slice(-1);\n\n for (const [file, options] of candidates) {\n views.set(this.createViewName(file, options), {\n alias: this.createViewAlias(file, options),\n filename: this.createViewFilename(file, options),\n file,\n options,\n });\n }\n\n return views;\n }\n\n protected createViewFilename(file: EntrypointFile, options: O): string {\n const {as} = options;\n\n const filename = as ? this.filenames.name(as) : this.filenames.file(file);\n\n return path.posix.join(this.config.htmlDir, filename + \".html\");\n }\n\n protected createViewAlias(file: EntrypointFile, options: O): string {\n const {as} = options;\n\n let alias = as ? this.aliases.name(as) : this.aliases.file(file);\n\n if (file.external) {\n alias = file.import;\n }\n\n return alias;\n }\n\n protected createViewName(file: EntrypointFile, options: O): string {\n const {as} = options;\n\n return as ? this.names.name(as) : this.names.file(file);\n }\n\n public async views(): Promise<ViewItems<O>> {\n return (this._views ??= await this.getViews());\n }\n\n public allowMultiple(): boolean {\n return true;\n }\n\n /**\n * Parsed options of the entrypoints that became views.\n * Candidates that lost the selection are excluded, and the options keep manifest-only settings.\n */\n public async selectedOptions(): Promise<O[]> {\n const options = await this.plugin().options();\n const selected: O[] = [];\n\n for (const {file} of (await this.views()).values()) {\n const option = options.get(file);\n\n if (option) {\n selected.push(option);\n }\n }\n\n return selected;\n }\n\n public async getAliasToFilename(): Promise<ViewAliasToFilename> {\n return Array.from(await this.views()).reduce((aliases, [_, item]) => {\n return {\n ...aliases,\n [item.alias]: item.filename,\n };\n }, new Map() as ViewAliasToFilename);\n }\n\n public async getAlias(): Promise<Set<string>> {\n const aliases = new Set<string>();\n\n const views = await this.views();\n\n for (const item of views.values()) {\n aliases.add(item.alias);\n }\n\n return aliases;\n }\n\n public async getFilenames(): Promise<ViewFileToFilename> {\n const views = await this.views();\n\n const filenames: ViewFileToFilename = new Map();\n\n for (const {file, filename} of views.values()) {\n filenames.set(file, filename);\n }\n\n return filenames;\n }\n\n public clear(): this {\n this._views = undefined;\n\n this.names.reset();\n this.aliases.reset();\n this.filenames.reset();\n\n return super.clear();\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import AbstractOverrideFinder from "./AbstractOverrideFinder.js";
|
|
2
|
+
import { ReadonlyConfig } from "../../../types/config.js";
|
|
3
|
+
import { EntrypointParser } from "../../../types/entrypoint.js";
|
|
4
|
+
import { BookmarksEntrypointOptions, OverrideEntrypointType } from "../../../types/override.js";
|
|
5
|
+
export default class BookmarksFinder extends AbstractOverrideFinder<BookmarksEntrypointOptions> {
|
|
6
|
+
constructor(config: ReadonlyConfig);
|
|
7
|
+
type(): OverrideEntrypointType;
|
|
8
|
+
protected getParser(): EntrypointParser<BookmarksEntrypointOptions>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import AbstractOverrideFinder from "./AbstractOverrideFinder.js";
|
|
2
|
+
import { BookmarksParser } from "../parser/index.js";
|
|
3
|
+
import { EntrypointType } from "./../../../types/entrypoint.js";
|
|
4
|
+
class BookmarksFinder extends AbstractOverrideFinder {
|
|
5
|
+
constructor(config) {
|
|
6
|
+
super(config);
|
|
7
|
+
}
|
|
8
|
+
type() {
|
|
9
|
+
return EntrypointType.Bookmarks;
|
|
10
|
+
}
|
|
11
|
+
getParser() {
|
|
12
|
+
return new BookmarksParser(this.config);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
BookmarksFinder as default
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=BookmarksFinder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/BookmarksFinder.ts"],"sourcesContent":["import AbstractOverrideFinder from \"./AbstractOverrideFinder\";\n\nimport {BookmarksParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\nimport {BookmarksEntrypointOptions, OverrideEntrypointType} from \"@typing/override\";\n\nexport default class BookmarksFinder extends AbstractOverrideFinder<BookmarksEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): OverrideEntrypointType {\n return EntrypointType.Bookmarks;\n }\n\n protected getParser(): EntrypointParser<BookmarksEntrypointOptions> {\n return new BookmarksParser(this.config);\n }\n}\n"],"mappings":"AAAA,OAAO,4BAA4B;AAEnC,SAAQ,uBAAsB;AAG9B,SAA0B,sBAAqB;AAG/C,MAAO,wBAAsC,uBAAmD;AAAA,EACrF,YAAY,QAAwB;AACvC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEO,OAA+B;AAClC,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,YAA0D;AAChE,WAAO,IAAI,gBAAgB,KAAK,MAAM;AAAA,EAC1C;AACJ;","names":[]}
|
|
@@ -10,6 +10,10 @@ export default class extends AbstractPluginFinder<CommandEntrypointOptions> {
|
|
|
10
10
|
type(): EntrypointType;
|
|
11
11
|
protected getParser(): EntrypointParser<CommandEntrypointOptions>;
|
|
12
12
|
protected getPlugin(): EntrypointOptionsFinder<CommandEntrypointOptions>;
|
|
13
|
+
/**
|
|
14
|
+
* A command name is its identity in the manifest and in the browser's shortcut settings,
|
|
15
|
+
* so a collision fails the build instead of renaming one of the commands.
|
|
16
|
+
*/
|
|
13
17
|
protected getCommands(): Promise<Map<EntrypointFile, CommandOptions>>;
|
|
14
18
|
commands(): Promise<Map<EntrypointFile, CommandOptions>>;
|
|
15
19
|
canMerge(): boolean;
|
|
@@ -2,6 +2,7 @@ import AbstractPluginFinder from "./AbstractPluginFinder.js";
|
|
|
2
2
|
import PluginFinder from "./PluginFinder.js";
|
|
3
3
|
import { CommandParser } from "../parser/index.js";
|
|
4
4
|
import { InlineNameGenerator } from "../name/index.js";
|
|
5
|
+
import { CommandExecuteActionName } from "./../../../types/command.js";
|
|
5
6
|
import { EntrypointType } from "./../../../types/entrypoint.js";
|
|
6
7
|
class CommandFinder_default extends AbstractPluginFinder {
|
|
7
8
|
_commands;
|
|
@@ -19,14 +20,28 @@ class CommandFinder_default extends AbstractPluginFinder {
|
|
|
19
20
|
getPlugin() {
|
|
20
21
|
return new PluginFinder(this.config, "command", this);
|
|
21
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* A command name is its identity in the manifest and in the browser's shortcut settings,
|
|
25
|
+
* so a collision fails the build instead of renaming one of the commands.
|
|
26
|
+
*/
|
|
22
27
|
async getCommands() {
|
|
23
28
|
const commands = /* @__PURE__ */ new Map();
|
|
29
|
+
const owners = /* @__PURE__ */ new Map();
|
|
24
30
|
for (const [file, option] of await this.plugin().options()) {
|
|
25
|
-
const { name, ...definition } = option;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
const { name = this.names.derive(file), ...definition } = option;
|
|
32
|
+
const owner = owners.get(name);
|
|
33
|
+
if (owner && name === CommandExecuteActionName) {
|
|
34
|
+
throw new Error(
|
|
35
|
+
`Invalid command options in "${file.file}": An action command is already defined in "${owner.file}". Only one action command is allowed`
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
if (owner) {
|
|
39
|
+
throw new Error(
|
|
40
|
+
`Invalid command options in "${file.file}": Command name "${name}" is already used by "${owner.file}". Command names must be unique, set a distinct "name"`
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
owners.set(name, file);
|
|
44
|
+
commands.set(file, { name, ...definition });
|
|
30
45
|
}
|
|
31
46
|
return commands;
|
|
32
47
|
}
|
|
@@ -37,7 +52,6 @@ class CommandFinder_default extends AbstractPluginFinder {
|
|
|
37
52
|
return this.config.mergeCommands;
|
|
38
53
|
}
|
|
39
54
|
clear() {
|
|
40
|
-
this.names.reset();
|
|
41
55
|
this._commands = void 0;
|
|
42
56
|
return super.clear();
|
|
43
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/CommandFinder.ts"],"sourcesContent":["import AbstractPluginFinder from \"./AbstractPluginFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {CommandParser} from \"../parser\";\nimport {InlineNameGenerator} from \"../name\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {CommandEntrypointOptions, CommandOptions} from \"@typing/command\";\nimport {EntrypointFile, EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractPluginFinder<CommandEntrypointOptions> {\n protected _commands?: Map<EntrypointFile, CommandOptions>;\n\n protected readonly names: InlineNameGenerator;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n\n this.names = new InlineNameGenerator(this.type());\n }\n\n public type(): EntrypointType {\n return EntrypointType.Command;\n }\n\n protected getParser(): EntrypointParser<CommandEntrypointOptions> {\n return new CommandParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<CommandEntrypointOptions> {\n return new PluginFinder(this.config, \"command\", this);\n }\n\n protected async getCommands(): Promise<Map<EntrypointFile, CommandOptions>> {\n const commands = new Map<EntrypointFile, CommandOptions>();\n\n for (const [file, option] of await this.plugin().options()) {\n const {name, ...definition} = option;\n\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/CommandFinder.ts"],"sourcesContent":["import AbstractPluginFinder from \"./AbstractPluginFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {CommandParser} from \"../parser\";\nimport {InlineNameGenerator} from \"../name\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {CommandEntrypointOptions, CommandExecuteActionName, CommandOptions} from \"@typing/command\";\nimport {EntrypointFile, EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends AbstractPluginFinder<CommandEntrypointOptions> {\n protected _commands?: Map<EntrypointFile, CommandOptions>;\n\n protected readonly names: InlineNameGenerator;\n\n public constructor(config: ReadonlyConfig) {\n super(config);\n\n this.names = new InlineNameGenerator(this.type());\n }\n\n public type(): EntrypointType {\n return EntrypointType.Command;\n }\n\n protected getParser(): EntrypointParser<CommandEntrypointOptions> {\n return new CommandParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<CommandEntrypointOptions> {\n return new PluginFinder(this.config, \"command\", this);\n }\n\n /**\n * A command name is its identity in the manifest and in the browser's shortcut settings,\n * so a collision fails the build instead of renaming one of the commands.\n */\n protected async getCommands(): Promise<Map<EntrypointFile, CommandOptions>> {\n const commands = new Map<EntrypointFile, CommandOptions>();\n const owners = new Map<string, EntrypointFile>();\n\n for (const [file, option] of await this.plugin().options()) {\n const {name = this.names.derive(file), ...definition} = option;\n const owner = owners.get(name);\n\n if (owner && name === CommandExecuteActionName) {\n throw new Error(\n `Invalid command options in \"${file.file}\": An action command is already defined in \"${owner.file}\". Only one action command is allowed`\n );\n }\n\n if (owner) {\n throw new Error(\n `Invalid command options in \"${file.file}\": Command name \"${name}\" is already used by \"${owner.file}\". Command names must be unique, set a distinct \"name\"`\n );\n }\n\n owners.set(name, file);\n commands.set(file, {name, ...definition});\n }\n\n return commands;\n }\n\n public async commands(): Promise<Map<EntrypointFile, CommandOptions>> {\n return (this._commands ??= await this.getCommands());\n }\n\n public canMerge(): boolean {\n return this.config.mergeCommands;\n }\n\n public clear(): this {\n this._commands = undefined;\n\n return super.clear();\n }\n}\n"],"mappings":"AAAA,OAAO,0BAA0B;AACjC,OAAO,kBAAkB;AAEzB,SAAQ,qBAAoB;AAC5B,SAAQ,2BAA0B;AAGlC,SAAkC,gCAA+C;AACjF,SAAmE,sBAAqB;AAExF,MAAO,8BAAsB,qBAA+C;AAAA,EAC9D;AAAA,EAES;AAAA,EAEZ,YAAY,QAAwB;AACvC,UAAM,MAAM;AAEZ,SAAK,QAAQ,IAAI,oBAAoB,KAAK,KAAK,CAAC;AAAA,EACpD;AAAA,EAEO,OAAuB;AAC1B,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,YAAwD;AAC9D,WAAO,IAAI,cAAc,KAAK,MAAM;AAAA,EACxC;AAAA,EAEU,YAA+D;AACrE,WAAO,IAAI,aAAa,KAAK,QAAQ,WAAW,IAAI;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAgB,cAA4D;AACxE,UAAM,WAAW,oBAAI,IAAoC;AACzD,UAAM,SAAS,oBAAI,IAA4B;AAE/C,eAAW,CAAC,MAAM,MAAM,KAAK,MAAM,KAAK,OAAO,EAAE,QAAQ,GAAG;AACxD,YAAM,EAAC,OAAO,KAAK,MAAM,OAAO,IAAI,GAAG,GAAG,WAAU,IAAI;AACxD,YAAM,QAAQ,OAAO,IAAI,IAAI;AAE7B,UAAI,SAAS,SAAS,0BAA0B;AAC5C,cAAM,IAAI;AAAA,UACN,+BAA+B,KAAK,IAAI,+CAA+C,MAAM,IAAI;AAAA,QACrG;AAAA,MACJ;AAEA,UAAI,OAAO;AACP,cAAM,IAAI;AAAA,UACN,+BAA+B,KAAK,IAAI,oBAAoB,IAAI,yBAAyB,MAAM,IAAI;AAAA,QACvG;AAAA,MACJ;AAEA,aAAO,IAAI,MAAM,IAAI;AACrB,eAAS,IAAI,MAAM,EAAC,MAAM,GAAG,WAAU,CAAC;AAAA,IAC5C;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAa,WAAyD;AAClE,WAAQ,KAAK,cAAL,KAAK,YAAc,MAAM,KAAK,YAAY;AAAA,EACtD;AAAA,EAEO,WAAoB;AACvB,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA,EAEO,QAAc;AACjB,SAAK,YAAY;AAEjB,WAAO,MAAM,MAAM;AAAA,EACvB;AACJ;","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import AbstractOverrideFinder from "./AbstractOverrideFinder.js";
|
|
2
|
+
import { ReadonlyConfig } from "../../../types/config.js";
|
|
3
|
+
import { EntrypointParser } from "../../../types/entrypoint.js";
|
|
4
|
+
import { HistoryEntrypointOptions, OverrideEntrypointType } from "../../../types/override.js";
|
|
5
|
+
export default class HistoryFinder extends AbstractOverrideFinder<HistoryEntrypointOptions> {
|
|
6
|
+
constructor(config: ReadonlyConfig);
|
|
7
|
+
type(): OverrideEntrypointType;
|
|
8
|
+
protected getParser(): EntrypointParser<HistoryEntrypointOptions>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import AbstractOverrideFinder from "./AbstractOverrideFinder.js";
|
|
2
|
+
import { HistoryParser } from "../parser/index.js";
|
|
3
|
+
import { EntrypointType } from "./../../../types/entrypoint.js";
|
|
4
|
+
class HistoryFinder extends AbstractOverrideFinder {
|
|
5
|
+
constructor(config) {
|
|
6
|
+
super(config);
|
|
7
|
+
}
|
|
8
|
+
type() {
|
|
9
|
+
return EntrypointType.History;
|
|
10
|
+
}
|
|
11
|
+
getParser() {
|
|
12
|
+
return new HistoryParser(this.config);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
HistoryFinder as default
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=HistoryFinder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/HistoryFinder.ts"],"sourcesContent":["import AbstractOverrideFinder from \"./AbstractOverrideFinder\";\n\nimport {HistoryParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\nimport {HistoryEntrypointOptions, OverrideEntrypointType} from \"@typing/override\";\n\nexport default class HistoryFinder extends AbstractOverrideFinder<HistoryEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): OverrideEntrypointType {\n return EntrypointType.History;\n }\n\n protected getParser(): EntrypointParser<HistoryEntrypointOptions> {\n return new HistoryParser(this.config);\n }\n}\n"],"mappings":"AAAA,OAAO,4BAA4B;AAEnC,SAAQ,qBAAoB;AAG5B,SAA0B,sBAAqB;AAG/C,MAAO,sBAAoC,uBAAiD;AAAA,EACjF,YAAY,QAAwB;AACvC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEO,OAA+B;AAClC,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,YAAwD;AAC9D,WAAO,IAAI,cAAc,KAAK,MAAM;AAAA,EACxC;AACJ;","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import AbstractOverrideFinder from "./AbstractOverrideFinder.js";
|
|
2
|
+
import { ReadonlyConfig } from "../../../types/config.js";
|
|
3
|
+
import { EntrypointParser } from "../../../types/entrypoint.js";
|
|
4
|
+
import { NewtabEntrypointOptions, OverrideEntrypointType } from "../../../types/override.js";
|
|
5
|
+
export default class NewtabFinder extends AbstractOverrideFinder<NewtabEntrypointOptions> {
|
|
6
|
+
constructor(config: ReadonlyConfig);
|
|
7
|
+
type(): OverrideEntrypointType;
|
|
8
|
+
protected getParser(): EntrypointParser<NewtabEntrypointOptions>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import AbstractOverrideFinder from "./AbstractOverrideFinder.js";
|
|
2
|
+
import { NewtabParser } from "../parser/index.js";
|
|
3
|
+
import { EntrypointType } from "./../../../types/entrypoint.js";
|
|
4
|
+
class NewtabFinder extends AbstractOverrideFinder {
|
|
5
|
+
constructor(config) {
|
|
6
|
+
super(config);
|
|
7
|
+
}
|
|
8
|
+
type() {
|
|
9
|
+
return EntrypointType.Newtab;
|
|
10
|
+
}
|
|
11
|
+
getParser() {
|
|
12
|
+
return new NewtabParser(this.config);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
NewtabFinder as default
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=NewtabFinder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/NewtabFinder.ts"],"sourcesContent":["import AbstractOverrideFinder from \"./AbstractOverrideFinder\";\n\nimport {NewtabParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\nimport {NewtabEntrypointOptions, OverrideEntrypointType} from \"@typing/override\";\n\nexport default class NewtabFinder extends AbstractOverrideFinder<NewtabEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): OverrideEntrypointType {\n return EntrypointType.Newtab;\n }\n\n protected getParser(): EntrypointParser<NewtabEntrypointOptions> {\n return new NewtabParser(this.config);\n }\n}\n"],"mappings":"AAAA,OAAO,4BAA4B;AAEnC,SAAQ,oBAAmB;AAG3B,SAA0B,sBAAqB;AAG/C,MAAO,qBAAmC,uBAAgD;AAAA,EAC/E,YAAY,QAAwB;AACvC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEO,OAA+B;AAClC,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,YAAuD;AAC7D,WAAO,IAAI,aAAa,KAAK,MAAM;AAAA,EACvC;AACJ;","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ViewPermissionsFinder from "./ViewPermissionsFinder.js";
|
|
2
2
|
import type { ViewItems } from "./AbstractViewFinder.js";
|
|
3
3
|
import type { ReadonlyConfig } from "../../../types/config.js";
|
|
4
4
|
import type { OptionsEntrypointOptions } from "../../../types/options.js";
|
|
5
5
|
import { EntrypointOptionsFinder, EntrypointParser, EntrypointType } from "../../../types/entrypoint.js";
|
|
6
|
-
export default class extends
|
|
6
|
+
export default class extends ViewPermissionsFinder<OptionsEntrypointOptions> {
|
|
7
7
|
constructor(config: ReadonlyConfig);
|
|
8
8
|
type(): EntrypointType;
|
|
9
9
|
protected getParser(): EntrypointParser<OptionsEntrypointOptions>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ViewPermissionsFinder from "./ViewPermissionsFinder.js";
|
|
2
2
|
import PluginFinder from "./PluginFinder.js";
|
|
3
3
|
import { OptionsParser } from "../parser/index.js";
|
|
4
4
|
import { EntrypointType } from "./../../../types/entrypoint.js";
|
|
5
|
-
class OptionsFinder_default extends
|
|
5
|
+
class OptionsFinder_default extends ViewPermissionsFinder {
|
|
6
6
|
constructor(config) {
|
|
7
7
|
super(config);
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/OptionsFinder.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/OptionsFinder.ts"],"sourcesContent":["import ViewPermissionsFinder from \"./ViewPermissionsFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {OptionsParser} from \"../parser\";\n\nimport type {ViewItems} from \"./AbstractViewFinder\";\nimport type {ReadonlyConfig} from \"@typing/config\";\nimport type {OptionsEntrypointOptions} from \"@typing/options\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends ViewPermissionsFinder<OptionsEntrypointOptions> {\n public constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Options;\n }\n\n protected getParser(): EntrypointParser<OptionsEntrypointOptions> {\n return new OptionsParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<OptionsEntrypointOptions> {\n return new PluginFinder(this.config, \"options\", this);\n }\n\n protected async getViews(): Promise<ViewItems<OptionsEntrypointOptions>> {\n const views = await super.getViews();\n\n for (const view of views.values()) {\n const {openInTab, ...options} = view.options;\n\n view.options = options;\n }\n\n return views;\n }\n\n public allowMultiple(): boolean {\n return false;\n }\n}\n"],"mappings":"AAAA,OAAO,2BAA2B;AAClC,OAAO,kBAAkB;AAEzB,SAAQ,qBAAoB;AAK5B,SAAmD,sBAAqB;AAExE,MAAO,8BAAsB,sBAAgD;AAAA,EAClE,YAAY,QAAwB;AACvC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEO,OAAuB;AAC1B,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,YAAwD;AAC9D,WAAO,IAAI,cAAc,KAAK,MAAM;AAAA,EACxC;AAAA,EAEU,YAA+D;AACrE,WAAO,IAAI,aAAa,KAAK,QAAQ,WAAW,IAAI;AAAA,EACxD;AAAA,EAEA,MAAgB,WAAyD;AACrE,UAAM,QAAQ,MAAM,MAAM,SAAS;AAEnC,eAAW,QAAQ,MAAM,OAAO,GAAG;AAC/B,YAAM,EAAC,WAAW,GAAG,QAAO,IAAI,KAAK;AAErC,WAAK,UAAU;AAAA,IACnB;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,gBAAyB;AAC5B,WAAO;AAAA,EACX;AACJ;","names":[]}
|
|
@@ -13,7 +13,7 @@ class PageFinder_default extends ViewCspFinder {
|
|
|
13
13
|
return EntrypointType.Page;
|
|
14
14
|
}
|
|
15
15
|
createFilenameGenerator() {
|
|
16
|
-
return new InlineNameGenerator(this.type()).reserve(EntrypointType.Background).reserve(EntrypointType.Command).reserve(EntrypointType.ContentScript).reserve(EntrypointType.Sidebar).reserve(EntrypointType.Popup).reserve(EntrypointType.Offscreen).reserve(EntrypointType.Sandbox).reserve(EntrypointType.Options);
|
|
16
|
+
return new InlineNameGenerator(this.type()).reserve(EntrypointType.Background).reserve(EntrypointType.Command).reserve(EntrypointType.ContentScript).reserve(EntrypointType.Sidebar).reserve(EntrypointType.Popup).reserve(EntrypointType.Offscreen).reserve(EntrypointType.Sandbox).reserve(EntrypointType.Options).reserve(EntrypointType.Newtab).reserve(EntrypointType.Bookmarks).reserve(EntrypointType.History);
|
|
17
17
|
}
|
|
18
18
|
createViewAlias(file, options) {
|
|
19
19
|
const { name } = options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/PageFinder.ts"],"sourcesContent":["import ViewCspFinder from \"./ViewCspFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {PageParser} from \"../parser\";\nimport {InlineNameGenerator} from \"../name\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PageEntrypointOptions} from \"@typing/page\";\nimport {\n EntrypointFile,\n EntrypointNameGenerator,\n EntrypointOptionsFinder,\n EntrypointParser,\n EntrypointType,\n} from \"@typing/entrypoint\";\n\nexport default class extends ViewCspFinder<PageEntrypointOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Page;\n }\n\n protected createFilenameGenerator(): EntrypointNameGenerator {\n return new InlineNameGenerator(this.type())\n .reserve(EntrypointType.Background)\n .reserve(EntrypointType.Command)\n .reserve(EntrypointType.ContentScript)\n .reserve(EntrypointType.Sidebar)\n .reserve(EntrypointType.Popup)\n .reserve(EntrypointType.Offscreen)\n .reserve(EntrypointType.Sandbox)\n .reserve(EntrypointType.Options);\n }\n\n protected createViewAlias(file: EntrypointFile, options: PageEntrypointOptions): string {\n const {name} = options;\n\n let alias = name ? this.aliases.name(name) : this.aliases.file(file);\n\n if (file.external) {\n alias = file.import;\n }\n\n return alias;\n }\n\n protected getParser(): EntrypointParser<PageEntrypointOptions> {\n return new PageParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<PageEntrypointOptions> {\n return new PluginFinder(this.config, \"page\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergePages;\n }\n}\n"],"mappings":"AAAA,OAAO,mBAAmB;AAC1B,OAAO,kBAAkB;AAEzB,SAAQ,kBAAiB;AACzB,SAAQ,2BAA0B;AAIlC;AAAA,EAKI;AAAA,OACG;AAEP,MAAO,2BAAsB,cAAqC;AAAA,EAC9D,YAAY,QAAwB;AAChC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEO,OAAuB;AAC1B,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,0BAAmD;AACzD,WAAO,IAAI,oBAAoB,KAAK,KAAK,CAAC,EACrC,QAAQ,eAAe,UAAU,EACjC,QAAQ,eAAe,OAAO,EAC9B,QAAQ,eAAe,aAAa,EACpC,QAAQ,eAAe,OAAO,EAC9B,QAAQ,eAAe,KAAK,EAC5B,QAAQ,eAAe,SAAS,EAChC,QAAQ,eAAe,OAAO,EAC9B,QAAQ,eAAe,OAAO;AAAA,EACvC;AAAA,EAEU,gBAAgB,MAAsB,SAAwC;AACpF,UAAM,EAAC,KAAI,IAAI;AAEf,QAAI,QAAQ,OAAO,KAAK,QAAQ,KAAK,IAAI,IAAI,KAAK,QAAQ,KAAK,IAAI;AAEnE,QAAI,KAAK,UAAU;AACf,cAAQ,KAAK;AAAA,IACjB;AAEA,WAAO;AAAA,EACX;AAAA,EAEU,YAAqD;AAC3D,WAAO,IAAI,WAAW,KAAK,MAAM;AAAA,EACrC;AAAA,EAEU,YAA4D;AAClE,WAAO,IAAI,aAAa,KAAK,QAAQ,QAAQ,IAAI;AAAA,EACrD;AAAA,EAEO,WAAoB;AACvB,WAAO,KAAK,OAAO;AAAA,EACvB;AACJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/PageFinder.ts"],"sourcesContent":["import ViewCspFinder from \"./ViewCspFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {PageParser} from \"../parser\";\nimport {InlineNameGenerator} from \"../name\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PageEntrypointOptions} from \"@typing/page\";\nimport {\n EntrypointFile,\n EntrypointNameGenerator,\n EntrypointOptionsFinder,\n EntrypointParser,\n EntrypointType,\n} from \"@typing/entrypoint\";\n\nexport default class extends ViewCspFinder<PageEntrypointOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Page;\n }\n\n protected createFilenameGenerator(): EntrypointNameGenerator {\n return new InlineNameGenerator(this.type())\n .reserve(EntrypointType.Background)\n .reserve(EntrypointType.Command)\n .reserve(EntrypointType.ContentScript)\n .reserve(EntrypointType.Sidebar)\n .reserve(EntrypointType.Popup)\n .reserve(EntrypointType.Offscreen)\n .reserve(EntrypointType.Sandbox)\n .reserve(EntrypointType.Options)\n .reserve(EntrypointType.Newtab)\n .reserve(EntrypointType.Bookmarks)\n .reserve(EntrypointType.History);\n }\n\n protected createViewAlias(file: EntrypointFile, options: PageEntrypointOptions): string {\n const {name} = options;\n\n let alias = name ? this.aliases.name(name) : this.aliases.file(file);\n\n if (file.external) {\n alias = file.import;\n }\n\n return alias;\n }\n\n protected getParser(): EntrypointParser<PageEntrypointOptions> {\n return new PageParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<PageEntrypointOptions> {\n return new PluginFinder(this.config, \"page\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergePages;\n }\n}\n"],"mappings":"AAAA,OAAO,mBAAmB;AAC1B,OAAO,kBAAkB;AAEzB,SAAQ,kBAAiB;AACzB,SAAQ,2BAA0B;AAIlC;AAAA,EAKI;AAAA,OACG;AAEP,MAAO,2BAAsB,cAAqC;AAAA,EAC9D,YAAY,QAAwB;AAChC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEO,OAAuB;AAC1B,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,0BAAmD;AACzD,WAAO,IAAI,oBAAoB,KAAK,KAAK,CAAC,EACrC,QAAQ,eAAe,UAAU,EACjC,QAAQ,eAAe,OAAO,EAC9B,QAAQ,eAAe,aAAa,EACpC,QAAQ,eAAe,OAAO,EAC9B,QAAQ,eAAe,KAAK,EAC5B,QAAQ,eAAe,SAAS,EAChC,QAAQ,eAAe,OAAO,EAC9B,QAAQ,eAAe,OAAO,EAC9B,QAAQ,eAAe,MAAM,EAC7B,QAAQ,eAAe,SAAS,EAChC,QAAQ,eAAe,OAAO;AAAA,EACvC;AAAA,EAEU,gBAAgB,MAAsB,SAAwC;AACpF,UAAM,EAAC,KAAI,IAAI;AAEf,QAAI,QAAQ,OAAO,KAAK,QAAQ,KAAK,IAAI,IAAI,KAAK,QAAQ,KAAK,IAAI;AAEnE,QAAI,KAAK,UAAU;AACf,cAAQ,KAAK;AAAA,IACjB;AAEA,WAAO;AAAA,EACX;AAAA,EAEU,YAAqD;AAC3D,WAAO,IAAI,WAAW,KAAK,MAAM;AAAA,EACrC;AAAA,EAEU,YAA4D;AAClE,WAAO,IAAI,aAAa,KAAK,QAAQ,QAAQ,IAAI;AAAA,EACrD;AAAA,EAEO,WAAoB;AACvB,WAAO,KAAK,OAAO;AAAA,EACvB;AACJ;","names":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ViewPermissionsFinder from "./ViewPermissionsFinder.js";
|
|
2
2
|
import { ReadonlyConfig } from "../../../types/config.js";
|
|
3
3
|
import { PopupEntrypointOptions } from "../../../types/popup.js";
|
|
4
4
|
import { EntrypointOptionsFinder, EntrypointParser, EntrypointType } from "../../../types/entrypoint.js";
|
|
5
|
-
export default class extends
|
|
5
|
+
export default class extends ViewPermissionsFinder<PopupEntrypointOptions> {
|
|
6
6
|
constructor(config: ReadonlyConfig);
|
|
7
7
|
type(): EntrypointType;
|
|
8
8
|
protected getParser(): EntrypointParser<PopupEntrypointOptions>;
|