Skip to main content

Interface: TakoParser<O>

Defined in: packages/config/src/types.ts:26

A parser driver: @kurotako/core's Parser plus an optional optionsSchema and an options second argument. load.ts validates options against optionsSchema, then curries it away so core sees a plain Parser.

Type Parameters​

Type ParameterDefault type
Ovoid

Properties​

name​

name: string;

Defined in: packages/config/src/types.ts:27


optionsSchema?​

optional optionsSchema?: GenericSchema<unknown, O>;

Defined in: packages/config/src/types.ts:29

Valibot schema for this driver's options; absent => no options accepted.

Methods​

anchor()?​

optional anchor(rootDir, options): string | Promise<string | undefined> | undefined;

Defined in: packages/config/src/types.ts:40

The directory this source is anchored at, for toolchain-dependency resolution. load.ts curries options away; core's run() calls the result before parse() and passes it as ParseContext.anchorDir. Return undefined (or omit) to anchor on rootDir. Must not throw for a "not found" case.

Parameters​

ParameterType
rootDirstring
optionsO

Returns​

string | Promise<string | undefined> | undefined


parse()​

parse(ctx, options):
| {
entities: {
[key: string]: {
additionalProperties?: FieldType;
dbName?: string;
doc?: string;
enums?: {
[key: string]: {
dbName?: string;
doc?: string;
name: string;
values: {
dbName?: string;
doc?: string;
name: string;
}[];
};
};
fields: {
constraints: {
format?: | "email"
| "url"
| "uuid"
| "cuid"
| "cuid2"
| "ulid"
| "datetime"
| "date"
| "time"
| "duration"
| "ipv4"
| "ipv6";
max?: number;
maxLength?: number;
min?: number;
minLength?: number;
regex?: string;
unique?: boolean;
};
dbName?: string;
default?: | {
kind: "value";
value: JsonValue;
}
| {
args?: JsonValue[];
expr: string;
kind: "expr";
};
doc?: string;
hidden?: boolean;
list: boolean;
name: string;
nullable: boolean;
optional: boolean;
type: FieldType;
}[];
indexes: (
| {
fields: string[];
kind: "columns";
name?: string;
type?: "btree" | "hash" | "gin" | "gist" | "brin" | "spgist";
}
| {
expression: string;
kind: "expression";
name?: string;
type?: "btree" | "hash" | "gin" | "gist" | "brin" | "spgist";
})[];
name: string;
primaryKey?: string[];
relations: {
backRelation?: string;
cardinality: "one" | "many";
fkFields?: string[];
name: string;
onDelete?: "cascade" | "restrict" | "setNull" | "setDefault" | "noAction";
onUpdate?: "cascade" | "restrict" | "setNull" | "setDefault" | "noAction";
optional: boolean;
owning: boolean;
references?: string[];
target: {
entity: string;
namespace: string;
};
}[];
uniques: {
fields: string[];
name?: string;
}[];
};
};
enums: {
[key: string]: {
dbName?: string;
doc?: string;
name: string;
values: {
dbName?: string;
doc?: string;
name: string;
}[];
};
};
namespace: string;
parser: string;
parserVersion?: string;
typeAliases?: {
[key: string]: {
doc?: string;
name: string;
type: FieldType;
};
};
}
| Promise<{
entities: {
[key: string]: {
additionalProperties?: FieldType;
dbName?: string;
doc?: string;
enums?: {
[key: string]: {
dbName?: string;
doc?: string;
name: string;
values: {
dbName?: ... | ...;
doc?: ... | ...;
name: string;
}[];
};
};
fields: {
constraints: {
format?: | "email"
| "url"
| "uuid"
| "cuid"
| "cuid2"
| "ulid"
| "datetime"
| "date"
| "time"
| "duration"
| "ipv4"
| "ipv6";
max?: number;
maxLength?: number;
min?: number;
minLength?: number;
regex?: string;
unique?: boolean;
};
dbName?: string;
default?: | {
kind: "value";
value: JsonValue;
}
| {
args?: ...[];
expr: string;
kind: "expr";
};
doc?: string;
hidden?: boolean;
list: boolean;
name: string;
nullable: boolean;
optional: boolean;
type: FieldType;
}[];
indexes: (
| {
fields: string[];
kind: "columns";
name?: string;
type?: "btree" | "hash" | "gin" | "gist" | "brin" | "spgist";
}
| {
expression: string;
kind: "expression";
name?: string;
type?: "btree" | "hash" | "gin" | "gist" | "brin" | "spgist";
})[];
name: string;
primaryKey?: string[];
relations: {
backRelation?: string;
cardinality: "one" | "many";
fkFields?: string[];
name: string;
onDelete?: "cascade" | "restrict" | "setNull" | "setDefault" | "noAction";
onUpdate?: "cascade" | "restrict" | "setNull" | "setDefault" | "noAction";
optional: boolean;
owning: boolean;
references?: string[];
target: {
entity: string;
namespace: string;
};
}[];
uniques: {
fields: string[];
name?: string;
}[];
};
};
enums: {
[key: string]: {
dbName?: string;
doc?: string;
name: string;
values: {
dbName?: string;
doc?: string;
name: string;
}[];
};
};
namespace: string;
parser: string;
parserVersion?: string;
typeAliases?: {
[key: string]: {
doc?: string;
name: string;
type: FieldType;
};
};
}>;

