@sprucelabs/spruce-templates
Version:
Templates used for code generation in skills!
38 lines (37 loc) • 1.53 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const uniq_1 = __importDefault(require("lodash/uniq"));
const uniqWith_1 = __importDefault(require("lodash/uniqWith"));
const importExtractorUtil = {
extractFieldImports(fields) {
const imports = fields.map((item) => ({
package: item.package,
importAs: item.importAs,
namePascal: item.namePascal,
}));
const uniqueImports = (0, uniqWith_1.default)(imports, (i1, i2) => i1.package === i2.package && i1.importAs === i2.importAs);
const schemaName = uniqueImports.find((i) => i.importAs.toLowerCase() === 'schema');
if (schemaName) {
throw new Error(`${schemaName.namePascal} has importAs="Schema", which is a reserved word`);
}
const aliases = {};
uniqueImports.forEach((item) => {
if (item.importAs in aliases) {
throw new Error(`${item.namePascal} has a public importAs="${item.importAs}"`);
}
});
return uniqueImports;
},
extractSchemaImports(schemas) {
const imports = [];
schemas.forEach((schema) => {
var _a;
imports.push(...((_a = schema.imports) !== null && _a !== void 0 ? _a : []));
});
return (0, uniq_1.default)(imports);
},
};
exports.default = importExtractorUtil;