23380 lines
764 KiB
TypeScript
23380 lines
764 KiB
TypeScript
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||
|
||
// -------------------------------------------------------------------
|
||
// routerBinds
|
||
// -------------------------------------------------------------------
|
||
|
||
/**
|
||
* RouterAdd registers a new route definition.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```js
|
||
* routerAdd("GET", "/hello", (c) => {
|
||
* return c.json(200, {"message": "Hello!"})
|
||
* }, $apis.requireAdminOrRecordAuth())
|
||
* ```
|
||
*
|
||
* _Note that this method is available only in pb_hooks context._
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare function routerAdd(
|
||
method: string,
|
||
path: string,
|
||
handler: echo.HandlerFunc,
|
||
...middlewares: Array<string|echo.MiddlewareFunc>,
|
||
): void;
|
||
|
||
/**
|
||
* RouterUse registers one or more global middlewares that are executed
|
||
* along the handler middlewares after a matching route is found.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```js
|
||
* routerUse((next) => {
|
||
* return (c) => {
|
||
* console.log(c.Path())
|
||
* return next(c)
|
||
* }
|
||
* })
|
||
* ```
|
||
*
|
||
* _Note that this method is available only in pb_hooks context._
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare function routerUse(...middlewares: Array<string|echo.MiddlewareFunc>): void;
|
||
|
||
/**
|
||
* RouterPre registers one or more global middlewares that are executed
|
||
* BEFORE the router processes the request. It is usually used for making
|
||
* changes to the request properties, for example, adding or removing
|
||
* a trailing slash or adding segments to a path so it matches a route.
|
||
*
|
||
* NB! Since the router will not have processed the request yet,
|
||
* middlewares registered at this level won't have access to any path
|
||
* related APIs from echo.Context.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```js
|
||
* routerPre((next) => {
|
||
* return (c) => {
|
||
* console.log(c.request().url)
|
||
* return next(c)
|
||
* }
|
||
* })
|
||
* ```
|
||
*
|
||
* _Note that this method is available only in pb_hooks context._
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare function routerPre(...middlewares: Array<string|echo.MiddlewareFunc>): void;
|
||
|
||
// -------------------------------------------------------------------
|
||
// baseBinds
|
||
// -------------------------------------------------------------------
|
||
|
||
// skip on* hook methods as they are registered via the global on* method
|
||
type appWithoutHooks = Omit<pocketbase.PocketBase, `on${string}`>
|
||
|
||
/**
|
||
* `$app` is the current running PocketBase instance that is globally
|
||
* available in each .pb.js file.
|
||
*
|
||
* @namespace
|
||
* @group PocketBase
|
||
*/
|
||
declare var $app: appWithoutHooks
|
||
|
||
/**
|
||
* arrayOf creates a placeholder array of the specified models.
|
||
* Usually used to populate DB result into an array of models.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```js
|
||
* const records = arrayOf(new Record)
|
||
*
|
||
* $app.dao().recordQuery(collection).limit(10).all(records)
|
||
* ```
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare function arrayOf<T>(model: T): Array<T>;
|
||
|
||
/**
|
||
* DynamicModel creates a new dynamic model with fields from the provided data shape.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```js
|
||
* const model = new DynamicModel({
|
||
* name: ""
|
||
* age: 0,
|
||
* active: false,
|
||
* roles: [],
|
||
* meta: {}
|
||
* })
|
||
* ```
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class DynamicModel {
|
||
constructor(shape?: { [key:string]: any })
|
||
}
|
||
|
||
/**
|
||
* Record model class.
|
||
*
|
||
* ```js
|
||
* const collection = $app.dao().findCollectionByNameOrId("article")
|
||
*
|
||
* const record = new Record(collection, {
|
||
* title: "Lorem ipsum"
|
||
* })
|
||
*
|
||
* // or set field values after the initialization
|
||
* record.set("description", "...")
|
||
* ```
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare const Record: {
|
||
new(collection?: models.Collection, data?: { [key:string]: any }): models.Record
|
||
|
||
// note: declare as "newable" const due to conflict with the Record TS utility type
|
||
}
|
||
|
||
interface Collection extends models.Collection{} // merge
|
||
/**
|
||
* Collection model class.
|
||
*
|
||
* ```js
|
||
* const collection = new Collection({
|
||
* name: "article",
|
||
* type: "base",
|
||
* listRule: "@request.auth.id != '' || status = 'public'",
|
||
* viewRule: "@request.auth.id != '' || status = 'public'",
|
||
* deleteRule: "@request.auth.id != ''",
|
||
* schema: [
|
||
* {
|
||
* name: "title",
|
||
* type: "text",
|
||
* required: true,
|
||
* options: { min: 6, max: 100 },
|
||
* },
|
||
* {
|
||
* name: "description",
|
||
* type: "text",
|
||
* },
|
||
* ]
|
||
* })
|
||
* ```
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class Collection implements models.Collection {
|
||
constructor(data?: Partial<models.Collection>)
|
||
}
|
||
|
||
interface Admin extends models.Admin{} // merge
|
||
/**
|
||
* Admin model class.
|
||
*
|
||
* ```js
|
||
* const admin = new Admin()
|
||
* admin.email = "test@example.com"
|
||
* admin.setPassword(1234567890)
|
||
* ```
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class Admin implements models.Admin {
|
||
constructor(data?: Partial<models.Admin>)
|
||
}
|
||
|
||
interface Schema extends schema.Schema{} // merge
|
||
/**
|
||
* Schema model class, usually used to define the Collection.schema field.
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class Schema implements schema.Schema {
|
||
constructor(data?: Partial<schema.Schema>)
|
||
}
|
||
|
||
interface SchemaField extends schema.SchemaField{} // merge
|
||
/**
|
||
* SchemaField model class, usually used as part of the Schema model.
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class SchemaField implements schema.SchemaField {
|
||
constructor(data?: Partial<schema.SchemaField>)
|
||
}
|
||
|
||
interface MailerMessage extends mailer.Message{} // merge
|
||
/**
|
||
* MailerMessage defines a single email message.
|
||
*
|
||
* ```js
|
||
* const message = new MailerMessage({
|
||
* from: {
|
||
* address: $app.settings().meta.senderAddress,
|
||
* name: $app.settings().meta.senderName,
|
||
* },
|
||
* to: [{address: "test@example.com"}],
|
||
* subject: "YOUR_SUBJECT...",
|
||
* html: "YOUR_HTML_BODY...",
|
||
* })
|
||
*
|
||
* $app.newMailClient().send(message)
|
||
* ```
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class MailerMessage implements mailer.Message {
|
||
constructor(message?: Partial<mailer.Message>)
|
||
}
|
||
|
||
interface Command extends cobra.Command{} // merge
|
||
/**
|
||
* Command defines a single console command.
|
||
*
|
||
* ```js
|
||
* const command = new Command({
|
||
* use: "hello",
|
||
* run: (cmd, args) => { console.log("Hello world!") },
|
||
* })
|
||
*
|
||
* $app.rootCmd.addCommand(command);
|
||
* ```
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class Command implements cobra.Command {
|
||
constructor(cmd?: Partial<cobra.Command>)
|
||
}
|
||
|
||
interface ValidationError extends ozzo_validation.Error{} // merge
|
||
/**
|
||
* ValidationError defines a single formatted data validation error,
|
||
* usually used as part of a error response.
|
||
*
|
||
* ```js
|
||
* new ValidationError("invalid_title", "Title is not valid")
|
||
* ```
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class ValidationError implements ozzo_validation.Error {
|
||
constructor(code?: string, message?: string)
|
||
}
|
||
|
||
interface Dao extends daos.Dao{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class Dao implements daos.Dao {
|
||
constructor(concurrentDB?: dbx.Builder, nonconcurrentDB?: dbx.Builder)
|
||
}
|
||
|
||
// -------------------------------------------------------------------
|
||
// dbxBinds
|
||
// -------------------------------------------------------------------
|
||
|
||
/**
|
||
* `$dbx` defines common utility for working with the DB abstraction.
|
||
* For examples and guides please check the [Database guide](https://pocketbase.io/docs/js-database).
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare namespace $dbx {
|
||
/**
|
||
* {@inheritDoc dbx.HashExp}
|
||
*/
|
||
export function hashExp(pairs: { [key:string]: any }): dbx.Expression
|
||
|
||
let _in: dbx._in
|
||
export { _in as in }
|
||
|
||
export let exp: dbx.newExp
|
||
export let not: dbx.not
|
||
export let and: dbx.and
|
||
export let or: dbx.or
|
||
export let notIn: dbx.notIn
|
||
export let like: dbx.like
|
||
export let orLike: dbx.orLike
|
||
export let notLike: dbx.notLike
|
||
export let orNotLike: dbx.orNotLike
|
||
export let exists: dbx.exists
|
||
export let notExists: dbx.notExists
|
||
export let between: dbx.between
|
||
export let notBetween: dbx.notBetween
|
||
}
|
||
|
||
// -------------------------------------------------------------------
|
||
// tokensBinds
|
||
// -------------------------------------------------------------------
|
||
|
||
/**
|
||
* `$tokens` defines high level helpers to generate
|
||
* various admins and auth records tokens (auth, forgotten password, etc.).
|
||
*
|
||
* For more control over the generated token, you can check `$security`.
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare namespace $tokens {
|
||
let adminAuthToken: tokens.newAdminAuthToken
|
||
let adminResetPasswordToken: tokens.newAdminResetPasswordToken
|
||
let adminFileToken: tokens.newAdminFileToken
|
||
let recordAuthToken: tokens.newRecordAuthToken
|
||
let recordVerifyToken: tokens.newRecordVerifyToken
|
||
let recordResetPasswordToken: tokens.newRecordResetPasswordToken
|
||
let recordChangeEmailToken: tokens.newRecordChangeEmailToken
|
||
let recordFileToken: tokens.newRecordFileToken
|
||
}
|
||
|
||
// -------------------------------------------------------------------
|
||
// securityBinds
|
||
// -------------------------------------------------------------------
|
||
|
||
/**
|
||
* `$security` defines low level helpers for creating
|
||
* and parsing JWTs, random string generation, AES encryption, etc.
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare namespace $security {
|
||
let randomString: security.randomString
|
||
let randomStringWithAlphabet: security.randomStringWithAlphabet
|
||
let pseudorandomString: security.pseudorandomString
|
||
let pseudorandomStringWithAlphabet: security.pseudorandomStringWithAlphabet
|
||
let parseUnverifiedJWT: security.parseUnverifiedJWT
|
||
let parseJWT: security.parseJWT
|
||
let createJWT: security.newJWT
|
||
let encrypt: security.encrypt
|
||
let decrypt: security.decrypt
|
||
}
|
||
|
||
// -------------------------------------------------------------------
|
||
// filesystemBinds
|
||
// -------------------------------------------------------------------
|
||
|
||
/**
|
||
* `$filesystem` defines common helpers for working
|
||
* with the PocketBase filesystem abstraction.
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare namespace $filesystem {
|
||
let fileFromPath: filesystem.newFileFromPath
|
||
let fileFromBytes: filesystem.newFileFromBytes
|
||
let fileFromMultipart: filesystem.newFileFromMultipart
|
||
}
|
||
|
||
// -------------------------------------------------------------------
|
||
// formsBinds
|
||
// -------------------------------------------------------------------
|
||
|
||
interface AdminLoginForm extends forms.AdminLogin{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class AdminLoginForm implements forms.AdminLogin {
|
||
constructor(app: core.App)
|
||
}
|
||
|
||
interface AdminPasswordResetConfirmForm extends forms.AdminPasswordResetConfirm{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class AdminPasswordResetConfirmForm implements forms.AdminPasswordResetConfirm {
|
||
constructor(app: core.App)
|
||
}
|
||
|
||
interface AdminPasswordResetRequestForm extends forms.AdminPasswordResetRequest{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class AdminPasswordResetRequestForm implements forms.AdminPasswordResetRequest {
|
||
constructor(app: core.App)
|
||
}
|
||
|
||
interface AdminUpsertForm extends forms.AdminUpsert{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class AdminUpsertForm implements forms.AdminUpsert {
|
||
constructor(app: core.App, admin: models.Admin)
|
||
}
|
||
|
||
interface AppleClientSecretCreateForm extends forms.AppleClientSecretCreate{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class AppleClientSecretCreateForm implements forms.AppleClientSecretCreate {
|
||
constructor(app: core.App)
|
||
}
|
||
|
||
interface CollectionUpsertForm extends forms.CollectionUpsert{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class CollectionUpsertForm implements forms.CollectionUpsert {
|
||
constructor(app: core.App, collection: models.Collection)
|
||
}
|
||
|
||
interface CollectionsImportForm extends forms.CollectionsImport{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class CollectionsImportForm implements forms.CollectionsImport {
|
||
constructor(app: core.App)
|
||
}
|
||
|
||
interface RealtimeSubscribeForm extends forms.RealtimeSubscribe{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class RealtimeSubscribeForm implements forms.RealtimeSubscribe {}
|
||
|
||
interface RecordEmailChangeConfirmForm extends forms.RecordEmailChangeConfirm{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class RecordEmailChangeConfirmForm implements forms.RecordEmailChangeConfirm {
|
||
constructor(app: core.App, collection: models.Collection)
|
||
}
|
||
|
||
interface RecordEmailChangeRequestForm extends forms.RecordEmailChangeRequest{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class RecordEmailChangeRequestForm implements forms.RecordEmailChangeRequest {
|
||
constructor(app: core.App, record: models.Record)
|
||
}
|
||
|
||
interface RecordOAuth2LoginForm extends forms.RecordOAuth2Login{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class RecordOAuth2LoginForm implements forms.RecordOAuth2Login {
|
||
constructor(app: core.App, collection: models.Collection, optAuthRecord?: models.Record)
|
||
}
|
||
|
||
interface RecordPasswordLoginForm extends forms.RecordPasswordLogin{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class RecordPasswordLoginForm implements forms.RecordPasswordLogin {
|
||
constructor(app: core.App, collection: models.Collection)
|
||
}
|
||
|
||
interface RecordPasswordResetConfirmForm extends forms.RecordPasswordResetConfirm{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class RecordPasswordResetConfirmForm implements forms.RecordPasswordResetConfirm {
|
||
constructor(app: core.App, collection: models.Collection)
|
||
}
|
||
|
||
interface RecordPasswordResetRequestForm extends forms.RecordPasswordResetRequest{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class RecordPasswordResetRequestForm implements forms.RecordPasswordResetRequest {
|
||
constructor(app: core.App, collection: models.Collection)
|
||
}
|
||
|
||
interface RecordUpsertForm extends forms.RecordUpsert{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class RecordUpsertForm implements forms.RecordUpsert {
|
||
constructor(app: core.App, record: models.Record)
|
||
}
|
||
|
||
interface RecordVerificationConfirmForm extends forms.RecordVerificationConfirm{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class RecordVerificationConfirmForm implements forms.RecordVerificationConfirm {
|
||
constructor(app: core.App, collection: models.Collection)
|
||
}
|
||
|
||
interface RecordVerificationRequestForm extends forms.RecordVerificationRequest{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class RecordVerificationRequestForm implements forms.RecordVerificationRequest {
|
||
constructor(app: core.App, collection: models.Collection)
|
||
}
|
||
|
||
interface SettingsUpsertForm extends forms.SettingsUpsert{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class SettingsUpsertForm implements forms.SettingsUpsert {
|
||
constructor(app: core.App)
|
||
}
|
||
|
||
interface TestEmailSendForm extends forms.TestEmailSend{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class TestEmailSendForm implements forms.TestEmailSend {
|
||
constructor(app: core.App)
|
||
}
|
||
|
||
interface TestS3FilesystemForm extends forms.TestS3Filesystem{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
* @group PocketBase
|
||
*/
|
||
declare class TestS3FilesystemForm implements forms.TestS3Filesystem {
|
||
constructor(app: core.App)
|
||
}
|
||
|
||
// -------------------------------------------------------------------
|
||
// apisBinds
|
||
// -------------------------------------------------------------------
|
||
|
||
interface ApiError extends apis.ApiError{} // merge
|
||
/**
|
||
* @inheritDoc
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class ApiError implements apis.ApiError {
|
||
constructor(status?: number, message?: string, data?: any)
|
||
}
|
||
|
||
interface NotFoundError extends apis.ApiError{} // merge
|
||
/**
|
||
* NotFounderor returns 404 ApiError.
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class NotFoundError implements apis.ApiError {
|
||
constructor(message?: string, data?: any)
|
||
}
|
||
|
||
interface BadRequestError extends apis.ApiError{} // merge
|
||
/**
|
||
* BadRequestError returns 400 ApiError.
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class BadRequestError implements apis.ApiError {
|
||
constructor(message?: string, data?: any)
|
||
}
|
||
|
||
interface ForbiddenError extends apis.ApiError{} // merge
|
||
/**
|
||
* ForbiddenError returns 403 ApiError.
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class ForbiddenError implements apis.ApiError {
|
||
constructor(message?: string, data?: any)
|
||
}
|
||
|
||
interface UnauthorizedError extends apis.ApiError{} // merge
|
||
/**
|
||
* UnauthorizedError returns 401 ApiError.
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare class UnauthorizedError implements apis.ApiError {
|
||
constructor(message?: string, data?: any)
|
||
}
|
||
|
||
/**
|
||
* `$apis` defines commonly used PocketBase api helpers and middlewares.
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare namespace $apis {
|
||
let requireRecordAuth: apis.requireRecordAuth
|
||
let requireAdminAuth: apis.requireAdminAuth
|
||
let requireAdminAuthOnlyIfAny: apis.requireAdminAuthOnlyIfAny
|
||
let requireAdminOrRecordAuth: apis.requireAdminOrRecordAuth
|
||
let requireAdminOrOwnerAuth: apis.requireAdminOrOwnerAuth
|
||
let activityLogger: apis.activityLogger
|
||
let requestData: apis.requestData
|
||
let recordAuthResponse: apis.recordAuthResponse
|
||
let enrichRecord: apis.enrichRecord
|
||
let enrichRecords: apis.enrichRecords
|
||
}
|
||
|
||
// -------------------------------------------------------------------
|
||
// httpClientBinds
|
||
// -------------------------------------------------------------------
|
||
|
||
declare namespace $http {
|
||
/**
|
||
* Sends a single HTTP request (_currently only json and plain text requests_).
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
function send(params: {
|
||
url: string,
|
||
method?: string, // default to "GET"
|
||
data?: { [key:string]: any },
|
||
headers?: { [key:string]: string },
|
||
timeout?: number // default to 120
|
||
}): {
|
||
statusCode: number
|
||
raw: string
|
||
json: any
|
||
};
|
||
}
|
||
|
||
// -------------------------------------------------------------------
|
||
// migrate only
|
||
// -------------------------------------------------------------------
|
||
|
||
/**
|
||
* Migrate defines a single migration upgrade/downgrade action.
|
||
*
|
||
* _Note that this method is available only in pb_migrations context._
|
||
*
|
||
* @group PocketBase
|
||
*/
|
||
declare function migrate(
|
||
up: (db: dbx.Builder) => void,
|
||
down?: (db: dbx.Builder) => void
|
||
): void;
|
||
/** @group PocketBase */declare function onAdminAfterAuthRefreshRequest(handler: (e: core.AdminAuthRefreshEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminAfterAuthWithPasswordRequest(handler: (e: core.AdminAuthWithPasswordEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminAfterConfirmPasswordResetRequest(handler: (e: core.AdminConfirmPasswordResetEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminAfterCreateRequest(handler: (e: core.AdminCreateEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminAfterDeleteRequest(handler: (e: core.AdminDeleteEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminAfterRequestPasswordResetRequest(handler: (e: core.AdminRequestPasswordResetEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminAfterUpdateRequest(handler: (e: core.AdminUpdateEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminAuthRequest(handler: (e: core.AdminAuthEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminBeforeAuthRefreshRequest(handler: (e: core.AdminAuthRefreshEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminBeforeAuthWithPasswordRequest(handler: (e: core.AdminAuthWithPasswordEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminBeforeConfirmPasswordResetRequest(handler: (e: core.AdminConfirmPasswordResetEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminBeforeCreateRequest(handler: (e: core.AdminCreateEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminBeforeDeleteRequest(handler: (e: core.AdminDeleteEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminBeforeRequestPasswordResetRequest(handler: (e: core.AdminRequestPasswordResetEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminBeforeUpdateRequest(handler: (e: core.AdminUpdateEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminViewRequest(handler: (e: core.AdminViewEvent) => void): void
|
||
/** @group PocketBase */declare function onAdminsListRequest(handler: (e: core.AdminsListEvent) => void): void
|
||
/** @group PocketBase */declare function onAfterApiError(handler: (e: core.ApiErrorEvent) => void): void
|
||
/** @group PocketBase */declare function onAfterBootstrap(handler: (e: core.BootstrapEvent) => void): void
|
||
/** @group PocketBase */declare function onBeforeApiError(handler: (e: core.ApiErrorEvent) => void): void
|
||
/** @group PocketBase */declare function onBeforeBootstrap(handler: (e: core.BootstrapEvent) => void): void
|
||
/** @group PocketBase */declare function onCollectionAfterCreateRequest(handler: (e: core.CollectionCreateEvent) => void): void
|
||
/** @group PocketBase */declare function onCollectionAfterDeleteRequest(handler: (e: core.CollectionDeleteEvent) => void): void
|
||
/** @group PocketBase */declare function onCollectionAfterUpdateRequest(handler: (e: core.CollectionUpdateEvent) => void): void
|
||
/** @group PocketBase */declare function onCollectionBeforeCreateRequest(handler: (e: core.CollectionCreateEvent) => void): void
|
||
/** @group PocketBase */declare function onCollectionBeforeDeleteRequest(handler: (e: core.CollectionDeleteEvent) => void): void
|
||
/** @group PocketBase */declare function onCollectionBeforeUpdateRequest(handler: (e: core.CollectionUpdateEvent) => void): void
|
||
/** @group PocketBase */declare function onCollectionViewRequest(handler: (e: core.CollectionViewEvent) => void): void
|
||
/** @group PocketBase */declare function onCollectionsAfterImportRequest(handler: (e: core.CollectionsImportEvent) => void): void
|
||
/** @group PocketBase */declare function onCollectionsBeforeImportRequest(handler: (e: core.CollectionsImportEvent) => void): void
|
||
/** @group PocketBase */declare function onCollectionsListRequest(handler: (e: core.CollectionsListEvent) => void): void
|
||
/** @group PocketBase */declare function onFileAfterTokenRequest(handler: (e: core.FileTokenEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onFileBeforeTokenRequest(handler: (e: core.FileTokenEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onFileDownloadRequest(handler: (e: core.FileDownloadEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onMailerAfterAdminResetPasswordSend(handler: (e: core.MailerAdminEvent) => void): void
|
||
/** @group PocketBase */declare function onMailerAfterRecordChangeEmailSend(handler: (e: core.MailerRecordEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onMailerAfterRecordResetPasswordSend(handler: (e: core.MailerRecordEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onMailerAfterRecordVerificationSend(handler: (e: core.MailerRecordEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onMailerBeforeAdminResetPasswordSend(handler: (e: core.MailerAdminEvent) => void): void
|
||
/** @group PocketBase */declare function onMailerBeforeRecordChangeEmailSend(handler: (e: core.MailerRecordEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onMailerBeforeRecordResetPasswordSend(handler: (e: core.MailerRecordEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onMailerBeforeRecordVerificationSend(handler: (e: core.MailerRecordEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onModelAfterCreate(handler: (e: core.ModelEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onModelAfterDelete(handler: (e: core.ModelEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onModelAfterUpdate(handler: (e: core.ModelEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onModelBeforeCreate(handler: (e: core.ModelEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onModelBeforeDelete(handler: (e: core.ModelEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onModelBeforeUpdate(handler: (e: core.ModelEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRealtimeAfterMessageSend(handler: (e: core.RealtimeMessageEvent) => void): void
|
||
/** @group PocketBase */declare function onRealtimeAfterSubscribeRequest(handler: (e: core.RealtimeSubscribeEvent) => void): void
|
||
/** @group PocketBase */declare function onRealtimeBeforeMessageSend(handler: (e: core.RealtimeMessageEvent) => void): void
|
||
/** @group PocketBase */declare function onRealtimeBeforeSubscribeRequest(handler: (e: core.RealtimeSubscribeEvent) => void): void
|
||
/** @group PocketBase */declare function onRealtimeConnectRequest(handler: (e: core.RealtimeConnectEvent) => void): void
|
||
/** @group PocketBase */declare function onRealtimeDisconnectRequest(handler: (e: core.RealtimeDisconnectEvent) => void): void
|
||
/** @group PocketBase */declare function onRecordAfterAuthRefreshRequest(handler: (e: core.RecordAuthRefreshEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAfterAuthWithOAuth2Request(handler: (e: core.RecordAuthWithOAuth2Event) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAfterAuthWithPasswordRequest(handler: (e: core.RecordAuthWithPasswordEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAfterConfirmEmailChangeRequest(handler: (e: core.RecordConfirmEmailChangeEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAfterConfirmPasswordResetRequest(handler: (e: core.RecordConfirmPasswordResetEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAfterConfirmVerificationRequest(handler: (e: core.RecordConfirmVerificationEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAfterCreateRequest(handler: (e: core.RecordCreateEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAfterDeleteRequest(handler: (e: core.RecordDeleteEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAfterRequestEmailChangeRequest(handler: (e: core.RecordRequestEmailChangeEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAfterRequestPasswordResetRequest(handler: (e: core.RecordRequestPasswordResetEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAfterRequestVerificationRequest(handler: (e: core.RecordRequestVerificationEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAfterUnlinkExternalAuthRequest(handler: (e: core.RecordUnlinkExternalAuthEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAfterUpdateRequest(handler: (e: core.RecordUpdateEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordAuthRequest(handler: (e: core.RecordAuthEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeAuthRefreshRequest(handler: (e: core.RecordAuthRefreshEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeAuthWithOAuth2Request(handler: (e: core.RecordAuthWithOAuth2Event) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeAuthWithPasswordRequest(handler: (e: core.RecordAuthWithPasswordEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeConfirmEmailChangeRequest(handler: (e: core.RecordConfirmEmailChangeEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeConfirmPasswordResetRequest(handler: (e: core.RecordConfirmPasswordResetEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeConfirmVerificationRequest(handler: (e: core.RecordConfirmVerificationEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeCreateRequest(handler: (e: core.RecordCreateEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeDeleteRequest(handler: (e: core.RecordDeleteEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeRequestEmailChangeRequest(handler: (e: core.RecordRequestEmailChangeEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeRequestPasswordResetRequest(handler: (e: core.RecordRequestPasswordResetEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeRequestVerificationRequest(handler: (e: core.RecordRequestVerificationEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeUnlinkExternalAuthRequest(handler: (e: core.RecordUnlinkExternalAuthEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordBeforeUpdateRequest(handler: (e: core.RecordUpdateEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordListExternalAuthsRequest(handler: (e: core.RecordListExternalAuthsEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordViewRequest(handler: (e: core.RecordViewEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onRecordsListRequest(handler: (e: core.RecordsListEvent) => void, ...tags: string[]): void
|
||
/** @group PocketBase */declare function onSettingsAfterUpdateRequest(handler: (e: core.SettingsUpdateEvent) => void): void
|
||
/** @group PocketBase */declare function onSettingsBeforeUpdateRequest(handler: (e: core.SettingsUpdateEvent) => void): void
|
||
/** @group PocketBase */declare function onSettingsListRequest(handler: (e: core.SettingsListEvent) => void): void
|
||
/** @group PocketBase */declare function onTerminate(handler: (e: core.TerminateEvent) => void): void
|
||
type _TygojaDict = { [key:string | number | symbol]: any; }
|
||
type _TygojaAny = any
|
||
|
||
/**
|
||
* Package validation provides configurable and extensible rules for validating data of various types.
|
||
*/
|
||
namespace ozzo_validation {
|
||
/**
|
||
* Error interface represents an validation error
|
||
*/
|
||
interface Error {
|
||
error(): string
|
||
code(): string
|
||
message(): string
|
||
setMessage(_arg0: string): Error
|
||
params(): _TygojaDict
|
||
setParams(_arg0: _TygojaDict): Error
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package dbx provides a set of DB-agnostic and easy-to-use query building methods for relational databases.
|
||
*/
|
||
namespace dbx {
|
||
/**
|
||
* Builder supports building SQL statements in a DB-agnostic way.
|
||
* Builder mainly provides two sets of query building methods: those building SELECT statements
|
||
* and those manipulating DB data or schema (e.g. INSERT statements, CREATE TABLE statements).
|
||
*/
|
||
interface Builder {
|
||
/**
|
||
* NewQuery creates a new Query object with the given SQL statement.
|
||
* The SQL statement may contain parameter placeholders which can be bound with actual parameter
|
||
* values before the statement is executed.
|
||
*/
|
||
newQuery(_arg0: string): (Query | undefined)
|
||
/**
|
||
* Select returns a new SelectQuery object that can be used to build a SELECT statement.
|
||
* The parameters to this method should be the list column names to be selected.
|
||
* A column name may have an optional alias name. For example, Select("id", "my_name AS name").
|
||
*/
|
||
select(..._arg0: string[]): (SelectQuery | undefined)
|
||
/**
|
||
* ModelQuery returns a new ModelQuery object that can be used to perform model insertion, update, and deletion.
|
||
* The parameter to this method should be a pointer to the model struct that needs to be inserted, updated, or deleted.
|
||
*/
|
||
model(_arg0: {
|
||
}): (ModelQuery | undefined)
|
||
/**
|
||
* GeneratePlaceholder generates an anonymous parameter placeholder with the given parameter ID.
|
||
*/
|
||
generatePlaceholder(_arg0: number): string
|
||
/**
|
||
* Quote quotes a string so that it can be embedded in a SQL statement as a string value.
|
||
*/
|
||
quote(_arg0: string): string
|
||
/**
|
||
* QuoteSimpleTableName quotes a simple table name.
|
||
* A simple table name does not contain any schema prefix.
|
||
*/
|
||
quoteSimpleTableName(_arg0: string): string
|
||
/**
|
||
* QuoteSimpleColumnName quotes a simple column name.
|
||
* A simple column name does not contain any table prefix.
|
||
*/
|
||
quoteSimpleColumnName(_arg0: string): string
|
||
/**
|
||
* QueryBuilder returns the query builder supporting the current DB.
|
||
*/
|
||
queryBuilder(): QueryBuilder
|
||
/**
|
||
* Insert creates a Query that represents an INSERT SQL statement.
|
||
* The keys of cols are the column names, while the values of cols are the corresponding column
|
||
* values to be inserted.
|
||
*/
|
||
insert(table: string, cols: Params): (Query | undefined)
|
||
/**
|
||
* Upsert creates a Query that represents an UPSERT SQL statement.
|
||
* Upsert inserts a row into the table if the primary key or unique index is not found.
|
||
* Otherwise it will update the row with the new values.
|
||
* The keys of cols are the column names, while the values of cols are the corresponding column
|
||
* values to be inserted.
|
||
*/
|
||
upsert(table: string, cols: Params, ...constraints: string[]): (Query | undefined)
|
||
/**
|
||
* Update creates a Query that represents an UPDATE SQL statement.
|
||
* The keys of cols are the column names, while the values of cols are the corresponding new column
|
||
* values. If the "where" expression is nil, the UPDATE SQL statement will have no WHERE clause
|
||
* (be careful in this case as the SQL statement will update ALL rows in the table).
|
||
*/
|
||
update(table: string, cols: Params, where: Expression): (Query | undefined)
|
||
/**
|
||
* Delete creates a Query that represents a DELETE SQL statement.
|
||
* If the "where" expression is nil, the DELETE SQL statement will have no WHERE clause
|
||
* (be careful in this case as the SQL statement will delete ALL rows in the table).
|
||
*/
|
||
delete(table: string, where: Expression): (Query | undefined)
|
||
/**
|
||
* CreateTable creates a Query that represents a CREATE TABLE SQL statement.
|
||
* The keys of cols are the column names, while the values of cols are the corresponding column types.
|
||
* The optional "options" parameters will be appended to the generated SQL statement.
|
||
*/
|
||
createTable(table: string, cols: _TygojaDict, ...options: string[]): (Query | undefined)
|
||
/**
|
||
* RenameTable creates a Query that can be used to rename a table.
|
||
*/
|
||
renameTable(oldName: string): (Query | undefined)
|
||
/**
|
||
* DropTable creates a Query that can be used to drop a table.
|
||
*/
|
||
dropTable(table: string): (Query | undefined)
|
||
/**
|
||
* TruncateTable creates a Query that can be used to truncate a table.
|
||
*/
|
||
truncateTable(table: string): (Query | undefined)
|
||
/**
|
||
* AddColumn creates a Query that can be used to add a column to a table.
|
||
*/
|
||
addColumn(table: string): (Query | undefined)
|
||
/**
|
||
* DropColumn creates a Query that can be used to drop a column from a table.
|
||
*/
|
||
dropColumn(table: string): (Query | undefined)
|
||
/**
|
||
* RenameColumn creates a Query that can be used to rename a column in a table.
|
||
*/
|
||
renameColumn(table: string): (Query | undefined)
|
||
/**
|
||
* AlterColumn creates a Query that can be used to change the definition of a table column.
|
||
*/
|
||
alterColumn(table: string): (Query | undefined)
|
||
/**
|
||
* AddPrimaryKey creates a Query that can be used to specify primary key(s) for a table.
|
||
* The "name" parameter specifies the name of the primary key constraint.
|
||
*/
|
||
addPrimaryKey(table: string, ...cols: string[]): (Query | undefined)
|
||
/**
|
||
* DropPrimaryKey creates a Query that can be used to remove the named primary key constraint from a table.
|
||
*/
|
||
dropPrimaryKey(table: string): (Query | undefined)
|
||
/**
|
||
* AddForeignKey creates a Query that can be used to add a foreign key constraint to a table.
|
||
* The length of cols and refCols must be the same as they refer to the primary and referential columns.
|
||
* The optional "options" parameters will be appended to the SQL statement. They can be used to
|
||
* specify options such as "ON DELETE CASCADE".
|
||
*/
|
||
addForeignKey(table: string, cols: Array<string>, refTable: string, ...options: string[]): (Query | undefined)
|
||
/**
|
||
* DropForeignKey creates a Query that can be used to remove the named foreign key constraint from a table.
|
||
*/
|
||
dropForeignKey(table: string): (Query | undefined)
|
||
/**
|
||
* CreateIndex creates a Query that can be used to create an index for a table.
|
||
*/
|
||
createIndex(table: string, ...cols: string[]): (Query | undefined)
|
||
/**
|
||
* CreateUniqueIndex creates a Query that can be used to create a unique index for a table.
|
||
*/
|
||
createUniqueIndex(table: string, ...cols: string[]): (Query | undefined)
|
||
/**
|
||
* DropIndex creates a Query that can be used to remove the named index from a table.
|
||
*/
|
||
dropIndex(table: string): (Query | undefined)
|
||
}
|
||
/**
|
||
* BaseBuilder provides a basic implementation of the Builder interface.
|
||
*/
|
||
interface BaseBuilder {
|
||
}
|
||
interface newBaseBuilder {
|
||
/**
|
||
* NewBaseBuilder creates a new BaseBuilder instance.
|
||
*/
|
||
(db: DB, executor: Executor): (BaseBuilder | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* DB returns the DB instance that this builder is associated with.
|
||
*/
|
||
db(): (DB | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* Executor returns the executor object (a DB instance or a transaction) for executing SQL statements.
|
||
*/
|
||
executor(): Executor
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* NewQuery creates a new Query object with the given SQL statement.
|
||
* The SQL statement may contain parameter placeholders which can be bound with actual parameter
|
||
* values before the statement is executed.
|
||
*/
|
||
newQuery(sql: string): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* GeneratePlaceholder generates an anonymous parameter placeholder with the given parameter ID.
|
||
*/
|
||
generatePlaceholder(_arg0: number): string
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* Quote quotes a string so that it can be embedded in a SQL statement as a string value.
|
||
*/
|
||
quote(s: string): string
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* QuoteSimpleTableName quotes a simple table name.
|
||
* A simple table name does not contain any schema prefix.
|
||
*/
|
||
quoteSimpleTableName(s: string): string
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* QuoteSimpleColumnName quotes a simple column name.
|
||
* A simple column name does not contain any table prefix.
|
||
*/
|
||
quoteSimpleColumnName(s: string): string
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* Insert creates a Query that represents an INSERT SQL statement.
|
||
* The keys of cols are the column names, while the values of cols are the corresponding column
|
||
* values to be inserted.
|
||
*/
|
||
insert(table: string, cols: Params): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* Upsert creates a Query that represents an UPSERT SQL statement.
|
||
* Upsert inserts a row into the table if the primary key or unique index is not found.
|
||
* Otherwise it will update the row with the new values.
|
||
* The keys of cols are the column names, while the values of cols are the corresponding column
|
||
* values to be inserted.
|
||
*/
|
||
upsert(table: string, cols: Params, ...constraints: string[]): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* Update creates a Query that represents an UPDATE SQL statement.
|
||
* The keys of cols are the column names, while the values of cols are the corresponding new column
|
||
* values. If the "where" expression is nil, the UPDATE SQL statement will have no WHERE clause
|
||
* (be careful in this case as the SQL statement will update ALL rows in the table).
|
||
*/
|
||
update(table: string, cols: Params, where: Expression): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* Delete creates a Query that represents a DELETE SQL statement.
|
||
* If the "where" expression is nil, the DELETE SQL statement will have no WHERE clause
|
||
* (be careful in this case as the SQL statement will delete ALL rows in the table).
|
||
*/
|
||
delete(table: string, where: Expression): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* CreateTable creates a Query that represents a CREATE TABLE SQL statement.
|
||
* The keys of cols are the column names, while the values of cols are the corresponding column types.
|
||
* The optional "options" parameters will be appended to the generated SQL statement.
|
||
*/
|
||
createTable(table: string, cols: _TygojaDict, ...options: string[]): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* RenameTable creates a Query that can be used to rename a table.
|
||
*/
|
||
renameTable(oldName: string): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* DropTable creates a Query that can be used to drop a table.
|
||
*/
|
||
dropTable(table: string): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* TruncateTable creates a Query that can be used to truncate a table.
|
||
*/
|
||
truncateTable(table: string): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* AddColumn creates a Query that can be used to add a column to a table.
|
||
*/
|
||
addColumn(table: string): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* DropColumn creates a Query that can be used to drop a column from a table.
|
||
*/
|
||
dropColumn(table: string): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* RenameColumn creates a Query that can be used to rename a column in a table.
|
||
*/
|
||
renameColumn(table: string): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* AlterColumn creates a Query that can be used to change the definition of a table column.
|
||
*/
|
||
alterColumn(table: string): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* AddPrimaryKey creates a Query that can be used to specify primary key(s) for a table.
|
||
* The "name" parameter specifies the name of the primary key constraint.
|
||
*/
|
||
addPrimaryKey(table: string, ...cols: string[]): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* DropPrimaryKey creates a Query that can be used to remove the named primary key constraint from a table.
|
||
*/
|
||
dropPrimaryKey(table: string): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* AddForeignKey creates a Query that can be used to add a foreign key constraint to a table.
|
||
* The length of cols and refCols must be the same as they refer to the primary and referential columns.
|
||
* The optional "options" parameters will be appended to the SQL statement. They can be used to
|
||
* specify options such as "ON DELETE CASCADE".
|
||
*/
|
||
addForeignKey(table: string, cols: Array<string>, refTable: string, ...options: string[]): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* DropForeignKey creates a Query that can be used to remove the named foreign key constraint from a table.
|
||
*/
|
||
dropForeignKey(table: string): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* CreateIndex creates a Query that can be used to create an index for a table.
|
||
*/
|
||
createIndex(table: string, ...cols: string[]): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* CreateUniqueIndex creates a Query that can be used to create a unique index for a table.
|
||
*/
|
||
createUniqueIndex(table: string, ...cols: string[]): (Query | undefined)
|
||
}
|
||
interface BaseBuilder {
|
||
/**
|
||
* DropIndex creates a Query that can be used to remove the named index from a table.
|
||
*/
|
||
dropIndex(table: string): (Query | undefined)
|
||
}
|
||
/**
|
||
* MssqlBuilder is the builder for SQL Server databases.
|
||
*/
|
||
type _subqtYZD = BaseBuilder
|
||
interface MssqlBuilder extends _subqtYZD {
|
||
}
|
||
/**
|
||
* MssqlQueryBuilder is the query builder for SQL Server databases.
|
||
*/
|
||
type _subUGoRL = BaseQueryBuilder
|
||
interface MssqlQueryBuilder extends _subUGoRL {
|
||
}
|
||
interface newMssqlBuilder {
|
||
/**
|
||
* NewMssqlBuilder creates a new MssqlBuilder instance.
|
||
*/
|
||
(db: DB, executor: Executor): Builder
|
||
}
|
||
interface MssqlBuilder {
|
||
/**
|
||
* QueryBuilder returns the query builder supporting the current DB.
|
||
*/
|
||
queryBuilder(): QueryBuilder
|
||
}
|
||
interface MssqlBuilder {
|
||
/**
|
||
* Select returns a new SelectQuery object that can be used to build a SELECT statement.
|
||
* The parameters to this method should be the list column names to be selected.
|
||
* A column name may have an optional alias name. For example, Select("id", "my_name AS name").
|
||
*/
|
||
select(...cols: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface MssqlBuilder {
|
||
/**
|
||
* Model returns a new ModelQuery object that can be used to perform model-based DB operations.
|
||
* The model passed to this method should be a pointer to a model struct.
|
||
*/
|
||
model(model: {
|
||
}): (ModelQuery | undefined)
|
||
}
|
||
interface MssqlBuilder {
|
||
/**
|
||
* QuoteSimpleTableName quotes a simple table name.
|
||
* A simple table name does not contain any schema prefix.
|
||
*/
|
||
quoteSimpleTableName(s: string): string
|
||
}
|
||
interface MssqlBuilder {
|
||
/**
|
||
* QuoteSimpleColumnName quotes a simple column name.
|
||
* A simple column name does not contain any table prefix.
|
||
*/
|
||
quoteSimpleColumnName(s: string): string
|
||
}
|
||
interface MssqlBuilder {
|
||
/**
|
||
* RenameTable creates a Query that can be used to rename a table.
|
||
*/
|
||
renameTable(oldName: string): (Query | undefined)
|
||
}
|
||
interface MssqlBuilder {
|
||
/**
|
||
* RenameColumn creates a Query that can be used to rename a column in a table.
|
||
*/
|
||
renameColumn(table: string): (Query | undefined)
|
||
}
|
||
interface MssqlBuilder {
|
||
/**
|
||
* AlterColumn creates a Query that can be used to change the definition of a table column.
|
||
*/
|
||
alterColumn(table: string): (Query | undefined)
|
||
}
|
||
interface MssqlQueryBuilder {
|
||
/**
|
||
* BuildOrderByAndLimit generates the ORDER BY and LIMIT clauses.
|
||
*/
|
||
buildOrderByAndLimit(sql: string, cols: Array<string>, limit: number, offset: number): string
|
||
}
|
||
/**
|
||
* MysqlBuilder is the builder for MySQL databases.
|
||
*/
|
||
type _subekZiI = BaseBuilder
|
||
interface MysqlBuilder extends _subekZiI {
|
||
}
|
||
interface newMysqlBuilder {
|
||
/**
|
||
* NewMysqlBuilder creates a new MysqlBuilder instance.
|
||
*/
|
||
(db: DB, executor: Executor): Builder
|
||
}
|
||
interface MysqlBuilder {
|
||
/**
|
||
* QueryBuilder returns the query builder supporting the current DB.
|
||
*/
|
||
queryBuilder(): QueryBuilder
|
||
}
|
||
interface MysqlBuilder {
|
||
/**
|
||
* Select returns a new SelectQuery object that can be used to build a SELECT statement.
|
||
* The parameters to this method should be the list column names to be selected.
|
||
* A column name may have an optional alias name. For example, Select("id", "my_name AS name").
|
||
*/
|
||
select(...cols: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface MysqlBuilder {
|
||
/**
|
||
* Model returns a new ModelQuery object that can be used to perform model-based DB operations.
|
||
* The model passed to this method should be a pointer to a model struct.
|
||
*/
|
||
model(model: {
|
||
}): (ModelQuery | undefined)
|
||
}
|
||
interface MysqlBuilder {
|
||
/**
|
||
* QuoteSimpleTableName quotes a simple table name.
|
||
* A simple table name does not contain any schema prefix.
|
||
*/
|
||
quoteSimpleTableName(s: string): string
|
||
}
|
||
interface MysqlBuilder {
|
||
/**
|
||
* QuoteSimpleColumnName quotes a simple column name.
|
||
* A simple column name does not contain any table prefix.
|
||
*/
|
||
quoteSimpleColumnName(s: string): string
|
||
}
|
||
interface MysqlBuilder {
|
||
/**
|
||
* Upsert creates a Query that represents an UPSERT SQL statement.
|
||
* Upsert inserts a row into the table if the primary key or unique index is not found.
|
||
* Otherwise it will update the row with the new values.
|
||
* The keys of cols are the column names, while the values of cols are the corresponding column
|
||
* values to be inserted.
|
||
*/
|
||
upsert(table: string, cols: Params, ...constraints: string[]): (Query | undefined)
|
||
}
|
||
interface MysqlBuilder {
|
||
/**
|
||
* RenameColumn creates a Query that can be used to rename a column in a table.
|
||
*/
|
||
renameColumn(table: string): (Query | undefined)
|
||
}
|
||
interface MysqlBuilder {
|
||
/**
|
||
* DropPrimaryKey creates a Query that can be used to remove the named primary key constraint from a table.
|
||
*/
|
||
dropPrimaryKey(table: string): (Query | undefined)
|
||
}
|
||
interface MysqlBuilder {
|
||
/**
|
||
* DropForeignKey creates a Query that can be used to remove the named foreign key constraint from a table.
|
||
*/
|
||
dropForeignKey(table: string): (Query | undefined)
|
||
}
|
||
/**
|
||
* OciBuilder is the builder for Oracle databases.
|
||
*/
|
||
type _subicixw = BaseBuilder
|
||
interface OciBuilder extends _subicixw {
|
||
}
|
||
/**
|
||
* OciQueryBuilder is the query builder for Oracle databases.
|
||
*/
|
||
type _subgVgiv = BaseQueryBuilder
|
||
interface OciQueryBuilder extends _subgVgiv {
|
||
}
|
||
interface newOciBuilder {
|
||
/**
|
||
* NewOciBuilder creates a new OciBuilder instance.
|
||
*/
|
||
(db: DB, executor: Executor): Builder
|
||
}
|
||
interface OciBuilder {
|
||
/**
|
||
* Select returns a new SelectQuery object that can be used to build a SELECT statement.
|
||
* The parameters to this method should be the list column names to be selected.
|
||
* A column name may have an optional alias name. For example, Select("id", "my_name AS name").
|
||
*/
|
||
select(...cols: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface OciBuilder {
|
||
/**
|
||
* Model returns a new ModelQuery object that can be used to perform model-based DB operations.
|
||
* The model passed to this method should be a pointer to a model struct.
|
||
*/
|
||
model(model: {
|
||
}): (ModelQuery | undefined)
|
||
}
|
||
interface OciBuilder {
|
||
/**
|
||
* GeneratePlaceholder generates an anonymous parameter placeholder with the given parameter ID.
|
||
*/
|
||
generatePlaceholder(i: number): string
|
||
}
|
||
interface OciBuilder {
|
||
/**
|
||
* QueryBuilder returns the query builder supporting the current DB.
|
||
*/
|
||
queryBuilder(): QueryBuilder
|
||
}
|
||
interface OciBuilder {
|
||
/**
|
||
* DropIndex creates a Query that can be used to remove the named index from a table.
|
||
*/
|
||
dropIndex(table: string): (Query | undefined)
|
||
}
|
||
interface OciBuilder {
|
||
/**
|
||
* RenameTable creates a Query that can be used to rename a table.
|
||
*/
|
||
renameTable(oldName: string): (Query | undefined)
|
||
}
|
||
interface OciBuilder {
|
||
/**
|
||
* AlterColumn creates a Query that can be used to change the definition of a table column.
|
||
*/
|
||
alterColumn(table: string): (Query | undefined)
|
||
}
|
||
interface OciQueryBuilder {
|
||
/**
|
||
* BuildOrderByAndLimit generates the ORDER BY and LIMIT clauses.
|
||
*/
|
||
buildOrderByAndLimit(sql: string, cols: Array<string>, limit: number, offset: number): string
|
||
}
|
||
/**
|
||
* PgsqlBuilder is the builder for PostgreSQL databases.
|
||
*/
|
||
type _subKmbTo = BaseBuilder
|
||
interface PgsqlBuilder extends _subKmbTo {
|
||
}
|
||
interface newPgsqlBuilder {
|
||
/**
|
||
* NewPgsqlBuilder creates a new PgsqlBuilder instance.
|
||
*/
|
||
(db: DB, executor: Executor): Builder
|
||
}
|
||
interface PgsqlBuilder {
|
||
/**
|
||
* Select returns a new SelectQuery object that can be used to build a SELECT statement.
|
||
* The parameters to this method should be the list column names to be selected.
|
||
* A column name may have an optional alias name. For example, Select("id", "my_name AS name").
|
||
*/
|
||
select(...cols: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface PgsqlBuilder {
|
||
/**
|
||
* Model returns a new ModelQuery object that can be used to perform model-based DB operations.
|
||
* The model passed to this method should be a pointer to a model struct.
|
||
*/
|
||
model(model: {
|
||
}): (ModelQuery | undefined)
|
||
}
|
||
interface PgsqlBuilder {
|
||
/**
|
||
* GeneratePlaceholder generates an anonymous parameter placeholder with the given parameter ID.
|
||
*/
|
||
generatePlaceholder(i: number): string
|
||
}
|
||
interface PgsqlBuilder {
|
||
/**
|
||
* QueryBuilder returns the query builder supporting the current DB.
|
||
*/
|
||
queryBuilder(): QueryBuilder
|
||
}
|
||
interface PgsqlBuilder {
|
||
/**
|
||
* Upsert creates a Query that represents an UPSERT SQL statement.
|
||
* Upsert inserts a row into the table if the primary key or unique index is not found.
|
||
* Otherwise it will update the row with the new values.
|
||
* The keys of cols are the column names, while the values of cols are the corresponding column
|
||
* values to be inserted.
|
||
*/
|
||
upsert(table: string, cols: Params, ...constraints: string[]): (Query | undefined)
|
||
}
|
||
interface PgsqlBuilder {
|
||
/**
|
||
* DropIndex creates a Query that can be used to remove the named index from a table.
|
||
*/
|
||
dropIndex(table: string): (Query | undefined)
|
||
}
|
||
interface PgsqlBuilder {
|
||
/**
|
||
* RenameTable creates a Query that can be used to rename a table.
|
||
*/
|
||
renameTable(oldName: string): (Query | undefined)
|
||
}
|
||
interface PgsqlBuilder {
|
||
/**
|
||
* AlterColumn creates a Query that can be used to change the definition of a table column.
|
||
*/
|
||
alterColumn(table: string): (Query | undefined)
|
||
}
|
||
/**
|
||
* SqliteBuilder is the builder for SQLite databases.
|
||
*/
|
||
type _subegumr = BaseBuilder
|
||
interface SqliteBuilder extends _subegumr {
|
||
}
|
||
interface newSqliteBuilder {
|
||
/**
|
||
* NewSqliteBuilder creates a new SqliteBuilder instance.
|
||
*/
|
||
(db: DB, executor: Executor): Builder
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* QueryBuilder returns the query builder supporting the current DB.
|
||
*/
|
||
queryBuilder(): QueryBuilder
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* Select returns a new SelectQuery object that can be used to build a SELECT statement.
|
||
* The parameters to this method should be the list column names to be selected.
|
||
* A column name may have an optional alias name. For example, Select("id", "my_name AS name").
|
||
*/
|
||
select(...cols: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* Model returns a new ModelQuery object that can be used to perform model-based DB operations.
|
||
* The model passed to this method should be a pointer to a model struct.
|
||
*/
|
||
model(model: {
|
||
}): (ModelQuery | undefined)
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* QuoteSimpleTableName quotes a simple table name.
|
||
* A simple table name does not contain any schema prefix.
|
||
*/
|
||
quoteSimpleTableName(s: string): string
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* QuoteSimpleColumnName quotes a simple column name.
|
||
* A simple column name does not contain any table prefix.
|
||
*/
|
||
quoteSimpleColumnName(s: string): string
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* DropIndex creates a Query that can be used to remove the named index from a table.
|
||
*/
|
||
dropIndex(table: string): (Query | undefined)
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* TruncateTable creates a Query that can be used to truncate a table.
|
||
*/
|
||
truncateTable(table: string): (Query | undefined)
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* RenameTable creates a Query that can be used to rename a table.
|
||
*/
|
||
renameTable(oldName: string): (Query | undefined)
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* AlterColumn creates a Query that can be used to change the definition of a table column.
|
||
*/
|
||
alterColumn(table: string): (Query | undefined)
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* AddPrimaryKey creates a Query that can be used to specify primary key(s) for a table.
|
||
* The "name" parameter specifies the name of the primary key constraint.
|
||
*/
|
||
addPrimaryKey(table: string, ...cols: string[]): (Query | undefined)
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* DropPrimaryKey creates a Query that can be used to remove the named primary key constraint from a table.
|
||
*/
|
||
dropPrimaryKey(table: string): (Query | undefined)
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* AddForeignKey creates a Query that can be used to add a foreign key constraint to a table.
|
||
* The length of cols and refCols must be the same as they refer to the primary and referential columns.
|
||
* The optional "options" parameters will be appended to the SQL statement. They can be used to
|
||
* specify options such as "ON DELETE CASCADE".
|
||
*/
|
||
addForeignKey(table: string, cols: Array<string>, refTable: string, ...options: string[]): (Query | undefined)
|
||
}
|
||
interface SqliteBuilder {
|
||
/**
|
||
* DropForeignKey creates a Query that can be used to remove the named foreign key constraint from a table.
|
||
*/
|
||
dropForeignKey(table: string): (Query | undefined)
|
||
}
|
||
/**
|
||
* StandardBuilder is the builder that is used by DB for an unknown driver.
|
||
*/
|
||
type _subTfEWs = BaseBuilder
|
||
interface StandardBuilder extends _subTfEWs {
|
||
}
|
||
interface newStandardBuilder {
|
||
/**
|
||
* NewStandardBuilder creates a new StandardBuilder instance.
|
||
*/
|
||
(db: DB, executor: Executor): Builder
|
||
}
|
||
interface StandardBuilder {
|
||
/**
|
||
* QueryBuilder returns the query builder supporting the current DB.
|
||
*/
|
||
queryBuilder(): QueryBuilder
|
||
}
|
||
interface StandardBuilder {
|
||
/**
|
||
* Select returns a new SelectQuery object that can be used to build a SELECT statement.
|
||
* The parameters to this method should be the list column names to be selected.
|
||
* A column name may have an optional alias name. For example, Select("id", "my_name AS name").
|
||
*/
|
||
select(...cols: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface StandardBuilder {
|
||
/**
|
||
* Model returns a new ModelQuery object that can be used to perform model-based DB operations.
|
||
* The model passed to this method should be a pointer to a model struct.
|
||
*/
|
||
model(model: {
|
||
}): (ModelQuery | undefined)
|
||
}
|
||
/**
|
||
* LogFunc logs a message for each SQL statement being executed.
|
||
* This method takes one or multiple parameters. If a single parameter
|
||
* is provided, it will be treated as the log message. If multiple parameters
|
||
* are provided, they will be passed to fmt.Sprintf() to generate the log message.
|
||
*/
|
||
interface LogFunc {(format: string, ...a: {
|
||
}[]): void }
|
||
/**
|
||
* PerfFunc is called when a query finishes execution.
|
||
* The query execution time is passed to this function so that the DB performance
|
||
* can be profiled. The "ns" parameter gives the number of nanoseconds that the
|
||
* SQL statement takes to execute, while the "execute" parameter indicates whether
|
||
* the SQL statement is executed or queried (usually SELECT statements).
|
||
*/
|
||
interface PerfFunc {(ns: number, sql: string, execute: boolean): void }
|
||
/**
|
||
* QueryLogFunc is called each time when performing a SQL query.
|
||
* The "t" parameter gives the time that the SQL statement takes to execute,
|
||
* while rows and err are the result of the query.
|
||
*/
|
||
interface QueryLogFunc {(ctx: context.Context, t: time.Duration, sql: string, rows: sql.Rows, err: Error): void }
|
||
/**
|
||
* ExecLogFunc is called each time when a SQL statement is executed.
|
||
* The "t" parameter gives the time that the SQL statement takes to execute,
|
||
* while result and err refer to the result of the execution.
|
||
*/
|
||
interface ExecLogFunc {(ctx: context.Context, t: time.Duration, sql: string, result: sql.Result, err: Error): void }
|
||
/**
|
||
* BuilderFunc creates a Builder instance using the given DB instance and Executor.
|
||
*/
|
||
interface BuilderFunc {(_arg0: DB, _arg1: Executor): Builder }
|
||
/**
|
||
* DB enhances sql.DB by providing a set of DB-agnostic query building methods.
|
||
* DB allows easier query building and population of data into Go variables.
|
||
*/
|
||
type _subaNIyW = Builder
|
||
interface DB extends _subaNIyW {
|
||
/**
|
||
* FieldMapper maps struct fields to DB columns. Defaults to DefaultFieldMapFunc.
|
||
*/
|
||
fieldMapper: FieldMapFunc
|
||
/**
|
||
* TableMapper maps structs to table names. Defaults to GetTableName.
|
||
*/
|
||
tableMapper: TableMapFunc
|
||
/**
|
||
* LogFunc logs the SQL statements being executed. Defaults to nil, meaning no logging.
|
||
*/
|
||
logFunc: LogFunc
|
||
/**
|
||
* PerfFunc logs the SQL execution time. Defaults to nil, meaning no performance profiling.
|
||
* Deprecated: Please use QueryLogFunc and ExecLogFunc instead.
|
||
*/
|
||
perfFunc: PerfFunc
|
||
/**
|
||
* QueryLogFunc is called each time when performing a SQL query that returns data.
|
||
*/
|
||
queryLogFunc: QueryLogFunc
|
||
/**
|
||
* ExecLogFunc is called each time when a SQL statement is executed.
|
||
*/
|
||
execLogFunc: ExecLogFunc
|
||
}
|
||
/**
|
||
* Errors represents a list of errors.
|
||
*/
|
||
interface Errors extends Array<Error>{}
|
||
interface newFromDB {
|
||
/**
|
||
* NewFromDB encapsulates an existing database connection.
|
||
*/
|
||
(sqlDB: sql.DB, driverName: string): (DB | undefined)
|
||
}
|
||
interface open {
|
||
/**
|
||
* Open opens a database specified by a driver name and data source name (DSN).
|
||
* Note that Open does not check if DSN is specified correctly. It doesn't try to establish a DB connection either.
|
||
* Please refer to sql.Open() for more information.
|
||
*/
|
||
(driverName: string): (DB | undefined)
|
||
}
|
||
interface mustOpen {
|
||
/**
|
||
* MustOpen opens a database and establishes a connection to it.
|
||
* Please refer to sql.Open() and sql.Ping() for more information.
|
||
*/
|
||
(driverName: string): (DB | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Clone makes a shallow copy of DB.
|
||
*/
|
||
clone(): (DB | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* WithContext returns a new instance of DB associated with the given context.
|
||
*/
|
||
withContext(ctx: context.Context): (DB | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Context returns the context associated with the DB instance.
|
||
* It returns nil if no context is associated.
|
||
*/
|
||
context(): context.Context
|
||
}
|
||
interface DB {
|
||
/**
|
||
* DB returns the sql.DB instance encapsulated by dbx.DB.
|
||
*/
|
||
db(): (sql.DB | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Close closes the database, releasing any open resources.
|
||
* It is rare to Close a DB, as the DB handle is meant to be
|
||
* long-lived and shared between many goroutines.
|
||
*/
|
||
close(): void
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Begin starts a transaction.
|
||
*/
|
||
begin(): (Tx | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* BeginTx starts a transaction with the given context and transaction options.
|
||
*/
|
||
beginTx(ctx: context.Context, opts: sql.TxOptions): (Tx | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Wrap encapsulates an existing transaction.
|
||
*/
|
||
wrap(sqlTx: sql.Tx): (Tx | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Transactional starts a transaction and executes the given function.
|
||
* If the function returns an error, the transaction will be rolled back.
|
||
* Otherwise, the transaction will be committed.
|
||
*/
|
||
transactional(f: (_arg0: Tx) => void): void
|
||
}
|
||
interface DB {
|
||
/**
|
||
* TransactionalContext starts a transaction and executes the given function with the given context and transaction options.
|
||
* If the function returns an error, the transaction will be rolled back.
|
||
* Otherwise, the transaction will be committed.
|
||
*/
|
||
transactionalContext(ctx: context.Context, opts: sql.TxOptions, f: (_arg0: Tx) => void): void
|
||
}
|
||
interface DB {
|
||
/**
|
||
* DriverName returns the name of the DB driver.
|
||
*/
|
||
driverName(): string
|
||
}
|
||
interface DB {
|
||
/**
|
||
* QuoteTableName quotes the given table name appropriately.
|
||
* If the table name contains DB schema prefix, it will be handled accordingly.
|
||
* This method will do nothing if the table name is already quoted or if it contains parenthesis.
|
||
*/
|
||
quoteTableName(s: string): string
|
||
}
|
||
interface DB {
|
||
/**
|
||
* QuoteColumnName quotes the given column name appropriately.
|
||
* If the table name contains table name prefix, it will be handled accordingly.
|
||
* This method will do nothing if the column name is already quoted or if it contains parenthesis.
|
||
*/
|
||
quoteColumnName(s: string): string
|
||
}
|
||
interface Errors {
|
||
/**
|
||
* Error returns the error string of Errors.
|
||
*/
|
||
error(): string
|
||
}
|
||
/**
|
||
* Expression represents a DB expression that can be embedded in a SQL statement.
|
||
*/
|
||
interface Expression {
|
||
/**
|
||
* Build converts an expression into a SQL fragment.
|
||
* If the expression contains binding parameters, they will be added to the given Params.
|
||
*/
|
||
build(_arg0: DB, _arg1: Params): string
|
||
}
|
||
/**
|
||
* HashExp represents a hash expression.
|
||
*
|
||
* A hash expression is a map whose keys are DB column names which need to be filtered according
|
||
* to the corresponding values. For example, HashExp{"level": 2, "dept": 10} will generate
|
||
* the SQL: "level"=2 AND "dept"=10.
|
||
*
|
||
* HashExp also handles nil values and slice values. For example, HashExp{"level": []interface{}{1, 2}, "dept": nil}
|
||
* will generate: "level" IN (1, 2) AND "dept" IS NULL.
|
||
*/
|
||
interface HashExp extends _TygojaDict{}
|
||
interface newExp {
|
||
/**
|
||
* NewExp generates an expression with the specified SQL fragment and the optional binding parameters.
|
||
*/
|
||
(e: string, ...params: Params[]): Expression
|
||
}
|
||
interface not {
|
||
/**
|
||
* Not generates a NOT expression which prefixes "NOT" to the specified expression.
|
||
*/
|
||
(e: Expression): Expression
|
||
}
|
||
interface and {
|
||
/**
|
||
* And generates an AND expression which concatenates the given expressions with "AND".
|
||
*/
|
||
(...exps: Expression[]): Expression
|
||
}
|
||
interface or {
|
||
/**
|
||
* Or generates an OR expression which concatenates the given expressions with "OR".
|
||
*/
|
||
(...exps: Expression[]): Expression
|
||
}
|
||
interface _in {
|
||
/**
|
||
* In generates an IN expression for the specified column and the list of allowed values.
|
||
* If values is empty, a SQL "0=1" will be generated which represents a false expression.
|
||
*/
|
||
(col: string, ...values: {
|
||
}[]): Expression
|
||
}
|
||
interface notIn {
|
||
/**
|
||
* NotIn generates an NOT IN expression for the specified column and the list of disallowed values.
|
||
* If values is empty, an empty string will be returned indicating a true expression.
|
||
*/
|
||
(col: string, ...values: {
|
||
}[]): Expression
|
||
}
|
||
interface like {
|
||
/**
|
||
* Like generates a LIKE expression for the specified column and the possible strings that the column should be like.
|
||
* If multiple values are present, the column should be like *all* of them. For example, Like("name", "key", "word")
|
||
* will generate a SQL expression: "name" LIKE "%key%" AND "name" LIKE "%word%".
|
||
*
|
||
* By default, each value will be surrounded by "%" to enable partial matching. If a value contains special characters
|
||
* such as "%", "\", "_", they will also be properly escaped.
|
||
*
|
||
* You may call Escape() and/or Match() to change the default behavior. For example, Like("name", "key").Match(false, true)
|
||
* generates "name" LIKE "key%".
|
||
*/
|
||
(col: string, ...values: string[]): (LikeExp | undefined)
|
||
}
|
||
interface notLike {
|
||
/**
|
||
* NotLike generates a NOT LIKE expression.
|
||
* For example, NotLike("name", "key", "word") will generate a SQL expression:
|
||
* "name" NOT LIKE "%key%" AND "name" NOT LIKE "%word%". Please see Like() for more details.
|
||
*/
|
||
(col: string, ...values: string[]): (LikeExp | undefined)
|
||
}
|
||
interface orLike {
|
||
/**
|
||
* OrLike generates an OR LIKE expression.
|
||
* This is similar to Like() except that the column should be like one of the possible values.
|
||
* For example, OrLike("name", "key", "word") will generate a SQL expression:
|
||
* "name" LIKE "%key%" OR "name" LIKE "%word%". Please see Like() for more details.
|
||
*/
|
||
(col: string, ...values: string[]): (LikeExp | undefined)
|
||
}
|
||
interface orNotLike {
|
||
/**
|
||
* OrNotLike generates an OR NOT LIKE expression.
|
||
* For example, OrNotLike("name", "key", "word") will generate a SQL expression:
|
||
* "name" NOT LIKE "%key%" OR "name" NOT LIKE "%word%". Please see Like() for more details.
|
||
*/
|
||
(col: string, ...values: string[]): (LikeExp | undefined)
|
||
}
|
||
interface exists {
|
||
/**
|
||
* Exists generates an EXISTS expression by prefixing "EXISTS" to the given expression.
|
||
*/
|
||
(exp: Expression): Expression
|
||
}
|
||
interface notExists {
|
||
/**
|
||
* NotExists generates an EXISTS expression by prefixing "NOT EXISTS" to the given expression.
|
||
*/
|
||
(exp: Expression): Expression
|
||
}
|
||
interface between {
|
||
/**
|
||
* Between generates a BETWEEN expression.
|
||
* For example, Between("age", 10, 30) generates: "age" BETWEEN 10 AND 30
|
||
*/
|
||
(col: string, from: {
|
||
}): Expression
|
||
}
|
||
interface notBetween {
|
||
/**
|
||
* NotBetween generates a NOT BETWEEN expression.
|
||
* For example, NotBetween("age", 10, 30) generates: "age" NOT BETWEEN 10 AND 30
|
||
*/
|
||
(col: string, from: {
|
||
}): Expression
|
||
}
|
||
/**
|
||
* Exp represents an expression with a SQL fragment and a list of optional binding parameters.
|
||
*/
|
||
interface Exp {
|
||
}
|
||
interface Exp {
|
||
/**
|
||
* Build converts an expression into a SQL fragment.
|
||
*/
|
||
build(db: DB, params: Params): string
|
||
}
|
||
interface HashExp {
|
||
/**
|
||
* Build converts an expression into a SQL fragment.
|
||
*/
|
||
build(db: DB, params: Params): string
|
||
}
|
||
/**
|
||
* NotExp represents an expression that should prefix "NOT" to a specified expression.
|
||
*/
|
||
interface NotExp {
|
||
}
|
||
interface NotExp {
|
||
/**
|
||
* Build converts an expression into a SQL fragment.
|
||
*/
|
||
build(db: DB, params: Params): string
|
||
}
|
||
/**
|
||
* AndOrExp represents an expression that concatenates multiple expressions using either "AND" or "OR".
|
||
*/
|
||
interface AndOrExp {
|
||
}
|
||
interface AndOrExp {
|
||
/**
|
||
* Build converts an expression into a SQL fragment.
|
||
*/
|
||
build(db: DB, params: Params): string
|
||
}
|
||
/**
|
||
* InExp represents an "IN" or "NOT IN" expression.
|
||
*/
|
||
interface InExp {
|
||
}
|
||
interface InExp {
|
||
/**
|
||
* Build converts an expression into a SQL fragment.
|
||
*/
|
||
build(db: DB, params: Params): string
|
||
}
|
||
/**
|
||
* LikeExp represents a variant of LIKE expressions.
|
||
*/
|
||
interface LikeExp {
|
||
/**
|
||
* Like stores the LIKE operator. It can be "LIKE", "NOT LIKE".
|
||
* It may also be customized as something like "ILIKE".
|
||
*/
|
||
like: string
|
||
}
|
||
interface LikeExp {
|
||
/**
|
||
* Escape specifies how a LIKE expression should be escaped.
|
||
* Each string at position 2i represents a special character and the string at position 2i+1 is
|
||
* the corresponding escaped version.
|
||
*/
|
||
escape(...chars: string[]): (LikeExp | undefined)
|
||
}
|
||
interface LikeExp {
|
||
/**
|
||
* Match specifies whether to do wildcard matching on the left and/or right of given strings.
|
||
*/
|
||
match(left: boolean): (LikeExp | undefined)
|
||
}
|
||
interface LikeExp {
|
||
/**
|
||
* Build converts an expression into a SQL fragment.
|
||
*/
|
||
build(db: DB, params: Params): string
|
||
}
|
||
/**
|
||
* ExistsExp represents an EXISTS or NOT EXISTS expression.
|
||
*/
|
||
interface ExistsExp {
|
||
}
|
||
interface ExistsExp {
|
||
/**
|
||
* Build converts an expression into a SQL fragment.
|
||
*/
|
||
build(db: DB, params: Params): string
|
||
}
|
||
/**
|
||
* BetweenExp represents a BETWEEN or a NOT BETWEEN expression.
|
||
*/
|
||
interface BetweenExp {
|
||
}
|
||
interface BetweenExp {
|
||
/**
|
||
* Build converts an expression into a SQL fragment.
|
||
*/
|
||
build(db: DB, params: Params): string
|
||
}
|
||
interface enclose {
|
||
/**
|
||
* Enclose surrounds the provided nonempty expression with parenthesis "()".
|
||
*/
|
||
(exp: Expression): Expression
|
||
}
|
||
/**
|
||
* EncloseExp represents a parenthesis enclosed expression.
|
||
*/
|
||
interface EncloseExp {
|
||
}
|
||
interface EncloseExp {
|
||
/**
|
||
* Build converts an expression into a SQL fragment.
|
||
*/
|
||
build(db: DB, params: Params): string
|
||
}
|
||
/**
|
||
* TableModel is the interface that should be implemented by models which have unconventional table names.
|
||
*/
|
||
interface TableModel {
|
||
tableName(): string
|
||
}
|
||
/**
|
||
* ModelQuery represents a query associated with a struct model.
|
||
*/
|
||
interface ModelQuery {
|
||
}
|
||
interface newModelQuery {
|
||
(model: {
|
||
}, fieldMapFunc: FieldMapFunc, db: DB, builder: Builder): (ModelQuery | undefined)
|
||
}
|
||
interface ModelQuery {
|
||
/**
|
||
* Context returns the context associated with the query.
|
||
*/
|
||
context(): context.Context
|
||
}
|
||
interface ModelQuery {
|
||
/**
|
||
* WithContext associates a context with the query.
|
||
*/
|
||
withContext(ctx: context.Context): (ModelQuery | undefined)
|
||
}
|
||
interface ModelQuery {
|
||
/**
|
||
* Exclude excludes the specified struct fields from being inserted/updated into the DB table.
|
||
*/
|
||
exclude(...attrs: string[]): (ModelQuery | undefined)
|
||
}
|
||
interface ModelQuery {
|
||
/**
|
||
* Insert inserts a row in the table using the struct model associated with this query.
|
||
*
|
||
* By default, it inserts *all* public fields into the table, including those nil or empty ones.
|
||
* You may pass a list of the fields to this method to indicate that only those fields should be inserted.
|
||
* You may also call Exclude to exclude some fields from being inserted.
|
||
*
|
||
* If a model has an empty primary key, it is considered auto-incremental and the corresponding struct
|
||
* field will be filled with the generated primary key value after a successful insertion.
|
||
*/
|
||
insert(...attrs: string[]): void
|
||
}
|
||
interface ModelQuery {
|
||
/**
|
||
* Update updates a row in the table using the struct model associated with this query.
|
||
* The row being updated has the same primary key as specified by the model.
|
||
*
|
||
* By default, it updates *all* public fields in the table, including those nil or empty ones.
|
||
* You may pass a list of the fields to this method to indicate that only those fields should be updated.
|
||
* You may also call Exclude to exclude some fields from being updated.
|
||
*/
|
||
update(...attrs: string[]): void
|
||
}
|
||
interface ModelQuery {
|
||
/**
|
||
* Delete deletes a row in the table using the primary key specified by the struct model associated with this query.
|
||
*/
|
||
delete(): void
|
||
}
|
||
/**
|
||
* ExecHookFunc executes before op allowing custom handling like auto fail/retry.
|
||
*/
|
||
interface ExecHookFunc {(q: Query, op: () => void): void }
|
||
/**
|
||
* OneHookFunc executes right before the query populate the row result from One() call (aka. op).
|
||
*/
|
||
interface OneHookFunc {(q: Query, a: {
|
||
}, op: (b: {
|
||
}) => void): void }
|
||
/**
|
||
* AllHookFunc executes right before the query populate the row result from All() call (aka. op).
|
||
*/
|
||
interface AllHookFunc {(q: Query, sliceA: {
|
||
}, op: (sliceB: {
|
||
}) => void): void }
|
||
/**
|
||
* Params represents a list of parameter values to be bound to a SQL statement.
|
||
* The map keys are the parameter names while the map values are the corresponding parameter values.
|
||
*/
|
||
interface Params extends _TygojaDict{}
|
||
/**
|
||
* Executor prepares, executes, or queries a SQL statement.
|
||
*/
|
||
interface Executor {
|
||
/**
|
||
* Exec executes a SQL statement
|
||
*/
|
||
exec(query: string, ...args: {
|
||
}[]): sql.Result
|
||
/**
|
||
* ExecContext executes a SQL statement with the given context
|
||
*/
|
||
execContext(ctx: context.Context, query: string, ...args: {
|
||
}[]): sql.Result
|
||
/**
|
||
* Query queries a SQL statement
|
||
*/
|
||
query(query: string, ...args: {
|
||
}[]): (sql.Rows | undefined)
|
||
/**
|
||
* QueryContext queries a SQL statement with the given context
|
||
*/
|
||
queryContext(ctx: context.Context, query: string, ...args: {
|
||
}[]): (sql.Rows | undefined)
|
||
/**
|
||
* Prepare creates a prepared statement
|
||
*/
|
||
prepare(query: string): (sql.Stmt | undefined)
|
||
}
|
||
/**
|
||
* Query represents a SQL statement to be executed.
|
||
*/
|
||
interface Query {
|
||
/**
|
||
* FieldMapper maps struct field names to DB column names.
|
||
*/
|
||
fieldMapper: FieldMapFunc
|
||
/**
|
||
* LastError contains the last error (if any) of the query.
|
||
* LastError is cleared by Execute(), Row(), Rows(), One(), and All().
|
||
*/
|
||
lastError: Error
|
||
/**
|
||
* LogFunc is used to log the SQL statement being executed.
|
||
*/
|
||
logFunc: LogFunc
|
||
/**
|
||
* PerfFunc is used to log the SQL execution time. It is ignored if nil.
|
||
* Deprecated: Please use QueryLogFunc and ExecLogFunc instead.
|
||
*/
|
||
perfFunc: PerfFunc
|
||
/**
|
||
* QueryLogFunc is called each time when performing a SQL query that returns data.
|
||
*/
|
||
queryLogFunc: QueryLogFunc
|
||
/**
|
||
* ExecLogFunc is called each time when a SQL statement is executed.
|
||
*/
|
||
execLogFunc: ExecLogFunc
|
||
}
|
||
interface newQuery {
|
||
/**
|
||
* NewQuery creates a new Query with the given SQL statement.
|
||
*/
|
||
(db: DB, executor: Executor, sql: string): (Query | undefined)
|
||
}
|
||
interface Query {
|
||
/**
|
||
* SQL returns the original SQL used to create the query.
|
||
* The actual SQL (RawSQL) being executed is obtained by replacing the named
|
||
* parameter placeholders with anonymous ones.
|
||
*/
|
||
sql(): string
|
||
}
|
||
interface Query {
|
||
/**
|
||
* Context returns the context associated with the query.
|
||
*/
|
||
context(): context.Context
|
||
}
|
||
interface Query {
|
||
/**
|
||
* WithContext associates a context with the query.
|
||
*/
|
||
withContext(ctx: context.Context): (Query | undefined)
|
||
}
|
||
interface Query {
|
||
/**
|
||
* WithExecHook associates the provided exec hook function with the query.
|
||
*
|
||
* It is called for every Query resolver (Execute(), One(), All(), Row(), Column()),
|
||
* allowing you to implement auto fail/retry or any other additional handling.
|
||
*/
|
||
withExecHook(fn: ExecHookFunc): (Query | undefined)
|
||
}
|
||
interface Query {
|
||
/**
|
||
* WithOneHook associates the provided hook function with the query,
|
||
* called on q.One(), allowing you to implement custom struct scan based
|
||
* on the One() argument and/or result.
|
||
*/
|
||
withOneHook(fn: OneHookFunc): (Query | undefined)
|
||
}
|
||
interface Query {
|
||
/**
|
||
* WithOneHook associates the provided hook function with the query,
|
||
* called on q.All(), allowing you to implement custom slice scan based
|
||
* on the All() argument and/or result.
|
||
*/
|
||
withAllHook(fn: AllHookFunc): (Query | undefined)
|
||
}
|
||
interface Query {
|
||
/**
|
||
* Params returns the parameters to be bound to the SQL statement represented by this query.
|
||
*/
|
||
params(): Params
|
||
}
|
||
interface Query {
|
||
/**
|
||
* Prepare creates a prepared statement for later queries or executions.
|
||
* Close() should be called after finishing all queries.
|
||
*/
|
||
prepare(): (Query | undefined)
|
||
}
|
||
interface Query {
|
||
/**
|
||
* Close closes the underlying prepared statement.
|
||
* Close does nothing if the query has not been prepared before.
|
||
*/
|
||
close(): void
|
||
}
|
||
interface Query {
|
||
/**
|
||
* Bind sets the parameters that should be bound to the SQL statement.
|
||
* The parameter placeholders in the SQL statement are in the format of "{:ParamName}".
|
||
*/
|
||
bind(params: Params): (Query | undefined)
|
||
}
|
||
interface Query {
|
||
/**
|
||
* Execute executes the SQL statement without retrieving data.
|
||
*/
|
||
execute(): sql.Result
|
||
}
|
||
interface Query {
|
||
/**
|
||
* One executes the SQL statement and populates the first row of the result into a struct or NullStringMap.
|
||
* Refer to Rows.ScanStruct() and Rows.ScanMap() for more details on how to specify
|
||
* the variable to be populated.
|
||
* Note that when the query has no rows in the result set, an sql.ErrNoRows will be returned.
|
||
*/
|
||
one(a: {
|
||
}): void
|
||
}
|
||
interface Query {
|
||
/**
|
||
* All executes the SQL statement and populates all the resulting rows into a slice of struct or NullStringMap.
|
||
* The slice must be given as a pointer. Each slice element must be either a struct or a NullStringMap.
|
||
* Refer to Rows.ScanStruct() and Rows.ScanMap() for more details on how each slice element can be.
|
||
* If the query returns no row, the slice will be an empty slice (not nil).
|
||
*/
|
||
all(slice: {
|
||
}): void
|
||
}
|
||
interface Query {
|
||
/**
|
||
* Row executes the SQL statement and populates the first row of the result into a list of variables.
|
||
* Note that the number of the variables should match to that of the columns in the query result.
|
||
* Note that when the query has no rows in the result set, an sql.ErrNoRows will be returned.
|
||
*/
|
||
row(...a: {
|
||
}[]): void
|
||
}
|
||
interface Query {
|
||
/**
|
||
* Column executes the SQL statement and populates the first column of the result into a slice.
|
||
* Note that the parameter must be a pointer to a slice.
|
||
*/
|
||
column(a: {
|
||
}): void
|
||
}
|
||
interface Query {
|
||
/**
|
||
* Rows executes the SQL statement and returns a Rows object to allow retrieving data row by row.
|
||
*/
|
||
rows(): (Rows | undefined)
|
||
}
|
||
/**
|
||
* QueryBuilder builds different clauses for a SELECT SQL statement.
|
||
*/
|
||
interface QueryBuilder {
|
||
/**
|
||
* BuildSelect generates a SELECT clause from the given selected column names.
|
||
*/
|
||
buildSelect(cols: Array<string>, distinct: boolean, option: string): string
|
||
/**
|
||
* BuildFrom generates a FROM clause from the given tables.
|
||
*/
|
||
buildFrom(tables: Array<string>): string
|
||
/**
|
||
* BuildGroupBy generates a GROUP BY clause from the given group-by columns.
|
||
*/
|
||
buildGroupBy(cols: Array<string>): string
|
||
/**
|
||
* BuildJoin generates a JOIN clause from the given join information.
|
||
*/
|
||
buildJoin(_arg0: Array<JoinInfo>, _arg1: Params): string
|
||
/**
|
||
* BuildWhere generates a WHERE clause from the given expression.
|
||
*/
|
||
buildWhere(_arg0: Expression, _arg1: Params): string
|
||
/**
|
||
* BuildHaving generates a HAVING clause from the given expression.
|
||
*/
|
||
buildHaving(_arg0: Expression, _arg1: Params): string
|
||
/**
|
||
* BuildOrderByAndLimit generates the ORDER BY and LIMIT clauses.
|
||
*/
|
||
buildOrderByAndLimit(_arg0: string, _arg1: Array<string>, _arg2: number, _arg3: number): string
|
||
/**
|
||
* BuildUnion generates a UNION clause from the given union information.
|
||
*/
|
||
buildUnion(_arg0: Array<UnionInfo>, _arg1: Params): string
|
||
}
|
||
/**
|
||
* BaseQueryBuilder provides a basic implementation of QueryBuilder.
|
||
*/
|
||
interface BaseQueryBuilder {
|
||
}
|
||
interface newBaseQueryBuilder {
|
||
/**
|
||
* NewBaseQueryBuilder creates a new BaseQueryBuilder instance.
|
||
*/
|
||
(db: DB): (BaseQueryBuilder | undefined)
|
||
}
|
||
interface BaseQueryBuilder {
|
||
/**
|
||
* DB returns the DB instance associated with the query builder.
|
||
*/
|
||
db(): (DB | undefined)
|
||
}
|
||
interface BaseQueryBuilder {
|
||
/**
|
||
* BuildSelect generates a SELECT clause from the given selected column names.
|
||
*/
|
||
buildSelect(cols: Array<string>, distinct: boolean, option: string): string
|
||
}
|
||
interface BaseQueryBuilder {
|
||
/**
|
||
* BuildFrom generates a FROM clause from the given tables.
|
||
*/
|
||
buildFrom(tables: Array<string>): string
|
||
}
|
||
interface BaseQueryBuilder {
|
||
/**
|
||
* BuildJoin generates a JOIN clause from the given join information.
|
||
*/
|
||
buildJoin(joins: Array<JoinInfo>, params: Params): string
|
||
}
|
||
interface BaseQueryBuilder {
|
||
/**
|
||
* BuildWhere generates a WHERE clause from the given expression.
|
||
*/
|
||
buildWhere(e: Expression, params: Params): string
|
||
}
|
||
interface BaseQueryBuilder {
|
||
/**
|
||
* BuildHaving generates a HAVING clause from the given expression.
|
||
*/
|
||
buildHaving(e: Expression, params: Params): string
|
||
}
|
||
interface BaseQueryBuilder {
|
||
/**
|
||
* BuildGroupBy generates a GROUP BY clause from the given group-by columns.
|
||
*/
|
||
buildGroupBy(cols: Array<string>): string
|
||
}
|
||
interface BaseQueryBuilder {
|
||
/**
|
||
* BuildOrderByAndLimit generates the ORDER BY and LIMIT clauses.
|
||
*/
|
||
buildOrderByAndLimit(sql: string, cols: Array<string>, limit: number, offset: number): string
|
||
}
|
||
interface BaseQueryBuilder {
|
||
/**
|
||
* BuildUnion generates a UNION clause from the given union information.
|
||
*/
|
||
buildUnion(unions: Array<UnionInfo>, params: Params): string
|
||
}
|
||
interface BaseQueryBuilder {
|
||
/**
|
||
* BuildOrderBy generates the ORDER BY clause.
|
||
*/
|
||
buildOrderBy(cols: Array<string>): string
|
||
}
|
||
interface BaseQueryBuilder {
|
||
/**
|
||
* BuildLimit generates the LIMIT clause.
|
||
*/
|
||
buildLimit(limit: number, offset: number): string
|
||
}
|
||
/**
|
||
* VarTypeError indicates a variable type error when trying to populating a variable with DB result.
|
||
*/
|
||
interface VarTypeError extends String{}
|
||
interface VarTypeError {
|
||
/**
|
||
* Error returns the error message.
|
||
*/
|
||
error(): string
|
||
}
|
||
/**
|
||
* NullStringMap is a map of sql.NullString that can be used to hold DB query result.
|
||
* The map keys correspond to the DB column names, while the map values are their corresponding column values.
|
||
*/
|
||
interface NullStringMap extends _TygojaDict{}
|
||
/**
|
||
* Rows enhances sql.Rows by providing additional data query methods.
|
||
* Rows can be obtained by calling Query.Rows(). It is mainly used to populate data row by row.
|
||
*/
|
||
type _suboQmda = sql.Rows
|
||
interface Rows extends _suboQmda {
|
||
}
|
||
interface Rows {
|
||
/**
|
||
* ScanMap populates the current row of data into a NullStringMap.
|
||
* Note that the NullStringMap must not be nil, or it will panic.
|
||
* The NullStringMap will be populated using column names as keys and their values as
|
||
* the corresponding element values.
|
||
*/
|
||
scanMap(a: NullStringMap): void
|
||
}
|
||
interface Rows {
|
||
/**
|
||
* ScanStruct populates the current row of data into a struct.
|
||
* The struct must be given as a pointer.
|
||
*
|
||
* ScanStruct associates struct fields with DB table columns through a field mapping function.
|
||
* It populates a struct field with the data of its associated column.
|
||
* Note that only exported struct fields will be populated.
|
||
*
|
||
* By default, DefaultFieldMapFunc() is used to map struct fields to table columns.
|
||
* This function separates each word in a field name with a underscore and turns every letter into lower case.
|
||
* For example, "LastName" is mapped to "last_name", "MyID" is mapped to "my_id", and so on.
|
||
* To change the default behavior, set DB.FieldMapper with your custom mapping function.
|
||
* You may also set Query.FieldMapper to change the behavior for particular queries.
|
||
*/
|
||
scanStruct(a: {
|
||
}): void
|
||
}
|
||
/**
|
||
* BuildHookFunc defines a callback function that is executed on Query creation.
|
||
*/
|
||
interface BuildHookFunc {(q: Query): void }
|
||
/**
|
||
* SelectQuery represents a DB-agnostic SELECT query.
|
||
* It can be built into a DB-specific query by calling the Build() method.
|
||
*/
|
||
interface SelectQuery {
|
||
/**
|
||
* FieldMapper maps struct field names to DB column names.
|
||
*/
|
||
fieldMapper: FieldMapFunc
|
||
/**
|
||
* TableMapper maps structs to DB table names.
|
||
*/
|
||
tableMapper: TableMapFunc
|
||
}
|
||
/**
|
||
* JoinInfo contains the specification for a JOIN clause.
|
||
*/
|
||
interface JoinInfo {
|
||
join: string
|
||
table: string
|
||
on: Expression
|
||
}
|
||
/**
|
||
* UnionInfo contains the specification for a UNION clause.
|
||
*/
|
||
interface UnionInfo {
|
||
all: boolean
|
||
query?: Query
|
||
}
|
||
interface newSelectQuery {
|
||
/**
|
||
* NewSelectQuery creates a new SelectQuery instance.
|
||
*/
|
||
(builder: Builder, db: DB): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* WithBuildHook runs the provided hook function with the query created on Build().
|
||
*/
|
||
withBuildHook(fn: BuildHookFunc): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Context returns the context associated with the query.
|
||
*/
|
||
context(): context.Context
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* WithContext associates a context with the query.
|
||
*/
|
||
withContext(ctx: context.Context): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Select specifies the columns to be selected.
|
||
* Column names will be automatically quoted.
|
||
*/
|
||
select(...cols: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* AndSelect adds additional columns to be selected.
|
||
* Column names will be automatically quoted.
|
||
*/
|
||
andSelect(...cols: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Distinct specifies whether to select columns distinctively.
|
||
* By default, distinct is false.
|
||
*/
|
||
distinct(v: boolean): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* SelectOption specifies additional option that should be append to "SELECT".
|
||
*/
|
||
selectOption(option: string): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* From specifies which tables to select from.
|
||
* Table names will be automatically quoted.
|
||
*/
|
||
from(...tables: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Where specifies the WHERE condition.
|
||
*/
|
||
where(e: Expression): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* AndWhere concatenates a new WHERE condition with the existing one (if any) using "AND".
|
||
*/
|
||
andWhere(e: Expression): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* OrWhere concatenates a new WHERE condition with the existing one (if any) using "OR".
|
||
*/
|
||
orWhere(e: Expression): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Join specifies a JOIN clause.
|
||
* The "typ" parameter specifies the JOIN type (e.g. "INNER JOIN", "LEFT JOIN").
|
||
*/
|
||
join(typ: string, table: string, on: Expression): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* InnerJoin specifies an INNER JOIN clause.
|
||
* This is a shortcut method for Join.
|
||
*/
|
||
innerJoin(table: string, on: Expression): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* LeftJoin specifies a LEFT JOIN clause.
|
||
* This is a shortcut method for Join.
|
||
*/
|
||
leftJoin(table: string, on: Expression): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* RightJoin specifies a RIGHT JOIN clause.
|
||
* This is a shortcut method for Join.
|
||
*/
|
||
rightJoin(table: string, on: Expression): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* OrderBy specifies the ORDER BY clause.
|
||
* Column names will be properly quoted. A column name can contain "ASC" or "DESC" to indicate its ordering direction.
|
||
*/
|
||
orderBy(...cols: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* AndOrderBy appends additional columns to the existing ORDER BY clause.
|
||
* Column names will be properly quoted. A column name can contain "ASC" or "DESC" to indicate its ordering direction.
|
||
*/
|
||
andOrderBy(...cols: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* GroupBy specifies the GROUP BY clause.
|
||
* Column names will be properly quoted.
|
||
*/
|
||
groupBy(...cols: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* AndGroupBy appends additional columns to the existing GROUP BY clause.
|
||
* Column names will be properly quoted.
|
||
*/
|
||
andGroupBy(...cols: string[]): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Having specifies the HAVING clause.
|
||
*/
|
||
having(e: Expression): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* AndHaving concatenates a new HAVING condition with the existing one (if any) using "AND".
|
||
*/
|
||
andHaving(e: Expression): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* OrHaving concatenates a new HAVING condition with the existing one (if any) using "OR".
|
||
*/
|
||
orHaving(e: Expression): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Union specifies a UNION clause.
|
||
*/
|
||
union(q: Query): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* UnionAll specifies a UNION ALL clause.
|
||
*/
|
||
unionAll(q: Query): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Limit specifies the LIMIT clause.
|
||
* A negative limit means no limit.
|
||
*/
|
||
limit(limit: number): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Offset specifies the OFFSET clause.
|
||
* A negative offset means no offset.
|
||
*/
|
||
offset(offset: number): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Bind specifies the parameter values to be bound to the query.
|
||
*/
|
||
bind(params: Params): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* AndBind appends additional parameters to be bound to the query.
|
||
*/
|
||
andBind(params: Params): (SelectQuery | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Build builds the SELECT query and returns an executable Query object.
|
||
*/
|
||
build(): (Query | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* One executes the SELECT query and populates the first row of the result into the specified variable.
|
||
*
|
||
* If the query does not specify a "from" clause, the method will try to infer the name of the table
|
||
* to be selected from by calling getTableName() which will return either the variable type name
|
||
* or the TableName() method if the variable implements the TableModel interface.
|
||
*
|
||
* Note that when the query has no rows in the result set, an sql.ErrNoRows will be returned.
|
||
*/
|
||
one(a: {
|
||
}): void
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Model selects the row with the specified primary key and populates the model with the row data.
|
||
*
|
||
* The model variable should be a pointer to a struct. If the query does not specify a "from" clause,
|
||
* it will use the model struct to determine which table to select data from. It will also use the model
|
||
* to infer the name of the primary key column. Only simple primary key is supported. For composite primary keys,
|
||
* please use Where() to specify the filtering condition.
|
||
*/
|
||
model(pk: {
|
||
}): void
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* All executes the SELECT query and populates all rows of the result into a slice.
|
||
*
|
||
* Note that the slice must be passed in as a pointer.
|
||
*
|
||
* If the query does not specify a "from" clause, the method will try to infer the name of the table
|
||
* to be selected from by calling getTableName() which will return either the type name of the slice elements
|
||
* or the TableName() method if the slice element implements the TableModel interface.
|
||
*/
|
||
all(slice: {
|
||
}): void
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Rows builds and executes the SELECT query and returns a Rows object for data retrieval purpose.
|
||
* This is a shortcut to SelectQuery.Build().Rows()
|
||
*/
|
||
rows(): (Rows | undefined)
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Row builds and executes the SELECT query and populates the first row of the result into the specified variables.
|
||
* This is a shortcut to SelectQuery.Build().Row()
|
||
*/
|
||
row(...a: {
|
||
}[]): void
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Column builds and executes the SELECT statement and populates the first column of the result into a slice.
|
||
* Note that the parameter must be a pointer to a slice.
|
||
* This is a shortcut to SelectQuery.Build().Column()
|
||
*/
|
||
column(a: {
|
||
}): void
|
||
}
|
||
/**
|
||
* QueryInfo represents a debug/info struct with exported SelectQuery fields.
|
||
*/
|
||
interface QueryInfo {
|
||
builder: Builder
|
||
selects: Array<string>
|
||
distinct: boolean
|
||
selectOption: string
|
||
from: Array<string>
|
||
where: Expression
|
||
join: Array<JoinInfo>
|
||
orderBy: Array<string>
|
||
groupBy: Array<string>
|
||
having: Expression
|
||
union: Array<UnionInfo>
|
||
limit: number
|
||
offset: number
|
||
params: Params
|
||
context: context.Context
|
||
buildHook: BuildHookFunc
|
||
}
|
||
interface SelectQuery {
|
||
/**
|
||
* Info exports common SelectQuery fields allowing to inspect the
|
||
* current select query options.
|
||
*/
|
||
info(): (QueryInfo | undefined)
|
||
}
|
||
/**
|
||
* FieldMapFunc converts a struct field name into a DB column name.
|
||
*/
|
||
interface FieldMapFunc {(_arg0: string): string }
|
||
/**
|
||
* TableMapFunc converts a sample struct into a DB table name.
|
||
*/
|
||
interface TableMapFunc {(a: {
|
||
}): string }
|
||
interface structInfo {
|
||
}
|
||
type _subtLdZe = structInfo
|
||
interface structValue extends _subtLdZe {
|
||
}
|
||
interface fieldInfo {
|
||
}
|
||
interface structInfoMapKey {
|
||
}
|
||
/**
|
||
* PostScanner is an optional interface used by ScanStruct.
|
||
*/
|
||
interface PostScanner {
|
||
/**
|
||
* PostScan executes right after the struct has been populated
|
||
* with the DB values, allowing you to further normalize or validate
|
||
* the loaded data.
|
||
*/
|
||
postScan(): void
|
||
}
|
||
interface defaultFieldMapFunc {
|
||
/**
|
||
* DefaultFieldMapFunc maps a field name to a DB column name.
|
||
* The mapping rule set by this method is that words in a field name will be separated by underscores
|
||
* and the name will be turned into lower case. For example, "FirstName" maps to "first_name", and "MyID" becomes "my_id".
|
||
* See DB.FieldMapper for more details.
|
||
*/
|
||
(f: string): string
|
||
}
|
||
interface getTableName {
|
||
/**
|
||
* GetTableName implements the default way of determining the table name corresponding to the given model struct
|
||
* or slice of structs. To get the actual table name for a model, you should use DB.TableMapFunc() instead.
|
||
* Do not call this method in a model's TableName() method because it will cause infinite loop.
|
||
*/
|
||
(a: {
|
||
}): string
|
||
}
|
||
/**
|
||
* Tx enhances sql.Tx with additional querying methods.
|
||
*/
|
||
type _subvlQPy = Builder
|
||
interface Tx extends _subvlQPy {
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* Commit commits the transaction.
|
||
*/
|
||
commit(): void
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* Rollback aborts the transaction.
|
||
*/
|
||
rollback(): void
|
||
}
|
||
}
|
||
|
||
namespace security {
|
||
// @ts-ignore
|
||
import crand = rand
|
||
interface s256Challenge {
|
||
/**
|
||
* S256Challenge creates base64 encoded sha256 challenge string derived from code.
|
||
* The padding of the result base64 string is stripped per [RFC 7636].
|
||
*
|
||
* [RFC 7636]: https://datatracker.ietf.org/doc/html/rfc7636#section-4.2
|
||
*/
|
||
(code: string): string
|
||
}
|
||
interface encrypt {
|
||
/**
|
||
* Encrypt encrypts data with key (must be valid 32 char aes key).
|
||
*/
|
||
(data: string, key: string): string
|
||
}
|
||
interface decrypt {
|
||
/**
|
||
* Decrypt decrypts encrypted text with key (must be valid 32 chars aes key).
|
||
*/
|
||
(cipherText: string, key: string): string
|
||
}
|
||
interface parseUnverifiedJWT {
|
||
/**
|
||
* ParseUnverifiedJWT parses JWT token and returns its claims
|
||
* but DOES NOT verify the signature.
|
||
*
|
||
* It verifies only the exp, iat and nbf claims.
|
||
*/
|
||
(token: string): jwt.MapClaims
|
||
}
|
||
interface parseJWT {
|
||
/**
|
||
* ParseJWT verifies and parses JWT token and returns its claims.
|
||
*/
|
||
(token: string, verificationKey: string): jwt.MapClaims
|
||
}
|
||
interface newJWT {
|
||
/**
|
||
* NewJWT generates and returns new HS256 signed JWT token.
|
||
*/
|
||
(payload: jwt.MapClaims, signingKey: string, secondsDuration: number): string
|
||
}
|
||
interface newToken {
|
||
/**
|
||
* Deprecated:
|
||
* Consider replacing with NewJWT().
|
||
*
|
||
* NewToken is a legacy alias for NewJWT that generates a HS256 signed JWT token.
|
||
*/
|
||
(payload: jwt.MapClaims, signingKey: string, secondsDuration: number): string
|
||
}
|
||
// @ts-ignore
|
||
import cryptoRand = rand
|
||
// @ts-ignore
|
||
import mathRand = rand
|
||
interface randomString {
|
||
/**
|
||
* RandomString generates a cryptographically random string with the specified length.
|
||
*
|
||
* The generated string matches [A-Za-z0-9]+ and it's transparent to URL-encoding.
|
||
*/
|
||
(length: number): string
|
||
}
|
||
interface randomStringWithAlphabet {
|
||
/**
|
||
* RandomStringWithAlphabet generates a cryptographically random string
|
||
* with the specified length and characters set.
|
||
*
|
||
* It panics if for some reason rand.Int returns a non-nil error.
|
||
*/
|
||
(length: number, alphabet: string): string
|
||
}
|
||
interface pseudorandomString {
|
||
/**
|
||
* PseudorandomString generates a pseudorandom string with the specified length.
|
||
*
|
||
* The generated string matches [A-Za-z0-9]+ and it's transparent to URL-encoding.
|
||
*
|
||
* For a cryptographically random string (but a little bit slower) use RandomString instead.
|
||
*/
|
||
(length: number): string
|
||
}
|
||
interface pseudorandomStringWithAlphabet {
|
||
/**
|
||
* PseudorandomStringWithAlphabet generates a pseudorandom string
|
||
* with the specified length and characters set.
|
||
*
|
||
* For a cryptographically random (but a little bit slower) use RandomStringWithAlphabet instead.
|
||
*/
|
||
(length: number, alphabet: string): string
|
||
}
|
||
}
|
||
|
||
namespace filesystem {
|
||
/**
|
||
* FileReader defines an interface for a file resource reader.
|
||
*/
|
||
interface FileReader {
|
||
open(): io.ReadSeekCloser
|
||
}
|
||
/**
|
||
* File defines a single file [io.ReadSeekCloser] resource.
|
||
*
|
||
* The file could be from a local path, multipipart/formdata header, etc.
|
||
*/
|
||
interface File {
|
||
name: string
|
||
originalName: string
|
||
size: number
|
||
reader: FileReader
|
||
}
|
||
interface newFileFromPath {
|
||
/**
|
||
* NewFileFromPath creates a new File instance from the provided local file path.
|
||
*/
|
||
(path: string): (File | undefined)
|
||
}
|
||
interface newFileFromBytes {
|
||
/**
|
||
* NewFileFromBytes creates a new File instance from the provided byte slice.
|
||
*/
|
||
(b: string, name: string): (File | undefined)
|
||
}
|
||
interface newFileFromMultipart {
|
||
/**
|
||
* NewFileFromMultipart creates a new File instace from the provided multipart header.
|
||
*/
|
||
(mh: multipart.FileHeader): (File | undefined)
|
||
}
|
||
/**
|
||
* MultipartReader defines a FileReader from [multipart.FileHeader].
|
||
*/
|
||
interface MultipartReader {
|
||
header?: multipart.FileHeader
|
||
}
|
||
interface MultipartReader {
|
||
/**
|
||
* Open implements the [filesystem.FileReader] interface.
|
||
*/
|
||
open(): io.ReadSeekCloser
|
||
}
|
||
/**
|
||
* PathReader defines a FileReader from a local file path.
|
||
*/
|
||
interface PathReader {
|
||
path: string
|
||
}
|
||
interface PathReader {
|
||
/**
|
||
* Open implements the [filesystem.FileReader] interface.
|
||
*/
|
||
open(): io.ReadSeekCloser
|
||
}
|
||
/**
|
||
* BytesReader defines a FileReader from bytes content.
|
||
*/
|
||
interface BytesReader {
|
||
bytes: string
|
||
}
|
||
interface BytesReader {
|
||
/**
|
||
* Open implements the [filesystem.FileReader] interface.
|
||
*/
|
||
open(): io.ReadSeekCloser
|
||
}
|
||
type _subfPdNz = bytes.Reader
|
||
interface bytesReadSeekCloser extends _subfPdNz {
|
||
}
|
||
interface bytesReadSeekCloser {
|
||
/**
|
||
* Close implements the [io.ReadSeekCloser] interface.
|
||
*/
|
||
close(): void
|
||
}
|
||
interface System {
|
||
}
|
||
interface newS3 {
|
||
/**
|
||
* NewS3 initializes an S3 filesystem instance.
|
||
*
|
||
* NB! Make sure to call `Close()` after you are done working with it.
|
||
*/
|
||
(bucketName: string, region: string, endpoint: string, accessKey: string, secretKey: string, s3ForcePathStyle: boolean): (System | undefined)
|
||
}
|
||
interface newLocal {
|
||
/**
|
||
* NewLocal initializes a new local filesystem instance.
|
||
*
|
||
* NB! Make sure to call `Close()` after you are done working with it.
|
||
*/
|
||
(dirPath: string): (System | undefined)
|
||
}
|
||
interface System {
|
||
/**
|
||
* SetContext assigns the specified context to the current filesystem.
|
||
*/
|
||
setContext(ctx: context.Context): void
|
||
}
|
||
interface System {
|
||
/**
|
||
* Close releases any resources used for the related filesystem.
|
||
*/
|
||
close(): void
|
||
}
|
||
interface System {
|
||
/**
|
||
* Exists checks if file with fileKey path exists or not.
|
||
*/
|
||
exists(fileKey: string): boolean
|
||
}
|
||
interface System {
|
||
/**
|
||
* Attributes returns the attributes for the file with fileKey path.
|
||
*/
|
||
attributes(fileKey: string): (blob.Attributes | undefined)
|
||
}
|
||
interface System {
|
||
/**
|
||
* GetFile returns a file content reader for the given fileKey.
|
||
*
|
||
* NB! Make sure to call `Close()` after you are done working with it.
|
||
*/
|
||
getFile(fileKey: string): (blob.Reader | undefined)
|
||
}
|
||
interface System {
|
||
/**
|
||
* List returns a flat list with info for all files under the specified prefix.
|
||
*/
|
||
list(prefix: string): Array<(blob.ListObject | undefined)>
|
||
}
|
||
interface System {
|
||
/**
|
||
* Upload writes content into the fileKey location.
|
||
*/
|
||
upload(content: string, fileKey: string): void
|
||
}
|
||
interface System {
|
||
/**
|
||
* UploadFile uploads the provided multipart file to the fileKey location.
|
||
*/
|
||
uploadFile(file: File, fileKey: string): void
|
||
}
|
||
interface System {
|
||
/**
|
||
* UploadMultipart uploads the provided multipart file to the fileKey location.
|
||
*/
|
||
uploadMultipart(fh: multipart.FileHeader, fileKey: string): void
|
||
}
|
||
interface System {
|
||
/**
|
||
* Delete deletes stored file at fileKey location.
|
||
*/
|
||
delete(fileKey: string): void
|
||
}
|
||
interface System {
|
||
/**
|
||
* DeletePrefix deletes everything starting with the specified prefix.
|
||
*/
|
||
deletePrefix(prefix: string): Array<Error>
|
||
}
|
||
interface System {
|
||
/**
|
||
* Serve serves the file at fileKey location to an HTTP response.
|
||
*/
|
||
serve(res: http.ResponseWriter, req: http.Request, fileKey: string, name: string): void
|
||
}
|
||
interface System {
|
||
/**
|
||
* CreateThumb creates a new thumb image for the file at originalKey location.
|
||
* The new thumb file is stored at thumbKey location.
|
||
*
|
||
* thumbSize is in the format:
|
||
* - 0xH (eg. 0x100) - resize to H height preserving the aspect ratio
|
||
* - Wx0 (eg. 300x0) - resize to W width preserving the aspect ratio
|
||
* - WxH (eg. 300x100) - resize and crop to WxH viewbox (from center)
|
||
* - WxHt (eg. 300x100t) - resize and crop to WxH viewbox (from top)
|
||
* - WxHb (eg. 300x100b) - resize and crop to WxH viewbox (from bottom)
|
||
* - WxHf (eg. 300x100f) - fit inside a WxH viewbox (without cropping)
|
||
*/
|
||
createThumb(originalKey: string, thumbKey: string): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package tokens implements various user and admin tokens generation methods.
|
||
*/
|
||
namespace tokens {
|
||
interface newAdminAuthToken {
|
||
/**
|
||
* NewAdminAuthToken generates and returns a new admin authentication token.
|
||
*/
|
||
(app: core.App, admin: models.Admin): string
|
||
}
|
||
interface newAdminResetPasswordToken {
|
||
/**
|
||
* NewAdminResetPasswordToken generates and returns a new admin password reset request token.
|
||
*/
|
||
(app: core.App, admin: models.Admin): string
|
||
}
|
||
interface newAdminFileToken {
|
||
/**
|
||
* NewAdminFileToken generates and returns a new admin private file access token.
|
||
*/
|
||
(app: core.App, admin: models.Admin): string
|
||
}
|
||
interface newRecordAuthToken {
|
||
/**
|
||
* NewRecordAuthToken generates and returns a new auth record authentication token.
|
||
*/
|
||
(app: core.App, record: models.Record): string
|
||
}
|
||
interface newRecordVerifyToken {
|
||
/**
|
||
* NewRecordVerifyToken generates and returns a new record verification token.
|
||
*/
|
||
(app: core.App, record: models.Record): string
|
||
}
|
||
interface newRecordResetPasswordToken {
|
||
/**
|
||
* NewRecordResetPasswordToken generates and returns a new auth record password reset request token.
|
||
*/
|
||
(app: core.App, record: models.Record): string
|
||
}
|
||
interface newRecordChangeEmailToken {
|
||
/**
|
||
* NewRecordChangeEmailToken generates and returns a new auth record change email request token.
|
||
*/
|
||
(app: core.App, record: models.Record, newEmail: string): string
|
||
}
|
||
interface newRecordFileToken {
|
||
/**
|
||
* NewRecordFileToken generates and returns a new record private file access token.
|
||
*/
|
||
(app: core.App, record: models.Record): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package models implements various services used for request data
|
||
* validation and applying changes to existing DB models through the app Dao.
|
||
*/
|
||
namespace forms {
|
||
// @ts-ignore
|
||
import validation = ozzo_validation
|
||
/**
|
||
* AdminLogin is an admin email/pass login form.
|
||
*/
|
||
interface AdminLogin {
|
||
identity: string
|
||
password: string
|
||
}
|
||
interface newAdminLogin {
|
||
/**
|
||
* NewAdminLogin creates a new [AdminLogin] form initialized with
|
||
* the provided [core.App] instance.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App): (AdminLogin | undefined)
|
||
}
|
||
interface AdminLogin {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface AdminLogin {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface AdminLogin {
|
||
/**
|
||
* Submit validates and submits the admin form.
|
||
* On success returns the authorized admin model.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to
|
||
* further modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Admin | undefined>[]): (models.Admin | undefined)
|
||
}
|
||
/**
|
||
* AdminPasswordResetConfirm is an admin password reset confirmation form.
|
||
*/
|
||
interface AdminPasswordResetConfirm {
|
||
token: string
|
||
password: string
|
||
passwordConfirm: string
|
||
}
|
||
interface newAdminPasswordResetConfirm {
|
||
/**
|
||
* NewAdminPasswordResetConfirm creates a new [AdminPasswordResetConfirm]
|
||
* form initialized with from the provided [core.App] instance.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App): (AdminPasswordResetConfirm | undefined)
|
||
}
|
||
interface AdminPasswordResetConfirm {
|
||
/**
|
||
* SetDao replaces the form Dao instance with the provided one.
|
||
*
|
||
* This is useful if you want to use a specific transaction Dao instance
|
||
* instead of the default app.Dao().
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface AdminPasswordResetConfirm {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface AdminPasswordResetConfirm {
|
||
/**
|
||
* Submit validates and submits the admin password reset confirmation form.
|
||
* On success returns the updated admin model associated to `form.Token`.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to further
|
||
* modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Admin | undefined>[]): (models.Admin | undefined)
|
||
}
|
||
/**
|
||
* AdminPasswordResetRequest is an admin password reset request form.
|
||
*/
|
||
interface AdminPasswordResetRequest {
|
||
email: string
|
||
}
|
||
interface newAdminPasswordResetRequest {
|
||
/**
|
||
* NewAdminPasswordResetRequest creates a new [AdminPasswordResetRequest]
|
||
* form initialized with from the provided [core.App] instance.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App): (AdminPasswordResetRequest | undefined)
|
||
}
|
||
interface AdminPasswordResetRequest {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface AdminPasswordResetRequest {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*
|
||
* This method doesn't verify that admin with `form.Email` exists (this is done on Submit).
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface AdminPasswordResetRequest {
|
||
/**
|
||
* Submit validates and submits the form.
|
||
* On success sends a password reset email to the `form.Email` admin.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to further
|
||
* modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Admin | undefined>[]): void
|
||
}
|
||
/**
|
||
* AdminUpsert is a [models.Admin] upsert (create/update) form.
|
||
*/
|
||
interface AdminUpsert {
|
||
id: string
|
||
avatar: number
|
||
email: string
|
||
password: string
|
||
passwordConfirm: string
|
||
}
|
||
interface newAdminUpsert {
|
||
/**
|
||
* NewAdminUpsert creates a new [AdminUpsert] form with initializer
|
||
* config created from the provided [core.App] and [models.Admin] instances
|
||
* (for create you could pass a pointer to an empty Admin - `&models.Admin{}`).
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App, admin: models.Admin): (AdminUpsert | undefined)
|
||
}
|
||
interface AdminUpsert {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface AdminUpsert {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface AdminUpsert {
|
||
/**
|
||
* Submit validates the form and upserts the form admin model.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to further
|
||
* modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Admin | undefined>[]): void
|
||
}
|
||
/**
|
||
* AppleClientSecretCreate is a [models.Admin] upsert (create/update) form.
|
||
*
|
||
* Reference: https://developer.apple.com/documentation/sign_in_with_apple/generate_and_validate_tokens
|
||
*/
|
||
interface AppleClientSecretCreate {
|
||
/**
|
||
* ClientId is the identifier of your app (aka. Service ID).
|
||
*/
|
||
clientId: string
|
||
/**
|
||
* TeamId is a 10-character string associated with your developer account
|
||
* (usually could be found next to your name in the Apple Developer site).
|
||
*/
|
||
teamId: string
|
||
/**
|
||
* KeyId is a 10-character key identifier generated for the "Sign in with Apple"
|
||
* private key associated with your developer account.
|
||
*/
|
||
keyId: string
|
||
/**
|
||
* PrivateKey is the private key associated to your app.
|
||
* Usually wrapped within -----BEGIN PRIVATE KEY----- X -----END PRIVATE KEY-----.
|
||
*/
|
||
privateKey: string
|
||
/**
|
||
* Duration specifies how long the generated JWT token should be considered valid.
|
||
* The specified value must be in seconds and max 15777000 (~6months).
|
||
*/
|
||
duration: number
|
||
}
|
||
interface newAppleClientSecretCreate {
|
||
/**
|
||
* NewAppleClientSecretCreate creates a new [AppleClientSecretCreate] form with initializer
|
||
* config created from the provided [core.App] instances.
|
||
*/
|
||
(app: core.App): (AppleClientSecretCreate | undefined)
|
||
}
|
||
interface AppleClientSecretCreate {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface AppleClientSecretCreate {
|
||
/**
|
||
* Submit validates the form and returns a new Apple Client Secret JWT.
|
||
*/
|
||
submit(): string
|
||
}
|
||
/**
|
||
* BackupCreate is a request form for creating a new app backup.
|
||
*/
|
||
interface BackupCreate {
|
||
name: string
|
||
}
|
||
interface newBackupCreate {
|
||
/**
|
||
* NewBackupCreate creates new BackupCreate request form.
|
||
*/
|
||
(app: core.App): (BackupCreate | undefined)
|
||
}
|
||
interface BackupCreate {
|
||
/**
|
||
* SetContext replaces the default form context with the provided one.
|
||
*/
|
||
setContext(ctx: context.Context): void
|
||
}
|
||
interface BackupCreate {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface BackupCreate {
|
||
/**
|
||
* Submit validates the form and creates the app backup.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to further
|
||
* modify the form behavior before creating the backup.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<string>[]): void
|
||
}
|
||
/**
|
||
* InterceptorNextFunc is a interceptor handler function.
|
||
* Usually used in combination with InterceptorFunc.
|
||
*/
|
||
interface InterceptorNextFunc<T> {(t: T): void }
|
||
/**
|
||
* InterceptorFunc defines a single interceptor function that
|
||
* will execute the provided next func handler.
|
||
*/
|
||
interface InterceptorFunc<T> {(next: InterceptorNextFunc<T>): InterceptorNextFunc<T> }
|
||
/**
|
||
* CollectionUpsert is a [models.Collection] upsert (create/update) form.
|
||
*/
|
||
interface CollectionUpsert {
|
||
id: string
|
||
type: string
|
||
name: string
|
||
system: boolean
|
||
schema: schema.Schema
|
||
indexes: types.JsonArray<string>
|
||
listRule?: string
|
||
viewRule?: string
|
||
createRule?: string
|
||
updateRule?: string
|
||
deleteRule?: string
|
||
options: types.JsonMap
|
||
}
|
||
interface newCollectionUpsert {
|
||
/**
|
||
* NewCollectionUpsert creates a new [CollectionUpsert] form with initializer
|
||
* config created from the provided [core.App] and [models.Collection] instances
|
||
* (for create you could pass a pointer to an empty Collection - `&models.Collection{}`).
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App, collection: models.Collection): (CollectionUpsert | undefined)
|
||
}
|
||
interface CollectionUpsert {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface CollectionUpsert {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface CollectionUpsert {
|
||
/**
|
||
* Submit validates the form and upserts the form's Collection model.
|
||
*
|
||
* On success the related record table schema will be auto updated.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to further
|
||
* modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Collection | undefined>[]): void
|
||
}
|
||
/**
|
||
* CollectionsImport is a form model to bulk import
|
||
* (create, replace and delete) collections from a user provided list.
|
||
*/
|
||
interface CollectionsImport {
|
||
collections: Array<(models.Collection | undefined)>
|
||
deleteMissing: boolean
|
||
}
|
||
interface newCollectionsImport {
|
||
/**
|
||
* NewCollectionsImport creates a new [CollectionsImport] form with
|
||
* initialized with from the provided [core.App] instance.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App): (CollectionsImport | undefined)
|
||
}
|
||
interface CollectionsImport {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface CollectionsImport {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface CollectionsImport {
|
||
/**
|
||
* Submit applies the import, aka.:
|
||
* - imports the form collections (create or replace)
|
||
* - sync the collection changes with their related records table
|
||
* - ensures the integrity of the imported structure (aka. run validations for each collection)
|
||
* - if [form.DeleteMissing] is set, deletes all local collections that are not found in the imports list
|
||
*
|
||
* All operations are wrapped in a single transaction that are
|
||
* rollbacked on the first encountered error.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to further
|
||
* modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<Array<(models.Collection | undefined)>>[]): void
|
||
}
|
||
/**
|
||
* RealtimeSubscribe is a realtime subscriptions request form.
|
||
*/
|
||
interface RealtimeSubscribe {
|
||
clientId: string
|
||
subscriptions: Array<string>
|
||
}
|
||
interface newRealtimeSubscribe {
|
||
/**
|
||
* NewRealtimeSubscribe creates new RealtimeSubscribe request form.
|
||
*/
|
||
(): (RealtimeSubscribe | undefined)
|
||
}
|
||
interface RealtimeSubscribe {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
/**
|
||
* RecordEmailChangeConfirm is an auth record email change confirmation form.
|
||
*/
|
||
interface RecordEmailChangeConfirm {
|
||
token: string
|
||
password: string
|
||
}
|
||
interface newRecordEmailChangeConfirm {
|
||
/**
|
||
* NewRecordEmailChangeConfirm creates a new [RecordEmailChangeConfirm] form
|
||
* initialized with from the provided [core.App] and [models.Collection] instances.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App, collection: models.Collection): (RecordEmailChangeConfirm | undefined)
|
||
}
|
||
interface RecordEmailChangeConfirm {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface RecordEmailChangeConfirm {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface RecordEmailChangeConfirm {
|
||
/**
|
||
* Submit validates and submits the auth record email change confirmation form.
|
||
* On success returns the updated auth record associated to `form.Token`.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to
|
||
* further modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Record | undefined>[]): (models.Record | undefined)
|
||
}
|
||
/**
|
||
* RecordEmailChangeRequest is an auth record email change request form.
|
||
*/
|
||
interface RecordEmailChangeRequest {
|
||
newEmail: string
|
||
}
|
||
interface newRecordEmailChangeRequest {
|
||
/**
|
||
* NewRecordEmailChangeRequest creates a new [RecordEmailChangeRequest] form
|
||
* initialized with from the provided [core.App] and [models.Record] instances.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App, record: models.Record): (RecordEmailChangeRequest | undefined)
|
||
}
|
||
interface RecordEmailChangeRequest {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface RecordEmailChangeRequest {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface RecordEmailChangeRequest {
|
||
/**
|
||
* Submit validates and sends the change email request.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to
|
||
* further modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Record | undefined>[]): void
|
||
}
|
||
/**
|
||
* RecordOAuth2LoginData defines the OA
|
||
*/
|
||
interface RecordOAuth2LoginData {
|
||
externalAuth?: models.ExternalAuth
|
||
record?: models.Record
|
||
oAuth2User?: auth.AuthUser
|
||
providerClient: auth.Provider
|
||
}
|
||
/**
|
||
* BeforeOAuth2RecordCreateFunc defines a callback function that will
|
||
* be called before OAuth2 new Record creation.
|
||
*/
|
||
interface BeforeOAuth2RecordCreateFunc {(createForm: RecordUpsert, authRecord: models.Record, authUser: auth.AuthUser): void }
|
||
/**
|
||
* RecordOAuth2Login is an auth record OAuth2 login form.
|
||
*/
|
||
interface RecordOAuth2Login {
|
||
/**
|
||
* The name of the OAuth2 client provider (eg. "google")
|
||
*/
|
||
provider: string
|
||
/**
|
||
* The authorization code returned from the initial request.
|
||
*/
|
||
code: string
|
||
/**
|
||
* The code verifier sent with the initial request as part of the code_challenge.
|
||
*/
|
||
codeVerifier: string
|
||
/**
|
||
* The redirect url sent with the initial request.
|
||
*/
|
||
redirectUrl: string
|
||
/**
|
||
* Additional data that will be used for creating a new auth record
|
||
* if an existing OAuth2 account doesn't exist.
|
||
*/
|
||
createData: _TygojaDict
|
||
}
|
||
interface newRecordOAuth2Login {
|
||
/**
|
||
* NewRecordOAuth2Login creates a new [RecordOAuth2Login] form with
|
||
* initialized with from the provided [core.App] instance.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App, collection: models.Collection, optAuthRecord: models.Record): (RecordOAuth2Login | undefined)
|
||
}
|
||
interface RecordOAuth2Login {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface RecordOAuth2Login {
|
||
/**
|
||
* SetBeforeNewRecordCreateFunc sets a before OAuth2 record create callback handler.
|
||
*/
|
||
setBeforeNewRecordCreateFunc(f: BeforeOAuth2RecordCreateFunc): void
|
||
}
|
||
interface RecordOAuth2Login {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface RecordOAuth2Login {
|
||
/**
|
||
* Submit validates and submits the form.
|
||
*
|
||
* If an auth record doesn't exist, it will make an attempt to create it
|
||
* based on the fetched OAuth2 profile data via a local [RecordUpsert] form.
|
||
* You can intercept/modify the Record create form with [form.SetBeforeNewRecordCreateFunc()].
|
||
*
|
||
* You can also optionally provide a list of InterceptorFunc to
|
||
* further modify the form behavior before persisting it.
|
||
*
|
||
* On success returns the authorized record model and the fetched provider's data.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<RecordOAuth2LoginData | undefined>[]): [(models.Record | undefined), (auth.AuthUser | undefined)]
|
||
}
|
||
/**
|
||
* RecordPasswordLogin is record username/email + password login form.
|
||
*/
|
||
interface RecordPasswordLogin {
|
||
identity: string
|
||
password: string
|
||
}
|
||
interface newRecordPasswordLogin {
|
||
/**
|
||
* NewRecordPasswordLogin creates a new [RecordPasswordLogin] form initialized
|
||
* with from the provided [core.App] and [models.Collection] instance.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App, collection: models.Collection): (RecordPasswordLogin | undefined)
|
||
}
|
||
interface RecordPasswordLogin {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface RecordPasswordLogin {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface RecordPasswordLogin {
|
||
/**
|
||
* Submit validates and submits the form.
|
||
* On success returns the authorized record model.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to
|
||
* further modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Record | undefined>[]): (models.Record | undefined)
|
||
}
|
||
/**
|
||
* RecordPasswordResetConfirm is an auth record password reset confirmation form.
|
||
*/
|
||
interface RecordPasswordResetConfirm {
|
||
token: string
|
||
password: string
|
||
passwordConfirm: string
|
||
}
|
||
interface newRecordPasswordResetConfirm {
|
||
/**
|
||
* NewRecordPasswordResetConfirm creates a new [RecordPasswordResetConfirm]
|
||
* form initialized with from the provided [core.App] instance.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App, collection: models.Collection): (RecordPasswordResetConfirm | undefined)
|
||
}
|
||
interface RecordPasswordResetConfirm {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface RecordPasswordResetConfirm {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface RecordPasswordResetConfirm {
|
||
/**
|
||
* Submit validates and submits the form.
|
||
* On success returns the updated auth record associated to `form.Token`.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to further
|
||
* modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Record | undefined>[]): (models.Record | undefined)
|
||
}
|
||
/**
|
||
* RecordPasswordResetRequest is an auth record reset password request form.
|
||
*/
|
||
interface RecordPasswordResetRequest {
|
||
email: string
|
||
}
|
||
interface newRecordPasswordResetRequest {
|
||
/**
|
||
* NewRecordPasswordResetRequest creates a new [RecordPasswordResetRequest]
|
||
* form initialized with from the provided [core.App] instance.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App, collection: models.Collection): (RecordPasswordResetRequest | undefined)
|
||
}
|
||
interface RecordPasswordResetRequest {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface RecordPasswordResetRequest {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*
|
||
* This method doesn't checks whether auth record with `form.Email` exists (this is done on Submit).
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface RecordPasswordResetRequest {
|
||
/**
|
||
* Submit validates and submits the form.
|
||
* On success, sends a password reset email to the `form.Email` auth record.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to further
|
||
* modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Record | undefined>[]): void
|
||
}
|
||
/**
|
||
* RecordUpsert is a [models.Record] upsert (create/update) form.
|
||
*/
|
||
interface RecordUpsert {
|
||
/**
|
||
* base model fields
|
||
*/
|
||
id: string
|
||
/**
|
||
* auth collection fields
|
||
* ---
|
||
*/
|
||
username: string
|
||
email: string
|
||
emailVisibility: boolean
|
||
verified: boolean
|
||
password: string
|
||
passwordConfirm: string
|
||
oldPassword: string
|
||
}
|
||
interface newRecordUpsert {
|
||
/**
|
||
* NewRecordUpsert creates a new [RecordUpsert] form with initializer
|
||
* config created from the provided [core.App] and [models.Record] instances
|
||
* (for create you could pass a pointer to an empty Record - models.NewRecord(collection)).
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App, record: models.Record): (RecordUpsert | undefined)
|
||
}
|
||
interface RecordUpsert {
|
||
/**
|
||
* Data returns the loaded form's data.
|
||
*/
|
||
data(): _TygojaDict
|
||
}
|
||
interface RecordUpsert {
|
||
/**
|
||
* SetFullManageAccess sets the manageAccess bool flag of the current
|
||
* form to enable/disable directly changing some system record fields
|
||
* (often used with auth collection records).
|
||
*/
|
||
setFullManageAccess(fullManageAccess: boolean): void
|
||
}
|
||
interface RecordUpsert {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface RecordUpsert {
|
||
/**
|
||
* LoadRequest extracts the json or multipart/form-data request data
|
||
* and lods it into the form.
|
||
*
|
||
* File upload is supported only via multipart/form-data.
|
||
*/
|
||
loadRequest(r: http.Request, keyPrefix: string): void
|
||
}
|
||
interface RecordUpsert {
|
||
/**
|
||
* FilesToUpload returns the parsed request files ready for upload.
|
||
*/
|
||
filesToUpload(): _TygojaDict
|
||
}
|
||
interface RecordUpsert {
|
||
/**
|
||
* FilesToUpload returns the parsed request filenames ready to be deleted.
|
||
*/
|
||
filesToDelete(): Array<string>
|
||
}
|
||
interface RecordUpsert {
|
||
/**
|
||
* AddFiles adds the provided file(s) to the specified file field.
|
||
*
|
||
* If the file field is a SINGLE-value file field (aka. "Max Select = 1"),
|
||
* then the newly added file will REPLACE the existing one.
|
||
* In this case if you pass more than 1 files only the first one will be assigned.
|
||
*
|
||
* If the file field is a MULTI-value file field (aka. "Max Select > 1"),
|
||
* then the newly added file(s) will be APPENDED to the existing one(s).
|
||
*
|
||
* Example
|
||
*
|
||
* ```
|
||
* f1, _ := filesystem.NewFileFromPath("/path/to/file1.txt")
|
||
* f2, _ := filesystem.NewFileFromPath("/path/to/file2.txt")
|
||
* form.AddFiles("documents", f1, f2)
|
||
* ```
|
||
*/
|
||
addFiles(key: string, ...files: (filesystem.File | undefined)[]): void
|
||
}
|
||
interface RecordUpsert {
|
||
/**
|
||
* RemoveFiles removes a single or multiple file from the specified file field.
|
||
*
|
||
* NB! If filesToDelete is not set it will remove all existing files
|
||
* assigned to the file field (including those assigned with AddFiles)!
|
||
*
|
||
* Example
|
||
*
|
||
* ```
|
||
* // mark only only 2 files for removal
|
||
* form.AddFiles("documents", "file1_aw4bdrvws6.txt", "file2_xwbs36bafv.txt")
|
||
*
|
||
* // mark all "documents" files for removal
|
||
* form.AddFiles("documents")
|
||
* ```
|
||
*/
|
||
removeFiles(key: string, ...toDelete: string[]): void
|
||
}
|
||
interface RecordUpsert {
|
||
/**
|
||
* LoadData loads and normalizes the provided regular record data fields into the form.
|
||
*/
|
||
loadData(requestData: _TygojaDict): void
|
||
}
|
||
interface RecordUpsert {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface RecordUpsert {
|
||
validateAndFill(): void
|
||
}
|
||
interface RecordUpsert {
|
||
/**
|
||
* DrySubmit performs a form submit within a transaction and reverts it.
|
||
* For actual record persistence, check the `form.Submit()` method.
|
||
*
|
||
* This method doesn't handle file uploads/deletes or trigger any app events!
|
||
*/
|
||
drySubmit(callback: (txDao: daos.Dao) => void): void
|
||
}
|
||
interface RecordUpsert {
|
||
/**
|
||
* Submit validates the form and upserts the form Record model.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to further
|
||
* modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Record | undefined>[]): void
|
||
}
|
||
/**
|
||
* RecordVerificationConfirm is an auth record email verification confirmation form.
|
||
*/
|
||
interface RecordVerificationConfirm {
|
||
token: string
|
||
}
|
||
interface newRecordVerificationConfirm {
|
||
/**
|
||
* NewRecordVerificationConfirm creates a new [RecordVerificationConfirm]
|
||
* form initialized with from the provided [core.App] instance.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App, collection: models.Collection): (RecordVerificationConfirm | undefined)
|
||
}
|
||
interface RecordVerificationConfirm {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface RecordVerificationConfirm {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface RecordVerificationConfirm {
|
||
/**
|
||
* Submit validates and submits the form.
|
||
* On success returns the verified auth record associated to `form.Token`.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to further
|
||
* modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Record | undefined>[]): (models.Record | undefined)
|
||
}
|
||
/**
|
||
* RecordVerificationRequest is an auth record email verification request form.
|
||
*/
|
||
interface RecordVerificationRequest {
|
||
email: string
|
||
}
|
||
interface newRecordVerificationRequest {
|
||
/**
|
||
* NewRecordVerificationRequest creates a new [RecordVerificationRequest]
|
||
* form initialized with from the provided [core.App] instance.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App, collection: models.Collection): (RecordVerificationRequest | undefined)
|
||
}
|
||
interface RecordVerificationRequest {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface RecordVerificationRequest {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*
|
||
* // This method doesn't verify that auth record with `form.Email` exists (this is done on Submit).
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface RecordVerificationRequest {
|
||
/**
|
||
* Submit validates and sends a verification request email
|
||
* to the `form.Email` auth record.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to further
|
||
* modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<models.Record | undefined>[]): void
|
||
}
|
||
/**
|
||
* SettingsUpsert is a [settings.Settings] upsert (create/update) form.
|
||
*/
|
||
type _subJQksV = settings.Settings
|
||
interface SettingsUpsert extends _subJQksV {
|
||
}
|
||
interface newSettingsUpsert {
|
||
/**
|
||
* NewSettingsUpsert creates a new [SettingsUpsert] form with initializer
|
||
* config created from the provided [core.App] instance.
|
||
*
|
||
* If you want to submit the form as part of a transaction,
|
||
* you can change the default Dao via [SetDao()].
|
||
*/
|
||
(app: core.App): (SettingsUpsert | undefined)
|
||
}
|
||
interface SettingsUpsert {
|
||
/**
|
||
* SetDao replaces the default form Dao instance with the provided one.
|
||
*/
|
||
setDao(dao: daos.Dao): void
|
||
}
|
||
interface SettingsUpsert {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface SettingsUpsert {
|
||
/**
|
||
* Submit validates the form and upserts the loaded settings.
|
||
*
|
||
* On success the app settings will be refreshed with the form ones.
|
||
*
|
||
* You can optionally provide a list of InterceptorFunc to further
|
||
* modify the form behavior before persisting it.
|
||
*/
|
||
submit(...interceptors: InterceptorFunc<settings.Settings | undefined>[]): void
|
||
}
|
||
/**
|
||
* TestEmailSend is a email template test request form.
|
||
*/
|
||
interface TestEmailSend {
|
||
template: string
|
||
email: string
|
||
}
|
||
interface newTestEmailSend {
|
||
/**
|
||
* NewTestEmailSend creates and initializes new TestEmailSend form.
|
||
*/
|
||
(app: core.App): (TestEmailSend | undefined)
|
||
}
|
||
interface TestEmailSend {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface TestEmailSend {
|
||
/**
|
||
* Submit validates and sends a test email to the form.Email address.
|
||
*/
|
||
submit(): void
|
||
}
|
||
/**
|
||
* TestS3Filesystem defines a S3 filesystem connection test.
|
||
*/
|
||
interface TestS3Filesystem {
|
||
/**
|
||
* The name of the filesystem - storage or backups
|
||
*/
|
||
filesystem: string
|
||
}
|
||
interface newTestS3Filesystem {
|
||
/**
|
||
* NewTestS3Filesystem creates and initializes new TestS3Filesystem form.
|
||
*/
|
||
(app: core.App): (TestS3Filesystem | undefined)
|
||
}
|
||
interface TestS3Filesystem {
|
||
/**
|
||
* Validate makes the form validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface TestS3Filesystem {
|
||
/**
|
||
* Submit validates and performs a S3 filesystem connection test.
|
||
*/
|
||
submit(): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package apis implements the default PocketBase api services and middlewares.
|
||
*/
|
||
namespace apis {
|
||
interface adminApi {
|
||
}
|
||
// @ts-ignore
|
||
import validation = ozzo_validation
|
||
/**
|
||
* ApiError defines the struct for a basic api error response.
|
||
*/
|
||
interface ApiError {
|
||
code: number
|
||
message: string
|
||
data: _TygojaDict
|
||
}
|
||
interface ApiError {
|
||
/**
|
||
* Error makes it compatible with the `error` interface.
|
||
*/
|
||
error(): string
|
||
}
|
||
interface ApiError {
|
||
/**
|
||
* RawData returns the unformatted error data (could be an internal error, text, etc.)
|
||
*/
|
||
rawData(): any
|
||
}
|
||
interface newNotFoundError {
|
||
/**
|
||
* NewNotFoundError creates and returns 404 `ApiError`.
|
||
*/
|
||
(message: string, data: any): (ApiError | undefined)
|
||
}
|
||
interface newBadRequestError {
|
||
/**
|
||
* NewBadRequestError creates and returns 400 `ApiError`.
|
||
*/
|
||
(message: string, data: any): (ApiError | undefined)
|
||
}
|
||
interface newForbiddenError {
|
||
/**
|
||
* NewForbiddenError creates and returns 403 `ApiError`.
|
||
*/
|
||
(message: string, data: any): (ApiError | undefined)
|
||
}
|
||
interface newUnauthorizedError {
|
||
/**
|
||
* NewUnauthorizedError creates and returns 401 `ApiError`.
|
||
*/
|
||
(message: string, data: any): (ApiError | undefined)
|
||
}
|
||
interface newApiError {
|
||
/**
|
||
* NewApiError creates and returns new normalized `ApiError` instance.
|
||
*/
|
||
(status: number, message: string, data: any): (ApiError | undefined)
|
||
}
|
||
interface backupApi {
|
||
}
|
||
interface initApi {
|
||
/**
|
||
* InitApi creates a configured echo instance with registered
|
||
* system and app specific routes and middlewares.
|
||
*/
|
||
(app: core.App): (echo.Echo | undefined)
|
||
}
|
||
interface staticDirectoryHandler {
|
||
/**
|
||
* StaticDirectoryHandler is similar to `echo.StaticDirectoryHandler`
|
||
* but without the directory redirect which conflicts with RemoveTrailingSlash middleware.
|
||
*
|
||
* If a file resource is missing and indexFallback is set, the request
|
||
* will be forwarded to the base index.html (useful also for SPA).
|
||
*
|
||
* @see https://github.com/labstack/echo/issues/2211
|
||
*/
|
||
(fileSystem: fs.FS, indexFallback: boolean): echo.HandlerFunc
|
||
}
|
||
interface collectionApi {
|
||
}
|
||
interface fileApi {
|
||
}
|
||
interface healthApi {
|
||
}
|
||
interface healthCheckResponse {
|
||
code: number
|
||
message: string
|
||
data: {
|
||
canBackup: boolean
|
||
}
|
||
}
|
||
interface logsApi {
|
||
}
|
||
interface requireGuestOnly {
|
||
/**
|
||
* RequireGuestOnly middleware requires a request to NOT have a valid
|
||
* Authorization header.
|
||
*
|
||
* This middleware is the opposite of [apis.RequireAdminOrRecordAuth()].
|
||
*/
|
||
(): echo.MiddlewareFunc
|
||
}
|
||
interface requireRecordAuth {
|
||
/**
|
||
* RequireRecordAuth middleware requires a request to have
|
||
* a valid record auth Authorization header.
|
||
*
|
||
* The auth record could be from any collection.
|
||
*
|
||
* You can further filter the allowed record auth collections by
|
||
* specifying their names.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```
|
||
* apis.RequireRecordAuth()
|
||
* ```
|
||
*
|
||
* Or:
|
||
*
|
||
* ```
|
||
* apis.RequireRecordAuth("users", "supervisors")
|
||
* ```
|
||
*
|
||
* To restrict the auth record only to the loaded context collection,
|
||
* use [apis.RequireSameContextRecordAuth()] instead.
|
||
*/
|
||
(...optCollectionNames: string[]): echo.MiddlewareFunc
|
||
}
|
||
interface requireSameContextRecordAuth {
|
||
/**
|
||
* RequireSameContextRecordAuth middleware requires a request to have
|
||
* a valid record Authorization header.
|
||
*
|
||
* The auth record must be from the same collection already loaded in the context.
|
||
*/
|
||
(): echo.MiddlewareFunc
|
||
}
|
||
interface requireAdminAuth {
|
||
/**
|
||
* RequireAdminAuth middleware requires a request to have
|
||
* a valid admin Authorization header.
|
||
*/
|
||
(): echo.MiddlewareFunc
|
||
}
|
||
interface requireAdminAuthOnlyIfAny {
|
||
/**
|
||
* RequireAdminAuthOnlyIfAny middleware requires a request to have
|
||
* a valid admin Authorization header ONLY if the application has
|
||
* at least 1 existing Admin model.
|
||
*/
|
||
(app: core.App): echo.MiddlewareFunc
|
||
}
|
||
interface requireAdminOrRecordAuth {
|
||
/**
|
||
* RequireAdminOrRecordAuth middleware requires a request to have
|
||
* a valid admin or record Authorization header set.
|
||
*
|
||
* You can further filter the allowed auth record collections by providing their names.
|
||
*
|
||
* This middleware is the opposite of [apis.RequireGuestOnly()].
|
||
*/
|
||
(...optCollectionNames: string[]): echo.MiddlewareFunc
|
||
}
|
||
interface requireAdminOrOwnerAuth {
|
||
/**
|
||
* RequireAdminOrOwnerAuth middleware requires a request to have
|
||
* a valid admin or auth record owner Authorization header set.
|
||
*
|
||
* This middleware is similar to [apis.RequireAdminOrRecordAuth()] but
|
||
* for the auth record token expects to have the same id as the path
|
||
* parameter ownerIdParam (default to "id" if empty).
|
||
*/
|
||
(ownerIdParam: string): echo.MiddlewareFunc
|
||
}
|
||
interface loadAuthContext {
|
||
/**
|
||
* LoadAuthContext middleware reads the Authorization request header
|
||
* and loads the token related record or admin instance into the
|
||
* request's context.
|
||
*
|
||
* This middleware is expected to be already registered by default for all routes.
|
||
*/
|
||
(app: core.App): echo.MiddlewareFunc
|
||
}
|
||
interface loadCollectionContext {
|
||
/**
|
||
* LoadCollectionContext middleware finds the collection with related
|
||
* path identifier and loads it into the request context.
|
||
*
|
||
* Set optCollectionTypes to further filter the found collection by its type.
|
||
*/
|
||
(app: core.App, ...optCollectionTypes: string[]): echo.MiddlewareFunc
|
||
}
|
||
interface activityLogger {
|
||
/**
|
||
* ActivityLogger middleware takes care to save the request information
|
||
* into the logs database.
|
||
*
|
||
* The middleware does nothing if the app logs retention period is zero
|
||
* (aka. app.Settings().Logs.MaxDays = 0).
|
||
*/
|
||
(app: core.App): echo.MiddlewareFunc
|
||
}
|
||
interface realtimeApi {
|
||
}
|
||
interface recordData {
|
||
action: string
|
||
record?: models.Record
|
||
}
|
||
interface getter {
|
||
get(_arg0: string): any
|
||
}
|
||
interface recordAuthApi {
|
||
}
|
||
interface providerInfo {
|
||
name: string
|
||
state: string
|
||
codeVerifier: string
|
||
codeChallenge: string
|
||
codeChallengeMethod: string
|
||
authUrl: string
|
||
}
|
||
interface recordApi {
|
||
}
|
||
interface requestData {
|
||
/**
|
||
* RequestData exports cached common request data fields
|
||
* (query, body, logged auth state, etc.) from the provided context.
|
||
*/
|
||
(c: echo.Context): (models.RequestData | undefined)
|
||
}
|
||
interface recordAuthResponse {
|
||
/**
|
||
* RecordAuthResponse writes standardised json record auth response
|
||
* into the specified request context.
|
||
*/
|
||
(app: core.App, c: echo.Context, authRecord: models.Record, meta: any, ...finalizers: ((token: string) => void)[]): void
|
||
}
|
||
interface enrichRecord {
|
||
/**
|
||
* EnrichRecord parses the request context and enrich the provided record:
|
||
* ```
|
||
* - expands relations (if defaultExpands and/or ?expand query param is set)
|
||
* - ensures that the emails of the auth record and its expanded auth relations
|
||
* are visibe only for the current logged admin, record owner or record with manage access
|
||
* ```
|
||
*/
|
||
(c: echo.Context, dao: daos.Dao, record: models.Record, ...defaultExpands: string[]): void
|
||
}
|
||
interface enrichRecords {
|
||
/**
|
||
* EnrichRecords parses the request context and enriches the provided records:
|
||
* ```
|
||
* - expands relations (if defaultExpands and/or ?expand query param is set)
|
||
* - ensures that the emails of the auth records and their expanded auth relations
|
||
* are visibe only for the current logged admin, record owner or record with manage access
|
||
* ```
|
||
*/
|
||
(c: echo.Context, dao: daos.Dao, records: Array<(models.Record | undefined)>, ...defaultExpands: string[]): void
|
||
}
|
||
/**
|
||
* ServeConfig defines a configuration struct for apis.Serve().
|
||
*/
|
||
interface ServeConfig {
|
||
/**
|
||
* ShowStartBanner indicates whether to show or hide the server start console message.
|
||
*/
|
||
showStartBanner: boolean
|
||
/**
|
||
* HttpAddr is the HTTP server address to bind (eg. `127.0.0.1:80`).
|
||
*/
|
||
httpAddr: string
|
||
/**
|
||
* HttpsAddr is the HTTPS server address to bind (eg. `127.0.0.1:443`).
|
||
*/
|
||
httpsAddr: string
|
||
/**
|
||
* AllowedOrigins is an optional list of CORS origins (default to "*").
|
||
*/
|
||
allowedOrigins: Array<string>
|
||
}
|
||
interface serve {
|
||
/**
|
||
* Serve starts a new app web server.
|
||
*/
|
||
(app: core.App, config: ServeConfig): void
|
||
}
|
||
interface migrationsConnection {
|
||
db?: dbx.DB
|
||
migrationsList: migrate.MigrationsList
|
||
}
|
||
interface settingsApi {
|
||
}
|
||
}
|
||
|
||
namespace pocketbase {
|
||
/**
|
||
* appWrapper serves as a private core.App instance wrapper.
|
||
*/
|
||
type _subINXvZ = core.App
|
||
interface appWrapper extends _subINXvZ {
|
||
}
|
||
/**
|
||
* PocketBase defines a PocketBase app launcher.
|
||
*
|
||
* It implements [core.App] via embedding and all of the app interface methods
|
||
* could be accessed directly through the instance (eg. PocketBase.DataDir()).
|
||
*/
|
||
type _subKEMwG = appWrapper
|
||
interface PocketBase extends _subKEMwG {
|
||
/**
|
||
* RootCmd is the main console command
|
||
*/
|
||
rootCmd?: cobra.Command
|
||
}
|
||
/**
|
||
* Config is the PocketBase initialization config struct.
|
||
*/
|
||
interface Config {
|
||
/**
|
||
* optional default values for the console flags
|
||
*/
|
||
defaultDebug: boolean
|
||
defaultDataDir: string // if not set, it will fallback to "./pb_data"
|
||
defaultEncryptionEnv: string
|
||
/**
|
||
* hide the default console server info on app startup
|
||
*/
|
||
hideStartBanner: boolean
|
||
/**
|
||
* optional DB configurations
|
||
*/
|
||
dataMaxOpenConns: number // default to core.DefaultDataMaxOpenConns
|
||
dataMaxIdleConns: number // default to core.DefaultDataMaxIdleConns
|
||
logsMaxOpenConns: number // default to core.DefaultLogsMaxOpenConns
|
||
logsMaxIdleConns: number // default to core.DefaultLogsMaxIdleConns
|
||
}
|
||
interface _new {
|
||
/**
|
||
* New creates a new PocketBase instance with the default configuration.
|
||
* Use [NewWithConfig()] if you want to provide a custom configuration.
|
||
*
|
||
* Note that the application will not be initialized/bootstrapped yet,
|
||
* aka. DB connections, migrations, app settings, etc. will not be accessible.
|
||
* Everything will be initialized when [Start()] is executed.
|
||
* If you want to initialize the application before calling [Start()],
|
||
* then you'll have to manually call [Bootstrap()].
|
||
*/
|
||
(): (PocketBase | undefined)
|
||
}
|
||
interface newWithConfig {
|
||
/**
|
||
* NewWithConfig creates a new PocketBase instance with the provided config.
|
||
*
|
||
* Note that the application will not be initialized/bootstrapped yet,
|
||
* aka. DB connections, migrations, app settings, etc. will not be accessible.
|
||
* Everything will be initialized when [Start()] is executed.
|
||
* If you want to initialize the application before calling [Start()],
|
||
* then you'll have to manually call [Bootstrap()].
|
||
*/
|
||
(config: Config): (PocketBase | undefined)
|
||
}
|
||
interface PocketBase {
|
||
/**
|
||
* Start starts the application, aka. registers the default system
|
||
* commands (serve, migrate, version) and executes pb.RootCmd.
|
||
*/
|
||
start(): void
|
||
}
|
||
interface PocketBase {
|
||
/**
|
||
* Execute initializes the application (if not already) and executes
|
||
* the pb.RootCmd with graceful shutdown support.
|
||
*
|
||
* This method differs from pb.Start() by not registering the default
|
||
* system commands!
|
||
*/
|
||
execute(): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package io provides basic interfaces to I/O primitives.
|
||
* Its primary job is to wrap existing implementations of such primitives,
|
||
* such as those in package os, into shared public interfaces that
|
||
* abstract the functionality, plus some other related primitives.
|
||
*
|
||
* Because these interfaces and primitives wrap lower-level operations with
|
||
* various implementations, unless otherwise informed clients should not
|
||
* assume they are safe for parallel execution.
|
||
*/
|
||
namespace io {
|
||
/**
|
||
* ReadSeekCloser is the interface that groups the basic Read, Seek and Close
|
||
* methods.
|
||
*/
|
||
interface ReadSeekCloser {
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package bytes implements functions for the manipulation of byte slices.
|
||
* It is analogous to the facilities of the strings package.
|
||
*/
|
||
namespace bytes {
|
||
/**
|
||
* A Reader implements the io.Reader, io.ReaderAt, io.WriterTo, io.Seeker,
|
||
* io.ByteScanner, and io.RuneScanner interfaces by reading from
|
||
* a byte slice.
|
||
* Unlike a Buffer, a Reader is read-only and supports seeking.
|
||
* The zero value for Reader operates like a Reader of an empty slice.
|
||
*/
|
||
interface Reader {
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Len returns the number of bytes of the unread portion of the
|
||
* slice.
|
||
*/
|
||
len(): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Size returns the original length of the underlying byte slice.
|
||
* Size is the number of bytes available for reading via ReadAt.
|
||
* The result is unaffected by any method calls except Reset.
|
||
*/
|
||
size(): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Read implements the io.Reader interface.
|
||
*/
|
||
read(b: string): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* ReadAt implements the io.ReaderAt interface.
|
||
*/
|
||
readAt(b: string, off: number): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* ReadByte implements the io.ByteReader interface.
|
||
*/
|
||
readByte(): string
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* UnreadByte complements ReadByte in implementing the io.ByteScanner interface.
|
||
*/
|
||
unreadByte(): void
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* ReadRune implements the io.RuneReader interface.
|
||
*/
|
||
readRune(): [string, number]
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* UnreadRune complements ReadRune in implementing the io.RuneScanner interface.
|
||
*/
|
||
unreadRune(): void
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Seek implements the io.Seeker interface.
|
||
*/
|
||
seek(offset: number, whence: number): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* WriteTo implements the io.WriterTo interface.
|
||
*/
|
||
writeTo(w: io.Writer): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Reset resets the Reader to be reading from b.
|
||
*/
|
||
reset(b: string): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package time provides functionality for measuring and displaying time.
|
||
*
|
||
* The calendrical calculations always assume a Gregorian calendar, with
|
||
* no leap seconds.
|
||
*
|
||
* # Monotonic Clocks
|
||
*
|
||
* Operating systems provide both a “wall clock,” which is subject to
|
||
* changes for clock synchronization, and a “monotonic clock,” which is
|
||
* not. The general rule is that the wall clock is for telling time and
|
||
* the monotonic clock is for measuring time. Rather than split the API,
|
||
* in this package the Time returned by time.Now contains both a wall
|
||
* clock reading and a monotonic clock reading; later time-telling
|
||
* operations use the wall clock reading, but later time-measuring
|
||
* operations, specifically comparisons and subtractions, use the
|
||
* monotonic clock reading.
|
||
*
|
||
* For example, this code always computes a positive elapsed time of
|
||
* approximately 20 milliseconds, even if the wall clock is changed during
|
||
* the operation being timed:
|
||
*
|
||
* ```
|
||
* start := time.Now()
|
||
* ... operation that takes 20 milliseconds ...
|
||
* t := time.Now()
|
||
* elapsed := t.Sub(start)
|
||
* ```
|
||
*
|
||
* Other idioms, such as time.Since(start), time.Until(deadline), and
|
||
* time.Now().Before(deadline), are similarly robust against wall clock
|
||
* resets.
|
||
*
|
||
* The rest of this section gives the precise details of how operations
|
||
* use monotonic clocks, but understanding those details is not required
|
||
* to use this package.
|
||
*
|
||
* The Time returned by time.Now contains a monotonic clock reading.
|
||
* If Time t has a monotonic clock reading, t.Add adds the same duration to
|
||
* both the wall clock and monotonic clock readings to compute the result.
|
||
* Because t.AddDate(y, m, d), t.Round(d), and t.Truncate(d) are wall time
|
||
* computations, they always strip any monotonic clock reading from their results.
|
||
* Because t.In, t.Local, and t.UTC are used for their effect on the interpretation
|
||
* of the wall time, they also strip any monotonic clock reading from their results.
|
||
* The canonical way to strip a monotonic clock reading is to use t = t.Round(0).
|
||
*
|
||
* If Times t and u both contain monotonic clock readings, the operations
|
||
* t.After(u), t.Before(u), t.Equal(u), and t.Sub(u) are carried out
|
||
* using the monotonic clock readings alone, ignoring the wall clock
|
||
* readings. If either t or u contains no monotonic clock reading, these
|
||
* operations fall back to using the wall clock readings.
|
||
*
|
||
* On some systems the monotonic clock will stop if the computer goes to sleep.
|
||
* On such a system, t.Sub(u) may not accurately reflect the actual
|
||
* time that passed between t and u.
|
||
*
|
||
* Because the monotonic clock reading has no meaning outside
|
||
* the current process, the serialized forms generated by t.GobEncode,
|
||
* t.MarshalBinary, t.MarshalJSON, and t.MarshalText omit the monotonic
|
||
* clock reading, and t.Format provides no format for it. Similarly, the
|
||
* constructors time.Date, time.Parse, time.ParseInLocation, and time.Unix,
|
||
* as well as the unmarshalers t.GobDecode, t.UnmarshalBinary.
|
||
* t.UnmarshalJSON, and t.UnmarshalText always create times with
|
||
* no monotonic clock reading.
|
||
*
|
||
* The monotonic clock reading exists only in Time values. It is not
|
||
* a part of Duration values or the Unix times returned by t.Unix and
|
||
* friends.
|
||
*
|
||
* Note that the Go == operator compares not just the time instant but
|
||
* also the Location and the monotonic clock reading. See the
|
||
* documentation for the Time type for a discussion of equality
|
||
* testing for Time values.
|
||
*
|
||
* For debugging, the result of t.String does include the monotonic
|
||
* clock reading if present. If t != u because of different monotonic clock readings,
|
||
* that difference will be visible when printing t.String() and u.String().
|
||
*/
|
||
namespace time {
|
||
/**
|
||
* A Duration represents the elapsed time between two instants
|
||
* as an int64 nanosecond count. The representation limits the
|
||
* largest representable duration to approximately 290 years.
|
||
*/
|
||
interface Duration extends Number{}
|
||
interface Duration {
|
||
/**
|
||
* String returns a string representing the duration in the form "72h3m0.5s".
|
||
* Leading zero units are omitted. As a special case, durations less than one
|
||
* second format use a smaller unit (milli-, micro-, or nanoseconds) to ensure
|
||
* that the leading digit is non-zero. The zero duration formats as 0s.
|
||
*/
|
||
string(): string
|
||
}
|
||
interface Duration {
|
||
/**
|
||
* Nanoseconds returns the duration as an integer nanosecond count.
|
||
*/
|
||
nanoseconds(): number
|
||
}
|
||
interface Duration {
|
||
/**
|
||
* Microseconds returns the duration as an integer microsecond count.
|
||
*/
|
||
microseconds(): number
|
||
}
|
||
interface Duration {
|
||
/**
|
||
* Milliseconds returns the duration as an integer millisecond count.
|
||
*/
|
||
milliseconds(): number
|
||
}
|
||
interface Duration {
|
||
/**
|
||
* Seconds returns the duration as a floating point number of seconds.
|
||
*/
|
||
seconds(): number
|
||
}
|
||
interface Duration {
|
||
/**
|
||
* Minutes returns the duration as a floating point number of minutes.
|
||
*/
|
||
minutes(): number
|
||
}
|
||
interface Duration {
|
||
/**
|
||
* Hours returns the duration as a floating point number of hours.
|
||
*/
|
||
hours(): number
|
||
}
|
||
interface Duration {
|
||
/**
|
||
* Truncate returns the result of rounding d toward zero to a multiple of m.
|
||
* If m <= 0, Truncate returns d unchanged.
|
||
*/
|
||
truncate(m: Duration): Duration
|
||
}
|
||
interface Duration {
|
||
/**
|
||
* Round returns the result of rounding d to the nearest multiple of m.
|
||
* The rounding behavior for halfway values is to round away from zero.
|
||
* If the result exceeds the maximum (or minimum)
|
||
* value that can be stored in a Duration,
|
||
* Round returns the maximum (or minimum) duration.
|
||
* If m <= 0, Round returns d unchanged.
|
||
*/
|
||
round(m: Duration): Duration
|
||
}
|
||
interface Duration {
|
||
/**
|
||
* Abs returns the absolute value of d.
|
||
* As a special case, math.MinInt64 is converted to math.MaxInt64.
|
||
*/
|
||
abs(): Duration
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package fs defines basic interfaces to a file system.
|
||
* A file system can be provided by the host operating system
|
||
* but also by other packages.
|
||
*/
|
||
namespace fs {
|
||
/**
|
||
* An FS provides access to a hierarchical file system.
|
||
*
|
||
* The FS interface is the minimum implementation required of the file system.
|
||
* A file system may implement additional interfaces,
|
||
* such as ReadFileFS, to provide additional or optimized functionality.
|
||
*/
|
||
interface FS {
|
||
/**
|
||
* Open opens the named file.
|
||
*
|
||
* When Open returns an error, it should be of type *PathError
|
||
* with the Op field set to "open", the Path field set to name,
|
||
* and the Err field describing the problem.
|
||
*
|
||
* Open should reject attempts to open names that do not satisfy
|
||
* ValidPath(name), returning a *PathError with Err set to
|
||
* ErrInvalid or ErrNotExist.
|
||
*/
|
||
open(name: string): File
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package context defines the Context type, which carries deadlines,
|
||
* cancellation signals, and other request-scoped values across API boundaries
|
||
* and between processes.
|
||
*
|
||
* Incoming requests to a server should create a Context, and outgoing
|
||
* calls to servers should accept a Context. The chain of function
|
||
* calls between them must propagate the Context, optionally replacing
|
||
* it with a derived Context created using WithCancel, WithDeadline,
|
||
* WithTimeout, or WithValue. When a Context is canceled, all
|
||
* Contexts derived from it are also canceled.
|
||
*
|
||
* The WithCancel, WithDeadline, and WithTimeout functions take a
|
||
* Context (the parent) and return a derived Context (the child) and a
|
||
* CancelFunc. Calling the CancelFunc cancels the child and its
|
||
* children, removes the parent's reference to the child, and stops
|
||
* any associated timers. Failing to call the CancelFunc leaks the
|
||
* child and its children until the parent is canceled or the timer
|
||
* fires. The go vet tool checks that CancelFuncs are used on all
|
||
* control-flow paths.
|
||
*
|
||
* Programs that use Contexts should follow these rules to keep interfaces
|
||
* consistent across packages and enable static analysis tools to check context
|
||
* propagation:
|
||
*
|
||
* Do not store Contexts inside a struct type; instead, pass a Context
|
||
* explicitly to each function that needs it. The Context should be the first
|
||
* parameter, typically named ctx:
|
||
*
|
||
* ```
|
||
* func DoSomething(ctx context.Context, arg Arg) error {
|
||
* // ... use ctx ...
|
||
* }
|
||
* ```
|
||
*
|
||
* Do not pass a nil Context, even if a function permits it. Pass context.TODO
|
||
* if you are unsure about which Context to use.
|
||
*
|
||
* Use context Values only for request-scoped data that transits processes and
|
||
* APIs, not for passing optional parameters to functions.
|
||
*
|
||
* The same Context may be passed to functions running in different goroutines;
|
||
* Contexts are safe for simultaneous use by multiple goroutines.
|
||
*
|
||
* See https://blog.golang.org/context for example code for a server that uses
|
||
* Contexts.
|
||
*/
|
||
namespace context {
|
||
/**
|
||
* A Context carries a deadline, a cancellation signal, and other values across
|
||
* API boundaries.
|
||
*
|
||
* Context's methods may be called by multiple goroutines simultaneously.
|
||
*/
|
||
interface Context {
|
||
/**
|
||
* Deadline returns the time when work done on behalf of this context
|
||
* should be canceled. Deadline returns ok==false when no deadline is
|
||
* set. Successive calls to Deadline return the same results.
|
||
*/
|
||
deadline(): [time.Time, boolean]
|
||
/**
|
||
* Done returns a channel that's closed when work done on behalf of this
|
||
* context should be canceled. Done may return nil if this context can
|
||
* never be canceled. Successive calls to Done return the same value.
|
||
* The close of the Done channel may happen asynchronously,
|
||
* after the cancel function returns.
|
||
*
|
||
* WithCancel arranges for Done to be closed when cancel is called;
|
||
* WithDeadline arranges for Done to be closed when the deadline
|
||
* expires; WithTimeout arranges for Done to be closed when the timeout
|
||
* elapses.
|
||
*
|
||
* Done is provided for use in select statements:
|
||
*
|
||
* // Stream generates values with DoSomething and sends them to out
|
||
* // until DoSomething returns an error or ctx.Done is closed.
|
||
* func Stream(ctx context.Context, out chan<- Value) error {
|
||
* for {
|
||
* v, err := DoSomething(ctx)
|
||
* if err != nil {
|
||
* return err
|
||
* }
|
||
* select {
|
||
* case <-ctx.Done():
|
||
* return ctx.Err()
|
||
* case out <- v:
|
||
* }
|
||
* }
|
||
* }
|
||
*
|
||
* See https://blog.golang.org/pipelines for more examples of how to use
|
||
* a Done channel for cancellation.
|
||
*/
|
||
done(): undefined
|
||
/**
|
||
* If Done is not yet closed, Err returns nil.
|
||
* If Done is closed, Err returns a non-nil error explaining why:
|
||
* Canceled if the context was canceled
|
||
* or DeadlineExceeded if the context's deadline passed.
|
||
* After Err returns a non-nil error, successive calls to Err return the same error.
|
||
*/
|
||
err(): void
|
||
/**
|
||
* Value returns the value associated with this context for key, or nil
|
||
* if no value is associated with key. Successive calls to Value with
|
||
* the same key returns the same result.
|
||
*
|
||
* Use context values only for request-scoped data that transits
|
||
* processes and API boundaries, not for passing optional parameters to
|
||
* functions.
|
||
*
|
||
* A key identifies a specific value in a Context. Functions that wish
|
||
* to store values in Context typically allocate a key in a global
|
||
* variable then use that key as the argument to context.WithValue and
|
||
* Context.Value. A key can be any type that supports equality;
|
||
* packages should define keys as an unexported type to avoid
|
||
* collisions.
|
||
*
|
||
* Packages that define a Context key should provide type-safe accessors
|
||
* for the values stored using that key:
|
||
*
|
||
* ```
|
||
* // Package user defines a User type that's stored in Contexts.
|
||
* package user
|
||
*
|
||
* import "context"
|
||
*
|
||
* // User is the type of value stored in the Contexts.
|
||
* type User struct {...}
|
||
*
|
||
* // key is an unexported type for keys defined in this package.
|
||
* // This prevents collisions with keys defined in other packages.
|
||
* type key int
|
||
*
|
||
* // userKey is the key for user.User values in Contexts. It is
|
||
* // unexported; clients use user.NewContext and user.FromContext
|
||
* // instead of using this key directly.
|
||
* var userKey key
|
||
*
|
||
* // NewContext returns a new Context that carries value u.
|
||
* func NewContext(ctx context.Context, u *User) context.Context {
|
||
* return context.WithValue(ctx, userKey, u)
|
||
* }
|
||
*
|
||
* // FromContext returns the User value stored in ctx, if any.
|
||
* func FromContext(ctx context.Context) (*User, bool) {
|
||
* u, ok := ctx.Value(userKey).(*User)
|
||
* return u, ok
|
||
* }
|
||
* ```
|
||
*/
|
||
value(key: any): any
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package multipart implements MIME multipart parsing, as defined in RFC
|
||
* 2046.
|
||
*
|
||
* The implementation is sufficient for HTTP (RFC 2388) and the multipart
|
||
* bodies generated by popular browsers.
|
||
*/
|
||
namespace multipart {
|
||
/**
|
||
* A FileHeader describes a file part of a multipart request.
|
||
*/
|
||
interface FileHeader {
|
||
filename: string
|
||
header: textproto.MIMEHeader
|
||
size: number
|
||
}
|
||
interface FileHeader {
|
||
/**
|
||
* Open opens and returns the FileHeader's associated File.
|
||
*/
|
||
open(): File
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package http provides HTTP client and server implementations.
|
||
*
|
||
* Get, Head, Post, and PostForm make HTTP (or HTTPS) requests:
|
||
*
|
||
* ```
|
||
* resp, err := http.Get("http://example.com/")
|
||
* ...
|
||
* resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf)
|
||
* ...
|
||
* resp, err := http.PostForm("http://example.com/form",
|
||
* url.Values{"key": {"Value"}, "id": {"123"}})
|
||
* ```
|
||
*
|
||
* The client must close the response body when finished with it:
|
||
*
|
||
* ```
|
||
* resp, err := http.Get("http://example.com/")
|
||
* if err != nil {
|
||
* // handle error
|
||
* }
|
||
* defer resp.Body.Close()
|
||
* body, err := io.ReadAll(resp.Body)
|
||
* // ...
|
||
* ```
|
||
*
|
||
* For control over HTTP client headers, redirect policy, and other
|
||
* settings, create a Client:
|
||
*
|
||
* ```
|
||
* client := &http.Client{
|
||
* CheckRedirect: redirectPolicyFunc,
|
||
* }
|
||
*
|
||
* resp, err := client.Get("http://example.com")
|
||
* // ...
|
||
*
|
||
* req, err := http.NewRequest("GET", "http://example.com", nil)
|
||
* // ...
|
||
* req.Header.Add("If-None-Match", `W/"wyzzy"`)
|
||
* resp, err := client.Do(req)
|
||
* // ...
|
||
* ```
|
||
*
|
||
* For control over proxies, TLS configuration, keep-alives,
|
||
* compression, and other settings, create a Transport:
|
||
*
|
||
* ```
|
||
* tr := &http.Transport{
|
||
* MaxIdleConns: 10,
|
||
* IdleConnTimeout: 30 * time.Second,
|
||
* DisableCompression: true,
|
||
* }
|
||
* client := &http.Client{Transport: tr}
|
||
* resp, err := client.Get("https://example.com")
|
||
* ```
|
||
*
|
||
* Clients and Transports are safe for concurrent use by multiple
|
||
* goroutines and for efficiency should only be created once and re-used.
|
||
*
|
||
* ListenAndServe starts an HTTP server with a given address and handler.
|
||
* The handler is usually nil, which means to use DefaultServeMux.
|
||
* Handle and HandleFunc add handlers to DefaultServeMux:
|
||
*
|
||
* ```
|
||
* http.Handle("/foo", fooHandler)
|
||
*
|
||
* http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
|
||
* fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
|
||
* })
|
||
*
|
||
* log.Fatal(http.ListenAndServe(":8080", nil))
|
||
* ```
|
||
*
|
||
* More control over the server's behavior is available by creating a
|
||
* custom Server:
|
||
*
|
||
* ```
|
||
* s := &http.Server{
|
||
* Addr: ":8080",
|
||
* Handler: myHandler,
|
||
* ReadTimeout: 10 * time.Second,
|
||
* WriteTimeout: 10 * time.Second,
|
||
* MaxHeaderBytes: 1 << 20,
|
||
* }
|
||
* log.Fatal(s.ListenAndServe())
|
||
* ```
|
||
*
|
||
* Starting with Go 1.6, the http package has transparent support for the
|
||
* HTTP/2 protocol when using HTTPS. Programs that must disable HTTP/2
|
||
* can do so by setting Transport.TLSNextProto (for clients) or
|
||
* Server.TLSNextProto (for servers) to a non-nil, empty
|
||
* map. Alternatively, the following GODEBUG environment variables are
|
||
* currently supported:
|
||
*
|
||
* ```
|
||
* GODEBUG=http2client=0 # disable HTTP/2 client support
|
||
* GODEBUG=http2server=0 # disable HTTP/2 server support
|
||
* GODEBUG=http2debug=1 # enable verbose HTTP/2 debug logs
|
||
* GODEBUG=http2debug=2 # ... even more verbose, with frame dumps
|
||
* ```
|
||
*
|
||
* The GODEBUG variables are not covered by Go's API compatibility
|
||
* promise. Please report any issues before disabling HTTP/2
|
||
* support: https://golang.org/s/http2bug
|
||
*
|
||
* The http package's Transport and Server both automatically enable
|
||
* HTTP/2 support for simple configurations. To enable HTTP/2 for more
|
||
* complex configurations, to use lower-level HTTP/2 features, or to use
|
||
* a newer version of Go's http2 package, import "golang.org/x/net/http2"
|
||
* directly and use its ConfigureTransport and/or ConfigureServer
|
||
* functions. Manually configuring HTTP/2 via the golang.org/x/net/http2
|
||
* package takes precedence over the net/http package's built-in HTTP/2
|
||
* support.
|
||
*/
|
||
namespace http {
|
||
// @ts-ignore
|
||
import mathrand = rand
|
||
// @ts-ignore
|
||
import urlpkg = url
|
||
/**
|
||
* A Request represents an HTTP request received by a server
|
||
* or to be sent by a client.
|
||
*
|
||
* The field semantics differ slightly between client and server
|
||
* usage. In addition to the notes on the fields below, see the
|
||
* documentation for Request.Write and RoundTripper.
|
||
*/
|
||
interface Request {
|
||
/**
|
||
* Method specifies the HTTP method (GET, POST, PUT, etc.).
|
||
* For client requests, an empty string means GET.
|
||
*
|
||
* Go's HTTP client does not support sending a request with
|
||
* the CONNECT method. See the documentation on Transport for
|
||
* details.
|
||
*/
|
||
method: string
|
||
/**
|
||
* URL specifies either the URI being requested (for server
|
||
* requests) or the URL to access (for client requests).
|
||
*
|
||
* For server requests, the URL is parsed from the URI
|
||
* supplied on the Request-Line as stored in RequestURI. For
|
||
* most requests, fields other than Path and RawQuery will be
|
||
* empty. (See RFC 7230, Section 5.3)
|
||
*
|
||
* For client requests, the URL's Host specifies the server to
|
||
* connect to, while the Request's Host field optionally
|
||
* specifies the Host header value to send in the HTTP
|
||
* request.
|
||
*/
|
||
url?: url.URL
|
||
/**
|
||
* The protocol version for incoming server requests.
|
||
*
|
||
* For client requests, these fields are ignored. The HTTP
|
||
* client code always uses either HTTP/1.1 or HTTP/2.
|
||
* See the docs on Transport for details.
|
||
*/
|
||
proto: string // "HTTP/1.0"
|
||
protoMajor: number // 1
|
||
protoMinor: number // 0
|
||
/**
|
||
* Header contains the request header fields either received
|
||
* by the server or to be sent by the client.
|
||
*
|
||
* If a server received a request with header lines,
|
||
*
|
||
* ```
|
||
* Host: example.com
|
||
* accept-encoding: gzip, deflate
|
||
* Accept-Language: en-us
|
||
* fOO: Bar
|
||
* foo: two
|
||
* ```
|
||
*
|
||
* then
|
||
*
|
||
* ```
|
||
* Header = map[string][]string{
|
||
* "Accept-Encoding": {"gzip, deflate"},
|
||
* "Accept-Language": {"en-us"},
|
||
* "Foo": {"Bar", "two"},
|
||
* }
|
||
* ```
|
||
*
|
||
* For incoming requests, the Host header is promoted to the
|
||
* Request.Host field and removed from the Header map.
|
||
*
|
||
* HTTP defines that header names are case-insensitive. The
|
||
* request parser implements this by using CanonicalHeaderKey,
|
||
* making the first character and any characters following a
|
||
* hyphen uppercase and the rest lowercase.
|
||
*
|
||
* For client requests, certain headers such as Content-Length
|
||
* and Connection are automatically written when needed and
|
||
* values in Header may be ignored. See the documentation
|
||
* for the Request.Write method.
|
||
*/
|
||
header: Header
|
||
/**
|
||
* Body is the request's body.
|
||
*
|
||
* For client requests, a nil body means the request has no
|
||
* body, such as a GET request. The HTTP Client's Transport
|
||
* is responsible for calling the Close method.
|
||
*
|
||
* For server requests, the Request Body is always non-nil
|
||
* but will return EOF immediately when no body is present.
|
||
* The Server will close the request body. The ServeHTTP
|
||
* Handler does not need to.
|
||
*
|
||
* Body must allow Read to be called concurrently with Close.
|
||
* In particular, calling Close should unblock a Read waiting
|
||
* for input.
|
||
*/
|
||
body: io.ReadCloser
|
||
/**
|
||
* GetBody defines an optional func to return a new copy of
|
||
* Body. It is used for client requests when a redirect requires
|
||
* reading the body more than once. Use of GetBody still
|
||
* requires setting Body.
|
||
*
|
||
* For server requests, it is unused.
|
||
*/
|
||
getBody: () => io.ReadCloser
|
||
/**
|
||
* ContentLength records the length of the associated content.
|
||
* The value -1 indicates that the length is unknown.
|
||
* Values >= 0 indicate that the given number of bytes may
|
||
* be read from Body.
|
||
*
|
||
* For client requests, a value of 0 with a non-nil Body is
|
||
* also treated as unknown.
|
||
*/
|
||
contentLength: number
|
||
/**
|
||
* TransferEncoding lists the transfer encodings from outermost to
|
||
* innermost. An empty list denotes the "identity" encoding.
|
||
* TransferEncoding can usually be ignored; chunked encoding is
|
||
* automatically added and removed as necessary when sending and
|
||
* receiving requests.
|
||
*/
|
||
transferEncoding: Array<string>
|
||
/**
|
||
* Close indicates whether to close the connection after
|
||
* replying to this request (for servers) or after sending this
|
||
* request and reading its response (for clients).
|
||
*
|
||
* For server requests, the HTTP server handles this automatically
|
||
* and this field is not needed by Handlers.
|
||
*
|
||
* For client requests, setting this field prevents re-use of
|
||
* TCP connections between requests to the same hosts, as if
|
||
* Transport.DisableKeepAlives were set.
|
||
*/
|
||
close: boolean
|
||
/**
|
||
* For server requests, Host specifies the host on which the
|
||
* URL is sought. For HTTP/1 (per RFC 7230, section 5.4), this
|
||
* is either the value of the "Host" header or the host name
|
||
* given in the URL itself. For HTTP/2, it is the value of the
|
||
* ":authority" pseudo-header field.
|
||
* It may be of the form "host:port". For international domain
|
||
* names, Host may be in Punycode or Unicode form. Use
|
||
* golang.org/x/net/idna to convert it to either format if
|
||
* needed.
|
||
* To prevent DNS rebinding attacks, server Handlers should
|
||
* validate that the Host header has a value for which the
|
||
* Handler considers itself authoritative. The included
|
||
* ServeMux supports patterns registered to particular host
|
||
* names and thus protects its registered Handlers.
|
||
*
|
||
* For client requests, Host optionally overrides the Host
|
||
* header to send. If empty, the Request.Write method uses
|
||
* the value of URL.Host. Host may contain an international
|
||
* domain name.
|
||
*/
|
||
host: string
|
||
/**
|
||
* Form contains the parsed form data, including both the URL
|
||
* field's query parameters and the PATCH, POST, or PUT form data.
|
||
* This field is only available after ParseForm is called.
|
||
* The HTTP client ignores Form and uses Body instead.
|
||
*/
|
||
form: url.Values
|
||
/**
|
||
* PostForm contains the parsed form data from PATCH, POST
|
||
* or PUT body parameters.
|
||
*
|
||
* This field is only available after ParseForm is called.
|
||
* The HTTP client ignores PostForm and uses Body instead.
|
||
*/
|
||
postForm: url.Values
|
||
/**
|
||
* MultipartForm is the parsed multipart form, including file uploads.
|
||
* This field is only available after ParseMultipartForm is called.
|
||
* The HTTP client ignores MultipartForm and uses Body instead.
|
||
*/
|
||
multipartForm?: multipart.Form
|
||
/**
|
||
* Trailer specifies additional headers that are sent after the request
|
||
* body.
|
||
*
|
||
* For server requests, the Trailer map initially contains only the
|
||
* trailer keys, with nil values. (The client declares which trailers it
|
||
* will later send.) While the handler is reading from Body, it must
|
||
* not reference Trailer. After reading from Body returns EOF, Trailer
|
||
* can be read again and will contain non-nil values, if they were sent
|
||
* by the client.
|
||
*
|
||
* For client requests, Trailer must be initialized to a map containing
|
||
* the trailer keys to later send. The values may be nil or their final
|
||
* values. The ContentLength must be 0 or -1, to send a chunked request.
|
||
* After the HTTP request is sent the map values can be updated while
|
||
* the request body is read. Once the body returns EOF, the caller must
|
||
* not mutate Trailer.
|
||
*
|
||
* Few HTTP clients, servers, or proxies support HTTP trailers.
|
||
*/
|
||
trailer: Header
|
||
/**
|
||
* RemoteAddr allows HTTP servers and other software to record
|
||
* the network address that sent the request, usually for
|
||
* logging. This field is not filled in by ReadRequest and
|
||
* has no defined format. The HTTP server in this package
|
||
* sets RemoteAddr to an "IP:port" address before invoking a
|
||
* handler.
|
||
* This field is ignored by the HTTP client.
|
||
*/
|
||
remoteAddr: string
|
||
/**
|
||
* RequestURI is the unmodified request-target of the
|
||
* Request-Line (RFC 7230, Section 3.1.1) as sent by the client
|
||
* to a server. Usually the URL field should be used instead.
|
||
* It is an error to set this field in an HTTP client request.
|
||
*/
|
||
requestURI: string
|
||
/**
|
||
* TLS allows HTTP servers and other software to record
|
||
* information about the TLS connection on which the request
|
||
* was received. This field is not filled in by ReadRequest.
|
||
* The HTTP server in this package sets the field for
|
||
* TLS-enabled connections before invoking a handler;
|
||
* otherwise it leaves the field nil.
|
||
* This field is ignored by the HTTP client.
|
||
*/
|
||
tls?: tls.ConnectionState
|
||
/**
|
||
* Cancel is an optional channel whose closure indicates that the client
|
||
* request should be regarded as canceled. Not all implementations of
|
||
* RoundTripper may support Cancel.
|
||
*
|
||
* For server requests, this field is not applicable.
|
||
*
|
||
* Deprecated: Set the Request's context with NewRequestWithContext
|
||
* instead. If a Request's Cancel field and context are both
|
||
* set, it is undefined whether Cancel is respected.
|
||
*/
|
||
cancel: undefined
|
||
/**
|
||
* Response is the redirect response which caused this request
|
||
* to be created. This field is only populated during client
|
||
* redirects.
|
||
*/
|
||
response?: Response
|
||
}
|
||
interface Request {
|
||
/**
|
||
* Context returns the request's context. To change the context, use
|
||
* WithContext.
|
||
*
|
||
* The returned context is always non-nil; it defaults to the
|
||
* background context.
|
||
*
|
||
* For outgoing client requests, the context controls cancellation.
|
||
*
|
||
* For incoming server requests, the context is canceled when the
|
||
* client's connection closes, the request is canceled (with HTTP/2),
|
||
* or when the ServeHTTP method returns.
|
||
*/
|
||
context(): context.Context
|
||
}
|
||
interface Request {
|
||
/**
|
||
* WithContext returns a shallow copy of r with its context changed
|
||
* to ctx. The provided ctx must be non-nil.
|
||
*
|
||
* For outgoing client request, the context controls the entire
|
||
* lifetime of a request and its response: obtaining a connection,
|
||
* sending the request, and reading the response headers and body.
|
||
*
|
||
* To create a new request with a context, use NewRequestWithContext.
|
||
* To change the context of a request, such as an incoming request you
|
||
* want to modify before sending back out, use Request.Clone. Between
|
||
* those two uses, it's rare to need WithContext.
|
||
*/
|
||
withContext(ctx: context.Context): (Request | undefined)
|
||
}
|
||
interface Request {
|
||
/**
|
||
* Clone returns a deep copy of r with its context changed to ctx.
|
||
* The provided ctx must be non-nil.
|
||
*
|
||
* For an outgoing client request, the context controls the entire
|
||
* lifetime of a request and its response: obtaining a connection,
|
||
* sending the request, and reading the response headers and body.
|
||
*/
|
||
clone(ctx: context.Context): (Request | undefined)
|
||
}
|
||
interface Request {
|
||
/**
|
||
* ProtoAtLeast reports whether the HTTP protocol used
|
||
* in the request is at least major.minor.
|
||
*/
|
||
protoAtLeast(major: number): boolean
|
||
}
|
||
interface Request {
|
||
/**
|
||
* UserAgent returns the client's User-Agent, if sent in the request.
|
||
*/
|
||
userAgent(): string
|
||
}
|
||
interface Request {
|
||
/**
|
||
* Cookies parses and returns the HTTP cookies sent with the request.
|
||
*/
|
||
cookies(): Array<(Cookie | undefined)>
|
||
}
|
||
interface Request {
|
||
/**
|
||
* Cookie returns the named cookie provided in the request or
|
||
* ErrNoCookie if not found.
|
||
* If multiple cookies match the given name, only one cookie will
|
||
* be returned.
|
||
*/
|
||
cookie(name: string): (Cookie | undefined)
|
||
}
|
||
interface Request {
|
||
/**
|
||
* AddCookie adds a cookie to the request. Per RFC 6265 section 5.4,
|
||
* AddCookie does not attach more than one Cookie header field. That
|
||
* means all cookies, if any, are written into the same line,
|
||
* separated by semicolon.
|
||
* AddCookie only sanitizes c's name and value, and does not sanitize
|
||
* a Cookie header already present in the request.
|
||
*/
|
||
addCookie(c: Cookie): void
|
||
}
|
||
interface Request {
|
||
/**
|
||
* Referer returns the referring URL, if sent in the request.
|
||
*
|
||
* Referer is misspelled as in the request itself, a mistake from the
|
||
* earliest days of HTTP. This value can also be fetched from the
|
||
* Header map as Header["Referer"]; the benefit of making it available
|
||
* as a method is that the compiler can diagnose programs that use the
|
||
* alternate (correct English) spelling req.Referrer() but cannot
|
||
* diagnose programs that use Header["Referrer"].
|
||
*/
|
||
referer(): string
|
||
}
|
||
interface Request {
|
||
/**
|
||
* MultipartReader returns a MIME multipart reader if this is a
|
||
* multipart/form-data or a multipart/mixed POST request, else returns nil and an error.
|
||
* Use this function instead of ParseMultipartForm to
|
||
* process the request body as a stream.
|
||
*/
|
||
multipartReader(): (multipart.Reader | undefined)
|
||
}
|
||
interface Request {
|
||
/**
|
||
* Write writes an HTTP/1.1 request, which is the header and body, in wire format.
|
||
* This method consults the following fields of the request:
|
||
*
|
||
* ```
|
||
* Host
|
||
* URL
|
||
* Method (defaults to "GET")
|
||
* Header
|
||
* ContentLength
|
||
* TransferEncoding
|
||
* Body
|
||
* ```
|
||
*
|
||
* If Body is present, Content-Length is <= 0 and TransferEncoding
|
||
* hasn't been set to "identity", Write adds "Transfer-Encoding:
|
||
* chunked" to the header. Body is closed after it is sent.
|
||
*/
|
||
write(w: io.Writer): void
|
||
}
|
||
interface Request {
|
||
/**
|
||
* WriteProxy is like Write but writes the request in the form
|
||
* expected by an HTTP proxy. In particular, WriteProxy writes the
|
||
* initial Request-URI line of the request with an absolute URI, per
|
||
* section 5.3 of RFC 7230, including the scheme and host.
|
||
* In either case, WriteProxy also writes a Host header, using
|
||
* either r.Host or r.URL.Host.
|
||
*/
|
||
writeProxy(w: io.Writer): void
|
||
}
|
||
interface Request {
|
||
/**
|
||
* BasicAuth returns the username and password provided in the request's
|
||
* Authorization header, if the request uses HTTP Basic Authentication.
|
||
* See RFC 2617, Section 2.
|
||
*/
|
||
basicAuth(): [string, boolean]
|
||
}
|
||
interface Request {
|
||
/**
|
||
* SetBasicAuth sets the request's Authorization header to use HTTP
|
||
* Basic Authentication with the provided username and password.
|
||
*
|
||
* With HTTP Basic Authentication the provided username and password
|
||
* are not encrypted. It should generally only be used in an HTTPS
|
||
* request.
|
||
*
|
||
* The username may not contain a colon. Some protocols may impose
|
||
* additional requirements on pre-escaping the username and
|
||
* password. For instance, when used with OAuth2, both arguments must
|
||
* be URL encoded first with url.QueryEscape.
|
||
*/
|
||
setBasicAuth(username: string): void
|
||
}
|
||
interface Request {
|
||
/**
|
||
* ParseForm populates r.Form and r.PostForm.
|
||
*
|
||
* For all requests, ParseForm parses the raw query from the URL and updates
|
||
* r.Form.
|
||
*
|
||
* For POST, PUT, and PATCH requests, it also reads the request body, parses it
|
||
* as a form and puts the results into both r.PostForm and r.Form. Request body
|
||
* parameters take precedence over URL query string values in r.Form.
|
||
*
|
||
* If the request Body's size has not already been limited by MaxBytesReader,
|
||
* the size is capped at 10MB.
|
||
*
|
||
* For other HTTP methods, or when the Content-Type is not
|
||
* application/x-www-form-urlencoded, the request Body is not read, and
|
||
* r.PostForm is initialized to a non-nil, empty value.
|
||
*
|
||
* ParseMultipartForm calls ParseForm automatically.
|
||
* ParseForm is idempotent.
|
||
*/
|
||
parseForm(): void
|
||
}
|
||
interface Request {
|
||
/**
|
||
* ParseMultipartForm parses a request body as multipart/form-data.
|
||
* The whole request body is parsed and up to a total of maxMemory bytes of
|
||
* its file parts are stored in memory, with the remainder stored on
|
||
* disk in temporary files.
|
||
* ParseMultipartForm calls ParseForm if necessary.
|
||
* If ParseForm returns an error, ParseMultipartForm returns it but also
|
||
* continues parsing the request body.
|
||
* After one call to ParseMultipartForm, subsequent calls have no effect.
|
||
*/
|
||
parseMultipartForm(maxMemory: number): void
|
||
}
|
||
interface Request {
|
||
/**
|
||
* FormValue returns the first value for the named component of the query.
|
||
* POST and PUT body parameters take precedence over URL query string values.
|
||
* FormValue calls ParseMultipartForm and ParseForm if necessary and ignores
|
||
* any errors returned by these functions.
|
||
* If key is not present, FormValue returns the empty string.
|
||
* To access multiple values of the same key, call ParseForm and
|
||
* then inspect Request.Form directly.
|
||
*/
|
||
formValue(key: string): string
|
||
}
|
||
interface Request {
|
||
/**
|
||
* PostFormValue returns the first value for the named component of the POST,
|
||
* PATCH, or PUT request body. URL query parameters are ignored.
|
||
* PostFormValue calls ParseMultipartForm and ParseForm if necessary and ignores
|
||
* any errors returned by these functions.
|
||
* If key is not present, PostFormValue returns the empty string.
|
||
*/
|
||
postFormValue(key: string): string
|
||
}
|
||
interface Request {
|
||
/**
|
||
* FormFile returns the first file for the provided form key.
|
||
* FormFile calls ParseMultipartForm and ParseForm if necessary.
|
||
*/
|
||
formFile(key: string): [multipart.File, (multipart.FileHeader | undefined)]
|
||
}
|
||
/**
|
||
* A ResponseWriter interface is used by an HTTP handler to
|
||
* construct an HTTP response.
|
||
*
|
||
* A ResponseWriter may not be used after the Handler.ServeHTTP method
|
||
* has returned.
|
||
*/
|
||
interface ResponseWriter {
|
||
/**
|
||
* Header returns the header map that will be sent by
|
||
* WriteHeader. The Header map also is the mechanism with which
|
||
* Handlers can set HTTP trailers.
|
||
*
|
||
* Changing the header map after a call to WriteHeader (or
|
||
* Write) has no effect unless the HTTP status code was of the
|
||
* 1xx class or the modified headers are trailers.
|
||
*
|
||
* There are two ways to set Trailers. The preferred way is to
|
||
* predeclare in the headers which trailers you will later
|
||
* send by setting the "Trailer" header to the names of the
|
||
* trailer keys which will come later. In this case, those
|
||
* keys of the Header map are treated as if they were
|
||
* trailers. See the example. The second way, for trailer
|
||
* keys not known to the Handler until after the first Write,
|
||
* is to prefix the Header map keys with the TrailerPrefix
|
||
* constant value. See TrailerPrefix.
|
||
*
|
||
* To suppress automatic response headers (such as "Date"), set
|
||
* their value to nil.
|
||
*/
|
||
header(): Header
|
||
/**
|
||
* Write writes the data to the connection as part of an HTTP reply.
|
||
*
|
||
* If WriteHeader has not yet been called, Write calls
|
||
* WriteHeader(http.StatusOK) before writing the data. If the Header
|
||
* does not contain a Content-Type line, Write adds a Content-Type set
|
||
* to the result of passing the initial 512 bytes of written data to
|
||
* DetectContentType. Additionally, if the total size of all written
|
||
* data is under a few KB and there are no Flush calls, the
|
||
* Content-Length header is added automatically.
|
||
*
|
||
* Depending on the HTTP protocol version and the client, calling
|
||
* Write or WriteHeader may prevent future reads on the
|
||
* Request.Body. For HTTP/1.x requests, handlers should read any
|
||
* needed request body data before writing the response. Once the
|
||
* headers have been flushed (due to either an explicit Flusher.Flush
|
||
* call or writing enough data to trigger a flush), the request body
|
||
* may be unavailable. For HTTP/2 requests, the Go HTTP server permits
|
||
* handlers to continue to read the request body while concurrently
|
||
* writing the response. However, such behavior may not be supported
|
||
* by all HTTP/2 clients. Handlers should read before writing if
|
||
* possible to maximize compatibility.
|
||
*/
|
||
write(_arg0: string): number
|
||
/**
|
||
* WriteHeader sends an HTTP response header with the provided
|
||
* status code.
|
||
*
|
||
* If WriteHeader is not called explicitly, the first call to Write
|
||
* will trigger an implicit WriteHeader(http.StatusOK).
|
||
* Thus explicit calls to WriteHeader are mainly used to
|
||
* send error codes or 1xx informational responses.
|
||
*
|
||
* The provided code must be a valid HTTP 1xx-5xx status code.
|
||
* Any number of 1xx headers may be written, followed by at most
|
||
* one 2xx-5xx header. 1xx headers are sent immediately, but 2xx-5xx
|
||
* headers may be buffered. Use the Flusher interface to send
|
||
* buffered data. The header map is cleared when 2xx-5xx headers are
|
||
* sent, but not with 1xx headers.
|
||
*
|
||
* The server will automatically send a 100 (Continue) header
|
||
* on the first read from the request body if the request has
|
||
* an "Expect: 100-continue" header.
|
||
*/
|
||
writeHeader(statusCode: number): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package blob provides an easy and portable way to interact with blobs
|
||
* within a storage location. Subpackages contain driver implementations of
|
||
* blob for supported services.
|
||
*
|
||
* See https://gocloud.dev/howto/blob/ for a detailed how-to guide.
|
||
*
|
||
* # Errors
|
||
*
|
||
* The errors returned from this package can be inspected in several ways:
|
||
*
|
||
* The Code function from gocloud.dev/gcerrors will return an error code, also
|
||
* defined in that package, when invoked on an error.
|
||
*
|
||
* The Bucket.ErrorAs method can retrieve the driver error underlying the returned
|
||
* error.
|
||
*
|
||
* # OpenCensus Integration
|
||
*
|
||
* OpenCensus supports tracing and metric collection for multiple languages and
|
||
* backend providers. See https://opencensus.io.
|
||
*
|
||
* This API collects OpenCensus traces and metrics for the following methods:
|
||
* ```
|
||
* - Attributes
|
||
* - Copy
|
||
* - Delete
|
||
* - ListPage
|
||
* - NewRangeReader, from creation until the call to Close. (NewReader and ReadAll
|
||
* are included because they call NewRangeReader.)
|
||
* - NewWriter, from creation until the call to Close.
|
||
* ```
|
||
*
|
||
* All trace and metric names begin with the package import path.
|
||
* The traces add the method name.
|
||
* For example, "gocloud.dev/blob/Attributes".
|
||
* The metrics are "completed_calls", a count of completed method calls by driver,
|
||
* method and status (error code); and "latency", a distribution of method latency
|
||
* by driver and method.
|
||
* For example, "gocloud.dev/blob/latency".
|
||
*
|
||
* It also collects the following metrics:
|
||
* ```
|
||
* - gocloud.dev/blob/bytes_read: the total number of bytes read, by driver.
|
||
* - gocloud.dev/blob/bytes_written: the total number of bytes written, by driver.
|
||
* ```
|
||
*
|
||
* To enable trace collection in your application, see "Configure Exporter" at
|
||
* https://opencensus.io/quickstart/go/tracing.
|
||
* To enable metric collection in your application, see "Exporting stats" at
|
||
* https://opencensus.io/quickstart/go/metrics.
|
||
*/
|
||
namespace blob {
|
||
/**
|
||
* Reader reads bytes from a blob.
|
||
* It implements io.ReadSeekCloser, and must be closed after
|
||
* reads are finished.
|
||
*/
|
||
interface Reader {
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Read implements io.Reader (https://golang.org/pkg/io/#Reader).
|
||
*/
|
||
read(p: string): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Seek implements io.Seeker (https://golang.org/pkg/io/#Seeker).
|
||
*/
|
||
seek(offset: number, whence: number): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Close implements io.Closer (https://golang.org/pkg/io/#Closer).
|
||
*/
|
||
close(): void
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* ContentType returns the MIME type of the blob.
|
||
*/
|
||
contentType(): string
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* ModTime returns the time the blob was last modified.
|
||
*/
|
||
modTime(): time.Time
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Size returns the size of the blob content in bytes.
|
||
*/
|
||
size(): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* As converts i to driver-specific types.
|
||
* See https://gocloud.dev/concepts/as/ for background information, the "As"
|
||
* examples in this package for examples, and the driver package
|
||
* documentation for the specific types supported for that driver.
|
||
*/
|
||
as(i: {
|
||
}): boolean
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* WriteTo reads from r and writes to w until there's no more data or
|
||
* an error occurs.
|
||
* The return value is the number of bytes written to w.
|
||
*
|
||
* It implements the io.WriterTo interface.
|
||
*/
|
||
writeTo(w: io.Writer): number
|
||
}
|
||
/**
|
||
* Attributes contains attributes about a blob.
|
||
*/
|
||
interface Attributes {
|
||
/**
|
||
* CacheControl specifies caching attributes that services may use
|
||
* when serving the blob.
|
||
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
|
||
*/
|
||
cacheControl: string
|
||
/**
|
||
* ContentDisposition specifies whether the blob content is expected to be
|
||
* displayed inline or as an attachment.
|
||
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition
|
||
*/
|
||
contentDisposition: string
|
||
/**
|
||
* ContentEncoding specifies the encoding used for the blob's content, if any.
|
||
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding
|
||
*/
|
||
contentEncoding: string
|
||
/**
|
||
* ContentLanguage specifies the language used in the blob's content, if any.
|
||
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Language
|
||
*/
|
||
contentLanguage: string
|
||
/**
|
||
* ContentType is the MIME type of the blob. It will not be empty.
|
||
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type
|
||
*/
|
||
contentType: string
|
||
/**
|
||
* Metadata holds key/value pairs associated with the blob.
|
||
* Keys are guaranteed to be in lowercase, even if the backend service
|
||
* has case-sensitive keys (although note that Metadata written via
|
||
* this package will always be lowercased). If there are duplicate
|
||
* case-insensitive keys (e.g., "foo" and "FOO"), only one value
|
||
* will be kept, and it is undefined which one.
|
||
*/
|
||
metadata: _TygojaDict
|
||
/**
|
||
* CreateTime is the time the blob was created, if available. If not available,
|
||
* CreateTime will be the zero time.
|
||
*/
|
||
createTime: time.Time
|
||
/**
|
||
* ModTime is the time the blob was last modified.
|
||
*/
|
||
modTime: time.Time
|
||
/**
|
||
* Size is the size of the blob's content in bytes.
|
||
*/
|
||
size: number
|
||
/**
|
||
* MD5 is an MD5 hash of the blob contents or nil if not available.
|
||
*/
|
||
md5: string
|
||
/**
|
||
* ETag for the blob; see https://en.wikipedia.org/wiki/HTTP_ETag.
|
||
*/
|
||
eTag: string
|
||
}
|
||
interface Attributes {
|
||
/**
|
||
* As converts i to driver-specific types.
|
||
* See https://gocloud.dev/concepts/as/ for background information, the "As"
|
||
* examples in this package for examples, and the driver package
|
||
* documentation for the specific types supported for that driver.
|
||
*/
|
||
as(i: {
|
||
}): boolean
|
||
}
|
||
/**
|
||
* ListObject represents a single blob returned from List.
|
||
*/
|
||
interface ListObject {
|
||
/**
|
||
* Key is the key for this blob.
|
||
*/
|
||
key: string
|
||
/**
|
||
* ModTime is the time the blob was last modified.
|
||
*/
|
||
modTime: time.Time
|
||
/**
|
||
* Size is the size of the blob's content in bytes.
|
||
*/
|
||
size: number
|
||
/**
|
||
* MD5 is an MD5 hash of the blob contents or nil if not available.
|
||
*/
|
||
md5: string
|
||
/**
|
||
* IsDir indicates that this result represents a "directory" in the
|
||
* hierarchical namespace, ending in ListOptions.Delimiter. Key can be
|
||
* passed as ListOptions.Prefix to list items in the "directory".
|
||
* Fields other than Key and IsDir will not be set if IsDir is true.
|
||
*/
|
||
isDir: boolean
|
||
}
|
||
interface ListObject {
|
||
/**
|
||
* As converts i to driver-specific types.
|
||
* See https://gocloud.dev/concepts/as/ for background information, the "As"
|
||
* examples in this package for examples, and the driver package
|
||
* documentation for the specific types supported for that driver.
|
||
*/
|
||
as(i: {
|
||
}): boolean
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package types implements some commonly used db serializable types
|
||
* like datetime, json, etc.
|
||
*/
|
||
namespace types {
|
||
/**
|
||
* JsonArray defines a slice that is safe for json and db read/write.
|
||
*/
|
||
interface JsonArray<T> extends Array<T>{}
|
||
interface JsonArray<T> {
|
||
/**
|
||
* MarshalJSON implements the [json.Marshaler] interface.
|
||
*/
|
||
marshalJSON(): string
|
||
}
|
||
interface JsonArray<T> {
|
||
/**
|
||
* Value implements the [driver.Valuer] interface.
|
||
*/
|
||
value(): driver.Value
|
||
}
|
||
interface JsonArray<T> {
|
||
/**
|
||
* Scan implements [sql.Scanner] interface to scan the provided value
|
||
* into the current JsonArray[T] instance.
|
||
*/
|
||
scan(value: any): void
|
||
}
|
||
/**
|
||
* JsonMap defines a map that is safe for json and db read/write.
|
||
*/
|
||
interface JsonMap extends _TygojaDict{}
|
||
interface JsonMap {
|
||
/**
|
||
* MarshalJSON implements the [json.Marshaler] interface.
|
||
*/
|
||
marshalJSON(): string
|
||
}
|
||
interface JsonMap {
|
||
/**
|
||
* Get retrieves a single value from the current JsonMap.
|
||
*
|
||
* This helper was added primarily to assist the goja integration since custom map types
|
||
* don't have direct access to the map keys (https://pkg.go.dev/github.com/dop251/goja#hdr-Maps_with_methods).
|
||
*/
|
||
get(key: string): any
|
||
}
|
||
interface JsonMap {
|
||
/**
|
||
* Set sets a single value in the current JsonMap.
|
||
*
|
||
* This helper was added primarily to assist the goja integration since custom map types
|
||
* don't have direct access to the map keys (https://pkg.go.dev/github.com/dop251/goja#hdr-Maps_with_methods).
|
||
*/
|
||
set(key: string, value: any): void
|
||
}
|
||
interface JsonMap {
|
||
/**
|
||
* Value implements the [driver.Valuer] interface.
|
||
*/
|
||
value(): driver.Value
|
||
}
|
||
interface JsonMap {
|
||
/**
|
||
* Scan implements [sql.Scanner] interface to scan the provided value
|
||
* into the current `JsonMap` instance.
|
||
*/
|
||
scan(value: any): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package sql provides a generic interface around SQL (or SQL-like)
|
||
* databases.
|
||
*
|
||
* The sql package must be used in conjunction with a database driver.
|
||
* See https://golang.org/s/sqldrivers for a list of drivers.
|
||
*
|
||
* Drivers that do not support context cancellation will not return until
|
||
* after the query is completed.
|
||
*
|
||
* For usage examples, see the wiki page at
|
||
* https://golang.org/s/sqlwiki.
|
||
*/
|
||
namespace sql {
|
||
/**
|
||
* TxOptions holds the transaction options to be used in DB.BeginTx.
|
||
*/
|
||
interface TxOptions {
|
||
/**
|
||
* Isolation is the transaction isolation level.
|
||
* If zero, the driver or database's default level is used.
|
||
*/
|
||
isolation: IsolationLevel
|
||
readOnly: boolean
|
||
}
|
||
/**
|
||
* DB is a database handle representing a pool of zero or more
|
||
* underlying connections. It's safe for concurrent use by multiple
|
||
* goroutines.
|
||
*
|
||
* The sql package creates and frees connections automatically; it
|
||
* also maintains a free pool of idle connections. If the database has
|
||
* a concept of per-connection state, such state can be reliably observed
|
||
* within a transaction (Tx) or connection (Conn). Once DB.Begin is called, the
|
||
* returned Tx is bound to a single connection. Once Commit or
|
||
* Rollback is called on the transaction, that transaction's
|
||
* connection is returned to DB's idle connection pool. The pool size
|
||
* can be controlled with SetMaxIdleConns.
|
||
*/
|
||
interface DB {
|
||
}
|
||
interface DB {
|
||
/**
|
||
* PingContext verifies a connection to the database is still alive,
|
||
* establishing a connection if necessary.
|
||
*/
|
||
pingContext(ctx: context.Context): void
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Ping verifies a connection to the database is still alive,
|
||
* establishing a connection if necessary.
|
||
*
|
||
* Ping uses context.Background internally; to specify the context, use
|
||
* PingContext.
|
||
*/
|
||
ping(): void
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Close closes the database and prevents new queries from starting.
|
||
* Close then waits for all queries that have started processing on the server
|
||
* to finish.
|
||
*
|
||
* It is rare to Close a DB, as the DB handle is meant to be
|
||
* long-lived and shared between many goroutines.
|
||
*/
|
||
close(): void
|
||
}
|
||
interface DB {
|
||
/**
|
||
* SetMaxIdleConns sets the maximum number of connections in the idle
|
||
* connection pool.
|
||
*
|
||
* If MaxOpenConns is greater than 0 but less than the new MaxIdleConns,
|
||
* then the new MaxIdleConns will be reduced to match the MaxOpenConns limit.
|
||
*
|
||
* If n <= 0, no idle connections are retained.
|
||
*
|
||
* The default max idle connections is currently 2. This may change in
|
||
* a future release.
|
||
*/
|
||
setMaxIdleConns(n: number): void
|
||
}
|
||
interface DB {
|
||
/**
|
||
* SetMaxOpenConns sets the maximum number of open connections to the database.
|
||
*
|
||
* If MaxIdleConns is greater than 0 and the new MaxOpenConns is less than
|
||
* MaxIdleConns, then MaxIdleConns will be reduced to match the new
|
||
* MaxOpenConns limit.
|
||
*
|
||
* If n <= 0, then there is no limit on the number of open connections.
|
||
* The default is 0 (unlimited).
|
||
*/
|
||
setMaxOpenConns(n: number): void
|
||
}
|
||
interface DB {
|
||
/**
|
||
* SetConnMaxLifetime sets the maximum amount of time a connection may be reused.
|
||
*
|
||
* Expired connections may be closed lazily before reuse.
|
||
*
|
||
* If d <= 0, connections are not closed due to a connection's age.
|
||
*/
|
||
setConnMaxLifetime(d: time.Duration): void
|
||
}
|
||
interface DB {
|
||
/**
|
||
* SetConnMaxIdleTime sets the maximum amount of time a connection may be idle.
|
||
*
|
||
* Expired connections may be closed lazily before reuse.
|
||
*
|
||
* If d <= 0, connections are not closed due to a connection's idle time.
|
||
*/
|
||
setConnMaxIdleTime(d: time.Duration): void
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Stats returns database statistics.
|
||
*/
|
||
stats(): DBStats
|
||
}
|
||
interface DB {
|
||
/**
|
||
* PrepareContext creates a prepared statement for later queries or executions.
|
||
* Multiple queries or executions may be run concurrently from the
|
||
* returned statement.
|
||
* The caller must call the statement's Close method
|
||
* when the statement is no longer needed.
|
||
*
|
||
* The provided context is used for the preparation of the statement, not for the
|
||
* execution of the statement.
|
||
*/
|
||
prepareContext(ctx: context.Context, query: string): (Stmt | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Prepare creates a prepared statement for later queries or executions.
|
||
* Multiple queries or executions may be run concurrently from the
|
||
* returned statement.
|
||
* The caller must call the statement's Close method
|
||
* when the statement is no longer needed.
|
||
*
|
||
* Prepare uses context.Background internally; to specify the context, use
|
||
* PrepareContext.
|
||
*/
|
||
prepare(query: string): (Stmt | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* ExecContext executes a query without returning any rows.
|
||
* The args are for any placeholder parameters in the query.
|
||
*/
|
||
execContext(ctx: context.Context, query: string, ...args: any[]): Result
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Exec executes a query without returning any rows.
|
||
* The args are for any placeholder parameters in the query.
|
||
*
|
||
* Exec uses context.Background internally; to specify the context, use
|
||
* ExecContext.
|
||
*/
|
||
exec(query: string, ...args: any[]): Result
|
||
}
|
||
interface DB {
|
||
/**
|
||
* QueryContext executes a query that returns rows, typically a SELECT.
|
||
* The args are for any placeholder parameters in the query.
|
||
*/
|
||
queryContext(ctx: context.Context, query: string, ...args: any[]): (Rows | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Query executes a query that returns rows, typically a SELECT.
|
||
* The args are for any placeholder parameters in the query.
|
||
*
|
||
* Query uses context.Background internally; to specify the context, use
|
||
* QueryContext.
|
||
*/
|
||
query(query: string, ...args: any[]): (Rows | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* QueryRowContext executes a query that is expected to return at most one row.
|
||
* QueryRowContext always returns a non-nil value. Errors are deferred until
|
||
* Row's Scan method is called.
|
||
* If the query selects no rows, the *Row's Scan will return ErrNoRows.
|
||
* Otherwise, the *Row's Scan scans the first selected row and discards
|
||
* the rest.
|
||
*/
|
||
queryRowContext(ctx: context.Context, query: string, ...args: any[]): (Row | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* QueryRow executes a query that is expected to return at most one row.
|
||
* QueryRow always returns a non-nil value. Errors are deferred until
|
||
* Row's Scan method is called.
|
||
* If the query selects no rows, the *Row's Scan will return ErrNoRows.
|
||
* Otherwise, the *Row's Scan scans the first selected row and discards
|
||
* the rest.
|
||
*
|
||
* QueryRow uses context.Background internally; to specify the context, use
|
||
* QueryRowContext.
|
||
*/
|
||
queryRow(query: string, ...args: any[]): (Row | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* BeginTx starts a transaction.
|
||
*
|
||
* The provided context is used until the transaction is committed or rolled back.
|
||
* If the context is canceled, the sql package will roll back
|
||
* the transaction. Tx.Commit will return an error if the context provided to
|
||
* BeginTx is canceled.
|
||
*
|
||
* The provided TxOptions is optional and may be nil if defaults should be used.
|
||
* If a non-default isolation level is used that the driver doesn't support,
|
||
* an error will be returned.
|
||
*/
|
||
beginTx(ctx: context.Context, opts: TxOptions): (Tx | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Begin starts a transaction. The default isolation level is dependent on
|
||
* the driver.
|
||
*
|
||
* Begin uses context.Background internally; to specify the context, use
|
||
* BeginTx.
|
||
*/
|
||
begin(): (Tx | undefined)
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Driver returns the database's underlying driver.
|
||
*/
|
||
driver(): driver.Driver
|
||
}
|
||
interface DB {
|
||
/**
|
||
* Conn returns a single connection by either opening a new connection
|
||
* or returning an existing connection from the connection pool. Conn will
|
||
* block until either a connection is returned or ctx is canceled.
|
||
* Queries run on the same Conn will be run in the same database session.
|
||
*
|
||
* Every Conn must be returned to the database pool after use by
|
||
* calling Conn.Close.
|
||
*/
|
||
conn(ctx: context.Context): (Conn | undefined)
|
||
}
|
||
/**
|
||
* Tx is an in-progress database transaction.
|
||
*
|
||
* A transaction must end with a call to Commit or Rollback.
|
||
*
|
||
* After a call to Commit or Rollback, all operations on the
|
||
* transaction fail with ErrTxDone.
|
||
*
|
||
* The statements prepared for a transaction by calling
|
||
* the transaction's Prepare or Stmt methods are closed
|
||
* by the call to Commit or Rollback.
|
||
*/
|
||
interface Tx {
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* Commit commits the transaction.
|
||
*/
|
||
commit(): void
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* Rollback aborts the transaction.
|
||
*/
|
||
rollback(): void
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* PrepareContext creates a prepared statement for use within a transaction.
|
||
*
|
||
* The returned statement operates within the transaction and will be closed
|
||
* when the transaction has been committed or rolled back.
|
||
*
|
||
* To use an existing prepared statement on this transaction, see Tx.Stmt.
|
||
*
|
||
* The provided context will be used for the preparation of the context, not
|
||
* for the execution of the returned statement. The returned statement
|
||
* will run in the transaction context.
|
||
*/
|
||
prepareContext(ctx: context.Context, query: string): (Stmt | undefined)
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* Prepare creates a prepared statement for use within a transaction.
|
||
*
|
||
* The returned statement operates within the transaction and will be closed
|
||
* when the transaction has been committed or rolled back.
|
||
*
|
||
* To use an existing prepared statement on this transaction, see Tx.Stmt.
|
||
*
|
||
* Prepare uses context.Background internally; to specify the context, use
|
||
* PrepareContext.
|
||
*/
|
||
prepare(query: string): (Stmt | undefined)
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* StmtContext returns a transaction-specific prepared statement from
|
||
* an existing statement.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```
|
||
* updateMoney, err := db.Prepare("UPDATE balance SET money=money+? WHERE id=?")
|
||
* ...
|
||
* tx, err := db.Begin()
|
||
* ...
|
||
* res, err := tx.StmtContext(ctx, updateMoney).Exec(123.45, 98293203)
|
||
* ```
|
||
*
|
||
* The provided context is used for the preparation of the statement, not for the
|
||
* execution of the statement.
|
||
*
|
||
* The returned statement operates within the transaction and will be closed
|
||
* when the transaction has been committed or rolled back.
|
||
*/
|
||
stmtContext(ctx: context.Context, stmt: Stmt): (Stmt | undefined)
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* Stmt returns a transaction-specific prepared statement from
|
||
* an existing statement.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```
|
||
* updateMoney, err := db.Prepare("UPDATE balance SET money=money+? WHERE id=?")
|
||
* ...
|
||
* tx, err := db.Begin()
|
||
* ...
|
||
* res, err := tx.Stmt(updateMoney).Exec(123.45, 98293203)
|
||
* ```
|
||
*
|
||
* The returned statement operates within the transaction and will be closed
|
||
* when the transaction has been committed or rolled back.
|
||
*
|
||
* Stmt uses context.Background internally; to specify the context, use
|
||
* StmtContext.
|
||
*/
|
||
stmt(stmt: Stmt): (Stmt | undefined)
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* ExecContext executes a query that doesn't return rows.
|
||
* For example: an INSERT and UPDATE.
|
||
*/
|
||
execContext(ctx: context.Context, query: string, ...args: any[]): Result
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* Exec executes a query that doesn't return rows.
|
||
* For example: an INSERT and UPDATE.
|
||
*
|
||
* Exec uses context.Background internally; to specify the context, use
|
||
* ExecContext.
|
||
*/
|
||
exec(query: string, ...args: any[]): Result
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* QueryContext executes a query that returns rows, typically a SELECT.
|
||
*/
|
||
queryContext(ctx: context.Context, query: string, ...args: any[]): (Rows | undefined)
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* Query executes a query that returns rows, typically a SELECT.
|
||
*
|
||
* Query uses context.Background internally; to specify the context, use
|
||
* QueryContext.
|
||
*/
|
||
query(query: string, ...args: any[]): (Rows | undefined)
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* QueryRowContext executes a query that is expected to return at most one row.
|
||
* QueryRowContext always returns a non-nil value. Errors are deferred until
|
||
* Row's Scan method is called.
|
||
* If the query selects no rows, the *Row's Scan will return ErrNoRows.
|
||
* Otherwise, the *Row's Scan scans the first selected row and discards
|
||
* the rest.
|
||
*/
|
||
queryRowContext(ctx: context.Context, query: string, ...args: any[]): (Row | undefined)
|
||
}
|
||
interface Tx {
|
||
/**
|
||
* QueryRow executes a query that is expected to return at most one row.
|
||
* QueryRow always returns a non-nil value. Errors are deferred until
|
||
* Row's Scan method is called.
|
||
* If the query selects no rows, the *Row's Scan will return ErrNoRows.
|
||
* Otherwise, the *Row's Scan scans the first selected row and discards
|
||
* the rest.
|
||
*
|
||
* QueryRow uses context.Background internally; to specify the context, use
|
||
* QueryRowContext.
|
||
*/
|
||
queryRow(query: string, ...args: any[]): (Row | undefined)
|
||
}
|
||
/**
|
||
* Stmt is a prepared statement.
|
||
* A Stmt is safe for concurrent use by multiple goroutines.
|
||
*
|
||
* If a Stmt is prepared on a Tx or Conn, it will be bound to a single
|
||
* underlying connection forever. If the Tx or Conn closes, the Stmt will
|
||
* become unusable and all operations will return an error.
|
||
* If a Stmt is prepared on a DB, it will remain usable for the lifetime of the
|
||
* DB. When the Stmt needs to execute on a new underlying connection, it will
|
||
* prepare itself on the new connection automatically.
|
||
*/
|
||
interface Stmt {
|
||
}
|
||
interface Stmt {
|
||
/**
|
||
* ExecContext executes a prepared statement with the given arguments and
|
||
* returns a Result summarizing the effect of the statement.
|
||
*/
|
||
execContext(ctx: context.Context, ...args: any[]): Result
|
||
}
|
||
interface Stmt {
|
||
/**
|
||
* Exec executes a prepared statement with the given arguments and
|
||
* returns a Result summarizing the effect of the statement.
|
||
*
|
||
* Exec uses context.Background internally; to specify the context, use
|
||
* ExecContext.
|
||
*/
|
||
exec(...args: any[]): Result
|
||
}
|
||
interface Stmt {
|
||
/**
|
||
* QueryContext executes a prepared query statement with the given arguments
|
||
* and returns the query results as a *Rows.
|
||
*/
|
||
queryContext(ctx: context.Context, ...args: any[]): (Rows | undefined)
|
||
}
|
||
interface Stmt {
|
||
/**
|
||
* Query executes a prepared query statement with the given arguments
|
||
* and returns the query results as a *Rows.
|
||
*
|
||
* Query uses context.Background internally; to specify the context, use
|
||
* QueryContext.
|
||
*/
|
||
query(...args: any[]): (Rows | undefined)
|
||
}
|
||
interface Stmt {
|
||
/**
|
||
* QueryRowContext executes a prepared query statement with the given arguments.
|
||
* If an error occurs during the execution of the statement, that error will
|
||
* be returned by a call to Scan on the returned *Row, which is always non-nil.
|
||
* If the query selects no rows, the *Row's Scan will return ErrNoRows.
|
||
* Otherwise, the *Row's Scan scans the first selected row and discards
|
||
* the rest.
|
||
*/
|
||
queryRowContext(ctx: context.Context, ...args: any[]): (Row | undefined)
|
||
}
|
||
interface Stmt {
|
||
/**
|
||
* QueryRow executes a prepared query statement with the given arguments.
|
||
* If an error occurs during the execution of the statement, that error will
|
||
* be returned by a call to Scan on the returned *Row, which is always non-nil.
|
||
* If the query selects no rows, the *Row's Scan will return ErrNoRows.
|
||
* Otherwise, the *Row's Scan scans the first selected row and discards
|
||
* the rest.
|
||
*
|
||
* Example usage:
|
||
*
|
||
* ```
|
||
* var name string
|
||
* err := nameByUseridStmt.QueryRow(id).Scan(&name)
|
||
* ```
|
||
*
|
||
* QueryRow uses context.Background internally; to specify the context, use
|
||
* QueryRowContext.
|
||
*/
|
||
queryRow(...args: any[]): (Row | undefined)
|
||
}
|
||
interface Stmt {
|
||
/**
|
||
* Close closes the statement.
|
||
*/
|
||
close(): void
|
||
}
|
||
/**
|
||
* Rows is the result of a query. Its cursor starts before the first row
|
||
* of the result set. Use Next to advance from row to row.
|
||
*/
|
||
interface Rows {
|
||
}
|
||
interface Rows {
|
||
/**
|
||
* Next prepares the next result row for reading with the Scan method. It
|
||
* returns true on success, or false if there is no next result row or an error
|
||
* happened while preparing it. Err should be consulted to distinguish between
|
||
* the two cases.
|
||
*
|
||
* Every call to Scan, even the first one, must be preceded by a call to Next.
|
||
*/
|
||
next(): boolean
|
||
}
|
||
interface Rows {
|
||
/**
|
||
* NextResultSet prepares the next result set for reading. It reports whether
|
||
* there is further result sets, or false if there is no further result set
|
||
* or if there is an error advancing to it. The Err method should be consulted
|
||
* to distinguish between the two cases.
|
||
*
|
||
* After calling NextResultSet, the Next method should always be called before
|
||
* scanning. If there are further result sets they may not have rows in the result
|
||
* set.
|
||
*/
|
||
nextResultSet(): boolean
|
||
}
|
||
interface Rows {
|
||
/**
|
||
* Err returns the error, if any, that was encountered during iteration.
|
||
* Err may be called after an explicit or implicit Close.
|
||
*/
|
||
err(): void
|
||
}
|
||
interface Rows {
|
||
/**
|
||
* Columns returns the column names.
|
||
* Columns returns an error if the rows are closed.
|
||
*/
|
||
columns(): Array<string>
|
||
}
|
||
interface Rows {
|
||
/**
|
||
* ColumnTypes returns column information such as column type, length,
|
||
* and nullable. Some information may not be available from some drivers.
|
||
*/
|
||
columnTypes(): Array<(ColumnType | undefined)>
|
||
}
|
||
interface Rows {
|
||
/**
|
||
* Scan copies the columns in the current row into the values pointed
|
||
* at by dest. The number of values in dest must be the same as the
|
||
* number of columns in Rows.
|
||
*
|
||
* Scan converts columns read from the database into the following
|
||
* common Go types and special types provided by the sql package:
|
||
*
|
||
* ```
|
||
* *string
|
||
* *[]byte
|
||
* *int, *int8, *int16, *int32, *int64
|
||
* *uint, *uint8, *uint16, *uint32, *uint64
|
||
* *bool
|
||
* *float32, *float64
|
||
* *interface{}
|
||
* *RawBytes
|
||
* *Rows (cursor value)
|
||
* any type implementing Scanner (see Scanner docs)
|
||
* ```
|
||
*
|
||
* In the most simple case, if the type of the value from the source
|
||
* column is an integer, bool or string type T and dest is of type *T,
|
||
* Scan simply assigns the value through the pointer.
|
||
*
|
||
* Scan also converts between string and numeric types, as long as no
|
||
* information would be lost. While Scan stringifies all numbers
|
||
* scanned from numeric database columns into *string, scans into
|
||
* numeric types are checked for overflow. For example, a float64 with
|
||
* value 300 or a string with value "300" can scan into a uint16, but
|
||
* not into a uint8, though float64(255) or "255" can scan into a
|
||
* uint8. One exception is that scans of some float64 numbers to
|
||
* strings may lose information when stringifying. In general, scan
|
||
* floating point columns into *float64.
|
||
*
|
||
* If a dest argument has type *[]byte, Scan saves in that argument a
|
||
* copy of the corresponding data. The copy is owned by the caller and
|
||
* can be modified and held indefinitely. The copy can be avoided by
|
||
* using an argument of type *RawBytes instead; see the documentation
|
||
* for RawBytes for restrictions on its use.
|
||
*
|
||
* If an argument has type *interface{}, Scan copies the value
|
||
* provided by the underlying driver without conversion. When scanning
|
||
* from a source value of type []byte to *interface{}, a copy of the
|
||
* slice is made and the caller owns the result.
|
||
*
|
||
* Source values of type time.Time may be scanned into values of type
|
||
* *time.Time, *interface{}, *string, or *[]byte. When converting to
|
||
* the latter two, time.RFC3339Nano is used.
|
||
*
|
||
* Source values of type bool may be scanned into types *bool,
|
||
* *interface{}, *string, *[]byte, or *RawBytes.
|
||
*
|
||
* For scanning into *bool, the source may be true, false, 1, 0, or
|
||
* string inputs parseable by strconv.ParseBool.
|
||
*
|
||
* Scan can also convert a cursor returned from a query, such as
|
||
* "select cursor(select * from my_table) from dual", into a
|
||
* *Rows value that can itself be scanned from. The parent
|
||
* select query will close any cursor *Rows if the parent *Rows is closed.
|
||
*
|
||
* If any of the first arguments implementing Scanner returns an error,
|
||
* that error will be wrapped in the returned error
|
||
*/
|
||
scan(...dest: any[]): void
|
||
}
|
||
interface Rows {
|
||
/**
|
||
* Close closes the Rows, preventing further enumeration. If Next is called
|
||
* and returns false and there are no further result sets,
|
||
* the Rows are closed automatically and it will suffice to check the
|
||
* result of Err. Close is idempotent and does not affect the result of Err.
|
||
*/
|
||
close(): void
|
||
}
|
||
/**
|
||
* A Result summarizes an executed SQL command.
|
||
*/
|
||
interface Result {
|
||
/**
|
||
* LastInsertId returns the integer generated by the database
|
||
* in response to a command. Typically this will be from an
|
||
* "auto increment" column when inserting a new row. Not all
|
||
* databases support this feature, and the syntax of such
|
||
* statements varies.
|
||
*/
|
||
lastInsertId(): number
|
||
/**
|
||
* RowsAffected returns the number of rows affected by an
|
||
* update, insert, or delete. Not every database or database
|
||
* driver may support this.
|
||
*/
|
||
rowsAffected(): number
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package jwt is a Go implementation of JSON Web Tokens: http://self-issued.info/docs/draft-jones-json-web-token.html
|
||
*
|
||
* See README.md for more info.
|
||
*/
|
||
namespace jwt {
|
||
/**
|
||
* MapClaims is a claims type that uses the map[string]interface{} for JSON decoding.
|
||
* This is the default claims type if you don't supply one
|
||
*/
|
||
interface MapClaims extends _TygojaDict{}
|
||
interface MapClaims {
|
||
/**
|
||
* VerifyAudience Compares the aud claim against cmp.
|
||
* If required is false, this method will return true if the value matches or is unset
|
||
*/
|
||
verifyAudience(cmp: string, req: boolean): boolean
|
||
}
|
||
interface MapClaims {
|
||
/**
|
||
* VerifyExpiresAt compares the exp claim against cmp (cmp <= exp).
|
||
* If req is false, it will return true, if exp is unset.
|
||
*/
|
||
verifyExpiresAt(cmp: number, req: boolean): boolean
|
||
}
|
||
interface MapClaims {
|
||
/**
|
||
* VerifyIssuedAt compares the exp claim against cmp (cmp >= iat).
|
||
* If req is false, it will return true, if iat is unset.
|
||
*/
|
||
verifyIssuedAt(cmp: number, req: boolean): boolean
|
||
}
|
||
interface MapClaims {
|
||
/**
|
||
* VerifyNotBefore compares the nbf claim against cmp (cmp >= nbf).
|
||
* If req is false, it will return true, if nbf is unset.
|
||
*/
|
||
verifyNotBefore(cmp: number, req: boolean): boolean
|
||
}
|
||
interface MapClaims {
|
||
/**
|
||
* VerifyIssuer compares the iss claim against cmp.
|
||
* If required is false, this method will return true if the value matches or is unset
|
||
*/
|
||
verifyIssuer(cmp: string, req: boolean): boolean
|
||
}
|
||
interface MapClaims {
|
||
/**
|
||
* Valid validates time based claims "exp, iat, nbf".
|
||
* There is no accounting for clock skew.
|
||
* As well, if any of the above claims are not in the token, it will still
|
||
* be considered a valid claim.
|
||
*/
|
||
valid(): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package schema implements custom Schema and SchemaField datatypes
|
||
* for handling the Collection schema definitions.
|
||
*/
|
||
namespace schema {
|
||
// @ts-ignore
|
||
import validation = ozzo_validation
|
||
/**
|
||
* Schema defines a dynamic db schema as a slice of `SchemaField`s.
|
||
*/
|
||
interface Schema {
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* Fields returns the registered schema fields.
|
||
*/
|
||
fields(): Array<(SchemaField | undefined)>
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* InitFieldsOptions calls `InitOptions()` for all schema fields.
|
||
*/
|
||
initFieldsOptions(): void
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* Clone creates a deep clone of the current schema.
|
||
*/
|
||
clone(): (Schema | undefined)
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* AsMap returns a map with all registered schema field.
|
||
* The returned map is indexed with each field name.
|
||
*/
|
||
asMap(): _TygojaDict
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* GetFieldById returns a single field by its id.
|
||
*/
|
||
getFieldById(id: string): (SchemaField | undefined)
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* GetFieldByName returns a single field by its name.
|
||
*/
|
||
getFieldByName(name: string): (SchemaField | undefined)
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* RemoveField removes a single schema field by its id.
|
||
*
|
||
* This method does nothing if field with `id` doesn't exist.
|
||
*/
|
||
removeField(id: string): void
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* AddField registers the provided newField to the current schema.
|
||
*
|
||
* If field with `newField.Id` already exist, the existing field is
|
||
* replaced with the new one.
|
||
*
|
||
* Otherwise the new field is appended to the other schema fields.
|
||
*/
|
||
addField(newField: SchemaField): void
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* Validate makes Schema validatable by implementing [validation.Validatable] interface.
|
||
*
|
||
* Internally calls each individual field's validator and additionally
|
||
* checks for invalid renamed fields and field name duplications.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* MarshalJSON implements the [json.Marshaler] interface.
|
||
*/
|
||
marshalJSON(): string
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* UnmarshalJSON implements the [json.Unmarshaler] interface.
|
||
*
|
||
* On success, all schema field options are auto initialized.
|
||
*/
|
||
unmarshalJSON(data: string): void
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* Value implements the [driver.Valuer] interface.
|
||
*/
|
||
value(): driver.Value
|
||
}
|
||
interface Schema {
|
||
/**
|
||
* Scan implements [sql.Scanner] interface to scan the provided value
|
||
* into the current Schema instance.
|
||
*/
|
||
scan(value: any): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package models implements all PocketBase DB models and DTOs.
|
||
*/
|
||
namespace models {
|
||
type _subTOUbc = BaseModel
|
||
interface Admin extends _subTOUbc {
|
||
avatar: number
|
||
email: string
|
||
tokenKey: string
|
||
passwordHash: string
|
||
lastResetSentAt: types.DateTime
|
||
}
|
||
interface Admin {
|
||
/**
|
||
* TableName returns the Admin model SQL table name.
|
||
*/
|
||
tableName(): string
|
||
}
|
||
interface Admin {
|
||
/**
|
||
* ValidatePassword validates a plain password against the model's password.
|
||
*/
|
||
validatePassword(password: string): boolean
|
||
}
|
||
interface Admin {
|
||
/**
|
||
* SetPassword sets cryptographically secure string to `model.Password`.
|
||
*
|
||
* Additionally this method also resets the LastResetSentAt and the TokenKey fields.
|
||
*/
|
||
setPassword(password: string): void
|
||
}
|
||
interface Admin {
|
||
/**
|
||
* RefreshTokenKey generates and sets new random token key.
|
||
*/
|
||
refreshTokenKey(): void
|
||
}
|
||
// @ts-ignore
|
||
import validation = ozzo_validation
|
||
type _subrIsxO = BaseModel
|
||
interface Collection extends _subrIsxO {
|
||
name: string
|
||
type: string
|
||
system: boolean
|
||
schema: schema.Schema
|
||
indexes: types.JsonArray<string>
|
||
/**
|
||
* rules
|
||
*/
|
||
listRule?: string
|
||
viewRule?: string
|
||
createRule?: string
|
||
updateRule?: string
|
||
deleteRule?: string
|
||
options: types.JsonMap
|
||
}
|
||
interface Collection {
|
||
/**
|
||
* TableName returns the Collection model SQL table name.
|
||
*/
|
||
tableName(): string
|
||
}
|
||
interface Collection {
|
||
/**
|
||
* BaseFilesPath returns the storage dir path used by the collection.
|
||
*/
|
||
baseFilesPath(): string
|
||
}
|
||
interface Collection {
|
||
/**
|
||
* IsBase checks if the current collection has "base" type.
|
||
*/
|
||
isBase(): boolean
|
||
}
|
||
interface Collection {
|
||
/**
|
||
* IsAuth checks if the current collection has "auth" type.
|
||
*/
|
||
isAuth(): boolean
|
||
}
|
||
interface Collection {
|
||
/**
|
||
* IsView checks if the current collection has "view" type.
|
||
*/
|
||
isView(): boolean
|
||
}
|
||
interface Collection {
|
||
/**
|
||
* MarshalJSON implements the [json.Marshaler] interface.
|
||
*/
|
||
marshalJSON(): string
|
||
}
|
||
interface Collection {
|
||
/**
|
||
* BaseOptions decodes the current collection options and returns them
|
||
* as new [CollectionBaseOptions] instance.
|
||
*/
|
||
baseOptions(): CollectionBaseOptions
|
||
}
|
||
interface Collection {
|
||
/**
|
||
* AuthOptions decodes the current collection options and returns them
|
||
* as new [CollectionAuthOptions] instance.
|
||
*/
|
||
authOptions(): CollectionAuthOptions
|
||
}
|
||
interface Collection {
|
||
/**
|
||
* ViewOptions decodes the current collection options and returns them
|
||
* as new [CollectionViewOptions] instance.
|
||
*/
|
||
viewOptions(): CollectionViewOptions
|
||
}
|
||
interface Collection {
|
||
/**
|
||
* NormalizeOptions updates the current collection options with a
|
||
* new normalized state based on the collection type.
|
||
*/
|
||
normalizeOptions(): void
|
||
}
|
||
interface Collection {
|
||
/**
|
||
* DecodeOptions decodes the current collection options into the
|
||
* provided "result" (must be a pointer).
|
||
*/
|
||
decodeOptions(result: any): void
|
||
}
|
||
interface Collection {
|
||
/**
|
||
* SetOptions normalizes and unmarshals the specified options into m.Options.
|
||
*/
|
||
setOptions(typedOptions: any): void
|
||
}
|
||
type _subdWgFP = BaseModel
|
||
interface ExternalAuth extends _subdWgFP {
|
||
collectionId: string
|
||
recordId: string
|
||
provider: string
|
||
providerId: string
|
||
}
|
||
interface ExternalAuth {
|
||
tableName(): string
|
||
}
|
||
type _subRmImM = BaseModel
|
||
interface Record extends _subRmImM {
|
||
}
|
||
interface Record {
|
||
/**
|
||
* TableName returns the table name associated to the current Record model.
|
||
*/
|
||
tableName(): string
|
||
}
|
||
interface Record {
|
||
/**
|
||
* Collection returns the Collection model associated to the current Record model.
|
||
*/
|
||
collection(): (Collection | undefined)
|
||
}
|
||
interface Record {
|
||
/**
|
||
* OriginalCopy returns a copy of the current record model populated
|
||
* with its ORIGINAL data state (aka. the initially loaded) and
|
||
* everything else reset to the defaults.
|
||
*/
|
||
originalCopy(): (Record | undefined)
|
||
}
|
||
interface Record {
|
||
/**
|
||
* CleanCopy returns a copy of the current record model populated only
|
||
* with its LATEST data state and everything else reset to the defaults.
|
||
*/
|
||
cleanCopy(): (Record | undefined)
|
||
}
|
||
interface Record {
|
||
/**
|
||
* Expand returns a shallow copy of the current Record model expand data.
|
||
*/
|
||
expand(): _TygojaDict
|
||
}
|
||
interface Record {
|
||
/**
|
||
* SetExpand shallow copies the provided data to the current Record model's expand.
|
||
*/
|
||
setExpand(expand: _TygojaDict): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* MergeExpand merges recursively the provided expand data into
|
||
* the current model's expand (if any).
|
||
*
|
||
* Note that if an expanded prop with the same key is a slice (old or new expand)
|
||
* then both old and new records will be merged into a new slice (aka. a :merge: [b,c] => [a,b,c]).
|
||
* Otherwise the "old" expanded record will be replace with the "new" one (aka. a :merge: aNew => aNew).
|
||
*/
|
||
mergeExpand(expand: _TygojaDict): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* SchemaData returns a shallow copy ONLY of the defined record schema fields data.
|
||
*/
|
||
schemaData(): _TygojaDict
|
||
}
|
||
interface Record {
|
||
/**
|
||
* UnknownData returns a shallow copy ONLY of the unknown record fields data,
|
||
* aka. fields that are neither one of the base and special system ones,
|
||
* nor defined by the collection schema.
|
||
*/
|
||
unknownData(): _TygojaDict
|
||
}
|
||
interface Record {
|
||
/**
|
||
* IgnoreEmailVisibility toggles the flag to ignore the auth record email visibility check.
|
||
*/
|
||
ignoreEmailVisibility(state: boolean): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* WithUnknownData toggles the export/serialization of unknown data fields
|
||
* (false by default).
|
||
*/
|
||
withUnknownData(state: boolean): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* Set sets the provided key-value data pair for the current Record model.
|
||
*
|
||
* If the record collection has field with name matching the provided "key",
|
||
* the value will be further normalized according to the field rules.
|
||
*/
|
||
set(key: string, value: any): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* Get returns a single record model data value for "key".
|
||
*/
|
||
get(key: string): any
|
||
}
|
||
interface Record {
|
||
/**
|
||
* GetBool returns the data value for "key" as a bool.
|
||
*/
|
||
getBool(key: string): boolean
|
||
}
|
||
interface Record {
|
||
/**
|
||
* GetString returns the data value for "key" as a string.
|
||
*/
|
||
getString(key: string): string
|
||
}
|
||
interface Record {
|
||
/**
|
||
* GetInt returns the data value for "key" as an int.
|
||
*/
|
||
getInt(key: string): number
|
||
}
|
||
interface Record {
|
||
/**
|
||
* GetFloat returns the data value for "key" as a float64.
|
||
*/
|
||
getFloat(key: string): number
|
||
}
|
||
interface Record {
|
||
/**
|
||
* GetTime returns the data value for "key" as a [time.Time] instance.
|
||
*/
|
||
getTime(key: string): time.Time
|
||
}
|
||
interface Record {
|
||
/**
|
||
* GetDateTime returns the data value for "key" as a DateTime instance.
|
||
*/
|
||
getDateTime(key: string): types.DateTime
|
||
}
|
||
interface Record {
|
||
/**
|
||
* GetStringSlice returns the data value for "key" as a slice of unique strings.
|
||
*/
|
||
getStringSlice(key: string): Array<string>
|
||
}
|
||
interface Record {
|
||
/**
|
||
* Retrieves the "key" json field value and unmarshals it into "result".
|
||
*
|
||
* Example
|
||
*
|
||
* ```
|
||
* result := struct {
|
||
* FirstName string `json:"first_name"`
|
||
* }{}
|
||
* err := m.UnmarshalJSONField("my_field_name", &result)
|
||
* ```
|
||
*/
|
||
unmarshalJSONField(key: string, result: any): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* BaseFilesPath returns the storage dir path used by the record.
|
||
*/
|
||
baseFilesPath(): string
|
||
}
|
||
interface Record {
|
||
/**
|
||
* FindFileFieldByFile returns the first file type field for which
|
||
* any of the record's data contains the provided filename.
|
||
*/
|
||
findFileFieldByFile(filename: string): (schema.SchemaField | undefined)
|
||
}
|
||
interface Record {
|
||
/**
|
||
* Load bulk loads the provided data into the current Record model.
|
||
*/
|
||
load(data: _TygojaDict): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* ColumnValueMap implements [ColumnValueMapper] interface.
|
||
*/
|
||
columnValueMap(): _TygojaDict
|
||
}
|
||
interface Record {
|
||
/**
|
||
* PublicExport exports only the record fields that are safe to be public.
|
||
*
|
||
* Fields marked as hidden will be exported only if `m.IgnoreEmailVisibility(true)` is set.
|
||
*/
|
||
publicExport(): _TygojaDict
|
||
}
|
||
interface Record {
|
||
/**
|
||
* MarshalJSON implements the [json.Marshaler] interface.
|
||
*
|
||
* Only the data exported by `PublicExport()` will be serialized.
|
||
*/
|
||
marshalJSON(): string
|
||
}
|
||
interface Record {
|
||
/**
|
||
* UnmarshalJSON implements the [json.Unmarshaler] interface.
|
||
*/
|
||
unmarshalJSON(data: string): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* ReplaceModifers returns a new map with applied modifier
|
||
* values based on the current record and the specified data.
|
||
*
|
||
* The resolved modifier keys will be removed.
|
||
*
|
||
* Multiple modifiers will be applied one after another,
|
||
* while reusing the previous base key value result (eg. 1; -5; +2 => -2).
|
||
*
|
||
* Example usage:
|
||
*
|
||
* ```
|
||
* newData := record.ReplaceModifers(data)
|
||
* // record: {"field": 10}
|
||
* // data: {"field+": 5}
|
||
* // newData: {"field": 15}
|
||
* ```
|
||
*/
|
||
replaceModifers(data: _TygojaDict): _TygojaDict
|
||
}
|
||
interface Record {
|
||
/**
|
||
* Username returns the "username" auth record data value.
|
||
*/
|
||
username(): string
|
||
}
|
||
interface Record {
|
||
/**
|
||
* SetUsername sets the "username" auth record data value.
|
||
*
|
||
* This method doesn't check whether the provided value is a valid username.
|
||
*
|
||
* Returns an error if the record is not from an auth collection.
|
||
*/
|
||
setUsername(username: string): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* Email returns the "email" auth record data value.
|
||
*/
|
||
email(): string
|
||
}
|
||
interface Record {
|
||
/**
|
||
* SetEmail sets the "email" auth record data value.
|
||
*
|
||
* This method doesn't check whether the provided value is a valid email.
|
||
*
|
||
* Returns an error if the record is not from an auth collection.
|
||
*/
|
||
setEmail(email: string): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* Verified returns the "emailVisibility" auth record data value.
|
||
*/
|
||
emailVisibility(): boolean
|
||
}
|
||
interface Record {
|
||
/**
|
||
* SetEmailVisibility sets the "emailVisibility" auth record data value.
|
||
*
|
||
* Returns an error if the record is not from an auth collection.
|
||
*/
|
||
setEmailVisibility(visible: boolean): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* Verified returns the "verified" auth record data value.
|
||
*/
|
||
verified(): boolean
|
||
}
|
||
interface Record {
|
||
/**
|
||
* SetVerified sets the "verified" auth record data value.
|
||
*
|
||
* Returns an error if the record is not from an auth collection.
|
||
*/
|
||
setVerified(verified: boolean): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* TokenKey returns the "tokenKey" auth record data value.
|
||
*/
|
||
tokenKey(): string
|
||
}
|
||
interface Record {
|
||
/**
|
||
* SetTokenKey sets the "tokenKey" auth record data value.
|
||
*
|
||
* Returns an error if the record is not from an auth collection.
|
||
*/
|
||
setTokenKey(key: string): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* RefreshTokenKey generates and sets new random auth record "tokenKey".
|
||
*
|
||
* Returns an error if the record is not from an auth collection.
|
||
*/
|
||
refreshTokenKey(): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* LastResetSentAt returns the "lastResentSentAt" auth record data value.
|
||
*/
|
||
lastResetSentAt(): types.DateTime
|
||
}
|
||
interface Record {
|
||
/**
|
||
* SetLastResetSentAt sets the "lastResentSentAt" auth record data value.
|
||
*
|
||
* Returns an error if the record is not from an auth collection.
|
||
*/
|
||
setLastResetSentAt(dateTime: types.DateTime): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* LastVerificationSentAt returns the "lastVerificationSentAt" auth record data value.
|
||
*/
|
||
lastVerificationSentAt(): types.DateTime
|
||
}
|
||
interface Record {
|
||
/**
|
||
* SetLastVerificationSentAt sets an "lastVerificationSentAt" auth record data value.
|
||
*
|
||
* Returns an error if the record is not from an auth collection.
|
||
*/
|
||
setLastVerificationSentAt(dateTime: types.DateTime): void
|
||
}
|
||
interface Record {
|
||
/**
|
||
* PasswordHash returns the "passwordHash" auth record data value.
|
||
*/
|
||
passwordHash(): string
|
||
}
|
||
interface Record {
|
||
/**
|
||
* ValidatePassword validates a plain password against the auth record password.
|
||
*
|
||
* Returns false if the password is incorrect or record is not from an auth collection.
|
||
*/
|
||
validatePassword(password: string): boolean
|
||
}
|
||
interface Record {
|
||
/**
|
||
* SetPassword sets cryptographically secure string to the auth record "password" field.
|
||
* This method also resets the "lastResetSentAt" and the "tokenKey" fields.
|
||
*
|
||
* Returns an error if the record is not from an auth collection or
|
||
* an empty password is provided.
|
||
*/
|
||
setPassword(password: string): void
|
||
}
|
||
/**
|
||
* RequestData defines a HTTP request data struct, usually used
|
||
* as part of the `@request.*` filter resolver.
|
||
*/
|
||
interface RequestData {
|
||
method: string
|
||
query: _TygojaDict
|
||
/**
|
||
* @todo consider changing to Body?
|
||
*/
|
||
data: _TygojaDict
|
||
headers: _TygojaDict
|
||
authRecord?: Record
|
||
admin?: Admin
|
||
}
|
||
interface RequestData {
|
||
/**
|
||
* HasModifierDataKeys loosely checks if the current struct has any modifier Data keys.
|
||
*/
|
||
hasModifierDataKeys(): boolean
|
||
}
|
||
}
|
||
|
||
namespace auth {
|
||
/**
|
||
* AuthUser defines a standardized oauth2 user data structure.
|
||
*/
|
||
interface AuthUser {
|
||
id: string
|
||
name: string
|
||
username: string
|
||
email: string
|
||
avatarUrl: string
|
||
rawUser: _TygojaDict
|
||
accessToken: string
|
||
refreshToken: string
|
||
}
|
||
/**
|
||
* Provider defines a common interface for an OAuth2 client.
|
||
*/
|
||
interface Provider {
|
||
/**
|
||
* Scopes returns the context associated with the provider (if any).
|
||
*/
|
||
context(): context.Context
|
||
/**
|
||
* SetContext assigns the specified context to the current provider.
|
||
*/
|
||
setContext(ctx: context.Context): void
|
||
/**
|
||
* Scopes returns the provider access permissions that will be requested.
|
||
*/
|
||
scopes(): Array<string>
|
||
/**
|
||
* SetScopes sets the provider access permissions that will be requested later.
|
||
*/
|
||
setScopes(scopes: Array<string>): void
|
||
/**
|
||
* ClientId returns the provider client's app ID.
|
||
*/
|
||
clientId(): string
|
||
/**
|
||
* SetClientId sets the provider client's ID.
|
||
*/
|
||
setClientId(clientId: string): void
|
||
/**
|
||
* ClientSecret returns the provider client's app secret.
|
||
*/
|
||
clientSecret(): string
|
||
/**
|
||
* SetClientSecret sets the provider client's app secret.
|
||
*/
|
||
setClientSecret(secret: string): void
|
||
/**
|
||
* RedirectUrl returns the end address to redirect the user
|
||
* going through the OAuth flow.
|
||
*/
|
||
redirectUrl(): string
|
||
/**
|
||
* SetRedirectUrl sets the provider's RedirectUrl.
|
||
*/
|
||
setRedirectUrl(url: string): void
|
||
/**
|
||
* AuthUrl returns the provider's authorization service url.
|
||
*/
|
||
authUrl(): string
|
||
/**
|
||
* SetAuthUrl sets the provider's AuthUrl.
|
||
*/
|
||
setAuthUrl(url: string): void
|
||
/**
|
||
* TokenUrl returns the provider's token exchange service url.
|
||
*/
|
||
tokenUrl(): string
|
||
/**
|
||
* SetTokenUrl sets the provider's TokenUrl.
|
||
*/
|
||
setTokenUrl(url: string): void
|
||
/**
|
||
* UserApiUrl returns the provider's user info api url.
|
||
*/
|
||
userApiUrl(): string
|
||
/**
|
||
* SetUserApiUrl sets the provider's UserApiUrl.
|
||
*/
|
||
setUserApiUrl(url: string): void
|
||
/**
|
||
* Client returns an http client using the provided token.
|
||
*/
|
||
client(token: oauth2.Token): (http.Client | undefined)
|
||
/**
|
||
* BuildAuthUrl returns a URL to the provider's consent page
|
||
* that asks for permissions for the required scopes explicitly.
|
||
*/
|
||
buildAuthUrl(state: string, ...opts: oauth2.AuthCodeOption[]): string
|
||
/**
|
||
* FetchToken converts an authorization code to token.
|
||
*/
|
||
fetchToken(code: string, ...opts: oauth2.AuthCodeOption[]): (oauth2.Token | undefined)
|
||
/**
|
||
* FetchRawUserData requests and marshalizes into `result` the
|
||
* the OAuth user api response.
|
||
*/
|
||
fetchRawUserData(token: oauth2.Token): string
|
||
/**
|
||
* FetchAuthUser is similar to FetchRawUserData, but normalizes and
|
||
* marshalizes the user api response into a standardized AuthUser struct.
|
||
*/
|
||
fetchAuthUser(token: oauth2.Token): (AuthUser | undefined)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package echo implements high performance, minimalist Go web framework.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```
|
||
* package main
|
||
*
|
||
* import (
|
||
* "github.com/labstack/echo/v5"
|
||
* "github.com/labstack/echo/v5/middleware"
|
||
* "log"
|
||
* "net/http"
|
||
* )
|
||
*
|
||
* // Handler
|
||
* func hello(c echo.Context) error {
|
||
* return c.String(http.StatusOK, "Hello, World!")
|
||
* }
|
||
*
|
||
* func main() {
|
||
* // Echo instance
|
||
* e := echo.New()
|
||
*
|
||
* // Middleware
|
||
* e.Use(middleware.Logger())
|
||
* e.Use(middleware.Recover())
|
||
*
|
||
* // Routes
|
||
* e.GET("/", hello)
|
||
*
|
||
* // Start server
|
||
* if err := e.Start(":8080"); err != http.ErrServerClosed {
|
||
* log.Fatal(err)
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* Learn more at https://echo.labstack.com
|
||
*/
|
||
namespace echo {
|
||
/**
|
||
* Context represents the context of the current HTTP request. It holds request and
|
||
* response objects, path, path parameters, data and registered handler.
|
||
*/
|
||
interface Context {
|
||
/**
|
||
* Request returns `*http.Request`.
|
||
*/
|
||
request(): (http.Request | undefined)
|
||
/**
|
||
* SetRequest sets `*http.Request`.
|
||
*/
|
||
setRequest(r: http.Request): void
|
||
/**
|
||
* SetResponse sets `*Response`.
|
||
*/
|
||
setResponse(r: Response): void
|
||
/**
|
||
* Response returns `*Response`.
|
||
*/
|
||
response(): (Response | undefined)
|
||
/**
|
||
* IsTLS returns true if HTTP connection is TLS otherwise false.
|
||
*/
|
||
isTLS(): boolean
|
||
/**
|
||
* IsWebSocket returns true if HTTP connection is WebSocket otherwise false.
|
||
*/
|
||
isWebSocket(): boolean
|
||
/**
|
||
* Scheme returns the HTTP protocol scheme, `http` or `https`.
|
||
*/
|
||
scheme(): string
|
||
/**
|
||
* RealIP returns the client's network address based on `X-Forwarded-For`
|
||
* or `X-Real-IP` request header.
|
||
* The behavior can be configured using `Echo#IPExtractor`.
|
||
*/
|
||
realIP(): string
|
||
/**
|
||
* RouteInfo returns current request route information. Method, Path, Name and params if they exist for matched route.
|
||
* In case of 404 (route not found) and 405 (method not allowed) RouteInfo returns generic struct for these cases.
|
||
*/
|
||
routeInfo(): RouteInfo
|
||
/**
|
||
* Path returns the registered path for the handler.
|
||
*/
|
||
path(): string
|
||
/**
|
||
* PathParam returns path parameter by name.
|
||
*/
|
||
pathParam(name: string): string
|
||
/**
|
||
* PathParamDefault returns the path parameter or default value for the provided name.
|
||
*
|
||
* Notes for DefaultRouter implementation:
|
||
* Path parameter could be empty for cases like that:
|
||
* * route `/release-:version/bin` and request URL is `/release-/bin`
|
||
* * route `/api/:version/image.jpg` and request URL is `/api//image.jpg`
|
||
* but not when path parameter is last part of route path
|
||
* * route `/download/file.:ext` will not match request `/download/file.`
|
||
*/
|
||
pathParamDefault(name: string, defaultValue: string): string
|
||
/**
|
||
* PathParams returns path parameter values.
|
||
*/
|
||
pathParams(): PathParams
|
||
/**
|
||
* SetPathParams sets path parameters for current request.
|
||
*/
|
||
setPathParams(params: PathParams): void
|
||
/**
|
||
* QueryParam returns the query param for the provided name.
|
||
*/
|
||
queryParam(name: string): string
|
||
/**
|
||
* QueryParamDefault returns the query param or default value for the provided name.
|
||
*/
|
||
queryParamDefault(name: string): string
|
||
/**
|
||
* QueryParams returns the query parameters as `url.Values`.
|
||
*/
|
||
queryParams(): url.Values
|
||
/**
|
||
* QueryString returns the URL query string.
|
||
*/
|
||
queryString(): string
|
||
/**
|
||
* FormValue returns the form field value for the provided name.
|
||
*/
|
||
formValue(name: string): string
|
||
/**
|
||
* FormValueDefault returns the form field value or default value for the provided name.
|
||
*/
|
||
formValueDefault(name: string): string
|
||
/**
|
||
* FormValues returns the form field values as `url.Values`.
|
||
*/
|
||
formValues(): url.Values
|
||
/**
|
||
* FormFile returns the multipart form file for the provided name.
|
||
*/
|
||
formFile(name: string): (multipart.FileHeader | undefined)
|
||
/**
|
||
* MultipartForm returns the multipart form.
|
||
*/
|
||
multipartForm(): (multipart.Form | undefined)
|
||
/**
|
||
* Cookie returns the named cookie provided in the request.
|
||
*/
|
||
cookie(name: string): (http.Cookie | undefined)
|
||
/**
|
||
* SetCookie adds a `Set-Cookie` header in HTTP response.
|
||
*/
|
||
setCookie(cookie: http.Cookie): void
|
||
/**
|
||
* Cookies returns the HTTP cookies sent with the request.
|
||
*/
|
||
cookies(): Array<(http.Cookie | undefined)>
|
||
/**
|
||
* Get retrieves data from the context.
|
||
*/
|
||
get(key: string): {
|
||
}
|
||
/**
|
||
* Set saves data in the context.
|
||
*/
|
||
set(key: string, val: {
|
||
}): void
|
||
/**
|
||
* Bind binds the request body into provided type `i`. The default binder
|
||
* does it based on Content-Type header.
|
||
*/
|
||
bind(i: {
|
||
}): void
|
||
/**
|
||
* Validate validates provided `i`. It is usually called after `Context#Bind()`.
|
||
* Validator must be registered using `Echo#Validator`.
|
||
*/
|
||
validate(i: {
|
||
}): void
|
||
/**
|
||
* Render renders a template with data and sends a text/html response with status
|
||
* code. Renderer must be registered using `Echo.Renderer`.
|
||
*/
|
||
render(code: number, name: string, data: {
|
||
}): void
|
||
/**
|
||
* HTML sends an HTTP response with status code.
|
||
*/
|
||
html(code: number, html: string): void
|
||
/**
|
||
* HTMLBlob sends an HTTP blob response with status code.
|
||
*/
|
||
htmlBlob(code: number, b: string): void
|
||
/**
|
||
* String sends a string response with status code.
|
||
*/
|
||
string(code: number, s: string): void
|
||
/**
|
||
* JSON sends a JSON response with status code.
|
||
*/
|
||
json(code: number, i: {
|
||
}): void
|
||
/**
|
||
* JSONPretty sends a pretty-print JSON with status code.
|
||
*/
|
||
jsonPretty(code: number, i: {
|
||
}, indent: string): void
|
||
/**
|
||
* JSONBlob sends a JSON blob response with status code.
|
||
*/
|
||
jsonBlob(code: number, b: string): void
|
||
/**
|
||
* JSONP sends a JSONP response with status code. It uses `callback` to construct
|
||
* the JSONP payload.
|
||
*/
|
||
jsonp(code: number, callback: string, i: {
|
||
}): void
|
||
/**
|
||
* JSONPBlob sends a JSONP blob response with status code. It uses `callback`
|
||
* to construct the JSONP payload.
|
||
*/
|
||
jsonpBlob(code: number, callback: string, b: string): void
|
||
/**
|
||
* XML sends an XML response with status code.
|
||
*/
|
||
xml(code: number, i: {
|
||
}): void
|
||
/**
|
||
* XMLPretty sends a pretty-print XML with status code.
|
||
*/
|
||
xmlPretty(code: number, i: {
|
||
}, indent: string): void
|
||
/**
|
||
* XMLBlob sends an XML blob response with status code.
|
||
*/
|
||
xmlBlob(code: number, b: string): void
|
||
/**
|
||
* Blob sends a blob response with status code and content type.
|
||
*/
|
||
blob(code: number, contentType: string, b: string): void
|
||
/**
|
||
* Stream sends a streaming response with status code and content type.
|
||
*/
|
||
stream(code: number, contentType: string, r: io.Reader): void
|
||
/**
|
||
* File sends a response with the content of the file.
|
||
*/
|
||
file(file: string): void
|
||
/**
|
||
* FileFS sends a response with the content of the file from given filesystem.
|
||
*/
|
||
fileFS(file: string, filesystem: fs.FS): void
|
||
/**
|
||
* Attachment sends a response as attachment, prompting client to save the
|
||
* file.
|
||
*/
|
||
attachment(file: string, name: string): void
|
||
/**
|
||
* Inline sends a response as inline, opening the file in the browser.
|
||
*/
|
||
inline(file: string, name: string): void
|
||
/**
|
||
* NoContent sends a response with no body and a status code.
|
||
*/
|
||
noContent(code: number): void
|
||
/**
|
||
* Redirect redirects the request to a provided URL with status code.
|
||
*/
|
||
redirect(code: number, url: string): void
|
||
/**
|
||
* Echo returns the `Echo` instance.
|
||
*
|
||
* WARNING: Remember that Echo public fields and methods are coroutine safe ONLY when you are NOT mutating them
|
||
* anywhere in your code after Echo server has started.
|
||
*/
|
||
echo(): (Echo | undefined)
|
||
}
|
||
// @ts-ignore
|
||
import stdContext = context
|
||
/**
|
||
* Echo is the top-level framework instance.
|
||
*
|
||
* Note: replacing/nilling public fields is not coroutine/thread-safe and can cause data-races/panics. This is very likely
|
||
* to happen when you access Echo instances through Context.Echo() method.
|
||
*/
|
||
interface Echo {
|
||
/**
|
||
* NewContextFunc allows using custom context implementations, instead of default *echo.context
|
||
*/
|
||
newContextFunc: (e: Echo, pathParamAllocSize: number) => ServableContext
|
||
debug: boolean
|
||
httpErrorHandler: HTTPErrorHandler
|
||
binder: Binder
|
||
jsonSerializer: JSONSerializer
|
||
validator: Validator
|
||
renderer: Renderer
|
||
logger: Logger
|
||
ipExtractor: IPExtractor
|
||
/**
|
||
* Filesystem is file system used by Static and File handlers to access files.
|
||
* Defaults to os.DirFS(".")
|
||
*
|
||
* When dealing with `embed.FS` use `fs := echo.MustSubFS(fs, "rootDirectory") to create sub fs which uses necessary
|
||
* prefix for directory path. This is necessary as `//go:embed assets/images` embeds files with paths
|
||
* including `assets/images` as their prefix.
|
||
*/
|
||
filesystem: fs.FS
|
||
}
|
||
/**
|
||
* HandlerFunc defines a function to serve HTTP requests.
|
||
*/
|
||
interface HandlerFunc {(c: Context): void }
|
||
/**
|
||
* MiddlewareFunc defines a function to process middleware.
|
||
*/
|
||
interface MiddlewareFunc {(next: HandlerFunc): HandlerFunc }
|
||
interface Echo {
|
||
/**
|
||
* NewContext returns a new Context instance.
|
||
*
|
||
* Note: both request and response can be left to nil as Echo.ServeHTTP will call c.Reset(req,resp) anyway
|
||
* these arguments are useful when creating context for tests and cases like that.
|
||
*/
|
||
newContext(r: http.Request, w: http.ResponseWriter): Context
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* Router returns the default router.
|
||
*/
|
||
router(): Router
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* Routers returns the map of host => router.
|
||
*/
|
||
routers(): _TygojaDict
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* RouterFor returns Router for given host.
|
||
*/
|
||
routerFor(host: string): Router
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* ResetRouterCreator resets callback for creating new router instances.
|
||
* Note: current (default) router is immediately replaced with router created with creator func and vhost routers are cleared.
|
||
*/
|
||
resetRouterCreator(creator: (e: Echo) => Router): void
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* Pre adds middleware to the chain which is run before router tries to find matching route.
|
||
* Meaning middleware is executed even for 404 (not found) cases.
|
||
*/
|
||
pre(...middleware: MiddlewareFunc[]): void
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* Use adds middleware to the chain which is run after router has found matching route and before route/request handler method is executed.
|
||
*/
|
||
use(...middleware: MiddlewareFunc[]): void
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* CONNECT registers a new CONNECT route for a path with matching handler in the
|
||
* router with optional route-level middleware. Panics on error.
|
||
*/
|
||
connect(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* DELETE registers a new DELETE route for a path with matching handler in the router
|
||
* with optional route-level middleware. Panics on error.
|
||
*/
|
||
delete(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* GET registers a new GET route for a path with matching handler in the router
|
||
* with optional route-level middleware. Panics on error.
|
||
*/
|
||
get(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* HEAD registers a new HEAD route for a path with matching handler in the
|
||
* router with optional route-level middleware. Panics on error.
|
||
*/
|
||
head(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* OPTIONS registers a new OPTIONS route for a path with matching handler in the
|
||
* router with optional route-level middleware. Panics on error.
|
||
*/
|
||
options(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* PATCH registers a new PATCH route for a path with matching handler in the
|
||
* router with optional route-level middleware. Panics on error.
|
||
*/
|
||
patch(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* POST registers a new POST route for a path with matching handler in the
|
||
* router with optional route-level middleware. Panics on error.
|
||
*/
|
||
post(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* PUT registers a new PUT route for a path with matching handler in the
|
||
* router with optional route-level middleware. Panics on error.
|
||
*/
|
||
put(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* TRACE registers a new TRACE route for a path with matching handler in the
|
||
* router with optional route-level middleware. Panics on error.
|
||
*/
|
||
trace(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* RouteNotFound registers a special-case route which is executed when no other route is found (i.e. HTTP 404 cases)
|
||
* for current request URL.
|
||
* Path supports static and named/any parameters just like other http method is defined. Generally path is ended with
|
||
* wildcard/match-any character (`/*`, `/download/*` etc).
|
||
*
|
||
* Example: `e.RouteNotFound("/*", func(c echo.Context) error { return c.NoContent(http.StatusNotFound) })`
|
||
*/
|
||
routeNotFound(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* Any registers a new route for all supported HTTP methods and path with matching handler
|
||
* in the router with optional route-level middleware. Panics on error.
|
||
*/
|
||
any(path: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): Routes
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* Match registers a new route for multiple HTTP methods and path with matching
|
||
* handler in the router with optional route-level middleware. Panics on error.
|
||
*/
|
||
match(methods: Array<string>, path: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): Routes
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* Static registers a new route with path prefix to serve static files from the provided root directory.
|
||
*/
|
||
static(pathPrefix: string): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* StaticFS registers a new route with path prefix to serve static files from the provided file system.
|
||
*
|
||
* When dealing with `embed.FS` use `fs := echo.MustSubFS(fs, "rootDirectory") to create sub fs which uses necessary
|
||
* prefix for directory path. This is necessary as `//go:embed assets/images` embeds files with paths
|
||
* including `assets/images` as their prefix.
|
||
*/
|
||
staticFS(pathPrefix: string, filesystem: fs.FS): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* FileFS registers a new route with path to serve file from the provided file system.
|
||
*/
|
||
fileFS(path: string, filesystem: fs.FS, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* File registers a new route with path to serve a static file with optional route-level middleware. Panics on error.
|
||
*/
|
||
file(path: string, ...middleware: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* AddRoute registers a new Route with default host Router
|
||
*/
|
||
addRoute(route: Routable): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* Add registers a new route for an HTTP method and path with matching handler
|
||
* in the router with optional route-level middleware.
|
||
*/
|
||
add(method: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* Host creates a new router group for the provided host and optional host-level middleware.
|
||
*/
|
||
host(name: string, ...m: MiddlewareFunc[]): (Group | undefined)
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* Group creates a new router group with prefix and optional group-level middleware.
|
||
*/
|
||
group(prefix: string, ...m: MiddlewareFunc[]): (Group | undefined)
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* AcquireContext returns an empty `Context` instance from the pool.
|
||
* You must return the context by calling `ReleaseContext()`.
|
||
*/
|
||
acquireContext(): Context
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* ReleaseContext returns the `Context` instance back to the pool.
|
||
* You must call it after `AcquireContext()`.
|
||
*/
|
||
releaseContext(c: Context): void
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* ServeHTTP implements `http.Handler` interface, which serves HTTP requests.
|
||
*/
|
||
serveHTTP(w: http.ResponseWriter, r: http.Request): void
|
||
}
|
||
interface Echo {
|
||
/**
|
||
* Start stars HTTP server on given address with Echo as a handler serving requests. The server can be shutdown by
|
||
* sending os.Interrupt signal with `ctrl+c`.
|
||
*
|
||
* Note: this method is created for use in examples/demos and is deliberately simple without providing configuration
|
||
* options.
|
||
*
|
||
* In need of customization use:
|
||
* ```
|
||
* sc := echo.StartConfig{Address: ":8080"}
|
||
* if err := sc.Start(e); err != http.ErrServerClosed {
|
||
* log.Fatal(err)
|
||
* }
|
||
* ```
|
||
* // or standard library `http.Server`
|
||
* ```
|
||
* s := http.Server{Addr: ":8080", Handler: e}
|
||
* if err := s.ListenAndServe(); err != http.ErrServerClosed {
|
||
* log.Fatal(err)
|
||
* }
|
||
* ```
|
||
*/
|
||
start(address: string): void
|
||
}
|
||
}
|
||
|
||
namespace settings {
|
||
// @ts-ignore
|
||
import validation = ozzo_validation
|
||
/**
|
||
* Settings defines common app configuration options.
|
||
*/
|
||
interface Settings {
|
||
meta: MetaConfig
|
||
logs: LogsConfig
|
||
smtp: SmtpConfig
|
||
s3: S3Config
|
||
backups: BackupsConfig
|
||
adminAuthToken: TokenConfig
|
||
adminPasswordResetToken: TokenConfig
|
||
adminFileToken: TokenConfig
|
||
recordAuthToken: TokenConfig
|
||
recordPasswordResetToken: TokenConfig
|
||
recordEmailChangeToken: TokenConfig
|
||
recordVerificationToken: TokenConfig
|
||
recordFileToken: TokenConfig
|
||
/**
|
||
* Deprecated: Will be removed in v0.9+
|
||
*/
|
||
emailAuth: EmailAuthConfig
|
||
googleAuth: AuthProviderConfig
|
||
facebookAuth: AuthProviderConfig
|
||
githubAuth: AuthProviderConfig
|
||
gitlabAuth: AuthProviderConfig
|
||
discordAuth: AuthProviderConfig
|
||
twitterAuth: AuthProviderConfig
|
||
microsoftAuth: AuthProviderConfig
|
||
spotifyAuth: AuthProviderConfig
|
||
kakaoAuth: AuthProviderConfig
|
||
twitchAuth: AuthProviderConfig
|
||
stravaAuth: AuthProviderConfig
|
||
giteeAuth: AuthProviderConfig
|
||
livechatAuth: AuthProviderConfig
|
||
giteaAuth: AuthProviderConfig
|
||
oidcAuth: AuthProviderConfig
|
||
oidc2Auth: AuthProviderConfig
|
||
oidc3Auth: AuthProviderConfig
|
||
appleAuth: AuthProviderConfig
|
||
instagramAuth: AuthProviderConfig
|
||
vkAuth: AuthProviderConfig
|
||
yandexAuth: AuthProviderConfig
|
||
}
|
||
interface Settings {
|
||
/**
|
||
* Validate makes Settings validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface Settings {
|
||
/**
|
||
* Merge merges `other` settings into the current one.
|
||
*/
|
||
merge(other: Settings): void
|
||
}
|
||
interface Settings {
|
||
/**
|
||
* Clone creates a new deep copy of the current settings.
|
||
*/
|
||
clone(): (Settings | undefined)
|
||
}
|
||
interface Settings {
|
||
/**
|
||
* RedactClone creates a new deep copy of the current settings,
|
||
* while replacing the secret values with `******`.
|
||
*/
|
||
redactClone(): (Settings | undefined)
|
||
}
|
||
interface Settings {
|
||
/**
|
||
* NamedAuthProviderConfigs returns a map with all registered OAuth2
|
||
* provider configurations (indexed by their name identifier).
|
||
*/
|
||
namedAuthProviderConfigs(): _TygojaDict
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package daos handles common PocketBase DB model manipulations.
|
||
*
|
||
* Think of daos as DB repository and service layer in one.
|
||
*/
|
||
namespace daos {
|
||
interface Dao {
|
||
/**
|
||
* AdminQuery returns a new Admin select query.
|
||
*/
|
||
adminQuery(): (dbx.SelectQuery | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindAdminById finds the admin with the provided id.
|
||
*/
|
||
findAdminById(id: string): (models.Admin | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindAdminByEmail finds the admin with the provided email address.
|
||
*/
|
||
findAdminByEmail(email: string): (models.Admin | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindAdminByToken finds the admin associated with the provided JWT token.
|
||
*
|
||
* Returns an error if the JWT token is invalid or expired.
|
||
*/
|
||
findAdminByToken(token: string, baseTokenKey: string): (models.Admin | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* TotalAdmins returns the number of existing admin records.
|
||
*/
|
||
totalAdmins(): number
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* IsAdminEmailUnique checks if the provided email address is not
|
||
* already in use by other admins.
|
||
*/
|
||
isAdminEmailUnique(email: string, ...excludeIds: string[]): boolean
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* DeleteAdmin deletes the provided Admin model.
|
||
*
|
||
* Returns an error if there is only 1 admin.
|
||
*/
|
||
deleteAdmin(admin: models.Admin): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* SaveAdmin upserts the provided Admin model.
|
||
*/
|
||
saveAdmin(admin: models.Admin): void
|
||
}
|
||
/**
|
||
* Dao handles various db operations.
|
||
*
|
||
* You can think of Dao as a repository and service layer in one.
|
||
*/
|
||
interface Dao {
|
||
/**
|
||
* MaxLockRetries specifies the default max "database is locked" auto retry attempts.
|
||
*/
|
||
maxLockRetries: number
|
||
/**
|
||
* ModelQueryTimeout is the default max duration of a running ModelQuery().
|
||
*
|
||
* This field has no effect if an explicit query context is already specified.
|
||
*/
|
||
modelQueryTimeout: time.Duration
|
||
/**
|
||
* write hooks
|
||
*/
|
||
beforeCreateFunc: (eventDao: Dao, m: models.Model) => void
|
||
afterCreateFunc: (eventDao: Dao, m: models.Model) => void
|
||
beforeUpdateFunc: (eventDao: Dao, m: models.Model) => void
|
||
afterUpdateFunc: (eventDao: Dao, m: models.Model) => void
|
||
beforeDeleteFunc: (eventDao: Dao, m: models.Model) => void
|
||
afterDeleteFunc: (eventDao: Dao, m: models.Model) => void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* DB returns the default dao db builder (*dbx.DB or *dbx.TX).
|
||
*
|
||
* Currently the default db builder is dao.concurrentDB but that may change in the future.
|
||
*/
|
||
db(): dbx.Builder
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* ConcurrentDB returns the dao concurrent (aka. multiple open connections)
|
||
* db builder (*dbx.DB or *dbx.TX).
|
||
*
|
||
* In a transaction the concurrentDB and nonconcurrentDB refer to the same *dbx.TX instance.
|
||
*/
|
||
concurrentDB(): dbx.Builder
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* NonconcurrentDB returns the dao nonconcurrent (aka. single open connection)
|
||
* db builder (*dbx.DB or *dbx.TX).
|
||
*
|
||
* In a transaction the concurrentDB and nonconcurrentDB refer to the same *dbx.TX instance.
|
||
*/
|
||
nonconcurrentDB(): dbx.Builder
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* Clone returns a new Dao with the same configuration options as the current one.
|
||
*/
|
||
clone(): (Dao | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* WithoutHooks returns a new Dao with the same configuration options
|
||
* as the current one, but without create/update/delete hooks.
|
||
*/
|
||
withoutHooks(): (Dao | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* ModelQuery creates a new preconfigured select query with preset
|
||
* SELECT, FROM and other common fields based on the provided model.
|
||
*/
|
||
modelQuery(m: models.Model): (dbx.SelectQuery | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindById finds a single db record with the specified id and
|
||
* scans the result into m.
|
||
*/
|
||
findById(m: models.Model, id: string): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* RunInTransaction wraps fn into a transaction.
|
||
*
|
||
* It is safe to nest RunInTransaction calls as long as you use the txDao.
|
||
*/
|
||
runInTransaction(fn: (txDao: Dao) => void): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* Delete deletes the provided model.
|
||
*/
|
||
delete(m: models.Model): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* Save persists the provided model in the database.
|
||
*
|
||
* If m.IsNew() is true, the method will perform a create, otherwise an update.
|
||
* To explicitly mark a model for update you can use m.MarkAsNotNew().
|
||
*/
|
||
save(m: models.Model): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* CollectionQuery returns a new Collection select query.
|
||
*/
|
||
collectionQuery(): (dbx.SelectQuery | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindCollectionsByType finds all collections by the given type.
|
||
*/
|
||
findCollectionsByType(collectionType: string): Array<(models.Collection | undefined)>
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindCollectionByNameOrId finds a single collection by its name (case insensitive) or id.
|
||
*/
|
||
findCollectionByNameOrId(nameOrId: string): (models.Collection | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* IsCollectionNameUnique checks that there is no existing collection
|
||
* with the provided name (case insensitive!).
|
||
*
|
||
* Note: case insensitive check because the name is used also as a table name for the records.
|
||
*/
|
||
isCollectionNameUnique(name: string, ...excludeIds: string[]): boolean
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindCollectionReferences returns information for all
|
||
* relation schema fields referencing the provided collection.
|
||
*
|
||
* If the provided collection has reference to itself then it will be
|
||
* also included in the result. To exclude it, pass the collection id
|
||
* as the excludeId argument.
|
||
*/
|
||
findCollectionReferences(collection: models.Collection, ...excludeIds: string[]): _TygojaDict
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* DeleteCollection deletes the provided Collection model.
|
||
* This method automatically deletes the related collection records table.
|
||
*
|
||
* NB! The collection cannot be deleted, if:
|
||
* - is system collection (aka. collection.System is true)
|
||
* - is referenced as part of a relation field in another collection
|
||
*/
|
||
deleteCollection(collection: models.Collection): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* SaveCollection persists the provided Collection model and updates
|
||
* its related records table schema.
|
||
*
|
||
* If collecction.IsNew() is true, the method will perform a create, otherwise an update.
|
||
* To explicitly mark a collection for update you can use collecction.MarkAsNotNew().
|
||
*/
|
||
saveCollection(collection: models.Collection): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* ImportCollections imports the provided collections list within a single transaction.
|
||
*
|
||
* NB1! If deleteMissing is set, all local collections and schema fields, that are not present
|
||
* in the imported configuration, WILL BE DELETED (including their related records data).
|
||
*
|
||
* NB2! This method doesn't perform validations on the imported collections data!
|
||
* If you need validations, use [forms.CollectionsImport].
|
||
*/
|
||
importCollections(importedCollections: Array<(models.Collection | undefined)>, deleteMissing: boolean, afterSync: (txDao: Dao, mappedImported: _TygojaDict) => void): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* ExternalAuthQuery returns a new ExternalAuth select query.
|
||
*/
|
||
externalAuthQuery(): (dbx.SelectQuery | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindAllExternalAuthsByRecord returns all ExternalAuth models
|
||
* linked to the provided auth record.
|
||
*/
|
||
findAllExternalAuthsByRecord(authRecord: models.Record): Array<(models.ExternalAuth | undefined)>
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindExternalAuthByProvider returns the first available
|
||
* ExternalAuth model for the specified provider and providerId.
|
||
*/
|
||
findExternalAuthByProvider(provider: string): (models.ExternalAuth | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindExternalAuthByRecordAndProvider returns the first available
|
||
* ExternalAuth model for the specified record data and provider.
|
||
*/
|
||
findExternalAuthByRecordAndProvider(authRecord: models.Record, provider: string): (models.ExternalAuth | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* SaveExternalAuth upserts the provided ExternalAuth model.
|
||
*/
|
||
saveExternalAuth(model: models.ExternalAuth): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* DeleteExternalAuth deletes the provided ExternalAuth model.
|
||
*/
|
||
deleteExternalAuth(model: models.ExternalAuth): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* ParamQuery returns a new Param select query.
|
||
*/
|
||
paramQuery(): (dbx.SelectQuery | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindParamByKey finds the first Param model with the provided key.
|
||
*/
|
||
findParamByKey(key: string): (models.Param | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* SaveParam creates or updates a Param model by the provided key-value pair.
|
||
* The value argument will be encoded as json string.
|
||
*
|
||
* If `optEncryptionKey` is provided it will encrypt the value before storing it.
|
||
*/
|
||
saveParam(key: string, value: any, ...optEncryptionKey: string[]): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* DeleteParam deletes the provided Param model.
|
||
*/
|
||
deleteParam(param: models.Param): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* RecordQuery returns a new Record select query.
|
||
*/
|
||
recordQuery(collection: models.Collection): (dbx.SelectQuery | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindRecordById finds the Record model by its id.
|
||
*/
|
||
findRecordById(collectionNameOrId: string, recordId: string, ...optFilters: ((q: dbx.SelectQuery) => void)[]): (models.Record | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindRecordsByIds finds all Record models by the provided ids.
|
||
* If no records are found, returns an empty slice.
|
||
*/
|
||
findRecordsByIds(collectionNameOrId: string, recordIds: Array<string>, ...optFilters: ((q: dbx.SelectQuery) => void)[]): Array<(models.Record | undefined)>
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindRecordsByExpr finds all records by the specified db expression.
|
||
*
|
||
* Returns all collection records if no expressions are provided.
|
||
*
|
||
* Returns an empty slice if no records are found.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```
|
||
* expr1 := dbx.HashExp{"email": "test@example.com"}
|
||
* expr2 := dbx.NewExp("LOWER(username) = {:username}", dbx.Params{"username": "test"})
|
||
* dao.FindRecordsByExpr("example", expr1, expr2)
|
||
* ```
|
||
*/
|
||
findRecordsByExpr(collectionNameOrId: string, ...exprs: dbx.Expression[]): Array<(models.Record | undefined)>
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindFirstRecordByData returns the first found record matching
|
||
* the provided key-value pair.
|
||
*/
|
||
findFirstRecordByData(collectionNameOrId: string, key: string, value: any): (models.Record | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindRecordsByFilter returns limit number of records matching the
|
||
* provided string filter.
|
||
*
|
||
* The sort argument is optional and can be empty string OR the same format
|
||
* used in the web APIs, eg. "-created,title".
|
||
*
|
||
* If the limit argument is <= 0, no limit is applied to the query and
|
||
* all matching records are returned.
|
||
*
|
||
* NB! Don't put untrusted user input in the filter string as it
|
||
* practically would allow the users to inject their own custom filter.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```
|
||
* dao.FindRecordsByFilter("posts", "title ~ 'lorem ipsum' && visible = true", "-created", 10)
|
||
* ```
|
||
*/
|
||
findRecordsByFilter(collectionNameOrId: string, filter: string, sort: string, limit: number): Array<(models.Record | undefined)>
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindFirstRecordByFilter returns the first available record matching the provided filter.
|
||
*
|
||
* NB! Don't put untrusted user input in the filter string as it
|
||
* practically would allow the users to inject their own custom filter.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```
|
||
* dao.FindFirstRecordByFilter("posts", "slug='test'")
|
||
* ```
|
||
*/
|
||
findFirstRecordByFilter(collectionNameOrId: string, filter: string): (models.Record | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* IsRecordValueUnique checks if the provided key-value pair is a unique Record value.
|
||
*
|
||
* For correctness, if the collection is "auth" and the key is "username",
|
||
* the unique check will be case insensitive.
|
||
*
|
||
* NB! Array values (eg. from multiple select fields) are matched
|
||
* as a serialized json strings (eg. `["a","b"]`), so the value uniqueness
|
||
* depends on the elements order. Or in other words the following values
|
||
* are considered different: `[]string{"a","b"}` and `[]string{"b","a"}`
|
||
*/
|
||
isRecordValueUnique(collectionNameOrId: string, key: string, value: any, ...excludeIds: string[]): boolean
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindAuthRecordByToken finds the auth record associated with the provided JWT token.
|
||
*
|
||
* Returns an error if the JWT token is invalid, expired or not associated to an auth collection record.
|
||
*/
|
||
findAuthRecordByToken(token: string, baseTokenKey: string): (models.Record | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindAuthRecordByEmail finds the auth record associated with the provided email.
|
||
*
|
||
* Returns an error if it is not an auth collection or the record is not found.
|
||
*/
|
||
findAuthRecordByEmail(collectionNameOrId: string, email: string): (models.Record | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindAuthRecordByUsername finds the auth record associated with the provided username (case insensitive).
|
||
*
|
||
* Returns an error if it is not an auth collection or the record is not found.
|
||
*/
|
||
findAuthRecordByUsername(collectionNameOrId: string, username: string): (models.Record | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* SuggestUniqueAuthRecordUsername checks if the provided username is unique
|
||
* and return a new "unique" username with appended random numeric part
|
||
* (eg. "existingName" -> "existingName583").
|
||
*
|
||
* The same username will be returned if the provided string is already unique.
|
||
*/
|
||
suggestUniqueAuthRecordUsername(collectionNameOrId: string, baseUsername: string, ...excludeIds: string[]): string
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* CanAccessRecord checks if a record is allowed to be accessed by the
|
||
* specified requestData and accessRule.
|
||
*
|
||
* Rule and db checks are ignored in case requestData.Admin is set.
|
||
*
|
||
* The returned error indicate that something unexpected happened during
|
||
* the check (eg. invalid rule or db error).
|
||
*
|
||
* The method always return false on invalid access rule or db error.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```
|
||
* requestData := apis.RequestData(c /* echo.Context *\/)
|
||
* record, _ := dao.FindRecordById("example", "RECORD_ID")
|
||
* rule := types.Pointer("@request.auth.id != '' || status = 'public'")
|
||
* // ... or use one of the record collection's rule, eg. record.Collection().ViewRule
|
||
*
|
||
* if ok, _ := dao.CanAccessRecord(record, requestData, rule); ok { ... }
|
||
* ```
|
||
*/
|
||
canAccessRecord(record: models.Record, requestData: models.RequestData, accessRule: string): boolean
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* SaveRecord persists the provided Record model in the database.
|
||
*
|
||
* If record.IsNew() is true, the method will perform a create, otherwise an update.
|
||
* To explicitly mark a record for update you can use record.MarkAsNotNew().
|
||
*/
|
||
saveRecord(record: models.Record): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* DeleteRecord deletes the provided Record model.
|
||
*
|
||
* This method will also cascade the delete operation to all linked
|
||
* relational records (delete or unset, depending on the rel settings).
|
||
*
|
||
* The delete operation may fail if the record is part of a required
|
||
* reference in another record (aka. cannot be deleted or unset).
|
||
*/
|
||
deleteRecord(record: models.Record): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* ExpandRecord expands the relations of a single Record model.
|
||
*
|
||
* Returns a map with the failed expand parameters and their errors.
|
||
*/
|
||
expandRecord(record: models.Record, expands: Array<string>, fetchFunc: ExpandFetchFunc): _TygojaDict
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* ExpandRecords expands the relations of the provided Record models list.
|
||
*
|
||
* Returns a map with the failed expand parameters and their errors.
|
||
*/
|
||
expandRecords(records: Array<(models.Record | undefined)>, expands: Array<string>, fetchFunc: ExpandFetchFunc): _TygojaDict
|
||
}
|
||
// @ts-ignore
|
||
import validation = ozzo_validation
|
||
interface Dao {
|
||
/**
|
||
* SyncRecordTableSchema compares the two provided collections
|
||
* and applies the necessary related record table changes.
|
||
*
|
||
* If `oldCollection` is null, then only `newCollection` is used to create the record table.
|
||
*/
|
||
syncRecordTableSchema(newCollection: models.Collection, oldCollection: models.Collection): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* RequestQuery returns a new Request logs select query.
|
||
*/
|
||
requestQuery(): (dbx.SelectQuery | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindRequestById finds a single Request log by its id.
|
||
*/
|
||
findRequestById(id: string): (models.Request | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* RequestsStats returns hourly grouped requests logs statistics.
|
||
*/
|
||
requestsStats(expr: dbx.Expression): Array<(RequestsStatsItem | undefined)>
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* DeleteOldRequests delete all requests that are created before createdBefore.
|
||
*/
|
||
deleteOldRequests(createdBefore: time.Time): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* SaveRequest upserts the provided Request model.
|
||
*/
|
||
saveRequest(request: models.Request): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindSettings returns and decode the serialized app settings param value.
|
||
*
|
||
* The method will first try to decode the param value without decryption.
|
||
* If it fails and optEncryptionKey is set, it will try again by first
|
||
* decrypting the value and then decode it again.
|
||
*
|
||
* Returns an error if it fails to decode the stored serialized param value.
|
||
*/
|
||
findSettings(...optEncryptionKey: string[]): (settings.Settings | undefined)
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* SaveSettings persists the specified settings configuration.
|
||
*
|
||
* If optEncryptionKey is set, then the stored serialized value will be encrypted with it.
|
||
*/
|
||
saveSettings(newSettings: settings.Settings, ...optEncryptionKey: string[]): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* HasTable checks if a table (or view) with the provided name exists (case insensitive).
|
||
*/
|
||
hasTable(tableName: string): boolean
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* TableColumns returns all column names of a single table by its name.
|
||
*/
|
||
tableColumns(tableName: string): Array<string>
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* TableInfo returns the `table_info` pragma result for the specified table.
|
||
*/
|
||
tableInfo(tableName: string): Array<(models.TableInfoRow | undefined)>
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* TableIndexes returns a name grouped map with all non empty index of the specified table.
|
||
*
|
||
* Note: This method doesn't return an error on nonexisting table.
|
||
*/
|
||
tableIndexes(tableName: string): _TygojaDict
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* DeleteTable drops the specified table.
|
||
*
|
||
* This method is a no-op if a table with the provided name doesn't exist.
|
||
*
|
||
* Be aware that this method is vulnerable to SQL injection and the
|
||
* "tableName" argument must come only from trusted input!
|
||
*/
|
||
deleteTable(tableName: string): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* Vacuum executes VACUUM on the current dao.DB() instance in order to
|
||
* reclaim unused db disk space.
|
||
*/
|
||
vacuum(): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* DeleteView drops the specified view name.
|
||
*
|
||
* This method is a no-op if a view with the provided name doesn't exist.
|
||
*
|
||
* Be aware that this method is vulnerable to SQL injection and the
|
||
* "name" argument must come only from trusted input!
|
||
*/
|
||
deleteView(name: string): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* SaveView creates (or updates already existing) persistent SQL view.
|
||
*
|
||
* Be aware that this method is vulnerable to SQL injection and the
|
||
* "selectQuery" argument must come only from trusted input!
|
||
*/
|
||
saveView(name: string, selectQuery: string): void
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* CreateViewSchema creates a new view schema from the provided select query.
|
||
*
|
||
* There are some caveats:
|
||
* - The select query must have an "id" column.
|
||
* - Wildcard ("*") columns are not supported to avoid accidentally leaking sensitive data.
|
||
*/
|
||
createViewSchema(selectQuery: string): schema.Schema
|
||
}
|
||
interface Dao {
|
||
/**
|
||
* FindRecordByViewFile returns the original models.Record of the
|
||
* provided view collection file.
|
||
*/
|
||
findRecordByViewFile(viewCollectionNameOrId: string, fileFieldName: string, filename: string): (models.Record | undefined)
|
||
}
|
||
}
|
||
|
||
namespace migrate {
|
||
/**
|
||
* MigrationsList defines a list with migration definitions
|
||
*/
|
||
interface MigrationsList {
|
||
}
|
||
interface MigrationsList {
|
||
/**
|
||
* Item returns a single migration from the list by its index.
|
||
*/
|
||
item(index: number): (Migration | undefined)
|
||
}
|
||
interface MigrationsList {
|
||
/**
|
||
* Items returns the internal migrations list slice.
|
||
*/
|
||
items(): Array<(Migration | undefined)>
|
||
}
|
||
interface MigrationsList {
|
||
/**
|
||
* Register adds new migration definition to the list.
|
||
*
|
||
* If `optFilename` is not provided, it will try to get the name from its .go file.
|
||
*
|
||
* The list will be sorted automatically based on the migrations file name.
|
||
*/
|
||
register(up: (db: dbx.Builder) => void, down: (db: dbx.Builder) => void, ...optFilename: string[]): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package core is the backbone of PocketBase.
|
||
*
|
||
* It defines the main PocketBase App interface and its base implementation.
|
||
*/
|
||
namespace core {
|
||
/**
|
||
* App defines the main PocketBase app interface.
|
||
*/
|
||
interface App {
|
||
/**
|
||
* Deprecated:
|
||
* This method may get removed in the near future.
|
||
* It is recommended to access the app db instance from app.Dao().DB() or
|
||
* if you want more flexibility - app.Dao().ConcurrentDB() and app.Dao().NonconcurrentDB().
|
||
*
|
||
* DB returns the default app database instance.
|
||
*/
|
||
db(): (dbx.DB | undefined)
|
||
/**
|
||
* Dao returns the default app Dao instance.
|
||
*
|
||
* This Dao could operate only on the tables and models
|
||
* associated with the default app database. For example,
|
||
* trying to access the request logs table will result in error.
|
||
*/
|
||
dao(): (daos.Dao | undefined)
|
||
/**
|
||
* Deprecated:
|
||
* This method may get removed in the near future.
|
||
* It is recommended to access the logs db instance from app.LogsDao().DB() or
|
||
* if you want more flexibility - app.LogsDao().ConcurrentDB() and app.LogsDao().NonconcurrentDB().
|
||
*
|
||
* LogsDB returns the app logs database instance.
|
||
*/
|
||
logsDB(): (dbx.DB | undefined)
|
||
/**
|
||
* LogsDao returns the app logs Dao instance.
|
||
*
|
||
* This Dao could operate only on the tables and models
|
||
* associated with the logs database. For example, trying to access
|
||
* the users table from LogsDao will result in error.
|
||
*/
|
||
logsDao(): (daos.Dao | undefined)
|
||
/**
|
||
* DataDir returns the app data directory path.
|
||
*/
|
||
dataDir(): string
|
||
/**
|
||
* EncryptionEnv returns the name of the app secret env key
|
||
* (used for settings encryption).
|
||
*/
|
||
encryptionEnv(): string
|
||
/**
|
||
* IsDebug returns whether the app is in debug mode
|
||
* (showing more detailed error logs, executed sql statements, etc.).
|
||
*/
|
||
isDebug(): boolean
|
||
/**
|
||
* Settings returns the loaded app settings.
|
||
*/
|
||
settings(): (settings.Settings | undefined)
|
||
/**
|
||
* Cache returns the app internal cache store.
|
||
*/
|
||
cache(): (store.Store<any> | undefined)
|
||
/**
|
||
* SubscriptionsBroker returns the app realtime subscriptions broker instance.
|
||
*/
|
||
subscriptionsBroker(): (subscriptions.Broker | undefined)
|
||
/**
|
||
* NewMailClient creates and returns a configured app mail client.
|
||
*/
|
||
newMailClient(): mailer.Mailer
|
||
/**
|
||
* NewFilesystem creates and returns a configured filesystem.System instance
|
||
* for managing regular app files (eg. collection uploads).
|
||
*
|
||
* NB! Make sure to call Close() on the returned result
|
||
* after you are done working with it.
|
||
*/
|
||
newFilesystem(): (filesystem.System | undefined)
|
||
/**
|
||
* NewBackupsFilesystem creates and returns a configured filesystem.System instance
|
||
* for managing app backups.
|
||
*
|
||
* NB! Make sure to call Close() on the returned result
|
||
* after you are done working with it.
|
||
*/
|
||
newBackupsFilesystem(): (filesystem.System | undefined)
|
||
/**
|
||
* RefreshSettings reinitializes and reloads the stored application settings.
|
||
*/
|
||
refreshSettings(): void
|
||
/**
|
||
* IsBootstrapped checks if the application was initialized
|
||
* (aka. whether Bootstrap() was called).
|
||
*/
|
||
isBootstrapped(): boolean
|
||
/**
|
||
* Bootstrap takes care for initializing the application
|
||
* (open db connections, load settings, etc.).
|
||
*
|
||
* It will call ResetBootstrapState() if the application was already bootstrapped.
|
||
*/
|
||
bootstrap(): void
|
||
/**
|
||
* ResetBootstrapState takes care for releasing initialized app resources
|
||
* (eg. closing db connections).
|
||
*/
|
||
resetBootstrapState(): void
|
||
/**
|
||
* CreateBackup creates a new backup of the current app pb_data directory.
|
||
*
|
||
* Backups can be stored on S3 if it is configured in app.Settings().Backups.
|
||
*
|
||
* Please refer to the godoc of the specific core.App implementation
|
||
* for details on the backup procedures.
|
||
*/
|
||
createBackup(ctx: context.Context, name: string): void
|
||
/**
|
||
* RestoreBackup restores the backup with the specified name and restarts
|
||
* the current running application process.
|
||
*
|
||
* The safely perform the restore it is recommended to have free disk space
|
||
* for at least 2x the size of the restored pb_data backup.
|
||
*
|
||
* Please refer to the godoc of the specific core.App implementation
|
||
* for details on the restore procedures.
|
||
*
|
||
* NB! This feature is experimental and currently is expected to work only on UNIX based systems.
|
||
*/
|
||
restoreBackup(ctx: context.Context, name: string): void
|
||
/**
|
||
* Restart restarts the current running application process.
|
||
*
|
||
* Currently it is relying on execve so it is supported only on UNIX based systems.
|
||
*/
|
||
restart(): void
|
||
/**
|
||
* OnBeforeBootstrap hook is triggered before initializing the main
|
||
* application resources (eg. before db open and initial settings load).
|
||
*/
|
||
onBeforeBootstrap(): (hook.Hook<BootstrapEvent | undefined> | undefined)
|
||
/**
|
||
* OnAfterBootstrap hook is triggered after initializing the main
|
||
* application resources (eg. after db open and initial settings load).
|
||
*/
|
||
onAfterBootstrap(): (hook.Hook<BootstrapEvent | undefined> | undefined)
|
||
/**
|
||
* OnBeforeServe hook is triggered before serving the internal router (echo),
|
||
* allowing you to adjust its options and attach new routes or middlewares.
|
||
*/
|
||
onBeforeServe(): (hook.Hook<ServeEvent | undefined> | undefined)
|
||
/**
|
||
* OnBeforeApiError hook is triggered right before sending an error API
|
||
* response to the client, allowing you to further modify the error data
|
||
* or to return a completely different API response.
|
||
*/
|
||
onBeforeApiError(): (hook.Hook<ApiErrorEvent | undefined> | undefined)
|
||
/**
|
||
* OnAfterApiError hook is triggered right after sending an error API
|
||
* response to the client.
|
||
* It could be used to log the final API error in external services.
|
||
*/
|
||
onAfterApiError(): (hook.Hook<ApiErrorEvent | undefined> | undefined)
|
||
/**
|
||
* OnTerminate hook is triggered when the app is in the process
|
||
* of being terminated (eg. on SIGTERM signal).
|
||
*/
|
||
onTerminate(): (hook.Hook<TerminateEvent | undefined> | undefined)
|
||
/**
|
||
* OnModelBeforeCreate hook is triggered before inserting a new
|
||
* entry in the DB, allowing you to modify or validate the stored data.
|
||
*
|
||
* If the optional "tags" list (table names and/or the Collection id for Record models)
|
||
* is specified, then all event handlers registered via the created hook
|
||
* will be triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onModelBeforeCreate(...tags: string[]): (hook.TaggedHook<ModelEvent | undefined> | undefined)
|
||
/**
|
||
* OnModelAfterCreate hook is triggered after successfully
|
||
* inserting a new entry in the DB.
|
||
*
|
||
* If the optional "tags" list (table names and/or the Collection id for Record models)
|
||
* is specified, then all event handlers registered via the created hook
|
||
* will be triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onModelAfterCreate(...tags: string[]): (hook.TaggedHook<ModelEvent | undefined> | undefined)
|
||
/**
|
||
* OnModelBeforeUpdate hook is triggered before updating existing
|
||
* entry in the DB, allowing you to modify or validate the stored data.
|
||
*
|
||
* If the optional "tags" list (table names and/or the Collection id for Record models)
|
||
* is specified, then all event handlers registered via the created hook
|
||
* will be triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onModelBeforeUpdate(...tags: string[]): (hook.TaggedHook<ModelEvent | undefined> | undefined)
|
||
/**
|
||
* OnModelAfterUpdate hook is triggered after successfully updating
|
||
* existing entry in the DB.
|
||
*
|
||
* If the optional "tags" list (table names and/or the Collection id for Record models)
|
||
* is specified, then all event handlers registered via the created hook
|
||
* will be triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onModelAfterUpdate(...tags: string[]): (hook.TaggedHook<ModelEvent | undefined> | undefined)
|
||
/**
|
||
* OnModelBeforeDelete hook is triggered before deleting an
|
||
* existing entry from the DB.
|
||
*
|
||
* If the optional "tags" list (table names and/or the Collection id for Record models)
|
||
* is specified, then all event handlers registered via the created hook
|
||
* will be triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onModelBeforeDelete(...tags: string[]): (hook.TaggedHook<ModelEvent | undefined> | undefined)
|
||
/**
|
||
* OnModelAfterDelete hook is triggered after successfully deleting an
|
||
* existing entry from the DB.
|
||
*
|
||
* If the optional "tags" list (table names and/or the Collection id for Record models)
|
||
* is specified, then all event handlers registered via the created hook
|
||
* will be triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onModelAfterDelete(...tags: string[]): (hook.TaggedHook<ModelEvent | undefined> | undefined)
|
||
/**
|
||
* OnMailerBeforeAdminResetPasswordSend hook is triggered right
|
||
* before sending a password reset email to an admin, allowing you
|
||
* to inspect and customize the email message that is being sent.
|
||
*/
|
||
onMailerBeforeAdminResetPasswordSend(): (hook.Hook<MailerAdminEvent | undefined> | undefined)
|
||
/**
|
||
* OnMailerAfterAdminResetPasswordSend hook is triggered after
|
||
* admin password reset email was successfully sent.
|
||
*/
|
||
onMailerAfterAdminResetPasswordSend(): (hook.Hook<MailerAdminEvent | undefined> | undefined)
|
||
/**
|
||
* OnMailerBeforeRecordResetPasswordSend hook is triggered right
|
||
* before sending a password reset email to an auth record, allowing
|
||
* you to inspect and customize the email message that is being sent.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onMailerBeforeRecordResetPasswordSend(...tags: string[]): (hook.TaggedHook<MailerRecordEvent | undefined> | undefined)
|
||
/**
|
||
* OnMailerAfterRecordResetPasswordSend hook is triggered after
|
||
* an auth record password reset email was successfully sent.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onMailerAfterRecordResetPasswordSend(...tags: string[]): (hook.TaggedHook<MailerRecordEvent | undefined> | undefined)
|
||
/**
|
||
* OnMailerBeforeRecordVerificationSend hook is triggered right
|
||
* before sending a verification email to an auth record, allowing
|
||
* you to inspect and customize the email message that is being sent.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onMailerBeforeRecordVerificationSend(...tags: string[]): (hook.TaggedHook<MailerRecordEvent | undefined> | undefined)
|
||
/**
|
||
* OnMailerAfterRecordVerificationSend hook is triggered after a
|
||
* verification email was successfully sent to an auth record.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onMailerAfterRecordVerificationSend(...tags: string[]): (hook.TaggedHook<MailerRecordEvent | undefined> | undefined)
|
||
/**
|
||
* OnMailerBeforeRecordChangeEmailSend hook is triggered right before
|
||
* sending a confirmation new address email to an auth record, allowing
|
||
* you to inspect and customize the email message that is being sent.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onMailerBeforeRecordChangeEmailSend(...tags: string[]): (hook.TaggedHook<MailerRecordEvent | undefined> | undefined)
|
||
/**
|
||
* OnMailerAfterRecordChangeEmailSend hook is triggered after a
|
||
* verification email was successfully sent to an auth record.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onMailerAfterRecordChangeEmailSend(...tags: string[]): (hook.TaggedHook<MailerRecordEvent | undefined> | undefined)
|
||
/**
|
||
* OnRealtimeConnectRequest hook is triggered right before establishing
|
||
* the SSE client connection.
|
||
*/
|
||
onRealtimeConnectRequest(): (hook.Hook<RealtimeConnectEvent | undefined> | undefined)
|
||
/**
|
||
* OnRealtimeDisconnectRequest hook is triggered on disconnected/interrupted
|
||
* SSE client connection.
|
||
*/
|
||
onRealtimeDisconnectRequest(): (hook.Hook<RealtimeDisconnectEvent | undefined> | undefined)
|
||
/**
|
||
* OnRealtimeBeforeMessage hook is triggered right before sending
|
||
* an SSE message to a client.
|
||
*
|
||
* Returning [hook.StopPropagation] will prevent sending the message.
|
||
* Returning any other non-nil error will close the realtime connection.
|
||
*/
|
||
onRealtimeBeforeMessageSend(): (hook.Hook<RealtimeMessageEvent | undefined> | undefined)
|
||
/**
|
||
* OnRealtimeBeforeMessage hook is triggered right after sending
|
||
* an SSE message to a client.
|
||
*/
|
||
onRealtimeAfterMessageSend(): (hook.Hook<RealtimeMessageEvent | undefined> | undefined)
|
||
/**
|
||
* OnRealtimeBeforeSubscribeRequest hook is triggered before changing
|
||
* the client subscriptions, allowing you to further validate and
|
||
* modify the submitted change.
|
||
*/
|
||
onRealtimeBeforeSubscribeRequest(): (hook.Hook<RealtimeSubscribeEvent | undefined> | undefined)
|
||
/**
|
||
* OnRealtimeAfterSubscribeRequest hook is triggered after the client
|
||
* subscriptions were successfully changed.
|
||
*/
|
||
onRealtimeAfterSubscribeRequest(): (hook.Hook<RealtimeSubscribeEvent | undefined> | undefined)
|
||
/**
|
||
* OnSettingsListRequest hook is triggered on each successful
|
||
* API Settings list request.
|
||
*
|
||
* Could be used to validate or modify the response before
|
||
* returning it to the client.
|
||
*/
|
||
onSettingsListRequest(): (hook.Hook<SettingsListEvent | undefined> | undefined)
|
||
/**
|
||
* OnSettingsBeforeUpdateRequest hook is triggered before each API
|
||
* Settings update request (after request data load and before settings persistence).
|
||
*
|
||
* Could be used to additionally validate the request data or
|
||
* implement completely different persistence behavior.
|
||
*/
|
||
onSettingsBeforeUpdateRequest(): (hook.Hook<SettingsUpdateEvent | undefined> | undefined)
|
||
/**
|
||
* OnSettingsAfterUpdateRequest hook is triggered after each
|
||
* successful API Settings update request.
|
||
*/
|
||
onSettingsAfterUpdateRequest(): (hook.Hook<SettingsUpdateEvent | undefined> | undefined)
|
||
/**
|
||
* OnFileDownloadRequest hook is triggered before each API File download request.
|
||
*
|
||
* Could be used to validate or modify the file response before
|
||
* returning it to the client.
|
||
*/
|
||
onFileDownloadRequest(...tags: string[]): (hook.TaggedHook<FileDownloadEvent | undefined> | undefined)
|
||
/**
|
||
* OnFileBeforeTokenRequest hook is triggered before each file
|
||
* token API request.
|
||
*
|
||
* If no token or model was submitted, e.Model and e.Token will be empty,
|
||
* allowing you to implement your own custom model file auth implementation.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onFileBeforeTokenRequest(...tags: string[]): (hook.TaggedHook<FileTokenEvent | undefined> | undefined)
|
||
/**
|
||
* OnFileAfterTokenRequest hook is triggered after each
|
||
* successful file token API request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onFileAfterTokenRequest(...tags: string[]): (hook.TaggedHook<FileTokenEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminsListRequest hook is triggered on each API Admins list request.
|
||
*
|
||
* Could be used to validate or modify the response before returning it to the client.
|
||
*/
|
||
onAdminsListRequest(): (hook.Hook<AdminsListEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminViewRequest hook is triggered on each API Admin view request.
|
||
*
|
||
* Could be used to validate or modify the response before returning it to the client.
|
||
*/
|
||
onAdminViewRequest(): (hook.Hook<AdminViewEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminBeforeCreateRequest hook is triggered before each API
|
||
* Admin create request (after request data load and before model persistence).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different persistence behavior.
|
||
*/
|
||
onAdminBeforeCreateRequest(): (hook.Hook<AdminCreateEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminAfterCreateRequest hook is triggered after each
|
||
* successful API Admin create request.
|
||
*/
|
||
onAdminAfterCreateRequest(): (hook.Hook<AdminCreateEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminBeforeUpdateRequest hook is triggered before each API
|
||
* Admin update request (after request data load and before model persistence).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different persistence behavior.
|
||
*/
|
||
onAdminBeforeUpdateRequest(): (hook.Hook<AdminUpdateEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminAfterUpdateRequest hook is triggered after each
|
||
* successful API Admin update request.
|
||
*/
|
||
onAdminAfterUpdateRequest(): (hook.Hook<AdminUpdateEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminBeforeDeleteRequest hook is triggered before each API
|
||
* Admin delete request (after model load and before actual deletion).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different delete behavior.
|
||
*/
|
||
onAdminBeforeDeleteRequest(): (hook.Hook<AdminDeleteEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminAfterDeleteRequest hook is triggered after each
|
||
* successful API Admin delete request.
|
||
*/
|
||
onAdminAfterDeleteRequest(): (hook.Hook<AdminDeleteEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminAuthRequest hook is triggered on each successful API Admin
|
||
* authentication request (sign-in, token refresh, etc.).
|
||
*
|
||
* Could be used to additionally validate or modify the
|
||
* authenticated admin data and token.
|
||
*/
|
||
onAdminAuthRequest(): (hook.Hook<AdminAuthEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminBeforeAuthWithPasswordRequest hook is triggered before each Admin
|
||
* auth with password API request (after request data load and before password validation).
|
||
*
|
||
* Could be used to implement for example a custom password validation
|
||
* or to locate a different Admin identity (by assigning [AdminAuthWithPasswordEvent.Admin]).
|
||
*/
|
||
onAdminBeforeAuthWithPasswordRequest(): (hook.Hook<AdminAuthWithPasswordEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminAfterAuthWithPasswordRequest hook is triggered after each
|
||
* successful Admin auth with password API request.
|
||
*/
|
||
onAdminAfterAuthWithPasswordRequest(): (hook.Hook<AdminAuthWithPasswordEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminBeforeAuthRefreshRequest hook is triggered before each Admin
|
||
* auth refresh API request (right before generating a new auth token).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different auth refresh behavior.
|
||
*/
|
||
onAdminBeforeAuthRefreshRequest(): (hook.Hook<AdminAuthRefreshEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminAfterAuthRefreshRequest hook is triggered after each
|
||
* successful auth refresh API request (right after generating a new auth token).
|
||
*/
|
||
onAdminAfterAuthRefreshRequest(): (hook.Hook<AdminAuthRefreshEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminBeforeRequestPasswordResetRequest hook is triggered before each Admin
|
||
* request password reset API request (after request data load and before sending the reset email).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different password reset behavior.
|
||
*/
|
||
onAdminBeforeRequestPasswordResetRequest(): (hook.Hook<AdminRequestPasswordResetEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminAfterRequestPasswordResetRequest hook is triggered after each
|
||
* successful request password reset API request.
|
||
*/
|
||
onAdminAfterRequestPasswordResetRequest(): (hook.Hook<AdminRequestPasswordResetEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminBeforeConfirmPasswordResetRequest hook is triggered before each Admin
|
||
* confirm password reset API request (after request data load and before persistence).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different persistence behavior.
|
||
*/
|
||
onAdminBeforeConfirmPasswordResetRequest(): (hook.Hook<AdminConfirmPasswordResetEvent | undefined> | undefined)
|
||
/**
|
||
* OnAdminAfterConfirmPasswordResetRequest hook is triggered after each
|
||
* successful confirm password reset API request.
|
||
*/
|
||
onAdminAfterConfirmPasswordResetRequest(): (hook.Hook<AdminConfirmPasswordResetEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAuthRequest hook is triggered on each successful API
|
||
* record authentication request (sign-in, token refresh, etc.).
|
||
*
|
||
* Could be used to additionally validate or modify the authenticated
|
||
* record data and token.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAuthRequest(...tags: string[]): (hook.TaggedHook<RecordAuthEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeAuthWithPasswordRequest hook is triggered before each Record
|
||
* auth with password API request (after request data load and before password validation).
|
||
*
|
||
* Could be used to implement for example a custom password validation
|
||
* or to locate a different Record model (by reassigning [RecordAuthWithPasswordEvent.Record]).
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeAuthWithPasswordRequest(...tags: string[]): (hook.TaggedHook<RecordAuthWithPasswordEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterAuthWithPasswordRequest hook is triggered after each
|
||
* successful Record auth with password API request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterAuthWithPasswordRequest(...tags: string[]): (hook.TaggedHook<RecordAuthWithPasswordEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeAuthWithOAuth2Request hook is triggered before each Record
|
||
* OAuth2 sign-in/sign-up API request (after token exchange and before external provider linking).
|
||
*
|
||
* If the [RecordAuthWithOAuth2Event.Record] is not set, then the OAuth2
|
||
* request will try to create a new auth Record.
|
||
*
|
||
* To assign or link a different existing record model you can
|
||
* change the [RecordAuthWithOAuth2Event.Record] field.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeAuthWithOAuth2Request(...tags: string[]): (hook.TaggedHook<RecordAuthWithOAuth2Event | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterAuthWithOAuth2Request hook is triggered after each
|
||
* successful Record OAuth2 API request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterAuthWithOAuth2Request(...tags: string[]): (hook.TaggedHook<RecordAuthWithOAuth2Event | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeAuthRefreshRequest hook is triggered before each Record
|
||
* auth refresh API request (right before generating a new auth token).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different auth refresh behavior.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeAuthRefreshRequest(...tags: string[]): (hook.TaggedHook<RecordAuthRefreshEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterAuthRefreshRequest hook is triggered after each
|
||
* successful auth refresh API request (right after generating a new auth token).
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterAuthRefreshRequest(...tags: string[]): (hook.TaggedHook<RecordAuthRefreshEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordListExternalAuthsRequest hook is triggered on each API record external auths list request.
|
||
*
|
||
* Could be used to validate or modify the response before returning it to the client.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordListExternalAuthsRequest(...tags: string[]): (hook.TaggedHook<RecordListExternalAuthsEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeUnlinkExternalAuthRequest hook is triggered before each API record
|
||
* external auth unlink request (after models load and before the actual relation deletion).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different delete behavior.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeUnlinkExternalAuthRequest(...tags: string[]): (hook.TaggedHook<RecordUnlinkExternalAuthEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterUnlinkExternalAuthRequest hook is triggered after each
|
||
* successful API record external auth unlink request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterUnlinkExternalAuthRequest(...tags: string[]): (hook.TaggedHook<RecordUnlinkExternalAuthEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeRequestPasswordResetRequest hook is triggered before each Record
|
||
* request password reset API request (after request data load and before sending the reset email).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different password reset behavior.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeRequestPasswordResetRequest(...tags: string[]): (hook.TaggedHook<RecordRequestPasswordResetEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterRequestPasswordResetRequest hook is triggered after each
|
||
* successful request password reset API request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterRequestPasswordResetRequest(...tags: string[]): (hook.TaggedHook<RecordRequestPasswordResetEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeConfirmPasswordResetRequest hook is triggered before each Record
|
||
* confirm password reset API request (after request data load and before persistence).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different persistence behavior.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeConfirmPasswordResetRequest(...tags: string[]): (hook.TaggedHook<RecordConfirmPasswordResetEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterConfirmPasswordResetRequest hook is triggered after each
|
||
* successful confirm password reset API request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterConfirmPasswordResetRequest(...tags: string[]): (hook.TaggedHook<RecordConfirmPasswordResetEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeRequestVerificationRequest hook is triggered before each Record
|
||
* request verification API request (after request data load and before sending the verification email).
|
||
*
|
||
* Could be used to additionally validate the loaded request data or implement
|
||
* completely different verification behavior.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeRequestVerificationRequest(...tags: string[]): (hook.TaggedHook<RecordRequestVerificationEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterRequestVerificationRequest hook is triggered after each
|
||
* successful request verification API request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterRequestVerificationRequest(...tags: string[]): (hook.TaggedHook<RecordRequestVerificationEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeConfirmVerificationRequest hook is triggered before each Record
|
||
* confirm verification API request (after request data load and before persistence).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different persistence behavior.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeConfirmVerificationRequest(...tags: string[]): (hook.TaggedHook<RecordConfirmVerificationEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterConfirmVerificationRequest hook is triggered after each
|
||
* successful confirm verification API request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterConfirmVerificationRequest(...tags: string[]): (hook.TaggedHook<RecordConfirmVerificationEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeRequestEmailChangeRequest hook is triggered before each Record request email change API request
|
||
* (after request data load and before sending the email link to confirm the change).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different request email change behavior.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeRequestEmailChangeRequest(...tags: string[]): (hook.TaggedHook<RecordRequestEmailChangeEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterRequestEmailChangeRequest hook is triggered after each
|
||
* successful request email change API request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterRequestEmailChangeRequest(...tags: string[]): (hook.TaggedHook<RecordRequestEmailChangeEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeConfirmEmailChangeRequest hook is triggered before each Record
|
||
* confirm email change API request (after request data load and before persistence).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different persistence behavior.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeConfirmEmailChangeRequest(...tags: string[]): (hook.TaggedHook<RecordConfirmEmailChangeEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterConfirmEmailChangeRequest hook is triggered after each
|
||
* successful confirm email change API request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterConfirmEmailChangeRequest(...tags: string[]): (hook.TaggedHook<RecordConfirmEmailChangeEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordsListRequest hook is triggered on each API Records list request.
|
||
*
|
||
* Could be used to validate or modify the response before returning it to the client.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordsListRequest(...tags: string[]): (hook.TaggedHook<RecordsListEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordViewRequest hook is triggered on each API Record view request.
|
||
*
|
||
* Could be used to validate or modify the response before returning it to the client.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordViewRequest(...tags: string[]): (hook.TaggedHook<RecordViewEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeCreateRequest hook is triggered before each API Record
|
||
* create request (after request data load and before model persistence).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different persistence behavior.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeCreateRequest(...tags: string[]): (hook.TaggedHook<RecordCreateEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterCreateRequest hook is triggered after each
|
||
* successful API Record create request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterCreateRequest(...tags: string[]): (hook.TaggedHook<RecordCreateEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeUpdateRequest hook is triggered before each API Record
|
||
* update request (after request data load and before model persistence).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different persistence behavior.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeUpdateRequest(...tags: string[]): (hook.TaggedHook<RecordUpdateEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterUpdateRequest hook is triggered after each
|
||
* successful API Record update request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterUpdateRequest(...tags: string[]): (hook.TaggedHook<RecordUpdateEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordBeforeDeleteRequest hook is triggered before each API Record
|
||
* delete request (after model load and before actual deletion).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different delete behavior.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordBeforeDeleteRequest(...tags: string[]): (hook.TaggedHook<RecordDeleteEvent | undefined> | undefined)
|
||
/**
|
||
* OnRecordAfterDeleteRequest hook is triggered after each
|
||
* successful API Record delete request.
|
||
*
|
||
* If the optional "tags" list (Collection ids or names) is specified,
|
||
* then all event handlers registered via the created hook will be
|
||
* triggered and called only if their event data origin matches the tags.
|
||
*/
|
||
onRecordAfterDeleteRequest(...tags: string[]): (hook.TaggedHook<RecordDeleteEvent | undefined> | undefined)
|
||
/**
|
||
* OnCollectionsListRequest hook is triggered on each API Collections list request.
|
||
*
|
||
* Could be used to validate or modify the response before returning it to the client.
|
||
*/
|
||
onCollectionsListRequest(): (hook.Hook<CollectionsListEvent | undefined> | undefined)
|
||
/**
|
||
* OnCollectionViewRequest hook is triggered on each API Collection view request.
|
||
*
|
||
* Could be used to validate or modify the response before returning it to the client.
|
||
*/
|
||
onCollectionViewRequest(): (hook.Hook<CollectionViewEvent | undefined> | undefined)
|
||
/**
|
||
* OnCollectionBeforeCreateRequest hook is triggered before each API Collection
|
||
* create request (after request data load and before model persistence).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different persistence behavior.
|
||
*/
|
||
onCollectionBeforeCreateRequest(): (hook.Hook<CollectionCreateEvent | undefined> | undefined)
|
||
/**
|
||
* OnCollectionAfterCreateRequest hook is triggered after each
|
||
* successful API Collection create request.
|
||
*/
|
||
onCollectionAfterCreateRequest(): (hook.Hook<CollectionCreateEvent | undefined> | undefined)
|
||
/**
|
||
* OnCollectionBeforeUpdateRequest hook is triggered before each API Collection
|
||
* update request (after request data load and before model persistence).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different persistence behavior.
|
||
*/
|
||
onCollectionBeforeUpdateRequest(): (hook.Hook<CollectionUpdateEvent | undefined> | undefined)
|
||
/**
|
||
* OnCollectionAfterUpdateRequest hook is triggered after each
|
||
* successful API Collection update request.
|
||
*/
|
||
onCollectionAfterUpdateRequest(): (hook.Hook<CollectionUpdateEvent | undefined> | undefined)
|
||
/**
|
||
* OnCollectionBeforeDeleteRequest hook is triggered before each API
|
||
* Collection delete request (after model load and before actual deletion).
|
||
*
|
||
* Could be used to additionally validate the request data or implement
|
||
* completely different delete behavior.
|
||
*/
|
||
onCollectionBeforeDeleteRequest(): (hook.Hook<CollectionDeleteEvent | undefined> | undefined)
|
||
/**
|
||
* OnCollectionAfterDeleteRequest hook is triggered after each
|
||
* successful API Collection delete request.
|
||
*/
|
||
onCollectionAfterDeleteRequest(): (hook.Hook<CollectionDeleteEvent | undefined> | undefined)
|
||
/**
|
||
* OnCollectionsBeforeImportRequest hook is triggered before each API
|
||
* collections import request (after request data load and before the actual import).
|
||
*
|
||
* Could be used to additionally validate the imported collections or
|
||
* to implement completely different import behavior.
|
||
*/
|
||
onCollectionsBeforeImportRequest(): (hook.Hook<CollectionsImportEvent | undefined> | undefined)
|
||
/**
|
||
* OnCollectionsAfterImportRequest hook is triggered after each
|
||
* successful API collections import request.
|
||
*/
|
||
onCollectionsAfterImportRequest(): (hook.Hook<CollectionsImportEvent | undefined> | undefined)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package cobra is a commander providing a simple interface to create powerful modern CLI interfaces.
|
||
* In addition to providing an interface, Cobra simultaneously provides a controller to organize your application code.
|
||
*/
|
||
namespace cobra {
|
||
interface Command {
|
||
/**
|
||
* GenBashCompletion generates bash completion file and writes to the passed writer.
|
||
*/
|
||
genBashCompletion(w: io.Writer): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenBashCompletionFile generates bash completion file.
|
||
*/
|
||
genBashCompletionFile(filename: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenBashCompletionFileV2 generates Bash completion version 2.
|
||
*/
|
||
genBashCompletionFileV2(filename: string, includeDesc: boolean): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenBashCompletionV2 generates Bash completion file version 2
|
||
* and writes it to the passed writer.
|
||
*/
|
||
genBashCompletionV2(w: io.Writer, includeDesc: boolean): void
|
||
}
|
||
// @ts-ignore
|
||
import flag = pflag
|
||
/**
|
||
* Command is just that, a command for your application.
|
||
* E.g. 'go run ...' - 'run' is the command. Cobra requires
|
||
* you to define the usage and description as part of your command
|
||
* definition to ensure usability.
|
||
*/
|
||
interface Command {
|
||
/**
|
||
* Use is the one-line usage message.
|
||
* Recommended syntax is as follows:
|
||
* ```
|
||
* [ ] identifies an optional argument. Arguments that are not enclosed in brackets are required.
|
||
* ... indicates that you can specify multiple values for the previous argument.
|
||
* | indicates mutually exclusive information. You can use the argument to the left of the separator or the
|
||
* argument to the right of the separator. You cannot use both arguments in a single use of the command.
|
||
* { } delimits a set of mutually exclusive arguments when one of the arguments is required. If the arguments are
|
||
* optional, they are enclosed in brackets ([ ]).
|
||
* ```
|
||
* Example: add [-F file | -D dir]... [-f format] profile
|
||
*/
|
||
use: string
|
||
/**
|
||
* Aliases is an array of aliases that can be used instead of the first word in Use.
|
||
*/
|
||
aliases: Array<string>
|
||
/**
|
||
* SuggestFor is an array of command names for which this command will be suggested -
|
||
* similar to aliases but only suggests.
|
||
*/
|
||
suggestFor: Array<string>
|
||
/**
|
||
* Short is the short description shown in the 'help' output.
|
||
*/
|
||
short: string
|
||
/**
|
||
* The group id under which this subcommand is grouped in the 'help' output of its parent.
|
||
*/
|
||
groupID: string
|
||
/**
|
||
* Long is the long message shown in the 'help <this-command>' output.
|
||
*/
|
||
long: string
|
||
/**
|
||
* Example is examples of how to use the command.
|
||
*/
|
||
example: string
|
||
/**
|
||
* ValidArgs is list of all valid non-flag arguments that are accepted in shell completions
|
||
*/
|
||
validArgs: Array<string>
|
||
/**
|
||
* ValidArgsFunction is an optional function that provides valid non-flag arguments for shell completion.
|
||
* It is a dynamic version of using ValidArgs.
|
||
* Only one of ValidArgs and ValidArgsFunction can be used for a command.
|
||
*/
|
||
validArgsFunction: (cmd: Command, args: Array<string>, toComplete: string) => [Array<string>, ShellCompDirective]
|
||
/**
|
||
* Expected arguments
|
||
*/
|
||
args: PositionalArgs
|
||
/**
|
||
* ArgAliases is List of aliases for ValidArgs.
|
||
* These are not suggested to the user in the shell completion,
|
||
* but accepted if entered manually.
|
||
*/
|
||
argAliases: Array<string>
|
||
/**
|
||
* BashCompletionFunction is custom bash functions used by the legacy bash autocompletion generator.
|
||
* For portability with other shells, it is recommended to instead use ValidArgsFunction
|
||
*/
|
||
bashCompletionFunction: string
|
||
/**
|
||
* Deprecated defines, if this command is deprecated and should print this string when used.
|
||
*/
|
||
deprecated: string
|
||
/**
|
||
* Annotations are key/value pairs that can be used by applications to identify or
|
||
* group commands.
|
||
*/
|
||
annotations: _TygojaDict
|
||
/**
|
||
* Version defines the version for this command. If this value is non-empty and the command does not
|
||
* define a "version" flag, a "version" boolean flag will be added to the command and, if specified,
|
||
* will print content of the "Version" variable. A shorthand "v" flag will also be added if the
|
||
* command does not define one.
|
||
*/
|
||
version: string
|
||
/**
|
||
* The *Run functions are executed in the following order:
|
||
* ```
|
||
* * PersistentPreRun()
|
||
* * PreRun()
|
||
* * Run()
|
||
* * PostRun()
|
||
* * PersistentPostRun()
|
||
* ```
|
||
* All functions get the same args, the arguments after the command name.
|
||
*
|
||
* PersistentPreRun: children of this command will inherit and execute.
|
||
*/
|
||
persistentPreRun: (cmd: Command, args: Array<string>) => void
|
||
/**
|
||
* PersistentPreRunE: PersistentPreRun but returns an error.
|
||
*/
|
||
persistentPreRunE: (cmd: Command, args: Array<string>) => void
|
||
/**
|
||
* PreRun: children of this command will not inherit.
|
||
*/
|
||
preRun: (cmd: Command, args: Array<string>) => void
|
||
/**
|
||
* PreRunE: PreRun but returns an error.
|
||
*/
|
||
preRunE: (cmd: Command, args: Array<string>) => void
|
||
/**
|
||
* Run: Typically the actual work function. Most commands will only implement this.
|
||
*/
|
||
run: (cmd: Command, args: Array<string>) => void
|
||
/**
|
||
* RunE: Run but returns an error.
|
||
*/
|
||
runE: (cmd: Command, args: Array<string>) => void
|
||
/**
|
||
* PostRun: run after the Run command.
|
||
*/
|
||
postRun: (cmd: Command, args: Array<string>) => void
|
||
/**
|
||
* PostRunE: PostRun but returns an error.
|
||
*/
|
||
postRunE: (cmd: Command, args: Array<string>) => void
|
||
/**
|
||
* PersistentPostRun: children of this command will inherit and execute after PostRun.
|
||
*/
|
||
persistentPostRun: (cmd: Command, args: Array<string>) => void
|
||
/**
|
||
* PersistentPostRunE: PersistentPostRun but returns an error.
|
||
*/
|
||
persistentPostRunE: (cmd: Command, args: Array<string>) => void
|
||
/**
|
||
* FParseErrWhitelist flag parse errors to be ignored
|
||
*/
|
||
fParseErrWhitelist: FParseErrWhitelist
|
||
/**
|
||
* CompletionOptions is a set of options to control the handling of shell completion
|
||
*/
|
||
completionOptions: CompletionOptions
|
||
/**
|
||
* TraverseChildren parses flags on all parents before executing child command.
|
||
*/
|
||
traverseChildren: boolean
|
||
/**
|
||
* Hidden defines, if this command is hidden and should NOT show up in the list of available commands.
|
||
*/
|
||
hidden: boolean
|
||
/**
|
||
* SilenceErrors is an option to quiet errors down stream.
|
||
*/
|
||
silenceErrors: boolean
|
||
/**
|
||
* SilenceUsage is an option to silence usage when an error occurs.
|
||
*/
|
||
silenceUsage: boolean
|
||
/**
|
||
* DisableFlagParsing disables the flag parsing.
|
||
* If this is true all flags will be passed to the command as arguments.
|
||
*/
|
||
disableFlagParsing: boolean
|
||
/**
|
||
* DisableAutoGenTag defines, if gen tag ("Auto generated by spf13/cobra...")
|
||
* will be printed by generating docs for this command.
|
||
*/
|
||
disableAutoGenTag: boolean
|
||
/**
|
||
* DisableFlagsInUseLine will disable the addition of [flags] to the usage
|
||
* line of a command when printing help or generating docs
|
||
*/
|
||
disableFlagsInUseLine: boolean
|
||
/**
|
||
* DisableSuggestions disables the suggestions based on Levenshtein distance
|
||
* that go along with 'unknown command' messages.
|
||
*/
|
||
disableSuggestions: boolean
|
||
/**
|
||
* SuggestionsMinimumDistance defines minimum levenshtein distance to display suggestions.
|
||
* Must be > 0.
|
||
*/
|
||
suggestionsMinimumDistance: number
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Context returns underlying command context. If command was executed
|
||
* with ExecuteContext or the context was set with SetContext, the
|
||
* previously set context will be returned. Otherwise, nil is returned.
|
||
*
|
||
* Notice that a call to Execute and ExecuteC will replace a nil context of
|
||
* a command with a context.Background, so a background context will be
|
||
* returned by Context after one of these functions has been called.
|
||
*/
|
||
context(): context.Context
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetContext sets context for the command. This context will be overwritten by
|
||
* Command.ExecuteContext or Command.ExecuteContextC.
|
||
*/
|
||
setContext(ctx: context.Context): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetArgs sets arguments for the command. It is set to os.Args[1:] by default, if desired, can be overridden
|
||
* particularly useful when testing.
|
||
*/
|
||
setArgs(a: Array<string>): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetOutput sets the destination for usage and error messages.
|
||
* If output is nil, os.Stderr is used.
|
||
* Deprecated: Use SetOut and/or SetErr instead
|
||
*/
|
||
setOutput(output: io.Writer): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetOut sets the destination for usage messages.
|
||
* If newOut is nil, os.Stdout is used.
|
||
*/
|
||
setOut(newOut: io.Writer): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetErr sets the destination for error messages.
|
||
* If newErr is nil, os.Stderr is used.
|
||
*/
|
||
setErr(newErr: io.Writer): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetIn sets the source for input data
|
||
* If newIn is nil, os.Stdin is used.
|
||
*/
|
||
setIn(newIn: io.Reader): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetUsageFunc sets usage function. Usage can be defined by application.
|
||
*/
|
||
setUsageFunc(f: (_arg0: Command) => void): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetUsageTemplate sets usage template. Can be defined by Application.
|
||
*/
|
||
setUsageTemplate(s: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetFlagErrorFunc sets a function to generate an error when flag parsing
|
||
* fails.
|
||
*/
|
||
setFlagErrorFunc(f: (_arg0: Command, _arg1: Error) => void): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetHelpFunc sets help function. Can be defined by Application.
|
||
*/
|
||
setHelpFunc(f: (_arg0: Command, _arg1: Array<string>) => void): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetHelpCommand sets help command.
|
||
*/
|
||
setHelpCommand(cmd: Command): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetHelpCommandGroupID sets the group id of the help command.
|
||
*/
|
||
setHelpCommandGroupID(groupID: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetCompletionCommandGroupID sets the group id of the completion command.
|
||
*/
|
||
setCompletionCommandGroupID(groupID: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetHelpTemplate sets help template to be used. Application can use it to set custom template.
|
||
*/
|
||
setHelpTemplate(s: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetVersionTemplate sets version template to be used. Application can use it to set custom template.
|
||
*/
|
||
setVersionTemplate(s: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SetGlobalNormalizationFunc sets a normalization function to all flag sets and also to child commands.
|
||
* The user should not have a cyclic dependency on commands.
|
||
*/
|
||
setGlobalNormalizationFunc(n: (f: flag.FlagSet, name: string) => flag.NormalizedName): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* OutOrStdout returns output to stdout.
|
||
*/
|
||
outOrStdout(): io.Writer
|
||
}
|
||
interface Command {
|
||
/**
|
||
* OutOrStderr returns output to stderr
|
||
*/
|
||
outOrStderr(): io.Writer
|
||
}
|
||
interface Command {
|
||
/**
|
||
* ErrOrStderr returns output to stderr
|
||
*/
|
||
errOrStderr(): io.Writer
|
||
}
|
||
interface Command {
|
||
/**
|
||
* InOrStdin returns input to stdin
|
||
*/
|
||
inOrStdin(): io.Reader
|
||
}
|
||
interface Command {
|
||
/**
|
||
* UsageFunc returns either the function set by SetUsageFunc for this command
|
||
* or a parent, or it returns a default usage function.
|
||
*/
|
||
usageFunc(): (_arg0: Command) => void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Usage puts out the usage for the command.
|
||
* Used when a user provides invalid input.
|
||
* Can be defined by user by overriding UsageFunc.
|
||
*/
|
||
usage(): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HelpFunc returns either the function set by SetHelpFunc for this command
|
||
* or a parent, or it returns a function with default help behavior.
|
||
*/
|
||
helpFunc(): (_arg0: Command, _arg1: Array<string>) => void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Help puts out the help for the command.
|
||
* Used when a user calls help [command].
|
||
* Can be defined by user by overriding HelpFunc.
|
||
*/
|
||
help(): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* UsageString returns usage string.
|
||
*/
|
||
usageString(): string
|
||
}
|
||
interface Command {
|
||
/**
|
||
* FlagErrorFunc returns either the function set by SetFlagErrorFunc for this
|
||
* command or a parent, or it returns a function which returns the original
|
||
* error.
|
||
*/
|
||
flagErrorFunc(): (_arg0: Command, _arg1: Error) => void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* UsagePadding return padding for the usage.
|
||
*/
|
||
usagePadding(): number
|
||
}
|
||
interface Command {
|
||
/**
|
||
* CommandPathPadding return padding for the command path.
|
||
*/
|
||
commandPathPadding(): number
|
||
}
|
||
interface Command {
|
||
/**
|
||
* NamePadding returns padding for the name.
|
||
*/
|
||
namePadding(): number
|
||
}
|
||
interface Command {
|
||
/**
|
||
* UsageTemplate returns usage template for the command.
|
||
*/
|
||
usageTemplate(): string
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HelpTemplate return help template for the command.
|
||
*/
|
||
helpTemplate(): string
|
||
}
|
||
interface Command {
|
||
/**
|
||
* VersionTemplate return version template for the command.
|
||
*/
|
||
versionTemplate(): string
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Find the target command given the args and command tree
|
||
* Meant to be run on the highest node. Only searches down.
|
||
*/
|
||
find(args: Array<string>): [(Command | undefined), Array<string>]
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Traverse the command tree to find the command, and parse args for
|
||
* each parent.
|
||
*/
|
||
traverse(args: Array<string>): [(Command | undefined), Array<string>]
|
||
}
|
||
interface Command {
|
||
/**
|
||
* SuggestionsFor provides suggestions for the typedName.
|
||
*/
|
||
suggestionsFor(typedName: string): Array<string>
|
||
}
|
||
interface Command {
|
||
/**
|
||
* VisitParents visits all parents of the command and invokes fn on each parent.
|
||
*/
|
||
visitParents(fn: (_arg0: Command) => void): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Root finds root command.
|
||
*/
|
||
root(): (Command | undefined)
|
||
}
|
||
interface Command {
|
||
/**
|
||
* ArgsLenAtDash will return the length of c.Flags().Args at the moment
|
||
* when a -- was found during args parsing.
|
||
*/
|
||
argsLenAtDash(): number
|
||
}
|
||
interface Command {
|
||
/**
|
||
* ExecuteContext is the same as Execute(), but sets the ctx on the command.
|
||
* Retrieve ctx by calling cmd.Context() inside your *Run lifecycle or ValidArgs
|
||
* functions.
|
||
*/
|
||
executeContext(ctx: context.Context): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Execute uses the args (os.Args[1:] by default)
|
||
* and run through the command tree finding appropriate matches
|
||
* for commands and then corresponding flags.
|
||
*/
|
||
execute(): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* ExecuteContextC is the same as ExecuteC(), but sets the ctx on the command.
|
||
* Retrieve ctx by calling cmd.Context() inside your *Run lifecycle or ValidArgs
|
||
* functions.
|
||
*/
|
||
executeContextC(ctx: context.Context): (Command | undefined)
|
||
}
|
||
interface Command {
|
||
/**
|
||
* ExecuteC executes the command.
|
||
*/
|
||
executeC(): (Command | undefined)
|
||
}
|
||
interface Command {
|
||
validateArgs(args: Array<string>): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* ValidateRequiredFlags validates all required flags are present and returns an error otherwise
|
||
*/
|
||
validateRequiredFlags(): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* InitDefaultHelpFlag adds default help flag to c.
|
||
* It is called automatically by executing the c or by calling help and usage.
|
||
* If c already has help flag, it will do nothing.
|
||
*/
|
||
initDefaultHelpFlag(): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* InitDefaultVersionFlag adds default version flag to c.
|
||
* It is called automatically by executing the c.
|
||
* If c already has a version flag, it will do nothing.
|
||
* If c.Version is empty, it will do nothing.
|
||
*/
|
||
initDefaultVersionFlag(): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* InitDefaultHelpCmd adds default help command to c.
|
||
* It is called automatically by executing the c or by calling help and usage.
|
||
* If c already has help command or c has no subcommands, it will do nothing.
|
||
*/
|
||
initDefaultHelpCmd(): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* ResetCommands delete parent, subcommand and help command from c.
|
||
*/
|
||
resetCommands(): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Commands returns a sorted slice of child commands.
|
||
*/
|
||
commands(): Array<(Command | undefined)>
|
||
}
|
||
interface Command {
|
||
/**
|
||
* AddCommand adds one or more commands to this parent command.
|
||
*/
|
||
addCommand(...cmds: (Command | undefined)[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Groups returns a slice of child command groups.
|
||
*/
|
||
groups(): Array<(Group | undefined)>
|
||
}
|
||
interface Command {
|
||
/**
|
||
* AllChildCommandsHaveGroup returns if all subcommands are assigned to a group
|
||
*/
|
||
allChildCommandsHaveGroup(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* ContainsGroup return if groupID exists in the list of command groups.
|
||
*/
|
||
containsGroup(groupID: string): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* AddGroup adds one or more command groups to this parent command.
|
||
*/
|
||
addGroup(...groups: (Group | undefined)[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* RemoveCommand removes one or more commands from a parent command.
|
||
*/
|
||
removeCommand(...cmds: (Command | undefined)[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Print is a convenience method to Print to the defined output, fallback to Stderr if not set.
|
||
*/
|
||
print(...i: {
|
||
}[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Println is a convenience method to Println to the defined output, fallback to Stderr if not set.
|
||
*/
|
||
println(...i: {
|
||
}[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Printf is a convenience method to Printf to the defined output, fallback to Stderr if not set.
|
||
*/
|
||
printf(format: string, ...i: {
|
||
}[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* PrintErr is a convenience method to Print to the defined Err output, fallback to Stderr if not set.
|
||
*/
|
||
printErr(...i: {
|
||
}[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* PrintErrln is a convenience method to Println to the defined Err output, fallback to Stderr if not set.
|
||
*/
|
||
printErrln(...i: {
|
||
}[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* PrintErrf is a convenience method to Printf to the defined Err output, fallback to Stderr if not set.
|
||
*/
|
||
printErrf(format: string, ...i: {
|
||
}[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* CommandPath returns the full path to this command.
|
||
*/
|
||
commandPath(): string
|
||
}
|
||
interface Command {
|
||
/**
|
||
* UseLine puts out the full usage for a given command (including parents).
|
||
*/
|
||
useLine(): string
|
||
}
|
||
interface Command {
|
||
/**
|
||
* DebugFlags used to determine which flags have been assigned to which commands
|
||
* and which persist.
|
||
*/
|
||
debugFlags(): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Name returns the command's name: the first word in the use line.
|
||
*/
|
||
name(): string
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasAlias determines if a given string is an alias of the command.
|
||
*/
|
||
hasAlias(s: string): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* CalledAs returns the command name or alias that was used to invoke
|
||
* this command or an empty string if the command has not been called.
|
||
*/
|
||
calledAs(): string
|
||
}
|
||
interface Command {
|
||
/**
|
||
* NameAndAliases returns a list of the command name and all aliases
|
||
*/
|
||
nameAndAliases(): string
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasExample determines if the command has example.
|
||
*/
|
||
hasExample(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Runnable determines if the command is itself runnable.
|
||
*/
|
||
runnable(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasSubCommands determines if the command has children commands.
|
||
*/
|
||
hasSubCommands(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* IsAvailableCommand determines if a command is available as a non-help command
|
||
* (this includes all non deprecated/hidden commands).
|
||
*/
|
||
isAvailableCommand(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* IsAdditionalHelpTopicCommand determines if a command is an additional
|
||
* help topic command; additional help topic command is determined by the
|
||
* fact that it is NOT runnable/hidden/deprecated, and has no sub commands that
|
||
* are runnable/hidden/deprecated.
|
||
* Concrete example: https://github.com/spf13/cobra/issues/393#issuecomment-282741924.
|
||
*/
|
||
isAdditionalHelpTopicCommand(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasHelpSubCommands determines if a command has any available 'help' sub commands
|
||
* that need to be shown in the usage/help default template under 'additional help
|
||
* topics'.
|
||
*/
|
||
hasHelpSubCommands(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasAvailableSubCommands determines if a command has available sub commands that
|
||
* need to be shown in the usage/help default template under 'available commands'.
|
||
*/
|
||
hasAvailableSubCommands(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasParent determines if the command is a child command.
|
||
*/
|
||
hasParent(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GlobalNormalizationFunc returns the global normalization function or nil if it doesn't exist.
|
||
*/
|
||
globalNormalizationFunc(): (f: flag.FlagSet, name: string) => flag.NormalizedName
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Flags returns the complete FlagSet that applies
|
||
* to this command (local and persistent declared here and by all parents).
|
||
*/
|
||
flags(): (flag.FlagSet | undefined)
|
||
}
|
||
interface Command {
|
||
/**
|
||
* LocalNonPersistentFlags are flags specific to this command which will NOT persist to subcommands.
|
||
*/
|
||
localNonPersistentFlags(): (flag.FlagSet | undefined)
|
||
}
|
||
interface Command {
|
||
/**
|
||
* LocalFlags returns the local FlagSet specifically set in the current command.
|
||
*/
|
||
localFlags(): (flag.FlagSet | undefined)
|
||
}
|
||
interface Command {
|
||
/**
|
||
* InheritedFlags returns all flags which were inherited from parent commands.
|
||
*/
|
||
inheritedFlags(): (flag.FlagSet | undefined)
|
||
}
|
||
interface Command {
|
||
/**
|
||
* NonInheritedFlags returns all flags which were not inherited from parent commands.
|
||
*/
|
||
nonInheritedFlags(): (flag.FlagSet | undefined)
|
||
}
|
||
interface Command {
|
||
/**
|
||
* PersistentFlags returns the persistent FlagSet specifically set in the current command.
|
||
*/
|
||
persistentFlags(): (flag.FlagSet | undefined)
|
||
}
|
||
interface Command {
|
||
/**
|
||
* ResetFlags deletes all flags from command.
|
||
*/
|
||
resetFlags(): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasFlags checks if the command contains any flags (local plus persistent from the entire structure).
|
||
*/
|
||
hasFlags(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasPersistentFlags checks if the command contains persistent flags.
|
||
*/
|
||
hasPersistentFlags(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasLocalFlags checks if the command has flags specifically declared locally.
|
||
*/
|
||
hasLocalFlags(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasInheritedFlags checks if the command has flags inherited from its parent command.
|
||
*/
|
||
hasInheritedFlags(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasAvailableFlags checks if the command contains any flags (local plus persistent from the entire
|
||
* structure) which are not hidden or deprecated.
|
||
*/
|
||
hasAvailableFlags(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasAvailablePersistentFlags checks if the command contains persistent flags which are not hidden or deprecated.
|
||
*/
|
||
hasAvailablePersistentFlags(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasAvailableLocalFlags checks if the command has flags specifically declared locally which are not hidden
|
||
* or deprecated.
|
||
*/
|
||
hasAvailableLocalFlags(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* HasAvailableInheritedFlags checks if the command has flags inherited from its parent command which are
|
||
* not hidden or deprecated.
|
||
*/
|
||
hasAvailableInheritedFlags(): boolean
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Flag climbs up the command tree looking for matching flag.
|
||
*/
|
||
flag(name: string): (flag.Flag | undefined)
|
||
}
|
||
interface Command {
|
||
/**
|
||
* ParseFlags parses persistent flag tree and local flags.
|
||
*/
|
||
parseFlags(args: Array<string>): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* Parent returns a commands parent command.
|
||
*/
|
||
parent(): (Command | undefined)
|
||
}
|
||
interface Command {
|
||
/**
|
||
* RegisterFlagCompletionFunc should be called to register a function to provide completion for a flag.
|
||
*/
|
||
registerFlagCompletionFunc(flagName: string, f: (cmd: Command, args: Array<string>, toComplete: string) => [Array<string>, ShellCompDirective]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* InitDefaultCompletionCmd adds a default 'completion' command to c.
|
||
* This function will do nothing if any of the following is true:
|
||
* 1- the feature has been explicitly disabled by the program,
|
||
* 2- c has no subcommands (to avoid creating one),
|
||
* 3- c already has a 'completion' command provided by the program.
|
||
*/
|
||
initDefaultCompletionCmd(): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenFishCompletion generates fish completion file and writes to the passed writer.
|
||
*/
|
||
genFishCompletion(w: io.Writer, includeDesc: boolean): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenFishCompletionFile generates fish completion file.
|
||
*/
|
||
genFishCompletionFile(filename: string, includeDesc: boolean): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* MarkFlagsRequiredTogether marks the given flags with annotations so that Cobra errors
|
||
* if the command is invoked with a subset (but not all) of the given flags.
|
||
*/
|
||
markFlagsRequiredTogether(...flagNames: string[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* MarkFlagsMutuallyExclusive marks the given flags with annotations so that Cobra errors
|
||
* if the command is invoked with more than one flag from the given set of flags.
|
||
*/
|
||
markFlagsMutuallyExclusive(...flagNames: string[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* ValidateFlagGroups validates the mutuallyExclusive/requiredAsGroup logic and returns the
|
||
* first error encountered.
|
||
*/
|
||
validateFlagGroups(): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenPowerShellCompletionFile generates powershell completion file without descriptions.
|
||
*/
|
||
genPowerShellCompletionFile(filename: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenPowerShellCompletion generates powershell completion file without descriptions
|
||
* and writes it to the passed writer.
|
||
*/
|
||
genPowerShellCompletion(w: io.Writer): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenPowerShellCompletionFileWithDesc generates powershell completion file with descriptions.
|
||
*/
|
||
genPowerShellCompletionFileWithDesc(filename: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenPowerShellCompletionWithDesc generates powershell completion file with descriptions
|
||
* and writes it to the passed writer.
|
||
*/
|
||
genPowerShellCompletionWithDesc(w: io.Writer): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* MarkFlagRequired instructs the various shell completion implementations to
|
||
* prioritize the named flag when performing completion,
|
||
* and causes your command to report an error if invoked without the flag.
|
||
*/
|
||
markFlagRequired(name: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* MarkPersistentFlagRequired instructs the various shell completion implementations to
|
||
* prioritize the named persistent flag when performing completion,
|
||
* and causes your command to report an error if invoked without the flag.
|
||
*/
|
||
markPersistentFlagRequired(name: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* MarkFlagFilename instructs the various shell completion implementations to
|
||
* limit completions for the named flag to the specified file extensions.
|
||
*/
|
||
markFlagFilename(name: string, ...extensions: string[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists.
|
||
* The bash completion script will call the bash function f for the flag.
|
||
*
|
||
* This will only work for bash completion.
|
||
* It is recommended to instead use c.RegisterFlagCompletionFunc(...) which allows
|
||
* to register a Go function which will work across all shells.
|
||
*/
|
||
markFlagCustom(name: string, f: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* MarkPersistentFlagFilename instructs the various shell completion
|
||
* implementations to limit completions for the named persistent flag to the
|
||
* specified file extensions.
|
||
*/
|
||
markPersistentFlagFilename(name: string, ...extensions: string[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* MarkFlagDirname instructs the various shell completion implementations to
|
||
* limit completions for the named flag to directory names.
|
||
*/
|
||
markFlagDirname(name: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* MarkPersistentFlagDirname instructs the various shell completion
|
||
* implementations to limit completions for the named persistent flag to
|
||
* directory names.
|
||
*/
|
||
markPersistentFlagDirname(name: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenZshCompletionFile generates zsh completion file including descriptions.
|
||
*/
|
||
genZshCompletionFile(filename: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenZshCompletion generates zsh completion file including descriptions
|
||
* and writes it to the passed writer.
|
||
*/
|
||
genZshCompletion(w: io.Writer): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenZshCompletionFileNoDesc generates zsh completion file without descriptions.
|
||
*/
|
||
genZshCompletionFileNoDesc(filename: string): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* GenZshCompletionNoDesc generates zsh completion file without descriptions
|
||
* and writes it to the passed writer.
|
||
*/
|
||
genZshCompletionNoDesc(w: io.Writer): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* MarkZshCompPositionalArgumentFile only worked for zsh and its behavior was
|
||
* not consistent with Bash completion. It has therefore been disabled.
|
||
* Instead, when no other completion is specified, file completion is done by
|
||
* default for every argument. One can disable file completion on a per-argument
|
||
* basis by using ValidArgsFunction and ShellCompDirectiveNoFileComp.
|
||
* To achieve file extension filtering, one can use ValidArgsFunction and
|
||
* ShellCompDirectiveFilterFileExt.
|
||
*
|
||
* Deprecated
|
||
*/
|
||
markZshCompPositionalArgumentFile(argPosition: number, ...patterns: string[]): void
|
||
}
|
||
interface Command {
|
||
/**
|
||
* MarkZshCompPositionalArgumentWords only worked for zsh. It has therefore
|
||
* been disabled.
|
||
* To achieve the same behavior across all shells, one can use
|
||
* ValidArgs (for the first argument only) or ValidArgsFunction for
|
||
* any argument (can include the first one also).
|
||
*
|
||
* Deprecated
|
||
*/
|
||
markZshCompPositionalArgumentWords(argPosition: number, ...words: string[]): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package io provides basic interfaces to I/O primitives.
|
||
* Its primary job is to wrap existing implementations of such primitives,
|
||
* such as those in package os, into shared public interfaces that
|
||
* abstract the functionality, plus some other related primitives.
|
||
*
|
||
* Because these interfaces and primitives wrap lower-level operations with
|
||
* various implementations, unless otherwise informed clients should not
|
||
* assume they are safe for parallel execution.
|
||
*/
|
||
namespace io {
|
||
/**
|
||
* Reader is the interface that wraps the basic Read method.
|
||
*
|
||
* Read reads up to len(p) bytes into p. It returns the number of bytes
|
||
* read (0 <= n <= len(p)) and any error encountered. Even if Read
|
||
* returns n < len(p), it may use all of p as scratch space during the call.
|
||
* If some data is available but not len(p) bytes, Read conventionally
|
||
* returns what is available instead of waiting for more.
|
||
*
|
||
* When Read encounters an error or end-of-file condition after
|
||
* successfully reading n > 0 bytes, it returns the number of
|
||
* bytes read. It may return the (non-nil) error from the same call
|
||
* or return the error (and n == 0) from a subsequent call.
|
||
* An instance of this general case is that a Reader returning
|
||
* a non-zero number of bytes at the end of the input stream may
|
||
* return either err == EOF or err == nil. The next Read should
|
||
* return 0, EOF.
|
||
*
|
||
* Callers should always process the n > 0 bytes returned before
|
||
* considering the error err. Doing so correctly handles I/O errors
|
||
* that happen after reading some bytes and also both of the
|
||
* allowed EOF behaviors.
|
||
*
|
||
* Implementations of Read are discouraged from returning a
|
||
* zero byte count with a nil error, except when len(p) == 0.
|
||
* Callers should treat a return of 0 and nil as indicating that
|
||
* nothing happened; in particular it does not indicate EOF.
|
||
*
|
||
* Implementations must not retain p.
|
||
*/
|
||
interface Reader {
|
||
read(p: string): number
|
||
}
|
||
/**
|
||
* Writer is the interface that wraps the basic Write method.
|
||
*
|
||
* Write writes len(p) bytes from p to the underlying data stream.
|
||
* It returns the number of bytes written from p (0 <= n <= len(p))
|
||
* and any error encountered that caused the write to stop early.
|
||
* Write must return a non-nil error if it returns n < len(p).
|
||
* Write must not modify the slice data, even temporarily.
|
||
*
|
||
* Implementations must not retain p.
|
||
*/
|
||
interface Writer {
|
||
write(p: string): number
|
||
}
|
||
/**
|
||
* ReadCloser is the interface that groups the basic Read and Close methods.
|
||
*/
|
||
interface ReadCloser {
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package time provides functionality for measuring and displaying time.
|
||
*
|
||
* The calendrical calculations always assume a Gregorian calendar, with
|
||
* no leap seconds.
|
||
*
|
||
* # Monotonic Clocks
|
||
*
|
||
* Operating systems provide both a “wall clock,” which is subject to
|
||
* changes for clock synchronization, and a “monotonic clock,” which is
|
||
* not. The general rule is that the wall clock is for telling time and
|
||
* the monotonic clock is for measuring time. Rather than split the API,
|
||
* in this package the Time returned by time.Now contains both a wall
|
||
* clock reading and a monotonic clock reading; later time-telling
|
||
* operations use the wall clock reading, but later time-measuring
|
||
* operations, specifically comparisons and subtractions, use the
|
||
* monotonic clock reading.
|
||
*
|
||
* For example, this code always computes a positive elapsed time of
|
||
* approximately 20 milliseconds, even if the wall clock is changed during
|
||
* the operation being timed:
|
||
*
|
||
* ```
|
||
* start := time.Now()
|
||
* ... operation that takes 20 milliseconds ...
|
||
* t := time.Now()
|
||
* elapsed := t.Sub(start)
|
||
* ```
|
||
*
|
||
* Other idioms, such as time.Since(start), time.Until(deadline), and
|
||
* time.Now().Before(deadline), are similarly robust against wall clock
|
||
* resets.
|
||
*
|
||
* The rest of this section gives the precise details of how operations
|
||
* use monotonic clocks, but understanding those details is not required
|
||
* to use this package.
|
||
*
|
||
* The Time returned by time.Now contains a monotonic clock reading.
|
||
* If Time t has a monotonic clock reading, t.Add adds the same duration to
|
||
* both the wall clock and monotonic clock readings to compute the result.
|
||
* Because t.AddDate(y, m, d), t.Round(d), and t.Truncate(d) are wall time
|
||
* computations, they always strip any monotonic clock reading from their results.
|
||
* Because t.In, t.Local, and t.UTC are used for their effect on the interpretation
|
||
* of the wall time, they also strip any monotonic clock reading from their results.
|
||
* The canonical way to strip a monotonic clock reading is to use t = t.Round(0).
|
||
*
|
||
* If Times t and u both contain monotonic clock readings, the operations
|
||
* t.After(u), t.Before(u), t.Equal(u), and t.Sub(u) are carried out
|
||
* using the monotonic clock readings alone, ignoring the wall clock
|
||
* readings. If either t or u contains no monotonic clock reading, these
|
||
* operations fall back to using the wall clock readings.
|
||
*
|
||
* On some systems the monotonic clock will stop if the computer goes to sleep.
|
||
* On such a system, t.Sub(u) may not accurately reflect the actual
|
||
* time that passed between t and u.
|
||
*
|
||
* Because the monotonic clock reading has no meaning outside
|
||
* the current process, the serialized forms generated by t.GobEncode,
|
||
* t.MarshalBinary, t.MarshalJSON, and t.MarshalText omit the monotonic
|
||
* clock reading, and t.Format provides no format for it. Similarly, the
|
||
* constructors time.Date, time.Parse, time.ParseInLocation, and time.Unix,
|
||
* as well as the unmarshalers t.GobDecode, t.UnmarshalBinary.
|
||
* t.UnmarshalJSON, and t.UnmarshalText always create times with
|
||
* no monotonic clock reading.
|
||
*
|
||
* The monotonic clock reading exists only in Time values. It is not
|
||
* a part of Duration values or the Unix times returned by t.Unix and
|
||
* friends.
|
||
*
|
||
* Note that the Go == operator compares not just the time instant but
|
||
* also the Location and the monotonic clock reading. See the
|
||
* documentation for the Time type for a discussion of equality
|
||
* testing for Time values.
|
||
*
|
||
* For debugging, the result of t.String does include the monotonic
|
||
* clock reading if present. If t != u because of different monotonic clock readings,
|
||
* that difference will be visible when printing t.String() and u.String().
|
||
*/
|
||
namespace time {
|
||
interface Time {
|
||
/**
|
||
* String returns the time formatted using the format string
|
||
*
|
||
* ```
|
||
* "2006-01-02 15:04:05.999999999 -0700 MST"
|
||
* ```
|
||
*
|
||
* If the time has a monotonic clock reading, the returned string
|
||
* includes a final field "m=±<value>", where value is the monotonic
|
||
* clock reading formatted as a decimal number of seconds.
|
||
*
|
||
* The returned string is meant for debugging; for a stable serialized
|
||
* representation, use t.MarshalText, t.MarshalBinary, or t.Format
|
||
* with an explicit format string.
|
||
*/
|
||
string(): string
|
||
}
|
||
interface Time {
|
||
/**
|
||
* GoString implements fmt.GoStringer and formats t to be printed in Go source
|
||
* code.
|
||
*/
|
||
goString(): string
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Format returns a textual representation of the time value formatted according
|
||
* to the layout defined by the argument. See the documentation for the
|
||
* constant called Layout to see how to represent the layout format.
|
||
*
|
||
* The executable example for Time.Format demonstrates the working
|
||
* of the layout string in detail and is a good reference.
|
||
*/
|
||
format(layout: string): string
|
||
}
|
||
interface Time {
|
||
/**
|
||
* AppendFormat is like Format but appends the textual
|
||
* representation to b and returns the extended buffer.
|
||
*/
|
||
appendFormat(b: string, layout: string): string
|
||
}
|
||
/**
|
||
* A Time represents an instant in time with nanosecond precision.
|
||
*
|
||
* Programs using times should typically store and pass them as values,
|
||
* not pointers. That is, time variables and struct fields should be of
|
||
* type time.Time, not *time.Time.
|
||
*
|
||
* A Time value can be used by multiple goroutines simultaneously except
|
||
* that the methods GobDecode, UnmarshalBinary, UnmarshalJSON and
|
||
* UnmarshalText are not concurrency-safe.
|
||
*
|
||
* Time instants can be compared using the Before, After, and Equal methods.
|
||
* The Sub method subtracts two instants, producing a Duration.
|
||
* The Add method adds a Time and a Duration, producing a Time.
|
||
*
|
||
* The zero value of type Time is January 1, year 1, 00:00:00.000000000 UTC.
|
||
* As this time is unlikely to come up in practice, the IsZero method gives
|
||
* a simple way of detecting a time that has not been initialized explicitly.
|
||
*
|
||
* Each Time has associated with it a Location, consulted when computing the
|
||
* presentation form of the time, such as in the Format, Hour, and Year methods.
|
||
* The methods Local, UTC, and In return a Time with a specific location.
|
||
* Changing the location in this way changes only the presentation; it does not
|
||
* change the instant in time being denoted and therefore does not affect the
|
||
* computations described in earlier paragraphs.
|
||
*
|
||
* Representations of a Time value saved by the GobEncode, MarshalBinary,
|
||
* MarshalJSON, and MarshalText methods store the Time.Location's offset, but not
|
||
* the location name. They therefore lose information about Daylight Saving Time.
|
||
*
|
||
* In addition to the required “wall clock” reading, a Time may contain an optional
|
||
* reading of the current process's monotonic clock, to provide additional precision
|
||
* for comparison or subtraction.
|
||
* See the “Monotonic Clocks” section in the package documentation for details.
|
||
*
|
||
* Note that the Go == operator compares not just the time instant but also the
|
||
* Location and the monotonic clock reading. Therefore, Time values should not
|
||
* be used as map or database keys without first guaranteeing that the
|
||
* identical Location has been set for all values, which can be achieved
|
||
* through use of the UTC or Local method, and that the monotonic clock reading
|
||
* has been stripped by setting t = t.Round(0). In general, prefer t.Equal(u)
|
||
* to t == u, since t.Equal uses the most accurate comparison available and
|
||
* correctly handles the case when only one of its arguments has a monotonic
|
||
* clock reading.
|
||
*/
|
||
interface Time {
|
||
}
|
||
interface Time {
|
||
/**
|
||
* After reports whether the time instant t is after u.
|
||
*/
|
||
after(u: Time): boolean
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Before reports whether the time instant t is before u.
|
||
*/
|
||
before(u: Time): boolean
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Equal reports whether t and u represent the same time instant.
|
||
* Two times can be equal even if they are in different locations.
|
||
* For example, 6:00 +0200 and 4:00 UTC are Equal.
|
||
* See the documentation on the Time type for the pitfalls of using == with
|
||
* Time values; most code should use Equal instead.
|
||
*/
|
||
equal(u: Time): boolean
|
||
}
|
||
interface Time {
|
||
/**
|
||
* IsZero reports whether t represents the zero time instant,
|
||
* January 1, year 1, 00:00:00 UTC.
|
||
*/
|
||
isZero(): boolean
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Date returns the year, month, and day in which t occurs.
|
||
*/
|
||
date(): [number, Month, number]
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Year returns the year in which t occurs.
|
||
*/
|
||
year(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Month returns the month of the year specified by t.
|
||
*/
|
||
month(): Month
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Day returns the day of the month specified by t.
|
||
*/
|
||
day(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Weekday returns the day of the week specified by t.
|
||
*/
|
||
weekday(): Weekday
|
||
}
|
||
interface Time {
|
||
/**
|
||
* ISOWeek returns the ISO 8601 year and week number in which t occurs.
|
||
* Week ranges from 1 to 53. Jan 01 to Jan 03 of year n might belong to
|
||
* week 52 or 53 of year n-1, and Dec 29 to Dec 31 might belong to week 1
|
||
* of year n+1.
|
||
*/
|
||
isoWeek(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Clock returns the hour, minute, and second within the day specified by t.
|
||
*/
|
||
clock(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Hour returns the hour within the day specified by t, in the range [0, 23].
|
||
*/
|
||
hour(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Minute returns the minute offset within the hour specified by t, in the range [0, 59].
|
||
*/
|
||
minute(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Second returns the second offset within the minute specified by t, in the range [0, 59].
|
||
*/
|
||
second(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Nanosecond returns the nanosecond offset within the second specified by t,
|
||
* in the range [0, 999999999].
|
||
*/
|
||
nanosecond(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* YearDay returns the day of the year specified by t, in the range [1,365] for non-leap years,
|
||
* and [1,366] in leap years.
|
||
*/
|
||
yearDay(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Add returns the time t+d.
|
||
*/
|
||
add(d: Duration): Time
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Sub returns the duration t-u. If the result exceeds the maximum (or minimum)
|
||
* value that can be stored in a Duration, the maximum (or minimum) duration
|
||
* will be returned.
|
||
* To compute t-d for a duration d, use t.Add(-d).
|
||
*/
|
||
sub(u: Time): Duration
|
||
}
|
||
interface Time {
|
||
/**
|
||
* AddDate returns the time corresponding to adding the
|
||
* given number of years, months, and days to t.
|
||
* For example, AddDate(-1, 2, 3) applied to January 1, 2011
|
||
* returns March 4, 2010.
|
||
*
|
||
* AddDate normalizes its result in the same way that Date does,
|
||
* so, for example, adding one month to October 31 yields
|
||
* December 1, the normalized form for November 31.
|
||
*/
|
||
addDate(years: number, months: number, days: number): Time
|
||
}
|
||
interface Time {
|
||
/**
|
||
* UTC returns t with the location set to UTC.
|
||
*/
|
||
utc(): Time
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Local returns t with the location set to local time.
|
||
*/
|
||
local(): Time
|
||
}
|
||
interface Time {
|
||
/**
|
||
* In returns a copy of t representing the same time instant, but
|
||
* with the copy's location information set to loc for display
|
||
* purposes.
|
||
*
|
||
* In panics if loc is nil.
|
||
*/
|
||
in(loc: Location): Time
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Location returns the time zone information associated with t.
|
||
*/
|
||
location(): (Location | undefined)
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Zone computes the time zone in effect at time t, returning the abbreviated
|
||
* name of the zone (such as "CET") and its offset in seconds east of UTC.
|
||
*/
|
||
zone(): [string, number]
|
||
}
|
||
interface Time {
|
||
/**
|
||
* ZoneBounds returns the bounds of the time zone in effect at time t.
|
||
* The zone begins at start and the next zone begins at end.
|
||
* If the zone begins at the beginning of time, start will be returned as a zero Time.
|
||
* If the zone goes on forever, end will be returned as a zero Time.
|
||
* The Location of the returned times will be the same as t.
|
||
*/
|
||
zoneBounds(): Time
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Unix returns t as a Unix time, the number of seconds elapsed
|
||
* since January 1, 1970 UTC. The result does not depend on the
|
||
* location associated with t.
|
||
* Unix-like operating systems often record time as a 32-bit
|
||
* count of seconds, but since the method here returns a 64-bit
|
||
* value it is valid for billions of years into the past or future.
|
||
*/
|
||
unix(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* UnixMilli returns t as a Unix time, the number of milliseconds elapsed since
|
||
* January 1, 1970 UTC. The result is undefined if the Unix time in
|
||
* milliseconds cannot be represented by an int64 (a date more than 292 million
|
||
* years before or after 1970). The result does not depend on the
|
||
* location associated with t.
|
||
*/
|
||
unixMilli(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* UnixMicro returns t as a Unix time, the number of microseconds elapsed since
|
||
* January 1, 1970 UTC. The result is undefined if the Unix time in
|
||
* microseconds cannot be represented by an int64 (a date before year -290307 or
|
||
* after year 294246). The result does not depend on the location associated
|
||
* with t.
|
||
*/
|
||
unixMicro(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* UnixNano returns t as a Unix time, the number of nanoseconds elapsed
|
||
* since January 1, 1970 UTC. The result is undefined if the Unix time
|
||
* in nanoseconds cannot be represented by an int64 (a date before the year
|
||
* 1678 or after 2262). Note that this means the result of calling UnixNano
|
||
* on the zero Time is undefined. The result does not depend on the
|
||
* location associated with t.
|
||
*/
|
||
unixNano(): number
|
||
}
|
||
interface Time {
|
||
/**
|
||
* MarshalBinary implements the encoding.BinaryMarshaler interface.
|
||
*/
|
||
marshalBinary(): string
|
||
}
|
||
interface Time {
|
||
/**
|
||
* UnmarshalBinary implements the encoding.BinaryUnmarshaler interface.
|
||
*/
|
||
unmarshalBinary(data: string): void
|
||
}
|
||
interface Time {
|
||
/**
|
||
* GobEncode implements the gob.GobEncoder interface.
|
||
*/
|
||
gobEncode(): string
|
||
}
|
||
interface Time {
|
||
/**
|
||
* GobDecode implements the gob.GobDecoder interface.
|
||
*/
|
||
gobDecode(data: string): void
|
||
}
|
||
interface Time {
|
||
/**
|
||
* MarshalJSON implements the json.Marshaler interface.
|
||
* The time is a quoted string in RFC 3339 format, with sub-second precision added if present.
|
||
*/
|
||
marshalJSON(): string
|
||
}
|
||
interface Time {
|
||
/**
|
||
* UnmarshalJSON implements the json.Unmarshaler interface.
|
||
* The time is expected to be a quoted string in RFC 3339 format.
|
||
*/
|
||
unmarshalJSON(data: string): void
|
||
}
|
||
interface Time {
|
||
/**
|
||
* MarshalText implements the encoding.TextMarshaler interface.
|
||
* The time is formatted in RFC 3339 format, with sub-second precision added if present.
|
||
*/
|
||
marshalText(): string
|
||
}
|
||
interface Time {
|
||
/**
|
||
* UnmarshalText implements the encoding.TextUnmarshaler interface.
|
||
* The time is expected to be in RFC 3339 format.
|
||
*/
|
||
unmarshalText(data: string): void
|
||
}
|
||
interface Time {
|
||
/**
|
||
* IsDST reports whether the time in the configured location is in Daylight Savings Time.
|
||
*/
|
||
isDST(): boolean
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Truncate returns the result of rounding t down to a multiple of d (since the zero time).
|
||
* If d <= 0, Truncate returns t stripped of any monotonic clock reading but otherwise unchanged.
|
||
*
|
||
* Truncate operates on the time as an absolute duration since the
|
||
* zero time; it does not operate on the presentation form of the
|
||
* time. Thus, Truncate(Hour) may return a time with a non-zero
|
||
* minute, depending on the time's Location.
|
||
*/
|
||
truncate(d: Duration): Time
|
||
}
|
||
interface Time {
|
||
/**
|
||
* Round returns the result of rounding t to the nearest multiple of d (since the zero time).
|
||
* The rounding behavior for halfway values is to round up.
|
||
* If d <= 0, Round returns t stripped of any monotonic clock reading but otherwise unchanged.
|
||
*
|
||
* Round operates on the time as an absolute duration since the
|
||
* zero time; it does not operate on the presentation form of the
|
||
* time. Thus, Round(Hour) may return a time with a non-zero
|
||
* minute, depending on the time's Location.
|
||
*/
|
||
round(d: Duration): Time
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package context defines the Context type, which carries deadlines,
|
||
* cancellation signals, and other request-scoped values across API boundaries
|
||
* and between processes.
|
||
*
|
||
* Incoming requests to a server should create a Context, and outgoing
|
||
* calls to servers should accept a Context. The chain of function
|
||
* calls between them must propagate the Context, optionally replacing
|
||
* it with a derived Context created using WithCancel, WithDeadline,
|
||
* WithTimeout, or WithValue. When a Context is canceled, all
|
||
* Contexts derived from it are also canceled.
|
||
*
|
||
* The WithCancel, WithDeadline, and WithTimeout functions take a
|
||
* Context (the parent) and return a derived Context (the child) and a
|
||
* CancelFunc. Calling the CancelFunc cancels the child and its
|
||
* children, removes the parent's reference to the child, and stops
|
||
* any associated timers. Failing to call the CancelFunc leaks the
|
||
* child and its children until the parent is canceled or the timer
|
||
* fires. The go vet tool checks that CancelFuncs are used on all
|
||
* control-flow paths.
|
||
*
|
||
* Programs that use Contexts should follow these rules to keep interfaces
|
||
* consistent across packages and enable static analysis tools to check context
|
||
* propagation:
|
||
*
|
||
* Do not store Contexts inside a struct type; instead, pass a Context
|
||
* explicitly to each function that needs it. The Context should be the first
|
||
* parameter, typically named ctx:
|
||
*
|
||
* ```
|
||
* func DoSomething(ctx context.Context, arg Arg) error {
|
||
* // ... use ctx ...
|
||
* }
|
||
* ```
|
||
*
|
||
* Do not pass a nil Context, even if a function permits it. Pass context.TODO
|
||
* if you are unsure about which Context to use.
|
||
*
|
||
* Use context Values only for request-scoped data that transits processes and
|
||
* APIs, not for passing optional parameters to functions.
|
||
*
|
||
* The same Context may be passed to functions running in different goroutines;
|
||
* Contexts are safe for simultaneous use by multiple goroutines.
|
||
*
|
||
* See https://blog.golang.org/context for example code for a server that uses
|
||
* Contexts.
|
||
*/
|
||
namespace context {
|
||
}
|
||
|
||
/**
|
||
* Package fs defines basic interfaces to a file system.
|
||
* A file system can be provided by the host operating system
|
||
* but also by other packages.
|
||
*/
|
||
namespace fs {
|
||
/**
|
||
* A File provides access to a single file.
|
||
* The File interface is the minimum implementation required of the file.
|
||
* Directory files should also implement ReadDirFile.
|
||
* A file may implement io.ReaderAt or io.Seeker as optimizations.
|
||
*/
|
||
interface File {
|
||
stat(): FileInfo
|
||
read(_arg0: string): number
|
||
close(): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package url parses URLs and implements query escaping.
|
||
*/
|
||
namespace url {
|
||
/**
|
||
* A URL represents a parsed URL (technically, a URI reference).
|
||
*
|
||
* The general form represented is:
|
||
*
|
||
* ```
|
||
* [scheme:][//[userinfo@]host][/]path[?query][#fragment]
|
||
* ```
|
||
*
|
||
* URLs that do not start with a slash after the scheme are interpreted as:
|
||
*
|
||
* ```
|
||
* scheme:opaque[?query][#fragment]
|
||
* ```
|
||
*
|
||
* Note that the Path field is stored in decoded form: /%47%6f%2f becomes /Go/.
|
||
* A consequence is that it is impossible to tell which slashes in the Path were
|
||
* slashes in the raw URL and which were %2f. This distinction is rarely important,
|
||
* but when it is, the code should use RawPath, an optional field which only gets
|
||
* set if the default encoding is different from Path.
|
||
*
|
||
* URL's String method uses the EscapedPath method to obtain the path. See the
|
||
* EscapedPath method for more details.
|
||
*/
|
||
interface URL {
|
||
scheme: string
|
||
opaque: string // encoded opaque data
|
||
user?: Userinfo // username and password information
|
||
host: string // host or host:port
|
||
path: string // path (relative paths may omit leading slash)
|
||
rawPath: string // encoded path hint (see EscapedPath method)
|
||
omitHost: boolean // do not emit empty host (authority)
|
||
forceQuery: boolean // append a query ('?') even if RawQuery is empty
|
||
rawQuery: string // encoded query values, without '?'
|
||
fragment: string // fragment for references, without '#'
|
||
rawFragment: string // encoded fragment hint (see EscapedFragment method)
|
||
}
|
||
interface URL {
|
||
/**
|
||
* EscapedPath returns the escaped form of u.Path.
|
||
* In general there are multiple possible escaped forms of any path.
|
||
* EscapedPath returns u.RawPath when it is a valid escaping of u.Path.
|
||
* Otherwise EscapedPath ignores u.RawPath and computes an escaped
|
||
* form on its own.
|
||
* The String and RequestURI methods use EscapedPath to construct
|
||
* their results.
|
||
* In general, code should call EscapedPath instead of
|
||
* reading u.RawPath directly.
|
||
*/
|
||
escapedPath(): string
|
||
}
|
||
interface URL {
|
||
/**
|
||
* EscapedFragment returns the escaped form of u.Fragment.
|
||
* In general there are multiple possible escaped forms of any fragment.
|
||
* EscapedFragment returns u.RawFragment when it is a valid escaping of u.Fragment.
|
||
* Otherwise EscapedFragment ignores u.RawFragment and computes an escaped
|
||
* form on its own.
|
||
* The String method uses EscapedFragment to construct its result.
|
||
* In general, code should call EscapedFragment instead of
|
||
* reading u.RawFragment directly.
|
||
*/
|
||
escapedFragment(): string
|
||
}
|
||
interface URL {
|
||
/**
|
||
* String reassembles the URL into a valid URL string.
|
||
* The general form of the result is one of:
|
||
*
|
||
* ```
|
||
* scheme:opaque?query#fragment
|
||
* scheme://userinfo@host/path?query#fragment
|
||
* ```
|
||
*
|
||
* If u.Opaque is non-empty, String uses the first form;
|
||
* otherwise it uses the second form.
|
||
* Any non-ASCII characters in host are escaped.
|
||
* To obtain the path, String uses u.EscapedPath().
|
||
*
|
||
* In the second form, the following rules apply:
|
||
* ```
|
||
* - if u.Scheme is empty, scheme: is omitted.
|
||
* - if u.User is nil, userinfo@ is omitted.
|
||
* - if u.Host is empty, host/ is omitted.
|
||
* - if u.Scheme and u.Host are empty and u.User is nil,
|
||
* the entire scheme://userinfo@host/ is omitted.
|
||
* - if u.Host is non-empty and u.Path begins with a /,
|
||
* the form host/path does not add its own /.
|
||
* - if u.RawQuery is empty, ?query is omitted.
|
||
* - if u.Fragment is empty, #fragment is omitted.
|
||
* ```
|
||
*/
|
||
string(): string
|
||
}
|
||
interface URL {
|
||
/**
|
||
* Redacted is like String but replaces any password with "xxxxx".
|
||
* Only the password in u.URL is redacted.
|
||
*/
|
||
redacted(): string
|
||
}
|
||
/**
|
||
* Values maps a string key to a list of values.
|
||
* It is typically used for query parameters and form values.
|
||
* Unlike in the http.Header map, the keys in a Values map
|
||
* are case-sensitive.
|
||
*/
|
||
interface Values extends _TygojaDict{}
|
||
interface Values {
|
||
/**
|
||
* Get gets the first value associated with the given key.
|
||
* If there are no values associated with the key, Get returns
|
||
* the empty string. To access multiple values, use the map
|
||
* directly.
|
||
*/
|
||
get(key: string): string
|
||
}
|
||
interface Values {
|
||
/**
|
||
* Set sets the key to value. It replaces any existing
|
||
* values.
|
||
*/
|
||
set(key: string): void
|
||
}
|
||
interface Values {
|
||
/**
|
||
* Add adds the value to key. It appends to any existing
|
||
* values associated with key.
|
||
*/
|
||
add(key: string): void
|
||
}
|
||
interface Values {
|
||
/**
|
||
* Del deletes the values associated with key.
|
||
*/
|
||
del(key: string): void
|
||
}
|
||
interface Values {
|
||
/**
|
||
* Has checks whether a given key is set.
|
||
*/
|
||
has(key: string): boolean
|
||
}
|
||
interface Values {
|
||
/**
|
||
* Encode encodes the values into “URL encoded” form
|
||
* ("bar=baz&foo=quux") sorted by key.
|
||
*/
|
||
encode(): string
|
||
}
|
||
interface URL {
|
||
/**
|
||
* IsAbs reports whether the URL is absolute.
|
||
* Absolute means that it has a non-empty scheme.
|
||
*/
|
||
isAbs(): boolean
|
||
}
|
||
interface URL {
|
||
/**
|
||
* Parse parses a URL in the context of the receiver. The provided URL
|
||
* may be relative or absolute. Parse returns nil, err on parse
|
||
* failure, otherwise its return value is the same as ResolveReference.
|
||
*/
|
||
parse(ref: string): (URL | undefined)
|
||
}
|
||
interface URL {
|
||
/**
|
||
* ResolveReference resolves a URI reference to an absolute URI from
|
||
* an absolute base URI u, per RFC 3986 Section 5.2. The URI reference
|
||
* may be relative or absolute. ResolveReference always returns a new
|
||
* URL instance, even if the returned URL is identical to either the
|
||
* base or reference. If ref is an absolute URL, then ResolveReference
|
||
* ignores base and returns a copy of ref.
|
||
*/
|
||
resolveReference(ref: URL): (URL | undefined)
|
||
}
|
||
interface URL {
|
||
/**
|
||
* Query parses RawQuery and returns the corresponding values.
|
||
* It silently discards malformed value pairs.
|
||
* To check errors use ParseQuery.
|
||
*/
|
||
query(): Values
|
||
}
|
||
interface URL {
|
||
/**
|
||
* RequestURI returns the encoded path?query or opaque?query
|
||
* string that would be used in an HTTP request for u.
|
||
*/
|
||
requestURI(): string
|
||
}
|
||
interface URL {
|
||
/**
|
||
* Hostname returns u.Host, stripping any valid port number if present.
|
||
*
|
||
* If the result is enclosed in square brackets, as literal IPv6 addresses are,
|
||
* the square brackets are removed from the result.
|
||
*/
|
||
hostname(): string
|
||
}
|
||
interface URL {
|
||
/**
|
||
* Port returns the port part of u.Host, without the leading colon.
|
||
*
|
||
* If u.Host doesn't contain a valid numeric port, Port returns an empty string.
|
||
*/
|
||
port(): string
|
||
}
|
||
interface URL {
|
||
marshalBinary(): string
|
||
}
|
||
interface URL {
|
||
unmarshalBinary(text: string): void
|
||
}
|
||
interface URL {
|
||
/**
|
||
* JoinPath returns a new URL with the provided path elements joined to
|
||
* any existing path and the resulting path cleaned of any ./ or ../ elements.
|
||
* Any sequences of multiple / characters will be reduced to a single /.
|
||
*/
|
||
joinPath(...elem: string[]): (URL | undefined)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package tls partially implements TLS 1.2, as specified in RFC 5246,
|
||
* and TLS 1.3, as specified in RFC 8446.
|
||
*/
|
||
namespace tls {
|
||
/**
|
||
* ConnectionState records basic TLS details about the connection.
|
||
*/
|
||
interface ConnectionState {
|
||
/**
|
||
* Version is the TLS version used by the connection (e.g. VersionTLS12).
|
||
*/
|
||
version: number
|
||
/**
|
||
* HandshakeComplete is true if the handshake has concluded.
|
||
*/
|
||
handshakeComplete: boolean
|
||
/**
|
||
* DidResume is true if this connection was successfully resumed from a
|
||
* previous session with a session ticket or similar mechanism.
|
||
*/
|
||
didResume: boolean
|
||
/**
|
||
* CipherSuite is the cipher suite negotiated for the connection (e.g.
|
||
* TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_AES_128_GCM_SHA256).
|
||
*/
|
||
cipherSuite: number
|
||
/**
|
||
* NegotiatedProtocol is the application protocol negotiated with ALPN.
|
||
*/
|
||
negotiatedProtocol: string
|
||
/**
|
||
* NegotiatedProtocolIsMutual used to indicate a mutual NPN negotiation.
|
||
*
|
||
* Deprecated: this value is always true.
|
||
*/
|
||
negotiatedProtocolIsMutual: boolean
|
||
/**
|
||
* ServerName is the value of the Server Name Indication extension sent by
|
||
* the client. It's available both on the server and on the client side.
|
||
*/
|
||
serverName: string
|
||
/**
|
||
* PeerCertificates are the parsed certificates sent by the peer, in the
|
||
* order in which they were sent. The first element is the leaf certificate
|
||
* that the connection is verified against.
|
||
*
|
||
* On the client side, it can't be empty. On the server side, it can be
|
||
* empty if Config.ClientAuth is not RequireAnyClientCert or
|
||
* RequireAndVerifyClientCert.
|
||
*/
|
||
peerCertificates: Array<(x509.Certificate | undefined)>
|
||
/**
|
||
* VerifiedChains is a list of one or more chains where the first element is
|
||
* PeerCertificates[0] and the last element is from Config.RootCAs (on the
|
||
* client side) or Config.ClientCAs (on the server side).
|
||
*
|
||
* On the client side, it's set if Config.InsecureSkipVerify is false. On
|
||
* the server side, it's set if Config.ClientAuth is VerifyClientCertIfGiven
|
||
* (and the peer provided a certificate) or RequireAndVerifyClientCert.
|
||
*/
|
||
verifiedChains: Array<Array<(x509.Certificate | undefined)>>
|
||
/**
|
||
* SignedCertificateTimestamps is a list of SCTs provided by the peer
|
||
* through the TLS handshake for the leaf certificate, if any.
|
||
*/
|
||
signedCertificateTimestamps: Array<string>
|
||
/**
|
||
* OCSPResponse is a stapled Online Certificate Status Protocol (OCSP)
|
||
* response provided by the peer for the leaf certificate, if any.
|
||
*/
|
||
ocspResponse: string
|
||
/**
|
||
* TLSUnique contains the "tls-unique" channel binding value (see RFC 5929,
|
||
* Section 3). This value will be nil for TLS 1.3 connections and for all
|
||
* resumed connections.
|
||
*
|
||
* Deprecated: there are conditions in which this value might not be unique
|
||
* to a connection. See the Security Considerations sections of RFC 5705 and
|
||
* RFC 7627, and https://mitls.org/pages/attacks/3SHAKE#channelbindings.
|
||
*/
|
||
tlsUnique: string
|
||
}
|
||
interface ConnectionState {
|
||
/**
|
||
* ExportKeyingMaterial returns length bytes of exported key material in a new
|
||
* slice as defined in RFC 5705. If context is nil, it is not used as part of
|
||
* the seed. If the connection was set to allow renegotiation via
|
||
* Config.Renegotiation, this function will return an error.
|
||
*/
|
||
exportKeyingMaterial(label: string, context: string, length: number): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package textproto implements generic support for text-based request/response
|
||
* protocols in the style of HTTP, NNTP, and SMTP.
|
||
*
|
||
* The package provides:
|
||
*
|
||
* Error, which represents a numeric error response from
|
||
* a server.
|
||
*
|
||
* Pipeline, to manage pipelined requests and responses
|
||
* in a client.
|
||
*
|
||
* Reader, to read numeric response code lines,
|
||
* key: value headers, lines wrapped with leading spaces
|
||
* on continuation lines, and whole text blocks ending
|
||
* with a dot on a line by itself.
|
||
*
|
||
* Writer, to write dot-encoded text blocks.
|
||
*
|
||
* Conn, a convenient packaging of Reader, Writer, and Pipeline for use
|
||
* with a single network connection.
|
||
*/
|
||
namespace textproto {
|
||
/**
|
||
* A MIMEHeader represents a MIME-style header mapping
|
||
* keys to sets of values.
|
||
*/
|
||
interface MIMEHeader extends _TygojaDict{}
|
||
interface MIMEHeader {
|
||
/**
|
||
* Add adds the key, value pair to the header.
|
||
* It appends to any existing values associated with key.
|
||
*/
|
||
add(key: string): void
|
||
}
|
||
interface MIMEHeader {
|
||
/**
|
||
* Set sets the header entries associated with key to
|
||
* the single element value. It replaces any existing
|
||
* values associated with key.
|
||
*/
|
||
set(key: string): void
|
||
}
|
||
interface MIMEHeader {
|
||
/**
|
||
* Get gets the first value associated with the given key.
|
||
* It is case insensitive; CanonicalMIMEHeaderKey is used
|
||
* to canonicalize the provided key.
|
||
* If there are no values associated with the key, Get returns "".
|
||
* To use non-canonical keys, access the map directly.
|
||
*/
|
||
get(key: string): string
|
||
}
|
||
interface MIMEHeader {
|
||
/**
|
||
* Values returns all values associated with the given key.
|
||
* It is case insensitive; CanonicalMIMEHeaderKey is
|
||
* used to canonicalize the provided key. To use non-canonical
|
||
* keys, access the map directly.
|
||
* The returned slice is not a copy.
|
||
*/
|
||
values(key: string): Array<string>
|
||
}
|
||
interface MIMEHeader {
|
||
/**
|
||
* Del deletes the values associated with key.
|
||
*/
|
||
del(key: string): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package multipart implements MIME multipart parsing, as defined in RFC
|
||
* 2046.
|
||
*
|
||
* The implementation is sufficient for HTTP (RFC 2388) and the multipart
|
||
* bodies generated by popular browsers.
|
||
*/
|
||
namespace multipart {
|
||
interface Reader {
|
||
/**
|
||
* ReadForm parses an entire multipart message whose parts have
|
||
* a Content-Disposition of "form-data".
|
||
* It stores up to maxMemory bytes + 10MB (reserved for non-file parts)
|
||
* in memory. File parts which can't be stored in memory will be stored on
|
||
* disk in temporary files.
|
||
* It returns ErrMessageTooLarge if all non-file parts can't be stored in
|
||
* memory.
|
||
*/
|
||
readForm(maxMemory: number): (Form | undefined)
|
||
}
|
||
/**
|
||
* Form is a parsed multipart form.
|
||
* Its File parts are stored either in memory or on disk,
|
||
* and are accessible via the *FileHeader's Open method.
|
||
* Its Value parts are stored as strings.
|
||
* Both are keyed by field name.
|
||
*/
|
||
interface Form {
|
||
value: _TygojaDict
|
||
file: _TygojaDict
|
||
}
|
||
interface Form {
|
||
/**
|
||
* RemoveAll removes any temporary files associated with a Form.
|
||
*/
|
||
removeAll(): void
|
||
}
|
||
/**
|
||
* File is an interface to access the file part of a multipart message.
|
||
* Its contents may be either stored in memory or on disk.
|
||
* If stored on disk, the File's underlying concrete type will be an *os.File.
|
||
*/
|
||
interface File {
|
||
}
|
||
/**
|
||
* Reader is an iterator over parts in a MIME multipart body.
|
||
* Reader's underlying parser consumes its input as needed. Seeking
|
||
* isn't supported.
|
||
*/
|
||
interface Reader {
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* NextPart returns the next part in the multipart or an error.
|
||
* When there are no more parts, the error io.EOF is returned.
|
||
*
|
||
* As a special case, if the "Content-Transfer-Encoding" header
|
||
* has a value of "quoted-printable", that header is instead
|
||
* hidden and the body is transparently decoded during Read calls.
|
||
*/
|
||
nextPart(): (Part | undefined)
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* NextRawPart returns the next part in the multipart or an error.
|
||
* When there are no more parts, the error io.EOF is returned.
|
||
*
|
||
* Unlike NextPart, it does not have special handling for
|
||
* "Content-Transfer-Encoding: quoted-printable".
|
||
*/
|
||
nextRawPart(): (Part | undefined)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package http provides HTTP client and server implementations.
|
||
*
|
||
* Get, Head, Post, and PostForm make HTTP (or HTTPS) requests:
|
||
*
|
||
* ```
|
||
* resp, err := http.Get("http://example.com/")
|
||
* ...
|
||
* resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf)
|
||
* ...
|
||
* resp, err := http.PostForm("http://example.com/form",
|
||
* url.Values{"key": {"Value"}, "id": {"123"}})
|
||
* ```
|
||
*
|
||
* The client must close the response body when finished with it:
|
||
*
|
||
* ```
|
||
* resp, err := http.Get("http://example.com/")
|
||
* if err != nil {
|
||
* // handle error
|
||
* }
|
||
* defer resp.Body.Close()
|
||
* body, err := io.ReadAll(resp.Body)
|
||
* // ...
|
||
* ```
|
||
*
|
||
* For control over HTTP client headers, redirect policy, and other
|
||
* settings, create a Client:
|
||
*
|
||
* ```
|
||
* client := &http.Client{
|
||
* CheckRedirect: redirectPolicyFunc,
|
||
* }
|
||
*
|
||
* resp, err := client.Get("http://example.com")
|
||
* // ...
|
||
*
|
||
* req, err := http.NewRequest("GET", "http://example.com", nil)
|
||
* // ...
|
||
* req.Header.Add("If-None-Match", `W/"wyzzy"`)
|
||
* resp, err := client.Do(req)
|
||
* // ...
|
||
* ```
|
||
*
|
||
* For control over proxies, TLS configuration, keep-alives,
|
||
* compression, and other settings, create a Transport:
|
||
*
|
||
* ```
|
||
* tr := &http.Transport{
|
||
* MaxIdleConns: 10,
|
||
* IdleConnTimeout: 30 * time.Second,
|
||
* DisableCompression: true,
|
||
* }
|
||
* client := &http.Client{Transport: tr}
|
||
* resp, err := client.Get("https://example.com")
|
||
* ```
|
||
*
|
||
* Clients and Transports are safe for concurrent use by multiple
|
||
* goroutines and for efficiency should only be created once and re-used.
|
||
*
|
||
* ListenAndServe starts an HTTP server with a given address and handler.
|
||
* The handler is usually nil, which means to use DefaultServeMux.
|
||
* Handle and HandleFunc add handlers to DefaultServeMux:
|
||
*
|
||
* ```
|
||
* http.Handle("/foo", fooHandler)
|
||
*
|
||
* http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
|
||
* fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
|
||
* })
|
||
*
|
||
* log.Fatal(http.ListenAndServe(":8080", nil))
|
||
* ```
|
||
*
|
||
* More control over the server's behavior is available by creating a
|
||
* custom Server:
|
||
*
|
||
* ```
|
||
* s := &http.Server{
|
||
* Addr: ":8080",
|
||
* Handler: myHandler,
|
||
* ReadTimeout: 10 * time.Second,
|
||
* WriteTimeout: 10 * time.Second,
|
||
* MaxHeaderBytes: 1 << 20,
|
||
* }
|
||
* log.Fatal(s.ListenAndServe())
|
||
* ```
|
||
*
|
||
* Starting with Go 1.6, the http package has transparent support for the
|
||
* HTTP/2 protocol when using HTTPS. Programs that must disable HTTP/2
|
||
* can do so by setting Transport.TLSNextProto (for clients) or
|
||
* Server.TLSNextProto (for servers) to a non-nil, empty
|
||
* map. Alternatively, the following GODEBUG environment variables are
|
||
* currently supported:
|
||
*
|
||
* ```
|
||
* GODEBUG=http2client=0 # disable HTTP/2 client support
|
||
* GODEBUG=http2server=0 # disable HTTP/2 server support
|
||
* GODEBUG=http2debug=1 # enable verbose HTTP/2 debug logs
|
||
* GODEBUG=http2debug=2 # ... even more verbose, with frame dumps
|
||
* ```
|
||
*
|
||
* The GODEBUG variables are not covered by Go's API compatibility
|
||
* promise. Please report any issues before disabling HTTP/2
|
||
* support: https://golang.org/s/http2bug
|
||
*
|
||
* The http package's Transport and Server both automatically enable
|
||
* HTTP/2 support for simple configurations. To enable HTTP/2 for more
|
||
* complex configurations, to use lower-level HTTP/2 features, or to use
|
||
* a newer version of Go's http2 package, import "golang.org/x/net/http2"
|
||
* directly and use its ConfigureTransport and/or ConfigureServer
|
||
* functions. Manually configuring HTTP/2 via the golang.org/x/net/http2
|
||
* package takes precedence over the net/http package's built-in HTTP/2
|
||
* support.
|
||
*/
|
||
namespace http {
|
||
/**
|
||
* A Client is an HTTP client. Its zero value (DefaultClient) is a
|
||
* usable client that uses DefaultTransport.
|
||
*
|
||
* The Client's Transport typically has internal state (cached TCP
|
||
* connections), so Clients should be reused instead of created as
|
||
* needed. Clients are safe for concurrent use by multiple goroutines.
|
||
*
|
||
* A Client is higher-level than a RoundTripper (such as Transport)
|
||
* and additionally handles HTTP details such as cookies and
|
||
* redirects.
|
||
*
|
||
* When following redirects, the Client will forward all headers set on the
|
||
* initial Request except:
|
||
*
|
||
* • when forwarding sensitive headers like "Authorization",
|
||
* "WWW-Authenticate", and "Cookie" to untrusted targets.
|
||
* These headers will be ignored when following a redirect to a domain
|
||
* that is not a subdomain match or exact match of the initial domain.
|
||
* For example, a redirect from "foo.com" to either "foo.com" or "sub.foo.com"
|
||
* will forward the sensitive headers, but a redirect to "bar.com" will not.
|
||
*
|
||
* • when forwarding the "Cookie" header with a non-nil cookie Jar.
|
||
* Since each redirect may mutate the state of the cookie jar,
|
||
* a redirect may possibly alter a cookie set in the initial request.
|
||
* When forwarding the "Cookie" header, any mutated cookies will be omitted,
|
||
* with the expectation that the Jar will insert those mutated cookies
|
||
* with the updated values (assuming the origin matches).
|
||
* If Jar is nil, the initial cookies are forwarded without change.
|
||
*/
|
||
interface Client {
|
||
/**
|
||
* Transport specifies the mechanism by which individual
|
||
* HTTP requests are made.
|
||
* If nil, DefaultTransport is used.
|
||
*/
|
||
transport: RoundTripper
|
||
/**
|
||
* CheckRedirect specifies the policy for handling redirects.
|
||
* If CheckRedirect is not nil, the client calls it before
|
||
* following an HTTP redirect. The arguments req and via are
|
||
* the upcoming request and the requests made already, oldest
|
||
* first. If CheckRedirect returns an error, the Client's Get
|
||
* method returns both the previous Response (with its Body
|
||
* closed) and CheckRedirect's error (wrapped in a url.Error)
|
||
* instead of issuing the Request req.
|
||
* As a special case, if CheckRedirect returns ErrUseLastResponse,
|
||
* then the most recent response is returned with its body
|
||
* unclosed, along with a nil error.
|
||
*
|
||
* If CheckRedirect is nil, the Client uses its default policy,
|
||
* which is to stop after 10 consecutive requests.
|
||
*/
|
||
checkRedirect: (req: Request, via: Array<(Request | undefined)>) => void
|
||
/**
|
||
* Jar specifies the cookie jar.
|
||
*
|
||
* The Jar is used to insert relevant cookies into every
|
||
* outbound Request and is updated with the cookie values
|
||
* of every inbound Response. The Jar is consulted for every
|
||
* redirect that the Client follows.
|
||
*
|
||
* If Jar is nil, cookies are only sent if they are explicitly
|
||
* set on the Request.
|
||
*/
|
||
jar: CookieJar
|
||
/**
|
||
* Timeout specifies a time limit for requests made by this
|
||
* Client. The timeout includes connection time, any
|
||
* redirects, and reading the response body. The timer remains
|
||
* running after Get, Head, Post, or Do return and will
|
||
* interrupt reading of the Response.Body.
|
||
*
|
||
* A Timeout of zero means no timeout.
|
||
*
|
||
* The Client cancels requests to the underlying Transport
|
||
* as if the Request's Context ended.
|
||
*
|
||
* For compatibility, the Client will also use the deprecated
|
||
* CancelRequest method on Transport if found. New
|
||
* RoundTripper implementations should use the Request's Context
|
||
* for cancellation instead of implementing CancelRequest.
|
||
*/
|
||
timeout: time.Duration
|
||
}
|
||
interface Client {
|
||
/**
|
||
* Get issues a GET to the specified URL. If the response is one of the
|
||
* following redirect codes, Get follows the redirect after calling the
|
||
* Client's CheckRedirect function:
|
||
*
|
||
* ```
|
||
* 301 (Moved Permanently)
|
||
* 302 (Found)
|
||
* 303 (See Other)
|
||
* 307 (Temporary Redirect)
|
||
* 308 (Permanent Redirect)
|
||
* ```
|
||
*
|
||
* An error is returned if the Client's CheckRedirect function fails
|
||
* or if there was an HTTP protocol error. A non-2xx response doesn't
|
||
* cause an error. Any returned error will be of type *url.Error. The
|
||
* url.Error value's Timeout method will report true if the request
|
||
* timed out.
|
||
*
|
||
* When err is nil, resp always contains a non-nil resp.Body.
|
||
* Caller should close resp.Body when done reading from it.
|
||
*
|
||
* To make a request with custom headers, use NewRequest and Client.Do.
|
||
*
|
||
* To make a request with a specified context.Context, use NewRequestWithContext
|
||
* and Client.Do.
|
||
*/
|
||
get(url: string): (Response | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* Do sends an HTTP request and returns an HTTP response, following
|
||
* policy (such as redirects, cookies, auth) as configured on the
|
||
* client.
|
||
*
|
||
* An error is returned if caused by client policy (such as
|
||
* CheckRedirect), or failure to speak HTTP (such as a network
|
||
* connectivity problem). A non-2xx status code doesn't cause an
|
||
* error.
|
||
*
|
||
* If the returned error is nil, the Response will contain a non-nil
|
||
* Body which the user is expected to close. If the Body is not both
|
||
* read to EOF and closed, the Client's underlying RoundTripper
|
||
* (typically Transport) may not be able to re-use a persistent TCP
|
||
* connection to the server for a subsequent "keep-alive" request.
|
||
*
|
||
* The request Body, if non-nil, will be closed by the underlying
|
||
* Transport, even on errors.
|
||
*
|
||
* On error, any Response can be ignored. A non-nil Response with a
|
||
* non-nil error only occurs when CheckRedirect fails, and even then
|
||
* the returned Response.Body is already closed.
|
||
*
|
||
* Generally Get, Post, or PostForm will be used instead of Do.
|
||
*
|
||
* If the server replies with a redirect, the Client first uses the
|
||
* CheckRedirect function to determine whether the redirect should be
|
||
* followed. If permitted, a 301, 302, or 303 redirect causes
|
||
* subsequent requests to use HTTP method GET
|
||
* (or HEAD if the original request was HEAD), with no body.
|
||
* A 307 or 308 redirect preserves the original HTTP method and body,
|
||
* provided that the Request.GetBody function is defined.
|
||
* The NewRequest function automatically sets GetBody for common
|
||
* standard library body types.
|
||
*
|
||
* Any returned error will be of type *url.Error. The url.Error
|
||
* value's Timeout method will report true if the request timed out.
|
||
*/
|
||
do(req: Request): (Response | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* Post issues a POST to the specified URL.
|
||
*
|
||
* Caller should close resp.Body when done reading from it.
|
||
*
|
||
* If the provided body is an io.Closer, it is closed after the
|
||
* request.
|
||
*
|
||
* To set custom headers, use NewRequest and Client.Do.
|
||
*
|
||
* To make a request with a specified context.Context, use NewRequestWithContext
|
||
* and Client.Do.
|
||
*
|
||
* See the Client.Do method documentation for details on how redirects
|
||
* are handled.
|
||
*/
|
||
post(url: string, body: io.Reader): (Response | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* PostForm issues a POST to the specified URL,
|
||
* with data's keys and values URL-encoded as the request body.
|
||
*
|
||
* The Content-Type header is set to application/x-www-form-urlencoded.
|
||
* To set other headers, use NewRequest and Client.Do.
|
||
*
|
||
* When err is nil, resp always contains a non-nil resp.Body.
|
||
* Caller should close resp.Body when done reading from it.
|
||
*
|
||
* See the Client.Do method documentation for details on how redirects
|
||
* are handled.
|
||
*
|
||
* To make a request with a specified context.Context, use NewRequestWithContext
|
||
* and Client.Do.
|
||
*/
|
||
postForm(url: string, data: url.Values): (Response | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* Head issues a HEAD to the specified URL. If the response is one of the
|
||
* following redirect codes, Head follows the redirect after calling the
|
||
* Client's CheckRedirect function:
|
||
*
|
||
* ```
|
||
* 301 (Moved Permanently)
|
||
* 302 (Found)
|
||
* 303 (See Other)
|
||
* 307 (Temporary Redirect)
|
||
* 308 (Permanent Redirect)
|
||
* ```
|
||
*
|
||
* To make a request with a specified context.Context, use NewRequestWithContext
|
||
* and Client.Do.
|
||
*/
|
||
head(url: string): (Response | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* CloseIdleConnections closes any connections on its Transport which
|
||
* were previously connected from previous requests but are now
|
||
* sitting idle in a "keep-alive" state. It does not interrupt any
|
||
* connections currently in use.
|
||
*
|
||
* If the Client's Transport does not have a CloseIdleConnections method
|
||
* then this method does nothing.
|
||
*/
|
||
closeIdleConnections(): void
|
||
}
|
||
/**
|
||
* A Cookie represents an HTTP cookie as sent in the Set-Cookie header of an
|
||
* HTTP response or the Cookie header of an HTTP request.
|
||
*
|
||
* See https://tools.ietf.org/html/rfc6265 for details.
|
||
*/
|
||
interface Cookie {
|
||
name: string
|
||
value: string
|
||
path: string // optional
|
||
domain: string // optional
|
||
expires: time.Time // optional
|
||
rawExpires: string // for reading cookies only
|
||
/**
|
||
* MaxAge=0 means no 'Max-Age' attribute specified.
|
||
* MaxAge<0 means delete cookie now, equivalently 'Max-Age: 0'
|
||
* MaxAge>0 means Max-Age attribute present and given in seconds
|
||
*/
|
||
maxAge: number
|
||
secure: boolean
|
||
httpOnly: boolean
|
||
sameSite: SameSite
|
||
raw: string
|
||
unparsed: Array<string> // Raw text of unparsed attribute-value pairs
|
||
}
|
||
interface Cookie {
|
||
/**
|
||
* String returns the serialization of the cookie for use in a Cookie
|
||
* header (if only Name and Value are set) or a Set-Cookie response
|
||
* header (if other fields are set).
|
||
* If c is nil or c.Name is invalid, the empty string is returned.
|
||
*/
|
||
string(): string
|
||
}
|
||
interface Cookie {
|
||
/**
|
||
* Valid reports whether the cookie is valid.
|
||
*/
|
||
valid(): void
|
||
}
|
||
// @ts-ignore
|
||
import mathrand = rand
|
||
/**
|
||
* A Header represents the key-value pairs in an HTTP header.
|
||
*
|
||
* The keys should be in canonical form, as returned by
|
||
* CanonicalHeaderKey.
|
||
*/
|
||
interface Header extends _TygojaDict{}
|
||
interface Header {
|
||
/**
|
||
* Add adds the key, value pair to the header.
|
||
* It appends to any existing values associated with key.
|
||
* The key is case insensitive; it is canonicalized by
|
||
* CanonicalHeaderKey.
|
||
*/
|
||
add(key: string): void
|
||
}
|
||
interface Header {
|
||
/**
|
||
* Set sets the header entries associated with key to the
|
||
* single element value. It replaces any existing values
|
||
* associated with key. The key is case insensitive; it is
|
||
* canonicalized by textproto.CanonicalMIMEHeaderKey.
|
||
* To use non-canonical keys, assign to the map directly.
|
||
*/
|
||
set(key: string): void
|
||
}
|
||
interface Header {
|
||
/**
|
||
* Get gets the first value associated with the given key. If
|
||
* there are no values associated with the key, Get returns "".
|
||
* It is case insensitive; textproto.CanonicalMIMEHeaderKey is
|
||
* used to canonicalize the provided key. Get assumes that all
|
||
* keys are stored in canonical form. To use non-canonical keys,
|
||
* access the map directly.
|
||
*/
|
||
get(key: string): string
|
||
}
|
||
interface Header {
|
||
/**
|
||
* Values returns all values associated with the given key.
|
||
* It is case insensitive; textproto.CanonicalMIMEHeaderKey is
|
||
* used to canonicalize the provided key. To use non-canonical
|
||
* keys, access the map directly.
|
||
* The returned slice is not a copy.
|
||
*/
|
||
values(key: string): Array<string>
|
||
}
|
||
interface Header {
|
||
/**
|
||
* Del deletes the values associated with key.
|
||
* The key is case insensitive; it is canonicalized by
|
||
* CanonicalHeaderKey.
|
||
*/
|
||
del(key: string): void
|
||
}
|
||
interface Header {
|
||
/**
|
||
* Write writes a header in wire format.
|
||
*/
|
||
write(w: io.Writer): void
|
||
}
|
||
interface Header {
|
||
/**
|
||
* Clone returns a copy of h or nil if h is nil.
|
||
*/
|
||
clone(): Header
|
||
}
|
||
interface Header {
|
||
/**
|
||
* WriteSubset writes a header in wire format.
|
||
* If exclude is not nil, keys where exclude[key] == true are not written.
|
||
* Keys are not canonicalized before checking the exclude map.
|
||
*/
|
||
writeSubset(w: io.Writer, exclude: _TygojaDict): void
|
||
}
|
||
// @ts-ignore
|
||
import urlpkg = url
|
||
/**
|
||
* Response represents the response from an HTTP request.
|
||
*
|
||
* The Client and Transport return Responses from servers once
|
||
* the response headers have been received. The response body
|
||
* is streamed on demand as the Body field is read.
|
||
*/
|
||
interface Response {
|
||
status: string // e.g. "200 OK"
|
||
statusCode: number // e.g. 200
|
||
proto: string // e.g. "HTTP/1.0"
|
||
protoMajor: number // e.g. 1
|
||
protoMinor: number // e.g. 0
|
||
/**
|
||
* Header maps header keys to values. If the response had multiple
|
||
* headers with the same key, they may be concatenated, with comma
|
||
* delimiters. (RFC 7230, section 3.2.2 requires that multiple headers
|
||
* be semantically equivalent to a comma-delimited sequence.) When
|
||
* Header values are duplicated by other fields in this struct (e.g.,
|
||
* ContentLength, TransferEncoding, Trailer), the field values are
|
||
* authoritative.
|
||
*
|
||
* Keys in the map are canonicalized (see CanonicalHeaderKey).
|
||
*/
|
||
header: Header
|
||
/**
|
||
* Body represents the response body.
|
||
*
|
||
* The response body is streamed on demand as the Body field
|
||
* is read. If the network connection fails or the server
|
||
* terminates the response, Body.Read calls return an error.
|
||
*
|
||
* The http Client and Transport guarantee that Body is always
|
||
* non-nil, even on responses without a body or responses with
|
||
* a zero-length body. It is the caller's responsibility to
|
||
* close Body. The default HTTP client's Transport may not
|
||
* reuse HTTP/1.x "keep-alive" TCP connections if the Body is
|
||
* not read to completion and closed.
|
||
*
|
||
* The Body is automatically dechunked if the server replied
|
||
* with a "chunked" Transfer-Encoding.
|
||
*
|
||
* As of Go 1.12, the Body will also implement io.Writer
|
||
* on a successful "101 Switching Protocols" response,
|
||
* as used by WebSockets and HTTP/2's "h2c" mode.
|
||
*/
|
||
body: io.ReadCloser
|
||
/**
|
||
* ContentLength records the length of the associated content. The
|
||
* value -1 indicates that the length is unknown. Unless Request.Method
|
||
* is "HEAD", values >= 0 indicate that the given number of bytes may
|
||
* be read from Body.
|
||
*/
|
||
contentLength: number
|
||
/**
|
||
* Contains transfer encodings from outer-most to inner-most. Value is
|
||
* nil, means that "identity" encoding is used.
|
||
*/
|
||
transferEncoding: Array<string>
|
||
/**
|
||
* Close records whether the header directed that the connection be
|
||
* closed after reading Body. The value is advice for clients: neither
|
||
* ReadResponse nor Response.Write ever closes a connection.
|
||
*/
|
||
close: boolean
|
||
/**
|
||
* Uncompressed reports whether the response was sent compressed but
|
||
* was decompressed by the http package. When true, reading from
|
||
* Body yields the uncompressed content instead of the compressed
|
||
* content actually set from the server, ContentLength is set to -1,
|
||
* and the "Content-Length" and "Content-Encoding" fields are deleted
|
||
* from the responseHeader. To get the original response from
|
||
* the server, set Transport.DisableCompression to true.
|
||
*/
|
||
uncompressed: boolean
|
||
/**
|
||
* Trailer maps trailer keys to values in the same
|
||
* format as Header.
|
||
*
|
||
* The Trailer initially contains only nil values, one for
|
||
* each key specified in the server's "Trailer" header
|
||
* value. Those values are not added to Header.
|
||
*
|
||
* Trailer must not be accessed concurrently with Read calls
|
||
* on the Body.
|
||
*
|
||
* After Body.Read has returned io.EOF, Trailer will contain
|
||
* any trailer values sent by the server.
|
||
*/
|
||
trailer: Header
|
||
/**
|
||
* Request is the request that was sent to obtain this Response.
|
||
* Request's Body is nil (having already been consumed).
|
||
* This is only populated for Client requests.
|
||
*/
|
||
request?: Request
|
||
/**
|
||
* TLS contains information about the TLS connection on which the
|
||
* response was received. It is nil for unencrypted responses.
|
||
* The pointer is shared between responses and should not be
|
||
* modified.
|
||
*/
|
||
tls?: tls.ConnectionState
|
||
}
|
||
interface Response {
|
||
/**
|
||
* Cookies parses and returns the cookies set in the Set-Cookie headers.
|
||
*/
|
||
cookies(): Array<(Cookie | undefined)>
|
||
}
|
||
interface Response {
|
||
/**
|
||
* Location returns the URL of the response's "Location" header,
|
||
* if present. Relative redirects are resolved relative to
|
||
* the Response's Request. ErrNoLocation is returned if no
|
||
* Location header is present.
|
||
*/
|
||
location(): (url.URL | undefined)
|
||
}
|
||
interface Response {
|
||
/**
|
||
* ProtoAtLeast reports whether the HTTP protocol used
|
||
* in the response is at least major.minor.
|
||
*/
|
||
protoAtLeast(major: number): boolean
|
||
}
|
||
interface Response {
|
||
/**
|
||
* Write writes r to w in the HTTP/1.x server response format,
|
||
* including the status line, headers, body, and optional trailer.
|
||
*
|
||
* This method consults the following fields of the response r:
|
||
*
|
||
* ```
|
||
* StatusCode
|
||
* ProtoMajor
|
||
* ProtoMinor
|
||
* Request.Method
|
||
* TransferEncoding
|
||
* Trailer
|
||
* Body
|
||
* ContentLength
|
||
* Header, values for non-canonical keys will have unpredictable behavior
|
||
* ```
|
||
*
|
||
* The Response Body is closed after it is sent.
|
||
*/
|
||
write(w: io.Writer): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package oauth2 provides support for making
|
||
* OAuth2 authorized and authenticated HTTP requests,
|
||
* as specified in RFC 6749.
|
||
* It can additionally grant authorization with Bearer JWT.
|
||
*/
|
||
namespace oauth2 {
|
||
/**
|
||
* An AuthCodeOption is passed to Config.AuthCodeURL.
|
||
*/
|
||
interface AuthCodeOption {
|
||
}
|
||
/**
|
||
* Token represents the credentials used to authorize
|
||
* the requests to access protected resources on the OAuth 2.0
|
||
* provider's backend.
|
||
*
|
||
* Most users of this package should not access fields of Token
|
||
* directly. They're exported mostly for use by related packages
|
||
* implementing derivative OAuth2 flows.
|
||
*/
|
||
interface Token {
|
||
/**
|
||
* AccessToken is the token that authorizes and authenticates
|
||
* the requests.
|
||
*/
|
||
accessToken: string
|
||
/**
|
||
* TokenType is the type of token.
|
||
* The Type method returns either this or "Bearer", the default.
|
||
*/
|
||
tokenType: string
|
||
/**
|
||
* RefreshToken is a token that's used by the application
|
||
* (as opposed to the user) to refresh the access token
|
||
* if it expires.
|
||
*/
|
||
refreshToken: string
|
||
/**
|
||
* Expiry is the optional expiration time of the access token.
|
||
*
|
||
* If zero, TokenSource implementations will reuse the same
|
||
* token forever and RefreshToken or equivalent
|
||
* mechanisms for that TokenSource will not be used.
|
||
*/
|
||
expiry: time.Time
|
||
}
|
||
interface Token {
|
||
/**
|
||
* Type returns t.TokenType if non-empty, else "Bearer".
|
||
*/
|
||
type(): string
|
||
}
|
||
interface Token {
|
||
/**
|
||
* SetAuthHeader sets the Authorization header to r using the access
|
||
* token in t.
|
||
*
|
||
* This method is unnecessary when using Transport or an HTTP Client
|
||
* returned by this package.
|
||
*/
|
||
setAuthHeader(r: http.Request): void
|
||
}
|
||
interface Token {
|
||
/**
|
||
* WithExtra returns a new Token that's a clone of t, but using the
|
||
* provided raw extra map. This is only intended for use by packages
|
||
* implementing derivative OAuth2 flows.
|
||
*/
|
||
withExtra(extra: {
|
||
}): (Token | undefined)
|
||
}
|
||
interface Token {
|
||
/**
|
||
* Extra returns an extra field.
|
||
* Extra fields are key-value pairs returned by the server as a
|
||
* part of the token retrieval response.
|
||
*/
|
||
extra(key: string): {
|
||
}
|
||
}
|
||
interface Token {
|
||
/**
|
||
* Valid reports whether t is non-nil, has an AccessToken, and is not expired.
|
||
*/
|
||
valid(): boolean
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package echo implements high performance, minimalist Go web framework.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```
|
||
* package main
|
||
*
|
||
* import (
|
||
* "github.com/labstack/echo/v5"
|
||
* "github.com/labstack/echo/v5/middleware"
|
||
* "log"
|
||
* "net/http"
|
||
* )
|
||
*
|
||
* // Handler
|
||
* func hello(c echo.Context) error {
|
||
* return c.String(http.StatusOK, "Hello, World!")
|
||
* }
|
||
*
|
||
* func main() {
|
||
* // Echo instance
|
||
* e := echo.New()
|
||
*
|
||
* // Middleware
|
||
* e.Use(middleware.Logger())
|
||
* e.Use(middleware.Recover())
|
||
*
|
||
* // Routes
|
||
* e.GET("/", hello)
|
||
*
|
||
* // Start server
|
||
* if err := e.Start(":8080"); err != http.ErrServerClosed {
|
||
* log.Fatal(err)
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* Learn more at https://echo.labstack.com
|
||
*/
|
||
namespace echo {
|
||
/**
|
||
* Binder is the interface that wraps the Bind method.
|
||
*/
|
||
interface Binder {
|
||
bind(c: Context, i: {
|
||
}): void
|
||
}
|
||
/**
|
||
* ServableContext is interface that Echo context implementation must implement to be usable in middleware/handlers and
|
||
* be able to be routed by Router.
|
||
*/
|
||
interface ServableContext {
|
||
/**
|
||
* Reset resets the context after request completes. It must be called along
|
||
* with `Echo#AcquireContext()` and `Echo#ReleaseContext()`.
|
||
* See `Echo#ServeHTTP()`
|
||
*/
|
||
reset(r: http.Request, w: http.ResponseWriter): void
|
||
}
|
||
// @ts-ignore
|
||
import stdContext = context
|
||
/**
|
||
* JSONSerializer is the interface that encodes and decodes JSON to and from interfaces.
|
||
*/
|
||
interface JSONSerializer {
|
||
serialize(c: Context, i: {
|
||
}, indent: string): void
|
||
deserialize(c: Context, i: {
|
||
}): void
|
||
}
|
||
/**
|
||
* HTTPErrorHandler is a centralized HTTP error handler.
|
||
*/
|
||
interface HTTPErrorHandler {(c: Context, err: Error): void }
|
||
/**
|
||
* Validator is the interface that wraps the Validate function.
|
||
*/
|
||
interface Validator {
|
||
validate(i: {
|
||
}): void
|
||
}
|
||
/**
|
||
* Renderer is the interface that wraps the Render function.
|
||
*/
|
||
interface Renderer {
|
||
render(_arg0: io.Writer, _arg1: string, _arg2: {
|
||
}, _arg3: Context): void
|
||
}
|
||
/**
|
||
* Group is a set of sub-routes for a specified route. It can be used for inner
|
||
* routes that share a common middleware or functionality that should be separate
|
||
* from the parent echo instance while still inheriting from it.
|
||
*/
|
||
interface Group {
|
||
}
|
||
interface Group {
|
||
/**
|
||
* Use implements `Echo#Use()` for sub-routes within the Group.
|
||
* Group middlewares are not executed on request when there is no matching route found.
|
||
*/
|
||
use(...middleware: MiddlewareFunc[]): void
|
||
}
|
||
interface Group {
|
||
/**
|
||
* CONNECT implements `Echo#CONNECT()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
connect(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* DELETE implements `Echo#DELETE()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
delete(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* GET implements `Echo#GET()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
get(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* HEAD implements `Echo#HEAD()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
head(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* OPTIONS implements `Echo#OPTIONS()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
options(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* PATCH implements `Echo#PATCH()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
patch(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* POST implements `Echo#POST()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
post(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* PUT implements `Echo#PUT()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
put(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* TRACE implements `Echo#TRACE()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
trace(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* Any implements `Echo#Any()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
any(path: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): Routes
|
||
}
|
||
interface Group {
|
||
/**
|
||
* Match implements `Echo#Match()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
match(methods: Array<string>, path: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): Routes
|
||
}
|
||
interface Group {
|
||
/**
|
||
* Group creates a new sub-group with prefix and optional sub-group-level middleware.
|
||
* Important! Group middlewares are only executed in case there was exact route match and not
|
||
* for 404 (not found) or 405 (method not allowed) cases. If this kind of behaviour is needed then add
|
||
* a catch-all route `/*` for the group which handler returns always 404
|
||
*/
|
||
group(prefix: string, ...middleware: MiddlewareFunc[]): (Group | undefined)
|
||
}
|
||
interface Group {
|
||
/**
|
||
* Static implements `Echo#Static()` for sub-routes within the Group.
|
||
*/
|
||
static(pathPrefix: string): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* StaticFS implements `Echo#StaticFS()` for sub-routes within the Group.
|
||
*
|
||
* When dealing with `embed.FS` use `fs := echo.MustSubFS(fs, "rootDirectory") to create sub fs which uses necessary
|
||
* prefix for directory path. This is necessary as `//go:embed assets/images` embeds files with paths
|
||
* including `assets/images` as their prefix.
|
||
*/
|
||
staticFS(pathPrefix: string, filesystem: fs.FS): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* FileFS implements `Echo#FileFS()` for sub-routes within the Group.
|
||
*/
|
||
fileFS(path: string, filesystem: fs.FS, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* File implements `Echo#File()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
file(path: string, ...middleware: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* RouteNotFound implements `Echo#RouteNotFound()` for sub-routes within the Group.
|
||
*
|
||
* Example: `g.RouteNotFound("/*", func(c echo.Context) error { return c.NoContent(http.StatusNotFound) })`
|
||
*/
|
||
routeNotFound(path: string, h: HandlerFunc, ...m: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* Add implements `Echo#Add()` for sub-routes within the Group. Panics on error.
|
||
*/
|
||
add(method: string, handler: HandlerFunc, ...middleware: MiddlewareFunc[]): RouteInfo
|
||
}
|
||
interface Group {
|
||
/**
|
||
* AddRoute registers a new Routable with Router
|
||
*/
|
||
addRoute(route: Routable): RouteInfo
|
||
}
|
||
/**
|
||
* IPExtractor is a function to extract IP addr from http.Request.
|
||
* Set appropriate one to Echo#IPExtractor.
|
||
* See https://echo.labstack.com/guide/ip-address for more details.
|
||
*/
|
||
interface IPExtractor {(_arg0: http.Request): string }
|
||
/**
|
||
* Logger defines the logging interface that Echo uses internally in few places.
|
||
* For logging in handlers use your own logger instance (dependency injected or package/public variable) from logging framework of your choice.
|
||
*/
|
||
interface Logger {
|
||
/**
|
||
* Write provides writer interface for http.Server `ErrorLog` and for logging startup messages.
|
||
* `http.Server.ErrorLog` logs errors from accepting connections, unexpected behavior from handlers,
|
||
* and underlying FileSystem errors.
|
||
* `logger` middleware will use this method to write its JSON payload.
|
||
*/
|
||
write(p: string): number
|
||
/**
|
||
* Error logs the error
|
||
*/
|
||
error(err: Error): void
|
||
}
|
||
/**
|
||
* Response wraps an http.ResponseWriter and implements its interface to be used
|
||
* by an HTTP handler to construct an HTTP response.
|
||
* See: https://golang.org/pkg/net/http/#ResponseWriter
|
||
*/
|
||
interface Response {
|
||
writer: http.ResponseWriter
|
||
status: number
|
||
size: number
|
||
committed: boolean
|
||
}
|
||
interface Response {
|
||
/**
|
||
* Header returns the header map for the writer that will be sent by
|
||
* WriteHeader. Changing the header after a call to WriteHeader (or Write) has
|
||
* no effect unless the modified headers were declared as trailers by setting
|
||
* the "Trailer" header before the call to WriteHeader (see example)
|
||
* To suppress implicit response headers, set their value to nil.
|
||
* Example: https://golang.org/pkg/net/http/#example_ResponseWriter_trailers
|
||
*/
|
||
header(): http.Header
|
||
}
|
||
interface Response {
|
||
/**
|
||
* Before registers a function which is called just before the response is written.
|
||
*/
|
||
before(fn: () => void): void
|
||
}
|
||
interface Response {
|
||
/**
|
||
* After registers a function which is called just after the response is written.
|
||
* If the `Content-Length` is unknown, none of the after function is executed.
|
||
*/
|
||
after(fn: () => void): void
|
||
}
|
||
interface Response {
|
||
/**
|
||
* WriteHeader sends an HTTP response header with status code. If WriteHeader is
|
||
* not called explicitly, the first call to Write will trigger an implicit
|
||
* WriteHeader(http.StatusOK). Thus explicit calls to WriteHeader are mainly
|
||
* used to send error codes.
|
||
*/
|
||
writeHeader(code: number): void
|
||
}
|
||
interface Response {
|
||
/**
|
||
* Write writes the data to the connection as part of an HTTP reply.
|
||
*/
|
||
write(b: string): number
|
||
}
|
||
interface Response {
|
||
/**
|
||
* Flush implements the http.Flusher interface to allow an HTTP handler to flush
|
||
* buffered data to the client.
|
||
* See [http.Flusher](https://golang.org/pkg/net/http/#Flusher)
|
||
*/
|
||
flush(): void
|
||
}
|
||
interface Response {
|
||
/**
|
||
* Hijack implements the http.Hijacker interface to allow an HTTP handler to
|
||
* take over the connection.
|
||
* See [http.Hijacker](https://golang.org/pkg/net/http/#Hijacker)
|
||
*/
|
||
hijack(): [net.Conn, (bufio.ReadWriter | undefined)]
|
||
}
|
||
interface Routes {
|
||
/**
|
||
* Reverse reverses route to URL string by replacing path parameters with given params values.
|
||
*/
|
||
reverse(name: string, ...params: {
|
||
}[]): string
|
||
}
|
||
interface Routes {
|
||
/**
|
||
* FindByMethodPath searched for matching route info by method and path
|
||
*/
|
||
findByMethodPath(method: string, path: string): RouteInfo
|
||
}
|
||
interface Routes {
|
||
/**
|
||
* FilterByMethod searched for matching route info by method
|
||
*/
|
||
filterByMethod(method: string): Routes
|
||
}
|
||
interface Routes {
|
||
/**
|
||
* FilterByPath searched for matching route info by path
|
||
*/
|
||
filterByPath(path: string): Routes
|
||
}
|
||
interface Routes {
|
||
/**
|
||
* FilterByName searched for matching route info by name
|
||
*/
|
||
filterByName(name: string): Routes
|
||
}
|
||
/**
|
||
* Router is interface for routing request contexts to registered routes.
|
||
*
|
||
* Contract between Echo/Context instance and the router:
|
||
* * all routes must be added through methods on echo.Echo instance.
|
||
* ```
|
||
* Reason: Echo instance uses RouteInfo.Params() length to allocate slice for paths parameters (see `Echo.contextPathParamAllocSize`).
|
||
* ```
|
||
* * Router must populate Context during Router.Route call with:
|
||
* ```
|
||
* * RoutableContext.SetPath
|
||
* * RoutableContext.SetRawPathParams (IMPORTANT! with same slice pointer that c.RawPathParams() returns)
|
||
* * RoutableContext.SetRouteInfo
|
||
* And optionally can set additional information to Context with RoutableContext.Set
|
||
* ```
|
||
*/
|
||
interface Router {
|
||
/**
|
||
* Add registers Routable with the Router and returns registered RouteInfo
|
||
*/
|
||
add(routable: Routable): RouteInfo
|
||
/**
|
||
* Remove removes route from the Router
|
||
*/
|
||
remove(method: string, path: string): void
|
||
/**
|
||
* Routes returns information about all registered routes
|
||
*/
|
||
routes(): Routes
|
||
/**
|
||
* Route searches Router for matching route and applies it to the given context. In case when no matching method
|
||
* was not found (405) or no matching route exists for path (404), router will return its implementation of 405/404
|
||
* handler function.
|
||
*/
|
||
route(c: RoutableContext): HandlerFunc
|
||
}
|
||
/**
|
||
* Routable is interface for registering Route with Router. During route registration process the Router will
|
||
* convert Routable to RouteInfo with ToRouteInfo method. By creating custom implementation of Routable additional
|
||
* information about registered route can be stored in Routes (i.e. privileges used with route etc.)
|
||
*/
|
||
interface Routable {
|
||
/**
|
||
* ToRouteInfo converts Routable to RouteInfo
|
||
*
|
||
* This method is meant to be used by Router after it parses url for path parameters, to store information about
|
||
* route just added.
|
||
*/
|
||
toRouteInfo(params: Array<string>): RouteInfo
|
||
/**
|
||
* ToRoute converts Routable to Route which Router uses to register the method handler for path.
|
||
*
|
||
* This method is meant to be used by Router to get fields (including handler and middleware functions) needed to
|
||
* add Route to Router.
|
||
*/
|
||
toRoute(): Route
|
||
/**
|
||
* ForGroup recreates routable with added group prefix and group middlewares it is grouped to.
|
||
*
|
||
* Is necessary for Echo.Group to be able to add/register Routable with Router and having group prefix and group
|
||
* middlewares included in actually registered Route.
|
||
*/
|
||
forGroup(pathPrefix: string, middlewares: Array<MiddlewareFunc>): Routable
|
||
}
|
||
/**
|
||
* Routes is collection of RouteInfo instances with various helper methods.
|
||
*/
|
||
interface Routes extends Array<RouteInfo>{}
|
||
/**
|
||
* RouteInfo describes registered route base fields.
|
||
* Method+Path pair uniquely identifies the Route. Name can have duplicates.
|
||
*/
|
||
interface RouteInfo {
|
||
method(): string
|
||
path(): string
|
||
name(): string
|
||
params(): Array<string>
|
||
reverse(...params: {
|
||
}[]): string
|
||
}
|
||
/**
|
||
* PathParams is collections of PathParam instances with various helper methods
|
||
*/
|
||
interface PathParams extends Array<PathParam>{}
|
||
interface PathParams {
|
||
/**
|
||
* Get returns path parameter value for given name or default value.
|
||
*/
|
||
get(name: string, defaultValue: string): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package driver defines interfaces to be implemented by database
|
||
* drivers as used by package sql.
|
||
*
|
||
* Most code should use package sql.
|
||
*
|
||
* The driver interface has evolved over time. Drivers should implement
|
||
* Connector and DriverContext interfaces.
|
||
* The Connector.Connect and Driver.Open methods should never return ErrBadConn.
|
||
* ErrBadConn should only be returned from Validator, SessionResetter, or
|
||
* a query method if the connection is already in an invalid (e.g. closed) state.
|
||
*
|
||
* All Conn implementations should implement the following interfaces:
|
||
* Pinger, SessionResetter, and Validator.
|
||
*
|
||
* If named parameters or context are supported, the driver's Conn should implement:
|
||
* ExecerContext, QueryerContext, ConnPrepareContext, and ConnBeginTx.
|
||
*
|
||
* To support custom data types, implement NamedValueChecker. NamedValueChecker
|
||
* also allows queries to accept per-query options as a parameter by returning
|
||
* ErrRemoveArgument from CheckNamedValue.
|
||
*
|
||
* If multiple result sets are supported, Rows should implement RowsNextResultSet.
|
||
* If the driver knows how to describe the types present in the returned result
|
||
* it should implement the following interfaces: RowsColumnTypeScanType,
|
||
* RowsColumnTypeDatabaseTypeName, RowsColumnTypeLength, RowsColumnTypeNullable,
|
||
* and RowsColumnTypePrecisionScale. A given row value may also return a Rows
|
||
* type, which may represent a database cursor value.
|
||
*
|
||
* Before a connection is returned to the connection pool after use, IsValid is
|
||
* called if implemented. Before a connection is reused for another query,
|
||
* ResetSession is called if implemented. If a connection is never returned to the
|
||
* connection pool but immediately reused, then ResetSession is called prior to
|
||
* reuse but IsValid is not called.
|
||
*/
|
||
namespace driver {
|
||
/**
|
||
* Value is a value that drivers must be able to handle.
|
||
* It is either nil, a type handled by a database driver's NamedValueChecker
|
||
* interface, or an instance of one of these types:
|
||
*
|
||
* ```
|
||
* int64
|
||
* float64
|
||
* bool
|
||
* []byte
|
||
* string
|
||
* time.Time
|
||
* ```
|
||
*
|
||
* If the driver supports cursors, a returned Value may also implement the Rows interface
|
||
* in this package. This is used, for example, when a user selects a cursor
|
||
* such as "select cursor(select * from my_table) from dual". If the Rows
|
||
* from the select is closed, the cursor Rows will also be closed.
|
||
*/
|
||
interface Value extends _TygojaAny{}
|
||
/**
|
||
* Driver is the interface that must be implemented by a database
|
||
* driver.
|
||
*
|
||
* Database drivers may implement DriverContext for access
|
||
* to contexts and to parse the name only once for a pool of connections,
|
||
* instead of once per connection.
|
||
*/
|
||
interface Driver {
|
||
/**
|
||
* Open returns a new connection to the database.
|
||
* The name is a string in a driver-specific format.
|
||
*
|
||
* Open may return a cached connection (one previously
|
||
* closed), but doing so is unnecessary; the sql package
|
||
* maintains a pool of idle connections for efficient re-use.
|
||
*
|
||
* The returned connection is only used by one goroutine at a
|
||
* time.
|
||
*/
|
||
open(name: string): Conn
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package sql provides a generic interface around SQL (or SQL-like)
|
||
* databases.
|
||
*
|
||
* The sql package must be used in conjunction with a database driver.
|
||
* See https://golang.org/s/sqldrivers for a list of drivers.
|
||
*
|
||
* Drivers that do not support context cancellation will not return until
|
||
* after the query is completed.
|
||
*
|
||
* For usage examples, see the wiki page at
|
||
* https://golang.org/s/sqlwiki.
|
||
*/
|
||
namespace sql {
|
||
/**
|
||
* IsolationLevel is the transaction isolation level used in TxOptions.
|
||
*/
|
||
interface IsolationLevel extends Number{}
|
||
interface IsolationLevel {
|
||
/**
|
||
* String returns the name of the transaction isolation level.
|
||
*/
|
||
string(): string
|
||
}
|
||
/**
|
||
* DBStats contains database statistics.
|
||
*/
|
||
interface DBStats {
|
||
maxOpenConnections: number // Maximum number of open connections to the database.
|
||
/**
|
||
* Pool Status
|
||
*/
|
||
openConnections: number // The number of established connections both in use and idle.
|
||
inUse: number // The number of connections currently in use.
|
||
idle: number // The number of idle connections.
|
||
/**
|
||
* Counters
|
||
*/
|
||
waitCount: number // The total number of connections waited for.
|
||
waitDuration: time.Duration // The total time blocked waiting for a new connection.
|
||
maxIdleClosed: number // The total number of connections closed due to SetMaxIdleConns.
|
||
maxIdleTimeClosed: number // The total number of connections closed due to SetConnMaxIdleTime.
|
||
maxLifetimeClosed: number // The total number of connections closed due to SetConnMaxLifetime.
|
||
}
|
||
/**
|
||
* Conn represents a single database connection rather than a pool of database
|
||
* connections. Prefer running queries from DB unless there is a specific
|
||
* need for a continuous single database connection.
|
||
*
|
||
* A Conn must call Close to return the connection to the database pool
|
||
* and may do so concurrently with a running query.
|
||
*
|
||
* After a call to Close, all operations on the
|
||
* connection fail with ErrConnDone.
|
||
*/
|
||
interface Conn {
|
||
}
|
||
interface Conn {
|
||
/**
|
||
* PingContext verifies the connection to the database is still alive.
|
||
*/
|
||
pingContext(ctx: context.Context): void
|
||
}
|
||
interface Conn {
|
||
/**
|
||
* ExecContext executes a query without returning any rows.
|
||
* The args are for any placeholder parameters in the query.
|
||
*/
|
||
execContext(ctx: context.Context, query: string, ...args: any[]): Result
|
||
}
|
||
interface Conn {
|
||
/**
|
||
* QueryContext executes a query that returns rows, typically a SELECT.
|
||
* The args are for any placeholder parameters in the query.
|
||
*/
|
||
queryContext(ctx: context.Context, query: string, ...args: any[]): (Rows | undefined)
|
||
}
|
||
interface Conn {
|
||
/**
|
||
* QueryRowContext executes a query that is expected to return at most one row.
|
||
* QueryRowContext always returns a non-nil value. Errors are deferred until
|
||
* Row's Scan method is called.
|
||
* If the query selects no rows, the *Row's Scan will return ErrNoRows.
|
||
* Otherwise, the *Row's Scan scans the first selected row and discards
|
||
* the rest.
|
||
*/
|
||
queryRowContext(ctx: context.Context, query: string, ...args: any[]): (Row | undefined)
|
||
}
|
||
interface Conn {
|
||
/**
|
||
* PrepareContext creates a prepared statement for later queries or executions.
|
||
* Multiple queries or executions may be run concurrently from the
|
||
* returned statement.
|
||
* The caller must call the statement's Close method
|
||
* when the statement is no longer needed.
|
||
*
|
||
* The provided context is used for the preparation of the statement, not for the
|
||
* execution of the statement.
|
||
*/
|
||
prepareContext(ctx: context.Context, query: string): (Stmt | undefined)
|
||
}
|
||
interface Conn {
|
||
/**
|
||
* Raw executes f exposing the underlying driver connection for the
|
||
* duration of f. The driverConn must not be used outside of f.
|
||
*
|
||
* Once f returns and err is not driver.ErrBadConn, the Conn will continue to be usable
|
||
* until Conn.Close is called.
|
||
*/
|
||
raw(f: (driverConn: any) => void): void
|
||
}
|
||
interface Conn {
|
||
/**
|
||
* BeginTx starts a transaction.
|
||
*
|
||
* The provided context is used until the transaction is committed or rolled back.
|
||
* If the context is canceled, the sql package will roll back
|
||
* the transaction. Tx.Commit will return an error if the context provided to
|
||
* BeginTx is canceled.
|
||
*
|
||
* The provided TxOptions is optional and may be nil if defaults should be used.
|
||
* If a non-default isolation level is used that the driver doesn't support,
|
||
* an error will be returned.
|
||
*/
|
||
beginTx(ctx: context.Context, opts: TxOptions): (Tx | undefined)
|
||
}
|
||
interface Conn {
|
||
/**
|
||
* Close returns the connection to the connection pool.
|
||
* All operations after a Close will return with ErrConnDone.
|
||
* Close is safe to call concurrently with other operations and will
|
||
* block until all other operations finish. It may be useful to first
|
||
* cancel any used context and then call close directly after.
|
||
*/
|
||
close(): void
|
||
}
|
||
/**
|
||
* ColumnType contains the name and type of a column.
|
||
*/
|
||
interface ColumnType {
|
||
}
|
||
interface ColumnType {
|
||
/**
|
||
* Name returns the name or alias of the column.
|
||
*/
|
||
name(): string
|
||
}
|
||
interface ColumnType {
|
||
/**
|
||
* Length returns the column type length for variable length column types such
|
||
* as text and binary field types. If the type length is unbounded the value will
|
||
* be math.MaxInt64 (any database limits will still apply).
|
||
* If the column type is not variable length, such as an int, or if not supported
|
||
* by the driver ok is false.
|
||
*/
|
||
length(): [number, boolean]
|
||
}
|
||
interface ColumnType {
|
||
/**
|
||
* DecimalSize returns the scale and precision of a decimal type.
|
||
* If not applicable or if not supported ok is false.
|
||
*/
|
||
decimalSize(): [number, boolean]
|
||
}
|
||
interface ColumnType {
|
||
/**
|
||
* ScanType returns a Go type suitable for scanning into using Rows.Scan.
|
||
* If a driver does not support this property ScanType will return
|
||
* the type of an empty interface.
|
||
*/
|
||
scanType(): reflect.Type
|
||
}
|
||
interface ColumnType {
|
||
/**
|
||
* Nullable reports whether the column may be null.
|
||
* If a driver does not support this property ok will be false.
|
||
*/
|
||
nullable(): boolean
|
||
}
|
||
interface ColumnType {
|
||
/**
|
||
* DatabaseTypeName returns the database system name of the column type. If an empty
|
||
* string is returned, then the driver type name is not supported.
|
||
* Consult your driver documentation for a list of driver data types. Length specifiers
|
||
* are not included.
|
||
* Common type names include "VARCHAR", "TEXT", "NVARCHAR", "DECIMAL", "BOOL",
|
||
* "INT", and "BIGINT".
|
||
*/
|
||
databaseTypeName(): string
|
||
}
|
||
/**
|
||
* Row is the result of calling QueryRow to select a single row.
|
||
*/
|
||
interface Row {
|
||
}
|
||
interface Row {
|
||
/**
|
||
* Scan copies the columns from the matched row into the values
|
||
* pointed at by dest. See the documentation on Rows.Scan for details.
|
||
* If more than one row matches the query,
|
||
* Scan uses the first row and discards the rest. If no row matches
|
||
* the query, Scan returns ErrNoRows.
|
||
*/
|
||
scan(...dest: any[]): void
|
||
}
|
||
interface Row {
|
||
/**
|
||
* Err provides a way for wrapping packages to check for
|
||
* query errors without calling Scan.
|
||
* Err returns the error, if any, that was encountered while running the query.
|
||
* If this error is not nil, this error will also be returned from Scan.
|
||
*/
|
||
err(): void
|
||
}
|
||
}
|
||
|
||
namespace store {
|
||
/**
|
||
* Store defines a concurrent safe in memory key-value data store.
|
||
*/
|
||
interface Store<T> {
|
||
}
|
||
interface Store<T> {
|
||
/**
|
||
* Reset clears the store and replaces the store data with a
|
||
* shallow copy of the provided newData.
|
||
*/
|
||
reset(newData: _TygojaDict): void
|
||
}
|
||
interface Store<T> {
|
||
/**
|
||
* Length returns the current number of elements in the store.
|
||
*/
|
||
length(): number
|
||
}
|
||
interface Store<T> {
|
||
/**
|
||
* RemoveAll removes all the existing store entries.
|
||
*/
|
||
removeAll(): void
|
||
}
|
||
interface Store<T> {
|
||
/**
|
||
* Remove removes a single entry from the store.
|
||
*
|
||
* Remove does nothing if key doesn't exist in the store.
|
||
*/
|
||
remove(key: string): void
|
||
}
|
||
interface Store<T> {
|
||
/**
|
||
* Has checks if element with the specified key exist or not.
|
||
*/
|
||
has(key: string): boolean
|
||
}
|
||
interface Store<T> {
|
||
/**
|
||
* Get returns a single element value from the store.
|
||
*
|
||
* If key is not set, the zero T value is returned.
|
||
*/
|
||
get(key: string): T
|
||
}
|
||
interface Store<T> {
|
||
/**
|
||
* GetAll returns a shallow copy of the current store data.
|
||
*/
|
||
getAll(): _TygojaDict
|
||
}
|
||
interface Store<T> {
|
||
/**
|
||
* Set sets (or overwrite if already exist) a new value for key.
|
||
*/
|
||
set(key: string, value: T): void
|
||
}
|
||
interface Store<T> {
|
||
/**
|
||
* SetIfLessThanLimit sets (or overwrite if already exist) a new value for key.
|
||
*
|
||
* This method is similar to Set() but **it will skip adding new elements**
|
||
* to the store if the store length has reached the specified limit.
|
||
* false is returned if maxAllowedElements limit is reached.
|
||
*/
|
||
setIfLessThanLimit(key: string, value: T, maxAllowedElements: number): boolean
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package types implements some commonly used db serializable types
|
||
* like datetime, json, etc.
|
||
*/
|
||
namespace types {
|
||
/**
|
||
* DateTime represents a [time.Time] instance in UTC that is wrapped
|
||
* and serialized using the app default date layout.
|
||
*/
|
||
interface DateTime {
|
||
}
|
||
interface DateTime {
|
||
/**
|
||
* Time returns the internal [time.Time] instance.
|
||
*/
|
||
time(): time.Time
|
||
}
|
||
interface DateTime {
|
||
/**
|
||
* IsZero checks whether the current DateTime instance has zero time value.
|
||
*/
|
||
isZero(): boolean
|
||
}
|
||
interface DateTime {
|
||
/**
|
||
* String serializes the current DateTime instance into a formatted
|
||
* UTC date string.
|
||
*
|
||
* The zero value is serialized to an empty string.
|
||
*/
|
||
string(): string
|
||
}
|
||
interface DateTime {
|
||
/**
|
||
* MarshalJSON implements the [json.Marshaler] interface.
|
||
*/
|
||
marshalJSON(): string
|
||
}
|
||
interface DateTime {
|
||
/**
|
||
* UnmarshalJSON implements the [json.Unmarshaler] interface.
|
||
*/
|
||
unmarshalJSON(b: string): void
|
||
}
|
||
interface DateTime {
|
||
/**
|
||
* Value implements the [driver.Valuer] interface.
|
||
*/
|
||
value(): driver.Value
|
||
}
|
||
interface DateTime {
|
||
/**
|
||
* Scan implements [sql.Scanner] interface to scan the provided value
|
||
* into the current DateTime instance.
|
||
*/
|
||
scan(value: any): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package schema implements custom Schema and SchemaField datatypes
|
||
* for handling the Collection schema definitions.
|
||
*/
|
||
namespace schema {
|
||
// @ts-ignore
|
||
import validation = ozzo_validation
|
||
/**
|
||
* SchemaField defines a single schema field structure.
|
||
*/
|
||
interface SchemaField {
|
||
system: boolean
|
||
id: string
|
||
name: string
|
||
type: string
|
||
required: boolean
|
||
/**
|
||
* Deprecated: This field is no-op and will be removed in future versions.
|
||
* Please use the collection.Indexes field to define a unique constraint.
|
||
*/
|
||
unique: boolean
|
||
options: any
|
||
}
|
||
interface SchemaField {
|
||
/**
|
||
* ColDefinition returns the field db column type definition as string.
|
||
*/
|
||
colDefinition(): string
|
||
}
|
||
interface SchemaField {
|
||
/**
|
||
* String serializes and returns the current field as string.
|
||
*/
|
||
string(): string
|
||
}
|
||
interface SchemaField {
|
||
/**
|
||
* MarshalJSON implements the [json.Marshaler] interface.
|
||
*/
|
||
marshalJSON(): string
|
||
}
|
||
interface SchemaField {
|
||
/**
|
||
* UnmarshalJSON implements the [json.Unmarshaler] interface.
|
||
*
|
||
* The schema field options are auto initialized on success.
|
||
*/
|
||
unmarshalJSON(data: string): void
|
||
}
|
||
interface SchemaField {
|
||
/**
|
||
* Validate makes `SchemaField` validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface SchemaField {
|
||
/**
|
||
* InitOptions initializes the current field options based on its type.
|
||
*
|
||
* Returns error on unknown field type.
|
||
*/
|
||
initOptions(): void
|
||
}
|
||
interface SchemaField {
|
||
/**
|
||
* PrepareValue returns normalized and properly formatted field value.
|
||
*/
|
||
prepareValue(value: any): any
|
||
}
|
||
interface SchemaField {
|
||
/**
|
||
* PrepareValueWithModifier returns normalized and properly formatted field value
|
||
* by "merging" baseValue with the modifierValue based on the specified modifier (+ or -).
|
||
*/
|
||
prepareValueWithModifier(baseValue: any, modifier: string, modifierValue: any): any
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package models implements all PocketBase DB models and DTOs.
|
||
*/
|
||
namespace models {
|
||
/**
|
||
* Model defines an interface with common methods that all db models should have.
|
||
*/
|
||
interface Model {
|
||
tableName(): string
|
||
isNew(): boolean
|
||
markAsNew(): void
|
||
markAsNotNew(): void
|
||
hasId(): boolean
|
||
getId(): string
|
||
setId(id: string): void
|
||
getCreated(): types.DateTime
|
||
getUpdated(): types.DateTime
|
||
refreshId(): void
|
||
refreshCreated(): void
|
||
refreshUpdated(): void
|
||
}
|
||
/**
|
||
* BaseModel defines common fields and methods used by all other models.
|
||
*/
|
||
interface BaseModel {
|
||
id: string
|
||
created: types.DateTime
|
||
updated: types.DateTime
|
||
}
|
||
interface BaseModel {
|
||
/**
|
||
* HasId returns whether the model has a nonzero id.
|
||
*/
|
||
hasId(): boolean
|
||
}
|
||
interface BaseModel {
|
||
/**
|
||
* GetId returns the model id.
|
||
*/
|
||
getId(): string
|
||
}
|
||
interface BaseModel {
|
||
/**
|
||
* SetId sets the model id to the provided string value.
|
||
*/
|
||
setId(id: string): void
|
||
}
|
||
interface BaseModel {
|
||
/**
|
||
* MarkAsNew marks the model as "new" (aka. enforces m.IsNew() to be true).
|
||
*/
|
||
markAsNew(): void
|
||
}
|
||
interface BaseModel {
|
||
/**
|
||
* MarkAsNotNew marks the model as "not new" (aka. enforces m.IsNew() to be false)
|
||
*/
|
||
markAsNotNew(): void
|
||
}
|
||
interface BaseModel {
|
||
/**
|
||
* IsNew indicates what type of db query (insert or update)
|
||
* should be used with the model instance.
|
||
*/
|
||
isNew(): boolean
|
||
}
|
||
interface BaseModel {
|
||
/**
|
||
* GetCreated returns the model Created datetime.
|
||
*/
|
||
getCreated(): types.DateTime
|
||
}
|
||
interface BaseModel {
|
||
/**
|
||
* GetUpdated returns the model Updated datetime.
|
||
*/
|
||
getUpdated(): types.DateTime
|
||
}
|
||
interface BaseModel {
|
||
/**
|
||
* RefreshId generates and sets a new model id.
|
||
*
|
||
* The generated id is a cryptographically random 15 characters length string.
|
||
*/
|
||
refreshId(): void
|
||
}
|
||
interface BaseModel {
|
||
/**
|
||
* RefreshCreated updates the model Created field with the current datetime.
|
||
*/
|
||
refreshCreated(): void
|
||
}
|
||
interface BaseModel {
|
||
/**
|
||
* RefreshUpdated updates the model Updated field with the current datetime.
|
||
*/
|
||
refreshUpdated(): void
|
||
}
|
||
interface BaseModel {
|
||
/**
|
||
* PostScan implements the [dbx.PostScanner] interface.
|
||
*
|
||
* It is executed right after the model was populated with the db row values.
|
||
*/
|
||
postScan(): void
|
||
}
|
||
// @ts-ignore
|
||
import validation = ozzo_validation
|
||
/**
|
||
* CollectionBaseOptions defines the "base" Collection.Options fields.
|
||
*/
|
||
interface CollectionBaseOptions {
|
||
}
|
||
interface CollectionBaseOptions {
|
||
/**
|
||
* Validate implements [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
/**
|
||
* CollectionAuthOptions defines the "auth" Collection.Options fields.
|
||
*/
|
||
interface CollectionAuthOptions {
|
||
manageRule?: string
|
||
allowOAuth2Auth: boolean
|
||
allowUsernameAuth: boolean
|
||
allowEmailAuth: boolean
|
||
requireEmail: boolean
|
||
exceptEmailDomains: Array<string>
|
||
onlyEmailDomains: Array<string>
|
||
minPasswordLength: number
|
||
}
|
||
interface CollectionAuthOptions {
|
||
/**
|
||
* Validate implements [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
/**
|
||
* CollectionViewOptions defines the "view" Collection.Options fields.
|
||
*/
|
||
interface CollectionViewOptions {
|
||
query: string
|
||
}
|
||
interface CollectionViewOptions {
|
||
/**
|
||
* Validate implements [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
type _subEdykk = BaseModel
|
||
interface Param extends _subEdykk {
|
||
key: string
|
||
value: types.JsonRaw
|
||
}
|
||
interface Param {
|
||
tableName(): string
|
||
}
|
||
type _subOKrKJ = BaseModel
|
||
interface Request extends _subOKrKJ {
|
||
url: string
|
||
method: string
|
||
status: number
|
||
auth: string
|
||
userIp: string
|
||
remoteIp: string
|
||
referer: string
|
||
userAgent: string
|
||
meta: types.JsonMap
|
||
}
|
||
interface Request {
|
||
tableName(): string
|
||
}
|
||
interface TableInfoRow {
|
||
/**
|
||
* the `db:"pk"` tag has special semantic so we cannot rename
|
||
* the original field without specifying a custom mapper
|
||
*/
|
||
pk: number
|
||
index: number
|
||
name: string
|
||
type: string
|
||
notNull: boolean
|
||
defaultValue: types.JsonRaw
|
||
}
|
||
}
|
||
|
||
namespace mailer {
|
||
/**
|
||
* Mailer defines a base mail client interface.
|
||
*/
|
||
interface Mailer {
|
||
/**
|
||
* Send sends an email with the provided Message.
|
||
*/
|
||
send(message: Message): void
|
||
}
|
||
}
|
||
|
||
namespace settings {
|
||
// @ts-ignore
|
||
import validation = ozzo_validation
|
||
interface TokenConfig {
|
||
secret: string
|
||
duration: number
|
||
}
|
||
interface TokenConfig {
|
||
/**
|
||
* Validate makes TokenConfig validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface SmtpConfig {
|
||
enabled: boolean
|
||
host: string
|
||
port: number
|
||
username: string
|
||
password: string
|
||
/**
|
||
* SMTP AUTH - PLAIN (default) or LOGIN
|
||
*/
|
||
authMethod: string
|
||
/**
|
||
* Whether to enforce TLS encryption for the mail server connection.
|
||
*
|
||
* When set to false StartTLS command is send, leaving the server
|
||
* to decide whether to upgrade the connection or not.
|
||
*/
|
||
tls: boolean
|
||
}
|
||
interface SmtpConfig {
|
||
/**
|
||
* Validate makes SmtpConfig validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface S3Config {
|
||
enabled: boolean
|
||
bucket: string
|
||
region: string
|
||
endpoint: string
|
||
accessKey: string
|
||
secret: string
|
||
forcePathStyle: boolean
|
||
}
|
||
interface S3Config {
|
||
/**
|
||
* Validate makes S3Config validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface BackupsConfig {
|
||
/**
|
||
* Cron is a cron expression to schedule auto backups, eg. "* * * * *".
|
||
*
|
||
* Leave it empty to disable the auto backups functionality.
|
||
*/
|
||
cron: string
|
||
/**
|
||
* CronMaxKeep is the the max number of cron generated backups to
|
||
* keep before removing older entries.
|
||
*
|
||
* This field works only when the cron config has valid cron expression.
|
||
*/
|
||
cronMaxKeep: number
|
||
/**
|
||
* S3 is an optional S3 storage config specifying where to store the app backups.
|
||
*/
|
||
s3: S3Config
|
||
}
|
||
interface BackupsConfig {
|
||
/**
|
||
* Validate makes BackupsConfig validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface MetaConfig {
|
||
appName: string
|
||
appUrl: string
|
||
hideControls: boolean
|
||
senderName: string
|
||
senderAddress: string
|
||
verificationTemplate: EmailTemplate
|
||
resetPasswordTemplate: EmailTemplate
|
||
confirmEmailChangeTemplate: EmailTemplate
|
||
}
|
||
interface MetaConfig {
|
||
/**
|
||
* Validate makes MetaConfig validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface LogsConfig {
|
||
maxDays: number
|
||
}
|
||
interface LogsConfig {
|
||
/**
|
||
* Validate makes LogsConfig validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface AuthProviderConfig {
|
||
enabled: boolean
|
||
clientId: string
|
||
clientSecret: string
|
||
authUrl: string
|
||
tokenUrl: string
|
||
userApiUrl: string
|
||
}
|
||
interface AuthProviderConfig {
|
||
/**
|
||
* Validate makes `ProviderConfig` validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface AuthProviderConfig {
|
||
/**
|
||
* SetupProvider loads the current AuthProviderConfig into the specified provider.
|
||
*/
|
||
setupProvider(provider: auth.Provider): void
|
||
}
|
||
/**
|
||
* Deprecated: Will be removed in v0.9+
|
||
*/
|
||
interface EmailAuthConfig {
|
||
enabled: boolean
|
||
exceptDomains: Array<string>
|
||
onlyDomains: Array<string>
|
||
minPasswordLength: number
|
||
}
|
||
interface EmailAuthConfig {
|
||
/**
|
||
* Deprecated: Will be removed in v0.9+
|
||
*/
|
||
validate(): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package daos handles common PocketBase DB model manipulations.
|
||
*
|
||
* Think of daos as DB repository and service layer in one.
|
||
*/
|
||
namespace daos {
|
||
/**
|
||
* ExpandFetchFunc defines the function that is used to fetch the expanded relation records.
|
||
*/
|
||
interface ExpandFetchFunc {(relCollection: models.Collection, relIds: Array<string>): Array<(models.Record | undefined)> }
|
||
// @ts-ignore
|
||
import validation = ozzo_validation
|
||
interface RequestsStatsItem {
|
||
total: number
|
||
date: types.DateTime
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package pflag is a drop-in replacement for Go's flag package, implementing
|
||
* POSIX/GNU-style --flags.
|
||
*
|
||
* pflag is compatible with the GNU extensions to the POSIX recommendations
|
||
* for command-line options. See
|
||
* http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html
|
||
*
|
||
* Usage:
|
||
*
|
||
* pflag is a drop-in replacement of Go's native flag package. If you import
|
||
* pflag under the name "flag" then all code should continue to function
|
||
* with no changes.
|
||
*
|
||
* ```
|
||
* import flag "github.com/spf13/pflag"
|
||
* ```
|
||
*
|
||
* There is one exception to this: if you directly instantiate the Flag struct
|
||
* there is one more field "Shorthand" that you will need to set.
|
||
* Most code never instantiates this struct directly, and instead uses
|
||
* functions such as String(), BoolVar(), and Var(), and is therefore
|
||
* unaffected.
|
||
*
|
||
* Define flags using flag.String(), Bool(), Int(), etc.
|
||
*
|
||
* This declares an integer flag, -flagname, stored in the pointer ip, with type *int.
|
||
* ```
|
||
* var ip = flag.Int("flagname", 1234, "help message for flagname")
|
||
* ```
|
||
* If you like, you can bind the flag to a variable using the Var() functions.
|
||
* ```
|
||
* var flagvar int
|
||
* func init() {
|
||
* flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
|
||
* }
|
||
* ```
|
||
* Or you can create custom flags that satisfy the Value interface (with
|
||
* pointer receivers) and couple them to flag parsing by
|
||
* ```
|
||
* flag.Var(&flagVal, "name", "help message for flagname")
|
||
* ```
|
||
* For such flags, the default value is just the initial value of the variable.
|
||
*
|
||
* After all flags are defined, call
|
||
* ```
|
||
* flag.Parse()
|
||
* ```
|
||
* to parse the command line into the defined flags.
|
||
*
|
||
* Flags may then be used directly. If you're using the flags themselves,
|
||
* they are all pointers; if you bind to variables, they're values.
|
||
* ```
|
||
* fmt.Println("ip has value ", *ip)
|
||
* fmt.Println("flagvar has value ", flagvar)
|
||
* ```
|
||
*
|
||
* After parsing, the arguments after the flag are available as the
|
||
* slice flag.Args() or individually as flag.Arg(i).
|
||
* The arguments are indexed from 0 through flag.NArg()-1.
|
||
*
|
||
* The pflag package also defines some new functions that are not in flag,
|
||
* that give one-letter shorthands for flags. You can use these by appending
|
||
* 'P' to the name of any function that defines a flag.
|
||
* ```
|
||
* var ip = flag.IntP("flagname", "f", 1234, "help message")
|
||
* var flagvar bool
|
||
* func init() {
|
||
* flag.BoolVarP(&flagvar, "boolname", "b", true, "help message")
|
||
* }
|
||
* flag.VarP(&flagval, "varname", "v", "help message")
|
||
* ```
|
||
* Shorthand letters can be used with single dashes on the command line.
|
||
* Boolean shorthand flags can be combined with other shorthand flags.
|
||
*
|
||
* Command line flag syntax:
|
||
* ```
|
||
* --flag // boolean flags only
|
||
* --flag=x
|
||
* ```
|
||
*
|
||
* Unlike the flag package, a single dash before an option means something
|
||
* different than a double dash. Single dashes signify a series of shorthand
|
||
* letters for flags. All but the last shorthand letter must be boolean flags.
|
||
* ```
|
||
* // boolean flags
|
||
* -f
|
||
* -abc
|
||
* // non-boolean flags
|
||
* -n 1234
|
||
* -Ifile
|
||
* // mixed
|
||
* -abcs "hello"
|
||
* -abcn1234
|
||
* ```
|
||
*
|
||
* Flag parsing stops after the terminator "--". Unlike the flag package,
|
||
* flags can be interspersed with arguments anywhere on the command line
|
||
* before this terminator.
|
||
*
|
||
* Integer flags accept 1234, 0664, 0x1234 and may be negative.
|
||
* Boolean flags (in their long form) accept 1, 0, t, f, true, false,
|
||
* TRUE, FALSE, True, False.
|
||
* Duration flags accept any input valid for time.ParseDuration.
|
||
*
|
||
* The default set of command-line flags is controlled by
|
||
* top-level functions. The FlagSet type allows one to define
|
||
* independent sets of flags, such as to implement subcommands
|
||
* in a command-line interface. The methods of FlagSet are
|
||
* analogous to the top-level functions for the command-line
|
||
* flag set.
|
||
*/
|
||
namespace pflag {
|
||
interface FlagSet {
|
||
/**
|
||
* GetBool return the bool value of a flag with the given name
|
||
*/
|
||
getBool(name: string): boolean
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BoolVar defines a bool flag with specified name, default value, and usage string.
|
||
* The argument p points to a bool variable in which to store the value of the flag.
|
||
*/
|
||
boolVar(p: boolean, name: string, value: boolean, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BoolVarP is like BoolVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
boolVarP(p: boolean, name: string, value: boolean, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Bool defines a bool flag with specified name, default value, and usage string.
|
||
* The return value is the address of a bool variable that stores the value of the flag.
|
||
*/
|
||
bool(name: string, value: boolean, usage: string): (boolean | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BoolP is like Bool, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
boolP(name: string, value: boolean, usage: string): (boolean | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetBoolSlice returns the []bool value of a flag with the given name.
|
||
*/
|
||
getBoolSlice(name: string): Array<boolean>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BoolSliceVar defines a boolSlice flag with specified name, default value, and usage string.
|
||
* The argument p points to a []bool variable in which to store the value of the flag.
|
||
*/
|
||
boolSliceVar(p: Array<boolean>, name: string, value: Array<boolean>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BoolSliceVarP is like BoolSliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
boolSliceVarP(p: Array<boolean>, name: string, value: Array<boolean>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BoolSlice defines a []bool flag with specified name, default value, and usage string.
|
||
* The return value is the address of a []bool variable that stores the value of the flag.
|
||
*/
|
||
boolSlice(name: string, value: Array<boolean>, usage: string): (Array<boolean> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BoolSliceP is like BoolSlice, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
boolSliceP(name: string, value: Array<boolean>, usage: string): (Array<boolean> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetBytesHex return the []byte value of a flag with the given name
|
||
*/
|
||
getBytesHex(name: string): string
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BytesHexVar defines an []byte flag with specified name, default value, and usage string.
|
||
* The argument p points to an []byte variable in which to store the value of the flag.
|
||
*/
|
||
bytesHexVar(p: string, name: string, value: string, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BytesHexVarP is like BytesHexVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
bytesHexVarP(p: string, name: string, value: string, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BytesHex defines an []byte flag with specified name, default value, and usage string.
|
||
* The return value is the address of an []byte variable that stores the value of the flag.
|
||
*/
|
||
bytesHex(name: string, value: string, usage: string): (string | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BytesHexP is like BytesHex, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
bytesHexP(name: string, value: string, usage: string): (string | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetBytesBase64 return the []byte value of a flag with the given name
|
||
*/
|
||
getBytesBase64(name: string): string
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BytesBase64Var defines an []byte flag with specified name, default value, and usage string.
|
||
* The argument p points to an []byte variable in which to store the value of the flag.
|
||
*/
|
||
bytesBase64Var(p: string, name: string, value: string, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BytesBase64VarP is like BytesBase64Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
bytesBase64VarP(p: string, name: string, value: string, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BytesBase64 defines an []byte flag with specified name, default value, and usage string.
|
||
* The return value is the address of an []byte variable that stores the value of the flag.
|
||
*/
|
||
bytesBase64(name: string, value: string, usage: string): (string | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BytesBase64P is like BytesBase64, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
bytesBase64P(name: string, value: string, usage: string): (string | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetCount return the int value of a flag with the given name
|
||
*/
|
||
getCount(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* CountVar defines a count flag with specified name, default value, and usage string.
|
||
* The argument p points to an int variable in which to store the value of the flag.
|
||
* A count flag will add 1 to its value every time it is found on the command line
|
||
*/
|
||
countVar(p: number, name: string, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* CountVarP is like CountVar only take a shorthand for the flag name.
|
||
*/
|
||
countVarP(p: number, name: string, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Count defines a count flag with specified name, default value, and usage string.
|
||
* The return value is the address of an int variable that stores the value of the flag.
|
||
* A count flag will add 1 to its value every time it is found on the command line
|
||
*/
|
||
count(name: string, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* CountP is like Count only takes a shorthand for the flag name.
|
||
*/
|
||
countP(name: string, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetDuration return the duration value of a flag with the given name
|
||
*/
|
||
getDuration(name: string): time.Duration
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* DurationVar defines a time.Duration flag with specified name, default value, and usage string.
|
||
* The argument p points to a time.Duration variable in which to store the value of the flag.
|
||
*/
|
||
durationVar(p: time.Duration, name: string, value: time.Duration, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* DurationVarP is like DurationVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
durationVarP(p: time.Duration, name: string, value: time.Duration, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Duration defines a time.Duration flag with specified name, default value, and usage string.
|
||
* The return value is the address of a time.Duration variable that stores the value of the flag.
|
||
*/
|
||
duration(name: string, value: time.Duration, usage: string): (time.Duration | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* DurationP is like Duration, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
durationP(name: string, value: time.Duration, usage: string): (time.Duration | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetDurationSlice returns the []time.Duration value of a flag with the given name
|
||
*/
|
||
getDurationSlice(name: string): Array<time.Duration>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* DurationSliceVar defines a durationSlice flag with specified name, default value, and usage string.
|
||
* The argument p points to a []time.Duration variable in which to store the value of the flag.
|
||
*/
|
||
durationSliceVar(p: Array<time.Duration>, name: string, value: Array<time.Duration>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* DurationSliceVarP is like DurationSliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
durationSliceVarP(p: Array<time.Duration>, name: string, value: Array<time.Duration>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* DurationSlice defines a []time.Duration flag with specified name, default value, and usage string.
|
||
* The return value is the address of a []time.Duration variable that stores the value of the flag.
|
||
*/
|
||
durationSlice(name: string, value: Array<time.Duration>, usage: string): (Array<time.Duration> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* DurationSliceP is like DurationSlice, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
durationSliceP(name: string, value: Array<time.Duration>, usage: string): (Array<time.Duration> | undefined)
|
||
}
|
||
// @ts-ignore
|
||
import goflag = flag
|
||
/**
|
||
* NormalizedName is a flag name that has been normalized according to rules
|
||
* for the FlagSet (e.g. making '-' and '_' equivalent).
|
||
*/
|
||
interface NormalizedName extends String{}
|
||
/**
|
||
* A FlagSet represents a set of defined flags.
|
||
*/
|
||
interface FlagSet {
|
||
/**
|
||
* Usage is the function called when an error occurs while parsing flags.
|
||
* The field is a function (not a method) that may be changed to point to
|
||
* a custom error handler.
|
||
*/
|
||
usage: () => void
|
||
/**
|
||
* SortFlags is used to indicate, if user wants to have sorted flags in
|
||
* help/usage messages.
|
||
*/
|
||
sortFlags: boolean
|
||
/**
|
||
* ParseErrorsWhitelist is used to configure a whitelist of errors
|
||
*/
|
||
parseErrorsWhitelist: ParseErrorsWhitelist
|
||
}
|
||
/**
|
||
* A Flag represents the state of a flag.
|
||
*/
|
||
interface Flag {
|
||
name: string // name as it appears on command line
|
||
shorthand: string // one-letter abbreviated flag
|
||
usage: string // help message
|
||
value: Value // value as set
|
||
defValue: string // default value (as text); for usage message
|
||
changed: boolean // If the user set the value (or if left to default)
|
||
noOptDefVal: string // default value (as text); if the flag is on the command line without any options
|
||
deprecated: string // If this flag is deprecated, this string is the new or now thing to use
|
||
hidden: boolean // used by cobra.Command to allow flags to be hidden from help/usage text
|
||
shorthandDeprecated: string // If the shorthand of this flag is deprecated, this string is the new or now thing to use
|
||
annotations: _TygojaDict // used by cobra.Command bash autocomple code
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* SetNormalizeFunc allows you to add a function which can translate flag names.
|
||
* Flags added to the FlagSet will be translated and then when anything tries to
|
||
* look up the flag that will also be translated. So it would be possible to create
|
||
* a flag named "getURL" and have it translated to "geturl". A user could then pass
|
||
* "--getUrl" which may also be translated to "geturl" and everything will work.
|
||
*/
|
||
setNormalizeFunc(n: (f: FlagSet, name: string) => NormalizedName): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetNormalizeFunc returns the previously set NormalizeFunc of a function which
|
||
* does no translation, if not set previously.
|
||
*/
|
||
getNormalizeFunc(): (f: FlagSet, name: string) => NormalizedName
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* SetOutput sets the destination for usage and error messages.
|
||
* If output is nil, os.Stderr is used.
|
||
*/
|
||
setOutput(output: io.Writer): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* VisitAll visits the flags in lexicographical order or
|
||
* in primordial order if f.SortFlags is false, calling fn for each.
|
||
* It visits all flags, even those not set.
|
||
*/
|
||
visitAll(fn: (_arg0: Flag) => void): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* HasFlags returns a bool to indicate if the FlagSet has any flags defined.
|
||
*/
|
||
hasFlags(): boolean
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* HasAvailableFlags returns a bool to indicate if the FlagSet has any flags
|
||
* that are not hidden.
|
||
*/
|
||
hasAvailableFlags(): boolean
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Visit visits the flags in lexicographical order or
|
||
* in primordial order if f.SortFlags is false, calling fn for each.
|
||
* It visits only those flags that have been set.
|
||
*/
|
||
visit(fn: (_arg0: Flag) => void): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Lookup returns the Flag structure of the named flag, returning nil if none exists.
|
||
*/
|
||
lookup(name: string): (Flag | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* ShorthandLookup returns the Flag structure of the short handed flag,
|
||
* returning nil if none exists.
|
||
* It panics, if len(name) > 1.
|
||
*/
|
||
shorthandLookup(name: string): (Flag | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* ArgsLenAtDash will return the length of f.Args at the moment when a -- was
|
||
* found during arg parsing. This allows your program to know which args were
|
||
* before the -- and which came after.
|
||
*/
|
||
argsLenAtDash(): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* MarkDeprecated indicated that a flag is deprecated in your program. It will
|
||
* continue to function but will not show up in help or usage messages. Using
|
||
* this flag will also print the given usageMessage.
|
||
*/
|
||
markDeprecated(name: string, usageMessage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* MarkShorthandDeprecated will mark the shorthand of a flag deprecated in your
|
||
* program. It will continue to function but will not show up in help or usage
|
||
* messages. Using this flag will also print the given usageMessage.
|
||
*/
|
||
markShorthandDeprecated(name: string, usageMessage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* MarkHidden sets a flag to 'hidden' in your program. It will continue to
|
||
* function but will not show up in help or usage messages.
|
||
*/
|
||
markHidden(name: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Set sets the value of the named flag.
|
||
*/
|
||
set(name: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* SetAnnotation allows one to set arbitrary annotations on a flag in the FlagSet.
|
||
* This is sometimes used by spf13/cobra programs which want to generate additional
|
||
* bash completion information.
|
||
*/
|
||
setAnnotation(name: string, values: Array<string>): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Changed returns true if the flag was explicitly set during Parse() and false
|
||
* otherwise
|
||
*/
|
||
changed(name: string): boolean
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* PrintDefaults prints, to standard error unless configured
|
||
* otherwise, the default values of all defined flags in the set.
|
||
*/
|
||
printDefaults(): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* FlagUsagesWrapped returns a string containing the usage information
|
||
* for all flags in the FlagSet. Wrapped to `cols` columns (0 for no
|
||
* wrapping)
|
||
*/
|
||
flagUsagesWrapped(cols: number): string
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* FlagUsages returns a string containing the usage information for all flags in
|
||
* the FlagSet
|
||
*/
|
||
flagUsages(): string
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* NFlag returns the number of flags that have been set.
|
||
*/
|
||
nFlag(): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Arg returns the i'th argument. Arg(0) is the first remaining argument
|
||
* after flags have been processed.
|
||
*/
|
||
arg(i: number): string
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* NArg is the number of arguments remaining after flags have been processed.
|
||
*/
|
||
nArg(): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Args returns the non-flag arguments.
|
||
*/
|
||
args(): Array<string>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Var defines a flag with the specified name and usage string. The type and
|
||
* value of the flag are represented by the first argument, of type Value, which
|
||
* typically holds a user-defined implementation of Value. For instance, the
|
||
* caller could create a flag that turns a comma-separated string into a slice
|
||
* of strings by giving the slice the methods of Value; in particular, Set would
|
||
* decompose the comma-separated string into the slice.
|
||
*/
|
||
var(value: Value, name: string, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* VarPF is like VarP, but returns the flag created
|
||
*/
|
||
varPF(value: Value, name: string): (Flag | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* VarP is like Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
varP(value: Value, name: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* AddFlag will add the flag to the FlagSet
|
||
*/
|
||
addFlag(flag: Flag): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* AddFlagSet adds one FlagSet to another. If a flag is already present in f
|
||
* the flag from newSet will be ignored.
|
||
*/
|
||
addFlagSet(newSet: FlagSet): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Parse parses flag definitions from the argument list, which should not
|
||
* include the command name. Must be called after all flags in the FlagSet
|
||
* are defined and before flags are accessed by the program.
|
||
* The return value will be ErrHelp if -help was set but not defined.
|
||
*/
|
||
parse(arguments: Array<string>): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* ParseAll parses flag definitions from the argument list, which should not
|
||
* include the command name. The arguments for fn are flag and value. Must be
|
||
* called after all flags in the FlagSet are defined and before flags are
|
||
* accessed by the program. The return value will be ErrHelp if -help was set
|
||
* but not defined.
|
||
*/
|
||
parseAll(arguments: Array<string>, fn: (flag: Flag, value: string) => void): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Parsed reports whether f.Parse has been called.
|
||
*/
|
||
parsed(): boolean
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* SetInterspersed sets whether to support interspersed option/non-option arguments.
|
||
*/
|
||
setInterspersed(interspersed: boolean): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Init sets the name and error handling property for a flag set.
|
||
* By default, the zero FlagSet uses an empty name and the
|
||
* ContinueOnError error handling policy.
|
||
*/
|
||
init(name: string, errorHandling: ErrorHandling): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetFloat32 return the float32 value of a flag with the given name
|
||
*/
|
||
getFloat32(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float32Var defines a float32 flag with specified name, default value, and usage string.
|
||
* The argument p points to a float32 variable in which to store the value of the flag.
|
||
*/
|
||
float32Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float32VarP is like Float32Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
float32VarP(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float32 defines a float32 flag with specified name, default value, and usage string.
|
||
* The return value is the address of a float32 variable that stores the value of the flag.
|
||
*/
|
||
float32(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float32P is like Float32, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
float32P(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetFloat32Slice return the []float32 value of a flag with the given name
|
||
*/
|
||
getFloat32Slice(name: string): Array<number>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float32SliceVar defines a float32Slice flag with specified name, default value, and usage string.
|
||
* The argument p points to a []float32 variable in which to store the value of the flag.
|
||
*/
|
||
float32SliceVar(p: Array<number>, name: string, value: Array<number>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float32SliceVarP is like Float32SliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
float32SliceVarP(p: Array<number>, name: string, value: Array<number>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float32Slice defines a []float32 flag with specified name, default value, and usage string.
|
||
* The return value is the address of a []float32 variable that stores the value of the flag.
|
||
*/
|
||
float32Slice(name: string, value: Array<number>, usage: string): (Array<number> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float32SliceP is like Float32Slice, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
float32SliceP(name: string, value: Array<number>, usage: string): (Array<number> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetFloat64 return the float64 value of a flag with the given name
|
||
*/
|
||
getFloat64(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float64Var defines a float64 flag with specified name, default value, and usage string.
|
||
* The argument p points to a float64 variable in which to store the value of the flag.
|
||
*/
|
||
float64Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float64VarP is like Float64Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
float64VarP(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float64 defines a float64 flag with specified name, default value, and usage string.
|
||
* The return value is the address of a float64 variable that stores the value of the flag.
|
||
*/
|
||
float64(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float64P is like Float64, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
float64P(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetFloat64Slice return the []float64 value of a flag with the given name
|
||
*/
|
||
getFloat64Slice(name: string): Array<number>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float64SliceVar defines a float64Slice flag with specified name, default value, and usage string.
|
||
* The argument p points to a []float64 variable in which to store the value of the flag.
|
||
*/
|
||
float64SliceVar(p: Array<number>, name: string, value: Array<number>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float64SliceVarP is like Float64SliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
float64SliceVarP(p: Array<number>, name: string, value: Array<number>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float64Slice defines a []float64 flag with specified name, default value, and usage string.
|
||
* The return value is the address of a []float64 variable that stores the value of the flag.
|
||
*/
|
||
float64Slice(name: string, value: Array<number>, usage: string): (Array<number> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float64SliceP is like Float64Slice, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
float64SliceP(name: string, value: Array<number>, usage: string): (Array<number> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* AddGoFlag will add the given *flag.Flag to the pflag.FlagSet
|
||
*/
|
||
addGoFlag(goflag: goflag.Flag): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* AddGoFlagSet will add the given *flag.FlagSet to the pflag.FlagSet
|
||
*/
|
||
addGoFlagSet(newSet: goflag.FlagSet): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetInt return the int value of a flag with the given name
|
||
*/
|
||
getInt(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IntVar defines an int flag with specified name, default value, and usage string.
|
||
* The argument p points to an int variable in which to store the value of the flag.
|
||
*/
|
||
intVar(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IntVarP is like IntVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
intVarP(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int defines an int flag with specified name, default value, and usage string.
|
||
* The return value is the address of an int variable that stores the value of the flag.
|
||
*/
|
||
int(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IntP is like Int, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
intP(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetInt16 returns the int16 value of a flag with the given name
|
||
*/
|
||
getInt16(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int16Var defines an int16 flag with specified name, default value, and usage string.
|
||
* The argument p points to an int16 variable in which to store the value of the flag.
|
||
*/
|
||
int16Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int16VarP is like Int16Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
int16VarP(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int16 defines an int16 flag with specified name, default value, and usage string.
|
||
* The return value is the address of an int16 variable that stores the value of the flag.
|
||
*/
|
||
int16(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int16P is like Int16, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
int16P(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetInt32 return the int32 value of a flag with the given name
|
||
*/
|
||
getInt32(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int32Var defines an int32 flag with specified name, default value, and usage string.
|
||
* The argument p points to an int32 variable in which to store the value of the flag.
|
||
*/
|
||
int32Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int32VarP is like Int32Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
int32VarP(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int32 defines an int32 flag with specified name, default value, and usage string.
|
||
* The return value is the address of an int32 variable that stores the value of the flag.
|
||
*/
|
||
int32(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int32P is like Int32, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
int32P(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetInt32Slice return the []int32 value of a flag with the given name
|
||
*/
|
||
getInt32Slice(name: string): Array<number>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int32SliceVar defines a int32Slice flag with specified name, default value, and usage string.
|
||
* The argument p points to a []int32 variable in which to store the value of the flag.
|
||
*/
|
||
int32SliceVar(p: Array<number>, name: string, value: Array<number>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int32SliceVarP is like Int32SliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
int32SliceVarP(p: Array<number>, name: string, value: Array<number>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int32Slice defines a []int32 flag with specified name, default value, and usage string.
|
||
* The return value is the address of a []int32 variable that stores the value of the flag.
|
||
*/
|
||
int32Slice(name: string, value: Array<number>, usage: string): (Array<number> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int32SliceP is like Int32Slice, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
int32SliceP(name: string, value: Array<number>, usage: string): (Array<number> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetInt64 return the int64 value of a flag with the given name
|
||
*/
|
||
getInt64(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int64Var defines an int64 flag with specified name, default value, and usage string.
|
||
* The argument p points to an int64 variable in which to store the value of the flag.
|
||
*/
|
||
int64Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int64VarP is like Int64Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
int64VarP(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int64 defines an int64 flag with specified name, default value, and usage string.
|
||
* The return value is the address of an int64 variable that stores the value of the flag.
|
||
*/
|
||
int64(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int64P is like Int64, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
int64P(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetInt64Slice return the []int64 value of a flag with the given name
|
||
*/
|
||
getInt64Slice(name: string): Array<number>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int64SliceVar defines a int64Slice flag with specified name, default value, and usage string.
|
||
* The argument p points to a []int64 variable in which to store the value of the flag.
|
||
*/
|
||
int64SliceVar(p: Array<number>, name: string, value: Array<number>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int64SliceVarP is like Int64SliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
int64SliceVarP(p: Array<number>, name: string, value: Array<number>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int64Slice defines a []int64 flag with specified name, default value, and usage string.
|
||
* The return value is the address of a []int64 variable that stores the value of the flag.
|
||
*/
|
||
int64Slice(name: string, value: Array<number>, usage: string): (Array<number> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int64SliceP is like Int64Slice, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
int64SliceP(name: string, value: Array<number>, usage: string): (Array<number> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetInt8 return the int8 value of a flag with the given name
|
||
*/
|
||
getInt8(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int8Var defines an int8 flag with specified name, default value, and usage string.
|
||
* The argument p points to an int8 variable in which to store the value of the flag.
|
||
*/
|
||
int8Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int8VarP is like Int8Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
int8VarP(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int8 defines an int8 flag with specified name, default value, and usage string.
|
||
* The return value is the address of an int8 variable that stores the value of the flag.
|
||
*/
|
||
int8(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int8P is like Int8, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
int8P(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetIntSlice return the []int value of a flag with the given name
|
||
*/
|
||
getIntSlice(name: string): Array<number>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IntSliceVar defines a intSlice flag with specified name, default value, and usage string.
|
||
* The argument p points to a []int variable in which to store the value of the flag.
|
||
*/
|
||
intSliceVar(p: Array<number>, name: string, value: Array<number>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IntSliceVarP is like IntSliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
intSliceVarP(p: Array<number>, name: string, value: Array<number>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IntSlice defines a []int flag with specified name, default value, and usage string.
|
||
* The return value is the address of a []int variable that stores the value of the flag.
|
||
*/
|
||
intSlice(name: string, value: Array<number>, usage: string): (Array<number> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IntSliceP is like IntSlice, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
intSliceP(name: string, value: Array<number>, usage: string): (Array<number> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetIP return the net.IP value of a flag with the given name
|
||
*/
|
||
getIP(name: string): net.IP
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPVar defines an net.IP flag with specified name, default value, and usage string.
|
||
* The argument p points to an net.IP variable in which to store the value of the flag.
|
||
*/
|
||
ipVar(p: net.IP, name: string, value: net.IP, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPVarP is like IPVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
ipVarP(p: net.IP, name: string, value: net.IP, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IP defines an net.IP flag with specified name, default value, and usage string.
|
||
* The return value is the address of an net.IP variable that stores the value of the flag.
|
||
*/
|
||
ip(name: string, value: net.IP, usage: string): (net.IP | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPP is like IP, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
ipp(name: string, value: net.IP, usage: string): (net.IP | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetIPSlice returns the []net.IP value of a flag with the given name
|
||
*/
|
||
getIPSlice(name: string): Array<net.IP>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPSliceVar defines a ipSlice flag with specified name, default value, and usage string.
|
||
* The argument p points to a []net.IP variable in which to store the value of the flag.
|
||
*/
|
||
ipSliceVar(p: Array<net.IP>, name: string, value: Array<net.IP>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPSliceVarP is like IPSliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
ipSliceVarP(p: Array<net.IP>, name: string, value: Array<net.IP>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPSlice defines a []net.IP flag with specified name, default value, and usage string.
|
||
* The return value is the address of a []net.IP variable that stores the value of that flag.
|
||
*/
|
||
ipSlice(name: string, value: Array<net.IP>, usage: string): (Array<net.IP> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPSliceP is like IPSlice, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
ipSliceP(name: string, value: Array<net.IP>, usage: string): (Array<net.IP> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetIPv4Mask return the net.IPv4Mask value of a flag with the given name
|
||
*/
|
||
getIPv4Mask(name: string): net.IPMask
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPMaskVar defines an net.IPMask flag with specified name, default value, and usage string.
|
||
* The argument p points to an net.IPMask variable in which to store the value of the flag.
|
||
*/
|
||
ipMaskVar(p: net.IPMask, name: string, value: net.IPMask, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPMaskVarP is like IPMaskVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
ipMaskVarP(p: net.IPMask, name: string, value: net.IPMask, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPMask defines an net.IPMask flag with specified name, default value, and usage string.
|
||
* The return value is the address of an net.IPMask variable that stores the value of the flag.
|
||
*/
|
||
ipMask(name: string, value: net.IPMask, usage: string): (net.IPMask | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPMaskP is like IPMask, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
ipMaskP(name: string, value: net.IPMask, usage: string): (net.IPMask | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetIPNet return the net.IPNet value of a flag with the given name
|
||
*/
|
||
getIPNet(name: string): net.IPNet
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPNetVar defines an net.IPNet flag with specified name, default value, and usage string.
|
||
* The argument p points to an net.IPNet variable in which to store the value of the flag.
|
||
*/
|
||
ipNetVar(p: net.IPNet, name: string, value: net.IPNet, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
ipNetVarP(p: net.IPNet, name: string, value: net.IPNet, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPNet defines an net.IPNet flag with specified name, default value, and usage string.
|
||
* The return value is the address of an net.IPNet variable that stores the value of the flag.
|
||
*/
|
||
ipNet(name: string, value: net.IPNet, usage: string): (net.IPNet | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IPNetP is like IPNet, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
ipNetP(name: string, value: net.IPNet, usage: string): (net.IPNet | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetString return the string value of a flag with the given name
|
||
*/
|
||
getString(name: string): string
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringVar defines a string flag with specified name, default value, and usage string.
|
||
* The argument p points to a string variable in which to store the value of the flag.
|
||
*/
|
||
stringVar(p: string, name: string, value: string, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringVarP is like StringVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
stringVarP(p: string, name: string, value: string, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* String defines a string flag with specified name, default value, and usage string.
|
||
* The return value is the address of a string variable that stores the value of the flag.
|
||
*/
|
||
string(name: string, value: string, usage: string): (string | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringP is like String, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
stringP(name: string, value: string, usage: string): (string | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetStringArray return the []string value of a flag with the given name
|
||
*/
|
||
getStringArray(name: string): Array<string>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringArrayVar defines a string flag with specified name, default value, and usage string.
|
||
* The argument p points to a []string variable in which to store the values of the multiple flags.
|
||
* The value of each argument will not try to be separated by comma. Use a StringSlice for that.
|
||
*/
|
||
stringArrayVar(p: Array<string>, name: string, value: Array<string>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringArrayVarP is like StringArrayVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
stringArrayVarP(p: Array<string>, name: string, value: Array<string>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringArray defines a string flag with specified name, default value, and usage string.
|
||
* The return value is the address of a []string variable that stores the value of the flag.
|
||
* The value of each argument will not try to be separated by comma. Use a StringSlice for that.
|
||
*/
|
||
stringArray(name: string, value: Array<string>, usage: string): (Array<string> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringArrayP is like StringArray, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
stringArrayP(name: string, value: Array<string>, usage: string): (Array<string> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetStringSlice return the []string value of a flag with the given name
|
||
*/
|
||
getStringSlice(name: string): Array<string>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringSliceVar defines a string flag with specified name, default value, and usage string.
|
||
* The argument p points to a []string variable in which to store the value of the flag.
|
||
* Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly.
|
||
* For example:
|
||
* ```
|
||
* --ss="v1,v2" --ss="v3"
|
||
* ```
|
||
* will result in
|
||
* ```
|
||
* []string{"v1", "v2", "v3"}
|
||
* ```
|
||
*/
|
||
stringSliceVar(p: Array<string>, name: string, value: Array<string>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringSliceVarP is like StringSliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
stringSliceVarP(p: Array<string>, name: string, value: Array<string>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringSlice defines a string flag with specified name, default value, and usage string.
|
||
* The return value is the address of a []string variable that stores the value of the flag.
|
||
* Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly.
|
||
* For example:
|
||
* ```
|
||
* --ss="v1,v2" --ss="v3"
|
||
* ```
|
||
* will result in
|
||
* ```
|
||
* []string{"v1", "v2", "v3"}
|
||
* ```
|
||
*/
|
||
stringSlice(name: string, value: Array<string>, usage: string): (Array<string> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringSliceP is like StringSlice, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
stringSliceP(name: string, value: Array<string>, usage: string): (Array<string> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetStringToInt return the map[string]int value of a flag with the given name
|
||
*/
|
||
getStringToInt(name: string): _TygojaDict
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringToIntVar defines a string flag with specified name, default value, and usage string.
|
||
* The argument p points to a map[string]int variable in which to store the values of the multiple flags.
|
||
* The value of each argument will not try to be separated by comma
|
||
*/
|
||
stringToIntVar(p: _TygojaDict, name: string, value: _TygojaDict, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringToIntVarP is like StringToIntVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
stringToIntVarP(p: _TygojaDict, name: string, value: _TygojaDict, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringToInt defines a string flag with specified name, default value, and usage string.
|
||
* The return value is the address of a map[string]int variable that stores the value of the flag.
|
||
* The value of each argument will not try to be separated by comma
|
||
*/
|
||
stringToInt(name: string, value: _TygojaDict, usage: string): (_TygojaDict | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringToIntP is like StringToInt, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
stringToIntP(name: string, value: _TygojaDict, usage: string): (_TygojaDict | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetStringToInt64 return the map[string]int64 value of a flag with the given name
|
||
*/
|
||
getStringToInt64(name: string): _TygojaDict
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringToInt64Var defines a string flag with specified name, default value, and usage string.
|
||
* The argument p point64s to a map[string]int64 variable in which to store the values of the multiple flags.
|
||
* The value of each argument will not try to be separated by comma
|
||
*/
|
||
stringToInt64Var(p: _TygojaDict, name: string, value: _TygojaDict, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringToInt64VarP is like StringToInt64Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
stringToInt64VarP(p: _TygojaDict, name: string, value: _TygojaDict, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringToInt64 defines a string flag with specified name, default value, and usage string.
|
||
* The return value is the address of a map[string]int64 variable that stores the value of the flag.
|
||
* The value of each argument will not try to be separated by comma
|
||
*/
|
||
stringToInt64(name: string, value: _TygojaDict, usage: string): (_TygojaDict | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringToInt64P is like StringToInt64, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
stringToInt64P(name: string, value: _TygojaDict, usage: string): (_TygojaDict | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetStringToString return the map[string]string value of a flag with the given name
|
||
*/
|
||
getStringToString(name: string): _TygojaDict
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringToStringVar defines a string flag with specified name, default value, and usage string.
|
||
* The argument p points to a map[string]string variable in which to store the values of the multiple flags.
|
||
* The value of each argument will not try to be separated by comma
|
||
*/
|
||
stringToStringVar(p: _TygojaDict, name: string, value: _TygojaDict, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringToStringVarP is like StringToStringVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
stringToStringVarP(p: _TygojaDict, name: string, value: _TygojaDict, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringToString defines a string flag with specified name, default value, and usage string.
|
||
* The return value is the address of a map[string]string variable that stores the value of the flag.
|
||
* The value of each argument will not try to be separated by comma
|
||
*/
|
||
stringToString(name: string, value: _TygojaDict, usage: string): (_TygojaDict | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringToStringP is like StringToString, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
stringToStringP(name: string, value: _TygojaDict, usage: string): (_TygojaDict | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetUint return the uint value of a flag with the given name
|
||
*/
|
||
getUint(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* UintVar defines a uint flag with specified name, default value, and usage string.
|
||
* The argument p points to a uint variable in which to store the value of the flag.
|
||
*/
|
||
uintVar(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* UintVarP is like UintVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
uintVarP(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint defines a uint flag with specified name, default value, and usage string.
|
||
* The return value is the address of a uint variable that stores the value of the flag.
|
||
*/
|
||
uint(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* UintP is like Uint, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
uintP(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetUint16 return the uint16 value of a flag with the given name
|
||
*/
|
||
getUint16(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint16Var defines a uint flag with specified name, default value, and usage string.
|
||
* The argument p points to a uint variable in which to store the value of the flag.
|
||
*/
|
||
uint16Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint16VarP is like Uint16Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
uint16VarP(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint16 defines a uint flag with specified name, default value, and usage string.
|
||
* The return value is the address of a uint variable that stores the value of the flag.
|
||
*/
|
||
uint16(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint16P is like Uint16, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
uint16P(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetUint32 return the uint32 value of a flag with the given name
|
||
*/
|
||
getUint32(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint32Var defines a uint32 flag with specified name, default value, and usage string.
|
||
* The argument p points to a uint32 variable in which to store the value of the flag.
|
||
*/
|
||
uint32Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint32VarP is like Uint32Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
uint32VarP(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint32 defines a uint32 flag with specified name, default value, and usage string.
|
||
* The return value is the address of a uint32 variable that stores the value of the flag.
|
||
*/
|
||
uint32(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint32P is like Uint32, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
uint32P(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetUint64 return the uint64 value of a flag with the given name
|
||
*/
|
||
getUint64(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint64Var defines a uint64 flag with specified name, default value, and usage string.
|
||
* The argument p points to a uint64 variable in which to store the value of the flag.
|
||
*/
|
||
uint64Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint64VarP is like Uint64Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
uint64VarP(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint64 defines a uint64 flag with specified name, default value, and usage string.
|
||
* The return value is the address of a uint64 variable that stores the value of the flag.
|
||
*/
|
||
uint64(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint64P is like Uint64, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
uint64P(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetUint8 return the uint8 value of a flag with the given name
|
||
*/
|
||
getUint8(name: string): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint8Var defines a uint8 flag with specified name, default value, and usage string.
|
||
* The argument p points to a uint8 variable in which to store the value of the flag.
|
||
*/
|
||
uint8Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint8VarP is like Uint8Var, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
uint8VarP(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint8 defines a uint8 flag with specified name, default value, and usage string.
|
||
* The return value is the address of a uint8 variable that stores the value of the flag.
|
||
*/
|
||
uint8(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint8P is like Uint8, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
uint8P(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* GetUintSlice returns the []uint value of a flag with the given name.
|
||
*/
|
||
getUintSlice(name: string): Array<number>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* UintSliceVar defines a uintSlice flag with specified name, default value, and usage string.
|
||
* The argument p points to a []uint variable in which to store the value of the flag.
|
||
*/
|
||
uintSliceVar(p: Array<number>, name: string, value: Array<number>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* UintSliceVarP is like UintSliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
uintSliceVarP(p: Array<number>, name: string, value: Array<number>, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* UintSlice defines a []uint flag with specified name, default value, and usage string.
|
||
* The return value is the address of a []uint variable that stores the value of the flag.
|
||
*/
|
||
uintSlice(name: string, value: Array<number>, usage: string): (Array<number> | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* UintSliceP is like UintSlice, but accepts a shorthand letter that can be used after a single dash.
|
||
*/
|
||
uintSliceP(name: string, value: Array<number>, usage: string): (Array<number> | undefined)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package cobra is a commander providing a simple interface to create powerful modern CLI interfaces.
|
||
* In addition to providing an interface, Cobra simultaneously provides a controller to organize your application code.
|
||
*/
|
||
namespace cobra {
|
||
interface PositionalArgs {(cmd: Command, args: Array<string>): void }
|
||
// @ts-ignore
|
||
import flag = pflag
|
||
/**
|
||
* FParseErrWhitelist configures Flag parse errors to be ignored
|
||
*/
|
||
interface FParseErrWhitelist extends flag.ParseErrorsWhitelist{}
|
||
/**
|
||
* Group Structure to manage groups for commands
|
||
*/
|
||
interface Group {
|
||
id: string
|
||
title: string
|
||
}
|
||
/**
|
||
* ShellCompDirective is a bit map representing the different behaviors the shell
|
||
* can be instructed to have once completions have been provided.
|
||
*/
|
||
interface ShellCompDirective extends Number{}
|
||
/**
|
||
* CompletionOptions are the options to control shell completion
|
||
*/
|
||
interface CompletionOptions {
|
||
/**
|
||
* DisableDefaultCmd prevents Cobra from creating a default 'completion' command
|
||
*/
|
||
disableDefaultCmd: boolean
|
||
/**
|
||
* DisableNoDescFlag prevents Cobra from creating the '--no-descriptions' flag
|
||
* for shells that support completion descriptions
|
||
*/
|
||
disableNoDescFlag: boolean
|
||
/**
|
||
* DisableDescriptions turns off all completion descriptions for shells
|
||
* that support them
|
||
*/
|
||
disableDescriptions: boolean
|
||
/**
|
||
* HiddenDefaultCmd makes the default 'completion' command hidden
|
||
*/
|
||
hiddenDefaultCmd: boolean
|
||
}
|
||
}
|
||
|
||
namespace migrate {
|
||
interface Migration {
|
||
file: string
|
||
up: (db: dbx.Builder) => void
|
||
down: (db: dbx.Builder) => void
|
||
}
|
||
}
|
||
|
||
namespace subscriptions {
|
||
/**
|
||
* Broker defines a struct for managing subscriptions clients.
|
||
*/
|
||
interface Broker {
|
||
}
|
||
interface Broker {
|
||
/**
|
||
* Clients returns a shallow copy of all registered clients indexed
|
||
* with their connection id.
|
||
*/
|
||
clients(): _TygojaDict
|
||
}
|
||
interface Broker {
|
||
/**
|
||
* ClientById finds a registered client by its id.
|
||
*
|
||
* Returns non-nil error when client with clientId is not registered.
|
||
*/
|
||
clientById(clientId: string): Client
|
||
}
|
||
interface Broker {
|
||
/**
|
||
* Register adds a new client to the broker instance.
|
||
*/
|
||
register(client: Client): void
|
||
}
|
||
interface Broker {
|
||
/**
|
||
* Unregister removes a single client by its id.
|
||
*
|
||
* If client with clientId doesn't exist, this method does nothing.
|
||
*/
|
||
unregister(clientId: string): void
|
||
}
|
||
}
|
||
|
||
namespace hook {
|
||
/**
|
||
* Hook defines a concurrent safe structure for handling event hooks
|
||
* (aka. callbacks propagation).
|
||
*/
|
||
interface Hook<T> {
|
||
}
|
||
interface Hook<T> {
|
||
/**
|
||
* PreAdd registers a new handler to the hook by prepending it to the existing queue.
|
||
*
|
||
* Returns an autogenerated hook id that could be used later to remove the hook with Hook.Remove(id).
|
||
*/
|
||
preAdd(fn: Handler<T>): string
|
||
}
|
||
interface Hook<T> {
|
||
/**
|
||
* Add registers a new handler to the hook by appending it to the existing queue.
|
||
*
|
||
* Returns an autogenerated hook id that could be used later to remove the hook with Hook.Remove(id).
|
||
*/
|
||
add(fn: Handler<T>): string
|
||
}
|
||
interface Hook<T> {
|
||
/**
|
||
* @todo add also to TaggedHook
|
||
* Remove removes a single hook handler by its id.
|
||
*/
|
||
remove(id: string): void
|
||
}
|
||
interface Hook<T> {
|
||
/**
|
||
* @todo add also to TaggedHook
|
||
* RemoveAll removes all registered handlers.
|
||
*/
|
||
removeAll(): void
|
||
}
|
||
interface Hook<T> {
|
||
/**
|
||
* Trigger executes all registered hook handlers one by one
|
||
* with the specified `data` as an argument.
|
||
*
|
||
* Optionally, this method allows also to register additional one off
|
||
* handlers that will be temporary appended to the handlers queue.
|
||
*
|
||
* The execution stops when:
|
||
* - hook.StopPropagation is returned in one of the handlers
|
||
* - any non-nil error is returned in one of the handlers
|
||
*/
|
||
trigger(data: T, ...oneOffHandlers: Handler<T>[]): void
|
||
}
|
||
/**
|
||
* TaggedHook defines a proxy hook which register handlers that are triggered only
|
||
* if the TaggedHook.tags are empty or includes at least one of the event data tag(s).
|
||
*/
|
||
type _subRfQNA<T> = mainHook<T>
|
||
interface TaggedHook<T> extends _subRfQNA<T> {
|
||
}
|
||
interface TaggedHook<T> {
|
||
/**
|
||
* CanTriggerOn checks if the current TaggedHook can be triggered with
|
||
* the provided event data tags.
|
||
*/
|
||
canTriggerOn(tags: Array<string>): boolean
|
||
}
|
||
interface TaggedHook<T> {
|
||
/**
|
||
* PreAdd registers a new handler to the hook by prepending it to the existing queue.
|
||
*
|
||
* The fn handler will be called only if the event data tags satisfy h.CanTriggerOn.
|
||
*/
|
||
preAdd(fn: Handler<T>): string
|
||
}
|
||
interface TaggedHook<T> {
|
||
/**
|
||
* Add registers a new handler to the hook by appending it to the existing queue.
|
||
*
|
||
* The fn handler will be called only if the event data tags satisfy h.CanTriggerOn.
|
||
*/
|
||
add(fn: Handler<T>): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package core is the backbone of PocketBase.
|
||
*
|
||
* It defines the main PocketBase App interface and its base implementation.
|
||
*/
|
||
namespace core {
|
||
interface BootstrapEvent {
|
||
app: App
|
||
}
|
||
interface TerminateEvent {
|
||
app: App
|
||
}
|
||
interface ServeEvent {
|
||
app: App
|
||
router?: echo.Echo
|
||
server?: http.Server
|
||
certManager?: autocert.Manager
|
||
}
|
||
interface ApiErrorEvent {
|
||
httpContext: echo.Context
|
||
error: Error
|
||
}
|
||
type _subVJKiP = BaseModelEvent
|
||
interface ModelEvent extends _subVJKiP {
|
||
dao?: daos.Dao
|
||
}
|
||
type _subGZryQ = BaseCollectionEvent
|
||
interface MailerRecordEvent extends _subGZryQ {
|
||
mailClient: mailer.Mailer
|
||
message?: mailer.Message
|
||
record?: models.Record
|
||
meta: _TygojaDict
|
||
}
|
||
interface MailerAdminEvent {
|
||
mailClient: mailer.Mailer
|
||
message?: mailer.Message
|
||
admin?: models.Admin
|
||
meta: _TygojaDict
|
||
}
|
||
interface RealtimeConnectEvent {
|
||
httpContext: echo.Context
|
||
client: subscriptions.Client
|
||
}
|
||
interface RealtimeDisconnectEvent {
|
||
httpContext: echo.Context
|
||
client: subscriptions.Client
|
||
}
|
||
interface RealtimeMessageEvent {
|
||
httpContext: echo.Context
|
||
client: subscriptions.Client
|
||
message?: subscriptions.Message
|
||
}
|
||
interface RealtimeSubscribeEvent {
|
||
httpContext: echo.Context
|
||
client: subscriptions.Client
|
||
subscriptions: Array<string>
|
||
}
|
||
interface SettingsListEvent {
|
||
httpContext: echo.Context
|
||
redactedSettings?: settings.Settings
|
||
}
|
||
interface SettingsUpdateEvent {
|
||
httpContext: echo.Context
|
||
oldSettings?: settings.Settings
|
||
newSettings?: settings.Settings
|
||
}
|
||
type _subTYfSK = BaseCollectionEvent
|
||
interface RecordsListEvent extends _subTYfSK {
|
||
httpContext: echo.Context
|
||
records: Array<(models.Record | undefined)>
|
||
result?: search.Result
|
||
}
|
||
type _subWVzos = BaseCollectionEvent
|
||
interface RecordViewEvent extends _subWVzos {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
}
|
||
type _subafNoq = BaseCollectionEvent
|
||
interface RecordCreateEvent extends _subafNoq {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
uploadedFiles: _TygojaDict
|
||
}
|
||
type _subBrERj = BaseCollectionEvent
|
||
interface RecordUpdateEvent extends _subBrERj {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
uploadedFiles: _TygojaDict
|
||
}
|
||
type _subsDviH = BaseCollectionEvent
|
||
interface RecordDeleteEvent extends _subsDviH {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
}
|
||
type _subOMkzs = BaseCollectionEvent
|
||
interface RecordAuthEvent extends _subOMkzs {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
token: string
|
||
meta: any
|
||
}
|
||
type _subvNpRR = BaseCollectionEvent
|
||
interface RecordAuthWithPasswordEvent extends _subvNpRR {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
identity: string
|
||
password: string
|
||
}
|
||
type _subZwaqX = BaseCollectionEvent
|
||
interface RecordAuthWithOAuth2Event extends _subZwaqX {
|
||
httpContext: echo.Context
|
||
providerName: string
|
||
providerClient: auth.Provider
|
||
record?: models.Record
|
||
oAuth2User?: auth.AuthUser
|
||
isNewRecord: boolean
|
||
}
|
||
type _subbSlSy = BaseCollectionEvent
|
||
interface RecordAuthRefreshEvent extends _subbSlSy {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
}
|
||
type _sublEBOk = BaseCollectionEvent
|
||
interface RecordRequestPasswordResetEvent extends _sublEBOk {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
}
|
||
type _subzOxDh = BaseCollectionEvent
|
||
interface RecordConfirmPasswordResetEvent extends _subzOxDh {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
}
|
||
type _subcVymS = BaseCollectionEvent
|
||
interface RecordRequestVerificationEvent extends _subcVymS {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
}
|
||
type _subCgJzD = BaseCollectionEvent
|
||
interface RecordConfirmVerificationEvent extends _subCgJzD {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
}
|
||
type _subyxJre = BaseCollectionEvent
|
||
interface RecordRequestEmailChangeEvent extends _subyxJre {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
}
|
||
type _subZbEub = BaseCollectionEvent
|
||
interface RecordConfirmEmailChangeEvent extends _subZbEub {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
}
|
||
type _subhLOSu = BaseCollectionEvent
|
||
interface RecordListExternalAuthsEvent extends _subhLOSu {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
externalAuths: Array<(models.ExternalAuth | undefined)>
|
||
}
|
||
type _subAuUrW = BaseCollectionEvent
|
||
interface RecordUnlinkExternalAuthEvent extends _subAuUrW {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
externalAuth?: models.ExternalAuth
|
||
}
|
||
interface AdminsListEvent {
|
||
httpContext: echo.Context
|
||
admins: Array<(models.Admin | undefined)>
|
||
result?: search.Result
|
||
}
|
||
interface AdminViewEvent {
|
||
httpContext: echo.Context
|
||
admin?: models.Admin
|
||
}
|
||
interface AdminCreateEvent {
|
||
httpContext: echo.Context
|
||
admin?: models.Admin
|
||
}
|
||
interface AdminUpdateEvent {
|
||
httpContext: echo.Context
|
||
admin?: models.Admin
|
||
}
|
||
interface AdminDeleteEvent {
|
||
httpContext: echo.Context
|
||
admin?: models.Admin
|
||
}
|
||
interface AdminAuthEvent {
|
||
httpContext: echo.Context
|
||
admin?: models.Admin
|
||
token: string
|
||
}
|
||
interface AdminAuthWithPasswordEvent {
|
||
httpContext: echo.Context
|
||
admin?: models.Admin
|
||
identity: string
|
||
password: string
|
||
}
|
||
interface AdminAuthRefreshEvent {
|
||
httpContext: echo.Context
|
||
admin?: models.Admin
|
||
}
|
||
interface AdminRequestPasswordResetEvent {
|
||
httpContext: echo.Context
|
||
admin?: models.Admin
|
||
}
|
||
interface AdminConfirmPasswordResetEvent {
|
||
httpContext: echo.Context
|
||
admin?: models.Admin
|
||
}
|
||
interface CollectionsListEvent {
|
||
httpContext: echo.Context
|
||
collections: Array<(models.Collection | undefined)>
|
||
result?: search.Result
|
||
}
|
||
type _subPSZcY = BaseCollectionEvent
|
||
interface CollectionViewEvent extends _subPSZcY {
|
||
httpContext: echo.Context
|
||
}
|
||
type _subtrePc = BaseCollectionEvent
|
||
interface CollectionCreateEvent extends _subtrePc {
|
||
httpContext: echo.Context
|
||
}
|
||
type _subqhrrJ = BaseCollectionEvent
|
||
interface CollectionUpdateEvent extends _subqhrrJ {
|
||
httpContext: echo.Context
|
||
}
|
||
type _subPMxvV = BaseCollectionEvent
|
||
interface CollectionDeleteEvent extends _subPMxvV {
|
||
httpContext: echo.Context
|
||
}
|
||
interface CollectionsImportEvent {
|
||
httpContext: echo.Context
|
||
collections: Array<(models.Collection | undefined)>
|
||
}
|
||
type _subFyXlB = BaseModelEvent
|
||
interface FileTokenEvent extends _subFyXlB {
|
||
httpContext: echo.Context
|
||
token: string
|
||
}
|
||
type _sublZIFc = BaseCollectionEvent
|
||
interface FileDownloadEvent extends _sublZIFc {
|
||
httpContext: echo.Context
|
||
record?: models.Record
|
||
fileField?: schema.SchemaField
|
||
servedPath: string
|
||
servedName: string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package time provides functionality for measuring and displaying time.
|
||
*
|
||
* The calendrical calculations always assume a Gregorian calendar, with
|
||
* no leap seconds.
|
||
*
|
||
* # Monotonic Clocks
|
||
*
|
||
* Operating systems provide both a “wall clock,” which is subject to
|
||
* changes for clock synchronization, and a “monotonic clock,” which is
|
||
* not. The general rule is that the wall clock is for telling time and
|
||
* the monotonic clock is for measuring time. Rather than split the API,
|
||
* in this package the Time returned by time.Now contains both a wall
|
||
* clock reading and a monotonic clock reading; later time-telling
|
||
* operations use the wall clock reading, but later time-measuring
|
||
* operations, specifically comparisons and subtractions, use the
|
||
* monotonic clock reading.
|
||
*
|
||
* For example, this code always computes a positive elapsed time of
|
||
* approximately 20 milliseconds, even if the wall clock is changed during
|
||
* the operation being timed:
|
||
*
|
||
* ```
|
||
* start := time.Now()
|
||
* ... operation that takes 20 milliseconds ...
|
||
* t := time.Now()
|
||
* elapsed := t.Sub(start)
|
||
* ```
|
||
*
|
||
* Other idioms, such as time.Since(start), time.Until(deadline), and
|
||
* time.Now().Before(deadline), are similarly robust against wall clock
|
||
* resets.
|
||
*
|
||
* The rest of this section gives the precise details of how operations
|
||
* use monotonic clocks, but understanding those details is not required
|
||
* to use this package.
|
||
*
|
||
* The Time returned by time.Now contains a monotonic clock reading.
|
||
* If Time t has a monotonic clock reading, t.Add adds the same duration to
|
||
* both the wall clock and monotonic clock readings to compute the result.
|
||
* Because t.AddDate(y, m, d), t.Round(d), and t.Truncate(d) are wall time
|
||
* computations, they always strip any monotonic clock reading from their results.
|
||
* Because t.In, t.Local, and t.UTC are used for their effect on the interpretation
|
||
* of the wall time, they also strip any monotonic clock reading from their results.
|
||
* The canonical way to strip a monotonic clock reading is to use t = t.Round(0).
|
||
*
|
||
* If Times t and u both contain monotonic clock readings, the operations
|
||
* t.After(u), t.Before(u), t.Equal(u), and t.Sub(u) are carried out
|
||
* using the monotonic clock readings alone, ignoring the wall clock
|
||
* readings. If either t or u contains no monotonic clock reading, these
|
||
* operations fall back to using the wall clock readings.
|
||
*
|
||
* On some systems the monotonic clock will stop if the computer goes to sleep.
|
||
* On such a system, t.Sub(u) may not accurately reflect the actual
|
||
* time that passed between t and u.
|
||
*
|
||
* Because the monotonic clock reading has no meaning outside
|
||
* the current process, the serialized forms generated by t.GobEncode,
|
||
* t.MarshalBinary, t.MarshalJSON, and t.MarshalText omit the monotonic
|
||
* clock reading, and t.Format provides no format for it. Similarly, the
|
||
* constructors time.Date, time.Parse, time.ParseInLocation, and time.Unix,
|
||
* as well as the unmarshalers t.GobDecode, t.UnmarshalBinary.
|
||
* t.UnmarshalJSON, and t.UnmarshalText always create times with
|
||
* no monotonic clock reading.
|
||
*
|
||
* The monotonic clock reading exists only in Time values. It is not
|
||
* a part of Duration values or the Unix times returned by t.Unix and
|
||
* friends.
|
||
*
|
||
* Note that the Go == operator compares not just the time instant but
|
||
* also the Location and the monotonic clock reading. See the
|
||
* documentation for the Time type for a discussion of equality
|
||
* testing for Time values.
|
||
*
|
||
* For debugging, the result of t.String does include the monotonic
|
||
* clock reading if present. If t != u because of different monotonic clock readings,
|
||
* that difference will be visible when printing t.String() and u.String().
|
||
*/
|
||
namespace time {
|
||
/**
|
||
* A Month specifies a month of the year (January = 1, ...).
|
||
*/
|
||
interface Month extends Number{}
|
||
interface Month {
|
||
/**
|
||
* String returns the English name of the month ("January", "February", ...).
|
||
*/
|
||
string(): string
|
||
}
|
||
/**
|
||
* A Weekday specifies a day of the week (Sunday = 0, ...).
|
||
*/
|
||
interface Weekday extends Number{}
|
||
interface Weekday {
|
||
/**
|
||
* String returns the English name of the day ("Sunday", "Monday", ...).
|
||
*/
|
||
string(): string
|
||
}
|
||
/**
|
||
* A Location maps time instants to the zone in use at that time.
|
||
* Typically, the Location represents the collection of time offsets
|
||
* in use in a geographical area. For many Locations the time offset varies
|
||
* depending on whether daylight savings time is in use at the time instant.
|
||
*/
|
||
interface Location {
|
||
}
|
||
interface Location {
|
||
/**
|
||
* String returns a descriptive name for the time zone information,
|
||
* corresponding to the name argument to LoadLocation or FixedZone.
|
||
*/
|
||
string(): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package reflect implements run-time reflection, allowing a program to
|
||
* manipulate objects with arbitrary types. The typical use is to take a value
|
||
* with static type interface{} and extract its dynamic type information by
|
||
* calling TypeOf, which returns a Type.
|
||
*
|
||
* A call to ValueOf returns a Value representing the run-time data.
|
||
* Zero takes a Type and returns a Value representing a zero value
|
||
* for that type.
|
||
*
|
||
* See "The Laws of Reflection" for an introduction to reflection in Go:
|
||
* https://golang.org/doc/articles/laws_of_reflection.html
|
||
*/
|
||
namespace reflect {
|
||
/**
|
||
* Type is the representation of a Go type.
|
||
*
|
||
* Not all methods apply to all kinds of types. Restrictions,
|
||
* if any, are noted in the documentation for each method.
|
||
* Use the Kind method to find out the kind of type before
|
||
* calling kind-specific methods. Calling a method
|
||
* inappropriate to the kind of type causes a run-time panic.
|
||
*
|
||
* Type values are comparable, such as with the == operator,
|
||
* so they can be used as map keys.
|
||
* Two Type values are equal if they represent identical types.
|
||
*/
|
||
interface Type {
|
||
/**
|
||
* Align returns the alignment in bytes of a value of
|
||
* this type when allocated in memory.
|
||
*/
|
||
align(): number
|
||
/**
|
||
* FieldAlign returns the alignment in bytes of a value of
|
||
* this type when used as a field in a struct.
|
||
*/
|
||
fieldAlign(): number
|
||
/**
|
||
* Method returns the i'th method in the type's method set.
|
||
* It panics if i is not in the range [0, NumMethod()).
|
||
*
|
||
* For a non-interface type T or *T, the returned Method's Type and Func
|
||
* fields describe a function whose first argument is the receiver,
|
||
* and only exported methods are accessible.
|
||
*
|
||
* For an interface type, the returned Method's Type field gives the
|
||
* method signature, without a receiver, and the Func field is nil.
|
||
*
|
||
* Methods are sorted in lexicographic order.
|
||
*/
|
||
method(_arg0: number): Method
|
||
/**
|
||
* MethodByName returns the method with that name in the type's
|
||
* method set and a boolean indicating if the method was found.
|
||
*
|
||
* For a non-interface type T or *T, the returned Method's Type and Func
|
||
* fields describe a function whose first argument is the receiver.
|
||
*
|
||
* For an interface type, the returned Method's Type field gives the
|
||
* method signature, without a receiver, and the Func field is nil.
|
||
*/
|
||
methodByName(_arg0: string): [Method, boolean]
|
||
/**
|
||
* NumMethod returns the number of methods accessible using Method.
|
||
*
|
||
* For a non-interface type, it returns the number of exported methods.
|
||
*
|
||
* For an interface type, it returns the number of exported and unexported methods.
|
||
*/
|
||
numMethod(): number
|
||
/**
|
||
* Name returns the type's name within its package for a defined type.
|
||
* For other (non-defined) types it returns the empty string.
|
||
*/
|
||
name(): string
|
||
/**
|
||
* PkgPath returns a defined type's package path, that is, the import path
|
||
* that uniquely identifies the package, such as "encoding/base64".
|
||
* If the type was predeclared (string, error) or not defined (*T, struct{},
|
||
* []int, or A where A is an alias for a non-defined type), the package path
|
||
* will be the empty string.
|
||
*/
|
||
pkgPath(): string
|
||
/**
|
||
* Size returns the number of bytes needed to store
|
||
* a value of the given type; it is analogous to unsafe.Sizeof.
|
||
*/
|
||
size(): number
|
||
/**
|
||
* String returns a string representation of the type.
|
||
* The string representation may use shortened package names
|
||
* (e.g., base64 instead of "encoding/base64") and is not
|
||
* guaranteed to be unique among types. To test for type identity,
|
||
* compare the Types directly.
|
||
*/
|
||
string(): string
|
||
/**
|
||
* Kind returns the specific kind of this type.
|
||
*/
|
||
kind(): Kind
|
||
/**
|
||
* Implements reports whether the type implements the interface type u.
|
||
*/
|
||
implements(u: Type): boolean
|
||
/**
|
||
* AssignableTo reports whether a value of the type is assignable to type u.
|
||
*/
|
||
assignableTo(u: Type): boolean
|
||
/**
|
||
* ConvertibleTo reports whether a value of the type is convertible to type u.
|
||
* Even if ConvertibleTo returns true, the conversion may still panic.
|
||
* For example, a slice of type []T is convertible to *[N]T,
|
||
* but the conversion will panic if its length is less than N.
|
||
*/
|
||
convertibleTo(u: Type): boolean
|
||
/**
|
||
* Comparable reports whether values of this type are comparable.
|
||
* Even if Comparable returns true, the comparison may still panic.
|
||
* For example, values of interface type are comparable,
|
||
* but the comparison will panic if their dynamic type is not comparable.
|
||
*/
|
||
comparable(): boolean
|
||
/**
|
||
* Bits returns the size of the type in bits.
|
||
* It panics if the type's Kind is not one of the
|
||
* sized or unsized Int, Uint, Float, or Complex kinds.
|
||
*/
|
||
bits(): number
|
||
/**
|
||
* ChanDir returns a channel type's direction.
|
||
* It panics if the type's Kind is not Chan.
|
||
*/
|
||
chanDir(): ChanDir
|
||
/**
|
||
* IsVariadic reports whether a function type's final input parameter
|
||
* is a "..." parameter. If so, t.In(t.NumIn() - 1) returns the parameter's
|
||
* implicit actual type []T.
|
||
*
|
||
* For concreteness, if t represents func(x int, y ... float64), then
|
||
*
|
||
* ```
|
||
* t.NumIn() == 2
|
||
* t.In(0) is the reflect.Type for "int"
|
||
* t.In(1) is the reflect.Type for "[]float64"
|
||
* t.IsVariadic() == true
|
||
* ```
|
||
*
|
||
* IsVariadic panics if the type's Kind is not Func.
|
||
*/
|
||
isVariadic(): boolean
|
||
/**
|
||
* Elem returns a type's element type.
|
||
* It panics if the type's Kind is not Array, Chan, Map, Pointer, or Slice.
|
||
*/
|
||
elem(): Type
|
||
/**
|
||
* Field returns a struct type's i'th field.
|
||
* It panics if the type's Kind is not Struct.
|
||
* It panics if i is not in the range [0, NumField()).
|
||
*/
|
||
field(i: number): StructField
|
||
/**
|
||
* FieldByIndex returns the nested field corresponding
|
||
* to the index sequence. It is equivalent to calling Field
|
||
* successively for each index i.
|
||
* It panics if the type's Kind is not Struct.
|
||
*/
|
||
fieldByIndex(index: Array<number>): StructField
|
||
/**
|
||
* FieldByName returns the struct field with the given name
|
||
* and a boolean indicating if the field was found.
|
||
*/
|
||
fieldByName(name: string): [StructField, boolean]
|
||
/**
|
||
* FieldByNameFunc returns the struct field with a name
|
||
* that satisfies the match function and a boolean indicating if
|
||
* the field was found.
|
||
*
|
||
* FieldByNameFunc considers the fields in the struct itself
|
||
* and then the fields in any embedded structs, in breadth first order,
|
||
* stopping at the shallowest nesting depth containing one or more
|
||
* fields satisfying the match function. If multiple fields at that depth
|
||
* satisfy the match function, they cancel each other
|
||
* and FieldByNameFunc returns no match.
|
||
* This behavior mirrors Go's handling of name lookup in
|
||
* structs containing embedded fields.
|
||
*/
|
||
fieldByNameFunc(match: (_arg0: string) => boolean): [StructField, boolean]
|
||
/**
|
||
* In returns the type of a function type's i'th input parameter.
|
||
* It panics if the type's Kind is not Func.
|
||
* It panics if i is not in the range [0, NumIn()).
|
||
*/
|
||
in(i: number): Type
|
||
/**
|
||
* Key returns a map type's key type.
|
||
* It panics if the type's Kind is not Map.
|
||
*/
|
||
key(): Type
|
||
/**
|
||
* Len returns an array type's length.
|
||
* It panics if the type's Kind is not Array.
|
||
*/
|
||
len(): number
|
||
/**
|
||
* NumField returns a struct type's field count.
|
||
* It panics if the type's Kind is not Struct.
|
||
*/
|
||
numField(): number
|
||
/**
|
||
* NumIn returns a function type's input parameter count.
|
||
* It panics if the type's Kind is not Func.
|
||
*/
|
||
numIn(): number
|
||
/**
|
||
* NumOut returns a function type's output parameter count.
|
||
* It panics if the type's Kind is not Func.
|
||
*/
|
||
numOut(): number
|
||
/**
|
||
* Out returns the type of a function type's i'th output parameter.
|
||
* It panics if the type's Kind is not Func.
|
||
* It panics if i is not in the range [0, NumOut()).
|
||
*/
|
||
out(i: number): Type
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package fs defines basic interfaces to a file system.
|
||
* A file system can be provided by the host operating system
|
||
* but also by other packages.
|
||
*/
|
||
namespace fs {
|
||
/**
|
||
* A FileInfo describes a file and is returned by Stat.
|
||
*/
|
||
interface FileInfo {
|
||
name(): string // base name of the file
|
||
size(): number // length in bytes for regular files; system-dependent for others
|
||
mode(): FileMode // file mode bits
|
||
modTime(): time.Time // modification time
|
||
isDir(): boolean // abbreviation for Mode().IsDir()
|
||
sys(): any // underlying data source (can return nil)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package driver defines interfaces to be implemented by database
|
||
* drivers as used by package sql.
|
||
*
|
||
* Most code should use package sql.
|
||
*
|
||
* The driver interface has evolved over time. Drivers should implement
|
||
* Connector and DriverContext interfaces.
|
||
* The Connector.Connect and Driver.Open methods should never return ErrBadConn.
|
||
* ErrBadConn should only be returned from Validator, SessionResetter, or
|
||
* a query method if the connection is already in an invalid (e.g. closed) state.
|
||
*
|
||
* All Conn implementations should implement the following interfaces:
|
||
* Pinger, SessionResetter, and Validator.
|
||
*
|
||
* If named parameters or context are supported, the driver's Conn should implement:
|
||
* ExecerContext, QueryerContext, ConnPrepareContext, and ConnBeginTx.
|
||
*
|
||
* To support custom data types, implement NamedValueChecker. NamedValueChecker
|
||
* also allows queries to accept per-query options as a parameter by returning
|
||
* ErrRemoveArgument from CheckNamedValue.
|
||
*
|
||
* If multiple result sets are supported, Rows should implement RowsNextResultSet.
|
||
* If the driver knows how to describe the types present in the returned result
|
||
* it should implement the following interfaces: RowsColumnTypeScanType,
|
||
* RowsColumnTypeDatabaseTypeName, RowsColumnTypeLength, RowsColumnTypeNullable,
|
||
* and RowsColumnTypePrecisionScale. A given row value may also return a Rows
|
||
* type, which may represent a database cursor value.
|
||
*
|
||
* Before a connection is returned to the connection pool after use, IsValid is
|
||
* called if implemented. Before a connection is reused for another query,
|
||
* ResetSession is called if implemented. If a connection is never returned to the
|
||
* connection pool but immediately reused, then ResetSession is called prior to
|
||
* reuse but IsValid is not called.
|
||
*/
|
||
namespace driver {
|
||
/**
|
||
* Conn is a connection to a database. It is not used concurrently
|
||
* by multiple goroutines.
|
||
*
|
||
* Conn is assumed to be stateful.
|
||
*/
|
||
interface Conn {
|
||
/**
|
||
* Prepare returns a prepared statement, bound to this connection.
|
||
*/
|
||
prepare(query: string): Stmt
|
||
/**
|
||
* Close invalidates and potentially stops any current
|
||
* prepared statements and transactions, marking this
|
||
* connection as no longer in use.
|
||
*
|
||
* Because the sql package maintains a free pool of
|
||
* connections and only calls Close when there's a surplus of
|
||
* idle connections, it shouldn't be necessary for drivers to
|
||
* do their own connection caching.
|
||
*
|
||
* Drivers must ensure all network calls made by Close
|
||
* do not block indefinitely (e.g. apply a timeout).
|
||
*/
|
||
close(): void
|
||
/**
|
||
* Begin starts and returns a new transaction.
|
||
*
|
||
* Deprecated: Drivers should implement ConnBeginTx instead (or additionally).
|
||
*/
|
||
begin(): Tx
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package url parses URLs and implements query escaping.
|
||
*/
|
||
namespace url {
|
||
/**
|
||
* The Userinfo type is an immutable encapsulation of username and
|
||
* password details for a URL. An existing Userinfo value is guaranteed
|
||
* to have a username set (potentially empty, as allowed by RFC 2396),
|
||
* and optionally a password.
|
||
*/
|
||
interface Userinfo {
|
||
}
|
||
interface Userinfo {
|
||
/**
|
||
* Username returns the username.
|
||
*/
|
||
username(): string
|
||
}
|
||
interface Userinfo {
|
||
/**
|
||
* Password returns the password in case it is set, and whether it is set.
|
||
*/
|
||
password(): [string, boolean]
|
||
}
|
||
interface Userinfo {
|
||
/**
|
||
* String returns the encoded userinfo information in the standard form
|
||
* of "username[:password]".
|
||
*/
|
||
string(): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package types implements some commonly used db serializable types
|
||
* like datetime, json, etc.
|
||
*/
|
||
namespace types {
|
||
/**
|
||
* JsonRaw defines a json value type that is safe for db read/write.
|
||
*/
|
||
interface JsonRaw extends String{}
|
||
interface JsonRaw {
|
||
/**
|
||
* String returns the current JsonRaw instance as a json encoded string.
|
||
*/
|
||
string(): string
|
||
}
|
||
interface JsonRaw {
|
||
/**
|
||
* MarshalJSON implements the [json.Marshaler] interface.
|
||
*/
|
||
marshalJSON(): string
|
||
}
|
||
interface JsonRaw {
|
||
/**
|
||
* UnmarshalJSON implements the [json.Unmarshaler] interface.
|
||
*/
|
||
unmarshalJSON(b: string): void
|
||
}
|
||
interface JsonRaw {
|
||
/**
|
||
* Value implements the [driver.Valuer] interface.
|
||
*/
|
||
value(): driver.Value
|
||
}
|
||
interface JsonRaw {
|
||
/**
|
||
* Scan implements [sql.Scanner] interface to scan the provided value
|
||
* into the current JsonRaw instance.
|
||
*/
|
||
scan(value: {
|
||
}): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package bufio implements buffered I/O. It wraps an io.Reader or io.Writer
|
||
* object, creating another object (Reader or Writer) that also implements
|
||
* the interface but provides buffering and some help for textual I/O.
|
||
*/
|
||
namespace bufio {
|
||
/**
|
||
* ReadWriter stores pointers to a Reader and a Writer.
|
||
* It implements io.ReadWriter.
|
||
*/
|
||
type _subpmnlf = Reader&Writer
|
||
interface ReadWriter extends _subpmnlf {
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package net provides a portable interface for network I/O, including
|
||
* TCP/IP, UDP, domain name resolution, and Unix domain sockets.
|
||
*
|
||
* Although the package provides access to low-level networking
|
||
* primitives, most clients will need only the basic interface provided
|
||
* by the Dial, Listen, and Accept functions and the associated
|
||
* Conn and Listener interfaces. The crypto/tls package uses
|
||
* the same interfaces and similar Dial and Listen functions.
|
||
*
|
||
* The Dial function connects to a server:
|
||
*
|
||
* ```
|
||
* conn, err := net.Dial("tcp", "golang.org:80")
|
||
* if err != nil {
|
||
* // handle error
|
||
* }
|
||
* fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n")
|
||
* status, err := bufio.NewReader(conn).ReadString('\n')
|
||
* // ...
|
||
* ```
|
||
*
|
||
* The Listen function creates servers:
|
||
*
|
||
* ```
|
||
* ln, err := net.Listen("tcp", ":8080")
|
||
* if err != nil {
|
||
* // handle error
|
||
* }
|
||
* for {
|
||
* conn, err := ln.Accept()
|
||
* if err != nil {
|
||
* // handle error
|
||
* }
|
||
* go handleConnection(conn)
|
||
* }
|
||
* ```
|
||
*
|
||
* # Name Resolution
|
||
*
|
||
* The method for resolving domain names, whether indirectly with functions like Dial
|
||
* or directly with functions like LookupHost and LookupAddr, varies by operating system.
|
||
*
|
||
* On Unix systems, the resolver has two options for resolving names.
|
||
* It can use a pure Go resolver that sends DNS requests directly to the servers
|
||
* listed in /etc/resolv.conf, or it can use a cgo-based resolver that calls C
|
||
* library routines such as getaddrinfo and getnameinfo.
|
||
*
|
||
* By default the pure Go resolver is used, because a blocked DNS request consumes
|
||
* only a goroutine, while a blocked C call consumes an operating system thread.
|
||
* When cgo is available, the cgo-based resolver is used instead under a variety of
|
||
* conditions: on systems that do not let programs make direct DNS requests (OS X),
|
||
* when the LOCALDOMAIN environment variable is present (even if empty),
|
||
* when the RES_OPTIONS or HOSTALIASES environment variable is non-empty,
|
||
* when the ASR_CONFIG environment variable is non-empty (OpenBSD only),
|
||
* when /etc/resolv.conf or /etc/nsswitch.conf specify the use of features that the
|
||
* Go resolver does not implement, and when the name being looked up ends in .local
|
||
* or is an mDNS name.
|
||
*
|
||
* The resolver decision can be overridden by setting the netdns value of the
|
||
* GODEBUG environment variable (see package runtime) to go or cgo, as in:
|
||
*
|
||
* ```
|
||
* export GODEBUG=netdns=go # force pure Go resolver
|
||
* export GODEBUG=netdns=cgo # force native resolver (cgo, win32)
|
||
* ```
|
||
*
|
||
* The decision can also be forced while building the Go source tree
|
||
* by setting the netgo or netcgo build tag.
|
||
*
|
||
* A numeric netdns setting, as in GODEBUG=netdns=1, causes the resolver
|
||
* to print debugging information about its decisions.
|
||
* To force a particular resolver while also printing debugging information,
|
||
* join the two settings by a plus sign, as in GODEBUG=netdns=go+1.
|
||
*
|
||
* On Plan 9, the resolver always accesses /net/cs and /net/dns.
|
||
*
|
||
* On Windows, in Go 1.18.x and earlier, the resolver always used C
|
||
* library functions, such as GetAddrInfo and DnsQuery.
|
||
*/
|
||
namespace net {
|
||
/**
|
||
* An IP is a single IP address, a slice of bytes.
|
||
* Functions in this package accept either 4-byte (IPv4)
|
||
* or 16-byte (IPv6) slices as input.
|
||
*
|
||
* Note that in this documentation, referring to an
|
||
* IP address as an IPv4 address or an IPv6 address
|
||
* is a semantic property of the address, not just the
|
||
* length of the byte slice: a 16-byte slice can still
|
||
* be an IPv4 address.
|
||
*/
|
||
interface IP extends String{}
|
||
/**
|
||
* An IPMask is a bitmask that can be used to manipulate
|
||
* IP addresses for IP addressing and routing.
|
||
*
|
||
* See type IPNet and func ParseCIDR for details.
|
||
*/
|
||
interface IPMask extends String{}
|
||
/**
|
||
* An IPNet represents an IP network.
|
||
*/
|
||
interface IPNet {
|
||
ip: IP // network number
|
||
mask: IPMask // network mask
|
||
}
|
||
interface IP {
|
||
/**
|
||
* IsUnspecified reports whether ip is an unspecified address, either
|
||
* the IPv4 address "0.0.0.0" or the IPv6 address "::".
|
||
*/
|
||
isUnspecified(): boolean
|
||
}
|
||
interface IP {
|
||
/**
|
||
* IsLoopback reports whether ip is a loopback address.
|
||
*/
|
||
isLoopback(): boolean
|
||
}
|
||
interface IP {
|
||
/**
|
||
* IsPrivate reports whether ip is a private address, according to
|
||
* RFC 1918 (IPv4 addresses) and RFC 4193 (IPv6 addresses).
|
||
*/
|
||
isPrivate(): boolean
|
||
}
|
||
interface IP {
|
||
/**
|
||
* IsMulticast reports whether ip is a multicast address.
|
||
*/
|
||
isMulticast(): boolean
|
||
}
|
||
interface IP {
|
||
/**
|
||
* IsInterfaceLocalMulticast reports whether ip is
|
||
* an interface-local multicast address.
|
||
*/
|
||
isInterfaceLocalMulticast(): boolean
|
||
}
|
||
interface IP {
|
||
/**
|
||
* IsLinkLocalMulticast reports whether ip is a link-local
|
||
* multicast address.
|
||
*/
|
||
isLinkLocalMulticast(): boolean
|
||
}
|
||
interface IP {
|
||
/**
|
||
* IsLinkLocalUnicast reports whether ip is a link-local
|
||
* unicast address.
|
||
*/
|
||
isLinkLocalUnicast(): boolean
|
||
}
|
||
interface IP {
|
||
/**
|
||
* IsGlobalUnicast reports whether ip is a global unicast
|
||
* address.
|
||
*
|
||
* The identification of global unicast addresses uses address type
|
||
* identification as defined in RFC 1122, RFC 4632 and RFC 4291 with
|
||
* the exception of IPv4 directed broadcast addresses.
|
||
* It returns true even if ip is in IPv4 private address space or
|
||
* local IPv6 unicast address space.
|
||
*/
|
||
isGlobalUnicast(): boolean
|
||
}
|
||
interface IP {
|
||
/**
|
||
* To4 converts the IPv4 address ip to a 4-byte representation.
|
||
* If ip is not an IPv4 address, To4 returns nil.
|
||
*/
|
||
to4(): IP
|
||
}
|
||
interface IP {
|
||
/**
|
||
* To16 converts the IP address ip to a 16-byte representation.
|
||
* If ip is not an IP address (it is the wrong length), To16 returns nil.
|
||
*/
|
||
to16(): IP
|
||
}
|
||
interface IP {
|
||
/**
|
||
* DefaultMask returns the default IP mask for the IP address ip.
|
||
* Only IPv4 addresses have default masks; DefaultMask returns
|
||
* nil if ip is not a valid IPv4 address.
|
||
*/
|
||
defaultMask(): IPMask
|
||
}
|
||
interface IP {
|
||
/**
|
||
* Mask returns the result of masking the IP address ip with mask.
|
||
*/
|
||
mask(mask: IPMask): IP
|
||
}
|
||
interface IP {
|
||
/**
|
||
* String returns the string form of the IP address ip.
|
||
* It returns one of 4 forms:
|
||
* ```
|
||
* - "<nil>", if ip has length 0
|
||
* - dotted decimal ("192.0.2.1"), if ip is an IPv4 or IP4-mapped IPv6 address
|
||
* - IPv6 conforming to RFC 5952 ("2001:db8::1"), if ip is a valid IPv6 address
|
||
* - the hexadecimal form of ip, without punctuation, if no other cases apply
|
||
* ```
|
||
*/
|
||
string(): string
|
||
}
|
||
interface IP {
|
||
/**
|
||
* MarshalText implements the encoding.TextMarshaler interface.
|
||
* The encoding is the same as returned by String, with one exception:
|
||
* When len(ip) is zero, it returns an empty slice.
|
||
*/
|
||
marshalText(): string
|
||
}
|
||
interface IP {
|
||
/**
|
||
* UnmarshalText implements the encoding.TextUnmarshaler interface.
|
||
* The IP address is expected in a form accepted by ParseIP.
|
||
*/
|
||
unmarshalText(text: string): void
|
||
}
|
||
interface IP {
|
||
/**
|
||
* Equal reports whether ip and x are the same IP address.
|
||
* An IPv4 address and that same address in IPv6 form are
|
||
* considered to be equal.
|
||
*/
|
||
equal(x: IP): boolean
|
||
}
|
||
interface IPMask {
|
||
/**
|
||
* Size returns the number of leading ones and total bits in the mask.
|
||
* If the mask is not in the canonical form--ones followed by zeros--then
|
||
* Size returns 0, 0.
|
||
*/
|
||
size(): number
|
||
}
|
||
interface IPMask {
|
||
/**
|
||
* String returns the hexadecimal form of m, with no punctuation.
|
||
*/
|
||
string(): string
|
||
}
|
||
interface IPNet {
|
||
/**
|
||
* Contains reports whether the network includes ip.
|
||
*/
|
||
contains(ip: IP): boolean
|
||
}
|
||
interface IPNet {
|
||
/**
|
||
* Network returns the address's network name, "ip+net".
|
||
*/
|
||
network(): string
|
||
}
|
||
interface IPNet {
|
||
/**
|
||
* String returns the CIDR notation of n like "192.0.2.0/24"
|
||
* or "2001:db8::/48" as defined in RFC 4632 and RFC 4291.
|
||
* If the mask is not in the canonical form, it returns the
|
||
* string which consists of an IP address, followed by a slash
|
||
* character and a mask expressed as hexadecimal form with no
|
||
* punctuation like "198.51.100.0/c000ff00".
|
||
*/
|
||
string(): string
|
||
}
|
||
/**
|
||
* Conn is a generic stream-oriented network connection.
|
||
*
|
||
* Multiple goroutines may invoke methods on a Conn simultaneously.
|
||
*/
|
||
interface Conn {
|
||
/**
|
||
* Read reads data from the connection.
|
||
* Read can be made to time out and return an error after a fixed
|
||
* time limit; see SetDeadline and SetReadDeadline.
|
||
*/
|
||
read(b: string): number
|
||
/**
|
||
* Write writes data to the connection.
|
||
* Write can be made to time out and return an error after a fixed
|
||
* time limit; see SetDeadline and SetWriteDeadline.
|
||
*/
|
||
write(b: string): number
|
||
/**
|
||
* Close closes the connection.
|
||
* Any blocked Read or Write operations will be unblocked and return errors.
|
||
*/
|
||
close(): void
|
||
/**
|
||
* LocalAddr returns the local network address, if known.
|
||
*/
|
||
localAddr(): Addr
|
||
/**
|
||
* RemoteAddr returns the remote network address, if known.
|
||
*/
|
||
remoteAddr(): Addr
|
||
/**
|
||
* SetDeadline sets the read and write deadlines associated
|
||
* with the connection. It is equivalent to calling both
|
||
* SetReadDeadline and SetWriteDeadline.
|
||
*
|
||
* A deadline is an absolute time after which I/O operations
|
||
* fail instead of blocking. The deadline applies to all future
|
||
* and pending I/O, not just the immediately following call to
|
||
* Read or Write. After a deadline has been exceeded, the
|
||
* connection can be refreshed by setting a deadline in the future.
|
||
*
|
||
* If the deadline is exceeded a call to Read or Write or to other
|
||
* I/O methods will return an error that wraps os.ErrDeadlineExceeded.
|
||
* This can be tested using errors.Is(err, os.ErrDeadlineExceeded).
|
||
* The error's Timeout method will return true, but note that there
|
||
* are other possible errors for which the Timeout method will
|
||
* return true even if the deadline has not been exceeded.
|
||
*
|
||
* An idle timeout can be implemented by repeatedly extending
|
||
* the deadline after successful Read or Write calls.
|
||
*
|
||
* A zero value for t means I/O operations will not time out.
|
||
*/
|
||
setDeadline(t: time.Time): void
|
||
/**
|
||
* SetReadDeadline sets the deadline for future Read calls
|
||
* and any currently-blocked Read call.
|
||
* A zero value for t means Read will not time out.
|
||
*/
|
||
setReadDeadline(t: time.Time): void
|
||
/**
|
||
* SetWriteDeadline sets the deadline for future Write calls
|
||
* and any currently-blocked Write call.
|
||
* Even if write times out, it may return n > 0, indicating that
|
||
* some of the data was successfully written.
|
||
* A zero value for t means Write will not time out.
|
||
*/
|
||
setWriteDeadline(t: time.Time): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Copyright 2021 The Go Authors. All rights reserved.
|
||
* Use of this source code is governed by a BSD-style
|
||
* license that can be found in the LICENSE file.
|
||
*/
|
||
/**
|
||
* Package x509 parses X.509-encoded keys and certificates.
|
||
*/
|
||
namespace x509 {
|
||
// @ts-ignore
|
||
import cryptobyte_asn1 = asn1
|
||
interface Certificate {
|
||
/**
|
||
* Verify attempts to verify c by building one or more chains from c to a
|
||
* certificate in opts.Roots, using certificates in opts.Intermediates if
|
||
* needed. If successful, it returns one or more chains where the first
|
||
* element of the chain is c and the last element is from opts.Roots.
|
||
*
|
||
* If opts.Roots is nil, the platform verifier might be used, and
|
||
* verification details might differ from what is described below. If system
|
||
* roots are unavailable the returned error will be of type SystemRootsError.
|
||
*
|
||
* Name constraints in the intermediates will be applied to all names claimed
|
||
* in the chain, not just opts.DNSName. Thus it is invalid for a leaf to claim
|
||
* example.com if an intermediate doesn't permit it, even if example.com is not
|
||
* the name being validated. Note that DirectoryName constraints are not
|
||
* supported.
|
||
*
|
||
* Name constraint validation follows the rules from RFC 5280, with the
|
||
* addition that DNS name constraints may use the leading period format
|
||
* defined for emails and URIs. When a constraint has a leading period
|
||
* it indicates that at least one additional label must be prepended to
|
||
* the constrained name to be considered valid.
|
||
*
|
||
* Extended Key Usage values are enforced nested down a chain, so an intermediate
|
||
* or root that enumerates EKUs prevents a leaf from asserting an EKU not in that
|
||
* list. (While this is not specified, it is common practice in order to limit
|
||
* the types of certificates a CA can issue.)
|
||
*
|
||
* Certificates that use SHA1WithRSA and ECDSAWithSHA1 signatures are not supported,
|
||
* and will not be used to build chains.
|
||
*
|
||
* WARNING: this function doesn't do any revocation checking.
|
||
*/
|
||
verify(opts: VerifyOptions): Array<Array<(Certificate | undefined)>>
|
||
}
|
||
interface Certificate {
|
||
/**
|
||
* VerifyHostname returns nil if c is a valid certificate for the named host.
|
||
* Otherwise it returns an error describing the mismatch.
|
||
*
|
||
* IP addresses can be optionally enclosed in square brackets and are checked
|
||
* against the IPAddresses field. Other names are checked case insensitively
|
||
* against the DNSNames field. If the names are valid hostnames, the certificate
|
||
* fields can have a wildcard as the left-most label.
|
||
*
|
||
* Note that the legacy Common Name field is ignored.
|
||
*/
|
||
verifyHostname(h: string): void
|
||
}
|
||
/**
|
||
* A Certificate represents an X.509 certificate.
|
||
*/
|
||
interface Certificate {
|
||
raw: string // Complete ASN.1 DER content (certificate, signature algorithm and signature).
|
||
rawTBSCertificate: string // Certificate part of raw ASN.1 DER content.
|
||
rawSubjectPublicKeyInfo: string // DER encoded SubjectPublicKeyInfo.
|
||
rawSubject: string // DER encoded Subject
|
||
rawIssuer: string // DER encoded Issuer
|
||
signature: string
|
||
signatureAlgorithm: SignatureAlgorithm
|
||
publicKeyAlgorithm: PublicKeyAlgorithm
|
||
publicKey: any
|
||
version: number
|
||
serialNumber?: big.Int
|
||
issuer: pkix.Name
|
||
subject: pkix.Name
|
||
notBefore: time.Time // Validity bounds.
|
||
keyUsage: KeyUsage
|
||
/**
|
||
* Extensions contains raw X.509 extensions. When parsing certificates,
|
||
* this can be used to extract non-critical extensions that are not
|
||
* parsed by this package. When marshaling certificates, the Extensions
|
||
* field is ignored, see ExtraExtensions.
|
||
*/
|
||
extensions: Array<pkix.Extension>
|
||
/**
|
||
* ExtraExtensions contains extensions to be copied, raw, into any
|
||
* marshaled certificates. Values override any extensions that would
|
||
* otherwise be produced based on the other fields. The ExtraExtensions
|
||
* field is not populated when parsing certificates, see Extensions.
|
||
*/
|
||
extraExtensions: Array<pkix.Extension>
|
||
/**
|
||
* UnhandledCriticalExtensions contains a list of extension IDs that
|
||
* were not (fully) processed when parsing. Verify will fail if this
|
||
* slice is non-empty, unless verification is delegated to an OS
|
||
* library which understands all the critical extensions.
|
||
*
|
||
* Users can access these extensions using Extensions and can remove
|
||
* elements from this slice if they believe that they have been
|
||
* handled.
|
||
*/
|
||
unhandledCriticalExtensions: Array<asn1.ObjectIdentifier>
|
||
extKeyUsage: Array<ExtKeyUsage> // Sequence of extended key usages.
|
||
unknownExtKeyUsage: Array<asn1.ObjectIdentifier> // Encountered extended key usages unknown to this package.
|
||
/**
|
||
* BasicConstraintsValid indicates whether IsCA, MaxPathLen,
|
||
* and MaxPathLenZero are valid.
|
||
*/
|
||
basicConstraintsValid: boolean
|
||
isCA: boolean
|
||
/**
|
||
* MaxPathLen and MaxPathLenZero indicate the presence and
|
||
* value of the BasicConstraints' "pathLenConstraint".
|
||
*
|
||
* When parsing a certificate, a positive non-zero MaxPathLen
|
||
* means that the field was specified, -1 means it was unset,
|
||
* and MaxPathLenZero being true mean that the field was
|
||
* explicitly set to zero. The case of MaxPathLen==0 with MaxPathLenZero==false
|
||
* should be treated equivalent to -1 (unset).
|
||
*
|
||
* When generating a certificate, an unset pathLenConstraint
|
||
* can be requested with either MaxPathLen == -1 or using the
|
||
* zero value for both MaxPathLen and MaxPathLenZero.
|
||
*/
|
||
maxPathLen: number
|
||
/**
|
||
* MaxPathLenZero indicates that BasicConstraintsValid==true
|
||
* and MaxPathLen==0 should be interpreted as an actual
|
||
* maximum path length of zero. Otherwise, that combination is
|
||
* interpreted as MaxPathLen not being set.
|
||
*/
|
||
maxPathLenZero: boolean
|
||
subjectKeyId: string
|
||
authorityKeyId: string
|
||
/**
|
||
* RFC 5280, 4.2.2.1 (Authority Information Access)
|
||
*/
|
||
ocspServer: Array<string>
|
||
issuingCertificateURL: Array<string>
|
||
/**
|
||
* Subject Alternate Name values. (Note that these values may not be valid
|
||
* if invalid values were contained within a parsed certificate. For
|
||
* example, an element of DNSNames may not be a valid DNS domain name.)
|
||
*/
|
||
dnsNames: Array<string>
|
||
emailAddresses: Array<string>
|
||
ipAddresses: Array<net.IP>
|
||
urIs: Array<(url.URL | undefined)>
|
||
/**
|
||
* Name constraints
|
||
*/
|
||
permittedDNSDomainsCritical: boolean // if true then the name constraints are marked critical.
|
||
permittedDNSDomains: Array<string>
|
||
excludedDNSDomains: Array<string>
|
||
permittedIPRanges: Array<(net.IPNet | undefined)>
|
||
excludedIPRanges: Array<(net.IPNet | undefined)>
|
||
permittedEmailAddresses: Array<string>
|
||
excludedEmailAddresses: Array<string>
|
||
permittedURIDomains: Array<string>
|
||
excludedURIDomains: Array<string>
|
||
/**
|
||
* CRL Distribution Points
|
||
*/
|
||
crlDistributionPoints: Array<string>
|
||
policyIdentifiers: Array<asn1.ObjectIdentifier>
|
||
}
|
||
interface Certificate {
|
||
equal(other: Certificate): boolean
|
||
}
|
||
interface Certificate {
|
||
/**
|
||
* CheckSignatureFrom verifies that the signature on c is a valid signature
|
||
* from parent. SHA1WithRSA and ECDSAWithSHA1 signatures are not supported.
|
||
*/
|
||
checkSignatureFrom(parent: Certificate): void
|
||
}
|
||
interface Certificate {
|
||
/**
|
||
* CheckSignature verifies that signature is a valid signature over signed from
|
||
* c's public key.
|
||
*/
|
||
checkSignature(algo: SignatureAlgorithm, signed: string): void
|
||
}
|
||
interface Certificate {
|
||
/**
|
||
* CheckCRLSignature checks that the signature in crl is from c.
|
||
*
|
||
* Deprecated: Use RevocationList.CheckSignatureFrom instead.
|
||
*/
|
||
checkCRLSignature(crl: pkix.CertificateList): void
|
||
}
|
||
interface Certificate {
|
||
/**
|
||
* CreateCRL returns a DER encoded CRL, signed by this Certificate, that
|
||
* contains the given list of revoked certificates.
|
||
*
|
||
* Deprecated: this method does not generate an RFC 5280 conformant X.509 v2 CRL.
|
||
* To generate a standards compliant CRL, use CreateRevocationList instead.
|
||
*/
|
||
createCRL(rand: io.Reader, priv: any, revokedCerts: Array<pkix.RevokedCertificate>, now: time.Time): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package multipart implements MIME multipart parsing, as defined in RFC
|
||
* 2046.
|
||
*
|
||
* The implementation is sufficient for HTTP (RFC 2388) and the multipart
|
||
* bodies generated by popular browsers.
|
||
*/
|
||
namespace multipart {
|
||
/**
|
||
* A Part represents a single part in a multipart body.
|
||
*/
|
||
interface Part {
|
||
/**
|
||
* The headers of the body, if any, with the keys canonicalized
|
||
* in the same fashion that the Go http.Request headers are.
|
||
* For example, "foo-bar" changes case to "Foo-Bar"
|
||
*/
|
||
header: textproto.MIMEHeader
|
||
}
|
||
interface Part {
|
||
/**
|
||
* FormName returns the name parameter if p has a Content-Disposition
|
||
* of type "form-data". Otherwise it returns the empty string.
|
||
*/
|
||
formName(): string
|
||
}
|
||
interface Part {
|
||
/**
|
||
* FileName returns the filename parameter of the Part's Content-Disposition
|
||
* header. If not empty, the filename is passed through filepath.Base (which is
|
||
* platform dependent) before being returned.
|
||
*/
|
||
fileName(): string
|
||
}
|
||
interface Part {
|
||
/**
|
||
* Read reads the body of a part, after its headers and before the
|
||
* next part (if any) begins.
|
||
*/
|
||
read(d: string): number
|
||
}
|
||
interface Part {
|
||
close(): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package http provides HTTP client and server implementations.
|
||
*
|
||
* Get, Head, Post, and PostForm make HTTP (or HTTPS) requests:
|
||
*
|
||
* ```
|
||
* resp, err := http.Get("http://example.com/")
|
||
* ...
|
||
* resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf)
|
||
* ...
|
||
* resp, err := http.PostForm("http://example.com/form",
|
||
* url.Values{"key": {"Value"}, "id": {"123"}})
|
||
* ```
|
||
*
|
||
* The client must close the response body when finished with it:
|
||
*
|
||
* ```
|
||
* resp, err := http.Get("http://example.com/")
|
||
* if err != nil {
|
||
* // handle error
|
||
* }
|
||
* defer resp.Body.Close()
|
||
* body, err := io.ReadAll(resp.Body)
|
||
* // ...
|
||
* ```
|
||
*
|
||
* For control over HTTP client headers, redirect policy, and other
|
||
* settings, create a Client:
|
||
*
|
||
* ```
|
||
* client := &http.Client{
|
||
* CheckRedirect: redirectPolicyFunc,
|
||
* }
|
||
*
|
||
* resp, err := client.Get("http://example.com")
|
||
* // ...
|
||
*
|
||
* req, err := http.NewRequest("GET", "http://example.com", nil)
|
||
* // ...
|
||
* req.Header.Add("If-None-Match", `W/"wyzzy"`)
|
||
* resp, err := client.Do(req)
|
||
* // ...
|
||
* ```
|
||
*
|
||
* For control over proxies, TLS configuration, keep-alives,
|
||
* compression, and other settings, create a Transport:
|
||
*
|
||
* ```
|
||
* tr := &http.Transport{
|
||
* MaxIdleConns: 10,
|
||
* IdleConnTimeout: 30 * time.Second,
|
||
* DisableCompression: true,
|
||
* }
|
||
* client := &http.Client{Transport: tr}
|
||
* resp, err := client.Get("https://example.com")
|
||
* ```
|
||
*
|
||
* Clients and Transports are safe for concurrent use by multiple
|
||
* goroutines and for efficiency should only be created once and re-used.
|
||
*
|
||
* ListenAndServe starts an HTTP server with a given address and handler.
|
||
* The handler is usually nil, which means to use DefaultServeMux.
|
||
* Handle and HandleFunc add handlers to DefaultServeMux:
|
||
*
|
||
* ```
|
||
* http.Handle("/foo", fooHandler)
|
||
*
|
||
* http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
|
||
* fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
|
||
* })
|
||
*
|
||
* log.Fatal(http.ListenAndServe(":8080", nil))
|
||
* ```
|
||
*
|
||
* More control over the server's behavior is available by creating a
|
||
* custom Server:
|
||
*
|
||
* ```
|
||
* s := &http.Server{
|
||
* Addr: ":8080",
|
||
* Handler: myHandler,
|
||
* ReadTimeout: 10 * time.Second,
|
||
* WriteTimeout: 10 * time.Second,
|
||
* MaxHeaderBytes: 1 << 20,
|
||
* }
|
||
* log.Fatal(s.ListenAndServe())
|
||
* ```
|
||
*
|
||
* Starting with Go 1.6, the http package has transparent support for the
|
||
* HTTP/2 protocol when using HTTPS. Programs that must disable HTTP/2
|
||
* can do so by setting Transport.TLSNextProto (for clients) or
|
||
* Server.TLSNextProto (for servers) to a non-nil, empty
|
||
* map. Alternatively, the following GODEBUG environment variables are
|
||
* currently supported:
|
||
*
|
||
* ```
|
||
* GODEBUG=http2client=0 # disable HTTP/2 client support
|
||
* GODEBUG=http2server=0 # disable HTTP/2 server support
|
||
* GODEBUG=http2debug=1 # enable verbose HTTP/2 debug logs
|
||
* GODEBUG=http2debug=2 # ... even more verbose, with frame dumps
|
||
* ```
|
||
*
|
||
* The GODEBUG variables are not covered by Go's API compatibility
|
||
* promise. Please report any issues before disabling HTTP/2
|
||
* support: https://golang.org/s/http2bug
|
||
*
|
||
* The http package's Transport and Server both automatically enable
|
||
* HTTP/2 support for simple configurations. To enable HTTP/2 for more
|
||
* complex configurations, to use lower-level HTTP/2 features, or to use
|
||
* a newer version of Go's http2 package, import "golang.org/x/net/http2"
|
||
* directly and use its ConfigureTransport and/or ConfigureServer
|
||
* functions. Manually configuring HTTP/2 via the golang.org/x/net/http2
|
||
* package takes precedence over the net/http package's built-in HTTP/2
|
||
* support.
|
||
*/
|
||
namespace http {
|
||
/**
|
||
* RoundTripper is an interface representing the ability to execute a
|
||
* single HTTP transaction, obtaining the Response for a given Request.
|
||
*
|
||
* A RoundTripper must be safe for concurrent use by multiple
|
||
* goroutines.
|
||
*/
|
||
interface RoundTripper {
|
||
/**
|
||
* RoundTrip executes a single HTTP transaction, returning
|
||
* a Response for the provided Request.
|
||
*
|
||
* RoundTrip should not attempt to interpret the response. In
|
||
* particular, RoundTrip must return err == nil if it obtained
|
||
* a response, regardless of the response's HTTP status code.
|
||
* A non-nil err should be reserved for failure to obtain a
|
||
* response. Similarly, RoundTrip should not attempt to
|
||
* handle higher-level protocol details such as redirects,
|
||
* authentication, or cookies.
|
||
*
|
||
* RoundTrip should not modify the request, except for
|
||
* consuming and closing the Request's Body. RoundTrip may
|
||
* read fields of the request in a separate goroutine. Callers
|
||
* should not mutate or reuse the request until the Response's
|
||
* Body has been closed.
|
||
*
|
||
* RoundTrip must always close the body, including on errors,
|
||
* but depending on the implementation may do so in a separate
|
||
* goroutine even after RoundTrip returns. This means that
|
||
* callers wanting to reuse the body for subsequent requests
|
||
* must arrange to wait for the Close call before doing so.
|
||
*
|
||
* The Request's URL and Header fields must be initialized.
|
||
*/
|
||
roundTrip(_arg0: Request): (Response | undefined)
|
||
}
|
||
/**
|
||
* SameSite allows a server to define a cookie attribute making it impossible for
|
||
* the browser to send this cookie along with cross-site requests. The main
|
||
* goal is to mitigate the risk of cross-origin information leakage, and provide
|
||
* some protection against cross-site request forgery attacks.
|
||
*
|
||
* See https://tools.ietf.org/html/draft-ietf-httpbis-cookie-same-site-00 for details.
|
||
*/
|
||
interface SameSite extends Number{}
|
||
// @ts-ignore
|
||
import mathrand = rand
|
||
/**
|
||
* A CookieJar manages storage and use of cookies in HTTP requests.
|
||
*
|
||
* Implementations of CookieJar must be safe for concurrent use by multiple
|
||
* goroutines.
|
||
*
|
||
* The net/http/cookiejar package provides a CookieJar implementation.
|
||
*/
|
||
interface CookieJar {
|
||
/**
|
||
* SetCookies handles the receipt of the cookies in a reply for the
|
||
* given URL. It may or may not choose to save the cookies, depending
|
||
* on the jar's policy and implementation.
|
||
*/
|
||
setCookies(u: url.URL, cookies: Array<(Cookie | undefined)>): void
|
||
/**
|
||
* Cookies returns the cookies to send in a request for the given URL.
|
||
* It is up to the implementation to honor the standard cookie use
|
||
* restrictions such as in RFC 6265.
|
||
*/
|
||
cookies(u: url.URL): Array<(Cookie | undefined)>
|
||
}
|
||
// @ts-ignore
|
||
import urlpkg = url
|
||
/**
|
||
* A Server defines parameters for running an HTTP server.
|
||
* The zero value for Server is a valid configuration.
|
||
*/
|
||
interface Server {
|
||
/**
|
||
* Addr optionally specifies the TCP address for the server to listen on,
|
||
* in the form "host:port". If empty, ":http" (port 80) is used.
|
||
* The service names are defined in RFC 6335 and assigned by IANA.
|
||
* See net.Dial for details of the address format.
|
||
*/
|
||
addr: string
|
||
handler: Handler // handler to invoke, http.DefaultServeMux if nil
|
||
/**
|
||
* TLSConfig optionally provides a TLS configuration for use
|
||
* by ServeTLS and ListenAndServeTLS. Note that this value is
|
||
* cloned by ServeTLS and ListenAndServeTLS, so it's not
|
||
* possible to modify the configuration with methods like
|
||
* tls.Config.SetSessionTicketKeys. To use
|
||
* SetSessionTicketKeys, use Server.Serve with a TLS Listener
|
||
* instead.
|
||
*/
|
||
tlsConfig?: tls.Config
|
||
/**
|
||
* ReadTimeout is the maximum duration for reading the entire
|
||
* request, including the body. A zero or negative value means
|
||
* there will be no timeout.
|
||
*
|
||
* Because ReadTimeout does not let Handlers make per-request
|
||
* decisions on each request body's acceptable deadline or
|
||
* upload rate, most users will prefer to use
|
||
* ReadHeaderTimeout. It is valid to use them both.
|
||
*/
|
||
readTimeout: time.Duration
|
||
/**
|
||
* ReadHeaderTimeout is the amount of time allowed to read
|
||
* request headers. The connection's read deadline is reset
|
||
* after reading the headers and the Handler can decide what
|
||
* is considered too slow for the body. If ReadHeaderTimeout
|
||
* is zero, the value of ReadTimeout is used. If both are
|
||
* zero, there is no timeout.
|
||
*/
|
||
readHeaderTimeout: time.Duration
|
||
/**
|
||
* WriteTimeout is the maximum duration before timing out
|
||
* writes of the response. It is reset whenever a new
|
||
* request's header is read. Like ReadTimeout, it does not
|
||
* let Handlers make decisions on a per-request basis.
|
||
* A zero or negative value means there will be no timeout.
|
||
*/
|
||
writeTimeout: time.Duration
|
||
/**
|
||
* IdleTimeout is the maximum amount of time to wait for the
|
||
* next request when keep-alives are enabled. If IdleTimeout
|
||
* is zero, the value of ReadTimeout is used. If both are
|
||
* zero, there is no timeout.
|
||
*/
|
||
idleTimeout: time.Duration
|
||
/**
|
||
* MaxHeaderBytes controls the maximum number of bytes the
|
||
* server will read parsing the request header's keys and
|
||
* values, including the request line. It does not limit the
|
||
* size of the request body.
|
||
* If zero, DefaultMaxHeaderBytes is used.
|
||
*/
|
||
maxHeaderBytes: number
|
||
/**
|
||
* TLSNextProto optionally specifies a function to take over
|
||
* ownership of the provided TLS connection when an ALPN
|
||
* protocol upgrade has occurred. The map key is the protocol
|
||
* name negotiated. The Handler argument should be used to
|
||
* handle HTTP requests and will initialize the Request's TLS
|
||
* and RemoteAddr if not already set. The connection is
|
||
* automatically closed when the function returns.
|
||
* If TLSNextProto is not nil, HTTP/2 support is not enabled
|
||
* automatically.
|
||
*/
|
||
tlsNextProto: _TygojaDict
|
||
/**
|
||
* ConnState specifies an optional callback function that is
|
||
* called when a client connection changes state. See the
|
||
* ConnState type and associated constants for details.
|
||
*/
|
||
connState: (_arg0: net.Conn, _arg1: ConnState) => void
|
||
/**
|
||
* ErrorLog specifies an optional logger for errors accepting
|
||
* connections, unexpected behavior from handlers, and
|
||
* underlying FileSystem errors.
|
||
* If nil, logging is done via the log package's standard logger.
|
||
*/
|
||
errorLog?: log.Logger
|
||
/**
|
||
* BaseContext optionally specifies a function that returns
|
||
* the base context for incoming requests on this server.
|
||
* The provided Listener is the specific Listener that's
|
||
* about to start accepting requests.
|
||
* If BaseContext is nil, the default is context.Background().
|
||
* If non-nil, it must return a non-nil context.
|
||
*/
|
||
baseContext: (_arg0: net.Listener) => context.Context
|
||
/**
|
||
* ConnContext optionally specifies a function that modifies
|
||
* the context used for a new connection c. The provided ctx
|
||
* is derived from the base context and has a ServerContextKey
|
||
* value.
|
||
*/
|
||
connContext: (ctx: context.Context, c: net.Conn) => context.Context
|
||
}
|
||
interface Server {
|
||
/**
|
||
* Close immediately closes all active net.Listeners and any
|
||
* connections in state StateNew, StateActive, or StateIdle. For a
|
||
* graceful shutdown, use Shutdown.
|
||
*
|
||
* Close does not attempt to close (and does not even know about)
|
||
* any hijacked connections, such as WebSockets.
|
||
*
|
||
* Close returns any error returned from closing the Server's
|
||
* underlying Listener(s).
|
||
*/
|
||
close(): void
|
||
}
|
||
interface Server {
|
||
/**
|
||
* Shutdown gracefully shuts down the server without interrupting any
|
||
* active connections. Shutdown works by first closing all open
|
||
* listeners, then closing all idle connections, and then waiting
|
||
* indefinitely for connections to return to idle and then shut down.
|
||
* If the provided context expires before the shutdown is complete,
|
||
* Shutdown returns the context's error, otherwise it returns any
|
||
* error returned from closing the Server's underlying Listener(s).
|
||
*
|
||
* When Shutdown is called, Serve, ListenAndServe, and
|
||
* ListenAndServeTLS immediately return ErrServerClosed. Make sure the
|
||
* program doesn't exit and waits instead for Shutdown to return.
|
||
*
|
||
* Shutdown does not attempt to close nor wait for hijacked
|
||
* connections such as WebSockets. The caller of Shutdown should
|
||
* separately notify such long-lived connections of shutdown and wait
|
||
* for them to close, if desired. See RegisterOnShutdown for a way to
|
||
* register shutdown notification functions.
|
||
*
|
||
* Once Shutdown has been called on a server, it may not be reused;
|
||
* future calls to methods such as Serve will return ErrServerClosed.
|
||
*/
|
||
shutdown(ctx: context.Context): void
|
||
}
|
||
interface Server {
|
||
/**
|
||
* RegisterOnShutdown registers a function to call on Shutdown.
|
||
* This can be used to gracefully shutdown connections that have
|
||
* undergone ALPN protocol upgrade or that have been hijacked.
|
||
* This function should start protocol-specific graceful shutdown,
|
||
* but should not wait for shutdown to complete.
|
||
*/
|
||
registerOnShutdown(f: () => void): void
|
||
}
|
||
interface Server {
|
||
/**
|
||
* ListenAndServe listens on the TCP network address srv.Addr and then
|
||
* calls Serve to handle requests on incoming connections.
|
||
* Accepted connections are configured to enable TCP keep-alives.
|
||
*
|
||
* If srv.Addr is blank, ":http" is used.
|
||
*
|
||
* ListenAndServe always returns a non-nil error. After Shutdown or Close,
|
||
* the returned error is ErrServerClosed.
|
||
*/
|
||
listenAndServe(): void
|
||
}
|
||
interface Server {
|
||
/**
|
||
* Serve accepts incoming connections on the Listener l, creating a
|
||
* new service goroutine for each. The service goroutines read requests and
|
||
* then call srv.Handler to reply to them.
|
||
*
|
||
* HTTP/2 support is only enabled if the Listener returns *tls.Conn
|
||
* connections and they were configured with "h2" in the TLS
|
||
* Config.NextProtos.
|
||
*
|
||
* Serve always returns a non-nil error and closes l.
|
||
* After Shutdown or Close, the returned error is ErrServerClosed.
|
||
*/
|
||
serve(l: net.Listener): void
|
||
}
|
||
interface Server {
|
||
/**
|
||
* ServeTLS accepts incoming connections on the Listener l, creating a
|
||
* new service goroutine for each. The service goroutines perform TLS
|
||
* setup and then read requests, calling srv.Handler to reply to them.
|
||
*
|
||
* Files containing a certificate and matching private key for the
|
||
* server must be provided if neither the Server's
|
||
* TLSConfig.Certificates nor TLSConfig.GetCertificate are populated.
|
||
* If the certificate is signed by a certificate authority, the
|
||
* certFile should be the concatenation of the server's certificate,
|
||
* any intermediates, and the CA's certificate.
|
||
*
|
||
* ServeTLS always returns a non-nil error. After Shutdown or Close, the
|
||
* returned error is ErrServerClosed.
|
||
*/
|
||
serveTLS(l: net.Listener, certFile: string): void
|
||
}
|
||
interface Server {
|
||
/**
|
||
* SetKeepAlivesEnabled controls whether HTTP keep-alives are enabled.
|
||
* By default, keep-alives are always enabled. Only very
|
||
* resource-constrained environments or servers in the process of
|
||
* shutting down should disable them.
|
||
*/
|
||
setKeepAlivesEnabled(v: boolean): void
|
||
}
|
||
interface Server {
|
||
/**
|
||
* ListenAndServeTLS listens on the TCP network address srv.Addr and
|
||
* then calls ServeTLS to handle requests on incoming TLS connections.
|
||
* Accepted connections are configured to enable TCP keep-alives.
|
||
*
|
||
* Filenames containing a certificate and matching private key for the
|
||
* server must be provided if neither the Server's TLSConfig.Certificates
|
||
* nor TLSConfig.GetCertificate are populated. If the certificate is
|
||
* signed by a certificate authority, the certFile should be the
|
||
* concatenation of the server's certificate, any intermediates, and
|
||
* the CA's certificate.
|
||
*
|
||
* If srv.Addr is blank, ":https" is used.
|
||
*
|
||
* ListenAndServeTLS always returns a non-nil error. After Shutdown or
|
||
* Close, the returned error is ErrServerClosed.
|
||
*/
|
||
listenAndServeTLS(certFile: string): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package echo implements high performance, minimalist Go web framework.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```
|
||
* package main
|
||
*
|
||
* import (
|
||
* "github.com/labstack/echo/v5"
|
||
* "github.com/labstack/echo/v5/middleware"
|
||
* "log"
|
||
* "net/http"
|
||
* )
|
||
*
|
||
* // Handler
|
||
* func hello(c echo.Context) error {
|
||
* return c.String(http.StatusOK, "Hello, World!")
|
||
* }
|
||
*
|
||
* func main() {
|
||
* // Echo instance
|
||
* e := echo.New()
|
||
*
|
||
* // Middleware
|
||
* e.Use(middleware.Logger())
|
||
* e.Use(middleware.Recover())
|
||
*
|
||
* // Routes
|
||
* e.GET("/", hello)
|
||
*
|
||
* // Start server
|
||
* if err := e.Start(":8080"); err != http.ErrServerClosed {
|
||
* log.Fatal(err)
|
||
* }
|
||
* }
|
||
* ```
|
||
*
|
||
* Learn more at https://echo.labstack.com
|
||
*/
|
||
namespace echo {
|
||
// @ts-ignore
|
||
import stdContext = context
|
||
/**
|
||
* Route contains information to adding/registering new route with the router.
|
||
* Method+Path pair uniquely identifies the Route. It is mandatory to provide Method+Path+Handler fields.
|
||
*/
|
||
interface Route {
|
||
method: string
|
||
path: string
|
||
handler: HandlerFunc
|
||
middlewares: Array<MiddlewareFunc>
|
||
name: string
|
||
}
|
||
interface Route {
|
||
/**
|
||
* ToRouteInfo converts Route to RouteInfo
|
||
*/
|
||
toRouteInfo(params: Array<string>): RouteInfo
|
||
}
|
||
interface Route {
|
||
/**
|
||
* ToRoute returns Route which Router uses to register the method handler for path.
|
||
*/
|
||
toRoute(): Route
|
||
}
|
||
interface Route {
|
||
/**
|
||
* ForGroup recreates Route with added group prefix and group middlewares it is grouped to.
|
||
*/
|
||
forGroup(pathPrefix: string, middlewares: Array<MiddlewareFunc>): Routable
|
||
}
|
||
/**
|
||
* RoutableContext is additional interface that structures implementing Context must implement. Methods inside this
|
||
* interface are meant for request routing purposes and should not be used in middlewares.
|
||
*/
|
||
interface RoutableContext {
|
||
/**
|
||
* Request returns `*http.Request`.
|
||
*/
|
||
request(): (http.Request | undefined)
|
||
/**
|
||
* RawPathParams returns raw path pathParams value. Allocation of PathParams is handled by Context.
|
||
*/
|
||
rawPathParams(): (PathParams | undefined)
|
||
/**
|
||
* SetRawPathParams replaces any existing param values with new values for this context lifetime (request).
|
||
* Do not set any other value than what you got from RawPathParams as allocation of PathParams is handled by Context.
|
||
*/
|
||
setRawPathParams(params: PathParams): void
|
||
/**
|
||
* SetPath sets the registered path for the handler.
|
||
*/
|
||
setPath(p: string): void
|
||
/**
|
||
* SetRouteInfo sets the route info of this request to the context.
|
||
*/
|
||
setRouteInfo(ri: RouteInfo): void
|
||
/**
|
||
* Set saves data in the context. Allows router to store arbitrary (that only router has access to) data in context
|
||
* for later use in middlewares/handler.
|
||
*/
|
||
set(key: string, val: {
|
||
}): void
|
||
}
|
||
/**
|
||
* PathParam is tuple pf path parameter name and its value in request path
|
||
*/
|
||
interface PathParam {
|
||
name: string
|
||
value: string
|
||
}
|
||
}
|
||
|
||
namespace store {
|
||
}
|
||
|
||
namespace mailer {
|
||
/**
|
||
* Message defines a generic email message struct.
|
||
*/
|
||
interface Message {
|
||
from: mail.Address
|
||
to: Array<mail.Address>
|
||
bcc: Array<mail.Address>
|
||
cc: Array<mail.Address>
|
||
subject: string
|
||
html: string
|
||
text: string
|
||
headers: _TygojaDict
|
||
attachments: _TygojaDict
|
||
}
|
||
}
|
||
|
||
namespace search {
|
||
/**
|
||
* Result defines the returned search result structure.
|
||
*/
|
||
interface Result {
|
||
page: number
|
||
perPage: number
|
||
totalItems: number
|
||
totalPages: number
|
||
items: any
|
||
}
|
||
}
|
||
|
||
namespace settings {
|
||
// @ts-ignore
|
||
import validation = ozzo_validation
|
||
interface EmailTemplate {
|
||
body: string
|
||
subject: string
|
||
actionUrl: string
|
||
}
|
||
interface EmailTemplate {
|
||
/**
|
||
* Validate makes EmailTemplate validatable by implementing [validation.Validatable] interface.
|
||
*/
|
||
validate(): void
|
||
}
|
||
interface EmailTemplate {
|
||
/**
|
||
* Resolve replaces the placeholder parameters in the current email
|
||
* template and returns its components as ready-to-use strings.
|
||
*/
|
||
resolve(appName: string, appUrl: string): string
|
||
}
|
||
}
|
||
|
||
namespace hook {
|
||
/**
|
||
* Handler defines a hook handler function.
|
||
*/
|
||
interface Handler<T> {(e: T): void }
|
||
/**
|
||
* wrapped local Hook embedded struct to limit the public API surface.
|
||
*/
|
||
type _subAUkZj<T> = Hook<T>
|
||
interface mainHook<T> extends _subAUkZj<T> {
|
||
}
|
||
}
|
||
|
||
namespace subscriptions {
|
||
/**
|
||
* Message defines a client's channel data.
|
||
*/
|
||
interface Message {
|
||
name: string
|
||
data: string
|
||
}
|
||
/**
|
||
* Client is an interface for a generic subscription client.
|
||
*/
|
||
interface Client {
|
||
/**
|
||
* Id Returns the unique id of the client.
|
||
*/
|
||
id(): string
|
||
/**
|
||
* Channel returns the client's communication channel.
|
||
*/
|
||
channel(): undefined
|
||
/**
|
||
* Subscriptions returns all subscriptions to which the client has subscribed to.
|
||
*/
|
||
subscriptions(): _TygojaDict
|
||
/**
|
||
* Subscribe subscribes the client to the provided subscriptions list.
|
||
*/
|
||
subscribe(...subs: string[]): void
|
||
/**
|
||
* Unsubscribe unsubscribes the client from the provided subscriptions list.
|
||
*/
|
||
unsubscribe(...subs: string[]): void
|
||
/**
|
||
* HasSubscription checks if the client is subscribed to `sub`.
|
||
*/
|
||
hasSubscription(sub: string): boolean
|
||
/**
|
||
* Set stores any value to the client's context.
|
||
*/
|
||
set(key: string, value: any): void
|
||
/**
|
||
* Unset removes a single value from the client's context.
|
||
*/
|
||
unset(key: string): void
|
||
/**
|
||
* Get retrieves the key value from the client's context.
|
||
*/
|
||
get(key: string): any
|
||
/**
|
||
* Discard marks the client as "discarded", meaning that it
|
||
* shouldn't be used anymore for sending new messages.
|
||
*
|
||
* It is safe to call Discard() multiple times.
|
||
*/
|
||
discard(): void
|
||
/**
|
||
* IsDiscarded indicates whether the client has been "discarded"
|
||
* and should no longer be used.
|
||
*/
|
||
isDiscarded(): boolean
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package autocert provides automatic access to certificates from Let's Encrypt
|
||
* and any other ACME-based CA.
|
||
*
|
||
* This package is a work in progress and makes no API stability promises.
|
||
*/
|
||
namespace autocert {
|
||
// @ts-ignore
|
||
import mathrand = rand
|
||
/**
|
||
* Manager is a stateful certificate manager built on top of acme.Client.
|
||
* It obtains and refreshes certificates automatically using "tls-alpn-01"
|
||
* or "http-01" challenge types, as well as providing them to a TLS server
|
||
* via tls.Config.
|
||
*
|
||
* You must specify a cache implementation, such as DirCache,
|
||
* to reuse obtained certificates across program restarts.
|
||
* Otherwise your server is very likely to exceed the certificate
|
||
* issuer's request rate limits.
|
||
*/
|
||
interface Manager {
|
||
/**
|
||
* Prompt specifies a callback function to conditionally accept a CA's Terms of Service (TOS).
|
||
* The registration may require the caller to agree to the CA's TOS.
|
||
* If so, Manager calls Prompt with a TOS URL provided by the CA. Prompt should report
|
||
* whether the caller agrees to the terms.
|
||
*
|
||
* To always accept the terms, the callers can use AcceptTOS.
|
||
*/
|
||
prompt: (tosURL: string) => boolean
|
||
/**
|
||
* Cache optionally stores and retrieves previously-obtained certificates
|
||
* and other state. If nil, certs will only be cached for the lifetime of
|
||
* the Manager. Multiple Managers can share the same Cache.
|
||
*
|
||
* Using a persistent Cache, such as DirCache, is strongly recommended.
|
||
*/
|
||
cache: Cache
|
||
/**
|
||
* HostPolicy controls which domains the Manager will attempt
|
||
* to retrieve new certificates for. It does not affect cached certs.
|
||
*
|
||
* If non-nil, HostPolicy is called before requesting a new cert.
|
||
* If nil, all hosts are currently allowed. This is not recommended,
|
||
* as it opens a potential attack where clients connect to a server
|
||
* by IP address and pretend to be asking for an incorrect host name.
|
||
* Manager will attempt to obtain a certificate for that host, incorrectly,
|
||
* eventually reaching the CA's rate limit for certificate requests
|
||
* and making it impossible to obtain actual certificates.
|
||
*
|
||
* See GetCertificate for more details.
|
||
*/
|
||
hostPolicy: HostPolicy
|
||
/**
|
||
* RenewBefore optionally specifies how early certificates should
|
||
* be renewed before they expire.
|
||
*
|
||
* If zero, they're renewed 30 days before expiration.
|
||
*/
|
||
renewBefore: time.Duration
|
||
/**
|
||
* Client is used to perform low-level operations, such as account registration
|
||
* and requesting new certificates.
|
||
*
|
||
* If Client is nil, a zero-value acme.Client is used with DefaultACMEDirectory
|
||
* as the directory endpoint.
|
||
* If the Client.Key is nil, a new ECDSA P-256 key is generated and,
|
||
* if Cache is not nil, stored in cache.
|
||
*
|
||
* Mutating the field after the first call of GetCertificate method will have no effect.
|
||
*/
|
||
client?: acme.Client
|
||
/**
|
||
* Email optionally specifies a contact email address.
|
||
* This is used by CAs, such as Let's Encrypt, to notify about problems
|
||
* with issued certificates.
|
||
*
|
||
* If the Client's account key is already registered, Email is not used.
|
||
*/
|
||
email: string
|
||
/**
|
||
* ForceRSA used to make the Manager generate RSA certificates. It is now ignored.
|
||
*
|
||
* Deprecated: the Manager will request the correct type of certificate based
|
||
* on what each client supports.
|
||
*/
|
||
forceRSA: boolean
|
||
/**
|
||
* ExtraExtensions are used when generating a new CSR (Certificate Request),
|
||
* thus allowing customization of the resulting certificate.
|
||
* For instance, TLS Feature Extension (RFC 7633) can be used
|
||
* to prevent an OCSP downgrade attack.
|
||
*
|
||
* The field value is passed to crypto/x509.CreateCertificateRequest
|
||
* in the template's ExtraExtensions field as is.
|
||
*/
|
||
extraExtensions: Array<pkix.Extension>
|
||
/**
|
||
* ExternalAccountBinding optionally represents an arbitrary binding to an
|
||
* account of the CA to which the ACME server is tied.
|
||
* See RFC 8555, Section 7.3.4 for more details.
|
||
*/
|
||
externalAccountBinding?: acme.ExternalAccountBinding
|
||
}
|
||
interface Manager {
|
||
/**
|
||
* TLSConfig creates a new TLS config suitable for net/http.Server servers,
|
||
* supporting HTTP/2 and the tls-alpn-01 ACME challenge type.
|
||
*/
|
||
tlsConfig(): (tls.Config | undefined)
|
||
}
|
||
interface Manager {
|
||
/**
|
||
* GetCertificate implements the tls.Config.GetCertificate hook.
|
||
* It provides a TLS certificate for hello.ServerName host, including answering
|
||
* tls-alpn-01 challenges.
|
||
* All other fields of hello are ignored.
|
||
*
|
||
* If m.HostPolicy is non-nil, GetCertificate calls the policy before requesting
|
||
* a new cert. A non-nil error returned from m.HostPolicy halts TLS negotiation.
|
||
* The error is propagated back to the caller of GetCertificate and is user-visible.
|
||
* This does not affect cached certs. See HostPolicy field description for more details.
|
||
*
|
||
* If GetCertificate is used directly, instead of via Manager.TLSConfig, package users will
|
||
* also have to add acme.ALPNProto to NextProtos for tls-alpn-01, or use HTTPHandler for http-01.
|
||
*/
|
||
getCertificate(hello: tls.ClientHelloInfo): (tls.Certificate | undefined)
|
||
}
|
||
interface Manager {
|
||
/**
|
||
* HTTPHandler configures the Manager to provision ACME "http-01" challenge responses.
|
||
* It returns an http.Handler that responds to the challenges and must be
|
||
* running on port 80. If it receives a request that is not an ACME challenge,
|
||
* it delegates the request to the optional fallback handler.
|
||
*
|
||
* If fallback is nil, the returned handler redirects all GET and HEAD requests
|
||
* to the default TLS port 443 with 302 Found status code, preserving the original
|
||
* request path and query. It responds with 400 Bad Request to all other HTTP methods.
|
||
* The fallback is not protected by the optional HostPolicy.
|
||
*
|
||
* Because the fallback handler is run with unencrypted port 80 requests,
|
||
* the fallback should not serve TLS-only requests.
|
||
*
|
||
* If HTTPHandler is never called, the Manager will only use the "tls-alpn-01"
|
||
* challenge for domain verification.
|
||
*/
|
||
httpHandler(fallback: http.Handler): http.Handler
|
||
}
|
||
interface Manager {
|
||
/**
|
||
* Listener listens on the standard TLS port (443) on all interfaces
|
||
* and returns a net.Listener returning *tls.Conn connections.
|
||
*
|
||
* The returned listener uses a *tls.Config that enables HTTP/2, and
|
||
* should only be used with servers that support HTTP/2.
|
||
*
|
||
* The returned Listener also enables TCP keep-alives on the accepted
|
||
* connections. The returned *tls.Conn are returned before their TLS
|
||
* handshake has completed.
|
||
*
|
||
* Unlike NewListener, it is the caller's responsibility to initialize
|
||
* the Manager m's Prompt, Cache, HostPolicy, and other desired options.
|
||
*/
|
||
listener(): net.Listener
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package core is the backbone of PocketBase.
|
||
*
|
||
* It defines the main PocketBase App interface and its base implementation.
|
||
*/
|
||
namespace core {
|
||
interface BaseModelEvent {
|
||
model: models.Model
|
||
}
|
||
interface BaseModelEvent {
|
||
tags(): Array<string>
|
||
}
|
||
interface BaseCollectionEvent {
|
||
collection?: models.Collection
|
||
}
|
||
interface BaseCollectionEvent {
|
||
tags(): Array<string>
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package flag implements command-line flag parsing.
|
||
*
|
||
* # Usage
|
||
*
|
||
* Define flags using flag.String(), Bool(), Int(), etc.
|
||
*
|
||
* This declares an integer flag, -n, stored in the pointer nFlag, with type *int:
|
||
*
|
||
* ```
|
||
* import "flag"
|
||
* var nFlag = flag.Int("n", 1234, "help message for flag n")
|
||
* ```
|
||
*
|
||
* If you like, you can bind the flag to a variable using the Var() functions.
|
||
*
|
||
* ```
|
||
* var flagvar int
|
||
* func init() {
|
||
* flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
|
||
* }
|
||
* ```
|
||
*
|
||
* Or you can create custom flags that satisfy the Value interface (with
|
||
* pointer receivers) and couple them to flag parsing by
|
||
*
|
||
* ```
|
||
* flag.Var(&flagVal, "name", "help message for flagname")
|
||
* ```
|
||
*
|
||
* For such flags, the default value is just the initial value of the variable.
|
||
*
|
||
* After all flags are defined, call
|
||
*
|
||
* ```
|
||
* flag.Parse()
|
||
* ```
|
||
*
|
||
* to parse the command line into the defined flags.
|
||
*
|
||
* Flags may then be used directly. If you're using the flags themselves,
|
||
* they are all pointers; if you bind to variables, they're values.
|
||
*
|
||
* ```
|
||
* fmt.Println("ip has value ", *ip)
|
||
* fmt.Println("flagvar has value ", flagvar)
|
||
* ```
|
||
*
|
||
* After parsing, the arguments following the flags are available as the
|
||
* slice flag.Args() or individually as flag.Arg(i).
|
||
* The arguments are indexed from 0 through flag.NArg()-1.
|
||
*
|
||
* # Command line flag syntax
|
||
*
|
||
* The following forms are permitted:
|
||
*
|
||
* ```
|
||
* -flag
|
||
* --flag // double dashes are also permitted
|
||
* -flag=x
|
||
* -flag x // non-boolean flags only
|
||
* ```
|
||
*
|
||
* One or two dashes may be used; they are equivalent.
|
||
* The last form is not permitted for boolean flags because the
|
||
* meaning of the command
|
||
*
|
||
* ```
|
||
* cmd -x *
|
||
* ```
|
||
*
|
||
* where * is a Unix shell wildcard, will change if there is a file
|
||
* called 0, false, etc. You must use the -flag=false form to turn
|
||
* off a boolean flag.
|
||
*
|
||
* Flag parsing stops just before the first non-flag argument
|
||
* ("-" is a non-flag argument) or after the terminator "--".
|
||
*
|
||
* Integer flags accept 1234, 0664, 0x1234 and may be negative.
|
||
* Boolean flags may be:
|
||
*
|
||
* ```
|
||
* 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False
|
||
* ```
|
||
*
|
||
* Duration flags accept any input valid for time.ParseDuration.
|
||
*
|
||
* The default set of command-line flags is controlled by
|
||
* top-level functions. The FlagSet type allows one to define
|
||
* independent sets of flags, such as to implement subcommands
|
||
* in a command-line interface. The methods of FlagSet are
|
||
* analogous to the top-level functions for the command-line
|
||
* flag set.
|
||
*/
|
||
namespace flag {
|
||
/**
|
||
* A FlagSet represents a set of defined flags. The zero value of a FlagSet
|
||
* has no name and has ContinueOnError error handling.
|
||
*
|
||
* Flag names must be unique within a FlagSet. An attempt to define a flag whose
|
||
* name is already in use will cause a panic.
|
||
*/
|
||
interface FlagSet {
|
||
/**
|
||
* Usage is the function called when an error occurs while parsing flags.
|
||
* The field is a function (not a method) that may be changed to point to
|
||
* a custom error handler. What happens after Usage is called depends
|
||
* on the ErrorHandling setting; for the command line, this defaults
|
||
* to ExitOnError, which exits the program after calling Usage.
|
||
*/
|
||
usage: () => void
|
||
}
|
||
/**
|
||
* A Flag represents the state of a flag.
|
||
*/
|
||
interface Flag {
|
||
name: string // name as it appears on command line
|
||
usage: string // help message
|
||
value: Value // value as set
|
||
defValue: string // default value (as text); for usage message
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Output returns the destination for usage and error messages. os.Stderr is returned if
|
||
* output was not set or was set to nil.
|
||
*/
|
||
output(): io.Writer
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Name returns the name of the flag set.
|
||
*/
|
||
name(): string
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* ErrorHandling returns the error handling behavior of the flag set.
|
||
*/
|
||
errorHandling(): ErrorHandling
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* SetOutput sets the destination for usage and error messages.
|
||
* If output is nil, os.Stderr is used.
|
||
*/
|
||
setOutput(output: io.Writer): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* VisitAll visits the flags in lexicographical order, calling fn for each.
|
||
* It visits all flags, even those not set.
|
||
*/
|
||
visitAll(fn: (_arg0: Flag) => void): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Visit visits the flags in lexicographical order, calling fn for each.
|
||
* It visits only those flags that have been set.
|
||
*/
|
||
visit(fn: (_arg0: Flag) => void): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Lookup returns the Flag structure of the named flag, returning nil if none exists.
|
||
*/
|
||
lookup(name: string): (Flag | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Set sets the value of the named flag.
|
||
*/
|
||
set(name: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* PrintDefaults prints, to standard error unless configured otherwise, the
|
||
* default values of all defined command-line flags in the set. See the
|
||
* documentation for the global function PrintDefaults for more information.
|
||
*/
|
||
printDefaults(): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* NFlag returns the number of flags that have been set.
|
||
*/
|
||
nFlag(): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Arg returns the i'th argument. Arg(0) is the first remaining argument
|
||
* after flags have been processed. Arg returns an empty string if the
|
||
* requested element does not exist.
|
||
*/
|
||
arg(i: number): string
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* NArg is the number of arguments remaining after flags have been processed.
|
||
*/
|
||
nArg(): number
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Args returns the non-flag arguments.
|
||
*/
|
||
args(): Array<string>
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* BoolVar defines a bool flag with specified name, default value, and usage string.
|
||
* The argument p points to a bool variable in which to store the value of the flag.
|
||
*/
|
||
boolVar(p: boolean, name: string, value: boolean, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Bool defines a bool flag with specified name, default value, and usage string.
|
||
* The return value is the address of a bool variable that stores the value of the flag.
|
||
*/
|
||
bool(name: string, value: boolean, usage: string): (boolean | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* IntVar defines an int flag with specified name, default value, and usage string.
|
||
* The argument p points to an int variable in which to store the value of the flag.
|
||
*/
|
||
intVar(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int defines an int flag with specified name, default value, and usage string.
|
||
* The return value is the address of an int variable that stores the value of the flag.
|
||
*/
|
||
int(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int64Var defines an int64 flag with specified name, default value, and usage string.
|
||
* The argument p points to an int64 variable in which to store the value of the flag.
|
||
*/
|
||
int64Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Int64 defines an int64 flag with specified name, default value, and usage string.
|
||
* The return value is the address of an int64 variable that stores the value of the flag.
|
||
*/
|
||
int64(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* UintVar defines a uint flag with specified name, default value, and usage string.
|
||
* The argument p points to a uint variable in which to store the value of the flag.
|
||
*/
|
||
uintVar(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint defines a uint flag with specified name, default value, and usage string.
|
||
* The return value is the address of a uint variable that stores the value of the flag.
|
||
*/
|
||
uint(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint64Var defines a uint64 flag with specified name, default value, and usage string.
|
||
* The argument p points to a uint64 variable in which to store the value of the flag.
|
||
*/
|
||
uint64Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Uint64 defines a uint64 flag with specified name, default value, and usage string.
|
||
* The return value is the address of a uint64 variable that stores the value of the flag.
|
||
*/
|
||
uint64(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* StringVar defines a string flag with specified name, default value, and usage string.
|
||
* The argument p points to a string variable in which to store the value of the flag.
|
||
*/
|
||
stringVar(p: string, name: string, value: string, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* String defines a string flag with specified name, default value, and usage string.
|
||
* The return value is the address of a string variable that stores the value of the flag.
|
||
*/
|
||
string(name: string, value: string, usage: string): (string | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float64Var defines a float64 flag with specified name, default value, and usage string.
|
||
* The argument p points to a float64 variable in which to store the value of the flag.
|
||
*/
|
||
float64Var(p: number, name: string, value: number, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Float64 defines a float64 flag with specified name, default value, and usage string.
|
||
* The return value is the address of a float64 variable that stores the value of the flag.
|
||
*/
|
||
float64(name: string, value: number, usage: string): (number | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* DurationVar defines a time.Duration flag with specified name, default value, and usage string.
|
||
* The argument p points to a time.Duration variable in which to store the value of the flag.
|
||
* The flag accepts a value acceptable to time.ParseDuration.
|
||
*/
|
||
durationVar(p: time.Duration, name: string, value: time.Duration, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Duration defines a time.Duration flag with specified name, default value, and usage string.
|
||
* The return value is the address of a time.Duration variable that stores the value of the flag.
|
||
* The flag accepts a value acceptable to time.ParseDuration.
|
||
*/
|
||
duration(name: string, value: time.Duration, usage: string): (time.Duration | undefined)
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* TextVar defines a flag with a specified name, default value, and usage string.
|
||
* The argument p must be a pointer to a variable that will hold the value
|
||
* of the flag, and p must implement encoding.TextUnmarshaler.
|
||
* If the flag is used, the flag value will be passed to p's UnmarshalText method.
|
||
* The type of the default value must be the same as the type of p.
|
||
*/
|
||
textVar(p: encoding.TextUnmarshaler, name: string, value: encoding.TextMarshaler, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Func defines a flag with the specified name and usage string.
|
||
* Each time the flag is seen, fn is called with the value of the flag.
|
||
* If fn returns a non-nil error, it will be treated as a flag value parsing error.
|
||
*/
|
||
func(name: string, fn: (_arg0: string) => void): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Var defines a flag with the specified name and usage string. The type and
|
||
* value of the flag are represented by the first argument, of type Value, which
|
||
* typically holds a user-defined implementation of Value. For instance, the
|
||
* caller could create a flag that turns a comma-separated string into a slice
|
||
* of strings by giving the slice the methods of Value; in particular, Set would
|
||
* decompose the comma-separated string into the slice.
|
||
*/
|
||
var(value: Value, name: string, usage: string): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Parse parses flag definitions from the argument list, which should not
|
||
* include the command name. Must be called after all flags in the FlagSet
|
||
* are defined and before flags are accessed by the program.
|
||
* The return value will be ErrHelp if -help or -h were set but not defined.
|
||
*/
|
||
parse(arguments: Array<string>): void
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Parsed reports whether f.Parse has been called.
|
||
*/
|
||
parsed(): boolean
|
||
}
|
||
interface FlagSet {
|
||
/**
|
||
* Init sets the name and error handling property for a flag set.
|
||
* By default, the zero FlagSet uses an empty name and the
|
||
* ContinueOnError error handling policy.
|
||
*/
|
||
init(name: string, errorHandling: ErrorHandling): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package pflag is a drop-in replacement for Go's flag package, implementing
|
||
* POSIX/GNU-style --flags.
|
||
*
|
||
* pflag is compatible with the GNU extensions to the POSIX recommendations
|
||
* for command-line options. See
|
||
* http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html
|
||
*
|
||
* Usage:
|
||
*
|
||
* pflag is a drop-in replacement of Go's native flag package. If you import
|
||
* pflag under the name "flag" then all code should continue to function
|
||
* with no changes.
|
||
*
|
||
* ```
|
||
* import flag "github.com/spf13/pflag"
|
||
* ```
|
||
*
|
||
* There is one exception to this: if you directly instantiate the Flag struct
|
||
* there is one more field "Shorthand" that you will need to set.
|
||
* Most code never instantiates this struct directly, and instead uses
|
||
* functions such as String(), BoolVar(), and Var(), and is therefore
|
||
* unaffected.
|
||
*
|
||
* Define flags using flag.String(), Bool(), Int(), etc.
|
||
*
|
||
* This declares an integer flag, -flagname, stored in the pointer ip, with type *int.
|
||
* ```
|
||
* var ip = flag.Int("flagname", 1234, "help message for flagname")
|
||
* ```
|
||
* If you like, you can bind the flag to a variable using the Var() functions.
|
||
* ```
|
||
* var flagvar int
|
||
* func init() {
|
||
* flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
|
||
* }
|
||
* ```
|
||
* Or you can create custom flags that satisfy the Value interface (with
|
||
* pointer receivers) and couple them to flag parsing by
|
||
* ```
|
||
* flag.Var(&flagVal, "name", "help message for flagname")
|
||
* ```
|
||
* For such flags, the default value is just the initial value of the variable.
|
||
*
|
||
* After all flags are defined, call
|
||
* ```
|
||
* flag.Parse()
|
||
* ```
|
||
* to parse the command line into the defined flags.
|
||
*
|
||
* Flags may then be used directly. If you're using the flags themselves,
|
||
* they are all pointers; if you bind to variables, they're values.
|
||
* ```
|
||
* fmt.Println("ip has value ", *ip)
|
||
* fmt.Println("flagvar has value ", flagvar)
|
||
* ```
|
||
*
|
||
* After parsing, the arguments after the flag are available as the
|
||
* slice flag.Args() or individually as flag.Arg(i).
|
||
* The arguments are indexed from 0 through flag.NArg()-1.
|
||
*
|
||
* The pflag package also defines some new functions that are not in flag,
|
||
* that give one-letter shorthands for flags. You can use these by appending
|
||
* 'P' to the name of any function that defines a flag.
|
||
* ```
|
||
* var ip = flag.IntP("flagname", "f", 1234, "help message")
|
||
* var flagvar bool
|
||
* func init() {
|
||
* flag.BoolVarP(&flagvar, "boolname", "b", true, "help message")
|
||
* }
|
||
* flag.VarP(&flagval, "varname", "v", "help message")
|
||
* ```
|
||
* Shorthand letters can be used with single dashes on the command line.
|
||
* Boolean shorthand flags can be combined with other shorthand flags.
|
||
*
|
||
* Command line flag syntax:
|
||
* ```
|
||
* --flag // boolean flags only
|
||
* --flag=x
|
||
* ```
|
||
*
|
||
* Unlike the flag package, a single dash before an option means something
|
||
* different than a double dash. Single dashes signify a series of shorthand
|
||
* letters for flags. All but the last shorthand letter must be boolean flags.
|
||
* ```
|
||
* // boolean flags
|
||
* -f
|
||
* -abc
|
||
* // non-boolean flags
|
||
* -n 1234
|
||
* -Ifile
|
||
* // mixed
|
||
* -abcs "hello"
|
||
* -abcn1234
|
||
* ```
|
||
*
|
||
* Flag parsing stops after the terminator "--". Unlike the flag package,
|
||
* flags can be interspersed with arguments anywhere on the command line
|
||
* before this terminator.
|
||
*
|
||
* Integer flags accept 1234, 0664, 0x1234 and may be negative.
|
||
* Boolean flags (in their long form) accept 1, 0, t, f, true, false,
|
||
* TRUE, FALSE, True, False.
|
||
* Duration flags accept any input valid for time.ParseDuration.
|
||
*
|
||
* The default set of command-line flags is controlled by
|
||
* top-level functions. The FlagSet type allows one to define
|
||
* independent sets of flags, such as to implement subcommands
|
||
* in a command-line interface. The methods of FlagSet are
|
||
* analogous to the top-level functions for the command-line
|
||
* flag set.
|
||
*/
|
||
namespace pflag {
|
||
// @ts-ignore
|
||
import goflag = flag
|
||
/**
|
||
* ErrorHandling defines how to handle flag parsing errors.
|
||
*/
|
||
interface ErrorHandling extends Number{}
|
||
/**
|
||
* ParseErrorsWhitelist defines the parsing errors that can be ignored
|
||
*/
|
||
interface ParseErrorsWhitelist {
|
||
/**
|
||
* UnknownFlags will ignore unknown flags errors and continue parsing rest of the flags
|
||
*/
|
||
unknownFlags: boolean
|
||
}
|
||
/**
|
||
* Value is the interface to the dynamic value stored in a flag.
|
||
* (The default value is represented as a string.)
|
||
*/
|
||
interface Value {
|
||
string(): string
|
||
set(_arg0: string): void
|
||
type(): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package reflect implements run-time reflection, allowing a program to
|
||
* manipulate objects with arbitrary types. The typical use is to take a value
|
||
* with static type interface{} and extract its dynamic type information by
|
||
* calling TypeOf, which returns a Type.
|
||
*
|
||
* A call to ValueOf returns a Value representing the run-time data.
|
||
* Zero takes a Type and returns a Value representing a zero value
|
||
* for that type.
|
||
*
|
||
* See "The Laws of Reflection" for an introduction to reflection in Go:
|
||
* https://golang.org/doc/articles/laws_of_reflection.html
|
||
*/
|
||
namespace reflect {
|
||
/**
|
||
* A Kind represents the specific kind of type that a Type represents.
|
||
* The zero Kind is not a valid kind.
|
||
*/
|
||
interface Kind extends Number{}
|
||
/**
|
||
* ChanDir represents a channel type's direction.
|
||
*/
|
||
interface ChanDir extends Number{}
|
||
/**
|
||
* Method represents a single method.
|
||
*/
|
||
interface Method {
|
||
/**
|
||
* Name is the method name.
|
||
*/
|
||
name: string
|
||
/**
|
||
* PkgPath is the package path that qualifies a lower case (unexported)
|
||
* method name. It is empty for upper case (exported) method names.
|
||
* The combination of PkgPath and Name uniquely identifies a method
|
||
* in a method set.
|
||
* See https://golang.org/ref/spec#Uniqueness_of_identifiers
|
||
*/
|
||
pkgPath: string
|
||
type: Type // method type
|
||
func: Value // func with receiver as first argument
|
||
index: number // index for Type.Method
|
||
}
|
||
interface Method {
|
||
/**
|
||
* IsExported reports whether the method is exported.
|
||
*/
|
||
isExported(): boolean
|
||
}
|
||
interface Kind {
|
||
/**
|
||
* String returns the name of k.
|
||
*/
|
||
string(): string
|
||
}
|
||
interface ChanDir {
|
||
string(): string
|
||
}
|
||
/**
|
||
* A StructField describes a single field in a struct.
|
||
*/
|
||
interface StructField {
|
||
/**
|
||
* Name is the field name.
|
||
*/
|
||
name: string
|
||
/**
|
||
* PkgPath is the package path that qualifies a lower case (unexported)
|
||
* field name. It is empty for upper case (exported) field names.
|
||
* See https://golang.org/ref/spec#Uniqueness_of_identifiers
|
||
*/
|
||
pkgPath: string
|
||
type: Type // field type
|
||
tag: StructTag // field tag string
|
||
offset: number // offset within struct, in bytes
|
||
index: Array<number> // index sequence for Type.FieldByIndex
|
||
anonymous: boolean // is an embedded field
|
||
}
|
||
interface StructField {
|
||
/**
|
||
* IsExported reports whether the field is exported.
|
||
*/
|
||
isExported(): boolean
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package fs defines basic interfaces to a file system.
|
||
* A file system can be provided by the host operating system
|
||
* but also by other packages.
|
||
*/
|
||
namespace fs {
|
||
/**
|
||
* A FileMode represents a file's mode and permission bits.
|
||
* The bits have the same definition on all systems, so that
|
||
* information about files can be moved from one system
|
||
* to another portably. Not all bits apply to all systems.
|
||
* The only required bit is ModeDir for directories.
|
||
*/
|
||
interface FileMode extends Number{}
|
||
interface FileMode {
|
||
string(): string
|
||
}
|
||
interface FileMode {
|
||
/**
|
||
* IsDir reports whether m describes a directory.
|
||
* That is, it tests for the ModeDir bit being set in m.
|
||
*/
|
||
isDir(): boolean
|
||
}
|
||
interface FileMode {
|
||
/**
|
||
* IsRegular reports whether m describes a regular file.
|
||
* That is, it tests that no mode type bits are set.
|
||
*/
|
||
isRegular(): boolean
|
||
}
|
||
interface FileMode {
|
||
/**
|
||
* Perm returns the Unix permission bits in m (m & ModePerm).
|
||
*/
|
||
perm(): FileMode
|
||
}
|
||
interface FileMode {
|
||
/**
|
||
* Type returns type bits in m (m & ModeType).
|
||
*/
|
||
type(): FileMode
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package big implements arbitrary-precision arithmetic (big numbers).
|
||
* The following numeric types are supported:
|
||
*
|
||
* ```
|
||
* Int signed integers
|
||
* Rat rational numbers
|
||
* Float floating-point numbers
|
||
* ```
|
||
*
|
||
* The zero value for an Int, Rat, or Float correspond to 0. Thus, new
|
||
* values can be declared in the usual ways and denote 0 without further
|
||
* initialization:
|
||
*
|
||
* ```
|
||
* var x Int // &x is an *Int of value 0
|
||
* var r = &Rat{} // r is a *Rat of value 0
|
||
* y := new(Float) // y is a *Float of value 0
|
||
* ```
|
||
*
|
||
* Alternatively, new values can be allocated and initialized with factory
|
||
* functions of the form:
|
||
*
|
||
* ```
|
||
* func NewT(v V) *T
|
||
* ```
|
||
*
|
||
* For instance, NewInt(x) returns an *Int set to the value of the int64
|
||
* argument x, NewRat(a, b) returns a *Rat set to the fraction a/b where
|
||
* a and b are int64 values, and NewFloat(f) returns a *Float initialized
|
||
* to the float64 argument f. More flexibility is provided with explicit
|
||
* setters, for instance:
|
||
*
|
||
* ```
|
||
* var z1 Int
|
||
* z1.SetUint64(123) // z1 := 123
|
||
* z2 := new(Rat).SetFloat64(1.25) // z2 := 5/4
|
||
* z3 := new(Float).SetInt(z1) // z3 := 123.0
|
||
* ```
|
||
*
|
||
* Setters, numeric operations and predicates are represented as methods of
|
||
* the form:
|
||
*
|
||
* ```
|
||
* func (z *T) SetV(v V) *T // z = v
|
||
* func (z *T) Unary(x *T) *T // z = unary x
|
||
* func (z *T) Binary(x, y *T) *T // z = x binary y
|
||
* func (x *T) Pred() P // p = pred(x)
|
||
* ```
|
||
*
|
||
* with T one of Int, Rat, or Float. For unary and binary operations, the
|
||
* result is the receiver (usually named z in that case; see below); if it
|
||
* is one of the operands x or y it may be safely overwritten (and its memory
|
||
* reused).
|
||
*
|
||
* Arithmetic expressions are typically written as a sequence of individual
|
||
* method calls, with each call corresponding to an operation. The receiver
|
||
* denotes the result and the method arguments are the operation's operands.
|
||
* For instance, given three *Int values a, b and c, the invocation
|
||
*
|
||
* ```
|
||
* c.Add(a, b)
|
||
* ```
|
||
*
|
||
* computes the sum a + b and stores the result in c, overwriting whatever
|
||
* value was held in c before. Unless specified otherwise, operations permit
|
||
* aliasing of parameters, so it is perfectly ok to write
|
||
*
|
||
* ```
|
||
* sum.Add(sum, x)
|
||
* ```
|
||
*
|
||
* to accumulate values x in a sum.
|
||
*
|
||
* (By always passing in a result value via the receiver, memory use can be
|
||
* much better controlled. Instead of having to allocate new memory for each
|
||
* result, an operation can reuse the space allocated for the result value,
|
||
* and overwrite that value with the new result in the process.)
|
||
*
|
||
* Notational convention: Incoming method parameters (including the receiver)
|
||
* are named consistently in the API to clarify their use. Incoming operands
|
||
* are usually named x, y, a, b, and so on, but never z. A parameter specifying
|
||
* the result is named z (typically the receiver).
|
||
*
|
||
* For instance, the arguments for (*Int).Add are named x and y, and because
|
||
* the receiver specifies the result destination, it is called z:
|
||
*
|
||
* ```
|
||
* func (z *Int) Add(x, y *Int) *Int
|
||
* ```
|
||
*
|
||
* Methods of this form typically return the incoming receiver as well, to
|
||
* enable simple call chaining.
|
||
*
|
||
* Methods which don't require a result value to be passed in (for instance,
|
||
* Int.Sign), simply return the result. In this case, the receiver is typically
|
||
* the first operand, named x:
|
||
*
|
||
* ```
|
||
* func (x *Int) Sign() int
|
||
* ```
|
||
*
|
||
* Various methods support conversions between strings and corresponding
|
||
* numeric values, and vice versa: *Int, *Rat, and *Float values implement
|
||
* the Stringer interface for a (default) string representation of the value,
|
||
* but also provide SetString methods to initialize a value from a string in
|
||
* a variety of supported formats (see the respective SetString documentation).
|
||
*
|
||
* Finally, *Int, *Rat, and *Float satisfy the fmt package's Scanner interface
|
||
* for scanning and (except for *Rat) the Formatter interface for formatted
|
||
* printing.
|
||
*/
|
||
namespace big {
|
||
/**
|
||
* An Int represents a signed multi-precision integer.
|
||
* The zero value for an Int represents the value 0.
|
||
*
|
||
* Operations always take pointer arguments (*Int) rather
|
||
* than Int values, and each unique Int value requires
|
||
* its own unique *Int pointer. To "copy" an Int value,
|
||
* an existing (or newly allocated) Int must be set to
|
||
* a new value using the Int.Set method; shallow copies
|
||
* of Ints are not supported and may lead to errors.
|
||
*/
|
||
interface Int {
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Sign returns:
|
||
*
|
||
* ```
|
||
* -1 if x < 0
|
||
* 0 if x == 0
|
||
* +1 if x > 0
|
||
* ```
|
||
*/
|
||
sign(): number
|
||
}
|
||
interface Int {
|
||
/**
|
||
* SetInt64 sets z to x and returns z.
|
||
*/
|
||
setInt64(x: number): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* SetUint64 sets z to x and returns z.
|
||
*/
|
||
setUint64(x: number): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Set sets z to x and returns z.
|
||
*/
|
||
set(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Bits provides raw (unchecked but fast) access to x by returning its
|
||
* absolute value as a little-endian Word slice. The result and x share
|
||
* the same underlying array.
|
||
* Bits is intended to support implementation of missing low-level Int
|
||
* functionality outside this package; it should be avoided otherwise.
|
||
*/
|
||
bits(): Array<Word>
|
||
}
|
||
interface Int {
|
||
/**
|
||
* SetBits provides raw (unchecked but fast) access to z by setting its
|
||
* value to abs, interpreted as a little-endian Word slice, and returning
|
||
* z. The result and abs share the same underlying array.
|
||
* SetBits is intended to support implementation of missing low-level Int
|
||
* functionality outside this package; it should be avoided otherwise.
|
||
*/
|
||
setBits(abs: Array<Word>): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Abs sets z to |x| (the absolute value of x) and returns z.
|
||
*/
|
||
abs(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Neg sets z to -x and returns z.
|
||
*/
|
||
neg(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Add sets z to the sum x+y and returns z.
|
||
*/
|
||
add(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Sub sets z to the difference x-y and returns z.
|
||
*/
|
||
sub(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Mul sets z to the product x*y and returns z.
|
||
*/
|
||
mul(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* MulRange sets z to the product of all integers
|
||
* in the range [a, b] inclusively and returns z.
|
||
* If a > b (empty range), the result is 1.
|
||
*/
|
||
mulRange(a: number): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Binomial sets z to the binomial coefficient of (n, k) and returns z.
|
||
*/
|
||
binomial(n: number): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Quo sets z to the quotient x/y for y != 0 and returns z.
|
||
* If y == 0, a division-by-zero run-time panic occurs.
|
||
* Quo implements truncated division (like Go); see QuoRem for more details.
|
||
*/
|
||
quo(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Rem sets z to the remainder x%y for y != 0 and returns z.
|
||
* If y == 0, a division-by-zero run-time panic occurs.
|
||
* Rem implements truncated modulus (like Go); see QuoRem for more details.
|
||
*/
|
||
rem(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* QuoRem sets z to the quotient x/y and r to the remainder x%y
|
||
* and returns the pair (z, r) for y != 0.
|
||
* If y == 0, a division-by-zero run-time panic occurs.
|
||
*
|
||
* QuoRem implements T-division and modulus (like Go):
|
||
*
|
||
* ```
|
||
* q = x/y with the result truncated to zero
|
||
* r = x - y*q
|
||
* ```
|
||
*
|
||
* (See Daan Leijen, “Division and Modulus for Computer Scientists”.)
|
||
* See DivMod for Euclidean division and modulus (unlike Go).
|
||
*/
|
||
quoRem(x: Int): [(Int | undefined), (Int | undefined)]
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Div sets z to the quotient x/y for y != 0 and returns z.
|
||
* If y == 0, a division-by-zero run-time panic occurs.
|
||
* Div implements Euclidean division (unlike Go); see DivMod for more details.
|
||
*/
|
||
div(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Mod sets z to the modulus x%y for y != 0 and returns z.
|
||
* If y == 0, a division-by-zero run-time panic occurs.
|
||
* Mod implements Euclidean modulus (unlike Go); see DivMod for more details.
|
||
*/
|
||
mod(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* DivMod sets z to the quotient x div y and m to the modulus x mod y
|
||
* and returns the pair (z, m) for y != 0.
|
||
* If y == 0, a division-by-zero run-time panic occurs.
|
||
*
|
||
* DivMod implements Euclidean division and modulus (unlike Go):
|
||
*
|
||
* ```
|
||
* q = x div y such that
|
||
* m = x - y*q with 0 <= m < |y|
|
||
* ```
|
||
*
|
||
* (See Raymond T. Boute, “The Euclidean definition of the functions
|
||
* div and mod”. ACM Transactions on Programming Languages and
|
||
* Systems (TOPLAS), 14(2):127-144, New York, NY, USA, 4/1992.
|
||
* ACM press.)
|
||
* See QuoRem for T-division and modulus (like Go).
|
||
*/
|
||
divMod(x: Int): [(Int | undefined), (Int | undefined)]
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Cmp compares x and y and returns:
|
||
*
|
||
* ```
|
||
* -1 if x < y
|
||
* 0 if x == y
|
||
* +1 if x > y
|
||
* ```
|
||
*/
|
||
cmp(y: Int): number
|
||
}
|
||
interface Int {
|
||
/**
|
||
* CmpAbs compares the absolute values of x and y and returns:
|
||
*
|
||
* ```
|
||
* -1 if |x| < |y|
|
||
* 0 if |x| == |y|
|
||
* +1 if |x| > |y|
|
||
* ```
|
||
*/
|
||
cmpAbs(y: Int): number
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Int64 returns the int64 representation of x.
|
||
* If x cannot be represented in an int64, the result is undefined.
|
||
*/
|
||
int64(): number
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Uint64 returns the uint64 representation of x.
|
||
* If x cannot be represented in a uint64, the result is undefined.
|
||
*/
|
||
uint64(): number
|
||
}
|
||
interface Int {
|
||
/**
|
||
* IsInt64 reports whether x can be represented as an int64.
|
||
*/
|
||
isInt64(): boolean
|
||
}
|
||
interface Int {
|
||
/**
|
||
* IsUint64 reports whether x can be represented as a uint64.
|
||
*/
|
||
isUint64(): boolean
|
||
}
|
||
interface Int {
|
||
/**
|
||
* SetString sets z to the value of s, interpreted in the given base,
|
||
* and returns z and a boolean indicating success. The entire string
|
||
* (not just a prefix) must be valid for success. If SetString fails,
|
||
* the value of z is undefined but the returned value is nil.
|
||
*
|
||
* The base argument must be 0 or a value between 2 and MaxBase.
|
||
* For base 0, the number prefix determines the actual base: A prefix of
|
||
* “0b” or “0B” selects base 2, “0”, “0o” or “0O” selects base 8,
|
||
* and “0x” or “0X” selects base 16. Otherwise, the selected base is 10
|
||
* and no prefix is accepted.
|
||
*
|
||
* For bases <= 36, lower and upper case letters are considered the same:
|
||
* The letters 'a' to 'z' and 'A' to 'Z' represent digit values 10 to 35.
|
||
* For bases > 36, the upper case letters 'A' to 'Z' represent the digit
|
||
* values 36 to 61.
|
||
*
|
||
* For base 0, an underscore character “_” may appear between a base
|
||
* prefix and an adjacent digit, and between successive digits; such
|
||
* underscores do not change the value of the number.
|
||
* Incorrect placement of underscores is reported as an error if there
|
||
* are no other errors. If base != 0, underscores are not recognized
|
||
* and act like any other character that is not a valid digit.
|
||
*/
|
||
setString(s: string, base: number): [(Int | undefined), boolean]
|
||
}
|
||
interface Int {
|
||
/**
|
||
* SetBytes interprets buf as the bytes of a big-endian unsigned
|
||
* integer, sets z to that value, and returns z.
|
||
*/
|
||
setBytes(buf: string): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Bytes returns the absolute value of x as a big-endian byte slice.
|
||
*
|
||
* To use a fixed length slice, or a preallocated one, use FillBytes.
|
||
*/
|
||
bytes(): string
|
||
}
|
||
interface Int {
|
||
/**
|
||
* FillBytes sets buf to the absolute value of x, storing it as a zero-extended
|
||
* big-endian byte slice, and returns buf.
|
||
*
|
||
* If the absolute value of x doesn't fit in buf, FillBytes will panic.
|
||
*/
|
||
fillBytes(buf: string): string
|
||
}
|
||
interface Int {
|
||
/**
|
||
* BitLen returns the length of the absolute value of x in bits.
|
||
* The bit length of 0 is 0.
|
||
*/
|
||
bitLen(): number
|
||
}
|
||
interface Int {
|
||
/**
|
||
* TrailingZeroBits returns the number of consecutive least significant zero
|
||
* bits of |x|.
|
||
*/
|
||
trailingZeroBits(): number
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Exp sets z = x**y mod |m| (i.e. the sign of m is ignored), and returns z.
|
||
* If m == nil or m == 0, z = x**y unless y <= 0 then z = 1. If m != 0, y < 0,
|
||
* and x and m are not relatively prime, z is unchanged and nil is returned.
|
||
*
|
||
* Modular exponentiation of inputs of a particular size is not a
|
||
* cryptographically constant-time operation.
|
||
*/
|
||
exp(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* GCD sets z to the greatest common divisor of a and b and returns z.
|
||
* If x or y are not nil, GCD sets their value such that z = a*x + b*y.
|
||
*
|
||
* a and b may be positive, zero or negative. (Before Go 1.14 both had
|
||
* to be > 0.) Regardless of the signs of a and b, z is always >= 0.
|
||
*
|
||
* If a == b == 0, GCD sets z = x = y = 0.
|
||
*
|
||
* If a == 0 and b != 0, GCD sets z = |b|, x = 0, y = sign(b) * 1.
|
||
*
|
||
* If a != 0 and b == 0, GCD sets z = |a|, x = sign(a) * 1, y = 0.
|
||
*/
|
||
gcd(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Rand sets z to a pseudo-random number in [0, n) and returns z.
|
||
*
|
||
* As this uses the math/rand package, it must not be used for
|
||
* security-sensitive work. Use crypto/rand.Int instead.
|
||
*/
|
||
rand(rnd: rand.Rand, n: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* ModInverse sets z to the multiplicative inverse of g in the ring ℤ/nℤ
|
||
* and returns z. If g and n are not relatively prime, g has no multiplicative
|
||
* inverse in the ring ℤ/nℤ. In this case, z is unchanged and the return value
|
||
* is nil. If n == 0, a division-by-zero run-time panic occurs.
|
||
*/
|
||
modInverse(g: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* ModSqrt sets z to a square root of x mod p if such a square root exists, and
|
||
* returns z. The modulus p must be an odd prime. If x is not a square mod p,
|
||
* ModSqrt leaves z unchanged and returns nil. This function panics if p is
|
||
* not an odd integer, its behavior is undefined if p is odd but not prime.
|
||
*/
|
||
modSqrt(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Lsh sets z = x << n and returns z.
|
||
*/
|
||
lsh(x: Int, n: number): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Rsh sets z = x >> n and returns z.
|
||
*/
|
||
rsh(x: Int, n: number): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Bit returns the value of the i'th bit of x. That is, it
|
||
* returns (x>>i)&1. The bit index i must be >= 0.
|
||
*/
|
||
bit(i: number): number
|
||
}
|
||
interface Int {
|
||
/**
|
||
* SetBit sets z to x, with x's i'th bit set to b (0 or 1).
|
||
* That is, if b is 1 SetBit sets z = x | (1 << i);
|
||
* if b is 0 SetBit sets z = x &^ (1 << i). If b is not 0 or 1,
|
||
* SetBit will panic.
|
||
*/
|
||
setBit(x: Int, i: number, b: number): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* And sets z = x & y and returns z.
|
||
*/
|
||
and(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* AndNot sets z = x &^ y and returns z.
|
||
*/
|
||
andNot(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Or sets z = x | y and returns z.
|
||
*/
|
||
or(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Xor sets z = x ^ y and returns z.
|
||
*/
|
||
xor(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Not sets z = ^x and returns z.
|
||
*/
|
||
not(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Sqrt sets z to ⌊√x⌋, the largest integer such that z² ≤ x, and returns z.
|
||
* It panics if x is negative.
|
||
*/
|
||
sqrt(x: Int): (Int | undefined)
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Text returns the string representation of x in the given base.
|
||
* Base must be between 2 and 62, inclusive. The result uses the
|
||
* lower-case letters 'a' to 'z' for digit values 10 to 35, and
|
||
* the upper-case letters 'A' to 'Z' for digit values 36 to 61.
|
||
* No prefix (such as "0x") is added to the string. If x is a nil
|
||
* pointer it returns "<nil>".
|
||
*/
|
||
text(base: number): string
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Append appends the string representation of x, as generated by
|
||
* x.Text(base), to buf and returns the extended buffer.
|
||
*/
|
||
append(buf: string, base: number): string
|
||
}
|
||
interface Int {
|
||
/**
|
||
* String returns the decimal representation of x as generated by
|
||
* x.Text(10).
|
||
*/
|
||
string(): string
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Format implements fmt.Formatter. It accepts the formats
|
||
* 'b' (binary), 'o' (octal with 0 prefix), 'O' (octal with 0o prefix),
|
||
* 'd' (decimal), 'x' (lowercase hexadecimal), and
|
||
* 'X' (uppercase hexadecimal).
|
||
* Also supported are the full suite of package fmt's format
|
||
* flags for integral types, including '+' and ' ' for sign
|
||
* control, '#' for leading zero in octal and for hexadecimal,
|
||
* a leading "0x" or "0X" for "%#x" and "%#X" respectively,
|
||
* specification of minimum digits precision, output field
|
||
* width, space or zero padding, and '-' for left or right
|
||
* justification.
|
||
*/
|
||
format(s: fmt.State, ch: string): void
|
||
}
|
||
interface Int {
|
||
/**
|
||
* Scan is a support routine for fmt.Scanner; it sets z to the value of
|
||
* the scanned number. It accepts the formats 'b' (binary), 'o' (octal),
|
||
* 'd' (decimal), 'x' (lowercase hexadecimal), and 'X' (uppercase hexadecimal).
|
||
*/
|
||
scan(s: fmt.ScanState, ch: string): void
|
||
}
|
||
interface Int {
|
||
/**
|
||
* GobEncode implements the gob.GobEncoder interface.
|
||
*/
|
||
gobEncode(): string
|
||
}
|
||
interface Int {
|
||
/**
|
||
* GobDecode implements the gob.GobDecoder interface.
|
||
*/
|
||
gobDecode(buf: string): void
|
||
}
|
||
interface Int {
|
||
/**
|
||
* MarshalText implements the encoding.TextMarshaler interface.
|
||
*/
|
||
marshalText(): string
|
||
}
|
||
interface Int {
|
||
/**
|
||
* UnmarshalText implements the encoding.TextUnmarshaler interface.
|
||
*/
|
||
unmarshalText(text: string): void
|
||
}
|
||
interface Int {
|
||
/**
|
||
* MarshalJSON implements the json.Marshaler interface.
|
||
*/
|
||
marshalJSON(): string
|
||
}
|
||
interface Int {
|
||
/**
|
||
* UnmarshalJSON implements the json.Unmarshaler interface.
|
||
*/
|
||
unmarshalJSON(text: string): void
|
||
}
|
||
interface Int {
|
||
/**
|
||
* ProbablyPrime reports whether x is probably prime,
|
||
* applying the Miller-Rabin test with n pseudorandomly chosen bases
|
||
* as well as a Baillie-PSW test.
|
||
*
|
||
* If x is prime, ProbablyPrime returns true.
|
||
* If x is chosen randomly and not prime, ProbablyPrime probably returns false.
|
||
* The probability of returning true for a randomly chosen non-prime is at most ¼ⁿ.
|
||
*
|
||
* ProbablyPrime is 100% accurate for inputs less than 2⁶⁴.
|
||
* See Menezes et al., Handbook of Applied Cryptography, 1997, pp. 145-149,
|
||
* and FIPS 186-4 Appendix F for further discussion of the error probabilities.
|
||
*
|
||
* ProbablyPrime is not suitable for judging primes that an adversary may
|
||
* have crafted to fool the test.
|
||
*
|
||
* As of Go 1.8, ProbablyPrime(0) is allowed and applies only a Baillie-PSW test.
|
||
* Before Go 1.8, ProbablyPrime applied only the Miller-Rabin tests, and ProbablyPrime(0) panicked.
|
||
*/
|
||
probablyPrime(n: number): boolean
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package asn1 implements parsing of DER-encoded ASN.1 data structures,
|
||
* as defined in ITU-T Rec X.690.
|
||
*
|
||
* See also “A Layman's Guide to a Subset of ASN.1, BER, and DER,”
|
||
* http://luca.ntop.org/Teaching/Appunti/asn1.html.
|
||
*/
|
||
namespace asn1 {
|
||
/**
|
||
* An ObjectIdentifier represents an ASN.1 OBJECT IDENTIFIER.
|
||
*/
|
||
interface ObjectIdentifier extends Array<number>{}
|
||
interface ObjectIdentifier {
|
||
/**
|
||
* Equal reports whether oi and other represent the same identifier.
|
||
*/
|
||
equal(other: ObjectIdentifier): boolean
|
||
}
|
||
interface ObjectIdentifier {
|
||
string(): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package pkix contains shared, low level structures used for ASN.1 parsing
|
||
* and serialization of X.509 certificates, CRL and OCSP.
|
||
*/
|
||
namespace pkix {
|
||
/**
|
||
* Extension represents the ASN.1 structure of the same name. See RFC
|
||
* 5280, section 4.2.
|
||
*/
|
||
interface Extension {
|
||
id: asn1.ObjectIdentifier
|
||
critical: boolean
|
||
value: string
|
||
}
|
||
/**
|
||
* Name represents an X.509 distinguished name. This only includes the common
|
||
* elements of a DN. Note that Name is only an approximation of the X.509
|
||
* structure. If an accurate representation is needed, asn1.Unmarshal the raw
|
||
* subject or issuer as an RDNSequence.
|
||
*/
|
||
interface Name {
|
||
country: Array<string>
|
||
locality: Array<string>
|
||
streetAddress: Array<string>
|
||
serialNumber: string
|
||
/**
|
||
* Names contains all parsed attributes. When parsing distinguished names,
|
||
* this can be used to extract non-standard attributes that are not parsed
|
||
* by this package. When marshaling to RDNSequences, the Names field is
|
||
* ignored, see ExtraNames.
|
||
*/
|
||
names: Array<AttributeTypeAndValue>
|
||
/**
|
||
* ExtraNames contains attributes to be copied, raw, into any marshaled
|
||
* distinguished names. Values override any attributes with the same OID.
|
||
* The ExtraNames field is not populated when parsing, see Names.
|
||
*/
|
||
extraNames: Array<AttributeTypeAndValue>
|
||
}
|
||
interface Name {
|
||
/**
|
||
* FillFromRDNSequence populates n from the provided RDNSequence.
|
||
* Multi-entry RDNs are flattened, all entries are added to the
|
||
* relevant n fields, and the grouping is not preserved.
|
||
*/
|
||
fillFromRDNSequence(rdns: RDNSequence): void
|
||
}
|
||
interface Name {
|
||
/**
|
||
* ToRDNSequence converts n into a single RDNSequence. The following
|
||
* attributes are encoded as multi-value RDNs:
|
||
*
|
||
* ```
|
||
* - Country
|
||
* - Organization
|
||
* - OrganizationalUnit
|
||
* - Locality
|
||
* - Province
|
||
* - StreetAddress
|
||
* - PostalCode
|
||
* ```
|
||
*
|
||
* Each ExtraNames entry is encoded as an individual RDN.
|
||
*/
|
||
toRDNSequence(): RDNSequence
|
||
}
|
||
interface Name {
|
||
/**
|
||
* String returns the string form of n, roughly following
|
||
* the RFC 2253 Distinguished Names syntax.
|
||
*/
|
||
string(): string
|
||
}
|
||
/**
|
||
* CertificateList represents the ASN.1 structure of the same name. See RFC
|
||
* 5280, section 5.1. Use Certificate.CheckCRLSignature to verify the
|
||
* signature.
|
||
*
|
||
* Deprecated: x509.RevocationList should be used instead.
|
||
*/
|
||
interface CertificateList {
|
||
tbsCertList: TBSCertificateList
|
||
signatureAlgorithm: AlgorithmIdentifier
|
||
signatureValue: asn1.BitString
|
||
}
|
||
interface CertificateList {
|
||
/**
|
||
* HasExpired reports whether certList should have been updated by now.
|
||
*/
|
||
hasExpired(now: time.Time): boolean
|
||
}
|
||
/**
|
||
* RevokedCertificate represents the ASN.1 structure of the same name. See RFC
|
||
* 5280, section 5.1.
|
||
*/
|
||
interface RevokedCertificate {
|
||
serialNumber?: big.Int
|
||
revocationTime: time.Time
|
||
extensions: Array<Extension>
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package bufio implements buffered I/O. It wraps an io.Reader or io.Writer
|
||
* object, creating another object (Reader or Writer) that also implements
|
||
* the interface but provides buffering and some help for textual I/O.
|
||
*/
|
||
namespace bufio {
|
||
/**
|
||
* Reader implements buffering for an io.Reader object.
|
||
*/
|
||
interface Reader {
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Size returns the size of the underlying buffer in bytes.
|
||
*/
|
||
size(): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Reset discards any buffered data, resets all state, and switches
|
||
* the buffered reader to read from r.
|
||
* Calling Reset on the zero value of Reader initializes the internal buffer
|
||
* to the default size.
|
||
*/
|
||
reset(r: io.Reader): void
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Peek returns the next n bytes without advancing the reader. The bytes stop
|
||
* being valid at the next read call. If Peek returns fewer than n bytes, it
|
||
* also returns an error explaining why the read is short. The error is
|
||
* ErrBufferFull if n is larger than b's buffer size.
|
||
*
|
||
* Calling Peek prevents a UnreadByte or UnreadRune call from succeeding
|
||
* until the next read operation.
|
||
*/
|
||
peek(n: number): string
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Discard skips the next n bytes, returning the number of bytes discarded.
|
||
*
|
||
* If Discard skips fewer than n bytes, it also returns an error.
|
||
* If 0 <= n <= b.Buffered(), Discard is guaranteed to succeed without
|
||
* reading from the underlying io.Reader.
|
||
*/
|
||
discard(n: number): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Read reads data into p.
|
||
* It returns the number of bytes read into p.
|
||
* The bytes are taken from at most one Read on the underlying Reader,
|
||
* hence n may be less than len(p).
|
||
* To read exactly len(p) bytes, use io.ReadFull(b, p).
|
||
* If the underlying Reader can return a non-zero count with io.EOF,
|
||
* then this Read method can do so as well; see the [io.Reader] docs.
|
||
*/
|
||
read(p: string): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* ReadByte reads and returns a single byte.
|
||
* If no byte is available, returns an error.
|
||
*/
|
||
readByte(): string
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* UnreadByte unreads the last byte. Only the most recently read byte can be unread.
|
||
*
|
||
* UnreadByte returns an error if the most recent method called on the
|
||
* Reader was not a read operation. Notably, Peek, Discard, and WriteTo are not
|
||
* considered read operations.
|
||
*/
|
||
unreadByte(): void
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* ReadRune reads a single UTF-8 encoded Unicode character and returns the
|
||
* rune and its size in bytes. If the encoded rune is invalid, it consumes one byte
|
||
* and returns unicode.ReplacementChar (U+FFFD) with a size of 1.
|
||
*/
|
||
readRune(): [string, number]
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* UnreadRune unreads the last rune. If the most recent method called on
|
||
* the Reader was not a ReadRune, UnreadRune returns an error. (In this
|
||
* regard it is stricter than UnreadByte, which will unread the last byte
|
||
* from any read operation.)
|
||
*/
|
||
unreadRune(): void
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* Buffered returns the number of bytes that can be read from the current buffer.
|
||
*/
|
||
buffered(): number
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* ReadSlice reads until the first occurrence of delim in the input,
|
||
* returning a slice pointing at the bytes in the buffer.
|
||
* The bytes stop being valid at the next read.
|
||
* If ReadSlice encounters an error before finding a delimiter,
|
||
* it returns all the data in the buffer and the error itself (often io.EOF).
|
||
* ReadSlice fails with error ErrBufferFull if the buffer fills without a delim.
|
||
* Because the data returned from ReadSlice will be overwritten
|
||
* by the next I/O operation, most clients should use
|
||
* ReadBytes or ReadString instead.
|
||
* ReadSlice returns err != nil if and only if line does not end in delim.
|
||
*/
|
||
readSlice(delim: string): string
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* ReadLine is a low-level line-reading primitive. Most callers should use
|
||
* ReadBytes('\n') or ReadString('\n') instead or use a Scanner.
|
||
*
|
||
* ReadLine tries to return a single line, not including the end-of-line bytes.
|
||
* If the line was too long for the buffer then isPrefix is set and the
|
||
* beginning of the line is returned. The rest of the line will be returned
|
||
* from future calls. isPrefix will be false when returning the last fragment
|
||
* of the line. The returned buffer is only valid until the next call to
|
||
* ReadLine. ReadLine either returns a non-nil line or it returns an error,
|
||
* never both.
|
||
*
|
||
* The text returned from ReadLine does not include the line end ("\r\n" or "\n").
|
||
* No indication or error is given if the input ends without a final line end.
|
||
* Calling UnreadByte after ReadLine will always unread the last byte read
|
||
* (possibly a character belonging to the line end) even if that byte is not
|
||
* part of the line returned by ReadLine.
|
||
*/
|
||
readLine(): [string, boolean]
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* ReadBytes reads until the first occurrence of delim in the input,
|
||
* returning a slice containing the data up to and including the delimiter.
|
||
* If ReadBytes encounters an error before finding a delimiter,
|
||
* it returns the data read before the error and the error itself (often io.EOF).
|
||
* ReadBytes returns err != nil if and only if the returned data does not end in
|
||
* delim.
|
||
* For simple uses, a Scanner may be more convenient.
|
||
*/
|
||
readBytes(delim: string): string
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* ReadString reads until the first occurrence of delim in the input,
|
||
* returning a string containing the data up to and including the delimiter.
|
||
* If ReadString encounters an error before finding a delimiter,
|
||
* it returns the data read before the error and the error itself (often io.EOF).
|
||
* ReadString returns err != nil if and only if the returned data does not end in
|
||
* delim.
|
||
* For simple uses, a Scanner may be more convenient.
|
||
*/
|
||
readString(delim: string): string
|
||
}
|
||
interface Reader {
|
||
/**
|
||
* WriteTo implements io.WriterTo.
|
||
* This may make multiple calls to the Read method of the underlying Reader.
|
||
* If the underlying reader supports the WriteTo method,
|
||
* this calls the underlying WriteTo without buffering.
|
||
*/
|
||
writeTo(w: io.Writer): number
|
||
}
|
||
/**
|
||
* Writer implements buffering for an io.Writer object.
|
||
* If an error occurs writing to a Writer, no more data will be
|
||
* accepted and all subsequent writes, and Flush, will return the error.
|
||
* After all data has been written, the client should call the
|
||
* Flush method to guarantee all data has been forwarded to
|
||
* the underlying io.Writer.
|
||
*/
|
||
interface Writer {
|
||
}
|
||
interface Writer {
|
||
/**
|
||
* Size returns the size of the underlying buffer in bytes.
|
||
*/
|
||
size(): number
|
||
}
|
||
interface Writer {
|
||
/**
|
||
* Reset discards any unflushed buffered data, clears any error, and
|
||
* resets b to write its output to w.
|
||
* Calling Reset on the zero value of Writer initializes the internal buffer
|
||
* to the default size.
|
||
*/
|
||
reset(w: io.Writer): void
|
||
}
|
||
interface Writer {
|
||
/**
|
||
* Flush writes any buffered data to the underlying io.Writer.
|
||
*/
|
||
flush(): void
|
||
}
|
||
interface Writer {
|
||
/**
|
||
* Available returns how many bytes are unused in the buffer.
|
||
*/
|
||
available(): number
|
||
}
|
||
interface Writer {
|
||
/**
|
||
* AvailableBuffer returns an empty buffer with b.Available() capacity.
|
||
* This buffer is intended to be appended to and
|
||
* passed to an immediately succeeding Write call.
|
||
* The buffer is only valid until the next write operation on b.
|
||
*/
|
||
availableBuffer(): string
|
||
}
|
||
interface Writer {
|
||
/**
|
||
* Buffered returns the number of bytes that have been written into the current buffer.
|
||
*/
|
||
buffered(): number
|
||
}
|
||
interface Writer {
|
||
/**
|
||
* Write writes the contents of p into the buffer.
|
||
* It returns the number of bytes written.
|
||
* If nn < len(p), it also returns an error explaining
|
||
* why the write is short.
|
||
*/
|
||
write(p: string): number
|
||
}
|
||
interface Writer {
|
||
/**
|
||
* WriteByte writes a single byte.
|
||
*/
|
||
writeByte(c: string): void
|
||
}
|
||
interface Writer {
|
||
/**
|
||
* WriteRune writes a single Unicode code point, returning
|
||
* the number of bytes written and any error.
|
||
*/
|
||
writeRune(r: string): number
|
||
}
|
||
interface Writer {
|
||
/**
|
||
* WriteString writes a string.
|
||
* It returns the number of bytes written.
|
||
* If the count is less than len(s), it also returns an error explaining
|
||
* why the write is short.
|
||
*/
|
||
writeString(s: string): number
|
||
}
|
||
interface Writer {
|
||
/**
|
||
* ReadFrom implements io.ReaderFrom. If the underlying writer
|
||
* supports the ReadFrom method, this calls the underlying ReadFrom.
|
||
* If there is buffered data and an underlying ReadFrom, this fills
|
||
* the buffer and writes it before calling ReadFrom.
|
||
*/
|
||
readFrom(r: io.Reader): number
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package net provides a portable interface for network I/O, including
|
||
* TCP/IP, UDP, domain name resolution, and Unix domain sockets.
|
||
*
|
||
* Although the package provides access to low-level networking
|
||
* primitives, most clients will need only the basic interface provided
|
||
* by the Dial, Listen, and Accept functions and the associated
|
||
* Conn and Listener interfaces. The crypto/tls package uses
|
||
* the same interfaces and similar Dial and Listen functions.
|
||
*
|
||
* The Dial function connects to a server:
|
||
*
|
||
* ```
|
||
* conn, err := net.Dial("tcp", "golang.org:80")
|
||
* if err != nil {
|
||
* // handle error
|
||
* }
|
||
* fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n")
|
||
* status, err := bufio.NewReader(conn).ReadString('\n')
|
||
* // ...
|
||
* ```
|
||
*
|
||
* The Listen function creates servers:
|
||
*
|
||
* ```
|
||
* ln, err := net.Listen("tcp", ":8080")
|
||
* if err != nil {
|
||
* // handle error
|
||
* }
|
||
* for {
|
||
* conn, err := ln.Accept()
|
||
* if err != nil {
|
||
* // handle error
|
||
* }
|
||
* go handleConnection(conn)
|
||
* }
|
||
* ```
|
||
*
|
||
* # Name Resolution
|
||
*
|
||
* The method for resolving domain names, whether indirectly with functions like Dial
|
||
* or directly with functions like LookupHost and LookupAddr, varies by operating system.
|
||
*
|
||
* On Unix systems, the resolver has two options for resolving names.
|
||
* It can use a pure Go resolver that sends DNS requests directly to the servers
|
||
* listed in /etc/resolv.conf, or it can use a cgo-based resolver that calls C
|
||
* library routines such as getaddrinfo and getnameinfo.
|
||
*
|
||
* By default the pure Go resolver is used, because a blocked DNS request consumes
|
||
* only a goroutine, while a blocked C call consumes an operating system thread.
|
||
* When cgo is available, the cgo-based resolver is used instead under a variety of
|
||
* conditions: on systems that do not let programs make direct DNS requests (OS X),
|
||
* when the LOCALDOMAIN environment variable is present (even if empty),
|
||
* when the RES_OPTIONS or HOSTALIASES environment variable is non-empty,
|
||
* when the ASR_CONFIG environment variable is non-empty (OpenBSD only),
|
||
* when /etc/resolv.conf or /etc/nsswitch.conf specify the use of features that the
|
||
* Go resolver does not implement, and when the name being looked up ends in .local
|
||
* or is an mDNS name.
|
||
*
|
||
* The resolver decision can be overridden by setting the netdns value of the
|
||
* GODEBUG environment variable (see package runtime) to go or cgo, as in:
|
||
*
|
||
* ```
|
||
* export GODEBUG=netdns=go # force pure Go resolver
|
||
* export GODEBUG=netdns=cgo # force native resolver (cgo, win32)
|
||
* ```
|
||
*
|
||
* The decision can also be forced while building the Go source tree
|
||
* by setting the netgo or netcgo build tag.
|
||
*
|
||
* A numeric netdns setting, as in GODEBUG=netdns=1, causes the resolver
|
||
* to print debugging information about its decisions.
|
||
* To force a particular resolver while also printing debugging information,
|
||
* join the two settings by a plus sign, as in GODEBUG=netdns=go+1.
|
||
*
|
||
* On Plan 9, the resolver always accesses /net/cs and /net/dns.
|
||
*
|
||
* On Windows, in Go 1.18.x and earlier, the resolver always used C
|
||
* library functions, such as GetAddrInfo and DnsQuery.
|
||
*/
|
||
namespace net {
|
||
/**
|
||
* Addr represents a network end point address.
|
||
*
|
||
* The two methods Network and String conventionally return strings
|
||
* that can be passed as the arguments to Dial, but the exact form
|
||
* and meaning of the strings is up to the implementation.
|
||
*/
|
||
interface Addr {
|
||
network(): string // name of the network (for example, "tcp", "udp")
|
||
string(): string // string form of address (for example, "192.0.2.1:25", "[2001:db8::1]:80")
|
||
}
|
||
/**
|
||
* A Listener is a generic network listener for stream-oriented protocols.
|
||
*
|
||
* Multiple goroutines may invoke methods on a Listener simultaneously.
|
||
*/
|
||
interface Listener {
|
||
/**
|
||
* Accept waits for and returns the next connection to the listener.
|
||
*/
|
||
accept(): Conn
|
||
/**
|
||
* Close closes the listener.
|
||
* Any blocked Accept operations will be unblocked and return errors.
|
||
*/
|
||
close(): void
|
||
/**
|
||
* Addr returns the listener's network address.
|
||
*/
|
||
addr(): Addr
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Copyright 2021 The Go Authors. All rights reserved.
|
||
* Use of this source code is governed by a BSD-style
|
||
* license that can be found in the LICENSE file.
|
||
*/
|
||
/**
|
||
* Package x509 parses X.509-encoded keys and certificates.
|
||
*/
|
||
namespace x509 {
|
||
// @ts-ignore
|
||
import cryptobyte_asn1 = asn1
|
||
/**
|
||
* VerifyOptions contains parameters for Certificate.Verify.
|
||
*/
|
||
interface VerifyOptions {
|
||
/**
|
||
* DNSName, if set, is checked against the leaf certificate with
|
||
* Certificate.VerifyHostname or the platform verifier.
|
||
*/
|
||
dnsName: string
|
||
/**
|
||
* Intermediates is an optional pool of certificates that are not trust
|
||
* anchors, but can be used to form a chain from the leaf certificate to a
|
||
* root certificate.
|
||
*/
|
||
intermediates?: CertPool
|
||
/**
|
||
* Roots is the set of trusted root certificates the leaf certificate needs
|
||
* to chain up to. If nil, the system roots or the platform verifier are used.
|
||
*/
|
||
roots?: CertPool
|
||
/**
|
||
* CurrentTime is used to check the validity of all certificates in the
|
||
* chain. If zero, the current time is used.
|
||
*/
|
||
currentTime: time.Time
|
||
/**
|
||
* KeyUsages specifies which Extended Key Usage values are acceptable. A
|
||
* chain is accepted if it allows any of the listed values. An empty list
|
||
* means ExtKeyUsageServerAuth. To accept any key usage, include ExtKeyUsageAny.
|
||
*/
|
||
keyUsages: Array<ExtKeyUsage>
|
||
/**
|
||
* MaxConstraintComparisions is the maximum number of comparisons to
|
||
* perform when checking a given certificate's name constraints. If
|
||
* zero, a sensible default is used. This limit prevents pathological
|
||
* certificates from consuming excessive amounts of CPU time when
|
||
* validating. It does not apply to the platform verifier.
|
||
*/
|
||
maxConstraintComparisions: number
|
||
}
|
||
interface SignatureAlgorithm extends Number{}
|
||
interface SignatureAlgorithm {
|
||
string(): string
|
||
}
|
||
interface PublicKeyAlgorithm extends Number{}
|
||
interface PublicKeyAlgorithm {
|
||
string(): string
|
||
}
|
||
/**
|
||
* KeyUsage represents the set of actions that are valid for a given key. It's
|
||
* a bitmap of the KeyUsage* constants.
|
||
*/
|
||
interface KeyUsage extends Number{}
|
||
/**
|
||
* ExtKeyUsage represents an extended set of actions that are valid for a given key.
|
||
* Each of the ExtKeyUsage* constants define a unique action.
|
||
*/
|
||
interface ExtKeyUsage extends Number{}
|
||
}
|
||
|
||
/**
|
||
* Package tls partially implements TLS 1.2, as specified in RFC 5246,
|
||
* and TLS 1.3, as specified in RFC 8446.
|
||
*/
|
||
namespace tls {
|
||
/**
|
||
* ClientHelloInfo contains information from a ClientHello message in order to
|
||
* guide application logic in the GetCertificate and GetConfigForClient callbacks.
|
||
*/
|
||
interface ClientHelloInfo {
|
||
/**
|
||
* CipherSuites lists the CipherSuites supported by the client (e.g.
|
||
* TLS_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256).
|
||
*/
|
||
cipherSuites: Array<number>
|
||
/**
|
||
* ServerName indicates the name of the server requested by the client
|
||
* in order to support virtual hosting. ServerName is only set if the
|
||
* client is using SNI (see RFC 4366, Section 3.1).
|
||
*/
|
||
serverName: string
|
||
/**
|
||
* SupportedCurves lists the elliptic curves supported by the client.
|
||
* SupportedCurves is set only if the Supported Elliptic Curves
|
||
* Extension is being used (see RFC 4492, Section 5.1.1).
|
||
*/
|
||
supportedCurves: Array<CurveID>
|
||
/**
|
||
* SupportedPoints lists the point formats supported by the client.
|
||
* SupportedPoints is set only if the Supported Point Formats Extension
|
||
* is being used (see RFC 4492, Section 5.1.2).
|
||
*/
|
||
supportedPoints: Array<number>
|
||
/**
|
||
* SignatureSchemes lists the signature and hash schemes that the client
|
||
* is willing to verify. SignatureSchemes is set only if the Signature
|
||
* Algorithms Extension is being used (see RFC 5246, Section 7.4.1.4.1).
|
||
*/
|
||
signatureSchemes: Array<SignatureScheme>
|
||
/**
|
||
* SupportedProtos lists the application protocols supported by the client.
|
||
* SupportedProtos is set only if the Application-Layer Protocol
|
||
* Negotiation Extension is being used (see RFC 7301, Section 3.1).
|
||
*
|
||
* Servers can select a protocol by setting Config.NextProtos in a
|
||
* GetConfigForClient return value.
|
||
*/
|
||
supportedProtos: Array<string>
|
||
/**
|
||
* SupportedVersions lists the TLS versions supported by the client.
|
||
* For TLS versions less than 1.3, this is extrapolated from the max
|
||
* version advertised by the client, so values other than the greatest
|
||
* might be rejected if used.
|
||
*/
|
||
supportedVersions: Array<number>
|
||
/**
|
||
* Conn is the underlying net.Conn for the connection. Do not read
|
||
* from, or write to, this connection; that will cause the TLS
|
||
* connection to fail.
|
||
*/
|
||
conn: net.Conn
|
||
}
|
||
interface ClientHelloInfo {
|
||
/**
|
||
* Context returns the context of the handshake that is in progress.
|
||
* This context is a child of the context passed to HandshakeContext,
|
||
* if any, and is canceled when the handshake concludes.
|
||
*/
|
||
context(): context.Context
|
||
}
|
||
/**
|
||
* A Config structure is used to configure a TLS client or server.
|
||
* After one has been passed to a TLS function it must not be
|
||
* modified. A Config may be reused; the tls package will also not
|
||
* modify it.
|
||
*/
|
||
interface Config {
|
||
/**
|
||
* Rand provides the source of entropy for nonces and RSA blinding.
|
||
* If Rand is nil, TLS uses the cryptographic random reader in package
|
||
* crypto/rand.
|
||
* The Reader must be safe for use by multiple goroutines.
|
||
*/
|
||
rand: io.Reader
|
||
/**
|
||
* Time returns the current time as the number of seconds since the epoch.
|
||
* If Time is nil, TLS uses time.Now.
|
||
*/
|
||
time: () => time.Time
|
||
/**
|
||
* Certificates contains one or more certificate chains to present to the
|
||
* other side of the connection. The first certificate compatible with the
|
||
* peer's requirements is selected automatically.
|
||
*
|
||
* Server configurations must set one of Certificates, GetCertificate or
|
||
* GetConfigForClient. Clients doing client-authentication may set either
|
||
* Certificates or GetClientCertificate.
|
||
*
|
||
* Note: if there are multiple Certificates, and they don't have the
|
||
* optional field Leaf set, certificate selection will incur a significant
|
||
* per-handshake performance cost.
|
||
*/
|
||
certificates: Array<Certificate>
|
||
/**
|
||
* NameToCertificate maps from a certificate name to an element of
|
||
* Certificates. Note that a certificate name can be of the form
|
||
* '*.example.com' and so doesn't have to be a domain name as such.
|
||
*
|
||
* Deprecated: NameToCertificate only allows associating a single
|
||
* certificate with a given name. Leave this field nil to let the library
|
||
* select the first compatible chain from Certificates.
|
||
*/
|
||
nameToCertificate: _TygojaDict
|
||
/**
|
||
* GetCertificate returns a Certificate based on the given
|
||
* ClientHelloInfo. It will only be called if the client supplies SNI
|
||
* information or if Certificates is empty.
|
||
*
|
||
* If GetCertificate is nil or returns nil, then the certificate is
|
||
* retrieved from NameToCertificate. If NameToCertificate is nil, the
|
||
* best element of Certificates will be used.
|
||
*/
|
||
getCertificate: (_arg0: ClientHelloInfo) => (Certificate | undefined)
|
||
/**
|
||
* GetClientCertificate, if not nil, is called when a server requests a
|
||
* certificate from a client. If set, the contents of Certificates will
|
||
* be ignored.
|
||
*
|
||
* If GetClientCertificate returns an error, the handshake will be
|
||
* aborted and that error will be returned. Otherwise
|
||
* GetClientCertificate must return a non-nil Certificate. If
|
||
* Certificate.Certificate is empty then no certificate will be sent to
|
||
* the server. If this is unacceptable to the server then it may abort
|
||
* the handshake.
|
||
*
|
||
* GetClientCertificate may be called multiple times for the same
|
||
* connection if renegotiation occurs or if TLS 1.3 is in use.
|
||
*/
|
||
getClientCertificate: (_arg0: CertificateRequestInfo) => (Certificate | undefined)
|
||
/**
|
||
* GetConfigForClient, if not nil, is called after a ClientHello is
|
||
* received from a client. It may return a non-nil Config in order to
|
||
* change the Config that will be used to handle this connection. If
|
||
* the returned Config is nil, the original Config will be used. The
|
||
* Config returned by this callback may not be subsequently modified.
|
||
*
|
||
* If GetConfigForClient is nil, the Config passed to Server() will be
|
||
* used for all connections.
|
||
*
|
||
* If SessionTicketKey was explicitly set on the returned Config, or if
|
||
* SetSessionTicketKeys was called on the returned Config, those keys will
|
||
* be used. Otherwise, the original Config keys will be used (and possibly
|
||
* rotated if they are automatically managed).
|
||
*/
|
||
getConfigForClient: (_arg0: ClientHelloInfo) => (Config | undefined)
|
||
/**
|
||
* VerifyPeerCertificate, if not nil, is called after normal
|
||
* certificate verification by either a TLS client or server. It
|
||
* receives the raw ASN.1 certificates provided by the peer and also
|
||
* any verified chains that normal processing found. If it returns a
|
||
* non-nil error, the handshake is aborted and that error results.
|
||
*
|
||
* If normal verification fails then the handshake will abort before
|
||
* considering this callback. If normal verification is disabled by
|
||
* setting InsecureSkipVerify, or (for a server) when ClientAuth is
|
||
* RequestClientCert or RequireAnyClientCert, then this callback will
|
||
* be considered but the verifiedChains argument will always be nil.
|
||
*/
|
||
verifyPeerCertificate: (rawCerts: Array<string>, verifiedChains: Array<Array<(x509.Certificate | undefined)>>) => void
|
||
/**
|
||
* VerifyConnection, if not nil, is called after normal certificate
|
||
* verification and after VerifyPeerCertificate by either a TLS client
|
||
* or server. If it returns a non-nil error, the handshake is aborted
|
||
* and that error results.
|
||
*
|
||
* If normal verification fails then the handshake will abort before
|
||
* considering this callback. This callback will run for all connections
|
||
* regardless of InsecureSkipVerify or ClientAuth settings.
|
||
*/
|
||
verifyConnection: (_arg0: ConnectionState) => void
|
||
/**
|
||
* RootCAs defines the set of root certificate authorities
|
||
* that clients use when verifying server certificates.
|
||
* If RootCAs is nil, TLS uses the host's root CA set.
|
||
*/
|
||
rootCAs?: x509.CertPool
|
||
/**
|
||
* NextProtos is a list of supported application level protocols, in
|
||
* order of preference. If both peers support ALPN, the selected
|
||
* protocol will be one from this list, and the connection will fail
|
||
* if there is no mutually supported protocol. If NextProtos is empty
|
||
* or the peer doesn't support ALPN, the connection will succeed and
|
||
* ConnectionState.NegotiatedProtocol will be empty.
|
||
*/
|
||
nextProtos: Array<string>
|
||
/**
|
||
* ServerName is used to verify the hostname on the returned
|
||
* certificates unless InsecureSkipVerify is given. It is also included
|
||
* in the client's handshake to support virtual hosting unless it is
|
||
* an IP address.
|
||
*/
|
||
serverName: string
|
||
/**
|
||
* ClientAuth determines the server's policy for
|
||
* TLS Client Authentication. The default is NoClientCert.
|
||
*/
|
||
clientAuth: ClientAuthType
|
||
/**
|
||
* ClientCAs defines the set of root certificate authorities
|
||
* that servers use if required to verify a client certificate
|
||
* by the policy in ClientAuth.
|
||
*/
|
||
clientCAs?: x509.CertPool
|
||
/**
|
||
* InsecureSkipVerify controls whether a client verifies the server's
|
||
* certificate chain and host name. If InsecureSkipVerify is true, crypto/tls
|
||
* accepts any certificate presented by the server and any host name in that
|
||
* certificate. In this mode, TLS is susceptible to machine-in-the-middle
|
||
* attacks unless custom verification is used. This should be used only for
|
||
* testing or in combination with VerifyConnection or VerifyPeerCertificate.
|
||
*/
|
||
insecureSkipVerify: boolean
|
||
/**
|
||
* CipherSuites is a list of enabled TLS 1.0–1.2 cipher suites. The order of
|
||
* the list is ignored. Note that TLS 1.3 ciphersuites are not configurable.
|
||
*
|
||
* If CipherSuites is nil, a safe default list is used. The default cipher
|
||
* suites might change over time.
|
||
*/
|
||
cipherSuites: Array<number>
|
||
/**
|
||
* PreferServerCipherSuites is a legacy field and has no effect.
|
||
*
|
||
* It used to control whether the server would follow the client's or the
|
||
* server's preference. Servers now select the best mutually supported
|
||
* cipher suite based on logic that takes into account inferred client
|
||
* hardware, server hardware, and security.
|
||
*
|
||
* Deprecated: PreferServerCipherSuites is ignored.
|
||
*/
|
||
preferServerCipherSuites: boolean
|
||
/**
|
||
* SessionTicketsDisabled may be set to true to disable session ticket and
|
||
* PSK (resumption) support. Note that on clients, session ticket support is
|
||
* also disabled if ClientSessionCache is nil.
|
||
*/
|
||
sessionTicketsDisabled: boolean
|
||
/**
|
||
* SessionTicketKey is used by TLS servers to provide session resumption.
|
||
* See RFC 5077 and the PSK mode of RFC 8446. If zero, it will be filled
|
||
* with random data before the first server handshake.
|
||
*
|
||
* Deprecated: if this field is left at zero, session ticket keys will be
|
||
* automatically rotated every day and dropped after seven days. For
|
||
* customizing the rotation schedule or synchronizing servers that are
|
||
* terminating connections for the same host, use SetSessionTicketKeys.
|
||
*/
|
||
sessionTicketKey: string
|
||
/**
|
||
* ClientSessionCache is a cache of ClientSessionState entries for TLS
|
||
* session resumption. It is only used by clients.
|
||
*/
|
||
clientSessionCache: ClientSessionCache
|
||
/**
|
||
* MinVersion contains the minimum TLS version that is acceptable.
|
||
*
|
||
* By default, TLS 1.2 is currently used as the minimum when acting as a
|
||
* client, and TLS 1.0 when acting as a server. TLS 1.0 is the minimum
|
||
* supported by this package, both as a client and as a server.
|
||
*
|
||
* The client-side default can temporarily be reverted to TLS 1.0 by
|
||
* including the value "x509sha1=1" in the GODEBUG environment variable.
|
||
* Note that this option will be removed in Go 1.19 (but it will still be
|
||
* possible to set this field to VersionTLS10 explicitly).
|
||
*/
|
||
minVersion: number
|
||
/**
|
||
* MaxVersion contains the maximum TLS version that is acceptable.
|
||
*
|
||
* By default, the maximum version supported by this package is used,
|
||
* which is currently TLS 1.3.
|
||
*/
|
||
maxVersion: number
|
||
/**
|
||
* CurvePreferences contains the elliptic curves that will be used in
|
||
* an ECDHE handshake, in preference order. If empty, the default will
|
||
* be used. The client will use the first preference as the type for
|
||
* its key share in TLS 1.3. This may change in the future.
|
||
*/
|
||
curvePreferences: Array<CurveID>
|
||
/**
|
||
* DynamicRecordSizingDisabled disables adaptive sizing of TLS records.
|
||
* When true, the largest possible TLS record size is always used. When
|
||
* false, the size of TLS records may be adjusted in an attempt to
|
||
* improve latency.
|
||
*/
|
||
dynamicRecordSizingDisabled: boolean
|
||
/**
|
||
* Renegotiation controls what types of renegotiation are supported.
|
||
* The default, none, is correct for the vast majority of applications.
|
||
*/
|
||
renegotiation: RenegotiationSupport
|
||
/**
|
||
* KeyLogWriter optionally specifies a destination for TLS master secrets
|
||
* in NSS key log format that can be used to allow external programs
|
||
* such as Wireshark to decrypt TLS connections.
|
||
* See https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format.
|
||
* Use of KeyLogWriter compromises security and should only be
|
||
* used for debugging.
|
||
*/
|
||
keyLogWriter: io.Writer
|
||
}
|
||
interface Config {
|
||
/**
|
||
* Clone returns a shallow clone of c or nil if c is nil. It is safe to clone a Config that is
|
||
* being used concurrently by a TLS client or server.
|
||
*/
|
||
clone(): (Config | undefined)
|
||
}
|
||
interface Config {
|
||
/**
|
||
* SetSessionTicketKeys updates the session ticket keys for a server.
|
||
*
|
||
* The first key will be used when creating new tickets, while all keys can be
|
||
* used for decrypting tickets. It is safe to call this function while the
|
||
* server is running in order to rotate the session ticket keys. The function
|
||
* will panic if keys is empty.
|
||
*
|
||
* Calling this function will turn off automatic session ticket key rotation.
|
||
*
|
||
* If multiple servers are terminating connections for the same host they should
|
||
* all have the same session ticket keys. If the session ticket keys leaks,
|
||
* previously recorded and future TLS connections using those keys might be
|
||
* compromised.
|
||
*/
|
||
setSessionTicketKeys(keys: Array<string>): void
|
||
}
|
||
interface ClientHelloInfo {
|
||
/**
|
||
* SupportsCertificate returns nil if the provided certificate is supported by
|
||
* the client that sent the ClientHello. Otherwise, it returns an error
|
||
* describing the reason for the incompatibility.
|
||
*
|
||
* If this ClientHelloInfo was passed to a GetConfigForClient or GetCertificate
|
||
* callback, this method will take into account the associated Config. Note that
|
||
* if GetConfigForClient returns a different Config, the change can't be
|
||
* accounted for by this method.
|
||
*
|
||
* This function will call x509.ParseCertificate unless c.Leaf is set, which can
|
||
* incur a significant performance cost.
|
||
*/
|
||
supportsCertificate(c: Certificate): void
|
||
}
|
||
interface Config {
|
||
/**
|
||
* BuildNameToCertificate parses c.Certificates and builds c.NameToCertificate
|
||
* from the CommonName and SubjectAlternateName fields of each of the leaf
|
||
* certificates.
|
||
*
|
||
* Deprecated: NameToCertificate only allows associating a single certificate
|
||
* with a given name. Leave that field nil to let the library select the first
|
||
* compatible chain from Certificates.
|
||
*/
|
||
buildNameToCertificate(): void
|
||
}
|
||
/**
|
||
* A Certificate is a chain of one or more certificates, leaf first.
|
||
*/
|
||
interface Certificate {
|
||
certificate: Array<string>
|
||
/**
|
||
* PrivateKey contains the private key corresponding to the public key in
|
||
* Leaf. This must implement crypto.Signer with an RSA, ECDSA or Ed25519 PublicKey.
|
||
* For a server up to TLS 1.2, it can also implement crypto.Decrypter with
|
||
* an RSA PublicKey.
|
||
*/
|
||
privateKey: crypto.PrivateKey
|
||
/**
|
||
* SupportedSignatureAlgorithms is an optional list restricting what
|
||
* signature algorithms the PrivateKey can be used for.
|
||
*/
|
||
supportedSignatureAlgorithms: Array<SignatureScheme>
|
||
/**
|
||
* OCSPStaple contains an optional OCSP response which will be served
|
||
* to clients that request it.
|
||
*/
|
||
ocspStaple: string
|
||
/**
|
||
* SignedCertificateTimestamps contains an optional list of Signed
|
||
* Certificate Timestamps which will be served to clients that request it.
|
||
*/
|
||
signedCertificateTimestamps: Array<string>
|
||
/**
|
||
* Leaf is the parsed form of the leaf certificate, which may be initialized
|
||
* using x509.ParseCertificate to reduce per-handshake processing. If nil,
|
||
* the leaf certificate will be parsed as needed.
|
||
*/
|
||
leaf?: x509.Certificate
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package log implements a simple logging package. It defines a type, Logger,
|
||
* with methods for formatting output. It also has a predefined 'standard'
|
||
* Logger accessible through helper functions Print[f|ln], Fatal[f|ln], and
|
||
* Panic[f|ln], which are easier to use than creating a Logger manually.
|
||
* That logger writes to standard error and prints the date and time
|
||
* of each logged message.
|
||
* Every log message is output on a separate line: if the message being
|
||
* printed does not end in a newline, the logger will add one.
|
||
* The Fatal functions call os.Exit(1) after writing the log message.
|
||
* The Panic functions call panic after writing the log message.
|
||
*/
|
||
namespace log {
|
||
/**
|
||
* A Logger represents an active logging object that generates lines of
|
||
* output to an io.Writer. Each logging operation makes a single call to
|
||
* the Writer's Write method. A Logger can be used simultaneously from
|
||
* multiple goroutines; it guarantees to serialize access to the Writer.
|
||
*/
|
||
interface Logger {
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* SetOutput sets the output destination for the logger.
|
||
*/
|
||
setOutput(w: io.Writer): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Output writes the output for a logging event. The string s contains
|
||
* the text to print after the prefix specified by the flags of the
|
||
* Logger. A newline is appended if the last character of s is not
|
||
* already a newline. Calldepth is used to recover the PC and is
|
||
* provided for generality, although at the moment on all pre-defined
|
||
* paths it will be 2.
|
||
*/
|
||
output(calldepth: number, s: string): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Printf calls l.Output to print to the logger.
|
||
* Arguments are handled in the manner of fmt.Printf.
|
||
*/
|
||
printf(format: string, ...v: any[]): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Print calls l.Output to print to the logger.
|
||
* Arguments are handled in the manner of fmt.Print.
|
||
*/
|
||
print(...v: any[]): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Println calls l.Output to print to the logger.
|
||
* Arguments are handled in the manner of fmt.Println.
|
||
*/
|
||
println(...v: any[]): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Fatal is equivalent to l.Print() followed by a call to os.Exit(1).
|
||
*/
|
||
fatal(...v: any[]): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Fatalf is equivalent to l.Printf() followed by a call to os.Exit(1).
|
||
*/
|
||
fatalf(format: string, ...v: any[]): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Fatalln is equivalent to l.Println() followed by a call to os.Exit(1).
|
||
*/
|
||
fatalln(...v: any[]): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Panic is equivalent to l.Print() followed by a call to panic().
|
||
*/
|
||
panic(...v: any[]): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Panicf is equivalent to l.Printf() followed by a call to panic().
|
||
*/
|
||
panicf(format: string, ...v: any[]): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Panicln is equivalent to l.Println() followed by a call to panic().
|
||
*/
|
||
panicln(...v: any[]): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Flags returns the output flags for the logger.
|
||
* The flag bits are Ldate, Ltime, and so on.
|
||
*/
|
||
flags(): number
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* SetFlags sets the output flags for the logger.
|
||
* The flag bits are Ldate, Ltime, and so on.
|
||
*/
|
||
setFlags(flag: number): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Prefix returns the output prefix for the logger.
|
||
*/
|
||
prefix(): string
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* SetPrefix sets the output prefix for the logger.
|
||
*/
|
||
setPrefix(prefix: string): void
|
||
}
|
||
interface Logger {
|
||
/**
|
||
* Writer returns the output destination for the logger.
|
||
*/
|
||
writer(): io.Writer
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package http provides HTTP client and server implementations.
|
||
*
|
||
* Get, Head, Post, and PostForm make HTTP (or HTTPS) requests:
|
||
*
|
||
* ```
|
||
* resp, err := http.Get("http://example.com/")
|
||
* ...
|
||
* resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf)
|
||
* ...
|
||
* resp, err := http.PostForm("http://example.com/form",
|
||
* url.Values{"key": {"Value"}, "id": {"123"}})
|
||
* ```
|
||
*
|
||
* The client must close the response body when finished with it:
|
||
*
|
||
* ```
|
||
* resp, err := http.Get("http://example.com/")
|
||
* if err != nil {
|
||
* // handle error
|
||
* }
|
||
* defer resp.Body.Close()
|
||
* body, err := io.ReadAll(resp.Body)
|
||
* // ...
|
||
* ```
|
||
*
|
||
* For control over HTTP client headers, redirect policy, and other
|
||
* settings, create a Client:
|
||
*
|
||
* ```
|
||
* client := &http.Client{
|
||
* CheckRedirect: redirectPolicyFunc,
|
||
* }
|
||
*
|
||
* resp, err := client.Get("http://example.com")
|
||
* // ...
|
||
*
|
||
* req, err := http.NewRequest("GET", "http://example.com", nil)
|
||
* // ...
|
||
* req.Header.Add("If-None-Match", `W/"wyzzy"`)
|
||
* resp, err := client.Do(req)
|
||
* // ...
|
||
* ```
|
||
*
|
||
* For control over proxies, TLS configuration, keep-alives,
|
||
* compression, and other settings, create a Transport:
|
||
*
|
||
* ```
|
||
* tr := &http.Transport{
|
||
* MaxIdleConns: 10,
|
||
* IdleConnTimeout: 30 * time.Second,
|
||
* DisableCompression: true,
|
||
* }
|
||
* client := &http.Client{Transport: tr}
|
||
* resp, err := client.Get("https://example.com")
|
||
* ```
|
||
*
|
||
* Clients and Transports are safe for concurrent use by multiple
|
||
* goroutines and for efficiency should only be created once and re-used.
|
||
*
|
||
* ListenAndServe starts an HTTP server with a given address and handler.
|
||
* The handler is usually nil, which means to use DefaultServeMux.
|
||
* Handle and HandleFunc add handlers to DefaultServeMux:
|
||
*
|
||
* ```
|
||
* http.Handle("/foo", fooHandler)
|
||
*
|
||
* http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
|
||
* fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
|
||
* })
|
||
*
|
||
* log.Fatal(http.ListenAndServe(":8080", nil))
|
||
* ```
|
||
*
|
||
* More control over the server's behavior is available by creating a
|
||
* custom Server:
|
||
*
|
||
* ```
|
||
* s := &http.Server{
|
||
* Addr: ":8080",
|
||
* Handler: myHandler,
|
||
* ReadTimeout: 10 * time.Second,
|
||
* WriteTimeout: 10 * time.Second,
|
||
* MaxHeaderBytes: 1 << 20,
|
||
* }
|
||
* log.Fatal(s.ListenAndServe())
|
||
* ```
|
||
*
|
||
* Starting with Go 1.6, the http package has transparent support for the
|
||
* HTTP/2 protocol when using HTTPS. Programs that must disable HTTP/2
|
||
* can do so by setting Transport.TLSNextProto (for clients) or
|
||
* Server.TLSNextProto (for servers) to a non-nil, empty
|
||
* map. Alternatively, the following GODEBUG environment variables are
|
||
* currently supported:
|
||
*
|
||
* ```
|
||
* GODEBUG=http2client=0 # disable HTTP/2 client support
|
||
* GODEBUG=http2server=0 # disable HTTP/2 server support
|
||
* GODEBUG=http2debug=1 # enable verbose HTTP/2 debug logs
|
||
* GODEBUG=http2debug=2 # ... even more verbose, with frame dumps
|
||
* ```
|
||
*
|
||
* The GODEBUG variables are not covered by Go's API compatibility
|
||
* promise. Please report any issues before disabling HTTP/2
|
||
* support: https://golang.org/s/http2bug
|
||
*
|
||
* The http package's Transport and Server both automatically enable
|
||
* HTTP/2 support for simple configurations. To enable HTTP/2 for more
|
||
* complex configurations, to use lower-level HTTP/2 features, or to use
|
||
* a newer version of Go's http2 package, import "golang.org/x/net/http2"
|
||
* directly and use its ConfigureTransport and/or ConfigureServer
|
||
* functions. Manually configuring HTTP/2 via the golang.org/x/net/http2
|
||
* package takes precedence over the net/http package's built-in HTTP/2
|
||
* support.
|
||
*/
|
||
namespace http {
|
||
// @ts-ignore
|
||
import mathrand = rand
|
||
// @ts-ignore
|
||
import urlpkg = url
|
||
/**
|
||
* A Handler responds to an HTTP request.
|
||
*
|
||
* ServeHTTP should write reply headers and data to the ResponseWriter
|
||
* and then return. Returning signals that the request is finished; it
|
||
* is not valid to use the ResponseWriter or read from the
|
||
* Request.Body after or concurrently with the completion of the
|
||
* ServeHTTP call.
|
||
*
|
||
* Depending on the HTTP client software, HTTP protocol version, and
|
||
* any intermediaries between the client and the Go server, it may not
|
||
* be possible to read from the Request.Body after writing to the
|
||
* ResponseWriter. Cautious handlers should read the Request.Body
|
||
* first, and then reply.
|
||
*
|
||
* Except for reading the body, handlers should not modify the
|
||
* provided Request.
|
||
*
|
||
* If ServeHTTP panics, the server (the caller of ServeHTTP) assumes
|
||
* that the effect of the panic was isolated to the active request.
|
||
* It recovers the panic, logs a stack trace to the server error log,
|
||
* and either closes the network connection or sends an HTTP/2
|
||
* RST_STREAM, depending on the HTTP protocol. To abort a handler so
|
||
* the client sees an interrupted response but the server doesn't log
|
||
* an error, panic with the value ErrAbortHandler.
|
||
*/
|
||
interface Handler {
|
||
serveHTTP(_arg0: ResponseWriter, _arg1: Request): void
|
||
}
|
||
/**
|
||
* A ConnState represents the state of a client connection to a server.
|
||
* It's used by the optional Server.ConnState hook.
|
||
*/
|
||
interface ConnState extends Number{}
|
||
interface ConnState {
|
||
string(): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package encoding defines interfaces shared by other packages that
|
||
* convert data to and from byte-level and textual representations.
|
||
* Packages that check for these interfaces include encoding/gob,
|
||
* encoding/json, and encoding/xml. As a result, implementing an
|
||
* interface once can make a type useful in multiple encodings.
|
||
* Standard types that implement these interfaces include time.Time and net.IP.
|
||
* The interfaces come in pairs that produce and consume encoded data.
|
||
*/
|
||
namespace encoding {
|
||
/**
|
||
* TextMarshaler is the interface implemented by an object that can
|
||
* marshal itself into a textual form.
|
||
*
|
||
* MarshalText encodes the receiver into UTF-8-encoded text and returns the result.
|
||
*/
|
||
interface TextMarshaler {
|
||
marshalText(): string
|
||
}
|
||
/**
|
||
* TextUnmarshaler is the interface implemented by an object that can
|
||
* unmarshal a textual representation of itself.
|
||
*
|
||
* UnmarshalText must be able to decode the form generated by MarshalText.
|
||
* UnmarshalText must copy the text if it wishes to retain the text
|
||
* after returning.
|
||
*/
|
||
interface TextUnmarshaler {
|
||
unmarshalText(text: string): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package acme provides an implementation of the
|
||
* Automatic Certificate Management Environment (ACME) spec,
|
||
* most famously used by Let's Encrypt.
|
||
*
|
||
* The initial implementation of this package was based on an early version
|
||
* of the spec. The current implementation supports only the modern
|
||
* RFC 8555 but some of the old API surface remains for compatibility.
|
||
* While code using the old API will still compile, it will return an error.
|
||
* Note the deprecation comments to update your code.
|
||
*
|
||
* See https://tools.ietf.org/html/rfc8555 for the spec.
|
||
*
|
||
* Most common scenarios will want to use autocert subdirectory instead,
|
||
* which provides automatic access to certificates from Let's Encrypt
|
||
* and any other ACME-based CA.
|
||
*/
|
||
namespace acme {
|
||
/**
|
||
* Client is an ACME client.
|
||
*
|
||
* The only required field is Key. An example of creating a client with a new key
|
||
* is as follows:
|
||
*
|
||
* ```
|
||
* key, err := rsa.GenerateKey(rand.Reader, 2048)
|
||
* if err != nil {
|
||
* log.Fatal(err)
|
||
* }
|
||
* client := &Client{Key: key}
|
||
* ```
|
||
*/
|
||
interface Client {
|
||
/**
|
||
* Key is the account key used to register with a CA and sign requests.
|
||
* Key.Public() must return a *rsa.PublicKey or *ecdsa.PublicKey.
|
||
*
|
||
* The following algorithms are supported:
|
||
* RS256, ES256, ES384 and ES512.
|
||
* See RFC 7518 for more details about the algorithms.
|
||
*/
|
||
key: crypto.Signer
|
||
/**
|
||
* HTTPClient optionally specifies an HTTP client to use
|
||
* instead of http.DefaultClient.
|
||
*/
|
||
httpClient?: http.Client
|
||
/**
|
||
* DirectoryURL points to the CA directory endpoint.
|
||
* If empty, LetsEncryptURL is used.
|
||
* Mutating this value after a successful call of Client's Discover method
|
||
* will have no effect.
|
||
*/
|
||
directoryURL: string
|
||
/**
|
||
* RetryBackoff computes the duration after which the nth retry of a failed request
|
||
* should occur. The value of n for the first call on failure is 1.
|
||
* The values of r and resp are the request and response of the last failed attempt.
|
||
* If the returned value is negative or zero, no more retries are done and an error
|
||
* is returned to the caller of the original method.
|
||
*
|
||
* Requests which result in a 4xx client error are not retried,
|
||
* except for 400 Bad Request due to "bad nonce" errors and 429 Too Many Requests.
|
||
*
|
||
* If RetryBackoff is nil, a truncated exponential backoff algorithm
|
||
* with the ceiling of 10 seconds is used, where each subsequent retry n
|
||
* is done after either ("Retry-After" + jitter) or (2^n seconds + jitter),
|
||
* preferring the former if "Retry-After" header is found in the resp.
|
||
* The jitter is a random value up to 1 second.
|
||
*/
|
||
retryBackoff: (n: number, r: http.Request, resp: http.Response) => time.Duration
|
||
/**
|
||
* UserAgent is prepended to the User-Agent header sent to the ACME server,
|
||
* which by default is this package's name and version.
|
||
*
|
||
* Reusable libraries and tools in particular should set this value to be
|
||
* identifiable by the server, in case they are causing issues.
|
||
*/
|
||
userAgent: string
|
||
/**
|
||
* KID is the key identifier provided by the CA. If not provided it will be
|
||
* retrieved from the CA by making a call to the registration endpoint.
|
||
*/
|
||
kid: KeyID
|
||
}
|
||
interface Client {
|
||
/**
|
||
* Discover performs ACME server discovery using c.DirectoryURL.
|
||
*
|
||
* It caches successful result. So, subsequent calls will not result in
|
||
* a network round-trip. This also means mutating c.DirectoryURL after successful call
|
||
* of this method will have no effect.
|
||
*/
|
||
discover(ctx: context.Context): Directory
|
||
}
|
||
interface Client {
|
||
/**
|
||
* CreateCert was part of the old version of ACME. It is incompatible with RFC 8555.
|
||
*
|
||
* Deprecated: this was for the pre-RFC 8555 version of ACME. Callers should use CreateOrderCert.
|
||
*/
|
||
createCert(ctx: context.Context, csr: string, exp: time.Duration, bundle: boolean): [Array<string>, string]
|
||
}
|
||
interface Client {
|
||
/**
|
||
* FetchCert retrieves already issued certificate from the given url, in DER format.
|
||
* It retries the request until the certificate is successfully retrieved,
|
||
* context is cancelled by the caller or an error response is received.
|
||
*
|
||
* If the bundle argument is true, the returned value also contains the CA (issuer)
|
||
* certificate chain.
|
||
*
|
||
* FetchCert returns an error if the CA's response or chain was unreasonably large.
|
||
* Callers are encouraged to parse the returned value to ensure the certificate is valid
|
||
* and has expected features.
|
||
*/
|
||
fetchCert(ctx: context.Context, url: string, bundle: boolean): Array<string>
|
||
}
|
||
interface Client {
|
||
/**
|
||
* RevokeCert revokes a previously issued certificate cert, provided in DER format.
|
||
*
|
||
* The key argument, used to sign the request, must be authorized
|
||
* to revoke the certificate. It's up to the CA to decide which keys are authorized.
|
||
* For instance, the key pair of the certificate may be authorized.
|
||
* If the key is nil, c.Key is used instead.
|
||
*/
|
||
revokeCert(ctx: context.Context, key: crypto.Signer, cert: string, reason: CRLReasonCode): void
|
||
}
|
||
interface Client {
|
||
/**
|
||
* Register creates a new account with the CA using c.Key.
|
||
* It returns the registered account. The account acct is not modified.
|
||
*
|
||
* The registration may require the caller to agree to the CA's Terms of Service (TOS).
|
||
* If so, and the account has not indicated the acceptance of the terms (see Account for details),
|
||
* Register calls prompt with a TOS URL provided by the CA. Prompt should report
|
||
* whether the caller agrees to the terms. To always accept the terms, the caller can use AcceptTOS.
|
||
*
|
||
* When interfacing with an RFC-compliant CA, non-RFC 8555 fields of acct are ignored
|
||
* and prompt is called if Directory's Terms field is non-zero.
|
||
* Also see Error's Instance field for when a CA requires already registered accounts to agree
|
||
* to an updated Terms of Service.
|
||
*/
|
||
register(ctx: context.Context, acct: Account, prompt: (tosURL: string) => boolean): (Account | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* GetReg retrieves an existing account associated with c.Key.
|
||
*
|
||
* The url argument is a legacy artifact of the pre-RFC 8555 API
|
||
* and is ignored.
|
||
*/
|
||
getReg(ctx: context.Context, url: string): (Account | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* UpdateReg updates an existing registration.
|
||
* It returns an updated account copy. The provided account is not modified.
|
||
*
|
||
* The account's URI is ignored and the account URL associated with
|
||
* c.Key is used instead.
|
||
*/
|
||
updateReg(ctx: context.Context, acct: Account): (Account | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* AccountKeyRollover attempts to transition a client's account key to a new key.
|
||
* On success client's Key is updated which is not concurrency safe.
|
||
* On failure an error will be returned.
|
||
* The new key is already registered with the ACME provider if the following is true:
|
||
* ```
|
||
* - error is of type acme.Error
|
||
* - StatusCode should be 409 (Conflict)
|
||
* - Location header will have the KID of the associated account
|
||
* ```
|
||
*
|
||
* More about account key rollover can be found at
|
||
* https://tools.ietf.org/html/rfc8555#section-7.3.5.
|
||
*/
|
||
accountKeyRollover(ctx: context.Context, newKey: crypto.Signer): void
|
||
}
|
||
interface Client {
|
||
/**
|
||
* Authorize performs the initial step in the pre-authorization flow,
|
||
* as opposed to order-based flow.
|
||
* The caller will then need to choose from and perform a set of returned
|
||
* challenges using c.Accept in order to successfully complete authorization.
|
||
*
|
||
* Once complete, the caller can use AuthorizeOrder which the CA
|
||
* should provision with the already satisfied authorization.
|
||
* For pre-RFC CAs, the caller can proceed directly to requesting a certificate
|
||
* using CreateCert method.
|
||
*
|
||
* If an authorization has been previously granted, the CA may return
|
||
* a valid authorization which has its Status field set to StatusValid.
|
||
*
|
||
* More about pre-authorization can be found at
|
||
* https://tools.ietf.org/html/rfc8555#section-7.4.1.
|
||
*/
|
||
authorize(ctx: context.Context, domain: string): (Authorization | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* AuthorizeIP is the same as Authorize but requests IP address authorization.
|
||
* Clients which successfully obtain such authorization may request to issue
|
||
* a certificate for IP addresses.
|
||
*
|
||
* See the ACME spec extension for more details about IP address identifiers:
|
||
* https://tools.ietf.org/html/draft-ietf-acme-ip.
|
||
*/
|
||
authorizeIP(ctx: context.Context, ipaddr: string): (Authorization | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* GetAuthorization retrieves an authorization identified by the given URL.
|
||
*
|
||
* If a caller needs to poll an authorization until its status is final,
|
||
* see the WaitAuthorization method.
|
||
*/
|
||
getAuthorization(ctx: context.Context, url: string): (Authorization | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* RevokeAuthorization relinquishes an existing authorization identified
|
||
* by the given URL.
|
||
* The url argument is an Authorization.URI value.
|
||
*
|
||
* If successful, the caller will be required to obtain a new authorization
|
||
* using the Authorize or AuthorizeOrder methods before being able to request
|
||
* a new certificate for the domain associated with the authorization.
|
||
*
|
||
* It does not revoke existing certificates.
|
||
*/
|
||
revokeAuthorization(ctx: context.Context, url: string): void
|
||
}
|
||
interface Client {
|
||
/**
|
||
* WaitAuthorization polls an authorization at the given URL
|
||
* until it is in one of the final states, StatusValid or StatusInvalid,
|
||
* the ACME CA responded with a 4xx error code, or the context is done.
|
||
*
|
||
* It returns a non-nil Authorization only if its Status is StatusValid.
|
||
* In all other cases WaitAuthorization returns an error.
|
||
* If the Status is StatusInvalid, the returned error is of type *AuthorizationError.
|
||
*/
|
||
waitAuthorization(ctx: context.Context, url: string): (Authorization | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* GetChallenge retrieves the current status of an challenge.
|
||
*
|
||
* A client typically polls a challenge status using this method.
|
||
*/
|
||
getChallenge(ctx: context.Context, url: string): (Challenge | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* Accept informs the server that the client accepts one of its challenges
|
||
* previously obtained with c.Authorize.
|
||
*
|
||
* The server will then perform the validation asynchronously.
|
||
*/
|
||
accept(ctx: context.Context, chal: Challenge): (Challenge | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* DNS01ChallengeRecord returns a DNS record value for a dns-01 challenge response.
|
||
* A TXT record containing the returned value must be provisioned under
|
||
* "_acme-challenge" name of the domain being validated.
|
||
*
|
||
* The token argument is a Challenge.Token value.
|
||
*/
|
||
dns01ChallengeRecord(token: string): string
|
||
}
|
||
interface Client {
|
||
/**
|
||
* HTTP01ChallengeResponse returns the response for an http-01 challenge.
|
||
* Servers should respond with the value to HTTP requests at the URL path
|
||
* provided by HTTP01ChallengePath to validate the challenge and prove control
|
||
* over a domain name.
|
||
*
|
||
* The token argument is a Challenge.Token value.
|
||
*/
|
||
http01ChallengeResponse(token: string): string
|
||
}
|
||
interface Client {
|
||
/**
|
||
* HTTP01ChallengePath returns the URL path at which the response for an http-01 challenge
|
||
* should be provided by the servers.
|
||
* The response value can be obtained with HTTP01ChallengeResponse.
|
||
*
|
||
* The token argument is a Challenge.Token value.
|
||
*/
|
||
http01ChallengePath(token: string): string
|
||
}
|
||
interface Client {
|
||
/**
|
||
* TLSSNI01ChallengeCert creates a certificate for TLS-SNI-01 challenge response.
|
||
*
|
||
* Deprecated: This challenge type is unused in both draft-02 and RFC versions of the ACME spec.
|
||
*/
|
||
tlssni01ChallengeCert(token: string, ...opt: CertOption[]): [tls.Certificate, string]
|
||
}
|
||
interface Client {
|
||
/**
|
||
* TLSSNI02ChallengeCert creates a certificate for TLS-SNI-02 challenge response.
|
||
*
|
||
* Deprecated: This challenge type is unused in both draft-02 and RFC versions of the ACME spec.
|
||
*/
|
||
tlssni02ChallengeCert(token: string, ...opt: CertOption[]): [tls.Certificate, string]
|
||
}
|
||
interface Client {
|
||
/**
|
||
* TLSALPN01ChallengeCert creates a certificate for TLS-ALPN-01 challenge response.
|
||
* Servers can present the certificate to validate the challenge and prove control
|
||
* over a domain name. For more details on TLS-ALPN-01 see
|
||
* https://tools.ietf.org/html/draft-shoemaker-acme-tls-alpn-00#section-3
|
||
*
|
||
* The token argument is a Challenge.Token value.
|
||
* If a WithKey option is provided, its private part signs the returned cert,
|
||
* and the public part is used to specify the signee.
|
||
* If no WithKey option is provided, a new ECDSA key is generated using P-256 curve.
|
||
*
|
||
* The returned certificate is valid for the next 24 hours and must be presented only when
|
||
* the server name in the TLS ClientHello matches the domain, and the special acme-tls/1 ALPN protocol
|
||
* has been specified.
|
||
*/
|
||
tlsalpn01ChallengeCert(token: string, ...opt: CertOption[]): tls.Certificate
|
||
}
|
||
interface Client {
|
||
/**
|
||
* DeactivateReg permanently disables an existing account associated with c.Key.
|
||
* A deactivated account can no longer request certificate issuance or access
|
||
* resources related to the account, such as orders or authorizations.
|
||
*
|
||
* It only works with CAs implementing RFC 8555.
|
||
*/
|
||
deactivateReg(ctx: context.Context): void
|
||
}
|
||
interface Client {
|
||
/**
|
||
* AuthorizeOrder initiates the order-based application for certificate issuance,
|
||
* as opposed to pre-authorization in Authorize.
|
||
* It is only supported by CAs implementing RFC 8555.
|
||
*
|
||
* The caller then needs to fetch each authorization with GetAuthorization,
|
||
* identify those with StatusPending status and fulfill a challenge using Accept.
|
||
* Once all authorizations are satisfied, the caller will typically want to poll
|
||
* order status using WaitOrder until it's in StatusReady state.
|
||
* To finalize the order and obtain a certificate, the caller submits a CSR with CreateOrderCert.
|
||
*/
|
||
authorizeOrder(ctx: context.Context, id: Array<AuthzID>, ...opt: OrderOption[]): (Order | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* GetOrder retrives an order identified by the given URL.
|
||
* For orders created with AuthorizeOrder, the url value is Order.URI.
|
||
*
|
||
* If a caller needs to poll an order until its status is final,
|
||
* see the WaitOrder method.
|
||
*/
|
||
getOrder(ctx: context.Context, url: string): (Order | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* WaitOrder polls an order from the given URL until it is in one of the final states,
|
||
* StatusReady, StatusValid or StatusInvalid, the CA responded with a non-retryable error
|
||
* or the context is done.
|
||
*
|
||
* It returns a non-nil Order only if its Status is StatusReady or StatusValid.
|
||
* In all other cases WaitOrder returns an error.
|
||
* If the Status is StatusInvalid, the returned error is of type *OrderError.
|
||
*/
|
||
waitOrder(ctx: context.Context, url: string): (Order | undefined)
|
||
}
|
||
interface Client {
|
||
/**
|
||
* CreateOrderCert submits the CSR (Certificate Signing Request) to a CA at the specified URL.
|
||
* The URL is the FinalizeURL field of an Order created with AuthorizeOrder.
|
||
*
|
||
* If the bundle argument is true, the returned value also contain the CA (issuer)
|
||
* certificate chain. Otherwise, only a leaf certificate is returned.
|
||
* The returned URL can be used to re-fetch the certificate using FetchCert.
|
||
*
|
||
* This method is only supported by CAs implementing RFC 8555. See CreateCert for pre-RFC CAs.
|
||
*
|
||
* CreateOrderCert returns an error if the CA's response is unreasonably large.
|
||
* Callers are encouraged to parse the returned value to ensure the certificate is valid and has the expected features.
|
||
*/
|
||
createOrderCert(ctx: context.Context, url: string, csr: string, bundle: boolean): [Array<string>, string]
|
||
}
|
||
interface Client {
|
||
/**
|
||
* ListCertAlternates retrieves any alternate certificate chain URLs for the
|
||
* given certificate chain URL. These alternate URLs can be passed to FetchCert
|
||
* in order to retrieve the alternate certificate chains.
|
||
*
|
||
* If there are no alternate issuer certificate chains, a nil slice will be
|
||
* returned.
|
||
*/
|
||
listCertAlternates(ctx: context.Context, url: string): Array<string>
|
||
}
|
||
/**
|
||
* ExternalAccountBinding contains the data needed to form a request with
|
||
* an external account binding.
|
||
* See https://tools.ietf.org/html/rfc8555#section-7.3.4 for more details.
|
||
*/
|
||
interface ExternalAccountBinding {
|
||
/**
|
||
* KID is the Key ID of the symmetric MAC key that the CA provides to
|
||
* identify an external account from ACME.
|
||
*/
|
||
kid: string
|
||
/**
|
||
* Key is the bytes of the symmetric key that the CA provides to identify
|
||
* the account. Key must correspond to the KID.
|
||
*/
|
||
key: string
|
||
}
|
||
interface ExternalAccountBinding {
|
||
string(): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package autocert provides automatic access to certificates from Let's Encrypt
|
||
* and any other ACME-based CA.
|
||
*
|
||
* This package is a work in progress and makes no API stability promises.
|
||
*/
|
||
namespace autocert {
|
||
// @ts-ignore
|
||
import mathrand = rand
|
||
/**
|
||
* HostPolicy specifies which host names the Manager is allowed to respond to.
|
||
* It returns a non-nil error if the host should be rejected.
|
||
* The returned error is accessible via tls.Conn.Handshake and its callers.
|
||
* See Manager's HostPolicy field and GetCertificate method docs for more details.
|
||
*/
|
||
interface HostPolicy {(ctx: context.Context, host: string): void }
|
||
/**
|
||
* Cache is used by Manager to store and retrieve previously obtained certificates
|
||
* and other account data as opaque blobs.
|
||
*
|
||
* Cache implementations should not rely on the key naming pattern. Keys can
|
||
* include any printable ASCII characters, except the following: \/:*?"<>|
|
||
*/
|
||
interface Cache {
|
||
/**
|
||
* Get returns a certificate data for the specified key.
|
||
* If there's no such key, Get returns ErrCacheMiss.
|
||
*/
|
||
get(ctx: context.Context, key: string): string
|
||
/**
|
||
* Put stores the data in the cache under the specified key.
|
||
* Underlying implementations may use any data storage format,
|
||
* as long as the reverse operation, Get, results in the original data.
|
||
*/
|
||
put(ctx: context.Context, key: string, data: string): void
|
||
/**
|
||
* Delete removes a certificate data from the cache under the specified key.
|
||
* If there's no such key in the cache, Delete returns nil.
|
||
*/
|
||
delete(ctx: context.Context, key: string): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package driver defines interfaces to be implemented by database
|
||
* drivers as used by package sql.
|
||
*
|
||
* Most code should use package sql.
|
||
*
|
||
* The driver interface has evolved over time. Drivers should implement
|
||
* Connector and DriverContext interfaces.
|
||
* The Connector.Connect and Driver.Open methods should never return ErrBadConn.
|
||
* ErrBadConn should only be returned from Validator, SessionResetter, or
|
||
* a query method if the connection is already in an invalid (e.g. closed) state.
|
||
*
|
||
* All Conn implementations should implement the following interfaces:
|
||
* Pinger, SessionResetter, and Validator.
|
||
*
|
||
* If named parameters or context are supported, the driver's Conn should implement:
|
||
* ExecerContext, QueryerContext, ConnPrepareContext, and ConnBeginTx.
|
||
*
|
||
* To support custom data types, implement NamedValueChecker. NamedValueChecker
|
||
* also allows queries to accept per-query options as a parameter by returning
|
||
* ErrRemoveArgument from CheckNamedValue.
|
||
*
|
||
* If multiple result sets are supported, Rows should implement RowsNextResultSet.
|
||
* If the driver knows how to describe the types present in the returned result
|
||
* it should implement the following interfaces: RowsColumnTypeScanType,
|
||
* RowsColumnTypeDatabaseTypeName, RowsColumnTypeLength, RowsColumnTypeNullable,
|
||
* and RowsColumnTypePrecisionScale. A given row value may also return a Rows
|
||
* type, which may represent a database cursor value.
|
||
*
|
||
* Before a connection is returned to the connection pool after use, IsValid is
|
||
* called if implemented. Before a connection is reused for another query,
|
||
* ResetSession is called if implemented. If a connection is never returned to the
|
||
* connection pool but immediately reused, then ResetSession is called prior to
|
||
* reuse but IsValid is not called.
|
||
*/
|
||
namespace driver {
|
||
/**
|
||
* Stmt is a prepared statement. It is bound to a Conn and not
|
||
* used by multiple goroutines concurrently.
|
||
*/
|
||
interface Stmt {
|
||
/**
|
||
* Close closes the statement.
|
||
*
|
||
* As of Go 1.1, a Stmt will not be closed if it's in use
|
||
* by any queries.
|
||
*
|
||
* Drivers must ensure all network calls made by Close
|
||
* do not block indefinitely (e.g. apply a timeout).
|
||
*/
|
||
close(): void
|
||
/**
|
||
* NumInput returns the number of placeholder parameters.
|
||
*
|
||
* If NumInput returns >= 0, the sql package will sanity check
|
||
* argument counts from callers and return errors to the caller
|
||
* before the statement's Exec or Query methods are called.
|
||
*
|
||
* NumInput may also return -1, if the driver doesn't know
|
||
* its number of placeholders. In that case, the sql package
|
||
* will not sanity check Exec or Query argument counts.
|
||
*/
|
||
numInput(): number
|
||
/**
|
||
* Exec executes a query that doesn't return rows, such
|
||
* as an INSERT or UPDATE.
|
||
*
|
||
* Deprecated: Drivers should implement StmtExecContext instead (or additionally).
|
||
*/
|
||
exec(args: Array<Value>): Result
|
||
/**
|
||
* Query executes a query that may return rows, such as a
|
||
* SELECT.
|
||
*
|
||
* Deprecated: Drivers should implement StmtQueryContext instead (or additionally).
|
||
*/
|
||
query(args: Array<Value>): Rows
|
||
}
|
||
/**
|
||
* Tx is a transaction.
|
||
*/
|
||
interface Tx {
|
||
commit(): void
|
||
rollback(): void
|
||
}
|
||
}
|
||
|
||
namespace subscriptions {
|
||
}
|
||
|
||
/**
|
||
* Package mail implements parsing of mail messages.
|
||
*
|
||
* For the most part, this package follows the syntax as specified by RFC 5322 and
|
||
* extended by RFC 6532.
|
||
* Notable divergences:
|
||
* ```
|
||
* - Obsolete address formats are not parsed, including addresses with
|
||
* embedded route information.
|
||
* - The full range of spacing (the CFWS syntax element) is not supported,
|
||
* such as breaking addresses across lines.
|
||
* - No unicode normalization is performed.
|
||
* - The special characters ()[]:;@\, are allowed to appear unquoted in names.
|
||
* ```
|
||
*/
|
||
namespace mail {
|
||
/**
|
||
* Address represents a single mail address.
|
||
* An address such as "Barry Gibbs <bg@example.com>" is represented
|
||
* as Address{Name: "Barry Gibbs", Address: "bg@example.com"}.
|
||
*/
|
||
interface Address {
|
||
name: string // Proper name; may be empty.
|
||
address: string // user@domain
|
||
}
|
||
interface Address {
|
||
/**
|
||
* String formats the address as a valid RFC 5322 address.
|
||
* If the address's name contains non-ASCII characters
|
||
* the name will be rendered according to RFC 2047.
|
||
*/
|
||
string(): string
|
||
}
|
||
}
|
||
|
||
namespace search {
|
||
}
|
||
|
||
/**
|
||
* Package flag implements command-line flag parsing.
|
||
*
|
||
* # Usage
|
||
*
|
||
* Define flags using flag.String(), Bool(), Int(), etc.
|
||
*
|
||
* This declares an integer flag, -n, stored in the pointer nFlag, with type *int:
|
||
*
|
||
* ```
|
||
* import "flag"
|
||
* var nFlag = flag.Int("n", 1234, "help message for flag n")
|
||
* ```
|
||
*
|
||
* If you like, you can bind the flag to a variable using the Var() functions.
|
||
*
|
||
* ```
|
||
* var flagvar int
|
||
* func init() {
|
||
* flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
|
||
* }
|
||
* ```
|
||
*
|
||
* Or you can create custom flags that satisfy the Value interface (with
|
||
* pointer receivers) and couple them to flag parsing by
|
||
*
|
||
* ```
|
||
* flag.Var(&flagVal, "name", "help message for flagname")
|
||
* ```
|
||
*
|
||
* For such flags, the default value is just the initial value of the variable.
|
||
*
|
||
* After all flags are defined, call
|
||
*
|
||
* ```
|
||
* flag.Parse()
|
||
* ```
|
||
*
|
||
* to parse the command line into the defined flags.
|
||
*
|
||
* Flags may then be used directly. If you're using the flags themselves,
|
||
* they are all pointers; if you bind to variables, they're values.
|
||
*
|
||
* ```
|
||
* fmt.Println("ip has value ", *ip)
|
||
* fmt.Println("flagvar has value ", flagvar)
|
||
* ```
|
||
*
|
||
* After parsing, the arguments following the flags are available as the
|
||
* slice flag.Args() or individually as flag.Arg(i).
|
||
* The arguments are indexed from 0 through flag.NArg()-1.
|
||
*
|
||
* # Command line flag syntax
|
||
*
|
||
* The following forms are permitted:
|
||
*
|
||
* ```
|
||
* -flag
|
||
* --flag // double dashes are also permitted
|
||
* -flag=x
|
||
* -flag x // non-boolean flags only
|
||
* ```
|
||
*
|
||
* One or two dashes may be used; they are equivalent.
|
||
* The last form is not permitted for boolean flags because the
|
||
* meaning of the command
|
||
*
|
||
* ```
|
||
* cmd -x *
|
||
* ```
|
||
*
|
||
* where * is a Unix shell wildcard, will change if there is a file
|
||
* called 0, false, etc. You must use the -flag=false form to turn
|
||
* off a boolean flag.
|
||
*
|
||
* Flag parsing stops just before the first non-flag argument
|
||
* ("-" is a non-flag argument) or after the terminator "--".
|
||
*
|
||
* Integer flags accept 1234, 0664, 0x1234 and may be negative.
|
||
* Boolean flags may be:
|
||
*
|
||
* ```
|
||
* 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False
|
||
* ```
|
||
*
|
||
* Duration flags accept any input valid for time.ParseDuration.
|
||
*
|
||
* The default set of command-line flags is controlled by
|
||
* top-level functions. The FlagSet type allows one to define
|
||
* independent sets of flags, such as to implement subcommands
|
||
* in a command-line interface. The methods of FlagSet are
|
||
* analogous to the top-level functions for the command-line
|
||
* flag set.
|
||
*/
|
||
namespace flag {
|
||
/**
|
||
* Value is the interface to the dynamic value stored in a flag.
|
||
* (The default value is represented as a string.)
|
||
*
|
||
* If a Value has an IsBoolFlag() bool method returning true,
|
||
* the command-line parser makes -name equivalent to -name=true
|
||
* rather than using the next command-line argument.
|
||
*
|
||
* Set is called once, in command line order, for each flag present.
|
||
* The flag package may call the String method with a zero-valued receiver,
|
||
* such as a nil pointer.
|
||
*/
|
||
interface Value {
|
||
string(): string
|
||
set(_arg0: string): void
|
||
}
|
||
/**
|
||
* ErrorHandling defines how FlagSet.Parse behaves if the parse fails.
|
||
*/
|
||
interface ErrorHandling extends Number{}
|
||
}
|
||
|
||
/**
|
||
* Package reflect implements run-time reflection, allowing a program to
|
||
* manipulate objects with arbitrary types. The typical use is to take a value
|
||
* with static type interface{} and extract its dynamic type information by
|
||
* calling TypeOf, which returns a Type.
|
||
*
|
||
* A call to ValueOf returns a Value representing the run-time data.
|
||
* Zero takes a Type and returns a Value representing a zero value
|
||
* for that type.
|
||
*
|
||
* See "The Laws of Reflection" for an introduction to reflection in Go:
|
||
* https://golang.org/doc/articles/laws_of_reflection.html
|
||
*/
|
||
namespace reflect {
|
||
/**
|
||
* A StructTag is the tag string in a struct field.
|
||
*
|
||
* By convention, tag strings are a concatenation of
|
||
* optionally space-separated key:"value" pairs.
|
||
* Each key is a non-empty string consisting of non-control
|
||
* characters other than space (U+0020 ' '), quote (U+0022 '"'),
|
||
* and colon (U+003A ':'). Each value is quoted using U+0022 '"'
|
||
* characters and Go string literal syntax.
|
||
*/
|
||
interface StructTag extends String{}
|
||
interface StructTag {
|
||
/**
|
||
* Get returns the value associated with key in the tag string.
|
||
* If there is no such key in the tag, Get returns the empty string.
|
||
* If the tag does not have the conventional format, the value
|
||
* returned by Get is unspecified. To determine whether a tag is
|
||
* explicitly set to the empty string, use Lookup.
|
||
*/
|
||
get(key: string): string
|
||
}
|
||
interface StructTag {
|
||
/**
|
||
* Lookup returns the value associated with key in the tag string.
|
||
* If the key is present in the tag the value (which may be empty)
|
||
* is returned. Otherwise the returned value will be the empty string.
|
||
* The ok return value reports whether the value was explicitly set in
|
||
* the tag string. If the tag does not have the conventional format,
|
||
* the value returned by Lookup is unspecified.
|
||
*/
|
||
lookup(key: string): [string, boolean]
|
||
}
|
||
/**
|
||
* Value is the reflection interface to a Go value.
|
||
*
|
||
* Not all methods apply to all kinds of values. Restrictions,
|
||
* if any, are noted in the documentation for each method.
|
||
* Use the Kind method to find out the kind of value before
|
||
* calling kind-specific methods. Calling a method
|
||
* inappropriate to the kind of type causes a run time panic.
|
||
*
|
||
* The zero Value represents no value.
|
||
* Its IsValid method returns false, its Kind method returns Invalid,
|
||
* its String method returns "<invalid Value>", and all other methods panic.
|
||
* Most functions and methods never return an invalid value.
|
||
* If one does, its documentation states the conditions explicitly.
|
||
*
|
||
* A Value can be used concurrently by multiple goroutines provided that
|
||
* the underlying Go value can be used concurrently for the equivalent
|
||
* direct operations.
|
||
*
|
||
* To compare two Values, compare the results of the Interface method.
|
||
* Using == on two Values does not compare the underlying values
|
||
* they represent.
|
||
*/
|
||
type _subGvkYZ = flag
|
||
interface Value extends _subGvkYZ {
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Addr returns a pointer value representing the address of v.
|
||
* It panics if CanAddr() returns false.
|
||
* Addr is typically used to obtain a pointer to a struct field
|
||
* or slice element in order to call a method that requires a
|
||
* pointer receiver.
|
||
*/
|
||
addr(): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Bool returns v's underlying value.
|
||
* It panics if v's kind is not Bool.
|
||
*/
|
||
bool(): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Bytes returns v's underlying value.
|
||
* It panics if v's underlying value is not a slice of bytes or
|
||
* an addressable array of bytes.
|
||
*/
|
||
bytes(): string
|
||
}
|
||
interface Value {
|
||
/**
|
||
* CanAddr reports whether the value's address can be obtained with Addr.
|
||
* Such values are called addressable. A value is addressable if it is
|
||
* an element of a slice, an element of an addressable array,
|
||
* a field of an addressable struct, or the result of dereferencing a pointer.
|
||
* If CanAddr returns false, calling Addr will panic.
|
||
*/
|
||
canAddr(): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* CanSet reports whether the value of v can be changed.
|
||
* A Value can be changed only if it is addressable and was not
|
||
* obtained by the use of unexported struct fields.
|
||
* If CanSet returns false, calling Set or any type-specific
|
||
* setter (e.g., SetBool, SetInt) will panic.
|
||
*/
|
||
canSet(): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Call calls the function v with the input arguments in.
|
||
* For example, if len(in) == 3, v.Call(in) represents the Go call v(in[0], in[1], in[2]).
|
||
* Call panics if v's Kind is not Func.
|
||
* It returns the output results as Values.
|
||
* As in Go, each input argument must be assignable to the
|
||
* type of the function's corresponding input parameter.
|
||
* If v is a variadic function, Call creates the variadic slice parameter
|
||
* itself, copying in the corresponding values.
|
||
*/
|
||
call(_arg0: Array<Value>): Array<Value>
|
||
}
|
||
interface Value {
|
||
/**
|
||
* CallSlice calls the variadic function v with the input arguments in,
|
||
* assigning the slice in[len(in)-1] to v's final variadic argument.
|
||
* For example, if len(in) == 3, v.CallSlice(in) represents the Go call v(in[0], in[1], in[2]...).
|
||
* CallSlice panics if v's Kind is not Func or if v is not variadic.
|
||
* It returns the output results as Values.
|
||
* As in Go, each input argument must be assignable to the
|
||
* type of the function's corresponding input parameter.
|
||
*/
|
||
callSlice(_arg0: Array<Value>): Array<Value>
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Cap returns v's capacity.
|
||
* It panics if v's Kind is not Array, Chan, Slice or pointer to Array.
|
||
*/
|
||
cap(): number
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Close closes the channel v.
|
||
* It panics if v's Kind is not Chan.
|
||
*/
|
||
close(): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* CanComplex reports whether Complex can be used without panicking.
|
||
*/
|
||
canComplex(): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Complex returns v's underlying value, as a complex128.
|
||
* It panics if v's Kind is not Complex64 or Complex128
|
||
*/
|
||
complex(): number
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Elem returns the value that the interface v contains
|
||
* or that the pointer v points to.
|
||
* It panics if v's Kind is not Interface or Pointer.
|
||
* It returns the zero Value if v is nil.
|
||
*/
|
||
elem(): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Field returns the i'th field of the struct v.
|
||
* It panics if v's Kind is not Struct or i is out of range.
|
||
*/
|
||
field(i: number): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* FieldByIndex returns the nested field corresponding to index.
|
||
* It panics if evaluation requires stepping through a nil
|
||
* pointer or a field that is not a struct.
|
||
*/
|
||
fieldByIndex(index: Array<number>): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* FieldByIndexErr returns the nested field corresponding to index.
|
||
* It returns an error if evaluation requires stepping through a nil
|
||
* pointer, but panics if it must step through a field that
|
||
* is not a struct.
|
||
*/
|
||
fieldByIndexErr(index: Array<number>): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* FieldByName returns the struct field with the given name.
|
||
* It returns the zero Value if no field was found.
|
||
* It panics if v's Kind is not struct.
|
||
*/
|
||
fieldByName(name: string): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* FieldByNameFunc returns the struct field with a name
|
||
* that satisfies the match function.
|
||
* It panics if v's Kind is not struct.
|
||
* It returns the zero Value if no field was found.
|
||
*/
|
||
fieldByNameFunc(match: (_arg0: string) => boolean): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* CanFloat reports whether Float can be used without panicking.
|
||
*/
|
||
canFloat(): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Float returns v's underlying value, as a float64.
|
||
* It panics if v's Kind is not Float32 or Float64
|
||
*/
|
||
float(): number
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Index returns v's i'th element.
|
||
* It panics if v's Kind is not Array, Slice, or String or i is out of range.
|
||
*/
|
||
index(i: number): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* CanInt reports whether Int can be used without panicking.
|
||
*/
|
||
canInt(): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Int returns v's underlying value, as an int64.
|
||
* It panics if v's Kind is not Int, Int8, Int16, Int32, or Int64.
|
||
*/
|
||
int(): number
|
||
}
|
||
interface Value {
|
||
/**
|
||
* CanInterface reports whether Interface can be used without panicking.
|
||
*/
|
||
canInterface(): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Interface returns v's current value as an interface{}.
|
||
* It is equivalent to:
|
||
*
|
||
* ```
|
||
* var i interface{} = (v's underlying value)
|
||
* ```
|
||
*
|
||
* It panics if the Value was obtained by accessing
|
||
* unexported struct fields.
|
||
*/
|
||
interface(): any
|
||
}
|
||
interface Value {
|
||
/**
|
||
* InterfaceData returns a pair of unspecified uintptr values.
|
||
* It panics if v's Kind is not Interface.
|
||
*
|
||
* In earlier versions of Go, this function returned the interface's
|
||
* value as a uintptr pair. As of Go 1.4, the implementation of
|
||
* interface values precludes any defined use of InterfaceData.
|
||
*
|
||
* Deprecated: The memory representation of interface values is not
|
||
* compatible with InterfaceData.
|
||
*/
|
||
interfaceData(): Array<number>
|
||
}
|
||
interface Value {
|
||
/**
|
||
* IsNil reports whether its argument v is nil. The argument must be
|
||
* a chan, func, interface, map, pointer, or slice value; if it is
|
||
* not, IsNil panics. Note that IsNil is not always equivalent to a
|
||
* regular comparison with nil in Go. For example, if v was created
|
||
* by calling ValueOf with an uninitialized interface variable i,
|
||
* i==nil will be true but v.IsNil will panic as v will be the zero
|
||
* Value.
|
||
*/
|
||
isNil(): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* IsValid reports whether v represents a value.
|
||
* It returns false if v is the zero Value.
|
||
* If IsValid returns false, all other methods except String panic.
|
||
* Most functions and methods never return an invalid Value.
|
||
* If one does, its documentation states the conditions explicitly.
|
||
*/
|
||
isValid(): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* IsZero reports whether v is the zero value for its type.
|
||
* It panics if the argument is invalid.
|
||
*/
|
||
isZero(): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Kind returns v's Kind.
|
||
* If v is the zero Value (IsValid returns false), Kind returns Invalid.
|
||
*/
|
||
kind(): Kind
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Len returns v's length.
|
||
* It panics if v's Kind is not Array, Chan, Map, Slice, String, or pointer to Array.
|
||
*/
|
||
len(): number
|
||
}
|
||
interface Value {
|
||
/**
|
||
* MapIndex returns the value associated with key in the map v.
|
||
* It panics if v's Kind is not Map.
|
||
* It returns the zero Value if key is not found in the map or if v represents a nil map.
|
||
* As in Go, the key's value must be assignable to the map's key type.
|
||
*/
|
||
mapIndex(key: Value): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* MapKeys returns a slice containing all the keys present in the map,
|
||
* in unspecified order.
|
||
* It panics if v's Kind is not Map.
|
||
* It returns an empty slice if v represents a nil map.
|
||
*/
|
||
mapKeys(): Array<Value>
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetIterKey assigns to v the key of iter's current map entry.
|
||
* It is equivalent to v.Set(iter.Key()), but it avoids allocating a new Value.
|
||
* As in Go, the key must be assignable to v's type.
|
||
*/
|
||
setIterKey(iter: MapIter): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetIterValue assigns to v the value of iter's current map entry.
|
||
* It is equivalent to v.Set(iter.Value()), but it avoids allocating a new Value.
|
||
* As in Go, the value must be assignable to v's type.
|
||
*/
|
||
setIterValue(iter: MapIter): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* MapRange returns a range iterator for a map.
|
||
* It panics if v's Kind is not Map.
|
||
*
|
||
* Call Next to advance the iterator, and Key/Value to access each entry.
|
||
* Next returns false when the iterator is exhausted.
|
||
* MapRange follows the same iteration semantics as a range statement.
|
||
*
|
||
* Example:
|
||
*
|
||
* ```
|
||
* iter := reflect.ValueOf(m).MapRange()
|
||
* for iter.Next() {
|
||
* k := iter.Key()
|
||
* v := iter.Value()
|
||
* ...
|
||
* }
|
||
* ```
|
||
*/
|
||
mapRange(): (MapIter | undefined)
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Method returns a function value corresponding to v's i'th method.
|
||
* The arguments to a Call on the returned function should not include
|
||
* a receiver; the returned function will always use v as the receiver.
|
||
* Method panics if i is out of range or if v is a nil interface value.
|
||
*/
|
||
method(i: number): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* NumMethod returns the number of methods in the value's method set.
|
||
*
|
||
* For a non-interface type, it returns the number of exported methods.
|
||
*
|
||
* For an interface type, it returns the number of exported and unexported methods.
|
||
*/
|
||
numMethod(): number
|
||
}
|
||
interface Value {
|
||
/**
|
||
* MethodByName returns a function value corresponding to the method
|
||
* of v with the given name.
|
||
* The arguments to a Call on the returned function should not include
|
||
* a receiver; the returned function will always use v as the receiver.
|
||
* It returns the zero Value if no method was found.
|
||
*/
|
||
methodByName(name: string): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* NumField returns the number of fields in the struct v.
|
||
* It panics if v's Kind is not Struct.
|
||
*/
|
||
numField(): number
|
||
}
|
||
interface Value {
|
||
/**
|
||
* OverflowComplex reports whether the complex128 x cannot be represented by v's type.
|
||
* It panics if v's Kind is not Complex64 or Complex128.
|
||
*/
|
||
overflowComplex(x: number): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* OverflowFloat reports whether the float64 x cannot be represented by v's type.
|
||
* It panics if v's Kind is not Float32 or Float64.
|
||
*/
|
||
overflowFloat(x: number): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* OverflowInt reports whether the int64 x cannot be represented by v's type.
|
||
* It panics if v's Kind is not Int, Int8, Int16, Int32, or Int64.
|
||
*/
|
||
overflowInt(x: number): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* OverflowUint reports whether the uint64 x cannot be represented by v's type.
|
||
* It panics if v's Kind is not Uint, Uintptr, Uint8, Uint16, Uint32, or Uint64.
|
||
*/
|
||
overflowUint(x: number): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Pointer returns v's value as a uintptr.
|
||
* It returns uintptr instead of unsafe.Pointer so that
|
||
* code using reflect cannot obtain unsafe.Pointers
|
||
* without importing the unsafe package explicitly.
|
||
* It panics if v's Kind is not Chan, Func, Map, Pointer, Slice, or UnsafePointer.
|
||
*
|
||
* If v's Kind is Func, the returned pointer is an underlying
|
||
* code pointer, but not necessarily enough to identify a
|
||
* single function uniquely. The only guarantee is that the
|
||
* result is zero if and only if v is a nil func Value.
|
||
*
|
||
* If v's Kind is Slice, the returned pointer is to the first
|
||
* element of the slice. If the slice is nil the returned value
|
||
* is 0. If the slice is empty but non-nil the return value is non-zero.
|
||
*
|
||
* It's preferred to use uintptr(Value.UnsafePointer()) to get the equivalent result.
|
||
*/
|
||
pointer(): number
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Recv receives and returns a value from the channel v.
|
||
* It panics if v's Kind is not Chan.
|
||
* The receive blocks until a value is ready.
|
||
* The boolean value ok is true if the value x corresponds to a send
|
||
* on the channel, false if it is a zero value received because the channel is closed.
|
||
*/
|
||
recv(): [Value, boolean]
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Send sends x on the channel v.
|
||
* It panics if v's kind is not Chan or if x's type is not the same type as v's element type.
|
||
* As in Go, x's value must be assignable to the channel's element type.
|
||
*/
|
||
send(x: Value): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Set assigns x to the value v.
|
||
* It panics if CanSet returns false.
|
||
* As in Go, x's value must be assignable to v's type.
|
||
*/
|
||
set(x: Value): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetBool sets v's underlying value.
|
||
* It panics if v's Kind is not Bool or if CanSet() is false.
|
||
*/
|
||
setBool(x: boolean): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetBytes sets v's underlying value.
|
||
* It panics if v's underlying value is not a slice of bytes.
|
||
*/
|
||
setBytes(x: string): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetComplex sets v's underlying value to x.
|
||
* It panics if v's Kind is not Complex64 or Complex128, or if CanSet() is false.
|
||
*/
|
||
setComplex(x: number): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetFloat sets v's underlying value to x.
|
||
* It panics if v's Kind is not Float32 or Float64, or if CanSet() is false.
|
||
*/
|
||
setFloat(x: number): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetInt sets v's underlying value to x.
|
||
* It panics if v's Kind is not Int, Int8, Int16, Int32, or Int64, or if CanSet() is false.
|
||
*/
|
||
setInt(x: number): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetLen sets v's length to n.
|
||
* It panics if v's Kind is not Slice or if n is negative or
|
||
* greater than the capacity of the slice.
|
||
*/
|
||
setLen(n: number): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetCap sets v's capacity to n.
|
||
* It panics if v's Kind is not Slice or if n is smaller than the length or
|
||
* greater than the capacity of the slice.
|
||
*/
|
||
setCap(n: number): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetMapIndex sets the element associated with key in the map v to elem.
|
||
* It panics if v's Kind is not Map.
|
||
* If elem is the zero Value, SetMapIndex deletes the key from the map.
|
||
* Otherwise if v holds a nil map, SetMapIndex will panic.
|
||
* As in Go, key's elem must be assignable to the map's key type,
|
||
* and elem's value must be assignable to the map's elem type.
|
||
*/
|
||
setMapIndex(key: Value): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetUint sets v's underlying value to x.
|
||
* It panics if v's Kind is not Uint, Uintptr, Uint8, Uint16, Uint32, or Uint64, or if CanSet() is false.
|
||
*/
|
||
setUint(x: number): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetPointer sets the unsafe.Pointer value v to x.
|
||
* It panics if v's Kind is not UnsafePointer.
|
||
*/
|
||
setPointer(x: number): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* SetString sets v's underlying value to x.
|
||
* It panics if v's Kind is not String or if CanSet() is false.
|
||
*/
|
||
setString(x: string): void
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Slice returns v[i:j].
|
||
* It panics if v's Kind is not Array, Slice or String, or if v is an unaddressable array,
|
||
* or if the indexes are out of bounds.
|
||
*/
|
||
slice(i: number): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Slice3 is the 3-index form of the slice operation: it returns v[i:j:k].
|
||
* It panics if v's Kind is not Array or Slice, or if v is an unaddressable array,
|
||
* or if the indexes are out of bounds.
|
||
*/
|
||
slice3(i: number): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* String returns the string v's underlying value, as a string.
|
||
* String is a special case because of Go's String method convention.
|
||
* Unlike the other getters, it does not panic if v's Kind is not String.
|
||
* Instead, it returns a string of the form "<T value>" where T is v's type.
|
||
* The fmt package treats Values specially. It does not call their String
|
||
* method implicitly but instead prints the concrete values they hold.
|
||
*/
|
||
string(): string
|
||
}
|
||
interface Value {
|
||
/**
|
||
* TryRecv attempts to receive a value from the channel v but will not block.
|
||
* It panics if v's Kind is not Chan.
|
||
* If the receive delivers a value, x is the transferred value and ok is true.
|
||
* If the receive cannot finish without blocking, x is the zero Value and ok is false.
|
||
* If the channel is closed, x is the zero value for the channel's element type and ok is false.
|
||
*/
|
||
tryRecv(): [Value, boolean]
|
||
}
|
||
interface Value {
|
||
/**
|
||
* TrySend attempts to send x on the channel v but will not block.
|
||
* It panics if v's Kind is not Chan.
|
||
* It reports whether the value was sent.
|
||
* As in Go, x's value must be assignable to the channel's element type.
|
||
*/
|
||
trySend(x: Value): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Type returns v's type.
|
||
*/
|
||
type(): Type
|
||
}
|
||
interface Value {
|
||
/**
|
||
* CanUint reports whether Uint can be used without panicking.
|
||
*/
|
||
canUint(): boolean
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Uint returns v's underlying value, as a uint64.
|
||
* It panics if v's Kind is not Uint, Uintptr, Uint8, Uint16, Uint32, or Uint64.
|
||
*/
|
||
uint(): number
|
||
}
|
||
interface Value {
|
||
/**
|
||
* UnsafeAddr returns a pointer to v's data, as a uintptr.
|
||
* It is for advanced clients that also import the "unsafe" package.
|
||
* It panics if v is not addressable.
|
||
*
|
||
* It's preferred to use uintptr(Value.Addr().UnsafePointer()) to get the equivalent result.
|
||
*/
|
||
unsafeAddr(): number
|
||
}
|
||
interface Value {
|
||
/**
|
||
* UnsafePointer returns v's value as a unsafe.Pointer.
|
||
* It panics if v's Kind is not Chan, Func, Map, Pointer, Slice, or UnsafePointer.
|
||
*
|
||
* If v's Kind is Func, the returned pointer is an underlying
|
||
* code pointer, but not necessarily enough to identify a
|
||
* single function uniquely. The only guarantee is that the
|
||
* result is zero if and only if v is a nil func Value.
|
||
*
|
||
* If v's Kind is Slice, the returned pointer is to the first
|
||
* element of the slice. If the slice is nil the returned value
|
||
* is nil. If the slice is empty but non-nil the return value is non-nil.
|
||
*/
|
||
unsafePointer(): number
|
||
}
|
||
interface Value {
|
||
/**
|
||
* Convert returns the value v converted to type t.
|
||
* If the usual Go conversion rules do not allow conversion
|
||
* of the value v to type t, or if converting v to type t panics, Convert panics.
|
||
*/
|
||
convert(t: Type): Value
|
||
}
|
||
interface Value {
|
||
/**
|
||
* CanConvert reports whether the value v can be converted to type t.
|
||
* If v.CanConvert(t) returns true then v.Convert(t) will not panic.
|
||
*/
|
||
canConvert(t: Type): boolean
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package fmt implements formatted I/O with functions analogous
|
||
* to C's printf and scanf. The format 'verbs' are derived from C's but
|
||
* are simpler.
|
||
*
|
||
* # Printing
|
||
*
|
||
* The verbs:
|
||
*
|
||
* General:
|
||
*
|
||
* ```
|
||
* %v the value in a default format
|
||
* when printing structs, the plus flag (%+v) adds field names
|
||
* %#v a Go-syntax representation of the value
|
||
* %T a Go-syntax representation of the type of the value
|
||
* %% a literal percent sign; consumes no value
|
||
* ```
|
||
*
|
||
* Boolean:
|
||
*
|
||
* ```
|
||
* %t the word true or false
|
||
* ```
|
||
*
|
||
* Integer:
|
||
*
|
||
* ```
|
||
* %b base 2
|
||
* %c the character represented by the corresponding Unicode code point
|
||
* %d base 10
|
||
* %o base 8
|
||
* %O base 8 with 0o prefix
|
||
* %q a single-quoted character literal safely escaped with Go syntax.
|
||
* %x base 16, with lower-case letters for a-f
|
||
* %X base 16, with upper-case letters for A-F
|
||
* %U Unicode format: U+1234; same as "U+%04X"
|
||
* ```
|
||
*
|
||
* Floating-point and complex constituents:
|
||
*
|
||
* ```
|
||
* %b decimalless scientific notation with exponent a power of two,
|
||
* in the manner of strconv.FormatFloat with the 'b' format,
|
||
* e.g. -123456p-78
|
||
* %e scientific notation, e.g. -1.234456e+78
|
||
* %E scientific notation, e.g. -1.234456E+78
|
||
* %f decimal point but no exponent, e.g. 123.456
|
||
* %F synonym for %f
|
||
* %g %e for large exponents, %f otherwise. Precision is discussed below.
|
||
* %G %E for large exponents, %F otherwise
|
||
* %x hexadecimal notation (with decimal power of two exponent), e.g. -0x1.23abcp+20
|
||
* %X upper-case hexadecimal notation, e.g. -0X1.23ABCP+20
|
||
* ```
|
||
*
|
||
* String and slice of bytes (treated equivalently with these verbs):
|
||
*
|
||
* ```
|
||
* %s the uninterpreted bytes of the string or slice
|
||
* %q a double-quoted string safely escaped with Go syntax
|
||
* %x base 16, lower-case, two characters per byte
|
||
* %X base 16, upper-case, two characters per byte
|
||
* ```
|
||
*
|
||
* Slice:
|
||
*
|
||
* ```
|
||
* %p address of 0th element in base 16 notation, with leading 0x
|
||
* ```
|
||
*
|
||
* Pointer:
|
||
*
|
||
* ```
|
||
* %p base 16 notation, with leading 0x
|
||
* The %b, %d, %o, %x and %X verbs also work with pointers,
|
||
* formatting the value exactly as if it were an integer.
|
||
* ```
|
||
*
|
||
* The default format for %v is:
|
||
*
|
||
* ```
|
||
* bool: %t
|
||
* int, int8 etc.: %d
|
||
* uint, uint8 etc.: %d, %#x if printed with %#v
|
||
* float32, complex64, etc: %g
|
||
* string: %s
|
||
* chan: %p
|
||
* pointer: %p
|
||
* ```
|
||
*
|
||
* For compound objects, the elements are printed using these rules, recursively,
|
||
* laid out like this:
|
||
*
|
||
* ```
|
||
* struct: {field0 field1 ...}
|
||
* array, slice: [elem0 elem1 ...]
|
||
* maps: map[key1:value1 key2:value2 ...]
|
||
* pointer to above: &{}, &[], &map[]
|
||
* ```
|
||
*
|
||
* Width is specified by an optional decimal number immediately preceding the verb.
|
||
* If absent, the width is whatever is necessary to represent the value.
|
||
* Precision is specified after the (optional) width by a period followed by a
|
||
* decimal number. If no period is present, a default precision is used.
|
||
* A period with no following number specifies a precision of zero.
|
||
* Examples:
|
||
*
|
||
* ```
|
||
* %f default width, default precision
|
||
* %9f width 9, default precision
|
||
* %.2f default width, precision 2
|
||
* %9.2f width 9, precision 2
|
||
* %9.f width 9, precision 0
|
||
* ```
|
||
*
|
||
* Width and precision are measured in units of Unicode code points,
|
||
* that is, runes. (This differs from C's printf where the
|
||
* units are always measured in bytes.) Either or both of the flags
|
||
* may be replaced with the character '*', causing their values to be
|
||
* obtained from the next operand (preceding the one to format),
|
||
* which must be of type int.
|
||
*
|
||
* For most values, width is the minimum number of runes to output,
|
||
* padding the formatted form with spaces if necessary.
|
||
*
|
||
* For strings, byte slices and byte arrays, however, precision
|
||
* limits the length of the input to be formatted (not the size of
|
||
* the output), truncating if necessary. Normally it is measured in
|
||
* runes, but for these types when formatted with the %x or %X format
|
||
* it is measured in bytes.
|
||
*
|
||
* For floating-point values, width sets the minimum width of the field and
|
||
* precision sets the number of places after the decimal, if appropriate,
|
||
* except that for %g/%G precision sets the maximum number of significant
|
||
* digits (trailing zeros are removed). For example, given 12.345 the format
|
||
* %6.3f prints 12.345 while %.3g prints 12.3. The default precision for %e, %f
|
||
* and %#g is 6; for %g it is the smallest number of digits necessary to identify
|
||
* the value uniquely.
|
||
*
|
||
* For complex numbers, the width and precision apply to the two
|
||
* components independently and the result is parenthesized, so %f applied
|
||
* to 1.2+3.4i produces (1.200000+3.400000i).
|
||
*
|
||
* When formatting a single integer code point or a rune string (type []rune)
|
||
* with %q, invalid Unicode code points are changed to the Unicode replacement
|
||
* character, U+FFFD, as in strconv.QuoteRune.
|
||
*
|
||
* Other flags:
|
||
*
|
||
* ```
|
||
* '+' always print a sign for numeric values;
|
||
* guarantee ASCII-only output for %q (%+q)
|
||
* '-' pad with spaces on the right rather than the left (left-justify the field)
|
||
* '#' alternate format: add leading 0b for binary (%#b), 0 for octal (%#o),
|
||
* 0x or 0X for hex (%#x or %#X); suppress 0x for %p (%#p);
|
||
* for %q, print a raw (backquoted) string if strconv.CanBackquote
|
||
* returns true;
|
||
* always print a decimal point for %e, %E, %f, %F, %g and %G;
|
||
* do not remove trailing zeros for %g and %G;
|
||
* write e.g. U+0078 'x' if the character is printable for %U (%#U).
|
||
* ' ' (space) leave a space for elided sign in numbers (% d);
|
||
* put spaces between bytes printing strings or slices in hex (% x, % X)
|
||
* '0' pad with leading zeros rather than spaces;
|
||
* for numbers, this moves the padding after the sign;
|
||
* ignored for strings, byte slices and byte arrays
|
||
* ```
|
||
*
|
||
* Flags are ignored by verbs that do not expect them.
|
||
* For example there is no alternate decimal format, so %#d and %d
|
||
* behave identically.
|
||
*
|
||
* For each Printf-like function, there is also a Print function
|
||
* that takes no format and is equivalent to saying %v for every
|
||
* operand. Another variant Println inserts blanks between
|
||
* operands and appends a newline.
|
||
*
|
||
* Regardless of the verb, if an operand is an interface value,
|
||
* the internal concrete value is used, not the interface itself.
|
||
* Thus:
|
||
*
|
||
* ```
|
||
* var i interface{} = 23
|
||
* fmt.Printf("%v\n", i)
|
||
* ```
|
||
*
|
||
* will print 23.
|
||
*
|
||
* Except when printed using the verbs %T and %p, special
|
||
* formatting considerations apply for operands that implement
|
||
* certain interfaces. In order of application:
|
||
*
|
||
* 1. If the operand is a reflect.Value, the operand is replaced by the
|
||
* concrete value that it holds, and printing continues with the next rule.
|
||
*
|
||
* 2. If an operand implements the Formatter interface, it will
|
||
* be invoked. In this case the interpretation of verbs and flags is
|
||
* controlled by that implementation.
|
||
*
|
||
* 3. If the %v verb is used with the # flag (%#v) and the operand
|
||
* implements the GoStringer interface, that will be invoked.
|
||
*
|
||
* If the format (which is implicitly %v for Println etc.) is valid
|
||
* for a string (%s %q %v %x %X), the following two rules apply:
|
||
*
|
||
* 4. If an operand implements the error interface, the Error method
|
||
* will be invoked to convert the object to a string, which will then
|
||
* be formatted as required by the verb (if any).
|
||
*
|
||
* 5. If an operand implements method String() string, that method
|
||
* will be invoked to convert the object to a string, which will then
|
||
* be formatted as required by the verb (if any).
|
||
*
|
||
* For compound operands such as slices and structs, the format
|
||
* applies to the elements of each operand, recursively, not to the
|
||
* operand as a whole. Thus %q will quote each element of a slice
|
||
* of strings, and %6.2f will control formatting for each element
|
||
* of a floating-point array.
|
||
*
|
||
* However, when printing a byte slice with a string-like verb
|
||
* (%s %q %x %X), it is treated identically to a string, as a single item.
|
||
*
|
||
* To avoid recursion in cases such as
|
||
*
|
||
* ```
|
||
* type X string
|
||
* func (x X) String() string { return Sprintf("<%s>", x) }
|
||
* ```
|
||
*
|
||
* convert the value before recurring:
|
||
*
|
||
* ```
|
||
* func (x X) String() string { return Sprintf("<%s>", string(x)) }
|
||
* ```
|
||
*
|
||
* Infinite recursion can also be triggered by self-referential data
|
||
* structures, such as a slice that contains itself as an element, if
|
||
* that type has a String method. Such pathologies are rare, however,
|
||
* and the package does not protect against them.
|
||
*
|
||
* When printing a struct, fmt cannot and therefore does not invoke
|
||
* formatting methods such as Error or String on unexported fields.
|
||
*
|
||
* # Explicit argument indexes
|
||
*
|
||
* In Printf, Sprintf, and Fprintf, the default behavior is for each
|
||
* formatting verb to format successive arguments passed in the call.
|
||
* However, the notation [n] immediately before the verb indicates that the
|
||
* nth one-indexed argument is to be formatted instead. The same notation
|
||
* before a '*' for a width or precision selects the argument index holding
|
||
* the value. After processing a bracketed expression [n], subsequent verbs
|
||
* will use arguments n+1, n+2, etc. unless otherwise directed.
|
||
*
|
||
* For example,
|
||
*
|
||
* ```
|
||
* fmt.Sprintf("%[2]d %[1]d\n", 11, 22)
|
||
* ```
|
||
*
|
||
* will yield "22 11", while
|
||
*
|
||
* ```
|
||
* fmt.Sprintf("%[3]*.[2]*[1]f", 12.0, 2, 6)
|
||
* ```
|
||
*
|
||
* equivalent to
|
||
*
|
||
* ```
|
||
* fmt.Sprintf("%6.2f", 12.0)
|
||
* ```
|
||
*
|
||
* will yield " 12.00". Because an explicit index affects subsequent verbs,
|
||
* this notation can be used to print the same values multiple times
|
||
* by resetting the index for the first argument to be repeated:
|
||
*
|
||
* ```
|
||
* fmt.Sprintf("%d %d %#[1]x %#x", 16, 17)
|
||
* ```
|
||
*
|
||
* will yield "16 17 0x10 0x11".
|
||
*
|
||
* # Format errors
|
||
*
|
||
* If an invalid argument is given for a verb, such as providing
|
||
* a string to %d, the generated string will contain a
|
||
* description of the problem, as in these examples:
|
||
*
|
||
* ```
|
||
* Wrong type or unknown verb: %!verb(type=value)
|
||
* Printf("%d", "hi"): %!d(string=hi)
|
||
* Too many arguments: %!(EXTRA type=value)
|
||
* Printf("hi", "guys"): hi%!(EXTRA string=guys)
|
||
* Too few arguments: %!verb(MISSING)
|
||
* Printf("hi%d"): hi%!d(MISSING)
|
||
* Non-int for width or precision: %!(BADWIDTH) or %!(BADPREC)
|
||
* Printf("%*s", 4.5, "hi"): %!(BADWIDTH)hi
|
||
* Printf("%.*s", 4.5, "hi"): %!(BADPREC)hi
|
||
* Invalid or invalid use of argument index: %!(BADINDEX)
|
||
* Printf("%*[2]d", 7): %!d(BADINDEX)
|
||
* Printf("%.[2]d", 7): %!d(BADINDEX)
|
||
* ```
|
||
*
|
||
* All errors begin with the string "%!" followed sometimes
|
||
* by a single character (the verb) and end with a parenthesized
|
||
* description.
|
||
*
|
||
* If an Error or String method triggers a panic when called by a
|
||
* print routine, the fmt package reformats the error message
|
||
* from the panic, decorating it with an indication that it came
|
||
* through the fmt package. For example, if a String method
|
||
* calls panic("bad"), the resulting formatted message will look
|
||
* like
|
||
*
|
||
* ```
|
||
* %!s(PANIC=bad)
|
||
* ```
|
||
*
|
||
* The %!s just shows the print verb in use when the failure
|
||
* occurred. If the panic is caused by a nil receiver to an Error
|
||
* or String method, however, the output is the undecorated
|
||
* string, "<nil>".
|
||
*
|
||
* # Scanning
|
||
*
|
||
* An analogous set of functions scans formatted text to yield
|
||
* values. Scan, Scanf and Scanln read from os.Stdin; Fscan,
|
||
* Fscanf and Fscanln read from a specified io.Reader; Sscan,
|
||
* Sscanf and Sscanln read from an argument string.
|
||
*
|
||
* Scan, Fscan, Sscan treat newlines in the input as spaces.
|
||
*
|
||
* Scanln, Fscanln and Sscanln stop scanning at a newline and
|
||
* require that the items be followed by a newline or EOF.
|
||
*
|
||
* Scanf, Fscanf, and Sscanf parse the arguments according to a
|
||
* format string, analogous to that of Printf. In the text that
|
||
* follows, 'space' means any Unicode whitespace character
|
||
* except newline.
|
||
*
|
||
* In the format string, a verb introduced by the % character
|
||
* consumes and parses input; these verbs are described in more
|
||
* detail below. A character other than %, space, or newline in
|
||
* the format consumes exactly that input character, which must
|
||
* be present. A newline with zero or more spaces before it in
|
||
* the format string consumes zero or more spaces in the input
|
||
* followed by a single newline or the end of the input. A space
|
||
* following a newline in the format string consumes zero or more
|
||
* spaces in the input. Otherwise, any run of one or more spaces
|
||
* in the format string consumes as many spaces as possible in
|
||
* the input. Unless the run of spaces in the format string
|
||
* appears adjacent to a newline, the run must consume at least
|
||
* one space from the input or find the end of the input.
|
||
*
|
||
* The handling of spaces and newlines differs from that of C's
|
||
* scanf family: in C, newlines are treated as any other space,
|
||
* and it is never an error when a run of spaces in the format
|
||
* string finds no spaces to consume in the input.
|
||
*
|
||
* The verbs behave analogously to those of Printf.
|
||
* For example, %x will scan an integer as a hexadecimal number,
|
||
* and %v will scan the default representation format for the value.
|
||
* The Printf verbs %p and %T and the flags # and + are not implemented.
|
||
* For floating-point and complex values, all valid formatting verbs
|
||
* (%b %e %E %f %F %g %G %x %X and %v) are equivalent and accept
|
||
* both decimal and hexadecimal notation (for example: "2.3e+7", "0x4.5p-8")
|
||
* and digit-separating underscores (for example: "3.14159_26535_89793").
|
||
*
|
||
* Input processed by verbs is implicitly space-delimited: the
|
||
* implementation of every verb except %c starts by discarding
|
||
* leading spaces from the remaining input, and the %s verb
|
||
* (and %v reading into a string) stops consuming input at the first
|
||
* space or newline character.
|
||
*
|
||
* The familiar base-setting prefixes 0b (binary), 0o and 0 (octal),
|
||
* and 0x (hexadecimal) are accepted when scanning integers
|
||
* without a format or with the %v verb, as are digit-separating
|
||
* underscores.
|
||
*
|
||
* Width is interpreted in the input text but there is no
|
||
* syntax for scanning with a precision (no %5.2f, just %5f).
|
||
* If width is provided, it applies after leading spaces are
|
||
* trimmed and specifies the maximum number of runes to read
|
||
* to satisfy the verb. For example,
|
||
*
|
||
* ```
|
||
* Sscanf(" 1234567 ", "%5s%d", &s, &i)
|
||
* ```
|
||
*
|
||
* will set s to "12345" and i to 67 while
|
||
*
|
||
* ```
|
||
* Sscanf(" 12 34 567 ", "%5s%d", &s, &i)
|
||
* ```
|
||
*
|
||
* will set s to "12" and i to 34.
|
||
*
|
||
* In all the scanning functions, a carriage return followed
|
||
* immediately by a newline is treated as a plain newline
|
||
* (\r\n means the same as \n).
|
||
*
|
||
* In all the scanning functions, if an operand implements method
|
||
* Scan (that is, it implements the Scanner interface) that
|
||
* method will be used to scan the text for that operand. Also,
|
||
* if the number of arguments scanned is less than the number of
|
||
* arguments provided, an error is returned.
|
||
*
|
||
* All arguments to be scanned must be either pointers to basic
|
||
* types or implementations of the Scanner interface.
|
||
*
|
||
* Like Scanf and Fscanf, Sscanf need not consume its entire input.
|
||
* There is no way to recover how much of the input string Sscanf used.
|
||
*
|
||
* Note: Fscan etc. can read one character (rune) past the input
|
||
* they return, which means that a loop calling a scan routine
|
||
* may skip some of the input. This is usually a problem only
|
||
* when there is no space between input values. If the reader
|
||
* provided to Fscan implements ReadRune, that method will be used
|
||
* to read characters. If the reader also implements UnreadRune,
|
||
* that method will be used to save the character and successive
|
||
* calls will not lose data. To attach ReadRune and UnreadRune
|
||
* methods to a reader without that capability, use
|
||
* bufio.NewReader.
|
||
*/
|
||
namespace fmt {
|
||
/**
|
||
* State represents the printer state passed to custom formatters.
|
||
* It provides access to the io.Writer interface plus information about
|
||
* the flags and options for the operand's format specifier.
|
||
*/
|
||
interface State {
|
||
/**
|
||
* Write is the function to call to emit formatted output to be printed.
|
||
*/
|
||
write(b: string): number
|
||
/**
|
||
* Width returns the value of the width option and whether it has been set.
|
||
*/
|
||
width(): [number, boolean]
|
||
/**
|
||
* Precision returns the value of the precision option and whether it has been set.
|
||
*/
|
||
precision(): [number, boolean]
|
||
/**
|
||
* Flag reports whether the flag c, a character, has been set.
|
||
*/
|
||
flag(c: number): boolean
|
||
}
|
||
/**
|
||
* ScanState represents the scanner state passed to custom scanners.
|
||
* Scanners may do rune-at-a-time scanning or ask the ScanState
|
||
* to discover the next space-delimited token.
|
||
*/
|
||
interface ScanState {
|
||
/**
|
||
* ReadRune reads the next rune (Unicode code point) from the input.
|
||
* If invoked during Scanln, Fscanln, or Sscanln, ReadRune() will
|
||
* return EOF after returning the first '\n' or when reading beyond
|
||
* the specified width.
|
||
*/
|
||
readRune(): [string, number]
|
||
/**
|
||
* UnreadRune causes the next call to ReadRune to return the same rune.
|
||
*/
|
||
unreadRune(): void
|
||
/**
|
||
* SkipSpace skips space in the input. Newlines are treated appropriately
|
||
* for the operation being performed; see the package documentation
|
||
* for more information.
|
||
*/
|
||
skipSpace(): void
|
||
/**
|
||
* Token skips space in the input if skipSpace is true, then returns the
|
||
* run of Unicode code points c satisfying f(c). If f is nil,
|
||
* !unicode.IsSpace(c) is used; that is, the token will hold non-space
|
||
* characters. Newlines are treated appropriately for the operation being
|
||
* performed; see the package documentation for more information.
|
||
* The returned slice points to shared data that may be overwritten
|
||
* by the next call to Token, a call to a Scan function using the ScanState
|
||
* as input, or when the calling Scan method returns.
|
||
*/
|
||
token(skipSpace: boolean, f: (_arg0: string) => boolean): string
|
||
/**
|
||
* Width returns the value of the width option and whether it has been set.
|
||
* The unit is Unicode code points.
|
||
*/
|
||
width(): [number, boolean]
|
||
/**
|
||
* Because ReadRune is implemented by the interface, Read should never be
|
||
* called by the scanning routines and a valid implementation of
|
||
* ScanState may choose always to return an error from Read.
|
||
*/
|
||
read(buf: string): number
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package rand implements pseudo-random number generators unsuitable for
|
||
* security-sensitive work.
|
||
*
|
||
* Random numbers are generated by a Source. Top-level functions, such as
|
||
* Float64 and Int, use a default shared Source that produces a deterministic
|
||
* sequence of values each time a program is run. Use the Seed function to
|
||
* initialize the default Source if different behavior is required for each run.
|
||
* The default Source is safe for concurrent use by multiple goroutines, but
|
||
* Sources created by NewSource are not.
|
||
*
|
||
* This package's outputs might be easily predictable regardless of how it's
|
||
* seeded. For random numbers suitable for security-sensitive work, see the
|
||
* crypto/rand package.
|
||
*/
|
||
namespace rand {
|
||
interface Rand {
|
||
/**
|
||
* ExpFloat64 returns an exponentially distributed float64 in the range
|
||
* (0, +math.MaxFloat64] with an exponential distribution whose rate parameter
|
||
* (lambda) is 1 and whose mean is 1/lambda (1).
|
||
* To produce a distribution with a different rate parameter,
|
||
* callers can adjust the output using:
|
||
*
|
||
* ```
|
||
* sample = ExpFloat64() / desiredRateParameter
|
||
* ```
|
||
*/
|
||
expFloat64(): number
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* NormFloat64 returns a normally distributed float64 in
|
||
* the range -math.MaxFloat64 through +math.MaxFloat64 inclusive,
|
||
* with standard normal distribution (mean = 0, stddev = 1).
|
||
* To produce a different normal distribution, callers can
|
||
* adjust the output using:
|
||
*
|
||
* ```
|
||
* sample = NormFloat64() * desiredStdDev + desiredMean
|
||
* ```
|
||
*/
|
||
normFloat64(): number
|
||
}
|
||
/**
|
||
* A Rand is a source of random numbers.
|
||
*/
|
||
interface Rand {
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Seed uses the provided seed value to initialize the generator to a deterministic state.
|
||
* Seed should not be called concurrently with any other Rand method.
|
||
*/
|
||
seed(seed: number): void
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Int63 returns a non-negative pseudo-random 63-bit integer as an int64.
|
||
*/
|
||
int63(): number
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Uint32 returns a pseudo-random 32-bit value as a uint32.
|
||
*/
|
||
uint32(): number
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Uint64 returns a pseudo-random 64-bit value as a uint64.
|
||
*/
|
||
uint64(): number
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Int31 returns a non-negative pseudo-random 31-bit integer as an int32.
|
||
*/
|
||
int31(): number
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Int returns a non-negative pseudo-random int.
|
||
*/
|
||
int(): number
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Int63n returns, as an int64, a non-negative pseudo-random number in the half-open interval [0,n).
|
||
* It panics if n <= 0.
|
||
*/
|
||
int63n(n: number): number
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Int31n returns, as an int32, a non-negative pseudo-random number in the half-open interval [0,n).
|
||
* It panics if n <= 0.
|
||
*/
|
||
int31n(n: number): number
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Intn returns, as an int, a non-negative pseudo-random number in the half-open interval [0,n).
|
||
* It panics if n <= 0.
|
||
*/
|
||
intn(n: number): number
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Float64 returns, as a float64, a pseudo-random number in the half-open interval [0.0,1.0).
|
||
*/
|
||
float64(): number
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Float32 returns, as a float32, a pseudo-random number in the half-open interval [0.0,1.0).
|
||
*/
|
||
float32(): number
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Perm returns, as a slice of n ints, a pseudo-random permutation of the integers
|
||
* in the half-open interval [0,n).
|
||
*/
|
||
perm(n: number): Array<number>
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Shuffle pseudo-randomizes the order of elements.
|
||
* n is the number of elements. Shuffle panics if n < 0.
|
||
* swap swaps the elements with indexes i and j.
|
||
*/
|
||
shuffle(n: number, swap: (i: number) => void): void
|
||
}
|
||
interface Rand {
|
||
/**
|
||
* Read generates len(p) random bytes and writes them into p. It
|
||
* always returns len(p) and a nil error.
|
||
* Read should not be called concurrently with any other Rand method.
|
||
*/
|
||
read(p: string): number
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package big implements arbitrary-precision arithmetic (big numbers).
|
||
* The following numeric types are supported:
|
||
*
|
||
* ```
|
||
* Int signed integers
|
||
* Rat rational numbers
|
||
* Float floating-point numbers
|
||
* ```
|
||
*
|
||
* The zero value for an Int, Rat, or Float correspond to 0. Thus, new
|
||
* values can be declared in the usual ways and denote 0 without further
|
||
* initialization:
|
||
*
|
||
* ```
|
||
* var x Int // &x is an *Int of value 0
|
||
* var r = &Rat{} // r is a *Rat of value 0
|
||
* y := new(Float) // y is a *Float of value 0
|
||
* ```
|
||
*
|
||
* Alternatively, new values can be allocated and initialized with factory
|
||
* functions of the form:
|
||
*
|
||
* ```
|
||
* func NewT(v V) *T
|
||
* ```
|
||
*
|
||
* For instance, NewInt(x) returns an *Int set to the value of the int64
|
||
* argument x, NewRat(a, b) returns a *Rat set to the fraction a/b where
|
||
* a and b are int64 values, and NewFloat(f) returns a *Float initialized
|
||
* to the float64 argument f. More flexibility is provided with explicit
|
||
* setters, for instance:
|
||
*
|
||
* ```
|
||
* var z1 Int
|
||
* z1.SetUint64(123) // z1 := 123
|
||
* z2 := new(Rat).SetFloat64(1.25) // z2 := 5/4
|
||
* z3 := new(Float).SetInt(z1) // z3 := 123.0
|
||
* ```
|
||
*
|
||
* Setters, numeric operations and predicates are represented as methods of
|
||
* the form:
|
||
*
|
||
* ```
|
||
* func (z *T) SetV(v V) *T // z = v
|
||
* func (z *T) Unary(x *T) *T // z = unary x
|
||
* func (z *T) Binary(x, y *T) *T // z = x binary y
|
||
* func (x *T) Pred() P // p = pred(x)
|
||
* ```
|
||
*
|
||
* with T one of Int, Rat, or Float. For unary and binary operations, the
|
||
* result is the receiver (usually named z in that case; see below); if it
|
||
* is one of the operands x or y it may be safely overwritten (and its memory
|
||
* reused).
|
||
*
|
||
* Arithmetic expressions are typically written as a sequence of individual
|
||
* method calls, with each call corresponding to an operation. The receiver
|
||
* denotes the result and the method arguments are the operation's operands.
|
||
* For instance, given three *Int values a, b and c, the invocation
|
||
*
|
||
* ```
|
||
* c.Add(a, b)
|
||
* ```
|
||
*
|
||
* computes the sum a + b and stores the result in c, overwriting whatever
|
||
* value was held in c before. Unless specified otherwise, operations permit
|
||
* aliasing of parameters, so it is perfectly ok to write
|
||
*
|
||
* ```
|
||
* sum.Add(sum, x)
|
||
* ```
|
||
*
|
||
* to accumulate values x in a sum.
|
||
*
|
||
* (By always passing in a result value via the receiver, memory use can be
|
||
* much better controlled. Instead of having to allocate new memory for each
|
||
* result, an operation can reuse the space allocated for the result value,
|
||
* and overwrite that value with the new result in the process.)
|
||
*
|
||
* Notational convention: Incoming method parameters (including the receiver)
|
||
* are named consistently in the API to clarify their use. Incoming operands
|
||
* are usually named x, y, a, b, and so on, but never z. A parameter specifying
|
||
* the result is named z (typically the receiver).
|
||
*
|
||
* For instance, the arguments for (*Int).Add are named x and y, and because
|
||
* the receiver specifies the result destination, it is called z:
|
||
*
|
||
* ```
|
||
* func (z *Int) Add(x, y *Int) *Int
|
||
* ```
|
||
*
|
||
* Methods of this form typically return the incoming receiver as well, to
|
||
* enable simple call chaining.
|
||
*
|
||
* Methods which don't require a result value to be passed in (for instance,
|
||
* Int.Sign), simply return the result. In this case, the receiver is typically
|
||
* the first operand, named x:
|
||
*
|
||
* ```
|
||
* func (x *Int) Sign() int
|
||
* ```
|
||
*
|
||
* Various methods support conversions between strings and corresponding
|
||
* numeric values, and vice versa: *Int, *Rat, and *Float values implement
|
||
* the Stringer interface for a (default) string representation of the value,
|
||
* but also provide SetString methods to initialize a value from a string in
|
||
* a variety of supported formats (see the respective SetString documentation).
|
||
*
|
||
* Finally, *Int, *Rat, and *Float satisfy the fmt package's Scanner interface
|
||
* for scanning and (except for *Rat) the Formatter interface for formatted
|
||
* printing.
|
||
*/
|
||
namespace big {
|
||
/**
|
||
* A Word represents a single digit of a multi-precision unsigned integer.
|
||
*/
|
||
interface Word extends Number{}
|
||
}
|
||
|
||
/**
|
||
* Package asn1 implements parsing of DER-encoded ASN.1 data structures,
|
||
* as defined in ITU-T Rec X.690.
|
||
*
|
||
* See also “A Layman's Guide to a Subset of ASN.1, BER, and DER,”
|
||
* http://luca.ntop.org/Teaching/Appunti/asn1.html.
|
||
*/
|
||
namespace asn1 {
|
||
/**
|
||
* BitString is the structure to use when you want an ASN.1 BIT STRING type. A
|
||
* bit string is padded up to the nearest byte in memory and the number of
|
||
* valid bits is recorded. Padding bits will be zero.
|
||
*/
|
||
interface BitString {
|
||
bytes: string // bits packed into bytes.
|
||
bitLength: number // length in bits.
|
||
}
|
||
interface BitString {
|
||
/**
|
||
* At returns the bit at the given index. If the index is out of range it
|
||
* returns false.
|
||
*/
|
||
at(i: number): number
|
||
}
|
||
interface BitString {
|
||
/**
|
||
* RightAlign returns a slice where the padding bits are at the beginning. The
|
||
* slice may share memory with the BitString.
|
||
*/
|
||
rightAlign(): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package pkix contains shared, low level structures used for ASN.1 parsing
|
||
* and serialization of X.509 certificates, CRL and OCSP.
|
||
*/
|
||
namespace pkix {
|
||
/**
|
||
* AlgorithmIdentifier represents the ASN.1 structure of the same name. See RFC
|
||
* 5280, section 4.1.1.2.
|
||
*/
|
||
interface AlgorithmIdentifier {
|
||
algorithm: asn1.ObjectIdentifier
|
||
parameters: asn1.RawValue
|
||
}
|
||
interface RDNSequence extends Array<RelativeDistinguishedNameSET>{}
|
||
interface RDNSequence {
|
||
/**
|
||
* String returns a string representation of the sequence r,
|
||
* roughly following the RFC 2253 Distinguished Names syntax.
|
||
*/
|
||
string(): string
|
||
}
|
||
/**
|
||
* AttributeTypeAndValue mirrors the ASN.1 structure of the same name in
|
||
* RFC 5280, Section 4.1.2.4.
|
||
*/
|
||
interface AttributeTypeAndValue {
|
||
type: asn1.ObjectIdentifier
|
||
value: any
|
||
}
|
||
/**
|
||
* TBSCertificateList represents the ASN.1 structure of the same name. See RFC
|
||
* 5280, section 5.1.
|
||
*
|
||
* Deprecated: x509.RevocationList should be used instead.
|
||
*/
|
||
interface TBSCertificateList {
|
||
raw: asn1.RawContent
|
||
version: number
|
||
signature: AlgorithmIdentifier
|
||
issuer: RDNSequence
|
||
thisUpdate: time.Time
|
||
nextUpdate: time.Time
|
||
revokedCertificates: Array<RevokedCertificate>
|
||
extensions: Array<Extension>
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package crypto collects common cryptographic constants.
|
||
*/
|
||
namespace crypto {
|
||
/**
|
||
* PrivateKey represents a private key using an unspecified algorithm.
|
||
*
|
||
* Although this type is an empty interface for backwards compatibility reasons,
|
||
* all private key types in the standard library implement the following interface
|
||
*
|
||
* ```
|
||
* interface{
|
||
* Public() crypto.PublicKey
|
||
* Equal(x crypto.PrivateKey) bool
|
||
* }
|
||
* ```
|
||
*
|
||
* as well as purpose-specific interfaces such as Signer and Decrypter, which
|
||
* can be used for increased type safety within applications.
|
||
*/
|
||
interface PrivateKey extends _TygojaAny{}
|
||
/**
|
||
* Signer is an interface for an opaque private key that can be used for
|
||
* signing operations. For example, an RSA key kept in a hardware module.
|
||
*/
|
||
interface Signer {
|
||
/**
|
||
* Public returns the public key corresponding to the opaque,
|
||
* private key.
|
||
*/
|
||
public(): PublicKey
|
||
/**
|
||
* Sign signs digest with the private key, possibly using entropy from
|
||
* rand. For an RSA key, the resulting signature should be either a
|
||
* PKCS #1 v1.5 or PSS signature (as indicated by opts). For an (EC)DSA
|
||
* key, it should be a DER-serialised, ASN.1 signature structure.
|
||
*
|
||
* Hash implements the SignerOpts interface and, in most cases, one can
|
||
* simply pass in the hash function used as opts. Sign may also attempt
|
||
* to type assert opts to other types in order to obtain algorithm
|
||
* specific values. See the documentation in each package for details.
|
||
*
|
||
* Note that when a signature of a hash of a larger message is needed,
|
||
* the caller is responsible for hashing the larger message and passing
|
||
* the hash (as digest) and the hash function (as opts) to Sign.
|
||
*/
|
||
sign(rand: io.Reader, digest: string, opts: SignerOpts): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Copyright 2021 The Go Authors. All rights reserved.
|
||
* Use of this source code is governed by a BSD-style
|
||
* license that can be found in the LICENSE file.
|
||
*/
|
||
/**
|
||
* Package x509 parses X.509-encoded keys and certificates.
|
||
*/
|
||
namespace x509 {
|
||
/**
|
||
* CertPool is a set of certificates.
|
||
*/
|
||
interface CertPool {
|
||
}
|
||
interface CertPool {
|
||
/**
|
||
* Clone returns a copy of s.
|
||
*/
|
||
clone(): (CertPool | undefined)
|
||
}
|
||
interface CertPool {
|
||
/**
|
||
* AddCert adds a certificate to a pool.
|
||
*/
|
||
addCert(cert: Certificate): void
|
||
}
|
||
interface CertPool {
|
||
/**
|
||
* AppendCertsFromPEM attempts to parse a series of PEM encoded certificates.
|
||
* It appends any certificates found to s and reports whether any certificates
|
||
* were successfully parsed.
|
||
*
|
||
* On many Linux systems, /etc/ssl/cert.pem will contain the system wide set
|
||
* of root CAs in a format suitable for this function.
|
||
*/
|
||
appendCertsFromPEM(pemCerts: string): boolean
|
||
}
|
||
interface CertPool {
|
||
/**
|
||
* Subjects returns a list of the DER-encoded subjects of
|
||
* all of the certificates in the pool.
|
||
*
|
||
* Deprecated: if s was returned by SystemCertPool, Subjects
|
||
* will not include the system roots.
|
||
*/
|
||
subjects(): Array<string>
|
||
}
|
||
interface CertPool {
|
||
/**
|
||
* Equal reports whether s and other are equal.
|
||
*/
|
||
equal(other: CertPool): boolean
|
||
}
|
||
// @ts-ignore
|
||
import cryptobyte_asn1 = asn1
|
||
}
|
||
|
||
/**
|
||
* Package tls partially implements TLS 1.2, as specified in RFC 5246,
|
||
* and TLS 1.3, as specified in RFC 8446.
|
||
*/
|
||
namespace tls {
|
||
/**
|
||
* CurveID is the type of a TLS identifier for an elliptic curve. See
|
||
* https://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8.
|
||
*
|
||
* In TLS 1.3, this type is called NamedGroup, but at this time this library
|
||
* only supports Elliptic Curve based groups. See RFC 8446, Section 4.2.7.
|
||
*/
|
||
interface CurveID extends Number{}
|
||
/**
|
||
* ClientAuthType declares the policy the server will follow for
|
||
* TLS Client Authentication.
|
||
*/
|
||
interface ClientAuthType extends Number{}
|
||
/**
|
||
* ClientSessionCache is a cache of ClientSessionState objects that can be used
|
||
* by a client to resume a TLS session with a given server. ClientSessionCache
|
||
* implementations should expect to be called concurrently from different
|
||
* goroutines. Up to TLS 1.2, only ticket-based resumption is supported, not
|
||
* SessionID-based resumption. In TLS 1.3 they were merged into PSK modes, which
|
||
* are supported via this interface.
|
||
*/
|
||
interface ClientSessionCache {
|
||
/**
|
||
* Get searches for a ClientSessionState associated with the given key.
|
||
* On return, ok is true if one was found.
|
||
*/
|
||
get(sessionKey: string): [(ClientSessionState | undefined), boolean]
|
||
/**
|
||
* Put adds the ClientSessionState to the cache with the given key. It might
|
||
* get called multiple times in a connection if a TLS 1.3 server provides
|
||
* more than one session ticket. If called with a nil *ClientSessionState,
|
||
* it should remove the cache entry.
|
||
*/
|
||
put(sessionKey: string, cs: ClientSessionState): void
|
||
}
|
||
/**
|
||
* SignatureScheme identifies a signature algorithm supported by TLS. See
|
||
* RFC 8446, Section 4.2.3.
|
||
*/
|
||
interface SignatureScheme extends Number{}
|
||
/**
|
||
* CertificateRequestInfo contains information from a server's
|
||
* CertificateRequest message, which is used to demand a certificate and proof
|
||
* of control from a client.
|
||
*/
|
||
interface CertificateRequestInfo {
|
||
/**
|
||
* AcceptableCAs contains zero or more, DER-encoded, X.501
|
||
* Distinguished Names. These are the names of root or intermediate CAs
|
||
* that the server wishes the returned certificate to be signed by. An
|
||
* empty slice indicates that the server has no preference.
|
||
*/
|
||
acceptableCAs: Array<string>
|
||
/**
|
||
* SignatureSchemes lists the signature schemes that the server is
|
||
* willing to verify.
|
||
*/
|
||
signatureSchemes: Array<SignatureScheme>
|
||
/**
|
||
* Version is the TLS version that was negotiated for this connection.
|
||
*/
|
||
version: number
|
||
}
|
||
interface CertificateRequestInfo {
|
||
/**
|
||
* Context returns the context of the handshake that is in progress.
|
||
* This context is a child of the context passed to HandshakeContext,
|
||
* if any, and is canceled when the handshake concludes.
|
||
*/
|
||
context(): context.Context
|
||
}
|
||
/**
|
||
* RenegotiationSupport enumerates the different levels of support for TLS
|
||
* renegotiation. TLS renegotiation is the act of performing subsequent
|
||
* handshakes on a connection after the first. This significantly complicates
|
||
* the state machine and has been the source of numerous, subtle security
|
||
* issues. Initiating a renegotiation is not supported, but support for
|
||
* accepting renegotiation requests may be enabled.
|
||
*
|
||
* Even when enabled, the server may not change its identity between handshakes
|
||
* (i.e. the leaf certificate must be the same). Additionally, concurrent
|
||
* handshake and application data flow is not permitted so renegotiation can
|
||
* only be used with protocols that synchronise with the renegotiation, such as
|
||
* HTTPS.
|
||
*
|
||
* Renegotiation is not defined in TLS 1.3.
|
||
*/
|
||
interface RenegotiationSupport extends Number{}
|
||
interface CertificateRequestInfo {
|
||
/**
|
||
* SupportsCertificate returns nil if the provided certificate is supported by
|
||
* the server that sent the CertificateRequest. Otherwise, it returns an error
|
||
* describing the reason for the incompatibility.
|
||
*/
|
||
supportsCertificate(c: Certificate): void
|
||
}
|
||
interface SignatureScheme {
|
||
string(): string
|
||
}
|
||
interface CurveID {
|
||
string(): string
|
||
}
|
||
interface ClientAuthType {
|
||
string(): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package log implements a simple logging package. It defines a type, Logger,
|
||
* with methods for formatting output. It also has a predefined 'standard'
|
||
* Logger accessible through helper functions Print[f|ln], Fatal[f|ln], and
|
||
* Panic[f|ln], which are easier to use than creating a Logger manually.
|
||
* That logger writes to standard error and prints the date and time
|
||
* of each logged message.
|
||
* Every log message is output on a separate line: if the message being
|
||
* printed does not end in a newline, the logger will add one.
|
||
* The Fatal functions call os.Exit(1) after writing the log message.
|
||
* The Panic functions call panic after writing the log message.
|
||
*/
|
||
namespace log {
|
||
}
|
||
|
||
/**
|
||
* Package acme provides an implementation of the
|
||
* Automatic Certificate Management Environment (ACME) spec,
|
||
* most famously used by Let's Encrypt.
|
||
*
|
||
* The initial implementation of this package was based on an early version
|
||
* of the spec. The current implementation supports only the modern
|
||
* RFC 8555 but some of the old API surface remains for compatibility.
|
||
* While code using the old API will still compile, it will return an error.
|
||
* Note the deprecation comments to update your code.
|
||
*
|
||
* See https://tools.ietf.org/html/rfc8555 for the spec.
|
||
*
|
||
* Most common scenarios will want to use autocert subdirectory instead,
|
||
* which provides automatic access to certificates from Let's Encrypt
|
||
* and any other ACME-based CA.
|
||
*/
|
||
namespace acme {
|
||
/**
|
||
* KeyID is the account key identity provided by a CA during registration.
|
||
*/
|
||
interface KeyID extends String{}
|
||
/**
|
||
* CRLReasonCode identifies the reason for a certificate revocation.
|
||
*/
|
||
interface CRLReasonCode extends Number{}
|
||
/**
|
||
* Account is a user account. It is associated with a private key.
|
||
* Non-RFC 8555 fields are empty when interfacing with a compliant CA.
|
||
*/
|
||
interface Account {
|
||
/**
|
||
* URI is the account unique ID, which is also a URL used to retrieve
|
||
* account data from the CA.
|
||
* When interfacing with RFC 8555-compliant CAs, URI is the "kid" field
|
||
* value in JWS signed requests.
|
||
*/
|
||
uri: string
|
||
/**
|
||
* Contact is a slice of contact info used during registration.
|
||
* See https://tools.ietf.org/html/rfc8555#section-7.3 for supported
|
||
* formats.
|
||
*/
|
||
contact: Array<string>
|
||
/**
|
||
* Status indicates current account status as returned by the CA.
|
||
* Possible values are StatusValid, StatusDeactivated, and StatusRevoked.
|
||
*/
|
||
status: string
|
||
/**
|
||
* OrdersURL is a URL from which a list of orders submitted by this account
|
||
* can be fetched.
|
||
*/
|
||
ordersURL: string
|
||
/**
|
||
* The terms user has agreed to.
|
||
* A value not matching CurrentTerms indicates that the user hasn't agreed
|
||
* to the actual Terms of Service of the CA.
|
||
*
|
||
* It is non-RFC 8555 compliant. Package users can store the ToS they agree to
|
||
* during Client's Register call in the prompt callback function.
|
||
*/
|
||
agreedTerms: string
|
||
/**
|
||
* Actual terms of a CA.
|
||
*
|
||
* It is non-RFC 8555 compliant. Use Directory's Terms field.
|
||
* When a CA updates their terms and requires an account agreement,
|
||
* a URL at which instructions to do so is available in Error's Instance field.
|
||
*/
|
||
currentTerms: string
|
||
/**
|
||
* Authz is the authorization URL used to initiate a new authz flow.
|
||
*
|
||
* It is non-RFC 8555 compliant. Use Directory's AuthzURL or OrderURL.
|
||
*/
|
||
authz: string
|
||
/**
|
||
* Authorizations is a URI from which a list of authorizations
|
||
* granted to this account can be fetched via a GET request.
|
||
*
|
||
* It is non-RFC 8555 compliant and is obsoleted by OrdersURL.
|
||
*/
|
||
authorizations: string
|
||
/**
|
||
* Certificates is a URI from which a list of certificates
|
||
* issued for this account can be fetched via a GET request.
|
||
*
|
||
* It is non-RFC 8555 compliant and is obsoleted by OrdersURL.
|
||
*/
|
||
certificates: string
|
||
/**
|
||
* ExternalAccountBinding represents an arbitrary binding to an account of
|
||
* the CA which the ACME server is tied to.
|
||
* See https://tools.ietf.org/html/rfc8555#section-7.3.4 for more details.
|
||
*/
|
||
externalAccountBinding?: ExternalAccountBinding
|
||
}
|
||
/**
|
||
* Directory is ACME server discovery data.
|
||
* See https://tools.ietf.org/html/rfc8555#section-7.1.1 for more details.
|
||
*/
|
||
interface Directory {
|
||
/**
|
||
* NonceURL indicates an endpoint where to fetch fresh nonce values from.
|
||
*/
|
||
nonceURL: string
|
||
/**
|
||
* RegURL is an account endpoint URL, allowing for creating new accounts.
|
||
* Pre-RFC 8555 CAs also allow modifying existing accounts at this URL.
|
||
*/
|
||
regURL: string
|
||
/**
|
||
* OrderURL is used to initiate the certificate issuance flow
|
||
* as described in RFC 8555.
|
||
*/
|
||
orderURL: string
|
||
/**
|
||
* AuthzURL is used to initiate identifier pre-authorization flow.
|
||
* Empty string indicates the flow is unsupported by the CA.
|
||
*/
|
||
authzURL: string
|
||
/**
|
||
* CertURL is a new certificate issuance endpoint URL.
|
||
* It is non-RFC 8555 compliant and is obsoleted by OrderURL.
|
||
*/
|
||
certURL: string
|
||
/**
|
||
* RevokeURL is used to initiate a certificate revocation flow.
|
||
*/
|
||
revokeURL: string
|
||
/**
|
||
* KeyChangeURL allows to perform account key rollover flow.
|
||
*/
|
||
keyChangeURL: string
|
||
/**
|
||
* Term is a URI identifying the current terms of service.
|
||
*/
|
||
terms: string
|
||
/**
|
||
* Website is an HTTP or HTTPS URL locating a website
|
||
* providing more information about the ACME server.
|
||
*/
|
||
website: string
|
||
/**
|
||
* CAA consists of lowercase hostname elements, which the ACME server
|
||
* recognises as referring to itself for the purposes of CAA record validation
|
||
* as defined in RFC 6844.
|
||
*/
|
||
caa: Array<string>
|
||
/**
|
||
* ExternalAccountRequired indicates that the CA requires for all account-related
|
||
* requests to include external account binding information.
|
||
*/
|
||
externalAccountRequired: boolean
|
||
}
|
||
/**
|
||
* Order represents a client's request for a certificate.
|
||
* It tracks the request flow progress through to issuance.
|
||
*/
|
||
interface Order {
|
||
/**
|
||
* URI uniquely identifies an order.
|
||
*/
|
||
uri: string
|
||
/**
|
||
* Status represents the current status of the order.
|
||
* It indicates which action the client should take.
|
||
*
|
||
* Possible values are StatusPending, StatusReady, StatusProcessing, StatusValid and StatusInvalid.
|
||
* Pending means the CA does not believe that the client has fulfilled the requirements.
|
||
* Ready indicates that the client has fulfilled all the requirements and can submit a CSR
|
||
* to obtain a certificate. This is done with Client's CreateOrderCert.
|
||
* Processing means the certificate is being issued.
|
||
* Valid indicates the CA has issued the certificate. It can be downloaded
|
||
* from the Order's CertURL. This is done with Client's FetchCert.
|
||
* Invalid means the certificate will not be issued. Users should consider this order
|
||
* abandoned.
|
||
*/
|
||
status: string
|
||
/**
|
||
* Expires is the timestamp after which CA considers this order invalid.
|
||
*/
|
||
expires: time.Time
|
||
/**
|
||
* Identifiers contains all identifier objects which the order pertains to.
|
||
*/
|
||
identifiers: Array<AuthzID>
|
||
/**
|
||
* NotBefore is the requested value of the notBefore field in the certificate.
|
||
*/
|
||
notBefore: time.Time
|
||
/**
|
||
* NotAfter is the requested value of the notAfter field in the certificate.
|
||
*/
|
||
notAfter: time.Time
|
||
/**
|
||
* AuthzURLs represents authorizations to complete before a certificate
|
||
* for identifiers specified in the order can be issued.
|
||
* It also contains unexpired authorizations that the client has completed
|
||
* in the past.
|
||
*
|
||
* Authorization objects can be fetched using Client's GetAuthorization method.
|
||
*
|
||
* The required authorizations are dictated by CA policies.
|
||
* There may not be a 1:1 relationship between the identifiers and required authorizations.
|
||
* Required authorizations can be identified by their StatusPending status.
|
||
*
|
||
* For orders in the StatusValid or StatusInvalid state these are the authorizations
|
||
* which were completed.
|
||
*/
|
||
authzURLs: Array<string>
|
||
/**
|
||
* FinalizeURL is the endpoint at which a CSR is submitted to obtain a certificate
|
||
* once all the authorizations are satisfied.
|
||
*/
|
||
finalizeURL: string
|
||
/**
|
||
* CertURL points to the certificate that has been issued in response to this order.
|
||
*/
|
||
certURL: string
|
||
/**
|
||
* The error that occurred while processing the order as received from a CA, if any.
|
||
*/
|
||
error?: Error
|
||
}
|
||
/**
|
||
* OrderOption allows customizing Client.AuthorizeOrder call.
|
||
*/
|
||
interface OrderOption {
|
||
}
|
||
/**
|
||
* Authorization encodes an authorization response.
|
||
*/
|
||
interface Authorization {
|
||
/**
|
||
* URI uniquely identifies a authorization.
|
||
*/
|
||
uri: string
|
||
/**
|
||
* Status is the current status of an authorization.
|
||
* Possible values are StatusPending, StatusValid, StatusInvalid, StatusDeactivated,
|
||
* StatusExpired and StatusRevoked.
|
||
*/
|
||
status: string
|
||
/**
|
||
* Identifier is what the account is authorized to represent.
|
||
*/
|
||
identifier: AuthzID
|
||
/**
|
||
* The timestamp after which the CA considers the authorization invalid.
|
||
*/
|
||
expires: time.Time
|
||
/**
|
||
* Wildcard is true for authorizations of a wildcard domain name.
|
||
*/
|
||
wildcard: boolean
|
||
/**
|
||
* Challenges that the client needs to fulfill in order to prove possession
|
||
* of the identifier (for pending authorizations).
|
||
* For valid authorizations, the challenge that was validated.
|
||
* For invalid authorizations, the challenge that was attempted and failed.
|
||
*
|
||
* RFC 8555 compatible CAs require users to fuflfill only one of the challenges.
|
||
*/
|
||
challenges: Array<(Challenge | undefined)>
|
||
/**
|
||
* A collection of sets of challenges, each of which would be sufficient
|
||
* to prove possession of the identifier.
|
||
* Clients must complete a set of challenges that covers at least one set.
|
||
* Challenges are identified by their indices in the challenges array.
|
||
* If this field is empty, the client needs to complete all challenges.
|
||
*
|
||
* This field is unused in RFC 8555.
|
||
*/
|
||
combinations: Array<Array<number>>
|
||
}
|
||
/**
|
||
* AuthzID is an identifier that an account is authorized to represent.
|
||
*/
|
||
interface AuthzID {
|
||
type: string // The type of identifier, "dns" or "ip".
|
||
value: string // The identifier itself, e.g. "example.org".
|
||
}
|
||
/**
|
||
* Challenge encodes a returned CA challenge.
|
||
* Its Error field may be non-nil if the challenge is part of an Authorization
|
||
* with StatusInvalid.
|
||
*/
|
||
interface Challenge {
|
||
/**
|
||
* Type is the challenge type, e.g. "http-01", "tls-alpn-01", "dns-01".
|
||
*/
|
||
type: string
|
||
/**
|
||
* URI is where a challenge response can be posted to.
|
||
*/
|
||
uri: string
|
||
/**
|
||
* Token is a random value that uniquely identifies the challenge.
|
||
*/
|
||
token: string
|
||
/**
|
||
* Status identifies the status of this challenge.
|
||
* In RFC 8555, possible values are StatusPending, StatusProcessing, StatusValid,
|
||
* and StatusInvalid.
|
||
*/
|
||
status: string
|
||
/**
|
||
* Validated is the time at which the CA validated this challenge.
|
||
* Always zero value in pre-RFC 8555.
|
||
*/
|
||
validated: time.Time
|
||
/**
|
||
* Error indicates the reason for an authorization failure
|
||
* when this challenge was used.
|
||
* The type of a non-nil value is *Error.
|
||
*/
|
||
error: Error
|
||
}
|
||
/**
|
||
* CertOption is an optional argument type for the TLS ChallengeCert methods for
|
||
* customizing a temporary certificate for TLS-based challenges.
|
||
*/
|
||
interface CertOption {
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package driver defines interfaces to be implemented by database
|
||
* drivers as used by package sql.
|
||
*
|
||
* Most code should use package sql.
|
||
*
|
||
* The driver interface has evolved over time. Drivers should implement
|
||
* Connector and DriverContext interfaces.
|
||
* The Connector.Connect and Driver.Open methods should never return ErrBadConn.
|
||
* ErrBadConn should only be returned from Validator, SessionResetter, or
|
||
* a query method if the connection is already in an invalid (e.g. closed) state.
|
||
*
|
||
* All Conn implementations should implement the following interfaces:
|
||
* Pinger, SessionResetter, and Validator.
|
||
*
|
||
* If named parameters or context are supported, the driver's Conn should implement:
|
||
* ExecerContext, QueryerContext, ConnPrepareContext, and ConnBeginTx.
|
||
*
|
||
* To support custom data types, implement NamedValueChecker. NamedValueChecker
|
||
* also allows queries to accept per-query options as a parameter by returning
|
||
* ErrRemoveArgument from CheckNamedValue.
|
||
*
|
||
* If multiple result sets are supported, Rows should implement RowsNextResultSet.
|
||
* If the driver knows how to describe the types present in the returned result
|
||
* it should implement the following interfaces: RowsColumnTypeScanType,
|
||
* RowsColumnTypeDatabaseTypeName, RowsColumnTypeLength, RowsColumnTypeNullable,
|
||
* and RowsColumnTypePrecisionScale. A given row value may also return a Rows
|
||
* type, which may represent a database cursor value.
|
||
*
|
||
* Before a connection is returned to the connection pool after use, IsValid is
|
||
* called if implemented. Before a connection is reused for another query,
|
||
* ResetSession is called if implemented. If a connection is never returned to the
|
||
* connection pool but immediately reused, then ResetSession is called prior to
|
||
* reuse but IsValid is not called.
|
||
*/
|
||
namespace driver {
|
||
/**
|
||
* Result is the result of a query execution.
|
||
*/
|
||
interface Result {
|
||
/**
|
||
* LastInsertId returns the database's auto-generated ID
|
||
* after, for example, an INSERT into a table with primary
|
||
* key.
|
||
*/
|
||
lastInsertId(): number
|
||
/**
|
||
* RowsAffected returns the number of rows affected by the
|
||
* query.
|
||
*/
|
||
rowsAffected(): number
|
||
}
|
||
/**
|
||
* Rows is an iterator over an executed query's results.
|
||
*/
|
||
interface Rows {
|
||
/**
|
||
* Columns returns the names of the columns. The number of
|
||
* columns of the result is inferred from the length of the
|
||
* slice. If a particular column name isn't known, an empty
|
||
* string should be returned for that entry.
|
||
*/
|
||
columns(): Array<string>
|
||
/**
|
||
* Close closes the rows iterator.
|
||
*/
|
||
close(): void
|
||
/**
|
||
* Next is called to populate the next row of data into
|
||
* the provided slice. The provided slice will be the same
|
||
* size as the Columns() are wide.
|
||
*
|
||
* Next should return io.EOF when there are no more rows.
|
||
*
|
||
* The dest should not be written to outside of Next. Care
|
||
* should be taken when closing Rows not to modify
|
||
* a buffer held in dest.
|
||
*/
|
||
next(dest: Array<Value>): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package crypto collects common cryptographic constants.
|
||
*/
|
||
namespace crypto {
|
||
/**
|
||
* PublicKey represents a public key using an unspecified algorithm.
|
||
*
|
||
* Although this type is an empty interface for backwards compatibility reasons,
|
||
* all public key types in the standard library implement the following interface
|
||
*
|
||
* ```
|
||
* interface{
|
||
* Equal(x crypto.PublicKey) bool
|
||
* }
|
||
* ```
|
||
*
|
||
* which can be used for increased type safety within applications.
|
||
*/
|
||
interface PublicKey extends _TygojaAny{}
|
||
/**
|
||
* SignerOpts contains options for signing with a Signer.
|
||
*/
|
||
interface SignerOpts {
|
||
/**
|
||
* HashFunc returns an identifier for the hash function used to produce
|
||
* the message passed to Signer.Sign, or else zero to indicate that no
|
||
* hashing was done.
|
||
*/
|
||
hashFunc(): Hash
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package reflect implements run-time reflection, allowing a program to
|
||
* manipulate objects with arbitrary types. The typical use is to take a value
|
||
* with static type interface{} and extract its dynamic type information by
|
||
* calling TypeOf, which returns a Type.
|
||
*
|
||
* A call to ValueOf returns a Value representing the run-time data.
|
||
* Zero takes a Type and returns a Value representing a zero value
|
||
* for that type.
|
||
*
|
||
* See "The Laws of Reflection" for an introduction to reflection in Go:
|
||
* https://golang.org/doc/articles/laws_of_reflection.html
|
||
*/
|
||
namespace reflect {
|
||
interface flag extends Number{}
|
||
/**
|
||
* A MapIter is an iterator for ranging over a map.
|
||
* See Value.MapRange.
|
||
*/
|
||
interface MapIter {
|
||
}
|
||
interface MapIter {
|
||
/**
|
||
* Key returns the key of iter's current map entry.
|
||
*/
|
||
key(): Value
|
||
}
|
||
interface MapIter {
|
||
/**
|
||
* Value returns the value of iter's current map entry.
|
||
*/
|
||
value(): Value
|
||
}
|
||
interface MapIter {
|
||
/**
|
||
* Next advances the map iterator and reports whether there is another
|
||
* entry. It returns false when iter is exhausted; subsequent
|
||
* calls to Key, Value, or Next will panic.
|
||
*/
|
||
next(): boolean
|
||
}
|
||
interface MapIter {
|
||
/**
|
||
* Reset modifies iter to iterate over v.
|
||
* It panics if v's Kind is not Map and v is not the zero Value.
|
||
* Reset(Value{}) causes iter to not to refer to any map,
|
||
* which may allow the previously iterated-over map to be garbage collected.
|
||
*/
|
||
reset(v: Value): void
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package asn1 implements parsing of DER-encoded ASN.1 data structures,
|
||
* as defined in ITU-T Rec X.690.
|
||
*
|
||
* See also “A Layman's Guide to a Subset of ASN.1, BER, and DER,”
|
||
* http://luca.ntop.org/Teaching/Appunti/asn1.html.
|
||
*/
|
||
namespace asn1 {
|
||
/**
|
||
* A RawValue represents an undecoded ASN.1 object.
|
||
*/
|
||
interface RawValue {
|
||
class: number
|
||
isCompound: boolean
|
||
bytes: string
|
||
fullBytes: string // includes the tag and length
|
||
}
|
||
/**
|
||
* RawContent is used to signal that the undecoded, DER data needs to be
|
||
* preserved for a struct. To use it, the first field of the struct must have
|
||
* this type. It's an error for any of the other fields to have this type.
|
||
*/
|
||
interface RawContent extends String{}
|
||
}
|
||
|
||
/**
|
||
* Package pkix contains shared, low level structures used for ASN.1 parsing
|
||
* and serialization of X.509 certificates, CRL and OCSP.
|
||
*/
|
||
namespace pkix {
|
||
interface RelativeDistinguishedNameSET extends Array<AttributeTypeAndValue>{}
|
||
}
|
||
|
||
/**
|
||
* Package tls partially implements TLS 1.2, as specified in RFC 5246,
|
||
* and TLS 1.3, as specified in RFC 8446.
|
||
*/
|
||
namespace tls {
|
||
/**
|
||
* ClientSessionState contains the state needed by clients to resume TLS
|
||
* sessions.
|
||
*/
|
||
interface ClientSessionState {
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package acme provides an implementation of the
|
||
* Automatic Certificate Management Environment (ACME) spec,
|
||
* most famously used by Let's Encrypt.
|
||
*
|
||
* The initial implementation of this package was based on an early version
|
||
* of the spec. The current implementation supports only the modern
|
||
* RFC 8555 but some of the old API surface remains for compatibility.
|
||
* While code using the old API will still compile, it will return an error.
|
||
* Note the deprecation comments to update your code.
|
||
*
|
||
* See https://tools.ietf.org/html/rfc8555 for the spec.
|
||
*
|
||
* Most common scenarios will want to use autocert subdirectory instead,
|
||
* which provides automatic access to certificates from Let's Encrypt
|
||
* and any other ACME-based CA.
|
||
*/
|
||
namespace acme {
|
||
/**
|
||
* Error is an ACME error, defined in Problem Details for HTTP APIs doc
|
||
* http://tools.ietf.org/html/draft-ietf-appsawg-http-problem.
|
||
*/
|
||
interface Error {
|
||
/**
|
||
* StatusCode is The HTTP status code generated by the origin server.
|
||
*/
|
||
statusCode: number
|
||
/**
|
||
* ProblemType is a URI reference that identifies the problem type,
|
||
* typically in a "urn:acme:error:xxx" form.
|
||
*/
|
||
problemType: string
|
||
/**
|
||
* Detail is a human-readable explanation specific to this occurrence of the problem.
|
||
*/
|
||
detail: string
|
||
/**
|
||
* Instance indicates a URL that the client should direct a human user to visit
|
||
* in order for instructions on how to agree to the updated Terms of Service.
|
||
* In such an event CA sets StatusCode to 403, ProblemType to
|
||
* "urn:ietf:params:acme:error:userActionRequired" and a Link header with relation
|
||
* "terms-of-service" containing the latest TOS URL.
|
||
*/
|
||
instance: string
|
||
/**
|
||
* Header is the original server error response headers.
|
||
* It may be nil.
|
||
*/
|
||
header: http.Header
|
||
/**
|
||
* Subproblems may contain more detailed information about the individual problems
|
||
* that caused the error. This field is only sent by RFC 8555 compatible ACME
|
||
* servers. Defined in RFC 8555 Section 6.7.1.
|
||
*/
|
||
subproblems: Array<Subproblem>
|
||
}
|
||
interface Error {
|
||
error(): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package crypto collects common cryptographic constants.
|
||
*/
|
||
namespace crypto {
|
||
/**
|
||
* Hash identifies a cryptographic hash function that is implemented in another
|
||
* package.
|
||
*/
|
||
interface Hash extends Number{}
|
||
interface Hash {
|
||
/**
|
||
* HashFunc simply returns the value of h so that Hash implements SignerOpts.
|
||
*/
|
||
hashFunc(): Hash
|
||
}
|
||
interface Hash {
|
||
string(): string
|
||
}
|
||
interface Hash {
|
||
/**
|
||
* Size returns the length, in bytes, of a digest resulting from the given hash
|
||
* function. It doesn't require that the hash function in question be linked
|
||
* into the program.
|
||
*/
|
||
size(): number
|
||
}
|
||
interface Hash {
|
||
/**
|
||
* New returns a new hash.Hash calculating the given hash function. New panics
|
||
* if the hash function is not linked into the binary.
|
||
*/
|
||
new(): hash.Hash
|
||
}
|
||
interface Hash {
|
||
/**
|
||
* Available reports whether the given hash function is linked into the binary.
|
||
*/
|
||
available(): boolean
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package acme provides an implementation of the
|
||
* Automatic Certificate Management Environment (ACME) spec,
|
||
* most famously used by Let's Encrypt.
|
||
*
|
||
* The initial implementation of this package was based on an early version
|
||
* of the spec. The current implementation supports only the modern
|
||
* RFC 8555 but some of the old API surface remains for compatibility.
|
||
* While code using the old API will still compile, it will return an error.
|
||
* Note the deprecation comments to update your code.
|
||
*
|
||
* See https://tools.ietf.org/html/rfc8555 for the spec.
|
||
*
|
||
* Most common scenarios will want to use autocert subdirectory instead,
|
||
* which provides automatic access to certificates from Let's Encrypt
|
||
* and any other ACME-based CA.
|
||
*/
|
||
namespace acme {
|
||
/**
|
||
* A Subproblem describes an ACME subproblem as reported in an Error.
|
||
*/
|
||
interface Subproblem {
|
||
/**
|
||
* Type is a URI reference that identifies the problem type,
|
||
* typically in a "urn:acme:error:xxx" form.
|
||
*/
|
||
type: string
|
||
/**
|
||
* Detail is a human-readable explanation specific to this occurrence of the problem.
|
||
*/
|
||
detail: string
|
||
/**
|
||
* Instance indicates a URL that the client should direct a human user to visit
|
||
* in order for instructions on how to agree to the updated Terms of Service.
|
||
* In such an event CA sets StatusCode to 403, Type to
|
||
* "urn:ietf:params:acme:error:userActionRequired", and adds a Link header with relation
|
||
* "terms-of-service" containing the latest TOS URL.
|
||
*/
|
||
instance: string
|
||
/**
|
||
* Identifier may contain the ACME identifier that the error is for.
|
||
*/
|
||
identifier?: AuthzID
|
||
}
|
||
interface Subproblem {
|
||
string(): string
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Package hash provides interfaces for hash functions.
|
||
*/
|
||
namespace hash {
|
||
/**
|
||
* Hash is the common interface implemented by all hash functions.
|
||
*
|
||
* Hash implementations in the standard library (e.g. hash/crc32 and
|
||
* crypto/sha256) implement the encoding.BinaryMarshaler and
|
||
* encoding.BinaryUnmarshaler interfaces. Marshaling a hash implementation
|
||
* allows its internal state to be saved and used for additional processing
|
||
* later, without having to re-write the data previously written to the hash.
|
||
* The hash state may contain portions of the input in its original form,
|
||
* which users are expected to handle for any possible security implications.
|
||
*
|
||
* Compatibility: Any future changes to hash or crypto packages will endeavor
|
||
* to maintain compatibility with state encoded using previous versions.
|
||
* That is, any released versions of the packages should be able to
|
||
* decode data written with any previously released version,
|
||
* subject to issues such as security fixes.
|
||
* See the Go compatibility document for background: https://golang.org/doc/go1compat
|
||
*/
|
||
interface Hash {
|
||
/**
|
||
* Write (via the embedded io.Writer interface) adds more data to the running hash.
|
||
* It never returns an error.
|
||
*/
|
||
/**
|
||
* Sum appends the current hash to b and returns the resulting slice.
|
||
* It does not change the underlying hash state.
|
||
*/
|
||
sum(b: string): string
|
||
/**
|
||
* Reset resets the Hash to its initial state.
|
||
*/
|
||
reset(): void
|
||
/**
|
||
* Size returns the number of bytes Sum will return.
|
||
*/
|
||
size(): number
|
||
/**
|
||
* BlockSize returns the hash's underlying block size.
|
||
* The Write method must be able to accept any amount
|
||
* of data, but it may operate more efficiently if all writes
|
||
* are a multiple of the block size.
|
||
*/
|
||
blockSize(): number
|
||
}
|
||
}
|