@furystack/rest-service 10.0.22 → 10.0.24

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 (66) hide show
  1. package/esm/api-manager.d.ts +47 -1
  2. package/esm/api-manager.d.ts.map +1 -1
  3. package/esm/api-manager.js +19 -5
  4. package/esm/api-manager.js.map +1 -1
  5. package/esm/authenticate.d.ts.map +1 -1
  6. package/esm/authenticate.js +3 -1
  7. package/esm/authenticate.js.map +1 -1
  8. package/esm/endpoint-generators/create-get-schema-action.d.ts +16 -0
  9. package/esm/endpoint-generators/create-get-schema-action.d.ts.map +1 -0
  10. package/esm/endpoint-generators/create-get-schema-action.js +21 -0
  11. package/esm/endpoint-generators/create-get-schema-action.js.map +1 -0
  12. package/esm/endpoint-generators/create-get-swagger-json-action.d.ts +14 -0
  13. package/esm/endpoint-generators/create-get-swagger-json-action.d.ts.map +1 -0
  14. package/esm/endpoint-generators/create-get-swagger-json-action.js +17 -0
  15. package/esm/endpoint-generators/create-get-swagger-json-action.js.map +1 -0
  16. package/esm/endpoint-generators/index.d.ts +1 -0
  17. package/esm/endpoint-generators/index.d.ts.map +1 -1
  18. package/esm/endpoint-generators/index.js +1 -0
  19. package/esm/endpoint-generators/index.js.map +1 -1
  20. package/esm/endpoint-generators/with-schema-and-swagger-action.d.ts +21 -0
  21. package/esm/endpoint-generators/with-schema-and-swagger-action.d.ts.map +1 -0
  22. package/esm/endpoint-generators/with-schema-and-swagger-action.js +2 -0
  23. package/esm/endpoint-generators/with-schema-and-swagger-action.js.map +1 -0
  24. package/esm/get-schema-from-api.d.ts +10 -0
  25. package/esm/get-schema-from-api.d.ts.map +1 -0
  26. package/esm/get-schema-from-api.js +55 -0
  27. package/esm/get-schema-from-api.js.map +1 -0
  28. package/esm/get-schema-from-api.spec.d.ts +2 -0
  29. package/esm/get-schema-from-api.spec.d.ts.map +1 -0
  30. package/esm/get-schema-from-api.spec.js +68 -0
  31. package/esm/get-schema-from-api.spec.js.map +1 -0
  32. package/esm/helpers.d.ts +4 -1
  33. package/esm/helpers.d.ts.map +1 -1
  34. package/esm/index.d.ts +10 -9
  35. package/esm/index.d.ts.map +1 -1
  36. package/esm/index.js +10 -9
  37. package/esm/index.js.map +1 -1
  38. package/esm/swagger/generate-swagger-json.d.ts +14 -0
  39. package/esm/swagger/generate-swagger-json.d.ts.map +1 -0
  40. package/esm/swagger/generate-swagger-json.js +106 -0
  41. package/esm/swagger/generate-swagger-json.js.map +1 -0
  42. package/esm/swagger/generate-swagger-json.spec.d.ts +2 -0
  43. package/esm/swagger/generate-swagger-json.spec.d.ts.map +1 -0
  44. package/esm/swagger/generate-swagger-json.spec.js +204 -0
  45. package/esm/swagger/generate-swagger-json.spec.js.map +1 -0
  46. package/esm/validate.d.ts.map +1 -1
  47. package/esm/validate.integration.spec.js +154 -2
  48. package/esm/validate.integration.spec.js.map +1 -1
  49. package/esm/validate.integration.spec.schema.json +0 -2
  50. package/esm/validate.js +4 -1
  51. package/esm/validate.js.map +1 -1
  52. package/package.json +9 -9
  53. package/src/api-manager.ts +68 -5
  54. package/src/authenticate.ts +5 -1
  55. package/src/endpoint-generators/create-get-schema-action.ts +29 -0
  56. package/src/endpoint-generators/create-get-swagger-json-action.ts +26 -0
  57. package/src/endpoint-generators/index.ts +1 -0
  58. package/src/endpoint-generators/with-schema-and-swagger-action.ts +11 -0
  59. package/src/get-schema-from-api.spec.ts +73 -0
  60. package/src/get-schema-from-api.ts +74 -0
  61. package/src/index.ts +10 -9
  62. package/src/swagger/generate-swagger-json.spec.ts +239 -0
  63. package/src/swagger/generate-swagger-json.ts +123 -0
  64. package/src/validate.integration.spec.schema.json +0 -2
  65. package/src/validate.integration.spec.ts +173 -2
  66. package/src/validate.ts +6 -1
@@ -13,13 +13,56 @@ export type RestApiImplementation<T extends RestApi> = {
13
13
  };
14
14
  };
