🔥 删除多余文件 #1
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
node_modules/*
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
||||||
|
unpackage
|
12
node_modules/.bin/vue-demi-fix
generated
vendored
12
node_modules/.bin/vue-demi-fix
generated
vendored
@ -1,12 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
||||||
|
|
||||||
case `uname` in
|
|
||||||
*CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ -x "$basedir/node" ]; then
|
|
||||||
exec "$basedir/node" "$basedir/../vue-demi/bin/vue-demi-fix.js" "$@"
|
|
||||||
else
|
|
||||||
exec node "$basedir/../vue-demi/bin/vue-demi-fix.js" "$@"
|
|
||||||
fi
|
|
17
node_modules/.bin/vue-demi-fix.cmd
generated
vendored
17
node_modules/.bin/vue-demi-fix.cmd
generated
vendored
@ -1,17 +0,0 @@
|
|||||||
@ECHO off
|
|
||||||
GOTO start
|
|
||||||
:find_dp0
|
|
||||||
SET dp0=%~dp0
|
|
||||||
EXIT /b
|
|
||||||
:start
|
|
||||||
SETLOCAL
|
|
||||||
CALL :find_dp0
|
|
||||||
|
|
||||||
IF EXIST "%dp0%\node.exe" (
|
|
||||||
SET "_prog=%dp0%\node.exe"
|
|
||||||
) ELSE (
|
|
||||||
SET "_prog=node"
|
|
||||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
|
||||||
)
|
|
||||||
|
|
||||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vue-demi\bin\vue-demi-fix.js" %*
|
|
28
node_modules/.bin/vue-demi-fix.ps1
generated
vendored
28
node_modules/.bin/vue-demi-fix.ps1
generated
vendored
@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env pwsh
|
|
||||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
|
||||||
|
|
||||||
$exe=""
|
|
||||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
|
||||||
# Fix case when both the Windows and Linux builds of Node
|
|
||||||
# are installed in the same directory
|
|
||||||
$exe=".exe"
|
|
||||||
}
|
|
||||||
$ret=0
|
|
||||||
if (Test-Path "$basedir/node$exe") {
|
|
||||||
# Support pipeline input
|
|
||||||
if ($MyInvocation.ExpectingInput) {
|
|
||||||
$input | & "$basedir/node$exe" "$basedir/../vue-demi/bin/vue-demi-fix.js" $args
|
|
||||||
} else {
|
|
||||||
& "$basedir/node$exe" "$basedir/../vue-demi/bin/vue-demi-fix.js" $args
|
|
||||||
}
|
|
||||||
$ret=$LASTEXITCODE
|
|
||||||
} else {
|
|
||||||
# Support pipeline input
|
|
||||||
if ($MyInvocation.ExpectingInput) {
|
|
||||||
$input | & "node$exe" "$basedir/../vue-demi/bin/vue-demi-fix.js" $args
|
|
||||||
} else {
|
|
||||||
& "node$exe" "$basedir/../vue-demi/bin/vue-demi-fix.js" $args
|
|
||||||
}
|
|
||||||
$ret=$LASTEXITCODE
|
|
||||||
}
|
|
||||||
exit $ret
|
|
12
node_modules/.bin/vue-demi-switch
generated
vendored
12
node_modules/.bin/vue-demi-switch
generated
vendored
@ -1,12 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
||||||
|
|
||||||
case `uname` in
|
|
||||||
*CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ -x "$basedir/node" ]; then
|
|
||||||
exec "$basedir/node" "$basedir/../vue-demi/bin/vue-demi-switch.js" "$@"
|
|
||||||
else
|
|
||||||
exec node "$basedir/../vue-demi/bin/vue-demi-switch.js" "$@"
|
|
||||||
fi
|
|
17
node_modules/.bin/vue-demi-switch.cmd
generated
vendored
17
node_modules/.bin/vue-demi-switch.cmd
generated
vendored
@ -1,17 +0,0 @@
|
|||||||
@ECHO off
|
|
||||||
GOTO start
|
|
||||||
:find_dp0
|
|
||||||
SET dp0=%~dp0
|
|
||||||
EXIT /b
|
|
||||||
:start
|
|
||||||
SETLOCAL
|
|
||||||
CALL :find_dp0
|
|
||||||
|
|
||||||
IF EXIST "%dp0%\node.exe" (
|
|
||||||
SET "_prog=%dp0%\node.exe"
|
|
||||||
) ELSE (
|
|
||||||
SET "_prog=node"
|
|
||||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
|
||||||
)
|
|
||||||
|
|
||||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vue-demi\bin\vue-demi-switch.js" %*
|
|
28
node_modules/.bin/vue-demi-switch.ps1
generated
vendored
28
node_modules/.bin/vue-demi-switch.ps1
generated
vendored
@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env pwsh
|
|
||||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
|
||||||
|
|
||||||
$exe=""
|
|
||||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
|
||||||
# Fix case when both the Windows and Linux builds of Node
|
|
||||||
# are installed in the same directory
|
|
||||||
$exe=".exe"
|
|
||||||
}
|
|
||||||
$ret=0
|
|
||||||
if (Test-Path "$basedir/node$exe") {
|
|
||||||
# Support pipeline input
|
|
||||||
if ($MyInvocation.ExpectingInput) {
|
|
||||||
$input | & "$basedir/node$exe" "$basedir/../vue-demi/bin/vue-demi-switch.js" $args
|
|
||||||
} else {
|
|
||||||
& "$basedir/node$exe" "$basedir/../vue-demi/bin/vue-demi-switch.js" $args
|
|
||||||
}
|
|
||||||
$ret=$LASTEXITCODE
|
|
||||||
} else {
|
|
||||||
# Support pipeline input
|
|
||||||
if ($MyInvocation.ExpectingInput) {
|
|
||||||
$input | & "node$exe" "$basedir/../vue-demi/bin/vue-demi-switch.js" $args
|
|
||||||
} else {
|
|
||||||
& "node$exe" "$basedir/../vue-demi/bin/vue-demi-switch.js" $args
|
|
||||||
}
|
|
||||||
$ret=$LASTEXITCODE
|
|
||||||
}
|
|
||||||
exit $ret
|
|
69
node_modules/.package-lock.json
generated
vendored
69
node_modules/.package-lock.json
generated
vendored
@ -1,69 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "version-record",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"lockfileVersion": 2,
|
|
||||||
"requires": true,
|
|
||||||
"packages": {
|
|
||||||
"node_modules/@vue/devtools-api": {
|
|
||||||
"version": "6.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
|
|
||||||
"integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
|
|
||||||
},
|
|
||||||
"node_modules/pinia": {
|
|
||||||
"version": "2.1.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.6.tgz",
|
|
||||||
"integrity": "sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"@vue/devtools-api": "^6.5.0",
|
|
||||||
"vue-demi": ">=0.14.5"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/posva"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@vue/composition-api": "^1.4.0",
|
|
||||||
"typescript": ">=4.4.4",
|
|
||||||
"vue": "^2.6.14 || ^3.3.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"@vue/composition-api": {
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"typescript": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/vue": {
|
|
||||||
"version": "2.6.14",
|
|
||||||
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz",
|
|
||||||
"integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==",
|
|
||||||
"peer": true
|
|
||||||
},
|
|
||||||
"node_modules/vue-demi": {
|
|
||||||
"version": "0.14.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
|
|
||||||
"integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
|
|
||||||
"hasInstallScript": true,
|
|
||||||
"bin": {
|
|
||||||
"vue-demi-fix": "bin/vue-demi-fix.js",
|
|
||||||
"vue-demi-switch": "bin/vue-demi-switch.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/antfu"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@vue/composition-api": "^1.0.0-rc.1",
|
|
||||||
"vue": "^3.0.0-0 || ^2.6.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"@vue/composition-api": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
2
node_modules/@vue/devtools-api/lib/cjs/api/api.js
generated
vendored
2
node_modules/@vue/devtools-api/lib/cjs/api/api.js
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
node_modules/@vue/devtools-api/lib/cjs/api/app.js
generated
vendored
2
node_modules/@vue/devtools-api/lib/cjs/api/app.js
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
node_modules/@vue/devtools-api/lib/cjs/api/component.js
generated
vendored
2
node_modules/@vue/devtools-api/lib/cjs/api/component.js
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
node_modules/@vue/devtools-api/lib/cjs/api/context.js
generated
vendored
2
node_modules/@vue/devtools-api/lib/cjs/api/context.js
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
node_modules/@vue/devtools-api/lib/cjs/api/hooks.js
generated
vendored
2
node_modules/@vue/devtools-api/lib/cjs/api/hooks.js
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
node_modules/@vue/devtools-api/lib/cjs/api/index.js
generated
vendored
22
node_modules/@vue/devtools-api/lib/cjs/api/index.js
generated
vendored
@ -1,22 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
||||||
if (k2 === undefined) k2 = k;
|
|
||||||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
||||||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
||||||
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
||||||
}
|
|
||||||
Object.defineProperty(o, k2, desc);
|
|
||||||
}) : (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" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
__exportStar(require("./api.js"), exports);
|
|
||||||
__exportStar(require("./app.js"), exports);
|
|
||||||
__exportStar(require("./component.js"), exports);
|
|
||||||
__exportStar(require("./context.js"), exports);
|
|
||||||
__exportStar(require("./hooks.js"), exports);
|
|
||||||
__exportStar(require("./util.js"), exports);
|
|
2
node_modules/@vue/devtools-api/lib/cjs/api/util.js
generated
vendored
2
node_modules/@vue/devtools-api/lib/cjs/api/util.js
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
node_modules/@vue/devtools-api/lib/cjs/const.js
generated
vendored
5
node_modules/@vue/devtools-api/lib/cjs/const.js
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.HOOK_PLUGIN_SETTINGS_SET = exports.HOOK_SETUP = void 0;
|
|
||||||
exports.HOOK_SETUP = 'devtools-plugin:setup';
|
|
||||||
exports.HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';
|
|
17
node_modules/@vue/devtools-api/lib/cjs/env.js
generated
vendored
17
node_modules/@vue/devtools-api/lib/cjs/env.js
generated
vendored
@ -1,17 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.isProxyAvailable = 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' && typeof window !== 'undefined')
|
|
||||||
? window
|
|
||||||
: typeof global !== 'undefined'
|
|
||||||
? global
|
|
||||||
: {};
|
|
||||||
}
|
|
||||||
exports.getTarget = getTarget;
|
|
||||||
exports.isProxyAvailable = typeof Proxy === 'function';
|
|
44
node_modules/@vue/devtools-api/lib/cjs/index.js
generated
vendored
44
node_modules/@vue/devtools-api/lib/cjs/index.js
generated
vendored
@ -1,44 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
||||||
if (k2 === undefined) k2 = k;
|
|
||||||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
||||||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
||||||
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
||||||
}
|
|
||||||
Object.defineProperty(o, k2, desc);
|
|
||||||
}) : (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" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.setupDevtoolsPlugin = void 0;
|
|
||||||
const env_js_1 = require("./env.js");
|
|
||||||
const const_js_1 = require("./const.js");
|
|
||||||
const proxy_js_1 = require("./proxy.js");
|
|
||||||
__exportStar(require("./api/index.js"), exports);
|
|
||||||
__exportStar(require("./plugin.js"), exports);
|
|
||||||
__exportStar(require("./time.js"), exports);
|
|
||||||
function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
|
|
||||||
const descriptor = pluginDescriptor;
|
|
||||||
const target = (0, env_js_1.getTarget)();
|
|
||||||
const hook = (0, env_js_1.getDevtoolsGlobalHook)();
|
|
||||||
const enableProxy = env_js_1.isProxyAvailable && descriptor.enableEarlyProxy;
|
|
||||||
if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {
|
|
||||||
hook.emit(const_js_1.HOOK_SETUP, pluginDescriptor, setupFn);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const proxy = enableProxy ? new proxy_js_1.ApiProxy(descriptor, hook) : null;
|
|
||||||
const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];
|
|
||||||
list.push({
|
|
||||||
pluginDescriptor: descriptor,
|
|
||||||
setupFn,
|
|
||||||
proxy,
|
|
||||||
});
|
|
||||||
if (proxy)
|
|
||||||
setupFn(proxy.proxiedTarget);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.setupDevtoolsPlugin = setupDevtoolsPlugin;
|
|
2
node_modules/@vue/devtools-api/lib/cjs/plugin.js
generated
vendored
2
node_modules/@vue/devtools-api/lib/cjs/plugin.js
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
111
node_modules/@vue/devtools-api/lib/cjs/proxy.js
generated
vendored
111
node_modules/@vue/devtools-api/lib/cjs/proxy.js
generated
vendored
@ -1,111 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.ApiProxy = void 0;
|
|
||||||
const const_js_1 = require("./const.js");
|
|
||||||
const time_js_1 = require("./time.js");
|
|
||||||
class ApiProxy {
|
|
||||||
constructor(plugin, hook) {
|
|
||||||
this.target = null;
|
|
||||||
this.targetQueue = [];
|
|
||||||
this.onQueue = [];
|
|
||||||
this.plugin = plugin;
|
|
||||||
this.hook = hook;
|
|
||||||
const defaultSettings = {};
|
|
||||||
if (plugin.settings) {
|
|
||||||
for (const id in plugin.settings) {
|
|
||||||
const item = plugin.settings[id];
|
|
||||||
defaultSettings[id] = item.defaultValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;
|
|
||||||
let currentSettings = Object.assign({}, defaultSettings);
|
|
||||||
try {
|
|
||||||
const raw = localStorage.getItem(localSettingsSaveId);
|
|
||||||
const data = JSON.parse(raw);
|
|
||||||
Object.assign(currentSettings, data);
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
// noop
|
|
||||||
}
|
|
||||||
this.fallbacks = {
|
|
||||||
getSettings() {
|
|
||||||
return currentSettings;
|
|
||||||
},
|
|
||||||
setSettings(value) {
|
|
||||||
try {
|
|
||||||
localStorage.setItem(localSettingsSaveId, JSON.stringify(value));
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
// noop
|
|
||||||
}
|
|
||||||
currentSettings = value;
|
|
||||||
},
|
|
||||||
now() {
|
|
||||||
return (0, time_js_1.now)();
|
|
||||||
},
|
|
||||||
};
|
|
||||||
if (hook) {
|
|
||||||
hook.on(const_js_1.HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {
|
|
||||||
if (pluginId === this.plugin.id) {
|
|
||||||
this.fallbacks.setSettings(value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
this.proxiedOn = new Proxy({}, {
|
|
||||||
get: (_target, prop) => {
|
|
||||||
if (this.target) {
|
|
||||||
return this.target.on[prop];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return (...args) => {
|
|
||||||
this.onQueue.push({
|
|
||||||
method: prop,
|
|
||||||
args,
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
this.proxiedTarget = new Proxy({}, {
|
|
||||||
get: (_target, prop) => {
|
|
||||||
if (this.target) {
|
|
||||||
return this.target[prop];
|
|
||||||
}
|
|
||||||
else if (prop === 'on') {
|
|
||||||
return this.proxiedOn;
|
|
||||||
}
|
|
||||||
else if (Object.keys(this.fallbacks).includes(prop)) {
|
|
||||||
return (...args) => {
|
|
||||||
this.targetQueue.push({
|
|
||||||
method: prop,
|
|
||||||
args,
|
|
||||||
resolve: () => { },
|
|
||||||
});
|
|
||||||
return this.fallbacks[prop](...args);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return (...args) => {
|
|
||||||
return new Promise(resolve => {
|
|
||||||
this.targetQueue.push({
|
|
||||||
method: prop,
|
|
||||||
args,
|
|
||||||
resolve,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
async setRealTarget(target) {
|
|
||||||
this.target = target;
|
|
||||||
for (const item of this.onQueue) {
|
|
||||||
this.target.on[item.method](...item.args);
|
|
||||||
}
|
|
||||||
for (const item of this.targetQueue) {
|
|
||||||
item.resolve(await this.target[item.method](...item.args));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.ApiProxy = ApiProxy;
|
|
28
node_modules/@vue/devtools-api/lib/cjs/time.js
generated
vendored
28
node_modules/@vue/devtools-api/lib/cjs/time.js
generated
vendored
@ -1,28 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.now = exports.isPerformanceSupported = void 0;
|
|
||||||
let supported;
|
|
||||||
let perf;
|
|
||||||
function isPerformanceSupported() {
|
|
||||||
var _a;
|
|
||||||
if (supported !== undefined) {
|
|
||||||
return supported;
|
|
||||||
}
|
|
||||||
if (typeof window !== 'undefined' && window.performance) {
|
|
||||||
supported = true;
|
|
||||||
perf = window.performance;
|
|
||||||
}
|
|
||||||
else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {
|
|
||||||
supported = true;
|
|
||||||
perf = global.perf_hooks.performance;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
supported = false;
|
|
||||||
}
|
|
||||||
return supported;
|
|
||||||
}
|
|
||||||
exports.isPerformanceSupported = isPerformanceSupported;
|
|
||||||
function now() {
|
|
||||||
return isPerformanceSupported() ? perf.now() : Date.now();
|
|
||||||
}
|
|
||||||
exports.now = now;
|
|
108
node_modules/@vue/devtools-api/lib/esm/api/api.d.ts
generated
vendored
108
node_modules/@vue/devtools-api/lib/esm/api/api.d.ts
generated
vendored
@ -1,108 +0,0 @@
|
|||||||
import type { ComponentBounds, Hookable } from './hooks.js';
|
|
||||||
import type { Context } from './context.js';
|
|
||||||
import type { ComponentInstance, ComponentState, StateBase } from './component.js';
|
|
||||||
import type { App } from './app.js';
|
|
||||||
import type { ID } from './util.js';
|
|
||||||
export interface DevtoolsPluginApi<TSettings> {
|
|
||||||
on: Hookable<Context>;
|
|
||||||
notifyComponentUpdate(instance?: ComponentInstance): void;
|
|
||||||
addTimelineLayer(options: TimelineLayerOptions): void;
|
|
||||||
addTimelineEvent(options: TimelineEventOptions): void;
|
|
||||||
addInspector(options: CustomInspectorOptions): void;
|
|
||||||
sendInspectorTree(inspectorId: string): void;
|
|
||||||
sendInspectorState(inspectorId: string): void;
|
|
||||||
selectInspectorNode(inspectorId: string, nodeId: string): void;
|
|
||||||
getComponentBounds(instance: ComponentInstance): Promise<ComponentBounds>;
|
|
||||||
getComponentName(instance: ComponentInstance): Promise<string>;
|
|
||||||
getComponentInstances(app: App): Promise<ComponentInstance[]>;
|
|
||||||
highlightElement(instance: ComponentInstance): void;
|
|
||||||
unhighlightElement(): void;
|
|
||||||
getSettings(pluginId?: string): TSettings;
|
|
||||||
now(): number;
|
|
||||||
/**
|
|
||||||
* @private Not implemented yet
|
|
||||||
*/
|
|
||||||
setSettings(values: TSettings): void;
|
|
||||||
}
|
|
||||||
export interface AppRecord {
|
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
instanceMap: Map<string, ComponentInstance>;
|
|
||||||
rootInstance: ComponentInstance;
|
|
||||||
}
|
|
||||||
export interface TimelineLayerOptions<TData = any, TMeta = any> {
|
|
||||||
id: string;
|
|
||||||
label: string;
|
|
||||||
color: number;
|
|
||||||
skipScreenshots?: boolean;
|
|
||||||
groupsOnly?: boolean;
|
|
||||||
ignoreNoDurationGroups?: boolean;
|
|
||||||
screenshotOverlayRender?: (event: TimelineEvent<TData, TMeta> & ScreenshotOverlayEvent, ctx: ScreenshotOverlayRenderContext) => ScreenshotOverlayRenderResult | Promise<ScreenshotOverlayRenderResult>;
|
|
||||||
}
|
|
||||||
export interface ScreenshotOverlayEvent {
|
|
||||||
layerId: string;
|
|
||||||
renderMeta: any;
|
|
||||||
}
|
|
||||||
export interface ScreenshotOverlayRenderContext<TData = any, TMeta = any> {
|
|
||||||
screenshot: ScreenshotData;
|
|
||||||
events: (TimelineEvent<TData, TMeta> & 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<TData = any, TMeta = any> {
|
|
||||||
time: number;
|
|
||||||
data: TData;
|
|
||||||
logType?: 'default' | 'warning' | 'error';
|
|
||||||
meta?: TMeta;
|
|
||||||
groupId?: ID;
|
|
||||||
title?: string;
|
|
||||||
subtitle?: string;
|
|
||||||
}
|
|
||||||
export interface TimelineMarkerOptions {
|
|
||||||
id: string;
|
|
||||||
time: number;
|
|
||||||
color: number;
|
|
||||||
label: string;
|
|
||||||
all?: boolean;
|
|
||||||
}
|
|
||||||
export interface CustomInspectorOptions {
|
|
||||||
id: string;
|
|
||||||
label: string;
|
|
||||||
icon?: string;
|
|
||||||
treeFilterPlaceholder?: string;
|
|
||||||
stateFilterPlaceholder?: string;
|
|
||||||
noSelectionText?: string;
|
|
||||||
actions?: {
|
|
||||||
icon: string;
|
|
||||||
tooltip?: string;
|
|
||||||
action: () => void | Promise<void>;
|
|
||||||
}[];
|
|
||||||
nodeActions?: {
|
|
||||||
icon: string;
|
|
||||||
tooltip?: string;
|
|
||||||
action: (nodeId: string) => void | Promise<void>;
|
|
||||||
}[];
|
|
||||||
}
|
|
||||||
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<ComponentState, 'type'>)[];
|
|
||||||
}
|
|
1
node_modules/@vue/devtools-api/lib/esm/api/api.js
generated
vendored
1
node_modules/@vue/devtools-api/lib/esm/api/api.js
generated
vendored
@ -1 +0,0 @@
|
|||||||
export {};
|
|
1
node_modules/@vue/devtools-api/lib/esm/api/app.d.ts
generated
vendored
1
node_modules/@vue/devtools-api/lib/esm/api/app.d.ts
generated
vendored
@ -1 +0,0 @@
|
|||||||
export declare type App = any;
|
|
1
node_modules/@vue/devtools-api/lib/esm/api/app.js
generated
vendored
1
node_modules/@vue/devtools-api/lib/esm/api/app.js
generated
vendored
@ -1 +0,0 @@
|
|||||||
export {};
|
|
78
node_modules/@vue/devtools-api/lib/esm/api/component.d.ts
generated
vendored
78
node_modules/@vue/devtools-api/lib/esm/api/component.d.ts
generated
vendored
@ -1,78 +0,0 @@
|
|||||||
import type { InspectorNodeTag } from './api.js';
|
|
||||||
import type { ID } from './util.js';
|
|
||||||
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[];
|
|
||||||
domOrder?: number[];
|
|
||||||
consoleId?: string;
|
|
||||||
isRouterView?: boolean;
|
|
||||||
macthedRouteSegment?: string;
|
|
||||||
tags: InspectorNodeTag[];
|
|
||||||
autoOpen: boolean;
|
|
||||||
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;
|
|
||||||
objectType?: 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<void>;
|
|
||||||
}[];
|
|
||||||
/** internal */
|
|
||||||
_reviveId?: number;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
export declare type ComponentState = ComponentStateBase | ComponentPropState | ComponentCustomState;
|
|
||||||
export interface ComponentDevtoolsOptions {
|
|
||||||
hide?: boolean;
|
|
||||||
}
|
|
1
node_modules/@vue/devtools-api/lib/esm/api/component.js
generated
vendored
1
node_modules/@vue/devtools-api/lib/esm/api/component.js
generated
vendored
@ -1 +0,0 @@
|
|||||||
export {};
|
|
5
node_modules/@vue/devtools-api/lib/esm/api/context.d.ts
generated
vendored
5
node_modules/@vue/devtools-api/lib/esm/api/context.d.ts
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
import type { AppRecord } from './api.js';
|
|
||||||
export interface Context {
|
|
||||||
currentTab: string;
|
|
||||||
currentAppRecord: AppRecord;
|
|
||||||
}
|
|
1
node_modules/@vue/devtools-api/lib/esm/api/context.js
generated
vendored
1
node_modules/@vue/devtools-api/lib/esm/api/context.js
generated
vendored
@ -1 +0,0 @@
|
|||||||
export {};
|
|
180
node_modules/@vue/devtools-api/lib/esm/api/hooks.d.ts
generated
vendored
180
node_modules/@vue/devtools-api/lib/esm/api/hooks.d.ts
generated
vendored
@ -1,180 +0,0 @@
|
|||||||
import type { ComponentTreeNode, InspectedComponentData, ComponentInstance, ComponentDevtoolsOptions } from './component.js';
|
|
||||||
import type { App } from './app.js';
|
|
||||||
import type { CustomInspectorNode, CustomInspectorState, TimelineEvent } from './api.js';
|
|
||||||
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",
|
|
||||||
SET_PLUGIN_SETTINGS = "setPluginSettings"
|
|
||||||
}
|
|
||||||
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;
|
|
||||||
recursively: boolean;
|
|
||||||
};
|
|
||||||
[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<string, never>;
|
|
||||||
[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;
|
|
||||||
};
|
|
||||||
[Hooks.SET_PLUGIN_SETTINGS]: {
|
|
||||||
app: App;
|
|
||||||
pluginId: string;
|
|
||||||
key: string;
|
|
||||||
newValue: any;
|
|
||||||
oldValue: any;
|
|
||||||
settings: any;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
export declare type EditStatePayload = {
|
|
||||||
value: any;
|
|
||||||
newKey?: string | null;
|
|
||||||
remove?: undefined | false;
|
|
||||||
} | {
|
|
||||||
value?: undefined;
|
|
||||||
newKey?: undefined;
|
|
||||||
remove: true;
|
|
||||||
};
|
|
||||||
export declare type HookHandler<TPayload, TContext> = (payload: TPayload, ctx: TContext) => void | Promise<void>;
|
|
||||||
export interface Hookable<TContext> {
|
|
||||||
transformCall(handler: HookHandler<HookPayloads[Hooks.TRANSFORM_CALL], TContext>): any;
|
|
||||||
getAppRecordName(handler: HookHandler<HookPayloads[Hooks.GET_APP_RECORD_NAME], TContext>): any;
|
|
||||||
getAppRootInstance(handler: HookHandler<HookPayloads[Hooks.GET_APP_ROOT_INSTANCE], TContext>): any;
|
|
||||||
registerApplication(handler: HookHandler<HookPayloads[Hooks.REGISTER_APPLICATION], TContext>): any;
|
|
||||||
walkComponentTree(handler: HookHandler<HookPayloads[Hooks.WALK_COMPONENT_TREE], TContext>): any;
|
|
||||||
visitComponentTree(handler: HookHandler<HookPayloads[Hooks.VISIT_COMPONENT_TREE], TContext>): any;
|
|
||||||
walkComponentParents(handler: HookHandler<HookPayloads[Hooks.WALK_COMPONENT_PARENTS], TContext>): any;
|
|
||||||
inspectComponent(handler: HookHandler<HookPayloads[Hooks.INSPECT_COMPONENT], TContext>): any;
|
|
||||||
getComponentBounds(handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_BOUNDS], TContext>): any;
|
|
||||||
getComponentName(handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_NAME], TContext>): any;
|
|
||||||
getComponentInstances(handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_INSTANCES], TContext>): any;
|
|
||||||
getElementComponent(handler: HookHandler<HookPayloads[Hooks.GET_ELEMENT_COMPONENT], TContext>): any;
|
|
||||||
getComponentRootElements(handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_ROOT_ELEMENTS], TContext>): any;
|
|
||||||
editComponentState(handler: HookHandler<HookPayloads[Hooks.EDIT_COMPONENT_STATE], TContext>): any;
|
|
||||||
getComponentDevtoolsOptions(handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_DEVTOOLS_OPTIONS], TContext>): any;
|
|
||||||
getComponentRenderCode(handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_RENDER_CODE], TContext>): any;
|
|
||||||
inspectTimelineEvent(handler: HookHandler<HookPayloads[Hooks.INSPECT_TIMELINE_EVENT], TContext>): any;
|
|
||||||
timelineCleared(handler: HookHandler<HookPayloads[Hooks.TIMELINE_CLEARED], TContext>): any;
|
|
||||||
getInspectorTree(handler: HookHandler<HookPayloads[Hooks.GET_INSPECTOR_TREE], TContext>): any;
|
|
||||||
getInspectorState(handler: HookHandler<HookPayloads[Hooks.GET_INSPECTOR_STATE], TContext>): any;
|
|
||||||
editInspectorState(handler: HookHandler<HookPayloads[Hooks.EDIT_INSPECTOR_STATE], TContext>): any;
|
|
||||||
setPluginSettings(handler: HookHandler<HookPayloads[Hooks.SET_PLUGIN_SETTINGS], TContext>): any;
|
|
||||||
}
|
|
1
node_modules/@vue/devtools-api/lib/esm/api/hooks.js
generated
vendored
1
node_modules/@vue/devtools-api/lib/esm/api/hooks.js
generated
vendored
@ -1 +0,0 @@
|
|||||||
export {};
|
|
6
node_modules/@vue/devtools-api/lib/esm/api/index.d.ts
generated
vendored
6
node_modules/@vue/devtools-api/lib/esm/api/index.d.ts
generated
vendored
@ -1,6 +0,0 @@
|
|||||||
export * from './api.js';
|
|
||||||
export * from './app.js';
|
|
||||||
export * from './component.js';
|
|
||||||
export * from './context.js';
|
|
||||||
export * from './hooks.js';
|
|
||||||
export * from './util.js';
|
|
6
node_modules/@vue/devtools-api/lib/esm/api/index.js
generated
vendored
6
node_modules/@vue/devtools-api/lib/esm/api/index.js
generated
vendored
@ -1,6 +0,0 @@
|
|||||||
export * from './api.js';
|
|
||||||
export * from './app.js';
|
|
||||||
export * from './component.js';
|
|
||||||
export * from './context.js';
|
|
||||||
export * from './hooks.js';
|
|
||||||
export * from './util.js';
|
|
4
node_modules/@vue/devtools-api/lib/esm/api/util.d.ts
generated
vendored
4
node_modules/@vue/devtools-api/lib/esm/api/util.d.ts
generated
vendored
@ -1,4 +0,0 @@
|
|||||||
export declare type ID = number | string;
|
|
||||||
export interface WithId {
|
|
||||||
id: ID;
|
|
||||||
}
|
|
1
node_modules/@vue/devtools-api/lib/esm/api/util.js
generated
vendored
1
node_modules/@vue/devtools-api/lib/esm/api/util.js
generated
vendored
@ -1 +0,0 @@
|
|||||||
export {};
|
|
2
node_modules/@vue/devtools-api/lib/esm/const.d.ts
generated
vendored
2
node_modules/@vue/devtools-api/lib/esm/const.d.ts
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
export declare const HOOK_SETUP = "devtools-plugin:setup";
|
|
||||||
export declare const HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set";
|
|
2
node_modules/@vue/devtools-api/lib/esm/const.js
generated
vendored
2
node_modules/@vue/devtools-api/lib/esm/const.js
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
export const HOOK_SETUP = 'devtools-plugin:setup';
|
|
||||||
export const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';
|
|
15
node_modules/@vue/devtools-api/lib/esm/env.d.ts
generated
vendored
15
node_modules/@vue/devtools-api/lib/esm/env.d.ts
generated
vendored
@ -1,15 +0,0 @@
|
|||||||
import type { PluginDescriptor, SetupFunction } from './index.js';
|
|
||||||
import type { ApiProxy } from './proxy.js';
|
|
||||||
export interface PluginQueueItem {
|
|
||||||
pluginDescriptor: PluginDescriptor;
|
|
||||||
setupFn: SetupFunction;
|
|
||||||
proxy?: ApiProxy;
|
|
||||||
}
|
|
||||||
interface GlobalTarget {
|
|
||||||
__VUE_DEVTOOLS_PLUGINS__?: PluginQueueItem[];
|
|
||||||
__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__?: boolean;
|
|
||||||
}
|
|
||||||
export declare function getDevtoolsGlobalHook(): any;
|
|
||||||
export declare function getTarget(): GlobalTarget;
|
|
||||||
export declare const isProxyAvailable: boolean;
|
|
||||||
export {};
|
|
12
node_modules/@vue/devtools-api/lib/esm/env.js
generated
vendored
12
node_modules/@vue/devtools-api/lib/esm/env.js
generated
vendored
@ -1,12 +0,0 @@
|
|||||||
export function getDevtoolsGlobalHook() {
|
|
||||||
return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;
|
|
||||||
}
|
|
||||||
export function getTarget() {
|
|
||||||
// @ts-ignore
|
|
||||||
return (typeof navigator !== 'undefined' && typeof window !== 'undefined')
|
|
||||||
? window
|
|
||||||
: typeof global !== 'undefined'
|
|
||||||
? global
|
|
||||||
: {};
|
|
||||||
}
|
|
||||||
export const isProxyAvailable = typeof Proxy === 'function';
|
|
18
node_modules/@vue/devtools-api/lib/esm/index.d.ts
generated
vendored
18
node_modules/@vue/devtools-api/lib/esm/index.d.ts
generated
vendored
@ -1,18 +0,0 @@
|
|||||||
import type { DevtoolsPluginApi } from './api/index.js';
|
|
||||||
import type { PluginDescriptor, ExtractSettingsTypes, PluginSettingsItem } from './plugin.js';
|
|
||||||
export * from './api/index.js';
|
|
||||||
export * from './plugin.js';
|
|
||||||
export * from './time.js';
|
|
||||||
export { PluginQueueItem } from './env.js';
|
|
||||||
declare type Cast<A, B> = A extends B ? A : B;
|
|
||||||
declare type Narrowable = string | number | bigint | boolean;
|
|
||||||
declare type Narrow<A> = Cast<A, [] | (A extends Narrowable ? A : never) | ({
|
|
||||||
[K in keyof A]: Narrow<A[K]>;
|
|
||||||
})>;
|
|
||||||
declare type Exact<C, T> = {
|
|
||||||
[K in keyof C]: K extends keyof T ? T[K] : never;
|
|
||||||
};
|
|
||||||
export declare type SetupFunction<TSettings = any> = (api: DevtoolsPluginApi<TSettings>) => void;
|
|
||||||
export declare function setupDevtoolsPlugin<TDescriptor extends Exact<TDescriptor, PluginDescriptor>, TSettings = ExtractSettingsTypes<TDescriptor extends {
|
|
||||||
settings: infer S;
|
|
||||||
} ? S extends Record<string, PluginSettingsItem> ? S : Record<string, PluginSettingsItem> : Record<string, PluginSettingsItem>>>(pluginDescriptor: Narrow<TDescriptor>, setupFn: SetupFunction<TSettings>): void;
|
|
26
node_modules/@vue/devtools-api/lib/esm/index.js
generated
vendored
26
node_modules/@vue/devtools-api/lib/esm/index.js
generated
vendored
@ -1,26 +0,0 @@
|
|||||||
import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env.js';
|
|
||||||
import { HOOK_SETUP } from './const.js';
|
|
||||||
import { ApiProxy } from './proxy.js';
|
|
||||||
export * from './api/index.js';
|
|
||||||
export * from './plugin.js';
|
|
||||||
export * from './time.js';
|
|
||||||
export function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
|
|
||||||
const descriptor = pluginDescriptor;
|
|
||||||
const target = getTarget();
|
|
||||||
const hook = getDevtoolsGlobalHook();
|
|
||||||
const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;
|
|
||||||
if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {
|
|
||||||
hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;
|
|
||||||
const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];
|
|
||||||
list.push({
|
|
||||||
pluginDescriptor: descriptor,
|
|
||||||
setupFn,
|
|
||||||
proxy,
|
|
||||||
});
|
|
||||||
if (proxy)
|
|
||||||
setupFn(proxy.proxiedTarget);
|
|
||||||
}
|
|
||||||
}
|
|
47
node_modules/@vue/devtools-api/lib/esm/plugin.d.ts
generated
vendored
47
node_modules/@vue/devtools-api/lib/esm/plugin.d.ts
generated
vendored
@ -1,47 +0,0 @@
|
|||||||
import type { App } from './api/index.js';
|
|
||||||
export interface PluginDescriptor {
|
|
||||||
id: string;
|
|
||||||
label: string;
|
|
||||||
app: App;
|
|
||||||
packageName?: string;
|
|
||||||
homepage?: string;
|
|
||||||
componentStateTypes?: string[];
|
|
||||||
logo?: string;
|
|
||||||
disableAppScope?: boolean;
|
|
||||||
disablePluginScope?: boolean;
|
|
||||||
/**
|
|
||||||
* Run the plugin setup and expose the api even if the devtools is not opened yet.
|
|
||||||
* Useful to record timeline events early.
|
|
||||||
*/
|
|
||||||
enableEarlyProxy?: boolean;
|
|
||||||
settings?: Record<string, PluginSettingsItem>;
|
|
||||||
}
|
|
||||||
export declare type PluginSettingsItem = {
|
|
||||||
label: string;
|
|
||||||
description?: string;
|
|
||||||
} & ({
|
|
||||||
type: 'boolean';
|
|
||||||
defaultValue: boolean;
|
|
||||||
} | {
|
|
||||||
type: 'choice';
|
|
||||||
defaultValue: string | number;
|
|
||||||
options: {
|
|
||||||
value: string | number;
|
|
||||||
label: string;
|
|
||||||
}[];
|
|
||||||
component?: 'select' | 'button-group';
|
|
||||||
} | {
|
|
||||||
type: 'text';
|
|
||||||
defaultValue: string;
|
|
||||||
});
|
|
||||||
declare type InferSettingsType<T extends PluginSettingsItem> = [T] extends [{
|
|
||||||
type: 'boolean';
|
|
||||||
}] ? boolean : [T] extends [{
|
|
||||||
type: 'choice';
|
|
||||||
}] ? T['options'][number]['value'] : [T] extends [{
|
|
||||||
type: 'text';
|
|
||||||
}] ? string : unknown;
|
|
||||||
export declare type ExtractSettingsTypes<O extends Record<string, PluginSettingsItem>> = {
|
|
||||||
[K in keyof O]: InferSettingsType<O[K]>;
|
|
||||||
};
|
|
||||||
export {};
|
|
1
node_modules/@vue/devtools-api/lib/esm/plugin.js
generated
vendored
1
node_modules/@vue/devtools-api/lib/esm/plugin.js
generated
vendored
@ -1 +0,0 @@
|
|||||||
export {};
|
|
20
node_modules/@vue/devtools-api/lib/esm/proxy.d.ts
generated
vendored
20
node_modules/@vue/devtools-api/lib/esm/proxy.d.ts
generated
vendored
@ -1,20 +0,0 @@
|
|||||||
import type { Context, DevtoolsPluginApi, Hookable } from './api/index.js';
|
|
||||||
import type { PluginDescriptor } from './plugin.js';
|
|
||||||
interface QueueItem {
|
|
||||||
method: string;
|
|
||||||
args: any[];
|
|
||||||
resolve?: (value?: any) => void;
|
|
||||||
}
|
|
||||||
export declare class ApiProxy<TTarget extends DevtoolsPluginApi<any> = DevtoolsPluginApi<any>> {
|
|
||||||
target: TTarget | null;
|
|
||||||
targetQueue: QueueItem[];
|
|
||||||
proxiedTarget: TTarget;
|
|
||||||
onQueue: QueueItem[];
|
|
||||||
proxiedOn: Hookable<Context>;
|
|
||||||
plugin: PluginDescriptor;
|
|
||||||
hook: any;
|
|
||||||
fallbacks: Record<string, any>;
|
|
||||||
constructor(plugin: PluginDescriptor, hook: any);
|
|
||||||
setRealTarget(target: TTarget): Promise<void>;
|
|
||||||
}
|
|
||||||
export {};
|
|
107
node_modules/@vue/devtools-api/lib/esm/proxy.js
generated
vendored
107
node_modules/@vue/devtools-api/lib/esm/proxy.js
generated
vendored
@ -1,107 +0,0 @@
|
|||||||
import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';
|
|
||||||
import { now } from './time.js';
|
|
||||||
export class ApiProxy {
|
|
||||||
constructor(plugin, hook) {
|
|
||||||
this.target = null;
|
|
||||||
this.targetQueue = [];
|
|
||||||
this.onQueue = [];
|
|
||||||
this.plugin = plugin;
|
|
||||||
this.hook = hook;
|
|
||||||
const defaultSettings = {};
|
|
||||||
if (plugin.settings) {
|
|
||||||
for (const id in plugin.settings) {
|
|
||||||
const item = plugin.settings[id];
|
|
||||||
defaultSettings[id] = item.defaultValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;
|
|
||||||
let currentSettings = Object.assign({}, defaultSettings);
|
|
||||||
try {
|
|
||||||
const raw = localStorage.getItem(localSettingsSaveId);
|
|
||||||
const data = JSON.parse(raw);
|
|
||||||
Object.assign(currentSettings, data);
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
// noop
|
|
||||||
}
|
|
||||||
this.fallbacks = {
|
|
||||||
getSettings() {
|
|
||||||
return currentSettings;
|
|
||||||
},
|
|
||||||
setSettings(value) {
|
|
||||||
try {
|
|
||||||
localStorage.setItem(localSettingsSaveId, JSON.stringify(value));
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
// noop
|
|
||||||
}
|
|
||||||
currentSettings = value;
|
|
||||||
},
|
|
||||||
now() {
|
|
||||||
return now();
|
|
||||||
},
|
|
||||||
};
|
|
||||||
if (hook) {
|
|
||||||
hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {
|
|
||||||
if (pluginId === this.plugin.id) {
|
|
||||||
this.fallbacks.setSettings(value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
this.proxiedOn = new Proxy({}, {
|
|
||||||
get: (_target, prop) => {
|
|
||||||
if (this.target) {
|
|
||||||
return this.target.on[prop];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return (...args) => {
|
|
||||||
this.onQueue.push({
|
|
||||||
method: prop,
|
|
||||||
args,
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
this.proxiedTarget = new Proxy({}, {
|
|
||||||
get: (_target, prop) => {
|
|
||||||
if (this.target) {
|
|
||||||
return this.target[prop];
|
|
||||||
}
|
|
||||||
else if (prop === 'on') {
|
|
||||||
return this.proxiedOn;
|
|
||||||
}
|
|
||||||
else if (Object.keys(this.fallbacks).includes(prop)) {
|
|
||||||
return (...args) => {
|
|
||||||
this.targetQueue.push({
|
|
||||||
method: prop,
|
|
||||||
args,
|
|
||||||
resolve: () => { },
|
|
||||||
});
|
|
||||||
return this.fallbacks[prop](...args);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return (...args) => {
|
|
||||||
return new Promise(resolve => {
|
|
||||||
this.targetQueue.push({
|
|
||||||
method: prop,
|
|
||||||
args,
|
|
||||||
resolve,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
async setRealTarget(target) {
|
|
||||||
this.target = target;
|
|
||||||
for (const item of this.onQueue) {
|
|
||||||
this.target.on[item.method](...item.args);
|
|
||||||
}
|
|
||||||
for (const item of this.targetQueue) {
|
|
||||||
item.resolve(await this.target[item.method](...item.args));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
2
node_modules/@vue/devtools-api/lib/esm/time.d.ts
generated
vendored
2
node_modules/@vue/devtools-api/lib/esm/time.d.ts
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
export declare function isPerformanceSupported(): boolean;
|
|
||||||
export declare function now(): number;
|
|
23
node_modules/@vue/devtools-api/lib/esm/time.js
generated
vendored
23
node_modules/@vue/devtools-api/lib/esm/time.js
generated
vendored
@ -1,23 +0,0 @@
|
|||||||
let supported;
|
|
||||||
let perf;
|
|
||||||
export function isPerformanceSupported() {
|
|
||||||
var _a;
|
|
||||||
if (supported !== undefined) {
|
|
||||||
return supported;
|
|
||||||
}
|
|
||||||
if (typeof window !== 'undefined' && window.performance) {
|
|
||||||
supported = true;
|
|
||||||
perf = window.performance;
|
|
||||||
}
|
|
||||||
else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {
|
|
||||||
supported = true;
|
|
||||||
perf = global.perf_hooks.performance;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
supported = false;
|
|
||||||
}
|
|
||||||
return supported;
|
|
||||||
}
|
|
||||||
export function now() {
|
|
||||||
return isPerformanceSupported() ? perf.now() : Date.now();
|
|
||||||
}
|
|
37
node_modules/@vue/devtools-api/package.json
generated
vendored
37
node_modules/@vue/devtools-api/package.json
generated
vendored
@ -1,37 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@vue/devtools-api",
|
|
||||||
"version": "6.5.0",
|
|
||||||
"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/esm/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 -d",
|
|
||||||
"build:cjs": "tsc --module commonjs --outDir lib/cjs",
|
|
||||||
"build:watch": "yarn tsc --module es2015 --outDir lib/esm -d -w --sourceMap"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/node": "^13.9.1",
|
|
||||||
"@types/webpack-env": "^1.15.1",
|
|
||||||
"typescript": "^4.5.2"
|
|
||||||
}
|
|
||||||
}
|
|
21
node_modules/pinia/LICENSE
generated
vendored
21
node_modules/pinia/LICENSE
generated
vendored
@ -1,21 +0,0 @@
|
|||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2019-present Eduardo San Martin Morote
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
24
node_modules/pinia/README.md
generated
vendored
24
node_modules/pinia/README.md
generated
vendored
@ -1,24 +0,0 @@
|
|||||||
<p align="center">
|
|
||||||
<a href="https://pinia.vuejs.org" target="_blank" rel="noopener noreferrer">
|
|
||||||
<img width="180" src="https://pinia.vuejs.org/logo.svg" alt="Pinia logo">
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
# Pinia
|
|
||||||
|
|
||||||
> Intuitive, type safe and flexible Store for Vue
|
|
||||||
|
|
||||||
## 👉 [Demo with Vue 3 on StackBlitz](https://stackblitz.com/github/piniajs/example-vue-3-vite)
|
|
||||||
|
|
||||||
## Help me keep working on this project 💚
|
|
||||||
|
|
||||||
- [Become a Sponsor on GitHub](https://github.com/sponsors/posva)
|
|
||||||
- [One-time donation via PayPal](https://paypal.me/posva)
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
To learn more about Pinia, check [its documentation](https://pinia.vuejs.org).
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
[MIT](http://opensource.org/licenses/MIT)
|
|
2019
node_modules/pinia/dist/pinia.cjs
generated
vendored
2019
node_modules/pinia/dist/pinia.cjs
generated
vendored
File diff suppressed because it is too large
Load Diff
986
node_modules/pinia/dist/pinia.d.ts
generated
vendored
986
node_modules/pinia/dist/pinia.d.ts
generated
vendored
@ -1,986 +0,0 @@
|
|||||||
import { App } from 'vue-demi';
|
|
||||||
import { ComputedRef } from 'vue-demi';
|
|
||||||
import type { DebuggerEvent } from 'vue-demi';
|
|
||||||
import { EffectScope } from 'vue-demi';
|
|
||||||
import type { Plugin as Plugin_2 } from 'vue-demi';
|
|
||||||
import { Ref } from 'vue-demi';
|
|
||||||
import { ToRef } from 'vue-demi';
|
|
||||||
import { ToRefs } from 'vue-demi';
|
|
||||||
import { UnwrapRef } from 'vue-demi';
|
|
||||||
import type { WatchOptions } from 'vue-demi';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```js
|
|
||||||
* const useUser = defineStore(...)
|
|
||||||
* if (import.meta.hot) {
|
|
||||||
* import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))
|
|
||||||
* }
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* @param initialUseStore - return of the defineStore to hot update
|
|
||||||
* @param hot - `import.meta.hot`
|
|
||||||
*/
|
|
||||||
export declare function acceptHMRUpdate<Id extends string = string, S extends StateTree = StateTree, G extends _GettersTree<S> = _GettersTree<S>, A = _ActionsTree>(initialUseStore: StoreDefinition<Id, S, G, A>, hot: any): (newModule: any) => any;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Type of an object of Actions. For internal usage only.
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _ActionsTree = Record<string, _Method>;
|
|
||||||
|
|
||||||
export declare type _Awaited<T> = T extends null | undefined ? T : T extends object & {
|
|
||||||
then(onfulfilled: infer F): any;
|
|
||||||
} ? F extends (value: infer V, ...args: any) => any ? _Awaited<V> : never : T;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a Pinia instance to be used by the application
|
|
||||||
*/
|
|
||||||
export declare function createPinia(): Pinia;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Recursive `Partial<T>`. Used by {@link Store['$patch']}.
|
|
||||||
*
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _DeepPartial<T> = {
|
|
||||||
[K in keyof T]?: _DeepPartial<T[K]>;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Options parameter of `defineStore()` for setup stores. Can be extended to
|
|
||||||
* augment stores with the plugin API. @see {@link DefineStoreOptionsBase}.
|
|
||||||
*/
|
|
||||||
export declare interface DefineSetupStoreOptions<Id extends string, S extends StateTree, G, A> extends DefineStoreOptionsBase<S, Store<Id, S, G, A>> {
|
|
||||||
/**
|
|
||||||
* Extracted actions. Added by useStore(). SHOULD NOT be added by the user when
|
|
||||||
* creating the store. Can be used in plugins to get the list of actions in a
|
|
||||||
* store defined with a setup function. Note this is always defined
|
|
||||||
*/
|
|
||||||
actions?: A;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a `useStore` function that retrieves the store instance
|
|
||||||
*
|
|
||||||
* @param id - id of the store (must be unique)
|
|
||||||
* @param options - options to define the store
|
|
||||||
*/
|
|
||||||
export declare function defineStore<Id extends string, S extends StateTree = {}, G extends _GettersTree<S> = {}, A = {}>(id: Id, options: Omit<DefineStoreOptions<Id, S, G, A>, 'id'>): StoreDefinition<Id, S, G, A>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a `useStore` function that retrieves the store instance
|
|
||||||
*
|
|
||||||
* @param options - options to define the store
|
|
||||||
*/
|
|
||||||
export declare function defineStore<Id extends string, S extends StateTree = {}, G extends _GettersTree<S> = {}, A = {}>(options: DefineStoreOptions<Id, S, G, A>): StoreDefinition<Id, S, G, A>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a `useStore` function that retrieves the store instance
|
|
||||||
*
|
|
||||||
* @param id - id of the store (must be unique)
|
|
||||||
* @param storeSetup - function that defines the store
|
|
||||||
* @param options - extra options
|
|
||||||
*/
|
|
||||||
export declare function defineStore<Id extends string, SS>(id: Id, storeSetup: () => SS, options?: DefineSetupStoreOptions<Id, _ExtractStateFromSetupStore<SS>, _ExtractGettersFromSetupStore<SS>, _ExtractActionsFromSetupStore<SS>>): StoreDefinition<Id, _ExtractStateFromSetupStore<SS>, _ExtractGettersFromSetupStore<SS>, _ExtractActionsFromSetupStore<SS>>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Options parameter of `defineStore()` for option stores. Can be extended to
|
|
||||||
* augment stores with the plugin API. @see {@link DefineStoreOptionsBase}.
|
|
||||||
*/
|
|
||||||
export declare interface DefineStoreOptions<Id extends string, S extends StateTree, G, A> extends DefineStoreOptionsBase<S, Store<Id, S, G, A>> {
|
|
||||||
/**
|
|
||||||
* Unique string key to identify the store across the application.
|
|
||||||
*/
|
|
||||||
id: Id;
|
|
||||||
/**
|
|
||||||
* Function to create a fresh state. **Must be an arrow function** to ensure
|
|
||||||
* correct typings!
|
|
||||||
*/
|
|
||||||
state?: () => S;
|
|
||||||
/**
|
|
||||||
* Optional object of getters.
|
|
||||||
*/
|
|
||||||
getters?: G & ThisType<UnwrapRef<S> & _StoreWithGetters<G> & PiniaCustomProperties> & _GettersTree<S>;
|
|
||||||
/**
|
|
||||||
* Optional object of actions.
|
|
||||||
*/
|
|
||||||
actions?: A & ThisType<A & UnwrapRef<S> & _StoreWithState<Id, S, G, A> & _StoreWithGetters<G> & PiniaCustomProperties>;
|
|
||||||
/**
|
|
||||||
* Allows hydrating the store during SSR when complex state (like client side only refs) are used in the store
|
|
||||||
* definition and copying the value from `pinia.state` isn't enough.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* If in your `state`, you use any `customRef`s, any `computed`s, or any `ref`s that have a different value on
|
|
||||||
* Server and Client, you need to manually hydrate them. e.g., a custom ref that is stored in the local
|
|
||||||
* storage:
|
|
||||||
*
|
|
||||||
* ```ts
|
|
||||||
* const useStore = defineStore('main', {
|
|
||||||
* state: () => ({
|
|
||||||
* n: useLocalStorage('key', 0)
|
|
||||||
* }),
|
|
||||||
* hydrate(storeState, initialState) {
|
|
||||||
* // @ts-expect-error: https://github.com/microsoft/TypeScript/issues/43826
|
|
||||||
* storeState.n = useLocalStorage('key', 0)
|
|
||||||
* }
|
|
||||||
* })
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* @param storeState - the current state in the store
|
|
||||||
* @param initialState - initialState
|
|
||||||
*/
|
|
||||||
hydrate?(storeState: UnwrapRef<S>, initialState: UnwrapRef<S>): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Options passed to `defineStore()` that are common between option and setup
|
|
||||||
* stores. Extend this interface if you want to add custom options to both kinds
|
|
||||||
* of stores.
|
|
||||||
*/
|
|
||||||
export declare interface DefineStoreOptionsBase<S extends StateTree, Store> {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Available `options` when creating a pinia plugin.
|
|
||||||
*/
|
|
||||||
export declare interface DefineStoreOptionsInPlugin<Id extends string, S extends StateTree, G, A> extends Omit<DefineStoreOptions<Id, S, G, A>, 'id' | 'actions'> {
|
|
||||||
/**
|
|
||||||
* Extracted object of actions. Added by useStore() when the store is built
|
|
||||||
* using the setup API, otherwise uses the one passed to `defineStore()`.
|
|
||||||
* Defaults to an empty object if no actions are defined.
|
|
||||||
*/
|
|
||||||
actions: A;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _ExtractActionsFromSetupStore<SS> = SS extends undefined | void ? {} : _ExtractActionsFromSetupStore_Keys<SS> extends keyof SS ? Pick<SS, _ExtractActionsFromSetupStore_Keys<SS>> : never;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Type that enables refactoring through IDE.
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _ExtractActionsFromSetupStore_Keys<SS> = keyof {
|
|
||||||
[K in keyof SS as SS[K] extends _Method ? K : never]: any;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _ExtractGettersFromSetupStore<SS> = SS extends undefined | void ? {} : _ExtractGettersFromSetupStore_Keys<SS> extends keyof SS ? Pick<SS, _ExtractGettersFromSetupStore_Keys<SS>> : never;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Type that enables refactoring through IDE.
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _ExtractGettersFromSetupStore_Keys<SS> = keyof {
|
|
||||||
[K in keyof SS as SS[K] extends ComputedRef ? K : never]: any;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _ExtractStateFromSetupStore<SS> = SS extends undefined | void ? {} : _ExtractStateFromSetupStore_Keys<SS> extends keyof SS ? _UnwrapAll<Pick<SS, _ExtractStateFromSetupStore_Keys<SS>>> : never;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Type that enables refactoring through IDE.
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _ExtractStateFromSetupStore_Keys<SS> = keyof {
|
|
||||||
[K in keyof SS as SS[K] extends _Method | ComputedRef ? never : K]: any;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the currently active pinia if there is any.
|
|
||||||
*/
|
|
||||||
export declare const getActivePinia: () => Pinia | undefined;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Type of an object of Getters that infers the argument. For internal usage only.
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _GettersTree<S extends StateTree> = Record<string, ((state: UnwrapRef<S> & UnwrapRef<PiniaCustomStateProperties<S>>) => any) | (() => any)>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows directly using actions from your store without using the composition
|
|
||||||
* API (`setup()`) by generating an object to be spread in the `methods` field
|
|
||||||
* of a component. The values of the object are the actions while the keys are
|
|
||||||
* the names of the resulting methods.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```js
|
|
||||||
* export default {
|
|
||||||
* methods: {
|
|
||||||
* // other methods properties
|
|
||||||
* // useCounterStore has two actions named `increment` and `setCount`
|
|
||||||
* ...mapActions(useCounterStore, { moar: 'increment', setIt: 'setCount' })
|
|
||||||
* },
|
|
||||||
*
|
|
||||||
* created() {
|
|
||||||
* this.moar()
|
|
||||||
* this.setIt(2)
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* @param useStore - store to map from
|
|
||||||
* @param keyMapper - object to define new names for the actions
|
|
||||||
*/
|
|
||||||
export declare function mapActions<Id extends string, S extends StateTree, G extends _GettersTree<S>, A, KeyMapper extends Record<string, keyof A>>(useStore: StoreDefinition<Id, S, G, A>, keyMapper: KeyMapper): _MapActionsObjectReturn<A, KeyMapper>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows directly using actions from your store without using the composition
|
|
||||||
* API (`setup()`) by generating an object to be spread in the `methods` field
|
|
||||||
* of a component.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```js
|
|
||||||
* export default {
|
|
||||||
* methods: {
|
|
||||||
* // other methods properties
|
|
||||||
* ...mapActions(useCounterStore, ['increment', 'setCount'])
|
|
||||||
* },
|
|
||||||
*
|
|
||||||
* created() {
|
|
||||||
* this.increment()
|
|
||||||
* this.setCount(2) // pass arguments as usual
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* @param useStore - store to map from
|
|
||||||
* @param keys - array of action names to map
|
|
||||||
*/
|
|
||||||
export declare function mapActions<Id extends string, S extends StateTree, G extends _GettersTree<S>, A>(useStore: StoreDefinition<Id, S, G, A>, keys: Array<keyof A>): _MapActionsReturn<A>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _MapActionsObjectReturn<A, T extends Record<string, keyof A>> = {
|
|
||||||
[key in keyof T]: A[T[key]];
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _MapActionsReturn<A> = {
|
|
||||||
[key in keyof A]: A[key];
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Alias for `mapState()`. You should use `mapState()` instead.
|
|
||||||
* @deprecated use `mapState()` instead.
|
|
||||||
*/
|
|
||||||
export declare const mapGetters: typeof mapState;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows using state and getters from one store without using the composition
|
|
||||||
* API (`setup()`) by generating an object to be spread in the `computed` field
|
|
||||||
* of a component. The values of the object are the state properties/getters
|
|
||||||
* while the keys are the names of the resulting computed properties.
|
|
||||||
* Optionally, you can also pass a custom function that will receive the store
|
|
||||||
* as its first argument. Note that while it has access to the component
|
|
||||||
* instance via `this`, it won't be typed.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```js
|
|
||||||
* export default {
|
|
||||||
* computed: {
|
|
||||||
* // other computed properties
|
|
||||||
* // useCounterStore has a state property named `count` and a getter `double`
|
|
||||||
* ...mapState(useCounterStore, {
|
|
||||||
* n: 'count',
|
|
||||||
* triple: store => store.n * 3,
|
|
||||||
* // note we can't use an arrow function if we want to use `this`
|
|
||||||
* custom(store) {
|
|
||||||
* return this.someComponentValue + store.n
|
|
||||||
* },
|
|
||||||
* doubleN: 'double'
|
|
||||||
* })
|
|
||||||
* },
|
|
||||||
*
|
|
||||||
* created() {
|
|
||||||
* this.n // 2
|
|
||||||
* this.doubleN // 4
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* @param useStore - store to map from
|
|
||||||
* @param keyMapper - object of state properties or getters
|
|
||||||
*/
|
|
||||||
export declare function mapState<Id extends string, S extends StateTree, G extends _GettersTree<S>, A, KeyMapper extends Record<string, keyof S | keyof G | ((store: Store<Id, S, G, A>) => any)>>(useStore: StoreDefinition<Id, S, G, A>, keyMapper: KeyMapper): _MapStateObjectReturn<Id, S, G, A, KeyMapper>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows using state and getters from one store without using the composition
|
|
||||||
* API (`setup()`) by generating an object to be spread in the `computed` field
|
|
||||||
* of a component.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```js
|
|
||||||
* export default {
|
|
||||||
* computed: {
|
|
||||||
* // other computed properties
|
|
||||||
* ...mapState(useCounterStore, ['count', 'double'])
|
|
||||||
* },
|
|
||||||
*
|
|
||||||
* created() {
|
|
||||||
* this.count // 2
|
|
||||||
* this.double // 4
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* @param useStore - store to map from
|
|
||||||
* @param keys - array of state properties or getters
|
|
||||||
*/
|
|
||||||
export declare function mapState<Id extends string, S extends StateTree, G extends _GettersTree<S>, A, Keys extends keyof S | keyof G>(useStore: StoreDefinition<Id, S, G, A>, keys: readonly Keys[]): _MapStateReturn<S, G, Keys>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _MapStateObjectReturn<Id extends string, S extends StateTree, G extends _GettersTree<S>, A, T extends Record<string, keyof S | keyof G | ((store: Store<Id, S, G, A>) => any)> = {}> = {
|
|
||||||
[key in keyof T]: () => T[key] extends (store: any) => infer R ? R : T[key] extends keyof Store<Id, S, G, A> ? Store<Id, S, G, A>[T[key]] : never;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _MapStateReturn<S extends StateTree, G extends _GettersTree<S>, Keys extends keyof S | keyof G = keyof S | keyof G> = {
|
|
||||||
[key in Keys]: () => Store<string, S, G, {}>[key];
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows using stores without the composition API (`setup()`) by generating an
|
|
||||||
* object to be spread in the `computed` field of a component. It accepts a list
|
|
||||||
* of store definitions.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```js
|
|
||||||
* export default {
|
|
||||||
* computed: {
|
|
||||||
* // other computed properties
|
|
||||||
* ...mapStores(useUserStore, useCartStore)
|
|
||||||
* },
|
|
||||||
*
|
|
||||||
* created() {
|
|
||||||
* this.userStore // store with id "user"
|
|
||||||
* this.cartStore // store with id "cart"
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* @param stores - list of stores to map to an object
|
|
||||||
*/
|
|
||||||
export declare function mapStores<Stores extends any[]>(...stores: [...Stores]): _Spread<Stores>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interface to allow customizing map helpers. Extend this interface with the
|
|
||||||
* following properties:
|
|
||||||
*
|
|
||||||
* - `suffix`: string. Affects the suffix of `mapStores()`, defaults to `Store`.
|
|
||||||
*/
|
|
||||||
export declare interface MapStoresCustomization {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Same as `mapState()` but creates computed setters as well so the state can be
|
|
||||||
* modified. Differently from `mapState()`, only `state` properties can be
|
|
||||||
* added.
|
|
||||||
*
|
|
||||||
* @param useStore - store to map from
|
|
||||||
* @param keyMapper - object of state properties
|
|
||||||
*/
|
|
||||||
export declare function mapWritableState<Id extends string, S extends StateTree, G extends _GettersTree<S>, A, KeyMapper extends Record<string, keyof S>>(useStore: StoreDefinition<Id, S, G, A>, keyMapper: KeyMapper): _MapWritableStateObjectReturn<S, KeyMapper>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows using state and getters from one store without using the composition
|
|
||||||
* API (`setup()`) by generating an object to be spread in the `computed` field
|
|
||||||
* of a component.
|
|
||||||
*
|
|
||||||
* @param useStore - store to map from
|
|
||||||
* @param keys - array of state properties
|
|
||||||
*/
|
|
||||||
export declare function mapWritableState<Id extends string, S extends StateTree, G extends _GettersTree<S>, A, Keys extends keyof S>(useStore: StoreDefinition<Id, S, G, A>, keys: readonly Keys[]): {
|
|
||||||
[K in Keys]: {
|
|
||||||
get: () => S[K];
|
|
||||||
set: (value: S[K]) => any;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _MapWritableStateObjectReturn<S extends StateTree, T extends Record<string, keyof S>> = {
|
|
||||||
[key in keyof T]: {
|
|
||||||
get: () => S[T[key]];
|
|
||||||
set: (value: S[T[key]]) => any;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _MapWritableStateReturn<S extends StateTree> = {
|
|
||||||
[key in keyof S]: {
|
|
||||||
get: () => S[key];
|
|
||||||
set: (value: S[key]) => any;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generic type for a function that can infer arguments and return type
|
|
||||||
*
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _Method = (...args: any[]) => any;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Possible types for SubscriptionCallback
|
|
||||||
*/
|
|
||||||
export declare enum MutationType {
|
|
||||||
/**
|
|
||||||
* Direct mutation of the state:
|
|
||||||
*
|
|
||||||
* - `store.name = 'new name'`
|
|
||||||
* - `store.$state.name = 'new name'`
|
|
||||||
* - `store.list.push('new item')`
|
|
||||||
*/
|
|
||||||
direct = "direct",
|
|
||||||
/**
|
|
||||||
* Mutated the state with `$patch` and an object
|
|
||||||
*
|
|
||||||
* - `store.$patch({ name: 'newName' })`
|
|
||||||
*/
|
|
||||||
patchObject = "patch object",
|
|
||||||
/**
|
|
||||||
* Mutated the state with `$patch` and a function
|
|
||||||
*
|
|
||||||
* - `store.$patch(state => state.name = 'newName')`
|
|
||||||
*/
|
|
||||||
patchFunction = "patch function"
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Every application must own its own pinia to be able to create stores
|
|
||||||
*/
|
|
||||||
export declare interface Pinia {
|
|
||||||
install: (app: App) => void;
|
|
||||||
/**
|
|
||||||
* root state
|
|
||||||
*/
|
|
||||||
state: Ref<Record<string, StateTree>>;
|
|
||||||
/**
|
|
||||||
* Adds a store plugin to extend every store
|
|
||||||
*
|
|
||||||
* @param plugin - store plugin to add
|
|
||||||
*/
|
|
||||||
use(plugin: PiniaPlugin): Pinia;
|
|
||||||
/* Excluded from this release type: _p */
|
|
||||||
/* Excluded from this release type: _a */
|
|
||||||
/* Excluded from this release type: _e */
|
|
||||||
/* Excluded from this release type: _s */
|
|
||||||
/* Excluded from this release type: _testing */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interface to be extended by the user when they add properties through plugins.
|
|
||||||
*/
|
|
||||||
export declare interface PiniaCustomProperties<Id extends string = string, S extends StateTree = StateTree, G = _GettersTree<S>, A = _ActionsTree> {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Properties that are added to every `store.$state` by `pinia.use()`.
|
|
||||||
*/
|
|
||||||
export declare interface PiniaCustomStateProperties<S extends StateTree = StateTree> {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Plugin to extend every store.
|
|
||||||
*/
|
|
||||||
export declare interface PiniaPlugin {
|
|
||||||
/**
|
|
||||||
* Plugin to extend every store. Returns an object to extend the store or
|
|
||||||
* nothing.
|
|
||||||
*
|
|
||||||
* @param context - Context
|
|
||||||
*/
|
|
||||||
(context: PiniaPluginContext): Partial<PiniaCustomProperties & PiniaCustomStateProperties> | void;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Context argument passed to Pinia plugins.
|
|
||||||
*/
|
|
||||||
export declare interface PiniaPluginContext<Id extends string = string, S extends StateTree = StateTree, G = _GettersTree<S>, A = _ActionsTree> {
|
|
||||||
/**
|
|
||||||
* pinia instance.
|
|
||||||
*/
|
|
||||||
pinia: Pinia;
|
|
||||||
/**
|
|
||||||
* Current app created with `Vue.createApp()`.
|
|
||||||
*/
|
|
||||||
app: App;
|
|
||||||
/**
|
|
||||||
* Current store being extended.
|
|
||||||
*/
|
|
||||||
store: Store<Id, S, G, A>;
|
|
||||||
/**
|
|
||||||
* Initial options defining the store when calling `defineStore()`.
|
|
||||||
*/
|
|
||||||
options: DefineStoreOptionsInPlugin<Id, S, G, A>;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Plugin to extend every store.
|
|
||||||
* @deprecated use PiniaPlugin instead
|
|
||||||
*/
|
|
||||||
export declare type PiniaStorePlugin = PiniaPlugin;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Vue 2 Plugin that must be installed for pinia to work. Note **you don't need
|
|
||||||
* this plugin if you are using Nuxt.js**. Use the `buildModule` instead:
|
|
||||||
* https://pinia.vuejs.org/ssr/nuxt.html.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```js
|
|
||||||
* import Vue from 'vue'
|
|
||||||
* import { PiniaVuePlugin, createPinia } from 'pinia'
|
|
||||||
*
|
|
||||||
* Vue.use(PiniaVuePlugin)
|
|
||||||
* const pinia = createPinia()
|
|
||||||
*
|
|
||||||
* new Vue({
|
|
||||||
* el: '#app',
|
|
||||||
* // ...
|
|
||||||
* pinia,
|
|
||||||
* })
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* @param _Vue - `Vue` imported from 'vue'.
|
|
||||||
*/
|
|
||||||
export declare const PiniaVuePlugin: Plugin_2;
|
|
||||||
|
|
||||||
declare interface _SetActivePinia {
|
|
||||||
(pinia: Pinia): Pinia;
|
|
||||||
(pinia: undefined): undefined;
|
|
||||||
(pinia: Pinia | undefined): Pinia | undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets or unsets the active pinia. Used in SSR and internally when calling
|
|
||||||
* actions and getters
|
|
||||||
*
|
|
||||||
* @param pinia - Pinia instance
|
|
||||||
*/
|
|
||||||
export declare const setActivePinia: _SetActivePinia;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Changes the suffix added by `mapStores()`. Can be set to an empty string.
|
|
||||||
* Defaults to `"Store"`. Make sure to extend the MapStoresCustomization
|
|
||||||
* interface if you are using TypeScript.
|
|
||||||
*
|
|
||||||
* @param suffix - new suffix
|
|
||||||
*/
|
|
||||||
export declare function setMapStoreSuffix(suffix: MapStoresCustomization extends Record<'suffix', infer Suffix> ? Suffix : string): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a
|
|
||||||
* stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.
|
|
||||||
*
|
|
||||||
* @param obj - target object
|
|
||||||
* @returns obj
|
|
||||||
*/
|
|
||||||
export declare function skipHydrate<T = any>(obj: T): T;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For internal use **only**.
|
|
||||||
*/
|
|
||||||
export declare type _Spread<A extends readonly any[]> = A extends [infer L, ...infer R] ? _StoreObject<L> & _Spread<R> : unknown;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generic state of a Store
|
|
||||||
*/
|
|
||||||
export declare type StateTree = Record<string | number | symbol, any>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Store type to build a store.
|
|
||||||
*/
|
|
||||||
export declare type Store<Id extends string = string, S extends StateTree = {}, G = {}, A = {}> = _StoreWithState<Id, S, G, A> & UnwrapRef<S> & _StoreWithGetters<G> & (_ActionsTree extends A ? {} : A) & PiniaCustomProperties<Id, S, G, A> & PiniaCustomStateProperties<S>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extract the actions of a store type. Works with both a Setup Store or an
|
|
||||||
* Options Store.
|
|
||||||
*/
|
|
||||||
export declare type StoreActions<SS> = SS extends Store<string, StateTree, _GettersTree<StateTree>, infer A> ? A : _ExtractActionsFromSetupStore<SS>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return type of `defineStore()`. Function that allows instantiating a store.
|
|
||||||
*/
|
|
||||||
export declare interface StoreDefinition<Id extends string = string, S extends StateTree = StateTree, G = _GettersTree<S>, A = _ActionsTree> {
|
|
||||||
/**
|
|
||||||
* Returns a store, creates it if necessary.
|
|
||||||
*
|
|
||||||
* @param pinia - Pinia instance to retrieve the store
|
|
||||||
* @param hot - dev only hot module replacement
|
|
||||||
*/
|
|
||||||
(pinia?: Pinia | null | undefined, hot?: StoreGeneric): Store<Id, S, G, A>;
|
|
||||||
/**
|
|
||||||
* Id of the store. Used by map helpers.
|
|
||||||
*/
|
|
||||||
$id: Id;
|
|
||||||
/* Excluded from this release type: _pinia */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generic and type-unsafe version of Store. Doesn't fail on access with
|
|
||||||
* strings, making it much easier to write generic functions that do not care
|
|
||||||
* about the kind of store that is passed.
|
|
||||||
*/
|
|
||||||
export declare type StoreGeneric = Store<string, StateTree, _GettersTree<StateTree>, _ActionsTree>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extract the getters of a store type. Works with both a Setup Store or an
|
|
||||||
* Options Store.
|
|
||||||
*/
|
|
||||||
export declare type StoreGetters<SS> = SS extends Store<string, StateTree, infer G, _ActionsTree> ? _StoreWithGetters<G> : _ExtractGettersFromSetupStore<SS>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For internal use **only**.
|
|
||||||
*/
|
|
||||||
export declare type _StoreObject<S> = S extends StoreDefinition<infer Ids, infer State, infer Getters, infer Actions> ? {
|
|
||||||
[Id in `${Ids}${MapStoresCustomization extends Record<'suffix', infer Suffix> ? Suffix : 'Store'}`]: () => Store<Id extends `${infer RealId}${MapStoresCustomization extends Record<'suffix', infer Suffix> ? Suffix : 'Store'}` ? RealId : string, State, Getters, Actions>;
|
|
||||||
} : {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Argument of `store.$onAction()`
|
|
||||||
*/
|
|
||||||
export declare type StoreOnActionListener<Id extends string, S extends StateTree, G, A> = (context: StoreOnActionListenerContext<Id, S, G, {} extends A ? _ActionsTree : A>) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Context object passed to callbacks of `store.$onAction(context => {})`
|
|
||||||
* TODO: should have only the Id, the Store and Actions to generate the proper object
|
|
||||||
*/
|
|
||||||
export declare type StoreOnActionListenerContext<Id extends string, S extends StateTree, G, A> = _ActionsTree extends A ? _StoreOnActionListenerContext<StoreGeneric, string, _ActionsTree> : {
|
|
||||||
[Name in keyof A]: Name extends string ? _StoreOnActionListenerContext<Store<Id, S, G, A>, Name, A> : never;
|
|
||||||
}[keyof A];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Actual type for {@link StoreOnActionListenerContext}. Exists for refactoring
|
|
||||||
* purposes. For internal use only.
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare interface _StoreOnActionListenerContext<Store, ActionName extends string, A> {
|
|
||||||
/**
|
|
||||||
* Name of the action
|
|
||||||
*/
|
|
||||||
name: ActionName;
|
|
||||||
/**
|
|
||||||
* Store that is invoking the action
|
|
||||||
*/
|
|
||||||
store: Store;
|
|
||||||
/**
|
|
||||||
* Parameters passed to the action
|
|
||||||
*/
|
|
||||||
args: A extends Record<ActionName, _Method> ? Parameters<A[ActionName]> : unknown[];
|
|
||||||
/**
|
|
||||||
* Sets up a hook once the action is finished. It receives the return value
|
|
||||||
* of the action, if it's a Promise, it will be unwrapped.
|
|
||||||
*/
|
|
||||||
after: (callback: A extends Record<ActionName, _Method> ? (resolvedReturn: _Awaited<ReturnType<A[ActionName]>>) => void : () => void) => void;
|
|
||||||
/**
|
|
||||||
* Sets up a hook if the action fails. Return `false` to catch the error and
|
|
||||||
* stop it from propagating.
|
|
||||||
*/
|
|
||||||
onError: (callback: (error: unknown) => void) => void;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Properties of a store.
|
|
||||||
*/
|
|
||||||
export declare interface StoreProperties<Id extends string> {
|
|
||||||
/**
|
|
||||||
* Unique identifier of the store
|
|
||||||
*/
|
|
||||||
$id: Id;
|
|
||||||
/* Excluded from this release type: _p */
|
|
||||||
/* Excluded from this release type: _getters */
|
|
||||||
/* Excluded from this release type: _isOptionsAPI */
|
|
||||||
/**
|
|
||||||
* Used by devtools plugin to retrieve properties added with plugins. Removed
|
|
||||||
* in production. Can be used by the user to add property keys of the store
|
|
||||||
* that should be displayed in devtools.
|
|
||||||
*/
|
|
||||||
_customProperties: Set<string>;
|
|
||||||
/* Excluded from this release type: _hotUpdate */
|
|
||||||
/* Excluded from this release type: _hotUpdating */
|
|
||||||
/* Excluded from this release type: _hmrPayload */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extract the state of a store type. Works with both a Setup Store or an
|
|
||||||
* Options Store. Note this unwraps refs.
|
|
||||||
*/
|
|
||||||
export declare type StoreState<SS> = SS extends Store<string, infer S, _GettersTree<StateTree>, _ActionsTree> ? UnwrapRef<S> : _ExtractStateFromSetupStore<SS>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the return type for `storeToRefs`.
|
|
||||||
* Will convert any `getters` into `ComputedRef`.
|
|
||||||
*/
|
|
||||||
declare type StoreToRefs<SS extends StoreGeneric> = ToRefs<StoreState<SS> & PiniaCustomStateProperties<StoreState<SS>>> & ToComputedRefs<StoreGetters<SS>>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an object of references with all the state, getters, and plugin-added
|
|
||||||
* state properties of the store. Similar to `toRefs()` but specifically
|
|
||||||
* designed for Pinia stores so methods and non reactive properties are
|
|
||||||
* completely ignored.
|
|
||||||
*
|
|
||||||
* @param store - store to extract the refs from
|
|
||||||
*/
|
|
||||||
export declare function storeToRefs<SS extends StoreGeneric>(store: SS): StoreToRefs<SS>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Store augmented for actions. For internal usage only.
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _StoreWithActions<A> = {
|
|
||||||
[k in keyof A]: A[k] extends (...args: infer P) => infer R ? (...args: P) => R : never;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Store augmented with getters. For internal usage only.
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _StoreWithGetters<G> = {
|
|
||||||
readonly [k in keyof G]: G[k] extends (...args: any[]) => infer R ? R : UnwrapRef<G[k]>;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base store with state and functions. Should not be used directly.
|
|
||||||
*/
|
|
||||||
export declare interface _StoreWithState<Id extends string, S extends StateTree, G, A> extends StoreProperties<Id> {
|
|
||||||
/**
|
|
||||||
* State of the Store. Setting it will internally call `$patch()` to update the state.
|
|
||||||
*/
|
|
||||||
$state: UnwrapRef<S> & PiniaCustomStateProperties<S>;
|
|
||||||
/**
|
|
||||||
* Applies a state patch to current state. Allows passing nested values
|
|
||||||
*
|
|
||||||
* @param partialState - patch to apply to the state
|
|
||||||
*/
|
|
||||||
$patch(partialState: _DeepPartial<UnwrapRef<S>>): void;
|
|
||||||
/**
|
|
||||||
* Group multiple changes into one function. Useful when mutating objects like
|
|
||||||
* Sets or arrays and applying an object patch isn't practical, e.g. appending
|
|
||||||
* to an array. The function passed to `$patch()` **must be synchronous**.
|
|
||||||
*
|
|
||||||
* @param stateMutator - function that mutates `state`, cannot be asynchronous
|
|
||||||
*/
|
|
||||||
$patch<F extends (state: UnwrapRef<S>) => any>(stateMutator: ReturnType<F> extends Promise<any> ? never : F): void;
|
|
||||||
/**
|
|
||||||
* Resets the store to its initial state by building a new state object.
|
|
||||||
* TODO: make this options only
|
|
||||||
*/
|
|
||||||
$reset(): void;
|
|
||||||
/**
|
|
||||||
* Setups a callback to be called whenever the state changes. It also returns a function to remove the callback. Note
|
|
||||||
* that when calling `store.$subscribe()` inside of a component, it will be automatically cleaned up when the
|
|
||||||
* component gets unmounted unless `detached` is set to true.
|
|
||||||
*
|
|
||||||
* @param callback - callback passed to the watcher
|
|
||||||
* @param options - `watch` options + `detached` to detach the subscription from the context (usually a component)
|
|
||||||
* this is called from. Note that the `flush` option does not affect calls to `store.$patch()`.
|
|
||||||
* @returns function that removes the watcher
|
|
||||||
*/
|
|
||||||
$subscribe(callback: SubscriptionCallback<S>, options?: {
|
|
||||||
detached?: boolean;
|
|
||||||
} & WatchOptions): () => void;
|
|
||||||
/**
|
|
||||||
* Setups a callback to be called every time an action is about to get
|
|
||||||
* invoked. The callback receives an object with all the relevant information
|
|
||||||
* of the invoked action:
|
|
||||||
* - `store`: the store it is invoked on
|
|
||||||
* - `name`: The name of the action
|
|
||||||
* - `args`: The parameters passed to the action
|
|
||||||
*
|
|
||||||
* On top of these, it receives two functions that allow setting up a callback
|
|
||||||
* once the action finishes or when it fails.
|
|
||||||
*
|
|
||||||
* It also returns a function to remove the callback. Note than when calling
|
|
||||||
* `store.$onAction()` inside of a component, it will be automatically cleaned
|
|
||||||
* up when the component gets unmounted unless `detached` is set to true.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
*
|
|
||||||
*```js
|
|
||||||
*store.$onAction(({ after, onError }) => {
|
|
||||||
* // Here you could share variables between all of the hooks as well as
|
|
||||||
* // setting up watchers and clean them up
|
|
||||||
* after((resolvedValue) => {
|
|
||||||
* // can be used to cleanup side effects
|
|
||||||
* . // `resolvedValue` is the value returned by the action, if it's a
|
|
||||||
* . // Promise, it will be the resolved value instead of the Promise
|
|
||||||
* })
|
|
||||||
* onError((error) => {
|
|
||||||
* // can be used to pass up errors
|
|
||||||
* })
|
|
||||||
*})
|
|
||||||
*```
|
|
||||||
*
|
|
||||||
* @param callback - callback called before every action
|
|
||||||
* @param detached - detach the subscription from the context this is called from
|
|
||||||
* @returns function that removes the watcher
|
|
||||||
*/
|
|
||||||
$onAction(callback: StoreOnActionListener<Id, S, G, A>, detached?: boolean): () => void;
|
|
||||||
/**
|
|
||||||
* Stops the associated effect scope of the store and remove it from the store
|
|
||||||
* registry. Plugins can override this method to cleanup any added effects.
|
|
||||||
* e.g. devtools plugin stops displaying disposed stores from devtools.
|
|
||||||
* Note this doesn't delete the state of the store, you have to do it manually with
|
|
||||||
* `delete pinia.state.value[store.$id]` if you want to. If you don't and the
|
|
||||||
* store is used again, it will reuse the previous state.
|
|
||||||
*/
|
|
||||||
$dispose(): void;
|
|
||||||
/* Excluded from this release type: _r */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Callback of a subscription
|
|
||||||
*/
|
|
||||||
export declare type SubscriptionCallback<S> = (
|
|
||||||
/**
|
|
||||||
* Object with information relative to the store mutation that triggered the
|
|
||||||
* subscription.
|
|
||||||
*/
|
|
||||||
mutation: SubscriptionCallbackMutation<S>,
|
|
||||||
/**
|
|
||||||
* State of the store when the subscription is triggered. Same as
|
|
||||||
* `store.$state`.
|
|
||||||
*/
|
|
||||||
state: UnwrapRef<S>) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Context object passed to a subscription callback.
|
|
||||||
*/
|
|
||||||
export declare type SubscriptionCallbackMutation<S> = SubscriptionCallbackMutationDirect | SubscriptionCallbackMutationPatchObject<S> | SubscriptionCallbackMutationPatchFunction;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base type for the context passed to a subscription callback. Internal type.
|
|
||||||
*/
|
|
||||||
export declare interface _SubscriptionCallbackMutationBase {
|
|
||||||
/**
|
|
||||||
* Type of the mutation.
|
|
||||||
*/
|
|
||||||
type: MutationType;
|
|
||||||
/**
|
|
||||||
* `id` of the store doing the mutation.
|
|
||||||
*/
|
|
||||||
storeId: string;
|
|
||||||
/**
|
|
||||||
* 🔴 DEV ONLY, DO NOT use for production code. Different mutation calls. Comes from
|
|
||||||
* https://vuejs.org/guide/extras/reactivity-in-depth.html#reactivity-debugging and allows to track mutations in
|
|
||||||
* devtools and plugins **during development only**.
|
|
||||||
*/
|
|
||||||
events?: DebuggerEvent[] | DebuggerEvent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Context passed to a subscription callback when directly mutating the state of
|
|
||||||
* a store with `store.someState = newValue` or `store.$state.someState =
|
|
||||||
* newValue`.
|
|
||||||
*/
|
|
||||||
export declare interface SubscriptionCallbackMutationDirect extends _SubscriptionCallbackMutationBase {
|
|
||||||
type: MutationType.direct;
|
|
||||||
events: DebuggerEvent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Context passed to a subscription callback when `store.$patch()` is called
|
|
||||||
* with a function.
|
|
||||||
*/
|
|
||||||
export declare interface SubscriptionCallbackMutationPatchFunction extends _SubscriptionCallbackMutationBase {
|
|
||||||
type: MutationType.patchFunction;
|
|
||||||
events: DebuggerEvent[];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Context passed to a subscription callback when `store.$patch()` is called
|
|
||||||
* with an object.
|
|
||||||
*/
|
|
||||||
export declare interface SubscriptionCallbackMutationPatchObject<S> extends _SubscriptionCallbackMutationBase {
|
|
||||||
type: MutationType.patchObject;
|
|
||||||
events: DebuggerEvent[];
|
|
||||||
/**
|
|
||||||
* Object passed to `store.$patch()`.
|
|
||||||
*/
|
|
||||||
payload: _DeepPartial<S>;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare type ToComputedRefs<T> = {
|
|
||||||
[K in keyof T]: ToRef<T[K]> extends Ref<infer U> ? ComputedRef<U> : ToRef<T[K]>;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Type that enables refactoring through IDE.
|
|
||||||
* For internal use **only**
|
|
||||||
*/
|
|
||||||
export declare type _UnwrapAll<SS> = {
|
|
||||||
[K in keyof SS]: UnwrapRef<SS[K]>;
|
|
||||||
};
|
|
||||||
|
|
||||||
export { }
|
|
||||||
|
|
||||||
// Extensions of Vue types to be appended manually
|
|
||||||
// https://github.com/microsoft/rushstack/issues/2090
|
|
||||||
// https://github.com/microsoft/rushstack/issues/1709
|
|
||||||
|
|
||||||
// @ts-ignore: works on Vue 2, fails in Vue 3
|
|
||||||
declare module 'vue/types/vue' {
|
|
||||||
interface Vue {
|
|
||||||
/**
|
|
||||||
* Currently installed pinia instance.
|
|
||||||
*/
|
|
||||||
$pinia: Pinia
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cache of stores instantiated by the current instance. Used by map
|
|
||||||
* helpers. Used internally by Pinia.
|
|
||||||
*
|
|
||||||
* @internal
|
|
||||||
*/
|
|
||||||
_pStores?: Record<string, Store>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// @ts-ignore: works on Vue 2, fails in Vue 3
|
|
||||||
declare module 'vue/types/options' {
|
|
||||||
interface ComponentOptions<V> {
|
|
||||||
/**
|
|
||||||
* Pinia instance to install in your application. Should be passed to the
|
|
||||||
* root Vue.
|
|
||||||
*/
|
|
||||||
pinia?: Pinia
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: figure out why it cannot be 'vue'
|
|
||||||
// @ts-ignore: works on Vue 3, fails in Vue 2
|
|
||||||
declare module '@vue/runtime-core' {
|
|
||||||
export interface ComponentCustomProperties {
|
|
||||||
/**
|
|
||||||
* Access to the application's Pinia
|
|
||||||
*/
|
|
||||||
$pinia: Pinia
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cache of stores instantiated by the current instance. Used by devtools to
|
|
||||||
* list currently used stores. Used internally by Pinia.
|
|
||||||
*
|
|
||||||
* @internal
|
|
||||||
*/
|
|
||||||
_pStores?: Record<string, StoreGeneric>
|
|
||||||
}
|
|
||||||
}
|
|
1996
node_modules/pinia/dist/pinia.esm-browser.js
generated
vendored
1996
node_modules/pinia/dist/pinia.esm-browser.js
generated
vendored
File diff suppressed because it is too large
Load Diff
2180
node_modules/pinia/dist/pinia.iife.js
generated
vendored
2180
node_modules/pinia/dist/pinia.iife.js
generated
vendored
File diff suppressed because it is too large
Load Diff
6
node_modules/pinia/dist/pinia.iife.prod.js
generated
vendored
6
node_modules/pinia/dist/pinia.iife.prod.js
generated
vendored
File diff suppressed because one or more lines are too long
2004
node_modules/pinia/dist/pinia.mjs
generated
vendored
2004
node_modules/pinia/dist/pinia.mjs
generated
vendored
File diff suppressed because it is too large
Load Diff
808
node_modules/pinia/dist/pinia.prod.cjs
generated
vendored
808
node_modules/pinia/dist/pinia.prod.cjs
generated
vendored
@ -1,808 +0,0 @@
|
|||||||
/*!
|
|
||||||
* pinia v2.1.6
|
|
||||||
* (c) 2023 Eduardo San Martin Morote
|
|
||||||
* @license MIT
|
|
||||||
*/
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var vueDemi = require('vue-demi');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* setActivePinia must be called to handle SSR at the top of functions like
|
|
||||||
* `fetch`, `setup`, `serverPrefetch` and others
|
|
||||||
*/
|
|
||||||
let activePinia;
|
|
||||||
/**
|
|
||||||
* Sets or unsets the active pinia. Used in SSR and internally when calling
|
|
||||||
* actions and getters
|
|
||||||
*
|
|
||||||
* @param pinia - Pinia instance
|
|
||||||
*/
|
|
||||||
// @ts-expect-error: cannot constrain the type of the return
|
|
||||||
const setActivePinia = (pinia) => (activePinia = pinia);
|
|
||||||
/**
|
|
||||||
* Get the currently active pinia if there is any.
|
|
||||||
*/
|
|
||||||
const getActivePinia = () => (vueDemi.hasInjectionContext() && vueDemi.inject(piniaSymbol)) || activePinia;
|
|
||||||
const piniaSymbol = (/* istanbul ignore next */ Symbol());
|
|
||||||
|
|
||||||
function isPlainObject(
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
o) {
|
|
||||||
return (o &&
|
|
||||||
typeof o === 'object' &&
|
|
||||||
Object.prototype.toString.call(o) === '[object Object]' &&
|
|
||||||
typeof o.toJSON !== 'function');
|
|
||||||
}
|
|
||||||
// type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> }
|
|
||||||
// TODO: can we change these to numbers?
|
|
||||||
/**
|
|
||||||
* Possible types for SubscriptionCallback
|
|
||||||
*/
|
|
||||||
exports.MutationType = void 0;
|
|
||||||
(function (MutationType) {
|
|
||||||
/**
|
|
||||||
* Direct mutation of the state:
|
|
||||||
*
|
|
||||||
* - `store.name = 'new name'`
|
|
||||||
* - `store.$state.name = 'new name'`
|
|
||||||
* - `store.list.push('new item')`
|
|
||||||
*/
|
|
||||||
MutationType["direct"] = "direct";
|
|
||||||
/**
|
|
||||||
* Mutated the state with `$patch` and an object
|
|
||||||
*
|
|
||||||
* - `store.$patch({ name: 'newName' })`
|
|
||||||
*/
|
|
||||||
MutationType["patchObject"] = "patch object";
|
|
||||||
/**
|
|
||||||
* Mutated the state with `$patch` and a function
|
|
||||||
*
|
|
||||||
* - `store.$patch(state => state.name = 'newName')`
|
|
||||||
*/
|
|
||||||
MutationType["patchFunction"] = "patch function";
|
|
||||||
// maybe reset? for $state = {} and $reset
|
|
||||||
})(exports.MutationType || (exports.MutationType = {}));
|
|
||||||
|
|
||||||
const IS_CLIENT = typeof window !== 'undefined';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a Pinia instance to be used by the application
|
|
||||||
*/
|
|
||||||
function createPinia() {
|
|
||||||
const scope = vueDemi.effectScope(true);
|
|
||||||
// NOTE: here we could check the window object for a state and directly set it
|
|
||||||
// if there is anything like it with Vue 3 SSR
|
|
||||||
const state = scope.run(() => vueDemi.ref({}));
|
|
||||||
let _p = [];
|
|
||||||
// plugins added before calling app.use(pinia)
|
|
||||||
let toBeInstalled = [];
|
|
||||||
const pinia = vueDemi.markRaw({
|
|
||||||
install(app) {
|
|
||||||
// this allows calling useStore() outside of a component setup after
|
|
||||||
// installing pinia's plugin
|
|
||||||
setActivePinia(pinia);
|
|
||||||
if (!vueDemi.isVue2) {
|
|
||||||
pinia._a = app;
|
|
||||||
app.provide(piniaSymbol, pinia);
|
|
||||||
app.config.globalProperties.$pinia = pinia;
|
|
||||||
toBeInstalled.forEach((plugin) => _p.push(plugin));
|
|
||||||
toBeInstalled = [];
|
|
||||||
}
|
|
||||||
},
|
|
||||||
use(plugin) {
|
|
||||||
if (!this._a && !vueDemi.isVue2) {
|
|
||||||
toBeInstalled.push(plugin);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
_p.push(plugin);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
},
|
|
||||||
_p,
|
|
||||||
// it's actually undefined here
|
|
||||||
// @ts-expect-error
|
|
||||||
_a: null,
|
|
||||||
_e: scope,
|
|
||||||
_s: new Map(),
|
|
||||||
state,
|
|
||||||
});
|
|
||||||
return pinia;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```js
|
|
||||||
* const useUser = defineStore(...)
|
|
||||||
* if (import.meta.hot) {
|
|
||||||
* import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))
|
|
||||||
* }
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* @param initialUseStore - return of the defineStore to hot update
|
|
||||||
* @param hot - `import.meta.hot`
|
|
||||||
*/
|
|
||||||
function acceptHMRUpdate(initialUseStore, hot) {
|
|
||||||
// strip as much as possible from iife.prod
|
|
||||||
{
|
|
||||||
return () => { };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const noop = () => { };
|
|
||||||
function addSubscription(subscriptions, callback, detached, onCleanup = noop) {
|
|
||||||
subscriptions.push(callback);
|
|
||||||
const removeSubscription = () => {
|
|
||||||
const idx = subscriptions.indexOf(callback);
|
|
||||||
if (idx > -1) {
|
|
||||||
subscriptions.splice(idx, 1);
|
|
||||||
onCleanup();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
if (!detached && vueDemi.getCurrentScope()) {
|
|
||||||
vueDemi.onScopeDispose(removeSubscription);
|
|
||||||
}
|
|
||||||
return removeSubscription;
|
|
||||||
}
|
|
||||||
function triggerSubscriptions(subscriptions, ...args) {
|
|
||||||
subscriptions.slice().forEach((callback) => {
|
|
||||||
callback(...args);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const fallbackRunWithContext = (fn) => fn();
|
|
||||||
function mergeReactiveObjects(target, patchToApply) {
|
|
||||||
// Handle Map instances
|
|
||||||
if (target instanceof Map && patchToApply instanceof Map) {
|
|
||||||
patchToApply.forEach((value, key) => target.set(key, value));
|
|
||||||
}
|
|
||||||
// Handle Set instances
|
|
||||||
if (target instanceof Set && patchToApply instanceof Set) {
|
|
||||||
patchToApply.forEach(target.add, target);
|
|
||||||
}
|
|
||||||
// no need to go through symbols because they cannot be serialized anyway
|
|
||||||
for (const key in patchToApply) {
|
|
||||||
if (!patchToApply.hasOwnProperty(key))
|
|
||||||
continue;
|
|
||||||
const subPatch = patchToApply[key];
|
|
||||||
const targetValue = target[key];
|
|
||||||
if (isPlainObject(targetValue) &&
|
|
||||||
isPlainObject(subPatch) &&
|
|
||||||
target.hasOwnProperty(key) &&
|
|
||||||
!vueDemi.isRef(subPatch) &&
|
|
||||||
!vueDemi.isReactive(subPatch)) {
|
|
||||||
// NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might
|
|
||||||
// start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that
|
|
||||||
// to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.
|
|
||||||
target[key] = mergeReactiveObjects(targetValue, subPatch);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// @ts-expect-error: subPatch is a valid value
|
|
||||||
target[key] = subPatch;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return target;
|
|
||||||
}
|
|
||||||
const skipHydrateSymbol = /* istanbul ignore next */ Symbol();
|
|
||||||
const skipHydrateMap = /*#__PURE__*/ new WeakMap();
|
|
||||||
/**
|
|
||||||
* Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a
|
|
||||||
* stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.
|
|
||||||
*
|
|
||||||
* @param obj - target object
|
|
||||||
* @returns obj
|
|
||||||
*/
|
|
||||||
function skipHydrate(obj) {
|
|
||||||
return vueDemi.isVue2
|
|
||||||
? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work...
|
|
||||||
/* istanbul ignore next */ skipHydrateMap.set(obj, 1) && obj
|
|
||||||
: Object.defineProperty(obj, skipHydrateSymbol, {});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Returns whether a value should be hydrated
|
|
||||||
*
|
|
||||||
* @param obj - target variable
|
|
||||||
* @returns true if `obj` should be hydrated
|
|
||||||
*/
|
|
||||||
function shouldHydrate(obj) {
|
|
||||||
return vueDemi.isVue2
|
|
||||||
? /* istanbul ignore next */ !skipHydrateMap.has(obj)
|
|
||||||
: !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);
|
|
||||||
}
|
|
||||||
const { assign } = Object;
|
|
||||||
function isComputed(o) {
|
|
||||||
return !!(vueDemi.isRef(o) && o.effect);
|
|
||||||
}
|
|
||||||
function createOptionsStore(id, options, pinia, hot) {
|
|
||||||
const { state, actions, getters } = options;
|
|
||||||
const initialState = pinia.state.value[id];
|
|
||||||
let store;
|
|
||||||
function setup() {
|
|
||||||
if (!initialState && (!false )) {
|
|
||||||
/* istanbul ignore if */
|
|
||||||
if (vueDemi.isVue2) {
|
|
||||||
vueDemi.set(pinia.state.value, id, state ? state() : {});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pinia.state.value[id] = state ? state() : {};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// avoid creating a state in pinia.state.value
|
|
||||||
const localState = vueDemi.toRefs(pinia.state.value[id]);
|
|
||||||
return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {
|
|
||||||
computedGetters[name] = vueDemi.markRaw(vueDemi.computed(() => {
|
|
||||||
setActivePinia(pinia);
|
|
||||||
// it was created just before
|
|
||||||
const store = pinia._s.get(id);
|
|
||||||
// allow cross using stores
|
|
||||||
/* istanbul ignore next */
|
|
||||||
if (vueDemi.isVue2 && !store._r)
|
|
||||||
return;
|
|
||||||
// @ts-expect-error
|
|
||||||
// return getters![name].call(context, context)
|
|
||||||
// TODO: avoid reading the getter while assigning with a global variable
|
|
||||||
return getters[name].call(store, store);
|
|
||||||
}));
|
|
||||||
return computedGetters;
|
|
||||||
}, {}));
|
|
||||||
}
|
|
||||||
store = createSetupStore(id, setup, options, pinia, hot, true);
|
|
||||||
return store;
|
|
||||||
}
|
|
||||||
function createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {
|
|
||||||
let scope;
|
|
||||||
const optionsForPlugin = assign({ actions: {} }, options);
|
|
||||||
// watcher options for $subscribe
|
|
||||||
const $subscribeOptions = {
|
|
||||||
deep: true,
|
|
||||||
// flush: 'post',
|
|
||||||
};
|
|
||||||
// internal state
|
|
||||||
let isListening; // set to true at the end
|
|
||||||
let isSyncListening; // set to true at the end
|
|
||||||
let subscriptions = [];
|
|
||||||
let actionSubscriptions = [];
|
|
||||||
let debuggerEvents;
|
|
||||||
const initialState = pinia.state.value[$id];
|
|
||||||
// avoid setting the state for option stores if it is set
|
|
||||||
// by the setup
|
|
||||||
if (!isOptionsStore && !initialState && (!false )) {
|
|
||||||
/* istanbul ignore if */
|
|
||||||
if (vueDemi.isVue2) {
|
|
||||||
vueDemi.set(pinia.state.value, $id, {});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pinia.state.value[$id] = {};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
vueDemi.ref({});
|
|
||||||
// avoid triggering too many listeners
|
|
||||||
// https://github.com/vuejs/pinia/issues/1129
|
|
||||||
let activeListener;
|
|
||||||
function $patch(partialStateOrMutator) {
|
|
||||||
let subscriptionMutation;
|
|
||||||
isListening = isSyncListening = false;
|
|
||||||
if (typeof partialStateOrMutator === 'function') {
|
|
||||||
partialStateOrMutator(pinia.state.value[$id]);
|
|
||||||
subscriptionMutation = {
|
|
||||||
type: exports.MutationType.patchFunction,
|
|
||||||
storeId: $id,
|
|
||||||
events: debuggerEvents,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);
|
|
||||||
subscriptionMutation = {
|
|
||||||
type: exports.MutationType.patchObject,
|
|
||||||
payload: partialStateOrMutator,
|
|
||||||
storeId: $id,
|
|
||||||
events: debuggerEvents,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
const myListenerId = (activeListener = Symbol());
|
|
||||||
vueDemi.nextTick().then(() => {
|
|
||||||
if (activeListener === myListenerId) {
|
|
||||||
isListening = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
isSyncListening = true;
|
|
||||||
// because we paused the watcher, we need to manually call the subscriptions
|
|
||||||
triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);
|
|
||||||
}
|
|
||||||
const $reset = isOptionsStore
|
|
||||||
? function $reset() {
|
|
||||||
const { state } = options;
|
|
||||||
const newState = state ? state() : {};
|
|
||||||
// we use a patch to group all changes into one single subscription
|
|
||||||
this.$patch(($state) => {
|
|
||||||
assign($state, newState);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
: /* istanbul ignore next */
|
|
||||||
noop;
|
|
||||||
function $dispose() {
|
|
||||||
scope.stop();
|
|
||||||
subscriptions = [];
|
|
||||||
actionSubscriptions = [];
|
|
||||||
pinia._s.delete($id);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Wraps an action to handle subscriptions.
|
|
||||||
*
|
|
||||||
* @param name - name of the action
|
|
||||||
* @param action - action to wrap
|
|
||||||
* @returns a wrapped action to handle subscriptions
|
|
||||||
*/
|
|
||||||
function wrapAction(name, action) {
|
|
||||||
return function () {
|
|
||||||
setActivePinia(pinia);
|
|
||||||
const args = Array.from(arguments);
|
|
||||||
const afterCallbackList = [];
|
|
||||||
const onErrorCallbackList = [];
|
|
||||||
function after(callback) {
|
|
||||||
afterCallbackList.push(callback);
|
|
||||||
}
|
|
||||||
function onError(callback) {
|
|
||||||
onErrorCallbackList.push(callback);
|
|
||||||
}
|
|
||||||
// @ts-expect-error
|
|
||||||
triggerSubscriptions(actionSubscriptions, {
|
|
||||||
args,
|
|
||||||
name,
|
|
||||||
store,
|
|
||||||
after,
|
|
||||||
onError,
|
|
||||||
});
|
|
||||||
let ret;
|
|
||||||
try {
|
|
||||||
ret = action.apply(this && this.$id === $id ? this : store, args);
|
|
||||||
// handle sync errors
|
|
||||||
}
|
|
||||||
catch (error) {
|
|
||||||
triggerSubscriptions(onErrorCallbackList, error);
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
if (ret instanceof Promise) {
|
|
||||||
return ret
|
|
||||||
.then((value) => {
|
|
||||||
triggerSubscriptions(afterCallbackList, value);
|
|
||||||
return value;
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
triggerSubscriptions(onErrorCallbackList, error);
|
|
||||||
return Promise.reject(error);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// trigger after callbacks
|
|
||||||
triggerSubscriptions(afterCallbackList, ret);
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
const partialStore = {
|
|
||||||
_p: pinia,
|
|
||||||
// _s: scope,
|
|
||||||
$id,
|
|
||||||
$onAction: addSubscription.bind(null, actionSubscriptions),
|
|
||||||
$patch,
|
|
||||||
$reset,
|
|
||||||
$subscribe(callback, options = {}) {
|
|
||||||
const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());
|
|
||||||
const stopWatcher = scope.run(() => vueDemi.watch(() => pinia.state.value[$id], (state) => {
|
|
||||||
if (options.flush === 'sync' ? isSyncListening : isListening) {
|
|
||||||
callback({
|
|
||||||
storeId: $id,
|
|
||||||
type: exports.MutationType.direct,
|
|
||||||
events: debuggerEvents,
|
|
||||||
}, state);
|
|
||||||
}
|
|
||||||
}, assign({}, $subscribeOptions, options)));
|
|
||||||
return removeSubscription;
|
|
||||||
},
|
|
||||||
$dispose,
|
|
||||||
};
|
|
||||||
/* istanbul ignore if */
|
|
||||||
if (vueDemi.isVue2) {
|
|
||||||
// start as non ready
|
|
||||||
partialStore._r = false;
|
|
||||||
}
|
|
||||||
const store = vueDemi.reactive(partialStore);
|
|
||||||
// store the partial store now so the setup of stores can instantiate each other before they are finished without
|
|
||||||
// creating infinite loops.
|
|
||||||
pinia._s.set($id, store);
|
|
||||||
const runWithContext = (pinia._a && pinia._a.runWithContext) || fallbackRunWithContext;
|
|
||||||
// TODO: idea create skipSerialize that marks properties as non serializable and they are skipped
|
|
||||||
const setupStore = pinia._e.run(() => {
|
|
||||||
scope = vueDemi.effectScope();
|
|
||||||
return runWithContext(() => scope.run(setup));
|
|
||||||
});
|
|
||||||
// overwrite existing actions to support $onAction
|
|
||||||
for (const key in setupStore) {
|
|
||||||
const prop = setupStore[key];
|
|
||||||
if ((vueDemi.isRef(prop) && !isComputed(prop)) || vueDemi.isReactive(prop)) {
|
|
||||||
// mark it as a piece of state to be serialized
|
|
||||||
if (!isOptionsStore) {
|
|
||||||
// in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created
|
|
||||||
if (initialState && shouldHydrate(prop)) {
|
|
||||||
if (vueDemi.isRef(prop)) {
|
|
||||||
prop.value = initialState[key];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// probably a reactive object, lets recursively assign
|
|
||||||
// @ts-expect-error: prop is unknown
|
|
||||||
mergeReactiveObjects(prop, initialState[key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// transfer the ref to the pinia state to keep everything in sync
|
|
||||||
/* istanbul ignore if */
|
|
||||||
if (vueDemi.isVue2) {
|
|
||||||
vueDemi.set(pinia.state.value[$id], key, prop);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pinia.state.value[$id][key] = prop;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// action
|
|
||||||
}
|
|
||||||
else if (typeof prop === 'function') {
|
|
||||||
// @ts-expect-error: we are overriding the function we avoid wrapping if
|
|
||||||
const actionValue = wrapAction(key, prop);
|
|
||||||
// this a hot module replacement store because the hotUpdate method needs
|
|
||||||
// to do it with the right context
|
|
||||||
/* istanbul ignore if */
|
|
||||||
if (vueDemi.isVue2) {
|
|
||||||
vueDemi.set(setupStore, key, actionValue);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// @ts-expect-error
|
|
||||||
setupStore[key] = actionValue;
|
|
||||||
}
|
|
||||||
// list actions so they can be used in plugins
|
|
||||||
// @ts-expect-error
|
|
||||||
optionsForPlugin.actions[key] = prop;
|
|
||||||
}
|
|
||||||
else ;
|
|
||||||
}
|
|
||||||
// add the state, getters, and action properties
|
|
||||||
/* istanbul ignore if */
|
|
||||||
if (vueDemi.isVue2) {
|
|
||||||
Object.keys(setupStore).forEach((key) => {
|
|
||||||
vueDemi.set(store, key, setupStore[key]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
assign(store, setupStore);
|
|
||||||
// allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.
|
|
||||||
// Make `storeToRefs()` work with `reactive()` #799
|
|
||||||
assign(vueDemi.toRaw(store), setupStore);
|
|
||||||
}
|
|
||||||
// use this instead of a computed with setter to be able to create it anywhere
|
|
||||||
// without linking the computed lifespan to wherever the store is first
|
|
||||||
// created.
|
|
||||||
Object.defineProperty(store, '$state', {
|
|
||||||
get: () => (pinia.state.value[$id]),
|
|
||||||
set: (state) => {
|
|
||||||
$patch(($state) => {
|
|
||||||
assign($state, state);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
||||||
/* istanbul ignore if */
|
|
||||||
if (vueDemi.isVue2) {
|
|
||||||
// mark the store as ready before plugins
|
|
||||||
store._r = true;
|
|
||||||
}
|
|
||||||
// apply all plugins
|
|
||||||
pinia._p.forEach((extender) => {
|
|
||||||
/* istanbul ignore else */
|
|
||||||
{
|
|
||||||
assign(store, scope.run(() => extender({
|
|
||||||
store,
|
|
||||||
app: pinia._a,
|
|
||||||
pinia,
|
|
||||||
options: optionsForPlugin,
|
|
||||||
})));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// only apply hydrate to option stores with an initial state in pinia
|
|
||||||
if (initialState &&
|
|
||||||
isOptionsStore &&
|
|
||||||
options.hydrate) {
|
|
||||||
options.hydrate(store.$state, initialState);
|
|
||||||
}
|
|
||||||
isListening = true;
|
|
||||||
isSyncListening = true;
|
|
||||||
return store;
|
|
||||||
}
|
|
||||||
function defineStore(
|
|
||||||
// TODO: add proper types from above
|
|
||||||
idOrOptions, setup, setupOptions) {
|
|
||||||
let id;
|
|
||||||
let options;
|
|
||||||
const isSetupStore = typeof setup === 'function';
|
|
||||||
if (typeof idOrOptions === 'string') {
|
|
||||||
id = idOrOptions;
|
|
||||||
// the option store setup will contain the actual options in this case
|
|
||||||
options = isSetupStore ? setupOptions : setup;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
options = idOrOptions;
|
|
||||||
id = idOrOptions.id;
|
|
||||||
}
|
|
||||||
function useStore(pinia, hot) {
|
|
||||||
const hasContext = vueDemi.hasInjectionContext();
|
|
||||||
pinia =
|
|
||||||
// in test mode, ignore the argument provided as we can always retrieve a
|
|
||||||
// pinia instance with getActivePinia()
|
|
||||||
((process.env.NODE_ENV === 'test') && activePinia && activePinia._testing ? null : pinia) ||
|
|
||||||
(hasContext ? vueDemi.inject(piniaSymbol, null) : null);
|
|
||||||
if (pinia)
|
|
||||||
setActivePinia(pinia);
|
|
||||||
pinia = activePinia;
|
|
||||||
if (!pinia._s.has(id)) {
|
|
||||||
// creating the store registers it in `pinia._s`
|
|
||||||
if (isSetupStore) {
|
|
||||||
createSetupStore(id, setup, options, pinia);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
createOptionsStore(id, options, pinia);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const store = pinia._s.get(id);
|
|
||||||
// StoreGeneric cannot be casted towards Store
|
|
||||||
return store;
|
|
||||||
}
|
|
||||||
useStore.$id = id;
|
|
||||||
return useStore;
|
|
||||||
}
|
|
||||||
|
|
||||||
let mapStoreSuffix = 'Store';
|
|
||||||
/**
|
|
||||||
* Changes the suffix added by `mapStores()`. Can be set to an empty string.
|
|
||||||
* Defaults to `"Store"`. Make sure to extend the MapStoresCustomization
|
|
||||||
* interface if you are using TypeScript.
|
|
||||||
*
|
|
||||||
* @param suffix - new suffix
|
|
||||||
*/
|
|
||||||
function setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS
|
|
||||||
) {
|
|
||||||
mapStoreSuffix = suffix;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Allows using stores without the composition API (`setup()`) by generating an
|
|
||||||
* object to be spread in the `computed` field of a component. It accepts a list
|
|
||||||
* of store definitions.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```js
|
|
||||||
* export default {
|
|
||||||
* computed: {
|
|
||||||
* // other computed properties
|
|
||||||
* ...mapStores(useUserStore, useCartStore)
|
|
||||||
* },
|
|
||||||
*
|
|
||||||
* created() {
|
|
||||||
* this.userStore // store with id "user"
|
|
||||||
* this.cartStore // store with id "cart"
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* @param stores - list of stores to map to an object
|
|
||||||
*/
|
|
||||||
function mapStores(...stores) {
|
|
||||||
return stores.reduce((reduced, useStore) => {
|
|
||||||
// @ts-expect-error: $id is added by defineStore
|
|
||||||
reduced[useStore.$id + mapStoreSuffix] = function () {
|
|
||||||
return useStore(this.$pinia);
|
|
||||||
};
|
|
||||||
return reduced;
|
|
||||||
}, {});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Allows using state and getters from one store without using the composition
|
|
||||||
* API (`setup()`) by generating an object to be spread in the `computed` field
|
|
||||||
* of a component.
|
|
||||||
*
|
|
||||||
* @param useStore - store to map from
|
|
||||||
* @param keysOrMapper - array or object
|
|
||||||
*/
|
|
||||||
function mapState(useStore, keysOrMapper) {
|
|
||||||
return Array.isArray(keysOrMapper)
|
|
||||||
? keysOrMapper.reduce((reduced, key) => {
|
|
||||||
reduced[key] = function () {
|
|
||||||
return useStore(this.$pinia)[key];
|
|
||||||
};
|
|
||||||
return reduced;
|
|
||||||
}, {})
|
|
||||||
: Object.keys(keysOrMapper).reduce((reduced, key) => {
|
|
||||||
// @ts-expect-error
|
|
||||||
reduced[key] = function () {
|
|
||||||
const store = useStore(this.$pinia);
|
|
||||||
const storeKey = keysOrMapper[key];
|
|
||||||
// for some reason TS is unable to infer the type of storeKey to be a
|
|
||||||
// function
|
|
||||||
return typeof storeKey === 'function'
|
|
||||||
? storeKey.call(this, store)
|
|
||||||
: store[storeKey];
|
|
||||||
};
|
|
||||||
return reduced;
|
|
||||||
}, {});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Alias for `mapState()`. You should use `mapState()` instead.
|
|
||||||
* @deprecated use `mapState()` instead.
|
|
||||||
*/
|
|
||||||
const mapGetters = mapState;
|
|
||||||
/**
|
|
||||||
* Allows directly using actions from your store without using the composition
|
|
||||||
* API (`setup()`) by generating an object to be spread in the `methods` field
|
|
||||||
* of a component.
|
|
||||||
*
|
|
||||||
* @param useStore - store to map from
|
|
||||||
* @param keysOrMapper - array or object
|
|
||||||
*/
|
|
||||||
function mapActions(useStore, keysOrMapper) {
|
|
||||||
return Array.isArray(keysOrMapper)
|
|
||||||
? keysOrMapper.reduce((reduced, key) => {
|
|
||||||
// @ts-expect-error
|
|
||||||
reduced[key] = function (...args) {
|
|
||||||
return useStore(this.$pinia)[key](...args);
|
|
||||||
};
|
|
||||||
return reduced;
|
|
||||||
}, {})
|
|
||||||
: Object.keys(keysOrMapper).reduce((reduced, key) => {
|
|
||||||
// @ts-expect-error
|
|
||||||
reduced[key] = function (...args) {
|
|
||||||
return useStore(this.$pinia)[keysOrMapper[key]](...args);
|
|
||||||
};
|
|
||||||
return reduced;
|
|
||||||
}, {});
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Allows using state and getters from one store without using the composition
|
|
||||||
* API (`setup()`) by generating an object to be spread in the `computed` field
|
|
||||||
* of a component.
|
|
||||||
*
|
|
||||||
* @param useStore - store to map from
|
|
||||||
* @param keysOrMapper - array or object
|
|
||||||
*/
|
|
||||||
function mapWritableState(useStore, keysOrMapper) {
|
|
||||||
return Array.isArray(keysOrMapper)
|
|
||||||
? keysOrMapper.reduce((reduced, key) => {
|
|
||||||
// @ts-ignore
|
|
||||||
reduced[key] = {
|
|
||||||
get() {
|
|
||||||
return useStore(this.$pinia)[key];
|
|
||||||
},
|
|
||||||
set(value) {
|
|
||||||
// it's easier to type it here as any
|
|
||||||
return (useStore(this.$pinia)[key] = value);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return reduced;
|
|
||||||
}, {})
|
|
||||||
: Object.keys(keysOrMapper).reduce((reduced, key) => {
|
|
||||||
// @ts-ignore
|
|
||||||
reduced[key] = {
|
|
||||||
get() {
|
|
||||||
return useStore(this.$pinia)[keysOrMapper[key]];
|
|
||||||
},
|
|
||||||
set(value) {
|
|
||||||
// it's easier to type it here as any
|
|
||||||
return (useStore(this.$pinia)[keysOrMapper[key]] = value);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
return reduced;
|
|
||||||
}, {});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an object of references with all the state, getters, and plugin-added
|
|
||||||
* state properties of the store. Similar to `toRefs()` but specifically
|
|
||||||
* designed for Pinia stores so methods and non reactive properties are
|
|
||||||
* completely ignored.
|
|
||||||
*
|
|
||||||
* @param store - store to extract the refs from
|
|
||||||
*/
|
|
||||||
function storeToRefs(store) {
|
|
||||||
// See https://github.com/vuejs/pinia/issues/852
|
|
||||||
// It's easier to just use toRefs() even if it includes more stuff
|
|
||||||
if (vueDemi.isVue2) {
|
|
||||||
// @ts-expect-error: toRefs include methods and others
|
|
||||||
return vueDemi.toRefs(store);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
store = vueDemi.toRaw(store);
|
|
||||||
const refs = {};
|
|
||||||
for (const key in store) {
|
|
||||||
const value = store[key];
|
|
||||||
if (vueDemi.isRef(value) || vueDemi.isReactive(value)) {
|
|
||||||
// @ts-expect-error: the key is state or getter
|
|
||||||
refs[key] =
|
|
||||||
// ---
|
|
||||||
vueDemi.toRef(store, key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return refs;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Vue 2 Plugin that must be installed for pinia to work. Note **you don't need
|
|
||||||
* this plugin if you are using Nuxt.js**. Use the `buildModule` instead:
|
|
||||||
* https://pinia.vuejs.org/ssr/nuxt.html.
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```js
|
|
||||||
* import Vue from 'vue'
|
|
||||||
* import { PiniaVuePlugin, createPinia } from 'pinia'
|
|
||||||
*
|
|
||||||
* Vue.use(PiniaVuePlugin)
|
|
||||||
* const pinia = createPinia()
|
|
||||||
*
|
|
||||||
* new Vue({
|
|
||||||
* el: '#app',
|
|
||||||
* // ...
|
|
||||||
* pinia,
|
|
||||||
* })
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* @param _Vue - `Vue` imported from 'vue'.
|
|
||||||
*/
|
|
||||||
const PiniaVuePlugin = function (_Vue) {
|
|
||||||
// Equivalent of
|
|
||||||
// app.config.globalProperties.$pinia = pinia
|
|
||||||
_Vue.mixin({
|
|
||||||
beforeCreate() {
|
|
||||||
const options = this.$options;
|
|
||||||
if (options.pinia) {
|
|
||||||
const pinia = options.pinia;
|
|
||||||
// HACK: taken from provide(): https://github.com/vuejs/composition-api/blob/main/src/apis/inject.ts#L31
|
|
||||||
/* istanbul ignore else */
|
|
||||||
if (!this._provided) {
|
|
||||||
const provideCache = {};
|
|
||||||
Object.defineProperty(this, '_provided', {
|
|
||||||
get: () => provideCache,
|
|
||||||
set: (v) => Object.assign(provideCache, v),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
this._provided[piniaSymbol] = pinia;
|
|
||||||
// propagate the pinia instance in an SSR friendly way
|
|
||||||
// avoid adding it to nuxt twice
|
|
||||||
/* istanbul ignore else */
|
|
||||||
if (!this.$pinia) {
|
|
||||||
this.$pinia = pinia;
|
|
||||||
}
|
|
||||||
pinia._a = this;
|
|
||||||
if (IS_CLIENT) {
|
|
||||||
// this allows calling useStore() outside of a component setup after
|
|
||||||
// installing pinia's plugin
|
|
||||||
setActivePinia(pinia);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (!this.$pinia && options.parent && options.parent.$pinia) {
|
|
||||||
this.$pinia = options.parent.$pinia;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
destroyed() {
|
|
||||||
delete this._pStores;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.PiniaVuePlugin = PiniaVuePlugin;
|
|
||||||
exports.acceptHMRUpdate = acceptHMRUpdate;
|
|
||||||
exports.createPinia = createPinia;
|
|
||||||
exports.defineStore = defineStore;
|
|
||||||
exports.getActivePinia = getActivePinia;
|
|
||||||
exports.mapActions = mapActions;
|
|
||||||
exports.mapGetters = mapGetters;
|
|
||||||
exports.mapState = mapState;
|
|
||||||
exports.mapStores = mapStores;
|
|
||||||
exports.mapWritableState = mapWritableState;
|
|
||||||
exports.setActivePinia = setActivePinia;
|
|
||||||
exports.setMapStoreSuffix = setMapStoreSuffix;
|
|
||||||
exports.skipHydrate = skipHydrate;
|
|
||||||
exports.storeToRefs = storeToRefs;
|
|
7
node_modules/pinia/index.cjs
generated
vendored
7
node_modules/pinia/index.cjs
generated
vendored
@ -1,7 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'production') {
|
|
||||||
module.exports = require('./dist/pinia.prod.cjs')
|
|
||||||
} else {
|
|
||||||
module.exports = require('./dist/pinia.cjs')
|
|
||||||
}
|
|
7
node_modules/pinia/index.js
generated
vendored
7
node_modules/pinia/index.js
generated
vendored
@ -1,7 +0,0 @@
|
|||||||
'use strict'
|
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'production') {
|
|
||||||
module.exports = require('./dist/pinia.prod.cjs')
|
|
||||||
} else {
|
|
||||||
module.exports = require('./dist/pinia.cjs')
|
|
||||||
}
|
|
100
node_modules/pinia/package.json
generated
vendored
100
node_modules/pinia/package.json
generated
vendored
@ -1,100 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "pinia",
|
|
||||||
"version": "2.1.6",
|
|
||||||
"description": "Intuitive, type safe and flexible Store for Vue",
|
|
||||||
"main": "index.js",
|
|
||||||
"module": "dist/pinia.mjs",
|
|
||||||
"unpkg": "dist/pinia.iife.js",
|
|
||||||
"jsdelivr": "dist/pinia.iife.js",
|
|
||||||
"types": "dist/pinia.d.ts",
|
|
||||||
"exports": {
|
|
||||||
".": {
|
|
||||||
"types": "./dist/pinia.d.ts",
|
|
||||||
"node": {
|
|
||||||
"import": {
|
|
||||||
"production": "./dist/pinia.prod.cjs",
|
|
||||||
"development": "./dist/pinia.mjs",
|
|
||||||
"default": "./dist/pinia.mjs"
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"production": "./dist/pinia.prod.cjs",
|
|
||||||
"development": "./dist/pinia.cjs",
|
|
||||||
"default": "./index.js"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"import": "./dist/pinia.mjs",
|
|
||||||
"require": "./index.js"
|
|
||||||
},
|
|
||||||
"./package.json": "./package.json",
|
|
||||||
"./dist/*": "./dist/*"
|
|
||||||
},
|
|
||||||
"sideEffects": false,
|
|
||||||
"author": {
|
|
||||||
"name": "Eduardo San Martin Morote",
|
|
||||||
"email": "posva13@gmail.com"
|
|
||||||
},
|
|
||||||
"funding": "https://github.com/sponsors/posva",
|
|
||||||
"files": [
|
|
||||||
"dist/*.js",
|
|
||||||
"dist/*.mjs",
|
|
||||||
"dist/*.cjs",
|
|
||||||
"dist/pinia.d.ts",
|
|
||||||
"index.js",
|
|
||||||
"index.cjs",
|
|
||||||
"LICENSE",
|
|
||||||
"README.md"
|
|
||||||
],
|
|
||||||
"keywords": [
|
|
||||||
"vue",
|
|
||||||
"vuex",
|
|
||||||
"store",
|
|
||||||
"pinia",
|
|
||||||
"piña",
|
|
||||||
"pigna",
|
|
||||||
"composition",
|
|
||||||
"api",
|
|
||||||
"setup",
|
|
||||||
"typed",
|
|
||||||
"typescript",
|
|
||||||
"ts",
|
|
||||||
"type",
|
|
||||||
"safe"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"devDependencies": {
|
|
||||||
"@microsoft/api-extractor": "7.34.4",
|
|
||||||
"@vue/test-utils": "^2.4.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@vue/devtools-api": "^6.5.0",
|
|
||||||
"vue-demi": ">=0.14.5"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@vue/composition-api": "^1.4.0",
|
|
||||||
"typescript": ">=4.4.4",
|
|
||||||
"vue": "^2.6.14 || ^3.3.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"typescript": {
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"@vue/composition-api": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/vuejs/pinia.git"
|
|
||||||
},
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/vuejs/pinia/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/vuejs/pinia#readme",
|
|
||||||
"scripts": {
|
|
||||||
"build": "rimraf dist && rollup -c ../../rollup.config.mjs --environment TARGET:pinia",
|
|
||||||
"build:dts": "api-extractor run --local --verbose && tail -n +3 ./src/globalExtensions.ts >> dist/pinia.d.ts",
|
|
||||||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s --commit-path . -l pinia -r 1",
|
|
||||||
"test:dts": "tsc -p ./test-dts/tsconfig.json",
|
|
||||||
"test": "yarn run build && yarn run build:dts && yarn test:dts"
|
|
||||||
}
|
|
||||||
}
|
|
21
node_modules/vue-demi/LICENSE
generated
vendored
21
node_modules/vue-demi/LICENSE
generated
vendored
@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2020-present, Anthony Fu
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
228
node_modules/vue-demi/README.md
generated
vendored
228
node_modules/vue-demi/README.md
generated
vendored
@ -1,228 +0,0 @@
|
|||||||
<p align="center">
|
|
||||||
<img src="https://github.com/vueuse/vue-demi/blob/main/assets/banner.png?raw=true" width="600"/>
|
|
||||||
<br>
|
|
||||||
<a href='https://www.npmjs.com/package/vue-demi'><img src='https://img.shields.io/npm/v/vue-demi?color=42b883' alt='npm'></a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<b>Vue Demi</b> (<i>half</i> in French) is a developing utility<br> allows you to write <b>Universal Vue Libraries</b> for Vue 2 & 3<br>
|
|
||||||
<i>See more details in <a href='https://antfu.me/posts/make-libraries-working-with-vue-2-and-3'>this blog post</a></i>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
## Strategies
|
|
||||||
|
|
||||||
- `<=2.6`: exports from `vue` + `@vue/composition-api` with plugin auto installing.
|
|
||||||
- `2.7`: exports from `vue` (Composition API is built-in in Vue 2.7).
|
|
||||||
- `>=3.0`: exports from `vue`, with polyfill of Vue 2's `set` and `del` API.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
Install this as your plugin's dependency:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm i vue-demi
|
|
||||||
# or
|
|
||||||
yarn add vue-demi
|
|
||||||
# or
|
|
||||||
pnpm i vue-demi
|
|
||||||
```
|
|
||||||
|
|
||||||
Add `vue` and `@vue/composition-api` to your plugin's peer dependencies to specify what versions you support.
|
|
||||||
|
|
||||||
```jsonc
|
|
||||||
{
|
|
||||||
"dependencies": {
|
|
||||||
"vue-demi": "latest"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@vue/composition-api": "^1.0.0-rc.1",
|
|
||||||
"vue": "^2.0.0 || >=3.0.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"@vue/composition-api": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"vue": "^3.0.0" // or "^2.6.0" base on your preferred working environment
|
|
||||||
},
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Import everything related to Vue from it, it will redirect to `vue@2` + `@vue/composition-api` or `vue@3` based on users' environments.
|
|
||||||
|
|
||||||
```ts
|
|
||||||
import { ref, reactive, defineComponent } from 'vue-demi'
|
|
||||||
```
|
|
||||||
|
|
||||||
Publish your plugin and all is done!
|
|
||||||
|
|
||||||
> When using with [Vite](https://vitejs.dev), you will need to opt-out the pre-bundling to get `vue-demi` work properly by
|
|
||||||
> ```js
|
|
||||||
> // vite.config.js
|
|
||||||
> export default defineConfig({
|
|
||||||
> optimizeDeps: {
|
|
||||||
> exclude: ['vue-demi']
|
|
||||||
> }
|
|
||||||
> })
|
|
||||||
> ```
|
|
||||||
|
|
||||||
### Extra APIs
|
|
||||||
|
|
||||||
`Vue Demi` provides extra APIs to help distinguish users' environments and to do some version-specific logic.
|
|
||||||
|
|
||||||
### `isVue2` `isVue3`
|
|
||||||
|
|
||||||
```ts
|
|
||||||
import { isVue2, isVue3 } from 'vue-demi'
|
|
||||||
|
|
||||||
if (isVue2) {
|
|
||||||
// Vue 2 only
|
|
||||||
} else {
|
|
||||||
// Vue 3 only
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### `Vue2`
|
|
||||||
|
|
||||||
To avoid bringing in all the tree-shakable modules, we provide a `Vue2` export to support access to Vue 2's global API. (See [#41](https://github.com/vueuse/vue-demi/issues/41).)
|
|
||||||
|
|
||||||
```ts
|
|
||||||
import { Vue2 } from 'vue-demi'
|
|
||||||
|
|
||||||
if (Vue2) {
|
|
||||||
Vue2.config.ignoredElements.push('x-foo')
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### `install()`
|
|
||||||
|
|
||||||
Composition API in Vue 2 is provided as a plugin and needs to be installed on the Vue instance before using. Normally, `vue-demi` will try to install it automatically. For some usages where you might need to ensure the plugin gets installed correctly, the `install()` API is exposed to as a safe version of `Vue.use(CompositionAPI)`. `install()` in the Vue 3 environment will be an empty function (no-op).
|
|
||||||
|
|
||||||
```ts
|
|
||||||
import { install } from 'vue-demi'
|
|
||||||
|
|
||||||
install()
|
|
||||||
```
|
|
||||||
|
|
||||||
## CLI
|
|
||||||
|
|
||||||
### Manually Switch Versions
|
|
||||||
|
|
||||||
To explicitly switch the redirecting version, you can use these commands in your project's root.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npx vue-demi-switch 2
|
|
||||||
# or
|
|
||||||
npx vue-demi-switch 3
|
|
||||||
```
|
|
||||||
|
|
||||||
### Package Aliasing
|
|
||||||
|
|
||||||
If you would like to import `vue` under an alias, you can use the following command
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npx vue-demi-switch 2 vue2
|
|
||||||
# or
|
|
||||||
npx vue-demi-switch 3 vue3
|
|
||||||
```
|
|
||||||
|
|
||||||
Then `vue-demi` will redirect APIs from the alias name you specified, for example:
|
|
||||||
|
|
||||||
```ts
|
|
||||||
import * as Vue from 'vue3'
|
|
||||||
|
|
||||||
var isVue2 = false
|
|
||||||
var isVue3 = true
|
|
||||||
var Vue2 = undefined
|
|
||||||
|
|
||||||
export * from 'vue3'
|
|
||||||
export {
|
|
||||||
Vue,
|
|
||||||
Vue2,
|
|
||||||
isVue2,
|
|
||||||
isVue3,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Auto Fix
|
|
||||||
|
|
||||||
If the `postinstall` hook doesn't get triggered or you have updated the Vue version, try to run the following command to resolve the redirecting.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npx vue-demi-fix
|
|
||||||
```
|
|
||||||
|
|
||||||
### Isomorphic Testings
|
|
||||||
|
|
||||||
You can support testing for both versions by adding npm alias in your dev dependencies. For example:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"scripts": {
|
|
||||||
"test:2": "vue-demi-switch 2 vue2 && jest",
|
|
||||||
"test:3": "vue-demi-switch 3 && jest",
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"vue": "^3.0.0",
|
|
||||||
"vue2": "npm:vue@2"
|
|
||||||
},
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"scripts": {
|
|
||||||
"test:2": "vue-demi-switch 2 && jest",
|
|
||||||
"test:3": "vue-demi-switch 3 vue3 && jest",
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"vue": "^2.6.0",
|
|
||||||
"vue3": "npm:vue@3"
|
|
||||||
},
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Examples
|
|
||||||
|
|
||||||
See [examples](./examples).
|
|
||||||
|
|
||||||
## Who is using this?
|
|
||||||
|
|
||||||
- [VueUse](https://github.com/vueuse/vueuse) - Collection of Composition API utils
|
|
||||||
- [@vue/apollo-composable](https://github.com/vuejs/vue-apollo/tree/v4/packages/vue-apollo-composable) - Apollo GraphQL functions for Vue Composition API
|
|
||||||
- [vuelidate](https://github.com/vuelidate/vuelidate) - Simple, lightweight model-based validation
|
|
||||||
- [vue-composition-test-utils](https://github.com/ariesjia/vue-composition-test-utils) - Simple vue composition api unit test utilities
|
|
||||||
- [vue-use-stripe](https://github.com/frandiox/vue-use-stripe) - Stripe Elements wrapper for Vue.js
|
|
||||||
- [@opd/g2plot-vue](https://github.com/open-data-plan/g2plot-vue) - G2plot for vue
|
|
||||||
- [vue-echarts](https://github.com/ecomfe/vue-echarts) - Vue.js component for Apache ECharts.
|
|
||||||
- [fluent-vue](https://github.com/Demivan/fluent-vue) - Vue.js integration for [Fluent.js](https://github.com/projectfluent/fluent.js) - JavaScript implementation of [Project Fluent](https://projectfluent.org)
|
|
||||||
- [vue-datatable-url-sync](https://github.com/socotecio/vue-datatable-url-sync) - Synchronize datatable options and filters with the url to keep user preference even after refresh or navigation
|
|
||||||
- [vue-insta-stories](https://github.com/UnevenSoftware/vue-insta-stories) - Instagram stories in your vue projects.
|
|
||||||
- [vue-tiny-validate](https://github.com/FrontLabsOfficial/vue-tiny-validate) - Tiny Vue Validate Composition
|
|
||||||
- [v-perfect-signature](https://github.com/wobsoriano/v-perfect-signature) - Pressure-sensitive signature drawing for Vue 2 and 3
|
|
||||||
- [vue-winbox](https://github.com/wobsoriano/vue-winbox) - A wrapper component for WinBox.js that adds the ability to mount Vue components.
|
|
||||||
- [vue-word-highlighter](https://github.com/kawamataryo/vue-word-highlighter) - The word highlighter library for Vue 2 and Vue 3
|
|
||||||
- [vue-chart-3](https://github.com/victorgarciaesgi/vue-chart-3) - Vue.js component for Chart.js
|
|
||||||
- [json-editor-vue](https://github.com/cloydlau/json-editor-vue) - JSON editor & viewer for Vue 2 and 3.
|
|
||||||
- [kidar-echarts](https://github.com/kidarjs/kidar-echarts) - A simpler echarts component for Vue 2 and 3.
|
|
||||||
- [vue3-sketch-ruler](https://github.com/kakajun/vue3-sketch-ruler) - The zoom operation used for page presentation for Vue 2 and 3( Replace render function with template )
|
|
||||||
- [vue-rough-notation](https://github.com/Leecason/vue-rough-notation) - RoughNotation wrapper component for Vue 2 and 3.
|
|
||||||
- [vue-request](https://github.com/AttoJS/vue-request) - Vue composition API for data fetching, supports SWR, polling, error retry, cache request, pagination, etc.
|
|
||||||
- [vue3-lazyload](https://github.com/murongg/vue3-lazyload) - A vue3.x image lazyload plugin.
|
|
||||||
- [vue-codemirror6](https://github.com/logue/vue-codemirror6) - CodeMirror6 component for Vue2 and 3.
|
|
||||||
> open a PR to add your library ;)
|
|
||||||
|
|
||||||
## Underhood
|
|
||||||
|
|
||||||
See [the blog post](https://antfu.me/posts/make-libraries-working-with-vue-2-and-3/#-introducing-vue-demi).
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
MIT License © 2020 [Anthony Fu](https://github.com/antfu)
|
|
3
node_modules/vue-demi/bin/vue-demi-fix.js
generated
vendored
3
node_modules/vue-demi/bin/vue-demi-fix.js
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
'use strict'
|
|
||||||
require('../scripts/postinstall')
|
|
3
node_modules/vue-demi/bin/vue-demi-switch.js
generated
vendored
3
node_modules/vue-demi/bin/vue-demi-switch.js
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
'use strict'
|
|
||||||
require('../scripts/switch-cli')
|
|
32
node_modules/vue-demi/lib/index.cjs
generated
vendored
32
node_modules/vue-demi/lib/index.cjs
generated
vendored
@ -1,32 +0,0 @@
|
|||||||
var Vue = require('vue')
|
|
||||||
var VueCompositionAPI = require('@vue/composition-api')
|
|
||||||
|
|
||||||
function install(_vue) {
|
|
||||||
var vueLib = _vue || Vue
|
|
||||||
if (vueLib && 'default' in vueLib) {
|
|
||||||
vueLib = vueLib.default
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vueLib && !vueLib['__composition_api_installed__']) {
|
|
||||||
if (VueCompositionAPI && 'default' in VueCompositionAPI)
|
|
||||||
vueLib.use(VueCompositionAPI.default)
|
|
||||||
else if (VueCompositionAPI)
|
|
||||||
vueLib.use(VueCompositionAPI)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
install(Vue)
|
|
||||||
|
|
||||||
Object.keys(VueCompositionAPI).forEach(function(key) {
|
|
||||||
exports[key] = VueCompositionAPI[key]
|
|
||||||
})
|
|
||||||
|
|
||||||
exports.Vue = Vue
|
|
||||||
exports.Vue2 = Vue
|
|
||||||
exports.isVue2 = true
|
|
||||||
exports.isVue3 = false
|
|
||||||
exports.install = install
|
|
||||||
exports.version = Vue.version
|
|
||||||
|
|
||||||
// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()
|
|
||||||
exports.hasInjectionContext = () => !!VueCompositionAPI.getCurrentInstance()
|
|
33
node_modules/vue-demi/lib/index.d.ts
generated
vendored
33
node_modules/vue-demi/lib/index.d.ts
generated
vendored
@ -1,33 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import type { PluginFunction, PluginObject } from 'vue'
|
|
||||||
declare const isVue2: boolean
|
|
||||||
declare const isVue3: boolean
|
|
||||||
declare const Vue2: typeof Vue | undefined
|
|
||||||
declare const version: string
|
|
||||||
declare const install: (vue?: typeof Vue) => void
|
|
||||||
/**
|
|
||||||
* @deprecated To avoid bringing in all the tree-shakable modules, this API has been deprecated. Use `Vue2` or named exports instead.
|
|
||||||
* Refer to https://github.com/vueuse/vue-demi/issues/41
|
|
||||||
*/
|
|
||||||
declare const V: typeof Vue
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DebuggerEvent is a Vue 3 development only feature. This type cannot exist in Vue 2.
|
|
||||||
*/
|
|
||||||
export declare type DebuggerEvent = never
|
|
||||||
|
|
||||||
// accept no generic because Vue 3 doesn't accept any
|
|
||||||
// https://github.com/vuejs/vue-next/pull/2758/
|
|
||||||
export declare type Plugin = PluginObject<any> | PluginFunction<any>
|
|
||||||
export type { VNode } from 'vue'
|
|
||||||
export * from '@vue/composition-api'
|
|
||||||
export {
|
|
||||||
V as Vue,
|
|
||||||
Vue2,
|
|
||||||
isVue2,
|
|
||||||
isVue3,
|
|
||||||
version,
|
|
||||||
install,
|
|
||||||
}
|
|
||||||
|
|
||||||
export declare function hasInjectionContext(): boolean
|
|
115
node_modules/vue-demi/lib/index.iife.js
generated
vendored
115
node_modules/vue-demi/lib/index.iife.js
generated
vendored
@ -1,115 +0,0 @@
|
|||||||
var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
|
|
||||||
if (VueDemi.install) {
|
|
||||||
return VueDemi
|
|
||||||
}
|
|
||||||
if (!Vue) {
|
|
||||||
console.error('[vue-demi] no Vue instance found, please be sure to import `vue` before `vue-demi`.')
|
|
||||||
return VueDemi
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vue 2.7
|
|
||||||
if (Vue.version.slice(0, 4) === '2.7.') {
|
|
||||||
for (var key in Vue) {
|
|
||||||
VueDemi[key] = Vue[key]
|
|
||||||
}
|
|
||||||
VueDemi.isVue2 = true
|
|
||||||
VueDemi.isVue3 = false
|
|
||||||
VueDemi.install = function () {}
|
|
||||||
VueDemi.Vue = Vue
|
|
||||||
VueDemi.Vue2 = Vue
|
|
||||||
VueDemi.version = Vue.version
|
|
||||||
VueDemi.warn = Vue.util.warn
|
|
||||||
VueDemi.hasInjectionContext = () => !!VueDemi.getCurrentInstance()
|
|
||||||
function createApp(rootComponent, rootProps) {
|
|
||||||
var vm
|
|
||||||
var provide = {}
|
|
||||||
var app = {
|
|
||||||
config: Vue.config,
|
|
||||||
use: Vue.use.bind(Vue),
|
|
||||||
mixin: Vue.mixin.bind(Vue),
|
|
||||||
component: Vue.component.bind(Vue),
|
|
||||||
provide: function (key, value) {
|
|
||||||
provide[key] = value
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
directive: function (name, dir) {
|
|
||||||
if (dir) {
|
|
||||||
Vue.directive(name, dir)
|
|
||||||
return app
|
|
||||||
} else {
|
|
||||||
return Vue.directive(name)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mount: function (el, hydrating) {
|
|
||||||
if (!vm) {
|
|
||||||
vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))
|
|
||||||
vm.$mount(el, hydrating)
|
|
||||||
return vm
|
|
||||||
} else {
|
|
||||||
return vm
|
|
||||||
}
|
|
||||||
},
|
|
||||||
unmount: function () {
|
|
||||||
if (vm) {
|
|
||||||
vm.$destroy()
|
|
||||||
vm = undefined
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
return app
|
|
||||||
}
|
|
||||||
VueDemi.createApp = createApp
|
|
||||||
}
|
|
||||||
// Vue 2.6.x
|
|
||||||
else if (Vue.version.slice(0, 2) === '2.') {
|
|
||||||
if (VueCompositionAPI) {
|
|
||||||
for (var key in VueCompositionAPI) {
|
|
||||||
VueDemi[key] = VueCompositionAPI[key]
|
|
||||||
}
|
|
||||||
VueDemi.isVue2 = true
|
|
||||||
VueDemi.isVue3 = false
|
|
||||||
VueDemi.install = function () {}
|
|
||||||
VueDemi.Vue = Vue
|
|
||||||
VueDemi.Vue2 = Vue
|
|
||||||
VueDemi.version = Vue.version
|
|
||||||
VueDemi.hasInjectionContext = () => !!VueDemi.getCurrentInstance()
|
|
||||||
} else {
|
|
||||||
console.error('[vue-demi] no VueCompositionAPI instance found, please be sure to import `@vue/composition-api` before `vue-demi`.')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Vue 3
|
|
||||||
else if (Vue.version.slice(0, 2) === '3.') {
|
|
||||||
for (var key in Vue) {
|
|
||||||
VueDemi[key] = Vue[key]
|
|
||||||
}
|
|
||||||
VueDemi.isVue2 = false
|
|
||||||
VueDemi.isVue3 = true
|
|
||||||
VueDemi.install = function () {}
|
|
||||||
VueDemi.Vue = Vue
|
|
||||||
VueDemi.Vue2 = undefined
|
|
||||||
VueDemi.version = Vue.version
|
|
||||||
VueDemi.set = function (target, key, val) {
|
|
||||||
if (Array.isArray(target)) {
|
|
||||||
target.length = Math.max(target.length, key)
|
|
||||||
target.splice(key, 1, val)
|
|
||||||
return val
|
|
||||||
}
|
|
||||||
target[key] = val
|
|
||||||
return val
|
|
||||||
}
|
|
||||||
VueDemi.del = function (target, key) {
|
|
||||||
if (Array.isArray(target)) {
|
|
||||||
target.splice(key, 1)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
delete target[key]
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.error('[vue-demi] Vue version ' + Vue.version + ' is unsupported.')
|
|
||||||
}
|
|
||||||
return VueDemi
|
|
||||||
})(
|
|
||||||
(this.VueDemi = this.VueDemi || (typeof VueDemi !== 'undefined' ? VueDemi : {})),
|
|
||||||
this.Vue || (typeof Vue !== 'undefined' ? Vue : undefined),
|
|
||||||
this.VueCompositionAPI || (typeof VueCompositionAPI !== 'undefined' ? VueCompositionAPI : undefined)
|
|
||||||
);
|
|
49
node_modules/vue-demi/lib/index.mjs
generated
vendored
49
node_modules/vue-demi/lib/index.mjs
generated
vendored
@ -1,49 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import VueCompositionAPI, { getCurrentInstance } from '@vue/composition-api/dist/vue-composition-api.mjs'
|
|
||||||
|
|
||||||
function install(_vue) {
|
|
||||||
_vue = _vue || Vue
|
|
||||||
if (_vue && !_vue['__composition_api_installed__'])
|
|
||||||
_vue.use(VueCompositionAPI)
|
|
||||||
}
|
|
||||||
|
|
||||||
install(Vue)
|
|
||||||
|
|
||||||
var isVue2 = true
|
|
||||||
var isVue3 = false
|
|
||||||
var Vue2 = Vue
|
|
||||||
var version = Vue.version
|
|
||||||
|
|
||||||
/**VCA-EXPORTS**/
|
|
||||||
export * from '@vue/composition-api/dist/vue-composition-api.mjs'
|
|
||||||
/**VCA-EXPORTS**/
|
|
||||||
|
|
||||||
export {
|
|
||||||
Vue,
|
|
||||||
Vue2,
|
|
||||||
isVue2,
|
|
||||||
isVue3,
|
|
||||||
version,
|
|
||||||
install,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Vue 3 components mock
|
|
||||||
function createMockComponent(name) {
|
|
||||||
return {
|
|
||||||
setup() {
|
|
||||||
throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\'s provided to avoid compiler errors.')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export var Fragment = /*#__PURE__*/ createMockComponent('Fragment')
|
|
||||||
export var Transition = /*#__PURE__*/ createMockComponent('Transition')
|
|
||||||
export var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')
|
|
||||||
export var Teleport = /*#__PURE__*/ createMockComponent('Teleport')
|
|
||||||
export var Suspense = /*#__PURE__*/ createMockComponent('Suspense')
|
|
||||||
export var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')
|
|
||||||
|
|
||||||
// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()
|
|
||||||
export function hasInjectionContext() {
|
|
||||||
return !!getCurrentInstance()
|
|
||||||
}
|
|
58
node_modules/vue-demi/lib/v2.7/index.cjs
generated
vendored
58
node_modules/vue-demi/lib/v2.7/index.cjs
generated
vendored
@ -1,58 +0,0 @@
|
|||||||
var VueModule = require('vue')
|
|
||||||
|
|
||||||
// get the real Vue https://github.com/vueuse/vue-demi/issues/192
|
|
||||||
var Vue = VueModule.default || VueModule
|
|
||||||
|
|
||||||
exports.Vue = Vue
|
|
||||||
exports.Vue2 = Vue
|
|
||||||
exports.isVue2 = true
|
|
||||||
exports.isVue3 = false
|
|
||||||
exports.install = function () {}
|
|
||||||
exports.warn = Vue.util.warn
|
|
||||||
|
|
||||||
// createApp polyfill
|
|
||||||
exports.createApp = function (rootComponent, rootProps) {
|
|
||||||
var vm
|
|
||||||
var provide = {}
|
|
||||||
var app = {
|
|
||||||
config: Vue.config,
|
|
||||||
use: Vue.use.bind(Vue),
|
|
||||||
mixin: Vue.mixin.bind(Vue),
|
|
||||||
component: Vue.component.bind(Vue),
|
|
||||||
provide: function (key, value) {
|
|
||||||
provide[key] = value
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
directive: function (name, dir) {
|
|
||||||
if (dir) {
|
|
||||||
Vue.directive(name, dir)
|
|
||||||
return app
|
|
||||||
} else {
|
|
||||||
return Vue.directive(name)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mount: function (el, hydrating) {
|
|
||||||
if (!vm) {
|
|
||||||
vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))
|
|
||||||
vm.$mount(el, hydrating)
|
|
||||||
return vm
|
|
||||||
} else {
|
|
||||||
return vm
|
|
||||||
}
|
|
||||||
},
|
|
||||||
unmount: function () {
|
|
||||||
if (vm) {
|
|
||||||
vm.$destroy()
|
|
||||||
vm = undefined
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
return app
|
|
||||||
}
|
|
||||||
|
|
||||||
Object.keys(VueModule).forEach(function (key) {
|
|
||||||
exports[key] = VueModule[key]
|
|
||||||
})
|
|
||||||
|
|
||||||
// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()
|
|
||||||
exports.hasInjectionContext = () => !!VueModule.getCurrentInstance()
|
|
38
node_modules/vue-demi/lib/v2.7/index.d.ts
generated
vendored
38
node_modules/vue-demi/lib/v2.7/index.d.ts
generated
vendored
@ -1,38 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import type { PluginFunction, PluginObject, VueConstructor, Directive, InjectionKey, Component } from 'vue'
|
|
||||||
|
|
||||||
declare const isVue2: boolean
|
|
||||||
declare const isVue3: boolean
|
|
||||||
declare const Vue2: typeof Vue | undefined
|
|
||||||
declare const version: string
|
|
||||||
declare const install: (vue?: typeof Vue) => void
|
|
||||||
export declare function warn(msg: string, vm?: Component | null): void
|
|
||||||
/**
|
|
||||||
* @deprecated To avoid bringing in all the tree-shakable modules, this API has been deprecated. Use `Vue2` or named exports instead.
|
|
||||||
* Refer to https://github.com/vueuse/vue-demi/issues/41
|
|
||||||
*/
|
|
||||||
declare const V: typeof Vue
|
|
||||||
|
|
||||||
// accept no generic because Vue 3 doesn't accept any
|
|
||||||
// https://github.com/vuejs/vue-next/pull/2758/
|
|
||||||
export declare type Plugin = PluginObject<any> | PluginFunction<any>
|
|
||||||
export type { VNode } from 'vue'
|
|
||||||
export * from 'vue'
|
|
||||||
export { V as Vue, Vue2, isVue2, isVue3, version, install }
|
|
||||||
|
|
||||||
// #region createApp polyfill
|
|
||||||
export interface App<T = any> {
|
|
||||||
config: VueConstructor['config']
|
|
||||||
use: VueConstructor['use']
|
|
||||||
mixin: VueConstructor['mixin']
|
|
||||||
component: VueConstructor['component']
|
|
||||||
directive(name: string): Directive | undefined
|
|
||||||
directive(name: string, directive: Directive): this
|
|
||||||
provide<T>(key: InjectionKey<T> | string, value: T): this
|
|
||||||
mount: Vue['$mount']
|
|
||||||
unmount: Vue['$destroy']
|
|
||||||
}
|
|
||||||
export declare function createApp(rootComponent: any, rootProps?: any): App
|
|
||||||
// #endregion
|
|
||||||
|
|
||||||
export declare function hasInjectionContext(): boolean
|
|
80
node_modules/vue-demi/lib/v2.7/index.mjs
generated
vendored
80
node_modules/vue-demi/lib/v2.7/index.mjs
generated
vendored
@ -1,80 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import { getCurrentInstance } from 'vue'
|
|
||||||
|
|
||||||
var isVue2 = true
|
|
||||||
var isVue3 = false
|
|
||||||
var Vue2 = Vue
|
|
||||||
var warn = Vue.util.warn
|
|
||||||
|
|
||||||
function install() {}
|
|
||||||
|
|
||||||
// createApp polyfill
|
|
||||||
export function createApp(rootComponent, rootProps) {
|
|
||||||
var vm
|
|
||||||
var provide = {}
|
|
||||||
var app = {
|
|
||||||
config: Vue.config,
|
|
||||||
use: Vue.use.bind(Vue),
|
|
||||||
mixin: Vue.mixin.bind(Vue),
|
|
||||||
component: Vue.component.bind(Vue),
|
|
||||||
provide: function (key, value) {
|
|
||||||
provide[key] = value
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
directive: function (name, dir) {
|
|
||||||
if (dir) {
|
|
||||||
Vue.directive(name, dir)
|
|
||||||
return app
|
|
||||||
} else {
|
|
||||||
return Vue.directive(name)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mount: function (el, hydrating) {
|
|
||||||
if (!vm) {
|
|
||||||
vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))
|
|
||||||
vm.$mount(el, hydrating)
|
|
||||||
return vm
|
|
||||||
} else {
|
|
||||||
return vm
|
|
||||||
}
|
|
||||||
},
|
|
||||||
unmount: function () {
|
|
||||||
if (vm) {
|
|
||||||
vm.$destroy()
|
|
||||||
vm = undefined
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
return app
|
|
||||||
}
|
|
||||||
|
|
||||||
export {
|
|
||||||
Vue,
|
|
||||||
Vue2,
|
|
||||||
isVue2,
|
|
||||||
isVue3,
|
|
||||||
install,
|
|
||||||
warn
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vue 3 components mock
|
|
||||||
function createMockComponent(name) {
|
|
||||||
return {
|
|
||||||
setup() {
|
|
||||||
throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\'s provided to avoid compiler errors.')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export var Fragment = /*#__PURE__*/ createMockComponent('Fragment')
|
|
||||||
export var Transition = /*#__PURE__*/ createMockComponent('Transition')
|
|
||||||
export var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')
|
|
||||||
export var Teleport = /*#__PURE__*/ createMockComponent('Teleport')
|
|
||||||
export var Suspense = /*#__PURE__*/ createMockComponent('Suspense')
|
|
||||||
export var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')
|
|
||||||
|
|
||||||
export * from 'vue'
|
|
||||||
|
|
||||||
// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()
|
|
||||||
export function hasInjectionContext() {
|
|
||||||
return !!getCurrentInstance()
|
|
||||||
}
|
|
32
node_modules/vue-demi/lib/v2/index.cjs
generated
vendored
32
node_modules/vue-demi/lib/v2/index.cjs
generated
vendored
@ -1,32 +0,0 @@
|
|||||||
var Vue = require('vue')
|
|
||||||
var VueCompositionAPI = require('@vue/composition-api')
|
|
||||||
|
|
||||||
function install(_vue) {
|
|
||||||
var vueLib = _vue || Vue
|
|
||||||
if (vueLib && 'default' in vueLib) {
|
|
||||||
vueLib = vueLib.default
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vueLib && !vueLib['__composition_api_installed__']) {
|
|
||||||
if (VueCompositionAPI && 'default' in VueCompositionAPI)
|
|
||||||
vueLib.use(VueCompositionAPI.default)
|
|
||||||
else if (VueCompositionAPI)
|
|
||||||
vueLib.use(VueCompositionAPI)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
install(Vue)
|
|
||||||
|
|
||||||
Object.keys(VueCompositionAPI).forEach(function(key) {
|
|
||||||
exports[key] = VueCompositionAPI[key]
|
|
||||||
})
|
|
||||||
|
|
||||||
exports.Vue = Vue
|
|
||||||
exports.Vue2 = Vue
|
|
||||||
exports.isVue2 = true
|
|
||||||
exports.isVue3 = false
|
|
||||||
exports.install = install
|
|
||||||
exports.version = Vue.version
|
|
||||||
|
|
||||||
// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()
|
|
||||||
exports.hasInjectionContext = () => !!VueCompositionAPI.getCurrentInstance()
|
|
33
node_modules/vue-demi/lib/v2/index.d.ts
generated
vendored
33
node_modules/vue-demi/lib/v2/index.d.ts
generated
vendored
@ -1,33 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import type { PluginFunction, PluginObject } from 'vue'
|
|
||||||
declare const isVue2: boolean
|
|
||||||
declare const isVue3: boolean
|
|
||||||
declare const Vue2: typeof Vue | undefined
|
|
||||||
declare const version: string
|
|
||||||
declare const install: (vue?: typeof Vue) => void
|
|
||||||
/**
|
|
||||||
* @deprecated To avoid bringing in all the tree-shakable modules, this API has been deprecated. Use `Vue2` or named exports instead.
|
|
||||||
* Refer to https://github.com/vueuse/vue-demi/issues/41
|
|
||||||
*/
|
|
||||||
declare const V: typeof Vue
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DebuggerEvent is a Vue 3 development only feature. This type cannot exist in Vue 2.
|
|
||||||
*/
|
|
||||||
export declare type DebuggerEvent = never
|
|
||||||
|
|
||||||
// accept no generic because Vue 3 doesn't accept any
|
|
||||||
// https://github.com/vuejs/vue-next/pull/2758/
|
|
||||||
export declare type Plugin = PluginObject<any> | PluginFunction<any>
|
|
||||||
export type { VNode } from 'vue'
|
|
||||||
export * from '@vue/composition-api'
|
|
||||||
export {
|
|
||||||
V as Vue,
|
|
||||||
Vue2,
|
|
||||||
isVue2,
|
|
||||||
isVue3,
|
|
||||||
version,
|
|
||||||
install,
|
|
||||||
}
|
|
||||||
|
|
||||||
export declare function hasInjectionContext(): boolean
|
|
49
node_modules/vue-demi/lib/v2/index.mjs
generated
vendored
49
node_modules/vue-demi/lib/v2/index.mjs
generated
vendored
@ -1,49 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import VueCompositionAPI, { getCurrentInstance } from '@vue/composition-api/dist/vue-composition-api.mjs'
|
|
||||||
|
|
||||||
function install(_vue) {
|
|
||||||
_vue = _vue || Vue
|
|
||||||
if (_vue && !_vue['__composition_api_installed__'])
|
|
||||||
_vue.use(VueCompositionAPI)
|
|
||||||
}
|
|
||||||
|
|
||||||
install(Vue)
|
|
||||||
|
|
||||||
var isVue2 = true
|
|
||||||
var isVue3 = false
|
|
||||||
var Vue2 = Vue
|
|
||||||
var version = Vue.version
|
|
||||||
|
|
||||||
/**VCA-EXPORTS**/
|
|
||||||
export * from '@vue/composition-api/dist/vue-composition-api.mjs'
|
|
||||||
/**VCA-EXPORTS**/
|
|
||||||
|
|
||||||
export {
|
|
||||||
Vue,
|
|
||||||
Vue2,
|
|
||||||
isVue2,
|
|
||||||
isVue3,
|
|
||||||
version,
|
|
||||||
install,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Vue 3 components mock
|
|
||||||
function createMockComponent(name) {
|
|
||||||
return {
|
|
||||||
setup() {
|
|
||||||
throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\'s provided to avoid compiler errors.')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export var Fragment = /*#__PURE__*/ createMockComponent('Fragment')
|
|
||||||
export var Transition = /*#__PURE__*/ createMockComponent('Transition')
|
|
||||||
export var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')
|
|
||||||
export var Teleport = /*#__PURE__*/ createMockComponent('Teleport')
|
|
||||||
export var Suspense = /*#__PURE__*/ createMockComponent('Suspense')
|
|
||||||
export var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')
|
|
||||||
|
|
||||||
// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()
|
|
||||||
export function hasInjectionContext() {
|
|
||||||
return !!getCurrentInstance()
|
|
||||||
}
|
|
29
node_modules/vue-demi/lib/v3/index.cjs
generated
vendored
29
node_modules/vue-demi/lib/v3/index.cjs
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
var Vue = require('vue')
|
|
||||||
|
|
||||||
Object.keys(Vue).forEach(function(key) {
|
|
||||||
exports[key] = Vue[key]
|
|
||||||
})
|
|
||||||
|
|
||||||
exports.set = function(target, key, val) {
|
|
||||||
if (Array.isArray(target)) {
|
|
||||||
target.length = Math.max(target.length, key)
|
|
||||||
target.splice(key, 1, val)
|
|
||||||
return val
|
|
||||||
}
|
|
||||||
target[key] = val
|
|
||||||
return val
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.del = function(target, key) {
|
|
||||||
if (Array.isArray(target)) {
|
|
||||||
target.splice(key, 1)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
delete target[key]
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.Vue = Vue
|
|
||||||
exports.Vue2 = undefined
|
|
||||||
exports.isVue2 = false
|
|
||||||
exports.isVue3 = true
|
|
||||||
exports.install = function(){}
|
|
22
node_modules/vue-demi/lib/v3/index.d.ts
generated
vendored
22
node_modules/vue-demi/lib/v3/index.d.ts
generated
vendored
@ -1,22 +0,0 @@
|
|||||||
import * as Vue from 'vue'
|
|
||||||
declare const isVue2: boolean
|
|
||||||
declare const isVue3: boolean
|
|
||||||
declare const Vue2: any
|
|
||||||
declare const install: (vue?: any) => void
|
|
||||||
/**
|
|
||||||
* @deprecated To avoid bringing in all the tree-shakable modules, this API has been deprecated. Use `Vue2` or named exports instead.
|
|
||||||
* Refer to https://github.com/vueuse/vue-demi/issues/41
|
|
||||||
*/
|
|
||||||
declare const V: typeof Vue
|
|
||||||
|
|
||||||
export function set<T>(target: any, key: any, val: T): T
|
|
||||||
export function del(target: any, key: any): void
|
|
||||||
|
|
||||||
export * from 'vue'
|
|
||||||
export {
|
|
||||||
V as Vue,
|
|
||||||
Vue2,
|
|
||||||
isVue2,
|
|
||||||
isVue3,
|
|
||||||
install,
|
|
||||||
}
|
|
34
node_modules/vue-demi/lib/v3/index.mjs
generated
vendored
34
node_modules/vue-demi/lib/v3/index.mjs
generated
vendored
@ -1,34 +0,0 @@
|
|||||||
import * as Vue from 'vue'
|
|
||||||
|
|
||||||
var isVue2 = false
|
|
||||||
var isVue3 = true
|
|
||||||
var Vue2 = undefined
|
|
||||||
|
|
||||||
function install() {}
|
|
||||||
|
|
||||||
export function set(target, key, val) {
|
|
||||||
if (Array.isArray(target)) {
|
|
||||||
target.length = Math.max(target.length, key)
|
|
||||||
target.splice(key, 1, val)
|
|
||||||
return val
|
|
||||||
}
|
|
||||||
target[key] = val
|
|
||||||
return val
|
|
||||||
}
|
|
||||||
|
|
||||||
export function del(target, key) {
|
|
||||||
if (Array.isArray(target)) {
|
|
||||||
target.splice(key, 1)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
delete target[key]
|
|
||||||
}
|
|
||||||
|
|
||||||
export * from 'vue'
|
|
||||||
export {
|
|
||||||
Vue,
|
|
||||||
Vue2,
|
|
||||||
isVue2,
|
|
||||||
isVue3,
|
|
||||||
install,
|
|
||||||
}
|
|
47
node_modules/vue-demi/package.json
generated
vendored
47
node_modules/vue-demi/package.json
generated
vendored
@ -1,47 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "vue-demi",
|
|
||||||
"version": "0.14.6",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
},
|
|
||||||
"repository": "https://github.com/antfu/vue-demi.git",
|
|
||||||
"funding": "https://github.com/sponsors/antfu",
|
|
||||||
"license": "MIT",
|
|
||||||
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
|
|
||||||
"main": "lib/index.cjs",
|
|
||||||
"jsdelivr": "lib/index.iife.js",
|
|
||||||
"unpkg": "lib/index.iife.js",
|
|
||||||
"module": "lib/index.mjs",
|
|
||||||
"types": "lib/index.d.ts",
|
|
||||||
"exports": {
|
|
||||||
".": {
|
|
||||||
"types": "./lib/index.d.ts",
|
|
||||||
"require": "./lib/index.cjs",
|
|
||||||
"import": "./lib/index.mjs",
|
|
||||||
"browser": "./lib/index.mjs"
|
|
||||||
},
|
|
||||||
"./*": "./*"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"vue-demi-fix": "bin/vue-demi-fix.js",
|
|
||||||
"vue-demi-switch": "bin/vue-demi-switch.js"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"lib",
|
|
||||||
"bin",
|
|
||||||
"scripts"
|
|
||||||
],
|
|
||||||
"scripts": {
|
|
||||||
"postinstall": "node ./scripts/postinstall.js",
|
|
||||||
"release": "npx bumpp --tag --commit --push && npm publish"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@vue/composition-api": "^1.0.0-rc.1",
|
|
||||||
"vue": "^3.0.0-0 || ^2.6.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"@vue/composition-api": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
19
node_modules/vue-demi/scripts/postinstall.js
generated
vendored
19
node_modules/vue-demi/scripts/postinstall.js
generated
vendored
@ -1,19 +0,0 @@
|
|||||||
const { switchVersion, loadModule } = require('./utils')
|
|
||||||
|
|
||||||
const Vue = loadModule('vue')
|
|
||||||
|
|
||||||
if (!Vue || typeof Vue.version !== 'string') {
|
|
||||||
console.warn('[vue-demi] Vue is not found. Please run "npm install vue" to install.')
|
|
||||||
}
|
|
||||||
else if (Vue.version.startsWith('2.7.')) {
|
|
||||||
switchVersion(2.7)
|
|
||||||
}
|
|
||||||
else if (Vue.version.startsWith('2.')) {
|
|
||||||
switchVersion(2)
|
|
||||||
}
|
|
||||||
else if (Vue.version.startsWith('3.')) {
|
|
||||||
switchVersion(3)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
console.warn(`[vue-demi] Vue version v${Vue.version} is not suppported.`)
|
|
||||||
}
|
|
18
node_modules/vue-demi/scripts/switch-cli.js
generated
vendored
18
node_modules/vue-demi/scripts/switch-cli.js
generated
vendored
@ -1,18 +0,0 @@
|
|||||||
const { switchVersion } = require('./utils')
|
|
||||||
|
|
||||||
const version = process.argv[2]
|
|
||||||
const vueEntry = process.argv[3] || 'vue'
|
|
||||||
|
|
||||||
if (version === '2.7') {
|
|
||||||
switchVersion(2.7, vueEntry)
|
|
||||||
console.log(`[vue-demi] Switched for Vue 2.7 (entry: "${vueEntry}")`)
|
|
||||||
} else if (version === '2') {
|
|
||||||
switchVersion(2, vueEntry)
|
|
||||||
console.log(`[vue-demi] Switched for Vue 2 (entry: "${vueEntry}")`)
|
|
||||||
} else if (version === '3') {
|
|
||||||
switchVersion(3, vueEntry)
|
|
||||||
console.log(`[vue-demi] Switched for Vue 3 (entry: "${vueEntry}")`)
|
|
||||||
} else {
|
|
||||||
console.warn(`[vue-demi] expecting version "2" or "2.7" or "3" but got "${version}"`)
|
|
||||||
process.exit(1)
|
|
||||||
}
|
|
62
node_modules/vue-demi/scripts/utils.js
generated
vendored
62
node_modules/vue-demi/scripts/utils.js
generated
vendored
@ -1,62 +0,0 @@
|
|||||||
const fs = require('fs')
|
|
||||||
const path = require('path')
|
|
||||||
|
|
||||||
const dir = path.resolve(__dirname, '..', 'lib')
|
|
||||||
|
|
||||||
function loadModule(name) {
|
|
||||||
try {
|
|
||||||
return require(name)
|
|
||||||
} catch (e) {
|
|
||||||
return undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function copy(name, version, vue) {
|
|
||||||
vue = vue || 'vue'
|
|
||||||
const src = path.join(dir, `v${version}`, name)
|
|
||||||
const dest = path.join(dir, name)
|
|
||||||
let content = fs.readFileSync(src, 'utf-8')
|
|
||||||
content = content.replace(/'vue'/g, `'${vue}'`)
|
|
||||||
// unlink for pnpm, #92
|
|
||||||
try {
|
|
||||||
fs.unlinkSync(dest)
|
|
||||||
} catch (error) { }
|
|
||||||
fs.writeFileSync(dest, content, 'utf-8')
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateVue2API() {
|
|
||||||
const ignoreList = ['version', 'default']
|
|
||||||
const VCA = loadModule('@vue/composition-api')
|
|
||||||
if (!VCA) {
|
|
||||||
console.warn('[vue-demi] Composition API plugin is not found. Please run "npm install @vue/composition-api" to install.')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const exports = Object.keys(VCA).filter(i => !ignoreList.includes(i))
|
|
||||||
|
|
||||||
const esmPath = path.join(dir, 'index.mjs')
|
|
||||||
let content = fs.readFileSync(esmPath, 'utf-8')
|
|
||||||
|
|
||||||
content = content.replace(
|
|
||||||
/\/\*\*VCA-EXPORTS\*\*\/[\s\S]+\/\*\*VCA-EXPORTS\*\*\//m,
|
|
||||||
`/**VCA-EXPORTS**/
|
|
||||||
export { ${exports.join(', ')} } from '@vue/composition-api/dist/vue-composition-api.mjs'
|
|
||||||
/**VCA-EXPORTS**/`
|
|
||||||
)
|
|
||||||
|
|
||||||
fs.writeFileSync(esmPath, content, 'utf-8')
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function switchVersion(version, vue) {
|
|
||||||
copy('index.cjs', version, vue)
|
|
||||||
copy('index.mjs', version, vue)
|
|
||||||
copy('index.d.ts', version, vue)
|
|
||||||
|
|
||||||
if (version === 2)
|
|
||||||
updateVue2API()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
module.exports.loadModule = loadModule
|
|
||||||
module.exports.switchVersion = switchVersion
|
|
21
node_modules/vue/LICENSE
generated
vendored
21
node_modules/vue/LICENSE
generated
vendored
@ -1,21 +0,0 @@
|
|||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2013-present, Yuxi (Evan) You
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
386
node_modules/vue/README.md
generated
vendored
386
node_modules/vue/README.md
generated
vendored
@ -1,386 +0,0 @@
|
|||||||
<p align="center"><a href="https://vuejs.org" target="_blank" rel="noopener noreferrer"><img width="100" src="https://vuejs.org/images/logo.png" alt="Vue logo"></a></p>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://circleci.com/gh/vuejs/vue/tree/dev"><img src="https://img.shields.io/circleci/project/github/vuejs/vue/dev.svg?sanitize=true" alt="Build Status"></a>
|
|
||||||
<a href="https://codecov.io/github/vuejs/vue?branch=dev"><img src="https://img.shields.io/codecov/c/github/vuejs/vue/dev.svg?sanitize=true" alt="Coverage Status"></a>
|
|
||||||
<a href="https://npmcharts.com/compare/vue?minimal=true"><img src="https://img.shields.io/npm/dm/vue.svg?sanitize=true" alt="Downloads"></a>
|
|
||||||
<a href="https://www.npmjs.com/package/vue"><img src="https://img.shields.io/npm/v/vue.svg?sanitize=true" alt="Version"></a>
|
|
||||||
<a href="https://www.npmjs.com/package/vue"><img src="https://img.shields.io/npm/l/vue.svg?sanitize=true" alt="License"></a>
|
|
||||||
<a href="https://chat.vuejs.org/"><img src="https://img.shields.io/badge/chat-on%20discord-7289da.svg?sanitize=true" alt="Chat"></a>
|
|
||||||
<br>
|
|
||||||
<a href="https://app.saucelabs.com/builds/50f8372d79f743a3b25fb6ca4851ca4c"><img src="https://app.saucelabs.com/buildstatus/vuejs" alt="Build Status"></a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2 align="center">Supporting Vue.js</h2>
|
|
||||||
|
|
||||||
Vue.js is an MIT-licensed open source project with its ongoing development made possible entirely by the support of these awesome [backers](https://github.com/vuejs/vue/blob/dev/BACKERS.md). If you'd like to join them, please consider:
|
|
||||||
|
|
||||||
- [Become a backer or sponsor on Patreon](https://www.patreon.com/evanyou).
|
|
||||||
- [Become a backer or sponsor on Open Collective](https://opencollective.com/vuejs).
|
|
||||||
- [One-time donation via PayPal or crypto-currencies](https://vuejs.org/support-vuejs/#One-time-Donations).
|
|
||||||
|
|
||||||
#### What's the difference between Patreon and OpenCollective?
|
|
||||||
|
|
||||||
Funds donated via Patreon go directly to support Evan You's full-time work on Vue.js. Funds donated via OpenCollective are managed with transparent expenses and will be used for compensating work and expenses for core team members or sponsoring community events. Your name/logo will receive proper recognition and exposure by donating on either platform.
|
|
||||||
|
|
||||||
<h3 align="center">Special Sponsors</h3>
|
|
||||||
<!--special start-->
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://autocode.com/" target="_blank">
|
|
||||||
<img width="260px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/autocode.svg?sanitize=true">
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<!--special end-->
|
|
||||||
|
|
||||||
<h3 align="center">Platinum Sponsors</h3>
|
|
||||||
|
|
||||||
<!--platinum start-->
|
|
||||||
<table>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://vueschool.io/?utm_source=Vuejs.org&utm_medium=Banner&utm_campaign=Sponsored%20Banner&utm_content=V1" target="_blank">
|
|
||||||
<img width="222px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/vueschool.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://vehikl.com/" target="_blank">
|
|
||||||
<img width="222px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/vehikl.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://retool.com/?utm_source=sponsor&utm_campaign=vue" target="_blank">
|
|
||||||
<img width="222px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/retool.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://passionatepeople.io/" target="_blank">
|
|
||||||
<img width="222px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/passionate_people.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr><tr></tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://www.storyblok.com" target="_blank">
|
|
||||||
<img width="222px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/storyblok.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://ionicframework.com/vue?utm_source=partner&utm_medium=referral&utm_campaign=vuesponsorship&utm_content=vuedocs" target="_blank">
|
|
||||||
<img width="222px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/ionic.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://nuxtjs.org/" target="_blank">
|
|
||||||
<img width="222px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/nuxt.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr><tr></tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<!--platinum end-->
|
|
||||||
|
|
||||||
<!--special-china start-->
|
|
||||||
<h3 align="center">Platinum Sponsors (China)</h3>
|
|
||||||
<table>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="http://www.dcloud.io/?hmsr=vuejsorg&hmpl=&hmcu=&hmkw=&hmci=" target="_blank">
|
|
||||||
<img width="177px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/dcloud.gif">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr><tr></tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<!--special-china end-->
|
|
||||||
|
|
||||||
<h3 align="center">Gold Sponsors</h3>
|
|
||||||
|
|
||||||
<!--gold start-->
|
|
||||||
<table>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://www.vuemastery.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/vuemastery.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://laravel.com" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/laravel.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://htmlburger.com" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/html_burger.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://www.frontenddeveloperlove.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/frontendlove.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://neds.com.au/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/neds.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://icons8.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/icons_8.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr><tr></tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://vuejobs.com/?ref=vuejs" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/vuejobs.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://tidelift.com/subscription/npm/vue" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/tidelift.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://www.firesticktricks.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/firestick_tricks.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://intygrate.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/intygrate.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="http://en.shopware.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/shopware_ag.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://www.vpnranks.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/vpnranks.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr><tr></tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://www.bacancytechnology.com/hire-vuejs-developer" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/bacancy_technology.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://www.bestvpn.co/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/bestvpn_co.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://www.y8.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/y8.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://js.devexpress.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/devexpress.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://fastcoding.jp/javascript/ " target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/fastcoding_inc.svg?sanitize=true">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://usave.co.uk/utilities/broadband" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/usave.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr><tr></tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://www.foo.software" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/foo.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://flatlogic.com/templates" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/flatlogic_templates.svg?sanitize=true">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="http://moovweb.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/moovweb.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://vpn-review.com/netflix-vpn" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/vpn_review.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://cosmos.network/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/tendermint.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://www.okayhq.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/okay.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr><tr></tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://www.vpsserver.com" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/vpsserver_com.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://aussiecasinohex.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/aussiecasinohex.svg?sanitize=true">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://litslink.com" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/litslink.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://newicon.net" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/newicon.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://lowdefy.com?k=w432" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/lowdefy.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://quickbookstoolhub.com/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/quickbooks_tool_hub.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr><tr></tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://linecorp.com" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/line_corporation.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://exmax.it/" target="_blank">
|
|
||||||
<img width="148px" src="https://raw.githubusercontent.com/vuejs/vuejs.org/master/themes/vue/source/images/exmax.png">
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr><tr></tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<!--gold end-->
|
|
||||||
|
|
||||||
<h3 align="center">Sponsors via <a href="https://opencollective.com/vuejs">Open Collective</a></h3>
|
|
||||||
|
|
||||||
<h4 align="center">Platinum</h4>
|
|
||||||
|
|
||||||
<a href="https://opencollective.com/vuejs/tiers/platinum-sponsors/0/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/platinum-sponsors/0/avatar.svg?sanitize=true"></a>
|
|
||||||
<a href="https://opencollective.com/vuejs/tiers/platinum-sponsors/1/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/platinum-sponsors/1/avatar.svg?sanitize=true"></a>
|
|
||||||
|
|
||||||
<h4 align="center">Gold</h4>
|
|
||||||
|
|
||||||
<a href="https://opencollective.com/vuejs/tiers/gold-sponsors/0/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/gold-sponsors/0/avatar.svg?sanitize=true" height="60px"></a>
|
|
||||||
<a href="https://opencollective.com/vuejs/tiers/gold-sponsors/1/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/gold-sponsors/1/avatar.svg?sanitize=true" height="60px"></a>
|
|
||||||
<a href="https://opencollective.com/vuejs/tiers/gold-sponsors/2/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/gold-sponsors/2/avatar.svg?sanitize=true" height="60px"></a>
|
|
||||||
<a href="https://opencollective.com/vuejs/tiers/gold-sponsors/3/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/gold-sponsors/3/avatar.svg?sanitize=true" height="60px"></a>
|
|
||||||
<a href="https://opencollective.com/vuejs/tiers/gold-sponsors/4/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/gold-sponsors/4/avatar.svg?sanitize=true" height="60px"></a>
|
|
||||||
<a href="https://opencollective.com/vuejs/tiers/gold-sponsors/5/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/gold-sponsors/5/avatar.svg?sanitize=true" height="60px"></a>
|
|
||||||
<a href="https://opencollective.com/vuejs/tiers/gold-sponsors/6/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/gold-sponsors/6/avatar.svg?sanitize=true" height="60px"></a>
|
|
||||||
<a href="https://opencollective.com/vuejs/tiers/gold-sponsors/7/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/gold-sponsors/7/avatar.svg?sanitize=true" height="60px"></a>
|
|
||||||
<a href="https://opencollective.com/vuejs/tiers/gold-sponsors/8/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/gold-sponsors/8/avatar.svg?sanitize=true" height="60px"></a>
|
|
||||||
<a href="https://opencollective.com/vuejs/tiers/gold-sponsors/9/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/gold-sponsors/9/avatar.svg?sanitize=true" height="60px"></a><a href="https://opencollective.com/vuejs/tiers/gold-sponsors/10/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/vuejs/tiers/gold-sponsors/10/avatar.svg?sanitize=true" height="60px"></a>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
Vue (pronounced `/vjuː/`, like view) is a **progressive framework** for building user interfaces. It is designed from the ground up to be incrementally adoptable, and can easily scale between a library and a framework depending on different use cases. It consists of an approachable core library that focuses on the view layer only, and an ecosystem of supporting libraries that helps you tackle complexity in large Single-Page Applications.
|
|
||||||
|
|
||||||
#### Browser Compatibility
|
|
||||||
|
|
||||||
Vue.js supports all browsers that are [ES5-compliant](https://kangax.github.io/compat-table/es5/) (IE8 and below are not supported).
|
|
||||||
|
|
||||||
## Ecosystem
|
|
||||||
|
|
||||||
| Project | Status | Description |
|
|
||||||
|---------|--------|-------------|
|
|
||||||
| [vue-router] | [![vue-router-status]][vue-router-package] | Single-page application routing |
|
|
||||||
| [vuex] | [![vuex-status]][vuex-package] | Large-scale state management |
|
|
||||||
| [vue-cli] | [![vue-cli-status]][vue-cli-package] | Project scaffolding |
|
|
||||||
| [vue-loader] | [![vue-loader-status]][vue-loader-package] | Single File Component (`*.vue` file) loader for webpack |
|
|
||||||
| [vue-server-renderer] | [![vue-server-renderer-status]][vue-server-renderer-package] | Server-side rendering support |
|
|
||||||
| [vue-class-component] | [![vue-class-component-status]][vue-class-component-package] | TypeScript decorator for a class-based API |
|
|
||||||
| [vue-rx] | [![vue-rx-status]][vue-rx-package] | RxJS integration |
|
|
||||||
| [vue-devtools] | [![vue-devtools-status]][vue-devtools-package] | Browser DevTools extension |
|
|
||||||
|
|
||||||
[vue-router]: https://github.com/vuejs/vue-router
|
|
||||||
[vuex]: https://github.com/vuejs/vuex
|
|
||||||
[vue-cli]: https://github.com/vuejs/vue-cli
|
|
||||||
[vue-loader]: https://github.com/vuejs/vue-loader
|
|
||||||
[vue-server-renderer]: https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer
|
|
||||||
[vue-class-component]: https://github.com/vuejs/vue-class-component
|
|
||||||
[vue-rx]: https://github.com/vuejs/vue-rx
|
|
||||||
[vue-devtools]: https://github.com/vuejs/vue-devtools
|
|
||||||
|
|
||||||
[vue-router-status]: https://img.shields.io/npm/v/vue-router.svg
|
|
||||||
[vuex-status]: https://img.shields.io/npm/v/vuex.svg
|
|
||||||
[vue-cli-status]: https://img.shields.io/npm/v/@vue/cli.svg
|
|
||||||
[vue-loader-status]: https://img.shields.io/npm/v/vue-loader.svg
|
|
||||||
[vue-server-renderer-status]: https://img.shields.io/npm/v/vue-server-renderer.svg
|
|
||||||
[vue-class-component-status]: https://img.shields.io/npm/v/vue-class-component.svg
|
|
||||||
[vue-rx-status]: https://img.shields.io/npm/v/vue-rx.svg
|
|
||||||
[vue-devtools-status]: https://img.shields.io/chrome-web-store/v/nhdogjmejiglipccpnnnanhbledajbpd.svg
|
|
||||||
|
|
||||||
[vue-router-package]: https://npmjs.com/package/vue-router
|
|
||||||
[vuex-package]: https://npmjs.com/package/vuex
|
|
||||||
[vue-cli-package]: https://npmjs.com/package/@vue/cli
|
|
||||||
[vue-loader-package]: https://npmjs.com/package/vue-loader
|
|
||||||
[vue-server-renderer-package]: https://npmjs.com/package/vue-server-renderer
|
|
||||||
[vue-class-component-package]: https://npmjs.com/package/vue-class-component
|
|
||||||
[vue-rx-package]: https://npmjs.com/package/vue-rx
|
|
||||||
[vue-devtools-package]: https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
To check out [live examples](https://vuejs.org/v2/examples/) and docs, visit [vuejs.org](https://vuejs.org).
|
|
||||||
|
|
||||||
## Questions
|
|
||||||
|
|
||||||
For questions and support please use [the official forum](https://forum.vuejs.org) or [community chat](https://chat.vuejs.org/). The issue list of this repo is **exclusively** for bug reports and feature requests.
|
|
||||||
|
|
||||||
## Issues
|
|
||||||
|
|
||||||
Please make sure to read the [Issue Reporting Checklist](https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md#issue-reporting-guidelines) before opening an issue. Issues not conforming to the guidelines may be closed immediately.
|
|
||||||
|
|
||||||
## Changelog
|
|
||||||
|
|
||||||
Detailed changes for each release are documented in the [release notes](https://github.com/vuejs/vue/releases).
|
|
||||||
|
|
||||||
## Stay In Touch
|
|
||||||
|
|
||||||
- [Twitter](https://twitter.com/vuejs)
|
|
||||||
- [Blog](https://medium.com/the-vue-point)
|
|
||||||
- [Job Board](https://vuejobs.com/?ref=vuejs)
|
|
||||||
|
|
||||||
## Contribution
|
|
||||||
|
|
||||||
Please make sure to read the [Contributing Guide](https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md) before making a pull request. If you have a Vue-related project/component/tool, add it with a pull request to [this curated list](https://github.com/vuejs/awesome-vue)!
|
|
||||||
|
|
||||||
Thank you to all the people who already contributed to Vue!
|
|
||||||
|
|
||||||
<a href="https://github.com/vuejs/vue/graphs/contributors"><img src="https://opencollective.com/vuejs/contributors.svg?width=890" /></a>
|
|
||||||
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
[MIT](https://opensource.org/licenses/MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2013-present, Yuxi (Evan) You
|
|
122
node_modules/vue/dist/README.md
generated
vendored
122
node_modules/vue/dist/README.md
generated
vendored
@ -1,122 +0,0 @@
|
|||||||
## Explanation of Build Files
|
|
||||||
|
|
||||||
| | UMD | CommonJS | ES Module |
|
|
||||||
| --- | --- | --- | --- |
|
|
||||||
| **Full** | vue.js | vue.common.js | vue.esm.js |
|
|
||||||
| **Runtime-only** | vue.runtime.js | vue.runtime.common.js | vue.runtime.esm.js |
|
|
||||||
| **Full (production)** | vue.min.js | | |
|
|
||||||
| **Runtime-only (production)** | vue.runtime.min.js | | |
|
|
||||||
|
|
||||||
### Terms
|
|
||||||
|
|
||||||
- **Full**: builds that contain both the compiler and the runtime.
|
|
||||||
|
|
||||||
- **Compiler**: code that is responsible for compiling template strings into JavaScript render functions.
|
|
||||||
|
|
||||||
- **Runtime**: code that is responsible for creating Vue instances, rendering and patching virtual DOM, etc. Basically everything minus the compiler.
|
|
||||||
|
|
||||||
- **[UMD](https://github.com/umdjs/umd)**: UMD builds can be used directly in the browser via a `<script>` tag. The default file from Unpkg CDN at [https://unpkg.com/vue](https://unpkg.com/vue) is the Runtime + Compiler UMD build (`vue.js`).
|
|
||||||
|
|
||||||
- **[CommonJS](http://wiki.commonjs.org/wiki/Modules/1.1)**: CommonJS builds are intended for use with older bundlers like [browserify](http://browserify.org/) or [webpack 1](https://webpack.github.io). The default file for these bundlers (`pkg.main`) is the Runtime only CommonJS build (`vue.runtime.common.js`).
|
|
||||||
|
|
||||||
- **[ES Module](http://exploringjs.com/es6/ch_modules.html)**: ES module builds are intended for use with modern bundlers like [webpack 2](https://webpack.js.org) or [rollup](http://rollupjs.org/). The default file for these bundlers (`pkg.module`) is the Runtime only ES Module build (`vue.runtime.esm.js`).
|
|
||||||
|
|
||||||
### Runtime + Compiler vs. Runtime-only
|
|
||||||
|
|
||||||
If you need to compile templates on the fly (e.g. passing a string to the `template` option, or mounting to an element using its in-DOM HTML as the template), you will need the compiler and thus the full build.
|
|
||||||
|
|
||||||
When using `vue-loader` or `vueify`, templates inside `*.vue` files are compiled into JavaScript at build time. You don't really need the compiler in the final bundle, and can therefore, use the runtime-only build.
|
|
||||||
|
|
||||||
Since the runtime-only builds are roughly 30% lighter-weight than their full-build counterparts, you should use it whenever you can. If you wish to use the full build instead, you need to configure an alias in your bundler.
|
|
||||||
|
|
||||||
#### Webpack
|
|
||||||
|
|
||||||
``` js
|
|
||||||
module.exports = {
|
|
||||||
// ...
|
|
||||||
resolve: {
|
|
||||||
alias: {
|
|
||||||
'vue$': 'vue/dist/vue.esm.js' // 'vue/dist/vue.common.js' for webpack 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Rollup
|
|
||||||
|
|
||||||
``` js
|
|
||||||
const alias = require('rollup-plugin-alias')
|
|
||||||
|
|
||||||
rollup({
|
|
||||||
// ...
|
|
||||||
plugins: [
|
|
||||||
alias({
|
|
||||||
'vue': 'vue/dist/vue.esm.js'
|
|
||||||
})
|
|
||||||
]
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Browserify
|
|
||||||
|
|
||||||
Add to your project's `package.json`:
|
|
||||||
|
|
||||||
``` js
|
|
||||||
{
|
|
||||||
// ...
|
|
||||||
"browser": {
|
|
||||||
"vue": "vue/dist/vue.common.js"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Development vs. Production Mode
|
|
||||||
|
|
||||||
Development/production modes are hard-coded for the UMD builds: the un-minified files are for development, and the minified files are for production.
|
|
||||||
|
|
||||||
CommonJS and ES Module builds are intended for bundlers, therefore we don't provide minified versions for them. You will be responsible for minifying the final bundle yourself.
|
|
||||||
|
|
||||||
CommonJS and ES Module builds also preserve raw checks for `process.env.NODE_ENV` to determine the mode they should run in. You should use appropriate bundler configurations to replace these environment variables in order to control which mode Vue will run in. Replacing `process.env.NODE_ENV` with string literals also allows minifiers like UglifyJS to completely drop the development-only code blocks, reducing final file size.
|
|
||||||
|
|
||||||
#### Webpack
|
|
||||||
|
|
||||||
Use Webpack's [DefinePlugin](https://webpack.js.org/plugins/define-plugin/):
|
|
||||||
|
|
||||||
``` js
|
|
||||||
var webpack = require('webpack')
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
// ...
|
|
||||||
plugins: [
|
|
||||||
// ...
|
|
||||||
new webpack.DefinePlugin({
|
|
||||||
'process.env.NODE_ENV': JSON.stringify('production')
|
|
||||||
})
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Rollup
|
|
||||||
|
|
||||||
Use [rollup-plugin-replace](https://github.com/rollup/rollup-plugin-replace):
|
|
||||||
|
|
||||||
``` js
|
|
||||||
const replace = require('rollup-plugin-replace')
|
|
||||||
|
|
||||||
rollup({
|
|
||||||
// ...
|
|
||||||
plugins: [
|
|
||||||
replace({
|
|
||||||
'process.env.NODE_ENV': JSON.stringify('production')
|
|
||||||
})
|
|
||||||
]
|
|
||||||
}).then(...)
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Browserify
|
|
||||||
|
|
||||||
Apply a global [envify](https://github.com/hughsk/envify) transform to your bundle.
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
NODE_ENV=production browserify -g envify -e main.js | uglifyjs -c -m > build.js
|
|
||||||
```
|
|
12008
node_modules/vue/dist/vue.common.dev.js
generated
vendored
12008
node_modules/vue/dist/vue.common.dev.js
generated
vendored
File diff suppressed because it is too large
Load Diff
5
node_modules/vue/dist/vue.common.js
generated
vendored
5
node_modules/vue/dist/vue.common.js
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
if (process.env.NODE_ENV === 'production') {
|
|
||||||
module.exports = require('./vue.common.prod.js')
|
|
||||||
} else {
|
|
||||||
module.exports = require('./vue.common.dev.js')
|
|
||||||
}
|
|
6
node_modules/vue/dist/vue.common.prod.js
generated
vendored
6
node_modules/vue/dist/vue.common.prod.js
generated
vendored
File diff suppressed because one or more lines are too long
12059
node_modules/vue/dist/vue.esm.browser.js
generated
vendored
12059
node_modules/vue/dist/vue.esm.browser.js
generated
vendored
File diff suppressed because it is too large
Load Diff
6
node_modules/vue/dist/vue.esm.browser.min.js
generated
vendored
6
node_modules/vue/dist/vue.esm.browser.min.js
generated
vendored
File diff suppressed because one or more lines are too long
12042
node_modules/vue/dist/vue.esm.js
generated
vendored
12042
node_modules/vue/dist/vue.esm.js
generated
vendored
File diff suppressed because it is too large
Load Diff
12014
node_modules/vue/dist/vue.js
generated
vendored
12014
node_modules/vue/dist/vue.js
generated
vendored
File diff suppressed because it is too large
Load Diff
6
node_modules/vue/dist/vue.min.js
generated
vendored
6
node_modules/vue/dist/vue.min.js
generated
vendored
File diff suppressed because one or more lines are too long
8467
node_modules/vue/dist/vue.runtime.common.dev.js
generated
vendored
8467
node_modules/vue/dist/vue.runtime.common.dev.js
generated
vendored
File diff suppressed because it is too large
Load Diff
5
node_modules/vue/dist/vue.runtime.common.js
generated
vendored
5
node_modules/vue/dist/vue.runtime.common.js
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
if (process.env.NODE_ENV === 'production') {
|
|
||||||
module.exports = require('./vue.runtime.common.prod.js')
|
|
||||||
} else {
|
|
||||||
module.exports = require('./vue.runtime.common.dev.js')
|
|
||||||
}
|
|
6
node_modules/vue/dist/vue.runtime.common.prod.js
generated
vendored
6
node_modules/vue/dist/vue.runtime.common.prod.js
generated
vendored
File diff suppressed because one or more lines are too long
8495
node_modules/vue/dist/vue.runtime.esm.js
generated
vendored
8495
node_modules/vue/dist/vue.runtime.esm.js
generated
vendored
File diff suppressed because it is too large
Load Diff
8473
node_modules/vue/dist/vue.runtime.js
generated
vendored
8473
node_modules/vue/dist/vue.runtime.js
generated
vendored
File diff suppressed because it is too large
Load Diff
6
node_modules/vue/dist/vue.runtime.min.js
generated
vendored
6
node_modules/vue/dist/vue.runtime.min.js
generated
vendored
File diff suppressed because one or more lines are too long
150
node_modules/vue/package.json
generated
vendored
150
node_modules/vue/package.json
generated
vendored
@ -1,150 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "vue",
|
|
||||||
"version": "2.6.14",
|
|
||||||
"description": "Reactive, component-oriented view layer for modern web interfaces.",
|
|
||||||
"main": "dist/vue.runtime.common.js",
|
|
||||||
"module": "dist/vue.runtime.esm.js",
|
|
||||||
"unpkg": "dist/vue.js",
|
|
||||||
"jsdelivr": "dist/vue.js",
|
|
||||||
"typings": "types/index.d.ts",
|
|
||||||
"files": [
|
|
||||||
"src",
|
|
||||||
"dist/*.js",
|
|
||||||
"types/*.d.ts"
|
|
||||||
],
|
|
||||||
"sideEffects": false,
|
|
||||||
"scripts": {
|
|
||||||
"dev": "rollup -w -c scripts/config.js --environment TARGET:web-full-dev",
|
|
||||||
"dev:cjs": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-cjs-dev",
|
|
||||||
"dev:esm": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-esm",
|
|
||||||
"dev:test": "karma start test/unit/karma.dev.config.js",
|
|
||||||
"dev:ssr": "rollup -w -c scripts/config.js --environment TARGET:web-server-renderer",
|
|
||||||
"dev:compiler": "rollup -w -c scripts/config.js --environment TARGET:web-compiler ",
|
|
||||||
"dev:weex": "rollup -w -c scripts/config.js --environment TARGET:weex-framework",
|
|
||||||
"dev:weex:factory": "rollup -w -c scripts/config.js --environment TARGET:weex-factory",
|
|
||||||
"dev:weex:compiler": "rollup -w -c scripts/config.js --environment TARGET:weex-compiler ",
|
|
||||||
"build": "node scripts/build.js",
|
|
||||||
"build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer",
|
|
||||||
"build:weex": "npm run build -- weex",
|
|
||||||
"test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex",
|
|
||||||
"test:unit": "karma start test/unit/karma.unit.config.js",
|
|
||||||
"test:cover": "karma start test/unit/karma.cover.config.js",
|
|
||||||
"test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js",
|
|
||||||
"test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.js",
|
|
||||||
"test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.js",
|
|
||||||
"test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2",
|
|
||||||
"test:types": "tsc -p ./types/test/tsconfig.json",
|
|
||||||
"lint": "eslint src scripts test",
|
|
||||||
"flow": "flow check",
|
|
||||||
"sauce": "karma start test/unit/karma.sauce.config.js",
|
|
||||||
"bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js",
|
|
||||||
"release": "bash scripts/release.sh",
|
|
||||||
"release:weex": "bash scripts/release-weex.sh",
|
|
||||||
"release:note": "node scripts/gen-release-note.js",
|
|
||||||
"commit": "git-cz"
|
|
||||||
},
|
|
||||||
"gitHooks": {
|
|
||||||
"pre-commit": "lint-staged",
|
|
||||||
"commit-msg": "node scripts/verify-commit-msg.js"
|
|
||||||
},
|
|
||||||
"lint-staged": {
|
|
||||||
"*.js": [
|
|
||||||
"eslint --fix",
|
|
||||||
"git add"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/vuejs/vue.git"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"vue"
|
|
||||||
],
|
|
||||||
"author": "Evan You",
|
|
||||||
"license": "MIT",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/vuejs/vue/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/vuejs/vue#readme",
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/core": "^7.0.0",
|
|
||||||
"@babel/plugin-proposal-class-properties": "^7.1.0",
|
|
||||||
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
|
|
||||||
"@babel/plugin-syntax-jsx": "^7.0.0",
|
|
||||||
"@babel/plugin-transform-flow-strip-types": "^7.0.0",
|
|
||||||
"@babel/preset-env": "^7.0.0",
|
|
||||||
"@babel/register": "^7.0.0",
|
|
||||||
"@types/node": "^12.12.0",
|
|
||||||
"@types/webpack": "^4.4.22",
|
|
||||||
"acorn": "^5.2.1",
|
|
||||||
"babel-eslint": "^10.0.1",
|
|
||||||
"babel-helper-vue-jsx-merge-props": "^2.0.3",
|
|
||||||
"babel-loader": "^8.0.4",
|
|
||||||
"babel-plugin-istanbul": "^5.1.0",
|
|
||||||
"babel-plugin-transform-vue-jsx": "^4.0.1",
|
|
||||||
"babel-preset-flow-vue": "^1.0.0",
|
|
||||||
"buble": "^0.19.3",
|
|
||||||
"chalk": "^2.3.0",
|
|
||||||
"chromedriver": "^2.45.0",
|
|
||||||
"codecov": "^3.0.0",
|
|
||||||
"commitizen": "^2.9.6",
|
|
||||||
"conventional-changelog": "^1.1.3",
|
|
||||||
"cross-spawn": "^6.0.5",
|
|
||||||
"cz-conventional-changelog": "^2.0.0",
|
|
||||||
"de-indent": "^1.0.2",
|
|
||||||
"es6-promise": "^4.1.0",
|
|
||||||
"escodegen": "^1.8.1",
|
|
||||||
"eslint": "^5.7.0",
|
|
||||||
"eslint-plugin-flowtype": "^2.34.0",
|
|
||||||
"eslint-plugin-jasmine": "^2.8.4",
|
|
||||||
"file-loader": "^3.0.1",
|
|
||||||
"flow-bin": "^0.61.0",
|
|
||||||
"hash-sum": "^1.0.2",
|
|
||||||
"he": "^1.1.1",
|
|
||||||
"http-server": "^0.12.3",
|
|
||||||
"jasmine": "^2.99.0",
|
|
||||||
"jasmine-core": "^2.99.0",
|
|
||||||
"karma": "^3.1.1",
|
|
||||||
"karma-chrome-launcher": "^2.1.1",
|
|
||||||
"karma-coverage": "^1.1.1",
|
|
||||||
"karma-firefox-launcher": "^1.0.1",
|
|
||||||
"karma-jasmine": "^1.1.0",
|
|
||||||
"karma-mocha-reporter": "^2.2.3",
|
|
||||||
"karma-phantomjs-launcher": "^1.0.4",
|
|
||||||
"karma-safari-launcher": "^1.0.0",
|
|
||||||
"karma-sauce-launcher": "^2.0.2",
|
|
||||||
"karma-sourcemap-loader": "^0.3.7",
|
|
||||||
"karma-webpack": "^4.0.0-rc.2",
|
|
||||||
"lint-staged": "^8.0.0",
|
|
||||||
"lodash": "^4.17.4",
|
|
||||||
"lodash.template": "^4.4.0",
|
|
||||||
"lodash.uniq": "^4.5.0",
|
|
||||||
"lru-cache": "^5.1.1",
|
|
||||||
"nightwatch": "^0.9.16",
|
|
||||||
"nightwatch-helpers": "^1.2.0",
|
|
||||||
"phantomjs-prebuilt": "^2.1.14",
|
|
||||||
"puppeteer": "^1.11.0",
|
|
||||||
"resolve": "^1.3.3",
|
|
||||||
"rollup": "^1.0.0",
|
|
||||||
"rollup-plugin-alias": "^1.3.1",
|
|
||||||
"rollup-plugin-buble": "^0.19.6",
|
|
||||||
"rollup-plugin-commonjs": "^9.2.0",
|
|
||||||
"rollup-plugin-flow-no-whitespace": "^1.0.0",
|
|
||||||
"rollup-plugin-node-resolve": "^4.0.0",
|
|
||||||
"rollup-plugin-replace": "^2.0.0",
|
|
||||||
"selenium-server": "^2.53.1",
|
|
||||||
"serialize-javascript": "^3.1.0",
|
|
||||||
"shelljs": "^0.8.1",
|
|
||||||
"terser": "^3.10.2",
|
|
||||||
"typescript": "^3.6.4",
|
|
||||||
"webpack": "~4.28.4",
|
|
||||||
"weex-js-runtime": "^0.23.6",
|
|
||||||
"weex-styler": "^0.3.0",
|
|
||||||
"yorkie": "^2.0.0"
|
|
||||||
},
|
|
||||||
"config": {
|
|
||||||
"commitizen": {
|
|
||||||
"path": "./node_modules/cz-conventional-changelog"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
50
node_modules/vue/src/compiler/codeframe.js
generated
vendored
50
node_modules/vue/src/compiler/codeframe.js
generated
vendored
@ -1,50 +0,0 @@
|
|||||||
/* @flow */
|
|
||||||
|
|
||||||
const range = 2
|
|
||||||
|
|
||||||
export function generateCodeFrame (
|
|
||||||
source: string,
|
|
||||||
start: number = 0,
|
|
||||||
end: number = source.length
|
|
||||||
): string {
|
|
||||||
const lines = source.split(/\r?\n/)
|
|
||||||
let count = 0
|
|
||||||
const res = []
|
|
||||||
for (let i = 0; i < lines.length; i++) {
|
|
||||||
count += lines[i].length + 1
|
|
||||||
if (count >= start) {
|
|
||||||
for (let j = i - range; j <= i + range || end > count; j++) {
|
|
||||||
if (j < 0 || j >= lines.length) continue
|
|
||||||
res.push(`${j + 1}${repeat(` `, 3 - String(j + 1).length)}| ${lines[j]}`)
|
|
||||||
const lineLength = lines[j].length
|
|
||||||
if (j === i) {
|
|
||||||
// push underline
|
|
||||||
const pad = start - (count - lineLength) + 1
|
|
||||||
const length = end > count ? lineLength - pad : end - start
|
|
||||||
res.push(` | ` + repeat(` `, pad) + repeat(`^`, length))
|
|
||||||
} else if (j > i) {
|
|
||||||
if (end > count) {
|
|
||||||
const length = Math.min(end - count, lineLength)
|
|
||||||
res.push(` | ` + repeat(`^`, length))
|
|
||||||
}
|
|
||||||
count += lineLength + 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return res.join('\n')
|
|
||||||
}
|
|
||||||
|
|
||||||
function repeat (str, n) {
|
|
||||||
let result = ''
|
|
||||||
if (n > 0) {
|
|
||||||
while (true) { // eslint-disable-line
|
|
||||||
if (n & 1) result += str
|
|
||||||
n >>>= 1
|
|
||||||
if (n <= 0) break
|
|
||||||
str += str
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user