diff --git a/packages/generator-spectral/package.json b/packages/generator-spectral/package.json index 15372e86..0e367140 100644 --- a/packages/generator-spectral/package.json +++ b/packages/generator-spectral/package.json @@ -40,7 +40,7 @@ ], "dependencies": { "@apidevtools/swagger-parser": "10.1.0", - "@prismatic-io/spectral": "8.0.3", + "@prismatic-io/spectral": "8.0.4", "lodash": "4.17.21", "number-to-words": "1.2.4", "openapi-types": "11.0.1", diff --git a/packages/spectral/package.json b/packages/spectral/package.json index d6a62589..bf71e7e0 100644 --- a/packages/spectral/package.json +++ b/packages/spectral/package.json @@ -1,6 +1,6 @@ { "name": "@prismatic-io/spectral", - "version": "8.0.3", + "version": "8.0.4", "description": "Utility library for building Prismatic components", "keywords": [ "prismatic" diff --git a/packages/spectral/src/index.ts b/packages/spectral/src/index.ts index aac570d2..79089e05 100644 --- a/packages/spectral/src/index.ts +++ b/packages/spectral/src/index.ts @@ -25,6 +25,7 @@ import { TriggerPayload, DataSourceConfigVar, ConfigPages, + OnPremiseConnectionDefinition, } from "./types"; import { convertComponent } from "./serverTypes/convert"; import { convertIntegration } from "./serverTypes/convertIntegration"; @@ -184,6 +185,16 @@ export const connection = ( definition: T ): T => definition; +/** + * For information on writing custom component connections using on-premise resources, see + * https://prismatic.io/docs/custom-components/writing-custom-components/#adding-connections. + * @param definition An OnPremiseConnectionDefinition object that describes the type of a connection for a custom component action or trigger, and information on how it should be displayed in the Prismatic WebApp. + * @returns This function validates the shape of the `definition` object provided and returns the same connection object. + */ +export const onPremiseConnection = ( + definition: T +): T => definition; + /** * For information on writing custom component connections, see * https://prismatic.io/docs/custom-components/writing-custom-components/#adding-connections. diff --git a/packages/spectral/src/serverTypes/index.ts b/packages/spectral/src/serverTypes/index.ts index 4a74821c..42825ff9 100644 --- a/packages/spectral/src/serverTypes/index.ts +++ b/packages/spectral/src/serverTypes/index.ts @@ -206,7 +206,7 @@ export interface Connection { comments?: string; oauth2Type?: OAuth2Type; iconPath?: string; - inputs: (Input & { shown?: boolean })[]; + inputs: (Input & { shown?: boolean; onPremiseControlled?: boolean })[]; } export interface ConnectionValue { diff --git a/packages/spectral/src/types-tests/ConnectionDefinition.test-d.ts b/packages/spectral/src/types-tests/ConnectionDefinition.test-d.ts new file mode 100644 index 00000000..b7dc13ee --- /dev/null +++ b/packages/spectral/src/types-tests/ConnectionDefinition.test-d.ts @@ -0,0 +1,64 @@ +import { expectAssignable, expectNotAssignable } from "tsd"; +import { onPremiseConnection, OnPremiseConnectionDefinition } from ".."; + +const valid = onPremiseConnection({ + key: "basic", + label: "Basic Connection", + inputs: { + host: { + label: "Host", + placeholder: "Host", + type: "string", + required: true, + shown: true, + onPremiseControlled: true, + example: "192.168.0.1", + }, + port: { + label: "Port", + placeholder: "Port", + type: "string", + required: true, + shown: true, + onPremiseControlled: true, + default: "1433", + }, + username: { + label: "Username", + placeholder: "Username", + type: "string", + required: false, + shown: true, + }, + password: { + label: "Password", + placeholder: "Password", + type: "password", + required: false, + shown: true, + }, + }, +}); +expectAssignable(valid); + +const invalid = { + key: "basic", + label: "Basic Connection", + inputs: { + username: { + label: "Username", + placeholder: "Username", + type: "string", + required: false, + shown: true, + }, + password: { + label: "Password", + placeholder: "Password", + type: "password", + required: false, + shown: true, + }, + }, +}; +expectNotAssignable(invalid); diff --git a/packages/spectral/src/types/ConnectionDefinition.ts b/packages/spectral/src/types/ConnectionDefinition.ts index 083e9592..5dc16dac 100644 --- a/packages/spectral/src/types/ConnectionDefinition.ts +++ b/packages/spectral/src/types/ConnectionDefinition.ts @@ -24,6 +24,17 @@ export interface DefaultConnectionDefinition extends BaseConnectionDefinition { }; } +type OnPremiseConnectionInput = ConnectionInput & { onPremiseControlled: true }; + +export interface OnPremiseConnectionDefinition + extends BaseConnectionDefinition { + inputs: { + host: OnPremiseConnectionInput; + port: OnPremiseConnectionInput; + [key: string]: ConnectionInput; + }; +} + interface OAuth2AuthorizationCodeConnectionDefinition extends BaseConnectionDefinition { oauth2Type: OAuth2Type.AuthorizationCode; @@ -57,5 +68,5 @@ export type OAuth2ConnectionDefinition = export type ConnectionDefinition = | DefaultConnectionDefinition - | OAuth2AuthorizationCodeConnectionDefinition - | OAuth2ClientCredentialConnectionDefinition; + | OnPremiseConnectionDefinition + | OAuth2ConnectionDefinition;