From 359f7321748236d308e36a3ac4fcfe7539c46631 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Tue, 27 Jul 2021 22:37:25 +0800 Subject: [PATCH] feat(mp): add vuex and devtools-api --- .../vue-cli-plugin-uni/lib/chain-webpack.js | 5 +- packages/vue-cli-plugin-uni/lib/env.js | 11 +- packages/vue-cli-plugin-uni/lib/mp/index.js | 15 +- .../@vue/devtools-api/lib/cjs/api/api.d.ts | 90 + .../@vue/devtools-api/lib/cjs/api/api.js | 2 + .../@vue/devtools-api/lib/cjs/api/app.d.ts | 1 + .../@vue/devtools-api/lib/cjs/api/app.js | 2 + .../devtools-api/lib/cjs/api/component.d.ts | 76 + .../devtools-api/lib/cjs/api/component.js | 2 + .../devtools-api/lib/cjs/api/context.d.ts | 5 + .../@vue/devtools-api/lib/cjs/api/context.js | 2 + .../@vue/devtools-api/lib/cjs/api/hooks.d.ts | 169 ++ .../@vue/devtools-api/lib/cjs/api/hooks.js | 2 + .../@vue/devtools-api/lib/cjs/api/index.d.ts | 6 + .../@vue/devtools-api/lib/cjs/api/index.js | 18 + .../@vue/devtools-api/lib/cjs/api/util.d.ts | 4 + .../@vue/devtools-api/lib/cjs/api/util.js | 2 + .../@vue/devtools-api/lib/cjs/const.d.ts | 1 + .../@vue/devtools-api/lib/cjs/const.js | 4 + .../@vue/devtools-api/lib/cjs/env.d.ts | 10 + .../packages/@vue/devtools-api/lib/cjs/env.js | 16 + .../@vue/devtools-api/lib/cjs/index.d.ts | 14 + .../@vue/devtools-api/lib/cjs/index.js | 31 + .../@vue/devtools-api/lib/esm/api/api.js | 0 .../@vue/devtools-api/lib/esm/api/app.js | 0 .../devtools-api/lib/esm/api/component.js | 0 .../@vue/devtools-api/lib/esm/api/context.js | 0 .../@vue/devtools-api/lib/esm/api/hooks.js | 0 .../@vue/devtools-api/lib/esm/api/index.js | 6 + .../@vue/devtools-api/lib/esm/api/util.js | 0 .../@vue/devtools-api/lib/esm/const.js | 1 + .../packages/@vue/devtools-api/lib/esm/env.js | 11 + .../@vue/devtools-api/lib/esm/index.js | 17 + .../packages/@vue/devtools-api/package.json | 38 + .../packages/vuex/CHANGELOG.md | 604 +++++++ .../vue-cli-plugin-uni/packages/vuex/LICENSE | 21 + .../packages/vuex/README.md | 55 + .../packages/vuex/dist/vuex.cjs.js | 1473 ++++++++++++++++ .../packages/vuex/dist/vuex.esm-browser.js | 1471 ++++++++++++++++ .../vuex/dist/vuex.esm-browser.prod.js | 1307 ++++++++++++++ .../packages/vuex/dist/vuex.esm-bundler.js | 1472 ++++++++++++++++ .../packages/vuex/dist/vuex.global.js | 1499 +++++++++++++++++ .../packages/vuex/dist/vuex.global.prod.js | 6 + .../packages/vuex/dist/vuex.mjs | 32 + .../packages/vuex/package.json | 99 ++ .../packages/vuex/types/helpers.d.ts | 86 + .../packages/vuex/types/index.d.ts | 167 ++ .../packages/vuex/types/logger.d.ts | 20 + .../packages/vuex/types/vue.d.ts | 12 + 49 files changed, 8873 insertions(+), 12 deletions(-) create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/api.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/api.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/app.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/app.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/component.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/component.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/context.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/context.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/hooks.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/hooks.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/index.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/index.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/util.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/util.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/const.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/const.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/env.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/env.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/index.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/index.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/api.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/app.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/component.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/context.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/hooks.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/index.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/util.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/const.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/env.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/index.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/devtools-api/package.json create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/CHANGELOG.md create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/LICENSE create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/README.md create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/dist/vuex.cjs.js create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/dist/vuex.esm-browser.js create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/dist/vuex.esm-browser.prod.js create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/dist/vuex.esm-bundler.js create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/dist/vuex.global.js create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/dist/vuex.global.prod.js create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/dist/vuex.mjs create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/package.json create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/types/helpers.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/types/index.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/types/logger.d.ts create mode 100644 packages/vue-cli-plugin-uni/packages/vuex/types/vue.d.ts diff --git a/packages/vue-cli-plugin-uni/lib/chain-webpack.js b/packages/vue-cli-plugin-uni/lib/chain-webpack.js index 9cdf55593..149682bbd 100644 --- a/packages/vue-cli-plugin-uni/lib/chain-webpack.js +++ b/packages/vue-cli-plugin-uni/lib/chain-webpack.js @@ -105,7 +105,8 @@ module.exports = function chainWebpack (platformOptions, vueOptions, api) { __UNI_WXS_API__: JSON.stringify(process.env.UNI_USING_WXS_API === 'true'), __UNI_PROMISE_API__: JSON.stringify(process.env.UNI_USING_PROMISE_API === 'true'), __VUE_OPTIONS_API__: JSON.stringify(process.env.UNI_USING_VUE3_OPTIONS_API === 'true'), - __VUE_CREATED_DEFERRED__: JSON.stringify(deferredCreated) + __VUE_CREATED_DEFERRED__: JSON.stringify(deferredCreated), + __VUE_PROD_DEVTOOLS__: JSON.stringify(false) }) } if (process.env.UNI_PLATFORM === 'h5') { @@ -139,4 +140,4 @@ module.exports = function chainWebpack (platformOptions, vueOptions, api) { webpackConfig.plugins.delete('progress') } } -} +} diff --git a/packages/vue-cli-plugin-uni/lib/env.js b/packages/vue-cli-plugin-uni/lib/env.js index 48bdbd0e3..9574cedab 100644 --- a/packages/vue-cli-plugin-uni/lib/env.js +++ b/packages/vue-cli-plugin-uni/lib/env.js @@ -2,6 +2,7 @@ const fs = require('fs') const path = require('path') const mkdirp = require('mkdirp') const loaderUtils = require('loader-utils') +const moduleAlias = require('module-alias') require('./error-reporting') @@ -16,8 +17,8 @@ if (process.env.UNI_INPUT_DIR && process.env.UNI_INPUT_DIR.indexOf('./') === 0) process.env.UNI_INPUT_DIR = path.resolve(process.cwd(), process.env.UNI_INPUT_DIR) } process.env.UNI_INPUT_DIR = process.env.UNI_INPUT_DIR || path.resolve(process.cwd(), defaultInputDir) - -const manifestJsonObj = require('@dcloudio/uni-cli-shared/lib/manifest').getManifestJson() + +const manifestJsonObj = require('@dcloudio/uni-cli-shared/lib/manifest').getManifestJson() // 小程序 vue3 标记 if (process.env.UNI_PLATFORM.indexOf('mp-') === 0) { @@ -25,10 +26,10 @@ if (process.env.UNI_PLATFORM.indexOf('mp-') === 0) { process.env.UNI_USING_VUE3 = true process.env.UNI_USING_VUE3_OPTIONS_API = true } -} +} // 初始化全局插件对象 -global.uniPlugin = require('@dcloudio/uni-cli-shared/lib/plugin').init() +global.uniPlugin = require('@dcloudio/uni-cli-shared/lib/plugin').init() const platformOptions = manifestJsonObj[process.env.UNI_SUB_PLATFORM || process.env.UNI_PLATFORM] || {} // 插件校验环境 @@ -374,8 +375,6 @@ if (process.env.NODE_ENV !== 'production') { // 运行模式性能提示 console.log(perfMsg) } -const moduleAlias = require('module-alias') - // 将 template-compiler 指向修订后的版本 moduleAlias.addAlias('vue-template-compiler', '@dcloudio/vue-cli-plugin-uni/packages/vue-template-compiler') moduleAlias.addAlias('@megalo/template-compiler', '@dcloudio/vue-cli-plugin-uni/packages/@megalo/template-compiler') diff --git a/packages/vue-cli-plugin-uni/lib/mp/index.js b/packages/vue-cli-plugin-uni/lib/mp/index.js index 1388223ea..4f2c6614f 100644 --- a/packages/vue-cli-plugin-uni/lib/mp/index.js +++ b/packages/vue-cli-plugin-uni/lib/mp/index.js @@ -181,6 +181,16 @@ module.exports = { } } + const alias = { // 仅 mp-weixin + 'mpvue-page-factory': require.resolve( + '@dcloudio/vue-cli-plugin-uni/packages/mpvue-page-factory') + } + + if (process.env.UNI_USING_VUE3) { + alias.vuex = require.resolve('@dcloudio/vue-cli-plugin-uni/packages/vuex') + alias['@vue/devtools-api'] = require.resolve('@dcloudio/vue-cli-plugin-uni/packages/@vue/devtools-api') + } + return { mode: process.env.NODE_ENV === 'production' ? 'production' : 'development', entry () { @@ -197,10 +207,7 @@ module.exports = { }, resolve: { extensions: ['.nvue'], - alias: { // 仅 mp-weixin - 'mpvue-page-factory': require.resolve( - '@dcloudio/vue-cli-plugin-uni/packages/mpvue-page-factory') - } + alias }, module: { rules: [{ diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/api.d.ts b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/api.d.ts new file mode 100644 index 000000000..c7ff345a6 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/api.d.ts @@ -0,0 +1,90 @@ +import { ComponentBounds, Hookable } from './hooks'; +import { Context } from './context'; +import { ComponentInstance, ComponentState, StateBase } from './component'; +import { App } from './app'; +import { ID } from './util'; +export interface DevtoolsPluginApi { + on: Hookable; + notifyComponentUpdate(instance?: ComponentInstance): any; + addTimelineLayer(options: TimelineLayerOptions): any; + addTimelineEvent(options: TimelineEventOptions): any; + addInspector(options: CustomInspectorOptions): any; + sendInspectorTree(inspectorId: string): any; + sendInspectorState(inspectorId: string): any; + selectInspectorNode(inspectorId: string, nodeId: string): any; + getComponentBounds(instance: ComponentInstance): Promise; + getComponentName(instance: ComponentInstance): Promise; + getComponentInstances(app: App): Promise; + highlightElement(instance: ComponentInstance): any; + unhighlightElement(): any; +} +export interface AppRecord { + id: number; + name: string; + instanceMap: Map; + rootInstance: ComponentInstance; +} +export interface TimelineLayerOptions { + id: string; + label: string; + color: number; + skipScreenshots?: boolean; + groupsOnly?: boolean; + ignoreNoDurationGroups?: boolean; + screenshotOverlayRender?: (event: TimelineEvent & ScreenshotOverlayEvent, ctx: ScreenshotOverlayRenderContext) => ScreenshotOverlayRenderResult | Promise; +} +export interface ScreenshotOverlayEvent { + layerId: string; + renderMeta: any; +} +export interface ScreenshotOverlayRenderContext { + screenshot: ScreenshotData; + events: (TimelineEvent & ScreenshotOverlayEvent)[]; + index: number; +} +export declare type ScreenshotOverlayRenderResult = HTMLElement | string | false; +export interface ScreenshotData { + time: number; +} +export interface TimelineEventOptions { + layerId: string; + event: TimelineEvent; + all?: boolean; +} +export interface TimelineEvent { + time: number; + data: TData; + logType?: 'default' | 'warning' | 'error'; + meta?: TMeta; + groupId?: ID; + title?: string; + subtitle?: string; +} +export interface CustomInspectorOptions { + id: string; + label: string; + icon?: string; + treeFilterPlaceholder?: string; + stateFilterPlaceholder?: string; + noSelectionText?: string; + actions?: { + icon: string; + tooltip?: string; + action: () => void | Promise; + }[]; +} +export interface CustomInspectorNode { + id: string; + label: string; + children?: CustomInspectorNode[]; + tags?: InspectorNodeTag[]; +} +export interface InspectorNodeTag { + label: string; + textColor: number; + backgroundColor: number; + tooltip?: string; +} +export interface CustomInspectorState { + [key: string]: (StateBase | Omit)[]; +} diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/api.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/api.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/api.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/app.d.ts b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/app.d.ts new file mode 100644 index 000000000..42638c08c --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/app.d.ts @@ -0,0 +1 @@ +export declare type App = any; diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/app.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/app.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/app.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/component.d.ts b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/component.d.ts new file mode 100644 index 000000000..3e822a07a --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/component.d.ts @@ -0,0 +1,76 @@ +import { InspectorNodeTag } from './api'; +import { ID } from './util'; +export declare type ComponentInstance = any; +export interface ComponentTreeNode { + uid: ID; + id: string; + name: string; + renderKey: string | number; + inactive: boolean; + isFragment: boolean; + hasChildren: boolean; + children: ComponentTreeNode[]; + positionTop?: number; + consoleId?: string; + isRouterView?: boolean; + macthedRouteSegment?: string; + tags: InspectorNodeTag[]; + meta?: any; +} +export interface InspectedComponentData { + id: string; + name: string; + file: string; + state: ComponentState[]; + functional?: boolean; +} +export interface StateBase { + key: string; + value: any; + editable?: boolean; + objectType?: 'ref' | 'reactive' | 'computed' | 'other'; + raw?: string; +} +export interface ComponentStateBase extends StateBase { + type: string; +} +export interface ComponentPropState extends ComponentStateBase { + meta?: { + type: string; + required: boolean; + /** Vue 1 only */ + mode?: 'default' | 'sync' | 'once'; + }; +} +export declare type ComponentBuiltinCustomStateTypes = 'function' | 'map' | 'set' | 'reference' | 'component' | 'component-definition' | 'router' | 'store'; +export interface ComponentCustomState extends ComponentStateBase { + value: CustomState; +} +export declare type CustomState = { + _custom: { + type: ComponentBuiltinCustomStateTypes | string; + display?: string; + tooltip?: string; + value?: any; + abstract?: boolean; + file?: string; + uid?: number; + readOnly?: boolean; + /** Configure immediate child fields */ + fields?: { + abstract?: boolean; + }; + id?: any; + actions?: { + icon: string; + tooltip?: string; + action: () => void | Promise; + }[]; + /** internal */ + _reviveId?: number; + }; +}; +export declare type ComponentState = ComponentStateBase | ComponentPropState | ComponentCustomState; +export interface ComponentDevtoolsOptions { + hide?: boolean; +} diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/component.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/component.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/component.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/context.d.ts b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/context.d.ts new file mode 100644 index 000000000..7567403c7 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/context.d.ts @@ -0,0 +1,5 @@ +import { AppRecord } from './api'; +export interface Context { + currentTab: string; + currentAppRecord: AppRecord; +} diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/context.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/context.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/context.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/hooks.d.ts b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/hooks.d.ts new file mode 100644 index 000000000..4e7de4bcb --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/hooks.d.ts @@ -0,0 +1,169 @@ +import { ComponentTreeNode, InspectedComponentData, ComponentInstance, ComponentDevtoolsOptions } from './component'; +import { App } from './app'; +import { CustomInspectorNode, CustomInspectorState, TimelineEvent } from './api'; +export declare const enum Hooks { + TRANSFORM_CALL = "transformCall", + GET_APP_RECORD_NAME = "getAppRecordName", + GET_APP_ROOT_INSTANCE = "getAppRootInstance", + REGISTER_APPLICATION = "registerApplication", + WALK_COMPONENT_TREE = "walkComponentTree", + VISIT_COMPONENT_TREE = "visitComponentTree", + WALK_COMPONENT_PARENTS = "walkComponentParents", + INSPECT_COMPONENT = "inspectComponent", + GET_COMPONENT_BOUNDS = "getComponentBounds", + GET_COMPONENT_NAME = "getComponentName", + GET_COMPONENT_INSTANCES = "getComponentInstances", + GET_ELEMENT_COMPONENT = "getElementComponent", + GET_COMPONENT_ROOT_ELEMENTS = "getComponentRootElements", + EDIT_COMPONENT_STATE = "editComponentState", + GET_COMPONENT_DEVTOOLS_OPTIONS = "getAppDevtoolsOptions", + GET_COMPONENT_RENDER_CODE = "getComponentRenderCode", + INSPECT_TIMELINE_EVENT = "inspectTimelineEvent", + TIMELINE_CLEARED = "timelineCleared", + GET_INSPECTOR_TREE = "getInspectorTree", + GET_INSPECTOR_STATE = "getInspectorState", + EDIT_INSPECTOR_STATE = "editInspectorState" +} +export interface ComponentBounds { + left: number; + top: number; + width: number; + height: number; +} +export declare type HookPayloads = { + [Hooks.TRANSFORM_CALL]: { + callName: string; + inArgs: any[]; + outArgs: any[]; + }; + [Hooks.GET_APP_RECORD_NAME]: { + app: App; + name: string; + }; + [Hooks.GET_APP_ROOT_INSTANCE]: { + app: App; + root: ComponentInstance; + }; + [Hooks.REGISTER_APPLICATION]: { + app: App; + }; + [Hooks.WALK_COMPONENT_TREE]: { + componentInstance: ComponentInstance; + componentTreeData: ComponentTreeNode[]; + maxDepth: number; + filter: string; + }; + [Hooks.VISIT_COMPONENT_TREE]: { + app: App; + componentInstance: ComponentInstance; + treeNode: ComponentTreeNode; + filter: string; + }; + [Hooks.WALK_COMPONENT_PARENTS]: { + componentInstance: ComponentInstance; + parentInstances: ComponentInstance[]; + }; + [Hooks.INSPECT_COMPONENT]: { + app: App; + componentInstance: ComponentInstance; + instanceData: InspectedComponentData; + }; + [Hooks.GET_COMPONENT_BOUNDS]: { + componentInstance: ComponentInstance; + bounds: ComponentBounds; + }; + [Hooks.GET_COMPONENT_NAME]: { + componentInstance: ComponentInstance; + name: string; + }; + [Hooks.GET_COMPONENT_INSTANCES]: { + app: App; + componentInstances: ComponentInstance[]; + }; + [Hooks.GET_ELEMENT_COMPONENT]: { + element: HTMLElement | any; + componentInstance: ComponentInstance; + }; + [Hooks.GET_COMPONENT_ROOT_ELEMENTS]: { + componentInstance: ComponentInstance; + rootElements: (HTMLElement | any)[]; + }; + [Hooks.EDIT_COMPONENT_STATE]: { + app: App; + componentInstance: ComponentInstance; + path: string[]; + type: string; + state: EditStatePayload; + set: (object: any, path: string | (string[]), value: any, cb?: (object: any, field: string, value: any) => void) => void; + }; + [Hooks.GET_COMPONENT_DEVTOOLS_OPTIONS]: { + componentInstance: ComponentInstance; + options: ComponentDevtoolsOptions; + }; + [Hooks.GET_COMPONENT_RENDER_CODE]: { + componentInstance: ComponentInstance; + code: string; + }; + [Hooks.INSPECT_TIMELINE_EVENT]: { + app: App; + layerId: string; + event: TimelineEvent; + all?: boolean; + data: any; + }; + [Hooks.TIMELINE_CLEARED]: Record; + [Hooks.GET_INSPECTOR_TREE]: { + app: App; + inspectorId: string; + filter: string; + rootNodes: CustomInspectorNode[]; + }; + [Hooks.GET_INSPECTOR_STATE]: { + app: App; + inspectorId: string; + nodeId: string; + state: CustomInspectorState; + }; + [Hooks.EDIT_INSPECTOR_STATE]: { + app: App; + inspectorId: string; + nodeId: string; + path: string[]; + type: string; + state: EditStatePayload; + set: (object: any, path: string | (string[]), value: any, cb?: (object: any, field: string, value: any) => void) => void; + }; +}; +export declare type EditStatePayload = { + value: any; + newKey?: string | null; + remove?: undefined | false; +} | { + value?: undefined; + newKey?: undefined; + remove: true; +}; +export declare type HookHandler = (payload: TPayload, ctx: TContext) => void | Promise; +export interface Hookable { + transformCall(handler: HookHandler): any; + getAppRecordName(handler: HookHandler): any; + getAppRootInstance(handler: HookHandler): any; + registerApplication(handler: HookHandler): any; + walkComponentTree(handler: HookHandler): any; + visitComponentTree(handler: HookHandler): any; + walkComponentParents(handler: HookHandler): any; + inspectComponent(handler: HookHandler): any; + getComponentBounds(handler: HookHandler): any; + getComponentName(handler: HookHandler): any; + getComponentInstances(handler: HookHandler): any; + getElementComponent(handler: HookHandler): any; + getComponentRootElements(handler: HookHandler): any; + editComponentState(handler: HookHandler): any; + getComponentDevtoolsOptions(handler: HookHandler): any; + getComponentRenderCode(handler: HookHandler): any; + inspectTimelineEvent(handler: HookHandler): any; + timelineCleared(handler: HookHandler): any; + getInspectorTree(handler: HookHandler): any; + getInspectorState(handler: HookHandler): any; + editInspectorState(handler: HookHandler): any; +} diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/hooks.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/hooks.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/hooks.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/index.d.ts b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/index.d.ts new file mode 100644 index 000000000..5b6817954 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/index.d.ts @@ -0,0 +1,6 @@ +export * from './api'; +export * from './app'; +export * from './component'; +export * from './context'; +export * from './hooks'; +export * from './util'; diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/index.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/index.js new file mode 100644 index 000000000..915e610e8 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./api"), exports); +__exportStar(require("./app"), exports); +__exportStar(require("./component"), exports); +__exportStar(require("./context"), exports); +__exportStar(require("./hooks"), exports); +__exportStar(require("./util"), exports); diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/util.d.ts b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/util.d.ts new file mode 100644 index 000000000..7c437e51e --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/util.d.ts @@ -0,0 +1,4 @@ +export declare type ID = number | string; +export interface WithId { + id: ID; +} diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/util.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/util.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/api/util.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/const.d.ts b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/const.d.ts new file mode 100644 index 000000000..46ea15d38 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/const.d.ts @@ -0,0 +1 @@ +export declare const HOOK_SETUP = "devtools-plugin:setup"; diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/const.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/const.js new file mode 100644 index 000000000..e22545a34 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/const.js @@ -0,0 +1,4 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.HOOK_SETUP = void 0; +exports.HOOK_SETUP = 'devtools-plugin:setup'; diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/env.d.ts b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/env.d.ts new file mode 100644 index 000000000..738376b56 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/env.d.ts @@ -0,0 +1,10 @@ +import { PluginDescriptor, SetupFunction } from '.'; +interface GlobalTarget { + __VUE_DEVTOOLS_PLUGINS__: Array<{ + pluginDescriptor: PluginDescriptor; + setupFn: SetupFunction; + }>; +} +export declare function getDevtoolsGlobalHook(): any; +export declare function getTarget(): GlobalTarget; +export {}; diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/env.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/env.js new file mode 100644 index 000000000..4593f0e0e --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/env.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getTarget = exports.getDevtoolsGlobalHook = void 0; +function getDevtoolsGlobalHook() { + return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; +} +exports.getDevtoolsGlobalHook = getDevtoolsGlobalHook; +function getTarget() { + // @ts-ignore + return typeof navigator !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : {}; +} +exports.getTarget = getTarget; diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/index.d.ts b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/index.d.ts new file mode 100644 index 000000000..a97ffe292 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/index.d.ts @@ -0,0 +1,14 @@ +import { DevtoolsPluginApi, App } from './api'; +export * from './api'; +export interface PluginDescriptor { + id: string; + label: string; + app: App; + packageName?: string; + homepage?: string; + componentStateTypes?: string[]; + logo?: string; + disableAppScope?: boolean; +} +export declare type SetupFunction = (api: DevtoolsPluginApi) => void; +export declare function setupDevtoolsPlugin(pluginDescriptor: PluginDescriptor, setupFn: SetupFunction): void; diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/index.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/index.js new file mode 100644 index 000000000..67c633845 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/cjs/index.js @@ -0,0 +1,31 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupDevtoolsPlugin = void 0; +const env_1 = require("./env"); +const const_1 = require("./const"); +__exportStar(require("./api"), exports); +function setupDevtoolsPlugin(pluginDescriptor, setupFn) { + const hook = env_1.getDevtoolsGlobalHook(); + if (hook) { + hook.emit(const_1.HOOK_SETUP, pluginDescriptor, setupFn); + } + else { + const target = env_1.getTarget(); + const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; + list.push({ + pluginDescriptor, + setupFn + }); + } +} +exports.setupDevtoolsPlugin = setupDevtoolsPlugin; diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/api.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/api.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/app.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/app.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/component.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/component.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/context.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/context.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/hooks.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/hooks.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/index.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/index.js new file mode 100644 index 000000000..5b6817954 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/index.js @@ -0,0 +1,6 @@ +export * from './api'; +export * from './app'; +export * from './component'; +export * from './context'; +export * from './hooks'; +export * from './util'; diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/util.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/api/util.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/const.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/const.js new file mode 100644 index 000000000..0582ba27f --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/const.js @@ -0,0 +1 @@ +export const HOOK_SETUP = 'devtools-plugin:setup'; diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/env.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/env.js new file mode 100644 index 000000000..b45dbdbe4 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/env.js @@ -0,0 +1,11 @@ +export function getDevtoolsGlobalHook() { + return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; +} +export function getTarget() { + // @ts-ignore + return typeof navigator !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : {}; +} diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/index.js b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/index.js new file mode 100644 index 000000000..f03601456 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/lib/esm/index.js @@ -0,0 +1,17 @@ +import { getTarget, getDevtoolsGlobalHook } from './env'; +import { HOOK_SETUP } from './const'; +export * from './api'; +export function setupDevtoolsPlugin(pluginDescriptor, setupFn) { + const hook = getDevtoolsGlobalHook(); + if (hook) { + hook.emit(HOOK_SETUP, pluginDescriptor, setupFn); + } + else { + const target = getTarget(); + const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; + list.push({ + pluginDescriptor, + setupFn + }); + } +} diff --git a/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/package.json b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/package.json new file mode 100644 index 000000000..b07999acf --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/devtools-api/package.json @@ -0,0 +1,38 @@ +{ + "name": "@vue/devtools-api", + "version": "6.0.0-beta.15", + "description": "Interact with the Vue devtools from the page", + "main": "lib/cjs/index.js", + "browser": "lib/esm/index.js", + "module": "lib/esm/index.js", + "types": "lib/cjs/index.d.ts", + "sideEffects": false, + "author": { + "name": "Guillaume Chau" + }, + "files": [ + "lib/esm", + "lib/cjs" + ], + "license": "MIT", + "repository": { + "url": "https://github.com/vuejs/vue-devtools.git", + "type": "git", + "directory": "packages/api" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "build": "rimraf lib && yarn build:esm && yarn build:cjs", + "build:esm": "tsc --module es2015 --outDir lib/esm", + "build:cjs": "tsc --module commonjs --outDir lib/cjs -d", + "build:watch": "yarn tsc --module commonjs --outDir lib/cjs -d -w --sourceMap", + "ts": "yarn build:esm" + }, + "devDependencies": { + "@types/node": "^13.9.1", + "@types/webpack-env": "^1.15.1", + "typescript": "^3.8.3" + } +} \ No newline at end of file diff --git a/packages/vue-cli-plugin-uni/packages/vuex/CHANGELOG.md b/packages/vue-cli-plugin-uni/packages/vuex/CHANGELOG.md new file mode 100644 index 000000000..9d61dd62b --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/vuex/CHANGELOG.md @@ -0,0 +1,604 @@ +## [4.0.2](https://github.com/vuejs/vuex/compare/v4.0.1...v4.0.2) (2021-06-17) + +### Bug Fixes + +* **devtools:** fix no getters displayed on root module + better getters inspector ([#1986](https://github.com/vuejs/vuex/issues/1986)) ([bc20295](https://github.com/vuejs/vuex/commit/bc20295331eb2bee40d6ae779d1ada31c542604c)) +* **build:** cjs build failing due to `__VUE_PROD_DEVTOOLS__` defined ([#1991](https://github.com/vuejs/vuex/issues/1991)) ([#1992](https://github.com/vuejs/vuex/issues/1992)) ([7151622](https://github.com/vuejs/vuex/commit/7151622d646968686546f1c4c80f7575c9b99176)) + +## [4.0.1](https://github.com/vuejs/vuex/compare/v4.0.0...v4.0.1) (2021-05-24) + +### Features + +* dx: add devtools integration ([#1949](https://github.com/vuejs/vuex/pull/1949)) + +# [4.0.0](https://github.com/vuejs/vuex/compare/v4.0.0-rc.2...v4.0.0) (2021-02-02) + +This is the official Vuex 4 release. + +The focus for Vuex 4 is compatibility. Vuex 4 supports Vue 3, and it provides the exact same API as Vuex 3, so users can reuse their existing Vuex code with Vue 3. + +There are a few breaking changes described in a later section, so please check them out. + +You can find basic usage with both Option and Composition API in the `example` directory. + +It's still released under `next` tag in NPM package as same as Vue 3. We're planning to remove `next` tag once Vue 3 is ready to remove it. + +There have been a lot of contribution to make Vuex 4 stable. Thank you all for your very much appreciated help. It wouldn't have been possible without this wonderful Vue community! + +## Documentation + +To check out docs, visit [next.vuex.vuejs.org](https://next.vuex.vuejs.org/). + +## Breaking changes + +### Installation process has changed + +To align with the new Vue 3 initialization process, the installation process of Vuex has changed. + +To create a new store instance, users are now encouraged to use the newly introduced `createStore` function. + +```js +import { createStore } from 'vuex' + +export const store = createStore({ + state() { + return { + count: 1 + } + } +}) +``` + +> Whilst this is not technically a breaking change, you may still use the `new Store(...)` syntax, we recommend this approach to align with Vue 3 and Vue Router Next. + +To install Vuex to a Vue instance, pass the store instance instead of Vuex. + +```js +import { createApp } from 'vue' +import { store } from './store' +import App from './App.vue' + +const app = createApp(App) + +app.use(store) + +app.mount('#app') +``` + +### Bundles are now aligned with Vue 3 + +The following bundles are generated to align with Vue 3 bundles: + +- `vuex.global(.prod).js` + - For direct use with `