Skip to main content

Function: defineParser()

function defineParser<S>(driver): {
name: string;
optionsSchema?: S;
anchor?: string | Promise<string | undefined> | undefined;
parse: | {
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;
};
};
}
| Promise<{
entities: {
[key: string]: {
additionalProperties?: FieldType;
dbName?: string;
doc?: string;
enums?: {
[key: string]: {
dbName?: string;
doc?: string;
name: string;
values: {
dbName?: ...;
doc?: ...;
name: ...;
}[];
};
};
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?: string[] | Promise<string[]>;
};

Defined in: packages/config/src/define-driver.ts:24

Type Parameters​

Type ParameterDefault type
S extends GenericSchema<unknown, unknown> | undefinedundefined

Parameters​

ParameterTypeDescription
driver{ name: string; optionsSchema?: S; anchor?: string | Promise<string | undefined> | undefined; parse: | { 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; }; }; } | Promise<{ entities: { [key: string]: { additionalProperties?: FieldType; dbName?: string; doc?: string; enums?: { [key: string]: { dbName?: string; doc?: string; name: string; values: { dbName?: ...; doc?: ...; name: ...; }[]; }; }; 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?: string[] | Promise<string[]>; }-
driver.namestring-
driver.optionsSchema?SValibot schema for this driver's options; absent => no options accepted.
driver.anchor?-
driver.parse-
driver.watchPaths?-

Returns​

name​

name: string;

optionsSchema?​

optional optionsSchema?: S;

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

anchor()?​

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

Curried like parse; run() calls it before parse() and passes the result as ParseContext.anchorDir. Return undefined to anchor on rootDir. Must not throw for a "not found" case.

Parameters​

ParameterType
rootDirstring
optionsDriverOptions<S>

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?: ... | ...;
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;
};
};
}
| Promise<{
entities: {
[key: string]: {
additionalProperties?: FieldType;
dbName?: string;
doc?: string;
enums?: {
[key: string]: {
dbName?: string;
doc?: string;
name: string;
values: {
dbName?: ...;
doc?: ...;
name: ...;
}[];
};
};
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;
};
};
}>;

Parameters​

ParameterType
ctxParseContext
optionsDriverOptions<S>

Returns​

| { 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; }; }; } | Promise<{ entities: { [key: string]: { additionalProperties?: FieldType; dbName?: string; doc?: string; enums?: { [key: string]: { dbName?: string; doc?: string; name: string; values: { dbName?: ...; doc?: ...; name: ...; }[]; }; }; 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[]>;

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

Parameters​

ParameterType
ctxParseContext
optionsDriverOptions<S>

Returns​

string[] | Promise<string[]>