@@ -9,14 +9,54 @@ const { buildTelegramCIDR } = require('./build-telegram-cidr');
9
9
const { buildChnCidr } = require ( './build-chn-cidr' ) ;
10
10
const { buildSpeedtestDomainSet } = require ( './build-speedtest-domainset' ) ;
11
11
const { buildInternalCDNDomains } = require ( './build-internal-cdn-rules' ) ;
12
- const { buildInternalReverseChnCIDR } = require ( './build-internal-reverse-chn-cidr' ) ;
13
12
const { buildInternalChnDomains } = require ( './build-internal-chn-domains' ) ;
14
13
const { buildDomesticRuleset } = require ( './build-domestic-ruleset' ) ;
15
14
const { validate } = require ( './validate-domainset' ) ;
16
15
17
16
const { buildPublicHtml } = require ( './build-public' ) ;
18
17
18
+ const { Worker } = require ( 'jest-worker' ) ;
19
+
20
+ /**
21
+ * @template T
22
+ * @typedef {import('jest-worker').Worker & { __sukka_worker_name: string } & T } WithWorker
23
+ */
24
+
25
+ /**
26
+ * @template T
27
+ * @param {string } path
28
+ * @returns {WithWorker<T> }
29
+ */
30
+ const requireWorker = ( path ) => {
31
+ const _worker = /** @type {WithWorker<T> } */ ( new Worker (
32
+ require . resolve ( path ) ,
33
+ {
34
+ numWorkers : 1 ,
35
+ maxRetries : 0 ,
36
+ enableWorkerThreads : true
37
+ }
38
+ ) ) ;
39
+ _worker . getStderr ( ) . pipe ( process . stderr ) ;
40
+ _worker . getStdout ( ) . pipe ( process . stdout ) ;
41
+ _worker . __sukka_worker_name = path ;
42
+ return _worker ;
43
+ } ;
44
+
45
+ /**
46
+ * @template T
47
+ * @param {WithWorker<T> } worker
48
+ */
49
+ const endWorker = async ( worker ) => {
50
+ const { forceExited } = worker . end ( ) ;
51
+ if ( forceExited && worker . __sukka_worker_name ) {
52
+ console . log ( worker . __sukka_worker_name , 'forceExited' ) ;
53
+ }
54
+ } ;
55
+
19
56
( async ( ) => {
57
+ const buildInternalReverseChnCIDRWorker = /** @type {WithWorker<import('./build-internal-reverse-chn-cidr')> } */ ( requireWorker ( './build-internal-reverse-chn-cidr' ) ) ;
58
+ const { buildInternalReverseChnCIDR } = buildInternalReverseChnCIDRWorker ;
59
+
20
60
// download-previous-build
21
61
const downloadPreviousBuildPromise = downloadPreviousBuild ( ) ;
22
62
const downloadPublicSuffixListPromise = downloadPublicSuffixList ( ) ;
@@ -77,6 +117,7 @@ const { buildPublicHtml } = require('./build-public');
77
117
78
118
await Promise . all ( [
79
119
buildPublicHtml ( ) ,
80
- validate ( )
120
+ validate ( ) ,
121
+ endWorker ( buildInternalReverseChnCIDRWorker )
81
122
] ) ;
82
123
} ) ( ) ;
0 commit comments