temba 0.42.8 → 0.44.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 (86) hide show
  1. package/README.md +25 -24
  2. package/config/index.d.ts +0 -1
  3. package/config/index.d.ts.map +1 -1
  4. package/config/index.js +1 -1
  5. package/config/index.js.map +1 -1
  6. package/index.d.ts +2 -2
  7. package/index.d.ts.map +1 -1
  8. package/index.js +20 -32
  9. package/index.js.map +1 -1
  10. package/openapi/html.d.ts +2 -0
  11. package/openapi/html.d.ts.map +1 -0
  12. package/openapi/html.js +14 -0
  13. package/openapi/html.js.map +1 -0
  14. package/openapi/index.d.ts +5 -0
  15. package/openapi/index.d.ts.map +1 -0
  16. package/openapi/index.js +37 -0
  17. package/openapi/index.js.map +1 -0
  18. package/openapi/spec.d.ts +8 -0
  19. package/openapi/spec.d.ts.map +1 -0
  20. package/openapi/spec.js +486 -0
  21. package/openapi/spec.js.map +1 -0
  22. package/package.json +12 -12
  23. package/requestHandlers/delete.d.ts +2 -2
  24. package/requestHandlers/delete.js +8 -8
  25. package/requestHandlers/delete.js.map +1 -1
  26. package/requestHandlers/get.d.ts +13 -7
  27. package/requestHandlers/get.d.ts.map +1 -1
  28. package/requestHandlers/get.js +7 -7
  29. package/requestHandlers/get.js.map +1 -1
  30. package/requestHandlers/index.d.ts +40 -18
  31. package/requestHandlers/index.d.ts.map +1 -1
  32. package/requestHandlers/index.js +2 -2
  33. package/requestHandlers/index.js.map +1 -1
  34. package/requestHandlers/patch.d.ts +9 -2
  35. package/requestHandlers/patch.d.ts.map +1 -1
  36. package/requestHandlers/patch.js +10 -7
  37. package/requestHandlers/patch.js.map +1 -1
  38. package/requestHandlers/post.d.ts +5 -3
  39. package/requestHandlers/post.d.ts.map +1 -1
  40. package/requestHandlers/post.js +6 -6
  41. package/requestHandlers/post.js.map +1 -1
  42. package/requestHandlers/put.d.ts +9 -2
  43. package/requestHandlers/put.d.ts.map +1 -1
  44. package/requestHandlers/put.js +10 -7
  45. package/requestHandlers/put.js.map +1 -1
  46. package/requestHandlers/types.d.ts +4 -12
  47. package/requestHandlers/types.d.ts.map +1 -1
  48. package/requestHandlers/utils.d.ts +4 -1
  49. package/requestHandlers/utils.d.ts.map +1 -1
  50. package/requestHandlers/utils.js.map +1 -1
  51. package/requestInterceptor/interceptRequest.d.ts +6 -5
  52. package/requestInterceptor/interceptRequest.d.ts.map +1 -1
  53. package/requestInterceptor/interceptRequest.js +8 -8
  54. package/requestInterceptor/interceptRequest.js.map +1 -1
  55. package/requestInterceptor/types.d.ts +9 -7
  56. package/requestInterceptor/types.d.ts.map +1 -1
  57. package/resourceHandler.d.ts +2 -7
  58. package/resourceHandler.d.ts.map +1 -1
  59. package/resourceHandler.js +17 -48
  60. package/resourceHandler.js.map +1 -1
  61. package/responseHandler.d.ts +13 -0
  62. package/responseHandler.d.ts.map +1 -0
  63. package/responseHandler.js +39 -0
  64. package/responseHandler.js.map +1 -0
  65. package/root/html.d.ts +8 -0
  66. package/root/html.d.ts.map +1 -0
  67. package/root/html.js +48 -0
  68. package/root/html.js.map +1 -0
  69. package/root/root.d.ts +4 -0
  70. package/root/root.d.ts.map +1 -0
  71. package/root/root.js +37 -0
  72. package/root/root.js.map +1 -0
  73. package/schema/compile.js +10 -11
  74. package/schema/compile.js.map +1 -1
  75. package/schema/validate.d.ts +2 -1
  76. package/schema/validate.d.ts.map +1 -1
  77. package/schema/validate.js.map +1 -1
  78. package/staticFolder/staticFolder.d.ts +3 -5
  79. package/staticFolder/staticFolder.d.ts.map +1 -1
  80. package/staticFolder/staticFolder.js +15 -18
  81. package/staticFolder/staticFolder.js.map +1 -1
  82. package/version.js +1 -1
  83. package/openapi/openapi.d.ts +0 -6
  84. package/openapi/openapi.d.ts.map +0 -1
  85. package/openapi/openapi.js +0 -512
  86. package/openapi/openapi.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/openapi/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIvC,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AA+C3D,KAAK,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;AAIpC,eAAO,MAAM,oBAAoB,GAAI,QAAQ,aAAa,EAAE,QAAQ,MAAM,WACrC,eAAe,OAAO,cAAc,CAAC,eAAe,CAAC,kBAqfzF,CAAA"}
