You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
3.8 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
var _path = require("path");
var _fs = require("fs");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
const debug = require('debug')('umi-plugin-pro-block');
function _default(api, opts = {}) {
const paths = api.paths,
_api$userConfig = api.userConfig,
userConfig = _api$userConfig === void 0 ? {} : _api$userConfig;
api.describe({
key: 'ProBlockOption',
config: {
default: {
moveMock: true,
moveService: true,
modifyRequest: true,
autoAddMenu: true
},
schema(joi) {
return joi.string();
},
onChange: api.ConfigChangeType.regenerateTmpFiles
}
});
debug('options', opts);
api.register({
key: 'beforeBlockWriting',
fn({
sourcePath,
blockPath
}) {
const utilsPath = (0, _path.join)(paths.absSrcPath, `utils`);
hasUtil = (0, _fs.existsSync)((0, _path.join)(utilsPath, 'request.js')) || (0, _fs.existsSync)((0, _path.join)(utilsPath, 'request.ts'));
hasService = (0, _fs.existsSync)((0, _path.join)(sourcePath, './src/service.js'));
newFileName = blockPath.replace(/^\//, '').replace(/\//g, '');
debug('beforeBlockWriting... hasUtil:', hasUtil, 'hasService:', hasService, 'newFileName:', newFileName);
}
});
let hasUtil, hasService, newFileName;
api.register({
key: '_modifyBlockTarget',
fn(target, {
sourceName
}) {
if (sourceName === '_mock.js' && opts.moveMock !== false) {
// src/pages/test/t/_mock.js -> mock/test-t.js
return (0, _path.join)(paths.cwd, 'mock', `${newFileName}.js`);
}
if (sourceName === 'service.js' && hasService && opts.moveService !== false) {
// src/pages/test/t/service.js -> services/test.t.js
return (0, _path.join)(paths.absSrcPath, userConfig.singular ? 'service' : 'services', `${newFileName}.js`);
}
return target;
}
});
api.register({
key: '_modifyBlockTarget',
fn(content) {
if (hasUtil && opts.modifyRequest !== false) {
content = content.replace(/[\'\"]umi\-request[\'\"]/g, `'@/util${userConfig.singular ? '' : 's'}/request'`);
}
if (hasService && opts.moveService !== false) {
content = content.replace(/[\'\"][\.\/]+service[\'\"]/g, `'@/service${userConfig.singular ? '' : 's'}/${newFileName}'`);
}
return content;
}
});
api.register({
key: '_modifyBlockNewRouteConfig',
fn(memo) {
if (opts.autoAddMenu === false) {
return memo;
}
const icon = memo.path.indexOf('/') === 0 ? 'smile' : undefined;
memo = _objectSpread({
name: memo.name || memo.path.split('/').pop(),
icon
}, memo);
return memo;
}
});
}