@promptbook/markdown-utils 0.75.3 → 0.75.4

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.
@@ -24,6 +24,7 @@ import { DEFAULT_REMOTE_URL } from '../config';
24
24
  import { DEFAULT_REMOTE_URL_PATH } from '../config';
25
25
  import { DEFAULT_CSV_SETTINGS } from '../config';
26
26
  import { DEFAULT_IS_VERBOSE } from '../config';
27
+ import { SET_IS_VERBOSE } from '../config';
27
28
  import { DEFAULT_IS_AUTO_INSTALLED } from '../config';
28
29
  import { pipelineJsonToString } from '../conversion/pipelineJsonToString';
29
30
  import { pipelineStringToJson } from '../conversion/pipelineStringToJson';
@@ -136,6 +137,7 @@ export { DEFAULT_REMOTE_URL };
136
137
  export { DEFAULT_REMOTE_URL_PATH };
137
138
  export { DEFAULT_CSV_SETTINGS };
138
139
  export { DEFAULT_IS_VERBOSE };
140
+ export { SET_IS_VERBOSE };
139
141
  export { DEFAULT_IS_AUTO_INSTALLED };
140
142
  export { pipelineJsonToString };
141
143
  export { pipelineStringToJson };
@@ -204,7 +204,15 @@ export declare const DEFAULT_CSV_SETTINGS: CsvSettings;
204
204
  *
205
205
  * @public exported from `@promptbook/core`
206
206
  */
207
- export declare const DEFAULT_IS_VERBOSE = false;
207
+ export declare let DEFAULT_IS_VERBOSE: boolean;
208
+ /**
209
+ * @@@
210
+ *
211
+ * Note: This is experimental feature
212
+ *
213
+ * @public exported from `@promptbook/core`
214
+ */
215
+ export declare function SET_IS_VERBOSE(isVerbose: boolean): void;
208
216
  /**
209
217
  * @@@
210
218
  *
@@ -1,4 +1,5 @@
1
1
  import type { string_markdown } from '../../../types/typeAliases';
2
+ import type { Scraper } from '../Scraper';
2
3
  /**
3
4
  * Creates a message with all registered scrapers
4
5
  *
@@ -6,7 +7,7 @@ import type { string_markdown } from '../../../types/typeAliases';
6
7
  *
7
8
  * @private internal function of `createScrapersFromConfiguration` and `createScrapersFromEnv`
8
9
  */
9
- export declare function $registeredScrapersMessage(): string_markdown;
10
+ export declare function $registeredScrapersMessage(availableScrapers: ReadonlyArray<Scraper>): string_markdown;
10
11
  /**
11
12
  * TODO: [®] DRY Register logic
12
13
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptbook/markdown-utils",
3
- "version": "0.75.3",
3
+ "version": "0.75.4",
4
4
  "description": "It's time for a paradigm shift. The future of software in plain English, French or Latin",
5
5
  "--note-0": " <- [🐊]",
6
6
  "private": false,
package/umd/index.umd.js CHANGED
@@ -22,7 +22,7 @@
22
22
  *
23
23
  * @see https://github.com/webgptorg/promptbook
24
24
  */
25
- var PROMPTBOOK_ENGINE_VERSION = '0.75.2';
25
+ var PROMPTBOOK_ENGINE_VERSION = '0.75.3';
26
26
  /**
27
27
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
28
28
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -3044,8 +3044,8 @@
3044
3044
  *
3045
3045
  * @private internal function of `createScrapersFromConfiguration` and `createScrapersFromEnv`
3046
3046
  */
