diff --git a/packages/pglite/scripts/bundle-wasm.ts b/packages/pglite/scripts/bundle-wasm.ts index e9b10a32e..a60f16573 100644 --- a/packages/pglite/scripts/bundle-wasm.ts +++ b/packages/pglite/scripts/bundle-wasm.ts @@ -36,7 +36,7 @@ async function findAndReplaceInDir( async function main() { await fs.copyFile("./release/postgres.wasm", "./dist/postgres.wasm"); await fs.copyFile("./release/postgres.data", "./dist/postgres.data"); -// await fs.copyFile("./release/postgres.so", "./dist/postgres.so"); + await fs.copyFile("./release/postgres.js", "./dist/postgres.js"); await fs.copyFile("./release/vector.tar.gz", "./dist/vector.tar.gz"); await findAndReplaceInDir( "./dist", diff --git a/packages/pglite/src/extensionUtils.ts b/packages/pglite/src/extensionUtils.ts index a2ca2f85d..98502718e 100644 --- a/packages/pglite/src/extensionUtils.ts +++ b/packages/pglite/src/extensionUtils.ts @@ -1,6 +1,6 @@ import tinyTar from "tinytar"; import { IN_NODE } from "./utils.js"; -import type { PostgresMod } from "./postgres.js"; +import type { PostgresMod } from "./postgresMod.js"; export async function loadExtensionBundle( bundlePath: URL, diff --git a/packages/pglite/src/fs/idbfs.ts b/packages/pglite/src/fs/idbfs.ts index 29fe13e47..4965c92e3 100644 --- a/packages/pglite/src/fs/idbfs.ts +++ b/packages/pglite/src/fs/idbfs.ts @@ -1,5 +1,5 @@ import { FilesystemBase } from "./types.js"; -import type { FS, PostgresMod } from "../postgres.js"; +import type { FS, PostgresMod } from "../postgresMod.js"; import { PGDATA } from "./index.js"; import { dumpTar } from "./tarUtils.js"; diff --git a/packages/pglite/src/fs/memoryfs.ts b/packages/pglite/src/fs/memoryfs.ts index 82b7ffdcf..5ff74bea7 100644 --- a/packages/pglite/src/fs/memoryfs.ts +++ b/packages/pglite/src/fs/memoryfs.ts @@ -1,5 +1,5 @@ import { FilesystemBase } from "./types.js"; -import type { PostgresMod, FS } from "../postgres.js"; +import type { PostgresMod, FS } from "../postgresMod.js"; import { dumpTar } from "./tarUtils.js"; export class MemoryFS extends FilesystemBase { diff --git a/packages/pglite/src/fs/nodefs.ts b/packages/pglite/src/fs/nodefs.ts index 8e846e5c7..82c32ce39 100644 --- a/packages/pglite/src/fs/nodefs.ts +++ b/packages/pglite/src/fs/nodefs.ts @@ -2,7 +2,7 @@ import * as fs from "fs"; import * as path from "path"; import { FilesystemBase } from "./types.js"; import { PGDATA } from "./index.js"; -import type { PostgresMod, FS } from "../postgres.js"; +import type { PostgresMod, FS } from "../postgresMod.js"; import { dumpTar } from "./tarUtils.js"; export class NodeFS extends FilesystemBase { diff --git a/packages/pglite/src/fs/tarUtils.ts b/packages/pglite/src/fs/tarUtils.ts index b87c65394..085132545 100644 --- a/packages/pglite/src/fs/tarUtils.ts +++ b/packages/pglite/src/fs/tarUtils.ts @@ -1,5 +1,5 @@ import { tar, untar, type TarFile, REGTYPE, DIRTYPE } from "tinytar"; -import { FS } from "../postgres.js"; +import { FS } from "../postgresMod.js"; import { PGDATA } from "./index.js"; export async function dumpTar(FS: FS, dbname?: string): Promise { diff --git a/packages/pglite/src/fs/types.ts b/packages/pglite/src/fs/types.ts index c3b6f0a7f..bef970a64 100644 --- a/packages/pglite/src/fs/types.ts +++ b/packages/pglite/src/fs/types.ts @@ -1,4 +1,4 @@ -import type { PostgresMod, FS } from "../postgres.js"; +import type { PostgresMod, FS } from "../postgresMod.js"; export type FsType = "nodefs" | "idbfs" | "memoryfs"; diff --git a/packages/pglite/src/pglite.ts b/packages/pglite/src/pglite.ts index 679accf2b..6614ab66e 100644 --- a/packages/pglite/src/pglite.ts +++ b/packages/pglite/src/pglite.ts @@ -1,5 +1,5 @@ import { Mutex } from "async-mutex"; -import PostgresModFactory, { type PostgresMod } from "./postgres.js"; +import PostgresModFactory, { type PostgresMod } from "./postgresMod.js"; import { type Filesystem, parseDataDir, loadFs } from "./fs/index.js"; import { makeLocateFile } from "./utils.js"; import { parseResults } from "./parse.js"; diff --git a/packages/pglite/src/postgres.ts b/packages/pglite/src/postgresMod.ts similarity index 88% rename from packages/pglite/src/postgres.ts rename to packages/pglite/src/postgresMod.ts index 9587ff698..4be4474f8 100644 --- a/packages/pglite/src/postgres.ts +++ b/packages/pglite/src/postgresMod.ts @@ -1,5 +1,6 @@ //@ts-ignore -import PostgresModFactory from "../release/postgres.js"; +// This file in placed in the build from ../release/postgres.js +import PostgresModFactory from "./postgres.js"; // Uses the types from @types/emscripten diff --git a/packages/pglite/tsup.config.ts b/packages/pglite/tsup.config.ts index 23ee6f9f7..9147a9d84 100644 --- a/packages/pglite/tsup.config.ts +++ b/packages/pglite/tsup.config.ts @@ -1,11 +1,13 @@ import { defineConfig } from "tsup"; import path from "path"; import { fileURLToPath } from "url"; +import { Plugin } from 'esbuild' +import fs from 'fs' const thisFile = fileURLToPath(new URL(import.meta.url)); const root = path.dirname(thisFile); -let replaceAssertPlugin = { +const replaceAssertPlugin = { name: "replace-assert", setup(build: any) { // Resolve `assert` to a blank file @@ -15,6 +17,25 @@ let replaceAssertPlugin = { }, }; +const excludeFromMinificationAndChunkingPlugin: Plugin = { + name: 'exclude-from-minification-and-chunking', + setup(build) { + const filePath = path.resolve(root, 'release', 'postgres.js'); + build.onResolve({ filter: /release\/postgres\.js$/ }, args => ({ + path: filePath, + namespace: 'exclude-from-minification-and-chunking', + })); + + build.onLoad({ filter: /.*/, namespace: 'exclude-from-minification-and-chunking' }, async args => { + const contents = await fs.promises.readFile(args.path, 'utf8'); + return { + contents, + loader: 'ts', + }; + }); + } +} + const entryPoints = [ "src/index.ts", "src/worker/index.ts", @@ -31,12 +52,16 @@ export default defineConfig({ }, clean: true, format: ["esm"], + external: [ + './postgres.js', + // path.resolve(root, 'release', 'postgres.js'), // Exclude postgres.js from bundling + ], esbuildOptions(options, context) { options.inject = [ "src/polyfills/buffer.ts", "src/polyfills/indirectEval.ts", ]; }, - esbuildPlugins: [replaceAssertPlugin], + esbuildPlugins: [replaceAssertPlugin, excludeFromMinificationAndChunkingPlugin], minify: true, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 98ca8d51b..44955bb4e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,9 +5,6 @@ settings: excludeLinksFromLockfile: false patchedDependencies: - pg-protocol@1.6.0: - hash: m6gmuhkj45op6ok66bc7av7i4y - path: patches/pg-protocol@1.6.0.patch pg-protocol@1.6.1: hash: m6gmuhkj45op6ok66bc7av7i4y path: patches/pg-protocol@1.6.1.patch @@ -4051,10 +4048,9 @@ packages: pg: 8.11.3 dev: true - /pg-protocol@1.6.0(patch_hash=m6gmuhkj45op6ok66bc7av7i4y): + /pg-protocol@1.6.0: resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} dev: true - patched: true /pg-protocol@1.6.1(patch_hash=m6gmuhkj45op6ok66bc7av7i4y): resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==} @@ -4085,7 +4081,7 @@ packages: packet-reader: 1.0.0 pg-connection-string: 2.6.2 pg-pool: 3.6.1(pg@8.11.3) - pg-protocol: 1.6.0(patch_hash=m6gmuhkj45op6ok66bc7av7i4y) + pg-protocol: 1.6.0 pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: