Skip to content

Commit b76bc51

Browse files
fix(hooks): Fix regression ignoring custom resolvers.
1 parent ab41aa7 commit b76bc51

File tree

9 files changed

+428
-215
lines changed

9 files changed

+428
-215
lines changed

lib/injectHooks.js

Lines changed: 113 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,99 +1,126 @@
11
"use strict";
22
exports.__esModule = true;
33
exports.injectHooks = void 0;
4+
function injectListHooks(declaration, injectFunctions) {
5+
if (!declaration.list) {
6+
declaration.list = {};
7+
}
8+
// If the list is resolved by a custom function, we don't need to inject hooks
9+
if (declaration.list.resolve) {
10+
return;
11+
}
12+
var beforeList = Array.isArray(declaration.list.before)
13+
? declaration.list.before
14+
: declaration.list.before
15+
? [declaration.list.before]
16+
: [];
17+
declaration.list.before = injectFunctions.listBefore
18+
? injectFunctions.listBefore(declaration.model, beforeList)
19+
: beforeList;
20+
var afterList = Array.isArray(declaration.list.after)
21+
? declaration.list.after
22+
: declaration.list.after
23+
? [declaration.list.after]
24+
: [];
25+
declaration.list.after = injectFunctions.listAfter
26+
? injectFunctions.listAfter(declaration.model, afterList)
27+
: afterList;
28+
}
29+
function injectUpdateHooks(declaration, injectFunctions) {
30+
var _a;
31+
if (!((_a = declaration.actions) === null || _a === void 0 ? void 0 : _a.includes('update')))
32+
return;
33+
if (!declaration.update || 'type' in declaration.update) {
34+
declaration.update = {};
35+
}
36+
// If the update is resolved by a custom function, we don't need to inject hooks
37+
if (declaration.update.resolve) {
38+
return;
39+
}
40+
var beforeUpdate = Array.isArray(declaration.update.before)
41+
? declaration.update.before
42+
: declaration.update.before
43+
? [declaration.update.before]
44+
: [];
45+
declaration.update.before = injectFunctions.updateBefore
46+
? injectFunctions.updateBefore(declaration.model, beforeUpdate)
47+
: beforeUpdate;
48+
var afterUpdate = Array.isArray(declaration.update.after)
49+
? declaration.update.after
50+
: declaration.update.after
51+
? [declaration.update.after]
52+
: [];
53+
declaration.update.after = injectFunctions.updateAfter
54+
? injectFunctions.updateAfter(declaration.model, afterUpdate)
55+
: afterUpdate;
56+
}
57+
function injectCreateHooks(declaration, injectFunctions) {
58+
var _a;
59+
if (!((_a = declaration.actions) === null || _a === void 0 ? void 0 : _a.includes('create')))
60+
return;
61+
if (!declaration.create || 'type' in declaration.create) {
62+
declaration.create = {};
63+
}
64+
// If the create is resolved by a custom function, we don't need to inject hooks
65+
if (declaration.list.create) {
66+
return;
67+
}
68+
var beforeCreate = Array.isArray(declaration.create.before)
69+
? declaration.create.before
70+
: declaration.create.before
71+
? [declaration.create.before]
72+
: [];
73+
declaration.create.before = injectFunctions.createBefore
74+
? injectFunctions.createBefore(declaration.model, beforeCreate)
75+
: beforeCreate;
76+
var afterCreate = Array.isArray(declaration.create.after)
77+
? declaration.create.after
78+
: declaration.create.after
79+
? [declaration.create.after]
80+
: [];
81+
declaration.create.after = injectFunctions.createAfter
82+
? injectFunctions.createAfter(declaration.model, afterCreate)
83+
: afterCreate;
84+
}
85+
function injectDeleteHooks(declaration, injectFunctions) {
86+
var _a;
87+
if (!((_a = declaration.actions) === null || _a === void 0 ? void 0 : _a.includes('delete')))
88+
return;
89+
if (!declaration["delete"] || 'type' in declaration["delete"]) {
90+
declaration["delete"] = {};
91+
}
92+
// If the delete is resolved by a custom function, we don't need to inject hooks
93+
if (declaration["delete"].resolve) {
94+
return;
95+
}
96+
var beforeDelete = Array.isArray(declaration["delete"].before)
97+
? declaration["delete"].before
98+
: declaration["delete"].before
99+
? [declaration["delete"].before]
100+
: [];
101+
declaration["delete"].before = injectFunctions.deleteBefore
102+
? injectFunctions.deleteBefore(declaration.model, beforeDelete)
103+
: beforeDelete;
104+
var afterDelete = Array.isArray(declaration["delete"].after)
105+
? declaration["delete"].after
106+
: declaration["delete"].after
107+
? [declaration["delete"].after]
108+
: [];
109+
declaration["delete"].after = injectFunctions.deleteAfter
110+
? injectFunctions.deleteAfter(declaration.model, afterDelete)
111+
: afterDelete;
112+
}
4113
// Injects a function that will be called with the model and the hooks
5114
// The function can return a new list of hooks to be used instead of the original ones
6115
function injectHooks(_a) {
7-
var _b, _c, _d;
8116
var graphqlSchemaDeclaration = _a.graphqlSchemaDeclaration, injectFunctions = _a.injectFunctions;
9117
for (var key in graphqlSchemaDeclaration) {
10118
var declaration = graphqlSchemaDeclaration[key];
11119
if ('model' in declaration) {
12-
if (!declaration.list) {
13-
declaration.list = {};
14-
}
15-
var beforeList = Array.isArray(declaration.list.before)
16-
? declaration.list.before
17-
: declaration.list.before
18-
? [declaration.list.before]
19-
: [];
20-
declaration.list.before = injectFunctions.listBefore
21-
? injectFunctions.listBefore(declaration.model, beforeList)
22-
: beforeList;
23-
var afterList = Array.isArray(declaration.list.after)
24-
? declaration.list.after
25-
: declaration.list.after
26-
? [declaration.list.after]
27-
: [];
28-
declaration.list.after = injectFunctions.listAfter
29-
? injectFunctions.listAfter(declaration.model, afterList)
30-
: afterList;
31-
// Initialize update configuration if it's in actions
32-
if ((_b = declaration.actions) === null || _b === void 0 ? void 0 : _b.includes('update')) {
33-
if (!declaration.update || 'type' in declaration.update) {
34-
declaration.update = {};
35-
}
36-
var beforeUpdate = Array.isArray(declaration.update.before)
37-
? declaration.update.before
38-
: declaration.update.before
39-
? [declaration.update.before]
40-
: [];
41-
declaration.update.before = injectFunctions.updateBefore
42-
? injectFunctions.updateBefore(declaration.model, beforeUpdate)
43-
: beforeUpdate;
44-
var afterUpdate = Array.isArray(declaration.update.after)
45-
? declaration.update.after
46-
: declaration.update.after
47-
? [declaration.update.after]
48-
: [];
49-
declaration.update.after = injectFunctions.updateAfter
50-
? injectFunctions.updateAfter(declaration.model, afterUpdate)
51-
: afterUpdate;
52-
}
53-
// Initialize create configuration if it's in actions
54-
if ((_c = declaration.actions) === null || _c === void 0 ? void 0 : _c.includes('create')) {
55-
if (!declaration.create || 'type' in declaration.create) {
56-
declaration.create = {};
57-
}
58-
var beforeCreate = Array.isArray(declaration.create.before)
59-
? declaration.create.before
60-
: declaration.create.before
61-
? [declaration.create.before]
62-
: [];
63-
declaration.create.before = injectFunctions.createBefore
64-
? injectFunctions.createBefore(declaration.model, beforeCreate)
65-
: beforeCreate;
66-
var afterCreate = Array.isArray(declaration.create.after)
67-
? declaration.create.after
68-
: declaration.create.after
69-
? [declaration.create.after]
70-
: [];
71-
declaration.create.after = injectFunctions.createAfter
72-
? injectFunctions.createAfter(declaration.model, afterCreate)
73-
: afterCreate;
74-
}
75-
// Initialize delete configuration if it's in actions
76-
if ((_d = declaration.actions) === null || _d === void 0 ? void 0 : _d.includes('delete')) {
77-
if (!declaration["delete"] || 'type' in declaration["delete"]) {
78-
declaration["delete"] = {};
79-
}
80-
var beforeDelete = Array.isArray(declaration["delete"].before)
81-
? declaration["delete"].before
82-
: declaration["delete"].before
83-
? [declaration["delete"].before]
84-
: [];
85-
declaration["delete"].before = injectFunctions.deleteBefore
86-
? injectFunctions.deleteBefore(declaration.model, beforeDelete)
87-
: beforeDelete;
88-
var afterDelete = Array.isArray(declaration["delete"].after)
89-
? declaration["delete"].after
90-
: declaration["delete"].after
91-
? [declaration["delete"].after]
92-
: [];
93-
declaration["delete"].after = injectFunctions.deleteAfter
94-
? injectFunctions.deleteAfter(declaration.model, afterDelete)
95-
: afterDelete;
96-
}
120+
injectListHooks(declaration, injectFunctions);
121+
injectUpdateHooks(declaration, injectFunctions);
122+
injectCreateHooks(declaration, injectFunctions);
123+
injectDeleteHooks(declaration, injectFunctions);
97124
}
98125
}
99126
return graphqlSchemaDeclaration;

lib/mutationResolvers/create.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ function generateMutationCreate(modelName, inputType, outputType, model, graphql
8787
? graphqlModelDeclaration.create.extraArg
8888
: {})),
8989
resolve: function (source, args, context, info) { return __awaiter(_this, void 0, void 0, function () {
90-
var attributes, beforeList, beforeList_1, beforeList_1_1, before, handle, e_1_1, beforeList, beforeList_2, beforeList_2_1, before, beforeHandle, e_2_1, preventDuplicateAttributes_1, filters, entityDuplicate, newEntity, error_1, afterList, createdEntity, hookData, afterList_1, afterList_1_1, after, afterHandle, e_3_1;
90+
var attributes, beforeList, beforeList_1, beforeList_1_1, before, handle, e_1_1, beforeCreate, beforeCreate_1, beforeCreate_1_1, before, beforeHandle, e_2_1, preventDuplicateAttributes_1, filters, entityDuplicate, newEntity, error_1, afterList, createdEntity, hookData, afterList_1, afterList_1_1, after, afterHandle, e_3_1;
9191
var e_1, _a, e_2, _b, e_3, _c, _d, _e;
9292
return __generator(this, function (_f) {
9393
switch (_f.label) {
@@ -131,17 +131,17 @@ function generateMutationCreate(modelName, inputType, outputType, model, graphql
131131
if (!(graphqlModelDeclaration.create &&
132132
'before' in graphqlModelDeclaration.create &&
133133
graphqlModelDeclaration.create.before)) return [3 /*break*/, 16];
134-
beforeList = Array.isArray(graphqlModelDeclaration.create.before)
134+
beforeCreate = Array.isArray(graphqlModelDeclaration.create.before)
135135
? graphqlModelDeclaration.create.before
136136
: [graphqlModelDeclaration.create.before];
137137
_f.label = 9;
138138
case 9:
139139
_f.trys.push([9, 14, 15, 16]);
140-
beforeList_2 = __values(beforeList), beforeList_2_1 = beforeList_2.next();
140+
beforeCreate_1 = __values(beforeCreate), beforeCreate_1_1 = beforeCreate_1.next();
141141
_f.label = 10;
142142
case 10:
143-
if (!!beforeList_2_1.done) return [3 /*break*/, 13];
144-
before = beforeList_2_1.value;
143+
if (!!beforeCreate_1_1.done) return [3 /*break*/, 13];
144+
before = beforeCreate_1_1.value;
145145
beforeHandle = globalPreCallback('createBefore');
146146
return [4 /*yield*/, before({
147147
source: source,
@@ -163,7 +163,7 @@ function generateMutationCreate(modelName, inputType, outputType, model, graphql
163163
}
164164
_f.label = 12;
165165
case 12:
166-
beforeList_2_1 = beforeList_2.next();
166+
beforeCreate_1_1 = beforeCreate_1.next();
167167
return [3 /*break*/, 10];
168168
case 13: return [3 /*break*/, 16];
169169
case 14:
@@ -172,7 +172,7 @@ function generateMutationCreate(modelName, inputType, outputType, model, graphql
172172
return [3 /*break*/, 16];
173173
case 15:
174174
try {
175-
if (beforeList_2_1 && !beforeList_2_1.done && (_b = beforeList_2["return"])) _b.call(beforeList_2);
175+
if (beforeCreate_1_1 && !beforeCreate_1_1.done && (_b = beforeCreate_1["return"])) _b.call(beforeCreate_1);
176176
}
177177
finally { if (e_2) throw e_2.error; }
178178
return [7 /*endfinally*/];

0 commit comments

Comments
 (0)