@prisma/param-graph 7.7.0-integration-feat-prisma-bootstrap.7 → 7.7.0-integration-feat-bootstrap-ux-fixes.2
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/index.d.mts +262 -0
- package/dist/index.d.ts +262 -7
- package/dist/index.js +464 -11
- package/dist/index.mjs +453 -3
- package/dist/param-graph.d.ts +6 -2
- package/package.json +1 -1
- package/dist/param-graph.js +0 -241
- package/dist/param-graph.mjs +0 -212
- package/dist/serialization.js +0 -276
- package/dist/serialization.mjs +0 -251
- package/dist/serialization.test.js +0 -169
- package/dist/serialization.test.mjs +0 -168
- package/dist/types.js +0 -16
- package/dist/types.mjs +0 -0
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from "vitest";
|
|
2
|
-
import { deserializeParamGraph, serializeParamGraph } from "./serialization";
|
|
3
|
-
describe("param-graph serialization", () => {
|
|
4
|
-
test("roundtrip with empty data", () => {
|
|
5
|
-
const data = {
|
|
6
|
-
strings: ["root1"],
|
|
7
|
-
inputNodes: [],
|
|
8
|
-
outputNodes: [],
|
|
9
|
-
roots: { root1: {} }
|
|
10
|
-
};
|
|
11
|
-
const serialized = serializeParamGraph(data);
|
|
12
|
-
const deserialized = deserializeParamGraph(serialized);
|
|
13
|
-
expect(deserialized.strings).toEqual(data.strings);
|
|
14
|
-
expect(deserialized.inputNodes).toEqual(data.inputNodes);
|
|
15
|
-
expect(deserialized.outputNodes).toEqual(data.outputNodes);
|
|
16
|
-
expect(deserialized.roots).toEqual(data.roots);
|
|
17
|
-
});
|
|
18
|
-
test("roundtrip with small data", () => {
|
|
19
|
-
const data = {
|
|
20
|
-
strings: ["findMany", "where", "id"],
|
|
21
|
-
inputNodes: [{ edges: { 1: { flags: 0, scalarMask: 1 } } }],
|
|
22
|
-
outputNodes: [{ edges: { 2: { argsNodeId: 0 } } }],
|
|
23
|
-
roots: { findMany: { argsNodeId: 0, outputNodeId: 0 } }
|
|
24
|
-
};
|
|
25
|
-
const serialized = serializeParamGraph(data);
|
|
26
|
-
const deserialized = deserializeParamGraph(serialized);
|
|
27
|
-
expect(deserialized.strings).toEqual(data.strings);
|
|
28
|
-
expect(deserialized.inputNodes.length).toBe(data.inputNodes.length);
|
|
29
|
-
expect(deserialized.outputNodes.length).toBe(data.outputNodes.length);
|
|
30
|
-
expect(Object.keys(deserialized.roots)).toEqual(Object.keys(data.roots));
|
|
31
|
-
});
|
|
32
|
-
test("roundtrip with multiple nodes and edges", () => {
|
|
33
|
-
const data = {
|
|
34
|
-
strings: ["findMany", "create", "update", "where", "data", "id", "name", "Status"],
|
|
35
|
-
inputNodes: [
|
|
36
|
-
{ edges: { 3: { flags: 1, scalarMask: 1, childNodeId: 1 }, 4: { flags: 0, scalarMask: 2 } } },
|
|
37
|
-
{ edges: { 5: { flags: 2, enumNameIndex: 7 } } }
|
|
38
|
-
],
|
|
39
|
-
outputNodes: [{ edges: { 6: { argsNodeId: 0, outputNodeId: 1 } } }, { edges: {} }],
|
|
40
|
-
roots: {
|
|
41
|
-
findMany: { argsNodeId: 0, outputNodeId: 0 },
|
|
42
|
-
create: { argsNodeId: 1, outputNodeId: 1 },
|
|
43
|
-
update: { argsNodeId: 0 }
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
const serialized = serializeParamGraph(data);
|
|
47
|
-
const deserialized = deserializeParamGraph(serialized);
|
|
48
|
-
expect(deserialized.inputNodes.length).toBe(2);
|
|
49
|
-
expect(deserialized.outputNodes.length).toBe(2);
|
|
50
|
-
expect(Object.keys(deserialized.roots).length).toBe(3);
|
|
51
|
-
const inputEdge = deserialized.inputNodes[0].edges[3];
|
|
52
|
-
expect(inputEdge.flags).toBe(1);
|
|
53
|
-
expect(inputEdge.scalarMask).toBe(1);
|
|
54
|
-
expect(inputEdge.childNodeId).toBe(1);
|
|
55
|
-
const enumEdge = deserialized.inputNodes[1].edges[5];
|
|
56
|
-
expect(enumEdge.flags).toBe(2);
|
|
57
|
-
expect(enumEdge.enumNameIndex).toBe(7);
|
|
58
|
-
});
|
|
59
|
-
test("handles undefined values correctly", () => {
|
|
60
|
-
const data = {
|
|
61
|
-
strings: ["root"],
|
|
62
|
-
inputNodes: [{ edges: { 0: { flags: 0 } } }],
|
|
63
|
-
outputNodes: [{ edges: { 0: {} } }],
|
|
64
|
-
roots: { root: { argsNodeId: 0 } }
|
|
65
|
-
};
|
|
66
|
-
const serialized = serializeParamGraph(data);
|
|
67
|
-
const deserialized = deserializeParamGraph(serialized);
|
|
68
|
-
expect(deserialized.inputNodes[0].edges[0].childNodeId).toBeUndefined();
|
|
69
|
-
expect(deserialized.inputNodes[0].edges[0].scalarMask).toBeUndefined();
|
|
70
|
-
expect(deserialized.inputNodes[0].edges[0].enumNameIndex).toBeUndefined();
|
|
71
|
-
expect(deserialized.outputNodes[0].edges[0].argsNodeId).toBeUndefined();
|
|
72
|
-
expect(deserialized.outputNodes[0].edges[0].outputNodeId).toBeUndefined();
|
|
73
|
-
expect(deserialized.roots["root"].outputNodeId).toBeUndefined();
|
|
74
|
-
});
|
|
75
|
-
test("base64url encoding produces URL-safe output", () => {
|
|
76
|
-
const data = {
|
|
77
|
-
strings: ["test"],
|
|
78
|
-
inputNodes: [{ edges: { 255: { flags: 255, scalarMask: 65535, childNodeId: 0, enumNameIndex: 0 } } }],
|
|
79
|
-
outputNodes: [],
|
|
80
|
-
roots: { test: { argsNodeId: 0 } }
|
|
81
|
-
};
|
|
82
|
-
const serialized = serializeParamGraph(data);
|
|
83
|
-
expect(serialized.graph).toMatch(/^[A-Za-z0-9_-]+$/);
|
|
84
|
-
});
|
|
85
|
-
test("handles large indices requiring multi-byte varints (128-16383)", () => {
|
|
86
|
-
const strings = Array.from({ length: 200 }, (_, i) => `field${i}`);
|
|
87
|
-
const data = {
|
|
88
|
-
strings,
|
|
89
|
-
inputNodes: [
|
|
90
|
-
{
|
|
91
|
-
edges: {
|
|
92
|
-
// Use indices that require 2-byte encoding (128+)
|
|
93
|
-
128: { flags: 1, childNodeId: 150 },
|
|
94
|
-
150: { flags: 2, enumNameIndex: 180 }
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
],
|
|
98
|
-
outputNodes: [{ edges: { 199: { argsNodeId: 0, outputNodeId: 0 } } }],
|
|
99
|
-
roots: { field0: { argsNodeId: 0, outputNodeId: 0 } }
|
|
100
|
-
};
|
|
101
|
-
const serialized = serializeParamGraph(data);
|
|
102
|
-
const deserialized = deserializeParamGraph(serialized);
|
|
103
|
-
expect(deserialized.inputNodes[0].edges[128].flags).toBe(1);
|
|
104
|
-
expect(deserialized.inputNodes[0].edges[128].childNodeId).toBe(150);
|
|
105
|
-
expect(deserialized.inputNodes[0].edges[150].flags).toBe(2);
|
|
106
|
-
expect(deserialized.inputNodes[0].edges[150].enumNameIndex).toBe(180);
|
|
107
|
-
expect(deserialized.outputNodes[0].edges[199].argsNodeId).toBe(0);
|
|
108
|
-
expect(deserialized.outputNodes[0].edges[199].outputNodeId).toBe(0);
|
|
109
|
-
});
|
|
110
|
-
test("handles very large indices requiring 3-byte varints (16384+)", () => {
|
|
111
|
-
const strings = Array.from({ length: 17e3 }, (_, i) => `f${i}`);
|
|
112
|
-
const data = {
|
|
113
|
-
strings,
|
|
114
|
-
inputNodes: [
|
|
115
|
-
{
|
|
116
|
-
edges: {
|
|
117
|
-
16384: { flags: 1, childNodeId: 16500 }
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
],
|
|
121
|
-
outputNodes: [{ edges: { 16999: { argsNodeId: 0, outputNodeId: 0 } } }],
|
|
122
|
-
roots: { f0: { argsNodeId: 0, outputNodeId: 0 } }
|
|
123
|
-
};
|
|
124
|
-
const serialized = serializeParamGraph(data);
|
|
125
|
-
const deserialized = deserializeParamGraph(serialized);
|
|
126
|
-
expect(deserialized.inputNodes[0].edges[16384].flags).toBe(1);
|
|
127
|
-
expect(deserialized.inputNodes[0].edges[16384].childNodeId).toBe(16500);
|
|
128
|
-
expect(deserialized.outputNodes[0].edges[16999].argsNodeId).toBe(0);
|
|
129
|
-
});
|
|
130
|
-
test("varint boundary values encode and decode correctly", () => {
|
|
131
|
-
const boundaryValues = [0, 1, 127, 128, 16383, 16384];
|
|
132
|
-
for (const value of boundaryValues) {
|
|
133
|
-
const strings = Array.from({ length: Math.max(value + 1, 2) }, (_, i) => `s${i}`);
|
|
134
|
-
const data = {
|
|
135
|
-
strings,
|
|
136
|
-
inputNodes: [{ edges: { [value]: { flags: 0 } } }],
|
|
137
|
-
outputNodes: [],
|
|
138
|
-
roots: { s0: {} }
|
|
139
|
-
};
|
|
140
|
-
const serialized = serializeParamGraph(data);
|
|
141
|
-
const deserialized = deserializeParamGraph(serialized);
|
|
142
|
-
expect(deserialized.inputNodes[0].edges[value]).toBeDefined();
|
|
143
|
-
expect(deserialized.inputNodes[0].edges[value].flags).toBe(0);
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
test("optional value 0 is correctly distinguished from undefined", () => {
|
|
147
|
-
const data = {
|
|
148
|
-
strings: ["root", "field"],
|
|
149
|
-
inputNodes: [
|
|
150
|
-
{ edges: { 1: { flags: 0, childNodeId: 0 } } }
|
|
151
|
-
// childNodeId = 0 (not undefined)
|
|
152
|
-
],
|
|
153
|
-
outputNodes: [
|
|
154
|
-
{ edges: { 1: { argsNodeId: 0, outputNodeId: 0 } } }
|
|
155
|
-
// both are 0 (not undefined)
|
|
156
|
-
],
|
|
157
|
-
roots: { root: { argsNodeId: 0, outputNodeId: 0 } }
|
|
158
|
-
// both are 0 (not undefined)
|
|
159
|
-
};
|
|
160
|
-
const serialized = serializeParamGraph(data);
|
|
161
|
-
const deserialized = deserializeParamGraph(serialized);
|
|
162
|
-
expect(deserialized.inputNodes[0].edges[1].childNodeId).toBe(0);
|
|
163
|
-
expect(deserialized.outputNodes[0].edges[1].argsNodeId).toBe(0);
|
|
164
|
-
expect(deserialized.outputNodes[0].edges[1].outputNodeId).toBe(0);
|
|
165
|
-
expect(deserialized.roots["root"].argsNodeId).toBe(0);
|
|
166
|
-
expect(deserialized.roots["root"].outputNodeId).toBe(0);
|
|
167
|
-
});
|
|
168
|
-
});
|
package/dist/types.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
var types_exports = {};
|
|
16
|
-
module.exports = __toCommonJS(types_exports);
|
package/dist/types.mjs
DELETED
|
File without changes
|