@promptbook/pdf 0.85.0-3 → 0.85.0-5

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.
@@ -1,7 +1,7 @@
1
1
  import type { Observable } from 'rxjs';
2
2
  import { PartialDeep } from 'type-fest';
3
- import type { string_SCREAMING_CASE } from '../utils/normalization/normalizeTo_SCREAMING_CASE';
4
3
  import type { task_id } from '../types/typeAliases';
4
+ import type { string_SCREAMING_CASE } from '../utils/normalization/normalizeTo_SCREAMING_CASE';
5
5
  import type { AbstractTaskResult } from './AbstractTaskResult';
6
6
  import type { PipelineExecutorResult } from './PipelineExecutorResult';
7
7
  /**
@@ -30,7 +30,7 @@ export declare function createTask<TTaskResult extends AbstractTaskResult>(optio
30
30
  */
31
31
  export type ExecutionTask = AbstractTask<PipelineExecutorResult> & {
32
32
  readonly taskType: 'EXECUTION';
33
- readonly taskId: `execution-${task_id}`;
33
+ readonly taskId: `exec-${task_id}`;
34
34
  };
35
35
  /**
36
36
  * Represents a task that prepares a pipeline
@@ -38,7 +38,7 @@ export type ExecutionTask = AbstractTask<PipelineExecutorResult> & {
38
38
  */
39
39
  export type PreparationTask = AbstractTask<PipelineExecutorResult> & {
40
40
  readonly taskType: 'PREPARATION';
41
- readonly taskId: `preparation-${task_id}`;
41
+ readonly taskId: `prep-${task_id}`;
42
42
  };
43
43
  /**
44
44
  * Base interface for all task types
@@ -62,6 +62,10 @@ export type AbstractTask<TTaskResult extends AbstractTaskResult> = {
62
62
  * Gets an observable stream of partial task results
63
63
  */
64
64
  asObservable(): Observable<PartialDeep<TTaskResult>>;
65
+ /**
66
+ * Gets just the current value which is mutated during the task processing
67
+ */
68
+ currentValue: PartialDeep<TTaskResult>;
65
69
  };
66
70
  export type Task = ExecutionTask | PreparationTask;
67
71
  export {};
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import type fs from 'node:fs/promises';
2
+ import type fs from 'fs/promises';
3
3
  /**
4
4
  * Container for all the tools needed to manipulate with filesystem
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptbook/pdf",
3
- "version": "0.85.0-3",
3
+ "version": "0.85.0-5",
4
4
  "description": "It's time for a paradigm shift. The future of software in plain English, French or Latin",
5
5
  "private": false,
6
6
  "sideEffects": false,
@@ -47,7 +47,7 @@
47
47
  "module": "./esm/index.es.js",
48
48
  "typings": "./esm/typings/src/_packages/pdf.index.d.ts",
49
49
  "peerDependencies": {
50
- "@promptbook/core": "0.85.0-3"
50
+ "@promptbook/core": "0.85.0-5"
51
51
  },
52
52
  "dependencies": {
53
53
  "crypto": "^1.0.1",
package/umd/index.umd.js CHANGED
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('node:fs/promises'), require('spacetrim'), require('crypto-js'), require('crypto-js/enc-hex'), require('node:path'), require('prettier'), require('prettier/parser-html'), require('rxjs'), require('crypto'), require('waitasecond'), require('crypto-js/sha256'), require('mime-types'), require('papaparse')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'node:fs/promises', 'spacetrim', 'crypto-js', 'crypto-js/enc-hex', 'node:path', 'prettier', 'prettier/parser-html', 'rxjs', 'crypto', 'waitasecond', 'crypto-js/sha256', 'mime-types', 'papaparse'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-pdf"] = {}, global.promises, global.spaceTrim, global.cryptoJs, global.hexEncoder, global.node_path, global.prettier, global.parserHtml, global.rxjs, global.crypto, global.waitasecond, global.sha256, global.mimeTypes, global.papaparse));
5
- })(this, (function (exports, promises, spaceTrim, cryptoJs, hexEncoder, node_path, prettier, parserHtml, rxjs, crypto, waitasecond, sha256, mimeTypes, papaparse) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('fs/promises'), require('spacetrim'), require('crypto-js'), require('crypto-js/enc-hex'), require('path'), require('prettier'), require('prettier/parser-html'), require('rxjs'), require('crypto'), require('waitasecond'), require('crypto-js/sha256'), require('mime-types'), require('papaparse')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'fs/promises', 'spacetrim', 'crypto-js', 'crypto-js/enc-hex', 'path', 'prettier', 'prettier/parser-html', 'rxjs', 'crypto', 'waitasecond', 'crypto-js/sha256', 'mime-types', 'papaparse'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-pdf"] = {}, global.promises, global.spaceTrim, global.cryptoJs, global.hexEncoder, global.path, global.prettier, global.parserHtml, global.rxjs, global.crypto, global.waitasecond, global.sha256, global.mimeTypes, global.papaparse));
5
+ })(this, (function (exports, promises, spaceTrim, cryptoJs, hexEncoder, path, prettier, parserHtml, rxjs, crypto, waitasecond, sha256, mimeTypes, papaparse) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -25,7 +25,7 @@
25
25
  * @generated
26
26
  * @see https://github.com/webgptorg/promptbook
27
27
  */
