@embedpdf/engines 1.0.11 → 1.0.12
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.
- package/dist/engine-B7CS6Qyp.cjs +2 -0
- package/dist/engine-B7CS6Qyp.cjs.map +1 -0
- package/dist/engine-M0_XZhss.js +5043 -0
- package/dist/engine-M0_XZhss.js.map +1 -0
- package/dist/index.cjs +1 -5846
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1613
- package/dist/index.js +339 -5824
- package/dist/index.js.map +1 -1
- package/dist/lib/converters/index.cjs +2 -0
- package/dist/lib/converters/index.cjs.map +1 -0
- package/dist/{converters.d.ts → lib/converters/index.d.ts} +7 -10
- package/dist/lib/converters/index.js +80 -0
- package/dist/{converters.cjs.map → lib/converters/index.js.map} +1 -1
- package/dist/lib/index.d.ts +7 -0
- package/dist/lib/mock/index.d.ts +25 -0
- package/dist/lib/pdfium/cache.d.ts +62 -0
- package/dist/{pdfium-direct-engine.d.ts → lib/pdfium/engine.d.ts} +73 -8
- package/dist/lib/pdfium/helper.d.ts +21 -0
- package/dist/lib/pdfium/index.cjs +2 -0
- package/dist/lib/pdfium/index.cjs.map +1 -0
- package/dist/lib/pdfium/index.d.ts +3 -0
- package/dist/lib/pdfium/index.js +13 -0
- package/dist/lib/pdfium/index.js.map +1 -0
- package/dist/lib/pdfium/runner.d.ts +16 -0
- package/dist/lib/pdfium/web/direct-engine.cjs +2 -0
- package/dist/lib/pdfium/web/direct-engine.cjs.map +1 -0
- package/dist/lib/pdfium/web/direct-engine.d.ts +3 -0
- package/dist/lib/pdfium/web/direct-engine.js +12 -0
- package/dist/lib/pdfium/web/direct-engine.js.map +1 -0
- package/dist/lib/pdfium/web/worker-engine.cjs +2 -0
- package/dist/lib/pdfium/web/worker-engine.cjs.map +1 -0
- package/dist/lib/pdfium/web/worker-engine.d.ts +7 -0
- package/dist/lib/pdfium/web/worker-engine.js +15 -0
- package/dist/lib/pdfium/web/worker-engine.js.map +1 -0
- package/dist/lib/pdfium/worker.d.ts +1 -0
- package/dist/lib/pdfium-engine.d.ts +1 -0
- package/dist/lib/webworker/engine.cjs +2 -0
- package/dist/lib/webworker/engine.cjs.map +1 -0
- package/dist/{worker.d.ts → lib/webworker/engine.d.ts} +4 -34
- package/dist/lib/webworker/engine.js +887 -0
- package/dist/lib/webworker/engine.js.map +1 -0
- package/dist/lib/webworker/index.d.ts +2 -0
- package/dist/lib/webworker/runner.d.ts +128 -0
- package/dist/lib/webworker-engine.d.ts +1 -0
- package/dist/preact/adapter.d.ts +1 -0
- package/dist/preact/index.cjs +2 -0
- package/dist/preact/index.cjs.map +1 -0
- package/dist/preact/index.d.ts +1 -0
- package/dist/preact/index.js +37 -0
- package/dist/preact/index.js.map +1 -0
- package/dist/react/adapter.d.ts +1 -0
- package/dist/react/index.cjs +2 -0
- package/dist/react/index.cjs.map +1 -0
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.js +37 -0
- package/dist/react/index.js.map +1 -0
- package/dist/runner-BcS-WEof.cjs +2 -0
- package/dist/runner-BcS-WEof.cjs.map +1 -0
- package/dist/runner-DUp_7Uu_.js +269 -0
- package/dist/runner-DUp_7Uu_.js.map +1 -0
- package/dist/shared-preact/hooks/index.d.ts +1 -0
- package/dist/{preact.d.ts → shared-preact/hooks/use-pdfium-engine.d.ts} +3 -5
- package/dist/shared-preact/index.d.ts +1 -0
- package/dist/shared-react/hooks/index.d.ts +1 -0
- package/dist/{react.d.ts → shared-react/hooks/use-pdfium-engine.d.ts} +3 -5
- package/dist/shared-react/index.d.ts +1 -0
- package/dist/vue/hooks/index.d.ts +1 -0
- package/dist/vue/hooks/use-pdfium-engine.d.ts +18 -0
- package/dist/vue/index.cjs +2 -0
- package/dist/vue/index.cjs.map +1 -0
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.js +39 -0
- package/dist/vue/index.js.map +1 -0
- package/package.json +41 -41
- package/dist/converters.cjs +0 -139
- package/dist/converters.js +0 -133
- package/dist/converters.js.map +0 -1
- package/dist/pdfium-direct-engine.cjs +0 -4400
- package/dist/pdfium-direct-engine.cjs.map +0 -1
- package/dist/pdfium-direct-engine.js +0 -4398
- package/dist/pdfium-direct-engine.js.map +0 -1
- package/dist/pdfium-worker-engine.cjs +0 -851
- package/dist/pdfium-worker-engine.cjs.map +0 -1
- package/dist/pdfium-worker-engine.d.ts +0 -314
- package/dist/pdfium-worker-engine.js +0 -849
- package/dist/pdfium-worker-engine.js.map +0 -1
- package/dist/pdfium.cjs +0 -4667
- package/dist/pdfium.cjs.map +0 -1
- package/dist/pdfium.d.ts +0 -1311
- package/dist/pdfium.js +0 -4661
- package/dist/pdfium.js.map +0 -1
- package/dist/preact.cjs +0 -41
- package/dist/preact.cjs.map +0 -1
- package/dist/preact.js +0 -39
- package/dist/preact.js.map +0 -1
- package/dist/react.cjs +0 -41
- package/dist/react.cjs.map +0 -1
- package/dist/react.js +0 -39
- package/dist/react.js.map +0 -1
- package/dist/worker.cjs +0 -839
- package/dist/worker.cjs.map +0 -1
- package/dist/worker.js +0 -836
- package/dist/worker.js.map +0 -1
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { init } from "@embedpdf/pdfium";
|
|
2
|
+
import { NoopLogger, PdfErrorCode } from "@embedpdf/models";
|
|
3
|
+
import { a as PdfiumEngine } from "./engine-M0_XZhss.js";
|
|
4
|
+
const LOG_SOURCE = "WebWorkerEngineRunner";
|
|
5
|
+
const LOG_CATEGORY = "Engine";
|
|
6
|
+
class EngineRunner {
|
|
7
|
+
/**
|
|
8
|
+
* Create instance of EngineRunnder
|
|
9
|
+
* @param logger - logger instance
|
|
10
|
+
*/
|
|
11
|
+
constructor(logger = new NoopLogger()) {
|
|
12
|
+
this.logger = logger;
|
|
13
|
+
this.execute = (request) => {
|
|
14
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "runner start exeucte request");
|
|
15
|
+
if (!this.engine) {
|
|
16
|
+
const error = {
|
|
17
|
+
type: "reject",
|
|
18
|
+
reason: {
|
|
19
|
+
code: PdfErrorCode.NotReady,
|
|
20
|
+
message: "engine has not started yet"
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const response = {
|
|
24
|
+
id: request.id,
|
|
25
|
+
type: "ExecuteResponse",
|
|
26
|
+
data: {
|
|
27
|
+
type: "error",
|
|
28
|
+
value: error
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
this.respond(response);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const engine = this.engine;
|
|
35
|
+
const { name, args } = request.data;
|
|
36
|
+
if (!engine[name]) {
|
|
37
|
+
const error = {
|
|
38
|
+
type: "reject",
|
|
39
|
+
reason: {
|
|
40
|
+
code: PdfErrorCode.NotSupport,
|
|
41
|
+
message: `engine method ${name} is not supported yet`
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const response = {
|
|
45
|
+
id: request.id,
|
|
46
|
+
type: "ExecuteResponse",
|
|
47
|
+
data: {
|
|
48
|
+
type: "error",
|
|
49
|
+
value: error
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
this.respond(response);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
let task;
|
|
56
|
+
switch (name) {
|
|
57
|
+
case "isSupport":
|
|
58
|
+
task = this.engine[name](...args);
|
|
59
|
+
break;
|
|
60
|
+
case "initialize":
|
|
61
|
+
task = this.engine[name](...args);
|
|
62
|
+
break;
|
|
63
|
+
case "destroy":
|
|
64
|
+
task = this.engine[name](...args);
|
|
65
|
+
break;
|
|
66
|
+
case "openDocumentUrl":
|
|
67
|
+
task = this.engine[name](...args);
|
|
68
|
+
break;
|
|
69
|
+
case "openDocumentFromBuffer":
|
|
70
|
+
task = this.engine[name](...args);
|
|
71
|
+
break;
|
|
72
|
+
case "openDocumentFromLoader":
|
|
73
|
+
task = this.engine[name](...args);
|
|
74
|
+
break;
|
|
75
|
+
case "getDocPermissions":
|
|
76
|
+
task = this.engine[name](...args);
|
|
77
|
+
break;
|
|
78
|
+
case "getDocUserPermissions":
|
|
79
|
+
task = this.engine[name](...args);
|
|
80
|
+
break;
|
|
81
|
+
case "getMetadata":
|
|
82
|
+
task = this.engine[name](...args);
|
|
83
|
+
break;
|
|
84
|
+
case "getBookmarks":
|
|
85
|
+
task = this.engine[name](...args);
|
|
86
|
+
break;
|
|
87
|
+
case "getSignatures":
|
|
88
|
+
task = this.engine[name](...args);
|
|
89
|
+
break;
|
|
90
|
+
case "renderPage":
|
|
91
|
+
task = this.engine[name](...args);
|
|
92
|
+
break;
|
|
93
|
+
case "renderPageRect":
|
|
94
|
+
task = this.engine[name](...args);
|
|
95
|
+
break;
|
|
96
|
+
case "renderAnnotation":
|
|
97
|
+
task = this.engine[name](...args);
|
|
98
|
+
break;
|
|
99
|
+
case "renderThumbnail":
|
|
100
|
+
task = this.engine[name](...args);
|
|
101
|
+
break;
|
|
102
|
+
case "getAllAnnotations":
|
|
103
|
+
task = this.engine[name](...args);
|
|
104
|
+
break;
|
|
105
|
+
case "getPageAnnotations":
|
|
106
|
+
task = this.engine[name](...args);
|
|
107
|
+
break;
|
|
108
|
+
case "createPageAnnotation":
|
|
109
|
+
task = this.engine[name](...args);
|
|
110
|
+
break;
|
|
111
|
+
case "updatePageAnnotation":
|
|
112
|
+
task = this.engine[name](...args);
|
|
113
|
+
break;
|
|
114
|
+
case "removePageAnnotation":
|
|
115
|
+
task = this.engine[name](...args);
|
|
116
|
+
break;
|
|
117
|
+
case "updateAnnotationColor":
|
|
118
|
+
task = this.engine[name](...args);
|
|
119
|
+
break;
|
|
120
|
+
case "getPageTextRects":
|
|
121
|
+
task = this.engine[name](...args);
|
|
122
|
+
break;
|
|
123
|
+
case "searchAllPages":
|
|
124
|
+
task = this.engine[name](...args);
|
|
125
|
+
break;
|
|
126
|
+
case "closeDocument":
|
|
127
|
+
task = this.engine[name](...args);
|
|
128
|
+
break;
|
|
129
|
+
case "saveAsCopy":
|
|
130
|
+
task = this.engine[name](...args);
|
|
131
|
+
break;
|
|
132
|
+
case "getAttachments":
|
|
133
|
+
task = this.engine[name](...args);
|
|
134
|
+
break;
|
|
135
|
+
case "readAttachmentContent":
|
|
136
|
+
task = this.engine[name](...args);
|
|
137
|
+
break;
|
|
138
|
+
case "setFormFieldValue":
|
|
139
|
+
task = this.engine[name](...args);
|
|
140
|
+
break;
|
|
141
|
+
case "flattenPage":
|
|
142
|
+
task = this.engine[name](...args);
|
|
143
|
+
break;
|
|
144
|
+
case "extractPages":
|
|
145
|
+
task = this.engine[name](...args);
|
|
146
|
+
break;
|
|
147
|
+
case "extractText":
|
|
148
|
+
task = this.engine[name](...args);
|
|
149
|
+
break;
|
|
150
|
+
case "getTextSlices":
|
|
151
|
+
task = this.engine[name](...args);
|
|
152
|
+
break;
|
|
153
|
+
case "getPageGlyphs":
|
|
154
|
+
task = this.engine[name](...args);
|
|
155
|
+
break;
|
|
156
|
+
case "getPageGeometry":
|
|
157
|
+
task = this.engine[name](...args);
|
|
158
|
+
break;
|
|
159
|
+
case "merge":
|
|
160
|
+
task = this.engine[name](...args);
|
|
161
|
+
break;
|
|
162
|
+
case "mergePages":
|
|
163
|
+
task = this.engine[name](...args);
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
task.wait(
|
|
167
|
+
(result) => {
|
|
168
|
+
const response = {
|
|
169
|
+
id: request.id,
|
|
170
|
+
type: "ExecuteResponse",
|
|
171
|
+
data: {
|
|
172
|
+
type: "result",
|
|
173
|
+
value: result
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
this.respond(response);
|
|
177
|
+
},
|
|
178
|
+
(error) => {
|
|
179
|
+
const response = {
|
|
180
|
+
id: request.id,
|
|
181
|
+
type: "ExecuteResponse",
|
|
182
|
+
data: {
|
|
183
|
+
type: "error",
|
|
184
|
+
value: error
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
this.respond(response);
|
|
188
|
+
}
|
|
189
|
+
);
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Listening on post message
|
|
194
|
+
*/
|
|
195
|
+
listen() {
|
|
196
|
+
self.onmessage = (evt) => {
|
|
197
|
+
return this.handle(evt);
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Handle post message
|
|
202
|
+
*/
|
|
203
|
+
handle(evt) {
|
|
204
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "webworker receive message event: ", evt.data);
|
|
205
|
+
try {
|
|
206
|
+
const request = evt.data;
|
|
207
|
+
switch (request.type) {
|
|
208
|
+
case "ExecuteRequest":
|
|
209
|
+
this.execute(request);
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
} catch (e) {
|
|
213
|
+
this.logger.info(
|
|
214
|
+
LOG_SOURCE,
|
|
215
|
+
LOG_CATEGORY,
|
|
216
|
+
"webworker met error when processing message event:",
|
|
217
|
+
e
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Send the ready response when pdf engine is ready
|
|
223
|
+
* @returns
|
|
224
|
+
*
|
|
225
|
+
* @protected
|
|
226
|
+
*/
|
|
227
|
+
ready() {
|
|
228
|
+
this.listen();
|
|
229
|
+
this.respond({
|
|
230
|
+
id: "0",
|
|
231
|
+
type: "ReadyResponse"
|
|
232
|
+
});
|
|
233
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "runner is ready");
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Send back the response
|
|
237
|
+
* @param response - response that needs sent back
|
|
238
|
+
*
|
|
239
|
+
* @protected
|
|
240
|
+
*/
|
|
241
|
+
respond(response) {
|
|
242
|
+
this.logger.debug(LOG_SOURCE, LOG_CATEGORY, "runner respond: ", response);
|
|
243
|
+
self.postMessage(response);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
class PdfiumEngineRunner extends EngineRunner {
|
|
247
|
+
/**
|
|
248
|
+
* Create an instance of PdfiumEngineRunner
|
|
249
|
+
* @param wasmBinary - wasm binary that contains the pdfium wasm file
|
|
250
|
+
*/
|
|
251
|
+
constructor(wasmBinary) {
|
|
252
|
+
super();
|
|
253
|
+
this.wasmBinary = wasmBinary;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Initialize runner
|
|
257
|
+
*/
|
|
258
|
+
async prepare() {
|
|
259
|
+
const wasmBinary = this.wasmBinary;
|
|
260
|
+
const wasmModule = await init({ wasmBinary });
|
|
261
|
+
this.engine = new PdfiumEngine(wasmModule);
|
|
262
|
+
this.ready();
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
export {
|
|
266
|
+
EngineRunner as E,
|
|
267
|
+
PdfiumEngineRunner as P
|
|
268
|
+
};
|
|
269
|
+
//# sourceMappingURL=runner-DUp_7Uu_.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-DUp_7Uu_.js","sources":["../src/lib/webworker/runner.ts","../src/lib/pdfium/runner.ts"],"sourcesContent":["import {\n Logger,\n NoopLogger,\n PdfEngine,\n PdfEngineError,\n PdfEngineMethodArgs,\n PdfEngineMethodName,\n PdfEngineMethodReturnType,\n PdfErrorCode,\n TaskReturn,\n} from '@embedpdf/models';\n\n/**\n * Request body that represent method calls of PdfEngine, it contains the\n * method name and arguments\n */\nexport type PdfEngineMethodRequestBody = {\n [P in PdfEngineMethodName]: {\n name: P;\n args: PdfEngineMethodArgs<P>;\n };\n}[PdfEngineMethodName];\n\n/**\n * Response body that represent return value of PdfEngine\n */\nexport type PdfEngineMethodResponseBody = {\n [P in PdfEngineMethodName]: TaskReturn<PdfEngineMethodReturnType<P>>;\n}[PdfEngineMethodName];\n\n/**\n * Request that abort the specified task\n */\nexport interface AbortRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'AbortRequest';\n}\n/**\n * Request that execute pdf engine method\n */\nexport interface ExecuteRequest {\n /**\n * message id\n */\n id: string;\n /**\n * request type\n */\n type: 'ExecuteRequest';\n /**\n * request body\n */\n data: PdfEngineMethodRequestBody;\n}\n/**\n * Response that execute pdf engine method\n */\nexport interface ExecuteResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ExecuteResponse';\n /**\n * response body\n */\n data: PdfEngineMethodResponseBody;\n}\n\n/**\n * Response that indicate engine is ready\n */\nexport interface ReadyResponse {\n /**\n * message id\n */\n id: string;\n /**\n * response type\n */\n type: 'ReadyResponse';\n}\n\n/**\n * Request type\n */\nexport type Request = ExecuteRequest | AbortRequest;\n/**\n * Response type\n */\nexport type Response = ExecuteResponse | ReadyResponse;\n\nconst LOG_SOURCE = 'WebWorkerEngineRunner';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Pdf engine runner, it will execute pdf engine based on the request it received and\n * send back the response with post message\n */\nexport class EngineRunner {\n engine: PdfEngine | undefined;\n\n /**\n * Create instance of EngineRunnder\n * @param logger - logger instance\n */\n constructor(public logger: Logger = new NoopLogger()) {}\n\n /**\n * Listening on post message\n */\n listen() {\n self.onmessage = (evt: MessageEvent<Request>) => {\n return this.handle(evt);\n };\n }\n\n /**\n * Handle post message\n */\n handle(evt: MessageEvent<Request>) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'webworker receive message event: ', evt.data);\n try {\n const request = evt.data as Request;\n switch (request.type) {\n case 'ExecuteRequest':\n this.execute(request);\n break;\n }\n } catch (e) {\n this.logger.info(\n LOG_SOURCE,\n LOG_CATEGORY,\n 'webworker met error when processing message event:',\n e,\n );\n }\n }\n\n /**\n * Send the ready response when pdf engine is ready\n * @returns\n *\n * @protected\n */\n ready() {\n this.listen();\n\n this.respond({\n id: '0',\n type: 'ReadyResponse',\n });\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner is ready');\n }\n\n /**\n * Execute the request\n * @param request - request that represent the pdf engine call\n * @returns\n *\n * @protected\n */\n execute = (request: ExecuteRequest) => {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner start exeucte request');\n if (!this.engine) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotReady,\n message: 'engine has not started yet',\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n const engine = this.engine;\n const { name, args } = request.data;\n if (!engine[name]) {\n const error: PdfEngineError = {\n type: 'reject',\n reason: {\n code: PdfErrorCode.NotSupport,\n message: `engine method ${name} is not supported yet`,\n },\n };\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n return;\n }\n\n let task: PdfEngineMethodReturnType<typeof name>;\n switch (name) {\n case 'isSupport':\n task = this.engine[name]!(...args);\n break;\n case 'initialize':\n task = this.engine[name]!(...args);\n break;\n case 'destroy':\n task = this.engine[name]!(...args);\n break;\n case 'openDocumentUrl':\n task = this.engine[name]!(...args);\n break;\n case 'openDocumentFromBuffer':\n task = this.engine[name]!(...args);\n break;\n case 'openDocumentFromLoader':\n task = this.engine[name]!(...args);\n break;\n case 'getDocPermissions':\n task = this.engine[name]!(...args);\n break;\n case 'getDocUserPermissions':\n task = this.engine[name]!(...args);\n break;\n case 'getMetadata':\n task = this.engine[name]!(...args);\n break;\n case 'getBookmarks':\n task = this.engine[name]!(...args);\n break;\n case 'getSignatures':\n task = this.engine[name]!(...args);\n break;\n case 'renderPage':\n task = this.engine[name]!(...args);\n break;\n case 'renderPageRect':\n task = this.engine[name]!(...args);\n break;\n case 'renderAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'renderThumbnail':\n task = this.engine[name]!(...args);\n break;\n case 'getAllAnnotations':\n task = this.engine[name]!(...args);\n break;\n case 'getPageAnnotations':\n task = this.engine[name]!(...args);\n break;\n case 'createPageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'updatePageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'removePageAnnotation':\n task = this.engine[name]!(...args);\n break;\n case 'updateAnnotationColor':\n task = this.engine[name]!(...args);\n break;\n case 'getPageTextRects':\n task = this.engine[name]!(...args);\n break;\n case 'searchAllPages':\n task = this.engine[name]!(...args);\n break;\n case 'closeDocument':\n task = this.engine[name]!(...args);\n break;\n case 'saveAsCopy':\n task = this.engine[name]!(...args);\n break;\n case 'getAttachments':\n task = this.engine[name]!(...args);\n break;\n case 'readAttachmentContent':\n task = this.engine[name]!(...args);\n break;\n case 'setFormFieldValue':\n task = this.engine[name]!(...args);\n break;\n case 'flattenPage':\n task = this.engine[name]!(...args);\n break;\n case 'extractPages':\n task = this.engine[name]!(...args);\n break;\n case 'extractText':\n task = this.engine[name]!(...args);\n break;\n case 'getTextSlices':\n task = this.engine[name]!(...args);\n break;\n case 'getPageGlyphs':\n task = this.engine[name]!(...args);\n break;\n case 'getPageGeometry':\n task = this.engine[name]!(...args);\n break;\n case 'merge':\n task = this.engine[name]!(...args);\n break;\n case 'mergePages':\n task = this.engine[name]!(...args);\n break;\n }\n\n task.wait(\n (result) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'result',\n value: result,\n },\n };\n this.respond(response);\n },\n (error) => {\n const response: ExecuteResponse = {\n id: request.id,\n type: 'ExecuteResponse',\n data: {\n type: 'error',\n value: error,\n },\n };\n this.respond(response);\n },\n );\n };\n\n /**\n * Send back the response\n * @param response - response that needs sent back\n *\n * @protected\n */\n respond(response: Response) {\n this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'runner respond: ', response);\n self.postMessage(response);\n }\n}\n","import { init } from '@embedpdf/pdfium';\nimport { EngineRunner } from '../webworker/runner';\nimport { PdfiumEngine } from './engine';\n\n/**\n * EngineRunner for pdfium-based wasm engine\n */\nexport class PdfiumEngineRunner extends EngineRunner {\n /**\n * Create an instance of PdfiumEngineRunner\n * @param wasmBinary - wasm binary that contains the pdfium wasm file\n */\n constructor(private wasmBinary: ArrayBuffer) {\n super();\n }\n\n /**\n * Initialize runner\n */\n async prepare() {\n const wasmBinary = this.wasmBinary;\n const wasmModule = await init({ wasmBinary });\n this.engine = new PdfiumEngine(wasmModule);\n this.ready();\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './use-pdfium-engine';
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { Logger, PdfEngine } from '@embedpdf/models';
|
|
3
2
|
interface UsePdfiumEngineProps {
|
|
4
3
|
wasmUrl?: string;
|
|
5
4
|
worker?: boolean;
|
|
6
5
|
logger?: Logger;
|
|
7
6
|
}
|
|
8
|
-
declare function usePdfiumEngine(config?: UsePdfiumEngineProps): {
|
|
7
|
+
export declare function usePdfiumEngine(config?: UsePdfiumEngineProps): {
|
|
9
8
|
engine: PdfEngine<Blob> | null;
|
|
10
9
|
isLoading: boolean;
|
|
11
10
|
error: Error | null;
|
|
12
11
|
};
|
|
13
|
-
|
|
14
|
-
export { usePdfiumEngine };
|
|
12
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './hooks';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './use-pdfium-engine';
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { Logger, PdfEngine } from '@embedpdf/models';
|
|
3
2
|
interface UsePdfiumEngineProps {
|
|
4
3
|
wasmUrl?: string;
|
|
5
4
|
worker?: boolean;
|
|
6
5
|
logger?: Logger;
|
|
7
6
|
}
|
|
8
|
-
declare function usePdfiumEngine(config?: UsePdfiumEngineProps): {
|
|
7
|
+
export declare function usePdfiumEngine(config?: UsePdfiumEngineProps): {
|
|
9
8
|
engine: PdfEngine<Blob> | null;
|
|
10
9
|
isLoading: boolean;
|
|
11
10
|
error: Error | null;
|
|
12
11
|
};
|
|
13
|
-
|
|
14
|
-
export { usePdfiumEngine };
|
|
12
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './hooks';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './use-pdfium-engine';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { Logger, PdfEngine } from '@embedpdf/models';
|
|
3
|
+
interface UsePdfiumEngineProps {
|
|
4
|
+
wasmUrl?: string;
|
|
5
|
+
worker?: boolean;
|
|
6
|
+
logger?: Logger;
|
|
7
|
+
}
|
|
8
|
+
interface UsePdfiumEngineResult {
|
|
9
|
+
engine: Ref<PdfEngine | null>;
|
|
10
|
+
isLoading: Ref<boolean>;
|
|
11
|
+
error: Ref<Error | null>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Vue composable that loads a PdfiumEngine (worker or direct)
|
|
15
|
+
* and keeps its lifetime tied to the component.
|
|
16
|
+
*/
|
|
17
|
+
export declare function usePdfiumEngine(props?: UsePdfiumEngineProps): UsePdfiumEngineResult;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.create,Object.defineProperty,Object.getOwnPropertyDescriptor,Object.getOwnPropertyNames,Object.getPrototypeOf,Object.prototype.hasOwnProperty;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),t="https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@1.0.12/dist/pdfium.wasm";exports.usePdfiumEngine=function(n={}){const{wasmUrl:r=t,worker:o=!0,logger:i}=n,u=e.ref(null),a=e.ref(!0),l=e.ref(null);async function c(){try{const{createPdfiumEngine:e}=o?await import("@embedpdf/engines/pdfium-worker-engine"):await import("@embedpdf/engines/pdfium-direct-engine");u.value=await e(r,i),a.value=!1}catch(e){l.value=e,a.value=!1}}function d(){var e,t;null==(t=null==(e=u.value)?void 0:e.destroy)||t.call(e),u.value=null,a.value=!0,l.value=null}return e.onMounted(c),e.onBeforeUnmount(d),e.watch((()=>[r,o,i]),(()=>{d(),c()})),{engine:u,isLoading:a,error:l}};
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-pdfium-engine.ts"],"sourcesContent":["import { ref, onMounted, onBeforeUnmount, watch, Ref } from 'vue';\nimport type { Logger, PdfEngine } from '@embedpdf/models';\n\nconst defaultWasmUrl =\n 'https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@__PDFIUM_VERSION__/dist/pdfium.wasm';\n\ninterface UsePdfiumEngineProps {\n wasmUrl?: string;\n worker?: boolean;\n logger?: Logger;\n}\n\ninterface UsePdfiumEngineResult {\n engine: Ref<PdfEngine | null>;\n isLoading: Ref<boolean>;\n error: Ref<Error | null>;\n}\n\n/**\n * Vue composable that loads a PdfiumEngine (worker or direct)\n * and keeps its lifetime tied to the component.\n */\nexport function usePdfiumEngine(props: UsePdfiumEngineProps = {}): UsePdfiumEngineResult {\n const { wasmUrl = defaultWasmUrl, worker = true, logger } = props;\n\n const engine = ref<PdfEngine | null>(null);\n const isLoading = ref(true);\n const error = ref<Error | null>(null);\n\n /* create / destroy tied to component lifecycle ----------------- */\n onMounted(loadEngine);\n onBeforeUnmount(destroyEngine);\n\n /* re‑load if reactive props change ----------------------------- */\n watch(\n () => [wasmUrl, worker, logger] as const,\n () => {\n destroyEngine();\n loadEngine();\n },\n );\n\n async function loadEngine() {\n try {\n const { createPdfiumEngine } = worker\n ? await import('@embedpdf/engines/pdfium-worker-engine')\n : await import('@embedpdf/engines/pdfium-direct-engine');\n\n engine.value = await createPdfiumEngine(wasmUrl, logger);\n isLoading.value = false;\n } catch (e) {\n error.value = e as Error;\n isLoading.value = false;\n }\n }\n\n function destroyEngine() {\n engine.value?.destroy?.();\n engine.value = null;\n isLoading.value = true;\n error.value = null;\n }\n\n return { engine, isLoading, error };\n}\n"],"names":["defaultWasmUrl","props","wasmUrl","worker","logger","engine","ref","isLoading","error","async","loadEngine","createPdfiumEngine","import","value","e","destroyEngine","_b","_a","destroy","call","onMounted","onBeforeUnmount","vue","watch"],"mappings":"4PAGMA,EACJ,gGAkBc,SAAgBC,EAA8B,IAC5D,MAAMC,QAAEA,EAAUF,EAAAG,OAAgBA,GAAS,EAAAC,OAAMA,GAAWH,EAEtDI,EAASC,MAAsB,MAC/BC,EAAYD,OAAI,GAChBE,EAAQF,MAAkB,MAehCG,eAAeC,IACT,IACI,MAAAC,mBAAEA,GAAuBR,QACrBS,OAAO,gDACPA,OAAO,0CAEjBP,EAAOQ,YAAcF,EAAmBT,EAASE,GACjDG,EAAUM,OAAQ,QACXC,GACPN,EAAMK,MAAQC,EACdP,EAAUM,OAAQ,CAAA,CACpB,CAGF,SAASE,YACP,OAAOC,EAAP,OAAOC,EAAAZ,EAAAQ,gBAAOK,UAAdF,EAAAG,KAAAF,GACAZ,EAAOQ,MAAQ,KACfN,EAAUM,OAAQ,EAClBL,EAAMK,MAAQ,IAAA,CAGT,OAjCPO,EAAAA,UAAUV,GACVW,EAAAA,gBAAgBN,GAGhBO,EAAAC,OACE,IAAM,CAACrB,EAASC,EAAQC,KACxB,KACgBW,IACHL,GAAA,IAyBR,CAAEL,SAAQE,YAAWC,QAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './hooks';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ref, onMounted, onBeforeUnmount, watch } from "vue";
|
|
2
|
+
const defaultWasmUrl = "https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@1.0.12/dist/pdfium.wasm";
|
|
3
|
+
function usePdfiumEngine(props = {}) {
|
|
4
|
+
const { wasmUrl = defaultWasmUrl, worker = true, logger } = props;
|
|
5
|
+
const engine = ref(null);
|
|
6
|
+
const isLoading = ref(true);
|
|
7
|
+
const error = ref(null);
|
|
8
|
+
onMounted(loadEngine);
|
|
9
|
+
onBeforeUnmount(destroyEngine);
|
|
10
|
+
watch(
|
|
11
|
+
() => [wasmUrl, worker, logger],
|
|
12
|
+
() => {
|
|
13
|
+
destroyEngine();
|
|
14
|
+
loadEngine();
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
async function loadEngine() {
|
|
18
|
+
try {
|
|
19
|
+
const { createPdfiumEngine } = worker ? await import("@embedpdf/engines/pdfium-worker-engine") : await import("@embedpdf/engines/pdfium-direct-engine");
|
|
20
|
+
engine.value = await createPdfiumEngine(wasmUrl, logger);
|
|
21
|
+
isLoading.value = false;
|
|
22
|
+
} catch (e) {
|
|
23
|
+
error.value = e;
|
|
24
|
+
isLoading.value = false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function destroyEngine() {
|
|
28
|
+
var _a, _b;
|
|
29
|
+
(_b = (_a = engine.value) == null ? void 0 : _a.destroy) == null ? void 0 : _b.call(_a);
|
|
30
|
+
engine.value = null;
|
|
31
|
+
isLoading.value = true;
|
|
32
|
+
error.value = null;
|
|
33
|
+
}
|
|
34
|
+
return { engine, isLoading, error };
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
usePdfiumEngine
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/vue/hooks/use-pdfium-engine.ts"],"sourcesContent":["import { ref, onMounted, onBeforeUnmount, watch, Ref } from 'vue';\nimport type { Logger, PdfEngine } from '@embedpdf/models';\n\nconst defaultWasmUrl =\n 'https://cdn.jsdelivr.net/npm/@embedpdf/pdfium@__PDFIUM_VERSION__/dist/pdfium.wasm';\n\ninterface UsePdfiumEngineProps {\n wasmUrl?: string;\n worker?: boolean;\n logger?: Logger;\n}\n\ninterface UsePdfiumEngineResult {\n engine: Ref<PdfEngine | null>;\n isLoading: Ref<boolean>;\n error: Ref<Error | null>;\n}\n\n/**\n * Vue composable that loads a PdfiumEngine (worker or direct)\n * and keeps its lifetime tied to the component.\n */\nexport function usePdfiumEngine(props: UsePdfiumEngineProps = {}): UsePdfiumEngineResult {\n const { wasmUrl = defaultWasmUrl, worker = true, logger } = props;\n\n const engine = ref<PdfEngine | null>(null);\n const isLoading = ref(true);\n const error = ref<Error | null>(null);\n\n /* create / destroy tied to component lifecycle ----------------- */\n onMounted(loadEngine);\n onBeforeUnmount(destroyEngine);\n\n /* re‑load if reactive props change ----------------------------- */\n watch(\n () => [wasmUrl, worker, logger] as const,\n () => {\n destroyEngine();\n loadEngine();\n },\n );\n\n async function loadEngine() {\n try {\n const { createPdfiumEngine } = worker\n ? await import('@embedpdf/engines/pdfium-worker-engine')\n : await import('@embedpdf/engines/pdfium-direct-engine');\n\n engine.value = await createPdfiumEngine(wasmUrl, logger);\n isLoading.value = false;\n } catch (e) {\n error.value = e as Error;\n isLoading.value = false;\n }\n }\n\n function destroyEngine() {\n engine.value?.destroy?.();\n engine.value = null;\n isLoading.value = true;\n error.value = null;\n }\n\n return { engine, isLoading, error };\n}\n"],"names":[],"mappings":";AAGA,MAAM,iBACJ;AAkBc,SAAA,gBAAgB,QAA8B,IAA2B;AACvF,QAAM,EAAE,UAAU,gBAAgB,SAAS,MAAM,WAAW;AAEtD,QAAA,SAAS,IAAsB,IAAI;AACnC,QAAA,YAAY,IAAI,IAAI;AACpB,QAAA,QAAQ,IAAkB,IAAI;AAGpC,YAAU,UAAU;AACpB,kBAAgB,aAAa;AAG7B;AAAA,IACE,MAAM,CAAC,SAAS,QAAQ,MAAM;AAAA,IAC9B,MAAM;AACU,oBAAA;AACH,iBAAA;AAAA,IAAA;AAAA,EAEf;AAEA,iBAAe,aAAa;AACtB,QAAA;AACI,YAAA,EAAE,mBAAmB,IAAI,SAC3B,MAAM,OAAO,wCAAwC,IACrD,MAAM,OAAO,wCAAwC;AAEzD,aAAO,QAAQ,MAAM,mBAAmB,SAAS,MAAM;AACvD,gBAAU,QAAQ;AAAA,aACX,GAAG;AACV,YAAM,QAAQ;AACd,gBAAU,QAAQ;AAAA,IAAA;AAAA,EACpB;AAGF,WAAS,gBAAgB;;AACvB,uBAAO,UAAP,mBAAc,YAAd;AACA,WAAO,QAAQ;AACf,cAAU,QAAQ;AAClB,UAAM,QAAQ;AAAA,EAAA;AAGT,SAAA,EAAE,QAAQ,WAAW,MAAM;AACpC;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@embedpdf/engines",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.12",
|
|
4
4
|
"description": "Pluggable runtime layer that abstracts over multiple PDF engines (PDF-ium, Web Workers, mocks, etc.) to provide a unified API for rendering, search, annotation, and other document-level operations in EmbedPDF.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -13,39 +13,44 @@
|
|
|
13
13
|
"require": "./dist/index.cjs"
|
|
14
14
|
},
|
|
15
15
|
"./pdfium": {
|
|
16
|
-
"types": "./dist/pdfium.d.ts",
|
|
17
|
-
"import": "./dist/pdfium.js",
|
|
18
|
-
"require": "./dist/pdfium.cjs"
|
|
16
|
+
"types": "./dist/lib/pdfium/index.d.ts",
|
|
17
|
+
"import": "./dist/lib/pdfium/index.js",
|
|
18
|
+
"require": "./dist/lib/pdfium/index.cjs"
|
|
19
19
|
},
|
|
20
20
|
"./worker": {
|
|
21
|
-
"types": "./dist/
|
|
22
|
-
"import": "./dist/
|
|
23
|
-
"require": "./dist/
|
|
21
|
+
"types": "./dist/lib/webworker/engine.d.ts",
|
|
22
|
+
"import": "./dist/lib/webworker/engine.js",
|
|
23
|
+
"require": "./dist/lib/webworker/engine.cjs"
|
|
24
24
|
},
|
|
25
25
|
"./converters": {
|
|
26
|
-
"types": "./dist/converters.d.ts",
|
|
27
|
-
"import": "./dist/converters.js",
|
|
28
|
-
"require": "./dist/converters.cjs"
|
|
26
|
+
"types": "./dist/lib/converters/index.d.ts",
|
|
27
|
+
"import": "./dist/lib/converters/index.js",
|
|
28
|
+
"require": "./dist/lib/converters/index.cjs"
|
|
29
29
|
},
|
|
30
30
|
"./pdfium-direct-engine": {
|
|
31
|
-
"types": "./dist/pdfium
|
|
32
|
-
"import": "./dist/pdfium
|
|
33
|
-
"require": "./dist/pdfium
|
|
31
|
+
"types": "./dist/lib/pdfium/web/direct-engine.d.ts",
|
|
32
|
+
"import": "./dist/lib/pdfium/web/direct-engine.js",
|
|
33
|
+
"require": "./dist/lib/pdfium/web/direct-engine.cjs"
|
|
34
34
|
},
|
|
35
35
|
"./pdfium-worker-engine": {
|
|
36
|
-
"types": "./dist/pdfium
|
|
37
|
-
"import": "./dist/pdfium
|
|
38
|
-
"require": "./dist/pdfium
|
|
36
|
+
"types": "./dist/lib/pdfium/web/worker-engine.d.ts",
|
|
37
|
+
"import": "./dist/lib/pdfium/web/worker-engine.js",
|
|
38
|
+
"require": "./dist/lib/pdfium/web/worker-engine.cjs"
|
|
39
39
|
},
|
|
40
40
|
"./react": {
|
|
41
|
-
"types": "./dist/react.d.ts",
|
|
42
|
-
"import": "./dist/react.js",
|
|
43
|
-
"require": "./dist/react.cjs"
|
|
41
|
+
"types": "./dist/react/index.d.ts",
|
|
42
|
+
"import": "./dist/react/index.js",
|
|
43
|
+
"require": "./dist/react/index.cjs"
|
|
44
44
|
},
|
|
45
45
|
"./preact": {
|
|
46
|
-
"types": "./dist/preact.d.ts",
|
|
47
|
-
"import": "./dist/preact.js",
|
|
48
|
-
"require": "./dist/preact.cjs"
|
|
46
|
+
"types": "./dist/preact/index.d.ts",
|
|
47
|
+
"import": "./dist/preact/index.js",
|
|
48
|
+
"require": "./dist/preact/index.cjs"
|
|
49
|
+
},
|
|
50
|
+
"./vue": {
|
|
51
|
+
"types": "./dist/vue/index.d.ts",
|
|
52
|
+
"import": "./dist/vue/index.js",
|
|
53
|
+
"require": "./dist/vue/index.cjs"
|
|
49
54
|
}
|
|
50
55
|
},
|
|
51
56
|
"keywords": [
|
|
@@ -69,39 +74,34 @@
|
|
|
69
74
|
"author": "Bob Singor, Ji Chang",
|
|
70
75
|
"license": "MIT",
|
|
71
76
|
"devDependencies": {
|
|
72
|
-
"@rollup/plugin-commonjs": "^28.0.6",
|
|
73
|
-
"@rollup/plugin-node-resolve": "^15.2.1",
|
|
74
|
-
"@rollup/plugin-replace": "^5.0.2",
|
|
75
|
-
"@rollup/plugin-terser": "^0.4.3",
|
|
76
|
-
"@rollup/plugin-typescript": "^11.1.2",
|
|
77
77
|
"@types/jest": "^29.5.14",
|
|
78
78
|
"@types/react": "^18.2.0",
|
|
79
|
-
"del": "^8.0.0",
|
|
80
79
|
"jest": "^29.7.0",
|
|
81
|
-
"rollup": "^3.28.0",
|
|
82
|
-
"rollup-plugin-dts": "^6.2.1",
|
|
83
80
|
"ts-jest": "^29.2.5",
|
|
84
|
-
"
|
|
85
|
-
"
|
|
81
|
+
"typescript": "^5.0.0",
|
|
82
|
+
"@embedpdf/build": "1.0.0"
|
|
86
83
|
},
|
|
87
84
|
"dependencies": {
|
|
88
|
-
"@embedpdf/models": "1.0.
|
|
89
|
-
"@embedpdf/pdfium": "1.0.
|
|
85
|
+
"@embedpdf/models": "1.0.12",
|
|
86
|
+
"@embedpdf/pdfium": "1.0.12"
|
|
90
87
|
},
|
|
91
88
|
"peerDependencies": {
|
|
92
89
|
"react": ">=16.8.0",
|
|
93
90
|
"react-dom": ">=16.8.0",
|
|
94
|
-
"preact": "^10.26.4"
|
|
91
|
+
"preact": "^10.26.4",
|
|
92
|
+
"vue": ">=3.2.0"
|
|
95
93
|
},
|
|
96
94
|
"publishConfig": {
|
|
97
95
|
"access": "public"
|
|
98
96
|
},
|
|
99
97
|
"scripts": {
|
|
100
|
-
"build": "
|
|
101
|
-
"build:
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
98
|
+
"build:base": "vite build --mode base",
|
|
99
|
+
"build:react": "vite build --mode react",
|
|
100
|
+
"build:preact": "vite build --mode preact",
|
|
101
|
+
"build:vue": "vite build --mode vue",
|
|
102
|
+
"build": "pnpm run clean && concurrently -c auto -n base,react,preact,vue \"vite build --mode base\" \"vite build --mode react\" \"vite build --mode preact\" \"vite build --mode vue\"",
|
|
103
|
+
"clean": "rimraf dist",
|
|
104
|
+
"lint": "eslint src --color",
|
|
105
|
+
"lint:fix": "eslint src --color --fix"
|
|
106
106
|
}
|
|
107
107
|
}
|