@pothos/plugin-drizzle 0.0.1
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/CHANGELOG.md +7 -0
- package/LICENSE +6 -0
- package/README.md +437 -0
- package/TODO.md +21 -0
- package/drizzle/meta/_journal.json +1 -0
- package/drizzle.config.ts +10 -0
- package/dts/drizzle-field-builder.d.ts +124 -0
- package/dts/drizzle-field-builder.d.ts.map +1 -0
- package/dts/field-builder.d.ts +2 -0
- package/dts/field-builder.d.ts.map +1 -0
- package/dts/global-types.d.ts +92 -0
- package/dts/global-types.d.ts.map +1 -0
- package/dts/index.d.ts +13 -0
- package/dts/index.d.ts.map +1 -0
- package/dts/interface-ref.d.ts +9 -0
- package/dts/interface-ref.d.ts.map +1 -0
- package/dts/model-loader.d.ts +44 -0
- package/dts/model-loader.d.ts.map +1 -0
- package/dts/node-ref.d.ts +5 -0
- package/dts/node-ref.d.ts.map +1 -0
- package/dts/object-ref.d.ts +14 -0
- package/dts/object-ref.d.ts.map +1 -0
- package/dts/schema-builder.d.ts +2 -0
- package/dts/schema-builder.d.ts.map +1 -0
- package/dts/types.d.ts +147 -0
- package/dts/types.d.ts.map +1 -0
- package/dts/utils/config.d.ts +7 -0
- package/dts/utils/config.d.ts.map +1 -0
- package/dts/utils/cursors.d.ts +58 -0
- package/dts/utils/cursors.d.ts.map +1 -0
- package/dts/utils/deep-equal.d.ts +2 -0
- package/dts/utils/deep-equal.d.ts.map +1 -0
- package/dts/utils/drizzle-graphql.d.ts +18 -0
- package/dts/utils/drizzle-graphql.d.ts.map +1 -0
- package/dts/utils/loader-map.d.ts +11 -0
- package/dts/utils/loader-map.d.ts.map +1 -0
- package/dts/utils/map-query.d.ts +30 -0
- package/dts/utils/map-query.d.ts.map +1 -0
- package/dts/utils/refs.d.ts +5 -0
- package/dts/utils/refs.d.ts.map +1 -0
- package/dts/utils/selections.d.ts +22 -0
- package/dts/utils/selections.d.ts.map +1 -0
- package/dts/utils/usage.d.ts +5 -0
- package/dts/utils/usage.d.ts.map +1 -0
- package/esm/drizzle-field-builder.d.ts +216 -0
- package/esm/drizzle-field-builder.d.ts.map +1 -0
- package/esm/field-builder.d.ts +2 -0
- package/esm/field-builder.d.ts.map +1 -0
- package/esm/global-types.d.ts +124 -0
- package/esm/global-types.d.ts.map +1 -0
- package/esm/index.d.ts +13 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/interface-ref.d.ts +9 -0
- package/esm/interface-ref.d.ts.map +1 -0
- package/esm/model-loader.d.ts +45 -0
- package/esm/model-loader.d.ts.map +1 -0
- package/esm/node-ref.d.ts +5 -0
- package/esm/node-ref.d.ts.map +1 -0
- package/esm/object-ref.d.ts +14 -0
- package/esm/object-ref.d.ts.map +1 -0
- package/esm/package.json +3 -0
- package/esm/schema-builder.d.ts +2 -0
- package/esm/schema-builder.d.ts.map +1 -0
- package/esm/src/drizzle-field-builder.js +215 -0
- package/esm/src/drizzle-field-builder.js.map +1 -0
- package/esm/src/field-builder.js +77 -0
- package/esm/src/field-builder.js.map +1 -0
- package/esm/src/global-types.js +2 -0
- package/esm/src/global-types.js.map +1 -0
- package/esm/src/index.js +107 -0
- package/esm/src/index.js.map +1 -0
- package/esm/src/interface-ref.js +26 -0
- package/esm/src/interface-ref.js.map +1 -0
- package/esm/src/model-loader.js +168 -0
- package/esm/src/model-loader.js.map +1 -0
- package/esm/src/node-ref.js +4 -0
- package/esm/src/node-ref.js.map +1 -0
- package/esm/src/object-ref.js +38 -0
- package/esm/src/object-ref.js.map +1 -0
- package/esm/src/schema-builder.js +190 -0
- package/esm/src/schema-builder.js.map +1 -0
- package/esm/src/types.js +2 -0
- package/esm/src/types.js.map +1 -0
- package/esm/src/utils/config.js +15 -0
- package/esm/src/utils/config.js.map +1 -0
- package/esm/src/utils/cursors.js +316 -0
- package/esm/src/utils/cursors.js.map +1 -0
- package/esm/src/utils/deep-equal.js +44 -0
- package/esm/src/utils/deep-equal.js.map +1 -0
- package/esm/src/utils/drizzle-graphql.js +176 -0
- package/esm/src/utils/drizzle-graphql.js.map +1 -0
- package/esm/src/utils/loader-map.js +35 -0
- package/esm/src/utils/loader-map.js.map +1 -0
- package/esm/src/utils/map-query.js +284 -0
- package/esm/src/utils/map-query.js.map +1 -0
- package/esm/src/utils/refs.js +14 -0
- package/esm/src/utils/refs.js.map +1 -0
- package/esm/src/utils/selections.js +136 -0
- package/esm/src/utils/selections.js.map +1 -0
- package/esm/src/utils/usage.js +59 -0
- package/esm/src/utils/usage.js.map +1 -0
- package/esm/types.d.ts +161 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/utils/config.d.ts +7 -0
- package/esm/utils/config.d.ts.map +1 -0
- package/esm/utils/cursors.d.ts +58 -0
- package/esm/utils/cursors.d.ts.map +1 -0
- package/esm/utils/deep-equal.d.ts +2 -0
- package/esm/utils/deep-equal.d.ts.map +1 -0
- package/esm/utils/drizzle-graphql.d.ts +18 -0
- package/esm/utils/drizzle-graphql.d.ts.map +1 -0
- package/esm/utils/loader-map.d.ts +11 -0
- package/esm/utils/loader-map.d.ts.map +1 -0
- package/esm/utils/map-query.d.ts +30 -0
- package/esm/utils/map-query.d.ts.map +1 -0
- package/esm/utils/refs.d.ts +5 -0
- package/esm/utils/refs.d.ts.map +1 -0
- package/esm/utils/selections.d.ts +22 -0
- package/esm/utils/selections.d.ts.map +1 -0
- package/esm/utils/usage.d.ts +5 -0
- package/esm/utils/usage.d.ts.map +1 -0
- package/lib/src/drizzle-field-builder.js +225 -0
- package/lib/src/drizzle-field-builder.js.map +1 -0
- package/lib/src/field-builder.js +82 -0
- package/lib/src/field-builder.js.map +1 -0
- package/lib/src/global-types.js +6 -0
- package/lib/src/global-types.js.map +1 -0
- package/lib/src/index.js +180 -0
- package/lib/src/index.js.map +1 -0
- package/lib/src/interface-ref.js +36 -0
- package/lib/src/interface-ref.js.map +1 -0
- package/lib/src/model-loader.js +176 -0
- package/lib/src/model-loader.js.map +1 -0
- package/lib/src/node-ref.js +15 -0
- package/lib/src/node-ref.js.map +1 -0
- package/lib/src/object-ref.js +56 -0
- package/lib/src/object-ref.js.map +1 -0
- package/lib/src/schema-builder.js +236 -0
- package/lib/src/schema-builder.js.map +1 -0
- package/lib/src/types.js +13 -0
- package/lib/src/types.js.map +1 -0
- package/lib/src/utils/config.js +26 -0
- package/lib/src/utils/config.js.map +1 -0
- package/lib/src/utils/cursors.js +362 -0
- package/lib/src/utils/cursors.js.map +1 -0
- package/lib/src/utils/deep-equal.js +55 -0
- package/lib/src/utils/deep-equal.js.map +1 -0
- package/lib/src/utils/drizzle-graphql.js +192 -0
- package/lib/src/utils/drizzle-graphql.js.map +1 -0
- package/lib/src/utils/loader-map.js +57 -0
- package/lib/src/utils/loader-map.js.map +1 -0
- package/lib/src/utils/map-query.js +308 -0
- package/lib/src/utils/map-query.js.map +1 -0
- package/lib/src/utils/refs.js +33 -0
- package/lib/src/utils/refs.js.map +1 -0
- package/lib/src/utils/selections.js +163 -0
- package/lib/src/utils/selections.js.map +1 -0
- package/lib/src/utils/usage.js +84 -0
- package/lib/src/utils/usage.js.map +1 -0
- package/package.json +66 -0
- package/src/drizzle-field-builder.ts +500 -0
- package/src/field-builder.ts +168 -0
- package/src/global-types.ts +481 -0
- package/src/index.ts +175 -0
- package/src/interface-ref.ts +24 -0
- package/src/model-loader.ts +235 -0
- package/src/node-ref.ts +8 -0
- package/src/object-ref.ts +51 -0
- package/src/schema-builder.ts +299 -0
- package/src/types.ts +640 -0
- package/src/utils/config.ts +28 -0
- package/src/utils/cursors.ts +446 -0
- package/src/utils/deep-equal.ts +58 -0
- package/src/utils/drizzle-graphql.ts +235 -0
- package/src/utils/loader-map.ts +51 -0
- package/src/utils/map-query.ts +582 -0
- package/src/utils/refs.ts +25 -0
- package/src/utils/selections.ts +209 -0
- package/src/utils/usage.ts +64 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* eslint-disable no-continue */ export function deepEqual(left, right, ignore) {
|
|
2
|
+
if (left === right) {
|
|
3
|
+
return true;
|
|
4
|
+
}
|
|
5
|
+
if (left && right && typeof left === "object" && typeof right === "object") {
|
|
6
|
+
var _left_valueOf, _right_valueOf;
|
|
7
|
+
if (Array.isArray(left)) {
|
|
8
|
+
if (!Array.isArray(right)) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
const { length } = left;
|
|
12
|
+
if (right.length !== length) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
for (let i = 0; i < length; i += 1) {
|
|
16
|
+
if (!deepEqual(left[i], right[i])) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
const lValue = (_left_valueOf = left.valueOf) === null || _left_valueOf === void 0 ? void 0 : _left_valueOf.call(left);
|
|
23
|
+
const rValue = (_right_valueOf = right.valueOf) === null || _right_valueOf === void 0 ? void 0 : _right_valueOf.call(right);
|
|
24
|
+
if ((lValue != null || rValue != null) && typeof lValue !== "object") {
|
|
25
|
+
return lValue === rValue;
|
|
26
|
+
}
|
|
27
|
+
const keys = Object.keys(left);
|
|
28
|
+
const keyLength = keys.length;
|
|
29
|
+
if (keyLength !== Object.keys(right).length) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
for (const key of keys) {
|
|
33
|
+
if (ignore === null || ignore === void 0 ? void 0 : ignore.has(key)) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (!deepEqual(left[key], right[key])) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=deep-equal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/deep-equal.ts"],"names":["deepEqual","left","right","ignore","Array","isArray","length","i","lValue","valueOf","rValue","keys","Object","keyLength","key","has"],"mappings":"AAAA,8BAA8B,GAC9B,OAAO,SAASA,UAAUC,IAAa,EAAEC,KAAc,EAAEC,MAAoB;IAC3E,IAAIF,SAASC,OAAO;QAClB,OAAO;IACT;IAEA,IAAID,QAAQC,SAAS,OAAOD,SAAS,YAAY,OAAOC,UAAU,UAAU;YAqB3DD,eACAC;QArBf,IAAIE,MAAMC,OAAO,CAACJ,OAAO;YACvB,IAAI,CAACG,MAAMC,OAAO,CAACH,QAAQ;gBACzB,OAAO;YACT;YAEA,MAAM,EAAEI,MAAM,EAAE,GAAGL;YAEnB,IAAIC,MAAMI,MAAM,KAAKA,QAAQ;gBAC3B,OAAO;YACT;YAEA,IAAK,IAAIC,IAAI,GAAGA,IAAID,QAAQC,KAAK,EAAG;gBAClC,IAAI,CAACP,UAAUC,IAAI,CAACM,EAAE,EAAEL,KAAK,CAACK,EAAE,GAAG;oBACjC,OAAO;gBACT;YACF;YAEA,OAAO;QACT;QAEA,MAAMC,UAASP,gBAAAA,KAAKQ,OAAO,cAAZR,oCAAAA,mBAAAA;QACf,MAAMS,UAASR,iBAAAA,MAAMO,OAAO,cAAbP,qCAAAA,oBAAAA;QAEf,IAAI,AAACM,CAAAA,UAAU,QAAQE,UAAU,IAAG,KAAM,OAAOF,WAAW,UAAU;YACpE,OAAOA,WAAWE;QACpB;QAEA,MAAMC,OAAOC,OAAOD,IAAI,CAACV;QACzB,MAAMY,YAAYF,KAAKL,MAAM;QAE7B,IAAIO,cAAcD,OAAOD,IAAI,CAACT,OAAOI,MAAM,EAAE;YAC3C,OAAO;QACT;QAEA,KAAK,MAAMQ,OAAOH,KAAM;YACtB,IAAIR,mBAAAA,6BAAAA,OAAQY,GAAG,CAACD,MAAM;gBACpB;YACF;YAEA,IACE,CAACd,UAAU,AAACC,IAAgC,CAACa,IAAI,EAAE,AAACZ,KAAiC,CAACY,IAAI,GAC1F;gBACA,OAAO;YACT;QACF;QAEA,OAAO;IACT;IAEA,OAAO;AACT"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { asc, desc, getOperators } from 'drizzle-orm';
|
|
2
|
+
import { GraphQLError } from 'graphql';
|
|
3
|
+
export const remapFromGraphQLCore = (value, column, columnName) => {
|
|
4
|
+
switch (column.dataType) {
|
|
5
|
+
case "date":
|
|
6
|
+
{
|
|
7
|
+
const formatted = new Date(value);
|
|
8
|
+
if (Number.isNaN(formatted.getTime()))
|
|
9
|
+
throw new GraphQLError(`Field '${columnName}' is not a valid date!`);
|
|
10
|
+
return formatted;
|
|
11
|
+
}
|
|
12
|
+
case "buffer":
|
|
13
|
+
{
|
|
14
|
+
if (!Array.isArray(value)) {
|
|
15
|
+
throw new GraphQLError(`Field '${columnName}' is not an array!`);
|
|
16
|
+
}
|
|
17
|
+
return Buffer.from(value);
|
|
18
|
+
}
|
|
19
|
+
case "json":
|
|
20
|
+
{
|
|
21
|
+
if (column.columnType === "PgGeometryObject")
|
|
22
|
+
return value;
|
|
23
|
+
try {
|
|
24
|
+
return JSON.parse(value);
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
throw new GraphQLError(`Invalid JSON in field '${columnName}':\n${e instanceof Error ? e.message : "Unknown error"}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
case "array":
|
|
31
|
+
{
|
|
32
|
+
if (!Array.isArray(value)) {
|
|
33
|
+
throw new GraphQLError(`Field '${columnName}' is not an array!`);
|
|
34
|
+
}
|
|
35
|
+
if (column.columnType === "PgGeometry" && value.length !== 2) {
|
|
36
|
+
throw new GraphQLError(`Invalid float tuple in field '${columnName}': expected array with length of 2, received ${value.length}`);
|
|
37
|
+
}
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
case "bigint":
|
|
41
|
+
{
|
|
42
|
+
try {
|
|
43
|
+
return BigInt(value);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
throw new GraphQLError(`Field '${columnName}' is not a BigInt!`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
default:
|
|
50
|
+
{
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
export const remapFromGraphQLSingleInput = (queryInput, table) => {
|
|
56
|
+
for (const [key, value] of Object.entries(queryInput)) {
|
|
57
|
+
if (value === undefined) {
|
|
58
|
+
delete queryInput[key];
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const column = table.columns[key];
|
|
62
|
+
if (!column)
|
|
63
|
+
throw new GraphQLError(`Unknown column: ${key}`);
|
|
64
|
+
if (value === null && column.notNull) {
|
|
65
|
+
delete queryInput[key];
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
queryInput[key] = remapFromGraphQLCore(value, column, key);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return queryInput;
|
|
72
|
+
};
|
|
73
|
+
export const remapFromGraphQLArrayInput = (queryInput, table) => {
|
|
74
|
+
for (const entry of queryInput)
|
|
75
|
+
remapFromGraphQLSingleInput(entry, table);
|
|
76
|
+
return queryInput;
|
|
77
|
+
};
|
|
78
|
+
export const extractOrderBy = (table, orderArgs) => {
|
|
79
|
+
const res = [];
|
|
80
|
+
for (const [column, config] of Object.entries(orderArgs).sort((a, b) => {
|
|
81
|
+
var _b_, _a_;
|
|
82
|
+
var _b__priority, _a__priority;
|
|
83
|
+
return ((_b__priority = (_b_ = b[1]) === null || _b_ === void 0 ? void 0 : _b_.priority) !== null && _b__priority !== void 0 ? _b__priority : 0) - ((_a__priority = (_a_ = a[1]) === null || _a_ === void 0 ? void 0 : _a_.priority) !== null && _a__priority !== void 0 ? _a__priority : 0);
|
|
84
|
+
})) {
|
|
85
|
+
if (!config)
|
|
86
|
+
continue;
|
|
87
|
+
const { direction } = config;
|
|
88
|
+
res.push(direction === "asc" ? asc(table.columns[column]) : desc(table.columns[column]));
|
|
89
|
+
}
|
|
90
|
+
return res;
|
|
91
|
+
};
|
|
92
|
+
const ops = getOperators();
|
|
93
|
+
export const extractFiltersColumn = (column, columnName, operators) => {
|
|
94
|
+
var _operators_OR;
|
|
95
|
+
if (!((_operators_OR = operators.OR) === null || _operators_OR === void 0 ? void 0 : _operators_OR.length))
|
|
96
|
+
delete operators.OR;
|
|
97
|
+
const entries = Object.entries(operators);
|
|
98
|
+
if (operators.OR) {
|
|
99
|
+
if (entries.length > 1) {
|
|
100
|
+
throw new GraphQLError(`WHERE ${columnName}: Cannot specify both fields and 'OR' in column operators!`);
|
|
101
|
+
}
|
|
102
|
+
const variants = [];
|
|
103
|
+
for (const variant of operators.OR) {
|
|
104
|
+
const extracted = extractFiltersColumn(column, columnName, variant);
|
|
105
|
+
if (extracted)
|
|
106
|
+
variants.push(extracted);
|
|
107
|
+
}
|
|
108
|
+
return variants.length ? variants.length > 1 ? ops.or(...variants) : variants[0] : undefined;
|
|
109
|
+
}
|
|
110
|
+
const variants = [];
|
|
111
|
+
for (const [operatorName, operatorValue] of entries) {
|
|
112
|
+
if (operatorValue === null || operatorValue === false)
|
|
113
|
+
continue;
|
|
114
|
+
switch (operatorName) {
|
|
115
|
+
case "eq":
|
|
116
|
+
case "ne":
|
|
117
|
+
case "gt":
|
|
118
|
+
case "gte":
|
|
119
|
+
case "lt":
|
|
120
|
+
case "lte":
|
|
121
|
+
const singleValue = remapFromGraphQLCore(operatorValue, column, columnName);
|
|
122
|
+
variants.push(ops[operatorName](column, singleValue));
|
|
123
|
+
break;
|
|
124
|
+
case "like":
|
|
125
|
+
case "notLike":
|
|
126
|
+
case "ilike":
|
|
127
|
+
case "notIlike":
|
|
128
|
+
variants.push(ops[operatorName](column, operatorValue));
|
|
129
|
+
break;
|
|
130
|
+
case "inArray":
|
|
131
|
+
case "notInArray":
|
|
132
|
+
if (!operatorValue.length) {
|
|
133
|
+
throw new GraphQLError(`WHERE ${columnName}: Unable to use operator ${operatorName} with an empty array!`);
|
|
134
|
+
}
|
|
135
|
+
const arrayValue = operatorValue.map((val) => remapFromGraphQLCore(val, column, columnName));
|
|
136
|
+
variants.push(ops[operatorName](column, arrayValue));
|
|
137
|
+
break;
|
|
138
|
+
case "isNull":
|
|
139
|
+
case "isNotNull":
|
|
140
|
+
variants.push(ops[operatorName](column));
|
|
141
|
+
break;
|
|
142
|
+
default:
|
|
143
|
+
throw new GraphQLError(`Unknown operator: ${operatorName}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return variants.length ? variants.length > 1 ? ops.and(...variants) : variants[0] : undefined;
|
|
147
|
+
};
|
|
148
|
+
export const extractFilters = (table, tableName, filters) => {
|
|
149
|
+
var _filters_OR;
|
|
150
|
+
if (!((_filters_OR = filters.OR) === null || _filters_OR === void 0 ? void 0 : _filters_OR.length))
|
|
151
|
+
delete filters.OR;
|
|
152
|
+
const entries = Object.entries(filters);
|
|
153
|
+
if (!entries.length)
|
|
154
|
+
return;
|
|
155
|
+
if (filters.OR) {
|
|
156
|
+
if (entries.length > 1) {
|
|
157
|
+
throw new GraphQLError(`WHERE ${tableName}: Cannot specify both fields and 'OR' in table filters!`);
|
|
158
|
+
}
|
|
159
|
+
const variants = [];
|
|
160
|
+
for (const variant of filters.OR) {
|
|
161
|
+
const extracted = extractFilters(table, tableName, variant);
|
|
162
|
+
if (extracted)
|
|
163
|
+
variants.push(extracted);
|
|
164
|
+
}
|
|
165
|
+
return variants.length ? variants.length > 1 ? ops.or(...variants) : variants[0] : undefined;
|
|
166
|
+
}
|
|
167
|
+
const variants = [];
|
|
168
|
+
for (const [columnName, operators] of entries) {
|
|
169
|
+
if (operators === null)
|
|
170
|
+
continue;
|
|
171
|
+
const column = table.columns[columnName];
|
|
172
|
+
variants.push(extractFiltersColumn(column, columnName, operators));
|
|
173
|
+
}
|
|
174
|
+
return variants.length ? variants.length > 1 ? ops.and(...variants) : variants[0] : undefined;
|
|
175
|
+
};
|
|
176
|
+
//# sourceMappingURL=drizzle-graphql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/drizzle-graphql.ts"],"names":["asc","desc","getOperators","GraphQLError","remapFromGraphQLCore","value","column","columnName","dataType","formatted","Date","Number","isNaN","getTime","Array","isArray","Buffer","from","columnType","JSON","parse","e","Error","message","length","BigInt","error","remapFromGraphQLSingleInput","queryInput","table","key","Object","entries","undefined","columns","notNull","remapFromGraphQLArrayInput","entry","extractOrderBy","orderArgs","res","config","sort","a","b","priority","direction","push","ops","extractFiltersColumn","operators","OR","variants","variant","extracted","or","operatorName","operatorValue","singleValue","arrayValue","map","val","and","extractFilters","tableName","filters"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createContextCache } from '@pothos/core';
|
|
2
|
+
const cache = createContextCache((ctx) => new Map());
|
|
3
|
+
export function cacheKey(type, path, subPath = []) {
|
|
4
|
+
let key = "";
|
|
5
|
+
let current = path;
|
|
6
|
+
while (current) {
|
|
7
|
+
if (typeof current.key === "string") {
|
|
8
|
+
key = key ? `${current.key}.${key}` : current.key;
|
|
9
|
+
}
|
|
10
|
+
current = current.prev;
|
|
11
|
+
}
|
|
12
|
+
for (const entry of subPath) {
|
|
13
|
+
key = `${key}.${entry}`;
|
|
14
|
+
}
|
|
15
|
+
return `${type}@${key}`;
|
|
16
|
+
}
|
|
17
|
+
export function setLoaderMappings(ctx, info, value) {
|
|
18
|
+
Object.keys(value).forEach((field) => {
|
|
19
|
+
const map = cache(ctx);
|
|
20
|
+
const mapping = value[field];
|
|
21
|
+
const subPath = [
|
|
22
|
+
...mapping.indirectPath,
|
|
23
|
+
field
|
|
24
|
+
];
|
|
25
|
+
const key = cacheKey(mapping.type, info.path, subPath);
|
|
26
|
+
map.set(key, mapping.mappings);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export function getLoaderMapping(ctx, path, type) {
|
|
30
|
+
const map = cache(ctx);
|
|
31
|
+
const key = cacheKey(type, path, []);
|
|
32
|
+
var _map_get;
|
|
33
|
+
return (_map_get = map.get(key)) !== null && _map_get !== void 0 ? _map_get : null;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=loader-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/loader-map.ts"],"names":["createContextCache","cache","ctx","Map","cacheKey","type","path","subPath","key","current","prev","entry","setLoaderMappings","info","value","Object","keys","forEach","field","map","mapping","indirectPath","set","mappings","getLoaderMapping","get"],"mappings":"AACA,SAASA,kBAAkB,QAAQ,eAAe;AAYlD,MAAMC,QAAQD,mBAAmB,CAACE,MAAQ,IAAIC;AAE9C,OAAO,SAASC,SAASC,IAAY,EAAEC,IAAgC,EAAEC,UAAoB,EAAE;IAC7F,IAAIC,MAAM;IACV,IAAIC,UAAkDH;IAEtD,MAAOG,QAAS;QACd,IAAI,OAAOA,QAAQD,GAAG,KAAK,UAAU;YACnCA,MAAMA,MAAM,CAAC,EAAEC,QAAQD,GAAG,CAAC,CAAC,EAAEA,IAAI,CAAC,GAAGC,QAAQD,GAAG;QACnD;QACAC,UAAUA,QAAQC,IAAI;IACxB;IAEA,KAAK,MAAMC,SAASJ,QAAS;QAC3BC,MAAM,CAAC,EAAEA,IAAI,CAAC,EAAEG,MAAM,CAAC;IACzB;IAEA,OAAO,CAAC,EAAEN,KAAK,CAAC,EAAEG,IAAI,CAAC;AACzB;AAEA,OAAO,SAASI,kBAAkBV,GAAW,EAAEW,IAAwB,EAAEC,KAAqB;IAC5FC,OAAOC,IAAI,CAACF,OAAOG,OAAO,CAAC,CAACC;QAC1B,MAAMC,MAAMlB,MAAMC;QAElB,MAAMkB,UAAUN,KAAK,CAACI,MAAM;QAC5B,MAAMX,UAAU;eAAIa,QAAQC,YAAY;YAAEH;SAAM;QAChD,MAAMV,MAAMJ,SAASgB,QAAQf,IAAI,EAAEQ,KAAKP,IAAI,EAAEC;QAE9CY,IAAIG,GAAG,CAACd,KAAKY,QAAQG,QAAQ;IAC/B;AACF;AAEA,OAAO,SAASC,iBAAiBtB,GAAW,EAAEI,IAAgC,EAAED,IAAY;IAC1F,MAAMc,MAAMlB,MAAMC;IAClB,MAAMM,MAAMJ,SAASC,MAAMC,MAAM,EAAE;QAE5Ba;IAAP,OAAOA,CAAAA,WAAAA,IAAIM,GAAG,CAACjB,kBAARW,sBAAAA,WAAgB;AACzB"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/* eslint-disable no-continue */ import { getArgumentValues, getDirectiveValues, getNamedType, GraphQLIncludeDirective, GraphQLSkipDirective, isInterfaceType, isObjectType, Kind } from 'graphql';
|
|
2
|
+
import { PothosValidationError } from '@pothos/core';
|
|
3
|
+
import { setLoaderMappings } from './loader-map.js';
|
|
4
|
+
import { createState, mergeSelection, selectionCompatible, selectionToQuery } from './selections.js';
|
|
5
|
+
import { wrapWithUsageCheck } from './usage.js';
|
|
6
|
+
function addTypeSelectionsForField(config, type, context, info, state, selection, indirectPath) {
|
|
7
|
+
if (selection.name.value.startsWith("__")) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
var _type_extensions;
|
|
11
|
+
const { pothosDrizzleSelect, pothosIndirectInclude } = (_type_extensions = type.extensions) !== null && _type_extensions !== void 0 ? _type_extensions : {};
|
|
12
|
+
if (!!(pothosIndirectInclude === null || pothosIndirectInclude === void 0 ? void 0 : pothosIndirectInclude.path) && pothosIndirectInclude.path.length > 0 || !!(pothosIndirectInclude === null || pothosIndirectInclude === void 0 ? void 0 : pothosIndirectInclude.paths) && pothosIndirectInclude.paths.length === 0) {
|
|
13
|
+
var _pothosIndirectInclude_paths;
|
|
14
|
+
resolveIndirectIncludePaths(type, info, selection, [], (_pothosIndirectInclude_paths = pothosIndirectInclude.paths) !== null && _pothosIndirectInclude_paths !== void 0 ? _pothosIndirectInclude_paths : [
|
|
15
|
+
pothosIndirectInclude.path
|
|
16
|
+
], indirectPath, (resolvedType, field, path) => {
|
|
17
|
+
addTypeSelectionsForField(config, resolvedType, context, info, state, field, path);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
else if (pothosIndirectInclude) {
|
|
21
|
+
addTypeSelectionsForField(config, info.schema.getType(pothosIndirectInclude.getType()), context, info, state, selection, indirectPath);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (!(isObjectType(type) || isInterfaceType(type))) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (pothosDrizzleSelect) {
|
|
28
|
+
mergeSelection(config, state, {
|
|
29
|
+
...pothosDrizzleSelect
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (selection.selectionSet) {
|
|
33
|
+
addNestedSelections(config, type, context, info, state, selection.selectionSet, indirectPath);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function resolveIndirectIncludePaths(type, info, selection, pathPrefix, includePaths, path, resolve) {
|
|
37
|
+
for (const includePath of includePaths) {
|
|
38
|
+
if (pathPrefix.length > 0) {
|
|
39
|
+
resolveIndirectInclude(type, info, selection, [
|
|
40
|
+
...pathPrefix,
|
|
41
|
+
...includePath
|
|
42
|
+
], path, resolve);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
resolveIndirectInclude(type, info, selection, includePath, path, resolve);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function resolveIndirectInclude(type, info, selection, includePath, path, resolve) {
|
|
50
|
+
if (includePath.length === 0) {
|
|
51
|
+
resolve(type, selection, path);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const [include, ...rest] = includePath;
|
|
55
|
+
if (!selection.selectionSet || !include) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
for (const sel of selection.selectionSet.selections) {
|
|
59
|
+
switch (sel.kind) {
|
|
60
|
+
case Kind.FIELD:
|
|
61
|
+
if (!fieldSkipped(info, sel) && sel.name.value === include.name && (isObjectType(type) || isInterfaceType(type))) {
|
|
62
|
+
var _sel_alias;
|
|
63
|
+
const returnType = getNamedType(type.getFields()[sel.name.value].type);
|
|
64
|
+
var _sel_alias_value;
|
|
65
|
+
resolveIndirectInclude(returnType, info, sel, rest, [
|
|
66
|
+
...path,
|
|
67
|
+
(_sel_alias_value = (_sel_alias = sel.alias) === null || _sel_alias === void 0 ? void 0 : _sel_alias.value) !== null && _sel_alias_value !== void 0 ? _sel_alias_value : sel.name.value
|
|
68
|
+
], resolve);
|
|
69
|
+
}
|
|
70
|
+
continue;
|
|
71
|
+
case Kind.FRAGMENT_SPREAD:
|
|
72
|
+
if (!include.type || info.fragments[sel.name.value].typeCondition.name.value === include.type) {
|
|
73
|
+
resolveIndirectInclude(include.type ? info.schema.getType(include.type) : type, info, info.fragments[sel.name.value], includePath, path, resolve);
|
|
74
|
+
}
|
|
75
|
+
continue;
|
|
76
|
+
case Kind.INLINE_FRAGMENT:
|
|
77
|
+
if (!sel.typeCondition || !include.type || sel.typeCondition.name.value === include.type) {
|
|
78
|
+
resolveIndirectInclude(sel.typeCondition ? info.schema.getType(sel.typeCondition.name.value) : type, info, sel, includePath, path, resolve);
|
|
79
|
+
}
|
|
80
|
+
continue;
|
|
81
|
+
default:
|
|
82
|
+
throw new PothosValidationError(`Unsupported selection kind ${selection.kind}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function addNestedSelections(config, type, context, info, state, selections, indirectPath) {
|
|
87
|
+
let parentType = type;
|
|
88
|
+
for (const selection of selections.selections) {
|
|
89
|
+
switch (selection.kind) {
|
|
90
|
+
case Kind.FIELD:
|
|
91
|
+
addFieldSelection(config, type, context, info, state, selection, indirectPath);
|
|
92
|
+
continue;
|
|
93
|
+
case Kind.FRAGMENT_SPREAD:
|
|
94
|
+
var _parentType_extensions;
|
|
95
|
+
parentType = info.schema.getType(info.fragments[selection.name.value].typeCondition.name.value);
|
|
96
|
+
if (isObjectType(type) ? parentType.name !== type.name : ((_parentType_extensions = parentType.extensions) === null || _parentType_extensions === void 0 ? void 0 : _parentType_extensions.pothosDrizzleModel) !== type.extensions.pothosDrizzleModel) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
addNestedSelections(config, parentType, context, info, state, info.fragments[selection.name.value].selectionSet, indirectPath);
|
|
100
|
+
continue;
|
|
101
|
+
case Kind.INLINE_FRAGMENT:
|
|
102
|
+
var _parentType_extensions1;
|
|
103
|
+
parentType = selection.typeCondition ? info.schema.getType(selection.typeCondition.name.value) : type;
|
|
104
|
+
if (isObjectType(type) ? parentType.name !== type.name : ((_parentType_extensions1 = parentType.extensions) === null || _parentType_extensions1 === void 0 ? void 0 : _parentType_extensions1.pothosDrizzleModel) !== type.extensions.pothosDrizzleModel) {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
addNestedSelections(config, parentType, context, info, state, selection.selectionSet, indirectPath);
|
|
108
|
+
continue;
|
|
109
|
+
default:
|
|
110
|
+
throw new PothosValidationError(`Unsupported selection kind ${selection.kind}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function addFieldSelection(config, type, context, info, state, selection, indirectPath) {
|
|
115
|
+
var _field_extensions;
|
|
116
|
+
if (selection.name.value.startsWith("__") || fieldSkipped(info, selection)) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const field = type.getFields()[selection.name.value];
|
|
120
|
+
if (!field) {
|
|
121
|
+
throw new PothosValidationError(`Unknown field ${selection.name.value} on ${type.name}`);
|
|
122
|
+
}
|
|
123
|
+
const fieldSelect = (_field_extensions = field.extensions) === null || _field_extensions === void 0 ? void 0 : _field_extensions.pothosDrizzleSelect;
|
|
124
|
+
let fieldSelectionMap;
|
|
125
|
+
let mappings = {};
|
|
126
|
+
if (typeof fieldSelect === "function") {
|
|
127
|
+
const args = getArgumentValues(field, selection, info.variableValues);
|
|
128
|
+
fieldSelectionMap = fieldSelect(args, context, (rawQuery, indirectInclude, expectedType) => {
|
|
129
|
+
const returnType = getNamedType(field.type);
|
|
130
|
+
const query = typeof rawQuery === "function" ? rawQuery(args, context) : rawQuery;
|
|
131
|
+
const normalizedIndirectInclude = Array.isArray(indirectInclude) ? normalizeInclude(indirectInclude, getIndirectType(returnType, info), expectedType ? getNamedType(info.schema.getType(expectedType)) : undefined) : indirectInclude;
|
|
132
|
+
const fieldState = createStateForSelection(config, getIndirectType(normalizedIndirectInclude ? info.schema.getType(normalizedIndirectInclude.getType()) : returnType, info), state);
|
|
133
|
+
if (typeof query === "object" && Object.keys(query).length > 0) {
|
|
134
|
+
mergeSelection(config, fieldState, {
|
|
135
|
+
columns: {},
|
|
136
|
+
...query
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
if (!!(normalizedIndirectInclude === null || normalizedIndirectInclude === void 0 ? void 0 : normalizedIndirectInclude.path) && normalizedIndirectInclude.path.length > 0 || !!(normalizedIndirectInclude === null || normalizedIndirectInclude === void 0 ? void 0 : normalizedIndirectInclude.paths) && normalizedIndirectInclude.paths.length > 0) {
|
|
140
|
+
var _returnType_extensions_pothosIndirectInclude, _returnType_extensions;
|
|
141
|
+
var _returnType_extensions_pothosIndirectInclude_path, _normalizedIndirectInclude_paths;
|
|
142
|
+
resolveIndirectIncludePaths(returnType, info, selection, (_returnType_extensions_pothosIndirectInclude_path = (_returnType_extensions = returnType.extensions) === null || _returnType_extensions === void 0 ? void 0 : (_returnType_extensions_pothosIndirectInclude = _returnType_extensions.pothosIndirectInclude) === null || _returnType_extensions_pothosIndirectInclude === void 0 ? void 0 : _returnType_extensions_pothosIndirectInclude.path) !== null && _returnType_extensions_pothosIndirectInclude_path !== void 0 ? _returnType_extensions_pothosIndirectInclude_path : [], (_normalizedIndirectInclude_paths = normalizedIndirectInclude.paths) !== null && _normalizedIndirectInclude_paths !== void 0 ? _normalizedIndirectInclude_paths : [
|
|
143
|
+
normalizedIndirectInclude.path
|
|
144
|
+
], [], (resolvedType, resolvedField, path) => {
|
|
145
|
+
addTypeSelectionsForField(config, resolvedType, context, info, fieldState, resolvedField, path);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
addTypeSelectionsForField(config, returnType, context, info, fieldState, selection, []);
|
|
149
|
+
// eslint-disable-next-line prefer-destructuring
|
|
150
|
+
mappings = fieldState.mappings;
|
|
151
|
+
return selectionToQuery(fieldState);
|
|
152
|
+
}, (path) => {
|
|
153
|
+
const returnType = getNamedType(field.type);
|
|
154
|
+
let node = null;
|
|
155
|
+
resolveIndirectInclude(returnType, info, selection, path.map((name) => ({
|
|
156
|
+
name
|
|
157
|
+
})), [], (_, resolvedField) => {
|
|
158
|
+
node = resolvedField;
|
|
159
|
+
});
|
|
160
|
+
return node;
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
fieldSelectionMap = fieldSelect;
|
|
165
|
+
}
|
|
166
|
+
if (fieldSelect && selectionCompatible(state, fieldSelectionMap, true)) {
|
|
167
|
+
var _selection_alias;
|
|
168
|
+
mergeSelection(config, state, fieldSelectionMap);
|
|
169
|
+
var _selection_alias_value;
|
|
170
|
+
// eslint-disable-next-line no-param-reassign
|
|
171
|
+
state.mappings[(_selection_alias_value = (_selection_alias = selection.alias) === null || _selection_alias === void 0 ? void 0 : _selection_alias.value) !== null && _selection_alias_value !== void 0 ? _selection_alias_value : selection.name.value] = {
|
|
172
|
+
field: selection.name.value,
|
|
173
|
+
type: type.name,
|
|
174
|
+
mappings,
|
|
175
|
+
indirectPath
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
export function queryFromInfo({ withUsageCheck, ...options }) {
|
|
180
|
+
const state = stateFromInfo(options);
|
|
181
|
+
setLoaderMappings(options.context, options.info, state.mappings);
|
|
182
|
+
const query = selectionToQuery(state);
|
|
183
|
+
return withUsageCheck ? wrapWithUsageCheck(query) : query;
|
|
184
|
+
}
|
|
185
|
+
export function stateFromInfo({ config, context, info, typeName, select, path = [], paths = [] }) {
|
|
186
|
+
const returnType = getNamedType(info.returnType);
|
|
187
|
+
const type = typeName ? info.schema.getTypeMap()[typeName] : returnType;
|
|
188
|
+
let state;
|
|
189
|
+
if (path.length > 0 || paths.length > 0) {
|
|
190
|
+
var _returnType_extensions;
|
|
191
|
+
const { pothosIndirectInclude } = (_returnType_extensions = returnType.extensions) !== null && _returnType_extensions !== void 0 ? _returnType_extensions : {};
|
|
192
|
+
var _pothosIndirectInclude_path;
|
|
193
|
+
resolveIndirectInclude(returnType, info, info.fieldNodes[0], (_pothosIndirectInclude_path = pothosIndirectInclude === null || pothosIndirectInclude === void 0 ? void 0 : pothosIndirectInclude.path) !== null && _pothosIndirectInclude_path !== void 0 ? _pothosIndirectInclude_path : [], [], (indirectType, indirectField, subPath) => {
|
|
194
|
+
resolveIndirectIncludePaths(indirectType, info, indirectField, [], paths.length > 0 ? paths.map((p) => p.map((n) => typeof n === "string" ? {
|
|
195
|
+
name: n
|
|
196
|
+
} : n)) : [
|
|
197
|
+
path.map((n) => typeof n === "string" ? {
|
|
198
|
+
name: n
|
|
199
|
+
} : n)
|
|
200
|
+
], subPath, (resolvedType, resolvedField, nested) => {
|
|
201
|
+
state = createStateForSelection(config, resolvedType, undefined, select);
|
|
202
|
+
addTypeSelectionsForField(config, typeName ? type : resolvedType, context, info, state, resolvedField, nested);
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
state = createStateForSelection(config, type, undefined, select);
|
|
208
|
+
addTypeSelectionsForField(config, type, context, info, state, info.fieldNodes[0], []);
|
|
209
|
+
}
|
|
210
|
+
if (!state) {
|
|
211
|
+
state = createStateForSelection(config, type, undefined, select);
|
|
212
|
+
}
|
|
213
|
+
return state;
|
|
214
|
+
}
|
|
215
|
+
export function selectionStateFromInfo(config, context, info, typeName) {
|
|
216
|
+
const type = typeName ? info.schema.getTypeMap()[typeName] : info.parentType;
|
|
217
|
+
const state = createStateForSelection(config, type);
|
|
218
|
+
if (!(isObjectType(type) || isInterfaceType(type))) {
|
|
219
|
+
throw new PothosValidationError("Drizzle plugin can only resolve selections for object and interface types");
|
|
220
|
+
}
|
|
221
|
+
addFieldSelection(config, type, context, info, state, info.fieldNodes[0], []);
|
|
222
|
+
return state;
|
|
223
|
+
}
|
|
224
|
+
function createStateForSelection(config, type, parent, initialSelections) {
|
|
225
|
+
var _type_extensions;
|
|
226
|
+
const { pothosDrizzleTable } = (_type_extensions = type.extensions) !== null && _type_extensions !== void 0 ? _type_extensions : {};
|
|
227
|
+
if (!pothosDrizzleTable) {
|
|
228
|
+
throw new PothosValidationError(`Expected ${type.name} to have a table config`);
|
|
229
|
+
}
|
|
230
|
+
const state = createState(pothosDrizzleTable, parent);
|
|
231
|
+
if (initialSelections) {
|
|
232
|
+
mergeSelection(config, state, initialSelections);
|
|
233
|
+
}
|
|
234
|
+
return state;
|
|
235
|
+
}
|
|
236
|
+
export function getIndirectType(type, info) {
|
|
237
|
+
var _targetType_extensions;
|
|
238
|
+
let targetType = type;
|
|
239
|
+
while ((_targetType_extensions = targetType.extensions) === null || _targetType_extensions === void 0 ? void 0 : _targetType_extensions.pothosIndirectInclude) {
|
|
240
|
+
var _targetType_extensions1;
|
|
241
|
+
targetType = info.schema.getType(((_targetType_extensions1 = targetType.extensions) === null || _targetType_extensions1 === void 0 ? void 0 : _targetType_extensions1.pothosIndirectInclude).getType());
|
|
242
|
+
}
|
|
243
|
+
return targetType;
|
|
244
|
+
}
|
|
245
|
+
export function normalizeInclude(path, type, expectedType) {
|
|
246
|
+
let currentType = path.length > 0 ? type : expectedType !== null && expectedType !== void 0 ? expectedType : type;
|
|
247
|
+
const normalized = [];
|
|
248
|
+
if (!(isObjectType(currentType) || isInterfaceType(currentType))) {
|
|
249
|
+
throw new PothosValidationError(`Expected ${currentType} to be an Object type`);
|
|
250
|
+
}
|
|
251
|
+
for (const fieldName of path) {
|
|
252
|
+
const field = currentType.getFields()[fieldName];
|
|
253
|
+
if (!field) {
|
|
254
|
+
throw new PothosValidationError(`Expected ${currentType} to have a field ${fieldName}`);
|
|
255
|
+
}
|
|
256
|
+
currentType = getNamedType(field.type);
|
|
257
|
+
if (!(isObjectType(currentType) || isInterfaceType(currentType))) {
|
|
258
|
+
throw new PothosValidationError(`Expected ${currentType} to be an Object or Interface type`);
|
|
259
|
+
}
|
|
260
|
+
normalized.push({
|
|
261
|
+
name: fieldName,
|
|
262
|
+
type: currentType.name
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
return {
|
|
266
|
+
getType: () => {
|
|
267
|
+
var _expectedType_name;
|
|
268
|
+
return (_expectedType_name = expectedType === null || expectedType === void 0 ? void 0 : expectedType.name) !== null && _expectedType_name !== void 0 ? _expectedType_name : normalized.length > 0 ? normalized[normalized.length - 1].type : type.name;
|
|
269
|
+
},
|
|
270
|
+
path: normalized
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
function fieldSkipped(info, selection) {
|
|
274
|
+
const skip = getDirectiveValues(GraphQLSkipDirective, selection, info.variableValues);
|
|
275
|
+
if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
const include = getDirectiveValues(GraphQLIncludeDirective, selection, info.variableValues);
|
|
279
|
+
if ((include === null || include === void 0 ? void 0 : include.if) === false) {
|
|
280
|
+
return true;
|
|
281
|
+
}
|
|
282
|
+
return false;
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=map-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/map-query.ts"],"names":["getArgumentValues","getDirectiveValues","getNamedType","GraphQLIncludeDirective","GraphQLSkipDirective","isInterfaceType","isObjectType","Kind","PothosValidationError","setLoaderMappings","createState","mergeSelection","selectionCompatible","selectionToQuery","wrapWithUsageCheck","addTypeSelectionsForField","config","type","context","info","state","selection","indirectPath","name","value","startsWith","pothosDrizzleSelect","pothosIndirectInclude","extensions","path","length","paths","resolveIndirectIncludePaths","resolvedType","field","schema","getType","selectionSet","addNestedSelections","pathPrefix","includePaths","resolve","includePath","resolveIndirectInclude","include","rest","sel","selections","kind","FIELD","fieldSkipped","returnType","getFields","alias","FRAGMENT_SPREAD","fragments","typeCondition","INLINE_FRAGMENT","parentType","addFieldSelection","pothosDrizzleModel","fieldSelect","fieldSelectionMap","mappings","args","variableValues","rawQuery","indirectInclude","expectedType","query","normalizedIndirectInclude","Array","isArray","normalizeInclude","getIndirectType","undefined","fieldState","createStateForSelection","Object","keys","columns","resolvedField","node","map","_","queryFromInfo","withUsageCheck","options","stateFromInfo","typeName","select","getTypeMap","fieldNodes","indirectType","indirectField","subPath","p","n","nested","selectionStateFromInfo","parent","initialSelections","pothosDrizzleTable","targetType","currentType","normalized","fieldName","push","skip","if"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DrizzleInterfaceRef } from '../interface-ref.js';
|
|
2
|
+
import { DrizzleObjectRef } from '../object-ref.js';
|
|
3
|
+
export const refMap = new WeakMap();
|
|
4
|
+
export function getRefFromModel(name, builder, type = "object") {
|
|
5
|
+
if (!refMap.has(builder)) {
|
|
6
|
+
refMap.set(builder, new Map());
|
|
7
|
+
}
|
|
8
|
+
const cache = refMap.get(builder);
|
|
9
|
+
if (!cache.has(name)) {
|
|
10
|
+
cache.set(name, type === "object" ? new DrizzleObjectRef(name, name) : new DrizzleInterfaceRef(name, name));
|
|
11
|
+
}
|
|
12
|
+
return cache.get(name);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/refs.ts"],"names":["DrizzleInterfaceRef","DrizzleObjectRef","refMap","WeakMap","getRefFromModel","name","builder","type","has","set","Map","cache","get"],"mappings":"AACA,SAASA,mBAAmB,QAAoB,mBAAmB;AACnE,SAASC,gBAAgB,QAAQ,gBAAgB;AAEjD,OAAO,MAAMC,SAAS,IAAIC,UAAkD;AAE5E,OAAO,SAASC,gBACdC,IAAY,EACZC,OAA+C,EAC/CC,OAA+B,QAAQ;IAEvC,IAAI,CAACL,OAAOM,GAAG,CAACF,UAAU;QACxBJ,OAAOO,GAAG,CAACH,SAAS,IAAII;IAC1B;IACA,MAAMC,QAAQT,OAAOU,GAAG,CAACN;IAEzB,IAAI,CAACK,MAAMH,GAAG,CAACH,OAAO;QACpBM,MAAMF,GAAG,CACPJ,MACAE,SAAS,WAAW,IAAIN,iBAAiBI,MAAMA,QAAQ,IAAIL,oBAAoBK,MAAMA;IAEzF;IAEA,OAAOM,MAAMC,GAAG,CAACP;AACnB"}
|