directus-extension-api-docs 1.4.1 → 1.4.2
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/README.md +2 -2
- package/dist/index.js +1 -1
- package/package.json +62 -62
package/README.md
CHANGED
|
@@ -101,7 +101,7 @@ paths:
|
|
|
101
101
|
components:
|
|
102
102
|
schemas:
|
|
103
103
|
Users:
|
|
104
|
-
type: object
|
|
104
|
+
type: object # ref to standard components declaring it empty
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
## Validations (optional)
|
|
@@ -124,7 +124,7 @@ module.exports = {
|
|
|
124
124
|
handler: async function registerEndpoint(router, { services, getSchema }) {
|
|
125
125
|
|
|
126
126
|
const schema = await getSchema();
|
|
127
|
-
await validate(router, services, schema); // Enable validator
|
|
127
|
+
await validate(router, services, schema); // Enable validator
|
|
128
128
|
|
|
129
129
|
router.post('/my-endpoint', async (req, res, next) => {
|
|
130
130
|
...
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const e=require("js-yaml"),s=require("path"),n=require("fs"),t=process.cwd();let o;async function i(e,s){if(o)return JSON.parse(o);const{SpecificationService:n}=e,t=new n({accountability:{admin:!0},schema:s});return o=JSON.stringify(await t.oas.generate()),JSON.parse(o)}function a(e,s){return Object.entries(s).reduce(((e,[s,n])=>(e[s]=n&&"object"==typeof n?a(e[s]=e[s]||(Array.isArray(n)?[]:{}),n):n,e)),e)}const r=require("swagger-ui-express"),c=require("express-openapi-validator"),{findWorkspaceDir:p}=require("@pnpm/find-workspace-dir"),u=function(){try{const o=s.join(t,"./extensions/endpoints/oasconfig.yaml"),i=e.load(n.readFileSync(o,{encoding:"utf-8"})),r=s.join(t,"./extensions/endpoints"),c=n.readdirSync(r,{withFileTypes:!0});for(const s of c){const t=`${r}/${s.name}/oas.yaml`;if(s.isDirectory()&&n.existsSync(t)){const s=e.load(n.readFileSync(t,{encoding:"utf-8"}));i.tags=[...i.tags,...s.tags],i.paths={...i.paths,...s.paths},i.components=a(i.components,s.components)}}return i}catch(e){return{}}}(),d=(null==u?void 0:u.docsPath)||"api-docs";var l={id:d,validate:async function(e,s,n,t){if(null==u?void 0:u.paths){const o=await i(s,n);if(t)for(const e of t)o.paths[e]=u.paths[e];else o.paths=u.paths;u.components?o.components=u.components:(delete o.components.definitions,delete o.components.schemas),e.use(c.middleware({apiSpec:o})),e.use(((e,s,n,t)=>{n.status(e.status||500).json({message:e.message,errors:e.errors})}))}return e},handler:(e,{services:s,exceptions:n,logger:t,getSchema:o})=>{const{ServiceUnavailableException:c}=n,l={swaggerOptions:{url:`/${d}/oas`}};e.use("/",r.serve),e.get("/",r.setup({},l)),e.get("/oas",(async(e,n,r)=>{try{const e=await o(),r=await i(s,e),c=require(`${await p(".")}/package.json`);r.info.title=c.name,r.info.version=c.version,r.info.description=c.description;try{if(null==u?void 0:u.paths)for(const e in u.paths)r.paths[e]=u.paths[e];if(null==u?void 0:u.tags)for(const e of u.tags)r.tags.push(e);(null==u?void 0:u.components)&&(r.components=a(u.components,r.components))}catch(e){t.info("No custom definitions")}n.json(r)}catch(e){return r(new c(e.message||e[0].message))}}))}};module.exports=l;
|
|
1
|
+
"use strict";const e=require("js-yaml"),s=require("path"),n=require("fs"),t=process.cwd();let o;async function i(e,s){if(o)return JSON.parse(o);const{SpecificationService:n}=e,t=new n({accountability:{admin:!0},schema:s});return o=JSON.stringify(await t.oas.generate()),JSON.parse(o)}function a(e,s){return Object.entries(s).reduce(((e,[s,n])=>(e[s]=n&&"object"==typeof n?a(e[s]=e[s]||(Array.isArray(n)?[]:{}),n):n,e)),e)}const r=require("swagger-ui-express"),c=require("express-openapi-validator"),{findWorkspaceDir:p}=require("@pnpm/find-workspace-dir"),u=function(){try{const o=s.join(t,"./extensions/endpoints/oasconfig.yaml"),i=e.load(n.readFileSync(o,{encoding:"utf-8"})),r=s.join(t,"./extensions/endpoints"),c=n.readdirSync(r,{withFileTypes:!0});for(const s of c){const t=`${r}/${s.name}/oas.yaml`;if(s.isDirectory()&&n.existsSync(t)){const s=e.load(n.readFileSync(t,{encoding:"utf-8"}));i.tags=[...i.tags,...s.tags],i.paths={...i.paths,...s.paths},i.components=a(i.components||{},s.components||{})}}return i}catch(e){return{}}}(),d=(null==u?void 0:u.docsPath)||"api-docs";var l={id:d,validate:async function(e,s,n,t){if(null==u?void 0:u.paths){const o=await i(s,n);if(t)for(const e of t)o.paths[e]=u.paths[e];else o.paths=u.paths;u.components?o.components=u.components:(delete o.components.definitions,delete o.components.schemas),e.use(c.middleware({apiSpec:o})),e.use(((e,s,n,t)=>{n.status(e.status||500).json({message:e.message,errors:e.errors})}))}return e},handler:(e,{services:s,exceptions:n,logger:t,getSchema:o})=>{const{ServiceUnavailableException:c}=n,l={swaggerOptions:{url:`/${d}/oas`}};e.use("/",r.serve),e.get("/",r.setup({},l)),e.get("/oas",(async(e,n,r)=>{try{const e=await o(),r=await i(s,e),c=require(`${await p(".")}/package.json`);r.info.title=c.name,r.info.version=c.version,r.info.description=c.description;try{if(null==u?void 0:u.paths)for(const e in u.paths)r.paths[e]=u.paths[e];if(null==u?void 0:u.tags)for(const e of u.tags)r.tags.push(e);(null==u?void 0:u.components)&&(r.components=a(u.components,r.components))}catch(e){t.info("No custom definitions")}n.json(r)}catch(e){return r(new c(e.message||e[0].message))}}))}};module.exports=l;
|
package/package.json
CHANGED
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "directus-extension-api-docs",
|
|
3
|
-
"version": "1.4.
|
|
4
|
-
"description": "directus extension for swagger interface and custom endpoints definitions",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"files": [
|
|
8
|
-
"dist",
|
|
9
|
-
"!*.map"
|
|
10
|
-
],
|
|
11
|
-
"repository": "https://github.com/sacconazzo/directus-extension-api-docs",
|
|
12
|
-
"homepage": "https://github.com/sacconazzo/directus-extension-api-docs#readme",
|
|
13
|
-
"keywords": [
|
|
14
|
-
"directus",
|
|
15
|
-
"directus-extension",
|
|
16
|
-
"directus-custom-endpoint",
|
|
17
|
-
"swagger",
|
|
18
|
-
"custom endpoints",
|
|
19
|
-
"openapi definition",
|
|
20
|
-
"openapi"
|
|
21
|
-
],
|
|
22
|
-
"directus:extension": {
|
|
23
|
-
"type": "endpoint",
|
|
24
|
-
"path": "dist/index.js",
|
|
25
|
-
"source": "src/index.ts",
|
|
26
|
-
"host": "^9.19.2"
|
|
27
|
-
},
|
|
28
|
-
"scripts": {
|
|
29
|
-
"test": "jest --verbose=true",
|
|
30
|
-
"lint": "eslint --ignore-path .gitignore --ext .ts tests/ src/",
|
|
31
|
-
"lint:fix": "pnpm lint --fix",
|
|
32
|
-
"build": "directus-extension build",
|
|
33
|
-
"dev": "directus-extension build -w --no-minify"
|
|
34
|
-
},
|
|
35
|
-
"dependencies": {
|
|
36
|
-
"@pnpm/find-workspace-dir": "^5.0.0",
|
|
37
|
-
"express-openapi-validator": "^4.13.8",
|
|
38
|
-
"js-yaml": "^4.1.0",
|
|
39
|
-
"swagger-ui-express": "^4.6.0"
|
|
40
|
-
},
|
|
41
|
-
"devDependencies": {
|
|
42
|
-
"@babel/preset-env": "^7.20.2",
|
|
43
|
-
"@directus/extensions-sdk": "^9.20.4",
|
|
44
|
-
"@types/express": "^4.17.14",
|
|
45
|
-
"@types/jest": "^29.2.3",
|
|
46
|
-
"@types/node": "^18.11.9",
|
|
47
|
-
"@typescript-eslint/eslint-plugin": "^5.43.0",
|
|
48
|
-
"@typescript-eslint/parser": "^5.43.0",
|
|
49
|
-
"babel-jest": "^29.3.1",
|
|
50
|
-
"eslint": "^8.27.0",
|
|
51
|
-
"eslint-config-prettier": "^8.5.0",
|
|
52
|
-
"eslint-plugin-import": "^2.26.0",
|
|
53
|
-
"eslint-plugin-prettier": "^4.2.1",
|
|
54
|
-
"express": "^4.18.2",
|
|
55
|
-
"jest": "^29.3.1",
|
|
56
|
-
"jest-extended": "^3.1.0",
|
|
57
|
-
"openapi-schema-validator": "^12.0.2",
|
|
58
|
-
"prettier": "^2.7.1",
|
|
59
|
-
"ts-jest": "^29.0.3",
|
|
60
|
-
"ts-node": "^10.9.1",
|
|
61
|
-
"typescript": "^4.9.3"
|
|
62
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "directus-extension-api-docs",
|
|
3
|
+
"version": "1.4.2",
|
|
4
|
+
"description": "directus extension for swagger interface and custom endpoints definitions",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"!*.map"
|
|
10
|
+
],
|
|
11
|
+
"repository": "https://github.com/sacconazzo/directus-extension-api-docs",
|
|
12
|
+
"homepage": "https://github.com/sacconazzo/directus-extension-api-docs#readme",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"directus",
|
|
15
|
+
"directus-extension",
|
|
16
|
+
"directus-custom-endpoint",
|
|
17
|
+
"swagger",
|
|
18
|
+
"custom endpoints",
|
|
19
|
+
"openapi definition",
|
|
20
|
+
"openapi"
|
|
21
|
+
],
|
|
22
|
+
"directus:extension": {
|
|
23
|
+
"type": "endpoint",
|
|
24
|
+
"path": "dist/index.js",
|
|
25
|
+
"source": "src/index.ts",
|
|
26
|
+
"host": "^9.19.2"
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"test": "jest --verbose=true",
|
|
30
|
+
"lint": "eslint --ignore-path .gitignore --ext .ts tests/ src/",
|
|
31
|
+
"lint:fix": "pnpm lint --fix",
|
|
32
|
+
"build": "directus-extension build",
|
|
33
|
+
"dev": "directus-extension build -w --no-minify"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@pnpm/find-workspace-dir": "^5.0.0",
|
|
37
|
+
"express-openapi-validator": "^4.13.8",
|
|
38
|
+
"js-yaml": "^4.1.0",
|
|
39
|
+
"swagger-ui-express": "^4.6.0"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@babel/preset-env": "^7.20.2",
|
|
43
|
+
"@directus/extensions-sdk": "^9.20.4",
|
|
44
|
+
"@types/express": "^4.17.14",
|
|
45
|
+
"@types/jest": "^29.2.3",
|
|
46
|
+
"@types/node": "^18.11.9",
|
|
47
|
+
"@typescript-eslint/eslint-plugin": "^5.43.0",
|
|
48
|
+
"@typescript-eslint/parser": "^5.43.0",
|
|
49
|
+
"babel-jest": "^29.3.1",
|
|
50
|
+
"eslint": "^8.27.0",
|
|
51
|
+
"eslint-config-prettier": "^8.5.0",
|
|
52
|
+
"eslint-plugin-import": "^2.26.0",
|
|
53
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
54
|
+
"express": "^4.18.2",
|
|
55
|
+
"jest": "^29.3.1",
|
|
56
|
+
"jest-extended": "^3.1.0",
|
|
57
|
+
"openapi-schema-validator": "^12.0.2",
|
|
58
|
+
"prettier": "^2.7.1",
|
|
59
|
+
"ts-jest": "^29.0.3",
|
|
60
|
+
"ts-node": "^10.9.1",
|
|
61
|
+
"typescript": "^4.9.3"
|
|
62
|
+
}
|
|
63
63
|
}
|