28
- var PROMPTBOOK_ENGINE_VERSION = '0.85.0-2';
28
+ var PROMPTBOOK_ENGINE_VERSION = '0.85.0-4';
29
29
  /**
30
30
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
31
31
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -869,7 +869,7 @@
869
869
  value = value.replace(/\.html$/, '');
870
870
  }
871
871
  else if (isValidFilePath(value)) {
872
- value = node_path.basename(value);
872
+ value = path.basename(value);
873
873
  // Note: Keeping extension in the name
874
874
  }
875
875
  value = value.split('/').join('-');
@@ -915,12 +915,12 @@
915
915
  semanticName = normalizeToKebabCase(titleToName((sourceFilename || url || '').split('intermediate').join(''))).substring(0, 20);
916
916
  pieces = ['intermediate', semanticName, hash].filter(function (piece) { return piece !== ''; });
917
917
  name = pieces.join('-').split('--').join('-');
918
- cacheFilename = node_path.join.apply(void 0, __spreadArray(__spreadArray([process.cwd(),
918
+ cacheFilename = path.join.apply(void 0, __spreadArray(__spreadArray([process.cwd(),
919
919
  cacheDirname], __read(nameToSubfolderPath(hash /* <- TODO: [🎎] Maybe add some SHA256 prefix */)), false), [name], false)).split('\\')
920
920
  .join('/') +
921
921
  '.' +
922
922
  extension;
923
- return [4 /*yield*/, promises.mkdir(node_path.dirname(cacheFilename), { recursive: true })];
923
+ return [4 /*yield*/, promises.mkdir(path.dirname(cacheFilename), { recursive: true })];
924
924
  case 1:
925
925
  _a.sent();
926
926
  isDestroyed = true;
@@ -2526,11 +2526,29 @@
2526
2526
  */
