UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

236 lines (235 loc) 8.17 kB
import type { OpenAPIV3 } from 'openapi-types'; import type { Action } from '../Actions'; import FieldCollection from '../Collections/FieldCollection'; import { type AbstractMixable, type Model, type OpenApiSchema, type UnknownRecord } from '../Contracts'; import type { Field } from '../Fields'; import { Filter } from '../Filters'; import type AvonRequest from '../Http/Requests/AvonRequest'; import { Ordering } from '../Orderings'; import type { Repository } from '../Repositories'; declare const _default: <TModel, T extends AbstractMixable = AbstractMixable>(Parent: T) => (abstract new (...args: import("../Contracts").Args) => { resource: Model; /** * Indicates resource is available to display in Swagger UI. */ availableForSwagger: boolean; /** * Indicates resource is available for `index` API. */ availableForIndex: boolean; /** * Indicates resource is available for `detail` API. */ availableForDetail: boolean; /** * Indicates resource is available for `create` API. */ availableForCreation: boolean; /** * Indicates resource is available for `update` API. */ availableForUpdate: boolean; /** * Indicates resource is available for `delete` API. */ availableForDelete: boolean; /** * Indicates resource is available for `force delete` API. */ availableForForceDelete: boolean; /** * Indicates resource is available for `restore` API. */ availableForRestore: boolean; /** * Indicates resource is available for `review` API. */ availableForReview: boolean; /** * Get the Open API json schema. */ schema(request: AvonRequest): OpenAPIV3.PathsObject; resourceIndexSchema(request: AvonRequest): OpenAPIV3.PathItemObject | undefined; resourceContentSchema(fields: Record<string, OpenApiSchema>): { type: string; items: { type: string; properties: { metadata: OpenApiSchema; authorization: { type: string; properties: { authorizedToForceDelete?: { type: string; default: boolean; description: string; } | undefined; authorizedToRestore?: { type: string; default: boolean; description: string; } | undefined; authorizedToReview?: { type: string; default: boolean; description: string; } | undefined; authorizedToView: { type: string; default: boolean; description: string; }; authorizedToUpdate: { type: string; default: boolean; description: string; }; authorizedToDelete: { type: string; default: boolean; description: string; }; }; }; fields: { type: string; properties: Record<string, OpenApiSchema>; }; }; }; }; /** * Get the resource metadata schema. */ resourceMetaDataSchema(): OpenApiSchema; /** * Get the searching parameters for index schema. */ searchParameters(request: AvonRequest): OpenAPIV3.ParameterObject[]; /** * Get pagination parameters for index schema. */ paginationParameters(request: AvonRequest): OpenAPIV3.ParameterObject[]; /** * Get soft delete resource parameters for schema. */ softDeleteParameters(request: AvonRequest): OpenAPIV3.ParameterObject[]; /** * Get ordering parameters. */ orderingParameters(request: AvonRequest): OpenAPIV3.ParameterObject[]; /** * Get filtering parameters. */ filteringParameters(request: AvonRequest): OpenAPIV3.ParameterObject[]; /** * Get resource store schema. */ resourceStoreSchema(request: AvonRequest): OpenAPIV3.PathItemObject | undefined; /** * */ resourceDetailSchema(request: AvonRequest): OpenAPIV3.PathItemObject | undefined; /** * */ resourceLookupSchema(request: AvonRequest): OpenAPIV3.PathItemObject | undefined; /** * */ resourceReviewSchema(request: AvonRequest): OpenAPIV3.PathItemObject | undefined; /** * */ resourceUpdateSchema(request: AvonRequest): OpenAPIV3.PathItemObject | undefined; /** * */ resourceDeleteSchema(request: AvonRequest): OpenAPIV3.PathItemObject | undefined; /** * */ resourceForceDeleteSchema(request: AvonRequest): OpenAPIV3.PathItemObject | undefined; /** * */ resourceRestoreSchema(request: AvonRequest): OpenAPIV3.PathItemObject | undefined; /** * Get the Open API json schema for relationship fields. */ actionsSchema(request: AvonRequest): OpenAPIV3.PathsObject; /** * Get the Open API json schema for relationship fields. */ associationSchema(request: AvonRequest): OpenAPIV3.PathsObject; /** * Get the single resource content schema. */ singleResourceContent(request: AvonRequest, schema?: Record<string, OpenApiSchema>): Record<string, OpenAPIV3.MediaTypeObject>; paginatedResponseSchema(data: UnknownRecord): Record<string, OpenAPIV3.MediaTypeObject>; jsonResponseSchema(data: UnknownRecord, meta?: UnknownRecord): Record<string, OpenAPIV3.MediaTypeObject>; /** * Get the single resource content schema. */ reviewResourceContent(request: AvonRequest): Record<string, OpenAPIV3.MediaTypeObject>; /** * Get the single resource path parameters. */ singleResourcePathParameters(request: AvonRequest): OpenAPIV3.ParameterObject[]; /** * Get the single resource path parameters. */ actionQueryParameters(request: AvonRequest, action: Action): OpenAPIV3.ParameterObject[]; /** * Get the API paths. */ apis(request: AvonRequest): Record<string, string>; /** * Get route key name. */ getRouteKeyName(): string; /** * Get the schema label. */ label(): string; /** * Format the given schema for responses. */ formatResponseFields(request: AvonRequest, fields: FieldCollection): Record<string, OpenApiSchema>; /** * Format the given schema for responses. */ formatPayloadFields(request: AvonRequest, fields: FieldCollection): Record<string, OpenApiSchema>; /** * name */ authorizationResponses(): OpenAPIV3.ResponsesObject; /** * name */ errorsResponses(): OpenAPIV3.ResponsesObject; /** * name */ validationResponses(): OpenAPIV3.ResponsesObject; /** * Get the swagger-ui possible request body contents. */ accepts(): string[]; uriKey(): string; availableFields(request: AvonRequest): FieldCollection; perPageOptions(): number[]; availableFieldsOnForms(request: AvonRequest): FieldCollection; resolveFilters(request: AvonRequest): Filter[]; resolveOrderings(request: AvonRequest): Ordering[]; availableFieldsOnIndexOrDetail(request: AvonRequest): FieldCollection; fieldsForIndex(request: AvonRequest): Field[]; fieldsForDetail(request: AvonRequest): Field[]; fieldsForReview(request: AvonRequest): Field[]; fieldsForCreate(request: AvonRequest): Field[]; fieldsForUpdate(request: AvonRequest): Field[]; resolveActions(request: AvonRequest): Action[]; softDeletes(): boolean; repository(): Repository<Model>; }) & T; export default _default;