evil-vue
Version:
Evil vue3 writing, similar to angular writing Dependency injection
1,227 lines (1,226 loc) • 45.1 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports[Symbol.toStringTag] = "Module";
var injectionJs = require("injection-js");
var vue = require("vue");
var vueRouter = require("vue-router");
var axios = require("axios");
function _interopDefaultLegacy(e) {
return e && typeof e === "object" && "default" in e ? e : { "default": e };
}
var axios__default = /* @__PURE__ */ _interopDefaultLegacy(axios);
const Metadata = new WeakMap();
function decorateProperty(decorators, target, propertyKey, descriptor) {
decorators.reverse().forEach((decorator) => {
descriptor = decorator(target, propertyKey, descriptor) || descriptor;
});
return descriptor;
}
function decorateConstructor(decorators, target) {
decorators.reverse().forEach((decorator) => {
const decorated = decorator(target);
if (decorated) {
target = decorated;
}
});
return target;
}
function decorate(decorators, target, propertyKey, attributes) {
if (!Array.isArray(decorators) || decorators.length === 0) {
throw new TypeError();
}
if (propertyKey !== void 0) {
return decorateProperty(decorators, target, propertyKey, attributes);
}
if (typeof target === "function") {
return decorateConstructor(decorators, target);
}
return;
}
function getMetadataMap(target, propertyKey) {
return Metadata.get(target) && Metadata.get(target).get(propertyKey);
}
function ordinaryGetOwnMetadata(metadataKey, target, propertyKey) {
if (target === void 0) {
throw new TypeError();
}
const metadataMap = getMetadataMap(target, propertyKey);
return metadataMap && metadataMap.get(metadataKey);
}
function createMetadataMap(target, propertyKey) {
const targetMetadata = Metadata.get(target) || new Map();
Metadata.set(target, targetMetadata);
const metadataMap = targetMetadata.get(propertyKey) || new Map();
targetMetadata.set(propertyKey, metadataMap);
return metadataMap;
}
function ordinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey) {
if (propertyKey && !["string", "symbol"].includes(typeof propertyKey)) {
throw new TypeError();
}
(getMetadataMap(target, propertyKey) || createMetadataMap(target, propertyKey)).set(metadataKey, metadataValue);
}
function ordinaryGetMetadata(metadataKey, target, propertyKey) {
return ordinaryGetOwnMetadata(metadataKey, target, propertyKey) ? ordinaryGetOwnMetadata(metadataKey, target, propertyKey) : Object.getPrototypeOf(target) ? ordinaryGetMetadata(metadataKey, Object.getPrototypeOf(target), propertyKey) : void 0;
}
function metadata(metadataKey, metadataValue) {
return function decorator(target, propertyKey) {
ordinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);
};
}
function getMetadata(metadataKey, target, propertyKey) {
return ordinaryGetMetadata(metadataKey, target, propertyKey);
}
function getOwnMetadata(metadataKey, target, propertyKey) {
return ordinaryGetOwnMetadata(metadataKey, target, propertyKey);
}
function hasOwnMetadata(metadataKey, target, propertyKey) {
return !!ordinaryGetOwnMetadata(metadataKey, target, propertyKey);
}
function hasMetadata(metadataKey, target, propertyKey) {
return !!ordinaryGetMetadata(metadataKey, target, propertyKey);
}
function defineMetadata(metadataKey, metadataValue, target, propertyKey) {
ordinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);
}
const Reflection = {
decorate,
defineMetadata,
getMetadata,
getOwnMetadata,
hasMetadata,
hasOwnMetadata,
metadata
};
Object.assign(Reflect, Reflection);
const isFunction = (val) => typeof val === "function";
const isObject = (val) => val !== null && typeof val === "object";
const isPromise = (val) => {
return isObject(val) && isFunction(val.then) && isFunction(val.catch);
};
const isArray = (val) => {
if (typeof Array.isArray === "function") {
return Array.isArray(val);
} else {
return Object.prototype.toString.call(val) === "[object Array]";
}
};
const VUE_APP = new injectionJs.InjectionToken("APP_USE");
const vue_app = {};
const APP_INITIALIZER = new injectionJs.InjectionToken("APP_INITIALIZER");
const VUE_APP_INIT_STARTUP = new injectionJs.InjectionToken("VUE_APP_INITSTARTUP");
const InjectorKey = Symbol("vue-module-injector");
const ModuleProvidersMetadataKey = Symbol("__ModuleProvidersMetadataKey");
const ModuleImportsMetadataKey = Symbol("__ModuleImportsMetadataKey");
const ModuleDeclarationsMetadataKey = Symbol("__ModuleDeclarationsMetadataKey");
const ModuleBootstrapMetadataKey = Symbol("__ModuleBootstrapMetadataKey");
class VueModuleScanner {
constructor() {
this.providers = [];
this.declarations = [];
this.startupModules = [];
}
scanModule(module) {
this.scanImports(module);
this.scanProviders(module);
return {
providers: this.providers,
declarations: this.declarations,
startupModules: this.startupModules,
bootstrap: this.scanBootstrap(module)
};
}
scanBootstrap(module) {
return Reflect.getOwnMetadata(ModuleBootstrapMetadataKey, module) || null;
}
scanProviders(module) {
const providers = Reflect.getOwnMetadata(ModuleProvidersMetadataKey, module) || [];
this.providers = [...this.providers, ...providers];
}
scanImports(module) {
const imports = Reflect.getOwnMetadata(ModuleImportsMetadataKey, module) || [];
const moduleProviders = [];
imports.map((item) => {
if (item.vueModule) {
this.startupModules.push(item.vueModule);
}
if (item.providers) {
this.providers = [...this.providers, ...item.providers];
}
if (!item.vueModule && !item.providers) {
const itemModule = this.scanModule(item);
moduleProviders.concat(itemModule.providers);
moduleProviders.push(item);
}
});
this.providers = this.providers.concat(moduleProviders);
}
scanDeclarations(module) {
const declarations = Reflect.getOwnMetadata(ModuleDeclarationsMetadataKey, module) || [];
this.declarations = declarations;
}
}
function bootstrapModule(Module, ParentModule) {
const scanner = new VueModuleScanner();
const {
providers,
startupModules
} = scanner.scanModule(Module);
const childRootInjector = injectionJs.ReflectiveInjector.resolveAndCreate([...providers || [], ...startupModules], ParentModule);
startupModules.map((sm) => {
childRootInjector.get(sm, null);
});
return childRootInjector;
}
class VueFactoryStatic {
create(module) {
return __async(this, null, function* () {
const scanner = new VueModuleScanner();
const app = vue.createApp(scanner.scanBootstrap(module));
const RootInjector = injectionJs.ReflectiveInjector.resolveAndCreate([{
useValue: app,
provide: VUE_APP
}]);
const injector = bootstrapModule(module, RootInjector);
const startup = injector.get(VUE_APP_INIT_STARTUP, null);
if (isPromise(startup)) {
yield startup;
}
const initvue = injector.get(APP_INITIALIZER, null);
if (initvue) {
initvue(app);
}
app.provide(InjectorKey, injector);
return app;
});
}
}
const VueFactory = (module, useVue) => __async(this, null, function* () {
const vue2 = yield new VueFactoryStatic().create(module);
useVue && useVue(vue2);
});
class SetModule {
static setModuleProviders(providers, target) {
Reflect.defineMetadata(ModuleProvidersMetadataKey, providers || [], target);
}
static setModuleImports(imports, target) {
Reflect.defineMetadata(ModuleImportsMetadataKey, imports || [], target);
}
static setModuleDeclarations(declarations, target) {
Reflect.defineMetadata(ModuleDeclarationsMetadataKey, declarations || [], target);
}
static setModuleBootstrap(bootstrap, target) {
Reflect.defineMetadata(ModuleBootstrapMetadataKey, bootstrap, target);
}
}
function VueModule(config) {
return function(target) {
SetModule.setModuleProviders(config.providers || [], target);
SetModule.setModuleImports(config.imports || [], target);
SetModule.setModuleBootstrap(config.bootstrap, target);
return injectionJs.Injectable()(target);
};
}
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof2(obj2) {
return typeof obj2;
};
} else {
_typeof = function _typeof2(obj2) {
return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
};
}
return _typeof(obj);
}
function boundMethod(target, key, descriptor) {
var fn = descriptor.value;
if (typeof fn !== "function") {
throw new TypeError("@boundMethod decorator can only be applied to methods not: ".concat(_typeof(fn)));
}
var definingProperty = false;
return {
configurable: true,
get: function get() {
if (definingProperty || this === target.prototype || this.hasOwnProperty(key) || typeof fn !== "function") {
return fn;
}
var boundFn = fn.bind(this);
definingProperty = true;
Object.defineProperty(this, key, {
configurable: true,
get: function get2() {
return boundFn;
},
set: function set(value) {
fn = value;
delete this[key];
}
});
definingProperty = false;
return boundFn;
},
set: function set(value) {
fn = value;
}
};
}
function boundClass(target) {
var keys;
if (typeof Reflect !== "undefined" && typeof Reflect.ownKeys === "function") {
keys = Reflect.ownKeys(target.prototype);
} else {
keys = Object.getOwnPropertyNames(target.prototype);
if (typeof Object.getOwnPropertySymbols === "function") {
keys = keys.concat(Object.getOwnPropertySymbols(target.prototype));
}
}
keys.forEach(function(key) {
if (key === "constructor") {
return;
}
var descriptor = Object.getOwnPropertyDescriptor(target.prototype, key);
if (typeof descriptor.value === "function") {
Object.defineProperty(target.prototype, key, boundMethod(target, key, descriptor));
}
});
return target;
}
function autobind() {
if (arguments.length === 1) {
return boundClass.apply(void 0, arguments);
}
return boundMethod.apply(void 0, arguments);
}
function Autobind() {
return autobind;
}
const ClassMetadataKey = Symbol("Vue-Class-Component");
const ProvidersMetadataKey = Symbol("Vue-Class-Component-Providers");
function Component(options) {
return function(target) {
if (!target.resolveComponent)
target.resolveComponent = resolveComponent;
Reflect.defineMetadata(ClassMetadataKey, __spreadValues({
name: options == null ? void 0 : options.name,
components: (options == null ? void 0 : options.components) || {},
inheritAttrs: (options == null ? void 0 : options.inheritAttrs) || true
}, options), target);
Reflect.defineMetadata(ProvidersMetadataKey, (options == null ? void 0 : options.providers) || [], target);
return Autobind()(injectionJs.Injectable()(target));
};
}
function resolveComponent(target) {
const parent = vue.inject(InjectorKey, void 0);
const providers = Reflect.getOwnMetadata(ProvidersMetadataKey, target);
let deps = providers || [];
if (!deps.includes(target))
deps.unshift(target);
const resolveProviders = injectionJs.ReflectiveInjector.resolve(deps);
const injector = injectionJs.ReflectiveInjector.fromResolvedProviders(resolveProviders, parent);
vue.provide(InjectorKey, injector);
const compInstance = injector.get(target);
if (providers == null ? void 0 : providers.length)
resolveProviders.forEach((k) => injector.get(k.key.token));
return compInstance;
}
function getComponentOptions(target) {
const componentOptions = Reflect.getOwnMetadata(ClassMetadataKey, target);
if (!componentOptions) {
console.group(` %c error component ${target.name} `, "color: white; font-size: q4px; background: #f5222d; padding: 3px");
console.log(`${target.name} component need Component Decorators `);
console.groupEnd();
}
return componentOptions || {};
}
function useProps() {
const instance = vue.getCurrentInstance();
return instance.props;
}
function useCtx() {
const instance = vue.getCurrentInstance();
return instance.setupContext;
}
function getDeepOwnDescriptor(proto, key) {
if (!proto)
return null;
const desc = Reflect.getOwnPropertyDescriptor(proto, key);
if (desc)
return desc;
return getDeepOwnDescriptor(Reflect.getPrototypeOf(proto), key);
}
function getProtoMetadata(target, key, returnDesc = false) {
if (!target)
return [];
const proto = Reflect.getPrototypeOf(target);
if (!proto)
return [];
let res = Reflect.getMetadata(key, proto) || [];
if (returnDesc) {
res = res.map((k) => {
if (typeof k === "string") {
return {
key: k,
desc: getDeepOwnDescriptor(proto, k)
};
}
if (typeof k === "object") {
return {
key: k,
desc: getDeepOwnDescriptor(proto, k.key)
};
}
});
}
return res;
}
function getEmitsFromProps(defaultProps) {
const keys = Array.isArray(defaultProps) ? defaultProps : Object.keys(defaultProps);
const emits = [];
for (let key of keys) {
if (!/^on/.test(key))
continue;
key = key.slice(2).replace(/Once$/, "");
emits.push(key[0].toLowerCase() + key.slice(1));
}
return emits;
}
const $internalHooks = ["$props", "props", "context", "render", "resolveComponent", "__vccOpts__value", "__vccOpts", "constructor", "components", "beforeMount", "mounted", "beforeUpdate", "updated", "beforeUnmount", "unmounted", "errorCaptured", "renderTracked", "renderTriggered", "activated", "deactivated"];
function getSetupReturn(proto) {
const setupReturn = {};
const Prototype = Object.getPrototypeOf(proto);
Object.getOwnPropertyNames(Prototype).forEach((key) => {
if ($internalHooks.indexOf(key) > -1) {
return;
}
setupReturn[key] = Prototype[key];
});
const Proto = Object.getOwnPropertyDescriptors(proto);
Object.getOwnPropertyNames(Proto).forEach((key) => {
if ($internalHooks.indexOf(key) > -1) {
return;
}
setupReturn[key] = Proto[key].value;
});
return setupReturn;
}
const $LifecycleHook = {
beforeMount: vue.onBeforeMount,
mounted: vue.onMounted,
beforeUpdate: vue.onBeforeUpdate,
updated: vue.onUpdated,
beforeUnmount: vue.onBeforeUnmount,
unmounted: vue.onUnmounted,
errorCaptured: vue.onErrorCaptured,
renderTracked: vue.onRenderTracked,
renderTriggered: vue.onRenderTriggered,
activated: vue.onActivated,
deactivated: vue.onDeactivated
};
function getLifecycle(proto) {
const Prototype = Object.getPrototypeOf(proto);
Object.getOwnPropertyNames(Prototype).forEach((key) => {
Object.getOwnPropertyNames($LifecycleHook).forEach((lifecycle) => {
if (key === lifecycle) {
return $LifecycleHook[lifecycle](() => proto[key]());
}
});
});
}
const PropMetadataKey = Symbol("__Component_Prop");
function Prop(propOptions) {
return function(target, key) {
let list = Reflect.getMetadata(PropMetadataKey, target.constructor) || [];
list = list.slice();
const hasItem = list.find((k) => k === key);
if (!hasItem)
list.push(__spreadValues({
key
}, propOptions));
Reflect.defineMetadata(PropMetadataKey, list, target.constructor);
Reflect.defineMetadata(PropMetadataKey, list, target);
};
}
function creatProps(targetThis) {
const list = Reflect.getMetadata(PropMetadataKey, targetThis) || [];
let creatPropsObj = {};
for (const item of list) {
creatPropsObj[item.key] = {
type: item.type || [String, Number, Object, Function, Boolean],
default: item.default
};
}
return creatPropsObj;
}
function handler$3(targetThis) {
const list = Reflect.getMetadata(PropMetadataKey, targetThis) || [];
if (!list || !list.length)
return;
for (const item of list) {
Object.defineProperty(targetThis, item.key, {
enumerable: true,
configurable: true,
get() {
return targetThis.props[item.key];
}
});
}
}
const PropHandler = {
key: "Prop",
handler: handler$3
};
const MetadataKey$2 = Symbol("Viewer");
function Viewer() {
return function(target, key) {
let list = Reflect.getMetadata(MetadataKey$2, target) || [];
list = list.slice();
const hasItem = list.find((k) => k === key);
if (!hasItem)
list.push(key);
Reflect.defineMetadata(MetadataKey$2, list, target);
};
}
function handler$2(targetThis, setupReturn) {
const list = getProtoMetadata(targetThis, MetadataKey$2);
if (!list || !list.length)
return;
if (!setupReturn) {
for (const item of list) {
const keyVal = vue.ref(targetThis[item]);
Object.defineProperty(targetThis, item, {
enumerable: true,
configurable: true,
get() {
return keyVal.value;
},
set(v) {
keyVal.value = v;
}
});
}
} else {
for (const item of list) {
setupReturn[item] = vue.ref(targetThis[item]);
Object.defineProperty(targetThis, item, {
enumerable: true,
configurable: true,
get() {
return setupReturn[item].value;
},
set(v) {
setupReturn[item].value = v;
}
});
}
}
}
const ViewerHandler = {
key: "Viewer",
handler: handler$2
};
const MetadataKey$1 = Symbol("Link");
function Link() {
return function(target, key) {
let list = Reflect.getMetadata(MetadataKey$1, target) || [];
list = list.slice();
const hasItem = list.find((k) => k === key);
if (!hasItem)
list.push(key);
Reflect.defineMetadata(MetadataKey$1, list, target);
};
}
function handler$1(targetThis, setupReturn) {
const list = getProtoMetadata(targetThis, MetadataKey$1);
if (!list || !list.length)
return;
for (const item of list) {
if (setupReturn) {
setupReturn[item] = vue.ref();
Object.defineProperty(targetThis, item, {
enumerable: true,
configurable: true,
get() {
return setupReturn[item].value;
}
});
} else {
const instance = vue.getCurrentInstance();
Object.defineProperty(targetThis, item, {
enumerable: true,
configurable: true,
get() {
return instance == null ? void 0 : instance.refs[item];
}
});
}
}
}
const LinkHandler = {
key: "Link",
handler: handler$1
};
const MetadataKey = Symbol("Computed");
function Computed() {
return function(target, key) {
let list = Reflect.getMetadata(MetadataKey, target) || [];
list = list.slice();
const hasItem = list.find((k) => k === key);
if (!hasItem)
list.push(key);
Reflect.defineMetadata(MetadataKey, list, target);
};
}
function handler(targetThis, setupReturn) {
const list = getProtoMetadata(targetThis, MetadataKey, true);
if (!list || !list.length)
return;
for (const item of list) {
if (setupReturn) {
const desc = item.desc;
setupReturn[item.key] = vue.computed({
get: () => {
var _a2;
return (_a2 = desc.get) == null ? void 0 : _a2.call(targetThis);
},
set: (v) => {
var _a2;
return (_a2 = desc.set) == null ? void 0 : _a2.call(targetThis, v);
}
});
Object.defineProperty(targetThis, item.key, {
enumerable: desc == null ? void 0 : desc.enumerable,
configurable: true,
get() {
return setupReturn[item.key];
},
set(v) {
setupReturn[item.key].value = v;
}
});
} else {
const desc = item.desc;
const keyVal = vue.computed({
get: () => {
var _a2;
return (_a2 = desc.get) == null ? void 0 : _a2.call(targetThis);
},
set: (v) => {
var _a2;
return (_a2 = desc.set) == null ? void 0 : _a2.call(targetThis, v);
}
});
Object.defineProperty(targetThis, item.key, {
enumerable: desc == null ? void 0 : desc.enumerable,
configurable: true,
get() {
return keyVal.value;
},
set(v) {
keyVal.value = v;
}
});
}
}
}
const ComputedHandler = {
key: "Computed",
handler
};
var __decorate$6 = globalThis && globalThis.__decorate || function(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata$5 = globalThis && globalThis.__metadata || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var VueComponent_1;
exports.VueComponent = VueComponent_1 = class VueComponent {
constructor() {
this.setupReturn = {};
this.props = useProps();
this.context = useCtx();
this.context.expose(this);
if (this.render) {
VueComponent_1.handler.forEach((handler2) => handler2.handler(this));
} else {
this.setupReturn = getSetupReturn(this);
VueComponent_1.handler.forEach((handler2) => handler2.handler(this, this.setupReturn));
}
}
static get __vccOpts() {
if (this.__vccOpts__value)
return this.__vccOpts__value;
const CompConstructor = this;
const componentOptions = getComponentOptions(CompConstructor);
return this.__vccOpts__value = __spreadProps(__spreadValues(__spreadValues({}, CompConstructor), componentOptions), {
directives: CompConstructor.directives,
emits: (CompConstructor.emits || []).concat(getEmitsFromProps(componentOptions.props || {})),
props: creatProps(CompConstructor),
setup: (props, ctx) => {
let instance;
let setupReturn;
if (CompConstructor.resolveComponent) {
instance = CompConstructor.resolveComponent(CompConstructor);
} else {
instance = new CompConstructor();
}
getLifecycle(instance);
if (instance.render) {
setupReturn = instance.render.bind(instance);
} else {
setupReturn = __spreadValues(__spreadValues({}, instance), instance.setupReturn);
}
return setupReturn;
}
});
}
get $props() {
return this.props;
}
};
exports.VueComponent.handler = [ViewerHandler, PropHandler, LinkHandler, ComputedHandler];
exports.VueComponent = VueComponent_1 = __decorate$6([injectionJs.Injectable(), __metadata$5("design:paramtypes", [])], exports.VueComponent);
class VueService {
constructor() {
VueService.handler.forEach((handler2) => handler2.handler(this));
}
}
VueService.handler = [ViewerHandler, ComputedHandler];
const DIRECTIVE = new injectionJs.InjectionToken("DIRECTIVE");
var __decorate$5 = globalThis && globalThis.__decorate || function(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata$4 = globalThis && globalThis.__metadata || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param$4 = globalThis && globalThis.__param || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
let StartupDirective = class StartupDirective2 {
constructor(vue2, directive) {
this.vue = vue2;
if (directive) {
if (isArray(directive)) {
directive.map((item) => {
vue2.directive(item.name, item);
});
} else {
directive && vue2.directive(directive.name, directive);
}
}
}
};
StartupDirective = __decorate$5([injectionJs.Injectable(), __param$4(0, injectionJs.Inject(injectionJs.forwardRef(() => VUE_APP))), __param$4(1, injectionJs.Optional()), __param$4(1, injectionJs.Inject(DIRECTIVE)), __metadata$4("design:paramtypes", [Object, Object])], StartupDirective);
class DirectiveModule {
static forRoot() {
return {
providers: [],
vueModule: StartupDirective
};
}
}
const ROUTER_CONFIG = new injectionJs.InjectionToken("router-config");
const ROUTER_GUARD = new injectionJs.InjectionToken("router-guard ");
const RouterChildKey = Symbol("RouterChild");
function ModuleEmptyComponent(moduleConfig) {
return class Empty {
constructor() {
}
static get __vccOpts() {
const CompConstructor = this;
if (this.__vccOpts__value)
return this.__vccOpts__value;
return this.__vccOpts__value = {
setup: () => {
const parent = vue.inject(InjectorKey);
const module = moduleConfig;
module.providers.push(CompConstructor);
const childInject = parent.resolveAndCreateChild([...module.providers, ...module.startupModules]);
childInject.get(CompConstructor);
vue.provide(InjectorKey, childInject);
return () => moduleConfig.bootstrap ? vue.h(moduleConfig.bootstrap) : vue.createVNode(vueRouter.RouterView, null, null);
}
};
}
};
}
function bindModule(module, component) {
const moduleScanner = new VueModuleScanner();
const moduleConfig = moduleScanner.scanModule(module);
let emptyComponent = ModuleEmptyComponent(moduleConfig);
return {
component: injectionJs.Injectable()(emptyComponent)
};
}
function scannerRouterChildren(module) {
const moduleScanner = new VueModuleScanner();
const moduleConfig = moduleScanner.scanModule(module);
let routerChild = [];
moduleConfig.providers.map((item) => {
const child = Reflect.getOwnMetadata(RouterChildKey, item);
if (child) {
routerChild = child;
}
});
return routerChild;
}
function scannerRoutes(routes) {
return routes.map((_a2) => {
var _b2 = _a2, {
loadChildren,
children,
component
} = _b2, route = __objRest(_b2, [
"loadChildren",
"children",
"component"
]);
const _route = __spreadValues({}, route);
_route.component = component;
if (loadChildren) {
const {
component: emptyComponent
} = bindModule(loadChildren);
_route.children = scannerRoutes(scannerRouterChildren(loadChildren));
_route.component = emptyComponent;
}
if (children) {
_route.children = scannerRoutes(children);
}
return _route;
});
}
var __decorate$4 = globalThis && globalThis.__decorate || function(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata$3 = globalThis && globalThis.__metadata || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param$3 = globalThis && globalThis.__param || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
let CreateRouterGuard = class CreateRouterGuard2 {
constructor(_guard) {
this._guard = _guard;
}
register(router) {
if (isArray(this._guard)) {
this._guard.map((item) => {
item.beforeEach && router.beforeEach(item.beforeEach);
item.afterEach && router.afterEach(item.afterEach);
item.beforeResolve && router.beforeResolve(item.beforeResolve);
});
} else {
this._guard.beforeEach && router.beforeEach(this._guard.beforeEach);
this._guard.afterEach && router.afterEach(this._guard.afterEach);
this._guard.beforeResolve && router.beforeResolve(this._guard.beforeResolve);
}
}
};
CreateRouterGuard = __decorate$4([injectionJs.Injectable(), __param$3(0, injectionJs.Inject(injectionJs.forwardRef(() => ROUTER_GUARD))), __metadata$3("design:paramtypes", [Object])], CreateRouterGuard);
let EmptyRouterGuard = class EmptyRouterGuard2 {
};
EmptyRouterGuard = __decorate$4([injectionJs.Injectable()], EmptyRouterGuard);
var __decorate$3 = globalThis && globalThis.__decorate || function(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata$2 = globalThis && globalThis.__metadata || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param$2 = globalThis && globalThis.__param || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var _a$1;
let EvilVueRouter = class EvilVueRouter2 {
constructor(CreateRouterGuard3, vue2, routerConfig) {
this.CreateRouterGuard = CreateRouterGuard3;
this.vue = vue2;
this.routerConfig = routerConfig;
this.created();
}
created() {
if (this.routerConfig) {
const routes = __spreadProps(__spreadValues({}, this.routerConfig), {
routes: scannerRoutes(this.routerConfig.routes)
});
const appRouter = vueRouter.createRouter(routes);
this.CreateRouterGuard.register(appRouter);
this.vue.use(appRouter);
}
}
};
EvilVueRouter = __decorate$3([injectionJs.Injectable(), __param$2(1, injectionJs.Inject(injectionJs.forwardRef(() => VUE_APP))), __param$2(2, injectionJs.Inject(ROUTER_CONFIG)), __metadata$2("design:paramtypes", [typeof (_a$1 = typeof CreateRouterGuard !== "undefined" && CreateRouterGuard) === "function" ? _a$1 : Object, Object, Object])], EvilVueRouter);
function RouterChildDecorator(routes) {
return function(target) {
Reflect.defineMetadata(RouterChildKey, routes || [], target);
return target;
};
}
function RouterChild(routes) {
return RouterChildDecorator(routes)(class ChildClass {
});
}
var __decorate$2 = globalThis && globalThis.__decorate || function(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
exports.RouterService = class RouterService {
constructor() {
this.router = vueRouter.useRouter();
}
};
exports.RouterService = __decorate$2([injectionJs.Injectable()], exports.RouterService);
exports.RouteService = class RouteService {
constructor() {
this.route = vueRouter.useRoute();
}
};
exports.RouteService = __decorate$2([injectionJs.Injectable()], exports.RouteService);
class VueEvilRouterModule {
static forRoot(config) {
return {
providers: [{
useClass: EmptyRouterGuard,
provide: ROUTER_GUARD
}, CreateRouterGuard, {
provide: ROUTER_CONFIG,
useValue: config
}, exports.RouterService, exports.RouteService],
vueModule: EvilVueRouter
};
}
static forChild({
routes
}) {
return RouterChild(routes);
}
}
const HTTP_CLIENT_CONFIG = new injectionJs.InjectionToken("HttpClientConfig");
const defaultConfig = {};
var __decorate$1 = globalThis && globalThis.__decorate || function(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata$1 = globalThis && globalThis.__metadata || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param$1 = globalThis && globalThis.__param || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
const HTTP_INTERCEPTORS = new injectionJs.InjectionToken("HTTP_INTERCEPTORS");
const HTTP_INTERCEPTORS_LOGGER = new injectionJs.InjectionToken("HTTP_INTERCEPTORS_LOGGER");
exports.HttpInterceptorHandler = class HttpInterceptorHandler {
constructor(_interceptors) {
this._interceptors = _interceptors;
this._registeredInterceptors = [];
}
get registeredInterceptors() {
return this._registeredInterceptors;
}
register(httpClientInterceptors) {
const defaultError = (error) => console.error(error);
if (isArray(this._interceptors)) {
this._interceptors.forEach((interceptor) => {
if (interceptor.interceptRequest) {
this._registeredInterceptors.push(httpClientInterceptors.request.use(interceptor.interceptRequest, interceptor.interceptRequestError || defaultError));
}
if (interceptor.interceptResponse) {
this.registeredInterceptors.push(httpClientInterceptors.response.use(interceptor.interceptResponse, interceptor.interceptResponseError ? interceptor.interceptResponseError : defaultError));
}
});
} else {
if (this._interceptors.interceptRequest) {
httpClientInterceptors.request.use(this._interceptors.interceptRequest, this._interceptors.interceptRequestError ? this._interceptors.interceptRequestError : defaultError);
}
if (this._interceptors.interceptResponse) {
httpClientInterceptors.response.use(this._interceptors.interceptResponse, this._interceptors.interceptResponseError ? this._interceptors.interceptResponseError : defaultError);
}
}
}
};
exports.HttpInterceptorHandler = __decorate$1([injectionJs.Injectable(), __param$1(0, injectionJs.Optional()), __param$1(0, injectionJs.Inject(injectionJs.forwardRef(() => HTTP_INTERCEPTORS))), __metadata$1("design:paramtypes", [Object])], exports.HttpInterceptorHandler);
class NoopInterceptor {
interceptRequest(request) {
return request;
}
interceptResponse(response) {
return response;
}
}
let started = Date.now();
class Logger {
interceptRequest(config) {
started = Date.now();
return config;
}
interceptRequestError(error) {
console.group(` %c request error `, "color: white; font-size: q4px; background: #f5222d; padding: 3px");
console.log("%c params: ", "color: white; font-size: q4px; background: #FDE047; padding: 3px", error.config.data || error.config.params);
console.groupEnd();
}
interceptResponseError(config) {
const elapsed = Date.now() - started;
if (!config.config) {
console.group(` %c error `, "color: white; font-size: q4px; background: #f5222d; padding: 3px", ` ${elapsed} ms`);
console.groupEnd();
return;
}
console.group(` %c error ${config.config.method} /url:${config.config.url} `, "color: white; font-size: q4px; background: #f5222d; padding: 3px", ` ${elapsed} ms`);
console.log("%c params:", "color: white; font-size: q4px; background: #FDE047; padding: 3px", config.config.data || config.config.params);
console.log("%c response: ", "color: white; font-size: q4px; background: #FDE047; padding: 3px", config.data);
console.groupEnd();
return Promise.reject(config);
}
interceptResponse(config) {
const elapsed = Date.now() - started;
if (!config || !config.config) {
console.group(` %c error `, "color: white; font-size: q4px; background: #f5222d; padding: 3px", `${elapsed} ms`);
console.groupEnd();
return Promise.reject(config);
}
console.group(` %c success ${config.config.method}/url:${config.config.url} `, "color: white; font-size: q4px; background: #409EFF; padding: 3px", `${elapsed} ms`);
console.log("%c params: ", "color: white; font-size: q4px; background: #67C23A; padding: 3px", config.config.data || config.config.params);
console.log("%c response: ", "color: white; font-size: q4px; background: #67C23A; padding: 3px", config.data);
console.groupEnd();
return config;
}
}
var __decorate = globalThis && globalThis.__decorate || function(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = globalThis && globalThis.__metadata || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = globalThis && globalThis.__param || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var _a, _b;
exports.HttpClient = class HttpClient {
constructor(interceptorHandler, logger, config) {
this.interceptorHandler = interceptorHandler;
this.logger = logger;
this.moduleService = true;
this.LoggerInterceptorRequest = null;
this.LoggerInterceptorResponse = null;
this.axiosInstance = axios__default["default"].create(__spreadValues(__spreadValues({}, defaultConfig), config));
this.interceptorHandler.register(this.axiosInstance.interceptors);
}
showLog() {
this.LoggerInterceptorRequest = this.axiosInstance.interceptors.request.use(this.logger.interceptRequest, this.logger.interceptRequestError);
this.LoggerInterceptorResponse = this.axiosInstance.interceptors.response.use(this.logger.interceptResponse, this.logger.interceptResponseError);
}
hiddenLog() {
this.axiosInstance.interceptors.request.eject(this.LoggerInterceptorRequest);
this.axiosInstance.interceptors.request.eject(this.LoggerInterceptorResponse);
}
get defaults() {
return this.axiosInstance.defaults;
}
get interceptors() {
return this.axiosInstance.interceptors;
}
request(config) {
return this.axiosInstance.request(config);
}
get(url, config) {
return this.axiosInstance.get(url, config);
}
head(url, config) {
return this.axiosInstance.head(url, config);
}
post(url, data, config) {
return this.axiosInstance.post(url, data, config);
}
put(url, data, config) {
return this.axiosInstance.put(url, data, config);
}
patch(url, data, config) {
return this.axiosInstance.patch(url, data, config);
}
delete(url, config) {
return this.axiosInstance.delete(url, config);
}
};
exports.HttpClient.defaults = axios__default["default"].defaults;
exports.HttpClient.interceptors = axios__default["default"].interceptors;
exports.HttpClient = __decorate([injectionJs.Injectable(), __param(1, injectionJs.Optional()), __param(1, injectionJs.Inject(HTTP_INTERCEPTORS_LOGGER)), __param(2, injectionJs.Optional()), __param(2, injectionJs.Inject(HTTP_CLIENT_CONFIG)), __metadata("design:paramtypes", [typeof (_a = typeof exports.HttpInterceptorHandler !== "undefined" && exports.HttpInterceptorHandler) === "function" ? _a : Object, typeof (_b = typeof Logger !== "undefined" && Logger) === "function" ? _b : Object, Object])], exports.HttpClient);
class HttpClientModule {
static forRoot(config) {
return {
providers: [{
useClass: NoopInterceptor,
provide: HTTP_INTERCEPTORS,
multi: true
}, {
useClass: Logger,
provide: HTTP_INTERCEPTORS_LOGGER
}, exports.HttpInterceptorHandler, {
provide: HTTP_CLIENT_CONFIG,
useValue: config
}],
vueModule: exports.HttpClient
};
}
}
function registerHttpClientProviders(config) {
return [{
useClass: NoopInterceptor,
provide: HTTP_INTERCEPTORS
}, exports.HttpInterceptorHandler, {
provide: HTTP_CLIENT_CONFIG,
useValue: config
}, exports.HttpClient];
}
exports.APP_INITIALIZER = APP_INITIALIZER;
exports.Component = Component;
exports.Computed = Computed;
exports.DIRECTIVE = DIRECTIVE;
exports.DirectiveModule = DirectiveModule;
exports.HTTP_CLIENT_CONFIG = HTTP_CLIENT_CONFIG;
exports.HTTP_INTERCEPTORS = HTTP_INTERCEPTORS;
exports.HTTP_INTERCEPTORS_LOGGER = HTTP_INTERCEPTORS_LOGGER;
exports.HttpClientModule = HttpClientModule;
exports.InjectorKey = InjectorKey;
exports.Link = Link;
exports.ModuleBootstrapMetadataKey = ModuleBootstrapMetadataKey;
exports.ModuleDeclarationsMetadataKey = ModuleDeclarationsMetadataKey;
exports.ModuleImportsMetadataKey = ModuleImportsMetadataKey;
exports.ModuleProvidersMetadataKey = ModuleProvidersMetadataKey;
exports.NoopInterceptor = NoopInterceptor;
exports.Prop = Prop;
exports.ROUTER_CONFIG = ROUTER_CONFIG;
exports.ROUTER_GUARD = ROUTER_GUARD;
exports.VUE_APP = VUE_APP;
exports.VUE_APP_INIT_STARTUP = VUE_APP_INIT_STARTUP;
exports.Viewer = Viewer;
exports.VueEvilRouterModule = VueEvilRouterModule;
exports.VueFactory = VueFactory;
exports.VueModule = VueModule;
exports.VueService = VueService;
exports.bootstrapModule = bootstrapModule;
exports.defaultConfig = defaultConfig;
exports.registerHttpClientProviders = registerHttpClientProviders;
exports.vue_app = vue_app;
Object.keys(injectionJs).forEach(function(k) {
if (k !== "default" && !exports.hasOwnProperty(k))
Object.defineProperty(exports, k, {
enumerable: true,
get: function() {
return injectionJs[k];
}
});
});