@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.
- package/esm/api-manager.d.ts +47 -1
- package/esm/api-manager.d.ts.map +1 -1
- package/esm/api-manager.js +19 -5
- package/esm/api-manager.js.map +1 -1
- package/esm/authenticate.d.ts.map +1 -1
- package/esm/authenticate.js +3 -1
- package/esm/authenticate.js.map +1 -1
- package/esm/endpoint-generators/create-get-schema-action.d.ts +16 -0
- package/esm/endpoint-generators/create-get-schema-action.d.ts.map +1 -0
- package/esm/endpoint-generators/create-get-schema-action.js +21 -0
- package/esm/endpoint-generators/create-get-schema-action.js.map +1 -0
- package/esm/endpoint-generators/create-get-swagger-json-action.d.ts +14 -0
- package/esm/endpoint-generators/create-get-swagger-json-action.d.ts.map +1 -0
- package/esm/endpoint-generators/create-get-swagger-json-action.js +17 -0
- package/esm/endpoint-generators/create-get-swagger-json-action.js.map +1 -0
- package/esm/endpoint-generators/index.d.ts +1 -0
- package/esm/endpoint-generators/index.d.ts.map +1 -1
- package/esm/endpoint-generators/index.js +1 -0
- package/esm/endpoint-generators/index.js.map +1 -1
- package/esm/endpoint-generators/with-schema-and-swagger-action.d.ts +21 -0
- package/esm/endpoint-generators/with-schema-and-swagger-action.d.ts.map +1 -0
- package/esm/endpoint-generators/with-schema-and-swagger-action.js +2 -0
- package/esm/endpoint-generators/with-schema-and-swagger-action.js.map +1 -0
- package/esm/get-schema-from-api.d.ts +10 -0
- package/esm/get-schema-from-api.d.ts.map +1 -0
- package/esm/get-schema-from-api.js +55 -0
- package/esm/get-schema-from-api.js.map +1 -0
- package/esm/get-schema-from-api.spec.d.ts +2 -0
- package/esm/get-schema-from-api.spec.d.ts.map +1 -0
- package/esm/get-schema-from-api.spec.js +68 -0
- package/esm/get-schema-from-api.spec.js.map +1 -0
- package/esm/helpers.d.ts +4 -1
- package/esm/helpers.d.ts.map +1 -1
- package/esm/index.d.ts +10 -9
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +10 -9
- package/esm/index.js.map +1 -1
- package/esm/swagger/generate-swagger-json.d.ts +14 -0
- package/esm/swagger/generate-swagger-json.d.ts.map +1 -0
- package/esm/swagger/generate-swagger-json.js +106 -0
- package/esm/swagger/generate-swagger-json.js.map +1 -0
- package/esm/swagger/generate-swagger-json.spec.d.ts +2 -0
- package/esm/swagger/generate-swagger-json.spec.d.ts.map +1 -0
- package/esm/swagger/generate-swagger-json.spec.js +204 -0
- package/esm/swagger/generate-swagger-json.spec.js.map +1 -0
- package/esm/validate.d.ts.map +1 -1
- package/esm/validate.integration.spec.js +154 -2
- package/esm/validate.integration.spec.js.map +1 -1
- package/esm/validate.integration.spec.schema.json +0 -2
- package/esm/validate.js +4 -1
- package/esm/validate.js.map +1 -1
- package/package.json +9 -9
- package/src/api-manager.ts +68 -5
- package/src/authenticate.ts +5 -1
- package/src/endpoint-generators/create-get-schema-action.ts +29 -0
- package/src/endpoint-generators/create-get-swagger-json-action.ts +26 -0
- package/src/endpoint-generators/index.ts +1 -0
- package/src/endpoint-generators/with-schema-and-swagger-action.ts +11 -0
- package/src/get-schema-from-api.spec.ts +73 -0
- package/src/get-schema-from-api.ts +74 -0
- package/src/index.ts +10 -9
- package/src/swagger/generate-swagger-json.spec.ts +239 -0
- package/src/swagger/generate-swagger-json.ts +123 -0
- package/src/validate.integration.spec.schema.json +0 -2
- package/src/validate.integration.spec.ts +173 -2
- package/src/validate.ts +6 -1
package/esm/api-manager.d.ts
CHANGED
|
@@ -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<
|
|
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;
|
package/esm/api-manager.d.ts.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"api-manager.d.ts","sourceRoot":"","sources":["../src/api-manager.ts"],"names":[],"mappings":"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"}
|
package/esm/api-manager.js
CHANGED
|
@@ -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
|
|
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(
|
|
49
|
-
|
|
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 &&
|
package/esm/api-manager.js.map
CHANGED
|
@@ -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;
|
|
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,
|
|
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"}
|
package/esm/authenticate.js
CHANGED
|
@@ -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
|
-
|
|
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
|
package/esm/authenticate.js.map
CHANGED
|
@@ -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;
|
|
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 @@
|
|
|
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 @@
|
|
|
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<
|
|
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
|
package/esm/helpers.d.ts.map
CHANGED
|
@@ -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,
|
|
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 './
|
|
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
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
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 './
|
|
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,
|
|
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"}
|