@teamkeel/functions-runtime 0.389.3 → 0.389.5
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/package.json +1 -1
- package/src/parsing.js +3 -1
- package/src/parsing.test.js +101 -0
- package/src/tracing.test.js +3 -3
package/package.json
CHANGED
package/src/parsing.js
CHANGED
|
@@ -5,7 +5,7 @@ const { InlineFile } = require("./InlineFile");
|
|
|
5
5
|
// inputs that are objects and contain a "__typename" field are resolved to instances of the complex type
|
|
6
6
|
// they represent. At the moment, the only supported type is `InlineFile`
|
|
7
7
|
function parseParams(inputs) {
|
|
8
|
-
if (inputs != null) {
|
|
8
|
+
if (inputs != null && typeof inputs === "object") {
|
|
9
9
|
Object.keys(inputs).forEach((i) => {
|
|
10
10
|
if (inputs[i] !== null && typeof inputs[i] === "object") {
|
|
11
11
|
if ("__typename" in inputs[i]) {
|
|
@@ -17,6 +17,8 @@ function parseParams(inputs) {
|
|
|
17
17
|
default:
|
|
18
18
|
break;
|
|
19
19
|
}
|
|
20
|
+
} else {
|
|
21
|
+
inputs[i] = parseParams(inputs[i]);
|
|
20
22
|
}
|
|
21
23
|
}
|
|
22
24
|
});
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
const { parseParams } = require("./parsing");
|
|
2
|
+
const { InlineFile } = require("./InlineFile");
|
|
3
|
+
import { test, expect } from "vitest";
|
|
4
|
+
|
|
5
|
+
test("simple test", async () => {
|
|
6
|
+
const params = {
|
|
7
|
+
number: 123,
|
|
8
|
+
string: "String value",
|
|
9
|
+
nullable: null,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const parsedParams = parseParams(params);
|
|
13
|
+
expect(parsedParams).toEqual({
|
|
14
|
+
number: 123,
|
|
15
|
+
string: "String value",
|
|
16
|
+
nullable: null,
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
test("simple image test", async () => {
|
|
21
|
+
const params = {
|
|
22
|
+
file: {
|
|
23
|
+
__typename: "InlineFile",
|
|
24
|
+
contentType: "image/png",
|
|
25
|
+
filename: "myFile.png",
|
|
26
|
+
size: 2024,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const parsedParams = parseParams(params);
|
|
31
|
+
expect(parsedParams).toEqual({
|
|
32
|
+
file: new InlineFile("myFile.png", "image/png", 2024),
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test("dataURL image test", async () => {
|
|
37
|
+
const params = {
|
|
38
|
+
file: {
|
|
39
|
+
__typename: "InlineFile",
|
|
40
|
+
dataURL:
|
|
41
|
+
"data:image/png;name=cover.png;base64,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",
|
|
42
|
+
},
|
|
43
|
+
otherData: "other",
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const parsedParams = parseParams(params);
|
|
47
|
+
expect(parsedParams).toEqual({
|
|
48
|
+
otherData: "other",
|
|
49
|
+
file: InlineFile.fromDataURL(
|
|
50
|
+
`data:image/png;name=cover.png;base64,iVBORw0KGgoAAAANSUhEUgAAAOQAAACnCAYAAAABm/BPAAABRmlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8bABYQcDIYMoonJxQWOAQE+QCUMMBoVfLvGwAiiL+uCzHJ8xnLWPCCkLE+1q1pt05x/mOpRAFdKanEykP4DxGnJBUUlDAyMKUC2cnlJAYjdAWSLFAEdBWTPAbHTIewNIHYShH0ErCYkyBnIvgFkCyRnJALNYHwBZOskIYmnI7Gh9oIAj4urj49CqJG5oakHAeeSDkpSK0pAtHN+QWVRZnpGiYIjMJRSFTzzkvV0FIwMjIwYGEBhDlH9ORAcloxiZxBi+YsYGCy+MjAwT0CIJc1kYNjeysAgcQshprKAgYG/hYFh2/mCxKJEuAMYv7EUpxkbQdg8TgwMrPf+//+sxsDAPpmB4e+E//9/L/r//+9ioPl3GBgO5AEAzGpgJI9yWQgAAABWZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAOShgAHAAAAEgAAAESgAgAEAAAAAQAAAOSgAwAEAAAAAQAAAKcAAAAAQVNDSUkAAABTY3JlZW5zaG905/7QcgAAAdZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MTY3PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjIyODwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlVzZXJDb21tZW50PlNjcmVlbnNob3Q8L2V4aWY6VXNlckNvbW1lbnQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpCGUzcAAAEGUlEQVR4Ae3TsQ0AIRADwefrICGi/wpBoooN5iqw5uyx5j6fI0AgIfAnUghBgMATMEhFIBASMMjQM0QhYJA6QCAkYJChZ4hCwCB1gEBIwCBDzxCFgEHqAIGQgEGGniEKAYPUAQIhAYMMPUMUAgapAwRCAgYZeoYoBAxSBwiEBAwy9AxRCBikDhAICRhk6BmiEDBIHSAQEjDI0DNEIWCQOkAgJGCQoWeIQsAgdYBASMAgQ88QhYBB6gCBkIBBhp4hCgGD1AECIQGDDD1DFAIGqQMEQgIGGXqGKAQMUgcIhAQMMvQMUQgYpA4QCAkYZOgZohAwSB0gEBIwyNAzRCFgkDpAICRgkKFniELAIHWAQEjAIEPPEIWAQeoAgZCAQYaeIQoBg9QBAiEBgww9QxQCBqkDBEICBhl6higEDFIHCIQEDDL0DFEIGKQOEAgJGGToGaIQMEgdIBASMMjQM0QhYJA6QCAkYJChZ4hCwCB1gEBIwCBDzxCFgEHqAIGQgEGGniEKAYPUAQIhAYMMPUMUAgapAwRCAgYZeoYoBAxSBwiEBAwy9AxRCBikDhAICRhk6BmiEDBIHSAQEjDI0DNEIWCQOkAgJGCQoWeIQsAgdYBASMAgQ88QhYBB6gCBkIBBhp4hCgGD1AECIQGDDD1DFAIGqQMEQgIGGXqGKAQMUgcIhAQMMvQMUQgYpA4QCAkYZOgZohAwSB0gEBIwyNAzRCFgkDpAICRgkKFniELAIHWAQEjAIEPPEIWAQeoAgZCAQYaeIQoBg9QBAiEBgww9QxQCBqkDBEICBhl6higEDFIHCIQEDDL0DFEIGKQOEAgJGGToGaIQMEgdIBASMMjQM0QhYJA6QCAkYJChZ4hCwCB1gEBIwCBDzxCFgEHqAIGQgEGGniEKAYPUAQIhAYMMPUMUAgapAwRCAgYZeoYoBAxSBwiEBAwy9AxRCBikDhAICRhk6BmiEDBIHSAQEjDI0DNEIWCQOkAgJGCQoWeIQsAgdYBASMAgQ88QhYBB6gCBkIBBhp4hCgGD1AECIQGDDD1DFAIGqQMEQgIGGXqGKAQMUgcIhAQMMvQMUQgYpA4QCAkYZOgZohAwSB0gEBIwyNAzRCFgkDpAICRgkKFniELAIHWAQEjAIEPPEIWAQeoAgZCAQYaeIQoBg9QBAiEBgww9QxQCBqkDBEICBhl6higEDFIHCIQEDDL0DFEIGKQOEAgJGGToGaIQMEgdIBASMMjQM0QhYJA6QCAkYJChZ4hCwCB1gEBIwCBDzxCFgEHqAIGQgEGGniEKAYPUAQIhAYMMPUMUAgapAwRCAgYZeoYoBAxSBwiEBAwy9AxRCBikDhAICRhk6BmiEDBIHSAQEjDI0DNEIWCQOkAgJGCQoWeIQsAgdYBASOACCAICsR8kFlUAAAAASUVORK5CYII=`
|
|
51
|
+
),
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
test("nested image test", async () => {
|
|
56
|
+
const params = {
|
|
57
|
+
post: {
|
|
58
|
+
file: {
|
|
59
|
+
__typename: "InlineFile",
|
|
60
|
+
contentType: "image/png",
|
|
61
|
+
filename: "myFile.png",
|
|
62
|
+
size: 2024,
|
|
63
|
+
},
|
|
64
|
+
id: 123,
|
|
65
|
+
},
|
|
66
|
+
otherData: "someOtherValue",
|
|
67
|
+
deepNest: {
|
|
68
|
+
deeperNested: {
|
|
69
|
+
deeperNestedImage: {
|
|
70
|
+
__typename: "InlineFile",
|
|
71
|
+
contentType: "image/png",
|
|
72
|
+
filename: "myFile.png",
|
|
73
|
+
size: 2024,
|
|
74
|
+
},
|
|
75
|
+
otherDeeperNestedValue: true,
|
|
76
|
+
},
|
|
77
|
+
deepNestedImage: {
|
|
78
|
+
__typename: "InlineFile",
|
|
79
|
+
contentType: "image/png",
|
|
80
|
+
filename: "myFile.png",
|
|
81
|
+
size: 2024,
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const parsedParams = parseParams(params);
|
|
87
|
+
expect(parsedParams).toEqual({
|
|
88
|
+
post: {
|
|
89
|
+
id: 123,
|
|
90
|
+
file: new InlineFile("myFile.png", "image/png", 2024),
|
|
91
|
+
},
|
|
92
|
+
otherData: "someOtherValue",
|
|
93
|
+
deepNest: {
|
|
94
|
+
deeperNested: {
|
|
95
|
+
deeperNestedImage: new InlineFile("myFile.png", "image/png", 2024),
|
|
96
|
+
otherDeeperNestedValue: true,
|
|
97
|
+
},
|
|
98
|
+
deepNestedImage: new InlineFile("myFile.png", "image/png", 2024),
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
});
|
package/src/tracing.test.js
CHANGED
|
@@ -96,12 +96,12 @@ test("fetch - 200", async () => {
|
|
|
96
96
|
});
|
|
97
97
|
|
|
98
98
|
test("fetch - 404", async () => {
|
|
99
|
-
await fetch("
|
|
99
|
+
await fetch("https://keel.so/not-found");
|
|
100
100
|
|
|
101
101
|
expect(spanEvents.map((e) => e.event)).toEqual(["onStart", "onEnd"]);
|
|
102
102
|
expect(spanEvents.pop().span.attributes).toEqual({
|
|
103
|
-
"http.url": "
|
|
104
|
-
"http.scheme": "
|
|
103
|
+
"http.url": "https://keel.so/not-found",
|
|
104
|
+
"http.scheme": "https",
|
|
105
105
|
"http.method": "GET",
|
|
106
106
|
"http.status": 404,
|
|
107
107
|
"http.status_text": "Not Found",
|