one 1.24.9 → 1.25.3
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/router/web/WebStackView.native.js.map +1 -1
- package/dist/cjs/vite/one.cjs +77 -46
- package/dist/cjs/vite/one.native.js +129 -92
- package/dist/cjs/vite/one.native.js.map +1 -1
- package/dist/cjs/vite/plugins/bundledDevPlugin.cjs +16 -7
- package/dist/cjs/vite/plugins/bundledDevPlugin.native.js +16 -7
- package/dist/cjs/vite/plugins/bundledDevPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/criticalCSSPlugin.cjs +15 -11
- package/dist/cjs/vite/plugins/criticalCSSPlugin.native.js +15 -11
- package/dist/cjs/vite/plugins/criticalCSSPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/criticalCSSPlugin.test.cjs +9 -25
- package/dist/cjs/vite/plugins/criticalCSSPlugin.test.native.js +9 -25
- package/dist/cjs/vite/plugins/criticalCSSPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/environmentGuardPlugin.cjs +22 -7
- package/dist/cjs/vite/plugins/environmentGuardPlugin.native.js +23 -8
- package/dist/cjs/vite/plugins/environmentGuardPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/imageDataPlugin.cjs +42 -32
- package/dist/cjs/vite/plugins/imageDataPlugin.native.js +42 -32
- package/dist/cjs/vite/plugins/imageDataPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/imageDataPlugin.test.cjs +18 -38
- package/dist/cjs/vite/plugins/imageDataPlugin.test.native.js +18 -38
- package/dist/cjs/vite/plugins/imageDataPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +58 -43
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +93 -76
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.cjs +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/warmRoutesPlugin.cjs +31 -7
- package/dist/cjs/vite/plugins/warmRoutesPlugin.native.js +35 -10
- package/dist/cjs/vite/plugins/warmRoutesPlugin.native.js.map +1 -1
- package/dist/esm/router/web/WebStackView.mjs.map +1 -1
- package/dist/esm/router/web/WebStackView.native.js.map +1 -1
- package/dist/esm/useLoader.native.js +0 -66
- package/dist/esm/useLoader.native.js.map +1 -1
- package/dist/esm/vite/one.mjs +77 -46
- package/dist/esm/vite/one.mjs.map +1 -1
- package/dist/esm/vite/one.native.js +129 -92
- package/dist/esm/vite/one.native.js.map +1 -1
- package/dist/esm/vite/plugins/bundledDevPlugin.mjs +16 -7
- package/dist/esm/vite/plugins/bundledDevPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/bundledDevPlugin.native.js +16 -7
- package/dist/esm/vite/plugins/bundledDevPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/criticalCSSPlugin.mjs +15 -11
- package/dist/esm/vite/plugins/criticalCSSPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/criticalCSSPlugin.native.js +15 -11
- package/dist/esm/vite/plugins/criticalCSSPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/criticalCSSPlugin.test.mjs +9 -25
- package/dist/esm/vite/plugins/criticalCSSPlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/criticalCSSPlugin.test.native.js +9 -25
- package/dist/esm/vite/plugins/criticalCSSPlugin.test.native.js.map +1 -1
- package/dist/esm/vite/plugins/environmentGuardPlugin.mjs +22 -7
- package/dist/esm/vite/plugins/environmentGuardPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/environmentGuardPlugin.native.js +23 -8
- package/dist/esm/vite/plugins/environmentGuardPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/imageDataPlugin.mjs +42 -32
- package/dist/esm/vite/plugins/imageDataPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/imageDataPlugin.native.js +42 -32
- package/dist/esm/vite/plugins/imageDataPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/imageDataPlugin.test.mjs +18 -38
- package/dist/esm/vite/plugins/imageDataPlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/imageDataPlugin.test.native.js +18 -38
- package/dist/esm/vite/plugins/imageDataPlugin.test.native.js.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +58 -43
- package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +93 -76
- package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
- package/dist/esm/vite/plugins/warmRoutesPlugin.mjs +31 -7
- package/dist/esm/vite/plugins/warmRoutesPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/warmRoutesPlugin.native.js +35 -10
- package/dist/esm/vite/plugins/warmRoutesPlugin.native.js.map +1 -1
- package/package.json +12 -12
- package/src/router/web/WebStackView.tsx +4 -1
- package/src/vite/one.ts +121 -66
- package/src/vite/plugins/bundledDevPlugin.ts +17 -7
- package/src/vite/plugins/criticalCSSPlugin.test.ts +11 -27
- package/src/vite/plugins/criticalCSSPlugin.ts +15 -11
- package/src/vite/plugins/environmentGuardPlugin.ts +20 -7
- package/src/vite/plugins/fileSystemRouterPlugin.tsx +7 -3
- package/src/vite/plugins/imageDataPlugin.test.ts +20 -39
- package/src/vite/plugins/imageDataPlugin.ts +49 -44
- package/src/vite/plugins/virtualEntryPlugin.test.ts +1 -1
- package/src/vite/plugins/virtualEntryPlugin.ts +139 -122
- package/src/vite/plugins/warmRoutesPlugin.ts +36 -10
- package/src/vite/types.ts +6 -1
- package/types/layouts/Drawer.d.ts +50 -50
- package/types/layouts/Stack.d.ts +42 -42
- package/types/layouts/Tabs.d.ts +42 -42
- package/types/router/web/WebStackView.d.ts.map +1 -1
- package/types/ui/TabContext.d.ts +6 -6
- package/types/ui/TabContext.d.ts.map +1 -1
- package/types/ui/Tabs.shared.d.ts +12 -12
- package/types/vite/one.d.ts.map +1 -1
- package/types/vite/plugins/bundledDevPlugin.d.ts.map +1 -1
- package/types/vite/plugins/criticalCSSPlugin.d.ts.map +1 -1
- package/types/vite/plugins/environmentGuardPlugin.d.ts.map +1 -1
- package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
- package/types/vite/plugins/imageDataPlugin.d.ts.map +1 -1
- package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
- package/types/vite/plugins/warmRoutesPlugin.d.ts.map +1 -1
- package/types/vite/types.d.ts +6 -1
- package/types/vite/types.d.ts.map +1 -1
|
@@ -27,29 +27,15 @@ describe("imageDataPlugin", () => {
|
|
|
27
27
|
vi.clearAllMocks();
|
|
28
28
|
});
|
|
29
29
|
describe("resolveId", () => {
|
|
30
|
-
it("
|
|
30
|
+
it("filters out ids without a trailing ?imagedata", async () => {
|
|
31
31
|
const {
|
|
32
32
|
imageDataPlugin
|
|
33
33
|
} = await import("./imageDataPlugin.mjs");
|
|
34
34
|
const plugin = imageDataPlugin();
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const result = await plugin.resolveId("./image.jpg", void 0);
|
|
40
|
-
expect(result).toBeNull();
|
|
41
|
-
});
|
|
42
|
-
it("should return null for imports with imagedata not as suffix", async () => {
|
|
43
|
-
const {
|
|
44
|
-
imageDataPlugin
|
|
45
|
-
} = await import("./imageDataPlugin.mjs");
|
|
46
|
-
const plugin = imageDataPlugin();
|
|
47
|
-
if (plugin.configResolved) {
|
|
48
|
-
;
|
|
49
|
-
plugin.configResolved(mockConfig());
|
|
50
|
-
}
|
|
51
|
-
const result = await plugin.resolveId("./image?imagedata.jpg", void 0);
|
|
52
|
-
expect(result).toBeNull();
|
|
35
|
+
const filter = plugin.resolveId.filter.id;
|
|
36
|
+
expect(filter.test("./image.jpg")).toBe(false);
|
|
37
|
+
expect(filter.test("./image?imagedata.jpg")).toBe(false);
|
|
38
|
+
expect(filter.test("./image.jpg?imagedata")).toBe(true);
|
|
53
39
|
});
|
|
54
40
|
it("should resolve public dir paths starting with /", async () => {
|
|
55
41
|
const {
|
|
@@ -60,7 +46,7 @@ describe("imageDataPlugin", () => {
|
|
|
60
46
|
;
|
|
61
47
|
plugin.configResolved(mockConfig());
|
|
62
48
|
}
|
|
63
|
-
const result = await plugin.resolveId("/test-image.jpg?imagedata", void 0);
|
|
49
|
+
const result = await plugin.resolveId.handler("/test-image.jpg?imagedata", void 0);
|
|
64
50
|
expect(result).toBe("\0imagedata:" + resolve(PUBLIC_DIR, "test-image.jpg"));
|
|
65
51
|
});
|
|
66
52
|
it("should resolve relative imports", async () => {
|
|
@@ -72,7 +58,7 @@ describe("imageDataPlugin", () => {
|
|
|
72
58
|
;
|
|
73
59
|
plugin.configResolved(mockConfig());
|
|
74
60
|
}
|
|
75
|
-
const result = await plugin.resolveId("./test-image.jpg?imagedata", HERO_FILE);
|
|
61
|
+
const result = await plugin.resolveId.handler("./test-image.jpg?imagedata", HERO_FILE);
|
|
76
62
|
expect(result).toBe("\0imagedata:" + resolve(COMPONENTS_DIR, "test-image.jpg"));
|
|
77
63
|
});
|
|
78
64
|
it("should return null for non-existent files", async () => {
|
|
@@ -84,7 +70,7 @@ describe("imageDataPlugin", () => {
|
|
|
84
70
|
;
|
|
85
71
|
plugin.configResolved(mockConfig());
|
|
86
72
|
}
|
|
87
|
-
const result = await plugin.resolveId("/nonexistent.jpg?imagedata", void 0);
|
|
73
|
+
const result = await plugin.resolveId.handler("/nonexistent.jpg?imagedata", void 0);
|
|
88
74
|
expect(result).toBeNull();
|
|
89
75
|
});
|
|
90
76
|
});
|
|
@@ -98,7 +84,7 @@ describe("imageDataPlugin", () => {
|
|
|
98
84
|
;
|
|
99
85
|
plugin.configResolved(mockConfig());
|
|
100
86
|
}
|
|
101
|
-
const result = await plugin.resolveId("/../../../etc/passwd?imagedata", void 0);
|
|
87
|
+
const result = await plugin.resolveId.handler("/../../../etc/passwd?imagedata", void 0);
|
|
102
88
|
expect(result).toBeNull();
|
|
103
89
|
});
|
|
104
90
|
it("should block path traversal from relative imports", async () => {
|
|
@@ -110,7 +96,7 @@ describe("imageDataPlugin", () => {
|
|
|
110
96
|
;
|
|
111
97
|
plugin.configResolved(mockConfig());
|
|
112
98
|
}
|
|
113
|
-
const result = await plugin.resolveId("../../../../etc/passwd?imagedata", HERO_FILE);
|
|
99
|
+
const result = await plugin.resolveId.handler("../../../../etc/passwd?imagedata", HERO_FILE);
|
|
114
100
|
expect(result).toBeNull();
|
|
115
101
|
});
|
|
116
102
|
it("should block path traversal from root", async () => {
|
|
@@ -122,7 +108,7 @@ describe("imageDataPlugin", () => {
|
|
|
122
108
|
;
|
|
123
109
|
plugin.configResolved(mockConfig());
|
|
124
110
|
}
|
|
125
|
-
const result = await plugin.resolveId("../../../etc/passwd?imagedata", void 0);
|
|
111
|
+
const result = await plugin.resolveId.handler("../../../etc/passwd?imagedata", void 0);
|
|
126
112
|
expect(result).toBeNull();
|
|
127
113
|
});
|
|
128
114
|
it("should allow paths within project boundaries", async () => {
|
|
@@ -134,25 +120,19 @@ describe("imageDataPlugin", () => {
|
|
|
134
120
|
;
|
|
135
121
|
plugin.configResolved(mockConfig());
|
|
136
122
|
}
|
|
137
|
-
const result = await plugin.resolveId("../../src/test-image.jpg?imagedata", HERO_FILE);
|
|
123
|
+
const result = await plugin.resolveId.handler("../../src/test-image.jpg?imagedata", HERO_FILE);
|
|
138
124
|
expect(result).toBe("\0imagedata:" + resolve(PROJECT_ROOT, "src/test-image.jpg"));
|
|
139
125
|
});
|
|
140
126
|
});
|
|
141
127
|
describe("load", () => {
|
|
142
|
-
it("
|
|
128
|
+
it("filters out non-virtual modules before the handler runs", async () => {
|
|
143
129
|
const {
|
|
144
130
|
imageDataPlugin
|
|
145
131
|
} = await import("./imageDataPlugin.mjs");
|
|
146
132
|
const plugin = imageDataPlugin();
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
const mockContext = {
|
|
152
|
-
addWatchFile: vi.fn()
|
|
153
|
-
};
|
|
154
|
-
const result = await plugin.load.call(mockContext, "./image.jpg");
|
|
155
|
-
expect(result).toBeNull();
|
|
133
|
+
const filter = plugin.load.filter.id;
|
|
134
|
+
expect(filter.test("./image.jpg")).toBe(false);
|
|
135
|
+
expect(filter.test("\0imagedata:/abs/path/image.jpg")).toBe(true);
|
|
156
136
|
});
|
|
157
137
|
it("should return fallback data when sharp fails", async () => {
|
|
158
138
|
const {
|
|
@@ -167,7 +147,7 @@ describe("imageDataPlugin", () => {
|
|
|
167
147
|
addWatchFile: vi.fn()
|
|
168
148
|
};
|
|
169
149
|
const testFilePath = resolve(PUBLIC_DIR, "test-image.jpg");
|
|
170
|
-
const result = await plugin.load.call(mockContext, "\0imagedata:" + testFilePath);
|
|
150
|
+
const result = await plugin.load.handler.call(mockContext, "\0imagedata:" + testFilePath);
|
|
171
151
|
expect(result).toContain("export default");
|
|
172
152
|
expect(result).toContain('"src":"/test-image.jpg"');
|
|
173
153
|
expect(result).toContain('"width":');
|
|
@@ -207,7 +187,7 @@ describe("imageDataPlugin output format", () => {
|
|
|
207
187
|
addWatchFile: vi.fn()
|
|
208
188
|
};
|
|
209
189
|
const testFilePath = resolve(PUBLIC_DIR, "test-image.jpg");
|
|
210
|
-
const result = await plugin.load.call(mockContext, "\0imagedata:" + testFilePath);
|
|
190
|
+
const result = await plugin.load.handler.call(mockContext, "\0imagedata:" + testFilePath);
|
|
211
191
|
const jsonMatch = result?.match(/export default (.+)$/);
|
|
212
192
|
expect(jsonMatch).toBeTruthy();
|
|
213
193
|
if (jsonMatch) {
|
|
@@ -1 +1 @@
|
|
|
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","
|
|
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","filter","resolveId","id","test","toBe","configResolved","result","handler","toBeNull","load","mockContext","addWatchFile","testFilePath","call","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":[]}
|
|
@@ -32,29 +32,15 @@ describe("imageDataPlugin", function () {
|
|
|
32
32
|
vi.clearAllMocks();
|
|
33
33
|
});
|
|
34
34
|
describe("resolveId", function () {
|
|
35
|
-
it("
|
|
35
|
+
it("filters out ids without a trailing ?imagedata", async function () {
|
|
36
36
|
var {
|
|
37
37
|
imageDataPlugin
|
|
38
38
|
} = await import("./imageDataPlugin.native.js");
|
|
39
39
|
var plugin = imageDataPlugin();
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var result = await plugin.resolveId("./image.jpg", void 0);
|
|
45
|
-
expect(result).toBeNull();
|
|
46
|
-
});
|
|
47
|
-
it("should return null for imports with imagedata not as suffix", async function () {
|
|
48
|
-
var {
|
|
49
|
-
imageDataPlugin
|
|
50
|
-
} = await import("./imageDataPlugin.native.js");
|
|
51
|
-
var plugin = imageDataPlugin();
|
|
52
|
-
if (plugin.configResolved) {
|
|
53
|
-
;
|
|
54
|
-
plugin.configResolved(mockConfig());
|
|
55
|
-
}
|
|
56
|
-
var result = await plugin.resolveId("./image?imagedata.jpg", void 0);
|
|
57
|
-
expect(result).toBeNull();
|
|
40
|
+
var filter = plugin.resolveId.filter.id;
|
|
41
|
+
expect(filter.test("./image.jpg")).toBe(false);
|
|
42
|
+
expect(filter.test("./image?imagedata.jpg")).toBe(false);
|
|
43
|
+
expect(filter.test("./image.jpg?imagedata")).toBe(true);
|
|
58
44
|
});
|
|
59
45
|
it("should resolve public dir paths starting with /", async function () {
|
|
60
46
|
var {
|
|
@@ -65,7 +51,7 @@ describe("imageDataPlugin", function () {
|
|
|
65
51
|
;
|
|
66
52
|
plugin.configResolved(mockConfig());
|
|
67
53
|
}
|
|
68
|
-
var result = await plugin.resolveId("/test-image.jpg?imagedata", void 0);
|
|
54
|
+
var result = await plugin.resolveId.handler("/test-image.jpg?imagedata", void 0);
|
|
69
55
|
expect(result).toBe("\0imagedata:" + resolve(PUBLIC_DIR, "test-image.jpg"));
|
|
70
56
|
});
|
|
71
57
|
it("should resolve relative imports", async function () {
|
|
@@ -77,7 +63,7 @@ describe("imageDataPlugin", function () {
|
|
|
77
63
|
;
|
|
78
64
|
plugin.configResolved(mockConfig());
|
|
79
65
|
}
|
|
80
|
-
var result = await plugin.resolveId("./test-image.jpg?imagedata", HERO_FILE);
|
|
66
|
+
var result = await plugin.resolveId.handler("./test-image.jpg?imagedata", HERO_FILE);
|
|
81
67
|
expect(result).toBe("\0imagedata:" + resolve(COMPONENTS_DIR, "test-image.jpg"));
|
|
82
68
|
});
|
|
83
69
|
it("should return null for non-existent files", async function () {
|
|
@@ -89,7 +75,7 @@ describe("imageDataPlugin", function () {
|
|
|
89
75
|
;
|
|
90
76
|
plugin.configResolved(mockConfig());
|
|
91
77
|
}
|
|
92
|
-
var result = await plugin.resolveId("/nonexistent.jpg?imagedata", void 0);
|
|
78
|
+
var result = await plugin.resolveId.handler("/nonexistent.jpg?imagedata", void 0);
|
|
93
79
|
expect(result).toBeNull();
|
|
94
80
|
});
|
|
95
81
|
});
|
|
@@ -103,7 +89,7 @@ describe("imageDataPlugin", function () {
|
|
|
103
89
|
;
|
|
104
90
|
plugin.configResolved(mockConfig());
|
|
105
91
|
}
|
|
106
|
-
var result = await plugin.resolveId("/../../../etc/passwd?imagedata", void 0);
|
|
92
|
+
var result = await plugin.resolveId.handler("/../../../etc/passwd?imagedata", void 0);
|
|
107
93
|
expect(result).toBeNull();
|
|
108
94
|
});
|
|
109
95
|
it("should block path traversal from relative imports", async function () {
|
|
@@ -115,7 +101,7 @@ describe("imageDataPlugin", function () {
|
|
|
115
101
|
;
|
|
116
102
|
plugin.configResolved(mockConfig());
|
|
117
103
|
}
|
|
118
|
-
var result = await plugin.resolveId("../../../../etc/passwd?imagedata", HERO_FILE);
|
|
104
|
+
var result = await plugin.resolveId.handler("../../../../etc/passwd?imagedata", HERO_FILE);
|
|
119
105
|
expect(result).toBeNull();
|
|
120
106
|
});
|
|
121
107
|
it("should block path traversal from root", async function () {
|
|
@@ -127,7 +113,7 @@ describe("imageDataPlugin", function () {
|
|
|
127
113
|
;
|
|
128
114
|
plugin.configResolved(mockConfig());
|
|
129
115
|
}
|
|
130
|
-
var result = await plugin.resolveId("../../../etc/passwd?imagedata", void 0);
|
|
116
|
+
var result = await plugin.resolveId.handler("../../../etc/passwd?imagedata", void 0);
|
|
131
117
|
expect(result).toBeNull();
|
|
132
118
|
});
|
|
133
119
|
it("should allow paths within project boundaries", async function () {
|
|
@@ -139,25 +125,19 @@ describe("imageDataPlugin", function () {
|
|
|
139
125
|
;
|
|
140
126
|
plugin.configResolved(mockConfig());
|
|
141
127
|
}
|
|
142
|
-
var result = await plugin.resolveId("../../src/test-image.jpg?imagedata", HERO_FILE);
|
|
128
|
+
var result = await plugin.resolveId.handler("../../src/test-image.jpg?imagedata", HERO_FILE);
|
|
143
129
|
expect(result).toBe("\0imagedata:" + resolve(PROJECT_ROOT, "src/test-image.jpg"));
|
|
144
130
|
});
|
|
145
131
|
});
|
|
146
132
|
describe("load", function () {
|
|
147
|
-
it("
|
|
133
|
+
it("filters out non-virtual modules before the handler runs", async function () {
|
|
148
134
|
var {
|
|
149
135
|
imageDataPlugin
|
|
150
136
|
} = await import("./imageDataPlugin.native.js");
|
|
151
137
|
var plugin = imageDataPlugin();
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
156
|
-
var mockContext = {
|
|
157
|
-
addWatchFile: vi.fn()
|
|
158
|
-
};
|
|
159
|
-
var result = await plugin.load.call(mockContext, "./image.jpg");
|
|
160
|
-
expect(result).toBeNull();
|
|
138
|
+
var filter = plugin.load.filter.id;
|
|
139
|
+
expect(filter.test("./image.jpg")).toBe(false);
|
|
140
|
+
expect(filter.test("\0imagedata:/abs/path/image.jpg")).toBe(true);
|
|
161
141
|
});
|
|
162
142
|
it("should return fallback data when sharp fails", async function () {
|
|
163
143
|
var {
|
|
@@ -172,7 +152,7 @@ describe("imageDataPlugin", function () {
|
|
|
172
152
|
addWatchFile: vi.fn()
|
|
173
153
|
};
|
|
174
154
|
var testFilePath = resolve(PUBLIC_DIR, "test-image.jpg");
|
|
175
|
-
var result = await plugin.load.call(mockContext, "\0imagedata:" + testFilePath);
|
|
155
|
+
var result = await plugin.load.handler.call(mockContext, "\0imagedata:" + testFilePath);
|
|
176
156
|
expect(result).toContain("export default");
|
|
177
157
|
expect(result).toContain('"src":"/test-image.jpg"');
|
|
178
158
|
expect(result).toContain('"width":');
|
|
@@ -212,7 +192,7 @@ describe("imageDataPlugin output format", function () {
|
|
|
212
192
|
addWatchFile: vi.fn()
|
|
213
193
|
};
|
|
214
194
|
var testFilePath = resolve(PUBLIC_DIR, "test-image.jpg");
|
|
215
|
-
var result = await plugin.load.call(mockContext, "\0imagedata:" + testFilePath);
|
|
195
|
+
var result = await plugin.load.handler.call(mockContext, "\0imagedata:" + testFilePath);
|
|
216
196
|
var jsonMatch = result === null || result === void 0 ? void 0 : result.match(/export default (.+)$/);
|
|
217
197
|
expect(jsonMatch).toBeTruthy();
|
|
218
198
|
if (jsonMatch) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["resolve","afterEach","beforeEach","describe","expect","it","vi","_type_of","obj","Symbol","constructor","PROJECT_ROOT","PUBLIC_DIR","COMPONENTS_DIR","HERO_FILE","mock","actual","importActual","existsSync","fn","path","includes","mockConfig","publicDir","root","resetModules","clearAllMocks","imageDataPlugin","plugin","configResolved","result","
|
|
1
|
+
{"version":3,"names":["resolve","afterEach","beforeEach","describe","expect","it","vi","_type_of","obj","Symbol","constructor","PROJECT_ROOT","PUBLIC_DIR","COMPONENTS_DIR","HERO_FILE","mock","actual","importActual","existsSync","fn","path","includes","mockConfig","publicDir","root","resetModules","clearAllMocks","imageDataPlugin","plugin","filter","resolveId","id","test","toBe","configResolved","result","handler","toBeNull","load","mockContext","addWatchFile","testFilePath","call","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":[]}
|
|
@@ -6,6 +6,9 @@ import { isNativeEnvironment } from "vxrn";
|
|
|
6
6
|
import { API_ROUTE_GLOB_PATTERN, ROUTE_GLOB_PATTERN, ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS, ROUTE_WEB_EXCLUSION_GLOB_PATTERNS } from "../../router/glob-patterns.mjs";
|
|
7
7
|
import { matchDirectoryRenderMode, matchFileRenderMode } from "../../router/matchers.mjs";
|
|
8
8
|
import { resolvedVirtualEntryId, resolvedVirtualEntryIdNative, virtualEntryId, virtualEntryIdNative } from "./virtualEntryConstants.mjs";
|
|
9
|
+
const escapeRe = s => s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
10
|
+
const VIRTUAL_ENTRY_SOURCE_RE = new RegExp(`^(?:${escapeRe(virtualEntryId)}|${escapeRe(virtualEntryIdNative)})$`);
|
|
11
|
+
const VIRTUAL_ENTRY_RESOLVED_RE = new RegExp(`^(?:${escapeRe(resolvedVirtualEntryId)}|${escapeRe(resolvedVirtualEntryIdNative)})$`);
|
|
9
12
|
function normalizeSetupFile(setupFile) {
|
|
10
13
|
if (!setupFile) return {};
|
|
11
14
|
if (typeof setupFile === "string") {
|
|
@@ -78,53 +81,64 @@ function createVirtualEntry(options) {
|
|
|
78
81
|
viteRoot = config.root;
|
|
79
82
|
isDevMode = config.command === "serve";
|
|
80
83
|
},
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
// only the two virtual entry ids reach js; every other import in the graph
|
|
85
|
+
// is rejected rust-side
|
|
86
|
+
resolveId: {
|
|
87
|
+
filter: {
|
|
88
|
+
id: VIRTUAL_ENTRY_SOURCE_RE
|
|
89
|
+
},
|
|
90
|
+
handler(id) {
|
|
91
|
+
if (id === virtualEntryId) {
|
|
92
|
+
return resolvedVirtualEntryId;
|
|
93
|
+
}
|
|
94
|
+
if (id === virtualEntryIdNative) {
|
|
95
|
+
return resolvedVirtualEntryIdNative;
|
|
96
|
+
}
|
|
87
97
|
}
|
|
88
98
|
},
|
|
89
|
-
load
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
99
|
+
load: {
|
|
100
|
+
filter: {
|
|
101
|
+
id: VIRTUAL_ENTRY_RESOLVED_RE
|
|
102
|
+
},
|
|
103
|
+
handler(id) {
|
|
104
|
+
if (id === resolvedVirtualEntryId) {
|
|
105
|
+
const isNative = isNativeEnvironment(this.environment);
|
|
106
|
+
const isSSR = this.environment.name === "ssr";
|
|
107
|
+
const serverSpaRouteFiles = isSSR ? options.routeIndex.getPaths().map(file => file.replace(/^\.\//, "")).filter(file => /\.tsx?$/.test(file)).filter(file => !micromatch.isMatch(file, ROUTE_WEB_EXCLUSION_GLOB_PATTERNS)).filter(file => {
|
|
108
|
+
const parts = file.split("/");
|
|
109
|
+
const filename = parts.at(-1) || "";
|
|
110
|
+
if (filename.startsWith("_layout") || filename.startsWith("_middleware")) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
const fileMode = matchFileRenderMode(filename);
|
|
114
|
+
if (fileMode) return fileMode === "spa";
|
|
115
|
+
let parentMode;
|
|
116
|
+
for (const directory of parts.slice(0, -1)) {
|
|
117
|
+
parentMode = matchDirectoryRenderMode(directory)?.renderMode ?? parentMode;
|
|
118
|
+
}
|
|
119
|
+
return parentMode === "spa";
|
|
120
|
+
}) : [];
|
|
121
|
+
const serverSpaRouteStubs = serverSpaRouteFiles.map(file => `${JSON.stringify(`/${options.root}/${file}`)}: () => Promise.resolve({})`).join(",\n ");
|
|
122
|
+
const serverSpaBuildGlobs = serverSpaRouteFiles.map(file => `/${options.root}/${file}`);
|
|
123
|
+
const serverSpaBuildRoutes = serverSpaBuildGlobs.length ? `{
|
|
110
124
|
loader: import.meta.glob(${JSON.stringify(serverSpaBuildGlobs)}, { exhaustive: true, import: 'loader', query: '?one-spa-build' }),
|
|
111
125
|
generateStaticParams: import.meta.glob(${JSON.stringify(serverSpaBuildGlobs)}, { exhaustive: true, import: 'generateStaticParams', query: '?one-spa-build' }),
|
|
112
126
|
sitemap: import.meta.glob(${JSON.stringify(serverSpaBuildGlobs)}, { exhaustive: true, import: 'sitemap', query: '?one-spa-build' })
|
|
113
127
|
}` : "{}";
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
128
|
+
const webRouteGlobs = [...routeGlobs, ...ROUTE_WEB_EXCLUSION_GLOB_PATTERNS.map(pattern => `!${pattern}`), ...serverSpaRouteFiles.map(file => `!/${options.root}/${file}`)];
|
|
129
|
+
const useStaticImport = isNative || isSSR && isDevMode;
|
|
130
|
+
const setupResult = getSetupFileImport(this.environment.name, setupFiles, useStaticImport, viteRoot);
|
|
131
|
+
const nativewindImport = configuration.enableNativewind ? `import 'react-native-css-interop/dist/runtime/components'` : "";
|
|
132
|
+
const setupPromiseArg = setupResult.promiseVarName ? `getSetupPromise: ${setupResult.promiseVarName},` : "";
|
|
133
|
+
const linkingArg = options.router?.linking ? `linking: ${JSON.stringify(options.router.linking)},` : "";
|
|
134
|
+
const isDevClient = this.environment.mode === "dev" && this.environment.name === "client";
|
|
135
|
+
const refreshPreambleImport = isDevClient ? `import { injectIntoGlobalHook as __oneInjectRefresh } from '/@react-refresh'` : "";
|
|
136
|
+
const refreshPreambleSetup = isDevClient ? `if (typeof window !== 'undefined' && !window.$RefreshReg$) {
|
|
123
137
|
__oneInjectRefresh(window)
|
|
124
138
|
window.$RefreshReg$ = () => {}
|
|
125
139
|
window.$RefreshSig$ = () => (type) => type
|
|
126
140
|
}` : "";
|
|
127
|
-
|
|
141
|
+
return `
|
|
128
142
|
${setupResult.promiseDeclaration}
|
|
129
143
|
${nativewindImport}
|
|
130
144
|
${refreshPreambleImport}
|
|
@@ -160,12 +174,12 @@ export default createApp({
|
|
|
160
174
|
${linkingArg}
|
|
161
175
|
})
|
|
162
176
|
`;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
177
|
+
}
|
|
178
|
+
if (id === resolvedVirtualEntryIdNative) {
|
|
179
|
+
const isNative = isNativeEnvironment(this.environment);
|
|
180
|
+
const setupResult = getSetupFileImport(this.environment.name, setupFiles, isNative, viteRoot);
|
|
181
|
+
const linkingArg = options.router?.linking ? `linking: ${JSON.stringify(options.router.linking)},` : "";
|
|
182
|
+
return `
|
|
169
183
|
import { createApp } from 'one'
|
|
170
184
|
${setupResult.importStatement}
|
|
171
185
|
|
|
@@ -177,6 +191,7 @@ export default createApp({
|
|
|
177
191
|
${linkingArg}
|
|
178
192
|
})
|
|
179
193
|
`;
|
|
194
|
+
}
|
|
180
195
|
}
|
|
181
196
|
}
|
|
182
197
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["resolve","pathToFileURL","configuration","micromatch","isNativeEnvironment","API_ROUTE_GLOB_PATTERN","ROUTE_GLOB_PATTERN","ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS","ROUTE_WEB_EXCLUSION_GLOB_PATTERNS","matchDirectoryRenderMode","matchFileRenderMode","resolvedVirtualEntryId","resolvedVirtualEntryIdNative","virtualEntryId","virtualEntryIdNative","normalizeSetupFile","setupFile","client","server","ios","android","native","sf","getSetupFileImport","environmentName","setupFiles","useStaticImport","root","envMap","ssr","key","importStatement","promiseDeclaration","promiseVarName","resolvedSetupFile","href","JSON","stringify","createVirtualEntry","options","routeGlobs","router","ignoredRouteFiles","map","pattern","apiRouteGlobs","viteRoot","isDevMode","name","enforce","configResolved","config","command","resolveId","id","load","isNative","environment","isSSR","serverSpaRouteFiles","routeIndex","getPaths","file","
|
|
1
|
+
{"version":3,"names":["resolve","pathToFileURL","configuration","micromatch","isNativeEnvironment","API_ROUTE_GLOB_PATTERN","ROUTE_GLOB_PATTERN","ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS","ROUTE_WEB_EXCLUSION_GLOB_PATTERNS","matchDirectoryRenderMode","matchFileRenderMode","resolvedVirtualEntryId","resolvedVirtualEntryIdNative","virtualEntryId","virtualEntryIdNative","escapeRe","s","replace","VIRTUAL_ENTRY_SOURCE_RE","RegExp","VIRTUAL_ENTRY_RESOLVED_RE","normalizeSetupFile","setupFile","client","server","ios","android","native","sf","getSetupFileImport","environmentName","setupFiles","useStaticImport","root","envMap","ssr","key","importStatement","promiseDeclaration","promiseVarName","resolvedSetupFile","href","JSON","stringify","createVirtualEntry","options","routeGlobs","router","ignoredRouteFiles","map","pattern","apiRouteGlobs","viteRoot","isDevMode","name","enforce","configResolved","config","command","resolveId","filter","id","handler","load","isNative","environment","isSSR","serverSpaRouteFiles","routeIndex","getPaths","file","test","isMatch","parts","split","filename","at","startsWith","fileMode","parentMode","directory","slice","renderMode","serverSpaRouteStubs","join","serverSpaBuildGlobs","serverSpaBuildRoutes","length","webRouteGlobs","setupResult","nativewindImport","enableNativewind","setupPromiseArg","linkingArg","linking","isDevClient","mode","refreshPreambleImport","refreshPreambleSetup","flags","p"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|