@retab/node 1.0.96 → 1.0.99

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 (79) hide show
  1. package/README.md +39 -42
  2. package/dist/api/client.d.ts +4 -2
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js +4 -2
  5. package/dist/api/documents/client.d.ts +17 -11
  6. package/dist/api/documents/client.d.ts.map +1 -1
  7. package/dist/api/documents/client.js +85 -38
  8. package/dist/api/edit/agent/client.js +1 -1
  9. package/dist/api/edit/client.d.ts +1 -1
  10. package/dist/api/edit/client.js +1 -1
  11. package/dist/api/edit/templates/client.d.ts +1 -75
  12. package/dist/api/edit/templates/client.d.ts.map +1 -1
  13. package/dist/api/edit/templates/client.js +3 -130
  14. package/dist/api/evals/classify/client.d.ts +20 -0
  15. package/dist/api/evals/classify/client.d.ts.map +1 -0
  16. package/dist/api/evals/classify/client.js +25 -0
  17. package/dist/api/evals/client.d.ts +11 -0
  18. package/dist/api/evals/client.d.ts.map +1 -0
  19. package/dist/api/evals/client.js +12 -0
  20. package/dist/api/evals/extract/client.d.ts +287 -0
  21. package/dist/api/evals/extract/client.d.ts.map +1 -0
  22. package/dist/api/evals/extract/client.js +56 -0
  23. package/dist/api/evals/helpers.d.ts +30 -0
  24. package/dist/api/evals/helpers.d.ts.map +1 -0
  25. package/dist/api/evals/helpers.js +46 -0
  26. package/dist/api/evals/schemas.d.ts +6522 -0
  27. package/dist/api/evals/schemas.d.ts.map +1 -0
  28. package/dist/api/evals/schemas.js +219 -0
  29. package/dist/api/evals/split/client.d.ts +105 -0
  30. package/dist/api/evals/split/client.d.ts.map +1 -0
  31. package/dist/api/evals/split/client.js +28 -0
  32. package/dist/api/extractions/client.d.ts +3 -43
  33. package/dist/api/extractions/client.d.ts.map +1 -1
  34. package/dist/api/extractions/client.js +6 -67
  35. package/dist/api/files/client.d.ts +9 -1
  36. package/dist/api/files/client.d.ts.map +1 -1
  37. package/dist/api/files/client.js +11 -5
  38. package/dist/api/jobs/client.d.ts +12 -10
  39. package/dist/api/jobs/client.d.ts.map +1 -1
  40. package/dist/api/jobs/client.js +13 -17
  41. package/dist/api/models/client.d.ts +3 -10
  42. package/dist/api/models/client.d.ts.map +1 -1
  43. package/dist/api/models/client.js +9 -8
  44. package/dist/api/projects/client.d.ts +1640 -4
  45. package/dist/api/projects/client.d.ts.map +1 -1
  46. package/dist/api/projects/client.js +457 -28
  47. package/dist/api/schemas/client.d.ts +3 -0
  48. package/dist/api/schemas/client.d.ts.map +1 -1
  49. package/dist/api/schemas/client.js +1 -1
  50. package/dist/api/workflows/blocks/client.d.ts +67 -0
  51. package/dist/api/workflows/blocks/client.d.ts.map +1 -0
  52. package/dist/api/workflows/blocks/client.js +132 -0
  53. package/dist/api/workflows/client.d.ts +90 -2
  54. package/dist/api/workflows/client.d.ts.map +1 -1
  55. package/dist/api/workflows/client.js +153 -1
  56. package/dist/api/workflows/edges/client.d.ts +66 -0
  57. package/dist/api/workflows/edges/client.d.ts.map +1 -0
  58. package/dist/api/workflows/edges/client.js +120 -0
  59. package/dist/api/workflows/runs/client.d.ts +57 -113
  60. package/dist/api/workflows/runs/client.d.ts.map +1 -1
  61. package/dist/api/workflows/runs/client.js +118 -119
  62. package/dist/api/workflows/runs/steps/client.d.ts +35 -13
  63. package/dist/api/workflows/runs/steps/client.d.ts.map +1 -1
  64. package/dist/api/workflows/runs/steps/client.js +63 -15
  65. package/dist/client.d.ts +4 -2
  66. package/dist/client.d.ts.map +1 -1
  67. package/dist/client.js +79 -5
  68. package/dist/generated_types.d.ts +7778 -2745
  69. package/dist/generated_types.d.ts.map +1 -1
  70. package/dist/generated_types.js +711 -70
  71. package/dist/mime.d.ts.map +1 -1
  72. package/dist/mime.js +11 -1
  73. package/dist/schema_types.d.ts +2 -2
  74. package/dist/schema_types.d.ts.map +1 -1
  75. package/dist/schema_types.js +2 -2
  76. package/dist/types.d.ts +655 -109
  77. package/dist/types.d.ts.map +1 -1
  78. package/dist/types.js +84 -14
  79. package/package.json +1 -1
package/dist/client.js CHANGED
@@ -1,5 +1,22 @@
1
1
  import * as z from "zod";
2
2
  import * as crypto from "crypto";
