Skip to content

Commit

Permalink
fix: Add props for Resource deprecation, documentation, and draft sta…
Browse files Browse the repository at this point in the history
…tus (#115)

* Add props for Resource deprecation, documentation, and draft status

* Add fixture resources to test new props

* ci: Format code

---------

Co-authored-by: Seam Bot <[email protected]>
  • Loading branch information
andrii-balitskyi and seambot authored Oct 9, 2024
1 parent 62cdd9f commit 1fc353e
Show file tree
Hide file tree
Showing 7 changed files with 278 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/lib/blueprint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ export interface Resource {
resourceType: string
properties: Property[]
description: string
isDeprecated: boolean
deprecationMessage: string
isUndocumented: boolean
undocumentedMessage: string
isDraft: boolean
draftMessage: string
}

export interface Namespace {
Expand Down Expand Up @@ -701,6 +707,12 @@ const createResources = (
resourceType: schemaName,
properties: createProperties(schema.properties, [schemaName]),
description: schema.description ?? '',
isDeprecated: schema.deprecated ?? false,
deprecationMessage: schema['x-deprecated'] ?? '',
isUndocumented: (schema['x-undocumented'] ?? '').length > 0,
undocumentedMessage: schema['x-undocumented'] ?? '',
isDraft: (schema['x-draft'] ?? '').length > 0,
draftMessage: schema['x-draft'] ?? '',
},
}
}
Expand Down
4 changes: 4 additions & 0 deletions src/lib/openapi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@ export interface OpenapiSchema {
required?: string[]
format?: string
description?: string
deprecated?: boolean
'x-deprecated'?: string
'x-draft'?: string
'x-undocumented'?: string
}

