one 1.15.10 → 1.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli/build.cjs +98 -58
- package/dist/cjs/cli/build.native.js +106 -63
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/cli/buildPage.cjs +3 -3
- package/dist/cjs/cli/buildPage.native.js +3 -3
- package/dist/cjs/cli/buildPage.native.js.map +1 -1
- package/dist/cjs/constants.cjs +2 -0
- package/dist/cjs/constants.native.js +2 -0
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/createAPIRoute.native.js.map +1 -1
- package/dist/cjs/createApp.cjs +2 -6
- package/dist/cjs/createHandleRequest.cjs +2 -2
- package/dist/cjs/createHandleRequest.native.js +2 -2
- package/dist/cjs/createHandleRequest.native.js.map +1 -1
- package/dist/cjs/hooks.cjs +5 -1
- package/dist/cjs/hooks.native.js +7 -1
- package/dist/cjs/hooks.native.js.map +1 -1
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/metro-config/getViteMetroPluginOptions.cjs +10 -7
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js +13 -10
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
- package/dist/cjs/metro-config/getViteMetroPluginOptions.test.cjs +23 -0
- package/dist/cjs/metro-config/getViteMetroPluginOptions.test.native.js +26 -0
- package/dist/cjs/metro-config/getViteMetroPluginOptions.test.native.js.map +1 -0
- package/dist/cjs/router/Route.cjs +21 -1
- package/dist/cjs/router/Route.native.js +22 -1
- package/dist/cjs/router/Route.native.js.map +1 -1
- package/dist/cjs/router/interceptRoutes.cjs +6 -6
- package/dist/cjs/router/interceptRoutes.native.js +6 -6
- package/dist/cjs/router/interceptRoutes.native.js.map +1 -1
- package/dist/cjs/router/params.cjs +46 -0
- package/dist/cjs/router/params.native.js +70 -0
- package/dist/cjs/router/params.native.js.map +1 -0
- package/dist/cjs/router/router.cjs +21 -6
- package/dist/cjs/router/router.native.js +21 -6
- package/dist/cjs/router/router.native.js.map +1 -1
- package/dist/cjs/router/useScreens.cjs +3 -0
- package/dist/cjs/router/useScreens.native.js +2 -0
- package/dist/cjs/router/useScreens.native.js.map +1 -1
- package/dist/cjs/serve-worker.native.js.map +1 -1
- package/dist/cjs/server/getServerManifest.cjs +6 -6
- package/dist/cjs/server/getServerManifest.native.js +6 -6
- package/dist/cjs/server/getServerManifest.native.js.map +1 -1
- package/dist/cjs/server/oneServe.cjs +9 -5
- package/dist/cjs/server/oneServe.native.js +9 -5
- package/dist/cjs/server/oneServe.native.js.map +1 -1
- package/dist/cjs/server/workerHandler.cjs +2 -2
- package/dist/cjs/server/workerHandler.native.js +2 -2
- package/dist/cjs/server/workerHandler.native.js.map +1 -1
- package/dist/cjs/skewProtection.cjs +48 -7
- package/dist/cjs/skewProtection.native.js +48 -7
- package/dist/cjs/skewProtection.native.js.map +1 -1
- package/dist/cjs/useLoader.cjs +67 -69
- package/dist/cjs/useLoader.native.js +113 -117
- package/dist/cjs/useLoader.native.js.map +1 -1
- package/dist/cjs/utils/dynamicImport.cjs +3 -1
- package/dist/cjs/utils/dynamicImport.native.js +22 -1
- package/dist/cjs/utils/dynamicImport.native.js.map +1 -1
- package/dist/cjs/utils/toAbsolute.cjs +5 -2
- package/dist/cjs/utils/toAbsolute.native.js +6 -1
- package/dist/cjs/utils/toAbsolute.native.js.map +1 -1
- package/dist/cjs/utils/workerImport.cjs +1 -1
- package/dist/cjs/utils/workerImport.native.js +1 -1
- package/dist/cjs/utils/workerImport.native.js.map +1 -1
- package/dist/cjs/views/RootErrorBoundary.cjs +114 -117
- package/dist/cjs/views/RootErrorBoundary.native.js +126 -146
- package/dist/cjs/views/RootErrorBoundary.native.js.map +1 -1
- package/dist/cjs/views/Try.cjs +17 -18
- package/dist/cjs/views/Try.native.js +28 -42
- package/dist/cjs/views/Try.native.js.map +1 -1
- package/dist/cjs/vite/plugins/criticalCSSPlugin.cjs +2 -1
- package/dist/cjs/vite/plugins/criticalCSSPlugin.native.js +2 -1
- package/dist/cjs/vite/plugins/criticalCSSPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/criticalCSSPlugin.test.cjs +26 -20
- package/dist/cjs/vite/plugins/criticalCSSPlugin.test.native.js +28 -20
- package/dist/cjs/vite/plugins/criticalCSSPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/imageDataPlugin.cjs +3 -2
- package/dist/cjs/vite/plugins/imageDataPlugin.native.js +3 -2
- package/dist/cjs/vite/plugins/imageDataPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/imageDataPlugin.test.cjs +34 -69
- package/dist/cjs/vite/plugins/imageDataPlugin.test.native.js +34 -69
- package/dist/cjs/vite/plugins/imageDataPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/sourceInspectorPlugin.cjs +20 -2
- package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js +23 -2
- package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/sourceInspectorPlugin.test.cjs +21 -0
- package/dist/cjs/vite/plugins/sourceInspectorPlugin.test.native.js +28 -0
- package/dist/cjs/vite/plugins/sourceInspectorPlugin.test.native.js.map +1 -0
- package/dist/cjs/vite/resolveResponse.cjs +7 -2
- package/dist/cjs/vite/resolveResponse.native.js +7 -2
- package/dist/cjs/vite/resolveResponse.native.js.map +1 -1
- package/dist/esm/cli/build.mjs +100 -60
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +108 -65
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/cli/buildPage.mjs +4 -4
- package/dist/esm/cli/buildPage.mjs.map +1 -1
- package/dist/esm/cli/buildPage.native.js +4 -4
- package/dist/esm/cli/buildPage.native.js.map +1 -1
- package/dist/esm/constants.mjs +2 -1
- package/dist/esm/constants.mjs.map +1 -1
- package/dist/esm/constants.native.js +2 -1
- package/dist/esm/constants.native.js.map +1 -1
- package/dist/esm/createAPIRoute.mjs.map +1 -1
- package/dist/esm/createAPIRoute.native.js.map +1 -1
- package/dist/esm/createApp.mjs +2 -6
- package/dist/esm/createApp.mjs.map +1 -1
- package/dist/esm/createHandleRequest.mjs +2 -2
- package/dist/esm/createHandleRequest.mjs.map +1 -1
- package/dist/esm/createHandleRequest.native.js +2 -2
- package/dist/esm/createHandleRequest.native.js.map +1 -1
- package/dist/esm/hooks.mjs +5 -1
- package/dist/esm/hooks.mjs.map +1 -1
- package/dist/esm/hooks.native.js +7 -1
- package/dist/esm/hooks.native.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.mjs +9 -7
- package/dist/esm/metro-config/getViteMetroPluginOptions.mjs.map +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.native.js +12 -10
- package/dist/esm/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
- package/dist/esm/metro-config/getViteMetroPluginOptions.test.mjs +24 -0
- package/dist/esm/metro-config/getViteMetroPluginOptions.test.mjs.map +1 -0
- package/dist/esm/metro-config/getViteMetroPluginOptions.test.native.js +24 -0
- package/dist/esm/metro-config/getViteMetroPluginOptions.test.native.js.map +1 -0
- package/dist/esm/router/Route.mjs +21 -1
- package/dist/esm/router/Route.mjs.map +1 -1
- package/dist/esm/router/Route.native.js +22 -1
- package/dist/esm/router/Route.native.js.map +1 -1
- package/dist/esm/router/interceptRoutes.mjs +7 -7
- package/dist/esm/router/interceptRoutes.mjs.map +1 -1
- package/dist/esm/router/interceptRoutes.native.js +7 -7
- package/dist/esm/router/interceptRoutes.native.js.map +1 -1
- package/dist/esm/router/params.mjs +21 -0
- package/dist/esm/router/params.mjs.map +1 -0
- package/dist/esm/router/params.native.js +42 -0
- package/dist/esm/router/params.native.js.map +1 -0
- package/dist/esm/router/router.mjs +21 -6
- package/dist/esm/router/router.mjs.map +1 -1
- package/dist/esm/router/router.native.js +21 -6
- package/dist/esm/router/router.native.js.map +1 -1
- package/dist/esm/router/useScreens.mjs +3 -0
- package/dist/esm/router/useScreens.mjs.map +1 -1
- package/dist/esm/router/useScreens.native.js +2 -0
- package/dist/esm/router/useScreens.native.js.map +1 -1
- package/dist/esm/serve-worker.mjs.map +1 -1
- package/dist/esm/serve-worker.native.js.map +1 -1
- package/dist/esm/server/getServerManifest.mjs +6 -6
- package/dist/esm/server/getServerManifest.mjs.map +1 -1
- package/dist/esm/server/getServerManifest.native.js +6 -6
- package/dist/esm/server/getServerManifest.native.js.map +1 -1
- package/dist/esm/server/oneServe.mjs +11 -7
- package/dist/esm/server/oneServe.mjs.map +1 -1
- package/dist/esm/server/oneServe.native.js +11 -7
- package/dist/esm/server/oneServe.native.js.map +1 -1
- package/dist/esm/server/workerHandler.mjs +2 -2
- package/dist/esm/server/workerHandler.mjs.map +1 -1
- package/dist/esm/server/workerHandler.native.js +2 -2
- package/dist/esm/server/workerHandler.native.js.map +1 -1
- package/dist/esm/skewProtection.mjs +48 -8
- package/dist/esm/skewProtection.mjs.map +1 -1
- package/dist/esm/skewProtection.native.js +48 -8
- package/dist/esm/skewProtection.native.js.map +1 -1
- package/dist/esm/useLoader.mjs +64 -66
- package/dist/esm/useLoader.mjs.map +1 -1
- package/dist/esm/useLoader.native.js +112 -116
- package/dist/esm/useLoader.native.js.map +1 -1
- package/dist/esm/utils/dynamicImport.mjs +1 -1
- package/dist/esm/utils/dynamicImport.mjs.map +1 -1
- package/dist/esm/utils/dynamicImport.native.js +20 -1
- package/dist/esm/utils/dynamicImport.native.js.map +1 -1
- package/dist/esm/utils/toAbsolute.mjs +3 -1
- package/dist/esm/utils/toAbsolute.mjs.map +1 -1
- package/dist/esm/utils/toAbsolute.native.js +5 -1
- package/dist/esm/utils/toAbsolute.native.js.map +1 -1
- package/dist/esm/utils/workerImport.mjs +2 -2
- package/dist/esm/utils/workerImport.mjs.map +1 -1
- package/dist/esm/utils/workerImport.native.js +2 -2
- package/dist/esm/utils/workerImport.native.js.map +1 -1
- package/dist/esm/views/RootErrorBoundary.mjs +114 -117
- package/dist/esm/views/RootErrorBoundary.mjs.map +1 -1
- package/dist/esm/views/RootErrorBoundary.native.js +126 -146
- package/dist/esm/views/RootErrorBoundary.native.js.map +1 -1
- package/dist/esm/views/Try.mjs +17 -18
- package/dist/esm/views/Try.mjs.map +1 -1
- package/dist/esm/views/Try.native.js +28 -42
- package/dist/esm/views/Try.native.js.map +1 -1
- package/dist/esm/vite/plugins/criticalCSSPlugin.mjs +2 -1
- package/dist/esm/vite/plugins/criticalCSSPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/criticalCSSPlugin.native.js +2 -1
- package/dist/esm/vite/plugins/criticalCSSPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/criticalCSSPlugin.test.mjs +26 -20
- package/dist/esm/vite/plugins/criticalCSSPlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/criticalCSSPlugin.test.native.js +28 -20
- package/dist/esm/vite/plugins/criticalCSSPlugin.test.native.js.map +1 -1
- package/dist/esm/vite/plugins/imageDataPlugin.mjs +4 -3
- package/dist/esm/vite/plugins/imageDataPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/imageDataPlugin.native.js +4 -3
- package/dist/esm/vite/plugins/imageDataPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/imageDataPlugin.test.mjs +34 -69
- package/dist/esm/vite/plugins/imageDataPlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/imageDataPlugin.test.native.js +34 -69
- package/dist/esm/vite/plugins/imageDataPlugin.test.native.js.map +1 -1
- package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs +19 -3
- package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js +22 -3
- package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/sourceInspectorPlugin.test.mjs +22 -0
- package/dist/esm/vite/plugins/sourceInspectorPlugin.test.mjs.map +1 -0
- package/dist/esm/vite/plugins/sourceInspectorPlugin.test.native.js +26 -0
- package/dist/esm/vite/plugins/sourceInspectorPlugin.test.native.js.map +1 -0
- package/dist/esm/vite/resolveResponse.mjs +7 -2
- package/dist/esm/vite/resolveResponse.mjs.map +1 -1
- package/dist/esm/vite/resolveResponse.native.js +7 -2
- package/dist/esm/vite/resolveResponse.native.js.map +1 -1
- package/expo-plugin.cjs +1 -0
- package/package.json +15 -10
- package/react-native-commands.cjs +1 -0
- package/src/cli/build.ts +156 -99
- package/src/cli/buildPage.ts +4 -4
- package/src/constants.ts +15 -0
- package/src/createAPIRoute.ts +35 -2
- package/src/createApp.tsx +2 -6
- package/src/createHandleRequest.ts +6 -2
- package/src/hooks.tsx +9 -1
- package/src/index.ts +8 -1
- package/src/metro-config/getViteMetroPluginOptions.test.ts +34 -0
- package/src/metro-config/getViteMetroPluginOptions.ts +14 -11
- package/src/router/Route.tsx +52 -2
- package/src/router/interceptRoutes.ts +7 -7
- package/src/router/params.ts +32 -0
- package/src/router/router.ts +43 -10
- package/src/router/useScreens.tsx +18 -0
- package/src/serve-worker.ts +4 -2
- package/src/server/getServerManifest.ts +11 -7
- package/src/server/oneServe.ts +12 -14
- package/src/server/workerHandler.ts +13 -2
- package/src/skewProtection.ts +45 -5
- package/src/useLoader.ts +6 -4
- package/src/utils/dynamicImport.ts +2 -2
- package/src/utils/toAbsolute.ts +5 -0
- package/src/utils/workerImport.ts +2 -2
- package/src/views/RootErrorBoundary.tsx +18 -0
- package/src/views/Try.tsx +18 -0
- package/src/vite/plugins/criticalCSSPlugin.test.ts +34 -24
- package/src/vite/plugins/criticalCSSPlugin.ts +3 -2
- package/src/vite/plugins/imageDataPlugin.test.ts +39 -83
- package/src/vite/plugins/imageDataPlugin.ts +5 -4
- package/src/vite/plugins/sourceInspectorPlugin.test.ts +40 -0
- package/src/vite/plugins/sourceInspectorPlugin.ts +30 -2
- package/src/vite/resolveResponse.ts +6 -2
- package/types/cli/build.d.ts.map +1 -1
- package/types/constants.d.ts +9 -0
- package/types/constants.d.ts.map +1 -1
- package/types/createAPIRoute.d.ts +28 -3
- package/types/createAPIRoute.d.ts.map +1 -1
- package/types/createApp.d.ts.map +1 -1
- package/types/createHandleRequest.d.ts +1 -1
- package/types/createHandleRequest.d.ts.map +1 -1
- package/types/headless-server.d.ts +1 -1
- package/types/hooks.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/metro-config/getViteMetroPluginOptions.d.ts +5 -0
- package/types/metro-config/getViteMetroPluginOptions.d.ts.map +1 -1
- package/types/metro-config/getViteMetroPluginOptions.test.d.ts +2 -0
- package/types/metro-config/getViteMetroPluginOptions.test.d.ts.map +1 -0
- package/types/router/Route.d.ts +1 -0
- package/types/router/Route.d.ts.map +1 -1
- package/types/router/params.d.ts +3 -0
- package/types/router/params.d.ts.map +1 -0
- package/types/router/router.d.ts.map +1 -1
- package/types/router/useScreens.d.ts.map +1 -1
- package/types/serve-worker.d.ts +5 -3
- package/types/serve-worker.d.ts.map +1 -1
- package/types/server/getServerManifest.d.ts.map +1 -1
- package/types/server/oneServe.d.ts.map +1 -1
- package/types/server/workerHandler.d.ts +1 -1
- package/types/server/workerHandler.d.ts.map +1 -1
- package/types/skewProtection.d.ts +1 -0
- package/types/skewProtection.d.ts.map +1 -1
- package/types/useLoader.d.ts.map +1 -1
- package/types/utils/dynamicImport.d.ts +2 -0
- package/types/utils/dynamicImport.d.ts.map +1 -1
- package/types/utils/toAbsolute.d.ts +3 -0
- package/types/utils/toAbsolute.d.ts.map +1 -1
- package/types/views/RootErrorBoundary.d.ts.map +1 -1
- package/types/views/Try.d.ts.map +1 -1
- package/types/vite/plugins/criticalCSSPlugin.d.ts.map +1 -1
- package/types/vite/plugins/imageDataPlugin.d.ts.map +1 -1
- package/types/vite/plugins/sourceInspectorPlugin.d.ts +2 -0
- package/types/vite/plugins/sourceInspectorPlugin.d.ts.map +1 -1
- package/types/vite/plugins/sourceInspectorPlugin.test.d.ts +2 -0
- package/types/vite/plugins/sourceInspectorPlugin.test.d.ts.map +1 -0
- package/types/vite/resolveResponse.d.ts +1 -1
- package/types/vite/resolveResponse.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["afterEach","beforeEach","describe","expect","it","vi","resetModules","clearAllMocks","criticalCSSPlugin","plugin","configResolved","root","result","resolveId","call","
|
|
1
|
+
{"version":3,"names":["resolve","afterEach","beforeEach","describe","expect","it","vi","PROJECT_ROOT","resetModules","clearAllMocks","criticalCSSPlugin","plugin","configResolved","root","result","resolveId","call","fn","toBeNull","resolvedCssPath","mockResolve","mockResolvedValue","id","importerPath","toHaveBeenCalledWith","skipSelf","toEqual","getCriticalCSSSources","sources","has","toBe","getCriticalCSSOutputPaths","sourceKey","find","s","includes","manifest","file","src","css","imports","name","outputPaths","toBeDefined"],"sources":["../../../../src/vite/plugins/criticalCSSPlugin.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
|
-
import { dirname, relative, resolve } from "node:path";
|
|
2
|
+
import { dirname, relative, resolve, sep } from "node:path";
|
|
3
|
+
import { normalizePath } from "vite";
|
|
3
4
|
import { processImageMeta } from "../../image/getImageData.mjs";
|
|
4
5
|
const IMAGEDATA_SUFFIX = "?imagedata";
|
|
5
6
|
const VIRTUAL_PREFIX = "\0imagedata:";
|
|
@@ -7,12 +8,12 @@ function imageDataPlugin() {
|
|
|
7
8
|
let publicDir;
|
|
8
9
|
let root;
|
|
9
10
|
function getSrcPath(filePath) {
|
|
10
|
-
return filePath.startsWith(publicDir) ? "/" + relative(publicDir, filePath) : "/" + relative(root, filePath);
|
|
11
|
+
return filePath.startsWith(publicDir) ? "/" + normalizePath(relative(publicDir, filePath)) : "/" + normalizePath(relative(root, filePath));
|
|
11
12
|
}
|
|
12
13
|
function isPathWithinBounds(filePath, allowedDir) {
|
|
13
14
|
const resolved = resolve(filePath);
|
|
14
15
|
const allowed = resolve(allowedDir);
|
|
15
|
-
return resolved.startsWith(allowed +
|
|
16
|
+
return resolved.startsWith(allowed + sep) || resolved === allowed;
|
|
16
17
|
}
|
|
17
18
|
function createImageDataExport(src, width = 0, height = 0, blurDataURL = "") {
|
|
18
19
|
return `export default ${JSON.stringify({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["existsSync","dirname","relative","resolve","processImageMeta","IMAGEDATA_SUFFIX","VIRTUAL_PREFIX","imageDataPlugin","publicDir","root","getSrcPath","filePath","startsWith","isPathWithinBounds","allowedDir","resolved","allowed","createImageDataExport","src","width","height","blurDataURL","JSON","stringify","name","enforce","configResolved","resolvedConfig","resolveId","id","importer","endsWith","cleanId","slice","length","replace","console","warn","load","addWatchFile","meta"],"sources":["../../../../src/vite/plugins/imageDataPlugin.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAC3B,SAASC,OAAA,EAASC,QAAA,EAAUC,OAAA,
|
|
1
|
+
{"version":3,"names":["existsSync","dirname","relative","resolve","sep","normalizePath","processImageMeta","IMAGEDATA_SUFFIX","VIRTUAL_PREFIX","imageDataPlugin","publicDir","root","getSrcPath","filePath","startsWith","isPathWithinBounds","allowedDir","resolved","allowed","createImageDataExport","src","width","height","blurDataURL","JSON","stringify","name","enforce","configResolved","resolvedConfig","resolveId","id","importer","endsWith","cleanId","slice","length","replace","console","warn","load","addWatchFile","meta"],"sources":["../../../../src/vite/plugins/imageDataPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { existsSync } from "fs";
|
|
2
|
-
import { dirname, relative, resolve } from "path";
|
|
2
|
+
import { dirname, relative, resolve, sep } from "path";
|
|
3
|
+
import { normalizePath } from "vite";
|
|
3
4
|
import { processImageMeta } from "../../image/getImageData.native.js";
|
|
4
5
|
var IMAGEDATA_SUFFIX = "?imagedata";
|
|
5
6
|
var VIRTUAL_PREFIX = "\0imagedata:";
|
|
@@ -7,12 +8,12 @@ function imageDataPlugin() {
|
|
|
7
8
|
var publicDir;
|
|
8
9
|
var root;
|
|
9
10
|
function getSrcPath(filePath) {
|
|
10
|
-
return filePath.startsWith(publicDir) ? "/" + relative(publicDir, filePath) : "/" + relative(root, filePath);
|
|
11
|
+
return filePath.startsWith(publicDir) ? "/" + normalizePath(relative(publicDir, filePath)) : "/" + normalizePath(relative(root, filePath));
|
|
11
12
|
}
|
|
12
13
|
function isPathWithinBounds(filePath, allowedDir) {
|
|
13
14
|
var resolved = resolve(filePath);
|
|
14
15
|
var allowed = resolve(allowedDir);
|
|
15
|
-
return resolved.startsWith(allowed +
|
|
16
|
+
return resolved.startsWith(allowed + sep) || resolved === allowed;
|
|
16
17
|
}
|
|
17
18
|
function createImageDataExport(src) {
|
|
18
19
|
var width = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["existsSync","dirname","relative","resolve","processImageMeta","IMAGEDATA_SUFFIX","VIRTUAL_PREFIX","imageDataPlugin","publicDir","root","getSrcPath","filePath","startsWith","isPathWithinBounds","allowedDir","resolved","allowed","createImageDataExport","src","width","arguments","length","height","blurDataURL","JSON","stringify","name","enforce","configResolved","resolvedConfig","resolveId","id","importer","endsWith","cleanId","slice","replace","console","warn","load","addWatchFile","meta"],"sources":["../../../../src/vite/plugins/imageDataPlugin.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAC3B,SAASC,OAAA,EAASC,QAAA,EAAUC,OAAA,
|
|
1
|
+
{"version":3,"names":["existsSync","dirname","relative","resolve","sep","normalizePath","processImageMeta","IMAGEDATA_SUFFIX","VIRTUAL_PREFIX","imageDataPlugin","publicDir","root","getSrcPath","filePath","startsWith","isPathWithinBounds","allowedDir","resolved","allowed","createImageDataExport","src","width","arguments","length","height","blurDataURL","JSON","stringify","name","enforce","configResolved","resolvedConfig","resolveId","id","importer","endsWith","cleanId","slice","replace","console","warn","load","addWatchFile","meta"],"sources":["../../../../src/vite/plugins/imageDataPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
1
2
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
3
|
+
const PROJECT_ROOT = resolve("/project");
|
|
4
|
+
const PUBLIC_DIR = resolve("/project/public");
|
|
5
|
+
const COMPONENTS_DIR = resolve("/project/src/components");
|
|
6
|
+
const HERO_FILE = resolve("/project/src/components/Hero.tsx");
|
|
2
7
|
vi.mock("node:fs", async () => {
|
|
3
8
|
const actual = await vi.importActual("node:fs");
|
|
4
9
|
return {
|
|
@@ -8,6 +13,12 @@ vi.mock("node:fs", async () => {
|
|
|
8
13
|
})
|
|
9
14
|
};
|
|
10
15
|
});
|
|
16
|
+
function mockConfig() {
|
|
17
|
+
return {
|
|
18
|
+
publicDir: PUBLIC_DIR,
|
|
19
|
+
root: PROJECT_ROOT
|
|
20
|
+
};
|
|
21
|
+
}
|
|
11
22
|
describe("imageDataPlugin", () => {
|
|
12
23
|
beforeEach(() => {
|
|
13
24
|
vi.resetModules();
|
|
@@ -21,13 +32,9 @@ describe("imageDataPlugin", () => {
|
|
|
21
32
|
imageDataPlugin
|
|
22
33
|
} = await import("./imageDataPlugin.mjs");
|
|
23
34
|
const plugin = imageDataPlugin();
|
|
24
|
-
const mockConfig = {
|
|
25
|
-
publicDir: "/project/public",
|
|
26
|
-
root: "/project"
|
|
27
|
-
};
|
|
28
35
|
if (plugin.configResolved) {
|
|
29
36
|
;
|
|
30
|
-
plugin.configResolved(mockConfig);
|
|
37
|
+
plugin.configResolved(mockConfig());
|
|
31
38
|
}
|
|
32
39
|
const result = await plugin.resolveId("./image.jpg", void 0);
|
|
33
40
|
expect(result).toBeNull();
|
|
@@ -37,13 +44,9 @@ describe("imageDataPlugin", () => {
|
|
|
37
44
|
imageDataPlugin
|
|
38
45
|
} = await import("./imageDataPlugin.mjs");
|
|
39
46
|
const plugin = imageDataPlugin();
|
|
40
|
-
const mockConfig = {
|
|
41
|
-
publicDir: "/project/public",
|
|
42
|
-
root: "/project"
|
|
43
|
-
};
|
|
44
47
|
if (plugin.configResolved) {
|
|
45
48
|
;
|
|
46
|
-
plugin.configResolved(mockConfig);
|
|
49
|
+
plugin.configResolved(mockConfig());
|
|
47
50
|
}
|
|
48
51
|
const result = await plugin.resolveId("./image?imagedata.jpg", void 0);
|
|
49
52
|
expect(result).toBeNull();
|
|
@@ -53,45 +56,33 @@ describe("imageDataPlugin", () => {
|
|
|
53
56
|
imageDataPlugin
|
|
54
57
|
} = await import("./imageDataPlugin.mjs");
|
|
55
58
|
const plugin = imageDataPlugin();
|
|
56
|
-
const mockConfig = {
|
|
57
|
-
publicDir: "/project/public",
|
|
58
|
-
root: "/project"
|
|
59
|
-
};
|
|
60
59
|
if (plugin.configResolved) {
|
|
61
60
|
;
|
|
62
|
-
plugin.configResolved(mockConfig);
|
|
61
|
+
plugin.configResolved(mockConfig());
|
|
63
62
|
}
|
|
64
63
|
const result = await plugin.resolveId("/test-image.jpg?imagedata", void 0);
|
|
65
|
-
expect(result).toBe("\0imagedata
|
|
64
|
+
expect(result).toBe("\0imagedata:" + resolve(PUBLIC_DIR, "test-image.jpg"));
|
|
66
65
|
});
|
|
67
66
|
it("should resolve relative imports", async () => {
|
|
68
67
|
const {
|
|
69
68
|
imageDataPlugin
|
|
70
69
|
} = await import("./imageDataPlugin.mjs");
|
|
71
70
|
const plugin = imageDataPlugin();
|
|
72
|
-
const mockConfig = {
|
|
73
|
-
publicDir: "/project/public",
|
|
74
|
-
root: "/project"
|
|
75
|
-
};
|
|
76
71
|
if (plugin.configResolved) {
|
|
77
72
|
;
|
|
78
|
-
plugin.configResolved(mockConfig);
|
|
73
|
+
plugin.configResolved(mockConfig());
|
|
79
74
|
}
|
|
80
|
-
const result = await plugin.resolveId("./test-image.jpg?imagedata",
|
|
81
|
-
expect(result).toBe("\0imagedata
|
|
75
|
+
const result = await plugin.resolveId("./test-image.jpg?imagedata", HERO_FILE);
|
|
76
|
+
expect(result).toBe("\0imagedata:" + resolve(COMPONENTS_DIR, "test-image.jpg"));
|
|
82
77
|
});
|
|
83
78
|
it("should return null for non-existent files", async () => {
|
|
84
79
|
const {
|
|
85
80
|
imageDataPlugin
|
|
86
81
|
} = await import("./imageDataPlugin.mjs");
|
|
87
82
|
const plugin = imageDataPlugin();
|
|
88
|
-
const mockConfig = {
|
|
89
|
-
publicDir: "/project/public",
|
|
90
|
-
root: "/project"
|
|
91
|
-
};
|
|
92
83
|
if (plugin.configResolved) {
|
|
93
84
|
;
|
|
94
|
-
plugin.configResolved(mockConfig);
|
|
85
|
+
plugin.configResolved(mockConfig());
|
|
95
86
|
}
|
|
96
87
|
const result = await plugin.resolveId("/nonexistent.jpg?imagedata", void 0);
|
|
97
88
|
expect(result).toBeNull();
|
|
@@ -103,13 +94,9 @@ describe("imageDataPlugin", () => {
|
|
|
103
94
|
imageDataPlugin
|
|
104
95
|
} = await import("./imageDataPlugin.mjs");
|
|
105
96
|
const plugin = imageDataPlugin();
|
|
106
|
-
const mockConfig = {
|
|
107
|
-
publicDir: "/project/public",
|
|
108
|
-
root: "/project"
|
|
109
|
-
};
|
|
110
97
|
if (plugin.configResolved) {
|
|
111
98
|
;
|
|
112
|
-
plugin.configResolved(mockConfig);
|
|
99
|
+
plugin.configResolved(mockConfig());
|
|
113
100
|
}
|
|
114
101
|
const result = await plugin.resolveId("/../../../etc/passwd?imagedata", void 0);
|
|
115
102
|
expect(result).toBeNull();
|
|
@@ -119,15 +106,11 @@ describe("imageDataPlugin", () => {
|
|
|
119
106
|
imageDataPlugin
|
|
120
107
|
} = await import("./imageDataPlugin.mjs");
|
|
121
108
|
const plugin = imageDataPlugin();
|
|
122
|
-
const mockConfig = {
|
|
123
|
-
publicDir: "/project/public",
|
|
124
|
-
root: "/project"
|
|
125
|
-
};
|
|
126
109
|
if (plugin.configResolved) {
|
|
127
110
|
;
|
|
128
|
-
plugin.configResolved(mockConfig);
|
|
111
|
+
plugin.configResolved(mockConfig());
|
|
129
112
|
}
|
|
130
|
-
const result = await plugin.resolveId("../../../../etc/passwd?imagedata",
|
|
113
|
+
const result = await plugin.resolveId("../../../../etc/passwd?imagedata", HERO_FILE);
|
|
131
114
|
expect(result).toBeNull();
|
|
132
115
|
});
|
|
133
116
|
it("should block path traversal from root", async () => {
|
|
@@ -135,13 +118,9 @@ describe("imageDataPlugin", () => {
|
|
|
135
118
|
imageDataPlugin
|
|
136
119
|
} = await import("./imageDataPlugin.mjs");
|
|
137
120
|
const plugin = imageDataPlugin();
|
|
138
|
-
const mockConfig = {
|
|
139
|
-
publicDir: "/project/public",
|
|
140
|
-
root: "/project"
|
|
141
|
-
};
|
|
142
121
|
if (plugin.configResolved) {
|
|
143
122
|
;
|
|
144
|
-
plugin.configResolved(mockConfig);
|
|
123
|
+
plugin.configResolved(mockConfig());
|
|
145
124
|
}
|
|
146
125
|
const result = await plugin.resolveId("../../../etc/passwd?imagedata", void 0);
|
|
147
126
|
expect(result).toBeNull();
|
|
@@ -151,16 +130,12 @@ describe("imageDataPlugin", () => {
|
|
|
151
130
|
imageDataPlugin
|
|
152
131
|
} = await import("./imageDataPlugin.mjs");
|
|
153
132
|
const plugin = imageDataPlugin();
|
|
154
|
-
const mockConfig = {
|
|
155
|
-
publicDir: "/project/public",
|
|
156
|
-
root: "/project"
|
|
157
|
-
};
|
|
158
133
|
if (plugin.configResolved) {
|
|
159
134
|
;
|
|
160
|
-
plugin.configResolved(mockConfig);
|
|
135
|
+
plugin.configResolved(mockConfig());
|
|
161
136
|
}
|
|
162
|
-
const result = await plugin.resolveId("../../src/test-image.jpg?imagedata",
|
|
163
|
-
expect(result).toBe("\0imagedata
|
|
137
|
+
const result = await plugin.resolveId("../../src/test-image.jpg?imagedata", HERO_FILE);
|
|
138
|
+
expect(result).toBe("\0imagedata:" + resolve(PROJECT_ROOT, "src/test-image.jpg"));
|
|
164
139
|
});
|
|
165
140
|
});
|
|
166
141
|
describe("load", () => {
|
|
@@ -169,13 +144,9 @@ describe("imageDataPlugin", () => {
|
|
|
169
144
|
imageDataPlugin
|
|
170
145
|
} = await import("./imageDataPlugin.mjs");
|
|
171
146
|
const plugin = imageDataPlugin();
|
|
172
|
-
const mockConfig = {
|
|
173
|
-
publicDir: "/project/public",
|
|
174
|
-
root: "/project"
|
|
175
|
-
};
|
|
176
147
|
if (plugin.configResolved) {
|
|
177
148
|
;
|
|
178
|
-
plugin.configResolved(mockConfig);
|
|
149
|
+
plugin.configResolved(mockConfig());
|
|
179
150
|
}
|
|
180
151
|
const mockContext = {
|
|
181
152
|
addWatchFile: vi.fn()
|
|
@@ -188,23 +159,20 @@ describe("imageDataPlugin", () => {
|
|
|
188
159
|
imageDataPlugin
|
|
189
160
|
} = await import("./imageDataPlugin.mjs");
|
|
190
161
|
const plugin = imageDataPlugin();
|
|
191
|
-
const mockConfig = {
|
|
192
|
-
publicDir: "/project/public",
|
|
193
|
-
root: "/project"
|
|
194
|
-
};
|
|
195
162
|
if (plugin.configResolved) {
|
|
196
163
|
;
|
|
197
|
-
plugin.configResolved(mockConfig);
|
|
164
|
+
plugin.configResolved(mockConfig());
|
|
198
165
|
}
|
|
199
166
|
const mockContext = {
|
|
200
167
|
addWatchFile: vi.fn()
|
|
201
168
|
};
|
|
202
|
-
const
|
|
169
|
+
const testFilePath = resolve(PUBLIC_DIR, "test-image.jpg");
|
|
170
|
+
const result = await plugin.load.call(mockContext, "\0imagedata:" + testFilePath);
|
|
203
171
|
expect(result).toContain("export default");
|
|
204
172
|
expect(result).toContain('"src":"/test-image.jpg"');
|
|
205
173
|
expect(result).toContain('"width":');
|
|
206
174
|
expect(result).toContain('"height":');
|
|
207
|
-
expect(mockContext.addWatchFile).toHaveBeenCalledWith(
|
|
175
|
+
expect(mockContext.addWatchFile).toHaveBeenCalledWith(testFilePath);
|
|
208
176
|
});
|
|
209
177
|
});
|
|
210
178
|
describe("plugin metadata", () => {
|
|
@@ -231,18 +199,15 @@ describe("imageDataPlugin output format", () => {
|
|
|
231
199
|
imageDataPlugin
|
|
232
200
|
} = await import("./imageDataPlugin.mjs");
|
|
233
201
|
const plugin = imageDataPlugin();
|
|
234
|
-
const mockConfig = {
|
|
235
|
-
publicDir: "/project/public",
|
|
236
|
-
root: "/project"
|
|
237
|
-
};
|
|
238
202
|
if (plugin.configResolved) {
|
|
239
203
|
;
|
|
240
|
-
plugin.configResolved(mockConfig);
|
|
204
|
+
plugin.configResolved(mockConfig());
|
|
241
205
|
}
|
|
242
206
|
const mockContext = {
|
|
243
207
|
addWatchFile: vi.fn()
|
|
244
208
|
};
|
|
245
|
-
const
|
|
209
|
+
const testFilePath = resolve(PUBLIC_DIR, "test-image.jpg");
|
|
210
|
+
const result = await plugin.load.call(mockContext, "\0imagedata:" + testFilePath);
|
|
246
211
|
const jsonMatch = result?.match(/export default (.+)$/);
|
|
247
212
|
expect(jsonMatch).toBeTruthy();
|
|
248
213
|
if (jsonMatch) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["afterEach","beforeEach","describe","expect","it","vi","mock","actual","importActual","existsSync","fn","path","includes","
|
|
1
|
+
{"version":3,"names":["resolve","afterEach","beforeEach","describe","expect","it","vi","PROJECT_ROOT","PUBLIC_DIR","COMPONENTS_DIR","HERO_FILE","mock","actual","importActual","existsSync","fn","path","includes","mockConfig","publicDir","root","resetModules","clearAllMocks","imageDataPlugin","plugin","configResolved","result","resolveId","toBeNull","toBe","mockContext","addWatchFile","load","call","testFilePath","toContain","toHaveBeenCalledWith","name","enforce","jsonMatch","match","toBeTruthy","parsed","JSON","parse","toHaveProperty","src","width","height","blurDataURL"],"sources":["../../../../src/vite/plugins/imageDataPlugin.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
import { resolve } from "path";
|
|
1
2
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
3
|
function _type_of(obj) {
|
|
3
4
|
"@swc/helpers - typeof";
|
|
4
5
|
|
|
5
6
|
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
6
7
|
}
|
|
8
|
+
var PROJECT_ROOT = resolve("/project");
|
|
9
|
+
var PUBLIC_DIR = resolve("/project/public");
|
|
10
|
+
var COMPONENTS_DIR = resolve("/project/src/components");
|
|
11
|
+
var HERO_FILE = resolve("/project/src/components/Hero.tsx");
|
|
7
12
|
vi.mock("node:fs", async function () {
|
|
8
13
|
var actual = await vi.importActual("node:fs");
|
|
9
14
|
return {
|
|
@@ -13,6 +18,12 @@ vi.mock("node:fs", async function () {
|
|
|
13
18
|
})
|
|
14
19
|
};
|
|
15
20
|
});
|
|
21
|
+
function mockConfig() {
|
|
22
|
+
return {
|
|
23
|
+
publicDir: PUBLIC_DIR,
|
|
24
|
+
root: PROJECT_ROOT
|
|
25
|
+
};
|
|
26
|
+
}
|
|
16
27
|
describe("imageDataPlugin", function () {
|
|
17
28
|
beforeEach(function () {
|
|
18
29
|
vi.resetModules();
|
|
@@ -26,13 +37,9 @@ describe("imageDataPlugin", function () {
|
|
|
26
37
|
imageDataPlugin
|
|
27
38
|
} = await import("./imageDataPlugin.native.js");
|
|
28
39
|
var plugin = imageDataPlugin();
|
|
29
|
-
var mockConfig = {
|
|
30
|
-
publicDir: "/project/public",
|
|
31
|
-
root: "/project"
|
|
32
|
-
};
|
|
33
40
|
if (plugin.configResolved) {
|
|
34
41
|
;
|
|
35
|
-
plugin.configResolved(mockConfig);
|
|
42
|
+
plugin.configResolved(mockConfig());
|
|
36
43
|
}
|
|
37
44
|
var result = await plugin.resolveId("./image.jpg", void 0);
|
|
38
45
|
expect(result).toBeNull();
|
|
@@ -42,13 +49,9 @@ describe("imageDataPlugin", function () {
|
|
|
42
49
|
imageDataPlugin
|
|
43
50
|
} = await import("./imageDataPlugin.native.js");
|
|
44
51
|
var plugin = imageDataPlugin();
|
|
45
|
-
var mockConfig = {
|
|
46
|
-
publicDir: "/project/public",
|
|
47
|
-
root: "/project"
|
|
48
|
-
};
|
|
49
52
|
if (plugin.configResolved) {
|
|
50
53
|
;
|
|
51
|
-
plugin.configResolved(mockConfig);
|
|
54
|
+
plugin.configResolved(mockConfig());
|
|
52
55
|
}
|
|
53
56
|
var result = await plugin.resolveId("./image?imagedata.jpg", void 0);
|
|
54
57
|
expect(result).toBeNull();
|
|
@@ -58,45 +61,33 @@ describe("imageDataPlugin", function () {
|
|
|
58
61
|
imageDataPlugin
|
|
59
62
|
} = await import("./imageDataPlugin.native.js");
|
|
60
63
|
var plugin = imageDataPlugin();
|
|
61
|
-
var mockConfig = {
|
|
62
|
-
publicDir: "/project/public",
|
|
63
|
-
root: "/project"
|
|
64
|
-
};
|
|
65
64
|
if (plugin.configResolved) {
|
|
66
65
|
;
|
|
67
|
-
plugin.configResolved(mockConfig);
|
|
66
|
+
plugin.configResolved(mockConfig());
|
|
68
67
|
}
|
|
69
68
|
var result = await plugin.resolveId("/test-image.jpg?imagedata", void 0);
|
|
70
|
-
expect(result).toBe("\0imagedata
|
|
69
|
+
expect(result).toBe("\0imagedata:" + resolve(PUBLIC_DIR, "test-image.jpg"));
|
|
71
70
|
});
|
|
72
71
|
it("should resolve relative imports", async function () {
|
|
73
72
|
var {
|
|
74
73
|
imageDataPlugin
|
|
75
74
|
} = await import("./imageDataPlugin.native.js");
|
|
76
75
|
var plugin = imageDataPlugin();
|
|
77
|
-
var mockConfig = {
|
|
78
|
-
publicDir: "/project/public",
|
|
79
|
-
root: "/project"
|
|
80
|
-
};
|
|
81
76
|
if (plugin.configResolved) {
|
|
82
77
|
;
|
|
83
|
-
plugin.configResolved(mockConfig);
|
|
78
|
+
plugin.configResolved(mockConfig());
|
|
84
79
|
}
|
|
85
|
-
var result = await plugin.resolveId("./test-image.jpg?imagedata",
|
|
86
|
-
expect(result).toBe("\0imagedata
|
|
80
|
+
var result = await plugin.resolveId("./test-image.jpg?imagedata", HERO_FILE);
|
|
81
|
+
expect(result).toBe("\0imagedata:" + resolve(COMPONENTS_DIR, "test-image.jpg"));
|
|
87
82
|
});
|
|
88
83
|
it("should return null for non-existent files", async function () {
|
|
89
84
|
var {
|
|
90
85
|
imageDataPlugin
|
|
91
86
|
} = await import("./imageDataPlugin.native.js");
|
|
92
87
|
var plugin = imageDataPlugin();
|
|
93
|
-
var mockConfig = {
|
|
94
|
-
publicDir: "/project/public",
|
|
95
|
-
root: "/project"
|
|
96
|
-
};
|
|
97
88
|
if (plugin.configResolved) {
|
|
98
89
|
;
|
|
99
|
-
plugin.configResolved(mockConfig);
|
|
90
|
+
plugin.configResolved(mockConfig());
|
|
100
91
|
}
|
|
101
92
|
var result = await plugin.resolveId("/nonexistent.jpg?imagedata", void 0);
|
|
102
93
|
expect(result).toBeNull();
|
|
@@ -108,13 +99,9 @@ describe("imageDataPlugin", function () {
|
|
|
108
99
|
imageDataPlugin
|
|
109
100
|
} = await import("./imageDataPlugin.native.js");
|
|
110
101
|
var plugin = imageDataPlugin();
|
|
111
|
-
var mockConfig = {
|
|
112
|
-
publicDir: "/project/public",
|
|
113
|
-
root: "/project"
|
|
114
|
-
};
|
|
115
102
|
if (plugin.configResolved) {
|
|
116
103
|
;
|
|
117
|
-
plugin.configResolved(mockConfig);
|
|
104
|
+
plugin.configResolved(mockConfig());
|
|
118
105
|
}
|
|
119
106
|
var result = await plugin.resolveId("/../../../etc/passwd?imagedata", void 0);
|
|
120
107
|
expect(result).toBeNull();
|
|
@@ -124,15 +111,11 @@ describe("imageDataPlugin", function () {
|
|
|
124
111
|
imageDataPlugin
|
|
125
112
|
} = await import("./imageDataPlugin.native.js");
|
|
126
113
|
var plugin = imageDataPlugin();
|
|
127
|
-
var mockConfig = {
|
|
128
|
-
publicDir: "/project/public",
|
|
129
|
-
root: "/project"
|
|
130
|
-
};
|
|
131
114
|
if (plugin.configResolved) {
|
|
132
115
|
;
|
|
133
|
-
plugin.configResolved(mockConfig);
|
|
116
|
+
plugin.configResolved(mockConfig());
|
|
134
117
|
}
|
|
135
|
-
var result = await plugin.resolveId("../../../../etc/passwd?imagedata",
|
|
118
|
+
var result = await plugin.resolveId("../../../../etc/passwd?imagedata", HERO_FILE);
|
|
136
119
|
expect(result).toBeNull();
|
|
137
120
|
});
|
|
138
121
|
it("should block path traversal from root", async function () {
|
|
@@ -140,13 +123,9 @@ describe("imageDataPlugin", function () {
|
|
|
140
123
|
imageDataPlugin
|
|
141
124
|
} = await import("./imageDataPlugin.native.js");
|
|
142
125
|
var plugin = imageDataPlugin();
|
|
143
|
-
var mockConfig = {
|
|
144
|
-
publicDir: "/project/public",
|
|
145
|
-
root: "/project"
|
|
146
|
-
};
|
|
147
126
|
if (plugin.configResolved) {
|
|
148
127
|
;
|
|
149
|
-
plugin.configResolved(mockConfig);
|
|
128
|
+
plugin.configResolved(mockConfig());
|
|
150
129
|
}
|
|
151
130
|
var result = await plugin.resolveId("../../../etc/passwd?imagedata", void 0);
|
|
152
131
|
expect(result).toBeNull();
|
|
@@ -156,16 +135,12 @@ describe("imageDataPlugin", function () {
|
|
|
156
135
|
imageDataPlugin
|
|
157
136
|
} = await import("./imageDataPlugin.native.js");
|
|
158
137
|
var plugin = imageDataPlugin();
|
|
159
|
-
var mockConfig = {
|
|
160
|
-
publicDir: "/project/public",
|
|
161
|
-
root: "/project"
|
|
162
|
-
};
|
|
163
138
|
if (plugin.configResolved) {
|
|
164
139
|
;
|
|
165
|
-
plugin.configResolved(mockConfig);
|
|
140
|
+
plugin.configResolved(mockConfig());
|
|
166
141
|
}
|
|
167
|
-
var result = await plugin.resolveId("../../src/test-image.jpg?imagedata",
|
|
168
|
-
expect(result).toBe("\0imagedata
|
|
142
|
+
var result = await plugin.resolveId("../../src/test-image.jpg?imagedata", HERO_FILE);
|
|
143
|
+
expect(result).toBe("\0imagedata:" + resolve(PROJECT_ROOT, "src/test-image.jpg"));
|
|
169
144
|
});
|
|
170
145
|
});
|
|
171
146
|
describe("load", function () {
|
|
@@ -174,13 +149,9 @@ describe("imageDataPlugin", function () {
|
|
|
174
149
|
imageDataPlugin
|
|
175
150
|
} = await import("./imageDataPlugin.native.js");
|
|
176
151
|
var plugin = imageDataPlugin();
|
|
177
|
-
var mockConfig = {
|
|
178
|
-
publicDir: "/project/public",
|
|
179
|
-
root: "/project"
|
|
180
|
-
};
|
|
181
152
|
if (plugin.configResolved) {
|
|
182
153
|
;
|
|
183
|
-
plugin.configResolved(mockConfig);
|
|
154
|
+
plugin.configResolved(mockConfig());
|
|
184
155
|
}
|
|
185
156
|
var mockContext = {
|
|
186
157
|
addWatchFile: vi.fn()
|
|
@@ -193,23 +164,20 @@ describe("imageDataPlugin", function () {
|
|
|
193
164
|
imageDataPlugin
|
|
194
165
|
} = await import("./imageDataPlugin.native.js");
|
|
195
166
|
var plugin = imageDataPlugin();
|
|
196
|
-
var mockConfig = {
|
|
197
|
-
publicDir: "/project/public",
|
|
198
|
-
root: "/project"
|
|
199
|
-
};
|
|
200
167
|
if (plugin.configResolved) {
|
|
201
168
|
;
|
|
202
|
-
plugin.configResolved(mockConfig);
|
|
169
|
+
plugin.configResolved(mockConfig());
|
|
203
170
|
}
|
|
204
171
|
var mockContext = {
|
|
205
172
|
addWatchFile: vi.fn()
|
|
206
173
|
};
|
|
207
|
-
var
|
|
174
|
+
var testFilePath = resolve(PUBLIC_DIR, "test-image.jpg");
|
|
175
|
+
var result = await plugin.load.call(mockContext, "\0imagedata:" + testFilePath);
|
|
208
176
|
expect(result).toContain("export default");
|
|
209
177
|
expect(result).toContain('"src":"/test-image.jpg"');
|
|
210
178
|
expect(result).toContain('"width":');
|
|
211
179
|
expect(result).toContain('"height":');
|
|
212
|
-
expect(mockContext.addWatchFile).toHaveBeenCalledWith(
|
|
180
|
+
expect(mockContext.addWatchFile).toHaveBeenCalledWith(testFilePath);
|
|
213
181
|
});
|
|
214
182
|
});
|
|
215
183
|
describe("plugin metadata", function () {
|
|
@@ -236,18 +204,15 @@ describe("imageDataPlugin output format", function () {
|
|
|
236
204
|
imageDataPlugin
|
|
237
205
|
} = await import("./imageDataPlugin.native.js");
|
|
238
206
|
var plugin = imageDataPlugin();
|
|
239
|
-
var mockConfig = {
|
|
240
|
-
publicDir: "/project/public",
|
|
241
|
-
root: "/project"
|
|
242
|
-
};
|
|
243
207
|
if (plugin.configResolved) {
|
|
244
208
|
;
|
|
245
|
-
plugin.configResolved(mockConfig);
|
|
209
|
+
plugin.configResolved(mockConfig());
|
|
246
210
|
}
|
|
247
211
|
var mockContext = {
|
|
248
212
|
addWatchFile: vi.fn()
|
|
249
213
|
};
|
|
250
|
-
var
|
|
214
|
+
var testFilePath = resolve(PUBLIC_DIR, "test-image.jpg");
|
|
215
|
+
var result = await plugin.load.call(mockContext, "\0imagedata:" + testFilePath);
|
|
251
216
|
var jsonMatch = result === null || result === void 0 ? void 0 : result.match(/export default (.+)$/);
|
|
252
217
|
expect(jsonMatch).toBeTruthy();
|
|
253
218
|
if (jsonMatch) {
|