3047
- function $registeredScrapersMessage() {
3048
- var e_1, _a, e_2, _b;
3047
+ function $registeredScrapersMessage(availableScrapers) {
3048
+ var e_1, _a, e_2, _b, e_3, _c;
3049
3049
  /**
3050
3050
  * Mixes registered scrapers from $scrapersMetadataRegister and $scrapersRegister
3051
3051
  */
@@ -3057,15 +3057,15 @@
3057
3057
  all.push({ packageName: packageName, className: className, mimeTypes: mimeTypes, documentationUrl: documentationUrl, isAvilableInBrowser: isAvilableInBrowser });
3058
3058
  };
3059
3059
  try {
3060
- for (var _c = __values($scrapersMetadataRegister.list()), _d = _c.next(); !_d.done; _d = _c.next()) {
3061
- var _e = _d.value, packageName = _e.packageName, className = _e.className, mimeTypes = _e.mimeTypes, documentationUrl = _e.documentationUrl, isAvilableInBrowser = _e.isAvilableInBrowser;
3060
+ for (var _d = __values($scrapersMetadataRegister.list()), _e = _d.next(); !_e.done; _e = _d.next()) {
3061
+ var _f = _e.value, packageName = _f.packageName, className = _f.className, mimeTypes = _f.mimeTypes, documentationUrl = _f.documentationUrl, isAvilableInBrowser = _f.isAvilableInBrowser;
3062
3062
  _loop_1(packageName, className, mimeTypes, documentationUrl, isAvilableInBrowser);
3063
3063
  }
3064
3064
  }
3065
3065
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
3066
3066
  finally {
3067
3067
  try {
3068
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
3068
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
3069
3069
  }
3070
3070
  finally { if (e_1) throw e_1.error; }
3071
3071
  }
@@ -3076,18 +3076,31 @@
3076
3076
  all.push({ packageName: packageName, className: className, mimeTypes: mimeTypes, documentationUrl: documentationUrl, isAvilableInBrowser: isAvilableInBrowser });
3077
3077
  };
3078
3078
  try {
3079
- for (var _f = __values($scrapersRegister.list()), _g = _f.next(); !_g.done; _g = _f.next()) {
3080
- var _h = _g.value, packageName = _h.packageName, className = _h.className, mimeTypes = _h.mimeTypes, documentationUrl = _h.documentationUrl, isAvilableInBrowser = _h.isAvilableInBrowser;
3079
+ for (var _g = __values($scrapersRegister.list()), _h = _g.next(); !_h.done; _h = _g.next()) {
3080
+ var _j = _h.value, packageName = _j.packageName, className = _j.className, mimeTypes = _j.mimeTypes, documentationUrl = _j.documentationUrl, isAvilableInBrowser = _j.isAvilableInBrowser;
3081
3081
  _loop_2(packageName, className, mimeTypes, documentationUrl, isAvilableInBrowser);
3082
3082
  }
3083
3083
  }
3084
3084
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
3085
3085
  finally {
3086
3086
  try {
3087
- if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
3087
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
3088
3088
  }
3089
3089
  finally { if (e_2) throw e_2.error; }
3090
3090
  }
3091
+ try {
3092
+ for (var availableScrapers_1 = __values(availableScrapers), availableScrapers_1_1 = availableScrapers_1.next(); !availableScrapers_1_1.done; availableScrapers_1_1 = availableScrapers_1.next()) {
3093
+ var metadata_1 = availableScrapers_1_1.value.metadata;
3094
+ all.push(metadata_1);
3095
+ }
3096
+ }
3097
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
3098
+ finally {
3099
+ try {
3100
+ if (availableScrapers_1_1 && !availableScrapers_1_1.done && (_c = availableScrapers_1.return)) _c.call(availableScrapers_1);
3101
+ }
3102
+ finally { if (e_3) throw e_3.error; }
3103
+ }
3091
3104
  var metadata = all.map(function (metadata) {
3092
3105
  var isMetadataAviailable = $scrapersMetadataRegister
3093
3106
  .list()
@@ -3101,42 +3114,44 @@
3101
3114
  var packageName = _a.packageName, className = _a.className;
3102
3115
  return metadata.packageName === packageName && metadata.className === className;
3103
3116
  });
3104
- return __assign(__assign({}, metadata), { isMetadataAviailable: isMetadataAviailable, isInstalled: isInstalled });
3117
+ var isAvilableInTools = availableScrapers.some(function (_a) {
3118
+ var _b = _a.metadata, packageName = _b.packageName, className = _b.className;
3119
+ return metadata.packageName === packageName && metadata.className === className;
3120
+ });
3121
+ return __assign(__assign({}, metadata), { isMetadataAviailable: isMetadataAviailable, isInstalled: isInstalled, isAvilableInTools: isAvilableInTools });
3105
3122
  });
