From d764c1a0817fbebeeba3a102774f3a380a1914c6 Mon Sep 17 00:00:00 2001 From: Mike Wu Date: Tue, 10 Sep 2024 23:02:47 +0900 Subject: [PATCH] feat: dynamically detect namespace --- src/lib/blueprint.ts | 35 +- test/snapshots/seam-blueprint.test.ts.md | 361 +-------------------- test/snapshots/seam-blueprint.test.ts.snap | Bin 21096 -> 19176 bytes 3 files changed, 35 insertions(+), 361 deletions(-) diff --git a/src/lib/blueprint.ts b/src/lib/blueprint.ts index 629a2fa..e8e4878 100644 --- a/src/lib/blueprint.ts +++ b/src/lib/blueprint.ts @@ -285,7 +285,8 @@ const createRoutes = async ( ) for (const [path, pathItem] of pathEntries) { - const route = await createRoute(path, pathItem, context) + const namespace = getNamespace(path, paths) + const route = await createRoute(namespace, path, pathItem, context) const existingRoute = routeMap.get(route.path) if (existingRoute != null) { @@ -299,7 +300,37 @@ const createRoutes = async ( return Array.from(routeMap.values()) } +const getNamespace = (path: string, paths: OpenapiPaths): string | null => { + const namespace: string[] = [] + + const pathParts = path.split('/').filter((path) => Boolean(path)) + + const pathKeys = Object.keys(paths) + // console.log('keys: ', pathKeys) + + for (const [index, part] of pathParts.entries()) { + if (namespace.length !== index) { + continue + } + + const children = pathKeys.filter((key) => + new RegExp(`^/${[...namespace, part].join('/')}/\\w+$`).test(key), + ) + + if (children.length === 0) { + namespace.push(part) + } + } + + if (namespace.length > 0) { + return `/${namespace.join('/')}` + } + + return null +} + const createRoute = async ( + namespace: string | null, path: string, pathItem: OpenapiPathItem, context: Context, @@ -314,7 +345,7 @@ const createRoute = async ( return { path: routePath, name, - namespace: { path: `/${pathParts[1]}` }, + namespace: namespace != null ? { path: namespace } : null, endpoints: await createEndpoints(path, pathItem, context), subroutes: [], } diff --git a/test/snapshots/seam-blueprint.test.ts.md b/test/snapshots/seam-blueprint.test.ts.md index 5fd409a..944c948 100644 --- a/test/snapshots/seam-blueprint.test.ts.md +++ b/test/snapshots/seam-blueprint.test.ts.md @@ -113,15 +113,6 @@ Generated by [AVA](https://avajs.dev). jsonType: 'string', name: 'external_type_display_name', }, - { - deprecationMessage: '', - description: '', - format: 'boolean', - isDeprecated: false, - isUndocumented: false, - jsonType: 'boolean', - name: 'is_managed', - }, { deprecationMessage: '', description: '', @@ -268,9 +259,6 @@ Generated by [AVA](https://avajs.dev). { name: 'visionline_card', }, - { - name: 'salto_ks_credential', - }, ], }, { @@ -291,15 +279,6 @@ Generated by [AVA](https://avajs.dev). jsonType: 'boolean', name: 'is_latest_desired_state_synced_with_provider', }, - { - deprecationMessage: '', - description: '', - format: 'boolean', - isDeprecated: false, - isUndocumented: false, - jsonType: 'boolean', - name: 'is_managed', - }, { deprecationMessage: '', description: '', @@ -362,15 +341,6 @@ Generated by [AVA](https://avajs.dev). }, ], }, - { - deprecationMessage: '', - description: '', - format: 'string', - isDeprecated: false, - isUndocumented: false, - jsonType: 'string', - name: 'card_id', - }, { deprecationMessage: '', description: '', @@ -380,15 +350,6 @@ Generated by [AVA](https://avajs.dev). jsonType: 'array', name: 'common_acs_entrance_ids', }, - { - deprecationMessage: '', - description: '', - format: 'string', - isDeprecated: false, - isUndocumented: false, - jsonType: 'string', - name: 'credential_id', - }, { deprecationMessage: '', description: '', @@ -398,15 +359,6 @@ Generated by [AVA](https://avajs.dev). jsonType: 'array', name: 'guest_acs_entrance_ids', }, - { - deprecationMessage: '', - description: '', - format: 'boolean', - isDeprecated: false, - isUndocumented: false, - jsonType: 'boolean', - name: 'is_valid', - }, { deprecationMessage: '', description: '', @@ -947,10 +899,10 @@ Generated by [AVA](https://avajs.dev). }, { deprecationMessage: '', - description: 'Warnings associated with the `acs_system`.', + description: '', format: 'list', isDeprecated: false, - isUndocumented: false, + isUndocumented: true, jsonType: 'array', name: 'warnings', }, @@ -1114,15 +1066,6 @@ Generated by [AVA](https://avajs.dev). jsonType: 'boolean', name: 'is_latest_desired_state_synced_with_provider', }, - { - deprecationMessage: '', - description: '', - format: 'boolean', - isDeprecated: false, - isUndocumented: false, - jsonType: 'boolean', - name: 'is_managed', - }, { deprecationMessage: '', description: '', @@ -1373,39 +1316,6 @@ Generated by [AVA](https://avajs.dev). }, title: '', }, - { - codeSamples: [], - deprecationMessage: '', - description: '', - isDeprecated: false, - isUndocumented: false, - name: 'list_accessible_entrances', - path: '/acs/access_groups/list_accessible_entrances', - request: { - methods: [ - 'POST', - ], - parameters: [ - { - deprecationMessage: '', - description: '', - format: 'id', - isDeprecated: false, - isRequired: true, - isUndocumented: false, - jsonType: 'string', - name: 'acs_access_group_id', - }, - ], - preferredMethod: 'POST', - semanticMethod: 'POST', - }, - response: { - description: 'OK', - responseType: 'void', - }, - title: '', - }, { codeSamples: [], deprecationMessage: '', @@ -1490,92 +1400,6 @@ Generated by [AVA](https://avajs.dev). path: '/acs/access_groups', subroutes: [], }, - { - endpoints: [ - { - codeSamples: [], - deprecationMessage: '', - description: '', - isDeprecated: false, - isUndocumented: false, - name: 'get', - path: '/acs/access_groups/unmanaged/get', - request: { - methods: [ - 'POST', - ], - parameters: [ - { - deprecationMessage: '', - description: '', - format: 'id', - isDeprecated: false, - isRequired: true, - isUndocumented: false, - jsonType: 'string', - name: 'acs_access_group_id', - }, - ], - preferredMethod: 'POST', - semanticMethod: 'POST', - }, - response: { - description: 'OK', - responseType: 'void', - }, - title: '', - }, - { - codeSamples: [], - deprecationMessage: '', - description: '', - isDeprecated: false, - isUndocumented: false, - name: 'list', - path: '/acs/access_groups/unmanaged/list', - request: { - methods: [ - 'POST', - ], - parameters: [ - { - deprecationMessage: '', - description: '', - format: 'id', - isDeprecated: false, - isRequired: false, - isUndocumented: false, - jsonType: 'string', - name: 'acs_system_id', - }, - { - deprecationMessage: '', - description: '', - format: 'id', - isDeprecated: false, - isRequired: false, - isUndocumented: false, - jsonType: 'string', - name: 'acs_user_id', - }, - ], - preferredMethod: 'POST', - semanticMethod: 'POST', - }, - response: { - description: 'OK', - responseType: 'void', - }, - title: '', - }, - ], - name: 'unmanaged', - namespace: { - path: '/acs', - }, - path: '/acs/access_groups/unmanaged', - subroutes: [], - }, { endpoints: [ { @@ -2313,71 +2137,6 @@ Generated by [AVA](https://avajs.dev). path: '/acs/credentials', subroutes: [], }, - { - endpoints: [ - { - codeSamples: [], - deprecationMessage: '', - description: '', - isDeprecated: false, - isUndocumented: false, - name: 'get', - path: '/acs/credentials/unmanaged/get', - request: { - methods: [ - 'POST', - ], - parameters: [ - { - deprecationMessage: '', - description: '', - format: 'id', - isDeprecated: false, - isRequired: true, - isUndocumented: false, - jsonType: 'string', - name: 'acs_credential_id', - }, - ], - preferredMethod: 'POST', - semanticMethod: 'POST', - }, - response: { - description: 'OK', - responseType: 'void', - }, - title: '', - }, - { - codeSamples: [], - deprecationMessage: '', - description: '', - isDeprecated: false, - isUndocumented: false, - name: 'list', - path: '/acs/credentials/unmanaged/list', - request: { - methods: [ - 'POST', - ], - parameters: [], - preferredMethod: 'POST', - semanticMethod: 'POST', - }, - response: { - description: 'OK', - responseType: 'void', - }, - title: '', - }, - ], - name: 'unmanaged', - namespace: { - path: '/acs', - }, - path: '/acs/credentials/unmanaged', - subroutes: [], - }, { endpoints: [ { @@ -3450,122 +3209,6 @@ Generated by [AVA](https://avajs.dev). path: '/acs/users', subroutes: [], }, - { - endpoints: [ - { - codeSamples: [], - deprecationMessage: '', - description: '', - isDeprecated: false, - isUndocumented: false, - name: 'get', - path: '/acs/users/unmanaged/get', - request: { - methods: [ - 'POST', - ], - parameters: [ - { - deprecationMessage: '', - description: '', - format: 'id', - isDeprecated: false, - isRequired: true, - isUndocumented: false, - jsonType: 'string', - name: 'acs_user_id', - }, - ], - preferredMethod: 'POST', - semanticMethod: 'POST', - }, - response: { - description: 'OK', - responseType: 'void', - }, - title: '', - }, - { - codeSamples: [], - deprecationMessage: '', - description: '', - isDeprecated: false, - isUndocumented: false, - name: 'list', - path: '/acs/users/unmanaged/list', - request: { - methods: [ - 'POST', - ], - parameters: [ - { - deprecationMessage: '', - description: '', - format: 'id', - isDeprecated: false, - isRequired: false, - isUndocumented: false, - jsonType: 'string', - name: 'acs_system_id', - }, - { - deprecationMessage: '', - description: '', - format: 'number', - isDeprecated: false, - isRequired: false, - isUndocumented: false, - jsonType: 'number', - name: 'limit', - }, - { - deprecationMessage: '', - description: '', - format: 'string', - isDeprecated: false, - isRequired: false, - isUndocumented: false, - jsonType: 'string', - name: 'user_identity_email_address', - }, - { - deprecationMessage: '', - description: '', - format: 'id', - isDeprecated: false, - isRequired: false, - isUndocumented: false, - jsonType: 'string', - name: 'user_identity_id', - }, - { - deprecationMessage: '', - description: '', - format: 'string', - isDeprecated: false, - isRequired: false, - isUndocumented: false, - jsonType: 'string', - name: 'user_identity_phone_number', - }, - ], - preferredMethod: 'POST', - semanticMethod: 'POST', - }, - response: { - description: 'OK', - responseType: 'void', - }, - title: '', - }, - ], - name: 'unmanaged', - namespace: { - path: '/acs', - }, - path: '/acs/users/unmanaged', - subroutes: [], - }, ], title: 'Seam Connect', } diff --git a/test/snapshots/seam-blueprint.test.ts.snap b/test/snapshots/seam-blueprint.test.ts.snap index bd223fc0521b899aec33e8301a6fbf7c2826058b..e8d3073973101785ee849e0662653b54ec55c490 100644 GIT binary patch literal 19176 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 literal 21096 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 u|GJeop4X6qzca&@{