File size: 1,451 Bytes
a2b2aac
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// inspired from https://github.com/nodejs/modules/issues/307#issuecomment-858729422

// import { resolve } from 'path'
// import { Worker, isMainThread, parentPort, workerData } from 'worker_threads'
import Helper from './helper.js'

const WORKER_DIR = Helper.__dirname(import.meta.url, false)
// const WORKER_FILE = Helper.__filename(resolve(WORKER_DIR, './import.js'), false)

// if (!isMainThread) importModule(workerData)

// async function importModule(file) {
//     file = Helper.__filename(file)
//     const module = await import(file).catch(console.error)
//     const result = module && 'default' in module ? module.default : module
//     parentPort.postMessage(JSON.stringify(result), result)
// }

/**
 * @template T
 * @param {string} module 
 * @returns {Promise<T>}
 */
export default async function importLoader(module) {
    // return new Promise((resolve, reject) => {
    //     const worker = new Worker(new URL(WORKER_FILE), {
    //         workerData: module
    //     })
    //     const killWorker = () => worker.terminate().catch(() => { })
    //     worker.once('message', (msg) => (killWorker(), console.log(msg.data), resolve(msg)))
    //     worker.once('error', (error) => (killWorker(), reject(error)))
    // })
    module = Helper.__filename(module)
    const module_ = await import(`${module}?id=${Date.now()}`)
    const result = module_ && 'default' in module_ ? module_.default : module_
    return result
}