UNPKG

@anansi/generator-js

Version:
39 lines (38 loc) 8.99 kB
import _JSON$parse from "core-js-pure/stable/json/parse.js"; import ejs from 'ejs'; import { resolve } from 'import-meta-resolve'; import pacote from 'pacote'; import Generator from 'yeoman-generator'; export class BetterGenerator extends Generator { constructor(args, options, features) { // fix broken logic in path combining in yeoman-generator if (options.resolved?.startsWith('file://')) options.resolved = options.resolved.substring(7); super(typeof args === 'string' ? [args] : args, options, features); // environment will let us work from correct directory when copying files //this.fs = this.env.sharedFs as any; this.fs.extendJSONTpl = (from, to, context, templateOptions, ...extendArgs) => { const input = ejs.render(this.fs.read(from) ?? '', context || this.config.getAll(), templateOptions); this.fs.extendJSON(to, _JSON$parse(input), ...extendArgs); }; this.fs.readJSONTpl = (from, context, templateOptions) => { const input = ejs.render(this.fs.read(from) ?? '', context || this.config.getAll(), templateOptions); return _JSON$parse(input); }; } async addPeers(pkgName, exclude = [], deptype = 'dependencies') { const manifest = await pacote.manifest(pkgName); if (!manifest) { return undefined; } const peers = Object.fromEntries(Object.entries(manifest?.peerDependencies ?? {}).filter(([pkg, _version]) => !exclude.includes(pkg))); const funcKey = `add${capitalize(deptype)}`; await this[funcKey](peers); } } const capitalize = s => { return s.charAt(0).toUpperCase() + s.slice(1); }; export function resolvePath(path, url) { return resolve(path, url).substring(7); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlanMiLCJyZXNvbHZlIiwicGFjb3RlIiwiR2VuZXJhdG9yIiwiQmV0dGVyR2VuZXJhdG9yIiwiY29uc3RydWN0b3IiLCJhcmdzIiwib3B0aW9ucyIsImZlYXR1cmVzIiwicmVzb2x2ZWQiLCJzdGFydHNXaXRoIiwic3Vic3RyaW5nIiwiZnMiLCJleHRlbmRKU09OVHBsIiwiZnJvbSIsInRvIiwiY29udGV4dCIsInRlbXBsYXRlT3B0aW9ucyIsImV4dGVuZEFyZ3MiLCJpbnB1dCIsInJlbmRlciIsInJlYWQiLCJjb25maWciLCJnZXRBbGwiLCJleHRlbmRKU09OIiwiX0pTT04kcGFyc2UiLCJyZWFkSlNPTlRwbCIsImFkZFBlZXJzIiwicGtnTmFtZSIsImV4Y2x1ZGUiLCJkZXB0eXBlIiwibWFuaWZlc3QiLCJ1bmRlZmluZWQiLCJwZWVycyIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwiZW50cmllcyIsInBlZXJEZXBlbmRlbmNpZXMiLCJmaWx0ZXIiLCJwa2ciLCJfdmVyc2lvbiIsImluY2x1ZGVzIiwiZnVuY0tleSIsImNhcGl0YWxpemUiLCJzIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInJlc29sdmVQYXRoIiwicGF0aCIsInVybCJdLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZWpzIGZyb20gJ2Vqcyc7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAnaW1wb3J0LW1ldGEtcmVzb2x2ZSc7XG5pbXBvcnQgdHlwZSB7XG4gIE1lbUZzRWRpdG9yLFxuICBNZW1Gc0VkaXRvckZpbGUsXG4gIFZpbnlsTWVtRnNFZGl0b3JGaWxlLFxufSBmcm9tICdtZW0tZnMtZWRpdG9yJztcbmltcG9ydCBwYWNvdGUgZnJvbSAncGFjb3RlJztcbmltcG9ydCBHZW5lcmF0b3IsIHsgQmFzZUZlYXR1cmVzLCBCYXNlT3B0aW9ucyB9IGZyb20gJ3llb21hbi1nZW5lcmF0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZzRWRpdG9yPFxuICBFZGl0b3JGaWxlIGV4dGVuZHMgTWVtRnNFZGl0b3JGaWxlID0gVmlueWxNZW1Gc0VkaXRvckZpbGUsXG4+IGV4dGVuZHMgTWVtRnNFZGl0b3I8RWRpdG9yRmlsZT4ge1xuICBleHRlbmRKU09OVHBsKFxuICAgIGZyb206IHN0cmluZyxcbiAgICB0bzogc3RyaW5nLFxuICAgIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHRlbXBsYXRlT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgLi4uZXh0ZW5kQXJnczogYW55W11cbiAgKTogdm9pZDtcbiAgcmVhZEpTT05UcGwoXG4gICAgZnJvbTogc3RyaW5nLFxuICAgIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHRlbXBsYXRlT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICk6IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIEJldHRlckdlbmVyYXRvcjxcbiAgTyBleHRlbmRzIEJhc2VPcHRpb25zID0gQmFzZU9wdGlvbnMsXG4gIEYgZXh0ZW5kcyBCYXNlRmVhdHVyZXMgPSBCYXNlRmVhdHVyZXMsXG4+IGV4dGVuZHMgR2VuZXJhdG9yPFJlY29yZDxzdHJpbmcsIGFueT4sIE8sIEY+IHtcbiAgZGVjbGFyZSBmczogRnNFZGl0b3I7XG5cbiAgY29uc3RydWN0b3IoYXJnczogc3RyaW5nIHwgc3RyaW5nW10sIG9wdGlvbnM6IE8sIGZlYXR1cmVzOiBGKSB7XG4gICAgLy8gZml4IGJyb2tlbiBsb2dpYyBpbiBwYXRoIGNvbWJpbmluZyBpbiB5ZW9tYW4tZ2VuZXJhdG9yXG4gICAgaWYgKG9wdGlvbnMucmVzb2x2ZWQ/LnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSlcbiAgICAgIG9wdGlvbnMucmVzb2x2ZWQgPSBvcHRpb25zLnJlc29sdmVkLnN1YnN0cmluZyg3KTtcbiAgICBzdXBlcih0eXBlb2YgYXJncyA9PT0gJ3N0cmluZycgPyBbYXJnc10gOiBhcmdzLCBvcHRpb25zLCBmZWF0dXJlcyk7XG5cbiAgICAvLyBlbnZpcm9ubWVudCB3aWxsIGxldCB1cyB3b3JrIGZyb20gY29ycmVjdCBkaXJlY3Rvcnkgd2hlbiBjb3B5aW5nIGZpbGVzXG4gICAgLy90aGlzLmZzID0gdGhpcy5lbnYuc2hhcmVkRnMgYXMgYW55O1xuICAgIHRoaXMuZnMuZXh0ZW5kSlNPTlRwbCA9IChcbiAgICAgIGZyb206IHN0cmluZyxcbiAgICAgIHRvOiBzdHJpbmcsXG4gICAgICBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgIHRlbXBsYXRlT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICAuLi5leHRlbmRBcmdzOiBhbnlbXVxuICAgICkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQ6IHN0cmluZyA9IGVqcy5yZW5kZXIoXG4gICAgICAgIHRoaXMuZnMucmVhZChmcm9tKSA/PyAnJyxcbiAgICAgICAgY29udGV4dCB8fCB0aGlzLmNvbmZpZy5nZXRBbGwoKSxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zLFxuICAgICAgKSBhcyBhbnk7XG4gICAgICB0aGlzLmZzLmV4dGVuZEpTT04odG8sIEpTT04ucGFyc2UoaW5wdXQpLCAuLi5leHRlbmRBcmdzKTtcbiAgICB9O1xuXG4gICAgdGhpcy5mcy5yZWFkSlNPTlRwbCA9IChcbiAgICAgIGZyb206IHN0cmluZyxcbiAgICAgIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgICAgdGVtcGxhdGVPcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGlucHV0OiBzdHJpbmcgPSBlanMucmVuZGVyKFxuICAgICAgICB0aGlzLmZzLnJlYWQoZnJvbSkgPz8gJycsXG4gICAgICAgIGNvbnRleHQgfHwgdGhpcy5jb25maWcuZ2V0QWxsKCksXG4gICAgICAgIHRlbXBsYXRlT3B0aW9ucyxcbiAgICAgICkgYXMgYW55O1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoaW5wdXQpO1xuICAgIH07XG4gIH1cblxuICBhc3luYyBhZGRQZWVycyhcbiAgICBwa2dOYW1lOiBzdHJpbmcsXG4gICAgZXhjbHVkZTogc3RyaW5nW10gPSBbXSxcbiAgICBkZXB0eXBlOiAnZGVwZW5kZW5jaWVzJyB8ICdkZXZEZXBlbmRlbmNpZXMnID0gJ2RlcGVuZGVuY2llcycsXG4gICkge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gYXdhaXQgcGFjb3RlLm1hbmlmZXN0KHBrZ05hbWUpO1xuICAgIGlmICghbWFuaWZlc3QpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHBlZXJzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMobWFuaWZlc3Q/LnBlZXJEZXBlbmRlbmNpZXMgPz8ge30pLmZpbHRlcihcbiAgICAgICAgKFtwa2csIF92ZXJzaW9uXSkgPT4gIWV4Y2x1ZGUuaW5jbHVkZXMocGtnKSxcbiAgICAgICksXG4gICAgKTtcbiAgICBjb25zdCBmdW5jS2V5ID0gYGFkZCR7Y2FwaXRhbGl6ZShkZXB0eXBlKX1gIGFzIGNvbnN0O1xuICAgIGF3YWl0IHRoaXNbZnVuY0tleV0ocGVlcnMpO1xuICB9XG59XG5cbmNvbnN0IGNhcGl0YWxpemUgPSA8VCBleHRlbmRzIHN0cmluZz4oczogVCk6IENhcGl0YWxpemU8VD4gPT4ge1xuICByZXR1cm4gKHMuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzLnNsaWNlKDEpKSBhcyBhbnk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhdGgocGF0aDogc3RyaW5nLCB1cmw6IHN0cmluZykge1xuICByZXR1cm4gcmVzb2x2ZShwYXRoLCB1cmwpLnN1YnN0cmluZyg3KTtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLEdBQUcsTUFBTSxLQUFLO0FBQ3JCLFNBQVNDLE9BQU8sUUFBUSxxQkFBcUI7QUFNN0MsT0FBT0MsTUFBTSxNQUFNLFFBQVE7QUFDM0IsT0FBT0Ms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