@nativescript/vite 8.0.0-alpha.6 → 8.0.0-alpha.60
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 +51 -11
- package/bin/cli.cjs +8 -14
- package/configuration/angular.d.ts +34 -1
- package/configuration/angular.js +376 -165
- package/configuration/angular.js.map +1 -1
- package/configuration/base.js +244 -53
- package/configuration/base.js.map +1 -1
- package/configuration/javascript.js +14 -93
- package/configuration/javascript.js.map +1 -1
- package/configuration/react.js +41 -73
- package/configuration/react.js.map +1 -1
- package/configuration/solid.js +51 -6
- package/configuration/solid.js.map +1 -1
- package/configuration/typescript.js +12 -93
- package/configuration/typescript.js.map +1 -1
- package/helpers/app-components.d.ts +2 -1
- package/helpers/app-components.js.map +1 -1
- package/helpers/app-css-state.d.ts +8 -0
- package/helpers/app-css-state.js +8 -0
- package/helpers/app-css-state.js.map +1 -0
- package/helpers/bundler-context.d.ts +11 -0
- package/helpers/bundler-context.js +71 -0
- package/helpers/bundler-context.js.map +1 -0
- package/helpers/cli-flags.d.ts +12 -0
- package/helpers/cli-flags.js +34 -0
- package/helpers/cli-flags.js.map +1 -1
- package/helpers/css-platform-plugin.d.ts +14 -0
- package/helpers/css-platform-plugin.js +43 -25
- package/helpers/css-platform-plugin.js.map +1 -1
- package/helpers/dev-host.d.ts +360 -0
- package/helpers/dev-host.js +694 -0
- package/helpers/dev-host.js.map +1 -0
- package/helpers/dynamic-import-plugin.js +4 -2
- package/helpers/dynamic-import-plugin.js.map +1 -1
- package/helpers/esbuild-platform-resolver.js +4 -1
- package/helpers/esbuild-platform-resolver.js.map +1 -1
- package/helpers/external-configs.d.ts +10 -12
- package/helpers/external-configs.js +58 -35
- package/helpers/external-configs.js.map +1 -1
- package/helpers/global-defines.d.ts +100 -13
- package/helpers/global-defines.js +149 -28
- package/helpers/global-defines.js.map +1 -1
- package/helpers/hmr-scope.d.ts +26 -0
- package/helpers/hmr-scope.js +67 -0
- package/helpers/hmr-scope.js.map +1 -0
- package/helpers/init.js +0 -18
- package/helpers/init.js.map +1 -1
- package/helpers/logging.js +29 -1
- package/helpers/logging.js.map +1 -1
- package/helpers/main-entry.d.ts +4 -1
- package/helpers/main-entry.js +368 -53
- package/helpers/main-entry.js.map +1 -1
- package/helpers/nativeclass-esbuild-plugin.d.ts +2 -1
- package/helpers/nativeclass-esbuild-plugin.js.map +1 -1
- package/helpers/nativeclass-transform.js +5 -6
- package/helpers/nativeclass-transform.js.map +1 -1
- package/helpers/nativeclass-transformer-plugin.d.ts +9 -2
- package/helpers/nativeclass-transformer-plugin.js +157 -14
- package/helpers/nativeclass-transformer-plugin.js.map +1 -1
- package/helpers/nativescript-package-resolver.js +10 -62
- package/helpers/nativescript-package-resolver.js.map +1 -1
- package/helpers/normalize-id.d.ts +42 -0
- package/helpers/normalize-id.js +60 -0
- package/helpers/normalize-id.js.map +1 -0
- package/helpers/ns-core-url.d.ts +29 -7
- package/helpers/ns-core-url.js +69 -12
- package/helpers/ns-core-url.js.map +1 -1
- package/helpers/optimize-deps.d.ts +16 -0
- package/helpers/optimize-deps.js +17 -0
- package/helpers/optimize-deps.js.map +1 -0
- package/helpers/package-platform-aliases.js +34 -49
- package/helpers/package-platform-aliases.js.map +1 -1
- package/helpers/platform-types.d.ts +2 -0
- package/helpers/platform-types.js +2 -0
- package/helpers/platform-types.js.map +1 -0
- package/helpers/postcss-platform-config.d.ts +17 -1
- package/helpers/postcss-platform-config.js +20 -37
- package/helpers/postcss-platform-config.js.map +1 -1
- package/helpers/project.d.ts +35 -0
- package/helpers/project.js +120 -2
- package/helpers/project.js.map +1 -1
- package/helpers/resolve-main-field-platform.d.ts +20 -0
- package/helpers/resolve-main-field-platform.js +49 -0
- package/helpers/resolve-main-field-platform.js.map +1 -0
- package/helpers/resolver.js +17 -2
- package/helpers/resolver.js.map +1 -1
- package/helpers/theme-core-plugins.js +1 -1
- package/helpers/theme-core-plugins.js.map +1 -1
- package/helpers/ts-config-paths.d.ts +32 -0
- package/helpers/ts-config-paths.js +156 -27
- package/helpers/ts-config-paths.js.map +1 -1
- package/helpers/typescript-check.d.ts +2 -1
- package/helpers/typescript-check.js +2 -2
- package/helpers/typescript-check.js.map +1 -1
- package/helpers/ui-registration.d.ts +21 -0
- package/helpers/ui-registration.js +156 -0
- package/helpers/ui-registration.js.map +1 -0
- package/helpers/utils.d.ts +9 -0
- package/helpers/utils.js +22 -2
- package/helpers/utils.js.map +1 -1
- package/helpers/vite-package-version.d.ts +7 -0
- package/helpers/vite-package-version.js +44 -0
- package/helpers/vite-package-version.js.map +1 -0
- package/helpers/workers.d.ts +20 -19
- package/helpers/workers.js +624 -4
- package/helpers/workers.js.map +1 -1
- package/hmr/client/css-handler.d.ts +2 -1
- package/hmr/client/css-handler.js +50 -26
- package/hmr/client/css-handler.js.map +1 -1
- package/hmr/client/css-update-overlay.d.ts +18 -0
- package/hmr/client/css-update-overlay.js +27 -0
- package/hmr/client/css-update-overlay.js.map +1 -0
- package/hmr/client/framework-client-strategy.d.ts +79 -0
- package/hmr/client/framework-client-strategy.js +19 -0
- package/hmr/client/framework-client-strategy.js.map +1 -0
- package/hmr/client/hmr-pending-overlay.d.ts +0 -14
- package/hmr/client/hmr-pending-overlay.js +14 -4
- package/hmr/client/hmr-pending-overlay.js.map +1 -1
- package/hmr/client/hot-context.d.ts +67 -0
- package/hmr/client/hot-context.js +284 -0
- package/hmr/client/hot-context.js.map +1 -0
- package/hmr/client/index.js +922 -273
- package/hmr/client/index.js.map +1 -1
- package/hmr/client/utils.d.ts +2 -1
- package/hmr/client/utils.js +111 -99
- package/hmr/client/utils.js.map +1 -1
- package/hmr/entry-runtime.d.ts +2 -1
- package/hmr/entry-runtime.js +271 -69
- package/hmr/entry-runtime.js.map +1 -1
- package/hmr/frameworks/angular/build/angular-linker.d.ts +12 -0
- package/hmr/frameworks/angular/build/angular-linker.js +109 -0
- package/hmr/frameworks/angular/build/angular-linker.js.map +1 -0
- package/hmr/frameworks/angular/build/inject-component-hmr-registration.d.ts +112 -0
- package/hmr/frameworks/angular/build/inject-component-hmr-registration.js +291 -0
- package/hmr/frameworks/angular/build/inject-component-hmr-registration.js.map +1 -0
- package/hmr/frameworks/angular/build/inject-hmr-vite-ignore.d.ts +75 -0
- package/hmr/frameworks/angular/build/inject-hmr-vite-ignore.js +221 -0
- package/hmr/frameworks/angular/build/inject-hmr-vite-ignore.js.map +1 -0
- package/{helpers/angular → hmr/frameworks/angular/build}/inline-decorator-component-templates.js +1 -170
- package/hmr/frameworks/angular/build/inline-decorator-component-templates.js.map +1 -0
- package/hmr/frameworks/angular/build/js-lexer.d.ts +4 -0
- package/{helpers/angular/synthesize-decorator-ctor-parameters.js → hmr/frameworks/angular/build/js-lexer.js} +22 -96
- package/hmr/frameworks/angular/build/js-lexer.js.map +1 -0
- package/hmr/frameworks/angular/build/shared-linker.d.ts +39 -0
- package/hmr/frameworks/angular/build/shared-linker.js +128 -0
- package/hmr/frameworks/angular/build/shared-linker.js.map +1 -0
- package/hmr/frameworks/angular/build/synthesize-decorator-ctor-parameters.js +88 -0
- package/hmr/frameworks/angular/build/synthesize-decorator-ctor-parameters.js.map +1 -0
- package/{helpers/angular → hmr/frameworks/angular/build}/synthesize-injectable-factories.js +1 -174
- package/hmr/frameworks/angular/build/synthesize-injectable-factories.js.map +1 -0
- package/{helpers/angular → hmr/frameworks/angular/build}/util.d.ts +1 -0
- package/hmr/frameworks/angular/build/util.js +155 -0
- package/hmr/frameworks/angular/build/util.js.map +1 -0
- package/hmr/frameworks/angular/client/index.js +542 -175
- package/hmr/frameworks/angular/client/index.js.map +1 -1
- package/hmr/frameworks/angular/client/strategy.d.ts +9 -0
- package/hmr/frameworks/angular/client/strategy.js +19 -0
- package/hmr/frameworks/angular/client/strategy.js.map +1 -0
- package/hmr/frameworks/angular/server/angular-root-component.d.ts +79 -0
- package/hmr/frameworks/angular/server/angular-root-component.js +149 -0
- package/hmr/frameworks/angular/server/angular-root-component.js.map +1 -0
- package/hmr/frameworks/angular/server/linker.js +1 -4
- package/hmr/frameworks/angular/server/linker.js.map +1 -1
- package/hmr/frameworks/angular/server/strategy.js +458 -12
- package/hmr/frameworks/angular/server/strategy.js.map +1 -1
- package/hmr/{server → frameworks/angular/server}/websocket-angular-entry.js +2 -2
- package/hmr/frameworks/angular/server/websocket-angular-entry.js.map +1 -0
- package/hmr/{server → frameworks/angular/server}/websocket-angular-hot-update.d.ts +14 -11
- package/hmr/{server → frameworks/angular/server}/websocket-angular-hot-update.js +108 -111
- package/hmr/frameworks/angular/server/websocket-angular-hot-update.js.map +1 -0
- package/hmr/frameworks/react/server/strategy.d.ts +2 -0
- package/hmr/frameworks/react/server/strategy.js +230 -0
- package/hmr/frameworks/react/server/strategy.js.map +1 -0
- package/hmr/frameworks/solid/build/solid-jsx-deps.d.ts +15 -0
- package/hmr/frameworks/solid/build/solid-jsx-deps.js +178 -0
- package/hmr/frameworks/solid/build/solid-jsx-deps.js.map +1 -0
- package/hmr/frameworks/solid/client/app-runtime.d.ts +68 -0
- package/hmr/frameworks/solid/client/app-runtime.js +246 -0
- package/hmr/frameworks/solid/client/app-runtime.js.map +1 -0
- package/hmr/frameworks/solid/server/strategy.js +291 -16
- package/hmr/frameworks/solid/server/strategy.js.map +1 -1
- package/hmr/frameworks/typescript/server/strategy.js +38 -14
- package/hmr/frameworks/typescript/server/strategy.js.map +1 -1
- package/hmr/frameworks/vue/client/dep-propagation.d.ts +44 -0
- package/hmr/frameworks/vue/client/dep-propagation.js +148 -0
- package/hmr/frameworks/vue/client/dep-propagation.js.map +1 -0
- package/hmr/frameworks/vue/client/index.d.ts +9 -0
- package/hmr/frameworks/vue/client/index.js +251 -247
- package/hmr/frameworks/vue/client/index.js.map +1 -1
- package/hmr/frameworks/vue/client/strategy.d.ts +33 -0
- package/hmr/frameworks/vue/client/strategy.js +157 -0
- package/hmr/frameworks/vue/client/strategy.js.map +1 -0
- package/hmr/frameworks/vue/client/vue-sfc-update-overlay.d.ts +49 -0
- package/hmr/frameworks/vue/client/vue-sfc-update-overlay.js +142 -0
- package/hmr/frameworks/vue/client/vue-sfc-update-overlay.js.map +1 -0
- package/hmr/frameworks/vue/server/compiler.d.ts +3 -1
- package/hmr/frameworks/vue/server/compiler.js +3 -1
- package/hmr/frameworks/vue/server/compiler.js.map +1 -1
- package/hmr/frameworks/vue/server/sfc-route-assemble.d.ts +7 -0
- package/hmr/frameworks/vue/server/sfc-route-assemble.js +823 -0
- package/hmr/frameworks/vue/server/sfc-route-assemble.js.map +1 -0
- package/hmr/frameworks/vue/server/sfc-route-meta.d.ts +7 -0
- package/hmr/frameworks/vue/server/sfc-route-meta.js +80 -0
- package/hmr/frameworks/vue/server/sfc-route-meta.js.map +1 -0
- package/hmr/frameworks/vue/server/sfc-route-serve.d.ts +8 -0
- package/hmr/frameworks/vue/server/sfc-route-serve.js +462 -0
- package/hmr/frameworks/vue/server/sfc-route-serve.js.map +1 -0
- package/hmr/frameworks/vue/server/sfc-route-shared.d.ts +45 -0
- package/hmr/frameworks/vue/server/sfc-route-shared.js +105 -0
- package/hmr/frameworks/vue/server/sfc-route-shared.js.map +1 -0
- package/hmr/frameworks/vue/server/strategy.d.ts +35 -0
- package/hmr/frameworks/vue/server/strategy.js +286 -7
- package/hmr/frameworks/vue/server/strategy.js.map +1 -1
- package/hmr/frameworks/vue/server/websocket-sfc.d.ts +15 -0
- package/hmr/frameworks/vue/server/websocket-sfc.js +20 -0
- package/hmr/frameworks/vue/server/websocket-sfc.js.map +1 -0
- package/hmr/helpers/ast-normalizer.d.ts +3 -1
- package/hmr/helpers/ast-normalizer.js +77 -10
- package/hmr/helpers/ast-normalizer.js.map +1 -1
- package/hmr/helpers/cjs-named-exports.d.ts +23 -0
- package/hmr/helpers/cjs-named-exports.js +152 -0
- package/hmr/helpers/cjs-named-exports.js.map +1 -0
- package/hmr/helpers/package-exports.d.ts +16 -0
- package/hmr/helpers/package-exports.js +396 -0
- package/hmr/helpers/package-exports.js.map +1 -0
- package/hmr/helpers/vendor-rewrite.d.ts +1 -1
- package/hmr/helpers/vendor-rewrite.js +5 -3
- package/hmr/helpers/vendor-rewrite.js.map +1 -1
- package/hmr/server/boot-archive-route.d.ts +40 -0
- package/hmr/server/boot-archive-route.js +154 -0
- package/hmr/server/boot-archive-route.js.map +1 -0
- package/hmr/server/boot-closure-route.d.ts +49 -0
- package/hmr/server/boot-closure-route.js +144 -0
- package/hmr/server/boot-closure-route.js.map +1 -0
- package/hmr/server/boot-recording.d.ts +58 -0
- package/hmr/server/boot-recording.js +228 -0
- package/hmr/server/boot-recording.js.map +1 -0
- package/hmr/server/constants.js +20 -5
- package/hmr/server/constants.js.map +1 -1
- package/hmr/server/core-bundle.d.ts +140 -0
- package/hmr/server/core-bundle.js +614 -0
- package/hmr/server/core-bundle.js.map +1 -0
- package/hmr/server/core-sanitize.d.ts +86 -7
- package/hmr/server/core-sanitize.js +170 -45
- package/hmr/server/core-sanitize.js.map +1 -1
- package/hmr/server/css-device-module.d.ts +28 -0
- package/hmr/server/css-device-module.js +44 -0
- package/hmr/server/css-device-module.js.map +1 -0
- package/hmr/server/deps-bundle.d.ts +218 -0
- package/hmr/server/deps-bundle.js +984 -0
- package/hmr/server/deps-bundle.js.map +1 -0
- package/hmr/server/device-transform-helpers.d.ts +24 -0
- package/hmr/server/device-transform-helpers.js +408 -0
- package/hmr/server/device-transform-helpers.js.map +1 -0
- package/hmr/server/framework-strategy.d.ts +113 -11
- package/hmr/server/hmr-module-graph.d.ts +37 -0
- package/hmr/server/hmr-module-graph.js +215 -0
- package/hmr/server/hmr-module-graph.js.map +1 -0
- package/hmr/server/import-map.d.ts +13 -4
- package/hmr/server/import-map.js +94 -47
- package/hmr/server/import-map.js.map +1 -1
- package/hmr/server/index.js +7 -16
- package/hmr/server/index.js.map +1 -1
- package/hmr/server/ns-core-cjs-shape.d.ts +2 -4
- package/hmr/server/ns-core-cjs-shape.js +4 -6
- package/hmr/server/ns-core-cjs-shape.js.map +1 -1
- package/hmr/server/ns-m-response-memo.d.ts +10 -0
- package/hmr/server/ns-m-response-memo.js +33 -0
- package/hmr/server/ns-m-response-memo.js.map +1 -0
- package/hmr/server/ns-rt-bridge.d.ts +51 -0
- package/hmr/server/ns-rt-bridge.js +131 -0
- package/hmr/server/ns-rt-bridge.js.map +1 -0
- package/hmr/server/ns-rt-route.d.ts +5 -0
- package/hmr/server/ns-rt-route.js +39 -0
- package/hmr/server/ns-rt-route.js.map +1 -0
- package/hmr/server/perf-instrumentation.d.ts +6 -10
- package/hmr/server/perf-instrumentation.js +5 -6
- package/hmr/server/perf-instrumentation.js.map +1 -1
- package/hmr/server/process-code-for-device.d.ts +30 -0
- package/hmr/server/process-code-for-device.js +791 -0
- package/hmr/server/process-code-for-device.js.map +1 -0
- package/hmr/server/require-guard.d.ts +1 -0
- package/hmr/server/require-guard.js +12 -0
- package/hmr/server/require-guard.js.map +1 -0
- package/hmr/server/rewrite-imports.d.ts +2 -0
- package/hmr/server/rewrite-imports.js +630 -0
- package/hmr/server/rewrite-imports.js.map +1 -0
- package/hmr/server/route-helpers.d.ts +7 -0
- package/hmr/server/route-helpers.js +13 -0
- package/hmr/server/route-helpers.js.map +1 -0
- package/hmr/server/server-origin.d.ts +2 -0
- package/hmr/server/server-origin.js +83 -0
- package/hmr/server/server-origin.js.map +1 -0
- package/hmr/server/shared-transform-request.js +1 -2
- package/hmr/server/shared-transform-request.js.map +1 -1
- package/hmr/server/transform-cache-invalidation.d.ts +37 -0
- package/hmr/server/transform-cache-invalidation.js +156 -0
- package/hmr/server/transform-cache-invalidation.js.map +1 -0
- package/hmr/server/vendor-bare-module-shims.d.ts +4 -0
- package/hmr/server/vendor-bare-module-shims.js +80 -0
- package/hmr/server/vendor-bare-module-shims.js.map +1 -0
- package/hmr/server/vite-plugin.d.ts +1 -0
- package/hmr/server/vite-plugin.js +180 -54
- package/hmr/server/vite-plugin.js.map +1 -1
- package/hmr/server/websocket-core-bridge.d.ts +51 -4
- package/hmr/server/websocket-core-bridge.js +62 -54
- package/hmr/server/websocket-core-bridge.js.map +1 -1
- package/hmr/server/websocket-css-hot-update.d.ts +33 -0
- package/hmr/server/websocket-css-hot-update.js +65 -0
- package/hmr/server/websocket-css-hot-update.js.map +1 -0
- package/hmr/server/websocket-device-transform.d.ts +3 -0
- package/hmr/server/websocket-device-transform.js +7 -0
- package/hmr/server/websocket-device-transform.js.map +1 -0
- package/hmr/server/websocket-hmr-pending.d.ts +3 -9
- package/hmr/server/websocket-hmr-pending.js +1 -1
- package/hmr/server/websocket-hmr-pending.js.map +1 -1
- package/hmr/server/websocket-hot-update.d.ts +77 -0
- package/hmr/server/websocket-hot-update.js +360 -0
- package/hmr/server/websocket-hot-update.js.map +1 -0
- package/hmr/server/websocket-import-map-route.d.ts +15 -0
- package/hmr/server/websocket-import-map-route.js +50 -0
- package/hmr/server/websocket-import-map-route.js.map +1 -0
- package/hmr/server/websocket-module-bindings.js +3 -3
- package/hmr/server/websocket-module-bindings.js.map +1 -1
- package/hmr/server/websocket-module-specifiers.d.ts +66 -2
- package/hmr/server/websocket-module-specifiers.js +191 -20
- package/hmr/server/websocket-module-specifiers.js.map +1 -1
- package/hmr/server/websocket-ns-core.d.ts +34 -0
- package/hmr/server/websocket-ns-core.js +414 -0
- package/hmr/server/websocket-ns-core.js.map +1 -0
- package/hmr/server/websocket-ns-entry.d.ts +21 -0
- package/hmr/server/websocket-ns-entry.js +164 -0
- package/hmr/server/websocket-ns-entry.js.map +1 -0
- package/hmr/server/websocket-ns-m-paths.d.ts +1 -3
- package/hmr/server/websocket-ns-m-paths.js +25 -82
- package/hmr/server/websocket-ns-m-paths.js.map +1 -1
- package/hmr/server/websocket-ns-m-request.d.ts +11 -1
- package/hmr/server/websocket-ns-m-request.js +17 -9
- package/hmr/server/websocket-ns-m-request.js.map +1 -1
- package/hmr/server/websocket-ns-m.d.ts +52 -0
- package/hmr/server/websocket-ns-m.js +824 -0
- package/hmr/server/websocket-ns-m.js.map +1 -0
- package/hmr/server/websocket-served-module-helpers.d.ts +50 -4
- package/hmr/server/websocket-served-module-helpers.js +384 -86
- package/hmr/server/websocket-served-module-helpers.js.map +1 -1
- package/hmr/server/websocket-txn.js +6 -9
- package/hmr/server/websocket-txn.js.map +1 -1
- package/hmr/server/websocket-vendor-unifier.d.ts +0 -1
- package/hmr/server/websocket-vendor-unifier.js +4 -9
- package/hmr/server/websocket-vendor-unifier.js.map +1 -1
- package/hmr/server/websocket.d.ts +7 -39
- package/hmr/server/websocket.js +643 -6716
- package/hmr/server/websocket.js.map +1 -1
- package/hmr/shared/ns-globals.d.ts +108 -0
- package/hmr/shared/ns-globals.js +28 -0
- package/hmr/shared/ns-globals.js.map +1 -0
- package/hmr/shared/protocol.d.ts +145 -0
- package/hmr/shared/protocol.js +28 -0
- package/hmr/shared/protocol.js.map +1 -0
- package/hmr/shared/runtime/boot-archive-format.d.ts +16 -0
- package/hmr/shared/runtime/boot-archive-format.js +31 -0
- package/hmr/shared/runtime/boot-archive-format.js.map +1 -0
- package/hmr/shared/runtime/boot-complete.d.ts +14 -0
- package/hmr/shared/runtime/boot-complete.js +32 -0
- package/hmr/shared/runtime/boot-complete.js.map +1 -0
- package/hmr/shared/runtime/boot-placeholder-ui.d.ts +69 -0
- package/hmr/shared/runtime/boot-placeholder-ui.js +101 -0
- package/hmr/shared/runtime/boot-placeholder-ui.js.map +1 -0
- package/hmr/shared/runtime/boot-progress.d.ts +44 -0
- package/hmr/shared/runtime/boot-progress.js +134 -0
- package/hmr/shared/runtime/boot-progress.js.map +1 -0
- package/hmr/shared/runtime/boot-timeline.d.ts +2 -1
- package/hmr/shared/runtime/boot-timeline.js +9 -22
- package/hmr/shared/runtime/boot-timeline.js.map +1 -1
- package/hmr/shared/runtime/browser-runtime-contract.d.ts +53 -22
- package/hmr/shared/runtime/browser-runtime-contract.js +6 -9
- package/hmr/shared/runtime/browser-runtime-contract.js.map +1 -1
- package/hmr/shared/runtime/dev-overlay-snapshots.d.ts +31 -0
- package/hmr/shared/runtime/dev-overlay-snapshots.js +324 -0
- package/hmr/shared/runtime/dev-overlay-snapshots.js.map +1 -0
- package/hmr/shared/runtime/dev-overlay.d.ts +76 -30
- package/hmr/shared/runtime/dev-overlay.js +767 -408
- package/hmr/shared/runtime/dev-overlay.js.map +1 -1
- package/hmr/shared/runtime/global-scope.d.ts +18 -0
- package/hmr/shared/runtime/global-scope.js +21 -0
- package/hmr/shared/runtime/global-scope.js.map +1 -0
- package/hmr/shared/runtime/hooks.js +2 -1
- package/hmr/shared/runtime/hooks.js.map +1 -1
- package/hmr/shared/runtime/http-only-boot.js +7 -6
- package/hmr/shared/runtime/http-only-boot.js.map +1 -1
- package/hmr/shared/runtime/module-provenance.js +4 -6
- package/hmr/shared/runtime/module-provenance.js.map +1 -1
- package/hmr/shared/runtime/root-placeholder-view.d.ts +19 -0
- package/hmr/shared/runtime/root-placeholder-view.js +311 -0
- package/hmr/shared/runtime/root-placeholder-view.js.map +1 -0
- package/hmr/shared/runtime/root-placeholder.js +398 -204
- package/hmr/shared/runtime/root-placeholder.js.map +1 -1
- package/hmr/shared/runtime/session-bootstrap.js +255 -50
- package/hmr/shared/runtime/session-bootstrap.js.map +1 -1
- package/hmr/shared/runtime/vendor-bootstrap.js +3 -10
- package/hmr/shared/runtime/vendor-bootstrap.js.map +1 -1
- package/hmr/shared/vendor/manifest-collect.d.ts +4 -0
- package/hmr/shared/vendor/manifest-collect.js +549 -0
- package/hmr/shared/vendor/manifest-collect.js.map +1 -0
- package/hmr/shared/vendor/manifest-loader.d.ts +2 -1
- package/hmr/shared/vendor/manifest-loader.js +5 -3
- package/hmr/shared/vendor/manifest-loader.js.map +1 -1
- package/hmr/shared/vendor/manifest.d.ts +1 -7
- package/hmr/shared/vendor/manifest.js +125 -825
- package/hmr/shared/vendor/manifest.js.map +1 -1
- package/hmr/shared/vendor/registry.d.ts +2 -0
- package/hmr/shared/vendor/registry.js +14 -0
- package/hmr/shared/vendor/registry.js.map +1 -1
- package/hmr/shared/vendor/vendor-device-shim.d.ts +1 -0
- package/hmr/shared/vendor/vendor-device-shim.js +208 -0
- package/hmr/shared/vendor/vendor-device-shim.js.map +1 -0
- package/hmr/shared/vendor/vendor-esbuild-plugins.d.ts +38 -0
- package/hmr/shared/vendor/vendor-esbuild-plugins.js +296 -0
- package/hmr/shared/vendor/vendor-esbuild-plugins.js.map +1 -0
- package/hmr/vendor-bootstrap.d.ts +1 -3
- package/hmr/vendor-bootstrap.js +4 -6
- package/hmr/vendor-bootstrap.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +5 -0
- package/index.js.map +1 -1
- package/package.json +65 -11
- package/runtime/core-aliases-early.js +25 -55
- package/runtime/core-aliases-early.js.map +1 -1
- package/shims/react-jsx-runtime.d.ts +4 -0
- package/shims/react-jsx-runtime.js +61 -0
- package/shims/react-jsx-runtime.js.map +1 -0
- package/helpers/angular/angular-linker.d.ts +0 -13
- package/helpers/angular/angular-linker.js +0 -194
- package/helpers/angular/angular-linker.js.map +0 -1
- package/helpers/angular/inline-decorator-component-templates.js.map +0 -1
- package/helpers/angular/shared-linker.d.ts +0 -11
- package/helpers/angular/shared-linker.js +0 -75
- package/helpers/angular/shared-linker.js.map +0 -1
- package/helpers/angular/synthesize-decorator-ctor-parameters.js.map +0 -1
- package/helpers/angular/synthesize-injectable-factories.js.map +0 -1
- package/helpers/angular/util.js +0 -67
- package/helpers/angular/util.js.map +0 -1
- package/helpers/prelink-angular.d.ts +0 -2
- package/helpers/prelink-angular.js +0 -117
- package/helpers/prelink-angular.js.map +0 -1
- package/hmr/server/websocket-angular-entry.js.map +0 -1
- package/hmr/server/websocket-angular-hot-update.js.map +0 -1
- package/hmr/server/websocket-ns-m-finalize.d.ts +0 -22
- package/hmr/server/websocket-ns-m-finalize.js +0 -88
- package/hmr/server/websocket-ns-m-finalize.js.map +0 -1
- package/hmr/server/websocket-runtime-compat.d.ts +0 -19
- package/hmr/server/websocket-runtime-compat.js +0 -286
- package/hmr/server/websocket-runtime-compat.js.map +0 -1
- package/hmr/server/websocket-vue-sfc.d.ts +0 -27
- package/hmr/server/websocket-vue-sfc.js +0 -1114
- package/hmr/server/websocket-vue-sfc.js.map +0 -1
- package/transformers/NativeClass/index.d.ts +0 -2
- package/transformers/NativeClass/index.js +0 -222
- package/transformers/NativeClass/index.js.map +0 -1
- /package/{helpers/angular → hmr/frameworks/angular/build}/inline-decorator-component-templates.d.ts +0 -0
- /package/{helpers/angular → hmr/frameworks/angular/build}/synthesize-decorator-ctor-parameters.d.ts +0 -0
- /package/{helpers/angular → hmr/frameworks/angular/build}/synthesize-injectable-factories.d.ts +0 -0
- /package/hmr/{server → frameworks/angular/server}/websocket-angular-entry.d.ts +0 -0
package/hmr/server/import-map.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Import Map Generator for NativeScript HMR
|
|
3
3
|
*
|
|
4
4
|
* Generates an import map that the iOS/Android runtime consumes via
|
|
5
|
-
*
|
|
5
|
+
* __NS_DEV__.configureRuntime(). This is the single source of truth for module
|
|
6
6
|
* resolution on the device.
|
|
7
7
|
*
|
|
8
8
|
* Resolution strategy:
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* how Vite rewrites them — resolve through a single deterministic path.
|
|
22
22
|
*/
|
|
23
23
|
import { getVendorManifest, listVendorModules } from '../shared/vendor/registry.js';
|
|
24
|
-
import { readFileSync, readdirSync, existsSync } from 'fs';
|
|
24
|
+
import { readFileSync, readdirSync, existsSync, statSync } from 'fs';
|
|
25
25
|
import { resolve, join } from 'path';
|
|
26
26
|
import { getProjectRootPath } from '../../helpers/project.js';
|
|
27
27
|
import { buildCoreUrl } from '../../helpers/ns-core-url.js';
|
|
@@ -60,33 +60,75 @@ function getDeviceImportMapExposure(name) {
|
|
|
60
60
|
* Everything else falls through to the runtime's normal resolution.
|
|
61
61
|
*/
|
|
62
62
|
export function generateImportMap(options) {
|
|
63
|
-
const { origin,
|
|
63
|
+
const { origin, strategy, extraEntries } = options;
|
|
64
64
|
const manifest = getVendorManifest();
|
|
65
65
|
const imports = {};
|
|
66
66
|
if (manifest) {
|
|
67
67
|
// Map vendor modules to ns-vendor:// — EXACT entries only.
|
|
68
68
|
// No trailing-slash prefixes: subpaths must resolve via HTTP, not vendor.
|
|
69
|
+
//
|
|
70
|
+
// IMPORTANT: `@nativescript/core` and any `@nativescript/core/<sub>` are
|
|
71
|
+
// deliberately routed through the HTTP bridge (`${origin}/ns/core/...`),
|
|
72
|
+
// NEVER through `ns-vendor://`. Two reasons:
|
|
73
|
+
// 1. Single realm. The core bridge is the canonical source for every
|
|
74
|
+
// `Application`, `View`, `Frame`, etc. instance — having a second
|
|
75
|
+
// copy in the vendor registry produces the classic
|
|
76
|
+
// `vendorApplicationSame: false` realm split (different
|
|
77
|
+
// `globalThis.Application` than the one the iOS/Android hooks
|
|
78
|
+
// patched) and HMR placeholder finalize stalls.
|
|
79
|
+
// 2. Chicken-and-egg. esbuild's vendor build externalizes
|
|
80
|
+
// `@nativescript/core(/...)` (see `nsCoreExternalPlugin` in
|
|
81
|
+
// `manifest.ts`), so the externalized `import` statements stay
|
|
82
|
+
// in `vendor.mjs` itself. If those externals resolve through
|
|
83
|
+
// `ns-vendor://`, the synthetic wrapper module's evaluation
|
|
84
|
+
// runs DURING `vendor.mjs` linking — but `vendor-bootstrap`
|
|
85
|
+
// hasn't populated `__nsVendorRegistry` yet (it runs LATER,
|
|
86
|
+
// from the clientUrl module body), so every wrapper throws
|
|
87
|
+
// `Vendor module not found in registry: @nativescript/core/...`.
|
|
88
|
+
// Routing core through the HTTP bridge sidesteps the registry
|
|
89
|
+
// lookup entirely; the dev server normalizes platform suffixes
|
|
90
|
+
// (see `normalizeCoreSub` in `ns-core-url.ts`) so
|
|
91
|
+
// `@nativescript/core/ui/frame/activity.android` → bridge URL
|
|
92
|
+
// `/ns/core/ui/frame/activity.android` → served from the
|
|
93
|
+
// platform-specific `.android.ts` source.
|
|
69
94
|
const vendorModules = listVendorModules();
|
|
70
95
|
for (const specifier of vendorModules) {
|
|
96
|
+
if (specifier === '@nativescript/core' || specifier.startsWith('@nativescript/core/')) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
71
99
|
imports[specifier] = `ns-vendor://${specifier}`;
|
|
72
100
|
}
|
|
73
101
|
// Map aliases from the manifest (e.g., "solid-js/web" → ns-vendor://solid-js)
|
|
74
102
|
if (manifest.aliases) {
|
|
75
103
|
for (const [alias, canonical] of Object.entries(manifest.aliases)) {
|
|
104
|
+
// Same single-realm + chicken-and-egg reasons as above.
|
|
105
|
+
if (alias === '@nativescript/core' || alias.startsWith('@nativescript/core/')) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
76
108
|
if (!imports[alias] && imports[canonical]) {
|
|
77
109
|
imports[alias] = imports[canonical];
|
|
78
110
|
}
|
|
79
111
|
}
|
|
80
112
|
}
|
|
81
113
|
}
|
|
82
|
-
// @nativescript/core → bridge endpoint (canonical URL generator
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
// resolve via `${origin}/ns/core/<sub>`.
|
|
114
|
+
// @nativescript/core → bridge endpoint (canonical URL generator).
|
|
115
|
+
// The trailing-slash entry intentionally uses the same generator so
|
|
116
|
+
// subpath imports resolve via `${origin}/ns/core/<sub>`.
|
|
86
117
|
imports['@nativescript/core'] = buildCoreUrl(origin);
|
|
87
118
|
imports['@nativescript/core/'] = `${buildCoreUrl(origin)}/`;
|
|
88
|
-
// Add framework-specific entries
|
|
89
|
-
|
|
119
|
+
// Add framework-specific entries (owned by the active strategy). Merge
|
|
120
|
+
// CONDITIONALLY (existing entries win) so Vue's vendor entries (set above)
|
|
121
|
+
// take precedence over the hook's fallback `ns-vendor://` targets, while
|
|
122
|
+
// Solid's `solid-js` (externalized from vendor, so unset here) is added.
|
|
123
|
+
// Insertion order is significant for the generated map.
|
|
124
|
+
const frameworkEntries = strategy?.importMapEntries?.(origin);
|
|
125
|
+
if (frameworkEntries) {
|
|
126
|
+
for (const [specifier, target] of Object.entries(frameworkEntries)) {
|
|
127
|
+
if (!imports[specifier]) {
|
|
128
|
+
imports[specifier] = target;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
90
132
|
// Scan installed packages and add HTTP URL entries for ALL packages
|
|
91
133
|
// (including vendor ones for their subpath imports).
|
|
92
134
|
discoverInstalledPackages(imports, origin);
|
|
@@ -101,58 +143,31 @@ export function generateImportMap(options) {
|
|
|
101
143
|
* These patterns tell the runtime to always re-fetch matching URLs
|
|
102
144
|
* instead of using cached modules.
|
|
103
145
|
*/
|
|
104
|
-
export function getVolatilePatterns(
|
|
146
|
+
export function getVolatilePatterns(strategy) {
|
|
105
147
|
const patterns = [];
|
|
106
148
|
// Version query params (used by HMR for cache busting)
|
|
107
149
|
patterns.push('?v=');
|
|
108
150
|
patterns.push('&v=');
|
|
109
|
-
// Framework-specific volatile patterns
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
patterns.push('/@ns/asm/');
|
|
115
|
-
break;
|
|
116
|
-
case 'angular':
|
|
117
|
-
// Angular template/style URLs may change on edit
|
|
118
|
-
patterns.push('/@ns/asm/');
|
|
119
|
-
break;
|
|
151
|
+
// Framework-specific volatile patterns (owned by the active strategy;
|
|
152
|
+
// none of the built-in strategies supply any).
|
|
153
|
+
const frameworkPatterns = strategy?.volatilePatterns?.();
|
|
154
|
+
if (frameworkPatterns) {
|
|
155
|
+
patterns.push(...frameworkPatterns);
|
|
120
156
|
}
|
|
121
157
|
return patterns;
|
|
122
158
|
}
|
|
123
159
|
/**
|
|
124
160
|
* Serialize the import map + volatile patterns into the config object
|
|
125
|
-
* that
|
|
161
|
+
* that __NS_DEV__.configureRuntime() expects.
|
|
126
162
|
*/
|
|
127
163
|
export function buildRuntimeConfig(options) {
|
|
128
164
|
const importMap = generateImportMap(options);
|
|
129
|
-
const volatilePatterns = getVolatilePatterns(options.
|
|
165
|
+
const volatilePatterns = getVolatilePatterns(options.strategy);
|
|
130
166
|
return {
|
|
131
167
|
importMap: JSON.stringify(importMap),
|
|
132
168
|
volatilePatterns,
|
|
133
169
|
};
|
|
134
170
|
}
|
|
135
|
-
function addFrameworkEntries(imports, _origin, flavor) {
|
|
136
|
-
switch (flavor) {
|
|
137
|
-
case 'vue':
|
|
138
|
-
// nativescript-vue should resolve from vendor if available
|
|
139
|
-
if (!imports['nativescript-vue']) {
|
|
140
|
-
imports['nativescript-vue'] = `ns-vendor://nativescript-vue`;
|
|
141
|
-
}
|
|
142
|
-
if (!imports['vue']) {
|
|
143
|
-
imports['vue'] = `ns-vendor://vue`;
|
|
144
|
-
}
|
|
145
|
-
break;
|
|
146
|
-
case 'solid':
|
|
147
|
-
// Solid runtime root should resolve from vendor
|
|
148
|
-
if (!imports['solid-js']) {
|
|
149
|
-
imports['solid-js'] = `ns-vendor://solid-js`;
|
|
150
|
-
}
|
|
151
|
-
// No trailing-slash prefix — subpaths like solid-js/store,
|
|
152
|
-
// solid-js/jsx-runtime resolve via HTTP from discoverInstalledPackages()
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
171
|
/**
|
|
157
172
|
* Scan the project's node_modules to discover ALL installed packages and
|
|
158
173
|
* add import map entries. Vendor packages get only trailing-slash prefix
|
|
@@ -190,6 +205,32 @@ function discoverInstalledPackages(imports, origin) {
|
|
|
190
205
|
imports[name + '/'] = `${origin}/ns/m/node_modules/${name}/`;
|
|
191
206
|
}
|
|
192
207
|
};
|
|
208
|
+
// Replay the (cheap, in-memory) addPackage step for every installed package
|
|
209
|
+
// name. The names themselves come from a per-session cache so the directory
|
|
210
|
+
// sweep below runs once per dev server, not on every `/ns/import-map.json`
|
|
211
|
+
// request (a hot, per-boot route).
|
|
212
|
+
for (const name of getInstalledPackageNames(nodeModulesDir)) {
|
|
213
|
+
addPackage(name);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Cache the discovered package-name list per node_modules dir, invalidated when
|
|
217
|
+
// the directory's mtime changes (an install/remove of a top-level entry). Avoids
|
|
218
|
+
// a full `readdirSync` sweep (+ per-scope readdir) on every import-map request.
|
|
219
|
+
let installedPackageNamesCache = null;
|
|
220
|
+
function getInstalledPackageNames(nodeModulesDir) {
|
|
221
|
+
// mtime guards the cache; if it can't be read (e.g. a mocked fs in tests),
|
|
222
|
+
// fall back to sweeping every call (original behavior) rather than caching.
|
|
223
|
+
let mtimeMs = null;
|
|
224
|
+
try {
|
|
225
|
+
mtimeMs = statSync(nodeModulesDir).mtimeMs;
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
mtimeMs = null;
|
|
229
|
+
}
|
|
230
|
+
if (mtimeMs !== null && installedPackageNamesCache && installedPackageNamesCache.dir === nodeModulesDir && installedPackageNamesCache.mtimeMs === mtimeMs) {
|
|
231
|
+
return installedPackageNamesCache.names;
|
|
232
|
+
}
|
|
233
|
+
const names = [];
|
|
193
234
|
try {
|
|
194
235
|
const entries = readdirSync(nodeModulesDir, { withFileTypes: true });
|
|
195
236
|
for (const entry of entries) {
|
|
@@ -208,16 +249,22 @@ function discoverInstalledPackages(imports, origin) {
|
|
|
208
249
|
continue;
|
|
209
250
|
if (scopeEntry.name.startsWith('.'))
|
|
210
251
|
continue;
|
|
211
|
-
|
|
252
|
+
names.push(`${name}/${scopeEntry.name}`);
|
|
212
253
|
}
|
|
213
254
|
}
|
|
214
255
|
catch { }
|
|
215
256
|
}
|
|
216
257
|
else {
|
|
217
|
-
|
|
258
|
+
names.push(name);
|
|
218
259
|
}
|
|
219
260
|
}
|
|
220
261
|
}
|
|
221
|
-
catch {
|
|
262
|
+
catch {
|
|
263
|
+
return [];
|
|
264
|
+
}
|
|
265
|
+
if (mtimeMs !== null) {
|
|
266
|
+
installedPackageNamesCache = { dir: nodeModulesDir, mtimeMs, names };
|
|
267
|
+
}
|
|
268
|
+
return names;
|
|
222
269
|
}
|
|
223
270
|
//# sourceMappingURL=import-map.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-map.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/import-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"import-map.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/import-map.ts"],"names":[],"mappings":"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"}
|
package/hmr/server/index.js
CHANGED
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
import { nsHmrClientVitePlugin } from './vite-plugin.js';
|
|
2
|
-
import {
|
|
2
|
+
import { hmrWebSocketPluginForFlavor } from './websocket.js';
|
|
3
3
|
export function getHMRPlugins(opts) {
|
|
4
4
|
const plugins = [nsHmrClientVitePlugin(opts)];
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
case 'angular':
|
|
12
|
-
plugins.push(hmrWebSocketAngular(opts));
|
|
13
|
-
break;
|
|
14
|
-
case 'typescript':
|
|
15
|
-
plugins.push(hmrWebSocketTypescript(opts));
|
|
16
|
-
break;
|
|
17
|
-
case 'solid':
|
|
18
|
-
plugins.push(hmrWebSocketSolid(opts));
|
|
19
|
-
break;
|
|
5
|
+
// The server-side HMR WebSocket plugin is selected from STRATEGY_REGISTRY by
|
|
6
|
+
// flavor. Flavors without a registered server strategy (e.g. `react`) ship
|
|
7
|
+
// only the client plugin above — no per-flavor switch or no-op special case.
|
|
8
|
+
const frameworkPlugin = hmrWebSocketPluginForFlavor(opts.flavor, opts);
|
|
9
|
+
if (frameworkPlugin) {
|
|
10
|
+
plugins.push(frameworkPlugin);
|
|
20
11
|
}
|
|
21
12
|
return plugins;
|
|
22
13
|
}
|
package/hmr/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7D,MAAM,UAAU,aAAa,CAAC,IAAmE;IAChG,MAAM,OAAO,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,eAAe,GAAG,2BAA2B,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvE,IAAI,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CJS/ESM interop shape
|
|
3
|
-
*
|
|
4
|
-
* See HMR_CORE_REALM_DETERMINISTIC_PLAN.md § "Invariant D — CJS/ESM interop shape".
|
|
2
|
+
* CJS/ESM interop shape.
|
|
5
3
|
*
|
|
6
4
|
* PROBLEM
|
|
7
5
|
* -------
|
|
@@ -127,7 +125,7 @@ export declare function rewriteNamespaceReExportsForShape(code: string): string;
|
|
|
127
125
|
*/
|
|
128
126
|
export declare function hasNamespaceReExport(code: string): boolean;
|
|
129
127
|
/**
|
|
130
|
-
* Default-export bridge footer
|
|
128
|
+
* Default-export bridge footer.
|
|
131
129
|
*
|
|
132
130
|
* BACKGROUND
|
|
133
131
|
* ----------
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CJS/ESM interop shape
|
|
3
|
-
*
|
|
4
|
-
* See HMR_CORE_REALM_DETERMINISTIC_PLAN.md § "Invariant D — CJS/ESM interop shape".
|
|
2
|
+
* CJS/ESM interop shape.
|
|
5
3
|
*
|
|
6
4
|
* PROBLEM
|
|
7
5
|
* -------
|
|
@@ -106,7 +104,7 @@ export function buildShapeInstallHeader() {
|
|
|
106
104
|
` return out;`,
|
|
107
105
|
` };`,
|
|
108
106
|
` }`,
|
|
109
|
-
`} } catch (e) {
|
|
107
|
+
`} } catch (e) { console.warn('[ns-core] shape installer failed:', (e && e.message) || e); }`,
|
|
110
108
|
].join('\n');
|
|
111
109
|
}
|
|
112
110
|
/**
|
|
@@ -181,7 +179,7 @@ export function hasNamespaceReExport(code) {
|
|
|
181
179
|
return /export\s+\*\s+as\s+[A-Za-z_$][\w$]*\s+from\s+['"`]/.test(code);
|
|
182
180
|
}
|
|
183
181
|
/**
|
|
184
|
-
* Default-export bridge footer
|
|
182
|
+
* Default-export bridge footer.
|
|
185
183
|
*
|
|
186
184
|
* BACKGROUND
|
|
187
185
|
* ----------
|
|
@@ -245,7 +243,7 @@ export function hasNamespaceReExport(code) {
|
|
|
245
243
|
export function buildDefaultExportFooter(rewrittenCode) {
|
|
246
244
|
if (hasExistingDefaultExport(rewrittenCode))
|
|
247
245
|
return '';
|
|
248
|
-
return ['/*
|
|
246
|
+
return ['/* Default-export bridge for /ns/core consumers */', 'export default __ns_core_self_ns__;'].join('\n');
|
|
249
247
|
}
|
|
250
248
|
/**
|
|
251
249
|
* Detects whether a module body already declares a default export in any of
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ns-core-cjs-shape.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/ns-core-cjs-shape.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ns-core-cjs-shape.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/ns-core-cjs-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,uBAAuB;IACtC,OAAO;QACN,oDAAoD;QACpD,gDAAgD;QAChD,oHAAoH;QACpH,4DAA4D;QAC5D,6DAA6D;QAC7D,wDAAwD;QACxD,+BAA+B;QAC/B,+EAA+E;QAC/E,iDAAiD;QACjD,sDAAsD;QACtD,oEAAoE;QACpE,uBAAuB;QACvB,qCAAqC;QACrC,aAAa;QACb,wCAAwC;QACxC,iDAAiD;QACjD,8BAA8B;QAC9B,oFAAoF;QACpF,WAAW;QACX,sBAAsB;QACtB,mBAAmB;QACnB,QAAQ;QACR,KAAK;QACL,6FAA6F;KAC7F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,iCAAiC,CAAC,IAAY;IAC7D,MAAM,SAAS,GAAG,gHAAgH,CAAC;IAEnI,kEAAkE;IAClE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,sFAAsF,EAAE,CAAC,MAAM,EAAE,MAAc,EAAE,MAAc,EAAE,IAAY,EAAE,KAAa,EAAE,IAAY,EAAE,EAAE;QACpM,MAAM,QAAQ,GAAG,WAAW,IAAI,IAAI,CAAC;QACrC,OAAO,GAAG,MAAM,GAAG,MAAM,eAAe,QAAQ,SAAS,KAAK,GAAG,IAAI,GAAG,KAAK,MAAM,MAAM,gBAAgB,IAAI,MAAM,SAAS,IAAI,QAAQ,IAAI,CAAC;IAC9I,CAAC,CAAC,CAAC;IAEH,yDAAyD;IACzD,yEAAyE;IACzE,uEAAuE;IACvE,oEAAoE;IACpE,yEAAyE;IACzE,qEAAqE;IACrE,oDAAoD;IACpD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,uEAAuE,EAAE,CAAC,KAAK,EAAE,SAAiB,EAAE,UAAkB,EAAE,EAAE;QAC3I,mEAAmE;QACnE,kEAAkE;QAClE,+DAA+D;QAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7C,OAAO,gBAAgB,UAAU,MAAM,SAAS,IAAI,SAAS,IAAI,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAChD,OAAO,oDAAoD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC7D,IAAI,wBAAwB,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,CAAC;IACvD,OAAO,CAAC,oDAAoD,EAAE,qCAAqC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACpD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,OAAO,KAAK,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type NsMResponseMemo = {
|
|
2
|
+
buildKey(spec: string, inputCode: string, context: string): string;
|
|
3
|
+
get(key: string): string | undefined;
|
|
4
|
+
set(key: string, body: string): void;
|
|
5
|
+
size(): number;
|
|
6
|
+
clear(): void;
|
|
7
|
+
};
|
|
8
|
+
export declare function createNsMResponseMemo(options?: {
|
|
9
|
+
maxEntries?: number;
|
|
10
|
+
}): NsMResponseMemo;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
export function createNsMResponseMemo(options) {
|
|
3
|
+
const maxEntries = Math.max(1, Math.floor(options?.maxEntries ?? 2000));
|
|
4
|
+
const entries = new Map();
|
|
5
|
+
return {
|
|
6
|
+
buildKey(spec, inputCode, context) {
|
|
7
|
+
const inputHash = createHash('sha1').update(inputCode).digest('hex');
|
|
8
|
+
return `${spec}\u0000${context}\u0000${inputHash}`;
|
|
9
|
+
},
|
|
10
|
+
get(key) {
|
|
11
|
+
const value = entries.get(key);
|
|
12
|
+
if (value !== undefined) {
|
|
13
|
+
// LRU touch: re-insert so iteration order tracks recency.
|
|
14
|
+
entries.delete(key);
|
|
15
|
+
entries.set(key, value);
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
},
|
|
19
|
+
set(key, body) {
|
|
20
|
+
if (entries.has(key))
|
|
21
|
+
entries.delete(key);
|
|
22
|
+
entries.set(key, body);
|
|
23
|
+
if (entries.size > maxEntries) {
|
|
24
|
+
const oldest = entries.keys().next().value;
|
|
25
|
+
if (oldest !== undefined)
|
|
26
|
+
entries.delete(oldest);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
size: () => entries.size,
|
|
30
|
+
clear: () => entries.clear(),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=ns-m-response-memo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ns-m-response-memo.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/ns-m-response-memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAgCzC,MAAM,UAAU,qBAAqB,CAAC,OAAiC;IACtE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,OAAO;QACN,QAAQ,CAAC,IAAY,EAAE,SAAiB,EAAE,OAAe;YACxD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrE,OAAO,GAAG,IAAI,SAAS,OAAO,SAAS,SAAS,EAAE,CAAC;QACpD,CAAC;QACD,GAAG,CAAC,GAAW;YACd,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACzB,0DAA0D;gBAC1D,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,KAAK,CAAC;QACd,CAAC;QACD,GAAG,CAAC,GAAW,EAAE,IAAY;YAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACvB,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;gBAC3C,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClD,CAAC;QACF,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI;QACxB,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;KAC5B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export interface NsRtBridgeOptions {
|
|
2
|
+
/** Version segment from `/ns/rt/<ver>`. Retained for the URL dispatcher; the bridge body intentionally ignores it. */
|
|
3
|
+
rtVer: string;
|
|
4
|
+
/** Prologue installed verbatim before the bridge body (typically the require URL guard). */
|
|
5
|
+
requireGuardSnippet: string;
|
|
6
|
+
/**
|
|
7
|
+
* The discovered ESM export names of the underlying vendor package
|
|
8
|
+
* (`nativescript-vue`, including its `@vue/runtime-core` re-export
|
|
9
|
+
* chain). Each name becomes `export const <name> = (__ensure().<name>);` —
|
|
10
|
+
* a single canonical specifier (`/ns/rt`) forwards *every* symbol the
|
|
11
|
+
* vendor publishes.
|
|
12
|
+
*
|
|
13
|
+
* Required: discovery is the only source of truth. There is no hand-curated
|
|
14
|
+
* fallback — if discovery cannot see the package, the bridge serves no
|
|
15
|
+
* passthroughs and the call site is expected to surface that as a config
|
|
16
|
+
* error rather than silently degrade.
|
|
17
|
+
*/
|
|
18
|
+
vendorExports: Iterable<string>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build the `/ns/rt` runtime bridge module text.
|
|
22
|
+
*
|
|
23
|
+
* Single-realm policy: every named export the vendor package publishes
|
|
24
|
+
* appears as `export const X = (__ensure().X);` — a constant binding, not a
|
|
25
|
+
* function wrapper. Constant bindings preserve identity for Vue's Symbol
|
|
26
|
+
* markers (`Fragment`, `Teleport`, …) AND work transparently for functions
|
|
27
|
+
* (`ref`, `createApp`, …) since the user code calls the underlying value
|
|
28
|
+
* directly. Calling `__ensure()` at module evaluation time is safe because
|
|
29
|
+
* the vendor bundle is registered earlier in the boot graph (vendor.mjs →
|
|
30
|
+
* `__nsVendorRegistry`), and the bridge resolves the same `nativescript-vue`
|
|
31
|
+
* record everyone else uses.
|
|
32
|
+
*
|
|
33
|
+
* HMR-specific shims (`$navigateTo`, `$navigateBack`, `$showModal`) and the
|
|
34
|
+
* Vite client polyfill (`vite__injectQuery`) are emitted as overrides that
|
|
35
|
+
* replace the would-be passthrough — those exports route through the HMR
|
|
36
|
+
* navigator instead of the vendor's native version, so the bridge must
|
|
37
|
+
* provide the override, not the discovered original.
|
|
38
|
+
*/
|
|
39
|
+
export declare function buildNsRtBridgeModule(options: NsRtBridgeOptions): string;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve the set of names the bridge should re-export for `nativescript-vue`
|
|
42
|
+
* given a project root. Static discovery via `enumeratePackageExports` is the
|
|
43
|
+
* only source — there is no curated fallback. If `nativescript-vue` is not
|
|
44
|
+
* resolvable from `projectRoot`, the returned set is empty and the bridge
|
|
45
|
+
* built from it will not emit passthroughs; the caller should treat that as
|
|
46
|
+
* the misconfiguration it is rather than mask it with a stale baseline.
|
|
47
|
+
*
|
|
48
|
+
* Caching lives inside `enumeratePackageExports`, so repeated calls in a dev
|
|
49
|
+
* session are effectively free.
|
|
50
|
+
*/
|
|
51
|
+
export declare function discoverNsvBridgeExports(projectRoot: string): Set<string>;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { enumeratePackageExports } from '../helpers/package-exports.js';
|
|
2
|
+
// Exports the bridge replaces with HMR-routed implementations — discovery
|
|
3
|
+
// must not emit a plain passthrough for these names or the override would be
|
|
4
|
+
// shadowed and navigation would silently fall back to the vendor's native
|
|
5
|
+
// version (which doesn't know about the HMR app navigator).
|
|
6
|
+
const NSV_SHIM_OVERRIDES = new Set(['$navigateTo', '$navigateBack', '$showModal', 'vite__injectQuery']);
|
|
7
|
+
// Bridge-internal identifiers that would clash with the emitted preamble if
|
|
8
|
+
// the vendor package happens to publish a colliding name.
|
|
9
|
+
const RESERVED_BRIDGE_LOCALS = new Set(['__realm', '__cached_rt', '__cached_vm', '__ensure', '__get', 'default']);
|
|
10
|
+
const IDENT_RE = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
11
|
+
/**
|
|
12
|
+
* Build the `/ns/rt` runtime bridge module text.
|
|
13
|
+
*
|
|
14
|
+
* Single-realm policy: every named export the vendor package publishes
|
|
15
|
+
* appears as `export const X = (__ensure().X);` — a constant binding, not a
|
|
16
|
+
* function wrapper. Constant bindings preserve identity for Vue's Symbol
|
|
17
|
+
* markers (`Fragment`, `Teleport`, …) AND work transparently for functions
|
|
18
|
+
* (`ref`, `createApp`, …) since the user code calls the underlying value
|
|
19
|
+
* directly. Calling `__ensure()` at module evaluation time is safe because
|
|
20
|
+
* the vendor bundle is registered earlier in the boot graph (vendor.mjs →
|
|
21
|
+
* `__nsVendorRegistry`), and the bridge resolves the same `nativescript-vue`
|
|
22
|
+
* record everyone else uses.
|
|
23
|
+
*
|
|
24
|
+
* HMR-specific shims (`$navigateTo`, `$navigateBack`, `$showModal`) and the
|
|
25
|
+
* Vite client polyfill (`vite__injectQuery`) are emitted as overrides that
|
|
26
|
+
* replace the would-be passthrough — those exports route through the HMR
|
|
27
|
+
* navigator instead of the vendor's native version, so the bridge must
|
|
28
|
+
* provide the override, not the discovered original.
|
|
29
|
+
*/
|
|
30
|
+
export function buildNsRtBridgeModule(options) {
|
|
31
|
+
// Sort for stable output — useful for diffing the served bridge across requests.
|
|
32
|
+
const passthrough = new Set();
|
|
33
|
+
for (const name of options.vendorExports) {
|
|
34
|
+
if (typeof name === 'string' && IDENT_RE.test(name) && !NSV_SHIM_OVERRIDES.has(name) && !RESERVED_BRIDGE_LOCALS.has(name)) {
|
|
35
|
+
passthrough.add(name);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const passthroughNames = Array.from(passthrough).sort();
|
|
39
|
+
const passthroughExports = passthroughNames.map((n) => `export const ${n} = (__ensure().${n});`).join('\n');
|
|
40
|
+
const defaultListing = passthroughNames.concat(['$navigateTo', '$navigateBack', '$showModal', 'vite__injectQuery']).join(', ');
|
|
41
|
+
const code = `// [ns-rt][v2.4] NativeScript-Vue runtime bridge (module-scoped cache, no globals)\n` +
|
|
42
|
+
`// Single-realm policy: every export is a constant binding off the vendor module's\n` +
|
|
43
|
+
`// canonical instance, so app code, plugins, and the vendor bundle itself share one\n` +
|
|
44
|
+
`// module record. The set of exports below is derived from the package's static ESM\n` +
|
|
45
|
+
`// shape (see hmr/helpers/package-exports.ts), not a hand-curated list, so any symbol\n` +
|
|
46
|
+
`// the vendor publishes flows through automatically.\n` +
|
|
47
|
+
`const __origin = ((typeof globalThis !== 'undefined' && globalThis && globalThis.__NS_HTTP_ORIGIN__) || (new URL(import.meta.url)).origin);\n` +
|
|
48
|
+
// Use the canonical, unversioned `/ns/core` URL so this dynamic import
|
|
49
|
+
// shares an iOS HTTP-ESM module record (and therefore a single class-
|
|
50
|
+
// identity realm) with vendor `require('@nativescript/core')` lookups
|
|
51
|
+
// resolved via the runtime import map, plus every app-side import that
|
|
52
|
+
// goes through the core bridge. The `rtVer` is intentionally unused.
|
|
53
|
+
`let __ns_core_bridge = null; try { import(__origin + "/ns/core").then(m => { __ns_core_bridge = m; }).catch(() => {}); } catch {}\n` +
|
|
54
|
+
`const g = globalThis;\n` +
|
|
55
|
+
`const reg = (g.__nsVendorRegistry ||= new Map());\n` +
|
|
56
|
+
`const req = reg && reg.get ? (g.__nsVendorRequire || g.__nsRequire || g.require) : (g.__nsRequire || g.require);\n` +
|
|
57
|
+
`let __cached_rt = null;\n` +
|
|
58
|
+
`let __cached_vm = null;\n` +
|
|
59
|
+
`const __RT_REALM_TAG = (globalThis.__NS_RT_REALM__ ||= Math.random().toString(36).slice(2));\n` +
|
|
60
|
+
`try { if (!(globalThis.__NS_RT_ONCE__ && globalThis.__NS_RT_ONCE__.eval)) { (globalThis.__NS_RT_ONCE__ ||= {}).eval = true; if (globalThis.__NS_ENV_VERBOSE__) console.log('[ns-rt] evaluated', { rtRealm: __RT_REALM_TAG }); } } catch {}\n` +
|
|
61
|
+
`function __ensure(){\n` +
|
|
62
|
+
` if (__cached_rt) return __cached_rt;\n` +
|
|
63
|
+
` let vm = null;\n` +
|
|
64
|
+
` try { vm = reg && reg.has && reg.has('nativescript-vue') ? reg.get('nativescript-vue') : (typeof req==='function' ? req('nativescript-vue') : null); } catch {}\n` +
|
|
65
|
+
` if (!vm) { try { vm = reg && reg.has && reg.has('vue') ? reg.get('vue') : (typeof req==='function' ? req('vue') : null); } catch {} }\n` +
|
|
66
|
+
` const rt = (vm && (vm.default ?? vm)) || {};\n` +
|
|
67
|
+
` __cached_vm = vm;\n` +
|
|
68
|
+
` __cached_rt = rt;\n` +
|
|
69
|
+
` return rt;\n` +
|
|
70
|
+
`}\n` +
|
|
71
|
+
// Soft-globals for @nativescript/core when missing (dev-only safety).
|
|
72
|
+
// This stays even with the auto-derived passthrough because Frame /
|
|
73
|
+
// Page / Application aren't `nativescript-vue` exports — they're
|
|
74
|
+
// hoisted onto `globalThis` so the navigation shims (and any legacy
|
|
75
|
+
// `global.Frame.topmost()`-style call site inside the vendor bundle)
|
|
76
|
+
// see the same identities served by `/ns/core`.
|
|
77
|
+
`try {\n` +
|
|
78
|
+
` const dev = typeof __DEV__ !== 'undefined' ? __DEV__ : true;\n` +
|
|
79
|
+
` if (dev) {\n` +
|
|
80
|
+
` const ns = (__ns_core_bridge && (__ns_core_bridge.__esModule && __ns_core_bridge.default ? __ns_core_bridge.default : (__ns_core_bridge.default || __ns_core_bridge))) || __ns_core_bridge || {};\n` +
|
|
81
|
+
` if (ns) {\n` +
|
|
82
|
+
` if (!g.Frame && ns.Frame) g.Frame = ns.Frame;\n` +
|
|
83
|
+
` if (!g.Page && ns.Page) g.Page = ns.Page;\n` +
|
|
84
|
+
` if (!g.Application && (ns.Application||ns.app||ns.application)) g.Application = (ns.Application||ns.app||ns.application);\n` +
|
|
85
|
+
` }\n` +
|
|
86
|
+
` }\n` +
|
|
87
|
+
`} catch {}\n` +
|
|
88
|
+
`export const __realm = __RT_REALM_TAG;\n` +
|
|
89
|
+
// Auto-emitted passthrough exports. Discovery-driven, sorted, dedupe'd.
|
|
90
|
+
passthroughExports +
|
|
91
|
+
`\n` +
|
|
92
|
+
// HMR-routed navigation helpers (replace the would-be passthroughs).
|
|
93
|
+
// These run through `globalThis.__nsNavigateUsingApp` etc. instead of
|
|
94
|
+
// the vendor's native navigation, so HMR can re-route navigation
|
|
95
|
+
// targets after module updates.
|
|
96
|
+
`export const $navigateTo = (...a) => { const vm = (__cached_vm || (void __ensure(), __cached_vm)); const rt = __ensure(); try { if (!(g && g.Frame)) { const ns = (__ns_core_bridge && (__ns_core_bridge.__esModule && __ns_core_bridge.default ? __ns_core_bridge.default : (__ns_core_bridge.default || __ns_core_bridge))) || __ns_core_bridge || {}; if (ns) { if (!g.Frame && ns.Frame) g.Frame = ns.Frame; if (!g.Page && ns.Page) g.Page = ns.Page; if (!g.Application && (ns.Application||ns.app||ns.application)) g.Application = (ns.Application||ns.app||ns.application); } } } catch {} try { const hmrRealm = (g && g.__NS_HMR_REALM__) || 'unknown'; const hasTop = !!(g && g.Frame && g.Frame.topmost && g.Frame.topmost()); const top = hasTop ? g.Frame.topmost() : null; const ctor = top && top.constructor && top.constructor.name; } catch {} if (g && typeof g.__nsNavigateUsingApp === 'function') { try { return g.__nsNavigateUsingApp(...a); } catch (e) { console.error('[ns-rt] $navigateTo app navigator error', e); throw e; } } console.error('[ns-rt] $navigateTo unavailable: app navigator missing'); throw new Error('$navigateTo unavailable: app navigator missing'); } ;\n` +
|
|
97
|
+
`export const $navigateBack = (...a) => { const vm = (__cached_vm || (void __ensure(), __cached_vm)); const rt = __ensure(); const impl = (vm && (vm.$navigateBack || (vm.default && vm.default.$navigateBack))) || (rt && (rt.$navigateBack || (rt.runtimeHelpers && rt.runtimeHelpers.navigateBack))); let res; try { const via = (impl && (impl === (vm && vm.$navigateBack) || impl === (vm && vm.default && vm.default.$navigateBack))) ? 'vm' : (impl ? 'rt' : 'none'); } catch {} try { if (typeof impl === 'function') res = impl(...a); } catch {} try { const top = (g && g.Frame && g.Frame.topmost && g.Frame.topmost()); if (!res && top && top.canGoBack && top.canGoBack()) { res = top.goBack(); } } catch {} try { const hook = g && (g.__NS_HMR_ON_NAVIGATE_BACK || g.__NS_HMR_ON_BACK || g.__nsAttemptBackRemount); if (typeof hook === 'function') hook(); } catch {} return res; }\n` +
|
|
98
|
+
`export const $showModal = (...a) => { const vm = (__cached_vm || (void __ensure(), __cached_vm)); const rt = __ensure(); const impl = (vm && (vm.$showModal || (vm.default && vm.default.$showModal))) || (rt && (rt.$showModal || (rt.runtimeHelpers && rt.runtimeHelpers.showModal))); try { if (typeof impl === 'function') return impl(...a); } catch (e) { } return undefined; }\n` +
|
|
99
|
+
// Vite client polyfill — see the comment in websocket.ts for full rationale.
|
|
100
|
+
`export const vite__injectQuery = (url, queryToInject) => {\n` +
|
|
101
|
+
` if (typeof url !== 'string') return url;\n` +
|
|
102
|
+
` if (url[0] !== '.' && url[0] !== '/') return url;\n` +
|
|
103
|
+
` const pathname = url.replace(/[?#].*$/, '');\n` +
|
|
104
|
+
` let search = '', hash = '';\n` +
|
|
105
|
+
` try { const u = new URL(url, 'http://vite.dev'); search = u.search || ''; hash = u.hash || ''; } catch {}\n` +
|
|
106
|
+
` return pathname + '?' + queryToInject + (search ? '&' + search.slice(1) : '') + (hash || '');\n` +
|
|
107
|
+
`};\n` +
|
|
108
|
+
`export default { ${defaultListing} };\n`;
|
|
109
|
+
return options.requireGuardSnippet + code;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Resolve the set of names the bridge should re-export for `nativescript-vue`
|
|
113
|
+
* given a project root. Static discovery via `enumeratePackageExports` is the
|
|
114
|
+
* only source — there is no curated fallback. If `nativescript-vue` is not
|
|
115
|
+
* resolvable from `projectRoot`, the returned set is empty and the bridge
|
|
116
|
+
* built from it will not emit passthroughs; the caller should treat that as
|
|
117
|
+
* the misconfiguration it is rather than mask it with a stale baseline.
|
|
118
|
+
*
|
|
119
|
+
* Caching lives inside `enumeratePackageExports`, so repeated calls in a dev
|
|
120
|
+
* session are effectively free.
|
|
121
|
+
*/
|
|
122
|
+
export function discoverNsvBridgeExports(projectRoot) {
|
|
123
|
+
const out = new Set();
|
|
124
|
+
const shape = enumeratePackageExports('nativescript-vue', projectRoot);
|
|
125
|
+
for (const n of shape.names) {
|
|
126
|
+
if (typeof n === 'string' && IDENT_RE.test(n))
|
|
127
|
+
out.add(n);
|
|
128
|
+
}
|
|
129
|
+
return out;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=ns-rt-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ns-rt-bridge.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/ns-rt-bridge.ts"],"names":[],"mappings":"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"}
|