export interface OpenapiComponents {
Expand Down
40 changes: 40 additions & 0 deletions test/fixtures/types/openapi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,46 @@ export default {
},
required: ['plane_id', 'name'],
},
deprecated_resource: {
type: 'object',
description: 'A deprecated resource.',
properties: {
deprecated_resource_id: {
description: 'Deprecated resource id',
format: 'uuid',
type: 'string',
},
},
required: ['deprecated_resource_id'],
deprecated: true,
'x-deprecated': 'This resource is deprecated',
},
draft_resource: {
type: 'object',
description: 'A draft resource.',
properties: {
draft_resource_id: {
description: 'Draft resource id',
format: 'uuid',
type: 'string',
},
},
required: ['draft_resource_id'],
'x-draft': 'This resource is draft',
},
undocumented_resource: {
type: 'object',
description: 'A undocumented resource.',
properties: {
undocumented_resource_id: {
description: 'Undocumented resource id',
format: 'uuid',
type: 'string',
},
},
required: ['undocumented_resource_id'],
'x-undocumented': 'This resource is undocumented',
},
},
},
paths: {
Expand Down
168 changes: 168 additions & 0 deletions test/snapshots/blueprint.test.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,61 @@ Generated by [AVA](https://avajs.dev).
{
resources: {
deprecated_resource: {
deprecationMessage: 'This resource is deprecated',
description: 'A deprecated resource.',
draftMessage: '',
isDeprecated: true,
isDraft: false,
isUndocumented: false,
properties: [
{
deprecationMessage: '',
description: 'Deprecated resource id',
draftMessage: '',
format: 'id',
isDeprecated: false,
isDraft: false,
isUndocumented: false,
jsonType: 'string',
name: 'deprecated_resource_id',
undocumentedMessage: '',
},
],
resourceType: 'deprecated_resource',
undocumentedMessage: '',
},
draft_resource: {
deprecationMessage: '',
description: 'A draft resource.',
draftMessage: 'This resource is draft',
isDeprecated: false,
isDraft: true,
isUndocumented: false,
properties: [
{
deprecationMessage: '',
description: 'Draft resource id',
draftMessage: '',
format: 'id',
isDeprecated: false,
isDraft: false,
isUndocumented: false,
jsonType: 'string',
name: 'draft_resource_id',
undocumentedMessage: '',
},
],
resourceType: 'draft_resource',
undocumentedMessage: '',
},
foo: {
deprecationMessage: '',
description: 'A foo resource.',
draftMessage: '',
isDeprecated: false,
isDraft: false,
isUndocumented: false,
properties: [
{
deprecationMessage: '',
Expand Down Expand Up @@ -137,9 +190,15 @@ Generated by [AVA](https://avajs.dev).
},
],
resourceType: 'foo',
undocumentedMessage: '',
},
plane: {
deprecationMessage: '',
description: 'A plane resource.',
draftMessage: '',
isDeprecated: false,
isDraft: false,
isUndocumented: false,
properties: [
{
deprecationMessage: '',
Expand Down Expand Up @@ -167,6 +226,31 @@ Generated by [AVA](https://avajs.dev).
},
],
resourceType: 'plane',
undocumentedMessage: '',
},
undocumented_resource: {
deprecationMessage: '',
description: 'A undocumented resource.',
draftMessage: '',
isDeprecated: false,
isDraft: false,
isUndocumented: true,
properties: [
{
deprecationMessage: '',
description: 'Undocumented resource id',
draftMessage: '',
format: 'id',
isDeprecated: false,
isDraft: false,
isUndocumented: false,
jsonType: 'string',
name: 'undocumented_resource_id',
undocumentedMessage: '',
},
],
resourceType: 'undocumented_resource',
undocumentedMessage: 'This resource is undocumented',
},
},
routes: [
Expand Down Expand Up @@ -2559,8 +2643,61 @@ Generated by [AVA](https://avajs.dev).
{
resources: {
deprecated_resource: {
deprecationMessage: 'This resource is deprecated',
description: 'A deprecated resource.',
draftMessage: '',
isDeprecated: true,
isDraft: false,
isUndocumented: false,
properties: [
{
deprecationMessage: '',
description: 'Deprecated resource id',
draftMessage: '',
format: 'id',
isDeprecated: false,
isDraft: false,
isUndocumented: false,
jsonType: 'string',
name: 'deprecated_resource_id',
undocumentedMessage: '',
},
],
resourceType: 'deprecated_resource',
undocumentedMessage: '',
},
draft_resource: {
deprecationMessage: '',
description: 'A draft resource.',
draftMessage: 'This resource is draft',
isDeprecated: false,
isDraft: true,
isUndocumented: false,
properties: [
{
deprecationMessage: '',
description: 'Draft resource id',
draftMessage: '',
format: 'id',
isDeprecated: false,
isDraft: false,
isUndocumented: false,
jsonType: 'string',
name: 'draft_resource_id',
undocumentedMessage: '',
},
],
resourceType: 'draft_resource',
undocumentedMessage: '',
},
foo: {
deprecationMessage: '',
description: 'A foo resource.',
draftMessage: '',
isDeprecated: false,
isDraft: false,
isUndocumented: false,
properties: [
{
deprecationMessage: '',
Expand Down Expand Up @@ -2686,9 +2823,15 @@ Generated by [AVA](https://avajs.dev).
},
],
resourceType: 'foo',
undocumentedMessage: '',
},
plane: {
deprecationMessage: '',
description: 'A plane resource.',
draftMessage: '',
isDeprecated: false,
isDraft: false,
isUndocumented: false,
properties: [
{
deprecationMessage: '',
Expand Down Expand Up @@ -2716,6 +2859,31 @@ Generated by [AVA](https://avajs.dev).
},
],
resourceType: 'plane',
undocumentedMessage: '',
},
undocumented_resource: {
deprecationMessage: '',
description: 'A undocumented resource.',
draftMessage: '',
isDeprecated: false,
isDraft: false,
isUndocumented: true,
properties: [
{
deprecationMessage: '',
description: 'Undocumented resource id',
draftMessage: '',
format: 'id',
isDeprecated: false,
isDraft: false,
isUndocumented: false,
jsonType: 'string',
name: 'undocumented_resource_id',
undocumentedMessage: '',
},
],
resourceType: 'undocumented_resource',
undocumentedMessage: 'This resource is undocumented',
},
},
routes: [
Expand Down
Binary file modified test/snapshots/blueprint.test.ts.snap
Binary file not shown.
Loading

0 comments on commit 1fc353e

Please sign in to comment.