Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion packages/meta/src/node-es-module-loader/loader.mts
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ export async function resolve(
}

const specifierUrl = new URL(specifier, 'file://');
for (const format of ['raw', 'json', 'url']) {
for (const format of ['raw', 'json', 'url', 'base64']) {
if (specifierUrl.searchParams.has(format)) {
// This is a custom format import and can be handled by our custom loader.
return {
Expand Down Expand Up @@ -189,6 +189,19 @@ export async function load(
};
}

if (context.format === 'base64' || urlObj.searchParams.has('base64')) {
// Load binary file content and export as base64 string
const content = readFileSync(urlObj.pathname);
const base64 = content.toString('base64');
return {
format: 'module',
shortCircuit: true,
source: `export default Uint8Array.from(atob(${JSON.stringify(
base64
)}), c => c.charCodeAt(0));`,
};
}

if (context.format === 'json' || urlObj.pathname.endsWith('.json')) {
const source = readFileSync(urlObj.pathname, 'utf8');
return {
Expand Down
4 changes: 3 additions & 1 deletion packages/nx-extensions/vite.config.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
/// <reference types="vitest" />
import { defineConfig } from 'vite';
import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../vite-extensions/vite-global-extensions';

export default defineConfig({
cacheDir: '../../../node_modules/.vite/nx-extensions',

plugins: [nxViteTsPaths()],
plugins: [nxViteTsPaths(), ...viteGlobalExtensions],

test: {
globals: true,
Expand Down
4 changes: 3 additions & 1 deletion packages/php-wasm/cli/vite.config.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
/// <reference types="vitest" />
import { defineConfig } from 'vite';
import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig({
assetsInclude: ['**/*.ini'],
cacheDir: '../../../node_modules/.vite/php-cli',

plugins: [nxViteTsPaths()],
plugins: [nxViteTsPaths(), ...viteGlobalExtensions],

// Configuration for building your library.
// See: https://vitejs.dev/guide/build.html#library-mode
Expand Down
4 changes: 4 additions & 0 deletions packages/php-wasm/fs-journal/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import { join } from 'path';
import { viteTsConfigPaths } from '../../vite-extensions/vite-ts-config-paths';
// eslint-disable-next-line @nx/enforce-module-boundaries
import { getExternalModules } from '../../vite-extensions/vite-external-modules';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig({
cacheDir: '../../../node_modules/.vite/php-wasm-fs-journal',
Expand All @@ -22,6 +24,8 @@ export default defineConfig({
viteTsConfigPaths({
root: '../../../',
}),

...viteGlobalExtensions,
],

// Configuration for building your library.
Expand Down
4 changes: 4 additions & 0 deletions packages/php-wasm/logger/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import { join } from 'path';
import { viteTsConfigPaths } from '../../vite-extensions/vite-ts-config-paths';
// eslint-disable-next-line @nx/enforce-module-boundaries
import { getExternalModules } from '../../vite-extensions/vite-external-modules';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig({
cacheDir: '../../../node_modules/.vite/php-wasm-logger',
Expand All @@ -22,6 +24,8 @@ export default defineConfig({
viteTsConfigPaths({
root: '../../../',
}),

...viteGlobalExtensions,
],

// Configuration for building your library.
Expand Down
4 changes: 4 additions & 0 deletions packages/php-wasm/node-polyfills/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import dts from 'vite-plugin-dts';
import viteTsConfigPaths from 'vite-tsconfig-paths';
// eslint-disable-next-line @nx/enforce-module-boundaries
import { getExternalModules } from '../../vite-extensions/vite-external-modules';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig({
cacheDir: '../../../node_modules/.vite/php-wasm-node-polyfills',
Expand All @@ -18,6 +20,8 @@ export default defineConfig({
tsconfigPath: join(__dirname, 'tsconfig.lib.json'),
pathsToAliases: false,
}),

...viteGlobalExtensions,
],

// Uncomment this if you are using workers.
Expand Down
4 changes: 4 additions & 0 deletions packages/php-wasm/node/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import path from 'path';
import type { Plugin } from 'vite';
// eslint-disable-next-line @nx/enforce-module-boundaries
import { getExternalModules } from '../../vite-extensions/vite-external-modules';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig(function () {
return {
Expand Down Expand Up @@ -52,6 +54,8 @@ export default defineConfig(function () {
return null;
},
} as Plugin,

...viteGlobalExtensions,
],

// Configuration for building your library.
Expand Down
4 changes: 4 additions & 0 deletions packages/php-wasm/progress/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import { join } from 'path';
import { viteTsConfigPaths } from '../../vite-extensions/vite-ts-config-paths';
// eslint-disable-next-line @nx/enforce-module-boundaries
import { getExternalModules } from '../../vite-extensions/vite-external-modules';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig({
cacheDir: '../../../node_modules/.vite/php-wasm-progress',
Expand All @@ -22,6 +24,8 @@ export default defineConfig({
viteTsConfigPaths({
root: '../../../',
}),

...viteGlobalExtensions,
],

// Uncomment this if you are using workers.
Expand Down
4 changes: 4 additions & 0 deletions packages/php-wasm/scopes/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import { join } from 'path';
import { viteTsConfigPaths } from '../../vite-extensions/vite-ts-config-paths';
// eslint-disable-next-line @nx/enforce-module-boundaries
import { getExternalModules } from '../../vite-extensions/vite-external-modules';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig({
cacheDir: '../../../node_modules/.vite/php-wasm-scope',
Expand All @@ -22,6 +24,8 @@ export default defineConfig({
viteTsConfigPaths({
root: '../../../',
}),

...viteGlobalExtensions,
],

// Configuration for building your library.
Expand Down
4 changes: 4 additions & 0 deletions packages/php-wasm/stream-compression/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import * as path from 'path';
import { viteTsConfigPaths } from '../../vite-extensions/vite-ts-config-paths';
// eslint-disable-next-line @nx/enforce-module-boundaries
import { getExternalModules } from '../../vite-extensions/vite-external-modules';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig({
cacheDir: '../../../node_modules/.vite/php-wasm-stream-compression',
Expand All @@ -19,6 +21,8 @@ export default defineConfig({
viteTsConfigPaths({
root: '../../../',
}),

...viteGlobalExtensions,
],

// Uncomment this if you are using workers.
Expand Down
4 changes: 4 additions & 0 deletions packages/php-wasm/universal/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import { join } from 'path';
import { viteTsConfigPaths } from '../../vite-extensions/vite-ts-config-paths';
// eslint-disable-next-line @nx/enforce-module-boundaries
import { getExternalModules } from '../../vite-extensions/vite-external-modules';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig({
cacheDir: '../../../node_modules/.vite/php-wasm-universal',
Expand All @@ -22,6 +24,8 @@ export default defineConfig({
viteTsConfigPaths({
root: '../../../',
}),

...viteGlobalExtensions,
],

// Configuration for building your library.
Expand Down
4 changes: 4 additions & 0 deletions packages/php-wasm/util/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import { join } from 'path';
import viteTsConfigPaths from 'vite-tsconfig-paths';
// eslint-disable-next-line @nx/enforce-module-boundaries
import { getExternalModules } from '../../vite-extensions/vite-external-modules';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig({
cacheDir: '../../../node_modules/.vite/php-wasm-util',
Expand All @@ -21,6 +23,8 @@ export default defineConfig({
viteTsConfigPaths({
root: '../../../',
}),

...viteGlobalExtensions,
],

// Uncomment this if you are using workers.
Expand Down
4 changes: 4 additions & 0 deletions packages/php-wasm/web-service-worker/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import { join } from 'path';
import { viteTsConfigPaths } from '../../vite-extensions/vite-ts-config-paths';
// eslint-disable-next-line @nx/enforce-module-boundaries
import { getExternalModules } from '../../vite-extensions/vite-external-modules';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig({
cacheDir: '../../../node_modules/.vite/php-wasm-web-service-worker',
Expand All @@ -22,6 +24,8 @@ export default defineConfig({
viteTsConfigPaths({
root: '../../../',
}),

...viteGlobalExtensions,
],

build: {
Expand Down
4 changes: 4 additions & 0 deletions packages/php-wasm/web/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import dts from 'vite-plugin-dts';
import { viteTsConfigPaths } from '../../vite-extensions/vite-ts-config-paths';
// eslint-disable-next-line @nx/enforce-module-boundaries
import { getExternalModules } from '../../vite-extensions/vite-external-modules';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig(({ command }) => {
return {
Expand Down Expand Up @@ -103,6 +105,8 @@ export default defineConfig(({ command }) => {
}
},
},

...viteGlobalExtensions,
],

// Configuration for building your library.
Expand Down
4 changes: 4 additions & 0 deletions packages/php-wasm/xdebug-bridge/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import dts from 'vite-plugin-dts';

// eslint-disable-next-line @nx/enforce-module-boundaries
import { viteTsConfigPaths } from '../../vite-extensions/vite-ts-config-paths';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

export default defineConfig({
cacheDir: '../../../node_modules/.vite/php-wasm-xdebug-bridge',
Expand All @@ -20,6 +22,8 @@ export default defineConfig({
viteTsConfigPaths({
root: '../../../',
}),

...viteGlobalExtensions,
{
name: 'import-url',
enforce: 'pre',
Expand Down
1 change: 1 addition & 0 deletions packages/playground/blueprints/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export type {
VFSReference,
VFSResource,
} from './lib/resources';
export { getV2Runner } from './lib/v2/get-v2-runner';

export { resolveRemoteBlueprint } from './lib/resolve-remote-blueprint';
export { wpContentFilesExcludedFromExport } from './lib/utils/wp-content-files-excluded-from-exports';
Expand Down
15 changes: 15 additions & 0 deletions packages/playground/blueprints/src/lib/v2/get-v2-runner.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
export async function getV2Runner(): Promise<File> {
/**
* Dynamically read the file on demand.
*
* In production, this is encoded as base64 which increases the file size by ~30%. This is
* not ideal, but there's no other standard solution for shipping static files with isomorphic
* npm CJS+ESM packages so this will have to do until a better solution emerges.
*/
const blueprintsPharBytes = // @ts-ignore
(await import('../../../blueprints.phar?base64')).default;

return new File([blueprintsPharBytes], `blueprints.phar`, {
type: 'application/zip',
});
}
37 changes: 6 additions & 31 deletions packages/playground/blueprints/vite.config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/// <reference types="vitest" />
import type { Plugin } from 'vite';
import { defineConfig } from 'vite';

import dts from 'vite-plugin-dts';
Expand All @@ -9,9 +8,11 @@ import { join } from 'path';
import { viteTsConfigPaths } from '../../vite-extensions/vite-ts-config-paths';
// eslint-disable-next-line @nx/enforce-module-boundaries
import { getExternalModules } from '../../vite-extensions/vite-external-modules';
// eslint-disable-next-line @nx/enforce-module-boundaries
import viteGlobalExtensions from '../../vite-extensions/vite-global-extensions';

const path = (filename: string) => new URL(filename, import.meta.url).pathname;
export default defineConfig({
assetsInclude: ['**/*.phar'],
cacheDir: '../../../node_modules/.vite/playground-blueprints',

plugins: [
Expand All @@ -25,45 +26,19 @@ export default defineConfig({
root: '../../../',
}),

{
name: 'use-correct-blueprints-phar-file-url-in-vitest-environment',
/**
* When ran inside the `blueprints.phar` package, vitest resolves
* `blueprints.phar?url` as `/public/blueprints.phar?url`. However, when ran
* inside other packages, it resolves as `/@fs/full/path/to/blueprints.phar`.
*
* This plugin ensures that the `blueprints.phar` file is always consistently
* resolved as the latter.
*/
transform(code, id) {
if (id.match(new RegExp(`/blueprints\\.phar\\?url`))) {
const fullyQualifiedPath = '/@fs' + path(id.split('?')[0]);
return `export default ${JSON.stringify(
fullyQualifiedPath
)};`;
}
return code;
},
} as Plugin,
...viteGlobalExtensions,
],

// Uncomment this if you are using workers.
// worker: {
// plugins: [
// viteTsConfigPaths({
// root: '../../../',
// }),
// ],
// },

// Configuration for building your library.
// See: https://vitejs.dev/guide/build.html#library-mode
build: {
assetsInlineLimit: 0,
lib: {
// Could also be a dictionary or array of multiple entry points.
entry: 'src/index.ts',
name: 'playground-blueprints',
fileName: 'index',

// Change this to the formats you want to support.
// Don't forgot to update your package.json as well.
formats: ['es', 'cjs'],
Expand Down
Loading