@omer-x/next-openapi-json-generator 0.2.1 → 0.2.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/dist/core/next.d.ts +1 -1
- package/dist/core/zod-to-openapi.d.ts +3 -0
- package/dist/index.js +1 -1
- package/package.json +5 -5
package/dist/core/next.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OperationObject } from "@omer-x/openapi-types/operation";
|
|
2
2
|
export declare function findAppFolderPath(): Promise<string | null>;
|
|
3
3
|
export declare function getRouteExports(routePath: string, schemas: Record<string, unknown>): Promise<Record<string, {
|
|
4
|
-
apiData?: OperationObject
|
|
4
|
+
apiData?: OperationObject;
|
|
5
5
|
} | undefined>>;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{"use strict";var __webpack_modules__={489:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.
|
|
1
|
+
(()=>{"use strict";var __webpack_modules__={489:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.directoryExists=async function(e){try{return await a.default.access(e,n.constants.F_OK),!0}catch(e){return!1}},t.getDirectoryItems=async function e(t,r){const o=[],n=await a.default.readdir(t);for(const u of n){const n=s.default.resolve(t,u);if((await a.default.stat(n)).isDirectory()){const t=await e(n,r);o.push(...t)}else u===r&&o.push(n)}return o};const n=r(896),a=o(r(943)),s=o(r(760))},580:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=function e(t,r,o){if(o)for(const[e,o]of Object.entries(r))if(a(t,(0,n.default)(o,!1)))return{$ref:`#/components/schemas/${e}`};if("$ref"in t)return t;if(t.oneOf)return{...t,oneOf:t.oneOf.map((t=>e(t,r,!0)))};if(t.anyOf)return{...t,anyOf:t.anyOf.map((t=>e(t,r,!0)))};switch(t.type){case"object":return{...t,properties:Object.entries(t.properties).reduce(((t,[o,n])=>({...t,[o]:e(n,r,!0)})),{})};case"array":return Array.isArray(t.items)?{...t,items:t.items.map((t=>e(t,r,!0)))}:{...t,items:e(t.items,r,!0)}}return t};const n=o(r(292));function a(e,t){if(typeof e!=typeof t)return!1;switch(typeof e){case"object":return null===e?e===t:!!t&&(Array.isArray(e)?!!Array.isArray(t)&&e.every(((e,r)=>a(e,t[r]))):Object.entries(e).every((([e,r])=>a(r,t[e]))));case"function":case"symbol":return!1;default:return e===t}}},37:function(__unused_webpack_module,exports,__webpack_require__){var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.findAppFolderPath=findAppFolderPath,exports.getRouteExports=getRouteExports;const promises_1=__importDefault(__webpack_require__(455)),node_path_1=__importDefault(__webpack_require__(760)),dir_1=__webpack_require__(489),transpile_1=__webpack_require__(380);async function findAppFolderPath(){const e=node_path_1.default.resolve(process.cwd(),"src","app");if(await(0,dir_1.directoryExists)(e))return e;const t=node_path_1.default.resolve(process.cwd(),"app");return await(0,dir_1.directoryExists)(t)?t:null}function injectSchemas(e,t){return e.replace(new RegExp(`\\b${t}\\.`,"g"),`global.schemas[${t}].`).replace(new RegExp(`\\b${t}\\b`,"g"),`"${t}"`)}async function getRouteExports(routePath,schemas){const content=await promises_1.default.readFile(routePath,"utf-8"),code=(0,transpile_1.transpile)(content),fixedCode=Object.keys(schemas).reduce(injectSchemas,code);global.schemas=schemas;const result=eval(fixedCode);return delete global.schemas,result}},976:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return{...e,parameters:e.parameters?.map((e=>function(e,t){return"$ref"in e?e:{...e,schema:a(t,e.schema)}}(e,t))),requestBody:u(t,e.requestBody),responses:i(t,e.responses)}};const n=o(r(580));function a(e,t){return t?(0,n.default)(t,e,!0):t}function s(e,t){return t?Object.entries(t).reduce(((t,[r,o])=>({...t,[r]:{...o,schema:a(e,o.schema)}})),{}):t}function u(e,t){return!t||"$ref"in t?t:{...t,content:s(e,t.content)}}function c(e,t){return"$ref"in t?t:{...t,content:s(e,t.content)}}function i(e,t){return t?Object.entries(t).reduce(((t,[r,o])=>({...t,[r]:c(e,o)})),{}):t}},683:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.createRouteRecord=function(e,t,r,o){return{method:e.toLocaleLowerCase(),path:a(t,r),apiData:o}},t.bundlePaths=function(e,t){return e.sort(((e,t)=>e.path.localeCompare(t.path))),e.reduce(((e,r)=>({...e,[r.path]:{...e[r.path],[r.method]:(0,n.default)(r.apiData,t)}})),{})};const n=o(r(976));function a(e,t){return e.replace(t,"").replace("[","{").replace("]","}").replace("/route.ts","")}},363:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.bundleSchemas=function(e){const t=Object.keys(e).reduce(((t,r)=>({...t,[r]:(0,a.default)(e[r],!1)})),{});return Object.entries(t).reduce(((t,[r,o])=>({...t,[r]:(0,n.default)(o,e,!1)})),{})};const n=o(r(580)),a=o(r(292))},380:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.transpile=function(e){const t=["import createRoute from '@omer-x/next-openapi-route-handler'","import z from 'zod';",a(n(e))];return(0,o.transpile)(t.join("\n"))};const o=r(899);function n(e){return e.replace(/^import\s.+\sfrom\s.+;$/gm,"").trim()}function a(e){const t=["GET","POST","PUT","PATCH","DELETE"];return`${t.map((e=>`exports.${e} = void 0;\n`))}\n${e}\n${`module.exports = { ${t.map((e=>`${e}: exports.${e}`)).join(", ")} }`}`}},292:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,n.default)(t?e.array():e,{target:"openApi3",$refStrategy:"none"})};const n=o(r(106))},156:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=async function(e){const t=await(0,s.findAppFolderPath)();if(!t)throw new Error("This is not a Next.js application!");const r=await(0,a.getDirectoryItems)(t,"route.ts"),o=[];for(const n of r){const r=await(0,s.getRouteExports)(n,e);for(const[e,a]of Object.entries(r))a&&a.apiData&&o.push((0,u.createRouteRecord)(e.toLocaleLowerCase(),n,t,a.apiData))}const i=(0,n.default)();return{openapi:"3.1.0",info:{title:i.serviceName,version:i.version},paths:(0,u.bundlePaths)(o,e),components:{schemas:(0,c.bundleSchemas)(e)},tags:[]}};const n=o(r(213)),a=r(489),s=r(37),u=r(683),c=r(363)},213:e=>{e.exports=require("@omer-x/package-metadata")},899:e=>{e.exports=require("typescript")},106:e=>{e.exports=require("zod-to-json-schema")},896:e=>{e.exports=require("fs")},943:e=>{e.exports=require("fs/promises")},455:e=>{e.exports=require("node:fs/promises")},760:e=>{e.exports=require("node:path")}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(r.exports,r,r.exports,__webpack_require__),r.exports}var __webpack_exports__=__webpack_require__(156);module.exports=__webpack_exports__})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omer-x/next-openapi-json-generator",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "a Next.js plugin to generate OpenAPI documentation from route handlers",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"next.js",
|
|
@@ -40,18 +40,18 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@omer-x/package-metadata": "^0.1.2",
|
|
43
|
-
"typescript": "^5.
|
|
44
|
-
"zod-to-json-schema": "^3.23.
|
|
43
|
+
"typescript": "^5.5.2",
|
|
44
|
+
"zod-to-json-schema": "^3.23.1"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@omer-x/eslint-config": "^1.0.7",
|
|
48
48
|
"@omer-x/openapi-types": "^0.1.2",
|
|
49
|
-
"@types/node": "^20.14.
|
|
49
|
+
"@types/node": "^20.14.8",
|
|
50
50
|
"clean-webpack-plugin": "^4.0.0",
|
|
51
51
|
"eslint": "^8.57.0",
|
|
52
52
|
"ts-loader": "^9.5.1",
|
|
53
53
|
"ts-unused-exports": "^10.1.0",
|
|
54
|
-
"webpack": "^5.92.
|
|
54
|
+
"webpack": "^5.92.1",
|
|
55
55
|
"webpack-cli": "^5.1.4",
|
|
56
56
|
"zod": "^3.23.8"
|
|
57
57
|
},
|