Son CV dans un terminal web en Javascript!
https://terminal-cv.gregandev.fr
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.
131 lines
3.4 KiB
131 lines
3.4 KiB
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.validatePackageName = validatePackageName;
|
|
exports.default = void 0;
|
|
|
|
function _assert() {
|
|
const data = _interopRequireDefault(require("assert"));
|
|
|
|
_assert = function () {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
// Reasoning behind this validation:
|
|
// https://github.com/parcel-bundler/parcel/issues/3397#issuecomment-521353931
|
|
function validatePackageName(pkg, pluginType, key) {
|
|
// $FlowFixMe
|
|
if (!pkg) {
|
|
return;
|
|
}
|
|
|
|
(0, _assert().default)(typeof pkg === 'string', `"${key}" must be a string`);
|
|
|
|
if (pkg.startsWith('@parcel')) {
|
|
(0, _assert().default)(pkg.replace(/^@parcel\//, '').startsWith(`${pluginType}-`), `Official parcel ${pluginType} packages must be named according to "@parcel/${pluginType}-{name}"`);
|
|
} else if (pkg.startsWith('@')) {
|
|
let [scope, name] = pkg.split('/');
|
|
(0, _assert().default)(name.startsWith(`parcel-${pluginType}-`) || name === `parcel-${pluginType}`, `Scoped parcel ${pluginType} packages must be named according to "${scope}/parcel-${pluginType}[-{name}]"`);
|
|
} else {
|
|
(0, _assert().default)(pkg.startsWith(`parcel-${pluginType}-`), `Parcel ${pluginType} packages must be named according to "parcel-${pluginType}-{name}"`);
|
|
}
|
|
}
|
|
|
|
const validatePluginName = (pluginType, key) => {
|
|
return val => {
|
|
// allow plugin spread...
|
|
if (val === '...') return;
|
|
|
|
try {
|
|
validatePackageName(val, pluginType, key);
|
|
} catch (e) {
|
|
return e.message;
|
|
}
|
|
};
|
|
};
|
|
|
|
const validateExtends = val => {
|
|
// allow relative paths...
|
|
if (val.startsWith('.')) return;
|
|
|
|
try {
|
|
validatePackageName(val, 'config', 'extends');
|
|
} catch (e) {
|
|
return e.message;
|
|
}
|
|
};
|
|
|
|
const pipelineSchema = (pluginType, key) => {
|
|
return {
|
|
type: 'array',
|
|
items: {
|
|
type: 'string',
|
|
__validate: validatePluginName(pluginType, key)
|
|
}
|
|
};
|
|
};
|
|
|
|
const mapPipelineSchema = (pluginType, key) => {
|
|
return {
|
|
type: 'object',
|
|
properties: {},
|
|
additionalProperties: pipelineSchema(pluginType, key)
|
|
};
|
|
};
|
|
|
|
const mapStringSchema = (pluginType, key) => {
|
|
return {
|
|
type: 'object',
|
|
properties: {},
|
|
additionalProperties: {
|
|
type: 'string',
|
|
__validate: validatePluginName(pluginType, key)
|
|
}
|
|
};
|
|
};
|
|
|
|
var _default = {
|
|
type: 'object',
|
|
properties: {
|
|
extends: {
|
|
oneOf: [{
|
|
type: 'string',
|
|
__validate: validateExtends
|
|
}, {
|
|
type: 'array',
|
|
items: {
|
|
type: 'string',
|
|
__validate: validateExtends
|
|
}
|
|
}]
|
|
},
|
|
bundler: {
|
|
type: 'string',
|
|
__validate: validatePluginName('bundler', 'bundler')
|
|
},
|
|
resolvers: pipelineSchema('resolver', 'resolvers'),
|
|
transformers: mapPipelineSchema('transformer', 'transformers'),
|
|
validators: mapPipelineSchema('validator', 'validators'),
|
|
namers: pipelineSchema('namer', 'namers'),
|
|
packagers: mapStringSchema('packager', 'packagers'),
|
|
optimizers: mapPipelineSchema('optimizer', 'optimizers'),
|
|
compressors: mapPipelineSchema('compressor', 'compressors'),
|
|
reporters: pipelineSchema('reporter', 'reporters'),
|
|
runtimes: pipelineSchema('runtime', 'runtimes'),
|
|
filePath: {
|
|
type: 'string'
|
|
},
|
|
resolveFrom: {
|
|
type: 'string'
|
|
}
|
|
},
|
|
additionalProperties: false
|
|
};
|
|
exports.default = _default; |