@avonjs/avonjs
Version:
A fluent Node.js API generator.
236 lines (235 loc) • 8.17 kB
TypeScript
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;