n8n-nodes-codex 1.0.0 → 1.1.0

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 (48) hide show
  1. package/dist/nodes/Codex/Codex.node.js +13 -0
  2. package/dist/nodes/Codex/Codex.node.js.map +1 -1
  3. package/dist/nodes/Codex/resources/admin/index.js +135 -0
  4. package/dist/nodes/Codex/resources/admin/index.js.map +1 -1
  5. package/dist/nodes/Codex/resources/apiKey/index.js +103 -16
  6. package/dist/nodes/Codex/resources/apiKey/index.js.map +1 -1
  7. package/dist/nodes/Codex/resources/book/index.js +52 -2
  8. package/dist/nodes/Codex/resources/book/index.js.map +1 -1
  9. package/dist/nodes/Codex/resources/book/list.js +273 -28
  10. package/dist/nodes/Codex/resources/book/list.js.map +1 -1
  11. package/dist/nodes/Codex/resources/book/updateMetadata.js +1 -1
  12. package/dist/nodes/Codex/resources/book/updateMetadata.js.map +1 -1
  13. package/dist/nodes/Codex/resources/duplicate/index.js +3 -3
  14. package/dist/nodes/Codex/resources/duplicate/index.js.map +1 -1
  15. package/dist/nodes/Codex/resources/genre/index.js +74 -0
  16. package/dist/nodes/Codex/resources/genre/index.js.map +1 -1
  17. package/dist/nodes/Codex/resources/library/create.js +1 -1
  18. package/dist/nodes/Codex/resources/library/create.js.map +1 -1
  19. package/dist/nodes/Codex/resources/library/index.js +190 -0
  20. package/dist/nodes/Codex/resources/library/index.js.map +1 -1
  21. package/dist/nodes/Codex/resources/library/update.js +1 -1
  22. package/dist/nodes/Codex/resources/library/update.js.map +1 -1
  23. package/dist/nodes/Codex/resources/metric/index.js +3 -3
  24. package/dist/nodes/Codex/resources/metric/index.js.map +1 -1
  25. package/dist/nodes/Codex/resources/misc/index.js +5 -5
  26. package/dist/nodes/Codex/resources/misc/index.js.map +1 -1
  27. package/dist/nodes/Codex/resources/series/index.js +51 -13
  28. package/dist/nodes/Codex/resources/series/index.js.map +1 -1
  29. package/dist/nodes/Codex/resources/series/list.js +408 -39
  30. package/dist/nodes/Codex/resources/series/list.js.map +1 -1
  31. package/dist/nodes/Codex/resources/series/updateMetadata.js +1 -1
  32. package/dist/nodes/Codex/resources/series/updateMetadata.js.map +1 -1
  33. package/dist/nodes/Codex/resources/tag/index.js +74 -0
  34. package/dist/nodes/Codex/resources/tag/index.js.map +1 -1
  35. package/dist/nodes/Codex/resources/task/index.js +2 -2
  36. package/dist/nodes/Codex/resources/task/index.js.map +1 -1
  37. package/dist/nodes/Codex/resources/user/index.js +228 -48
  38. package/dist/nodes/Codex/resources/user/index.js.map +1 -1
  39. package/dist/nodes/Codex/resources/userPreference/index.js +1 -1
  40. package/dist/nodes/Codex/resources/userPreference/index.js.map +1 -1
  41. package/dist/nodes/Codex/shared/pagination.d.ts +9 -0
  42. package/dist/nodes/Codex/shared/pagination.js +125 -0
  43. package/dist/nodes/Codex/shared/pagination.js.map +1 -0
  44. package/dist/nodes/Codex/shared/utils.d.ts +9 -0
  45. package/dist/nodes/Codex/shared/utils.js +249 -0
  46. package/dist/nodes/Codex/shared/utils.js.map +1 -0
  47. package/dist/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +1 -1
