@promptbook/node 0.77.0 → 0.78.0-0

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.
Files changed (23) hide show
  1. package/README.md +4 -0
  2. package/esm/index.es.js +113 -53
  3. package/esm/index.es.js.map +1 -1
  4. package/esm/typings/src/_packages/core.index.d.ts +8 -2
  5. package/esm/typings/src/_packages/types.index.d.ts +4 -0
  6. package/esm/typings/src/_packages/utils.index.d.ts +4 -8
  7. package/esm/typings/src/cli/test/ptbk.d.ts +1 -1
  8. package/esm/typings/src/commands/_common/types/CommandType.d.ts +17 -0
  9. package/esm/typings/src/conversion/utils/extractParameterNamesFromTask.d.ts +1 -1
  10. package/esm/typings/src/conversion/utils/{extractVariables.d.ts → extractVariablesFromScript.d.ts} +2 -2
  11. package/esm/typings/src/conversion/utils/removePipelineCommand.d.ts +22 -0
  12. package/esm/typings/src/conversion/utils/{renameParameter.d.ts → renamePipelineParameter.d.ts} +3 -3
  13. package/esm/typings/src/errors/0-index.d.ts +46 -1
  14. package/esm/typings/src/errors/utils/ErrorJson.d.ts +2 -2
  15. package/esm/typings/src/llm-providers/_common/register/createLlmToolsFromConfiguration.test.d.ts +1 -0
  16. package/esm/typings/src/utils/normalization/titleToName.test.d.ts +1 -0
  17. package/package.json +2 -2
  18. package/umd/index.umd.js +113 -53
  19. package/umd/index.umd.js.map +1 -1
  20. /package/esm/typings/src/conversion/utils/{extractVariables.test.d.ts → extractVariablesFromScript.test.d.ts} +0 -0
  21. /package/esm/typings/src/conversion/utils/{renameParameter.test.d.ts → removePipelineCommand.test.d.ts} +0 -0
  22. /package/esm/typings/src/conversion/utils/{titleToName.test.d.ts → renamePipelineParameter.test.d.ts} +0 -0
  23. /package/esm/typings/src/{conversion/utils → utils/normalization}/titleToName.d.ts +0 -0
package/README.md CHANGED
@@ -23,6 +23,10 @@
23
23
 
24
24
 
25
25
 
26
+ <blockquote style="color: #ff8811">
27
+ <b>⚠ Warning:</b> This is a pre-release version of the library. It is not yet ready for production use. Please look at <a href="https://www.npmjs.com/package/@promptbook/core?activeTab=versions">latest stable release</a>.
28
+ </blockquote>
29
+
26
30
  ## 📦 Package `@promptbook/node`
27
31
 
