docs(scaffolder): add info about custom field explorer
Signed-off-by: Phil Kuang <pkuang@factset.com>
This commit is contained in:
@@ -35,6 +35,7 @@ import { TaskStep } from '@backstage/plugin-scaffolder-common';
|
||||
import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
|
||||
import { UIOptionsType } from '@rjsf/utils';
|
||||
import { UiSchema } from '@rjsf/utils';
|
||||
import { z } from 'zod';
|
||||
|
||||
// @alpha
|
||||
export function createNextScaffolderFieldExtension<
|
||||
@@ -90,13 +91,12 @@ export const EntityPickerFieldExtension: FieldExtensionComponent<
|
||||
>;
|
||||
|
||||
// @public
|
||||
export type EntityPickerUiOptions =
|
||||
typeof EntityPickerUiOptionsSchema.schemaType;
|
||||
export type EntityPickerUiOptions = typeof EntityPickerUiOptionsSchema.type;
|
||||
|
||||
// @public (undocumented)
|
||||
export const EntityPickerUiOptionsSchema: {
|
||||
jsonSchema: JSONSchema7;
|
||||
schemaType: {
|
||||
schema: JSONSchema7;
|
||||
type: {
|
||||
defaultKind?: string | undefined;
|
||||
defaultNamespace?: string | false | undefined;
|
||||
allowedKinds?: string[] | undefined;
|
||||
@@ -116,12 +116,12 @@ export const EntityTagsPickerFieldExtension: FieldExtensionComponent<
|
||||
|
||||
// @public
|
||||
export type EntityTagsPickerUiOptions =
|
||||
typeof EntityTagsPickerUiOptionsSchema.schemaType;
|
||||
typeof EntityTagsPickerUiOptionsSchema.type;
|
||||
|
||||
// @public (undocumented)
|
||||
export const EntityTagsPickerUiOptionsSchema: {
|
||||
jsonSchema: JSONSchema7;
|
||||
schemaType: {
|
||||
schema: JSONSchema7;
|
||||
type: {
|
||||
showCounts?: boolean | undefined;
|
||||
kinds?: string[] | undefined;
|
||||
helperText?: string | undefined;
|
||||
@@ -192,6 +192,14 @@ export type LogEvent = {
|
||||
taskId: string;
|
||||
};
|
||||
|
||||
// @public
|
||||
export function makeJsonSchemaFromZod<T extends z.ZodType>(
|
||||
schema: T,
|
||||
): {
|
||||
schema: JSONSchema7;
|
||||
type: T extends z.ZodType<any, any, infer I> ? I : never;
|
||||
};
|
||||
|
||||
// @alpha
|
||||
export type NextCustomFieldValidator<TFieldReturnValue> = (
|
||||
data: TFieldReturnValue,
|
||||
@@ -262,12 +270,12 @@ export const OwnedEntityPickerFieldExtension: FieldExtensionComponent<
|
||||
|
||||
// @public
|
||||
export type OwnedEntityPickerUiOptions =
|
||||
typeof OwnedEntityPickerUiOptionsSchema.schemaType;
|
||||
typeof OwnedEntityPickerUiOptionsSchema.type;
|
||||
|
||||
// @public (undocumented)
|
||||
export const OwnedEntityPickerUiOptionsSchema: {
|
||||
jsonSchema: JSONSchema7;
|
||||
schemaType: {
|
||||
schema: JSONSchema7;
|
||||
type: {
|
||||
defaultKind?: string | undefined;
|
||||
defaultNamespace?: string | false | undefined;
|
||||
allowedKinds?: string[] | undefined;
|
||||
@@ -286,12 +294,12 @@ export const OwnerPickerFieldExtension: FieldExtensionComponent<
|
||||
>;
|
||||
|
||||
// @public
|
||||
export type OwnerPickerUiOptions = typeof OwnerPickerUiOptionsSchema.schemaType;
|
||||
export type OwnerPickerUiOptions = typeof OwnerPickerUiOptionsSchema.type;
|
||||
|
||||
// @public (undocumented)
|
||||
export const OwnerPickerUiOptionsSchema: {
|
||||
jsonSchema: JSONSchema7;
|
||||
schemaType: {
|
||||
schema: JSONSchema7;
|
||||
type: {
|
||||
defaultNamespace?: string | false | undefined;
|
||||
allowedKinds?: string[] | undefined;
|
||||
allowArbitraryValues?: boolean | undefined;
|
||||
@@ -333,13 +341,12 @@ export const RepoUrlPickerFieldExtension: FieldExtensionComponent<
|
||||
>;
|
||||
|
||||
// @public
|
||||
export type RepoUrlPickerUiOptions =
|
||||
typeof RepoUrlPickerUiOptionsSchema.schemaType;
|
||||
export type RepoUrlPickerUiOptions = typeof RepoUrlPickerUiOptionsSchema.type;
|
||||
|
||||
// @public (undocumented)
|
||||
export const RepoUrlPickerUiOptionsSchema: {
|
||||
jsonSchema: JSONSchema7;
|
||||
schemaType: {
|
||||
schema: JSONSchema7;
|
||||
type: {
|
||||
allowedOwners?: string[] | undefined;
|
||||
allowedOrganizations?: string[] | undefined;
|
||||
allowedRepos?: string[] | undefined;
|
||||
|
||||
@@ -19,8 +19,8 @@ import { makeJsonSchemaFromZod } from '../utils';
|
||||
const EntityNamePickerReturnValueSchema = makeJsonSchemaFromZod(z.string());
|
||||
|
||||
export type EntityNamePickerReturnValue =
|
||||
typeof EntityNamePickerReturnValueSchema.schemaType;
|
||||
typeof EntityNamePickerReturnValueSchema.type;
|
||||
|
||||
export const EntityNamePickerSchema = {
|
||||
returnValue: EntityNamePickerReturnValueSchema.jsonSchema,
|
||||
returnValue: EntityNamePickerReturnValueSchema.schema,
|
||||
};
|
||||
|
||||
@@ -52,13 +52,11 @@ const EntityPickerReturnValueSchema = makeJsonSchemaFromZod(z.string());
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export type EntityPickerUiOptions =
|
||||
typeof EntityPickerUiOptionsSchema.schemaType;
|
||||
export type EntityPickerUiOptions = typeof EntityPickerUiOptionsSchema.type;
|
||||
|
||||
export type EntityPickerReturnValue =
|
||||
typeof EntityPickerReturnValueSchema.schemaType;
|
||||
export type EntityPickerReturnValue = typeof EntityPickerReturnValueSchema.type;
|
||||
|
||||
export const EntityPickerSchema = {
|
||||
uiOptions: EntityPickerUiOptionsSchema.jsonSchema,
|
||||
returnValue: EntityPickerReturnValueSchema.jsonSchema,
|
||||
uiOptions: EntityPickerUiOptionsSchema.schema,
|
||||
returnValue: EntityPickerReturnValueSchema.schema,
|
||||
};
|
||||
|
||||
@@ -44,12 +44,12 @@ const EntityTagsPickerReturnValueSchema = makeJsonSchemaFromZod(
|
||||
* @public
|
||||
*/
|
||||
export type EntityTagsPickerUiOptions =
|
||||
typeof EntityTagsPickerUiOptionsSchema.schemaType;
|
||||
typeof EntityTagsPickerUiOptionsSchema.type;
|
||||
|
||||
export type EntityTagsPickerReturnValue =
|
||||
typeof EntityTagsPickerReturnValueSchema.schemaType;
|
||||
typeof EntityTagsPickerReturnValueSchema.type;
|
||||
|
||||
export const EntityTagsPickerSchema = {
|
||||
uiOptions: EntityTagsPickerUiOptionsSchema.jsonSchema,
|
||||
returnValue: EntityTagsPickerReturnValueSchema.jsonSchema,
|
||||
uiOptions: EntityTagsPickerUiOptionsSchema.schema,
|
||||
returnValue: EntityTagsPickerReturnValueSchema.schema,
|
||||
};
|
||||
|
||||
@@ -53,12 +53,12 @@ const OwnedEntityPickerReturnValueSchema = makeJsonSchemaFromZod(z.string());
|
||||
* @public
|
||||
*/
|
||||
export type OwnedEntityPickerUiOptions =
|
||||
typeof OwnedEntityPickerUiOptionsSchema.schemaType;
|
||||
typeof OwnedEntityPickerUiOptionsSchema.type;
|
||||
|
||||
export type OwnedEntityPickerReturnValue =
|
||||
typeof OwnedEntityPickerReturnValueSchema.schemaType;
|
||||
typeof OwnedEntityPickerReturnValueSchema.type;
|
||||
|
||||
export const OwnedEntityPickerSchema = {
|
||||
uiOptions: OwnedEntityPickerUiOptionsSchema.jsonSchema,
|
||||
returnValue: OwnedEntityPickerReturnValueSchema.jsonSchema,
|
||||
uiOptions: OwnedEntityPickerUiOptionsSchema.schema,
|
||||
returnValue: OwnedEntityPickerReturnValueSchema.schema,
|
||||
};
|
||||
|
||||
@@ -49,12 +49,11 @@ const OwnerPickerReturnValueSchema = makeJsonSchemaFromZod(z.string());
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export type OwnerPickerUiOptions = typeof OwnerPickerUiOptionsSchema.schemaType;
|
||||
export type OwnerPickerUiOptions = typeof OwnerPickerUiOptionsSchema.type;
|
||||
|
||||
export type OwnerPickerReturnValue =
|
||||
typeof OwnerPickerReturnValueSchema.schemaType;
|
||||
export type OwnerPickerReturnValue = typeof OwnerPickerReturnValueSchema.type;
|
||||
|
||||
export const OwnerPickerSchema = {
|
||||
uiOptions: OwnerPickerUiOptionsSchema.jsonSchema,
|
||||
returnValue: OwnerPickerReturnValueSchema.jsonSchema,
|
||||
uiOptions: OwnerPickerUiOptionsSchema.schema,
|
||||
returnValue: OwnerPickerReturnValueSchema.schema,
|
||||
};
|
||||
|
||||
@@ -85,16 +85,15 @@ const RepoUrlPickerReturnValueSchema = makeJsonSchemaFromZod(z.string());
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export type RepoUrlPickerUiOptions =
|
||||
typeof RepoUrlPickerUiOptionsSchema.schemaType;
|
||||
export type RepoUrlPickerUiOptions = typeof RepoUrlPickerUiOptionsSchema.type;
|
||||
|
||||
export type RepoUrlPickerReturnValue =
|
||||
typeof RepoUrlPickerReturnValueSchema.schemaType;
|
||||
typeof RepoUrlPickerReturnValueSchema.type;
|
||||
|
||||
// NOTE: There is a bug with this failing validation in the custom field explorer due
|
||||
// to https://github.com/rjsf-team/react-jsonschema-form/issues/675 even if
|
||||
// requestUserCredentials is not defined
|
||||
export const RepoUrlPickerSchema = {
|
||||
uiOptions: RepoUrlPickerUiOptionsSchema.jsonSchema,
|
||||
returnValue: RepoUrlPickerReturnValueSchema.jsonSchema,
|
||||
uiOptions: RepoUrlPickerUiOptionsSchema.schema,
|
||||
returnValue: RepoUrlPickerReturnValueSchema.schema,
|
||||
};
|
||||
|
||||
@@ -18,3 +18,4 @@ export * from './OwnerPicker';
|
||||
export * from './RepoUrlPicker';
|
||||
export * from './OwnedEntityPicker';
|
||||
export * from './EntityTagsPicker';
|
||||
export { makeJsonSchemaFromZod } from './utils';
|
||||
|
||||
@@ -18,17 +18,18 @@ import { z } from 'zod';
|
||||
import zodToJsonSchema from 'zod-to-json-schema';
|
||||
|
||||
/**
|
||||
* @public
|
||||
* Utility function to convert zod schemas to JSON schemas with
|
||||
* type inference extraction that abstracts away zod typings
|
||||
*/
|
||||
export function makeJsonSchemaFromZod<T extends z.ZodType>(
|
||||
schema: T,
|
||||
): {
|
||||
jsonSchema: JSONSchema7;
|
||||
schemaType: T extends z.ZodType<any, any, infer I> ? I : never;
|
||||
schema: JSONSchema7;
|
||||
type: T extends z.ZodType<any, any, infer I> ? I : never;
|
||||
} {
|
||||
return {
|
||||
jsonSchema: zodToJsonSchema(schema) as JSONSchema7,
|
||||
schemaType: null as any,
|
||||
schema: zodToJsonSchema(schema) as JSONSchema7,
|
||||
type: null as any,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user