3
+ const PYTHON_PUBLIC_PREPARE_METHODS = {
4
+ APIModels: ["list"],
5
+ APISchemas: ["generate"],
6
+ APIExtractions: ["list", "download", "update", "get", "sources", "delete"],
7
+ APIFiles: ["upload", "list", "get", "get_download_link"],
8
+ APIProjects: ["create", "get", "list", "delete", "publish", "extract", "split"],
9
+ ProjectDatasets: ["create", "get", "list", "update", "delete", "duplicate", "add_document", "get_document", "list_documents", "update_document", "delete_document"],
10
+ ProjectIterations: ["create", "get", "list", "update_draft", "delete", "finalize", "get_schema", "process_documents", "get_document", "list_documents", "update_document", "delete_document", "get_metrics"],
11
+ APIWorkflows: ["get", "list", "create", "update", "delete", "publish", "duplicate", "get_entities"],
12
+ APIWorkflowBlocks: ["list", "get", "create", "create_batch", "update", "delete"],
13
+ APIWorkflowEdges: ["list", "get", "create", "create_batch", "delete", "delete_all"],
14
+ APIWorkflowRuns: ["create", "get", "list", "delete", "cancel", "restart", "resume"],
15
+ APIWorkflowRunSteps: ["get", "list", "get_many"],
16
+ APIEvalsExtract: ["process", "process_stream"],
17
+ APIEvalsSplit: ["process"],
18
+ APIEvalsClassify: ["process"],
19
+ };
3
20
  async function* streamResponse(schema, response) {
4
21
  let body = "";
5
22
  let depth = 0;
@@ -57,7 +74,7 @@ export class AbstractClient {
57
74
  if (!bodyType) {
58
75
  return;
59
76
  }
60
- if (response.headers.get("Content-Type") !== "application/json")
77
+ if (!response.headers.get("Content-Type")?.startsWith("application/json"))
61
78
  throw new APIError(response.status, "Response is not JSON");
62
79
  return bodyType.parseAsync(await response.json());
63
80
  }
@@ -66,7 +83,7 @@ export class AbstractClient {
66
83
  if (!response.ok) {
67
84
  throw new APIError(response.status, await response.text());
68
85
  }
69
- if (response.headers.get("Content-Type") !== "application/stream+json")
86
+ if (!response.headers.get("Content-Type")?.startsWith("application/stream+json"))
70
87
  throw new APIError(response.status, "Response is not stream JSON");
71
88
  return streamResponse(schema, response);
72
89
  }
@@ -75,10 +92,66 @@ export class CompositionClient extends AbstractClient {
75
92
  constructor(client) {
76
93
  super();
77
94
  this._client = client;
95
+ this._installPrepareMethods();
78
96
  }
79
97
  _fetch(params) {
80
98
  return this._client["_fetch"](params);
81
99
  }
100
+ _installPrepareMethods() {
101
+ const allowedMethods = PYTHON_PUBLIC_PREPARE_METHODS[this.constructor.name] ?? [];
102
+ if (allowedMethods.length === 0) {
103
+ return;
104
+ }
105
+ for (const methodName of allowedMethods) {
106
+ const method = this[methodName];
107
+ const prepareMethodName = `prepare_${methodName}`;
108
+ if (typeof method !== "function" || prepareMethodName in this) {
109
+ continue;
110
+ }
111
+ Object.defineProperty(this, prepareMethodName, {
112
+ configurable: true,
113
+ enumerable: false,
114
+ writable: false,
115
+ value: (...args) => this._capturePreparedRequest(methodName, args),
116
+ });
117
+ }
118
+ }
119
+ async _capturePreparedRequest(methodName, args) {
120
+ let capturedRequest;
121
+ const self = this;
122
+ const originalFetch = self._fetch;
123
+ const originalFetchJson = self._fetchJson;
124
+ const originalFetchStream = self._fetchStream;
125
+ self._fetch = async (params) => {
126
+ capturedRequest = params;
127
+ return new Response("{}", {
128
+ status: 200,
129
+ headers: {
130
+ "Content-Type": "application/json",
131
+ },
132
+ });
133
+ };
134
+ self._fetchJson = async (...fetchArgs) => {
135
+ capturedRequest = (fetchArgs.length === 2 ? fetchArgs[1] : fetchArgs[0]);
136
+ return {};
137
+ };
138
+ self._fetchStream = async (...fetchArgs) => {
139
+ capturedRequest = fetchArgs[1];
140
+ return (async function* emptyStream() { })();
141
+ };
142
+ try {
143
+ await self[methodName](...args);
144
+ }
145
+ finally {
146
+ self._fetch = originalFetch;
147
+ self._fetchJson = originalFetchJson;
148
+ self._fetchStream = originalFetchStream;
149
+ }
150
+ if (!capturedRequest) {
151
+ throw new Error(`Unable to capture prepared request for ${methodName}`);
152
+ }
153
+ return capturedRequest;
154
+ }
82
155
  }
83
156
  export class APIError extends Error {
84
157
  constructor(status, info) {
@@ -116,7 +189,7 @@ export class FetcherClient extends AbstractClient {
116
189
  if (params.params) {
117
190
  query = "?" + new URLSearchParams(Object.fromEntries(Object.entries(params.params).filter(([_, v]) => v !== undefined))).toString();
118
191
  }
119
- let url = (this.options.baseUrl || "https://api.retab.com") + params.url + query;
192
+ let url = (this.options.baseUrl || "https://api.retab.com/v1") + params.url + query;
120
193
  let headers = params.headers || {};
121
194
  let init = {
122
195
  method: params.method,
@@ -124,8 +197,9 @@ export class FetcherClient extends AbstractClient {
124
197
  if (params.method !== "GET") {
125
198
  if (params.bodyMime === "multipart/form-data") {
126
199
  let formData = new FormData();
127
- for (const key of Object.keys(params.body || {})) {
128
- let value = params.body[key];
200
+ const multipartBody = (params.body || {});
201
+ for (const key of Object.keys(multipartBody)) {
202
+ let value = multipartBody[key];
129
203
  if (Array.isArray(value)) {
130
204
  for (const item of value) {
131
205
  formData.append(key, item);