@@ -0,0 +1,9 @@
1
+ export declare function buildFilterCondition(fieldName: string, value: string | undefined, operator?: string, multiOperator?: string): Record<string, unknown> | undefined;
2
+ export declare function buildMultiValueCondition(fieldName: string): (this: any, requestOptions: any) => Promise<any>;
3
+ export declare function buildUuidCondition(fieldName: string): (this: any, requestOptions: any) => Promise<any>;
4
+ export declare function buildBooleanCondition(fieldName: string): (this: any, requestOptions: any) => Promise<any>;
5
+ export declare function buildStringCondition(fieldName: string): (this: any, requestOptions: any) => Promise<any>;
6
+ export declare function buildEnumCondition(fieldName: string): (this: any, requestOptions: any) => Promise<any>;
7
+ export declare function getPaginationParams(context: any): Record<string, unknown>;
8
+ export declare function buildSeriesListBody(context: any): Record<string, unknown>;
9
+ export declare function buildBookListBody(context: any): Record<string, unknown>;
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildFilterCondition = buildFilterCondition;
4
+ exports.buildMultiValueCondition = buildMultiValueCondition;
5
+ exports.buildUuidCondition = buildUuidCondition;
6
+ exports.buildBooleanCondition = buildBooleanCondition;
7
+ exports.buildStringCondition = buildStringCondition;
8
+ exports.buildEnumCondition = buildEnumCondition;
9
+ exports.getPaginationParams = getPaginationParams;
10
+ exports.buildSeriesListBody = buildSeriesListBody;
11
+ exports.buildBookListBody = buildBookListBody;
12
+ function buildFilterCondition(fieldName, value, operator = 'is', multiOperator = 'anyOf') {
13
+ if (!value || value.length === 0) {
14
+ return undefined;
15
+ }
16
+ if (value.includes(',')) {
17
+ const values = value
18
+ .split(',')
19
+ .map((v) => v.trim())
20
+ .filter((v) => v.length > 0);
21
+ if (values.length === 0) {
22
+ return undefined;
23
+ }
24
+ if (values.length === 1) {
25
+ return {
26
+ [fieldName]: {
27
+ operator,
28
+ value: values[0],
29
+ },
30
+ };
31
+ }
32
+ return {
33
+ [multiOperator]: values.map((v) => ({
34
+ [fieldName]: {
35
+ operator,
36
+ value: v,
37
+ },
38
+ })),
39
+ };
40
+ }
41
+ return {
42
+ [fieldName]: {
43
+ operator,
44
+ value,
45
+ },
46
+ };
47
+ }
48
+ function addConditionToBody(context, requestOptions, condition) {
49
+ const conditionOperator = (context.getNodeParameter('conditionOperator', 0) || 'allOf');
50
+ if (typeof requestOptions.body === 'string') {
51
+ requestOptions.body = {};
52
+ }
53
+ if (!requestOptions.body) {
54
+ requestOptions.body = {};
55
+ }
56
+ const body = requestOptions.body;
57
+ if (!body.condition) {
58
+ body.condition = condition;
59
+ return;
60
+ }
61
+ const existingCondition = body.condition;
62
+ if (existingCondition[conditionOperator] && Array.isArray(existingCondition[conditionOperator])) {
63
+ existingCondition[conditionOperator].push(condition);
64
+ }
65
+ else {
66
+ body.condition = {
67
+ [conditionOperator]: [existingCondition, condition],
68
+ };
69
+ }
70
+ }
71
+ function buildMultiValueCondition(fieldName) {
72
+ return async function (requestOptions) {
73
+ const filters = this.getNodeParameter('filters', 0, {});
74
+ const value = filters[fieldName];
75
+ const operator = filters[`${fieldName}Operator`] || 'is';
76
+ const multiOperator = filters[`${fieldName}MultiOperator`] || 'anyOf';
77
+ const condition = buildFilterCondition(fieldName, value, operator, multiOperator);
78
+ if (condition) {
79
+ addConditionToBody(this, requestOptions, condition);
80
+ }
81
+ return requestOptions;
82
+ };
83
+ }
84
+ function buildUuidCondition(fieldName) {
85
+ return async function (requestOptions) {
86
+ const filters = this.getNodeParameter('filters', 0, {});
87
+ const value = filters[fieldName];
88
+ const operator = filters[`${fieldName}Operator`] || 'is';
89
+ if (value && typeof value === 'string' && value.length > 0) {
90
+ addConditionToBody(this, requestOptions, {
91
+ [fieldName]: {
92
+ operator,
93
+ value,
94
+ },
95
+ });
96
+ }
97
+ return requestOptions;
98
+ };
99
+ }
100
+ function buildBooleanCondition(fieldName) {
101
+ return async function (requestOptions) {
102
+ const filters = this.getNodeParameter('filters', 0, {});
103
+ const value = filters[fieldName];
104
+ if (typeof value === 'boolean') {
105
+ addConditionToBody(this, requestOptions, {
106
+ [fieldName]: {
107
+ operator: value ? 'isTrue' : 'isFalse',
108
+ },
109
+ });
110
+ }
111
+ return requestOptions;
112
+ };
113
+ }
114
+ function buildStringCondition(fieldName) {
115
+ return async function (requestOptions) {
116
+ const filters = this.getNodeParameter('filters', 0, {});
117
+ const value = filters[fieldName];
118
+ if (value && typeof value === 'string' && value.length > 0) {
119
+ addConditionToBody(this, requestOptions, {
120
+ [fieldName]: {
121
+ operator: 'is',
122
+ value,
123
+ },
124
+ });
125
+ }
126
+ return requestOptions;
127
+ };
128
+ }
129
+ function buildEnumCondition(fieldName) {
130
+ return async function (requestOptions) {
131
+ const filters = this.getNodeParameter('filters', 0, {});
132
+ const value = filters[fieldName];
133
+ if (value && typeof value === 'string') {
134
+ addConditionToBody(this, requestOptions, {
135
+ [fieldName]: {
136
+ operator: 'is',
137
+ value,
138
+ },
139
+ });
140
+ }
141
+ return requestOptions;
142
+ };
143
+ }
144
+ function getPaginationParams(context) {
145
+ const qs = {};
146
+ const returnAll = context.getNodeParameter('returnAll', false);
147
+ if (returnAll) {
148
+ const pageSize = context.getNodeParameter('pageSize', 100) || 100;
149
+ qs.pageSize = pageSize;
150
+ }
151
+ else {
152
+ const limit = context.getNodeParameter('limit', 20) || 20;
153
+ qs.pageSize = limit;
154
+ }
155
+ const sort = context.getNodeParameter('sort', '');
156
+ if (sort && sort.length > 0) {
157
+ qs.sort = sort;
158
+ }
159
+ return qs;
160
+ }
161
+ function buildSeriesListBody(context) {
162
+ const body = {};
163
+ const fullTextSearch = context.getNodeParameter('fullTextSearch', '');
164
+ if (fullTextSearch && fullTextSearch.length > 0) {
165
+ body.fullTextSearch = fullTextSearch;
166
+ }
167
+ const filters = context.getNodeParameter('filters', {});
168
+ const conditionOperator = (context.getNodeParameter('conditionOperator', 'allOf') || 'allOf');
169
+ const conditions = [];
170
+ const filterFields = [
171
+ { name: 'genre', type: 'multi' },
172
+ { name: 'language', type: 'multi' },
173
+ { name: 'libraryId', type: 'uuid' },
174
+ { name: 'publisher', type: 'multi' },
175
+ { name: 'readStatus', type: 'enum' },
176
+ { name: 'status', type: 'enum' },
177
+ { name: 'tag', type: 'multi' },
178
+ { name: 'name', type: 'string' },
179
+ { name: 'titleSort', type: 'string' },
180
+ ];
181
+ for (const field of filterFields) {
182
+ const value = filters[field.name];
183
+ if (!value || (typeof value === 'string' && value.length === 0))
184
+ continue;
185
+ const operator = filters[`${field.name}Operator`] || 'is';
186
+ const multiOperator = filters[`${field.name}MultiOperator`] || 'anyOf';
187
+ const condition = buildFilterCondition(field.name, value, operator, multiOperator);
188
+ if (condition) {
189
+ conditions.push(condition);
190
+ }
191
+ }
192
+ if (conditions.length === 1) {
193
+ body.condition = conditions[0];
194
+ }
195
+ else if (conditions.length > 1) {
196
+ body.condition = { [conditionOperator]: conditions };
197
+ }
198
+ return body;
199
+ }
200
+ function buildBookListBody(context) {
201
+ const body = {};
202
+ const fullTextSearch = context.getNodeParameter('fullTextSearch', '');
203
+ if (fullTextSearch && fullTextSearch.length > 0) {
204
+ body.fullTextSearch = fullTextSearch;
205
+ }
206
+ const filters = context.getNodeParameter('filters', {});
207
+ const conditionOperator = (context.getNodeParameter('conditionOperator', 'allOf') || 'allOf');
208
+ const conditions = [];
209
+ const filterFields = [
210
+ { name: 'genre', type: 'multi' },
211
+ { name: 'language', type: 'multi' },
212
+ { name: 'libraryId', type: 'uuid' },
213
+ { name: 'seriesId', type: 'uuid' },
214
+ { name: 'publisher', type: 'multi' },
215
+ { name: 'readStatus', type: 'enum' },
216
+ { name: 'tag', type: 'multi' },
217
+ { name: 'author', type: 'multi' },
218
+ { name: 'title', type: 'string' },
219
+ { name: 'hasError', type: 'boolean' },
220
+ ];
221
+ for (const field of filterFields) {
222
+ const value = filters[field.name];
223
+ if (value === undefined || value === null || (typeof value === 'string' && value.length === 0))
224
+ continue;
225
+ if (field.type === 'boolean' && typeof value === 'boolean') {
226
+ conditions.push({
227
+ [field.name]: {
228
+ operator: value ? 'isTrue' : 'isFalse',
229
+ },
230
+ });
231
+ }
232
+ else if (typeof value === 'string') {
233
+ const operator = filters[`${field.name}Operator`] || 'is';
234
+ const multiOperator = filters[`${field.name}MultiOperator`] || 'anyOf';
235
+ const condition = buildFilterCondition(field.name, value, operator, multiOperator);
236
+ if (condition) {
237
+ conditions.push(condition);
238
+ }
239
+ }
240
+ }
241
+ if (conditions.length === 1) {
242
+ body.condition = conditions[0];
243
+ }
244
+ else if (conditions.length > 1) {
245
+ body.condition = { [conditionOperator]: conditions };
246
+ }
247
+ return body;
248
+ }
249
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../nodes/Codex/shared/utils.ts"],"names":[],"mappings":"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"}