directus-extension-api-docs 1.6.0 → 1.6.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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +9 -9
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";const{findWorkspaceDir:s}=require("@pnpm/find-workspace-dir"),t=require("js-yaml"),e=require("path"),n=require("fs"),o=()=>process.cwd();let a;async function i(s,t){if(a)return JSON.parse(a);const{SpecificationService:e}=s,n=new e({accountability:{admin:!0},schema:t});return a=JSON.stringify(await n.oas.generate()),JSON.parse(a)}function r(s,t){return Object.entries(t).reduce(((s,[t,e])=>(s[t]=e&&"object"==typeof e?r(s[t]=s[t]||(Array.isArray(e)?[]:{}),e):e,s)),s)}const c=require("swagger-ui-express"),p=require("express-openapi-validator"),u=function(){const s=function(){const s={docsPath:"api-docs",info:{},tags:[],publishedTags:[],paths:{},components:{}};try{const a=e.join(o(),"./extensions/endpoints/oasconfig.yaml"),i=t.load(n.readFileSync(a,{encoding:"utf-8"}));return i.docsPath=i.docsPath||s.docsPath,i.info=i.info||s.info,i.tags=i.tags||s.tags,i.paths=i.paths||s.paths,i.components=i.components||s.components,i}catch{return s}}();try{const a=e.join(o(),"./extensions/endpoints"),i=n.readdirSync(a,{withFileTypes:!0});for(const e of i){const o=`${a}/${e.name}/oas.yaml`;if(e.isDirectory()&&n.existsSync(o)){const e=t.load(n.readFileSync(o,{encoding:"utf-8"}));s.tags=[...s.tags,...e.tags],s.paths={...s.paths,...e.paths},s.components=r(s.components||{},e.components||{})}}return s}catch(t){return s}}(),d=u.docsPath;var f={id:d,validate:async function(s,t,e,n){if(null==u?void 0:u.paths){const o=await i(t,e);if(n)for(const s of n)o.paths[s]=u.paths[s];else o.paths=u.paths;u.components?o.components=u.components:(delete o.components.definitions,delete o.components.schemas),s.use(p.middleware({apiSpec:o})),s.use(((s,t,e,n)=>{e.status(s.status||500).json({message:s.message,errors:s.errors})}))}return s},handler:(t,{services:e,exceptions:n,logger:a,getSchema:p})=>{const{ServiceUnavailableException:f}=n,h={swaggerOptions:{url:`/${d}/oas`}};t.use("/",c.serve),t.get("/",c.setup({},h)),t.get("/oas",(async(t,n,c)=>{try{const t=await p(),c=await i(e,t),d=await async function(){try{const t=await s(".");return require(`${t||o()}/package.json`)}catch(s){return{}}}();c.info.title=u.info.title||(null==d?void 0:d.name)||c.info.title,c.info.version=u.info.version||(null==d?void 0:d.version)||c.info.version,c.info.description=u.info.description||(null==d?void 0:d.description)||c.info.description;try{for(const s in u.paths)c.paths[s]=u.paths[s];for(const s of u.tags)c.tags.push(s);c.components=r(u.components,c.components)}catch(s){a.info("No custom definitions")}u.publishedTags&&function(s,t){for(const e in t.paths)for(const n in t.paths[e]){let o=!1;t.paths[e][n].tags.forEach((t=>{o=o||s.publishedTags.includes(t)})),t.paths[e][n].tags&&(t.paths[e][n].tags=t.paths[e][n].tags.filter((t=>s.publishedTags.includes(t)))),o||delete t.paths[e][n]}t.tags=t.tags.filter((t=>s.publishedTags.includes(t.name)))}(u,c),n.json(c)}catch(s){return c(new f(s.message||s[0].message))}}))}};module.exports=f;
1
+ "use strict";const{findWorkspaceDir:s}=require("@pnpm/find-workspace-dir"),t=require("js-yaml"),e=require("path"),n=require("fs"),o=()=>process.cwd();let a;async function i(s,t){if(a)return JSON.parse(a);const{SpecificationService:e}=s,n=new e({accountability:{admin:!0},schema:t});return a=JSON.stringify(await n.oas.generate()),JSON.parse(a)}function r(s,t){return Object.entries(t).reduce(((s,[t,e])=>(s[t]=e&&"object"==typeof e?r(s[t]=s[t]||(Array.isArray(e)?[]:{}),e):e,s)),s)}const c=require("swagger-ui-express"),p=require("express-openapi-validator"),u=function(){const s=function(){const s={docsPath:"api-docs",info:{},tags:[],publishedTags:[],paths:{},components:{}};try{const a=e.join(o(),"./extensions/endpoints/oasconfig.yaml"),i=t.load(n.readFileSync(a,{encoding:"utf-8"}));return i.docsPath=i.docsPath||s.docsPath,i.info=i.info||s.info,i.tags=i.tags||s.tags,i.paths=i.paths||s.paths,i.components=i.components||s.components,i}catch{return s}}();try{const a=e.join(o(),"./extensions/endpoints"),i=n.readdirSync(a,{withFileTypes:!0});for(const e of i){const o=`${a}/${e.name}/oas.yaml`;if(e.isDirectory()&&n.existsSync(o)){const e=t.load(n.readFileSync(o,{encoding:"utf-8"}));s.tags=[...s.tags,...e.tags||[]],s.paths={...s.paths,...e.paths||{}},s.components=r(s.components||{},e.components||{})}}return s}catch(t){return s}}(),d=u.docsPath;var f={id:d,validate:async function(s,t,e,n){if(null==u?void 0:u.paths){const o=await i(t,e);if(n)for(const s of n)o.paths[s]=u.paths[s];else o.paths=u.paths;u.components?o.components=u.components:(delete o.components.definitions,delete o.components.schemas),s.use(p.middleware({apiSpec:o})),s.use(((s,t,e,n)=>{e.status(s.status||500).json({message:s.message,errors:s.errors})}))}return s},handler:(t,{services:e,exceptions:n,logger:a,getSchema:p})=>{const{ServiceUnavailableException:f}=n,h={swaggerOptions:{url:`/${d}/oas`}};t.use("/",c.serve),t.get("/",c.setup({},h)),t.get("/oas",(async(t,n,c)=>{try{const t=await p(),c=await i(e,t),d=await async function(){try{const t=await s(".");return require(`${t||o()}/package.json`)}catch(s){return{}}}();c.info.title=u.info.title||(null==d?void 0:d.name)||c.info.title,c.info.version=u.info.version||(null==d?void 0:d.version)||c.info.version,c.info.description=u.info.description||(null==d?void 0:d.description)||c.info.description;try{for(const s in u.paths)c.paths[s]=u.paths[s];for(const s of u.tags)c.tags.push(s);c.components=r(u.components,c.components)}catch(s){a.info("No custom definitions")}u.publishedTags&&function(s,t){for(const e in t.paths)for(const n in t.paths[e]){let o=!1;t.paths[e][n].tags.forEach((t=>{o=o||s.publishedTags.includes(t)})),t.paths[e][n].tags&&(t.paths[e][n].tags=t.paths[e][n].tags.filter((t=>s.publishedTags.includes(t)))),o||delete t.paths[e][n]}t.tags=t.tags.filter((t=>s.publishedTags.includes(t.name)))}(u,c),n.json(c)}catch(s){return c(new f(s.message||s[0].message))}}))}};module.exports=f;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "directus-extension-api-docs",
3
- "version": "1.6.0",
3
+ "version": "1.6.2",
4
4
  "description": "directus extension for swagger interface and custom endpoints definitions",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -36,22 +36,22 @@
