website-scrap-engine 0.8.7 → 0.9.0
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/README.md +245 -39
- package/lib/downloader/main.d.ts.map +1 -1
- package/lib/downloader/main.js +15 -16
- package/lib/downloader/main.js.map +1 -1
- package/lib/downloader/multi.d.ts.map +1 -1
- package/lib/downloader/multi.js +3 -4
- package/lib/downloader/multi.js.map +1 -1
- package/lib/downloader/pipeline-executor-impl.d.ts +6 -3
- package/lib/downloader/pipeline-executor-impl.d.ts.map +1 -1
- package/lib/downloader/pipeline-executor-impl.js +86 -2
- package/lib/downloader/pipeline-executor-impl.js.map +1 -1
- package/lib/downloader/single.d.ts.map +1 -1
- package/lib/downloader/single.js +4 -5
- package/lib/downloader/single.js.map +1 -1
- package/lib/downloader/worker-pool.d.ts.map +1 -1
- package/lib/downloader/worker-pool.js +12 -7
- package/lib/downloader/worker-pool.js.map +1 -1
- package/lib/downloader/worker-type.d.ts +2 -2
- package/lib/downloader/worker-type.d.ts.map +1 -1
- package/lib/downloader/worker.js +2 -4
- package/lib/downloader/worker.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/life-cycle/adapters.d.ts +7 -1
- package/lib/life-cycle/adapters.d.ts.map +1 -1
- package/lib/life-cycle/adapters.js +6 -0
- package/lib/life-cycle/adapters.js.map +1 -1
- package/lib/life-cycle/default-life-cycle.d.ts.map +1 -1
- package/lib/life-cycle/default-life-cycle.js +3 -1
- package/lib/life-cycle/default-life-cycle.js.map +1 -1
- package/lib/life-cycle/default-status-listener.d.ts +4 -0
- package/lib/life-cycle/default-status-listener.d.ts.map +1 -0
- package/lib/life-cycle/default-status-listener.js +38 -0
- package/lib/life-cycle/default-status-listener.js.map +1 -0
- package/lib/life-cycle/download-resource.d.ts.map +1 -1
- package/lib/life-cycle/download-resource.js +13 -3
- package/lib/life-cycle/download-resource.js.map +1 -1
- package/lib/life-cycle/index.d.ts +1 -0
- package/lib/life-cycle/index.d.ts.map +1 -1
- package/lib/life-cycle/index.js +1 -0
- package/lib/life-cycle/index.js.map +1 -1
- package/lib/life-cycle/pipeline-executor.d.ts +10 -3
- package/lib/life-cycle/pipeline-executor.d.ts.map +1 -1
- package/lib/life-cycle/types.d.ts +56 -4
- package/lib/life-cycle/types.d.ts.map +1 -1
- package/lib/logger/default-logger.d.ts +3 -0
- package/lib/logger/default-logger.d.ts.map +1 -0
- package/lib/logger/default-logger.js +11 -0
- package/lib/logger/default-logger.js.map +1 -0
- package/lib/logger/log4js-adapter.d.ts +3 -0
- package/lib/logger/log4js-adapter.d.ts.map +1 -0
- package/lib/logger/log4js-adapter.js +143 -0
- package/lib/logger/log4js-adapter.js.map +1 -0
- package/lib/logger/logger-worker.d.ts +3 -4
- package/lib/logger/logger-worker.d.ts.map +1 -1
- package/lib/logger/logger-worker.js +21 -20
- package/lib/logger/logger-worker.js.map +1 -1
- package/lib/logger/logger.d.ts +13 -11
- package/lib/logger/logger.d.ts.map +1 -1
- package/lib/logger/logger.js +32 -14
- package/lib/logger/logger.js.map +1 -1
- package/lib/logger/types.d.ts +23 -0
- package/lib/logger/types.d.ts.map +1 -0
- package/lib/logger/types.js +2 -0
- package/lib/logger/types.js.map +1 -0
- package/lib/options.d.ts +5 -4
- package/lib/options.d.ts.map +1 -1
- package/lib/options.js +6 -4
- package/lib/options.js.map +1 -1
- package/package.json +7 -5
- package/src/downloader/main.ts +15 -14
- package/src/downloader/multi.ts +3 -5
- package/src/downloader/pipeline-executor-impl.ts +98 -2
- package/src/downloader/single.ts +4 -5
- package/src/downloader/worker-pool.ts +12 -6
- package/src/downloader/worker-type.ts +2 -2
- package/src/downloader/worker.ts +2 -7
- package/src/index.ts +2 -0
- package/src/life-cycle/adapters.ts +13 -0
- package/src/life-cycle/default-life-cycle.ts +3 -1
- package/src/life-cycle/default-status-listener.ts +40 -0
- package/src/life-cycle/download-resource.ts +13 -4
- package/src/life-cycle/index.ts +1 -0
- package/src/life-cycle/pipeline-executor.ts +16 -2
- package/src/life-cycle/types.ts +79 -3
- package/src/logger/default-logger.ts +12 -0
- package/src/logger/log4js-adapter.ts +147 -0
- package/src/logger/logger-worker.ts +24 -23
- package/src/logger/logger.ts +36 -16
- package/src/logger/types.ts +35 -0
- package/src/options.ts +11 -7
- package/lib/logger/config-logger.d.ts +0 -3
- package/lib/logger/config-logger.d.ts.map +0 -1
- package/lib/logger/config-logger.js +0 -92
- package/lib/logger/config-logger.js.map +0 -1
- package/src/logger/config-logger.ts +0 -95
|
@@ -1,20 +1,36 @@
|
|
|
1
1
|
import type { OptionsInit as GotOptions } from 'got';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Stats } from 'node:fs';
|
|
3
|
+
import type { createResource, GenerateSavePathFn, RawResource, Resource, ResourceBody, ResourceType } from '../resource.js';
|
|
3
4
|
import type { StaticDownloadOptions } from '../options.js';
|
|
4
5
|
import type { PipelineExecutor } from './pipeline-executor.js';
|
|
5
6
|
import type { Cheerio } from '../types.js';
|
|
6
7
|
import type { DownloaderWithMeta } from '../downloader/types.js';
|
|
7
8
|
import type { WorkerInfo } from '../downloader/worker-pool.js';
|
|
8
9
|
export type AsyncResult<T> = T | Promise<T>;
|
|
10
|
+
export type ResourceStatus = 'createResource' | 'processBeforeDownload' | 'download' | 'processAfterDownload' | 'saveToDisk' | 'error' | 'dispose';
|
|
11
|
+
export interface StatusChangeFunc {
|
|
12
|
+
(res: Resource | RawResource, status: ResourceStatus, options: StaticDownloadOptions, pipeline: PipelineExecutor): void | Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export interface InitSubmitFunc {
|
|
15
|
+
/**
|
|
16
|
+
* Submit a raw URL to be processed through the full pipeline
|
|
17
|
+
* after all init hooks complete.
|
|
18
|
+
*
|
|
19
|
+
* This is fire-and-forget: the URL is appended to the initial URL list
|
|
20
|
+
* and processed identically to entries in {@link DownloadOptions.initialUrl}.
|
|
21
|
+
* No pipeline stages run during the call.
|
|
22
|
+
*/
|
|
23
|
+
(url: string): void;
|
|
24
|
+
}
|
|
9
25
|
export interface InitLifeCycleFunc {
|
|
10
26
|
/**
|
|
11
27
|
* The init life cycle would be called:
|
|
12
28
|
*
|
|
13
29
|
* Each time a downloader initialized,
|
|
14
|
-
* after
|
|
30
|
+
* after logger initialization but before addInitialResource.
|
|
15
31
|
*
|
|
16
32
|
* Each time a worker initialized,
|
|
17
|
-
*
|
|
33
|
+
* before parentPort?.addListener.
|
|
18
34
|
*
|
|
19
35
|
* The init life cycle could be async,
|
|
20
36
|
* in main thread the addInitialResource should wait for init completed,
|
|
@@ -23,8 +39,10 @@ export interface InitLifeCycleFunc {
|
|
|
23
39
|
*
|
|
24
40
|
* @param pipeline the PipelineExecutor
|
|
25
41
|
* @param downloader the DownloaderWithMeta when in main thread
|
|
42
|
+
* @param submit function to submit URLs for processing after init;
|
|
43
|
+
* undefined in worker threads
|
|
26
44
|
*/
|
|
27
|
-
(pipeline: PipelineExecutor, downloader?: DownloaderWithMeta): AsyncResult<void>;
|
|
45
|
+
(pipeline: PipelineExecutor, downloader?: DownloaderWithMeta, submit?: InitSubmitFunc): AsyncResult<void>;
|
|
28
46
|
}
|
|
29
47
|
export interface LinkRedirectFunc {
|
|
30
48
|
/**
|
|
@@ -154,5 +172,39 @@ export interface ProcessingLifeCycle {
|
|
|
154
172
|
processAfterDownload: ProcessResourceAfterDownloadFunc[];
|
|
155
173
|
saveToDisk: SaveToDiskFunc[];
|
|
156
174
|
dispose: DisposeLifeCycle[];
|
|
175
|
+
/**
|
|
176
|
+
* Status change listeners.
|
|
177
|
+
*
|
|
178
|
+
* Unlike other life cycle hooks, all listeners always run
|
|
179
|
+
* (returning void does not short-circuit), and thrown errors are swallowed.
|
|
180
|
+
*
|
|
181
|
+
* Listeners should treat the resource and all parameters as readonly.
|
|
182
|
+
* Mutating them is undefined behavior.
|
|
183
|
+
*/
|
|
184
|
+
statusChange: StatusChangeFunc[];
|
|
185
|
+
/**
|
|
186
|
+
* Optional callback to decide what to do when a local file already exists
|
|
187
|
+
* for a resource. Called at most twice per resource: once before download
|
|
188
|
+
* and once before save.
|
|
189
|
+
*
|
|
190
|
+
* Unlike other life cycle hooks, this is a single function (not an array)
|
|
191
|
+
* because the decision is mutually exclusive — there is no meaningful way
|
|
192
|
+
* to compose multiple strategies.
|
|
193
|
+
*
|
|
194
|
+
* If absent, the pipeline behaves as before (always download and overwrite).
|
|
195
|
+
*/
|
|
196
|
+
existingResource?: ExistingResourceFunc;
|
|
197
|
+
}
|
|
198
|
+
export type ExistingResourceAction = 'skip' | 'overwrite' | 'ifModifiedSince' | 'skipSave';
|
|
199
|
+
export type ExistingResourceStage = 'download' | 'saveToDisk';
|
|
200
|
+
export interface ExistingResourceContext {
|
|
201
|
+
res: Resource;
|
|
202
|
+
stage: ExistingResourceStage;
|
|
203
|
+
localPath: string;
|
|
204
|
+
stat: Stats;
|
|
205
|
+
options: StaticDownloadOptions;
|
|
206
|
+
}
|
|
207
|
+
export interface ExistingResourceFunc {
|
|
208
|
+
(ctx: ExistingResourceContext): ExistingResourceAction;
|
|
157
209
|
}
|
|
158
210
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/life-cycle/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,IAAI,UAAU,EAAC,MAAM,KAAK,CAAC;AACnD,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,8BAA8B,CAAC;AAE7D,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/life-cycle/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-logger.d.ts","sourceRoot":"","sources":["../../src/logger/default-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAEvC,wBAAgB,mBAAmB,IAAI,MAAM,CAS5C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function createDefaultLogger() {
|
|
2
|
+
return {
|
|
3
|
+
trace() { },
|
|
4
|
+
debug(type, ...contents) { console.debug(`[${type}]`, ...contents); },
|
|
5
|
+
info(type, ...contents) { console.info(`[${type}]`, ...contents); },
|
|
6
|
+
warn(type, ...contents) { console.warn(`[${type}]`, ...contents); },
|
|
7
|
+
error(type, ...contents) { console.error(`[${type}]`, ...contents); },
|
|
8
|
+
isTraceEnabled() { return false; },
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=default-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-logger.js","sourceRoot":"","sources":["../../src/logger/default-logger.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,KAAK,KAAiB,CAAC;QACvB,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrE,cAAc,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log4js-adapter.d.ts","sourceRoot":"","sources":["../../src/logger/log4js-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAU,MAAM,YAAY,CAAC;AAehD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CA8HR"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import log4js from 'log4js';
|
|
3
|
+
const typeToCategory = {
|
|
4
|
+
'io.http.request': 'request',
|
|
5
|
+
'io.http.response': 'response',
|
|
6
|
+
'io.http.notFound': 'notFound',
|
|
7
|
+
'io.http.retry': 'retry',
|
|
8
|
+
'io.disk.mkdir': 'mkdir',
|
|
9
|
+
'system.skip': 'skip',
|
|
10
|
+
'system.skipExternal': 'skipExternal',
|
|
11
|
+
'system.complete': 'complete',
|
|
12
|
+
'system.adjustConcurrency': 'adjustConcurrency',
|
|
13
|
+
'system.error': 'error',
|
|
14
|
+
};
|
|
15
|
+
export function createLog4jsLogger(localRoot, logSubDir) {
|
|
16
|
+
const logDir = path.join(localRoot, logSubDir || '', 'logs');
|
|
17
|
+
log4js.configure({
|
|
18
|
+
appenders: {
|
|
19
|
+
'retry': {
|
|
20
|
+
type: 'file',
|
|
21
|
+
filename: path.join(logDir, 'retry.log')
|
|
22
|
+
},
|
|
23
|
+
'mkdir': {
|
|
24
|
+
type: 'file',
|
|
25
|
+
filename: path.join(logDir, 'mkdir.log')
|
|
26
|
+
},
|
|
27
|
+
'error': {
|
|
28
|
+
type: 'file',
|
|
29
|
+
filename: path.join(logDir, 'error.log')
|
|
30
|
+
},
|
|
31
|
+
'skip': {
|
|
32
|
+
type: 'file',
|
|
33
|
+
filename: path.join(logDir, 'skip.log')
|
|
34
|
+
},
|
|
35
|
+
'404': {
|
|
36
|
+
type: 'file',
|
|
37
|
+
filename: path.join(logDir, '404.log')
|
|
38
|
+
},
|
|
39
|
+
'complete': {
|
|
40
|
+
type: 'file',
|
|
41
|
+
filename: path.join(logDir, 'complete.log')
|
|
42
|
+
},
|
|
43
|
+
'request': {
|
|
44
|
+
type: 'file',
|
|
45
|
+
filename: path.join(logDir, 'request.log')
|
|
46
|
+
},
|
|
47
|
+
'response': {
|
|
48
|
+
type: 'file',
|
|
49
|
+
filename: path.join(logDir, 'response.log')
|
|
50
|
+
},
|
|
51
|
+
'stdout': {
|
|
52
|
+
type: 'stdout'
|
|
53
|
+
},
|
|
54
|
+
'stderr': {
|
|
55
|
+
type: 'stderr'
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
categories: {
|
|
59
|
+
'retry': {
|
|
60
|
+
appenders: ['stdout', 'retry'],
|
|
61
|
+
level: 'debug'
|
|
62
|
+
},
|
|
63
|
+
'mkdir': {
|
|
64
|
+
appenders: ['mkdir'],
|
|
65
|
+
level: 'debug'
|
|
66
|
+
},
|
|
67
|
+
'error': {
|
|
68
|
+
appenders: ['stderr', 'error'],
|
|
69
|
+
level: 'debug'
|
|
70
|
+
},
|
|
71
|
+
'skip': {
|
|
72
|
+
appenders: ['stdout', 'skip'],
|
|
73
|
+
level: 'debug'
|
|
74
|
+
},
|
|
75
|
+
'skipExternal': {
|
|
76
|
+
appenders: ['skip'],
|
|
77
|
+
level: 'debug'
|
|
78
|
+
},
|
|
79
|
+
'notFound': {
|
|
80
|
+
appenders: ['404'],
|
|
81
|
+
level: 'debug'
|
|
82
|
+
},
|
|
83
|
+
'complete': {
|
|
84
|
+
appenders: ['complete'],
|
|
85
|
+
level: 'debug'
|
|
86
|
+
},
|
|
87
|
+
'request': {
|
|
88
|
+
appenders: ['request'],
|
|
89
|
+
level: 'debug'
|
|
90
|
+
},
|
|
91
|
+
'response': {
|
|
92
|
+
appenders: ['response'],
|
|
93
|
+
level: 'debug'
|
|
94
|
+
},
|
|
95
|
+
'adjustConcurrency': {
|
|
96
|
+
appenders: ['stdout', 'complete'],
|
|
97
|
+
level: 'debug'
|
|
98
|
+
},
|
|
99
|
+
'default': {
|
|
100
|
+
appenders: ['stdout', 'complete'],
|
|
101
|
+
level: 'debug'
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
const loggers = new Map();
|
|
106
|
+
const getOrCreate = (category) => {
|
|
107
|
+
let l = loggers.get(category);
|
|
108
|
+
if (!l) {
|
|
109
|
+
l = log4js.getLogger(category);
|
|
110
|
+
loggers.set(category, l);
|
|
111
|
+
}
|
|
112
|
+
return l;
|
|
113
|
+
};
|
|
114
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
115
|
+
const spread = (contents) => contents;
|
|
116
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
117
|
+
return {
|
|
118
|
+
trace(type, ...contents) {
|
|
119
|
+
var _a;
|
|
120
|
+
getOrCreate((_a = typeToCategory[type]) !== null && _a !== void 0 ? _a : 'default').trace(...spread(contents));
|
|
121
|
+
},
|
|
122
|
+
debug(type, ...contents) {
|
|
123
|
+
var _a;
|
|
124
|
+
getOrCreate((_a = typeToCategory[type]) !== null && _a !== void 0 ? _a : 'default').debug(...spread(contents));
|
|
125
|
+
},
|
|
126
|
+
info(type, ...contents) {
|
|
127
|
+
var _a;
|
|
128
|
+
getOrCreate((_a = typeToCategory[type]) !== null && _a !== void 0 ? _a : 'default').info(...spread(contents));
|
|
129
|
+
},
|
|
130
|
+
warn(type, ...contents) {
|
|
131
|
+
var _a;
|
|
132
|
+
getOrCreate((_a = typeToCategory[type]) !== null && _a !== void 0 ? _a : 'default').warn(...spread(contents));
|
|
133
|
+
},
|
|
134
|
+
error(type, ...contents) {
|
|
135
|
+
var _a;
|
|
136
|
+
getOrCreate((_a = typeToCategory[type]) !== null && _a !== void 0 ? _a : 'default').error(...spread(contents));
|
|
137
|
+
},
|
|
138
|
+
isTraceEnabled() {
|
|
139
|
+
return log4js.getLogger().isTraceEnabled();
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=log4js-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log4js-adapter.js","sourceRoot":"","sources":["../../src/logger/log4js-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
export declare
|
|
4
|
-
export declare function getWorkerLogger(category: WorkerLog['logger']): Logger;
|
|
1
|
+
import type { CategoryLogger, LogType } from './types.js';
|
|
2
|
+
export declare const logLevels: readonly ["trace", "debug", "info", "warn", "error"];
|
|
3
|
+
export declare function createWorkerCategoryLogger(type: LogType): CategoryLogger;
|
|
5
4
|
//# sourceMappingURL=logger-worker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-worker.d.ts","sourceRoot":"","sources":["../../src/logger/logger-worker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger-worker.d.ts","sourceRoot":"","sources":["../../src/logger/logger-worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,cAAc,EAAE,OAAO,EAAC,MAAM,YAAY,CAAC;AAIxD,eAAO,MAAM,SAAS,sDAEZ,CAAC;AAEX,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAsBxE"}
|
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
// https://github.com/jestjs/jest/issues/11563
|
|
2
|
-
import log4js from 'log4js';
|
|
3
1
|
import { parentPort } from 'node:worker_threads';
|
|
4
2
|
import { WorkerMessageType } from '../downloader/types.js';
|
|
5
|
-
const getLogger = log4js.getLogger;
|
|
6
3
|
export const logLevels = [
|
|
7
|
-
'trace', 'debug', 'info', 'warn', 'error'
|
|
4
|
+
'trace', 'debug', 'info', 'warn', 'error'
|
|
8
5
|
];
|
|
9
|
-
export function
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
content
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
parentPort === null || parentPort === void 0 ? void 0 : parentPort.postMessage(msg);
|
|
6
|
+
export function createWorkerCategoryLogger(type) {
|
|
7
|
+
function send(level, content) {
|
|
8
|
+
const msg = {
|
|
9
|
+
taskId: -1,
|
|
10
|
+
type: WorkerMessageType.Log,
|
|
11
|
+
body: {
|
|
12
|
+
logType: type,
|
|
13
|
+
level,
|
|
14
|
+
content
|
|
15
|
+
}
|
|
23
16
|
};
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
parentPort === null || parentPort === void 0 ? void 0 : parentPort.postMessage(msg);
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
trace(...content) { send('trace', content); },
|
|
21
|
+
debug(...content) { send('debug', content); },
|
|
22
|
+
info(...content) { send('info', content); },
|
|
23
|
+
warn(...content) { send('warn', content); },
|
|
24
|
+
error(...content) { send('error', content); },
|
|
25
|
+
isTraceEnabled() { return false; },
|
|
26
|
+
};
|
|
26
27
|
}
|
|
27
28
|
//# sourceMappingURL=logger-worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-worker.js","sourceRoot":"","sources":["../../src/logger/logger-worker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger-worker.js","sourceRoot":"","sources":["../../src/logger/logger-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAG/C,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;CACjC,CAAC;AAEX,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACtD,SAAS,IAAI,CAAI,KAA+B,EAAE,OAAY;QAC5D,MAAM,GAAG,GAAwB;YAC/B,MAAM,EAAE,CAAC,CAAC;YACV,IAAI,EAAE,iBAAiB,CAAC,GAAG;YAC3B,IAAI,EAAE;gBACJ,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,OAAO;aACR;SACF,CAAC;QACF,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,KAAK,CAAC,GAAG,OAAkB,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACxD,KAAK,CAAC,GAAG,OAAkB,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,OAAkB,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,OAAkB,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,GAAG,OAAkB,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACxD,cAAc,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;KACnC,CAAC;AACJ,CAAC"}
|
package/lib/logger/logger.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import type { Logger } from '
|
|
2
|
-
export declare
|
|
3
|
-
export declare
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const
|
|
10
|
-
export declare const
|
|
11
|
-
export declare const
|
|
1
|
+
import type { CategoryLogger, Logger } from './types.js';
|
|
2
|
+
export declare function setLogger(logger: Logger): void;
|
|
3
|
+
export declare function getLogger(): Logger;
|
|
4
|
+
export declare const notFound: CategoryLogger;
|
|
5
|
+
export declare const retry: CategoryLogger;
|
|
6
|
+
export declare const mkdir: CategoryLogger;
|
|
7
|
+
export declare const request: CategoryLogger;
|
|
8
|
+
export declare const response: CategoryLogger;
|
|
9
|
+
export declare const error: CategoryLogger;
|
|
10
|
+
export declare const complete: CategoryLogger;
|
|
11
|
+
export declare const skip: CategoryLogger;
|
|
12
|
+
export declare const skipExternal: CategoryLogger;
|
|
13
|
+
export declare const adjustConcurrency: CategoryLogger;
|
|
12
14
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,cAAc,EAAE,MAAM,EAAU,MAAM,YAAY,CAAC;AAMhE,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAgBD,eAAO,MAAM,QAAQ,EAAE,cAAwD,CAAC;AAChF,eAAO,MAAM,KAAK,EAAE,cAAqD,CAAC;AAC1E,eAAO,MAAM,KAAK,EAAE,cAAqD,CAAC;AAC1E,eAAO,MAAM,OAAO,EAAE,cAAuD,CAAC;AAC9E,eAAO,MAAM,QAAQ,EAAE,cAAwD,CAAC;AAChF,eAAO,MAAM,KAAK,EAAE,cAAoD,CAAC;AACzE,eAAO,MAAM,QAAQ,EAAE,cAAuD,CAAC;AAC/E,eAAO,MAAM,IAAI,EAAE,cAAmD,CAAC;AACvE,eAAO,MAAM,YAAY,EAAE,cAA2D,CAAC;AACvF,eAAO,MAAM,iBAAiB,EAAE,cAAgE,CAAC"}
|
package/lib/logger/logger.js
CHANGED
|
@@ -1,16 +1,34 @@
|
|
|
1
|
-
// https://github.com/jestjs/jest/issues/11563
|
|
2
|
-
import log4js from 'log4js';
|
|
3
1
|
import { isMainThread } from 'node:worker_threads';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
2
|
+
import { createDefaultLogger } from './default-logger.js';
|
|
3
|
+
import { createWorkerCategoryLogger } from './logger-worker.js';
|
|
4
|
+
let _logger = createDefaultLogger();
|
|
5
|
+
export function setLogger(logger) {
|
|
6
|
+
_logger = logger;
|
|
7
|
+
}
|
|
8
|
+
export function getLogger() {
|
|
9
|
+
return _logger;
|
|
10
|
+
}
|
|
11
|
+
function createCategoryProxy(type) {
|
|
12
|
+
if (!isMainThread) {
|
|
13
|
+
return createWorkerCategoryLogger(type);
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
trace(...contents) { _logger.trace(type, ...contents); },
|
|
17
|
+
debug(...contents) { _logger.debug(type, ...contents); },
|
|
18
|
+
info(...contents) { _logger.info(type, ...contents); },
|
|
19
|
+
warn(...contents) { _logger.warn(type, ...contents); },
|
|
20
|
+
error(...contents) { _logger.error(type, ...contents); },
|
|
21
|
+
isTraceEnabled() { return _logger.isTraceEnabled(); },
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export const notFound = createCategoryProxy('io.http.notFound');
|
|
25
|
+
export const retry = createCategoryProxy('io.http.retry');
|
|
26
|
+
export const mkdir = createCategoryProxy('io.disk.mkdir');
|
|
27
|
+
export const request = createCategoryProxy('io.http.request');
|
|
28
|
+
export const response = createCategoryProxy('io.http.response');
|
|
29
|
+
export const error = createCategoryProxy('system.error');
|
|
30
|
+
export const complete = createCategoryProxy('system.complete');
|
|
31
|
+
export const skip = createCategoryProxy('system.skip');
|
|
32
|
+
export const skipExternal = createCategoryProxy('system.skipExternal');
|
|
33
|
+
export const adjustConcurrency = createCategoryProxy('system.adjustConcurrency');
|
|
16
34
|
//# sourceMappingURL=logger.js.map
|
package/lib/logger/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAC,0BAA0B,EAAC,MAAM,oBAAoB,CAAC;AAE9D,IAAI,OAAO,GAAW,mBAAmB,EAAE,CAAC;AAE5C,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,OAAO,GAAG,MAAM,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAa;IACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO;QACL,KAAK,CAAC,GAAG,QAAmB,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnE,KAAK,CAAC,GAAG,QAAmB,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,QAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,GAAG,QAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjE,KAAK,CAAC,GAAG,QAAmB,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnE,cAAc,KAAK,OAAO,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAmB,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,KAAK,GAAmB,mBAAmB,CAAC,eAAe,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,KAAK,GAAmB,mBAAmB,CAAC,eAAe,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,OAAO,GAAmB,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,QAAQ,GAAmB,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,KAAK,GAAmB,mBAAmB,CAAC,cAAc,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,QAAQ,GAAmB,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,IAAI,GAAmB,mBAAmB,CAAC,aAAa,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,YAAY,GAAmB,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,iBAAiB,GAAmB,mBAAmB,CAAC,0BAA0B,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type LogType = 'io.http.request' | 'io.http.response' | 'io.http.notFound' | 'io.http.retry' | 'io.disk.mkdir' | 'system.skip' | 'system.skipExternal' | 'system.complete' | 'system.adjustConcurrency' | 'system.error' | `custom.${string}`;
|
|
2
|
+
export interface Logger {
|
|
3
|
+
trace(type: LogType, ...contents: unknown[]): void;
|
|
4
|
+
debug(type: LogType, ...contents: unknown[]): void;
|
|
5
|
+
info(type: LogType, ...contents: unknown[]): void;
|
|
6
|
+
warn(type: LogType, ...contents: unknown[]): void;
|
|
7
|
+
error(type: LogType, ...contents: unknown[]): void;
|
|
8
|
+
isTraceEnabled(): boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Logger proxy for a specific category.
|
|
12
|
+
* Consumer code calls methods without a LogType argument;
|
|
13
|
+
* the proxy prepends the appropriate LogType automatically.
|
|
14
|
+
*/
|
|
15
|
+
export interface CategoryLogger {
|
|
16
|
+
trace(...contents: unknown[]): void;
|
|
17
|
+
debug(...contents: unknown[]): void;
|
|
18
|
+
info(...contents: unknown[]): void;
|
|
19
|
+
warn(...contents: unknown[]): void;
|
|
20
|
+
error(...contents: unknown[]): void;
|
|
21
|
+
isTraceEnabled(): boolean;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/logger/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GACf,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,eAAe,GACf,aAAa,GACb,qBAAqB,GACrB,iBAAiB,GACjB,0BAA0B,GAC1B,cAAc,GACd,UAAU,MAAM,EAAE,CAAC;AAEvB,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACnD,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAClD,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACnD,cAAc,IAAI,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACpC,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACpC,IAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACnC,IAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACpC,cAAc,IAAI,OAAO,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/logger/types.ts"],"names":[],"mappings":""}
|
package/lib/options.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RequestError, RetryFunction, TimeoutError } from 'got';
|
|
2
2
|
import type { ResourceEncoding, ResourceType } from './resource.js';
|
|
3
3
|
import type { ProcessingLifeCycle, RequestOptions } from './life-cycle/types.js';
|
|
4
|
-
import {
|
|
4
|
+
import type { Logger } from './logger/types.js';
|
|
5
5
|
import type { DownloaderWithMeta } from './downloader/types.js';
|
|
6
6
|
import type { SourceDefinition } from './sources.js';
|
|
7
7
|
import type { CheerioOptionsInterface } from './types.js';
|
|
@@ -88,7 +88,7 @@ export interface StaticDownloadOptions {
|
|
|
88
88
|
*/
|
|
89
89
|
initialUrl?: string[];
|
|
90
90
|
/**
|
|
91
|
-
* @see DownloadOptions.
|
|
91
|
+
* @see DownloadOptions.createLogger
|
|
92
92
|
*/
|
|
93
93
|
logSubDir?: string;
|
|
94
94
|
/**
|
|
@@ -131,9 +131,10 @@ export interface DownloadOptions extends StaticDownloadOptions, ProcessingLifeCy
|
|
|
131
131
|
adjustConcurrencyPeriod?: number;
|
|
132
132
|
adjustConcurrencyFunc?: (downloader: DownloaderWithMeta) => void;
|
|
133
133
|
/**
|
|
134
|
-
* Use a custom function to
|
|
134
|
+
* Use a custom function to create a logger instance.
|
|
135
|
+
* Defaults to {@link createDefaultLogger} (console-based).
|
|
135
136
|
*/
|
|
136
|
-
|
|
137
|
+
createLogger?: (options: StaticDownloadOptions) => Logger;
|
|
137
138
|
}
|
|
138
139
|
export type ExtendedError = (TimeoutError | RequestError) & {
|
|
139
140
|
retryLimitExceeded: boolean;
|
package/lib/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAE,aAAa,EAAe,YAAY,EAAC,MAAM,KAAK,CAAC;AAEhF,OAAO,KAAK,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAElE,OAAO,KAAK,EAAC,mBAAmB,EAAE,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAM/E,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|
package/lib/options.js
CHANGED
|
@@ -5,7 +5,7 @@ import { beforeRetryHook } from './life-cycle/download-resource.js';
|
|
|
5
5
|
import { error } from './logger/logger.js';
|
|
6
6
|
// noinspection ES6PreferShortImport
|
|
7
7
|
import { adjust } from './downloader/adjust-concurrency.js';
|
|
8
|
-
import {
|
|
8
|
+
import { createDefaultLogger } from './logger/default-logger.js';
|
|
9
9
|
import { weakAssign } from './util.js';
|
|
10
10
|
const MAX_RETRY_DELAY = 5000;
|
|
11
11
|
const retryErrorCodes = new Set([
|
|
@@ -106,7 +106,7 @@ const defaultOptions = {
|
|
|
106
106
|
init: [],
|
|
107
107
|
dispose: [],
|
|
108
108
|
concurrency: 12,
|
|
109
|
-
|
|
109
|
+
createLogger: createDefaultLogger,
|
|
110
110
|
createResource,
|
|
111
111
|
detectResourceType: [],
|
|
112
112
|
download: [],
|
|
@@ -116,13 +116,15 @@ const defaultOptions = {
|
|
|
116
116
|
localRoot: '',
|
|
117
117
|
maxDepth: 1,
|
|
118
118
|
meta: {
|
|
119
|
-
detectIncompleteHtml: '</html>'
|
|
119
|
+
detectIncompleteHtml: '</html>',
|
|
120
|
+
warnForNonHtml: true
|
|
120
121
|
},
|
|
121
122
|
processAfterDownload: [],
|
|
122
123
|
processBeforeDownload: [],
|
|
123
124
|
req: {},
|
|
124
125
|
saveToDisk: [],
|
|
125
|
-
deduplicateStripSearch: true
|
|
126
|
+
deduplicateStripSearch: true,
|
|
127
|
+
statusChange: []
|
|
126
128
|
};
|
|
127
129
|
export function defaultDownloadOptions(options) {
|
|
128
130
|
const merged = weakAssign(options, defaultOptions);
|
package/lib/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,EAAE,EAAC,OAAO,EAAC,MAAM,KAAK,CAAC;AAEjC,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAE7C,oCAAoC;AACpC,OAAO,EAAC,eAAe,EAAC,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAC;AACzC,oCAAoC;AACpC,OAAO,EAAC,MAAM,EAAC,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|