15
15
  export interface ImplementApiOptions<T extends RestApi> {
16
+ /**
17
+ * The structure of the implemented API.
18
+ */
16
19
  api: RestApiImplementation<T>;
20
+ /**
21
+ * The Injector instance to use for dependency injection in the API actions.
22
+ */
17
23
  injector: Injector;
24
+ /**
25
+ * The host name for the API Server. If not provided, the default host (ServerManager.DEFAULT_HOST) will be used.
26
+ */
18
27
  hostName?: string;
28
+ /**
29
+ * The root path for the API. This will be prepended to all API paths.
30
+ */
19
31
  root: string;
32
+ /**
33
+ * The port on which the API server will listen.
34
+ */
20
35
  port: number;
36
+ /**
37
+ * CORS options to configure Cross-Origin Resource Sharing for the API.
38
+ */
21
39
  cors?: CorsOptions;
40
+ /**
41
+ * An optional function to deserialize query parameters from the URL.
42
+ * This function should take a query string (e.g., "?key=value") and return an object with the parsed parameters.
43
+ * If not provided, the default deserialization will be used.
44
+ */
22
45
  deserializeQueryParams?: (param: string) => any;
46
+ /**
47
+ * Adds an additional 'GET /schema' endpoint that returns the schema definitions of the API.
48
+ * Also adds a 'GET /swagger.json' endpoint that returns the API schema in OpenAPI 3.0 (Swagger) format.
49
+ */
50
+ enableGetSchema?: boolean;
51
+ /**
52
+ * Optional name for the API, used in the generated schema.
53
+ * This can be useful for documentation or identification purposes.
54
+ */
55
+ name?: string;
56
+ /**
57
+ * Optional description for the API, used in the generated schema.
58
+ * This can provide additional context or information about the API's purpose.
59
+ */
60
+ description?: string;
61
+ /**
62
+ * Optional version for the API, used in the generated schema.
63
+ * This can help in versioning the API and tracking changes over time.
64
+ */
65
+ version?: string;
23
66
  }
