From 74014071099234d5f62b5c40e3f8d2d06e5fd918 Mon Sep 17 00:00:00 2001 From: Romuald Brillout Date: Thu, 14 Dec 2023 18:04:53 +0100 Subject: [PATCH] wip --- pnpm-lock.yaml | 8 +-- .../telefuncFilesGlobFileNameBase.ts | 1 - .../vite/importGlob/telefuncFilesGlobPath.ts | 7 +- telefunc/node/vite/index.ts | 2 +- telefunc/node/vite/plugins/buildConfig.ts | 64 +++---------------- .../node/vite/plugins/importBuild/index.ts | 22 +++---- .../vite/plugins/importBuild/loadBuild.ts | 4 +- telefunc/package.json | 2 +- 8 files changed, 33 insertions(+), 77 deletions(-) delete mode 100644 telefunc/node/vite/importGlob/telefuncFilesGlobFileNameBase.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f723eb115..3fb7f558a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -370,8 +370,8 @@ importers: specifier: ^0.5.6 version: 0.5.6 '@brillout/vite-plugin-import-build': - specifier: ^0.2.22 - version: 0.2.22 + specifier: 0.2.22-commit-7f1bb0a + version: 0.2.22-commit-7f1bb0a es-module-lexer: specifier: ^0.7.1 version: 0.7.1 @@ -3052,8 +3052,8 @@ packages: '@brillout/import': 0.2.3 dev: false - /@brillout/vite-plugin-import-build@0.2.22: - resolution: {integrity: sha512-n5sv0HdCB5WC2QJSnTN6iS/F+sJsF0AmtsCCaQ+5+dRjgsoGGsa3auinJV8tuEog5WsX+3MF8RIwn3A/u0e04w==} + /@brillout/vite-plugin-import-build@0.2.22-commit-7f1bb0a: + resolution: {integrity: sha512-TKfwEtW8a++FL3xz6iF7aBaMr9qAmjV0TLSn/7sl/4fcgRLuxzsJDc7iq+FAnM2FHn/dtZRCqEIlG/NBPIluwg==} dependencies: '@brillout/import': 0.2.3 dev: false diff --git a/telefunc/node/vite/importGlob/telefuncFilesGlobFileNameBase.ts b/telefunc/node/vite/importGlob/telefuncFilesGlobFileNameBase.ts deleted file mode 100644 index 00eb0826f..000000000 --- a/telefunc/node/vite/importGlob/telefuncFilesGlobFileNameBase.ts +++ /dev/null @@ -1 +0,0 @@ -export const telefuncFilesGlobFileNameBase = 'telefuncFilesGlob' diff --git a/telefunc/node/vite/importGlob/telefuncFilesGlobPath.ts b/telefunc/node/vite/importGlob/telefuncFilesGlobPath.ts index 9fa290f61..134630756 100644 --- a/telefunc/node/vite/importGlob/telefuncFilesGlobPath.ts +++ b/telefunc/node/vite/importGlob/telefuncFilesGlobPath.ts @@ -1,8 +1,11 @@ -import { telefuncFilesGlobFileNameBase } from './telefuncFilesGlobFileNameBase' +export { telefuncFilesGlobFilePath } + +import { toPosixPath } from '../utils' + let dir: string try { dir = __dirname + (() => '')() // trick to avoid `@vercel/ncc` to glob import } catch { dir = '__telefunc_NOT_AVAILABLE' } -export const telefuncFilesGlobFilePath = `${dir}/${telefuncFilesGlobFileNameBase}.js` +const telefuncFilesGlobFilePath = toPosixPath(`${dir}/telefuncFilesGlob.js`) diff --git a/telefunc/node/vite/index.ts b/telefunc/node/vite/index.ts index 8b4d201e1..4177849de 100644 --- a/telefunc/node/vite/index.ts +++ b/telefunc/node/vite/index.ts @@ -27,7 +27,7 @@ function plugin(configUser?: ConfigUser): any { transform(), commonConfig(), ...devConfig(), - ...buildConfig(), + buildConfig(), retrieveDevServer(), packageJsonFile(), ...importBuild(), diff --git a/telefunc/node/vite/plugins/buildConfig.ts b/telefunc/node/vite/plugins/buildConfig.ts index 39282e845..e16b393a4 100644 --- a/telefunc/node/vite/plugins/buildConfig.ts +++ b/telefunc/node/vite/plugins/buildConfig.ts @@ -1,65 +1,21 @@ export { buildConfig } import type { Plugin, ResolvedConfig } from 'vite' -import type { InputOption } from 'rollup' -import { telefuncFilesGlobFileNameBase } from '../importGlob/telefuncFilesGlobFileNameBase' -import { telefuncFilesGlobFilePath } from '../importGlob/telefuncFilesGlobPath' -import { assert, assertUsage, isObject, determineOutDir } from '../utils' +import { determineOutDir } from '../utils' -function buildConfig(): Plugin[] { +function buildConfig(): Plugin { let config: ResolvedConfig - return [ - { - name: 'telefunc:buildConfig', - apply: 'build', - enforce: 'post', - configResolved(config_) { - config = config_ - setOutDir(config) - addRollupInput(config) - } - }, - { - name: 'telefunc:buildConfig:assert', - apply: 'build', - enforce: 'pre', - generateBundle(_rollupOptions, rollupBundle) { - assertRollupInput(rollupBundle, config) - } + return { + name: 'telefunc:buildConfig', + apply: 'build', + enforce: 'post', + configResolved(config_) { + config = config_ + setOutDir(config) } - ] + } } - function setOutDir(config: ResolvedConfig) { const outDir = determineOutDir(config) if (outDir) config.build.outDir = outDir } - -function addRollupInput(config: ResolvedConfig) { - if (!config.build?.ssr) return - config.build.rollupOptions.input = normalizeRollupInput(config.build.rollupOptions.input) - config.build.rollupOptions.input[telefuncFilesGlobFileNameBase] = telefuncFilesGlobFilePath -} -function assertRollupInput(rollupBundle: Record, config: ResolvedConfig) { - if (!config.build?.ssr) return - const name1 = `${telefuncFilesGlobFileNameBase}.js` - const name2 = `${telefuncFilesGlobFileNameBase}.mjs` - const entries = Object.keys(rollupBundle) - assertUsage( - entries.includes(name1) || entries.includes(name2), - "You seem to be using a tool that conflicts with Telefunc. Reach out to a Telefunc maintainer. (Info for maintainer: couldn't find Telefunc's Rollup input entry.)" - ) -} -function normalizeRollupInput(input?: InputOption): Record { - if (!input) { - return {} - } - if (typeof input === 'string') { - input = [input] - } - if (Array.isArray(input)) { - return Object.fromEntries(input.map((input) => [input, input])) - } - assert(isObject(input)) - return input -} diff --git a/telefunc/node/vite/plugins/importBuild/index.ts b/telefunc/node/vite/plugins/importBuild/index.ts index 914b29dea..e870adb7d 100644 --- a/telefunc/node/vite/plugins/importBuild/index.ts +++ b/telefunc/node/vite/plugins/importBuild/index.ts @@ -4,8 +4,8 @@ import { importBuild as importBuild_ } from '@brillout/vite-plugin-import-build/ import type { Plugin, ResolvedConfig } from 'vite' import { assert, assertPosixPath, getOutDirAbsolute, projectInfo, toPosixPath } from '../../utils' import path from 'path' -import { telefuncFilesGlobFileNameBase } from '../../importGlob/telefuncFilesGlobFileNameBase' import { getTelefuncManifest } from './getTelefuncManifest' +import { telefuncFilesGlobFilePath } from '../../importGlob/telefuncFilesGlobPath' function importBuild(): Plugin[] { let config: ResolvedConfig @@ -18,29 +18,27 @@ function importBuild(): Plugin[] { } }, importBuild_({ - getImporterCode: ({ findBuildEntry }) => { - const telefuncFilesEntry = findBuildEntry(telefuncFilesGlobFileNameBase) - return getImporterCode(config, telefuncFilesEntry) + getImporterCode: () => { + return getImporterCode(config) }, libraryName: projectInfo.projectName }) ] } -function getImporterCode(config: ResolvedConfig, telefuncFilesEntry: string) { +function getImporterCode(config: ResolvedConfig) { const importPath = getImportPath(config) const telefuncManifest = getTelefuncManifest() // console.log(`\n importPath: ${importPath}\n outDirServer: ${outDirServer}\n importPathAbsolute: ${importPathAbsolute}\n config.build.outDir: ${config.build.outDir}`) const importerCode = [ - '{', - ` const { setLoaders } = require('${importPath}');`, - ' setLoaders({', - ` loadTelefuncFiles: () => import('./${telefuncFilesEntry}'),`, - ` loadManifest: () => (${JSON.stringify(telefuncManifest, null, 2)})`, - ' });', - '}', + `import { setTelefuncLoaders } from '${importPath}';`, + `import * as telefuncFiles from '${telefuncFilesGlobFilePath}';`, + 'setTelefuncLoaders({', + ` loadTelefuncFiles: () => telefuncFiles,`, + ` loadManifest: () => (${JSON.stringify(telefuncManifest, null, 2)})`, + '});', '' ].join('\n') return importerCode diff --git a/telefunc/node/vite/plugins/importBuild/loadBuild.ts b/telefunc/node/vite/plugins/importBuild/loadBuild.ts index 3926e6610..56531c5ea 100644 --- a/telefunc/node/vite/plugins/importBuild/loadBuild.ts +++ b/telefunc/node/vite/plugins/importBuild/loadBuild.ts @@ -1,5 +1,5 @@ export { loadTelefuncFilesWithImportBuild } -export { setLoaders } +export { setTelefuncLoaders } import { config } from '../../../server/serverConfig' import { getGlobalObject } from '../../utils' @@ -12,7 +12,7 @@ const globalObject = getGlobalObject<{ type LoadTelefuncFiles = () => Promise type LoadManifest = () => Record -function setLoaders({ +function setTelefuncLoaders({ loadTelefuncFiles, loadManifest }: { diff --git a/telefunc/package.json b/telefunc/package.json index 91aa855ff..ffa6ef0e9 100644 --- a/telefunc/package.json +++ b/telefunc/package.json @@ -15,7 +15,7 @@ "dependencies": { "@brillout/import": "^0.2.3", "@brillout/json-serializer": "^0.5.6", - "@brillout/vite-plugin-import-build": "^0.2.22", + "@brillout/vite-plugin-import-build": "0.2.22-commit-7f1bb0a", "es-module-lexer": "^0.7.1", "picocolors": "^1.0.0", "ts-morph": "^19.0.0"