@zuplo/editor 1.0.18282379434-dev → 1.0.18287807713-dev

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.
Files changed (49) hide show
  1. package/dist/client/{local-editor.html → local.html} +5 -5
  2. package/dist/client/static/css/App-DH9HRCOf.css +1 -0
  3. package/dist/client/static/css/main-BHHEkZna.css +1 -0
  4. package/dist/client/static/js/App-DUom8Fbi.js +2162 -0
  5. package/dist/client/static/js/App-DUom8Fbi.js.map +1 -0
  6. package/dist/client/static/js/local-worker-D9T8NcSk.js +2 -0
  7. package/dist/client/static/js/local-worker-D9T8NcSk.js.map +1 -0
  8. package/dist/client/static/js/main-Dd-HTlVJ.js +52 -0
  9. package/dist/client/static/js/main-Dd-HTlVJ.js.map +1 -0
  10. package/dist/config.d.ts +54 -0
  11. package/dist/config.d.ts.map +1 -0
  12. package/dist/config.js +54 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/error-handler.d.ts +3 -0
  15. package/dist/error-handler.d.ts.map +1 -0
  16. package/dist/error-handler.js +135 -0
  17. package/dist/error-handler.js.map +1 -0
  18. package/dist/interfaces.d.ts +24 -0
  19. package/dist/interfaces.d.ts.map +1 -0
  20. package/dist/interfaces.js +13 -0
  21. package/dist/interfaces.js.map +1 -0
  22. package/dist/routes/api.d.ts +2 -1
  23. package/dist/routes/api.d.ts.map +1 -1
  24. package/dist/routes/api.js +23 -21
  25. package/dist/routes/api.js.map +1 -1
  26. package/dist/routes/editor.d.ts.map +1 -1
  27. package/dist/routes/editor.js +37 -51
  28. package/dist/routes/editor.js.map +1 -1
  29. package/dist/routes/fs.d.ts.map +1 -1
  30. package/dist/routes/fs.js +219 -238
  31. package/dist/routes/fs.js.map +1 -1
  32. package/dist/routes/test.js +1 -1
  33. package/dist/routes/test.js.map +1 -1
  34. package/dist/routes/types.d.ts.map +1 -1
  35. package/dist/routes/types.js +30 -22
  36. package/dist/routes/types.js.map +1 -1
  37. package/dist/server.d.ts.map +1 -1
  38. package/dist/server.js +38 -29
  39. package/dist/server.js.map +1 -1
  40. package/dist/utils/path.d.ts +33 -0
  41. package/dist/utils/path.d.ts.map +1 -0
  42. package/dist/utils/path.js +42 -0
  43. package/dist/utils/path.js.map +1 -0
  44. package/package.json +2 -1
  45. package/dist/client/static/css/main-D3M2tKfG.css +0 -1
  46. package/dist/client/static/js/local-worker-CfP0n5rz.js +0 -2
  47. package/dist/client/static/js/local-worker-CfP0n5rz.js.map +0 -1
  48. package/dist/client/static/js/main-KuPTzIza.js +0 -2074
  49. package/dist/client/static/js/main-KuPTzIza.js.map +0 -1
package/dist/routes/fs.js CHANGED
@@ -1,5 +1,8 @@
1
+ import { ApiError, Problems } from "@zuplo/errors";
1
2
  import fs, { readdir } from "node:fs/promises";
2
3
  import path from "node:path";
