@vibeorm/dsl 2.2.3 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/dist/column.d.ts +10 -2
- package/dist/column.d.ts.map +1 -1
- package/dist/generator/prisma.d.ts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +65 -22
- package/dist/index.js.map +8 -8
- package/dist/model.d.ts.map +1 -1
- package/dist/relation-plan.d.ts +3 -1
- package/dist/relation-plan.d.ts.map +1 -1
- package/dist/to-ir.d.ts +13 -2
- package/dist/to-ir.d.ts.map +1 -1
- package/dist/types.d.ts +12 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -69,7 +69,7 @@ Id strategies are `dsl.id({ type: "ulid" | "uuid" | "cuid" | "nanoid" | "autoinc
|
|
|
69
69
|
|
|
70
70
|
On every column: `.optional()`, `.unique()`, `.index()`, `.array()`, `.default(value)`, `.map("db_col")`, `.dbgenerated("expr")`, `.comment("...")`.
|
|
71
71
|
|
|
72
|
-
Kind-specific: `.maxLength(n)` and `.text()` on strings, `.precision(p, s)` on decimals, `.defaultNow()`, `.updatedAt()` and `.tz()` on datetimes.
|
|
72
|
+
Kind-specific: `.maxLength(n)` and `.text()` on strings, `.precision(p, s)` on decimals, `.defaultNow()`, `.updatedAt()` and `.tz()` on datetimes. `.tz({ precision: 3 })` declares `@db.Timestamptz(3)`: it stores exactly what a JavaScript `Date` holds, so a database-written time reads back unchanged and `findPage` can order by the column without an assertion.
|
|
73
73
|
|
|
74
74
|
### Database defaults
|
|
75
75
|
|
|
@@ -89,6 +89,14 @@ Physical index names use `map`, separately from a compound unique's client-selec
|
|
|
89
89
|
indexes: (i) => [i.on(["arrival"], { map: "arrival_lookup" })],
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
+
On PostgreSQL and PGlite a non-unique index can set an operator class per field with `ops`, keyed by field name, each value a qualified name:
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
indexes: (i) => [i.on(["email"], { ops: { email: { namespace: "pg_catalog", name: "text_pattern_ops" } } })],
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
`ops` on `i.unique(...)` is refused (`VIBE_UNSUPPORTED_CAPABILITY`), as are operator classes on SQLite and MySQL. `dsl.generate.prisma` refuses a schema that uses them, because Prisma's `ops:` syntax cannot carry the qualified name.
|
|
99
|
+
|
|
92
100
|
## Relations
|
|
93
101
|
|
|
94
102
|
Relations are declared separately from columns, in `dsl.defineRelations(models, (r) => ...)`, which keeps column references typed on both ends.
|
package/dist/column.d.ts
CHANGED
|
@@ -77,8 +77,15 @@ export declare class ChainableDecimalColumn extends ChainableColumn<"decimal"> {
|
|
|
77
77
|
/** DateTime column with timestamp-specific helpers. */
|
|
78
78
|
export declare class ChainableDatetimeColumn extends ChainableColumn<"datetime"> {
|
|
79
79
|
constructor(config?: DatetimeColumnConfig);
|
|
80
|
-
/**
|
|
81
|
-
|
|
80
|
+
/**
|
|
81
|
+
* `@db.Timestamptz` — timezone-aware timestamp; `{ precision: n }` declares
|
|
82
|
+
* `@db.Timestamptz(n)` (0–6 fractional-seconds digits). Precision 3 stores
|
|
83
|
+
* exactly what a JavaScript `Date` holds, so a database-written value reads
|
|
84
|
+
* back unchanged and `findPage` may order by it without an assertion.
|
|
85
|
+
*/
|
|
86
|
+
tz(options?: {
|
|
87
|
+
readonly precision?: number;
|
|
88
|
+
}): this;
|
|
82
89
|
/** `@updatedAt` — refreshed on every update. */
|
|
83
90
|
updatedAt(): this;
|
|
84
91
|
/** `@default(now())` */
|
|
@@ -128,6 +135,7 @@ export declare function boolean(config?: BooleanColumnConfig): ChainableColumn<"
|
|
|
128
135
|
*
|
|
129
136
|
* @example
|
|
130
137
|
* dsl.datetime().defaultNow().updatedAt().tz()
|
|
138
|
+
* dsl.datetime().defaultNow().tz({ precision: 3 })
|
|
131
139
|
*/
|
|
132
140
|
export declare function datetime(config?: DatetimeColumnConfig): ChainableDatetimeColumn;
|
|
133
141
|
/** Json column with a consumer-declared payload type (typed JSON). */
|
package/dist/column.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../src/column.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../src/column.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/generator/prisma.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAIV,qBAAqB,EACrB,SAAS,EAEV,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/generator/prisma.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAIV,qBAAqB,EACrB,SAAS,EAEV,MAAM,aAAa,CAAC;AAsTrB;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,GAAE,qBAA0B,GAAG,MAAM,CAiD5F"}
|
package/dist/index.d.ts
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* const prisma = dsl.generate.prisma(schema); // .prisma text
|
|
34
34
|
*/
|
|
35
35
|
import type { ExtensionRegistry, Provider, SchemaIR } from "@vibeorm/schema";
|
|
36
|
-
import type { ChainableColumn, ChainableDatetimeColumn, ChainableDecimalColumn, ChainableEnumColumn, ChainableIdColumn, ChainableIntegerColumn, ChainableStringColumn } from "./column.ts";
|
|
36
|
+
import type { ChainableColumn, ChainableDatetimeColumn, ChainableDecimalColumn, ChainableEnumColumn, ChainableIdColumn, ChainableIntegerColumn, ChainableJsonColumn, ChainableStringColumn } from "./column.ts";
|
|
37
37
|
import type { StandaloneEnumConfig } from "./enum.ts";
|
|
38
38
|
import { defineRelations, defineRelationsPart, mergeRelations } from "./relations.ts";
|
|
39
39
|
import { defineRls } from "./schema.ts";
|
|
@@ -41,7 +41,7 @@ import type { SchemaOptions } from "./schema.ts";
|
|
|
41
41
|
import type { TemplatesApi } from "./templates.ts";
|
|
42
42
|
import type { ValidationError } from "./validate.ts";
|
|
43
43
|
import type { BigIntColumnConfig, BooleanColumnConfig, BytesColumnConfig, CreateModelConfig, DatetimeColumnConfig, DecimalColumnConfig, EnumDef, ExtensionTypeConfig, FloatColumnConfig, GeneratorOutput, IdColumnConfig, InlineEnumConfig, IntColumnConfig, JsonColumnConfig, ModelDef, PrismaGeneratorConfig, SchemaDef, SchemaDefinition, SchemaInput, StringColumnConfig } from "./types.ts";
|
|
44
|
-
export { ChainableColumn, ChainableDatetimeColumn, ChainableDecimalColumn, ChainableEnumColumn, ChainableIdColumn, ChainableIntegerColumn, ChainableStringColumn, cloneColumnDef, } from "./column.ts";
|
|
44
|
+
export { ChainableColumn, ChainableDatetimeColumn, ChainableDecimalColumn, ChainableEnumColumn, ChainableIdColumn, ChainableIntegerColumn, ChainableJsonColumn, ChainableStringColumn, cloneColumnDef, } from "./column.ts";
|
|
45
45
|
export { createEnum } from "./enum.ts";
|
|
46
46
|
export { generatePrisma } from "./generator/prisma.ts";
|
|
47
47
|
export { create, createIndexBuilder, evaluateIndexes, getColumnNames } from "./model.ts";
|
|
@@ -88,7 +88,7 @@ export type DslApi = {
|
|
|
88
88
|
readonly decimal: (config?: DecimalColumnConfig) => ChainableDecimalColumn;
|
|
89
89
|
readonly boolean: (config?: BooleanColumnConfig) => ChainableColumn<"boolean">;
|
|
90
90
|
readonly datetime: (config?: DatetimeColumnConfig) => ChainableDatetimeColumn;
|
|
91
|
-
readonly json: (config?: JsonColumnConfig) =>
|
|
91
|
+
readonly json: (config?: JsonColumnConfig) => ChainableJsonColumn;
|
|
92
92
|
readonly id: (config?: IdColumnConfig) => ChainableIdColumn;
|
|
93
93
|
readonly bytes: (config?: BytesColumnConfig) => ChainableColumn<"bytes">;
|
|
94
94
|
readonly unsupported: (dbType: string) => ChainableColumn<"unsupported">;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -94,8 +94,11 @@ class ChainableDatetimeColumn extends ChainableColumn {
|
|
|
94
94
|
constructor(config = {}) {
|
|
95
95
|
super("datetime", config);
|
|
96
96
|
}
|
|
97
|
-
tz() {
|
|
97
|
+
tz(options) {
|
|
98
98
|
this.__config.tz = true;
|
|
99
|
+
if (options?.precision !== undefined) {
|
|
100
|
+
this.__config.precision = options.precision;
|
|
101
|
+
}
|
|
99
102
|
return this;
|
|
100
103
|
}
|
|
101
104
|
updatedAt() {
|
|
@@ -398,7 +401,8 @@ import {
|
|
|
398
401
|
providerToDialect,
|
|
399
402
|
scalarListDefault,
|
|
400
403
|
serializeJsonDefault,
|
|
401
|
-
mergeExtensionDeclarations
|
|
404
|
+
mergeExtensionDeclarations,
|
|
405
|
+
unsupportedCapability
|
|
402
406
|
} from "@vibeorm/schema";
|
|
403
407
|
import { getSqlDialect } from "@vibeorm/sql";
|
|
404
408
|
|
|
@@ -438,7 +442,7 @@ function fieldTypeKey(params) {
|
|
|
438
442
|
}
|
|
439
443
|
|
|
440
444
|
// packages/dsl/src/relation-plan.ts
|
|
441
|
-
import { VibeError as VibeError3, predicateKey } from "@vibeorm/schema";
|
|
445
|
+
import { VibeError as VibeError3, isSqlObjectIdentity, predicateKey } from "@vibeorm/schema";
|
|
442
446
|
|
|
443
447
|
// packages/dsl/src/model.ts
|
|
444
448
|
import { VibeError as VibeError2 } from "@vibeorm/schema";
|
|
@@ -498,27 +502,31 @@ function createIndexBuilder() {
|
|
|
498
502
|
configurable: true
|
|
499
503
|
});
|
|
500
504
|
};
|
|
501
|
-
const createIndex = (
|
|
505
|
+
const createIndex = (params) => ({
|
|
502
506
|
__type: "index",
|
|
503
|
-
__columns: [...columns],
|
|
504
|
-
__indexType: type,
|
|
505
|
-
...map === undefined ? {} : { __map: map },
|
|
506
|
-
...where === undefined ? {} : { __where: where }
|
|
507
|
+
__columns: [...params.columns],
|
|
508
|
+
__indexType: params.type,
|
|
509
|
+
...params.map === undefined ? {} : { __map: params.map },
|
|
510
|
+
...params.where === undefined ? {} : { __where: params.where },
|
|
511
|
+
...params.ops === undefined ? {} : { __ops: params.ops }
|
|
507
512
|
});
|
|
508
513
|
return {
|
|
509
514
|
on(...args) {
|
|
510
515
|
const [first, second] = args;
|
|
511
516
|
if (args.length === 2 && Array.isArray(first) && typeof second === "object" && !Array.isArray(second)) {
|
|
512
|
-
return partial(createIndex(first, second.type, second.where, second.map));
|
|
517
|
+
return partial(createIndex({ columns: first, type: second.type, where: second.where, map: second.map, ops: second.ops }));
|
|
513
518
|
}
|
|
514
|
-
return partial(createIndex(args));
|
|
519
|
+
return partial(createIndex({ columns: args }));
|
|
515
520
|
},
|
|
516
521
|
index(...columns) {
|
|
517
|
-
return partial(createIndex(columns));
|
|
522
|
+
return partial(createIndex({ columns }));
|
|
518
523
|
},
|
|
519
524
|
unique(...args) {
|
|
520
525
|
const [first, second] = args;
|
|
521
526
|
if (args.length === 2 && Array.isArray(first) && typeof second === "object" && !Array.isArray(second)) {
|
|
527
|
+
if ("ops" in second && second.ops !== undefined) {
|
|
528
|
+
throw new VibeError2({ code: "VIBE_UNSUPPORTED_CAPABILITY", message: "Custom unique operator classes can change client selector equality", meta: { feature: "uniqueIndexOperatorClasses" } });
|
|
529
|
+
}
|
|
522
530
|
return partial({
|
|
523
531
|
__type: "unique",
|
|
524
532
|
__columns: [...first],
|
|
@@ -531,16 +539,16 @@ function createIndexBuilder() {
|
|
|
531
539
|
return partial({ __type: "unique", __columns: [...args] });
|
|
532
540
|
},
|
|
533
541
|
gin(...columns) {
|
|
534
|
-
return partial(createIndex(columns, "Gin"));
|
|
542
|
+
return partial(createIndex({ columns, type: "Gin" }));
|
|
535
543
|
},
|
|
536
544
|
gist(...columns) {
|
|
537
|
-
return partial(createIndex(columns, "Gist"));
|
|
545
|
+
return partial(createIndex({ columns, type: "Gist" }));
|
|
538
546
|
},
|
|
539
547
|
hash(...columns) {
|
|
540
|
-
return partial(createIndex(columns, "Hash"));
|
|
548
|
+
return partial(createIndex({ columns, type: "Hash" }));
|
|
541
549
|
},
|
|
542
550
|
brin(...columns) {
|
|
543
|
-
return partial(createIndex(columns, "Brin"));
|
|
551
|
+
return partial(createIndex({ columns, type: "Brin" }));
|
|
544
552
|
}
|
|
545
553
|
};
|
|
546
554
|
}
|
|
@@ -846,8 +854,22 @@ function planIndexes(params) {
|
|
|
846
854
|
}
|
|
847
855
|
}
|
|
848
856
|
for (const index of evaluateIndexes({ model })) {
|
|
857
|
+
if (index.__ops !== undefined) {
|
|
858
|
+
if (index.__ops === null || typeof index.__ops !== "object" || Array.isArray(index.__ops))
|
|
859
|
+
throw new VibeError3({ code: "VIBE_SCHEMA_INVALID", message: "Index ops must be a field-keyed qualified-name map", meta: { rule: "index-operator-class-map", model: model.__name } });
|
|
860
|
+
if (index.__type === "unique")
|
|
861
|
+
throw new VibeError3({ code: "VIBE_UNSUPPORTED_CAPABILITY", message: "Custom unique operator classes can change client selector equality", meta: { feature: "uniqueIndexOperatorClasses", model: model.__name } });
|
|
862
|
+
for (const [field, operatorClass] of Object.entries(index.__ops)) {
|
|
863
|
+
if (!index.__columns.includes(field))
|
|
864
|
+
throw new VibeError3({ code: "VIBE_SCHEMA_INVALID", message: "Operator class names a field outside the index", meta: { rule: "index-operator-class-field", model: model.__name, field } });
|
|
865
|
+
if (operatorClass !== undefined && !isSqlObjectIdentity({ kind: "table", name: operatorClass }))
|
|
866
|
+
throw new VibeError3({ code: "VIBE_SCHEMA_INVALID", message: "Index operator class must be a qualified SQL name { namespace, name }", meta: { rule: "index-operator-class-identity", model: model.__name, field } });
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
const operatorClasses = index.__columns.map((field) => index.__ops?.[field]);
|
|
870
|
+
const operatorSuffix = operatorClasses.some((operatorClass) => operatorClass !== undefined) ? `|ops:${JSON.stringify([index.__indexType ?? "BTree", operatorClasses.map((operatorClass) => operatorClass === undefined ? null : [operatorClass.namespace, operatorClass.name])])}` : "";
|
|
849
871
|
const predicateSuffix = index.__where !== undefined ? `|where:${index.__where}` : index.__wherePredicate === undefined ? "" : `|where:${predicateKey({ predicate: index.__wherePredicate })}`;
|
|
850
|
-
const key = index.__columns.join(",") + predicateSuffix;
|
|
872
|
+
const key = index.__columns.join(",") + predicateSuffix + operatorSuffix;
|
|
851
873
|
const existing = byKey.get(key);
|
|
852
874
|
const isUnique = index.__type === "unique";
|
|
853
875
|
if (existing === undefined || isUnique) {
|
|
@@ -855,6 +877,7 @@ function planIndexes(params) {
|
|
|
855
877
|
isUnique,
|
|
856
878
|
columns: [...index.__columns],
|
|
857
879
|
indexType: index.__indexType,
|
|
880
|
+
...index.__ops === undefined ? {} : { ops: index.__ops },
|
|
858
881
|
...index.__map === undefined ? {} : { map: index.__map },
|
|
859
882
|
...index.__where === undefined ? {} : { where: index.__where },
|
|
860
883
|
...index.__wherePredicate === undefined ? {} : { wherePredicate: index.__wherePredicate },
|
|
@@ -1057,6 +1080,20 @@ function fieldDefault(params) {
|
|
|
1057
1080
|
return { kind: "literal", value: exactIntegerLiteral({ text: value.toString() }) };
|
|
1058
1081
|
throw new VibeError4({ code: "VIBE_SCHEMA_INVALID", message: `Unsupported default for ${column.__columnType}` });
|
|
1059
1082
|
}
|
|
1083
|
+
function datetimeNativeType(params) {
|
|
1084
|
+
const { tz, precision } = params.config;
|
|
1085
|
+
if (precision !== undefined && (tz !== true || !Number.isInteger(precision) || precision < 0 || precision > 6)) {
|
|
1086
|
+
const at = params.column === undefined ? "A datetime column" : `Column "${params.column}"`;
|
|
1087
|
+
throw new VibeError4({
|
|
1088
|
+
code: "VIBE_SCHEMA_INVALID",
|
|
1089
|
+
message: `${at}: a datetime precision must be an integer from 0 to 6 on a tz() column, as in dsl.datetime().tz({ precision: 3 })`,
|
|
1090
|
+
meta: { issues: [{ rule: "datetime-precision", column: params.column, precision, tz: tz === true }] }
|
|
1091
|
+
});
|
|
1092
|
+
}
|
|
1093
|
+
if (tz !== true)
|
|
1094
|
+
return;
|
|
1095
|
+
return precision === undefined ? "Timestamptz" : `Timestamptz(${precision})`;
|
|
1096
|
+
}
|
|
1060
1097
|
function nativeType(params) {
|
|
1061
1098
|
const { column } = params;
|
|
1062
1099
|
if (column.__columnType === "enum") {
|
|
@@ -1086,8 +1123,8 @@ function nativeType(params) {
|
|
|
1086
1123
|
return `Decimal(${precision}, ${scale ?? 0})`;
|
|
1087
1124
|
return;
|
|
1088
1125
|
}
|
|
1089
|
-
if (column.__columnType === "datetime"
|
|
1090
|
-
return
|
|
1126
|
+
if (column.__columnType === "datetime") {
|
|
1127
|
+
return datetimeNativeType({ config: column.__config, column: column.__name });
|
|
1091
1128
|
}
|
|
1092
1129
|
if (column.__columnType === "unsupported") {
|
|
1093
1130
|
return String(column.__config.dbType);
|
|
@@ -1146,6 +1183,8 @@ var INDEX_KINDS = {
|
|
|
1146
1183
|
};
|
|
1147
1184
|
function buildIndex(params) {
|
|
1148
1185
|
const { index, model, dialect, enums } = params;
|
|
1186
|
+
if (index.ops !== undefined && Object.values(index.ops).some((operatorClass) => operatorClass !== undefined) && !dialect.capabilities.indexOperatorClasses)
|
|
1187
|
+
throw unsupportedCapability({ dialect: dialect.name, feature: "indexOperatorClasses" });
|
|
1149
1188
|
const kind = index.isUnique ? "unique" : index.indexType === undefined ? "btree" : INDEX_KINDS[index.indexType];
|
|
1150
1189
|
const predicate = compileIndexPredicate({
|
|
1151
1190
|
where: index.where,
|
|
@@ -1157,7 +1196,7 @@ function buildIndex(params) {
|
|
|
1157
1196
|
});
|
|
1158
1197
|
return {
|
|
1159
1198
|
kind,
|
|
1160
|
-
fields: index.columns.map((name) => ({ name })),
|
|
1199
|
+
fields: index.columns.map((name) => ({ name, ...index.ops?.[name] === undefined ? {} : { operatorClass: index.ops[name] } })),
|
|
1161
1200
|
...index.map === undefined ? {} : { name: index.map },
|
|
1162
1201
|
...predicate === undefined ? {} : { where: predicate.where },
|
|
1163
1202
|
...predicate?.wherePredicate === undefined ? {} : { wherePredicate: predicate.wherePredicate },
|
|
@@ -1397,8 +1436,9 @@ function nativeTypeAttribute(params) {
|
|
|
1397
1436
|
return `@db.Decimal(${precision}, ${scale ?? 0})`;
|
|
1398
1437
|
return;
|
|
1399
1438
|
}
|
|
1400
|
-
if (column.__columnType === "datetime"
|
|
1401
|
-
|
|
1439
|
+
if (column.__columnType === "datetime") {
|
|
1440
|
+
const native = datetimeNativeType({ config: column.__config, column: column.__name });
|
|
1441
|
+
return native === undefined ? undefined : `@db.${native}`;
|
|
1402
1442
|
}
|
|
1403
1443
|
return;
|
|
1404
1444
|
}
|
|
@@ -1474,6 +1514,8 @@ function formatRelation(params) {
|
|
|
1474
1514
|
}
|
|
1475
1515
|
function formatIndex(params) {
|
|
1476
1516
|
const { index } = params;
|
|
1517
|
+
if (index.ops !== undefined && Object.values(index.ops).some((operatorClass) => operatorClass !== undefined))
|
|
1518
|
+
throw new VibeError5({ code: "VIBE_UNSUPPORTED_CAPABILITY", message: "Prisma output cannot preserve qualified index operator classes; keep the DSL source", meta: { feature: "prismaIndexOperatorClasses", target: "prisma" } });
|
|
1477
1519
|
const columns = index.columns.join(", ");
|
|
1478
1520
|
const predicate = compileIndexPredicate({
|
|
1479
1521
|
where: index.where,
|
|
@@ -2205,6 +2247,7 @@ export {
|
|
|
2205
2247
|
ChainableEnumColumn,
|
|
2206
2248
|
ChainableIdColumn,
|
|
2207
2249
|
ChainableIntegerColumn,
|
|
2250
|
+
ChainableJsonColumn,
|
|
2208
2251
|
ChainableStringColumn,
|
|
2209
2252
|
base,
|
|
2210
2253
|
baseWithWorkspace,
|
|
@@ -2242,4 +2285,4 @@ export {
|
|
|
2242
2285
|
withNameDescription
|
|
2243
2286
|
};
|
|
2244
2287
|
|
|
2245
|
-
//# debugId=
|
|
2288
|
+
//# debugId=0EC0F0E6154BF1C064756E2164756E21
|