@@ -1,512 +0,0 @@
1
- import { OpenApiBuilder } from 'openapi3-ts/oas31';
2
- import indefinite from 'indefinite';
3
- import deepmerge from 'deepmerge';
4
- import { handleNotFound } from '../resourceHandler.js';
5
- import { setCorsHeaders } from '../cors/cors.js';
6
- const getPathParameters = (resourceInfo, id = false) => {
7
- const { resource, singularResourceLowerCase } = resourceInfo;
8
- const resourceParameter = {
9
- name: 'resource',
10
- in: 'path',
11
- required: true,
12
- schema: {
13
- type: 'string',
14
- },
15
- description: 'The name of the resource.',
16
- };
17
- const idParameter = {
18
- name: `${singularResourceLowerCase}Id`,
19
- in: 'path',
20
- required: true,
21
- schema: {
22
- type: 'string',
23
- },
24
- description: `The ID of the ${singularResourceLowerCase}.`,
25
- };
26
- let parameters = [];
27
- if (resource === anyResource) {
28
- parameters = [...parameters, resourceParameter];
29
- }
30
- if (id) {
31
- parameters = [...parameters, idParameter];
32
- }
33
- return parameters;
34
- };
35
- const anyResource = '{resource}';
36
- export const createOpenApiHandler = (format, config) => {
37
- const openApiHandler = async (req, res) => {
38
- if (!config.openapi) {
39
- return handleNotFound(req, res);
40
- }
41
- let server = req.headers.host?.split(':')[1] &&
42
- !['80', '443'].includes(req.headers.host.split(':')[1] || '')
43
- ? req.headers.host
44
- : 'default';
45
- if (config.apiPrefix)
46
- server += `/${config.apiPrefix}/`;
47
- let resourceInfos = [
48
- {
49
- resource: anyResource,
50
- pluralResourceLowerCase: 'resources',
51
- pluralResourceUpperCase: 'Resources',
52
- singularResourceLowerCase: 'resource',
53
- singularResourceUpperCase: 'Resource',
54
- },
55
- ];
56
- if (config.resources.length > 0) {
57
- resourceInfos = config.resources.map((resource) => {
58
- if (typeof resource === 'string') {
59
- const pluralResourceLowerCase = resource.toLowerCase();
60
- const pluralResourceUpperCase = pluralResourceLowerCase.charAt(0).toUpperCase() + pluralResourceLowerCase.slice(1);
61
- let singularResourceLowerCase = pluralResourceLowerCase;
62
- if (singularResourceLowerCase.endsWith('s')) {
63
- singularResourceLowerCase = singularResourceLowerCase.slice(0, -1);
64
- }
65
- const singularResourceUpperCase = singularResourceLowerCase.charAt(0).toUpperCase() + singularResourceLowerCase.slice(1);
66
- return {
67
- resource,
68
- pluralResourceLowerCase,
69
- pluralResourceUpperCase,
70
- singularResourceLowerCase,
71
- singularResourceUpperCase,
72
- };
73
- }
74
- else {
75
- const pluralResourceLowerCase = resource.pluralName.toLowerCase();
76
- const pluralResourceUpperCase = pluralResourceLowerCase.charAt(0).toUpperCase() + pluralResourceLowerCase.slice(1);
77
- const singularResourceLowerCase = resource.singularName.toLowerCase();
78
- const singularResourceUpperCase = singularResourceLowerCase.charAt(0).toUpperCase() + singularResourceLowerCase.slice(1);
79
- return {
80
- resource: resource.resourcePath,
81
- pluralResourceLowerCase,
82
- pluralResourceUpperCase,
83
- singularResourceLowerCase,
84
- singularResourceUpperCase,
85
- };
86
- }
87
- });
88
- }
89
- const spec = buildOpenApiSpec(server, resourceInfos);
90
- const builder = new OpenApiBuilder(typeof config.openapi === 'object' ? deepmerge(spec, config.openapi) : spec);
91
- res.statusCode = 200;
92
- res.setHeader('Content-Type', format === 'json' ? 'application/json' : 'application/yaml');
93
- setCorsHeaders(res);
94
- res.end(format === 'json' ? builder.getSpecAsJson() : builder.getSpecAsYaml());
95
- };
96
- const buildOpenApiSpec = (server, resourceInfos) => {
97
- const builder = OpenApiBuilder.create()
98
- .addOpenApiVersion('3.1.0')
99
- .addInfo({
100
- title: 'My API',
101
- version: '1.0',
102
- description: 'This API has been generated using [Temba](https://github.com/bouwe77/temba).',
103
- })
104
- .addLicense({
105
- name: 'Apache 2.0',
106
- url: 'http://www.apache.org/licenses/LICENSE-2.0.html',
107
- })
108
- // For convenience, we use a generic server URL, relative to where the docs are served from.
109
- .addServer({
110
- url: server,
111
- });
112
- resourceInfos.forEach((resourceInfo) => {
113
- const { resource, pluralResourceLowerCase, pluralResourceUpperCase, singularResourceLowerCase, singularResourceUpperCase, } = resourceInfo;
114
- // GET on the root URL
115
- builder.addPath('/', {
116
- get: {
117
- summary: 'API root',
118
- operationId: 'getApiRoot',
119
- responses: {
120
- '200': {
121
- description: 'The API is working.',
122
- content: {
123
- 'text/html': {
124
- schema: {
125
- type: 'string',
126
- },
127
- },
128
- },
129
- },
130
- },
131
- },
132
- });
133
- // GET, HEAD, POST on a collection
134
- builder.addPath(`/${resource}`, {
135
- get: {
136
- summary: `List all ${pluralResourceLowerCase}.`,
137
- operationId: `getAll${pluralResourceUpperCase}`,
138
- parameters: getPathParameters(resourceInfo),
139
- responses: {
140
- '200': {
141
- description: `List of all ${pluralResourceLowerCase}.`,
142
- content: {
143
- 'application/json': {
144
- schema: {
145
- type: 'array',
146
- items: {
147
- type: 'object',
148
- },
149
- },
150
- },
151
- },
152
- },
153
- },
154
- },
155
- head: {
156
- summary: `Returns HTTP headers for the list of ${pluralResourceLowerCase}.`,
157
- operationId: `getAll${pluralResourceUpperCase}Headers`,
158
- parameters: getPathParameters(resourceInfo),
159
- responses: {
160
- '200': {
161
- description: `HTTP headers for the list of all ${pluralResourceLowerCase}.`,
162
- },
163
- },
164
- },
165
- post: {
166
- summary: `Create a new ${singularResourceLowerCase}.`,
167
- operationId: `create${singularResourceUpperCase}`,
168
- parameters: getPathParameters(resourceInfo),
169
- requestBody: {
170
- content: {
171
- 'application/json': {
172
- schema: {
173
- type: 'object',
174
- },
175
- },
176
- },
177
- },
178
- responses: {
179
- '201': {
180
- description: `The ${singularResourceLowerCase} was created. The created ${singularResourceLowerCase} is returned in the response.`,
181
- content: {
182
- 'application/json': {
183
- schema: {
184
- type: 'object',
185
- },
186
- },
187
- },
188
- },
189
- '400': {
190
- description: 'The request was invalid.',
191
- content: {
192
- 'application/json': {
193
- schema: {
194
- type: 'object',
195
- properties: {
196
- message: {
197
- type: 'string',
198
- },
199
- },
200
- },
201
- examples: {
202
- IdNotAllowedInRequestBody: {
203
- value: {
204
- message: 'An id is not allowed in the request body',
205
- },
206
- },
207
- },
208
- },
209
- },
210
- },
211
- },
212
- },
213
- });
214
- // DELETE on a collection if configured
215
- if (config.allowDeleteCollection) {
216
- builder.addPath(`/${resource}`, {
217
- delete: {
218
- summary: `Delete all ${pluralResourceLowerCase}.`,
219
- operationId: `deleteAll${pluralResourceUpperCase}`,
220
- parameters: getPathParameters(resourceInfo),
221
- responses: {
222
- '204': {
223
- description: `All ${pluralResourceLowerCase} were deleted.`,
224
- },
225
- },
226
- },
227
- });
228
- }
229
- else {
230
- builder.addPath(`/${resource}`, {
231
- delete: {
232
- summary: 'Deleting whole collections is disabled. Enable by setting `allowDeleteCollection` to `true`.',
233
- operationId: `deleteAll${pluralResourceUpperCase}`,
234
- parameters: getPathParameters(resourceInfo),
235
- responses: {
236
- '405': {
237
- description: `Method not allowed`,
238
- },
239
- },
240
- },
241
- });
242
- }
243
- // GET, HEAD, POST, PUT, PATCH, DELETE on an ID
244
- builder.addPath(`/${resource}/{${singularResourceLowerCase}Id}`, {
245
- get: {
246
- summary: `Find ${indefinite(singularResourceLowerCase)} by ID`,
247
- operationId: `get${singularResourceUpperCase}ById`,
248
- parameters: getPathParameters(resourceInfo, true),
249
- responses: {
250
- '200': {
251
- description: `The ${singularResourceLowerCase} with the ${singularResourceLowerCase}Id.`,
252
- content: {
253
- 'application/json': {
254
- schema: {
255
- type: 'object',
256
- },
257
- },
258
- },
259
- },
260
- '404': {
261
- description: `The ${singularResourceLowerCase}Id was not found.`,
262
- content: {
263
- 'application/json': {
264
- schema: {
265
- type: 'object',
266
- properties: {
267
- message: {
268
- type: 'string',
269
- },
270
- },
271
- },
272
- },
273
- },
274
- },
275
- },
276
- },
277
- head: {
278
- summary: `Returns HTTP headers for the ${singularResourceLowerCase} by ID.`,
279
- operationId: `get${singularResourceUpperCase}ByIdHeaders`,
280
- parameters: getPathParameters(resourceInfo, true),
281
- responses: {
282
- '200': {
283
- description: `HTTP headers for the ${singularResourceLowerCase} with the ${singularResourceLowerCase}Id.`,
284
- },
285
- '404': {
286
- description: `The ${singularResourceLowerCase}Id was not found.`,
287
- },
288
- },
289
- },
290
- post: {
291
- summary: `Create a new ${singularResourceLowerCase}, specifying your own id.`,
292
- operationId: `create${singularResourceUpperCase}WithId`,
293
- parameters: getPathParameters(resourceInfo, true),
294
- requestBody: {
295
- content: {
296
- 'application/json': {
297
- schema: {
298
- type: 'object',
299
- },
300
- },
301
- },
302
- },
303
- responses: {
304
- '201': {
305
- description: `The ${singularResourceLowerCase} was created. The created ${singularResourceLowerCase} is returned in the response.`,
306
- content: {
307
- 'application/json': {
308
- schema: {
309
- type: 'object',
310
- },
311
- },
312
- },
313
- },
314
- '400': {
315
- description: 'The request was invalid.',
316
- content: {
317
- 'application/json': {
318
- schema: {
319
- type: 'object',
320
- properties: {
321
- message: {
322
- type: 'string',
323
- },
324
- },
325
- },
326
- examples: {
327
- IdNotAllowedInRequestBody: {
328
- value: {
329
- message: 'An id is not allowed in the request body',
330
- },
331
- },
332
- },
333
- },
334
- },
335
- },
336
- '409': {
337
- description: 'The id already exists.',
338
- content: {
339
- 'application/json': {
340
- schema: {
341
- type: 'object',
342
- properties: {
343
- message: {
344
- type: 'string',
345
- },
346
- },
347
- },
348
- examples: {
349
- IdAlreadyExists: {
350
- value: {
351
- message: "ID '{resourceId}' already exists",
352
- },
353
- },
354
- },
355
- },
356
- },
357
- },
358
- },
359
- },
360
- put: {
361
- summary: `Replace ${indefinite(singularResourceLowerCase)}.`,
362
- operationId: `replace${singularResourceUpperCase}`,
363
- parameters: getPathParameters(resourceInfo, true),
364
- requestBody: {
365
- content: {
366
- 'application/json': {
367
- schema: {
368
- type: 'object',
369
- },
370
- },
371
- },
372
- },
373
- responses: {
374
- '200': {
375
- description: `The ${singularResourceLowerCase} was replaced. The replaced ${singularResourceLowerCase} is returned in the response.`,
376
- content: {
377
- 'application/json': {
378
- schema: {
379
- type: 'object',
380
- },
381
- },
382
- },
383
- },
384
- '404': {
385
- description: `The ${singularResourceLowerCase}Id was not found.`,
386
- content: {
387
- 'application/json': {
388
- schema: {
389
- type: 'object',
390
- properties: {
391
- message: {
392
- type: 'string',
393
- },
394
- },
395
- },
396
- },
397
- },
398
- },
399
- '400': {
400
- description: 'The request was invalid.',
401
- content: {
402
- 'application/json': {
403
- schema: {
404
- type: 'object',
405
- properties: {
406
- message: {
407
- type: 'string',
408
- },
409
- },
410
- },
411
- examples: {
412
- MissingIdInUrl: {
413
- value: {
414
- message: 'An id is required in the URL',
415
- },
416
- },
417
- IdNotAllowedInRequestBody: {
418
- value: {
419
- message: 'An id is not allowed in the request body',
420
- },
421
- },
422
- },
423
- },
424
- },
425
- },
426
- },
427
- },
428
- patch: {
429
- summary: `Update ${indefinite(singularResourceLowerCase)}.`,
430
- operationId: `update${singularResourceUpperCase}`,
431
- parameters: getPathParameters(resourceInfo, true),
432
- requestBody: {
433
- content: {
434
- 'application/json': {
435
- schema: {
436
- type: 'object',
437
- },
438
- },
439
- },
440
- },
441
- responses: {
442
- '200': {
443
- description: `The ${singularResourceLowerCase} was updated. The updated ${singularResourceLowerCase} is returned in the response.`,
444
- content: {
445
- 'application/json': {
446
- schema: {
447
- type: 'object',
448
- },
449
- },
450
- },
451
- },
452
- '404': {
453
- description: `The ${singularResourceLowerCase}Id was not found.`,
454
- content: {
455
- 'application/json': {
456
- schema: {
457
- type: 'object',
458
- properties: {
459
- message: {
460
- type: 'string',
461
- },
462
- },
463
- },
464
- },
465
- },
466
- },
467
- '400': {
468
- description: 'The request was invalid.',
469
- content: {
470
- 'application/json': {
471
- schema: {
472
- type: 'object',
473
- properties: {
474
- message: {
475
- type: 'string',
476
- },
477
- },
478
- },
479
- examples: {
480
- MissingIdInUrl: {
481
- value: {
482
- message: 'An id is required in the URL',
483
- },
484
- },
485
- IdNotAllowedInRequestBody: {
486
- value: {
487
- message: 'An id is not allowed in the request body',
488
- },
489
- },
490
- },
491
- },
492
- },
493
- },
494
- },
495
- },
496
- delete: {
497
- summary: `Delete ${indefinite(singularResourceLowerCase)}.`,
498
- operationId: `delete${singularResourceUpperCase}`,
499
- parameters: getPathParameters(resourceInfo, true),
500
- responses: {
501
- '204': {
502
- description: `The ${singularResourceLowerCase} was deleted.`,
503
- },
504
- },
505
- },
506
- });
507
- });
508
- return builder.getSpec();
509
- };
510
- return openApiHandler;
511
- };
512
- //# sourceMappingURL=openapi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../src/openapi/openapi.ts"],"names":[],"mappings":"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"}