@ruiapp/rapid-core 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.
Files changed (134) hide show
  1. package/dist/bootstrapApplicationConfig.d.ts +3 -0
  2. package/dist/core/eventManager.d.ts +7 -0
  3. package/dist/core/http-types.d.ts +3 -0
  4. package/dist/core/httpHandler.d.ts +18 -0
  5. package/dist/core/plugin.d.ts +6 -0
  6. package/dist/core/pluginManager.d.ts +27 -0
  7. package/dist/core/request.d.ts +15 -0
  8. package/dist/core/response.d.ts +17 -0
  9. package/dist/core/routeContext.d.ts +17 -0
  10. package/dist/core/routesBuilder.d.ts +4 -0
  11. package/dist/core/server.d.ts +83 -0
  12. package/dist/dataAccess/dataAccessor.d.ts +20 -0
  13. package/dist/dataAccess/entityManager.d.ts +6 -0
  14. package/dist/dataAccess/entityMapper.d.ts +3 -0
  15. package/dist/dataAccess/filterHelper.d.ts +2 -0
  16. package/dist/dataAccess/propertyMapper.d.ts +3 -0
  17. package/dist/deno-std/assert/assert.d.ts +2 -0
  18. package/dist/deno-std/assert/assertion_error.d.ts +4 -0
  19. package/dist/deno-std/datetime/to_imf.d.ts +17 -0
  20. package/dist/deno-std/http/cookie.d.ts +134 -0
  21. package/dist/helpers/entityHelpers.d.ts +1 -0
  22. package/dist/helpers/inputHelper.d.ts +1 -0
  23. package/dist/helpers/runCollectionEntityHttpHandler.d.ts +5 -0
  24. package/dist/index.d.ts +7 -0
  25. package/dist/index.js +3590 -0
  26. package/dist/plugins/authManager/httpHandlers/createSession.d.ts +8 -0
  27. package/dist/plugins/authManager/httpHandlers/deleteSession.d.ts +4 -0
  28. package/dist/plugins/authManager/httpHandlers/getMyProfile.d.ts +4 -0
  29. package/dist/plugins/authManager/httpHandlers/index.d.ts +5 -0
  30. package/dist/plugins/authManager/mod.d.ts +16 -0
  31. package/dist/plugins/authManager/models/AccessToken.d.ts +3 -0
  32. package/dist/plugins/authManager/models/index.d.ts +2 -0
  33. package/dist/plugins/authManager/routes/getMyProfile.d.ts +3 -0
  34. package/dist/plugins/authManager/routes/index.d.ts +2 -0
  35. package/dist/plugins/authManager/routes/signin.d.ts +3 -0
  36. package/dist/plugins/authManager/routes/signout.d.ts +3 -0
  37. package/dist/plugins/dataManager/httpHandlers/addEntityRelations.d.ts +4 -0
  38. package/dist/plugins/dataManager/httpHandlers/countCollectionEntities.d.ts +4 -0
  39. package/dist/plugins/dataManager/httpHandlers/createCollectionEntitiesBatch.d.ts +4 -0
  40. package/dist/plugins/dataManager/httpHandlers/createCollectionEntity.d.ts +4 -0
  41. package/dist/plugins/dataManager/httpHandlers/deleteCollectionEntityById.d.ts +4 -0
  42. package/dist/plugins/dataManager/httpHandlers/findCollectionEntities.d.ts +4 -0
  43. package/dist/plugins/dataManager/httpHandlers/findCollectionEntityById.d.ts +4 -0
  44. package/dist/plugins/dataManager/httpHandlers/queryDatabase.d.ts +4 -0
  45. package/dist/plugins/dataManager/httpHandlers/removeEntityRelations.d.ts +4 -0
  46. package/dist/plugins/dataManager/httpHandlers/updateCollectionEntityById.d.ts +4 -0
  47. package/dist/plugins/dataManager/mod.d.ts +16 -0
  48. package/dist/plugins/metaManager/httpHandlers/getMetaModelDetail.d.ts +4 -0
  49. package/dist/plugins/metaManager/httpHandlers/listMetaModels.d.ts +4 -0
  50. package/dist/plugins/metaManager/mod.d.ts +15 -0
  51. package/dist/plugins/routeManager/httpHandlers/httpProxy.d.ts +4 -0
  52. package/dist/plugins/routeManager/httpHandlers/listMetaRoutes.d.ts +4 -0
  53. package/dist/plugins/routeManager/mod.d.ts +15 -0
  54. package/dist/plugins/webhooks/mod.d.ts +24 -0
  55. package/dist/plugins/webhooks/pluginConfig.d.ts +48 -0
  56. package/dist/polyfill.d.ts +1 -0
  57. package/dist/proxy/mod.d.ts +13 -0
  58. package/dist/proxy/types.d.ts +17 -0
  59. package/dist/queryBuilder/index.d.ts +1 -0
  60. package/dist/queryBuilder/queryBuilder.d.ts +34 -0
  61. package/dist/server.d.ts +31 -0
  62. package/dist/types.d.ts +327 -0
  63. package/dist/utilities/httpUtility.d.ts +1 -0
  64. package/dist/utilities/jwtUtility.d.ts +8 -0
  65. package/dist/utilities/rapidUtility.d.ts +2 -0
  66. package/dist/utilities/typeUtility.d.ts +3 -0
  67. package/package.json +29 -0
  68. package/rollup.config.js +20 -0
  69. package/src/bootstrapApplicationConfig.ts +524 -0
  70. package/src/core/eventManager.ts +21 -0
  71. package/src/core/http-types.ts +4 -0
  72. package/src/core/httpHandler.ts +29 -0
  73. package/src/core/plugin.ts +13 -0
  74. package/src/core/pluginManager.ts +143 -0
  75. package/src/core/request.ts +23 -0
  76. package/src/core/response.ts +77 -0
  77. package/src/core/routeContext.ts +38 -0
  78. package/src/core/routesBuilder.ts +86 -0
  79. package/src/core/server.ts +144 -0
  80. package/src/dataAccess/dataAccessor.ts +110 -0
  81. package/src/dataAccess/entityManager.ts +651 -0
  82. package/src/dataAccess/entityMapper.ts +74 -0
  83. package/src/dataAccess/filterHelper.ts +47 -0
  84. package/src/dataAccess/propertyMapper.ts +27 -0
  85. package/src/deno-std/assert/assert.ts +9 -0
  86. package/src/deno-std/assert/assertion_error.ts +7 -0
  87. package/src/deno-std/datetime/to_imf.ts +47 -0
  88. package/src/deno-std/http/cookie.ts +398 -0
  89. package/src/helpers/entityHelpers.ts +24 -0
  90. package/src/helpers/inputHelper.ts +11 -0
  91. package/src/helpers/runCollectionEntityHttpHandler.ts +34 -0
  92. package/src/index.ts +12 -0
  93. package/src/plugins/authManager/httpHandlers/createSession.ts +57 -0
  94. package/src/plugins/authManager/httpHandlers/deleteSession.ts +22 -0
  95. package/src/plugins/authManager/httpHandlers/getMyProfile.ts +43 -0
  96. package/src/plugins/authManager/httpHandlers/index.ts +10 -0
  97. package/src/plugins/authManager/mod.ts +56 -0
  98. package/src/plugins/authManager/models/AccessToken.ts +56 -0
  99. package/src/plugins/authManager/models/index.ts +5 -0
  100. package/src/plugins/authManager/routes/getMyProfile.ts +15 -0
  101. package/src/plugins/authManager/routes/index.ts +9 -0
  102. package/src/plugins/authManager/routes/signin.ts +15 -0
  103. package/src/plugins/authManager/routes/signout.ts +15 -0
  104. package/src/plugins/dataManager/httpHandlers/addEntityRelations.ts +76 -0
  105. package/src/plugins/dataManager/httpHandlers/countCollectionEntities.ts +22 -0
  106. package/src/plugins/dataManager/httpHandlers/createCollectionEntitiesBatch.ts +57 -0
  107. package/src/plugins/dataManager/httpHandlers/createCollectionEntity.ts +43 -0
  108. package/src/plugins/dataManager/httpHandlers/deleteCollectionEntityById.ts +38 -0
  109. package/src/plugins/dataManager/httpHandlers/findCollectionEntities.ts +35 -0
  110. package/src/plugins/dataManager/httpHandlers/findCollectionEntityById.ts +30 -0
  111. package/src/plugins/dataManager/httpHandlers/queryDatabase.ts +29 -0
  112. package/src/plugins/dataManager/httpHandlers/removeEntityRelations.ts +72 -0
  113. package/src/plugins/dataManager/httpHandlers/updateCollectionEntityById.ts +53 -0
  114. package/src/plugins/dataManager/mod.ts +150 -0
  115. package/src/plugins/metaManager/httpHandlers/getMetaModelDetail.ts +14 -0
  116. package/src/plugins/metaManager/httpHandlers/listMetaModels.ts +13 -0
  117. package/src/plugins/metaManager/mod.ts +419 -0
  118. package/src/plugins/routeManager/httpHandlers/httpProxy.ts +15 -0
  119. package/src/plugins/routeManager/httpHandlers/listMetaRoutes.ts +13 -0
  120. package/src/plugins/routeManager/mod.ts +97 -0
  121. package/src/plugins/webhooks/mod.ts +144 -0
  122. package/src/plugins/webhooks/pluginConfig.ts +74 -0
  123. package/src/polyfill.ts +5 -0
  124. package/src/proxy/mod.ts +47 -0
  125. package/src/proxy/types.ts +21 -0
  126. package/src/queryBuilder/index.ts +1 -0
  127. package/src/queryBuilder/queryBuilder.ts +424 -0
  128. package/src/server.ts +192 -0
  129. package/src/types.ts +438 -0
  130. package/src/utilities/httpUtility.ts +23 -0
  131. package/src/utilities/jwtUtility.ts +16 -0
  132. package/src/utilities/rapidUtility.ts +5 -0
  133. package/src/utilities/typeUtility.ts +11 -0
  134. package/tsconfig.json +19 -0
