From 5632883f656fadc18eb78fe67b300dda0c23feb9 Mon Sep 17 00:00:00 2001 From: Jack Steam Date: Mon, 12 Sep 2022 17:48:11 -0500 Subject: [PATCH] refactor: move observable to rxjs file --- .../vite-plugin/src/node/fileWriter-hmr.ts | 8 ++------ .../vite-plugin/src/node/fileWriter-rxjs.ts | 10 ++++++++++ .../src/node/fileWriter-utilities.ts | 20 ++----------------- 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/packages/vite-plugin/src/node/fileWriter-hmr.ts b/packages/vite-plugin/src/node/fileWriter-hmr.ts index c0b921c1b..2b2efdabd 100644 --- a/packages/vite-plugin/src/node/fileWriter-hmr.ts +++ b/packages/vite-plugin/src/node/fileWriter-hmr.ts @@ -5,12 +5,8 @@ import { PrunePayload, UpdatePayload, } from 'vite' -import { - allFilesReady$, - getFileName, - getViteUrl, - prefix, -} from './fileWriter-utilities' +import { allFilesReady$ } from './fileWriter-rxjs' +import { getFileName, getViteUrl, prefix } from './fileWriter-utilities' import { _debug } from './helpers' import { CrxHMRPayload } from './types' diff --git a/packages/vite-plugin/src/node/fileWriter-rxjs.ts b/packages/vite-plugin/src/node/fileWriter-rxjs.ts index 7a2e50ea7..576b0a89c 100644 --- a/packages/vite-plugin/src/node/fileWriter-rxjs.ts +++ b/packages/vite-plugin/src/node/fileWriter-rxjs.ts @@ -3,14 +3,17 @@ import { readFile } from 'fs-extra' import MagicString from 'magic-string' import { filter, + map, mergeMap, Observable, of, ReplaySubject, retry, + startWith, switchMap, } from 'rxjs' import { ViteDevServer } from 'vite' +import { outputFiles } from './fileWriter-filesMap' import { getFileName, getOutputPath, getViteUrl } from './fileWriter-utilities' import { join } from './path' import { CrxDevAssetId, CrxDevScriptId, CrxPlugin } from './types' @@ -60,6 +63,13 @@ export const buildStart$ = fileWriterEvent$.pipe( switchMap((e) => of(e)), ) +/** Emit when all script files are written */ +export const allFilesReady$ = buildEnd$.pipe( + switchMap(() => outputFiles.change$.pipe(startWith({ type: 'start' }))), + map(() => [...outputFiles.values()]), + switchMap((files) => Promise.all(files.map(({ file }) => file))), +) + /* ------------------- WRITE OPS ------------------- */ interface OperatorFileData { diff --git a/packages/vite-plugin/src/node/fileWriter-utilities.ts b/packages/vite-plugin/src/node/fileWriter-utilities.ts index 4b492bac6..f85455abe 100644 --- a/packages/vite-plugin/src/node/fileWriter-utilities.ts +++ b/packages/vite-plugin/src/node/fileWriter-utilities.ts @@ -1,7 +1,7 @@ -import { firstValueFrom, map, startWith, switchMap, tap } from 'rxjs' +import { firstValueFrom } from 'rxjs' import { ViteDevServer } from 'vite' import { outputFiles } from './fileWriter-filesMap' -import { buildEnd$ } from './fileWriter-rxjs' +import { allFilesReady$ } from './fileWriter-rxjs' import { _debug } from './helpers' import { isAbsolute, join } from './path' import { CrxDevAssetId, CrxDevScriptId } from './types' @@ -131,22 +131,6 @@ export async function fileReady(script: FileWriterId): Promise { await Promise.all(deps.map(fileReady)) } -// only emit when all script files are written -export const allFilesReady$ = buildEnd$.pipe( - tap((e) => { - return debug('buildEnd %o', e) - }), - switchMap(() => outputFiles.change$.pipe(startWith({ type: 'start' }))), - tap((e) => { - return debug('change$ %o', e) - }), - map(() => [...outputFiles.values()]), - switchMap((files) => Promise.all(files.map(({ file }) => file))), - tap((e) => { - return debug('buildEnd %o', e) - }), -) - /** Resolves when all existing files in scriptFiles are written. */ export async function allFilesReady(): Promise { await firstValueFrom(allFilesReady$)