UNPKG

@uiw-admin/plugins

Version:
60 lines 3.67 kB
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"; };