36
36
  "@pnpm/find-workspace-dir": "^5.0.1",
37
37
  "express-openapi-validator": "^4.13.8",
38
38
  "js-yaml": "^4.1.0",
39
- "swagger-ui-express": "^4.6.1"
39
+ "swagger-ui-express": "^4.6.2"
40
40
  },
41
41
  "devDependencies": {
42
- "@directus/extensions-sdk": "^9.22.4",
43
- "@directus/shared": "^9.22.3",
42
+ "@directus/extensions-sdk": "^9.23.1",
43
+ "@directus/shared": "^9.23.1",
44
44
  "@types/express": "^4.17.17",
45
45
  "@types/jest": "^29.4.0",
46
- "@types/node": "^18.14.1",
47
- "@typescript-eslint/eslint-plugin": "^5.53.0",
48
- "@typescript-eslint/parser": "^5.53.0",
46
+ "@types/node": "^18.14.6",
47
+ "@typescript-eslint/eslint-plugin": "^5.54.1",
48
+ "@typescript-eslint/parser": "^5.54.1",
49
49
  "eslint": "^8.35.0",
50
- "eslint-config-prettier": "^8.6.0",
50
+ "eslint-config-prettier": "^8.7.0",
51
51
  "eslint-plugin-import": "^2.27.5",
52
52
  "eslint-plugin-prettier": "^4.2.1",
53
53
  "express": "^4.18.2",
54
- "jest": "^29.4.3",
54
+ "jest": "^29.5.0",
55
55
  "jest-extended": "^3.2.4",
56
56
  "openapi-schema-validator": "^12.1.0",
57
57
  "pino": "^8.11.0",