@winner-fed/plugin-access
Version:
适配 access(权限)的 WinJS 插件,适用于 Vue3。
94 lines (93 loc) • 4.87 kB
JavaScript
"use strict";
var __webpack_require__ = {};
(()=>{
__webpack_require__.d = (exports1, definition)=>{
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
enumerable: true,
get: definition[key]
});
};
})();
(()=>{
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
})();
(()=>{
__webpack_require__.r = (exports1)=>{
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
value: 'Module'
});
Object.defineProperty(exports1, '__esModule', {
value: true
});
};
})();
var __webpack_exports__ = {};
__webpack_require__.r(__webpack_exports__);
__webpack_require__.d(__webpack_exports__, {
default: ()=>src
});
const external_node_fs_namespaceObject = require("node:fs");
const external_node_path_namespaceObject = require("node:path");
require("node:url");
const utils_namespaceObject = require("@winner-fed/utils");
const getCurrentDir = ()=>__dirname;
const ACCESS_TEMPLATES_DIR = (0, external_node_path_namespaceObject.join)(getCurrentDir(), '../templates');
const DIR_NAME = 'plugin-access';
const src = (api)=>{
api.describe({
key: 'access',
config: {
schema ({ zod }) {
return zod.object({
roles: zod.record(zod.string(), zod.array(zod.string())).describe("\u89D2\u8272\u4E0E\u6743\u9650\u6620\u5C04\u914D\u7F6E\u3002\u952E\u4E3A\u89D2\u8272\u540D\u79F0\uFF08\u5982 admin\u3001user\u3001guest\uFF09\uFF0C\u503C\u4E3A\u8BE5\u89D2\u8272\u62E5\u6709\u7684\u6743\u9650\u8DEF\u5F84\u6570\u7EC4\u3002\u652F\u6301\u901A\u914D\u7B26\u6A21\u5F0F\uFF08\u5982 /users/* \u5339\u914D\u6240\u6709\u7528\u6237\u5B50\u8DEF\u5F84\uFF09\u3002\u6743\u9650\u8DEF\u5F84\u7528\u4E8E\u8DEF\u7531\u548C\u7EC4\u4EF6\u7EA7\u522B\u7684\u8BBF\u95EE\u63A7\u5236\u3002").default({})
}).describe("WinJS \u6743\u9650\u63A7\u5236\u63D2\u4EF6\u914D\u7F6E\u3002\u63D0\u4F9B\u57FA\u4E8E\u89D2\u8272\u7684\u6743\u9650\u7BA1\u7406\u7CFB\u7EDF\uFF08RBAC\uFF09\uFF0C\u652F\u6301\u8DEF\u7531\u7EA7\u548C\u7EC4\u4EF6\u7EA7\u7684\u8BBF\u95EE\u63A7\u5236\uFF0C\u5305\u542B\u540C\u6B65\u5F02\u6B65\u6743\u9650\u68C0\u67E5\u3001\u8DEF\u5F84\u6A21\u5F0F\u5339\u914D\u7B49\u529F\u80FD\u3002").required();
}
},
enableBy: api.EnableBy.config
});
api.onGenerateFiles(()=>{
const { roles = {} } = api.userConfig.access || {};
const accessTpl = (0, external_node_fs_namespaceObject.readFileSync)((0, external_node_path_namespaceObject.join)(ACCESS_TEMPLATES_DIR, 'core.tpl'), 'utf-8');
api.writeTmpFile({
path: (0, external_node_path_namespaceObject.join)(DIR_NAME, 'index.ts'),
noPluginDir: true,
content: utils_namespaceObject.Mustache.render(accessTpl, {
roles: JSON.stringify(roles)
}),
context: {}
});
api.writeTmpFile({
path: (0, external_node_path_namespaceObject.join)(DIR_NAME, 'runtime.ts'),
noPluginDir: true,
content: (0, external_node_fs_namespaceObject.readFileSync)((0, external_node_path_namespaceObject.join)(ACCESS_TEMPLATES_DIR, 'runtime.tpl'), 'utf-8')
});
api.writeTmpFile({
path: (0, external_node_path_namespaceObject.join)(DIR_NAME, 'createComponent.ts'),
noPluginDir: true,
content: (0, external_node_fs_namespaceObject.readFileSync)((0, external_node_path_namespaceObject.join)(ACCESS_TEMPLATES_DIR, 'createComponent.tpl'), 'utf-8')
});
api.writeTmpFile({
path: (0, external_node_path_namespaceObject.join)(DIR_NAME, 'createDirective.ts'),
noPluginDir: true,
content: (0, external_node_fs_namespaceObject.readFileSync)((0, external_node_path_namespaceObject.join)(ACCESS_TEMPLATES_DIR, 'createDirective.tpl'), 'utf-8')
});
api.writeTmpFile({
path: (0, external_node_path_namespaceObject.join)(DIR_NAME, 'types.d.ts'),
noPluginDir: true,
content: (0, external_node_fs_namespaceObject.readFileSync)((0, external_node_path_namespaceObject.join)(ACCESS_TEMPLATES_DIR, 'types.d.ts'), 'utf-8')
});
});
api.addRuntimePluginKey(()=>[
'access'
]);
api.addRuntimePlugin(()=>[
`${api.paths.absTmpPath}/${DIR_NAME}/runtime.ts`
]);
};
exports["default"] = __webpack_exports__["default"];
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
"default"
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
Object.defineProperty(exports, '__esModule', {
value: true
});