diff --git a/examples/vue-router/app.js b/examples/vue-router/app.js
index 400d7e8..1054c08 100644
--- a/examples/vue-router/app.js
+++ b/examples/vue-router/app.js
@@ -94,12 +94,32 @@ const App = {
},
script: [
{ src: 'head-script1.js' },
- { json: { '@context': 'http://schema.org', unsafe: '
hello
' } },
- { content: 'window.a = "
";
-
+
+ window.users = []
+
+
-
+
-
+
diff --git a/examples/webpack.config.js b/examples/webpack.config.js
index 280293a..243c8c4 100644
--- a/examples/webpack.config.js
+++ b/examples/webpack.config.js
@@ -84,6 +84,10 @@ export default {
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
__DEV__: process.env.NODE_ENV !== 'production'
+ }),
+ new webpack.DefinePlugin({
+ __VUE_OPTIONS_API__: JSON.stringify(true),
+ __VUE_PROD_DEVTOOLS__: JSON.stringify(true),
})
],
devServer: {
diff --git a/package.json b/package.json
index 71fe2b9..1ed79e0 100644
--- a/package.json
+++ b/package.json
@@ -35,7 +35,7 @@
"dev": "babel-node examples/server.js",
"docs": "vuepress dev --host 0.0.0.0 --port 3000 docs",
"docs:build": "vuepress build docs",
- "lint": "eslint --ext .js,.ts examples src test",
+ "lint": "eslint --ext .js,.ts src test",
"prerelease": "git checkout master && git pull -r",
"release": "yarn lint && yarn test && standard-version",
"test": "yarn test:unit && yarn test:e2e-ssr && yarn test:e2e-browser",
@@ -48,61 +48,61 @@
"vue": "next"
},
"devDependencies": {
- "@babel/core": "^7.11.1",
- "@babel/node": "^7.10.5",
- "@babel/preset-env": "^7.11.0",
- "@babel/preset-typescript": "^7.10.4",
- "@nuxtjs/eslint-config-typescript": "^3.0.0",
- "@types/webpack": "^4.41.21",
- "@types/webpack-env": "^1.15.2",
- "@typescript-eslint/eslint-plugin": "^3.8.0",
- "@typescript-eslint/parser": "^3.8.0",
- "@vue/compiler-sfc": "^3.0.0-rc.5",
- "@vue/server-renderer": "^3.0.0-rc.5",
- "@vue/server-test-utils": "^1.0.3",
- "@vue/test-utils": "^1.0.3",
+ "@babel/core": "^7.12.3",
+ "@babel/node": "^7.12.1",
+ "@babel/preset-env": "^7.12.1",
+ "@babel/preset-typescript": "^7.12.1",
+ "@nuxtjs/eslint-config-typescript": "^4.0.0",
+ "@types/webpack": "^4.41.24",
+ "@types/webpack-env": "^1.15.3",
+ "@typescript-eslint/eslint-plugin": "^4.6.0",
+ "@typescript-eslint/parser": "^4.6.0",
+ "@vue/compiler-sfc": "^3.0.2",
+ "@vue/server-renderer": "^3.0.2",
+ "@vue/server-test-utils": "^1.1.1",
+ "@vue/test-utils": "^1.1.1",
"@wishy-gift/html-include-chunks-webpack-plugin": "^0.1.5",
- "babel-jest": "^26.2.2",
+ "babel-jest": "^26.6.1",
"babel-loader": "^8.1.0",
"babel-plugin-dynamic-import-node": "^2.3.3",
- "browserstack-local": "^1.4.5",
- "chromedriver": "^84.0.1",
- "codecov": "^3.7.2",
+ "browserstack-local": "^1.4.8",
+ "chromedriver": "^86.0.0",
+ "codecov": "^3.8.0",
"consola": "^2.15.0",
- "eslint": "^7.6.0",
+ "eslint": "^7.12.1",
"express-urlrewrite": "^1.3.0",
"geckodriver": "^1.20.0",
- "html-webpack-plugin": "^4.3.0",
- "jest": "^26.2.2",
- "jest-environment-jsdom": "^26.2.0",
+ "html-webpack-plugin": "^4.5.0",
+ "jest": "^26.6.1",
+ "jest-environment-jsdom": "^26.6.1",
"jest-environment-jsdom-global": "^2.0.4",
"jsdom": "^16.4.0",
- "lodash": "^4.17.19",
+ "lodash": "^4.17.20",
"node-env-file": "^0.1.8",
- "puppeteer-core": "^5.2.1",
+ "puppeteer-core": "^5.4.1",
"rimraf": "^3.0.2",
- "rollup": "^2.23.1",
+ "rollup": "^2.33.0",
"rollup-plugin-babel": "^4.4.0",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-json": "^4.0.0",
"rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-replace": "^2.2.0",
- "rollup-plugin-terser": "^7.0.0",
- "rollup-plugin-typescript2": "^0.27.2",
+ "rollup-plugin-terser": "^7.0.2",
+ "rollup-plugin-typescript2": "^0.29.0",
"selenium-webdriver": "^4.0.0-alpha.7",
- "standard-version": "^8.0.2",
+ "standard-version": "^9.0.0",
"tib": "^0.7.4",
- "ts-jest": "^26.1.4",
- "ts-loader": "^8.0.2",
- "ts-node": "^8.10.2",
- "typescript": "^3.9.7",
- "vue": "next",
- "vue-jest": "^3.0.6",
- "vue-loader": "^16.0.0-beta.2",
+ "ts-jest": "^26.4.3",
+ "ts-loader": "^8.0.7",
+ "ts-node": "^9.0.0",
+ "typescript": "^4.0.5",
+ "vue": "^3.0.0",
+ "vue-jest": "^3.0.7",
+ "vue-loader": "^16.0.0",
"vue-router": "next",
- "webpack": "^4.44.1",
- "webpack-bundle-analyzer": "^3.8.0",
- "webpack-cli": "^3.3.12",
+ "webpack": "^5.3.2",
+ "webpack-bundle-analyzer": "^3.9.0",
+ "webpack-cli": "^4.1.0",
"webpack-dev-server": "^3.11.0",
"webpackbar": "^4.0.0"
}
diff --git a/src/Metainfo.ts b/src/Metainfo.ts
index 3d8b3fe..b672003 100644
--- a/src/Metainfo.ts
+++ b/src/Metainfo.ts
@@ -31,6 +31,9 @@ export const MetainfoImpl = defineComponent({
const teleports: any = {}
const manager = getCurrentManager()
+ if (!manager) {
+ return
+ }
for (const key in metainfo) {
const config = manager.config[key] || {}
diff --git a/src/info/index.ts b/src/continuous-object-merge/index.ts
similarity index 73%
rename from src/info/index.ts
rename to src/continuous-object-merge/index.ts
index 7f6f046..c93afb7 100644
--- a/src/info/index.ts
+++ b/src/continuous-object-merge/index.ts
@@ -1,4 +1,4 @@
-export * from './globals'
+export * from './proxy'
export * from './remove'
export * from './set'
export * from './update'
diff --git a/src/proxy.ts b/src/continuous-object-merge/proxy.ts
similarity index 55%
rename from src/proxy.ts
rename to src/continuous-object-merge/proxy.ts
index 5268d8f..5306b92 100644
--- a/src/proxy.ts
+++ b/src/continuous-object-merge/proxy.ts
@@ -1,13 +1,10 @@
import { markRaw } from 'vue'
import { isObject } from '@vue/shared'
-import { update } from './info/update'
-import { MetaContext, MetainfoInput, PathSegments } from './types'
+import { MetaContext, MetainfoInput, MetainfoProxy, PathSegments } from '../types'
+import { update } from './update'
+import { remove } from './remove'
-interface Target extends MetainfoInput {
- __vm_proxy?: any // eslint-disable-line camelcase
-}
-
-export function createProxy (target: Target, handler: ProxyHandler