parseman 0.51.0 → 0.51.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analysis/diagnostics.js +48 -15
- package/dist/analysis/diagnostics.js.map +1 -1
- package/dist/cli/index.js +50 -17
- package/dist/cli/index.js.map +1 -1
- package/dist/combinators/token.d.ts +8 -8
- package/dist/combinators/token.d.ts.map +1 -1
- package/dist/coverage.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +59 -21
- package/dist/index.js.map +1 -1
- package/dist/plugin/evaluator.d.ts.map +1 -1
- package/dist/plugin/index.js +59 -22
- package/dist/plugin/index.js.map +1 -1
- package/dist/spec/index.js +27 -5
- package/dist/spec/index.js.map +1 -1
- package/dist/table/assemble.d.ts.map +1 -1
- package/dist/table/emit-assembly.d.ts.map +1 -1
- package/dist/table/encode-baseline.d.ts.map +1 -1
- package/dist/table/exec-baseline.d.ts.map +1 -1
- package/dist/table/exec.d.ts.map +1 -1
- package/dist/table/index.js +373 -362
- package/dist/table/index.js.map +2 -2
- package/dist/table/ops.d.ts +2 -0
- package/dist/table/ops.d.ts.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/analysis/duplication.ts +1 -1
- package/src/analysis/rebuild.ts +2 -2
- package/src/combinators/token.ts +46 -3
- package/src/compiler/ir-serialize.ts +11 -7
- package/src/coverage.ts +2 -3
- package/src/index.ts +1 -1
- package/src/plugin/evaluator.ts +7 -4
- package/src/table/assemble.ts +8 -3
- package/src/table/child-slots.ts +2 -2
- package/src/table/emit-assembly.ts +5 -3
- package/src/table/encode-baseline.ts +3 -2
- package/src/table/encode.ts +3 -3
- package/src/table/exec-baseline.ts +30 -4
- package/src/table/exec.ts +8 -3
- package/src/table/ops.ts +3 -1
- package/src/table/scalar-terminal.ts +5 -5
- package/src/table/site-labels.ts +2 -2
- package/src/types.ts +1 -1
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/plugin/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EACV,UAAU,EAAE,IAAI,EAMjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAInE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAmG5D,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI,EAAE,WAAW,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI,CAGrG;AAED;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAA;AAEjG,uGAAuG;AACvG,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAE9E;AAWD,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AACD,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAM3C,KAAK,gBAAgB,GAAG;IAAE,GAAG,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAAA;AAC1F,KAAK,gBAAgB,GAAG;IAAE,GAAG,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAAA;AAuHxE;;;;;;;;;;;;;;;yCAeyC;AACzC,wBAAgB,QAAQ,CAAC,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAM/F;
|
|
1
|
+
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/plugin/evaluator.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/index.js
CHANGED
|
@@ -5113,6 +5113,12 @@ function field(name, combinator) {
|
|
|
5113
5113
|
}
|
|
5114
5114
|
|
|
5115
5115
|
// src/combinators/token.ts
|
|
5116
|
+
function semanticLeafValue(_ctx, _input, _start, _end, value) {
|
|
5117
|
+
return value;
|
|
5118
|
+
}
|
|
5119
|
+
function sourceLeafValue(ctx, input, start, end, value) {
|
|
5120
|
+
return cstOutputHost(ctx.build) ? input.slice(start, end) : value;
|
|
5121
|
+
}
|
|
5116
5122
|
function token(root) {
|
|
5117
5123
|
const meta = {
|
|
5118
5124
|
firstSet: root._meta.firstSet,
|
|
@@ -5165,7 +5171,8 @@ function token(root) {
|
|
|
5165
5171
|
}
|
|
5166
5172
|
};
|
|
5167
5173
|
}
|
|
5168
|
-
function
|
|
5174
|
+
function makeLeaf(root, fn, sourceCstValue) {
|
|
5175
|
+
const cstValue = sourceCstValue ? sourceLeafValue : semanticLeafValue;
|
|
5169
5176
|
const meta = {
|
|
5170
5177
|
firstSet: root._meta.firstSet,
|
|
5171
5178
|
canMatchNewline: root._meta.canMatchNewline,
|
|
@@ -5174,7 +5181,12 @@ function leaf(root, fn) {
|
|
|
5174
5181
|
return {
|
|
5175
5182
|
_tag: "leaf",
|
|
5176
5183
|
_meta: meta,
|
|
5177
|
-
_def: {
|
|
5184
|
+
_def: {
|
|
5185
|
+
tag: "leaf",
|
|
5186
|
+
parser: root,
|
|
5187
|
+
fn,
|
|
5188
|
+
...sourceCstValue ? { cstValue: "source" } : {}
|
|
5189
|
+
},
|
|
5178
5190
|
parse(input, pos, ctx) {
|
|
5179
5191
|
const savedBuf = ctx._cstBuf;
|
|
5180
5192
|
const savedChildren = ctx._cstChildren;
|
|
@@ -5202,11 +5214,21 @@ function leaf(root, fn) {
|
|
|
5202
5214
|
}
|
|
5203
5215
|
if (!result.ok) return result;
|
|
5204
5216
|
const value = fn(result.value, result.span);
|
|
5205
|
-
if (wasCapturing) pushCstLeaf(ctx, {
|
|
5217
|
+
if (wasCapturing) pushCstLeaf(ctx, {
|
|
5218
|
+
_tag: "leaf",
|
|
5219
|
+
value: cstValue(ctx, input, pos, result.span.end, value),
|
|
5220
|
+
span: result.span
|
|
5221
|
+
});
|
|
5206
5222
|
return { ok: true, value, span: result.span };
|
|
5207
5223
|
}
|
|
5208
5224
|
};
|
|
5209
5225
|
}
|
|
5226
|
+
function leaf(root, fn) {
|
|
5227
|
+
return makeLeaf(root, fn, false);
|
|
5228
|
+
}
|
|
5229
|
+
function sourceLeaf(root, fn) {
|
|
5230
|
+
return makeLeaf(root, fn, true);
|
|
5231
|
+
}
|
|
5210
5232
|
|
|
5211
5233
|
// src/analysis/gating.ts
|
|
5212
5234
|
function childrenOf2(d) {
|
|
@@ -5698,6 +5720,7 @@ var OP_COV = 40;
|
|
|
5698
5720
|
var OP_SCOPE_PLAIN = 41;
|
|
5699
5721
|
var OP_LEX_BODY = 42;
|
|
5700
5722
|
var OP_LEX_PROGRAM = 43;
|
|
5723
|
+
var OP_SOURCE_LEAF = 44;
|
|
5701
5724
|
var OP_DISPATCH = 25;
|
|
5702
5725
|
var OP_ROUTED = 26;
|
|
5703
5726
|
var OP_NAMES = {
|
|
@@ -5716,6 +5739,7 @@ var OP_NAMES = {
|
|
|
5716
5739
|
[OP_NOT]: "NOT",
|
|
5717
5740
|
[OP_PEEK]: "PEEK",
|
|
5718
5741
|
[OP_LEAF]: "LEAF",
|
|
5742
|
+
[OP_SOURCE_LEAF]: "SOURCE_LEAF",
|
|
5719
5743
|
[OP_EMPTY]: "EMPTY",
|
|
5720
5744
|
[OP_LIT_TRACK]: "LIT_TRACK",
|
|
5721
5745
|
[OP_RX_TRACK]: "RX_TRACK",
|
|
@@ -7668,7 +7692,7 @@ var Encoder = class {
|
|
|
7668
7692
|
}
|
|
7669
7693
|
case "leaf": {
|
|
7670
7694
|
const child = this.node(d.parser).ip;
|
|
7671
|
-
return this.emit(OP_LEAF, this.fn(d.fn, d.fnSrc ?? null), child);
|
|
7695
|
+
return this.emit(d.cstValue === "source" ? OP_SOURCE_LEAF : OP_LEAF, this.fn(d.fn, d.fnSrc ?? null), child);
|
|
7672
7696
|
}
|
|
7673
7697
|
case "node": {
|
|
7674
7698
|
if (d.type === void 0) missingInferredType();
|
|
@@ -7893,6 +7917,7 @@ var Encoder = class {
|
|
|
7893
7917
|
case OP_WITHCTX:
|
|
7894
7918
|
case OP_XFORM:
|
|
7895
7919
|
case OP_LEAF:
|
|
7920
|
+
case OP_SOURCE_LEAF:
|
|
7896
7921
|
case OP_NODE:
|
|
7897
7922
|
case OP_NODE_TRACK:
|
|
7898
7923
|
return [ip + 2];
|
|
@@ -9102,6 +9127,7 @@ function childSlots(code, ip, out) {
|
|
|
9102
9127
|
case OP_NODE_TRACK:
|
|
9103
9128
|
case OP_FIELD:
|
|
9104
9129
|
case OP_LEAF:
|
|
9130
|
+
case OP_SOURCE_LEAF:
|
|
9105
9131
|
case OP_ARMGATE:
|
|
9106
9132
|
out.push(code[ip + 2]);
|
|
9107
9133
|
return true;
|
|
@@ -9210,7 +9236,7 @@ function transfer(code, ip, at, hostCst) {
|
|
|
9210
9236
|
if (at.tri === TRI_NONE && !at.buf) return at;
|
|
9211
9237
|
return { tri: TRI_NONE, buf: false, raw: RAW_UNKNOWN, cap: at.cap };
|
|
9212
9238
|
}
|
|
9213
|
-
if (op === OP_LEAF) {
|
|
9239
|
+
if (op === OP_LEAF || op === OP_SOURCE_LEAF) {
|
|
9214
9240
|
if (!at.buf) return at;
|
|
9215
9241
|
return { tri: at.tri, buf: false, raw: RAW_UNKNOWN, cap: at.cap };
|
|
9216
9242
|
}
|
|
@@ -9297,7 +9323,7 @@ function leadingScalarTerminal(code, ip, minDepth = 2, throughAttempt = true, th
|
|
|
9297
9323
|
depth++;
|
|
9298
9324
|
continue;
|
|
9299
9325
|
}
|
|
9300
|
-
if (op === OP_GATE || op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
|
|
9326
|
+
if (op === OP_GATE || op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
|
|
9301
9327
|
at = code[at + 2];
|
|
9302
9328
|
depth++;
|
|
9303
9329
|
continue;
|
|
@@ -9330,7 +9356,7 @@ function leadingScalarSequence(code, ip) {
|
|
|
9330
9356
|
at2 = code[at2 + 1];
|
|
9331
9357
|
continue;
|
|
9332
9358
|
}
|
|
9333
|
-
if (op === OP_GATE || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
|
|
9359
|
+
if (op === OP_GATE || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
|
|
9334
9360
|
at2 = code[at2 + 2];
|
|
9335
9361
|
continue;
|
|
9336
9362
|
}
|
|
@@ -9363,7 +9389,7 @@ function leadingScalarSequence(code, ip) {
|
|
|
9363
9389
|
at = code[at + 2];
|
|
9364
9390
|
continue;
|
|
9365
9391
|
}
|
|
9366
|
-
if (op === OP_GATE || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
|
|
9392
|
+
if (op === OP_GATE || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
|
|
9367
9393
|
at = code[at + 2];
|
|
9368
9394
|
continue;
|
|
9369
9395
|
}
|
|
@@ -9393,7 +9419,7 @@ function leadingLiteralFamily(code, constants, ip, minDepth = 2, limit = 4) {
|
|
|
9393
9419
|
if (op === OP_RULE || op === OP_LABEL || op === OP_TOKEN || op === OP_ATTEMPT || op === OP_PEEK) {
|
|
9394
9420
|
return walk(code[at + 1], depth + 1);
|
|
9395
9421
|
}
|
|
9396
|
-
if (op === OP_GATE || op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || op === OP_LEAF) {
|
|
9422
|
+
if (op === OP_GATE || op === OP_SCOPE || op === OP_SCOPE_CAP || op === OP_SCOPE_PLAIN || op === OP_XFORM || op === OP_NODE || op === OP_FIELD || (op === OP_LEAF || op === OP_SOURCE_LEAF)) {
|
|
9397
9423
|
return walk(code[at + 2], depth + 1);
|
|
9398
9424
|
}
|
|
9399
9425
|
if (op === OP_SEQ || op === OP_SEQV) {
|
|
@@ -10279,8 +10305,10 @@ ${rootCap ? "ctx._rootTriviaCapture=sR\n" : ""}return v
|
|
|
10279
10305
|
}
|
|
10280
10306
|
/* ── boundaries ──────────────────────────────────────────────────────── */
|
|
10281
10307
|
case OP_TOKEN:
|
|
10282
|
-
case OP_LEAF:
|
|
10308
|
+
case OP_LEAF:
|
|
10309
|
+
case OP_SOURCE_LEAF: {
|
|
10283
10310
|
const isToken = op === OP_TOKEN;
|
|
10311
|
+
const capturesSource = isToken || op === OP_SOURCE_LEAF && hostCst;
|
|
10284
10312
|
const fn = isToken ? void 0 : fnRef(code[ip + 1]);
|
|
10285
10313
|
const child = link(isToken ? code[ip + 1] : code[ip + 2]);
|
|
10286
10314
|
const wasCap = L.buf ? "true" : "(ctx._cstBuf!==undefined||ctx._cstLeaves!==undefined)";
|
|
@@ -10313,7 +10341,7 @@ ctx._triviaLog=sOtl
|
|
|
10313
10341
|
if(v===FAIL)return FAIL
|
|
10314
10342
|
const e=EC.e
|
|
10315
10343
|
const out=${isToken ? "input.slice(pos,e)" : `${fn}(v,{start:pos,end:e})`}
|
|
10316
|
-
if(wasCap)pushCstLeaf(ctx,{_tag:'leaf',value:out,span:{start:pos,end:e}})
|
|
10344
|
+
if(wasCap)pushCstLeaf(ctx,{_tag:'leaf',value:${capturesSource ? "input.slice(pos,e)" : "out"},span:{start:pos,end:e}})
|
|
10317
10345
|
EC.e=e
|
|
10318
10346
|
return out
|
|
10319
10347
|
}`;
|
|
@@ -12970,7 +12998,8 @@ function assemble(t, prog, cfg) {
|
|
|
12970
12998
|
return value;
|
|
12971
12999
|
};
|
|
12972
13000
|
}
|
|
12973
|
-
case OP_LEAF:
|
|
13001
|
+
case OP_LEAF:
|
|
13002
|
+
case OP_SOURCE_LEAF: {
|
|
12974
13003
|
const fn = fns[code[ip + 1]];
|
|
12975
13004
|
const child = link(code[ip + 2]);
|
|
12976
13005
|
return (input, pos, ctx) => {
|
|
@@ -12998,7 +13027,11 @@ function assemble(t, prog, cfg) {
|
|
|
12998
13027
|
if (v === FAIL) return FAIL;
|
|
12999
13028
|
const end = EC.e;
|
|
13000
13029
|
const out = fn(v, { start: pos, end });
|
|
13001
|
-
if (wasCapturing) pushCstLeaf(ctx, {
|
|
13030
|
+
if (wasCapturing) pushCstLeaf(ctx, {
|
|
13031
|
+
_tag: "leaf",
|
|
13032
|
+
value: op === OP_SOURCE_LEAF && hostCst ? input.slice(pos, end) : out,
|
|
13033
|
+
span: { start: pos, end }
|
|
13034
|
+
});
|
|
13002
13035
|
EC.e = end;
|
|
13003
13036
|
return out;
|
|
13004
13037
|
};
|
|
@@ -15039,7 +15072,7 @@ function payloadKey(p, d) {
|
|
|
15039
15072
|
case "transform":
|
|
15040
15073
|
return `transform\0${fnKey(d.fnSrc, d.fn)}\0${d.recognitionOnly === true}`;
|
|
15041
15074
|
case "leaf":
|
|
15042
|
-
return `leaf\0${fnKey(d.fnSrc, d.fn)}`;
|
|
15075
|
+
return `leaf\0${d.cstValue ?? "value"}\0${fnKey(d.fnSrc, d.fn)}`;
|
|
15043
15076
|
case "many":
|
|
15044
15077
|
case "oneOrMore":
|
|
15045
15078
|
return `${d.tag}\0${d.min}\0${d.max ?? ""}`;
|
|
@@ -16528,7 +16561,7 @@ function evalRuleMapIR(ir) {
|
|
|
16528
16561
|
if (recognitionOnly) t._def.recognitionOnly = true;
|
|
16529
16562
|
return t;
|
|
16530
16563
|
};
|
|
16531
|
-
const _lf = (child, src) => {
|
|
16564
|
+
const _lf = (child, src, source = false) => {
|
|
16532
16565
|
let fn2;
|
|
16533
16566
|
try {
|
|
16534
16567
|
fn2 = (0, eval)(`(${src})`);
|
|
@@ -16537,7 +16570,7 @@ function evalRuleMapIR(ir) {
|
|
|
16537
16570
|
throw new Error("IR leaf fn not materialized");
|
|
16538
16571
|
};
|
|
16539
16572
|
}
|
|
16540
|
-
const l = leaf(child, fn2);
|
|
16573
|
+
const l = source ? sourceLeaf(child, fn2) : leaf(child, fn2);
|
|
16541
16574
|
l._def.fnSrc = src;
|
|
16542
16575
|
return l;
|
|
16543
16576
|
};
|
|
@@ -16862,8 +16895,12 @@ ${outerDecls.map((d) => " " + d).join("\n")}
|
|
|
16862
16895
|
const kid = (x) => this.ref(x, frames);
|
|
16863
16896
|
const bal = balancedOf(c);
|
|
16864
16897
|
if (bal) {
|
|
16865
|
-
const
|
|
16866
|
-
|
|
16898
|
+
const options = [
|
|
16899
|
+
...bal.ownSkip.length === 0 ? [] : [`skip: [${bal.ownSkip.map(kid).join(", ")}]`],
|
|
16900
|
+
...bal.strict ? ["strict: true"] : []
|
|
16901
|
+
];
|
|
16902
|
+
const optionsArg = options.length === 0 ? "" : `, { ${options.join(", ")} }`;
|
|
16903
|
+
return `balanced(${JSON.stringify(bal.open)}, ${JSON.stringify(bal.close)}${optionsArg})`;
|
|
16867
16904
|
}
|
|
16868
16905
|
switch (def.tag) {
|
|
16869
16906
|
case "lazy": {
|
|
@@ -16936,7 +16973,7 @@ ${outerDecls.map((d) => " " + d).join("\n")}
|
|
|
16936
16973
|
return `token(${kid(def.parser)})`;
|
|
16937
16974
|
case "leaf": {
|
|
16938
16975
|
if (def.fnSrc === void 0) throw new Unserializable("leaf without fnSrc");
|
|
16939
|
-
return `_lf(${kid(def.parser)}, ${JSON.stringify(def.fnSrc)})`;
|
|
16976
|
+
return `_lf(${kid(def.parser)}, ${JSON.stringify(def.fnSrc)}${def.cstValue === "source" ? ", true" : ""})`;
|
|
16940
16977
|
}
|
|
16941
16978
|
case "label":
|
|
16942
16979
|
return `label(${JSON.stringify(def.label)}, ${kid(def.parser)})`;
|
|
@@ -17125,7 +17162,7 @@ function compileRuleMap(ruleMap, opts = {}) {
|
|
|
17125
17162
|
}
|
|
17126
17163
|
|
|
17127
17164
|
// src/version.ts
|
|
17128
|
-
var PARSEMAN_VERSION = "0.51.
|
|
17165
|
+
var PARSEMAN_VERSION = "0.51.2";
|
|
17129
17166
|
|
|
17130
17167
|
// src/compiler/compile-linkable-table.ts
|
|
17131
17168
|
function isLocal(rule) {
|
|
@@ -17848,7 +17885,7 @@ function exprToCombi(node2, scope, code, mfs) {
|
|
|
17848
17885
|
return null;
|
|
17849
17886
|
}
|
|
17850
17887
|
}
|
|
17851
|
-
if (callee.name === "leaf" && code !== void 0 && mfs !== void 0) {
|
|
17888
|
+
if ((callee.name === "leaf" || callee.name === "sourceLeaf") && code !== void 0 && mfs !== void 0) {
|
|
17852
17889
|
const [parserArg, fnArg] = node2.arguments;
|
|
17853
17890
|
if (!parserArg || !fnArg || parserArg.type === "SpreadElement" || fnArg.type === "SpreadElement") return null;
|
|
17854
17891
|
const inner = anyValue(parserArg, scope, code, mfs);
|
|
@@ -17856,7 +17893,7 @@ function exprToCombi(node2, scope, code, mfs) {
|
|
|
17856
17893
|
const fnSrc = stripTsFromSource(fnArg, code);
|
|
17857
17894
|
mfs.push(fnSrc);
|
|
17858
17895
|
try {
|
|
17859
|
-
const combi = leaf(inner, (v) => v);
|
|
17896
|
+
const combi = callee.name === "sourceLeaf" ? sourceLeaf(inner, (v) => v) : leaf(inner, (v) => v);
|
|
17860
17897
|
if (combi._def.tag === "leaf") combi._def.fnSrc = fnSrc;
|
|
17861
17898
|
return combi;
|
|
17862
17899
|
} catch {
|