28
32
  - Promptbooks are [divided into several](#-packages) packages, all are published from [single monorepo](https://github.com/webgptorg/promptbook).
package/esm/index.es.js CHANGED
@@ -26,7 +26,7 @@ var BOOK_LANGUAGE_VERSION = '1.0.0';
26
26
  *
27
27
  * @see https://github.com/webgptorg/promptbook
28
28
  */
29
- var PROMPTBOOK_ENGINE_VERSION = '0.77.0-6';
29
+ var PROMPTBOOK_ENGINE_VERSION = '0.77.1';
30
30
  /**
31
31
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
32
32
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -2169,7 +2169,7 @@ var NotYetImplementedError = /** @class */ (function (_super) {
2169
2169
  *
2170
2170
  * @public exported from `@promptbook/core`
2171
2171
  */
2172
- var ERRORS = {
2172
+ var PROMPTBOOK_ERRORS = {
2173
2173
  AbstractFormatError: AbstractFormatError,
2174
2174
  CsvFormatError: CsvFormatError,
2175
2175
  CollectionError: CollectionError,
@@ -2187,6 +2187,35 @@ var ERRORS = {
2187
2187
  UnexpectedError: UnexpectedError,
2188
2188
  // TODO: [🪑]> VersionMismatchError,
2189
2189
  };
2190
+ /**
2191
+ * Index of all javascript errors
2192
+ *
2193
+ * @private for internal usage
2194
+ */
2195
+ var COMMON_JAVASCRIPT_ERRORS = {
2196
+ Error: Error,
2197
+ EvalError: EvalError,
2198
+ RangeError: RangeError,
2199
+ ReferenceError: ReferenceError,
2200
+ SyntaxError: SyntaxError,
2201
+ TypeError: TypeError,
2202
+ URIError: URIError,
2203
+ AggregateError: AggregateError,
2204
+ /*
2205
+ Note: Not widely supported
2206
+ > InternalError,
2207
+ > ModuleError,
2208
+ > HeapError,
2209
+ > WebAssemblyCompileError,
2210
+ > WebAssemblyRuntimeError,
2211
+ */
2212
+ };
2213
+ /**
2214
+ * Index of all errors
2215
+ *
2216
+ * @private for internal usage
2217
+ */
2218
+ var ALL_ERRORS = __assign(__assign({}, PROMPTBOOK_ERRORS), COMMON_JAVASCRIPT_ERRORS);
2190
2219
  /**
2191
2220
  * Note: [💞] Ignore a discrepancy between file name and entity name
2192
2221
  */
@@ -2197,11 +2226,11 @@ var ERRORS = {
2197
2226
  * @public exported from `@promptbook/utils`
2198
2227
  */
2199
2228
  function deserializeError(error) {
2200
- if (error.name === 'Error') {
2201
- return new Error(error.message);
2229
+ var ErrorClass = ALL_ERRORS[error.name];
2230
+ if (ErrorClass === undefined) {
2231
+ return new Error("".concat(error.name, ": ").concat(error.message));
2202
2232
  }
2203
- var CustomError = ERRORS[error.name];
2204
- return new CustomError(error.message);
2233
+ return new ErrorClass(error.message);
2205
2234
  }
2206
2235
 
2207
2236
  /**
@@ -2275,8 +2304,8 @@ function isPipelinePrepared(pipeline) {
2275
2304
  */
2276
2305
  function serializeError(error) {
2277
2306
  var name = error.name, message = error.message, stack = error.stack;
2278
- if (!__spreadArray(['Error'], __read(Object.keys(ERRORS)), false).includes(name)) {
2279
- throw new UnexpectedError(spaceTrim$1(function (block) { return "\n \n Cannot serialize error with name \"".concat(name, "\"\n\n ").concat(block(stack || message), "\n \n "); }));
2307
+ if (!Object.keys(ALL_ERRORS).includes(name)) {
2308
+ console.error(spaceTrim$1(function (block) { return "\n \n Cannot serialize error with name \"".concat(name, "\"\n\n ").concat(block(stack || message), "\n \n "); }));
2280
2309
  }
2281
2310
  return {
2282
2311
  name: name,
@@ -2291,9 +2320,9 @@ function serializeError(error) {
2291
2320
  * @param script from which to extract the variables
2292
2321
  * @returns the list of variable names
2293
2322
  * @throws {ParseError} if the script is invalid
2294
- * @public exported from `@promptbook/utils`
2323
+ * @public exported from `@promptbook/utils` <- Note: [👖] This is usable elsewhere than in Promptbook, so keeping in utils
2295
2324
  */
2296
- function extractVariables(script) {
2325
+ function extractVariablesFromScript(script) {
2297
2326
  var variables = new Set();
2298
2327
  script = "(()=>{".concat(script, "})()");
2299
2328
  try {
@@ -2340,7 +2369,7 @@ function extractVariables(script) {
2340
2369
  * @param task the task with used parameters
2341
2370
  * @returns the set of parameter names
2342
2371
  * @throws {ParseError} if the script is invalid
2343
- * @public exported from `@promptbook/utils`
2372
+ * @public exported from `@promptbook/core` <- Note: [👖] This utility is so tightly interconnected with the Promptbook that it is not exported as util but in core
2344
2373
  */
2345
2374
  function extractParameterNamesFromTask(task) {
2346
2375
  var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
@@ -2361,7 +2390,7 @@ function extractParameterNamesFromTask(task) {
2361
2390
  }
2362
2391
  if (taskType === 'SCRIPT_TASK') {
2363
2392
  try {
2364
- for (var _g = __values(extractVariables(content)), _h = _g.next(); !_h.done; _h = _g.next()) {
2393
+ for (var _g = __values(extractVariablesFromScript(content)), _h = _g.next(); !_h.done; _h = _g.next()) {
2365
2394
  var parameterName = _h.value;
2366
2395
  parameterNames.add(parameterName);
2367
2396
  }
@@ -7989,6 +8018,7 @@ function splitMarkdownIntoSections(markdown) {
7989
8018
  var e_1, _a;
7990
8019
  var lines = markdown.split('\n');
7991
8020
  var sections = [];
8021
+ // TODO: [🧽] DRY
7992
8022
  var currentType = 'MARKDOWN';
7993
8023
  var buffer = [];
7994
8024
  var finishSection = function () {
@@ -8153,7 +8183,7 @@ function titleToName(value) {
8153
8183
  * @public exported from `@promptbook/core`
8154
8184
  */
8155
8185
  function pipelineStringToJsonSync(pipelineString) {
8156
- var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
8186
+ var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e;
8157
8187
  var $pipelineJson = {
8158
8188
  title: undefined /* <- Note: [🍙] Putting here placeholder to keep `title` on top at final JSON */,
8159
8189
  pipelineUrl: undefined /* <- Note: Putting here placeholder to keep `pipelineUrl` on top at final JSON */,
@@ -8182,7 +8212,7 @@ function pipelineStringToJsonSync(pipelineString) {
8182
8212
  // =============================================================
8183
8213
  // Note: 1️⃣ Parsing of the markdown into object
8184
8214
  if (pipelineString.startsWith('#!')) {
8185
- var _e = __read(pipelineString.split('\n')), shebangLine_1 = _e[0], restLines = _e.slice(1);
8215
+ var _f = __read(pipelineString.split('\n')), shebangLine_1 = _f[0], restLines = _f.slice(1);
8186
8216
  if (!(shebangLine_1 || '').includes('ptbk')) {
8187
8217
  throw new ParseError(spaceTrim(function (block) { return "\n It seems that you try to parse a book file which has non-standard shebang line for book files:\n Shebang line must contain 'ptbk'\n\n You have:\n ".concat(block(shebangLine_1 || '(empty line)'), "\n\n It should look like this:\n #!/usr/bin/env ptbk\n\n ").concat(block(getPipelineIdentification()), "\n "); }));
8188
8218
  }
@@ -8192,7 +8222,7 @@ function pipelineStringToJsonSync(pipelineString) {
8192
8222
  pipelineString = flattenMarkdown(pipelineString) /* <- Note: [🥞] */;
8193
8223
  pipelineString = pipelineString.replaceAll(/`\{(?<parameterName>[a-z0-9_]+)\}`/gi, '{$<parameterName>}');
8194
8224
  pipelineString = pipelineString.replaceAll(/`->\s+\{(?<parameterName>[a-z0-9_]+)\}`/gi, '-> {$<parameterName>}');
8195
- var _f = __read(splitMarkdownIntoSections(pipelineString).map(parseMarkdownSection)), pipelineHead = _f[0], pipelineSections = _f.slice(1); /* <- Note: [🥞] */
8225
+ var _g = __read(splitMarkdownIntoSections(pipelineString).map(parseMarkdownSection)), pipelineHead = _g[0], pipelineSections = _g.slice(1); /* <- Note: [🥞] */
8196
8226
  if (pipelineHead === undefined) {
8197
8227
  throw new UnexpectedError(spaceTrim(function (block) { return "\n Pipeline head is not defined\n\n ".concat(block(getPipelineIdentification()), "\n\n This should never happen, because the pipeline already flattened\n "); }));
8198
8228
  }
@@ -8283,11 +8313,41 @@ function pipelineStringToJsonSync(pipelineString) {
8283
8313
  }
8284
8314
  finally { if (e_1) throw e_1.error; }
8285
8315
  }
8316
+ // =============================================================
8317
+ // Note: 4️⃣ Prepare unique section names with indexes when needed
8318
+ var sectionCounts = {};
8319
+ try {
8320
+ for (var pipelineSections_1 = __values(pipelineSections), pipelineSections_1_1 = pipelineSections_1.next(); !pipelineSections_1_1.done; pipelineSections_1_1 = pipelineSections_1.next()) {
8321
+ var section = pipelineSections_1_1.value;
8322
+ var name_1 = titleToName(section.title);
8323
+ if (sectionCounts[name_1] === undefined) {
8324
+ sectionCounts[name_1] = { count: 0, currentIndex: 0 };
8325
+ }
8326
+ sectionCounts[name_1].count++;
8327
+ }
8328
+ }
8329
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
8330
+ finally {
8331
+ try {
8332
+ if (pipelineSections_1_1 && !pipelineSections_1_1.done && (_b = pipelineSections_1.return)) _b.call(pipelineSections_1);
8333
+ }
8334
+ finally { if (e_2) throw e_2.error; }
8335
+ }
8336
+ var getUniqueSectionName = function (title) {
8337
+ var name = titleToName(title);
8338
+ var count = sectionCounts[name];
8339
+ if (count.count === 1) {
8340
+ return name;
8341
+ }
8342
+ var nameWithSuffix = "".concat(name, "-").concat(count.currentIndex);
8343
+ count.currentIndex++;
8344
+ return nameWithSuffix;
8345
+ };
8286
8346
  var _loop_2 = function (section) {
8287
- var e_5, _l, e_6, _m;
8347
+ var e_6, _m, e_7, _o;
8288
8348
  // TODO: Parse section's description (the content out of the codeblock and lists)
8289
8349
  var listItems_2 = extractAllListItemsFromMarkdown(section.content);
8290
- var _o = extractOneBlockFromMarkdown(section.content), language = _o.language, content = _o.content;
8350
+ var _p = extractOneBlockFromMarkdown(section.content), language = _p.language, content = _p.content;
8291
8351
  // TODO: [🎾][1] DRY description
8292
8352
  var description_1 = section.content;
8293
8353
  // Note: Remove codeblocks - TODO: [🎾]
@@ -8303,7 +8363,7 @@ function pipelineStringToJsonSync(pipelineString) {
8303
8363
  isSectionTypeSet: false,
8304
8364
  isTask: true,
8305
8365
  taskType: undefined /* <- Note: [🍙] Putting here placeholder to keep `taskType` on top at final JSON */,
8306
- name: titleToName(section.title),
8366
+ name: getUniqueSectionName(section.title),
8307
8367
  title: section.title,
8308
8368
  description: description_1,
8309
8369
  content: content,
@@ -8351,17 +8411,17 @@ function pipelineStringToJsonSync(pipelineString) {
8351
8411
  };
8352
8412
  try {
8353
8413
  // TODO [♓️] List commands and before apply order them to achieve order-agnostic commands
8354
- for (var commands_1 = (e_5 = void 0, __values(commands)), commands_1_1 = commands_1.next(); !commands_1_1.done; commands_1_1 = commands_1.next()) {
8355
- var _p = commands_1_1.value, listItem = _p.listItem, command = _p.command;
8414
+ for (var commands_1 = (e_6 = void 0, __values(commands)), commands_1_1 = commands_1.next(); !commands_1_1.done; commands_1_1 = commands_1.next()) {
8415
+ var _q = commands_1_1.value, listItem = _q.listItem, command = _q.command;
8356
8416
  _loop_4(listItem, command);
8357
8417
  }
8358
8418
  }
8359
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
8419
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
8360
8420
  finally {
8361
8421
  try {
8362
- if (commands_1_1 && !commands_1_1.done && (_l = commands_1.return)) _l.call(commands_1);
8422
+ if (commands_1_1 && !commands_1_1.done && (_m = commands_1.return)) _m.call(commands_1);
8363
8423
  }
8364
- finally { if (e_5) throw e_5.error; }
8424
+ finally { if (e_6) throw e_6.error; }
8365
8425
  }
8366
8426
  // TODO: [🍧] Should be done in SECTION command
8367
8427
  if ($taskJson.taskType === 'SCRIPT_TASK') {
@@ -8375,8 +8435,8 @@ function pipelineStringToJsonSync(pipelineString) {
8375
8435
  }
8376
8436
  $taskJson.dependentParameterNames = Array.from(extractParameterNamesFromTask($taskJson));
8377
8437
  try {
8378
- for (var _q = (e_6 = void 0, __values($taskJson.dependentParameterNames)), _r = _q.next(); !_r.done; _r = _q.next()) {
8379
- var parameterName = _r.value;
8438
+ for (var _r = (e_7 = void 0, __values($taskJson.dependentParameterNames)), _s = _r.next(); !_s.done; _s = _r.next()) {
8439
+ var parameterName = _s.value;
8380
8440
  // TODO: [🧠] This definition should be made first in the task
8381
8441
  defineParam({
8382
8442
  parameterName: parameterName,
@@ -8387,12 +8447,12 @@ function pipelineStringToJsonSync(pipelineString) {
8387
8447
  });
8388
8448
  }
8389
8449
  }
8390
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
8450
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
8391
8451
  finally {
8392
8452
  try {
8393
- if (_r && !_r.done && (_m = _q.return)) _m.call(_q);
8453
+ if (_s && !_s.done && (_o = _r.return)) _o.call(_r);
8394
8454
  }
8395
- finally { if (e_6) throw e_6.error; }
8455
+ finally { if (e_7) throw e_7.error; }
8396
8456
  }
8397
8457
  /*
8398
8458
  // TODO: [🍧] This should be checked in `MODEL` command + better error message
@@ -8421,21 +8481,21 @@ function pipelineStringToJsonSync(pipelineString) {
8421
8481
  };
8422
8482
  try {
8423
8483
  // =============================================================
8424
- // Note: 4️⃣ Process each section of the pipeline
8425
- for (var pipelineSections_1 = __values(pipelineSections), pipelineSections_1_1 = pipelineSections_1.next(); !pipelineSections_1_1.done; pipelineSections_1_1 = pipelineSections_1.next()) {
8426
- var section = pipelineSections_1_1.value;
8484
+ // Note: 5️⃣ Process each section of the pipeline
8485
+ for (var pipelineSections_2 = __values(pipelineSections), pipelineSections_2_1 = pipelineSections_2.next(); !pipelineSections_2_1.done; pipelineSections_2_1 = pipelineSections_2.next()) {
8486
+ var section = pipelineSections_2_1.value;
8427
8487
  _loop_2(section);
8428
8488
  }
8429
8489
  }
8430
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
8490
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
8431
8491
  finally {
8432
8492
  try {
8433
- if (pipelineSections_1_1 && !pipelineSections_1_1.done && (_b = pipelineSections_1.return)) _b.call(pipelineSections_1);
8493
+ if (pipelineSections_2_1 && !pipelineSections_2_1.done && (_c = pipelineSections_2.return)) _c.call(pipelineSections_2);
8434
8494
  }
8435
- finally { if (e_2) throw e_2.error; }
8495
+ finally { if (e_3) throw e_3.error; }
8436
8496
  }
8437
8497
  // =============================================================
8438
- // Note: 5️⃣ Mark parameters as INPUT if not explicitly set
8498
+ // Note: 6️⃣ Mark parameters as INPUT if not explicitly set
8439
8499
  if ($pipelineJson.parameters.every(function (parameter) { return !parameter.isInput; })) {
8440
8500
  var _loop_3 = function (parameter) {
8441
8501
  var isThisParameterResulting = $pipelineJson.tasks.some(function (task) { return task.resultingParameterName === parameter.name; });
@@ -8444,42 +8504,42 @@ function pipelineStringToJsonSync(pipelineString) {
8444
8504
  }
8445
8505
  };
8446
8506
  try {
8447
- for (var _g = __values($pipelineJson.parameters), _h = _g.next(); !_h.done; _h = _g.next()) {
8448
- var parameter = _h.value;
8507
+ for (var _h = __values($pipelineJson.parameters), _j = _h.next(); !_j.done; _j = _h.next()) {
8508
+ var parameter = _j.value;
8449
8509
  _loop_3(parameter);
8450
8510
  }
8451
8511
  }
8452
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
8512
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
8453
8513
  finally {
8454
8514
  try {
8455
- if (_h && !_h.done && (_c = _g.return)) _c.call(_g);
8515
+ if (_j && !_j.done && (_d = _h.return)) _d.call(_h);
8456
8516
  }
8457
- finally { if (e_3) throw e_3.error; }
8517
+ finally { if (e_4) throw e_4.error; }
8458
8518
  }
8459
8519
  }
8460
8520
  // =============================================================
8461
- // Note: 6️⃣ Mark all non-INPUT parameters as OUTPUT if any OUTPUT is not set
8521
+ // Note: 7️⃣ Mark all non-INPUT parameters as OUTPUT if any OUTPUT is not set
8462
8522
  if ($pipelineJson.parameters.every(function (parameter) { return !parameter.isOutput; })) {
8463
8523
  try {
8464
- for (var _j = __values($pipelineJson.parameters), _k = _j.next(); !_k.done; _k = _j.next()) {
8465
- var parameter = _k.value;
8524
+ for (var _k = __values($pipelineJson.parameters), _l = _k.next(); !_l.done; _l = _k.next()) {
8525
+ var parameter = _l.value;
8466
8526
  if (!parameter.isInput) {
8467
8527
  parameter.isOutput = true;
8468
8528
  }
8469
8529
  }
8470
8530
  }
8471
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
8531
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
8472
8532
  finally {
8473
8533
  try {
8474
- if (_k && !_k.done && (_d = _j.return)) _d.call(_j);
8534
+ if (_l && !_l.done && (_e = _k.return)) _e.call(_k);
8475
8535
  }
8476
- finally { if (e_4) throw e_4.error; }
8536
+ finally { if (e_5) throw e_5.error; }
8477
8537
  }
8478
8538
  }
8479
8539
  // =============================================================
8480
- // Note: 7️⃣ Cleanup of undefined values
8540
+ // Note: 8️⃣ Cleanup of undefined values
8481
8541
  $pipelineJson.tasks.forEach(function (tasks) {
8482
- var e_7, _a;
8542
+ var e_8, _a;
8483
8543
  try {
8484
8544
  for (var _b = __values(Object.entries(tasks)), _c = _b.next(); !_c.done; _c = _b.next()) {
8485
8545
  var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
@@ -8488,16 +8548,16 @@ function pipelineStringToJsonSync(pipelineString) {
8488
8548
  }
8489
8549
  }
8490
8550
  }
8491
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
8551
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
8492
8552
  finally {
8493
8553
  try {
8494
8554
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
8495
8555
  }
8496
- finally { if (e_7) throw e_7.error; }
8556
+ finally { if (e_8) throw e_8.error; }
8497
8557
  }
8498
8558
  });
8499
8559
  $pipelineJson.parameters.forEach(function (parameter) {
8500
- var e_8, _a;
8560
+ var e_9, _a;
8501
8561
  try {
8502
8562
  for (var _b = __values(Object.entries(parameter)), _c = _b.next(); !_c.done; _c = _b.next()) {
8503
8563
  var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
@@ -8506,12 +8566,12 @@ function pipelineStringToJsonSync(pipelineString) {
8506
8566
  }
8507
8567
  }
8508
8568
  }
8509
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
8569
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
8510
8570
  finally {
8511
8571
  try {
8512
8572
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
8513
8573
  }
8514
- finally { if (e_8) throw e_8.error; }
8574
+ finally { if (e_9) throw e_9.error; }
8515
8575
  }
8516
8576
  });
8517
8577
  // =============================================================