adnbn 0.11.0 → 0.13.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/README.md +3 -0
- package/dist/cli/builders/manifest/ManifestBase.js +1 -1
- package/dist/cli/bundler/index.d.ts +1 -0
- package/dist/cli/bundler/index.js +1 -0
- package/dist/cli/bundler/index.js.map +1 -1
- package/dist/cli/bundler/layers.d.ts +5 -0
- package/dist/cli/bundler/layers.js +11 -0
- package/dist/cli/bundler/layers.js.map +1 -0
- package/dist/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.js +44 -15
- package/dist/cli/bundler/plugins/build-assets-map/BuildAssetsMapPlugin.js.map +1 -1
- package/dist/cli/bundler/plugins/build-assets-map/index.d.ts +1 -2
- package/dist/cli/bundler/plugins/build-assets-map/index.js +0 -3
- package/dist/cli/bundler/plugins/build-assets-map/index.js.map +1 -1
- package/dist/cli/bundler/plugins/build-assets-map/normalize.d.ts +3 -0
- package/dist/cli/bundler/plugins/build-assets-map/normalize.js +24 -0
- package/dist/cli/bundler/plugins/build-assets-map/normalize.js.map +1 -0
- package/dist/cli/bundler/plugins/build-assets-map/templates/runtime.template.d.ts +2 -0
- package/dist/cli/bundler/plugins/build-assets-map/templates.d.ts +9 -0
- package/dist/cli/bundler/plugins/build-assets-map/templates.js +32 -0
- package/dist/cli/bundler/plugins/build-assets-map/usage.d.ts +3 -6
- package/dist/cli/bundler/plugins/build-assets-map/usage.js +6 -3
- package/dist/cli/bundler/plugins/build-assets-map/usage.js.map +1 -1
- package/dist/cli/bundler/plugins/entrypoint/EntrypointPlugin.js +11 -0
- package/dist/cli/bundler/plugins/entrypoint/EntrypointPlugin.js.map +1 -1
- package/dist/cli/bundler/plugins/index.d.ts +2 -2
- package/dist/cli/bundler/plugins/index.js +2 -6
- package/dist/cli/bundler/plugins/index.js.map +1 -1
- package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.d.ts +1 -1
- package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.js +38 -13
- package/dist/cli/bundler/plugins/isolated-styles/IsolatedStylesPlugin.js.map +1 -1
- package/dist/cli/bundler/plugins/isolated-styles/chunks.d.ts +7 -0
- package/dist/cli/bundler/plugins/isolated-styles/chunks.js +33 -0
- package/dist/cli/bundler/plugins/isolated-styles/chunks.js.map +1 -0
- package/dist/cli/bundler/plugins/isolated-styles/split-chunks.d.ts +4 -0
- package/dist/cli/bundler/plugins/isolated-styles/split-chunks.js +51 -0
- package/dist/cli/bundler/plugins/isolated-styles/split-chunks.js.map +1 -0
- package/dist/cli/bundler/plugins/isolated-styles/templates.js +36 -6
- package/dist/cli/bundler/plugins/manifest/ManifestPlugin.js +1 -2
- package/dist/cli/bundler/plugins/manifest/ManifestPlugin.js.map +1 -1
- package/dist/cli/bundler/plugins/types.d.ts +4 -0
- package/dist/cli/bundler/plugins/utils/compilation-assets.d.ts +4 -0
- package/dist/cli/bundler/plugins/utils/compilation-assets.js +12 -0
- package/dist/cli/bundler/plugins/utils/compilation-assets.js.map +1 -0
- package/dist/cli/bundler/plugins/utils/index.d.ts +2 -0
- package/dist/cli/bundler/plugins/utils/index.js +5 -0
- package/dist/cli/bundler/plugins/utils/index.js.map +1 -1
- package/dist/cli/bundler/plugins/utils/runtime-module.d.ts +3 -0
- package/dist/cli/bundler/plugins/utils/runtime-module.js +11 -0
- package/dist/cli/bundler/plugins/utils/runtime-module.js.map +1 -0
- package/dist/cli/bundler/utils/app-filename.d.ts +2 -0
- package/dist/cli/bundler/utils/app-filename.js +19 -0
- package/dist/cli/bundler/utils/app-filename.js.map +1 -0
- package/dist/cli/bundler/utils/assets.d.ts +3 -0
- package/dist/cli/bundler/utils/{output.js → assets.js} +22 -33
- package/dist/cli/bundler/utils/assets.js.map +1 -0
- package/dist/cli/bundler/utils/index.d.ts +2 -3
- package/dist/cli/bundler/utils/index.js +2 -3
- package/dist/cli/bundler/utils/index.js.map +1 -1
- package/dist/cli/entrypoint/file/injectors/core.js +1 -1
- package/dist/cli/entrypoint/finder/ContentFinder.d.ts +1 -1
- package/dist/cli/entrypoint/parser/ContentParser.d.ts +2 -2
- package/dist/cli/entrypoint/parser/ContentParser.js +6 -22
- package/dist/cli/entrypoint/parser/ContentParser.js.map +1 -1
- package/dist/cli/entrypoint/parser/RelayParser.js +1 -1
- package/dist/cli/entrypoint/parser/utils/content/default-render.d.ts +3 -0
- package/dist/cli/entrypoint/parser/utils/content/default-render.js +21 -0
- package/dist/cli/entrypoint/parser/utils/content/default-render.js.map +1 -0
- package/dist/cli/plugins/content/Content.d.ts +1 -1
- package/dist/cli/plugins/content/ContentDriver.d.ts +1 -1
- package/dist/cli/plugins/content/ContentManager.d.ts +1 -1
- package/dist/cli/plugins/content/ContentManager.js +1 -1
- package/dist/cli/plugins/content/ContentName.d.ts +1 -1
- package/dist/cli/plugins/content/ContentName.js +1 -1
- package/dist/cli/plugins/content/Relay.d.ts +1 -1
- package/dist/cli/plugins/content/RelayDriver.d.ts +1 -1
- package/dist/cli/plugins/content/RelayDriver.js +1 -1
- package/dist/cli/plugins/content/bundler.d.ts +1 -4
- package/dist/cli/plugins/content/bundler.js +5 -21
- package/dist/cli/plugins/content/bundler.js.map +1 -1
- package/dist/cli/plugins/content/index.js +4 -5
- package/dist/cli/plugins/content/index.js.map +1 -1
- package/dist/cli/plugins/content/types.d.ts +1 -1
- package/dist/cli/plugins/content/utils.d.ts +1 -1
- package/dist/cli/plugins/content/utils.js +1 -1
- package/dist/cli/plugins/index.d.ts +1 -1
- package/dist/cli/plugins/index.js +1 -1
- package/dist/cli/plugins/locale/Locale.js +5 -2
- package/dist/cli/plugins/locale/Locale.js.map +1 -1
- package/dist/cli/plugins/locale/index.js +2 -2
- package/dist/cli/plugins/locale/index.js.map +1 -1
- package/dist/cli/plugins/output/index.d.ts +2 -0
- package/dist/cli/plugins/{output.js → output/index.js} +11 -13
- package/dist/cli/plugins/output/index.js.map +1 -0
- package/dist/cli/plugins/output/runtime.d.ts +26 -0
- package/dist/cli/plugins/output/runtime.js +19 -0
- package/dist/cli/plugins/output/runtime.js.map +1 -0
- package/dist/cli/plugins/style/index.d.ts +1 -2
- package/dist/cli/plugins/style/index.js +19 -30
- package/dist/cli/plugins/style/index.js.map +1 -1
- package/dist/cli/resolvers/config.js +1 -2
- package/dist/cli/resolvers/config.js.map +1 -1
- package/dist/cli/virtual/index.js +4 -4
- package/dist/cli/virtual/virtual.d.ts +8 -3
- package/dist/content/index.d.ts +3 -0
- package/dist/content/index.js +8 -0
- package/dist/content/index.js.map +1 -0
- package/dist/entry/content/adapters/react/Builder.d.ts +7 -6
- package/dist/entry/content/adapters/react/Builder.js +12 -19
- package/dist/entry/content/adapters/react/Builder.js.map +1 -1
- package/dist/entry/content/adapters/react/Node.d.ts +6 -14
- package/dist/entry/content/adapters/react/Node.js +11 -35
- package/dist/entry/content/adapters/react/Node.js.map +1 -1
- package/dist/entry/content/adapters/react/definition.d.ts +2 -0
- package/dist/entry/content/adapters/react/definition.js +12 -0
- package/dist/entry/content/adapters/react/definition.js.map +1 -0
- package/dist/entry/content/adapters/react/index.d.ts +2 -1
- package/dist/entry/content/adapters/react/index.js +3 -1
- package/dist/entry/content/adapters/react/index.js.map +1 -1
- package/dist/entry/content/adapters/vanilla/Builder.d.ts +7 -5
- package/dist/entry/content/adapters/vanilla/Builder.js +17 -14
- package/dist/entry/content/adapters/vanilla/Builder.js.map +1 -1
- package/dist/entry/content/adapters/vanilla/Node.d.ts +5 -11
- package/dist/entry/content/adapters/vanilla/Node.js +11 -37
- package/dist/entry/content/adapters/vanilla/Node.js.map +1 -1
- package/dist/entry/content/adapters/vanilla/definition.d.ts +2 -0
- package/dist/entry/content/adapters/vanilla/definition.js +9 -0
- package/dist/entry/content/adapters/vanilla/definition.js.map +1 -0
- package/dist/entry/content/adapters/vanilla/index.d.ts +2 -1
- package/dist/entry/content/adapters/vanilla/index.js +3 -1
- package/dist/entry/content/adapters/vanilla/index.js.map +1 -1
- package/dist/entry/content/adapters/vanilla/utils.d.ts +1 -0
- package/dist/entry/content/adapters/vanilla/utils.js +7 -0
- package/dist/entry/content/adapters/vanilla/utils.js.map +1 -0
- package/dist/entry/content/index.d.ts +5 -1
- package/dist/entry/content/index.js +8 -1
- package/dist/entry/content/index.js.map +1 -1
- package/dist/entry/content/lifecycle/Builder.d.ts +32 -0
- package/dist/entry/content/lifecycle/Builder.js +254 -0
- package/dist/entry/content/lifecycle/Builder.js.map +1 -0
- package/dist/entry/content/lifecycle/IsolationSetup.d.ts +16 -0
- package/dist/entry/content/lifecycle/IsolationSetup.js +37 -0
- package/dist/entry/content/lifecycle/IsolationSetup.js.map +1 -0
- package/dist/entry/content/lifecycle/MountBuilder.d.ts +11 -0
- package/dist/entry/content/lifecycle/MountBuilder.js +73 -0
- package/dist/entry/content/lifecycle/MountBuilder.js.map +1 -0
- package/dist/entry/content/lifecycle/context/ContainerRegistry.d.ts +7 -0
- package/dist/entry/content/lifecycle/context/ContainerRegistry.js +45 -0
- package/dist/entry/content/lifecycle/context/ContainerRegistry.js.map +1 -0
- package/dist/entry/content/lifecycle/context/Context.d.ts +17 -0
- package/dist/entry/content/lifecycle/context/Context.js +88 -0
- package/dist/entry/content/lifecycle/context/Context.js.map +1 -0
- package/dist/entry/content/{core → lifecycle}/context/EventEmitter.d.ts +2 -2
- package/dist/entry/content/{core → lifecycle}/context/EventEmitter.js +3 -3
- package/dist/entry/content/lifecycle/context/EventEmitter.js.map +1 -0
- package/dist/entry/content/lifecycle/context/ManagedContext.d.ts +8 -0
- package/dist/entry/content/lifecycle/context/ManagedContext.js +19 -0
- package/dist/entry/content/lifecycle/context/ManagedContext.js.map +1 -0
- package/dist/entry/content/{core → lifecycle}/context/index.d.ts +1 -0
- package/dist/entry/content/lifecycle/context/index.js +11 -0
- package/dist/entry/content/lifecycle/context/index.js.map +1 -0
- package/dist/entry/content/{core → lifecycle}/markers/AbstractMarker.d.ts +2 -2
- package/dist/entry/content/{core → lifecycle}/markers/AbstractMarker.js +3 -3
- package/dist/entry/content/lifecycle/markers/AbstractMarker.js.map +1 -0
- package/dist/entry/content/{core → lifecycle}/markers/AttributeMarker.d.ts +2 -2
- package/dist/entry/content/{core → lifecycle}/markers/AttributeMarker.js +5 -3
- package/dist/entry/content/lifecycle/markers/AttributeMarker.js.map +1 -0
- package/dist/entry/content/{core → lifecycle}/markers/WeakMarker.d.ts +2 -2
- package/dist/entry/content/{core → lifecycle}/markers/WeakMarker.js +2 -2
- package/dist/entry/content/lifecycle/markers/WeakMarker.js.map +1 -0
- package/dist/entry/content/lifecycle/markers/index.js.map +1 -0
- package/dist/entry/content/lifecycle/nodes/EventNode.d.ts +15 -0
- package/dist/entry/content/lifecycle/nodes/EventNode.js +49 -0
- package/dist/entry/content/lifecycle/nodes/EventNode.js.map +1 -0
- package/dist/entry/content/lifecycle/nodes/FrameNode.d.ts +30 -0
- package/dist/entry/content/lifecycle/nodes/FrameNode.js +190 -0
- package/dist/entry/content/lifecycle/nodes/FrameNode.js.map +1 -0
- package/dist/entry/content/{core → lifecycle}/nodes/MarkerNode.d.ts +3 -2
- package/dist/entry/content/{core → lifecycle}/nodes/MarkerNode.js +5 -2
- package/dist/entry/content/lifecycle/nodes/MarkerNode.js.map +1 -0
- package/dist/entry/content/lifecycle/nodes/MountNode.d.ts +17 -0
- package/dist/entry/content/lifecycle/nodes/MountNode.js +80 -0
- package/dist/entry/content/lifecycle/nodes/MountNode.js.map +1 -0
- package/dist/entry/content/{core → lifecycle}/nodes/Node.d.ts +2 -2
- package/dist/entry/content/{core → lifecycle}/nodes/Node.js +2 -2
- package/dist/entry/content/lifecycle/nodes/Node.js.map +1 -0
- package/dist/entry/content/lifecycle/nodes/RenderNode.d.ts +28 -0
- package/dist/entry/content/lifecycle/nodes/RenderNode.js +140 -0
- package/dist/entry/content/lifecycle/nodes/RenderNode.js.map +1 -0
- package/dist/entry/content/lifecycle/nodes/ShadowNode.d.ts +22 -0
- package/dist/entry/content/lifecycle/nodes/ShadowNode.js +124 -0
- package/dist/entry/content/lifecycle/nodes/ShadowNode.js.map +1 -0
- package/dist/entry/content/{core → lifecycle}/nodes/index.d.ts +1 -0
- package/dist/entry/content/lifecycle/nodes/index.js +17 -0
- package/dist/entry/content/lifecycle/nodes/index.js.map +1 -0
- package/dist/entry/content/{core → lifecycle}/nodes/isolated-styles.d.ts +1 -1
- package/dist/entry/content/{core → lifecycle}/nodes/isolated-styles.js +2 -2
- package/dist/entry/content/lifecycle/nodes/isolated-styles.js.map +1 -0
- package/dist/entry/content/lifecycle/types.d.ts +28 -0
- package/dist/entry/content/resolvers/anchor.d.ts +2 -0
- package/dist/entry/content/{core/resolvers → resolvers}/anchor.js +2 -2
- package/dist/entry/content/resolvers/anchor.js.map +1 -0
- package/dist/entry/content/resolvers/container.d.ts +2 -0
- package/dist/entry/content/{core/resolvers → resolvers}/container.js +2 -2
- package/dist/entry/content/resolvers/container.js.map +1 -0
- package/dist/entry/content/resolvers/definition.d.ts +5 -0
- package/dist/entry/content/resolvers/definition.js +24 -0
- package/dist/entry/content/resolvers/definition.js.map +1 -0
- package/dist/entry/content/{core/resolvers → resolvers}/index.d.ts +1 -1
- package/dist/entry/content/{core/resolvers → resolvers}/index.js +1 -1
- package/dist/entry/content/resolvers/index.js.map +1 -0
- package/dist/entry/content/resolvers/mount.d.ts +2 -0
- package/dist/entry/content/{core/resolvers → resolvers}/mount.js +3 -3
- package/dist/entry/content/resolvers/mount.js.map +1 -0
- package/dist/entry/content/resolvers/target.d.ts +3 -0
- package/dist/entry/content/resolvers/target.js +34 -0
- package/dist/entry/content/resolvers/target.js.map +1 -0
- package/dist/entry/content/resolvers/watch.d.ts +6 -0
- package/dist/entry/content/resolvers/watch.js +81 -0
- package/dist/entry/content/resolvers/watch.js.map +1 -0
- package/dist/entry/relay/Builder.d.ts +8 -8
- package/dist/entry/relay/Builder.js +28 -19
- package/dist/entry/relay/Builder.js.map +1 -1
- package/dist/entry/relay/TransportBuilder.d.ts +3 -2
- package/dist/entry/relay/TransportBuilder.js +3 -3
- package/dist/entry/relay/TransportBuilder.js.map +1 -1
- package/dist/entry/relay/index.d.ts +5 -2
- package/dist/entry/relay/index.js +8 -2
- package/dist/entry/relay/index.js.map +1 -1
- package/dist/entry/relay/resolvers/definition.d.ts +4 -0
- package/dist/entry/relay/resolvers/definition.js +16 -0
- package/dist/entry/relay/resolvers/definition.js.map +1 -0
- package/dist/main/content.d.ts +4 -6
- package/dist/main/content.js +3 -16
- package/dist/main/content.js.map +1 -1
- package/dist/main/entrypoint.js +1 -1
- package/dist/main/entrypoint.js.map +1 -1
- package/dist/main/relay.d.ts +2 -1
- package/dist/main/relay.js.map +1 -1
- package/dist/relay/RelayPermission.js +1 -1
- package/dist/shared/content/isolation.d.ts +1 -1
- package/dist/shared/content/isolation.js +13 -20
- package/dist/shared/content/isolation.js.map +1 -1
- package/dist/shared/locale/index.d.ts +1 -1
- package/dist/shared/locale/index.js +3 -1
- package/dist/shared/locale/index.js.map +1 -1
- package/dist/shared/locale/messages.d.ts +4 -0
- package/dist/shared/locale/messages.js +12 -0
- package/dist/shared/locale/messages.js.map +1 -1
- package/dist/types/content/adapters/index.d.ts +2 -0
- package/dist/types/content/adapters/index.js +1 -0
- package/dist/types/content/adapters/index.js.map +1 -0
- package/dist/types/content/adapters/react.d.ts +4 -0
- package/dist/types/content/adapters/react.js +1 -0
- package/dist/types/content/adapters/react.js.map +1 -0
- package/dist/types/content/adapters/vanilla.d.ts +1 -0
- package/dist/types/content/adapters/vanilla.js +1 -0
- package/dist/types/content/adapters/vanilla.js.map +1 -0
- package/dist/types/content/boundary.d.ts +17 -0
- package/dist/types/content/boundary.js +1 -0
- package/dist/types/content/boundary.js.map +1 -0
- package/dist/types/{content.d.ts → content/common.d.ts} +32 -53
- package/dist/types/{content.js → content/common.js} +1 -1
- package/dist/types/content/common.js.map +1 -0
- package/dist/types/content/definition.d.ts +66 -0
- package/dist/types/content/definition.js +1 -0
- package/dist/types/content/definition.js.map +1 -0
- package/dist/types/content/index.d.ts +7 -0
- package/dist/types/content/index.js +2 -0
- package/dist/types/content/index.js.map +1 -0
- package/dist/types/content/prepare.d.ts +9 -0
- package/dist/types/content/prepare.js +1 -0
- package/dist/types/content/prepare.js.map +1 -0
- package/dist/types/content/render.d.ts +6 -0
- package/dist/types/content/render.js +1 -0
- package/dist/types/content/render.js.map +1 -0
- package/dist/types/content/target.d.ts +13 -0
- package/dist/types/content/target.js +1 -0
- package/dist/types/content/target.js.map +1 -0
- package/dist/types/locale.d.ts +3 -0
- package/dist/types/locale.js.map +1 -1
- package/dist/types/manifest.d.ts +1 -1
- package/dist/types/relay.d.ts +3 -4
- package/dist/types/relay.js.map +1 -1
- package/dist/virtual/modules.d.ts +4 -3
- package/dist/virtual/{entrypoint.d.ts → runtime.d.ts} +3 -0
- package/dist/virtual/runtime.js +9 -0
- package/dist/virtual/runtime.js.map +1 -0
- package/package.json +32 -25
- package/scripts/merge-coverage.mjs +12 -0
- package/scripts/pre-commit.mjs +22 -0
- package/scripts/test-inventory.mjs +38 -0
- package/scripts/test-run.mjs +25 -0
- package/types/client.d.ts +3 -3
- package/dist/cli/bundler/plugins/build-assets-map/entrypoint-module.d.ts +0 -13
- package/dist/cli/bundler/plugins/build-assets-map/entrypoint-module.js +0 -16
- package/dist/cli/bundler/plugins/build-assets-map/entrypoint-module.js.map +0 -1
- package/dist/cli/bundler/utils/layers.d.ts +0 -4
- package/dist/cli/bundler/utils/layers.js +0 -10
- package/dist/cli/bundler/utils/layers.js.map +0 -1
- package/dist/cli/bundler/utils/output.d.ts +0 -6
- package/dist/cli/bundler/utils/output.js.map +0 -1
- package/dist/cli/bundler/utils/styles.d.ts +0 -5
- package/dist/cli/bundler/utils/styles.js +0 -30
- package/dist/cli/bundler/utils/styles.js.map +0 -1
- package/dist/cli/plugins/output.d.ts +0 -2
- package/dist/cli/plugins/output.js.map +0 -1
- package/dist/cli/plugins/style/types.d.ts +0 -5
- package/dist/entry/content/adapters/react/resolvers/index.d.ts +0 -1
- package/dist/entry/content/adapters/react/resolvers/index.js +0 -2
- package/dist/entry/content/adapters/react/resolvers/index.js.map +0 -1
- package/dist/entry/content/adapters/react/resolvers/render.d.ts +0 -2
- package/dist/entry/content/adapters/react/resolvers/render.js +0 -11
- package/dist/entry/content/adapters/react/resolvers/render.js.map +0 -1
- package/dist/entry/content/core/Builder.d.ts +0 -26
- package/dist/entry/content/core/Builder.js +0 -128
- package/dist/entry/content/core/Builder.js.map +0 -1
- package/dist/entry/content/core/MountBuilder.d.ts +0 -10
- package/dist/entry/content/core/MountBuilder.js +0 -48
- package/dist/entry/content/core/MountBuilder.js.map +0 -1
- package/dist/entry/content/core/context/Context.d.ts +0 -12
- package/dist/entry/content/core/context/Context.js +0 -50
- package/dist/entry/content/core/context/Context.js.map +0 -1
- package/dist/entry/content/core/context/EventEmitter.js.map +0 -1
- package/dist/entry/content/core/context/ManagedContext.d.ts +0 -5
- package/dist/entry/content/core/context/ManagedContext.js +0 -12
- package/dist/entry/content/core/context/ManagedContext.js.map +0 -1
- package/dist/entry/content/core/context/index.js +0 -9
- package/dist/entry/content/core/context/index.js.map +0 -1
- package/dist/entry/content/core/markers/AbstractMarker.js.map +0 -1
- package/dist/entry/content/core/markers/AttributeMarker.js.map +0 -1
- package/dist/entry/content/core/markers/WeakMarker.js.map +0 -1
- package/dist/entry/content/core/markers/index.js.map +0 -1
- package/dist/entry/content/core/nodes/EventNode.d.ts +0 -11
- package/dist/entry/content/core/nodes/EventNode.js +0 -35
- package/dist/entry/content/core/nodes/EventNode.js.map +0 -1
- package/dist/entry/content/core/nodes/FrameNode.d.ts +0 -23
- package/dist/entry/content/core/nodes/FrameNode.js +0 -125
- package/dist/entry/content/core/nodes/FrameNode.js.map +0 -1
- package/dist/entry/content/core/nodes/MarkerNode.js.map +0 -1
- package/dist/entry/content/core/nodes/MountNode.d.ts +0 -12
- package/dist/entry/content/core/nodes/MountNode.js +0 -42
- package/dist/entry/content/core/nodes/MountNode.js.map +0 -1
- package/dist/entry/content/core/nodes/Node.js.map +0 -1
- package/dist/entry/content/core/nodes/ShadowNode.d.ts +0 -14
- package/dist/entry/content/core/nodes/ShadowNode.js +0 -67
- package/dist/entry/content/core/nodes/ShadowNode.js.map +0 -1
- package/dist/entry/content/core/nodes/index.js +0 -15
- package/dist/entry/content/core/nodes/index.js.map +0 -1
- package/dist/entry/content/core/nodes/isolated-styles.js.map +0 -1
- package/dist/entry/content/core/resolvers/anchor.d.ts +0 -2
- package/dist/entry/content/core/resolvers/anchor.js.map +0 -1
- package/dist/entry/content/core/resolvers/container.d.ts +0 -2
- package/dist/entry/content/core/resolvers/container.js.map +0 -1
- package/dist/entry/content/core/resolvers/definition.d.ts +0 -3
- package/dist/entry/content/core/resolvers/definition.js +0 -12
- package/dist/entry/content/core/resolvers/definition.js.map +0 -1
- package/dist/entry/content/core/resolvers/index.js.map +0 -1
- package/dist/entry/content/core/resolvers/mount.d.ts +0 -2
- package/dist/entry/content/core/resolvers/mount.js.map +0 -1
- package/dist/entry/content/core/resolvers/render.d.ts +0 -3
- package/dist/entry/content/core/resolvers/render.js +0 -18
- package/dist/entry/content/core/resolvers/render.js.map +0 -1
- package/dist/entry/content/core/resolvers/watch.d.ts +0 -4
- package/dist/entry/content/core/resolvers/watch.js +0 -62
- package/dist/entry/content/core/resolvers/watch.js.map +0 -1
- package/dist/entry/content/frame/Builder.d.ts +0 -7
- package/dist/entry/content/frame/Builder.js +0 -14
- package/dist/entry/content/frame/Builder.js.map +0 -1
- package/dist/entry/content/frame/index.d.ts +0 -4
- package/dist/entry/content/frame/index.js +0 -7
- package/dist/entry/content/frame/index.js.map +0 -1
- package/dist/types/content.js.map +0 -1
- package/dist/virtual/entrypoint.js +0 -7
- package/dist/virtual/entrypoint.js.map +0 -1
- /package/dist/entry/content/{core → lifecycle}/markers/index.d.ts +0 -0
- /package/dist/entry/content/{core → lifecycle}/markers/index.js +0 -0
- /package/dist/{cli/plugins/style → entry/content/lifecycle}/types.js +0 -0
- /package/dist/{cli/plugins/style → entry/content/lifecycle}/types.js.map +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/entry/content/lifecycle/context/Context.ts"],"sourcesContent":["import type ContainerRegistry from \"./ContainerRegistry\";\n\nimport {\n ContentScriptNode,\n ContentScriptContext,\n ContentScriptEventCallback,\n ContentScriptEventEmitter,\n} from \"@typing/content\";\n\nexport default class Context implements ContentScriptContext {\n protected readonly collection = new Set<ContentScriptNode>();\n private unmounting = false;\n\n constructor(\n protected readonly emitter: ContentScriptEventEmitter,\n private readonly registry: ContainerRegistry\n ) {}\n\n public get nodes(): ReadonlySet<ContentScriptNode> {\n return this.collection;\n }\n\n public owns(target: Node): boolean {\n return this.registry.owns(target);\n }\n\n public mount(): void {\n if (this.unmounting) {\n return;\n }\n\n for (const node of this.collection) {\n if (!node.anchor.isConnected) {\n node.unmount();\n\n this.collection.delete(node);\n\n this.emitter.emitRemove(node);\n\n continue;\n }\n\n node.mount();\n }\n }\n\n public unmount(): void {\n const unmounting = this.unmounting;\n this.unmounting = true;\n\n try {\n for (const node of this.collection) {\n node.unmount();\n\n if (!node.anchor.isConnected) {\n this.collection.delete(node);\n\n this.emitter.emitRemove(node);\n }\n }\n } finally {\n this.unmounting = unmounting;\n }\n }\n\n public remove(node: ContentScriptNode): void {\n if (!this.collection.delete(node)) {\n return;\n }\n\n try {\n node.unmount();\n } finally {\n this.emitter.emitRemove(node);\n }\n }\n\n public clear(): void {\n const unmounting = this.unmounting;\n\n this.unmounting = true;\n\n const errors: unknown[] = [];\n\n try {\n for (const node of this.collection) {\n try {\n this.remove(node);\n } catch (error) {\n errors.push(error);\n }\n }\n } finally {\n this.registry.clear();\n this.unmounting = unmounting;\n }\n\n if (errors.length > 0) {\n throw new AggregateError(errors, \"Content script context cleanup failed\");\n }\n }\n\n public watch(callback: ContentScriptEventCallback): () => void {\n this.emitter.on(callback);\n\n return () => {\n this.emitter.off(callback);\n };\n }\n\n public unwatch(): void {\n this.emitter.removeAllListeners();\n }\n}\n"],"mappings":"AASA,MAAO,QAAsD;AAAA,EAIzD,YACuB,SACF,UACnB;AAFqB;AACF;AAAA,EAClB;AAAA,EAFoB;AAAA,EACF;AAAA,EALF,aAAa,oBAAI,IAAuB;AAAA,EACnD,aAAa;AAAA,EAOrB,IAAW,QAAwC;AAC/C,WAAO,KAAK;AAAA,EAChB;AAAA,EAEO,KAAK,QAAuB;AAC/B,WAAO,KAAK,SAAS,KAAK,MAAM;AAAA,EACpC;AAAA,EAEO,QAAc;AACjB,QAAI,KAAK,YAAY;AACjB;AAAA,IACJ;AAEA,eAAW,QAAQ,KAAK,YAAY;AAChC,UAAI,CAAC,KAAK,OAAO,aAAa;AAC1B,aAAK,QAAQ;AAEb,aAAK,WAAW,OAAO,IAAI;AAE3B,aAAK,QAAQ,WAAW,IAAI;AAE5B;AAAA,MACJ;AAEA,WAAK,MAAM;AAAA,IACf;AAAA,EACJ;AAAA,EAEO,UAAgB;AACnB,UAAM,aAAa,KAAK;AACxB,SAAK,aAAa;AAElB,QAAI;AACA,iBAAW,QAAQ,KAAK,YAAY;AAChC,aAAK,QAAQ;AAEb,YAAI,CAAC,KAAK,OAAO,aAAa;AAC1B,eAAK,WAAW,OAAO,IAAI;AAE3B,eAAK,QAAQ,WAAW,IAAI;AAAA,QAChC;AAAA,MACJ;AAAA,IACJ,UAAE;AACE,WAAK,aAAa;AAAA,IACtB;AAAA,EACJ;AAAA,EAEO,OAAO,MAA+B;AACzC,QAAI,CAAC,KAAK,WAAW,OAAO,IAAI,GAAG;AAC/B;AAAA,IACJ;AAEA,QAAI;AACA,WAAK,QAAQ;AAAA,IACjB,UAAE;AACE,WAAK,QAAQ,WAAW,IAAI;AAAA,IAChC;AAAA,EACJ;AAAA,EAEO,QAAc;AACjB,UAAM,aAAa,KAAK;AAExB,SAAK,aAAa;AAElB,UAAM,SAAoB,CAAC;AAE3B,QAAI;AACA,iBAAW,QAAQ,KAAK,YAAY;AAChC,YAAI;AACA,eAAK,OAAO,IAAI;AAAA,QACpB,SAAS,OAAO;AACZ,iBAAO,KAAK,KAAK;AAAA,QACrB;AAAA,MACJ;AAAA,IACJ,UAAE;AACE,WAAK,SAAS,MAAM;AACpB,WAAK,aAAa;AAAA,IACtB;AAEA,QAAI,OAAO,SAAS,GAAG;AACnB,YAAM,IAAI,eAAe,QAAQ,uCAAuC;AAAA,IAC5E;AAAA,EACJ;AAAA,EAEO,MAAM,UAAkD;AAC3D,SAAK,QAAQ,GAAG,QAAQ;AAExB,WAAO,MAAM;AACT,WAAK,QAAQ,IAAI,QAAQ;AAAA,IAC7B;AAAA,EACJ;AAAA,EAEO,UAAgB;AACnB,SAAK,QAAQ,mBAAmB;AAAA,EACpC;AACJ;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ContentScriptEvent, ContentScriptEventCallback, ContentScriptEventEmitter, ContentScriptNode } from "../../../../types/content.js";
|
|
2
|
-
export default class implements ContentScriptEventEmitter {
|
|
1
|
+
import { ContentScriptEvent, ContentScriptEventCallback, ContentScriptEventEmitter, ContentScriptNode } from "../../../../types/content/index.js";
|
|
2
|
+
export default class EventEmitter implements ContentScriptEventEmitter {
|
|
3
3
|
private readonly listeners;
|
|
4
4
|
emit(event: ContentScriptEvent, node: ContentScriptNode): void;
|
|
5
5
|
emitAdd(node: ContentScriptNode): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ContentScriptEvent
|
|
3
|
-
} from "./../../../../types/content.js";
|
|
4
|
-
class
|
|
3
|
+
} from "./../../../../types/content/index.js";
|
|
4
|
+
class EventEmitter {
|
|
5
5
|
listeners = /* @__PURE__ */ new Set();
|
|
6
6
|
emit(event, node) {
|
|
7
7
|
for (const listener of this.listeners) {
|
|
@@ -37,6 +37,6 @@ class EventEmitter_default {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
export {
|
|
40
|
-
|
|
40
|
+
EventEmitter as default
|
|
41
41
|
};
|
|
42
42
|
//# sourceMappingURL=EventEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/entry/content/lifecycle/context/EventEmitter.ts"],"sourcesContent":["import {\n ContentScriptEvent,\n ContentScriptEventCallback,\n ContentScriptEventEmitter,\n ContentScriptNode,\n} from \"@typing/content\";\n\nexport default class EventEmitter implements ContentScriptEventEmitter {\n private readonly listeners: Set<ContentScriptEventCallback> = new Set();\n\n public emit(event: ContentScriptEvent, node: ContentScriptNode): void {\n for (const listener of this.listeners) {\n listener(event, node);\n }\n }\n\n public emitAdd(node: ContentScriptNode): void {\n this.emit(ContentScriptEvent.Add, node);\n }\n\n public emitMount(node: ContentScriptNode): void {\n this.emit(ContentScriptEvent.Mount, node);\n }\n\n public emitRemove(node: ContentScriptNode): void {\n this.emit(ContentScriptEvent.Remove, node);\n }\n\n public emitUnmount(node: ContentScriptNode): void {\n this.emit(ContentScriptEvent.Unmount, node);\n }\n\n public hasListeners(): boolean {\n return this.listenerCount() > 0;\n }\n\n public listenerCount(): number {\n return this.listeners.size;\n }\n\n public off(callback: ContentScriptEventCallback): void {\n this.listeners.delete(callback);\n }\n\n public on(callback: ContentScriptEventCallback): void {\n this.listeners.add(callback);\n }\n\n public removeAllListeners(): void {\n this.listeners.clear();\n }\n}\n"],"mappings":"AAAA;AAAA,EACI;AAAA,OAIG;AAEP,MAAO,aAAgE;AAAA,EAClD,YAA6C,oBAAI,IAAI;AAAA,EAE/D,KAAK,OAA2B,MAA+B;AAClE,eAAW,YAAY,KAAK,WAAW;AACnC,eAAS,OAAO,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAEO,QAAQ,MAA+B;AAC1C,SAAK,KAAK,mBAAmB,KAAK,IAAI;AAAA,EAC1C;AAAA,EAEO,UAAU,MAA+B;AAC5C,SAAK,KAAK,mBAAmB,OAAO,IAAI;AAAA,EAC5C;AAAA,EAEO,WAAW,MAA+B;AAC7C,SAAK,KAAK,mBAAmB,QAAQ,IAAI;AAAA,EAC7C;AAAA,EAEO,YAAY,MAA+B;AAC9C,SAAK,KAAK,mBAAmB,SAAS,IAAI;AAAA,EAC9C;AAAA,EAEO,eAAwB;AAC3B,WAAO,KAAK,cAAc,IAAI;AAAA,EAClC;AAAA,EAEO,gBAAwB;AAC3B,WAAO,KAAK,UAAU;AAAA,EAC1B;AAAA,EAEO,IAAI,UAA4C;AACnD,SAAK,UAAU,OAAO,QAAQ;AAAA,EAClC;AAAA,EAEO,GAAG,UAA4C;AAClD,SAAK,UAAU,IAAI,QAAQ;AAAA,EAC/B;AAAA,EAEO,qBAA2B;AAC9B,SAAK,UAAU,MAAM;AAAA,EACzB;AACJ;","names":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import Context from "./Context.js";
|
|
2
|
+
import ContainerRegistry from "./ContainerRegistry.js";
|
|
3
|
+
import type { ContentScriptNode, ContentScriptEventEmitter } from "../../../../types/content/index.js";
|
|
4
|
+
export default class ManagedContext extends Context {
|
|
5
|
+
readonly containers: ContainerRegistry;
|
|
6
|
+
constructor(emitter: ContentScriptEventEmitter);
|
|
7
|
+
add(node: ContentScriptNode): this;
|
|
8
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Context from "./Context.js";
|
|
2
|
+
import ContainerRegistry from "./ContainerRegistry.js";
|
|
3
|
+
class ManagedContext extends Context {
|
|
4
|
+
containers;
|
|
5
|
+
constructor(emitter) {
|
|
6
|
+
const containers = new ContainerRegistry();
|
|
7
|
+
super(emitter, containers);
|
|
8
|
+
this.containers = containers;
|
|
9
|
+
}
|
|
10
|
+
add(node) {
|
|
11
|
+
this.collection.add(node);
|
|
12
|
+
this.emitter.emitAdd(node);
|
|
13
|
+
return this;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
ManagedContext as default
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=ManagedContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/entry/content/lifecycle/context/ManagedContext.ts"],"sourcesContent":["import Context from \"./Context\";\nimport ContainerRegistry from \"./ContainerRegistry\";\nimport type {ContentScriptNode, ContentScriptEventEmitter} from \"@typing/content\";\n\nexport default class ManagedContext extends Context {\n public readonly containers: ContainerRegistry;\n\n constructor(emitter: ContentScriptEventEmitter) {\n const containers = new ContainerRegistry();\n super(emitter, containers);\n this.containers = containers;\n }\n\n public add(node: ContentScriptNode): this {\n this.collection.add(node);\n\n this.emitter.emitAdd(node);\n\n return this;\n }\n}\n"],"mappings":"AAAA,OAAO,aAAa;AACpB,OAAO,uBAAuB;AAG9B,MAAO,uBAAqC,QAAQ;AAAA,EAChC;AAAA,EAEhB,YAAY,SAAoC;AAC5C,UAAM,aAAa,IAAI,kBAAkB;AACzC,UAAM,SAAS,UAAU;AACzB,SAAK,aAAa;AAAA,EACtB;AAAA,EAEO,IAAI,MAA+B;AACtC,SAAK,WAAW,IAAI,IAAI;AAExB,SAAK,QAAQ,QAAQ,IAAI;AAEzB,WAAO;AAAA,EACX;AACJ;","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as default2 } from "./Context.js";
|
|
2
|
+
import { default as default3 } from "./ContainerRegistry.js";
|
|
3
|
+
import { default as default4 } from "./ManagedContext.js";
|
|
4
|
+
import { default as default5 } from "./EventEmitter.js";
|
|
5
|
+
export {
|
|
6
|
+
default3 as ContainerRegistry,
|
|
7
|
+
default2 as Context,
|
|
8
|
+
default5 as EventEmitter,
|
|
9
|
+
default4 as ManagedContext
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/entry/content/lifecycle/context/index.ts"],"sourcesContent":["export {default as Context} from \"./Context\";\nexport {default as ContainerRegistry} from \"./ContainerRegistry\";\nexport {default as ManagedContext} from \"./ManagedContext\";\nexport {default as EventEmitter} from \"./EventEmitter\";\n"],"mappings":"AAAA,SAAmB,WAAXA,gBAAyB;AACjC,SAAmB,WAAXA,gBAAmC;AAC3C,SAAmB,WAAXA,gBAAgC;AACxC,SAAmB,WAAXA,gBAA8B;","names":["default"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ContentScriptAnchor, ContentScriptMarkerContract, ContentScriptMarkerValue } from "../../../../types/content.js";
|
|
2
|
-
export default abstract class implements ContentScriptMarkerContract {
|
|
1
|
+
import { ContentScriptAnchor, ContentScriptMarkerContract, ContentScriptMarkerValue } from "../../../../types/content/index.js";
|
|
2
|
+
export default abstract class AbstractMarker implements ContentScriptMarkerContract {
|
|
3
3
|
protected anchor: ContentScriptAnchor;
|
|
4
4
|
abstract mark(element: Element, value: ContentScriptMarkerValue): boolean;
|
|
5
5
|
abstract unmark(element: Element): boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ContentScriptMarkerValue } from "./../../../../types/content.js";
|
|
2
|
-
class
|
|
1
|
+
import { ContentScriptMarkerValue } from "./../../../../types/content/index.js";
|
|
2
|
+
class AbstractMarker {
|
|
3
3
|
constructor(anchor) {
|
|
4
4
|
this.anchor = anchor;
|
|
5
5
|
}
|
|
@@ -65,6 +65,6 @@ class AbstractMarker_default {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
export {
|
|
68
|
-
|
|
68
|
+
AbstractMarker as default
|
|
69
69
|
};
|
|
70
70
|
//# sourceMappingURL=AbstractMarker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/entry/content/lifecycle/markers/AbstractMarker.ts"],"sourcesContent":["import {ContentScriptAnchor, ContentScriptMarkerContract, ContentScriptMarkerValue} from \"@typing/content\";\n\nexport default abstract class AbstractMarker implements ContentScriptMarkerContract {\n public abstract mark(element: Element, value: ContentScriptMarkerValue): boolean;\n\n public abstract unmark(element: Element): boolean;\n\n public abstract isMarked(element: Element): boolean;\n\n public abstract value(element: Element): ContentScriptMarkerValue | undefined;\n\n protected constructor(protected anchor: ContentScriptAnchor) {}\n\n public for(anchor: ContentScriptAnchor): ContentScriptMarkerContract {\n this.anchor = anchor;\n\n return this;\n }\n\n public unmarked(): Element[] {\n return this.query(false);\n }\n\n public marked(): Element[] {\n return this.query(true);\n }\n\n public mount(element: Element): boolean {\n return this.mark(element, ContentScriptMarkerValue.Mounted);\n }\n\n public unmount(element: Element): boolean {\n return this.mark(element, ContentScriptMarkerValue.Unmounted);\n }\n\n public reset(): ContentScriptMarkerContract {\n for (const element of this.marked()) {\n this.unmark(element);\n }\n\n return this;\n }\n\n protected query(marked: boolean): Element[] {\n const anchor = this.anchor;\n\n if (anchor instanceof Element) {\n const isMarked = this.isMarked(anchor);\n\n if ((isMarked && marked) || (!isMarked && !marked)) {\n return [anchor];\n }\n } else if (typeof anchor === \"string\") {\n return this.queryAnchor(anchor, marked);\n }\n\n return [];\n }\n\n protected queryAnchor(anchor: string, marked: boolean = false): Element[] {\n try {\n if (anchor.startsWith(\"/\")) {\n return this.queryXpath(anchor, marked);\n }\n\n return this.querySelector(anchor, marked);\n } catch (e) {\n console.error(\"Invalid anchor format. Expected a valid string (CSS selector/XPath)\", e);\n\n return [];\n }\n }\n\n protected querySelector(selector: string, _marked: boolean = false): Element[] {\n return Array.from(document.querySelectorAll(selector));\n }\n\n protected queryXpath(xpath: string, _marked: boolean = false): Element[] {\n const elements: Element[] = [];\n\n const result = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\n\n for (let i = 0; i < result.snapshotLength; i++) {\n elements.push(result.snapshotItem(i) as Element);\n }\n\n return elements;\n }\n\n protected isValidValue(value: any): value is ContentScriptMarkerValue {\n return [ContentScriptMarkerValue.Unmounted, ContentScriptMarkerValue.Mounted].includes(value);\n }\n}\n"],"mappings":"AAAA,SAA0D,gCAA+B;AAEzF,MAAO,eAA6E;AAAA,EAStE,YAAsB,QAA6B;AAA7B;AAAA,EAA8B;AAAA,EAA9B;AAAA,EAEzB,IAAI,QAA0D;AACjE,SAAK,SAAS;AAEd,WAAO;AAAA,EACX;AAAA,EAEO,WAAsB;AACzB,WAAO,KAAK,MAAM,KAAK;AAAA,EAC3B;AAAA,EAEO,SAAoB;AACvB,WAAO,KAAK,MAAM,IAAI;AAAA,EAC1B;AAAA,EAEO,MAAM,SAA2B;AACpC,WAAO,KAAK,KAAK,SAAS,yBAAyB,OAAO;AAAA,EAC9D;AAAA,EAEO,QAAQ,SAA2B;AACtC,WAAO,KAAK,KAAK,SAAS,yBAAyB,SAAS;AAAA,EAChE;AAAA,EAEO,QAAqC;AACxC,eAAW,WAAW,KAAK,OAAO,GAAG;AACjC,WAAK,OAAO,OAAO;AAAA,IACvB;AAEA,WAAO;AAAA,EACX;AAAA,EAEU,MAAM,QAA4B;AACxC,UAAM,SAAS,KAAK;AAEpB,QAAI,kBAAkB,SAAS;AAC3B,YAAM,WAAW,KAAK,SAAS,MAAM;AAErC,UAAK,YAAY,UAAY,CAAC,YAAY,CAAC,QAAS;AAChD,eAAO,CAAC,MAAM;AAAA,MAClB;AAAA,IACJ,WAAW,OAAO,WAAW,UAAU;AACnC,aAAO,KAAK,YAAY,QAAQ,MAAM;AAAA,IAC1C;AAEA,WAAO,CAAC;AAAA,EACZ;AAAA,EAEU,YAAY,QAAgB,SAAkB,OAAkB;AACtE,QAAI;AACA,UAAI,OAAO,WAAW,GAAG,GAAG;AACxB,eAAO,KAAK,WAAW,QAAQ,MAAM;AAAA,MACzC;AAEA,aAAO,KAAK,cAAc,QAAQ,MAAM;AAAA,IAC5C,SAAS,GAAG;AACR,cAAQ,MAAM,uEAAuE,CAAC;AAEtF,aAAO,CAAC;AAAA,IACZ;AAAA,EACJ;AAAA,EAEU,cAAc,UAAkB,UAAmB,OAAkB;AAC3E,WAAO,MAAM,KAAK,SAAS,iBAAiB,QAAQ,CAAC;AAAA,EACzD;AAAA,EAEU,WAAW,OAAe,UAAmB,OAAkB;AACrE,UAAM,WAAsB,CAAC;AAE7B,UAAM,SAAS,SAAS,SAAS,OAAO,UAAU,MAAM,YAAY,4BAA4B,IAAI;AAEpG,aAAS,IAAI,GAAG,IAAI,OAAO,gBAAgB,KAAK;AAC5C,eAAS,KAAK,OAAO,aAAa,CAAC,CAAY;AAAA,IACnD;AAEA,WAAO;AAAA,EACX;AAAA,EAEU,aAAa,OAA+C;AAClE,WAAO,CAAC,yBAAyB,WAAW,yBAAyB,OAAO,EAAE,SAAS,KAAK;AAAA,EAChG;AACJ;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import AbstractMarker from "./AbstractMarker.js";
|
|
2
|
-
import { ContentScriptAnchor, ContentScriptMarkerValue } from "../../../../types/content.js";
|
|
3
|
-
export default class extends AbstractMarker {
|
|
2
|
+
import { ContentScriptAnchor, ContentScriptMarkerValue } from "../../../../types/content/index.js";
|
|
3
|
+
export default class AttributeMarker extends AbstractMarker {
|
|
4
4
|
protected readonly attr: string;
|
|
5
5
|
constructor(anchor?: ContentScriptAnchor, attr?: string);
|
|
6
6
|
isMarked(element: Element): boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { customAlphabet } from "nanoid";
|
|
2
2
|
import AbstractMarker from "./AbstractMarker.js";
|
|
3
|
-
class
|
|
3
|
+
class AttributeMarker extends AbstractMarker {
|
|
4
4
|
attr;
|
|
5
5
|
constructor(anchor, attr) {
|
|
6
6
|
super(anchor);
|
|
@@ -10,7 +10,9 @@ class AttributeMarker_default extends AbstractMarker {
|
|
|
10
10
|
return element.hasAttribute(this.attr);
|
|
11
11
|
}
|
|
12
12
|
mark(element, value) {
|
|
13
|
-
element.
|
|
13
|
+
if (element.getAttribute(this.attr) !== value) {
|
|
14
|
+
element.setAttribute(this.attr, value);
|
|
15
|
+
}
|
|
14
16
|
return true;
|
|
15
17
|
}
|
|
16
18
|
unmark(element) {
|
|
@@ -31,6 +33,6 @@ class AttributeMarker_default extends AbstractMarker {
|
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
35
|
export {
|
|
34
|
-
|
|
36
|
+
AttributeMarker as default
|
|
35
37
|
};
|
|
36
38
|
//# sourceMappingURL=AttributeMarker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/entry/content/lifecycle/markers/AttributeMarker.ts"],"sourcesContent":["import {customAlphabet} from \"nanoid\";\n\nimport AbstractMarker from \"./AbstractMarker\";\n\nimport {ContentScriptAnchor, ContentScriptMarkerValue} from \"@typing/content\";\n\nexport default class AttributeMarker extends AbstractMarker {\n protected readonly attr: string;\n\n constructor(anchor?: ContentScriptAnchor, attr?: string) {\n super(anchor);\n\n this.attr = attr ?? `data-${customAlphabet(\"abcdefghijklmnopqrstuvwxyz\", 7)()}`;\n }\n\n public isMarked(element: Element): boolean {\n return element.hasAttribute(this.attr);\n }\n\n public mark(element: Element, value: ContentScriptMarkerValue): boolean {\n if (element.getAttribute(this.attr) !== value) {\n element.setAttribute(this.attr, value);\n }\n\n return true;\n }\n\n public unmark(element: Element): boolean {\n element.removeAttribute(this.attr);\n\n return true;\n }\n\n public value(element: Element): ContentScriptMarkerValue | undefined {\n const value = element.getAttribute(this.attr);\n\n return this.isValidValue(value) ? value : undefined;\n }\n\n protected querySelector(selector: string, marked: boolean = false): Element[] {\n const filter = marked ? `[${this.attr}]` : `:not([${this.attr}])`;\n\n return super.querySelector(`:is(${selector})${filter}`, marked);\n }\n\n protected queryXpath(xpath: string, marked: boolean = false): Element[] {\n const filter = marked ? `[@${this.attr}]` : `[not(@${this.attr})]`;\n\n return super.queryXpath(`(${xpath.trim()})${filter}`, marked);\n }\n}\n"],"mappings":"AAAA,SAAQ,sBAAqB;AAE7B,OAAO,oBAAoB;AAI3B,MAAO,wBAAsC,eAAe;AAAA,EACrC;AAAA,EAEnB,YAAY,QAA8B,MAAe;AACrD,UAAM,MAAM;AAEZ,SAAK,OAAO,QAAQ,QAAQ,eAAe,8BAA8B,CAAC,EAAE,CAAC;AAAA,EACjF;AAAA,EAEO,SAAS,SAA2B;AACvC,WAAO,QAAQ,aAAa,KAAK,IAAI;AAAA,EACzC;AAAA,EAEO,KAAK,SAAkB,OAA0C;AACpE,QAAI,QAAQ,aAAa,KAAK,IAAI,MAAM,OAAO;AAC3C,cAAQ,aAAa,KAAK,MAAM,KAAK;AAAA,IACzC;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,OAAO,SAA2B;AACrC,YAAQ,gBAAgB,KAAK,IAAI;AAEjC,WAAO;AAAA,EACX;AAAA,EAEO,MAAM,SAAwD;AACjE,UAAM,QAAQ,QAAQ,aAAa,KAAK,IAAI;AAE5C,WAAO,KAAK,aAAa,KAAK,IAAI,QAAQ;AAAA,EAC9C;AAAA,EAEU,cAAc,UAAkB,SAAkB,OAAkB;AAC1E,UAAM,SAAS,SAAS,IAAI,KAAK,IAAI,MAAM,SAAS,KAAK,IAAI;AAE7D,WAAO,MAAM,cAAc,OAAO,QAAQ,IAAI,MAAM,IAAI,MAAM;AAAA,EAClE;AAAA,EAEU,WAAW,OAAe,SAAkB,OAAkB;AACpE,UAAM,SAAS,SAAS,KAAK,KAAK,IAAI,MAAM,SAAS,KAAK,IAAI;AAE9D,WAAO,MAAM,WAAW,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,IAAI,MAAM;AAAA,EAChE;AACJ;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import AbstractMarker from "./AbstractMarker.js";
|
|
2
|
-
import { ContentScriptAnchor, ContentScriptMarkerValue } from "../../../../types/content.js";
|
|
3
|
-
export default class extends AbstractMarker {
|
|
2
|
+
import { ContentScriptAnchor, ContentScriptMarkerValue } from "../../../../types/content/index.js";
|
|
3
|
+
export default class WeakMarker extends AbstractMarker {
|
|
4
4
|
private readonly map;
|
|
5
5
|
constructor(anchor?: ContentScriptAnchor);
|
|
6
6
|
mark(element: Element, value: ContentScriptMarkerValue): boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import AbstractMarker from "./AbstractMarker.js";
|
|
2
|
-
class
|
|
2
|
+
class WeakMarker extends AbstractMarker {
|
|
3
3
|
map = /* @__PURE__ */ new WeakMap();
|
|
4
4
|
constructor(anchor) {
|
|
5
5
|
super(anchor);
|
|
@@ -27,6 +27,6 @@ class WeakMarker_default extends AbstractMarker {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
export {
|
|
30
|
-
|
|
30
|
+
WeakMarker as default
|
|
31
31
|
};
|
|
32
32
|
//# sourceMappingURL=WeakMarker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/entry/content/lifecycle/markers/WeakMarker.ts"],"sourcesContent":["import AbstractMarker from \"./AbstractMarker\";\n\nimport {ContentScriptAnchor, ContentScriptMarkerValue} from \"@typing/content\";\n\nexport default class WeakMarker extends AbstractMarker {\n private readonly map: WeakMap<Element, ContentScriptMarkerValue> = new WeakMap();\n\n constructor(anchor?: ContentScriptAnchor) {\n super(anchor);\n }\n\n public mark(element: Element, value: ContentScriptMarkerValue): boolean {\n this.map.set(element, value);\n\n return true;\n }\n\n public unmark(element: Element): boolean {\n if (this.map.has(element)) {\n this.map.delete(element);\n\n return true;\n }\n\n return false;\n }\n\n public value(element: Element): ContentScriptMarkerValue | undefined {\n return this.map.get(element);\n }\n\n public isMarked(element: Element): boolean {\n return this.map.has(element);\n }\n\n protected queryAnchor(anchor: string, marked: boolean = false): Element[] {\n const elements = super.queryAnchor(anchor, marked);\n\n return elements.filter(element => this.isMarked(element) === marked);\n }\n}\n"],"mappings":"AAAA,OAAO,oBAAoB;AAI3B,MAAO,mBAAiC,eAAe;AAAA,EAClC,MAAkD,oBAAI,QAAQ;AAAA,EAE/E,YAAY,QAA8B;AACtC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEO,KAAK,SAAkB,OAA0C;AACpE,SAAK,IAAI,IAAI,SAAS,KAAK;AAE3B,WAAO;AAAA,EACX;AAAA,EAEO,OAAO,SAA2B;AACrC,QAAI,KAAK,IAAI,IAAI,OAAO,GAAG;AACvB,WAAK,IAAI,OAAO,OAAO;AAEvB,aAAO;AAAA,IACX;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,MAAM,SAAwD;AACjE,WAAO,KAAK,IAAI,IAAI,OAAO;AAAA,EAC/B;AAAA,EAEO,SAAS,SAA2B;AACvC,WAAO,KAAK,IAAI,IAAI,OAAO;AAAA,EAC/B;AAAA,EAEU,YAAY,QAAgB,SAAkB,OAAkB;AACtE,UAAM,WAAW,MAAM,YAAY,QAAQ,MAAM;AAEjD,WAAO,SAAS,OAAO,aAAW,KAAK,SAAS,OAAO,MAAM,MAAM;AAAA,EACvE;AACJ;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/entry/content/lifecycle/markers/index.ts"],"sourcesContent":["export {default as AbstractMarker} from \"./AbstractMarker\";\nexport {default as AttributeMarker} from \"./AttributeMarker\";\nexport {default as WeakMarker} from \"./WeakMarker\";\n"],"mappings":"AAAA,SAAmB,WAAXA,gBAAgC;AACxC,SAAmB,WAAXA,gBAAiC;AACzC,SAAmB,WAAXA,gBAA4B;","names":["default"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ContentScriptNode, ContentScriptBoundary, ContentScriptEventEmitter } from "../../../../types/content/index.js";
|
|
2
|
+
import type { ContentScriptMountNotifier } from "../types.js";
|
|
3
|
+
export default class EventNode implements ContentScriptNode {
|
|
4
|
+
protected readonly node: ContentScriptNode;
|
|
5
|
+
protected readonly emitter: ContentScriptEventEmitter;
|
|
6
|
+
private readonly notifier?;
|
|
7
|
+
private generation;
|
|
8
|
+
constructor(node: ContentScriptNode, emitter: ContentScriptEventEmitter, notifier?: ContentScriptMountNotifier | undefined);
|
|
9
|
+
get anchor(): Element;
|
|
10
|
+
get container(): Element | undefined;
|
|
11
|
+
get target(): Element | undefined;
|
|
12
|
+
get boundary(): ContentScriptBoundary;
|
|
13
|
+
mount(): boolean;
|
|
14
|
+
unmount(): boolean;
|
|
15
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
class EventNode {
|
|
2
|
+
constructor(node, emitter, notifier) {
|
|
3
|
+
this.node = node;
|
|
4
|
+
this.emitter = emitter;
|
|
5
|
+
this.notifier = notifier;
|
|
6
|
+
notifier == null ? void 0 : notifier.setMountHandler(() => {
|
|
7
|
+
this.emitter.emitMount(this.node);
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
node;
|
|
11
|
+
emitter;
|
|
12
|
+
notifier;
|
|
13
|
+
generation = 0;
|
|
14
|
+
get anchor() {
|
|
15
|
+
return this.node.anchor;
|
|
16
|
+
}
|
|
17
|
+
get container() {
|
|
18
|
+
return this.node.container;
|
|
19
|
+
}
|
|
20
|
+
get target() {
|
|
21
|
+
return this.node.target;
|
|
22
|
+
}
|
|
23
|
+
get boundary() {
|
|
24
|
+
return this.node.boundary;
|
|
25
|
+
}
|
|
26
|
+
mount() {
|
|
27
|
+
const generation = this.generation;
|
|
28
|
+
const result = this.node.mount();
|
|
29
|
+
if (generation !== this.generation) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
if (result === true && !this.notifier) {
|
|
33
|
+
this.emitter.emitMount(this.node);
|
|
34
|
+
}
|
|
35
|
+
return !!result;
|
|
36
|
+
}
|
|
37
|
+
unmount() {
|
|
38
|
+
this.generation++;
|
|
39
|
+
const result = this.node.unmount();
|
|
40
|
+
if (result === true) {
|
|
41
|
+
this.emitter.emitUnmount(this.node);
|
|
42
|
+
}
|
|
43
|
+
return !!result;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
EventNode as default
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=EventNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/entry/content/lifecycle/nodes/EventNode.ts"],"sourcesContent":["import {ContentScriptNode, ContentScriptBoundary, ContentScriptEventEmitter} from \"@typing/content\";\nimport type {ContentScriptMountNotifier} from \"../types\";\n\nexport default class EventNode implements ContentScriptNode {\n private generation = 0;\n\n constructor(\n protected readonly node: ContentScriptNode,\n protected readonly emitter: ContentScriptEventEmitter,\n private readonly notifier?: ContentScriptMountNotifier\n ) {\n notifier?.setMountHandler(() => {\n this.emitter.emitMount(this.node);\n });\n }\n\n public get anchor(): Element {\n return this.node.anchor;\n }\n\n public get container(): Element | undefined {\n return this.node.container;\n }\n\n public get target(): Element | undefined {\n return this.node.target;\n }\n\n public get boundary(): ContentScriptBoundary {\n return this.node.boundary;\n }\n\n public mount(): boolean {\n const generation = this.generation;\n const result = this.node.mount();\n\n if (generation !== this.generation) {\n return false;\n }\n\n if (result === true && !this.notifier) {\n this.emitter.emitMount(this.node);\n }\n\n return !!result;\n }\n\n public unmount(): boolean {\n this.generation++;\n\n const result = this.node.unmount();\n\n if (result === true) {\n this.emitter.emitUnmount(this.node);\n }\n\n return !!result;\n }\n}\n"],"mappings":"AAGA,MAAO,UAAqD;AAAA,EAGxD,YACuB,MACA,SACF,UACnB;AAHqB;AACA;AACF;AAEjB,yCAAU,gBAAgB,MAAM;AAC5B,WAAK,QAAQ,UAAU,KAAK,IAAI;AAAA,IACpC;AAAA,EACJ;AAAA,EAPuB;AAAA,EACA;AAAA,EACF;AAAA,EALb,aAAa;AAAA,EAYrB,IAAW,SAAkB;AACzB,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EAEA,IAAW,YAAiC;AACxC,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EAEA,IAAW,SAA8B;AACrC,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EAEA,IAAW,WAAkC;AACzC,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EAEO,QAAiB;AACpB,UAAM,aAAa,KAAK;AACxB,UAAM,SAAS,KAAK,KAAK,MAAM;AAE/B,QAAI,eAAe,KAAK,YAAY;AAChC,aAAO;AAAA,IACX;AAEA,QAAI,WAAW,QAAQ,CAAC,KAAK,UAAU;AACnC,WAAK,QAAQ,UAAU,KAAK,IAAI;AAAA,IACpC;AAEA,WAAO,CAAC,CAAC;AAAA,EACb;AAAA,EAEO,UAAmB;AACtB,SAAK;AAEL,UAAM,SAAS,KAAK,KAAK,QAAQ;AAEjC,QAAI,WAAW,MAAM;AACjB,WAAK,QAAQ,YAAY,KAAK,IAAI;AAAA,IACtC;AAEA,WAAO,CAAC,CAAC;AAAA,EACb;AACJ;","names":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ContentScriptNode, ContentScriptIsolationFrameOptions } from "../../../../types/content/index.js";
|
|
2
|
+
import type IsolationSetup from "../IsolationSetup.js";
|
|
3
|
+
/** Owns the child document but never moves the content script's JavaScript into it. */
|
|
4
|
+
export default class FrameNode<Data = unknown> implements ContentScriptNode {
|
|
5
|
+
private readonly node;
|
|
6
|
+
private readonly options;
|
|
7
|
+
private readonly recover;
|
|
8
|
+
private readonly isolation;
|
|
9
|
+
private frame?;
|
|
10
|
+
private head?;
|
|
11
|
+
private _target?;
|
|
12
|
+
private runtime?;
|
|
13
|
+
private generation;
|
|
14
|
+
private queued;
|
|
15
|
+
private cleanupBoundary?;
|
|
16
|
+
private mounting;
|
|
17
|
+
private unmounting;
|
|
18
|
+
constructor(node: ContentScriptNode, options: ContentScriptIsolationFrameOptions | undefined, recover: () => void, isolation: IsolationSetup<Data, "iframe">);
|
|
19
|
+
get anchor(): Element;
|
|
20
|
+
get container(): Element | undefined;
|
|
21
|
+
get target(): Element | undefined;
|
|
22
|
+
get boundary(): HTMLIFrameElement | undefined;
|
|
23
|
+
ready(): Promise<void>;
|
|
24
|
+
private readonly onLoad;
|
|
25
|
+
private intact;
|
|
26
|
+
mount(): boolean;
|
|
27
|
+
private mountNode;
|
|
28
|
+
unmount(): boolean;
|
|
29
|
+
private releaseStyles;
|
|
30
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { getPageUrl } from "./../../../../main/page.js";
|
|
2
|
+
import { ContentScriptIsolation } from "./../../../../types/content/index.js";
|
|
3
|
+
import { getContentScriptStylesRuntime } from "./isolated-styles.js";
|
|
4
|
+
import { isContentScriptFrameNavigation } from "./../../../../shared/content/index.js";
|
|
5
|
+
class FrameNode {
|
|
6
|
+
constructor(node, options = { type: ContentScriptIsolation.Iframe }, recover, isolation) {
|
|
7
|
+
this.node = node;
|
|
8
|
+
this.options = options;
|
|
9
|
+
this.recover = recover;
|
|
10
|
+
this.isolation = isolation;
|
|
11
|
+
}
|
|
12
|
+
node;
|
|
13
|
+
options;
|
|
14
|
+
recover;
|
|
15
|
+
isolation;
|
|
16
|
+
frame;
|
|
17
|
+
head;
|
|
18
|
+
_target;
|
|
19
|
+
runtime;
|
|
20
|
+
generation = 0;
|
|
21
|
+
queued = false;
|
|
22
|
+
cleanupBoundary;
|
|
23
|
+
mounting = false;
|
|
24
|
+
unmounting = false;
|
|
25
|
+
get anchor() {
|
|
26
|
+
return this.node.anchor;
|
|
27
|
+
}
|
|
28
|
+
get container() {
|
|
29
|
+
return this.node.container;
|
|
30
|
+
}
|
|
31
|
+
get target() {
|
|
32
|
+
return this._target;
|
|
33
|
+
}
|
|
34
|
+
get boundary() {
|
|
35
|
+
return this.frame;
|
|
36
|
+
}
|
|
37
|
+
ready() {
|
|
38
|
+
return this.head && this.runtime ? this.runtime.ready(this.head) : Promise.resolve();
|
|
39
|
+
}
|
|
40
|
+
onLoad = () => {
|
|
41
|
+
if (!this.frame || this.queued || this.intact()) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const generation = this.generation;
|
|
45
|
+
this.queued = true;
|
|
46
|
+
queueMicrotask(() => {
|
|
47
|
+
var _a;
|
|
48
|
+
if (generation !== this.generation) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.queued = false;
|
|
52
|
+
if (((_a = this.container) == null ? void 0 : _a.isConnected) && this.anchor.isConnected) {
|
|
53
|
+
try {
|
|
54
|
+
this.recover();
|
|
55
|
+
} catch (error) {
|
|
56
|
+
console.error("Restoring content iframe failed", error);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
intact() {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
const doc = (_a = this.frame) == null ? void 0 : _a.contentDocument;
|
|
64
|
+
return !!doc && ((_b = this._target) == null ? void 0 : _b.ownerDocument) === doc && this._target.isConnected && this.head === doc.head;
|
|
65
|
+
}
|
|
66
|
+
mount() {
|
|
67
|
+
if (this.mounting || this.unmounting) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
this.mounting = true;
|
|
71
|
+
try {
|
|
72
|
+
return this.mountNode();
|
|
73
|
+
} finally {
|
|
74
|
+
this.mounting = false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
mountNode() {
|
|
78
|
+
const mounted = !!this.node.mount();
|
|
79
|
+
if (!this.container) {
|
|
80
|
+
return mounted;
|
|
81
|
+
}
|
|
82
|
+
if (!isContentScriptFrameNavigation(this.options) && !this.container.isConnected) {
|
|
83
|
+
throw new Error(
|
|
84
|
+
"Content iframe container is not connected to the document; mount must attach the container before returning"
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
let created = false;
|
|
88
|
+
if (!this.frame) {
|
|
89
|
+
const frame2 = this.container.ownerDocument.createElement("iframe");
|
|
90
|
+
this.frame = frame2;
|
|
91
|
+
const generation2 = this.generation;
|
|
92
|
+
try {
|
|
93
|
+
const cleanup = this.isolation.setup(frame2);
|
|
94
|
+
if (generation2 !== this.generation || this.frame !== frame2) {
|
|
95
|
+
cleanup == null ? void 0 : cleanup();
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
this.cleanupBoundary = cleanup || void 0;
|
|
99
|
+
if (isContentScriptFrameNavigation(this.options)) {
|
|
100
|
+
frame2.src = this.options.page !== void 0 ? getPageUrl(this.options.page) : this.options.src;
|
|
101
|
+
} else {
|
|
102
|
+
frame2.addEventListener("load", this.onLoad);
|
|
103
|
+
}
|
|
104
|
+
this.container.append(frame2);
|
|
105
|
+
if (generation2 !== this.generation || this.frame !== frame2) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
created = true;
|
|
109
|
+
} catch (error) {
|
|
110
|
+
if (generation2 === this.generation && this.frame === frame2) {
|
|
111
|
+
this.unmount();
|
|
112
|
+
}
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (isContentScriptFrameNavigation(this.options) || this.intact()) {
|
|
117
|
+
return mounted || created;
|
|
118
|
+
}
|
|
119
|
+
const doc = this.frame.contentDocument;
|
|
120
|
+
if (!(doc == null ? void 0 : doc.head) || !doc.body) {
|
|
121
|
+
throw new Error(
|
|
122
|
+
"Content iframe has no accessible document; only an empty same-origin iframe can render UI"
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
const recovering = this.head !== void 0;
|
|
126
|
+
this.releaseStyles();
|
|
127
|
+
const frame = this.frame;
|
|
128
|
+
const generation = this.generation;
|
|
129
|
+
try {
|
|
130
|
+
const target = this.isolation.createTarget(frame, doc);
|
|
131
|
+
if (generation !== this.generation || this.frame !== frame || frame.contentDocument !== doc) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
doc.body.append(target);
|
|
135
|
+
this._target = target;
|
|
136
|
+
this.head = doc.head;
|
|
137
|
+
this.runtime = getContentScriptStylesRuntime();
|
|
138
|
+
this.runtime.add(doc.head, null, recovering);
|
|
139
|
+
} catch (error) {
|
|
140
|
+
if (generation === this.generation && this.frame === frame) {
|
|
141
|
+
this.unmount();
|
|
142
|
+
}
|
|
143
|
+
throw error;
|
|
144
|
+
}
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
unmount() {
|
|
148
|
+
var _a;
|
|
149
|
+
if (this.unmounting) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
this.unmounting = true;
|
|
153
|
+
this.generation++;
|
|
154
|
+
this.queued = false;
|
|
155
|
+
this._target = void 0;
|
|
156
|
+
const cleanup = this.cleanupBoundary;
|
|
157
|
+
this.cleanupBoundary = void 0;
|
|
158
|
+
let removed = false;
|
|
159
|
+
try {
|
|
160
|
+
try {
|
|
161
|
+
cleanup == null ? void 0 : cleanup();
|
|
162
|
+
} finally {
|
|
163
|
+
try {
|
|
164
|
+
(_a = this.frame) == null ? void 0 : _a.removeEventListener("load", this.onLoad);
|
|
165
|
+
this.releaseStyles();
|
|
166
|
+
} finally {
|
|
167
|
+
this.frame = void 0;
|
|
168
|
+
removed = !!this.node.unmount();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return removed;
|
|
172
|
+
} finally {
|
|
173
|
+
this.unmounting = false;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
releaseStyles() {
|
|
177
|
+
const head = this.head;
|
|
178
|
+
const runtime = this.runtime;
|
|
179
|
+
this.head = void 0;
|
|
180
|
+
this.runtime = void 0;
|
|
181
|
+
this._target = void 0;
|
|
182
|
+
if (head) {
|
|
183
|
+
runtime == null ? void 0 : runtime.delete(head);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
export {
|
|
188
|
+
FrameNode as default
|
|
189
|
+
};
|
|
190
|
+
//# sourceMappingURL=FrameNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/entry/content/lifecycle/nodes/FrameNode.ts"],"sourcesContent":["import {getPageUrl} from \"@main/page\";\n\nimport type {\n ContentScriptNode,\n ContentScriptBoundaryCleanup,\n ContentScriptIsolationFrameOptions,\n ContentScriptStylesRuntime,\n} from \"@typing/content\";\nimport {ContentScriptIsolation} from \"@typing/content\";\n\nimport type IsolationSetup from \"../IsolationSetup\";\n\nimport {getContentScriptStylesRuntime} from \"./isolated-styles\";\n\nimport {isContentScriptFrameNavigation} from \"@shared/content\";\n\n/** Owns the child document but never moves the content script's JavaScript into it. */\nexport default class FrameNode<Data = unknown> implements ContentScriptNode {\n private frame?: HTMLIFrameElement;\n private head?: HTMLHeadElement;\n private _target?: Element;\n\n private runtime?: ContentScriptStylesRuntime;\n\n private generation = 0;\n private queued = false;\n\n private cleanupBoundary?: ContentScriptBoundaryCleanup;\n\n private mounting = false;\n private unmounting = false;\n\n public constructor(\n private readonly node: ContentScriptNode,\n private readonly options: ContentScriptIsolationFrameOptions = {type: ContentScriptIsolation.Iframe},\n private readonly recover: () => void,\n private readonly isolation: IsolationSetup<Data, \"iframe\">\n ) {}\n\n public get anchor(): Element {\n return this.node.anchor;\n }\n\n public get container(): Element | undefined {\n return this.node.container;\n }\n\n public get target(): Element | undefined {\n return this._target;\n }\n\n public get boundary(): HTMLIFrameElement | undefined {\n return this.frame;\n }\n\n public ready(): Promise<void> {\n return this.head && this.runtime ? this.runtime.ready(this.head) : Promise.resolve();\n }\n\n private readonly onLoad = (): void => {\n if (!this.frame || this.queued || this.intact()) {\n return;\n }\n\n const generation = this.generation;\n\n this.queued = true;\n\n queueMicrotask(() => {\n if (generation !== this.generation) {\n return;\n }\n\n this.queued = false;\n\n if (this.container?.isConnected && this.anchor.isConnected) {\n try {\n this.recover();\n } catch (error) {\n console.error(\"Restoring content iframe failed\", error);\n }\n }\n });\n };\n\n private intact(): boolean {\n const doc = this.frame?.contentDocument;\n\n return !!doc && this._target?.ownerDocument === doc && this._target.isConnected && this.head === doc.head;\n }\n\n public mount(): boolean {\n if (this.mounting || this.unmounting) {\n return false;\n }\n\n this.mounting = true;\n\n try {\n return this.mountNode();\n } finally {\n this.mounting = false;\n }\n }\n\n private mountNode(): boolean {\n const mounted = !!this.node.mount();\n\n if (!this.container) {\n return mounted;\n }\n\n if (!isContentScriptFrameNavigation(this.options) && !this.container.isConnected) {\n throw new Error(\n \"Content iframe container is not connected to the document; mount must attach the container before returning\"\n );\n }\n\n let created = false;\n\n if (!this.frame) {\n const frame = this.container.ownerDocument.createElement(\"iframe\");\n\n this.frame = frame;\n const generation = this.generation;\n\n try {\n const cleanup = this.isolation.setup(frame);\n\n if (generation !== this.generation || this.frame !== frame) {\n cleanup?.();\n\n return false;\n }\n\n this.cleanupBoundary = cleanup || undefined;\n\n if (isContentScriptFrameNavigation(this.options)) {\n frame.src = this.options.page !== undefined ? getPageUrl(this.options.page) : this.options.src!;\n } else {\n frame.addEventListener(\"load\", this.onLoad);\n }\n\n this.container.append(frame);\n\n if (generation !== this.generation || this.frame !== frame) {\n return false;\n }\n\n created = true;\n } catch (error) {\n if (generation === this.generation && this.frame === frame) {\n this.unmount();\n }\n\n throw error;\n }\n }\n\n if (isContentScriptFrameNavigation(this.options) || this.intact()) {\n return mounted || created;\n }\n\n const doc = this.frame.contentDocument;\n\n if (!doc?.head || !doc.body) {\n throw new Error(\n \"Content iframe has no accessible document; only an empty same-origin iframe can render UI\"\n );\n }\n\n const recovering = this.head !== undefined;\n\n this.releaseStyles();\n\n const frame = this.frame;\n const generation = this.generation;\n\n try {\n const target = this.isolation.createTarget(frame, doc);\n\n if (generation !== this.generation || this.frame !== frame || frame.contentDocument !== doc) {\n return false;\n }\n\n doc.body.append(target);\n\n this._target = target;\n this.head = doc.head;\n this.runtime = getContentScriptStylesRuntime();\n this.runtime.add(doc.head, null, recovering);\n } catch (error) {\n if (generation === this.generation && this.frame === frame) {\n this.unmount();\n }\n\n throw error;\n }\n\n return true;\n }\n\n public unmount(): boolean {\n if (this.unmounting) {\n return false;\n }\n\n this.unmounting = true;\n this.generation++;\n this.queued = false;\n this._target = undefined;\n\n const cleanup = this.cleanupBoundary;\n\n this.cleanupBoundary = undefined;\n\n let removed = false;\n\n try {\n try {\n cleanup?.();\n } finally {\n try {\n this.frame?.removeEventListener(\"load\", this.onLoad);\n this.releaseStyles();\n } finally {\n this.frame = undefined;\n removed = !!this.node.unmount();\n }\n }\n\n return removed;\n } finally {\n this.unmounting = false;\n }\n }\n\n private releaseStyles(): void {\n const head = this.head;\n const runtime = this.runtime;\n\n this.head = undefined;\n this.runtime = undefined;\n this._target = undefined;\n\n if (head) {\n runtime?.delete(head);\n }\n }\n}\n"],"mappings":"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","names":["frame","generation"]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export default class implements ContentScriptNode {
|
|
1
|
+
import { ContentScriptNode, ContentScriptBoundary, ContentScriptMarkerContract } from "../../../../types/content/index.js";
|
|
2
|
+
export default class MarkerNode implements ContentScriptNode {
|
|
3
3
|
protected readonly node: ContentScriptNode;
|
|
4
4
|
protected readonly marker: ContentScriptMarkerContract;
|
|
5
5
|
constructor(node: ContentScriptNode, marker: ContentScriptMarkerContract);
|
|
6
6
|
get anchor(): Element;
|
|
7
7
|
get container(): Element | undefined;
|
|
8
8
|
get target(): Element | undefined;
|
|
9
|
+
get boundary(): ContentScriptBoundary;
|
|
9
10
|
mount(): boolean | undefined | void;
|
|
10
11
|
unmount(): boolean | undefined | void;
|
|
11
12
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class
|
|
1
|
+
class MarkerNode {
|
|
2
2
|
constructor(node, marker) {
|
|
3
3
|
this.node = node;
|
|
4
4
|
this.marker = marker;
|
|
@@ -14,6 +14,9 @@ class MarkerNode_default {
|
|
|
14
14
|
get target() {
|
|
15
15
|
return this.node.target;
|
|
16
16
|
}
|
|
17
|
+
get boundary() {
|
|
18
|
+
return this.node.boundary;
|
|
19
|
+
}
|
|
17
20
|
mount() {
|
|
18
21
|
this.marker.mount(this.anchor);
|
|
19
22
|
return this.node.mount();
|
|
@@ -24,6 +27,6 @@ class MarkerNode_default {
|
|
|
24
27
|
}
|
|
25
28
|
}
|
|
26
29
|
export {
|
|
27
|
-
|
|
30
|
+
MarkerNode as default
|
|
28
31
|
};
|
|
29
32
|
//# sourceMappingURL=MarkerNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/entry/content/lifecycle/nodes/MarkerNode.ts"],"sourcesContent":["import {ContentScriptNode, ContentScriptBoundary, ContentScriptMarkerContract} from \"@typing/content\";\n\nexport default class MarkerNode implements ContentScriptNode {\n constructor(\n protected readonly node: ContentScriptNode,\n protected readonly marker: ContentScriptMarkerContract\n ) {}\n\n public get anchor(): Element {\n return this.node.anchor;\n }\n\n public get container(): Element | undefined {\n return this.node.container;\n }\n\n public get target(): Element | undefined {\n return this.node.target;\n }\n\n public get boundary(): ContentScriptBoundary {\n return this.node.boundary;\n }\n\n public mount(): boolean | undefined | void {\n this.marker.mount(this.anchor);\n\n return this.node.mount();\n }\n\n public unmount(): boolean | undefined | void {\n this.marker.unmount(this.anchor);\n\n return this.node.unmount();\n }\n}\n"],"mappings":"AAEA,MAAO,WAAsD;AAAA,EACzD,YACuB,MACA,QACrB;AAFqB;AACA;AAAA,EACpB;AAAA,EAFoB;AAAA,EACA;AAAA,EAGvB,IAAW,SAAkB;AACzB,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EAEA,IAAW,YAAiC;AACxC,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EAEA,IAAW,SAA8B;AACrC,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EAEA,IAAW,WAAkC;AACzC,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EAEO,QAAoC;AACvC,SAAK,OAAO,MAAM,KAAK,MAAM;AAE7B,WAAO,KAAK,KAAK,MAAM;AAAA,EAC3B;AAAA,EAEO,UAAsC;AACzC,SAAK,OAAO,QAAQ,KAAK,MAAM;AAE/B,WAAO,KAAK,KAAK,QAAQ;AAAA,EAC7B;AACJ;","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ContentScriptNode, ContentScriptBoundary, ContentScriptMountFunction } from "../../../../types/content/index.js";
|
|
2
|
+
import type ContainerRegistry from "../context/ContainerRegistry.js";
|
|
3
|
+
export default class MountNode implements ContentScriptNode {
|
|
4
|
+
protected node: ContentScriptNode;
|
|
5
|
+
private readonly registry;
|
|
6
|
+
protected mounter?: ContentScriptMountFunction | undefined;
|
|
7
|
+
private unregister?;
|
|
8
|
+
private cleanup?;
|
|
9
|
+
private unmounting;
|
|
10
|
+
constructor(node: ContentScriptNode, registry: ContainerRegistry, mounter?: ContentScriptMountFunction | undefined);
|
|
11
|
+
get anchor(): Element;
|
|
12
|
+
get container(): Element | undefined;
|
|
13
|
+
get target(): Element | undefined;
|
|
14
|
+
get boundary(): ContentScriptBoundary;
|
|
15
|
+
mount(): boolean;
|
|
16
|
+
unmount(): boolean;
|
|
17
|
+
}
|