UNPKG

@jplorg/jpl

Version:
69 lines (68 loc) 2.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _library = require("../../../library"); var _default = exports.default = { /** { optional: boolean } */ async op(runtime, input, target, params, scope, next) { const vt = runtime.unwrapValue(target); const tt = runtime.type(vt); switch (tt) { case 'object': { const items = Object.entries(vt); const outputs = await runtime.muxAsync([items], async item => runtime.muxAsync([await next(item[1] ?? null)], output => { if (output === undefined) return item; return [item[0], output]; })); return runtime.muxAsync([(0, _library.applyCombinations)(items, outputs)], results => { if (items === results) return target; return runtime.alterValue(target, () => Object.fromEntries(results)); }); } case 'array': { const items = vt; const outputs = await runtime.muxAsync([items], async item => runtime.muxAsync([await next(item ?? null)], output => { if (output === undefined) return item; return output; })); return runtime.muxAsync([(0, _library.applyCombinations)(items, outputs)], results => { if (items === results) return target; return runtime.alterValue(target, () => results); }); } case 'string': { const items = [...vt]; const outputs = await runtime.muxAsync([items], async item => runtime.muxAsync([await next(item)], output => { if (output === undefined) return item; const r = runtime.unwrapValue(output); const tr = runtime.type(r); switch (tr) { case 'null': case 'string': return r ?? ' '; default: } throw new _library.JPLTypeError('cannot assign %s (%*<100v) to string (%*<100v)', tr, r, vt); })); return runtime.muxAsync([(0, _library.applyCombinations)(items, outputs)], results => { if (items === results) return target; return runtime.alterValue(target, () => results.join('')); }); } default: } if (params.optional) return [undefined]; throw new _library.JPLTypeError('cannot iterate over %s (%*<100v) (assignment)', tt, vt); }, /** { optional: boolean } */ map(runtime, params) { return { optional: runtime.assertType(params.optional, 'boolean') }; } };