@@ -0,0 +1,524 @@
1
+ import { RpdApplicationConfig } from "./types";
2
+
3
+ export default {
4
+ code: "default",
5
+ name: "default",
6
+ models: [
7
+ {
8
+ maintainedBy: "metaManager",
9
+ namespace: "meta",
10
+ name: "model",
11
+ singularCode: "model",
12
+ pluralCode: "models",
13
+ schema: "public",
14
+ tableName: "meta_models",
15
+ properties: [
16
+ {
17
+ name: "id",
18
+ code: "id",
19
+ columnName: "id",
20
+ type: "integer",
21
+ required: true,
22
+ autoIncrement: true,
23
+ },
24
+ {
25
+ name: "name",
26
+ code: "name",
27
+ columnName: "name",
28
+ type: "text",
29
+ required: true,
30
+ },
31
+ {
32
+ name: "description",
33
+ code: "description",
34
+ columnName: "description",
35
+ type: "text",
36
+ required: false,
37
+ },
38
+ {
39
+ name: "singular code",
40
+ code: "singularCode",
41
+ columnName: "singular_code",
42
+ type: "text",
43
+ required: true,
44
+ },
45
+ {
46
+ name: "plural code",
47
+ code: "pluralCode",
48
+ columnName: "plural_code",
49
+ type: "text",
50
+ required: true,
51
+ },
52
+ {
53
+ name: "schema",
54
+ code: "schema",
55
+ columnName: "schema",
56
+ type: "text",
57
+ required: false,
58
+ },
59
+ {
60
+ name: "table name",
61
+ code: "tableName",
62
+ columnName: "table_name",
63
+ type: "text",
64
+ required: true,
65
+ },
66
+ {
67
+ name: "namespace",
68
+ code: "namespace",
69
+ columnName: "namespace",
70
+ type: "text",
71
+ required: true,
72
+ },
73
+ {
74
+ name: "properties",
75
+ code: "properties",
76
+ type: "relation[]",
77
+ relation: "many",
78
+ targetSingularCode: "property",
79
+ selfIdColumnName: "model_id",
80
+ },
81
+ ],
82
+ },
83
+ {
84
+ maintainedBy: "metaManager",
85
+ namespace: "meta",
86
+ name: "property",
87
+ singularCode: "property",
88
+ pluralCode: "properties",
89
+ schema: "public",
90
+ tableName: "meta_properties",
91
+ properties: [
92
+ {
93
+ name: "id",
94
+ code: "id",
95
+ columnName: "id",
96
+ type: "integer",
97
+ required: true,
98
+ autoIncrement: true,
99
+ },
100
+ {
101
+ name: "model",
102
+ code: "model",
103
+ type: "relation",
104
+ required: true,
105
+ relation: "one",
106
+ targetSingularCode: "model",
107
+ targetIdColumnName: "model_id",
108
+ },
109
+ {
110
+ name: "name",
111
+ code: "name",
112
+ columnName: "name",
113
+ type: "text",
114
+ required: true,
115
+ },
116
+ {
117
+ name: "code",
118
+ code: "code",
119
+ columnName: "code",
120
+ type: "text",
121
+ required: true,
122
+ },
123
+ {
124
+ name: "description",
125
+ code: "description",
126
+ columnName: "description",
127
+ type: "text",
128
+ required: false,
129
+ },
130
+ {
131
+ name: "column name",
132
+ code: "columnName",
133
+ columnName: "column_name",
134
+ type: "text",
135
+ required: false,
136
+ },
137
+ {
138
+ name: "type",
139
+ code: "type",
140
+ columnName: "type",
141
+ type: "text",
142
+ required: true,
143
+ },
144
+ {
145
+ name: "required",
146
+ code: "required",
147
+ columnName: "required",
148
+ type: "boolean",
149
+ required: true,
150
+ defaultValue: "false",
151
+ },
152
+ {
153
+ name: "default value",
154
+ code: "defaultValue",
155
+ columnName: "default_value",
156
+ type: "text",
157
+ required: false,
158
+ },
159
+ {
160
+ name: "config",
161
+ code: "config",
162
+ columnName: "config",
163
+ type: "json",
164
+ required: false,
165
+ },
166
+ {
167
+ name: "auto increment",
168
+ code: "autoIncrement",
169
+ columnName: "auto_increment",
170
+ type: "boolean",
171
+ required: true,
172
+ defaultValue: "false",
173
+ },
174
+ {
175
+ name: "min length",
176
+ code: "minLength",
177
+ columnName: "min_length",
178
+ type: "integer",
179
+ required: false,
180
+ },
181
+ {
182
+ name: "max length",
183
+ code: "maxLength",
184
+ columnName: "max_length",
185
+ type: "integer",
186
+ required: false,
187
+ },
188
+ {
189
+ name: "relation",
190
+ code: "relation",
191
+ columnName: "relation",
192
+ type: "text",
193
+ required: false,
194
+ },
195
+ {
196
+ name: "target singular code",
197
+ code: "targetSingularCode",
198
+ columnName: "target_singular_code",
199
+ type: "text",
200
+ required: false,
201
+ },
202
+ {
203
+ name: "target id column name",
204
+ code: "targetIdColumnName",
205
+ columnName: "target_id_column_name",
206
+ type: "text",
207
+ required: false,
208
+ },
209
+ {
210
+ name: "self id column name",
211
+ code: "selfIdColumnName",
212
+ columnName: "self_id_column_name",
213
+ type: "text",
214
+ required: false,
215
+ },
216
+ {
217
+ name: "link schema",
218
+ code: "linkSchema",
219
+ columnName: "link_schema",
220
+ type: "text",
221
+ required: false,
222
+ },
223
+ {
224
+ name: "link table name",
225
+ code: "linkTableName",
226
+ columnName: "link_table_name",
227
+ type: "text",
228
+ required: false,
229
+ },
230
+ {
231
+ name: "data dictionary",
232
+ code: "dataDictionary",
233
+ columnName: "data_dictionary",
234
+ type: "text",
235
+ required: false,
236
+ },
237
+ ],
238
+ },
239
+ {
240
+ maintainedBy: "metaManager",
241
+ namespace: "meta",
242
+ name: "data dictionary",
243
+ singularCode: "data_dictionary",
244
+ pluralCode: "data_dictionaries",
245
+ schema: "public",
246
+ tableName: "meta_data_dictionaries",
247
+ properties: [
248
+ {
249
+ name: "id",
250
+ code: "id",
251
+ columnName: "id",
252
+ type: "integer",
253
+ required: true,
254
+ autoIncrement: true,
255
+ },
256
+ {
257
+ name: "code",
258
+ code: "code",
259
+ columnName: "code",
260
+ type: "text",
261
+ required: true,
262
+ },
263
+ {
264
+ name: "name",
265
+ code: "name",
266
+ columnName: "name",
267
+ type: "text",
268
+ required: true,
269
+ },
270
+ {
271
+ name: "valueType",
272
+ code: "valueType",
273
+ columnName: "value_type",
274
+ type: "text",
275
+ required: true,
276
+ },
277
+ {
278
+ name: "level",
279
+ code: "level",
280
+ columnName: "level",
281
+ type: "text",
282
+ required: false,
283
+ defaultValue: "'app'"
284
+ },
285
+ {
286
+ name: "description",
287
+ code: "description",
288
+ columnName: "description",
289
+ type: "text",
290
+ required: false,
291
+ },
292
+ {
293
+ name: "source",
294
+ code: "source",
295
+ columnName: "source",
296
+ type: "text",
297
+ required: false,
298
+ },
299
+ {
300
+ name: "externalId",
301
+ code: "externalId",
302
+ columnName: "external_id",
303
+ type: "text",
304
+ required: false,
305
+ },
306
+ {
307
+ name: "externalData",
308
+ code: "externalData",
309
+ columnName: "external_data",
310
+ type: "json",
311
+ required: false,
312
+ },
313
+ {
314
+ name: "state",
315
+ code: "state",
316
+ columnName: "state",
317
+ type: "text",
318
+ required: false,
319
+ },
320
+ {
321
+ name: "entries",
322
+ code: "entries",
323
+ type: "relation[]",
324
+ relation: "many",
325
+ targetSingularCode: "data_dictionary_entry",
326
+ selfIdColumnName: "dictionary_id",
327
+ },
328
+ ]
329
+ },
330
+ {
331
+ maintainedBy: "metaManager",
332
+ namespace: "meta",
333
+ name: "data dictionary entry",
334
+ singularCode: "data_dictionary_entry",
335
+ pluralCode: "data_dictionary_entries",
336
+ schema: "public",
337
+ tableName: "meta_data_dictionary_entries",
338
+ properties: [
339
+ {
340
+ name: "id",
341
+ code: "id",
342
+ columnName: "id",
343
+ type: "integer",
344
+ required: true,
345
+ autoIncrement: true,
346
+ },
347
+ {
348
+ name: "dictionary",
349
+ code: "dictionary",
350
+ type: "relation",
351
+ relation: "one",
352
+ targetSingularCode: "data_dictionary",
353
+ targetIdColumnName: "dictionary_id",
354
+ },
355
+ {
356
+ name: "order number",
357
+ code: "orderNum",
358
+ columnName: "order_num",
359
+ type: "integer",
360
+ required: true,
361
+ defaultValue: 0,
362
+ },
363
+ {
364
+ name: "name",
365
+ code: "name",
366
+ columnName: "name",
367
+ type: "text",
368
+ required: true,
369
+ },
370
+ {
371
+ name: "value",
372
+ code: "value",
373
+ columnName: "value",
374
+ type: "text",
375
+ required: true,
376
+ },
377
+ {
378
+ name: "color",
379
+ code: "color",
380
+ columnName: "color",
381
+ type: "text",
382
+ required: false,
383
+ },
384
+ {
385
+ name: "icon",
386
+ code: "icon",
387
+ columnName: "icon",
388
+ type: "text",
389
+ required: false,
390
+ },
391
+ {
392
+ name: "description",
393
+ code: "description",
394
+ columnName: "description",
395
+ type: "text",
396
+ required: false,
397
+ },
398
+ {
399
+ name: "disabled",
400
+ code: "disabled",
401
+ columnName: "disabled",
402
+ type: "boolean",
403
+ required: false,
404
+ },
405
+ ]
406
+ },
407
+ {
408
+ maintainedBy: "dataManager",
409
+ namespace: "meta",
410
+ name: "routes",
411
+ singularCode: "route",
412
+ pluralCode: "routes",
413
+ schema: "public",
414
+ tableName: "meta_routes",
415
+ properties: [
416
+ {
417
+ name: "id",
418
+ code: "id",
419
+ columnName: "id",
420
+ type: "integer",
421
+ required: true,
422
+ autoIncrement: true,
423
+ },
424
+ {
425
+ name: "namespace",
426
+ code: "namespace",
427
+ columnName: "namespace",
428
+ type: "text",
429
+ required: true,
430
+ },
431
+ {
432
+ name: "code",
433
+ code: "code",
434
+ columnName: "code",
435
+ type: "text",
436
+ required: true,
437
+ },
438
+ {
439
+ name: "name",
440
+ code: "name",
441
+ columnName: "name",
442
+ type: "text",
443
+ required: true,
444
+ },
445
+ {
446
+ name: "description",
447
+ code: "description",
448
+ columnName: "description",
449
+ type: "text",
450
+ required: false,
451
+ },
452
+ {
453
+ name: "type",
454
+ code: "type",
455
+ columnName: "type",
456
+ type: "text",
457
+ required: true,
458
+ },
459
+ {
460
+ name: "method",
461
+ code: "method",
462
+ columnName: "method",
463
+ type: "text",
464
+ required: true,
465
+ },
466
+ {
467
+ name: "endpoint",
468
+ code: "endpoint",
469
+ columnName: "endpoint",
470
+ type: "text",
471
+ required: true,
472
+ },
473
+ {
474
+ name: "handlers",
475
+ code: "handlers",
476
+ columnName: "handlers",
477
+ type: "json",
478
+ required: true,
479
+ },
480
+ ],
481
+ },
482
+ ],
483
+ routes: [
484
+ {
485
+ namespace: "meta",
486
+ name: "meta.model.list",
487
+ code: "meta.model.list",
488
+ type: "RESTful",
489
+ method: "get",
490
+ endpoint: "/meta/models",
491
+ handlers: [
492
+ {
493
+ code: "listMetaModels",
494
+ },
495
+ ],
496
+ },
497
+ {
498
+ namespace: "meta",
499
+ name: "meta.model.getDetail",
500
+ code: "meta.model.getDetail",
501
+ type: "RESTful",
502
+ method: "get",
503
+ endpoint: "/meta/models/:namespace/:singularCode",
504
+ handlers: [
505
+ {
506
+ code: "getMetaModelDetail",
507
+ },
508
+ ],
509
+ },
510
+ {
511
+ namespace: "meta",
512
+ name: "meta.route.list",
513
+ code: "meta.route.list",
514
+ type: "RESTful",
515
+ method: "get",
516
+ endpoint: "/meta/routes",
517
+ handlers: [
518
+ {
519
+ code: "listMetaRoutes",
520
+ },
521
+ ],
522
+ },
523
+ ],
524
+ } as RpdApplicationConfig;
@@ -0,0 +1,21 @@
1
+ import { EventEmitter } from "events";
2
+ import { RpdServerEventTypes as EventTypes } from "~/types";
3
+
4
+ export default class EventManager {
5
+ #eventEmitter: EventEmitter;
6
+
7
+ constructor() {
8
+ this.#eventEmitter = new EventEmitter();
9
+ }
10
+
11
+ on<K extends keyof EventTypes>(
12
+ eventName: K,
13
+ listener: (...args: EventTypes[K]) => void,
14
+ ) {
15
+ this.#eventEmitter.on(eventName, listener);
16
+ }
17
+
18
+ emit<K extends keyof EventTypes>(eventName: K, ...args: EventTypes[K]) {
19
+ return this.#eventEmitter.emit(eventName, ...args);
20
+ }
21
+ }
@@ -0,0 +1,4 @@
1
+ export type HttpStatus = number;
2
+ export type ResponseData = string | ArrayBuffer | ReadableStream;
3
+
4
+ export type HeadersDefinition = [string, string][] | Record<string, string>;
@@ -0,0 +1,29 @@
1
+ import { IPluginInstance, RpdApplicationConfig } from "~/types";
2
+ import { IRpdServer } from "./server";
3
+ import { Next, RouteContext } from "./routeContext";
4
+
5
+ export interface HttpHandlerContext {
6
+ routerContext: RouteContext;
7
+ next: Next;
8
+ server: IRpdServer;
9
+ applicationConfig: RpdApplicationConfig;
10
+ input?: any;
11
+ output?: any;
12
+ status?: Response["status"];
13
+ }
14
+
15
+ export type PluginHttpHandler = (
16
+ plugin: IPluginInstance,
17
+ ctx: HttpHandlerContext,
18
+ options: any,
19
+ ) => void | Promise<void>;
20
+
21
+ export type HttpRequestHandler = (
22
+ ctx: HttpHandlerContext,
23
+ options: any,
24
+ ) => void | Promise<void>;
25
+
26
+ export interface IPluginHttpHandler {
27
+ code: string;
28
+ handler: PluginHttpHandler;
29
+ }
@@ -0,0 +1,13 @@
1
+ import { IPluginInstance } from "~/types";
2
+
3
+ export default class Plugin implements IPluginInstance {
4
+ #name: string;
5
+
6
+ constructor(name: string) {
7
+ this.#name = name;
8
+ }
9
+
10
+ getName() {
11
+ return this.#name;
12
+ }
13
+ }