3106
3123
  if (metadata.length === 0) {
3107
- return "No scrapers are available";
3124
+ return spaceTrim__default["default"]("\n **No scrapers are available**\n\n This is a unexpected behavior, you are probably using some broken version of Promptbook\n At least there should be available the metadata of the scrapers\n ");
3108
3125
  }
3109
3126
  return spaceTrim__default["default"](function (block) { return "\n Available scrapers are:\n ".concat(block(metadata
3110
3127
  .map(function (_a, i) {
3111
- var packageName = _a.packageName, className = _a.className, isMetadataAviailable = _a.isMetadataAviailable, isInstalled = _a.isInstalled, mimeTypes = _a.mimeTypes, isAvilableInBrowser = _a.isAvilableInBrowser;
3112
- var more;
3113
- // TODO: Use documentationUrl
3114
- if (just(false)) {
3115
- more = '';
3116
- }
3117
- else if (!isMetadataAviailable && !isInstalled) {
3118
- // TODO: [�][�] Maybe do allow to do auto-install if package not registered and not found
3119
- more = "*(not installed and no metadata, looks like a unexpected behavior)*";
3120
- }
3121
- else if (isMetadataAviailable && !isInstalled) {
3122
- // TODO: [�][�]
3123
- more = "*(not installed)*";
3124
- }
3125
- else if (!isMetadataAviailable && isInstalled) {
3126
- more = "*(no metadata, looks like a unexpected behavior)*";
3127
- }
3128
- else if (isMetadataAviailable && isInstalled) {
3129
- more = "(installed)";
3130
- }
3131
- else {
3132
- more = "*(unknown state, looks like a unexpected behavior)*";
3133
- }
3128
+ var packageName = _a.packageName, className = _a.className, isMetadataAviailable = _a.isMetadataAviailable, isInstalled = _a.isInstalled, mimeTypes = _a.mimeTypes, isAvilableInBrowser = _a.isAvilableInBrowser, isAvilableInTools = _a.isAvilableInTools;
3129
+ var more = [];
3130
+ // TODO: [🧠] Maybe use `documentationUrl`
3131
+ if (isMetadataAviailable) {
3132
+ more.push("\u2B1C Metadata registered");
3133
+ } // not else
3134
+ if (isInstalled) {
3135
+ more.push("\uD83D\uDFE9 Installed");
3136
+ } // not else
3137
+ if (isAvilableInTools) {
3138
+ more.push("\uD83D\uDFE6 Available in tools");
3139
+ } // not else
3140
+ if (!isMetadataAviailable && isInstalled) {
3141
+ more.push("When no metadata registered but scraper is installed, it is an unexpected behavior");
3142
+ } // not else
3143
+ if (!isInstalled && isAvilableInTools) {
3144
+ more.push("When the scraper is not installed but available in tools, it is an unexpected compatibility behavior");
3145
+ } // not else
3134
3146
  if (!isAvilableInBrowser) {
3135
- more += " *(not available in browser)*";
3147
+ more.push("Not usable in browser");
3136
3148
  }
3137
- return "".concat(i + 1, ") `").concat(className, "` from `").concat(packageName, "` compatible to scrape ").concat(mimeTypes.join(', '), " ").concat(more);
3149
+ var moreText = more.length === 0 ? '' : " *(".concat(more.join('; '), ")*");
3150
+ return "".concat(i + 1, ") `").concat(className, "` from `").concat(packageName, "` compatible to scrape ").concat(mimeTypes
3151
+ .map(function (mimeType) { return "\"".concat(mimeType, "\""); })
3152
+ .join(', ')).concat(moreText);
3138
3153
  })
3139
- .join('\n')), "\n "); });
3154
+ .join('\n')), "\n\n Legend:\n - \u2B1C **Metadata registered** means that Promptbook knows about the scraper, it is similar to registration in some registry\n - \uD83D\uDFE9 **Installed** means that you have imported package with particular scraper\n - \uD83D\uDFE6 **Available in tools** means that you have passed scraper as dependency into prepare or execution process\n\n "); });
3140
3155
  }
