nativescript-vue 3.0.0-beta.7 → 3.0.0-beta.9

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 CHANGED
@@ -30,6 +30,24 @@ cd myAwesomeApp
30
30
  ns run ios|android
31
31
  ```
32
32
 
33
+ ## Vue Devtools
34
+
35
+ To use VueDevtools, run:
36
+
37
+ ```bash
38
+ ns run ios|android --env.vueDevtools
39
+ ```
40
+
41
+ This will launch the standalone VueDevtools, and connect to it once the app launches. Right now, devtools are only supported on iOS Simulators and Android Emulators, but physical device support should come soon (requires configuring a host/port that the device can connect to.).
42
+
43
+ On android, you must enable cleartext http traffic, otherwise any connections are silently dropped by the system. In the `App_Resources/Android/src/main/AndroidManifext.xml` add the following to your existing `<application>` tag:
44
+
45
+ ```diff
46
+ <application ...
47
+ + android:usesCleartextTraffic="true"
48
+ .../>
49
+ ```
50
+
33
51
  ## Issues
34
52
 
35
53
  If you encounter any issues, please open a new issue with as much detail as possible. This is **beta** software, so there might be bugs.
package/devtools.js ADDED
@@ -0,0 +1,33 @@
1
+ if (__DEV__) {
2
+ try {
3
+ const _global = globalThis.global;
4
+
5
+ const host = (_global.__VUE_DEVTOOLS_HOST__ ??= __NS_VUE_DEVTOOLS_HOST__);
6
+ const port = (_global.__VUE_DEVTOOLS_PORT__ ??= __NS_VUE_DEVTOOLS_PORT__);
7
+ _global.__VUE_DEVTOOLS_TOAST__ ??= (message) => {
8
+ console.warn('[VueDevtools]', message);
9
+ };
10
+
11
+ const platform = global.isAndroid ? 'Android' : 'iOS';
12
+
13
+ const documentShim = {
14
+ // this shows as the title in VueDevtools
15
+ title: `${platform} :: ${host}:${port} :: NativeScript`,
16
+ querySelector: () => null,
17
+ querySelectorAll: () => [],
18
+ };
19
+
20
+ _global.document = Object.assign({}, documentShim, _global.document);
21
+ _global.addEventListener ??= () => {};
22
+ _global.removeEventListener ??= () => {};
23
+ _global.window ??= _global;
24
+
25
+ console.warn(
26
+ `[VueDevtools] Connecting to ${global.__VUE_DEVTOOLS_HOST__}:${global.__VUE_DEVTOOLS_PORT__}...`,
27
+ );
28
+ require('@vue/devtools/build/hook.js');
29
+ require('@vue/devtools/build/backend.js');
30
+ } catch (e) {
31
+ console.warn('[VueDevtools] Failed to init:', e);
32
+ }
33
+ }
@@ -44,6 +44,7 @@ registerElement('NSCActionBar', () => NSCActionBar, {
44
44
  },
45
45
  });
46
46
  export const ActionBar = /*#__PURE__*/ defineComponent({
47
+ name: 'ActionBar',
47
48
  setup(props, ctx) {
48
49
  return () => {
49
50
  return h('NSCActionBar', {
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBar.js","sourceRoot":"","sources":["../../src/components/ActionBar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActionBar.js","sourceRoot":"","sources":["../../src/components/ActionBar.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ function getListItem(item, index) {
15
15
  }
16
16
  const LIST_CELL_ID = Symbol('list_cell_id');
17
17
  export const ListView = /*#__PURE__*/ defineComponent({
18
+ name: 'ListView',
18
19
  props: {
19
20
  items: {
20
21
  validator(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"ListView.js","sourceRoot":"","sources":["../../src/components/ListView.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListView.js","sourceRoot":"","sources":["../../src/components/ListView.ts"],"names":[],"mappings":"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"}
package/dist/dom/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { markRaw } from "@vue/runtime-core";
1
+ import { markRaw } from '@vue/runtime-core';
2
2
  import { getViewClass, getViewMeta, normalizeElementName, } from '../registry';
3
3
  import { ELEMENT_REF } from '../runtimeHelpers';
4
4
  import setValue from 'set-value';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { CreateAppFunction } from '@vue/runtime-core';
2
+ import { createBlock as createBlockCore, createElementBlock as createElementBlockCore, createElementVNode as createElementVNodeCore, createVNode as createVNodeCore } from '@vue/runtime-core';
2
3
  import { NSVElement, NSVRoot } from './dom';
3
4
  import { registerElement } from './registry';
4
5
  declare module '@vue/runtime-core' {
@@ -20,3 +21,7 @@ export { $navigateTo, $navigateBack } from './plugins/navigation';
20
21
  export declare const render: import("@vue/runtime-core").RootRenderFunction<import("@vue/runtime-core").RendererElement>;
21
22
  export declare const createApp: CreateAppFunction<NSVElement>;
22
23
  export declare function resolveComponent(name: string, maybeSelReference: boolean): any;
24
+ export declare const createBlock: typeof createBlockCore;
25
+ export declare const createElementBlock: typeof createElementBlockCore;
26
+ export declare const createElementVNode: typeof createElementVNodeCore;
27
+ export declare const createVNode: typeof createVNodeCore;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { resolveComponent as resolveComponentCore } from '@vue/runtime-core';
1
+ import { createBlock as createBlockCore, createElementBlock as createElementBlockCore, createElementVNode as createElementVNodeCore, createVNode as createVNodeCore, resolveComponent as resolveComponentCore, } from '@vue/runtime-core';
2
2
  import { BUILT_IN_COMPONENTS } from './components';
3
3
  import { NSVRoot } from './dom';
4
4
  import { init, resetRoot, startApp } from './nativescript';
@@ -6,7 +6,7 @@ import { renderer } from './renderer';
6
6
  import { install as modalsPlugin } from './plugins/modals';
7
7
  import { install as navigationPlugin } from './plugins/navigation';
8
8
  import { isKnownView, registerElement } from './registry';
9
- import { setRootContext } from './runtimeHelpers';
9
+ import { setRootApp } from './runtimeHelpers';
10
10
  init();
11
11
  export * from './dom';
12
12
  export * from './registry';
@@ -51,7 +51,7 @@ export const createApp = ((...args) => {
51
51
  app.start = () => {
52
52
  const componentInstance = app.mount(createAppRoot(), false, false);
53
53
  startApp(componentInstance);
54
- setRootContext(componentInstance.$.appContext);
54
+ setRootApp(app);
55
55
  return componentInstance;
56
56
  };
57
57
  app.use(modalsPlugin);
@@ -68,4 +68,34 @@ export function resolveComponent(name, maybeSelReference) {
68
68
  const component = resolveComponentCore(name, maybeSelReference);
69
69
  return component;
70
70
  }
71
+ /**
72
+ * Checks if the type has a constructor.name that matches a known view or built-in component
73
+ * If so, returns the name of the view or component. This allows {N} element imports to be
74
+ * used inside script setup context without requiring aliasing.
75
+ */
76
+ function maybeConvertToKnownComponentOrViewName(type) {
77
+ const name = type?.prototype?.constructor?.name;
78
+ if (name) {
79
+ if (BUILT_IN_COMPONENTS[name]) {
80
+ return BUILT_IN_COMPONENTS[name];
81
+ }
82
+ if (isKnownView(name)) {
83
+ return name;
84
+ }
85
+ }
86
+ return type;
87
+ }
88
+ /**
89
+ * Wraps the original function and replaces the first argument if it matches
90
+ * a known view or built-in component.
91
+ */
92
+ function wrapCreate(originalFunction) {
93
+ return ((type, ...args) => {
94
+ return originalFunction(maybeConvertToKnownComponentOrViewName(type), ...args);
95
+ });
96
+ }
97
+ export const createBlock = wrapCreate(createBlockCore);
98
+ export const createElementBlock = wrapCreate(createElementBlockCore);
99
+ export const createElementVNode = wrapCreate(createElementVNodeCore);
100
+ export const createVNode = wrapCreate(createVNodeCore);
71
101
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,IAAI,eAAe,EAC9B,kBAAkB,IAAI,sBAAsB,EAC5C,kBAAkB,IAAI,sBAAsB,EAC5C,WAAW,IAAI,eAAe,EAC9B,gBAAgB,IAAI,oBAAoB,GACzC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAc,OAAO,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAc9C,IAAI,EAAE,CAAC;AAEP,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAElE,sFAAsF;AACtF,SAAS,aAAa;IACpB,MAAM,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;IAElC,kDAAkD;IAClD,8DAA8D;IAC9D,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE9D,WAAW,CAAC,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE;QAC/B,WAAW,CAAC,EAAE,CAAC,CAAC;QAEhB,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC,CAAC;IAEF,WAAW,CAAC,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE;QAC/B,WAAW,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,eAAe,EAAE;YACnB,SAAS,CAAE,EAAiB,CAAC,UAAU,CAAC,CAAC;SAC1C;IACH,CAAC,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE;IACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAEtB,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC;IAEtC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO,KAAK,CAAC,IAAI,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC3C;QACD,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE;QACf,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAEnE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAC5B,UAAU,CAAC,GAAG,CAAC,CAAC;QAEhB,OAAO,iBAAiB,CAAC;IAC3B,CAAC,CAAC;IAEF,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE1B,OAAO,GAAG,CAAC;AACb,CAAC,CAAkC,CAAC;AAEpC,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,iBAA0B;IACvE,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE;QAC7B,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;KAClC;IAED,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;QACrB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAChE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAS,sCAAsC,CAAC,IAAS;IACvD,MAAM,IAAI,GAAG,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC;IAChD,IAAI,IAAI,EAAE;QACR,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE;YAC7B,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;SAClC;QAED,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;YACrB,OAAO,IAAI,CAAC;SACb;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAI,gBAAmB;IACxC,OAAO,CAAC,CAAC,IAAS,EAAE,GAAG,IAAS,EAAE,EAAE;QAClC,OAAQ,gBAAwB,CAC9B,sCAAsC,CAAC,IAAI,CAAC,EAC5C,GAAG,IAAI,CACR,CAAC;IACJ,CAAC,CAAM,CAAC;AACV,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,WAAW,GAA2B,UAAU,CAAC,eAAe,CAAC,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { Application } from '@nativescript/core';
2
2
  import { registerCoreElements } from './elements';
3
- // export all ns stuff in a single file to allow easy mocking for testing...
4
3
  export function init() {
5
4
  registerCoreElements();
6
5
  global.__onLiveSyncCore = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nativescript/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAQ,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,4EAA4E;AAE5E,MAAM,UAAU,IAAI;IAClB,oBAAoB,EAAE,CAAC;IAEvB,MAAM,CAAC,gBAAgB,GAAG,GAAG,EAAE;QAC7B,WAAW,CAAC,WAAW,EAAE,EAAE,iBAAiB,EAAE,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,aAAsC;IAC7D,WAAW,CAAC,GAAG,CAAC;QACd,MAAM;YACJ,OAAO,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QACtC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAU;IAClC,WAAW,CAAC,aAAa,CAAC;QACxB,MAAM;YACJ,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEtD,kCAAkC;AAClC,8BAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nativescript/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAQ,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAMlD,MAAM,UAAU,IAAI;IAClB,oBAAoB,EAAE,CAAC;IAEvB,MAAM,CAAC,gBAAgB,GAAG,GAAG,EAAE;QAC7B,WAAW,CAAC,WAAW,EAAE,EAAE,iBAAiB,EAAE,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,aAAsC;IAC7D,WAAW,CAAC,GAAG,CAAC;QACd,MAAM;YACJ,OAAO,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QACtC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAU;IAClC,WAAW,CAAC,aAAa,CAAC;QACxB,MAAM;YACJ,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEtD,kCAAkC;AAClC,8BAA8B"}
@@ -1,10 +1,22 @@
1
1
  import { View } from '@nativescript/core';
2
- import { AppContext, Component, RendererElement, RendererNode, VNode } from '@vue/runtime-core';
2
+ import { App, Component, RendererElement, RendererNode, VNode } from '@vue/runtime-core';
3
3
  import { NSVNode } from './dom';
4
4
  type Props = Record<string, unknown>;
5
- export declare const setRootContext: (context: AppContext) => void;
6
- export declare const createNativeView: <T = View>(component: Component, props?: Props, contextOverrides?: any) => {
7
- context: any;
5
+ export declare const setRootApp: (app: App) => void;
6
+ export declare const createNativeView: <T = View>(component: Component, props?: Props, contextOverrides?: {
7
+ reload?(): void;
8
+ }) => {
9
+ context: {
10
+ reload?(): void;
11
+ config: import("@vue/runtime-core").AppConfig;
12
+ mixins: import("@vue/runtime-core").ComponentOptions<{}, any, any, any, any, any, any, any, any>[];
13
+ components: Record<string, Component<any, any, any, import("@vue/runtime-core").ComputedOptions, import("@vue/runtime-core").MethodOptions>>;
14
+ directives: Record<string, import("@vue/runtime-core").Directive<any, any>>;
15
+ provides: Record<string | symbol, any>;
16
+ };
17
+ readonly vnode: VNode<RendererNode, RendererElement, {
18
+ [key: string]: any;
19
+ }>;
8
20
  readonly nativeView: T;
9
21
  mount(root?: NSVNode): VNode<RendererNode, RendererElement, {
10
22
  nativeView: T;
@@ -1,39 +1,40 @@
1
- import { h, } from '@vue/runtime-core';
2
1
  import { NSVRoot } from './dom';
3
2
  import { renderer } from './renderer';
4
3
  const __DEV__ = true;
5
- let rootContext = null;
6
- export const setRootContext = (context) => {
7
- rootContext = context;
4
+ let rootApp = null;
5
+ export const setRootApp = (app) => {
6
+ rootApp = app;
8
7
  };
9
8
  export const createNativeView = (component, props, contextOverrides) => {
10
- let vnode;
11
9
  let isMounted = false;
12
- let container;
10
+ const newApp = renderer.createApp(component, props);
11
+ // Destructure so as not to copy over the root app instance
12
+ const { app, ...rootContext } = rootApp._context;
13
13
  const context = { ...rootContext, ...contextOverrides };
14
14
  return {
15
15
  context,
16
+ get vnode() {
17
+ return newApp._instance?.vnode;
18
+ },
16
19
  get nativeView() {
17
- return vnode.el.nativeView;
20
+ return this.vnode?.el.nativeView;
18
21
  },
19
22
  mount(root = new NSVRoot()) {
20
23
  if (isMounted) {
21
- return vnode;
24
+ return this.vnode;
22
25
  }
23
- vnode = h(component, props);
24
- vnode.appContext = context;
25
- renderer.render(vnode, root);
26
+ Object.keys(context).forEach((key) => {
27
+ newApp._context[key] = context[key];
28
+ });
29
+ newApp.mount(root);
26
30
  isMounted = true;
27
- container = root;
28
- return vnode;
31
+ return this.vnode;
29
32
  },
30
33
  unmount() {
31
34
  if (!isMounted)
32
35
  return;
33
- vnode = null;
34
- renderer.render(null, container);
36
+ newApp.unmount();
35
37
  isMounted = false;
36
- container = null;
37
38
  },
38
39
  };
39
40
  };
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeHelpers.js","sourceRoot":"","sources":["../src/runtimeHelpers.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,CAAC,GAIF,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,MAAM,OAAO,GAAG,IAAI,CAAC;AAErB,IAAI,WAAW,GAAe,IAAI,CAAC;AAEnC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAmB,EAAE,EAAE;IACpD,WAAW,GAAG,OAAO,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,SAAoB,EACpB,KAAa,EACb,gBAAsB,EACtB,EAAE;IACF,IAAI,KAAY,CAAC;IACjB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,SAAkB,CAAC;IACvB,MAAM,OAAO,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAIxD,OAAO;QACL,OAAO;QACP,IAAI,UAAU;YACZ,OAAO,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,OAAgB,IAAI,OAAO,EAAE;YACjC,IAAI,SAAS,EAAE;gBACb,OAAO,KAAU,CAAC;aACnB;YAED,KAAK,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAE5B,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC;YAE3B,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE7B,SAAS,GAAG,IAAI,CAAC;YACjB,SAAS,GAAG,IAAI,CAAC;YAEjB,OAAO,KAAU,CAAC;QACpB,CAAC;QACD,OAAO;YACL,IAAI,CAAC,SAAS;gBAAE,OAAO;YACvB,KAAK,GAAG,IAAI,CAAC;YACb,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACjC,SAAS,GAAG,KAAK,CAAC;YAClB,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE/D,MAAM,IAAI,GAAG,OAAO,CAAC;AACrB,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAW,EAAE;IACnD,OAAO,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,YAAY,OAAO,CAAC;AAChE,CAAC,CAAC"}
1
+ {"version":3,"file":"runtimeHelpers.js","sourceRoot":"","sources":["../src/runtimeHelpers.ts"],"names":[],"mappings":"AAQA,OAAO,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,MAAM,OAAO,GAAG,IAAI,CAAC;AAErB,IAAI,OAAO,GAAQ,IAAI,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAE,EAAE;IACrC,OAAO,GAAG,GAAG,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,SAAoB,EACpB,KAAa,EACb,gBAAsC,EACtC,EAAE;IACF,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpD,2DAA2D;IAC3D,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IACjD,MAAM,OAAO,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAIxD,OAAO;QACL,OAAO;QACP,IAAI,KAAK;YACP,OAAO,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;QACjC,CAAC;QACD,IAAI,UAAU;YACZ,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC;QACnC,CAAC;QACD,KAAK,CAAC,OAAgB,IAAI,OAAO,EAAE;YACjC,IAAI,SAAS,EAAE;gBACb,OAAO,IAAI,CAAC,KAAU,CAAC;aACxB;YAED,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEnB,SAAS,GAAG,IAAI,CAAC;YAEjB,OAAO,IAAI,CAAC,KAAU,CAAC;QACzB,CAAC;QACD,OAAO;YACL,IAAI,CAAC,SAAS;gBAAE,OAAO;YAEvB,MAAM,CAAC,OAAO,EAAE,CAAC;YAEjB,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE/D,MAAM,IAAI,GAAG,OAAO,CAAC;AACrB,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAW,EAAE;IACnD,OAAO,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,YAAY,OAAO,CAAC;AAChE,CAAC,CAAC"}
@@ -1,4 +1,61 @@
1
1
  const { VueLoaderPlugin } = require('vue-loader');
2
+ const spawn = require('cross-spawn');
3
+
4
+ function findFreePort(startingPort = 8098) {
5
+ let found = false;
6
+ let port = startingPort;
7
+
8
+ const isPortFree = (port) =>
9
+ new Promise((resolve) => {
10
+ const server = require('http')
11
+ .createServer()
12
+ .listen(port, '0.0.0.0', () => {
13
+ server.close();
14
+ resolve(true);
15
+ })
16
+ .on('error', () => {
17
+ resolve(false);
18
+ });
19
+ });
20
+
21
+ const findFreePort = () => {
22
+ isPortFree(port).then((isFree) => {
23
+ if (!isFree) {
24
+ port++;
25
+ return findFreePort();
26
+ }
27
+ found = true;
28
+ });
29
+ };
30
+
31
+ findFreePort();
32
+
33
+ while (!found) {
34
+ process._tickCallback();
35
+ const start = Date.now();
36
+ while (Date.now() - start < 100) {
37
+ // busy wait... not ideal, but we need to find a port synchronously...
38
+ }
39
+ }
40
+
41
+ return port;
42
+ }
43
+
44
+ function startVueDevtools(port, isAndroid = false) {
45
+ console.log(`[VueDevtools] Starting standalone Vue Devtools on port ${port}`);
46
+ if (isAndroid) {
47
+ console.log(
48
+ `[VueDevtools] If the app doesn't automatically connect, check if http traffic is allowed. (e.g. on Android, you may need to set android:usesCleartextTraffic="true" in AndroidManifest.xml)`,
49
+ );
50
+ }
51
+ spawn(require.resolve('@vue/devtools/bin.js'), [], {
52
+ stdio: 'ignore',
53
+ env: {
54
+ ...process.env,
55
+ PORT: port,
56
+ },
57
+ });
58
+ }
2
59
 