2527
2527
  function createTask(options) {
2528
2528
  var taskType = options.taskType, taskProcessCallback = options.taskProcessCallback;
2529
- var taskId = "".concat(taskType.toLowerCase(), "-").concat($randomToken(256 /* <- TODO: !!! To global config */));
2529
+ var taskId = "".concat(taskType.toLowerCase().substring(0, 4), "-").concat($randomToken(8 /* <- TODO: !!! To global config + Use Base58 to avoid simmilar char conflicts */));
2530
2530
  var partialResultSubject = new rxjs.BehaviorSubject({});
2531
2531
  var finalResultPromise = /* not await */ taskProcessCallback(function (newOngoingResult) {
2532
2532
  partialResultSubject.next(newOngoingResult);
2533
2533
  });
2534
+ finalResultPromise
2535
+ .catch(function (error) {
2536
+ // console.error('!!!!! Task failed:', error);
2537
+ partialResultSubject.error(error);
2538
+ })
2539
+ .then(function (value) {
2540
+ // console.error('!!!!! Task finished:', value);
2541
+ if (value) {
2542
+ try {
2543
+ assertsTaskSuccessful(value);
2544
+ partialResultSubject.next(value);
2545
+ }
2546
+ catch (error) {
2547
+ partialResultSubject.error(error);
2548
+ }
2549
+ }
2550
+ partialResultSubject.complete();
2551
+ });
2534
2552
  function asPromise(options) {
2535
2553
  return __awaiter(this, void 0, void 0, function () {
2536
2554
  var _a, isCrashedOnError, finalResult;
@@ -2541,7 +2559,9 @@
2541
2559
  return [4 /*yield*/, finalResultPromise];
2542
2560
  case 1:
2543
2561
  finalResult = _b.sent();
2562
+ console.error('!!!!! finalResult:', finalResult);
2544
2563
  if (isCrashedOnError) {
2564
+ console.error('!!!!! isCrashedOnError:', finalResult);
2545
2565
  assertsTaskSuccessful(finalResult);
2546
2566
  }
2547
2567
  return [2 /*return*/, finalResult];
@@ -2554,9 +2574,10 @@
2554
2574
  taskId: taskId,
2555
2575
  asPromise: asPromise,
2556
2576
  asObservable: function () {
2557
- return rxjs.concat(partialResultSubject.asObservable(), rxjs.from(asPromise({
2558
- isCrashedOnError: true,
2559
- })));
2577
+ return partialResultSubject.asObservable();
2578
+ },
2579
+ get currentValue() {
2580
+ return partialResultSubject.value;
2560
2581
  },
2561
2582
  };
2562
2583
  }
@@ -3684,9 +3705,9 @@
3684
3705
  }
3685
3706
  basename = url.split('/').pop() || titleToName(url);
3686
3707
  hash = sha256__default["default"](hexEncoder__default["default"].parse(url)).toString( /* hex */);
3687
- rootDirname_1 = node_path.join(process.cwd(), DEFAULT_DOWNLOAD_CACHE_DIRNAME);
3688
- filepath = node_path.join.apply(void 0, __spreadArray(__spreadArray([], __read(nameToSubfolderPath(hash /* <- TODO: [🎎] Maybe add some SHA256 prefix */)), false), ["".concat(basename.substring(0, MAX_FILENAME_LENGTH), ".").concat(mimeTypeToExtension(mimeType))], false));
3689
- return [4 /*yield*/, tools.fs.mkdir(node_path.dirname(node_path.join(rootDirname_1, filepath)), { recursive: true })];
3708
+ rootDirname_1 = path.join(process.cwd(), DEFAULT_DOWNLOAD_CACHE_DIRNAME);
3709
+ filepath = path.join.apply(void 0, __spreadArray(__spreadArray([], __read(nameToSubfolderPath(hash /* <- TODO: [🎎] Maybe add some SHA256 prefix */)), false), ["".concat(basename.substring(0, MAX_FILENAME_LENGTH), ".").concat(mimeTypeToExtension(mimeType))], false));
3710
+ return [4 /*yield*/, tools.fs.mkdir(path.dirname(path.join(rootDirname_1, filepath)), { recursive: true })];
3690
3711
  case 2:
3691
3712
  _h.sent();
3692
3713
  _g = (_f = Buffer).from;
@@ -3696,7 +3717,7 @@
3696
3717
  if (fileContent.length > DEFAULT_MAX_FILE_SIZE /* <- TODO: Allow to pass different value to remote server */) {
3697
3718
  throw new LimitReachedError("File is too large (".concat(Math.round(fileContent.length / 1024 / 1024), "MB). Maximum allowed size is ").concat(Math.round(DEFAULT_MAX_FILE_SIZE / 1024 / 1024), "MB."));
3698
3719
  }
3699
- return [4 /*yield*/, tools.fs.writeFile(node_path.join(rootDirname_1, filepath), fileContent)];
3720
+ return [4 /*yield*/, tools.fs.writeFile(path.join(rootDirname_1, filepath), fileContent)];
3700
3721
  case 4:
3701
3722
  _h.sent();
3702
3723
  // TODO: [💵] Check the file security
@@ -3712,7 +3733,7 @@
3712
3733
  throw new EnvironmentMismatchError('Can not import file knowledge in non-file pipeline');
3713
3734
  // <- TODO: [🧠] What is the best error type here`
3714
3735
  }
3715
- filename_1 = node_path.join(rootDirname, knowledgeSourceContent).split('\\').join('/');
3736
+ filename_1 = path.join(rootDirname, knowledgeSourceContent).split('\\').join('/');
3716
3737
  fileExtension = getFileExtension(filename_1);
3717
3738
  mimeType = extensionToMimeType(fileExtension || '');
3718
3739
  return [4 /*yield*/, isFileExisting(filename_1, tools.fs)];