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.
terminal-cv/node_modules/@parcel/core/lib/ParcelConfig.schema.js

131 lines
3.4 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.validatePackageName = validatePackageName;
2 years ago
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;