mindee 2.0.0 → 2.0.1

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 (69) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/README.md +15 -11
  3. package/bin/mindee.d.ts +2 -0
  4. package/bin/mindee.js +5 -0
  5. package/package.json +68 -68
  6. package/{dist/src → src}/api/endpoint.d.ts +0 -0
  7. package/{dist/src → src}/api/endpoint.js +5 -2
  8. package/{dist/src → src}/api/index.d.ts +0 -0
  9. package/{dist/src → src}/api/index.js +0 -0
  10. package/{dist/src → src}/api/response.d.ts +0 -0
  11. package/{dist/src → src}/api/response.js +0 -0
  12. package/{dist/src → src}/cli.d.ts +0 -0
  13. package/src/cli.js +114 -0
  14. package/{dist/src → src}/client.d.ts +0 -0
  15. package/{dist/src → src}/client.js +35 -46
  16. package/{dist/src → src}/constants.d.ts +0 -0
  17. package/{dist/src → src}/constants.js +0 -0
  18. package/{dist/src → src}/documents/custom.d.ts +0 -0
  19. package/{dist/src → src}/documents/custom.js +0 -0
  20. package/{dist/src → src}/documents/document.d.ts +0 -0
  21. package/{dist/src → src}/documents/document.js +5 -6
  22. package/{dist/src → src}/documents/documentConfig.d.ts +0 -0
  23. package/{dist/src → src}/documents/documentConfig.js +21 -38
  24. package/{dist/src → src}/documents/financialDocument.d.ts +0 -0
  25. package/{dist/src → src}/documents/financialDocument.js +4 -1
  26. package/{dist/src → src}/documents/index.d.ts +0 -0
  27. package/{dist/src → src}/documents/index.js +0 -0
  28. package/{dist/src → src}/documents/invoice.d.ts +0 -0
  29. package/{dist/src → src}/documents/invoice.js +0 -0
  30. package/{dist/src → src}/documents/passport.d.ts +0 -0
  31. package/{dist/src → src}/documents/passport.js +0 -0
  32. package/{dist/src → src}/documents/receipt.d.ts +0 -0
  33. package/{dist/src → src}/documents/receipt.js +0 -0
  34. package/{dist/src → src}/errors/handler.d.ts +0 -0
  35. package/{dist/src → src}/errors/handler.js +0 -0
  36. package/{dist/src → src}/fields/amount.d.ts +0 -0
  37. package/{dist/src → src}/fields/amount.js +0 -0
  38. package/{dist/src → src}/fields/companyRegistration.d.ts +0 -0
  39. package/{dist/src → src}/fields/companyRegistration.js +0 -0
  40. package/{dist/src → src}/fields/customDocs.d.ts +2 -2
  41. package/{dist/src → src}/fields/customDocs.js +4 -4
  42. package/{dist/src → src}/fields/date.d.ts +0 -0
  43. package/{dist/src → src}/fields/date.js +0 -0
  44. package/{dist/src → src}/fields/field.d.ts +0 -0
  45. package/{dist/src → src}/fields/field.js +0 -0
  46. package/{dist/src → src}/fields/fullText.d.ts +0 -0
  47. package/{dist/src → src}/fields/fullText.js +0 -0
  48. package/{dist/src → src}/fields/index.d.ts +1 -1
  49. package/{dist/src → src}/fields/index.js +2 -2
  50. package/{dist/src → src}/fields/locale.d.ts +0 -0
  51. package/{dist/src → src}/fields/locale.js +0 -0
  52. package/{dist/src → src}/fields/orientation.d.ts +0 -0
  53. package/{dist/src → src}/fields/orientation.js +0 -0
  54. package/{dist/src → src}/fields/paymentDetails.d.ts +0 -0
  55. package/{dist/src → src}/fields/paymentDetails.js +0 -0
  56. package/{dist/src → src}/fields/tax.d.ts +0 -0
  57. package/{dist/src → src}/fields/tax.js +1 -2
  58. package/{dist/src → src}/geometry.d.ts +0 -0
  59. package/{dist/src → src}/geometry.js +0 -0
  60. package/{dist/src → src}/index.d.ts +0 -0
  61. package/{dist/src → src}/index.js +0 -0
  62. package/{dist/src → src}/inputs.d.ts +0 -0
  63. package/src/inputs.js +196 -0
  64. package/{dist/src → src}/logger.d.ts +0 -0
  65. package/{dist/src → src}/logger.js +0 -0
  66. package/bin/mindee +0 -3
  67. package/dist/package.json +0 -70
  68. package/dist/src/cli.js +0 -117
  69. package/dist/src/inputs.js +0 -223