3141
3156
  /**
3142
3157
  * TODO: [®] DRY Register logic
@@ -3384,57 +3399,75 @@
3384
3399
  _a = options.maxParallelCount, maxParallelCount = _a === void 0 ? DEFAULT_MAX_PARALLEL_COUNT : _a, rootDirname = options.rootDirname, _b = options.isVerbose, isVerbose = _b === void 0 ? DEFAULT_IS_VERBOSE : _b;
3385
3400
  knowledgePreparedUnflatten = new Array(knowledgeSources.length);
3386
3401
  return [4 /*yield*/, forEachAsync(knowledgeSources, { maxParallelCount: maxParallelCount }, function (knowledgeSource, index) { return __awaiter(_this, void 0, void 0, function () {
3387
- var partialPieces, sourceHandler, _a, _b, scraper, partialPiecesUnchecked, e_1_1, pieces;
3388
- var e_1, _c;
3389
- return __generator(this, function (_d) {
3390
- switch (_d.label) {
3402
+ var partialPieces, sourceHandler, scrapers, _loop_1, scrapers_1, scrapers_1_1, scraper, state_1, e_1_1, pieces;
3403
+ var e_1, _a;
3404
+ return __generator(this, function (_b) {
3405
+ switch (_b.label) {
3391
3406
  case 0:
3392
3407
  partialPieces = null;
3393
3408
  return [4 /*yield*/, makeKnowledgeSourceHandler(knowledgeSource, tools, { rootDirname: rootDirname, isVerbose: isVerbose })];
3394
3409
  case 1:
3395
- sourceHandler = _d.sent();
3396
- _d.label = 2;
3410
+ sourceHandler = _b.sent();
3411
+ scrapers = arrayableToArray(tools.scrapers);
3412
+ _loop_1 = function (scraper) {
3413
+ var partialPiecesUnchecked;
3414
+ return __generator(this, function (_c) {
3415
+ switch (_c.label) {
3416
+ case 0:
3417
+ if (!scraper.metadata.mimeTypes.includes(sourceHandler.mimeType)
3418
+ // <- TODO: [🦔] Implement mime-type wildcards
3419
+ ) {
3420
+ return [2 /*return*/, "continue"];
3421
+ }
3422
+ return [4 /*yield*/, scraper.scrape(sourceHandler)];
3423
+ case 1:
3424
+ partialPiecesUnchecked = _c.sent();
3425
+ if (partialPiecesUnchecked !== null) {
3426
+ partialPieces = __spreadArray([], __read(partialPiecesUnchecked), false);
3427
+ return [2 /*return*/, "break"];
3428
+ }
3429
+ console.warn(spaceTrim__default["default"](function (block) { return "\n Cannot scrape knowledge from source despite the scraper `".concat(scraper.metadata.className, "` supports the mime type \"").concat(sourceHandler.mimeType, "\".\n \n The source:\n > ").concat(block(knowledgeSource.sourceContent
3430
+ .split('\n')
3431
+ .map(function (line) { return "> ".concat(line); })
3432
+ .join('\n')), "\n\n ").concat(block($registeredScrapersMessage(scrapers)), "\n\n\n "); }));
3433
+ return [2 /*return*/];
3434
+ }
3435
+ });
3436
+ };
3437
+ _b.label = 2;
3397
3438
  case 2:
3398
- _d.trys.push([2, 7, 8, 9]);
3399
- _a = __values(arrayableToArray(tools.scrapers)), _b = _a.next();
3400
- _d.label = 3;
3439
+ _b.trys.push([2, 7, 8, 9]);
3440
+ scrapers_1 = __values(scrapers), scrapers_1_1 = scrapers_1.next();
3441
+ _b.label = 3;
3401
3442
  case 3:
3402
- if (!!_b.done) return [3 /*break*/, 6];
3403
- scraper = _b.value;
3404
- if (!scraper.metadata.mimeTypes.includes(sourceHandler.mimeType)
3405
- // <- TODO: [🦔] Implement mime-type wildcards
3406
- ) {
3407
- return [3 /*break*/, 5];
3408
- }
3409
- return [4 /*yield*/, scraper.scrape(sourceHandler)];
3443
+ if (!!scrapers_1_1.done) return [3 /*break*/, 6];
3444
+ scraper = scrapers_1_1.value;
3445
+ return [5 /*yield**/, _loop_1(scraper)];
3410
3446
  case 4:
3411
- partialPiecesUnchecked = _d.sent();
3412
- if (partialPiecesUnchecked !== null) {
3413
- partialPieces = __spreadArray([], __read(partialPiecesUnchecked), false);
3414
- // <- TODO: [🪓] Here should be no need for spreading new array, just `partialPieces = partialPiecesUnchecked`
3447
+ state_1 = _b.sent();
3448
+ if (state_1 === "break")
3415
3449
  return [3 /*break*/, 6];
3416
- }
3417
- _d.label = 5;
3450
+ _b.label = 5;
3418
3451
  case 5:
3419
- _b = _a.next();
3452
+ scrapers_1_1 = scrapers_1.next();
3420
3453
  return [3 /*break*/, 3];
3421
3454
  case 6: return [3 /*break*/, 9];
3422
3455
  case 7:
3423
- e_1_1 = _d.sent();
3456
+ e_1_1 = _b.sent();
3424
3457
  e_1 = { error: e_1_1 };
3425
3458
  return [3 /*break*/, 9];
3426
3459
  case 8:
3427
3460
  try {
3428
- if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
3461
+ if (scrapers_1_1 && !scrapers_1_1.done && (_a = scrapers_1.return)) _a.call(scrapers_1);
3429
3462
  }
3430
3463
  finally { if (e_1) throw e_1.error; }
3431
3464
  return [7 /*endfinally*/];
3432
3465
  case 9:
3433
3466
  if (partialPieces === null) {
3434
- throw new KnowledgeScrapeError(spaceTrim__default["default"](function (block) { return "\n Cannot scrape knowledge from source:\n \n > ".concat(block(knowledgeSource.sourceContent
3467
+ throw new KnowledgeScrapeError(spaceTrim__default["default"](function (block) { return "\n Cannot scrape knowledge\n \n The source:\n > ".concat(block(knowledgeSource.sourceContent
3435
3468
  .split('\n')
3436
3469
  .map(function (line) { return "> ".concat(line); })
3437
- .join('\n')), "\n\n No scraper found for the mime type \"").concat(sourceHandler.mimeType, "\"\n\n ").concat(block($registeredScrapersMessage()), "\n\n\n "); }));
3470
+ .join('\n')), "\n\n No scraper found for the mime type \"").concat(sourceHandler.mimeType, "\"\n\n ").concat(block($registeredScrapersMessage(scrapers)), "\n\n\n "); }));
3438
3471
  }
3439
3472
  pieces = partialPieces.map(function (partialPiece) { return (__assign(__assign({}, partialPiece), { sources: [
3440
3473
  {