24
67
  export type NewCompiledApiEntry = {
25
68
  method: Method;
@@ -45,7 +88,10 @@ export declare class ApiManager implements Disposable {
45
88
  [Symbol.dispose](): void;
46
89
  private getSuportedMethods;
47
90
  private compileApi;
48
- addApi<T extends RestApi>({ api, hostName, port, root, cors, injector, deserializeQueryParams, }: ImplementApiOptions<T>): Promise<void>;
91
+ addApi<T extends RestApi>({ api, hostName, port, root, cors, injector, deserializeQueryParams, enableGetSchema, name, description, version, }: ImplementApiOptions<T>): Promise<{
92
+ shouldExec: (msg: OnRequest) => boolean;
93
+ onRequest: (msg: OnRequest) => Promise<void>;
94
+ }>;
49
95
  shouldExecRequest(options: {
50
96
  method?: Method;
51
97
  url?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"api-manager.d.ts","sourceRoot":"","sources":["../src/api-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAMnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,iCAAiC,CAAA;AAExC,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,OAAO,IAAI;KACpD,OAAO,IAAI,MAAM,CAAC,GAAG;SACnB,IAAI,IAAI,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS;YAAE,MAAM,EAAE,OAAO,CAAA;SAAE,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;KACnH;CACF,CAAA;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,OAAO;IACpD,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAA;IAC7B,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAA;CAChD;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;IAClE,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,mBAAmB,EAAE;CACtC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG;IACzC,WAAW,EAAE,cAAc,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpE,CAAA;AAED,qBACa,UAAW,YAAW,UAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoC;IAElD,CAAC,MAAM,CAAC,OAAO,CAAC;IAIvB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,UAAU;IAgBL,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,EACrC,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,sBAAsB,GACvB,EAAE,mBAAmB,CAAC,CAAC,CAAC;IA6BlB,iBAAiB,CAAC,OAAO,EAAE;QAChC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;QACnB,gBAAgB,EAAE,MAAM,EAAE,CAAA;KAC3B,GAAG,OAAO;IASX,OAAO,CAAC,qBAAqB;YAiBf,aAAa;YAkDb,SAAS;IA6BvB,iBACyB,aAAa,CAAe;CACtD"}
1
+ {"version":3,"file":"api-manager.d.ts","sourceRoot":"","sources":["../src/api-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAQnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,qBAAqB,CAAA;AAE/D,OAAO,iCAAiC,CAAA;AAExC,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,OAAO,IAAI;KACpD,OAAO,IAAI,MAAM,CAAC,GAAG;SACnB,IAAI,IAAI,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS;YAAE,MAAM,EAAE,OAAO,CAAA;SAAE,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;KACnH;CACF,CAAA;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,OAAO;IACpD;;OAEG;IACH,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAA;IAC7B;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAA;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAA;IAC/C;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IAEzB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;IAClE,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;KAC1B,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,mBAAmB,EAAE;CACtC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG;IACzC,WAAW,EAAE,cAAc,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpE,CAAA;AAED,qBACa,UAAW,YAAW,UAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoC;IAElD,CAAC,MAAM,CAAC,OAAO,CAAC;IAIvB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,UAAU;IAgBL,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,EACrC,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,sBAAsB,EACtB,eAAe,EACf,IAAI,EACJ,WAAW,EACX,OAAO,GACR,EAAE,mBAAmB,CAAC,CAAC,CAAC;;;;IA0ClB,iBAAiB,CAAC,OAAO,EAAE;QAChC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;QACnB,gBAAgB,EAAE,MAAM,EAAE,CAAA;KAC3B,GAAG,OAAO;IASX,OAAO,CAAC,qBAAqB;YAiBf,aAAa;YAkDb,SAAS;IA6BvB,iBACyB,aAAa,CAAe;CACtD"}
@@ -15,6 +15,8 @@ import { match } from 'path-to-regexp';
15
15
  import { ErrorAction } from './actions/error-action.js';
16
16
  import { NotFoundAction } from './actions/not-found-action.js';
17
17
  import { addCorsHeaders } from './add-cors-header.js';
18
+ import { CreateGetSchemaAction } from './endpoint-generators/create-get-schema-action.js';
19
+ import { CreateGetSwaggerJsonAction } from './endpoint-generators/create-get-swagger-json-action.js';
18
20
  import { HttpUserContext } from './http-user-context.js';
19
21
  import { readPostBody } from './read-post-body.js';
20
22
  import { ServerManager } from './server-manager.js';
@@ -41,12 +43,22 @@ let ApiManager = class ApiManager {
41
43
  });
42
44
  return compiledApi;
43
45
  }
44
- async addApi({ api, hostName, port, root, cors, injector, deserializeQueryParams, }) {
45
- const supportedMethods = this.getSuportedMethods(api);
46
+ async addApi({ api, hostName, port, root, cors, injector, deserializeQueryParams, enableGetSchema, name, description, version, }) {
47
+ const extendedApi = enableGetSchema
48
+ ? {
49
+ ...api,
50
+ GET: {
51
+ ...api.GET,
52
+ '/schema': CreateGetSchemaAction(api, name, description, version),
53
+ '/swagger.json': CreateGetSwaggerJsonAction(api, name, description, version),
54
+ },
55
+ }
56
+ : api;
57
+ const supportedMethods = this.getSuportedMethods(extendedApi);
46
58
  const rootApiPath = PathHelper.normalize(root);
47
59
  const server = await this.serverManager.getOrCreate({ hostName, port });
48
- const compiledApi = this.compileApi(api, root);
49
- server.apis.push({
60
+ const compiledApi = this.compileApi(extendedApi, root);
61
+ const serverApi = {
50
62
  shouldExec: (msg) => this.shouldExecRequest({
51
63
  ...msg,
52
64
  method: msg.req.method?.toUpperCase(),
@@ -65,7 +77,9 @@ let ApiManager = class ApiManager {
65
77
  hostName,
66
78
  deserializeQueryParams,
67
79
  }),
68
- });
80
+ };
81
+ server.apis.push(serverApi);
82
+ return serverApi;
69
83
  }
70
84
  shouldExecRequest(options) {
71
85
  return options.method &&
@@ -1 +1 @@
1
- {"version":3,"file":"api-manager.js","sourceRoot":"","sources":["../src/api-manager.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAEzD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,iCAAiC,CAAA;AAyCjC,IAAM,UAAU,GAAhB,MAAM,UAAU;IACJ,IAAI,GAAG,IAAI,GAAG,EAA0B,CAAA;IAElD,CAAC,MAAM,CAAC,OAAO,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;IACnB,CAAC;IAEO,kBAAkB,CAAC,GAAmC;QAC5D,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAa,CAAA;IACrC,CAAC;IAEO,UAAU,CAAoB,GAA6B,EAAE,IAAY;QAC/E,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;QAErD,MAAM,WAAW,GAAmB,EAAE,CAAA;QACtC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE;YAC1C,WAAW,CAAC,MAAM,CAAC,GAAG;gBACpB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAA0B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE;oBACxE,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAA;oBAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAA;oBAC/D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAA4B,EAAE,CAAA;gBAC5E,CAAC,CAAC;aACH,CAAA;QACH,CAAC,CAAC,CAAA;QACF,OAAO,WAAW,CAAA;IACpB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAoB,EACrC,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,sBAAsB,GACC;QACvB,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;QACrD,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QACvE,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACf,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAClB,IAAI,CAAC,iBAAiB,CAAC;gBACrB,GAAG,GAAG;gBACN,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAY;gBAC/C,WAAW;gBACX,gBAAgB;gBAChB,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;aAC7C,CAAC;YACJ,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACjB,IAAI,CAAC,SAAS,CAAC;gBACb,GAAG,GAAG;gBACN,WAAW;gBACX,WAAW;gBACX,IAAI;gBACJ,gBAAgB;gBAChB,IAAI;gBACJ,QAAQ;gBACR,QAAQ;gBACR,sBAAsB;aACvB,CAAC;SACL,CAAC,CAAA;IACJ,CAAC;IAEM,iBAAiB,CAAC,OAKxB;QACC,OAAO,OAAO,CAAC,MAAM;YACnB,OAAO,CAAC,GAAG;YACX,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;YACnF,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;YACjE,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,KAAK,CAAA;IACX,CAAC;IAEO,qBAAqB,CAAC,gBAAgC,EAAE,OAAY,EAAE,MAAc;QAC1F,IAAI,cAAuB,CAAA;QAC3B,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACtD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC9C,IAAI,MAAM,EAAE,CAAC;gBACX,cAAc,GAAG,MAAM,CAAC,MAAM,CAAA;YAChC,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;QACF,OAAO,CACL,MAAM,IAAI;YACR,GAAG,MAAM;YACT,MAAM,EAAE,cAAc;SACvB,CACF,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,EAC1B,QAAQ,EACR,GAAG,EACH,GAAG,EACH,OAAO,EACP,MAAM,EACN,sBAAsB,EACtB,MAAM,GAKP;QACC,MAAM,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACnD,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;YACtD,CAAC,CAAC,mBAAmB,CACnB;gBACE,cAAc,EAAE,GAAuB,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,CAAmB;gBAC/F,YAAY,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBACvE,eAAe,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC;aAC5D,EACD,eAAe,CAChB,CAAA;YACD,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC;oBAChC,OAAO,EAAE,GAAG;oBACZ,QAAQ,EAAE,GAAG;oBACb,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAM,GAAG,CAAC;oBACrC,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,QAAQ,EAAE,GAAG,EAAE,CACb,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC1G,YAAY,EAAE,GAAG,EAAE;wBACjB,OAAO,MAAgB,CAAA;oBACzB,CAAC;iBACF,CAAC,CAAA;gBACF,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,iBAAiB,GAAG,MAAM,WAAW,CAAC;oBAC1C,OAAO,EAAE,GAAG;oBACZ,QAAQ,EAAE,GAAG;oBACb,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;iBAC3B,CAAC,CAAA;gBACF,GAAG,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAA;YACzC,CAAC;YACD,OAAM;QACR,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,OAAyB;QAC/C,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,UAAU,CAAC,SAAS,CAClB,SAAS,EACT,GAAG,OAAO,CAAC,QAAQ,IAAI,aAAa,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE,EACnE,OAAO,CAAC,GAAG,CAAC,GAAa,CAC1B,CACF,CAAA;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;YACjB,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAY,CAAC,CAAA;QACpH,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAC1B,MAAM,cAAc,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAClG,CAAA;QACH,CAAC;IACH,CAAC;CAIF,CAAA;AAD0B;IADxB,QAAQ,CAAC,aAAa,CAAC;8BACgB,aAAa;iDAAA;AA/K1C,UAAU;IADtB,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,UAAU,CAgLtB"}
1
+ {"version":3,"file":"api-manager.js","sourceRoot":"","sources":["../src/api-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"authenticate.d.ts","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,aAAa,EAAwB,MAAM,oCAAoC,CAAA;AAG3G,eAAO,MAAM,YAAY,SAEtB,CAAC,SAAS;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,EAAE,QAAQ,aAAa,CAAC,CAAC,CAAC,KAAG,aAAa,CAAC,CAAC,CAczE,CAAA"}
1
+ {"version":3,"file":"authenticate.d.ts","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,aAAa,EAAwB,MAAM,oCAAoC,CAAA;AAG3G,eAAO,MAAM,YAAY,SAEtB,CAAC,SAAS;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,EAAE,QAAQ,aAAa,CAAC,CAAC,CAAC,KAAG,aAAa,CAAC,CAAC,CAkBzE,CAAA"}
@@ -3,7 +3,7 @@ import { sleepAsync } from '@furystack/utils';
3
3
  import { HttpUserContext } from './http-user-context.js';
4
4
  import { JsonResult } from './request-action-implementation.js';
5
5
  export const Authenticate = () => (action) => {
6
- return async (args) => {
6
+ const wrapped = async (args) => {
7
7
  const { injector } = args;
8
8
  const authenticated = await isAuthenticated(injector);
9
9
  if (!authenticated) {
@@ -12,5 +12,7 @@ export const Authenticate = () => (action) => {
12
12
  }
13
13
  return (await action(args));
14
14
  };
15
+ wrapped.isAuthenticated = true;
16
+ return wrapped;
15
17
  };
16
18
  //# sourceMappingURL=authenticate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAE/D,MAAM,CAAC,MAAM,YAAY,GACvB,GAAG,EAAE,CACL,CAAgC,MAAwB,EAAoB,EAAE;IAC5E,OAAO,KAAK,EAAE,IAA6B,EAA4B,EAAE;QACvE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QACzB,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;QACrD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;YACtC,OAAO,UAAU,CACf,EAAE,KAAK,EAAE,cAAc,EAAE,EACzB,GAAG,EACH,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAC9E,CAAA;QACjC,CAAC;QACD,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAoB,CAAA;IAChD,CAAC,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAE/D,MAAM,CAAC,MAAM,YAAY,GACvB,GAAG,EAAE,CACL,CAAgC,MAAwB,EAAoB,EAAE;IAC5E,MAAM,OAAO,GAAG,KAAK,EAAE,IAA6B,EAA4B,EAAE;QAChF,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QACzB,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;QACrD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;YACtC,OAAO,UAAU,CACf,EAAE,KAAK,EAAE,cAAc,EAAE,EACzB,GAAG,EACH,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAC9E,CAAA;QACjC,CAAC;QACD,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAoB,CAAA;IAChD,CAAC,CAAA;IAED,OAAO,CAAC,eAAe,GAAG,IAAI,CAAA;IAE9B,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { RestApiImplementation } from '../api-manager.js';
2
+ import { getSchemaFromApi } from '../get-schema-from-api.js';
3
+ import { type RequestAction } from '../request-action-implementation.js';
4
+ export type GetSchemaResult = ReturnType<typeof getSchemaFromApi>;
5
+ /**
6
+ * Creates a GET action that returns the schema of the provided API.
7
+ * The schema is returned in JSON format when the request's Accept header includes 'application/schema+json'.
8
+ * If the Accept header does not match, a 406 Not Acceptable error is thrown.
9
+ *
10
+ * @param api - The API implementation from which to extract the schema.
11
+ * @returns A RequestAction that handles the GET request for the schema.
12
+ */
13
+ export declare const CreateGetSchemaAction: <T extends RestApiImplementation<any>>(api: T, name?: string, description?: string, version?: string) => RequestAction<{
14
+ result: GetSchemaResult;
15
+ }>;
16
+ //# sourceMappingURL=create-get-schema-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-get-schema-action.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-schema-action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAEpF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAEjE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,qBAAqB,CAAC,GAAG,CAAC,EACxE,KAAK,CAAC,EACN,aAAsB,EACtB,oBAAqE,EACrE,gBAAiB,KAChB,aAAa,CAAC;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,CAQ3C,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { RequestError } from '@furystack/rest';
2
+ import { getSchemaFromApi } from '../get-schema-from-api.js';
3
+ import { JsonResult } from '../request-action-implementation.js';
4
+ /**
5
+ * Creates a GET action that returns the schema of the provided API.
6
+ * The schema is returned in JSON format when the request's Accept header includes 'application/schema+json'.
7
+ * If the Accept header does not match, a 406 Not Acceptable error is thrown.
8
+ *
9
+ * @param api - The API implementation from which to extract the schema.
10
+ * @returns A RequestAction that handles the GET request for the schema.
11
+ */
12
+ export const CreateGetSchemaAction = (api, name = 'FuryStack API', description = 'API documentation generated from FuryStack API schema', version = '1.0.0') => {
13
+ const schema = getSchemaFromApi({ api, name, description, version });
14
+ return async ({ request }) => {
15
+ if (request.headers.accept?.includes('application/schema+json')) {
16
+ return JsonResult(schema, 200);
17
+ }
18
+ throw new RequestError('The requested content type is not supported. Please use "application/schema+json".', 406);
19
+ };
20
+ };
21
+ //# sourceMappingURL=create-get-schema-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-get-schema-action.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-schema-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAsB,MAAM,qCAAqC,CAAA;AAIpF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,GAAM,EACN,IAAI,GAAG,eAAe,EACtB,WAAW,GAAG,uDAAuD,EACrE,OAAO,GAAG,OAAO,EAC2B,EAAE;IAC9C,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAA;IACpE,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3B,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;YAChE,OAAO,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAChC,CAAC;QACD,MAAM,IAAI,YAAY,CAAC,oFAAoF,EAAE,GAAG,CAAC,CAAA;IACnH,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { type ApiEndpointDefinition, type SwaggerDocument } from '@furystack/rest';
2
+ import type { RestApiImplementation } from '../api-manager.js';
3
+ import { type RequestAction } from '../request-action-implementation.js';
4
+ export type GetSchemaResult = Record<string, ApiEndpointDefinition>;
5
+ /**
6
+ * Generates a RequestAction that retrieves the Swagger JSON schema from a FuryStack API implementation.
7
+ *
8
+ * @param api - The API implementation from which to extract the schema.
9
+ * @returns A RequestAction that handles the GET request for the schema.
10
+ */
11
+ export declare const CreateGetSwaggerJsonAction: <T extends RestApiImplementation<any>>(api: T, name?: string, description?: string, version?: string) => RequestAction<{
12
+ result: GetSchemaResult | SwaggerDocument;
13
+ }>;
14
+ //# sourceMappingURL=create-get-swagger-json-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-get-swagger-json-action.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-swagger-json-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE9D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAGpF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,qBAAqB,CAAC,GAAG,CAAC,EAC7E,KAAK,CAAC,EACN,aAAsB,EACtB,oBAAqE,EACrE,gBAAiB,KAChB,aAAa,CAAC;IAAE,MAAM,EAAE,eAAe,GAAG,eAAe,CAAA;CAAE,CAM7D,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { getSchemaFromApi } from '../get-schema-from-api.js';
2
+ import { JsonResult } from '../request-action-implementation.js';
3
+ import { generateSwaggerJsonFromApiSchema } from '../swagger/generate-swagger-json.js';
4
+ /**
5
+ * Generates a RequestAction that retrieves the Swagger JSON schema from a FuryStack API implementation.
6
+ *
7
+ * @param api - The API implementation from which to extract the schema.
8
+ * @returns A RequestAction that handles the GET request for the schema.
9
+ */
10
+ export const CreateGetSwaggerJsonAction = (api, name = 'FuryStack API', description = 'API documentation generated from FuryStack API schema', version = '1.0.0') => {
11
+ const { endpoints } = getSchemaFromApi({ api, name, description, version });
12
+ const swaggerJson = generateSwaggerJsonFromApiSchema({ api: endpoints, title: name, description, version });
13
+ return async () => {
14
+ return JsonResult(swaggerJson, 200);
15
+ };
16
+ };
17
+ //# sourceMappingURL=create-get-swagger-json-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-get-swagger-json-action.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-swagger-json-action.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAsB,MAAM,qCAAqC,CAAA;AACpF,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAA;AAItF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,GAAM,EACN,IAAI,GAAG,eAAe,EACtB,WAAW,GAAG,uDAAuD,EACrE,OAAO,GAAG,OAAO,EAC6C,EAAE;IAChE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAA;IAC3E,MAAM,WAAW,GAAG,gCAAgC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAA;IAC3G,OAAO,KAAK,IAAI,EAAE;QAChB,OAAO,UAAU,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;IACrC,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export * from './create-delete-endpoint.js';
2
2
  export * from './create-get-collection-endpoint.js';
3
3
  export * from './create-get-entity-endpoint.js';
4
+ export * from './create-get-schema-action.js';
4
5
  export * from './create-patch-endpoint.js';
5
6
  export * from './create-post-endpoint.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export * from './create-delete-endpoint.js';
2
2
  export * from './create-get-collection-endpoint.js';
3
3
  export * from './create-get-entity-endpoint.js';
4
+ export * from './create-get-schema-action.js';
4
5
  export * from './create-patch-endpoint.js';
5
6
  export * from './create-post-endpoint.js';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/endpoint-generators/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/endpoint-generators/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA"}
@@ -0,0 +1,21 @@
1
+ import type { RestApi, SwaggerDocument } from '@furystack/rest';
2
+ /**
3
+ * Extends a RestApi with endpoints for both schema.json and swagger.json
4
+ */
5
+ export type WithSchemaAndSwaggerAction<T extends RestApi> = T & {
6
+ GET: {
7
+ '/schema': {
8
+ result: Record<string, any>;
9
+ headers: {
10
+ accept: 'application/schema+json';
11
+ };
12
+ };
13
+ '/swagger.json': {
14
+ result: SwaggerDocument;
15
+ headers: {
16
+ accept: 'application/swagger+json';
17
+ };
18
+ };
19
+ };
20
+ };
21
+ //# sourceMappingURL=with-schema-and-swagger-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-schema-and-swagger-action.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/with-schema-and-swagger-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAE/D;;GAEG;AACH,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC9D,GAAG,EAAE;QACH,SAAS,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAAC,OAAO,EAAE;gBAAE,MAAM,EAAE,yBAAyB,CAAA;aAAE,CAAA;SAAE,CAAA;QAC1F,eAAe,EAAE;YAAE,MAAM,EAAE,eAAe,CAAC;YAAC,OAAO,EAAE;gBAAE,MAAM,EAAE,0BAA0B,CAAA;aAAE,CAAA;SAAE,CAAA;KAC9F,CAAA;CACF,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=with-schema-and-swagger-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-schema-and-swagger-action.js","sourceRoot":"","sources":["../../src/endpoint-generators/with-schema-and-swagger-action.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { ApiEndpointSchema, RestApi, Schema } from '@furystack/rest';
2
+ import type { RestApiImplementation } from './api-manager.js';
3
+ export declare const defaultSchema: Schema;
4
+ export declare const getSchemaFromApi: <T extends RestApiImplementation<RestApi>>({ api, name, description, version, }: {
5
+ api: T;
6
+ name?: string;
7
+ description?: string;
8
+ version?: string;
9
+ }) => ApiEndpointSchema;
10
+ //# sourceMappingURL=get-schema-from-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-schema-from-api.d.ts","sourceRoot":"","sources":["../src/get-schema-from-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,iBAAiB,EAAU,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAG7D,eAAO,MAAM,aAAa,EAAE,MA2B3B,CAAA;AAeD,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,qBAAqB,CAAC,OAAO,CAAC,EAAE,sCAKxE;IACD,GAAG,EAAE,CAAC,CAAA;IACN,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,KAAG,iBAiBH,CAAA"}
@@ -0,0 +1,55 @@
1
+ export const defaultSchema = {
2
+ definitions: {
3
+ default: {
4
+ type: 'object',
5
+ properties: {
6
+ headers: {
7
+ type: 'object',
8
+ additionalProperties: true,
9
+ },
10
+ query: {
11
+ type: 'object',
12
+ additionalProperties: true,
13
+ },
14
+ body: {
15
+ type: 'object',
16
+ additionalProperties: true,
17
+ },
18
+ url: {
19
+ type: 'object',
20
+ additionalProperties: true,
21
+ },
22
+ },
23
+ required: [],
24
+ description: 'Default schema for API endpoints',
25
+ additionalProperties: true,
26
+ },
27
+ },
28
+ };
29
+ const defaultSchemaName = 'default';
30
+ const getDefinitionFromAction = (method, path, action) => {
31
+ return {
32
+ method,
33
+ path,
34
+ schema: 'schema' in action && typeof action.schema === 'object' ? action.schema : defaultSchema,
35
+ schemaName: 'schemaName' in action && typeof action.schemaName === 'string' ? action.schemaName : defaultSchemaName,
36
+ isAuthenticated: 'isAuthenticated' in action && typeof action.isAuthenticated === 'boolean' ? action.isAuthenticated : false,
37
+ };
38
+ };
39
+ export const getSchemaFromApi = ({ api, name = 'FuryStack API', description = 'API documentation generated from FuryStack API schema', version = '1.0.0', }) => {
40
+ const endpoints = {};
41
+ Object.entries(api).forEach(([method, endpointList]) => {
42
+ Object.entries(endpointList).forEach(([url, requestAction]) => {
43
+ if (method && url && requestAction) {
44
+ endpoints[url] = getDefinitionFromAction(method, url, requestAction);
45
+ }
46
+ });
47
+ });
48
+ return {
49
+ name,
50
+ description,
51
+ version,
52
+ endpoints,
53
+ };
54
+ };
55
+ //# sourceMappingURL=get-schema-from-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-schema-from-api.js","sourceRoot":"","sources":["../src/get-schema-from-api.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,WAAW,EAAE;QACX,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,oBAAoB,EAAE,IAAI;iBAC3B;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,oBAAoB,EAAE,IAAI;iBAC3B;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,oBAAoB,EAAE,IAAI;iBAC3B;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,oBAAoB,EAAE,IAAI;iBAC3B;aACF;YACD,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,kCAAkC;YAC/C,oBAAoB,EAAE,IAAI;SAC3B;KACF;CACF,CAAA;AAED,MAAM,iBAAiB,GAAG,SAAS,CAAA;AAEnC,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,MAA0B,EAAyB,EAAE;IAClH,OAAO;QACL,MAAM;QACN,IAAI;QACJ,MAAM,EAAE,QAAQ,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa;QAC/F,UAAU,EAAE,YAAY,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB;QACnH,eAAe,EACb,iBAAiB,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK;KAC9G,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAA2C,EACzE,GAAG,EACH,IAAI,GAAG,eAAe,EACtB,WAAW,GAAG,uDAAuD,EACrE,OAAO,GAAG,OAAO,GAMlB,EAAqB,EAAE;IACtB,MAAM,SAAS,GAA0C,EAAE,CAAA;IAE3D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE;QACrD,MAAM,CAAC,OAAO,CAAC,YAAkD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,EAAE;YAClG,IAAI,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;gBACnC,SAAS,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,MAAgB,EAAE,GAAG,EAAE,aAAa,CAAC,CAAA;YAChF,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,IAAI;QACJ,WAAW;QACX,OAAO;QACP,SAAS;KACV,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=get-schema-from-api.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-schema-from-api.spec.d.ts","sourceRoot":"","sources":["../src/get-schema-from-api.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { defaultSchema, getSchemaFromApi } from './get-schema-from-api.js';
3
+ import { JsonResult } from './request-action-implementation.js';
4
+ import validationSchema from './validate.integration.spec.schema.json' with { type: 'json' };
5
+ import { Validate } from './validate.js';
6
+ const ExampleAction = async () => {
7
+ return JsonResult({ success: true });
8
+ };
9
+ describe('getSchemaFromApi', () => {
10
+ it('Should return the default schema from the API', () => {
11
+ const Api = {
12
+ GET: {
13
+ '/example': ExampleAction,
14
+ },
15
+ };
16
+ const schema = getSchemaFromApi({
17
+ api: Api,
18
+ name: 'Test API',
19
+ description: 'Test API Description',
20
+ version: '1.0.0',
21
+ });
22
+ expect(schema).toEqual({
23
+ name: 'Test API',
24
+ description: 'Test API Description',
25
+ version: '1.0.0',
26
+ endpoints: {
27
+ '/example': {
28
+ isAuthenticated: false,
29
+ path: '/example',
30
+ method: 'GET',
31
+ schema: defaultSchema,
32
+ schemaName: 'default',
33
+ },
34
+ },
35
+ });
36
+ });
37
+ it('Should return the attached schema from the validation', () => {
38
+ const Api = {
39
+ GET: {
40
+ '/validate-query': Validate({
41
+ schema: validationSchema,
42
+ schemaName: 'ValidateQuery',
43
+ })(async () => JsonResult({ success: true })),
44
+ },
45
+ };
46
+ const schema = getSchemaFromApi({
47
+ api: Api,
48
+ name: 'Test API',
49
+ description: 'Test API Description',
50
+ version: '1.0.0',
51
+ });
52
+ expect(schema).toEqual({
53
+ name: 'Test API',
54
+ description: 'Test API Description',
55
+ version: '1.0.0',
56
+ endpoints: {
57
+ '/validate-query': {
58
+ isAuthenticated: false,
59
+ path: '/validate-query',
60
+ method: 'GET',
61
+ schema: validationSchema,
62
+ schemaName: 'ValidateQuery',
63
+ },
64
+ },
65
+ });
66
+ });
67
+ });
68
+ //# sourceMappingURL=get-schema-from-api.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-schema-from-api.spec.js","sourceRoot":"","sources":["../src/get-schema-from-api.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAsB,MAAM,oCAAoC,CAAA;AACnF,OAAO,gBAAgB,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAC5F,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,aAAa,GAAuB,KAAK,IAAI,EAAE;IACnD,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACtC,CAAC,CAAA;AAED,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,GAAG,GAAG;YACV,GAAG,EAAE;gBACH,UAAU,EAAE,aAAa;aAC1B;SAC4C,CAAA;QAE/C,MAAM,MAAM,GAAG,gBAAgB,CAAC;YAC9B,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,OAAO;SACjB,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE;gBACT,UAAU,EAAE;oBACV,eAAe,EAAE,KAAK;oBACtB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,aAAa;oBACrB,UAAU,EAAE,SAAS;iBACtB;aACF;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,GAAG,GAAG;YACV,GAAG,EAAE;gBACH,iBAAiB,EAAE,QAAQ,CAAC;oBAC1B,MAAM,EAAE,gBAAgB;oBACxB,UAAU,EAAE,eAAe;iBAC5B,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;aAC9C;SAC4C,CAAA;QAE/C,MAAM,MAAM,GAAG,gBAAgB,CAAC;YAC9B,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,OAAO;SACjB,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE;gBACT,iBAAiB,EAAE;oBACjB,eAAe,EAAE,KAAK;oBACtB,IAAI,EAAE,iBAAiB;oBACvB,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,gBAAgB;oBACxB,UAAU,EAAE,eAAe;iBAC5B;aACF;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/esm/helpers.d.ts CHANGED
@@ -10,7 +10,10 @@ import type { StaticServerOptions } from './static-server-manager.js';
10
10
  * @param api The API implementation details
11
11
  * @returns a promise that resolves when the API is added to the server
12
12
  */
13
- export declare const useRestService: <T extends RestApi>(api: ImplementApiOptions<T>) => Promise<void>;
13
+ export declare const useRestService: <T extends RestApi>(api: ImplementApiOptions<T>) => Promise<{
14
+ shouldExec: (msg: import("./server-manager.js").OnRequest) => boolean;
15
+ onRequest: (msg: import("./server-manager.js").OnRequest) => Promise<void>;
16
+ }>;
14
17
  /**
15
18
  * Sets up the HTTP Authentication
16
19
  * @param injector The Injector instance
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAGrE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,SAAS,OAAO,EAAE,KAAK,mBAAmB,CAAC,CAAC,CAAC,kBACpB,CAAA;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,KAAK,SAAS,IAAI,EAAE,QAAQ,SAAS,cAAc,EACvF,UAAU,QAAQ,EAClB,WAAW,OAAO,CAAC,0BAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,SACuD,CAAA;AAExH;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAAG,mBAAmB,kBAGnF,CAAA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAGrE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,SAAS,OAAO,EAAE,KAAK,mBAAmB,CAAC,CAAC,CAAC;;;EACpB,CAAA;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,KAAK,SAAS,IAAI,EAAE,QAAQ,SAAS,cAAc,EACvF,UAAU,QAAQ,EAClB,WAAW,OAAO,CAAC,0BAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,SACuD,CAAA;AAExH;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAAG,mBAAmB,kBAGnF,CAAA"}
package/esm/index.d.ts CHANGED
@@ -1,19 +1,20 @@
1
- export * from './helpers.js';
1
+ export * from './actions/index.js';
2
2
  export * from './add-cors-header.js';
3
3
  export * from './api-manager.js';
4
- export * from './actions/index.js';
5
4
  export * from './authenticate.js';
6
5
  export * from './authorize.js';
6
+ export * from './endpoint-generators/index.js';
7
+ export * from './get-schema-from-api.js';
8
+ export * from './helpers.js';
7
9
  export * from './http-authentication-settings.js';
8
10
  export * from './http-user-context.js';
9
- export * from './server-manager.js';
10
- export * from './server-response-extensions.js';
11
- export * from './models/index.js';
12
- export * from './endpoint-generators/index.js';
13
- export * from './schema-validator/index.js';
14
- export * from './request-action-implementation.js';
15
- export * from './validate.js';
16
11
  export * from './mime-types.js';
12
+ export * from './models/index.js';
17
13
  export * from './read-post-body.js';
14
+ export * from './request-action-implementation.js';
15
+ export * from './schema-validator/index.js';
16
+ export * from './server-manager.js';
17
+ export * from './server-response-extensions.js';
18
18
  export * from './static-server-manager.js';
19
+ export * from './validate.js';
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mCAAmC,CAAA;AACjD,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mBAAmB,CAAA;AACjC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oCAAoC,CAAA;AAClD,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,mCAAmC,CAAA;AACjD,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oCAAoC,CAAA;AAClD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA"}
package/esm/index.js CHANGED
@@ -1,19 +1,20 @@
1
- export * from './helpers.js';
1
+ export * from './actions/index.js';
2
2
  export * from './add-cors-header.js';
3
3
  export * from './api-manager.js';
4
- export * from './actions/index.js';
5
4
  export * from './authenticate.js';
6
5
  export * from './authorize.js';
6
+ export * from './endpoint-generators/index.js';
7
+ export * from './get-schema-from-api.js';
8
+ export * from './helpers.js';
7
9
  export * from './http-authentication-settings.js';
8
10
  export * from './http-user-context.js';
9
- export * from './server-manager.js';
10
- export * from './server-response-extensions.js';
11
- export * from './models/index.js';
12
- export * from './endpoint-generators/index.js';
13
- export * from './schema-validator/index.js';
14
- export * from './request-action-implementation.js';
15
- export * from './validate.js';
16
11
  export * from './mime-types.js';
12
+ export * from './models/index.js';
17
13
  export * from './read-post-body.js';
14
+ export * from './request-action-implementation.js';
15
+ export * from './schema-validator/index.js';
16
+ export * from './server-manager.js';
17
+ export * from './server-response-extensions.js';
18
18
  export * from './static-server-manager.js';
19
+ export * from './validate.js';
19
20
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mCAAmC,CAAA;AACjD,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mBAAmB,CAAA;AACjC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oCAAoC,CAAA;AAClD,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,mCAAmC,CAAA;AACjD,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oCAAoC,CAAA;AAClD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { ApiEndpointDefinition, SwaggerDocument } from '@furystack/rest';
2
+ /**
3
+ * Converts a FuryStack API schema to an OpenAPI 3.1 compatible document
4
+ *
5
+ * @param schema - The FuryStack API schema to convert
6
+ * @returns A SwaggerDocument in OpenAPI 3.1 format
7
+ */
8
+ export declare const generateSwaggerJsonFromApiSchema: ({ api, title, description, version, }: {
9
+ api: Record<string, ApiEndpointDefinition>;
10
+ title?: string;
11
+ description?: string;
12
+ version?: string;
13
+ }) => SwaggerDocument;
14
+ //# sourceMappingURL=generate-swagger-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-swagger-json.d.ts","sourceRoot":"","sources":["../../src/swagger/generate-swagger-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAA8B,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEzG;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,GAAI,uCAK9C;IACD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,KAAG,eAwGH,CAAA"}