Defined in: packages/config/src/types.ts:30

Parameters​

ParameterType
ctxParseContext
optionsO

Returns​

| { entities: { [key: string]: { additionalProperties?: FieldType; dbName?: string; doc?: string; enums?: { [key: string]: { dbName?: string; doc?: string; name: string; values: { dbName?: string; doc?: string; name: string; }[]; }; }; fields: { constraints: { format?: | "email" | "url" | "uuid" | "cuid" | "cuid2" | "ulid" | "datetime" | "date" | "time" | "duration" | "ipv4" | "ipv6"; max?: number; maxLength?: number; min?: number; minLength?: number; regex?: string; unique?: boolean; }; dbName?: string; default?: | { kind: "value"; value: JsonValue; } | { args?: JsonValue[]; expr: string; kind: "expr"; }; doc?: string; hidden?: boolean; list: boolean; name: string; nullable: boolean; optional: boolean; type: FieldType; }[]; indexes: ( | { fields: string[]; kind: "columns"; name?: string; type?: "btree" | "hash" | "gin" | "gist" | "brin" | "spgist"; } | { expression: string; kind: "expression"; name?: string; type?: "btree" | "hash" | "gin" | "gist" | "brin" | "spgist"; })[]; name: string; primaryKey?: string[]; relations: { backRelation?: string; cardinality: "one" | "many"; fkFields?: string[]; name: string; onDelete?: "cascade" | "restrict" | "setNull" | "setDefault" | "noAction"; onUpdate?: "cascade" | "restrict" | "setNull" | "setDefault" | "noAction"; optional: boolean; owning: boolean; references?: string[]; target: { entity: string; namespace: string; }; }[]; uniques: { fields: string[]; name?: string; }[]; }; }; enums: { [key: string]: { dbName?: string; doc?: string; name: string; values: { dbName?: string; doc?: string; name: string; }[]; }; }; namespace: string; parser: string; parserVersion?: string; typeAliases?: { [key: string]: { doc?: string; name: string; type: FieldType; }; }; } | Promise<{ entities: { [key: string]: { additionalProperties?: FieldType; dbName?: string; doc?: string; enums?: { [key: string]: { dbName?: string; doc?: string; name: string; values: { dbName?: ... | ...; doc?: ... | ...; name: string; }[]; }; }; fields: { constraints: { format?: | "email" | "url" | "uuid" | "cuid" | "cuid2" | "ulid" | "datetime" | "date" | "time" | "duration" | "ipv4" | "ipv6"; max?: number; maxLength?: number; min?: number; minLength?: number; regex?: string; unique?: boolean; }; dbName?: string; default?: | { kind: "value"; value: JsonValue; } | { args?: ...[]; expr: string; kind: "expr"; }; doc?: string; hidden?: boolean; list: boolean; name: string; nullable: boolean; optional: boolean; type: FieldType; }[]; indexes: ( | { fields: string[]; kind: "columns"; name?: string; type?: "btree" | "hash" | "gin" | "gist" | "brin" | "spgist"; } | { expression: string; kind: "expression"; name?: string; type?: "btree" | "hash" | "gin" | "gist" | "brin" | "spgist"; })[]; name: string; primaryKey?: string[]; relations: { backRelation?: string; cardinality: "one" | "many"; fkFields?: string[]; name: string; onDelete?: "cascade" | "restrict" | "setNull" | "setDefault" | "noAction"; onUpdate?: "cascade" | "restrict" | "setNull" | "setDefault" | "noAction"; optional: boolean; owning: boolean; references?: string[]; target: { entity: string; namespace: string; }; }[]; uniques: { fields: string[]; name?: string; }[]; }; }; enums: { [key: string]: { dbName?: string; doc?: string; name: string; values: { dbName?: string; doc?: string; name: string; }[]; }; }; namespace: string; parser: string; parserVersion?: string; typeAliases?: { [key: string]: { doc?: string; name: string; type: FieldType; }; }; }>


watchPaths()?​

optional watchPaths(ctx, options): string[] | Promise<string[]>;

Defined in: packages/config/src/types.ts:32

Curried like parse; consumed by tako generate --watch.

Parameters​

ParameterType
ctxParseContext
optionsO

Returns​

string[] | Promise<string[]>