one
Version:
One is a new React Framework that makes Vite serve both native and web.
258 lines (255 loc) • 10.3 kB
JavaScript
;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: true
}) : target, mod));
var import_path = require("path");
var import_vitest = require("vitest");
function _type_of(obj) {
"@swc/helpers - typeof";
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
}
var PROJECT_ROOT = (0, import_path.resolve)("/project");
var PUBLIC_DIR = (0, import_path.resolve)("/project/public");
var COMPONENTS_DIR = (0, import_path.resolve)("/project/src/components");
var HERO_FILE = (0, import_path.resolve)("/project/src/components/Hero.tsx");
import_vitest.vi.mock("node:fs", async function () {
var actual = await import_vitest.vi.importActual("node:fs");
return {
...actual,
existsSync: import_vitest.vi.fn(function (path) {
return path.includes("test-image.jpg") || path.includes("hero.png");
})
};
});
function mockConfig() {
return {
publicDir: PUBLIC_DIR,
root: PROJECT_ROOT
};
}
(0, import_vitest.describe)("imageDataPlugin", function () {
(0, import_vitest.beforeEach)(function () {
import_vitest.vi.resetModules();
});
(0, import_vitest.afterEach)(function () {
import_vitest.vi.clearAllMocks();
});
(0, import_vitest.describe)("resolveId", function () {
(0, import_vitest.it)("should return null for non-imagedata imports", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
if (plugin.configResolved) {
;
plugin.configResolved(mockConfig());
}
var result = await plugin.resolveId("./image.jpg", void 0);
(0, import_vitest.expect)(result).toBeNull();
});
(0, import_vitest.it)("should return null for imports with imagedata not as suffix", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
if (plugin.configResolved) {
;
plugin.configResolved(mockConfig());
}
var result = await plugin.resolveId("./image?imagedata.jpg", void 0);
(0, import_vitest.expect)(result).toBeNull();
});
(0, import_vitest.it)("should resolve public dir paths starting with /", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
if (plugin.configResolved) {
;
plugin.configResolved(mockConfig());
}
var result = await plugin.resolveId("/test-image.jpg?imagedata", void 0);
(0, import_vitest.expect)(result).toBe("\0imagedata:" + (0, import_path.resolve)(PUBLIC_DIR, "test-image.jpg"));
});
(0, import_vitest.it)("should resolve relative imports", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
if (plugin.configResolved) {
;
plugin.configResolved(mockConfig());
}
var result = await plugin.resolveId("./test-image.jpg?imagedata", HERO_FILE);
(0, import_vitest.expect)(result).toBe("\0imagedata:" + (0, import_path.resolve)(COMPONENTS_DIR, "test-image.jpg"));
});
(0, import_vitest.it)("should return null for non-existent files", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
if (plugin.configResolved) {
;
plugin.configResolved(mockConfig());
}
var result = await plugin.resolveId("/nonexistent.jpg?imagedata", void 0);
(0, import_vitest.expect)(result).toBeNull();
});
});
(0, import_vitest.describe)("path traversal prevention", function () {
(0, import_vitest.it)("should block path traversal from public dir", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
if (plugin.configResolved) {
;
plugin.configResolved(mockConfig());
}
var result = await plugin.resolveId("/../../../etc/passwd?imagedata", void 0);
(0, import_vitest.expect)(result).toBeNull();
});
(0, import_vitest.it)("should block path traversal from relative imports", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
if (plugin.configResolved) {
;
plugin.configResolved(mockConfig());
}
var result = await plugin.resolveId("../../../../etc/passwd?imagedata", HERO_FILE);
(0, import_vitest.expect)(result).toBeNull();
});
(0, import_vitest.it)("should block path traversal from root", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
if (plugin.configResolved) {
;
plugin.configResolved(mockConfig());
}
var result = await plugin.resolveId("../../../etc/passwd?imagedata", void 0);
(0, import_vitest.expect)(result).toBeNull();
});
(0, import_vitest.it)("should allow paths within project boundaries", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
if (plugin.configResolved) {
;
plugin.configResolved(mockConfig());
}
var result = await plugin.resolveId("../../src/test-image.jpg?imagedata", HERO_FILE);
(0, import_vitest.expect)(result).toBe("\0imagedata:" + (0, import_path.resolve)(PROJECT_ROOT, "src/test-image.jpg"));
});
});
(0, import_vitest.describe)("load", function () {
(0, import_vitest.it)("should return null for non-virtual modules", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
if (plugin.configResolved) {
;
plugin.configResolved(mockConfig());
}
var mockContext = {
addWatchFile: import_vitest.vi.fn()
};
var result = await plugin.load.call(mockContext, "./image.jpg");
(0, import_vitest.expect)(result).toBeNull();
});
(0, import_vitest.it)("should return fallback data when sharp fails", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
if (plugin.configResolved) {
;
plugin.configResolved(mockConfig());
}
var mockContext = {
addWatchFile: import_vitest.vi.fn()
};
var testFilePath = (0, import_path.resolve)(PUBLIC_DIR, "test-image.jpg");
var result = await plugin.load.call(mockContext, "\0imagedata:" + testFilePath);
(0, import_vitest.expect)(result).toContain("export default");
(0, import_vitest.expect)(result).toContain('"src":"/test-image.jpg"');
(0, import_vitest.expect)(result).toContain('"width":');
(0, import_vitest.expect)(result).toContain('"height":');
(0, import_vitest.expect)(mockContext.addWatchFile).toHaveBeenCalledWith(testFilePath);
});
});
(0, import_vitest.describe)("plugin metadata", function () {
(0, import_vitest.it)("should have correct name", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
(0, import_vitest.expect)(plugin.name).toBe("one:imagedata");
});
(0, import_vitest.it)("should enforce pre", async function () {
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
(0, import_vitest.expect)(plugin.enforce).toBe("pre");
});
});
});
(0, import_vitest.describe)("imageDataPlugin output format", function () {
(0, import_vitest.it)("should export a valid JSON object", async function () {
import_vitest.vi.resetModules();
var {
imageDataPlugin
} = await import("./imageDataPlugin");
var plugin = imageDataPlugin();
if (plugin.configResolved) {
;
plugin.configResolved(mockConfig());
}
var mockContext = {
addWatchFile: import_vitest.vi.fn()
};
var testFilePath = (0, import_path.resolve)(PUBLIC_DIR, "test-image.jpg");
var result = await plugin.load.call(mockContext, "\0imagedata:" + testFilePath);
var jsonMatch = result === null || result === void 0 ? void 0 : result.match(/export default (.+)$/);
(0, import_vitest.expect)(jsonMatch).toBeTruthy();
if (jsonMatch) {
var parsed = JSON.parse(jsonMatch[1]);
(0, import_vitest.expect)(parsed).toHaveProperty("src");
(0, import_vitest.expect)(parsed).toHaveProperty("width");
(0, import_vitest.expect)(parsed).toHaveProperty("height");
(0, import_vitest.expect)(parsed).toHaveProperty("blurDataURL");
(0, import_vitest.expect)(_type_of(parsed.src)).toBe("string");
(0, import_vitest.expect)(_type_of(parsed.width)).toBe("number");
(0, import_vitest.expect)(_type_of(parsed.height)).toBe("number");
(0, import_vitest.expect)(_type_of(parsed.blurDataURL)).toBe("string");
}
});
});
//# sourceMappingURL=imageDataPlugin.test.native.js.map