4
+ import { editorConfig } from "../config.js";
5
+ import { normalizeDisplayPath, normalizeRelativePath } from "../utils/path.js";
3
6
  async function fileExists(filepath) {
4
7
  try {
5
8
  await fs.access(filepath);
@@ -22,304 +25,282 @@ export async function createFsRoutes(fastify, options) {
22
25
  const { workingDir } = options;
23
26
  // Match portal's file API shape but simplified for local: /api/fs/dir
24
27
  fastify.get("/dir", async (request, reply) => {
25
- try {
26
- const requestPath = request.query.path ?? "/";
27
- const recursive = request.query.recursive === "true";
28
- const fileTree = [];
29
- // Helper function to recursively read directory
30
- const readDirRecursive = async (dirPath, basePath = "") => {
31
- try {
32
- const entries = await readdir(dirPath, { withFileTypes: true });
33
- for (const entry of entries) {
34
- const relativePath = basePath
35
- ? `${basePath}/${entry.name}`
36
- : entry.name;
37
- // Always prepend / to match portal's path format
38
- const normalizedPath = relativePath.startsWith("/")
39
- ? relativePath
40
- : `/${relativePath}`;
41
- const fullPath = path.join(dirPath, entry.name);
42
- if (entry.isDirectory()) {
43
- // Type 2 = Directory
44
- fileTree.push([normalizedPath, 2]);
45
- if (recursive) {
46
- await readDirRecursive(fullPath, relativePath);
47
- }
48
- }
49
- else if (entry.isFile()) {
50
- // Type 1 = File
51
- fileTree.push([normalizedPath, 1]);
28
+ const requestPath = request.query.path ?? "/";
29
+ const recursive = request.query.recursive === "true";
30
+ const fileTree = [];
31
+ // Helper function to recursively read directory
32
+ const readDirRecursive = async (dirPath, basePath = "") => {
33
+ try {
34
+ const entries = await readdir(dirPath, { withFileTypes: true });
35
+ for (const entry of entries) {
36
+ const relativePath = basePath
37
+ ? `${basePath}/${entry.name}`
38
+ : entry.name;
39
+ // Always prepend / to match portal's path format
40
+ const normalizedPath = normalizeDisplayPath(relativePath);
41
+ const fullPath = path.join(dirPath, entry.name);
42
+ if (entry.isDirectory()) {
43
+ // Type 2 = Directory
44
+ fileTree.push([normalizedPath, 2]);
45
+ if (recursive) {
46
+ await readDirRecursive(fullPath, relativePath);
52
47
  }
53
48
  }
54
- }
55
- catch (err) {
56
- // Silently skip directories that can't be read
57
- request.log.warn(`Warning: Could not read directory ${dirPath}: ${err.message}`);
58
- }
59
- };
60
- if (requestPath === "/") {
61
- // Read all directories - add parent dirs first
62
- const configPath = path.join(workingDir, "config");
63
- if (await dirExists(configPath)) {
64
- fileTree.push(["/config", 2]);
65
- await readDirRecursive(configPath, "config");
66
- }
67
- const modulesPath = path.join(workingDir, "modules");
68
- if (await dirExists(modulesPath)) {
69
- fileTree.push(["/modules", 2]);
70
- await readDirRecursive(modulesPath, "modules");
71
- }
72
- const schemasPath = path.join(workingDir, "schemas");
73
- if (await dirExists(schemasPath)) {
74
- fileTree.push(["/schemas", 2]);
75
- await readDirRecursive(schemasPath, "schemas");
49
+ else if (entry.isFile()) {
50
+ // Type 1 = File
51
+ fileTree.push([normalizedPath, 1]);
52
+ }
76
53
  }
77
54
  }
78
- else {
79
- // Read specific directory
80
- const fullPath = path.join(workingDir, requestPath);
81
- if (await dirExists(fullPath)) {
82
- await readDirRecursive(fullPath, requestPath);
83
- }
55
+ catch (err) {
56
+ // Skip directories that can't be read (permissions, etc)
57
+ // but log the warning for debugging
58
+ request.log.warn({ err, dirPath }, "Could not read directory, skipping");
59
+ }
60
+ };
61
+ if (requestPath === "/") {
62
+ // Read all directories - add parent dirs first
63
+ const configPath = path.join(workingDir, "config");
64
+ if (await dirExists(configPath)) {
65
+ fileTree.push(["/config", 2]);
66
+ await readDirRecursive(configPath, "config");
67
+ }
68
+ const modulesPath = path.join(workingDir, "modules");
69
+ if (await dirExists(modulesPath)) {
70
+ fileTree.push(["/modules", 2]);
71
+ await readDirRecursive(modulesPath, "modules");
72
+ }
73
+ const schemasPath = path.join(workingDir, "schemas");
74
+ if (await dirExists(schemasPath)) {
75
+ fileTree.push(["/schemas", 2]);
76
+ await readDirRecursive(schemasPath, "schemas");
84
77
  }
85
- // Return in backend's format: { path: string, result: FileList }
86
- reply.status(200).send({
87
- path: requestPath,
88
- result: fileTree,
89
- });
90
78
  }
91
- catch (err) {
92
- reply.status(500).send({
93
- message: `Error reading directory: ${err.message}`,
94
- });
79
+ else {
80
+ // Read specific directory
81
+ const fullPath = path.join(workingDir, requestPath);
82
+ if (await dirExists(fullPath)) {
83
+ await readDirRecursive(fullPath, requestPath);
84
+ }
95
85
  }
86
+ // Return in backend's format: { path: string, result: FileList }
87
+ reply.status(200).send({
88
+ path: requestPath,
89
+ result: fileTree,
90
+ });
96
91
  });
97
92
  // Match portal's file API shape but simplified for local: /api/fs/file
98
- fastify.get("/file", async (request, reply) => {
93
+ fastify.get("/file", {
94
+ schema: {
95
+ querystring: {
96
+ type: "object",
97
+ required: ["path"],
98
+ properties: {
99
+ path: { type: "string", minLength: 1 },
100
+ },
101
+ },
102
+ },
103
+ }, async (request, reply) => {
99
104
  const filePath = request.query.path;
100
- if (!filePath) {
101
- return reply.status(400).send("File path is required");
102
- }
103
- // Remove leading slash for path.join to work correctly
104
- const relativePath = filePath.startsWith("/")
105
- ? filePath.slice(1)
106
- : filePath;
105
+ const relativePath = normalizeRelativePath(filePath);
107
106
  const fullPath = path.join(workingDir, relativePath);
108
107
  if (!(await fileExists(fullPath))) {
109
- return reply.status(404).send(`Cannot find file: ${filePath}`);
110
- }
111
- try {
112
- // Get file stats for Last-Modified header
113
- const stats = await fs.stat(fullPath);
114
- const content = await fs.readFile(fullPath, "utf-8");
115
- // Return raw content as text with Last-Modified header
116
- reply
117
- .status(200)
118
- .type("text/plain")
119
- .header("Last-Modified", stats.mtime.toUTCString())
120
- .send(content);
121
- }
122
- catch (err) {
123
- reply.status(500).send(`Error reading file: ${err.message}`);
108
+ throw new ApiError({
109
+ ...Problems.NOT_FOUND,
110
+ detail: `Cannot find file: ${filePath}`,
111
+ });
124
112
  }
113
+ // Get file stats for Last-Modified header
114
+ const stats = await fs.stat(fullPath);
115
+ const content = await fs.readFile(fullPath, "utf-8");
116
+ // Return raw content as text with Last-Modified header
117
+ reply
118
+ .status(200)
119
+ .type("text/plain")
120
+ .header("Last-Modified", stats.mtime.toUTCString())
121
+ .send(content);
125
122
  });
126
123
  // Write/create a file: POST /file?path=...
127
- fastify.post("/file", async (request, reply) => {
124
+ fastify.post("/file", {
125
+ schema: {
126
+ querystring: {
127
+ type: "object",
128
+ required: ["path"],
129
+ properties: {
130
+ path: { type: "string", minLength: 1 },
131
+ },
132
+ },
133
+ },
134
+ }, async (request, reply) => {
128
135
  const filePath = request.query.path;
129
- if (!filePath) {
130
- return reply.status(400).send("File path is required");
131
- }
132
- // Remove leading slash for path.join to work correctly
133
- const relativePath = filePath.startsWith("/")
134
- ? filePath.slice(1)
135
- : filePath;
136
+ const relativePath = normalizeRelativePath(filePath);
136
137
  const fullPath = path.join(workingDir, relativePath);
137
- try {
138
- // Check if file exists and has been modified since client loaded it
139
- // Skip conflict check if x-force-save header is present (user resolved conflict)
140
- const forceSave = request.headers["x-force-save"];
141
- if (!forceSave && (await fileExists(fullPath))) {
142
- const stats = await fs.stat(fullPath);
143
- const ifUnmodifiedSince = request.headers["if-unmodified-since"];
144
- if (ifUnmodifiedSince) {
145
- const clientTimestamp = new Date(ifUnmodifiedSince).getTime();
146
- const fileTimestamp = stats.mtime.getTime();
147
- // Allow 2 second tolerance for filesystem timestamp precision
148
- // This prevents false positives from write operations
149
- const TOLERANCE_MS = 2000;
150
- // If file has been modified since client loaded it (beyond tolerance), return conflict error
151
- if (fileTimestamp > clientTimestamp + TOLERANCE_MS) {
152
- return reply.status(409).send({
153
- type: "https://zup.fail/file-conflict",
154
- title: "File has been modified",
155
- status: 409,
156
- detail: "The file has been modified on disk since you loaded it. Please resolve the conflict before saving.",
157
- });
158
- }
138
+ // Check if file exists and has been modified since client loaded it
139
+ // Skip conflict check if x-force-save header is present (user resolved conflict)
140
+ const forceSave = request.headers["x-force-save"];
141
+ if (!forceSave && (await fileExists(fullPath))) {
142
+ const stats = await fs.stat(fullPath);
143
+ const ifUnmodifiedSince = request.headers["if-unmodified-since"];
144
+ if (ifUnmodifiedSince) {
145
+ const clientTimestamp = new Date(ifUnmodifiedSince).getTime();
146
+ const fileTimestamp = stats.mtime.getTime();
147
+ // If file has been modified since client loaded it (beyond tolerance), return conflict error
148
+ if (fileTimestamp >
149
+ clientTimestamp + editorConfig.file.conflictToleranceMs) {
150
+ throw new ApiError({
151
+ ...Problems.CONFLICT,
152
+ detail: "The file has been modified on disk since you loaded it. Please resolve the conflict before saving.",
153
+ });
159
154
  }
160
155
  }
156
+ }
157
+ try {
161
158
  // Ensure parent directory exists
162
159
  const dir = path.dirname(fullPath);
163
160
  await fs.mkdir(dir, { recursive: true });
164
- // Get the raw body content - handle text content type
165
- const content = typeof request.body === "string"
166
- ? request.body
167
- : JSON.stringify(request.body);
168
- await fs.writeFile(fullPath, content, "utf-8");
169
- // Match backend API response format
170
- reply.status(200).send({ buildId: "local-build-" + Date.now() });
171
161
  }
172
162
  catch (err) {
173
163
  if (err.code === "ENOENT") {
174
- return reply.status(404).send({
175
- type: "https://zup.fail/directory-does-not-exist",
176
- title: "Directory does not exist",
177
- status: 404,
164
+ throw new ApiError({
165
+ ...Problems.NOT_FOUND,
166
+ detail: "Directory does not exist",
178
167
  });
179
168
  }
180
- reply.status(500).send({
181
- type: "https://zup.fail/file-write-failed",
182
- title: "File write failed",
183
- status: 500,
184
- });
169
+ throw err;
185
170
  }
171
+ // Get the raw body content - handle text content type
172
+ const content = typeof request.body === "string"
173
+ ? request.body
174
+ : JSON.stringify(request.body);
175
+ await fs.writeFile(fullPath, content, "utf-8");
176
+ // Match backend API response format
177
+ reply.status(200).send({ buildId: "local-build-" + Date.now() });
186
178
  });
187
179
  // Write/create multiple files: POST /files (multipart)
188
180
  fastify.post("/files", async (request, reply) => {
189
181
  if (!request.isMultipart()) {
190
- return reply.status(400).send({
191
- type: "https://zup.fail/invalid-request",
192
- title: "Request must be multipart/form-data",
193
- status: 400,
182
+ throw new ApiError({
183
+ ...Problems.BAD_REQUEST,
184
+ detail: "Request must be multipart/form-data",
194
185
  });
195
186
  }
196
- try {
197
- const parts = request.parts({ preservePath: true });
198
- const conflictedFiles = [];
199
- for await (const part of parts) {
200
- if (part.type === "file" && part.filename) {
201
- // Remove leading slash for path.join to work correctly
202
- const relativePath = part.filename.startsWith("/")
203
- ? part.filename.slice(1)
204
- : part.filename;
205
- const fullPath = path.join(workingDir, relativePath);
206
- // Check for conflicts using custom header
207
- if (await fileExists(fullPath)) {
208
- const headerKey = `x-if-unmodified-since-${encodeURIComponent(`/${relativePath}`)}`.toLowerCase();
209
- const ifUnmodifiedSince = request.headers[headerKey];
210
- if (ifUnmodifiedSince) {
211
- const stats = await fs.stat(fullPath);
212
- const clientTimestamp = new Date(ifUnmodifiedSince).getTime();
213
- const fileTimestamp = stats.mtime.getTime();
214
- // Allow 2 second tolerance for filesystem timestamp precision
215
- const TOLERANCE_MS = 2000;
216
- if (fileTimestamp > clientTimestamp + TOLERANCE_MS) {
217
- conflictedFiles.push(`/${relativePath}`);
218
- continue;
219
- }
187
+ const parts = request.parts({ preservePath: true });
188
+ const conflictedFiles = [];
189
+ for await (const part of parts) {
190
+ if (part.type === "file" && part.filename) {
191
+ const relativePath = normalizeRelativePath(part.filename);
192
+ const fullPath = path.join(workingDir, relativePath);
193
+ // Check for conflicts using custom header
194
+ if (await fileExists(fullPath)) {
195
+ const headerKey = `x-if-unmodified-since-${encodeURIComponent(normalizeDisplayPath(relativePath))}`.toLowerCase();
196
+ const ifUnmodifiedSince = request.headers[headerKey];
197
+ if (ifUnmodifiedSince) {
198
+ const stats = await fs.stat(fullPath);
199
+ const clientTimestamp = new Date(ifUnmodifiedSince).getTime();
200
+ const fileTimestamp = stats.mtime.getTime();
201
+ if (fileTimestamp >
202
+ clientTimestamp + editorConfig.file.conflictToleranceMs) {
203
+ conflictedFiles.push(normalizeDisplayPath(relativePath));
204
+ continue;
220
205
  }
221
206
  }
222
- // Ensure parent directory exists
223
- const dir = path.dirname(fullPath);
224
- await fs.mkdir(dir, { recursive: true });
225
- // Write the file using the stream
226
- const buffer = await part.toBuffer();
227
- await fs.writeFile(fullPath, buffer);
228
207
  }
208
+ // Ensure parent directory exists
209
+ const dir = path.dirname(fullPath);
210
+ await fs.mkdir(dir, { recursive: true });
211
+ // Write the file using the stream
212
+ const buffer = await part.toBuffer();
213
+ await fs.writeFile(fullPath, buffer);
229
214
  }
230
- // If any files had conflicts, return 409
231
- if (conflictedFiles.length > 0) {
232
- return reply.status(409).send({
233
- type: "https://zup.fail/file-conflict",
234
- title: "File conflicts detected",
235
- status: 409,
236
- detail: `The following files have been modified on disk since you loaded them: ${conflictedFiles.join(", ")}`,
237
- conflictedFiles,
238
- });
239
- }
240
- reply.status(200).send({ buildId: "local-build-" + Date.now() });
241
215
  }
242
- catch (err) {
243
- reply.status(500).send({
244
- type: "https://zup.fail/file-write-failed",
245
- title: "File write failed",
246
- status: 500,
247
- message: err.message,
216
+ // If any files had conflicts, return 409
217
+ if (conflictedFiles.length > 0) {
218
+ throw new ApiError({
219
+ ...Problems.CONFLICT,
220
+ detail: `The following files have been modified on disk since you loaded them: ${conflictedFiles.join(", ")}`,
221
+ instance: JSON.stringify({ conflictedFiles }),
248
222
  });
249
223
  }
224
+ reply.status(200).send({ buildId: "local-build-" + Date.now() });
250
225
  });
251
226
  // Rename a file: PATCH /api/fs/file?path=...
252
- fastify.patch("/file", async (request, reply) => {
227
+ fastify.patch("/file", {
228
+ schema: {
229
+ querystring: {
230
+ type: "object",
231
+ required: ["path"],
232
+ properties: {
233
+ path: { type: "string", minLength: 1 },
234
+ },
235
+ },
236
+ body: {
237
+ type: "object",
238
+ required: ["newPath"],
239
+ properties: {
240
+ newPath: { type: "string", minLength: 1 },
241
+ },
242
+ },
243
+ },
244
+ }, async (request, reply) => {
253
245
  const oldPath = request.query.path;
254
246
  const { newPath } = request.body;
255
- if (!oldPath || !newPath) {
256
- return reply.status(400).send("Both path and newPath are required");
257
- }
258
- // Remove leading slashes
259
- const oldRelativePath = oldPath.startsWith("/")
260
- ? oldPath.slice(1)
261
- : oldPath;
262
- const newRelativePath = newPath.startsWith("/")
263
- ? newPath.slice(1)
264
- : newPath;
247
+ const oldRelativePath = normalizeRelativePath(oldPath);
248
+ const newRelativePath = normalizeRelativePath(newPath);
265
249
  const oldFullPath = path.join(workingDir, oldRelativePath);
266
250
  const newFullPath = path.join(workingDir, newRelativePath);
267
251
  if (!(await fileExists(oldFullPath))) {
268
- return reply.status(404).send(`Cannot find file: ${oldPath}`);
269
- }
270
- try {
271
- await fs.rename(oldFullPath, newFullPath);
272
- reply.status(200).send({
273
- status: "redeploy successful",
274
- buildId: "local-build-" + Date.now(),
252
+ throw new ApiError({
253
+ ...Problems.NOT_FOUND,
254
+ detail: `Cannot find file: ${oldPath}`,
275
255
  });
276
256
  }
277
- catch (err) {
278
- reply.status(500).send(`Error renaming file: ${err.message}`);
279
- }
257
+ await fs.rename(oldFullPath, newFullPath);
258
+ reply.status(200).send({
259
+ status: "redeploy successful",
260
+ buildId: "local-build-" + Date.now(),
261
+ });
280
262
  });
281
263
  // Delete a file: DELETE /api/fs/delete?path=...
282
- fastify.delete("/delete", async (request, reply) => {
264
+ fastify.delete("/delete", {
265
+ schema: {
266
+ querystring: {
267
+ type: "object",
268
+ required: ["path"],
269
+ properties: {
270
+ path: { type: "string", minLength: 1 },
271
+ },
272
+ },
273
+ },
274
+ }, async (request, reply) => {
283
275
  const filePath = request.query.path;
284
- if (!filePath) {
285
- return reply.status(400).send("File path is required");
286
- }
287
- // Remove leading slash
288
- const relativePath = filePath.startsWith("/")
289
- ? filePath.slice(1)
290
- : filePath;
276
+ const relativePath = normalizeRelativePath(filePath);
291
277
  const fullPath = path.join(workingDir, relativePath);
292
278
  if (!(await fileExists(fullPath))) {
293
- return reply.status(404).send(`Cannot find file: ${filePath}`);
294
- }
295
- try {
296
- await fs.unlink(fullPath);
297
- reply.status(200).send({ buildId: "local-build-" + Date.now() });
298
- }
299
- catch (err) {
300
- reply
301
- .status(500)
302
- .send(`Error deleting file: ${err.message}`);
279
+ throw new ApiError({
280
+ ...Problems.NOT_FOUND,
281
+ detail: `Cannot find file: ${filePath}`,
282
+ });
303
283
  }
284
+ await fs.unlink(fullPath);
285
+ reply.status(200).send({ buildId: "local-build-" + Date.now() });
304
286
  });
305
287
  // Create a directory: POST /api/fs/dir?path=...
306
- fastify.post("/dir", async (request, reply) => {
288
+ fastify.post("/dir", {
289
+ schema: {
290
+ querystring: {
291
+ type: "object",
292
+ required: ["path"],
293
+ properties: {
294
+ path: { type: "string", minLength: 1 },
295
+ },
296
+ },
297
+ },
298
+ }, async (request, reply) => {
307
299
  const dirPath = request.query.path;
308
- if (!dirPath) {
309
- return reply.status(400).send("Directory path is required");
310
- }
311
- // Remove leading slash
312
- const relativePath = dirPath.startsWith("/") ? dirPath.slice(1) : dirPath;
300
+ const relativePath = normalizeRelativePath(dirPath);
313
301
  const fullPath = path.join(workingDir, relativePath);
314
- try {
315
- await fs.mkdir(fullPath, { recursive: true });
316
- reply.status(201).send();
317
- }
318
- catch (err) {
319
- reply
320
- .status(500)
321
- .send(`Error creating directory: ${err.message}`);
322
- }
302
+ await fs.mkdir(fullPath, { recursive: true });
303
+ reply.status(201).send();
323
304
  });
324
305
  }
325
306
  //# sourceMappingURL=fs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/routes/fs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/routes/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAe;IACtC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAwB,EACxB,OAAwB;IAExB,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE/B,sEAAsE;IACtE,OAAO,CAAC,GAAG,CACT,MAAM,EACN,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC;QAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC;QACrD,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAE7C,gDAAgD;QAChD,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAe,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE;YAChE,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEhE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,MAAM,YAAY,GAAG,QAAQ;wBAC3B,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;wBAC7B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;oBACf,iDAAiD;oBACjD,MAAM,cAAc,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;oBAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAEhD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;wBACxB,qBAAqB;wBACrB,QAAQ,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;wBACnC,IAAI,SAAS,EAAE,CAAC;4BACd,MAAM,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;wBACjD,CAAC;oBACH,CAAC;yBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;wBAC1B,gBAAgB;wBAChB,QAAQ,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,yDAAyD;gBACzD,oCAAoC;gBACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CACd,EAAE,GAAG,EAAE,OAAO,EAAE,EAChB,oCAAoC,CACrC,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;YACxB,+CAA+C;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACnD,IAAI,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACrD,IAAI,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACrD,IAAI,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACpD,IAAI,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,MAAM,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,uEAAuE;IACvE,OAAO,CAAC,GAAG,CACT,OAAO,EACP;QACE,MAAM,EAAE;YACN,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;iBACvC;aACF;SACF;KACF,EACD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAEpC,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAErD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,QAAQ,CAAC;gBACjB,GAAG,QAAQ,CAAC,SAAS;gBACrB,MAAM,EAAE,qBAAqB,QAAQ,EAAE;aACxC,CAAC,CAAC;QACL,CAAC;QAED,0CAA0C;QAC1C,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAErD,uDAAuD;QACvD,KAAK;aACF,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,YAAY,CAAC;aAClB,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;aAClD,IAAI,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC,CACF,CAAC;IAEF,2CAA2C;IAC3C,OAAO,CAAC,IAAI,CAKV,OAAO,EACP;QACE,MAAM,EAAE;YACN,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;iBACvC;aACF;SACF;KACF,EACD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAEpC,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAErD,oEAAoE;QACpE,iFAAiF;QACjF,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAElD,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YAEjE,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC9D,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAE5C,6FAA6F;gBAC7F,IACE,aAAa;oBACb,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,mBAAmB,EACvD,CAAC;oBACD,MAAM,IAAI,QAAQ,CAAC;wBACjB,GAAG,QAAQ,CAAC,QAAQ;wBACpB,MAAM,EACJ,oGAAoG;qBACvG,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrD,MAAM,IAAI,QAAQ,CAAC;oBACjB,GAAG,QAAQ,CAAC,SAAS;oBACrB,MAAM,EAAE,0BAA0B;iBACnC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,sDAAsD;QACtD,MAAM,OAAO,GACX,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;YAC9B,CAAC,CAAC,OAAO,CAAC,IAAI;YACd,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAE/C,oCAAoC;QACpC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC,CACF,CAAC;IAEF,uDAAuD;IACvD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9C,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,QAAQ,CAAC;gBACjB,GAAG,QAAQ,CAAC,WAAW;gBACvB,MAAM,EAAE,qCAAqC;aAC9C,CAAC,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,eAAe,GAAa,EAAE,CAAC;QAErC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1C,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gBAErD,0CAA0C;gBAC1C,IAAI,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,MAAM,SAAS,GACb,yBAAyB,kBAAkB,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;oBAClG,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAErD,IAAI,iBAAiB,EAAE,CAAC;wBACtB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACtC,MAAM,eAAe,GAAG,IAAI,IAAI,CAC9B,iBAA2B,CAC5B,CAAC,OAAO,EAAE,CAAC;wBACZ,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;wBAE5C,IACE,aAAa;4BACb,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,mBAAmB,EACvD,CAAC;4BACD,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC;4BACzD,SAAS;wBACX,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,iCAAiC;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEzC,kCAAkC;gBAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,QAAQ,CAAC;gBACjB,GAAG,QAAQ,CAAC,QAAQ;gBACpB,MAAM,EAAE,yEAAyE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC7G,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,6CAA6C;IAC7C,OAAO,CAAC,KAAK,CAIX,OAAO,EACP;QACE,MAAM,EAAE;YACN,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;iBACvC;aACF;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;iBAC1C;aACF;SACF;KACF,EACD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACnC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAEjC,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAEvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAE3D,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,QAAQ,CAAC;gBACjB,GAAG,QAAQ,CAAC,SAAS;gBACrB,MAAM,EAAE,qBAAqB,OAAO,EAAE;aACvC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC1C,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACrB,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;SACrC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,gDAAgD;IAChD,OAAO,CAAC,MAAM,CACZ,SAAS,EACT;QACE,MAAM,EAAE;YACN,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;iBACvC;aACF;SACF;KACF,EACD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAEpC,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAErD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,QAAQ,CAAC;gBACjB,GAAG,QAAQ,CAAC,SAAS;gBACrB,MAAM,EAAE,qBAAqB,QAAQ,EAAE;aACxC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC,CACF,CAAC;IAEF,gDAAgD;IAChD,OAAO,CAAC,IAAI,CACV,MAAM,EACN;QACE,MAAM,EAAE;YACN,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;iBACvC;aACF;SACF;KACF,EACD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAEnC,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAErD,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -45,7 +45,7 @@ export async function createTestRoutes(fastify, options) {
45
45
  });
46
46
  }
47
47
  catch (err) {
48
- logger.error(`Error proxying test request: ${err.message}`);
48
+ logger.error({ err, method, fullUrl }, "Error proxying test request");
49
49
  // Return a proper problem details response
50
50
  const problemDetails = {
51
51
  type: "https://zuplo.com/problems/local-gateway-unavailable",
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/routes/test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/routes/test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/routes/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAIrE,UAAU,kBAAmB,SAAQ,oBAAoB;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAsCf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/routes/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAIrE,UAAU,kBAAmB,SAAQ,oBAAoB;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA8Cf"}