typed-utilities
Version:
Strongly typed general purpose utilities
25 lines (19 loc) • 1.14 kB
JavaScript
;
var _range = require("../range");
const genAsyncResultJoinType = k => {
const t = (0, _range.range)(k).map(k => `V${k + 1}`);
return `${k === 0 ? `` : `<${t.join(`, `)}>(values: readonly [${t.map(t => `AsyncResult<${t}>`).join(`, `)}]): AsyncResult<[${t.join(`, `)}], AggregateError>;`}`;
};
const genAsyncResultJoinTypes = n => [`type Join = {`, ...(0, _range.range)(n + 1).map(k => ` ${genAsyncResultJoinType(k)}`), `<V>(values: readonly AsyncResult<V>[]): AsyncResult<V[], AggregateError>;`, `};`].join(`\n`);
const genResolveAllType = k => {
const t = (0, _range.range)(k).map(k => `T${k + 1}`);
return `${k === 0 ? `` : `<${t.join(`, `)}>`}(values: readonly [${t.map(t => `Promise<${t}>`).join(`, `)}]): Promise<[${t}]>;`;
};
const genResolveAllTypes = n => [`type ResolveAll = {`, ...(0, _range.range)(n + 1).map(k => ` ${genResolveAllType(k)}`), `};`].join(`\n`);
if (require.main === module) {
console.log(`------- resolveAll --------`);
console.log(genResolveAllTypes(20));
console.log(`---------- Join -----------`);
console.log(genAsyncResultJoinTypes(20));
}
//# sourceMappingURL=codegen.js.map