@uiw-admin/plugins
Version:
60 lines • 3.67 kB
JavaScript
import path from 'path';
// 模板
export default ((str, isTS) => {
if (!isTS) {
return "\nimport {\n init,\n Models,\n Model,\n RematchRootState,\n RematchDispatch,\n createModel,\n} from '@rematch/core';\nimport loading from '@rematch/loading';\n" + str.importStr + "\n" + (!str.lazyLoad ? str.createModelsStr : '') + "\nexport const models = {\n " + (!str.lazyLoad ? str.models : '') + "\n}\n\nexport const store = init({\n models,\n plugins: [loading()],\n});\n\nexport const { dispatch, addModel } = store;\n\n";
}
return "\n// @ts-ignore\nimport {\n init,\n Models,\n Model,\n RematchRootState,\n RematchDispatch,\n createModel,\n} from '@rematch/core';\nimport loading, { ExtraModelsFromLoading } from '@rematch/loading';\n" + str.importStr + "\n" + (!str.lazyLoad ? str.createModelsStr : '') + "\nexport const models = {\n " + (!str.lazyLoad ? str.models : '') + "\n}\nexport interface RootModel extends Models<RootModel> {\n " + str.typeModels + "\n}\nexport type FullModel = ExtraModelsFromLoading<RootModel>\n\nexport const store = init<RootModel, FullModel>({\n models,\n plugins: [loading()],\n});\n\nexport const { dispatch, addModel } = store;\nexport type Store = typeof store;\nexport type AddModel = typeof addModel;\nexport type Dispatch = RematchDispatch<RootModel>;\nexport type RootState = RematchRootState<RootModel, FullModel>;\nexport type ModelDefault<T = any> = Model<RootModel, T>;\n\n";
});
export var createModelsTempStr = (modelArr, lazyLoad, isTS) => {
var importStr = '';
var lazyModelsStr = '';
var typeModels = '';
var addModelStr = '';
var createModelsStr = '';
var models = '';
var Reg = new RegExp("^" + path.resolve(process.cwd(), 'src/models/'));
modelArr.forEach((item, index) => {
var {
path: paths,
filename,
modelName,
isCreateModel
} = item;
var pathUrls = ("" + paths).replace(/\\/g, '/').replace(/\.(js|ts)/, '');
var names = modelName || filename;
importStr = importStr + ("import " + names + "Model" + index + " from \"" + pathUrls + "\";\n");
if (lazyLoad && Reg.test(item.path) || !lazyLoad) {
lazyModelsStr = lazyModelsStr + ("const " + names + "Model" + index + " = (await import(\"" + pathUrls + "\")).default;\n");
if (isCreateModel) {
addModelStr = addModelStr + ("store.addModel({ name: \"" + names + "\", ..." + names + "Model" + index + " });\n");
createModelsStr = createModelsStr + ("const " + names + "Model = " + names + "Model" + index + ";\n");
} else {
if (isTS) {
addModelStr = addModelStr + ("store.addModel({ name: \"" + names + "\", ...createModel<RootModel>()(" + names + "Model" + index + ") });\n");
createModelsStr = createModelsStr + ("const " + names + "Model = createModel<RootModel>()(" + names + "Model" + index + ");\n");
} else {
addModelStr = addModelStr + ("store.addModel({ name: \"" + names + "\", ...createModel()(" + names + "Model" + index + ") });\n");
createModelsStr = createModelsStr + ("const " + names + "Model = createModel()(" + names + "Model" + index + ");\n");
}
}
models = models + (names + ":" + names + "Model,\n");
}
if (isTS) {
typeModels = typeModels + (" " + names + ":typeof " + names + "Model" + index + ",\n");
}
});
return {
importStr,
lazyModelsStr,
typeModels,
addModelStr,
models,
lazyLoad,
createModelsStr
};
};
export var createTemp = (pathUrl, filename) => {
var path = ("" + pathUrl).replace(/\\/g, '/');
return "createModels(require(\"" + path + "\").default,\"" + filename + "\");\n";
};