11import { importRemoteCache } from '../index.js'
22import path from 'path'
3+ import { cmd } from '../util/cmd.js'
34
4- const config = '' // require(path.join(process.cwd(), 'wepack.config.js'))
5- const webpack = require ( 'webpack' )
6- const fs = require ( 'fs' )
7-
8- //.const compiler = webpack(config)
9-
10- // `compiler.run()` doesn't support promises yet, only callbacks
11- async function compile ( ) {
12- // await new Promise((resolve, reject) => {
13- // compiler.run((err, res) => {
14- // if (err) {
15- // return reject(err)
16- // }
17- // resolve(res)
18- // })
19- // })
5+ //
6+ async function compileAndReload ( ) {
7+ cmd ( 'yarn build && yarn reload' )
208}
219
22- export function makeRegisterRemote ( ) {
23- /**
24- * Process new remote entry.
25- * @param {import('../../../webpack/remote-entries-type.js').remoteEntry } remoteEntry
26- */
27- return async function registerRemote ( remoteEntry ) {
28- if ( ! remoteEntry ?. name ) throw new Error ( 'no remote entry provided' )
10+ /**
11+ * Process new remote entry.
12+ * @param {import('../../../webpack/remote-entries-type.js').remoteEntry } remoteEntry
13+ */
14+ async function registerRemote ( remoteEntry ) {
15+ if ( ! remoteEntry ?. name ) throw new Error ( 'no remote entry provided' )
16+
17+ const newFile = remoteEntry . name . concat ( '.js' )
2918
30- const newFile = remoteEntry . name . concat ( '.js' )
19+ if ( fs . existsSync ( newFile ) )
20+ console . log ( 'overritting remote entry file' + newFile )
3121
32- if ( fs . existsSync ( newFile ) )
33- throw new Error ( 'remote entry file already exists' + newFile )
22+ try {
23+ const fileContents =
24+ `const {importWebAssembly} = require('@module-federation/aegis').adapters.webassembly\n` +
25+ `const ${ remoteEntry . name } = [${ JSON . stringify ( remoteEntry , 2 , null ) +
26+ `\nimportRemote() { return importWebAssembly(this) }` } ]`
3427
35- try {
36- fs . writeFileSync (
37- path . resolve ( process . cwd ( ) , 'webpack/remote-entries' , newFile ) ,
38- JSON . stringify ( remoteEntry ) ,
39- { encoding : 'utf-8' }
40- )
28+ fs . writeFileSync (
29+ path . resolve ( process . cwd ( ) , 'webpack/remote-entries' , newFile ) ,
30+ fileContents
31+ )
4132
42- const indexFile = path . resolve (
43- process . cwd ( ) ,
44- 'webpack/remote-entries' ,
45- 'index.js'
46- )
33+ const indexFile = path . resolve (
34+ process . cwd ( ) ,
35+ 'webpack/remote-entries' ,
36+ 'index.js'
37+ )
4738
48- const remoteExports = fs . readFileSync ( indexFile , { encoding : 'utf-8' } )
39+ const remoteExports = fs . readFileSync ( indexFile )
4940
50- fs . writeFileSync (
51- indexFile ,
52- remoteExports . concat ( `export * from './${ newFile } '\n` ) ,
53- { encoding : 'utf-8' }
54- )
41+ fs . writeFileSync (
42+ indexFile ,
43+ remoteExports . concat ( `\nexport from './${ newFile } '` )
44+ )
5545
56- await compile ( )
57- } catch ( error ) {
58- console . error ( { fn : registerRemote . name , error } )
59- }
46+ await compileAndReload ( )
47+ } catch ( error ) {
48+ console . error ( { fn : registerRemote . name , error } )
6049 }
6150}
6251
@@ -65,7 +54,7 @@ export function makeRegisterRemote () {
6554 * @param {{models:import('../model-factory.js').ModelFactory} } param0
6655 * @returns
6756 */
68- export default function makeDeployModel ( { models } ) {
57+ export default function makeDeployModel ( ) {
6958 /**
7059 * Handle deployment request.
7160 *
@@ -75,15 +64,15 @@ export default function makeDeployModel ({ models }) {
7564 *
7665 * @param {* } modelName
7766 */
78- return function deployModel ( modelName ) {
79- if ( ! modelName ) throw new Error ( 'missing modelName' )
80- const modelNameUpper = modelName . toUpperCase ( )
67+ return async function deployModel ( input ) {
68+ console . log ( input )
69+ await registerRemote ( input )
8170
82- if ( models . getModelSpec ( modelNameUpper ) ) return
71+ // if (models.getModelSpec(modelNameUpper)) return
8372
84- importRemoteCache ( modelNameUpper )
73+ // importRemoteCache(modelNameUpper)
8574
86- if ( ! models . getModelSpec ( modelNameUpper ) )
87- throw new Error ( 'model could not be loaded' )
75+ // if (!models.getModelSpec(modelNameUpper))
76+ // throw new Error('model could not be loaded')
8877 }
8978}
0 commit comments