3
60
  /**
4
61
  * @param {typeof import("@nativescript/webpack")} webpack
@@ -6,7 +63,46 @@ const { VueLoaderPlugin } = require('vue-loader');
6
63
  module.exports = (webpack) => {
7
64
  webpack.useConfig('vue');
8
65
 
9
- webpack.chainWebpack((config) => {
66
+ webpack.chainWebpack((config, env) => {
67
+ const additionalDefines = {
68
+ __VUE_PROD_DEVTOOLS__: false,
69
+ };
70
+
71
+ // todo: support configuring the devtools host/port from the nativescript.config.ts...
72
+ if (!!env.vueDevtools) {
73
+ // find a free port for the devtools
74
+ const vueDevtoolsPort = findFreePort(8098);
75
+ const isAndroid = webpack.Utils.platform.getPlatformName() === 'android';
76
+
77
+ // on android simulators, localhost is not the host machine...
78
+ const vueDevtoolsHost = isAndroid
79
+ ? 'http://10.0.2.2'
80
+ : 'http://localhost';
81
+
82
+ additionalDefines['__VUE_PROD_DEVTOOLS__'] = true;
83
+ additionalDefines['__NS_VUE_DEVTOOLS_HOST__'] =
84
+ JSON.stringify(vueDevtoolsHost);
85
+ additionalDefines['__NS_VUE_DEVTOOLS_PORT__'] = vueDevtoolsPort;
86
+
87
+ const devtoolsEntryPath = require.resolve('./devtools.js');
88
+ const entryPath = webpack.Utils.platform.getEntryPath();
89
+ const paths = config.entry('bundle').values();
90
+ const entryIndex = paths.indexOf(entryPath);
91
+
92
+ if (entryIndex === -1) {
93
+ // if the app entry is not found, add the devtools entry at the beginning - generally should not happen, but just in case.
94
+ paths.unshift(entryPath);
95
+ } else {
96
+ // insert devtools entry before the app entry, but after globals etc.
97
+ paths.splice(entryIndex, 0, devtoolsEntryPath);
98
+ }
99
+
100
+ config.entry('bundle').clear().merge(paths);
101
+
102
+ // start the devtools...
103
+ startVueDevtools(vueDevtoolsPort, isAndroid);
104
+ }
105
+
10
106
  // resolve any imports from "vue" to "nativescript-vue"
11
107
  config.resolve.alias.set('vue', 'nativescript-vue');
12
108
 
@@ -41,7 +137,7 @@ module.exports = (webpack) => {
41
137
  config.plugin('DefinePlugin').tap((args) => {
42
138
  Object.assign(args[0], {
43
139
  __VUE_OPTIONS_API__: true,
44
- __VUE_PROD_DEVTOOLS__: false,
140
+ ...additionalDefines,
45
141
  });
46
142
 
47
143
  return args;
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "nativescript-vue",
3
- "version": "3.0.0-beta.7",
3
+ "version": "3.0.0-beta.9",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist/",
7
+ "devtools.js",
7
8
  "nativescript.webpack.js"
8
9
  ],
9
10
  "license": "MIT",
@@ -11,26 +12,32 @@
11
12
  "build": "tsc",
12
13
  "format": "prettier --write .",
13
14
  "format:check": "prettier --check .",
14
- "prepare": "husky install",
15
+ "prepare": "simple-git-hooks",
15
16
  "prepack": "npm run build"
16
17
  },
17
18
  "dependencies": {
18
- "@vue/compiler-sfc": "^3.2.47",
19
- "@vue/runtime-core": "^3.2.47",
20
- "@vue/shared": "^3.2.47",
19
+ "@vue/compiler-sfc": "^3.3.4",
20
+ "@vue/devtools": "^6.5.0",
21
+ "@vue/runtime-core": "^3.3.4",
22
+ "@vue/shared": "^3.3.4",
23
+ "cross-spawn": "^7.0.3",
21
24
  "set-value": "^4.1.0",
22
- "vue-loader": "^17.1.0"
25
+ "vue-loader": "^17.2.2"
23
26
  },
24
27
  "devDependencies": {
25
- "@commitlint/cli": "^17.6.3",
26
- "@commitlint/config-conventional": "^17.6.3",
27
- "@nativescript/core": "~8.5.0",
28
- "@nativescript/webpack": "~5.0.14",
29
- "esbuild": "^0.17.19",
30
- "husky": "^8.0.3",
31
- "lint-staged": "^13.2.2",
32
- "prettier": "^2.8.8",
33
- "typescript": "^4.9.5"
28
+ "@commitlint/cli": "^17.7.1",
29
+ "@commitlint/config-conventional": "^17.7.0",
30
+ "@nativescript/core": "~8.5.9",
31
+ "@nativescript/webpack": "~5.0.17",
32
+ "esbuild": "^0.19.2",
33
+ "lint-staged": "^14.0.1",
34
+ "prettier": "^3.0.3",
35
+ "simple-git-hooks": "^2.9.0",
36
+ "typescript": "^5.2.2"
37
+ },
38
+ "simple-git-hooks": {
39
+ "pre-commit": "npx --no-install lint-staged --config=package.json",
40
+ "commit-msg": "npx --no-install commitlint --edit"
34
41
  },
35
42
  "lint-staged": {
36
43
  "*": [