@@ -1,223 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.BytesInput = exports.StreamInput = exports.Base64Input = exports.PathInput = exports.Input = exports.INPUT_TYPE_PATH = exports.INPUT_TYPE_BYTES = exports.INPUT_TYPE_BASE64 = exports.INPUT_TYPE_STREAM = void 0;
36
- const fs_1 = require("fs");
37
- const path = __importStar(require("path"));
38
- const fileType = __importStar(require("file-type"));
39
- const handler_1 = require("./errors/handler");
40
- const pdf_lib_1 = require("pdf-lib");
41
- const node_buffer_1 = require("node:buffer");
42
- const logger_1 = require("./logger");
43
- exports.INPUT_TYPE_STREAM = "stream";
44
- exports.INPUT_TYPE_BASE64 = "base64";
45
- exports.INPUT_TYPE_BYTES = "bytes";
46
- exports.INPUT_TYPE_PATH = "path";
47
- const MIMETYPES = new Map([
48
- [".pdf", "application/pdf"],
49
- [".heic", "image/heic"],
50
- [".jpg", "image/jpeg"],
51
- [".jpeg", "image/jpeg"],
52
- [".png", "image/png"],
53
- [".tif", "image/tiff"],
54
- [".tiff", "image/tiff"],
55
- [".webp", "image/webp"],
56
- ]);
57
- const ALLOWED_INPUT_TYPES = [
58
- exports.INPUT_TYPE_STREAM,
59
- exports.INPUT_TYPE_BASE64,
60
- exports.INPUT_TYPE_BYTES,
61
- exports.INPUT_TYPE_PATH,
62
- ];
63
- class Input {
64
- /**
65
- * @param {String} inputType - the type of input used in file ("base64", "path", "dummy").
66
- * NB: dummy is only used for tests purposes
67
- * @param {Boolean} cutPages
68
- * NB: Because of async calls, init() should be called after creating the object
69
- */
70
- constructor({ inputType }) {
71
- this.MAX_DOC_PAGES = 3;
72
- this.filename = "";
73
- this.mimeType = "";
74
- this.fileObject = node_buffer_1.Buffer.alloc(0);
75
- // Check if inputType is valid
76
- if (!ALLOWED_INPUT_TYPES.includes(inputType)) {
77
- const allowed = Array.from(MIMETYPES.keys()).join(", ");
78
- handler_1.errorHandler.throw(new Error(`Invalid input type, must be one of ${allowed}.`));
79
- }
80
- this.inputType = inputType;
81
- logger_1.logger.debug(`Loading file from: ${inputType}`);
82
- }
83
- init() {
84
- return __awaiter(this, void 0, void 0, function* () {
85
- throw new Error("not Implemented");
86
- });
87
- }
88
- isPdf() {
89
- return this.mimeType === "application/pdf";
90
- }
91
- checkMimetype() {
92
- return __awaiter(this, void 0, void 0, function* () {
93
- let mimeType;
94
- const fileExt = path.extname(this.filename);
95
- if (fileExt) {
96
- mimeType = MIMETYPES.get(fileExt.toLowerCase()) || "";
97
- }
98
- else {
99
- const guess = yield fileType.fromBuffer(this.fileObject);
100
- if (guess !== undefined) {
101
- mimeType = guess.mime;
102
- }
103
- else {
104
- throw "Could not determine the MIME type of the file";
105
- }
106
- }
107
- if (!mimeType) {
108
- const allowed = Array.from(MIMETYPES.keys()).join(", ");
109
- const err = new Error(`Invalid file type, must be one of ${allowed}.`);
110
- handler_1.errorHandler.throw(err);
111
- }
112
- logger_1.logger.debug(`File is of type: ${mimeType}`);
113
- return mimeType;
114
- });
115
- }
116
- countPages() {
117
- return __awaiter(this, void 0, void 0, function* () {
118
- const pdfDocument = yield pdf_lib_1.PDFDocument.load(this.fileObject, {
119
- ignoreEncryption: true,
120
- });
121
- return pdfDocument.getPageCount();
122
- });
123
- }
124
- /** Merge PDF pages */
125
- cutPdf() {
126
- return __awaiter(this, void 0, void 0, function* () {
127
- const currentPdf = yield pdf_lib_1.PDFDocument.load(this.fileObject, {
128
- ignoreEncryption: true,
129
- });
130
- const pdfLength = currentPdf.getPageCount();
131
- if (pdfLength <= this.MAX_DOC_PAGES) {
132
- return;
133
- }
134
- const newPdf = yield pdf_lib_1.PDFDocument.create();
135
- const pagesNumbers = [0, pdfLength - 2, pdfLength - 1].slice(0, this.MAX_DOC_PAGES);
136
- logger_1.logger.debug(`Cutting PDF, keeping pages: ${pagesNumbers}`);
137
- const pages = yield newPdf.copyPages(currentPdf, pagesNumbers);
138
- pages.forEach((page) => newPdf.addPage(page));
139
- const data = yield newPdf.save();
140
- this.fileObject = node_buffer_1.Buffer.from(data);
141
- });
142
- }
143
- }
144
- exports.Input = Input;
145
- class PathInput extends Input {
146
- constructor({ inputPath }) {
147
- super({
148
- inputType: exports.INPUT_TYPE_PATH,
149
- });
150
- this.inputPath = inputPath;
151
- this.filename = path.basename(this.inputPath);
152
- }
153
- init() {
154
- return __awaiter(this, void 0, void 0, function* () {
155
- logger_1.logger.debug(`Loading from: ${this.inputPath}`);
156
- this.fileObject = node_buffer_1.Buffer.from(yield fs_1.promises.readFile(this.inputPath));
157
- this.mimeType = yield this.checkMimetype();
158
- });
159
- }
160
- }
161
- exports.PathInput = PathInput;
162
- class Base64Input extends Input {
163
- constructor({ inputString, filename }) {
164
- super({
165
- inputType: exports.INPUT_TYPE_BASE64,
166
- });
167
- this.filename = filename;
168
- this.inputString = inputString;
169
- }
170
- init() {
171
- return __awaiter(this, void 0, void 0, function* () {
172
- this.fileObject = node_buffer_1.Buffer.from(this.inputString, "base64");
173
- this.mimeType = yield this.checkMimetype();
174
- // clear out the string
175
- this.inputString = "";
176
- });
177
- }
178
- }
179
- exports.Base64Input = Base64Input;
180
- class StreamInput extends Input {
181
- constructor({ inputStream, filename }) {
182
- super({
183
- inputType: exports.INPUT_TYPE_STREAM,
184
- });
185
- this.filename = filename;
186
- this.inputStream = inputStream;
187
- }
188
- init() {
189
- return __awaiter(this, void 0, void 0, function* () {
190
- this.fileObject = yield this.stream2buffer(this.inputStream);
191
- this.mimeType = yield this.checkMimetype();
192
- });
193
- }
194
- stream2buffer(stream) {
195
- return __awaiter(this, void 0, void 0, function* () {
196
- return new Promise((resolve, reject) => {
197
- const _buf = Array();
198
- stream.on("data", (chunk) => _buf.push(chunk));
199
- stream.on("end", () => resolve(node_buffer_1.Buffer.concat(_buf)));
200
- stream.on("error", (err) => reject(`Error converting stream - ${err}`));
201
- });
202
- });
203
- }
204
- }
205
- exports.StreamInput = StreamInput;
206
- class BytesInput extends Input {
207
- constructor({ inputBytes, filename }) {
208
- super({
209
- inputType: exports.INPUT_TYPE_BYTES,
210
- });
211
- this.filename = filename;
212
- this.inputBytes = inputBytes;
213
- }
214
- init() {
215
- return __awaiter(this, void 0, void 0, function* () {
216
- this.fileObject = node_buffer_1.Buffer.from(this.inputBytes, "hex");
217
- this.mimeType = yield this.checkMimetype();
218
- // clear out the string
219
- this.inputBytes = "";
220
- });
221
- }
222
- }
223
- exports.BytesInput = BytesInput;