@syntropix/database 0.2.4 → 0.2.6
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/dist/index.cjs +36 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -6
- package/dist/index.d.ts +9 -6
- package/dist/index.js +34 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -725,7 +725,7 @@ var DoubleField = class extends Field {
|
|
|
725
725
|
// src/core/base-model.ts
|
|
726
726
|
var FIELDS_KEY = Symbol("fields");
|
|
727
727
|
var TABLE_NAME_KEY = Symbol("tableName");
|
|
728
|
-
var
|
|
728
|
+
var DISPLAY_NAME_KEY = Symbol("displayName");
|
|
729
729
|
var DESCRIPTION_KEY = Symbol("description");
|
|
730
730
|
var INDEXES_KEY = Symbol("indexes");
|
|
731
731
|
var PATH_KEY = Symbol("path");
|
|
@@ -759,6 +759,24 @@ function Description(description) {
|
|
|
759
759
|
};
|
|
760
760
|
}
|
|
761
761
|
__name(Description, "Description");
|
|
762
|
+
function DisplayName(displayName) {
|
|
763
|
+
return function(target) {
|
|
764
|
+
Reflect.defineMetadata(DISPLAY_NAME_KEY, displayName, target);
|
|
765
|
+
};
|
|
766
|
+
}
|
|
767
|
+
__name(DisplayName, "DisplayName");
|
|
768
|
+
function Path(path) {
|
|
769
|
+
return function(target) {
|
|
770
|
+
Reflect.defineMetadata(PATH_KEY, path, target);
|
|
771
|
+
};
|
|
772
|
+
}
|
|
773
|
+
__name(Path, "Path");
|
|
774
|
+
function Indexes(indexes) {
|
|
775
|
+
return function(target) {
|
|
776
|
+
Reflect.defineMetadata(INDEXES_KEY, indexes, target);
|
|
777
|
+
};
|
|
778
|
+
}
|
|
779
|
+
__name(Indexes, "Indexes");
|
|
762
780
|
function ForeignKey(tableName, columnName, options = {}) {
|
|
763
781
|
return function(target, propertyKey) {
|
|
764
782
|
const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};
|
|
@@ -808,7 +826,7 @@ var BaseModel = class {
|
|
|
808
826
|
return this.name.toLowerCase();
|
|
809
827
|
}
|
|
810
828
|
static getDisplayName() {
|
|
811
|
-
const displayName = Reflect.getMetadata(
|
|
829
|
+
const displayName = Reflect.getMetadata(DISPLAY_NAME_KEY, this);
|
|
812
830
|
if (displayName) return displayName;
|
|
813
831
|
if ("displayName" in this && typeof this.displayName === "string") {
|
|
814
832
|
return this.displayName;
|
|
@@ -824,10 +842,20 @@ var BaseModel = class {
|
|
|
824
842
|
return "";
|
|
825
843
|
}
|
|
826
844
|
static getIndexes() {
|
|
827
|
-
|
|
845
|
+
const indexes = Reflect.getMetadata(INDEXES_KEY, this);
|
|
846
|
+
if (indexes) return indexes;
|
|
847
|
+
if ("indexes" in this && Array.isArray(this.indexes)) {
|
|
848
|
+
return this.indexes;
|
|
849
|
+
}
|
|
850
|
+
return [];
|
|
828
851
|
}
|
|
829
852
|
static getPath() {
|
|
830
|
-
|
|
853
|
+
const path = Reflect.getMetadata(PATH_KEY, this);
|
|
854
|
+
if (path) return path;
|
|
855
|
+
if ("path" in this && typeof this.path === "string") {
|
|
856
|
+
return this.path;
|
|
857
|
+
}
|
|
858
|
+
return void 0;
|
|
831
859
|
}
|
|
832
860
|
static getFields() {
|
|
833
861
|
const fields = Reflect.getMetadata(FIELDS_KEY, this) || {};
|
|
@@ -1125,7 +1153,7 @@ var BaseModel = class {
|
|
|
1125
1153
|
],
|
|
1126
1154
|
aggregate: [
|
|
1127
1155
|
{
|
|
1128
|
-
|
|
1156
|
+
columnName: "id",
|
|
1129
1157
|
function: AggregateFunction.Count,
|
|
1130
1158
|
alias: "count"
|
|
1131
1159
|
}
|
|
@@ -1187,6 +1215,7 @@ exports.DateField = DateField;
|
|
|
1187
1215
|
exports.DateTimeField = DateTimeField;
|
|
1188
1216
|
exports.DecimalField = DecimalField;
|
|
1189
1217
|
exports.Description = Description;
|
|
1218
|
+
exports.DisplayName = DisplayName;
|
|
1190
1219
|
exports.DoubleField = DoubleField;
|
|
1191
1220
|
exports.EQ = EQ;
|
|
1192
1221
|
exports.EQ_COL = EQ_COL;
|
|
@@ -1207,6 +1236,7 @@ exports.IS_NOT_NULL = IS_NOT_NULL;
|
|
|
1207
1236
|
exports.IS_NULL = IS_NULL;
|
|
1208
1237
|
exports.I_LIKE = I_LIKE;
|
|
1209
1238
|
exports.IndexType = IndexType;
|
|
1239
|
+
exports.Indexes = Indexes;
|
|
1210
1240
|
exports.IntegerField = IntegerField;
|
|
1211
1241
|
exports.JsonField = JsonField;
|
|
1212
1242
|
exports.LIKE = LIKE;
|
|
@@ -1223,6 +1253,7 @@ exports.NOT_I_LIKE = NOT_I_LIKE;
|
|
|
1223
1253
|
exports.NOT_LIKE = NOT_LIKE;
|
|
1224
1254
|
exports.OR = OR;
|
|
1225
1255
|
exports.OVERLAP = OVERLAP;
|
|
1256
|
+
exports.Path = Path;
|
|
1226
1257
|
exports.SIMILARITY = SIMILARITY;
|
|
1227
1258
|
exports.SIMILARITY_DISTANCE = SIMILARITY_DISTANCE;
|
|
1228
1259
|
exports.STRICT_WORD_SIMILARITY = STRICT_WORD_SIMILARITY;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/model/access.ts","../src/types/model/db-index.ts","../src/types/model/filter.ts","../src/types/model/foreign-key.ts","../src/core/client/base-client.ts","../src/core/config.ts","../src/core/filter-builder.ts","../src/core/client/data-client.ts","../src/core/client/table-client.ts","../src/core/client/syntropix-client.ts","../src/core/data-type.ts","../src/core/field.ts","../src/core/base-model.ts"],"names":["AccessType","None","Read","Write","Admin","IndexType","Gin","GinTrgmOps","IvfflatL2Ops","InfflatCosineOps","InfflatIpOps","SortType","Descending","Ascending","AggregateFunction","FilterOperation","ForeignKeyAction","Cascade","Restrict","SetNull","NoAction","SetDefault","handleError","error","axiosErr","response","data","status","Error","message","BaseClient","config","headers","Authorization","apiKey","url","path","startsWith","slice","baseUrl","get","axios","params","content","EJSON","parse","JSON","stringify","isAxiosError","console","post","ClientConfig","timeout","retries","process","env","SYNTROPIX_API_KEY","SYNTROPIX_API_URL","SYNTROPIX_API_TIMEOUT","SYNTROPIX_API_RETRIES","endsWith","AND","conditions","OR","EQ","field","value","columnName","operator","staticValue","NE","NEQ","GT","GTE","LT","LTE","IN","values","In","CONTAINS","Contains","OVERLAP","Overlap","I_LIKE","pattern","ILike","NOT_I_LIKE","NotILike","NOT_IN","NotIn","LIKE","Like","NOT_LIKE","NotLike","IS_NULL","IsNull","IS_NOT_NULL","IsNotNull","BETWEEN","min","max","Between","EQ_COL","otherField","columnValue","NE_COL","GT_COL","GTE_COL","LT_COL","LTE_COL","SIMILARITY","options","Similarity","simiarityOptions","SIMILARITY_DISTANCE","SimilarityDistance","WORD_SIMILARITY","WordSimilarity","WORD_SIMILARITY_DISTANCE","WordSimilarityDistance","STRICT_WORD_SIMILARITY","StrictWordSimilarity","STRICT_WORD_SIMILARITY_DISTANCE","StrictWordSimilarityDistance","EUCLIDEAN_DISTANCE","EuclideanDistance","NEGATIVE_INNER_PRODUCT","NegativeInnerProduct","COSINE_DISTANCE","CosineDistance","Value","FilterWrapper","filter","undefined","Array","isArray","every","item","DataClient","client","insertData","insertOne","updateByPrimaryKey","pk","queryOne","model","query","One","queryMany","Many","map","updateData","deleteData","TableClient","createTable","dropTable","renameTable","truncateTable","addColumn","dropColumn","modifyColumn","getTableSchema","getTableList","SyntropixClient","_tableClient","_dataClient","table","ArrayDataType","String","maxLength","Decimal","precision","scale","Text","Integer","BigInteger","Double","DateTime","Timestamp","Date","Boolean","Money","Uuid","Enum","name","variants","Json","ColumnDataType","Vector","dimensions","dataType","Field","displayName","description","columnType","isPrimaryKey","isNullable","autoIncrement","default","defaultAccess","toLowerCase","intoColumnCreateDto","ForeignKeyField","tableName","onDelete","onUpdate","StringField","TextField","IntegerField","BooleanField","DateTimeField","TimestampField","DateField","JsonField","UuidField","VectorField","ArrayField","EnumField","MoneyField","DecimalField","DoubleField","FIELDS_KEY","Symbol","TABLE_NAME_KEY","TABLE_DISPLAY_NAME_KEY","DESCRIPTION_KEY","INDEXES_KEY","PATH_KEY","Column","target","propertyKey","fields","Reflect","getMetadata","fieldName","type","primary","nullable","defineMetadata","Description","ForeignKey","BaseModel","_client","_extra","getFields","columnToPropertyMap","propertyName","Object","entries","key","getTableName","getDisplayName","getDescription","metadataDescription","getIndexes","getPath","hasPrimaryKey","getPrimaryKeyName","getAssociations","f","getPrimaryKey","columns","foreignKeys","fromTableName","fromColumnName","toTableName","toColumnName","indexes","newName","newTableName","create","push","save","pkValue","payload","remove","finalFilter","bulkCreate","datas","batchSize","length","cnt","Math","keys","columnsSet","Set","col","size","c","update","delete","select","limit","sort","aggregate","join","offset","groupBy","count","column","function","Count","alias","toString","toJSON"],"mappings":";;;;;;;;;;;;;;AAEO,IAAMA,UAAAA,GAAa;EACxBC,IAAAA,EAAM,MAAA;EACNC,IAAAA,EAAM,MAAA;EACNC,KAAAA,EAAO,OAAA;EACPC,KAAAA,EAAO;AACT;;;ACPO,IAAMC,SAAAA,GAAY;EACvBC,GAAAA,EAAK,KAAA;EACLC,UAAAA,EAAY,YAAA;EACZC,YAAAA,EAAc,cAAA;EACdC,gBAAAA,EAAkB,kBAAA;EAClBC,YAAAA,EAAc;AAChB;;;ACNO,IAAMC,QAAAA,GAAW;EACtBC,UAAAA,EAAY,YAAA;EACZC,SAAAA,EAAW;AACb;AAIO,IAAKC,iBAAAA,6BAAAA,kBAAAA,EAAAA;;;;;;;AAAAA,EAAAA,OAAAA,kBAAAA;;AAmCL,IAAKC,eAAAA,6BAAAA,gBAAAA,EAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAA,EAAAA,OAAAA,gBAAAA;;;;AC1CL,IAAMC,gBAAAA,GAAmB;EAC9BC,OAAAA,EAAS,SAAA;EACTC,QAAAA,EAAU,UAAA;EACVC,OAAAA,EAAS,SAAA;EACTC,QAAAA,EAAU,UAAA;EACVC,UAAAA,EAAY;AACd;ACDA,SAASC,YAAYC,KAAAA,EAAiB;AACpC,EAAA,MAAMC,QAAAA,GAAWD,KAAAA;AACjB,EAAA,IAAIC,QAAAA,CAASC,QAAAA,EAAUC,IAAAA,EAAMC,MAAAA,KAAW,OAAA,EAAS;AAC/C,IAAA,MAAM,IAAIC,KAAAA,CAAMJ,QAAAA,CAASC,QAAAA,CAASC,KAAKG,OAAO,CAAA;AAChD,EAAA;AACA,EAAA,MAAM,IAAID,KAAAA,CAAMJ,QAAAA,CAASK,OAAO,CAAA;AAClC;AANSP,MAAAA,CAAAA,WAAAA,EAAAA,aAAAA,CAAAA;AAQF,IAAMQ,aAAN,MAAMA;EAXb;;;AAYYC,EAAAA,MAAAA;AAEV,EAAA,WAAA,CAAYA,MAAAA,EAAsB;AAChC,IAAA,IAAA,CAAKA,MAAAA,GAASA,MAAAA;AAChB,EAAA;EAEQC,OAAAA,GAAU;AAChB,IAAA,OAAO;MACL,cAAA,EAAgB,kBAAA;MAChBC,aAAAA,EAAe,IAAA,CAAKF,OAAOG,MAAAA,IAAU;AACvC,KAAA;AACF,EAAA;AAEQC,EAAAA,GAAAA,CAAIC,IAAAA,EAAc;AACxB,IAAA,IAAIA,IAAAA,CAAKC,UAAAA,CAAW,GAAA,CAAA,EAAM;AACxBD,MAAAA,IAAAA,GAAOA,IAAAA,CAAKE,MAAM,CAAA,CAAA;AACpB,IAAA;AACA,IAAA,OAAO,CAAA,EAAG,IAAA,CAAKP,MAAAA,CAAOQ,OAAO,GAAGH,IAAAA,CAAAA,CAAAA;AAClC,EAAA;AAEA,EAAA,MAAaI,GAAAA,CAAOJ,IAAAA,EAAcV,IAAAA,GAA4B,EAAC,EAAe;AAC5E,IAAA,IAAI;AACF,MAAA,MAAMD,WAAW,MAAMgB,sBAAAA,CAAMD,IAAI,IAAA,CAAKL,GAAAA,CAAIC,IAAAA,CAAAA,EAAO;AAC/CJ,QAAAA,OAAAA,EAAS,KAAKA,OAAAA,EAAO;QACrBU,MAAAA,EAAQhB;OACV,CAAA;AACA,MAAA,MAAMiB,UAAUC,UAAAA,CAAMC,KAAAA,CAAMC,KAAKC,SAAAA,CAAUtB,QAAAA,CAASC,IAAI,CAAA,CAAA;AACxD,MAAA,IAAIiB,OAAAA,CAAQhB,WAAW,SAAA,EAAW;AAChC,QAAA,MAAM,IAAIC,KAAAA,CAAMe,OAAAA,CAAQd,OAAO,CAAA;AACjC,MAAA;AACA,MAAA,OAAOc,OAAAA,CAAQjB,IAAAA;AACjB,IAAA,CAAA,CAAA,OAASH,KAAAA,EAAO;AACd,MAAA,IAAIkB,sBAAAA,CAAMO,YAAAA,CAAazB,KAAAA,CAAAA,EAAQ;AAC7BD,QAAAA,WAAAA,CAAYC,KAAAA,CAAAA;AACd,MAAA;AACA0B,MAAAA,OAAAA,CAAQ1B,MAAMA,KAAAA,CAAAA;AACd,MAAA,MAAM,IAAIK,MAAM,mCAAA,CAAA;AAClB,IAAA;AACF,EAAA;AAEA,EAAA,MAAasB,IAAAA,CAAQd,IAAAA,EAAcV,IAAAA,GAA4B,EAAC,EAAe;AAC7E,IAAA,IAAI;AACF,MAAA,MAAMD,QAAAA,GAAW,MAAMgB,sBAAAA,CAAMS,IAAAA,CAAK,KAAKf,GAAAA,CAAIC,IAAAA,GAAOV,IAAAA,EAAM;AACtDM,QAAAA,OAAAA,EAAS,KAAKA,OAAAA;OAChB,CAAA;AACA,MAAA,MAAMW,UAAUC,UAAAA,CAAMC,KAAAA,CAAMC,KAAKC,SAAAA,CAAUtB,QAAAA,CAASC,IAAI,CAAA,CAAA;AACxD,MAAA,IAAIiB,OAAAA,CAAQhB,WAAW,SAAA,EAAW;AAChC,QAAA,MAAM,IAAIC,KAAAA,CAAMe,OAAAA,CAAQd,OAAO,CAAA;AACjC,MAAA;AACA,MAAA,OAAOc,OAAAA,CAAQjB,IAAAA;AACjB,IAAA,CAAA,CAAA,OAASH,KAAAA,EAAO;AACd,MAAA,IAAIkB,sBAAAA,CAAMO,YAAAA,CAAazB,KAAAA,CAAAA,EAAQ;AAC7BD,QAAAA,WAAAA,CAAYC,KAAAA,CAAAA;AACd,MAAA;AACA0B,MAAAA,OAAAA,CAAQ1B,MAAMA,KAAAA,CAAAA;AACd,MAAA,MAAM,IAAIK,MAAM,oCAAA,CAAA;AAClB,IAAA;AACF,EAAA;AACF;;;ACxEO,IAAMuB,eAAN,MAAMA;EAAb;;;AACSjB,EAAAA,MAAAA;AACAK,EAAAA,OAAAA;AACAa,EAAAA,OAAAA;AACAC,EAAAA,OAAAA;AAEP,EAAA,WAAA,CAAYtB,MAAAA,EAAc;AACxB,IAAA,IAAA,CAAKG,MAAAA,GAASH,MAAAA,EAAQG,MAAAA,IAAUoB,OAAAA,CAAQC,GAAAA,CAAIC,iBAAAA;AAC5C,IAAA,IAAA,CAAKjB,OAAAA,GAAUR,MAAAA,EAAQQ,OAAAA,IAAWe,OAAAA,CAAQC,GAAAA,CAAIE,iBAAAA;AAC9C,IAAA,IAAA,CAAKL,OAAAA,GAAUrB,MAAAA,EAAQqB,OAAAA,IAAWE,OAAAA,CAAQC,GAAAA,CAAIG,qBAAAA;AAC9C,IAAA,IAAA,CAAKL,OAAAA,GAAUtB,MAAAA,EAAQsB,OAAAA,IAAWC,OAAAA,CAAQC,GAAAA,CAAII,qBAAAA;AAE9C,IAAA,IAAI,CAAC,IAAA,CAAKzB,MAAAA,IAAU,CAAC,KAAKK,OAAAA,EAAS;AACjC,MAAA,MAAM,IAAIX,MAAM,mCAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAI,CAAC,KAAKwB,OAAAA,EAAS;AACjB,MAAA,IAAA,CAAKA,OAAAA,GAAU,GAAA;AACjB,IAAA;AAEA,IAAA,IAAI,CAAC,KAAKC,OAAAA,EAAS;AACjB,MAAA,IAAA,CAAKA,OAAAA,GAAU,CAAA;AACjB,IAAA;AAEA,IAAA,IAAI,CAAC,IAAA,CAAKd,OAAAA,CAAQqB,QAAAA,CAAS,GAAA,CAAA,EAAM;AAC/B,MAAA,IAAA,CAAKrB,OAAAA,IAAW,GAAA;AAClB,IAAA;AACF,EAAA;AACF;;;AC1BO,IAAMsB,GAAAA,mBAAM,MAAA,CAAA,CAAA,GAAIC,UAAAA,KAA0CA,UAAAA,EAA9C,KAAA;AAEZ,IAAMC,EAAAA,mBAAK,MAAA,CAAA,CAAA,GAAID,UAAAA,KAAsCA,UAAAA,EAA1C,IAAA;AAEX,IAAME,EAAAA,mBAAK,MAAA,CAAA,CAACC,KAAAA,EAAeC,KAAAA,MAA4B;EAC5DC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBiD,EAAAA;EAC1BK,WAAAA,EAAaH;AACf,CAAA,CAAA,EAJkB,IAAA;AAMX,IAAMI,EAAAA,mBAAK,MAAA,CAAA,CAACL,KAAAA,EAAeC,KAAAA,MAA4B;EAC5DC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBwD,GAAAA;EAC1BF,WAAAA,EAAaH;AACf,CAAA,CAAA,EAJkB,IAAA;AAMX,IAAMM,EAAAA,mBAAK,MAAA,CAAA,CAACP,KAAAA,EAAeC,KAAAA,MAA4B;EAC5DC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgByD,EAAAA;EAC1BH,WAAAA,EAAaH;AACf,CAAA,CAAA,EAJkB,IAAA;AAMX,IAAMO,GAAAA,mBAAM,MAAA,CAAA,CAACR,KAAAA,EAAeC,KAAAA,MAA4B;EAC7DC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB0D,GAAAA;EAC1BJ,WAAAA,EAAaH;AACf,CAAA,CAAA,EAJmB,KAAA;AAMZ,IAAMQ,EAAAA,mBAAK,MAAA,CAAA,CAACT,KAAAA,EAAeC,KAAAA,MAA4B;EAC5DC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB2D,EAAAA;EAC1BL,WAAAA,EAAaH;AACf,CAAA,CAAA,EAJkB,IAAA;AAMX,IAAMS,GAAAA,mBAAM,MAAA,CAAA,CAACV,KAAAA,EAAeC,KAAAA,MAA4B;EAC7DC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB4D,GAAAA;EAC1BN,WAAAA,EAAaH;AACf,CAAA,CAAA,EAJmB,KAAA;AAMZ,IAAMU,EAAAA,mBAAK,MAAA,CAAA,CAACX,KAAAA,EAAeY,MAAAA,MAA+B;EAC/DV,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB+D,EAAAA;EAC1BT,WAAAA,EAAaQ;AACf,CAAA,CAAA,EAJkB,IAAA;AAMX,IAAME,QAAAA,mBAAW,MAAA,CAAA,CAACd,KAAAA,EAAeC,KAAAA,MAA4B;EAClEC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBiE,QAAAA;EAC1BX,WAAAA,EAAaH;AACf,CAAA,CAAA,EAJwB,UAAA;AAMjB,IAAMe,OAAAA,mBAAU,MAAA,CAAA,CAAChB,KAAAA,EAAeC,KAAAA,MAA4B;EACjEC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBmE,OAAAA;EAC1Bb,WAAAA,EAAaH;AACf,CAAA,CAAA,EAJuB,SAAA;AAMhB,IAAMiB,MAAAA,mBAAS,MAAA,CAAA,CAAClB,KAAAA,EAAemB,OAAAA,MAAiC;EACrEjB,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBsE,KAAAA;EAC1BhB,WAAAA,EAAae;AACf,CAAA,CAAA,EAJsB,QAAA;AAMf,IAAME,UAAAA,mBAAa,MAAA,CAAA,CAACrB,KAAAA,EAAemB,OAAAA,MAAiC;EACzEjB,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBwE,QAAAA;EAC1BlB,WAAAA,EAAae;AACf,CAAA,CAAA,EAJ0B,YAAA;AAMnB,IAAMI,MAAAA,mBAAS,MAAA,CAAA,CAACvB,KAAAA,EAAeY,MAAAA,MAA+B;EACnEV,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB0E,KAAAA;EAC1BpB,WAAAA,EAAaQ;AACf,CAAA,CAAA,EAJsB,QAAA;AAMf,IAAMa,IAAAA,mBAAO,MAAA,CAAA,CAACzB,KAAAA,EAAemB,OAAAA,MAAiC;EACnEjB,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB4E,IAAAA;EAC1BtB,WAAAA,EAAae;AACf,CAAA,CAAA,EAJoB,MAAA;AAMb,IAAMQ,QAAAA,mBAAW,MAAA,CAAA,CAAC3B,KAAAA,EAAemB,OAAAA,MAAiC;EACvEjB,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB8E,OAAAA;EAC1BxB,WAAAA,EAAae;AACf,CAAA,CAAA,EAJwB,UAAA;AAMjB,IAAMU,OAAAA,2BAAW7B,KAAAA,MAA+B;EACrDE,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBgF;AAC5B,CAAA,CAAA,EAHuB,SAAA;AAKhB,IAAMC,WAAAA,2BAAe/B,KAAAA,MAA+B;EACzDE,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBkF;AAC5B,CAAA,CAAA,EAH2B,aAAA;AAKpB,IAAMC,OAAAA,mBAAU,MAAA,CAAA,CAACjC,KAAAA,EAAekC,GAAAA,EAAUC,GAAAA,MAA0B;EACzEjC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBsF,OAAAA;EAC1BhC,WAAAA,EAAa;AAAC8B,IAAAA,GAAAA;AAAKC,IAAAA;;AACrB,CAAA,CAAA,EAJuB,SAAA;AAOhB,IAAME,MAAAA,mBAAS,MAAA,CAAA,CAACrC,KAAAA,EAAesC,UAAAA,MAAoC;EACxEpC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBiD,EAAAA;EAC1BwC,WAAAA,EAAaD;AACf,CAAA,CAAA,EAJsB,QAAA;AAMf,IAAME,MAAAA,mBAAS,MAAA,CAAA,CAACxC,KAAAA,EAAesC,UAAAA,MAAoC;EACxEpC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBwD,GAAAA;EAC1BiC,WAAAA,EAAaD;AACf,CAAA,CAAA,EAJsB,QAAA;AAMf,IAAMG,MAAAA,mBAAS,MAAA,CAAA,CAACzC,KAAAA,EAAesC,UAAAA,MAAoC;EACxEpC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgByD,EAAAA;EAC1BgC,WAAAA,EAAaD;AACf,CAAA,CAAA,EAJsB,QAAA;AAMf,IAAMI,OAAAA,mBAAU,MAAA,CAAA,CAAC1C,KAAAA,EAAesC,UAAAA,MAAoC;EACzEpC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB0D,GAAAA;EAC1B+B,WAAAA,EAAaD;AACf,CAAA,CAAA,EAJuB,SAAA;AAMhB,IAAMK,MAAAA,mBAAS,MAAA,CAAA,CAAC3C,KAAAA,EAAesC,UAAAA,MAAoC;EACxEpC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB2D,EAAAA;EAC1B8B,WAAAA,EAAaD;AACf,CAAA,CAAA,EAJsB,QAAA;AAMf,IAAMM,OAAAA,mBAAU,MAAA,CAAA,CAAC5C,KAAAA,EAAesC,UAAAA,MAAoC;EACzEpC,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB4D,GAAAA;EAC1B6B,WAAAA,EAAaD;AACf,CAAA,CAAA,EAJuB,SAAA;AAOhB,IAAMO,UAAAA,mBAAa,MAAA,CAAA,CAAC7C,KAAAA,EAAeC,KAAAA,EAAY6C,OAAAA,MAA4C;EAChG5C,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBiG,UAAAA;EAC1B3C,WAAAA,EAAaH,KAAAA;EACb+C,gBAAAA,EAAkBF;AACpB,CAAA,CAAA,EAL0B,YAAA;AAOnB,IAAMG,mBAAAA,mBAAsB,MAAA,CAAA,CAACjD,KAAAA,EAAeC,KAAAA,EAAY6C,OAAAA,MAA4C;EACzG5C,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBoG,kBAAAA;EAC1B9C,WAAAA,EAAaH,KAAAA;EACb+C,gBAAAA,EAAkBF;AACpB,CAAA,CAAA,EALmC,qBAAA;AAO5B,IAAMK,eAAAA,mBAAkB,MAAA,CAAA,CAACnD,KAAAA,EAAeC,KAAAA,EAAY6C,OAAAA,MAA4C;EACrG5C,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBsG,cAAAA;EAC1BhD,WAAAA,EAAaH,KAAAA;EACb+C,gBAAAA,EAAkBF;AACpB,CAAA,CAAA,EAL+B,iBAAA;AAOxB,IAAMO,wBAAAA,mBAA2B,MAAA,CAAA,CAACrD,KAAAA,EAAeC,KAAAA,EAAY6C,OAAAA,MAA4C;EAC9G5C,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBwG,sBAAAA;EAC1BlD,WAAAA,EAAaH,KAAAA;EACb+C,gBAAAA,EAAkBF;AACpB,CAAA,CAAA,EALwC,0BAAA;AAOjC,IAAMS,sBAAAA,mBAAyB,MAAA,CAAA,CAACvD,KAAAA,EAAeC,KAAAA,EAAY6C,OAAAA,MAA4C;EAC5G5C,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB0G,oBAAAA;EAC1BpD,WAAAA,EAAaH,KAAAA;EACb+C,gBAAAA,EAAkBF;AACpB,CAAA,CAAA,EALsC,wBAAA;AAO/B,IAAMW,+BAAAA,mBAAkC,MAAA,CAAA,CAACzD,KAAAA,EAAeC,KAAAA,EAAY6C,OAAAA,MAA4C;EACrH5C,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB4G,4BAAAA;EAC1BtD,WAAAA,EAAaH,KAAAA;EACb+C,gBAAAA,EAAkBF;AACpB,CAAA,CAAA,EAL+C,iCAAA;AAOxC,IAAMa,kBAAAA,mBAAqB,MAAA,CAAA,CAAC3D,KAAAA,EAAeC,KAAAA,EAAY6C,OAAAA,MAA4C;EACxG5C,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgB8G,iBAAAA;EAC1BxD,WAAAA,EAAaH,KAAAA;EACb+C,gBAAAA,EAAkBF;AACpB,CAAA,CAAA,EALkC,oBAAA;AAO3B,IAAMe,sBAAAA,mBAAyB,MAAA,CAAA,CAAC7D,KAAAA,EAAeC,KAAAA,EAAY6C,OAAAA,MAA4C;EAC5G5C,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBgH,oBAAAA;EAC1B1D,WAAAA,EAAaH,KAAAA;EACb+C,gBAAAA,EAAkBF;AACpB,CAAA,CAAA,EALsC,wBAAA;AAO/B,IAAMiB,eAAAA,mBAAkB,MAAA,CAAA,CAAC/D,KAAAA,EAAeC,KAAAA,EAAY6C,OAAAA,MAA4C;EACrG5C,UAAAA,EAAYF,KAAAA;AACZG,EAAAA,QAAAA,EAAUrD,eAAAA,CAAgBkH,cAAAA;EAC1B5D,WAAAA,EAAaH,KAAAA;EACb+C,gBAAAA,EAAkBF;AACpB,CAAA,CAAA,EAL+B,iBAAA;AAQxB,IAAMmB,KAAAA,mBAAQ,MAAA,CAAA,CAAChE,KAAAA,KAAeA,KAAAA,EAAhB,OAAA;AAGd,SAASiE,cAAcC,MAAAA,EAAqD;AACjF,EAAA,IAAIA,WAAWC,MAAAA,EAAW;AACxB,IAAA,OAAOA,MAAAA;AACT,EAAA;AACA,EAAA,IAAI,CAACC,KAAAA,CAAMC,OAAAA,CAAQH,MAAAA,CAAAA,EAAS;AAC1B,IAAA,OAAOrE,EAAAA,CAAGF,GAAAA,CAAIuE,MAAAA,CAAAA,CAAAA;EAChB,CAAA,MAAA,IAAW,CAACA,OAAOI,KAAAA,CAAM,CAACC,SAASH,KAAAA,CAAMC,OAAAA,CAAQE,IAAAA,CAAAA,CAAAA,EAAQ;AACvD,IAAA,OAAO1E,GAAGqE,MAAAA,CAAAA;EACZ,CAAA,MAAO;AACL,IAAA,OAAOA,MAAAA;AACT,EAAA;AACF;AAXgBD,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;;;AC9MT,IAAMO,aAAN,MAAMA;EALb;;;AAMUC,EAAAA,MAAAA;EAER,WAAA,CAAY5G,MAAAA,GAAuB,IAAIoB,YAAAA,EAAAA,EAAgB;AACrD,IAAA,IAAA,CAAKwF,MAAAA,GAAS,IAAI7G,UAAAA,CAAWC,MAAAA,CAAAA;AAC/B,EAAA;AAEA,EAAA,MAAM6G,WAAWlH,IAAAA,EAA+B;AAC9C,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOzF,IAAAA,CAAU,WAAWxB,IAAAA,CAAAA;AAChD,EAAA;AAEA,EAAA,MAAMmH,UAAUnH,IAAAA,EAA+B;AAC7C,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOzF,IAAAA,CAAU,eAAexB,IAAAA,CAAAA;AACpD,EAAA;EAEA,MAAMoH,kBAAAA,CAAmBC,IAAYrH,IAAAA,EAA+B;AAClE,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOzF,KAAU,CAAA,QAAA,EAAW6F,EAAAA,IAAMrH,IAAAA,CAAAA;AACtD,EAAA;EAEA,MAAMsH,QAAAA,CAAStH,MAAgBuH,KAAAA,EAA2B;AACxDvH,IAAAA,IAAAA,CAAKwH,KAAAA,CAAMd,MAAAA,GAASD,aAAAA,CAAczG,IAAAA,CAAKwH,MAAMd,MAAM,CAAA;AACnD,IAAA,MAAM3G,QAAAA,GAAW,MAAM,IAAA,CAAKkH,MAAAA,CAAOzF,KAAU,QAAA,EAAU;MAAEiG,GAAAA,EAAKzH;KAAK,CAAA;AACnE,IAAA,IAAIuH,UAAUZ,MAAAA,EAAW;AACvB,MAAA,OAAO,IAAIY,MAAMxH,QAAAA,CAAAA;AACnB,IAAA;AACA,IAAA,OAAOA,QAAAA;AACT,EAAA;EAEA,MAAM2H,SAAAA,CAAU1H,MAAgBuH,KAAAA,EAA2B;AACzDvH,IAAAA,IAAAA,CAAKwH,KAAAA,CAAMd,MAAAA,GAASD,aAAAA,CAAczG,IAAAA,CAAKwH,MAAMd,MAAM,CAAA;AACnD,IAAA,MAAM3G,QAAAA,GAAW,MAAM,IAAA,CAAKkH,MAAAA,CAAOzF,KAAY,QAAA,EAAU;MAAEmG,IAAAA,EAAM3H;KAAK,CAAA;AACtE,IAAA,IAAIuH,UAAUZ,MAAAA,EAAW;AAIvB,MAAA,OAAO5G,SAAS6H,GAAAA,CAAI,CAACb,SAAc,IAAIQ,KAAAA,CAAMR,IAAAA,CAAAA,CAAAA;AAC/C,IAAA;AACA,IAAA,OAAOhH,QAAAA;AACT,EAAA;AAEA,EAAA,MAAM8H,WAAW7H,IAAAA,EAA+B;AAC9C,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOzF,IAAAA,CAAU,WAAWxB,IAAAA,CAAAA;AAChD,EAAA;AAEA,EAAA,MAAM8H,WAAW9H,IAAAA,EAAmC;AAClD,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOzF,IAAAA,CAAU,WAAWxB,IAAAA,CAAAA;AAChD,EAAA;AACF;;;ACnCO,IAAM+H,cAAN,MAAMA;EAjBb;;;AAkBUd,EAAAA,MAAAA;EAER,WAAA,CAAY5G,MAAAA,GAAuB,IAAIoB,YAAAA,EAAAA,EAAgB;AACrD,IAAA,IAAA,CAAKwF,MAAAA,GAAS,IAAI7G,UAAAA,CAAWC,MAAAA,CAAAA;AAC/B,EAAA;AAEA,EAAA,MAAM2H,YAAYhI,IAAAA,EAAoD;AACpE,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOzF,IAAAA,CAA0B,iBAAiBxB,IAAAA,CAAAA;AACtE,EAAA;AAEA,EAAA,MAAMiI,UAAUjI,IAAAA,EAAkC;AAChD,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOzF,IAAAA,CAAU,eAAexB,IAAAA,CAAAA;AACpD,EAAA;AAEA,EAAA,MAAMkI,YAAYlI,IAAAA,EAAoC;AACpD,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOzF,IAAAA,CAAU,iBAAiBxB,IAAAA,CAAAA;AACtD,EAAA;AAEA,EAAA,MAAMmI,cAAcnI,IAAAA,EAAsC;AACxD,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOzF,IAAAA,CAAU,mBAAmBxB,IAAAA,CAAAA;AACxD,EAAA;AAEA,EAAA,MAAMoI,UAAUpI,IAAAA,EAAuC;AACrD,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOzF,IAAAA,CAAU,qBAAqBxB,IAAAA,CAAAA;AAC1D,EAAA;AAEA,EAAA,MAAMqI,WAAWrI,IAAAA,EAAwC;AACvD,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOzF,IAAAA,CAAU,sBAAsBxB,IAAAA,CAAAA;AAC3D,EAAA;AAEA,EAAA,MAAMsI,aAAatI,IAAAA,EAA0C;AAC3D,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOzF,IAAAA,CAAU,wBAAwBxB,IAAAA,CAAAA;AAC7D,EAAA;AAEA,EAAA,MAAMuI,eAAevI,IAAAA,EAAuD;AAC1E,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOnG,GAAAA,CAAyB,iBAAiBd,IAAAA,CAAAA;AACrE,EAAA;AAEA,EAAA,MAAMwI,aAAaxI,IAAAA,EAAmD;AACpE,IAAA,OAAO,MAAM,IAAA,CAAKiH,MAAAA,CAAOnG,GAAAA,CAAuB,eAAed,IAAAA,CAAAA;AACjE,EAAA;AACF;;;ACvDO,IAAMyI,kBAAN,MAAMA;EAJb;;;AAKUpI,EAAAA,MAAAA;AACAqI,EAAAA,YAAAA;AACAC,EAAAA,WAAAA;EAER,WAAA,CAAYtI,MAAAA,GAAuB,IAAIoB,YAAAA,EAAAA,EAAgB;AACrD,IAAA,IAAA,CAAKpB,MAAAA,GAASA,MAAAA;AAChB,EAAA;AAEA,EAAA,IAAIuI,KAAAA,GAAqB;AACvB,IAAA,IAAI,CAAC,KAAKF,YAAAA,EAAc;AACtB,MAAA,IAAA,CAAKA,YAAAA,GAAe,IAAIX,WAAAA,CAAY,IAAA,CAAK1H,MAAM,CAAA;AACjD,IAAA;AACA,IAAA,OAAO,IAAA,CAAKqI,YAAAA;AACd,EAAA;AAEA,EAAA,IAAI1I,IAAAA,GAAmB;AACrB,IAAA,IAAI,CAAC,KAAK2I,WAAAA,EAAa;AACrB,MAAA,IAAA,CAAKA,WAAAA,GAAc,IAAI3B,UAAAA,CAAW,IAAA,CAAK3G,MAAM,CAAA;AAC/C,IAAA;AACA,IAAA,OAAO,IAAA,CAAKsI,WAAAA;AACd,EAAA;AACF;;;ACxBO,IAAME,aAAAA,GAAgB;AAC3BC,EAAAA,MAAAA,0BAASC,SAAAA,MAAmC;IAAED,MAAAA,EAAQC;GAAU,CAAA,EAAxD,QAAA,CAAA;EACRC,OAAAA,kBAAS,MAAA,CAAA,CAACC,WAAmBC,KAAAA,MAAgC;AAC3DF,IAAAA,OAAAA,EAASC,aAAaC,KAAAA,GAAQ;AAACD,MAAAA,SAAAA;AAAWC,MAAAA;AAAS,KAAA,GAAA;GACrD,CAAA,EAFS,SAAA,CAAA;EAGTC,IAAAA,EAAM,MAAA;EACNC,OAAAA,EAAS,SAAA;EACTC,UAAAA,EAAY,YAAA;EACZC,MAAAA,EAAQ,QAAA;EACRC,QAAAA,EAAU,UAAA;EACVC,SAAAA,EAAW,WAAA;EACXC,IAAAA,EAAM,MAAA;EACNC,OAAAA,EAAS,SAAA;EACTC,KAAAA,kBAAO,MAAA,CAAA,CAACV,WAAmBC,KAAAA,MAA8B;AAAES,IAAAA,KAAAA,EAAOV,aAAaC,KAAAA,GAAQ;AAACD,MAAAA,SAAAA;AAAWC,MAAAA;AAAS,KAAA,GAAA;GAAK,CAAA,EAA1G,OAAA,CAAA;EACPU,IAAAA,EAAM,MAAA;EACNC,IAAAA,kBAAM,MAAA,CAAA,CAACC,MAAcC,QAAAA,MAAkC;IAAEF,IAAAA,EAAM;AAAEC,MAAAA,IAAAA;AAAMC,MAAAA;AAAS;GAAE,CAAA,EAA5E,MAAA,CAAA;EACNC,IAAAA,EAAM;AACR;AAEO,IAAMC,cAAAA,GAAiB;EAC5Bb,OAAAA,EAAS,SAAA;AACTN,EAAAA,MAAAA,0BAASC,SAAAA,MAAmC;IAAED,MAAAA,EAAQC;GAAU,CAAA,EAAxD,QAAA,CAAA;EACRI,IAAAA,EAAM,MAAA;EACNO,OAAAA,EAAS,SAAA;EACTH,QAAAA,EAAU,UAAA;EACVC,SAAAA,EAAW,WAAA;EACXC,IAAAA,EAAM,MAAA;EACNO,IAAAA,EAAM,MAAA;EACNJ,IAAAA,EAAM,MAAA;EACNN,MAAAA,EAAQ,QAAA;AAERY,EAAAA,MAAAA,0BAASC,UAAAA,MAAoC;IAAED,MAAAA,EAAQC;GAAW,CAAA,EAA1D,QAAA,CAAA;AACRvD,EAAAA,KAAAA,0BAAQwD,QAAAA,MAA8C;IAAExD,KAAAA,EAAOwD;GAAS,CAAA,EAAjE,OAAA,CAAA;EACPP,IAAAA,kBAAM,MAAA,CAAA,CAACC,MAAcC,QAAAA,MAAkC;IAAEF,IAAAA,EAAM;AAAEC,MAAAA,IAAAA;AAAMC,MAAAA;AAAS;GAAE,CAAA,EAA5E,MAAA,CAAA;EACNJ,KAAAA,kBAAO,MAAA,CAAA,CAACV,WAAmBC,KAAAA,MAA8B;AAAES,IAAAA,KAAAA,EAAOV,aAAaC,KAAAA,GAAQ;AAACD,MAAAA,SAAAA;AAAWC,MAAAA;AAAS,KAAA,GAAA;GAAK,CAAA,EAA1G,OAAA,CAAA;EACPF,OAAAA,kBAAS,MAAA,CAAA,CAACC,WAAmBC,KAAAA,MAAgC;AAC3DF,IAAAA,OAAAA,EAASC,aAAaC,KAAAA,GAAQ;AAACD,MAAAA,SAAAA;AAAWC,MAAAA;AAAS,KAAA,GAAA;GACrD,CAAA,EAFS,SAAA;AAGX;;;AC7BO,IAAemB,QAAf,MAAeA;EAXtB;;;EAYEP,IAAAA,GAAe,EAAA;EACfQ,WAAAA,GAAsB,EAAA;EACtBC,WAAAA,GAAsB,EAAA;AACtBC,EAAAA,UAAAA;EACAC,YAAAA,GAAwB,KAAA;EACxBC,UAAAA,GAAsB,KAAA;EACtBC,aAAAA,GAAyB,KAAA;AACzBC,EAAAA,OAAAA;AACAC,EAAAA,aAAAA;EAEA,WAAA,CAAYL,UAAAA,EAAkCnF,OAAAA,GAAwB,EAAC,EAAG;AACxE,IAAA,IAAA,CAAKmF,UAAAA,GAAaA,UAAAA;AAClB,IAAA,IAAA,CAAKV,IAAAA,GAAOzE,OAAAA,CAAQyE,IAAAA,EAAMgB,WAAAA,EAAAA,IAAiB,EAAA;AAC3C,IAAA,IAAA,CAAKR,WAAAA,GAAcjF,QAAQiF,WAAAA,IAAe,EAAA;AAC1C,IAAA,IAAA,CAAKC,WAAAA,GAAclF,QAAQkF,WAAAA,IAAe,EAAA;AAC1C,IAAA,IAAA,CAAKE,YAAAA,GAAepF,QAAQoF,YAAAA,IAAgB,KAAA;AAC5C,IAAA,IAAA,CAAKC,UAAAA,GAAarF,QAAQqF,UAAAA,IAAc,KAAA;AACxC,IAAA,IAAA,CAAKC,aAAAA,GAAgBtF,QAAQsF,aAAAA,IAAiB,KAAA;AAC9C,IAAA,IAAA,CAAKC,UAAUvF,OAAAA,CAAQuF,OAAAA;AACvB,IAAA,IAAA,CAAKC,gBAAgBxF,OAAAA,CAAQwF,aAAAA;AAC/B,EAAA;EAEAE,mBAAAA,GAAuC;AACrC,IAAA,OAAO;AACLjB,MAAAA,IAAAA,EAAM,IAAA,CAAKA,IAAAA;AACXQ,MAAAA,WAAAA,EAAa,IAAA,CAAKA,WAAAA;AAClBE,MAAAA,UAAAA,EAAY,IAAA,CAAKA,UAAAA;AACjBD,MAAAA,WAAAA,EAAa,IAAA,CAAKA,WAAAA;AAClBE,MAAAA,YAAAA,EAAc,IAAA,CAAKA,YAAAA;AACnBC,MAAAA,UAAAA,EAAY,IAAA,CAAKA,UAAAA;AACjBC,MAAAA,aAAAA,EAAe,IAAA,CAAKA,aAAAA;AACpBC,MAAAA,OAAAA,EAAS,IAAA,CAAKA,OAAAA;AACdC,MAAAA,aAAAA,EAAe,IAAA,CAAKA;AACtB,KAAA;AACF,EAAA;AACF;AAEO,IAAMG,eAAAA,GAAN,cAA8BX,KAAAA,CAAAA;EAjDrC;;;AAkDEY,EAAAA,SAAAA;AACAxI,EAAAA,UAAAA;AACAyI,EAAAA,QAAAA;AACAC,EAAAA,QAAAA;AAEA,EAAA,WAAA,CACEX,UAAAA,EACAS,SAAAA,EACAxI,UAAAA,EACA4C,OAAAA,GAAkC,EAAC,EACnC;AACA,IAAA,KAAA,CAAMmF,YAAYnF,OAAAA,CAAAA;AAClB,IAAA,IAAA,CAAK4F,SAAAA,GAAYA,SAAAA;AACjB,IAAA,IAAA,CAAKxI,UAAAA,GAAaA,UAAAA;AAClB,IAAA,IAAA,CAAKyI,QAAAA,GAAW7F,OAAAA,CAAQ6F,QAAAA,IAAY5L,gBAAAA,CAAiBC,OAAAA;AACrD,IAAA,IAAA,CAAK4L,QAAAA,GAAW9F,OAAAA,CAAQ8F,QAAAA,IAAY7L,gBAAAA,CAAiBC,OAAAA;AACvD,EAAA;AACF;AAEO,IAAM6L,WAAAA,GAAN,cAA0Bf,KAAAA,CAAAA;EArEjC;;;EAsEE,WAAA,CAAYtB,SAAAA,EAAmB1D,OAAAA,GAAwB,EAAC,EAAG;AACzD,IAAA,KAAA,CAAM4E,cAAAA,CAAenB,MAAAA,CAAOC,SAAAA,CAAAA,EAAY1D,OAAAA,CAAAA;AAC1C,EAAA;AACF;AAEO,IAAMgG,SAAAA,GAAN,cAAwBhB,KAAAA,CAAAA;EA3E/B;;;EA4EE,WAAA,CAAYhF,OAAAA,GAAwB,EAAC,EAAG;AACtC,IAAA,KAAA,CAAM4E,cAAAA,CAAed,MAAM9D,OAAAA,CAAAA;AAC7B,EAAA;AACF;AAEO,IAAMiG,YAAAA,GAAN,cAA2BjB,KAAAA,CAAAA;EAjFlC;;;EAkFE,WAAA,CAAYhF,OAAAA,GAAwB,EAAC,EAAG;AACtC,IAAA,KAAA,CAAM4E,cAAAA,CAAeb,SAAS/D,OAAAA,CAAAA;AAChC,EAAA;AACF;AAEO,IAAMkG,YAAAA,GAAN,cAA2BlB,KAAAA,CAAAA;EAvFlC;;;EAwFE,WAAA,CAAYhF,OAAAA,GAAwB,EAAC,EAAG;AACtC,IAAA,KAAA,CAAM4E,cAAAA,CAAeP,SAASrE,OAAAA,CAAAA;AAChC,EAAA;AACF;AAEO,IAAMmG,aAAAA,GAAN,cAA4BnB,KAAAA,CAAAA;EA7FnC;;;EA8FE,WAAA,CAAYhF,OAAAA,GAAwB,EAAC,EAAG;AACtC,IAAA,KAAA,CAAM4E,cAAAA,CAAeV,UAAUlE,OAAAA,CAAAA;AACjC,EAAA;AACF;AAEO,IAAMoG,cAAAA,GAAN,cAA6BpB,KAAAA,CAAAA;EAnGpC;;;EAoGE,WAAA,CAAYhF,OAAAA,GAAwB,EAAC,EAAG;AACtC,IAAA,KAAA,CAAM4E,cAAAA,CAAeT,WAAWnE,OAAAA,CAAAA;AAClC,EAAA;AACF;AAEO,IAAMqG,SAAAA,GAAN,cAAwBrB,KAAAA,CAAAA;EAzG/B;;;EA0GE,WAAA,CAAYhF,OAAAA,GAAwB,EAAC,EAAG;AACtC,IAAA,KAAA,CAAM4E,cAAAA,CAAeR,MAAMpE,OAAAA,CAAAA;AAC7B,EAAA;AACF;AAEO,IAAMsG,SAAAA,GAAN,cAAwBtB,KAAAA,CAAAA;EA/G/B;;;EAgHE,WAAA,CAAYhF,OAAAA,GAAwB,EAAC,EAAG;AACtC,IAAA,KAAA,CAAM4E,cAAAA,CAAeD,MAAM3E,OAAAA,CAAAA;AAC7B,EAAA;AACF;AAEO,IAAMuG,SAAAA,GAAN,cAAwBvB,KAAAA,CAAAA;EArH/B;;;EAsHE,WAAA,CAAYhF,OAAAA,GAAwB,EAAC,EAAG;AACtC,IAAA,KAAA,CAAM4E,cAAAA,CAAeL,MAAMvE,OAAAA,CAAAA;AAC7B,EAAA;AACF;AAEO,IAAMwG,WAAAA,GAAN,cAA0BxB,KAAAA,CAAAA;EA3HjC;;;EA4HE,WAAA,CAAYF,UAAAA,EAAoB9E,OAAAA,GAAwB,EAAC,EAAG;AAC1D,IAAA,KAAA,CAAM4E,cAAAA,CAAeC,MAAAA,CAAOC,UAAAA,CAAAA,EAAa9E,OAAAA,CAAAA;AAC3C,EAAA;AACF;AAEO,IAAMyG,UAAAA,GAAN,cAAyBzB,KAAAA,CAAAA;EAjIhC;;;EAkIE,WAAA,CAAYD,QAAAA,EAA+B/E,OAAAA,GAAwB,EAAC,EAAG;AACrE,IAAA,KAAA,CAAM4E,cAAAA,CAAerD,KAAAA,CAAMwD,QAAAA,CAAAA,EAAW/E,OAAAA,CAAAA;AACxC,EAAA;AACF;AAEO,IAAM0G,SAAAA,GAAN,cAAwB1B,KAAAA,CAAAA;EAvI/B;;;AAwIE,EAAA,WAAA,CAAYP,IAAAA,EAAcC,QAAAA,EAAoB1E,OAAAA,GAAwB,EAAC,EAAG;AACxE,IAAA,KAAA,CAAM4E,cAAAA,CAAeJ,IAAAA,CAAKC,IAAAA,EAAMC,QAAAA,GAAW1E,OAAAA,CAAAA;AAC7C,EAAA;AACF;AAEO,IAAM2G,UAAAA,GAAN,cAAyB3B,KAAAA,CAAAA;EA7IhC;;;AA8IE,EAAA,WAAA,CAAYpB,SAAAA,EAAmBC,KAAAA,EAAe7D,OAAAA,GAAwB,EAAC,EAAG;AACxE,IAAA,KAAA,CAAM4E,cAAAA,CAAeN,KAAAA,CAAMV,SAAAA,EAAWC,KAAAA,GAAQ7D,OAAAA,CAAAA;AAChD,EAAA;AACF;AAEO,IAAM4G,YAAAA,GAAN,cAA2B5B,KAAAA,CAAAA;EAnJlC;;;AAoJE,EAAA,WAAA,CAAYpB,SAAAA,EAAmBC,KAAAA,EAAe7D,OAAAA,GAAwB,EAAC,EAAG;AACxE,IAAA,KAAA,CAAM4E,cAAAA,CAAejB,OAAAA,CAAQC,SAAAA,EAAWC,KAAAA,GAAQ7D,OAAAA,CAAAA;AAClD,EAAA;AACF;AAEO,IAAM6G,WAAAA,GAAN,cAA0B7B,KAAAA,CAAAA;EAzJjC;;;EA0JE,WAAA,CAAYhF,OAAAA,GAAwB,EAAC,EAAG;AACtC,IAAA,KAAA,CAAM4E,cAAAA,CAAeX,QAAQjE,OAAAA,CAAAA;AAC/B,EAAA;AACF;;;ACvIA,IAAM8G,UAAAA,GAAaC,OAAO,QAAA,CAAA;AAC1B,IAAMC,cAAAA,GAAiBD,OAAO,WAAA,CAAA;AAC9B,IAAME,sBAAAA,GAAyBF,OAAO,kBAAA,CAAA;AACtC,IAAMG,eAAAA,GAAkBH,OAAO,aAAA,CAAA;AAC/B,IAAMI,WAAAA,GAAcJ,OAAO,SAAA,CAAA;AAC3B,IAAMK,QAAAA,GAAWL,OAAO,MAAA,CAAA;AAGjB,SAASM,MAAAA,CAAOrH,OAAAA,GAA+B,EAAC,EAAC;AACtD,EAAA,OAAO,SAAUsH,QAAaC,WAAAA,EAAmB;AAC/C,IAAA,MAAMC,SAASC,OAAAA,CAAQC,WAAAA,CAAYZ,YAAYQ,MAAAA,CAAO,WAAW,KAAK,EAAC;AAEvE,IAAA,MAAMK,SAAAA,GAAY3H,OAAAA,CAAQyE,IAAAA,IAAQ8C,WAAAA,CAAY9B,WAAAA,EAAW;AACzD,IAAA,MAAMN,UAAAA,GAAanF,OAAAA,CAAQ4H,IAAAA,IAAQhD,cAAAA,CAAed,IAAAA;AAElD,IAAA,MAAM5G,KAAAA,GAAQ,IAAK,cAAc8H,KAAAA,CAAAA;MAC/B,WAAA,GAAc;AACZ,QAAA,KAAA,CAAMG,UAAAA,EAAY;UAChBV,IAAAA,EAAMkD,SAAAA;AACN1C,UAAAA,WAAAA,EAAajF,OAAAA,CAAQiF,WAAAA;AACrBC,UAAAA,WAAAA,EAAalF,OAAAA,CAAQkF,WAAAA;AACrBE,UAAAA,YAAAA,EAAcpF,OAAAA,CAAQ6H,OAAAA;AACtBxC,UAAAA,UAAAA,EAAYrF,OAAAA,CAAQ8H,QAAAA;AACpBxC,UAAAA,aAAAA,EAAetF,OAAAA,CAAQsF,aAAAA;AACvBC,UAAAA,OAAAA,EAASvF,OAAAA,CAAQuF,OAAAA;AACjBC,UAAAA,aAAAA,EAAexF,OAAAA,CAAQwF;SACzB,CAAA;AACF,MAAA;KACF,EAAA;AAEAgC,IAAAA,MAAAA,CAAOD,WAAAA,CAAAA,GAAerK,KAAAA;AACtBuK,IAAAA,OAAAA,CAAQM,cAAAA,CAAejB,UAAAA,EAAYU,MAAAA,EAAQF,MAAAA,CAAO,WAAW,CAAA;AAC/D,EAAA,CAAA;AACF;AAzBgBD,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA;AA4BT,SAASW,YAAY9C,WAAAA,EAAmB;AAC7C,EAAA,OAAO,SAAUoC,MAAAA,EAAW;AAC1BG,IAAAA,OAAAA,CAAQM,cAAAA,CAAeb,eAAAA,EAAiBhC,WAAAA,EAAaoC,MAAAA,CAAAA;AACvD,EAAA,CAAA;AACF;AAJgBU,MAAAA,CAAAA,WAAAA,EAAAA,aAAAA,CAAAA;AAOT,SAASC,UAAAA,CACdrC,SAAAA,EACAxI,UAAAA,EACA4C,OAAAA,GASI,EAAC,EAAC;AAEN,EAAA,OAAO,SAAUsH,QAAaC,WAAAA,EAAmB;AAC/C,IAAA,MAAMC,SAASC,OAAAA,CAAQC,WAAAA,CAAYZ,YAAYQ,MAAAA,CAAO,WAAW,KAAK,EAAC;AAEvE,IAAA,MAAMpK,KAAAA,GAAQ,IAAIyI,eAAAA,CAAgB3F,OAAAA,CAAQ4H,QAAQhD,cAAAA,CAAeb,OAAAA,EAAS6B,WAAWxI,UAAAA,EAAY;AAC/F6H,MAAAA,WAAAA,EAAajF,OAAAA,CAAQiF,WAAAA;AACrBC,MAAAA,WAAAA,EAAalF,OAAAA,CAAQkF,WAAAA;AACrBG,MAAAA,UAAAA,EAAYrF,OAAAA,CAAQ8H,QAAAA;AACpBvC,MAAAA,OAAAA,EAASvF,OAAAA,CAAQuF,OAAAA;AACjBM,MAAAA,QAAAA,EAAU7F,OAAAA,CAAQ6F,QAAAA;AAClBC,MAAAA,QAAAA,EAAU9F,OAAAA,CAAQ8F;KACpB,CAAA;AACA5I,IAAAA,KAAAA,CAAMuH,IAAAA,GAAOzE,OAAAA,CAAQyE,IAAAA,IAAQ8C,WAAAA,CAAY9B,WAAAA,EAAW;AAEpD+B,IAAAA,MAAAA,CAAOD,WAAAA,CAAAA,GAAerK,KAAAA;AACtBuK,IAAAA,OAAAA,CAAQM,cAAAA,CAAejB,UAAAA,EAAYU,MAAAA,EAAQF,MAAAA,CAAO,WAAW,CAAA;AAC/D,EAAA,CAAA;AACF;AA9BgBW,MAAAA,CAAAA,UAAAA,EAAAA,YAAAA,CAAAA;AAgCT,IAAMC,YAAN,MAAMA;EAjGb;;;AAkGUC,EAAAA,OAAAA;AACAC,EAAAA,MAAAA,GAA8B,EAAC;EAEvC,WAAA,CAAYzN,IAAAA,GAA4B,EAAC,EAAG;AAC1C,IAAA,MAAM6M,MAAAA,GAAS,KAAKa,SAAAA,EAAS;AAG7B,IAAA,MAAMC,sBAA8C,EAAC;AACrD,IAAA,KAAA,MAAW,CAACC,YAAAA,EAAcrL,KAAAA,KAAUsL,MAAAA,CAAOC,OAAAA,CAAQjB,MAAAA,CAAAA,EAAS;AAC1Dc,MAAAA,mBAAAA,CAAoBpL,KAAAA,CAAMuH,IAAI,CAAA,GAAI8D,YAAAA;AACpC,IAAA;AAEA,IAAA,KAAA,MAAW,CAACG,GAAAA,EAAKvL,KAAAA,KAAUqL,MAAAA,CAAOC,OAAAA,CAAQ9N,IAAAA,CAAAA,EAAO;AAE/C,MAAA,IAAI+N,OAAOlB,MAAAA,EAAQ;AAChB,QAAA,IAAA,CAAakB,GAAAA,CAAAA,GAAOvL,KAAAA;AACvB,MAAA,CAAA,MAAA,IAESuL,OAAOJ,mBAAAA,EAAqB;AAClC,QAAA,IAAA,CAAaA,mBAAAA,CAAoBI,GAAAA,CAAI,CAAA,GAAIvL,KAAAA;MAC5C,CAAA,MAEK;AACH,QAAA,IAAA,CAAKiL,MAAAA,CAAOM,GAAAA,CAAAA,GAAOvL,KAAAA;AACrB,MAAA;AACF,IAAA;AACF,EAAA;;AAGA,EAAA,OAAiBwL,YAAAA,GAAuB;AACtC,IAAA,MAAM/C,SAAAA,GAAY6B,OAAAA,CAAQC,WAAAA,CAAYV,cAAAA,EAAgB,IAAI,CAAA;AAC1D,IAAA,IAAIpB,WAAW,OAAOA,SAAAA;AAGtB,IAAA,IAAI,WAAA,IAAe,IAAA,IAAQ,OAAQ,IAAA,CAAaA,cAAc,QAAA,EAAU;AACtE,MAAA,OAAQ,IAAA,CAAaA,SAAAA;AACvB,IAAA;AAEA,IAAA,OAAO,IAAA,CAAKnB,KAAKgB,WAAAA,EAAW;AAC9B,EAAA;AAEA,EAAA,OAAiBmD,cAAAA,GAAgC;AAC/C,IAAA,MAAM3D,WAAAA,GAAcwC,OAAAA,CAAQC,WAAAA,CAAYT,sBAAAA,EAAwB,IAAI,CAAA;AACpE,IAAA,IAAIhC,aAAa,OAAOA,WAAAA;AAGxB,IAAA,IAAI,aAAA,IAAiB,IAAA,IAAQ,OAAQ,IAAA,CAAaA,gBAAgB,QAAA,EAAU;AAC1E,MAAA,OAAQ,IAAA,CAAaA,WAAAA;AACvB,IAAA;AAEA,IAAA,OAAO,IAAA;AACT,EAAA;AAEA,EAAA,OAAc4D,cAAAA,GAAyB;AACrC,IAAA,MAAMC,mBAAAA,GAAsBrB,OAAAA,CAAQC,WAAAA,CAAYR,eAAAA,EAAiB,IAAI,CAAA;AACrE,IAAA,IAAI4B,qBAAqB,OAAOA,mBAAAA;AAGhC,IAAA,IAAI,aAAA,IAAiB,IAAA,IAAQ,OAAQ,IAAA,CAAa5D,gBAAgB,QAAA,EAAU;AAC1E,MAAA,OAAQ,IAAA,CAAaA,WAAAA;AACvB,IAAA;AAEA,IAAA,OAAO,EAAA;AACT,EAAA;AAEA,EAAA,OAAiB6D,UAAAA,GAAiC;AAChD,IAAA,OAAOtB,OAAAA,CAAQC,WAAAA,CAAYP,WAAAA,EAAa,IAAI,KAAK,EAAA;AACnD,EAAA;AAEA,EAAA,OAAiB6B,OAAAA,GAAkB;AACjC,IAAA,OAAOvB,OAAAA,CAAQC,WAAAA,CAAYN,QAAAA,EAAU,IAAI,CAAA,IAAK,EAAA;AAChD,EAAA;AAEA,EAAA,OAAiBiB,SAAAA,GAAmC;AAClD,IAAA,MAAMb,SAASC,OAAAA,CAAQC,WAAAA,CAAYZ,UAAAA,EAAY,IAAI,KAAK,EAAC;AAGzD,IAAA,IAAImC,aAAAA,GAAgB,KAAA;AACpB,IAAA,KAAA,MAAW/L,KAAAA,IAASsL,MAAAA,CAAO1K,MAAAA,CAAO0J,MAAAA,CAAAA,EAAoB;AACpD,MAAA,IAAItK,MAAMkI,YAAAA,EAAc;AACtB6D,QAAAA,aAAAA,GAAgB,IAAA;AAChB/L,QAAAA,KAAAA,CAAMmI,UAAAA,GAAa,KAAA;AACnB,QAAA;AACF,MAAA;AACF,IAAA;AAGA,IAAA,IAAI,CAAC4D,aAAAA,IAAiB,EAAE,IAAA,IAAQzB,MAAAA,CAAAA,EAAS;AACvCA,MAAAA,MAAAA,CAAO,IAAA,CAAA,GAAQ,IAAIvB,YAAAA,CAAa;QAC9Bb,YAAAA,EAAc,IAAA;QACdC,UAAAA,EAAY,KAAA;QACZC,aAAAA,EAAe,IAAA;QACfJ,WAAAA,EAAa;OACf,CAAA;AACAsC,MAAAA,MAAAA,CAAO,IAAA,EAAM/C,IAAAA,GAAO,IAAA;AACtB,IAAA;AAEA,IAAA,OAAO+C,MAAAA;AACT,EAAA;AAEA,EAAA,OAAiB0B,iBAAAA,GAA4B;AAC3C,IAAA,MAAM1B,MAAAA,GAAS,KAAKa,SAAAA,EAAS;AAC7B,IAAA,KAAA,MAAW,CAACK,GAAAA,EAAKxL,KAAAA,KAAUsL,MAAAA,CAAOC,OAAAA,CAAQjB,MAAAA,CAAAA,EAAS;AACjD,MAAA,IAAItK,MAAMkI,YAAAA,EAAc;AACtB,QAAA,OAAOlI,KAAAA,CAAMuH,IAAAA;AACf,MAAA;AACF,IAAA;AACA,IAAA,OAAO,IAAA;AACT,EAAA;AAEA,EAAA,OAAiB0E,eAAAA,GAAqC;AACpD,IAAA,MAAM3B,MAAAA,GAAS,KAAKa,SAAAA,EAAS;AAC7B,IAAA,OAAOG,MAAAA,CAAO1K,OAAO0J,MAAAA,CAAAA,CAAQnG,OAAO,CAAC+H,CAAAA,KAAMA,aAAazD,eAAAA,CAAAA;AAC1D,EAAA;;EAGU0C,SAAAA,GAAmC;AAC3C,IAAA,OAAQ,IAAA,CAAK,YAAiCA,SAAAA,EAAS;AACzD,EAAA;EAEUM,YAAAA,GAAuB;AAC/B,IAAA,OAAQ,IAAA,CAAK,YAAiCA,YAAAA,EAAY;AAC5D,EAAA;EAEUC,cAAAA,GAAgC;AACxC,IAAA,OAAQ,IAAA,CAAK,YAAiCA,cAAAA,EAAc;AAC9D,EAAA;EAEUM,iBAAAA,GAA4B;AACpC,IAAA,OAAQ,IAAA,CAAK,YAAiCA,iBAAAA,EAAiB;AACjE,EAAA;EAEUG,aAAAA,GAAmC;AAC3C,IAAA,MAAM7B,MAAAA,GAAS,KAAKa,SAAAA,EAAS;AAC7B,IAAA,KAAA,MAAWnL,KAAAA,IAASsL,MAAAA,CAAO1K,MAAAA,CAAO0J,MAAAA,CAAAA,EAAS;AACzC,MAAA,IAAItK,MAAMkI,YAAAA,EAAc;AACtB,QAAA,OAAOlI,KAAAA;AACT,MAAA;AACF,IAAA;AACA,IAAA,OAAOoE,MAAAA;AACT,EAAA;;AAGA,EAAA,IAAcM,MAAAA,GAA0B;AACtC,IAAA,IAAI,CAAC,KAAKuG,OAAAA,EAAS;AACjB,MAAA,IAAA,CAAKA,OAAAA,GAAU,IAAI/E,eAAAA,EAAAA;AACrB,IAAA;AACA,IAAA,OAAO,IAAA,CAAK+E,OAAAA;AACd,EAAA;;AAGA,EAAA,aAAaxF,WAAAA,CAAYf,MAAAA,GAA0B,IAAIwB,eAAAA,EAAAA,EAAiD;AACtG,IAAA,MAAMoE,MAAAA,GAAS,KAAKa,SAAAA,EAAS;AAC7B,IAAA,MAAMiB,OAAAA,GAAUd,MAAAA,CAAO1K,MAAAA,CAAO0J,MAAAA,CAAAA,CAAQjF,IAAI,CAAC6G,CAAAA,KAAMA,CAAAA,CAAE1D,mBAAAA,EAAmB,CAAA;AACtE,IAAA,MAAM6D,cAAuC,IAAA,CAAKJ,eAAAA,EAAe,CAAG5G,GAAAA,CAAI,CAAC6G,CAAAA,MAAO;AAC9EI,MAAAA,aAAAA,EAAe,KAAKb,YAAAA,EAAY;AAChCc,MAAAA,cAAAA,EAAgBL,CAAAA,CAAE3E,IAAAA;AAClBiF,MAAAA,WAAAA,EAAaN,CAAAA,CAAExD,SAAAA;AACf+D,MAAAA,YAAAA,EAAcP,CAAAA,CAAEhM,UAAAA;AAChByI,MAAAA,QAAAA,EAAUuD,CAAAA,CAAEvD,QAAAA;AACZC,MAAAA,QAAAA,EAAUsD,CAAAA,CAAEtD;KACd,CAAA,CAAA;AACA,IAAA,MAAM8D,OAAAA,GAAU,KAAKb,UAAAA,EAAU;AAC/B,IAAA,MAAM1N,IAAAA,GAAO,KAAK2N,OAAAA,EAAO;AACzB,IAAA,OAAO,MAAMpH,MAAAA,CAAO2B,KAAAA,CAAMZ,WAAAA,CAAY;AACpC8B,MAAAA,IAAAA,EAAM,KAAKkE,YAAAA,EAAY;MACvB1D,WAAAA,EAAa,IAAA,CAAK2D,gBAAc,IAAMtH,MAAAA;MACtC4D,WAAAA,EAAa,IAAA,CAAK2D,gBAAc,IAAM,EAAA;AACtCS,MAAAA,OAAAA;AACAC,MAAAA,WAAAA;AACAK,MAAAA,OAAAA;AACAvO,MAAAA;KACF,CAAA;AACF,EAAA;AAEA,EAAA,aAAauH,SAAAA,CAAUhB,MAAAA,GAA0B,IAAIwB,eAAAA,EAAAA,EAAiC;AACpF,IAAA,OAAO,MAAMxB,MAAAA,CAAO2B,KAAAA,CAAMX,SAAAA,CAAU;AAAEgD,MAAAA,SAAAA,EAAW,KAAK+C,YAAAA;KAAe,CAAA;AACvE,EAAA;AAEA,EAAA,aAAa9F,WAAAA,CAAYgH,OAAAA,EAAiBjI,MAAAA,GAA0B,IAAIwB,iBAAAA,EAAiC;AACvG,IAAA,OAAO,MAAMxB,MAAAA,CAAO2B,KAAAA,CAAMV,WAAAA,CAAY;AACpC+C,MAAAA,SAAAA,EAAW,KAAK+C,YAAAA,EAAY;MAC5BmB,YAAAA,EAAcD;KAChB,CAAA;AACF,EAAA;AAEA,EAAA,aAAa/G,aAAAA,CAAclB,MAAAA,GAA0B,IAAIwB,eAAAA,EAAAA,EAAiC;AACxF,IAAA,OAAO,MAAMxB,MAAAA,CAAO2B,KAAAA,CAAMT,aAAAA,CAAc;AAAE8C,MAAAA,SAAAA,EAAW,KAAK+C,YAAAA;KAAe,CAAA;AAC3E,EAAA;AAEA,EAAA,aAAazF,cAAAA,CAAetB,MAAAA,GAA0B,IAAIwB,eAAAA,EAAAA,EAAiD;AACzG,IAAA,OAAO,MAAMxB,MAAAA,CAAO2B,KAAAA,CAAML,cAAAA,CAAe;AAAE0C,MAAAA,SAAAA,EAAW,KAAK+C,YAAAA;KAAe,CAAA;AAC5E,EAAA;;AAGA,EAAA,aAAaoB,MAAAA,CAEXpP,IAAAA,EACAiH,MAAAA,GAA0B,IAAIwB,iBAAAA,EAChB;AACd,IAAA,MAAMlB,KAAAA,GAAQ,IAAA;AACd,IAAA,MAAMsF,MAAAA,GAAStF,MAAMmG,SAAAA,EAAS;AAC9B,IAAA,MAAMiB,UAAoB,EAAA;AAC1B,IAAA,MAAMxL,SAAgB,EAAA;AAEtB,IAAA,KAAA,MAAW,CAAC4K,GAAAA,EAAKvL,KAAAA,KAAUqL,MAAAA,CAAOC,OAAAA,CAAQ9N,IAAAA,CAAAA,EAAO;AAC/C,MAAA,IAAI+N,OAAOlB,MAAAA,EAAQ;AACjB8B,QAAAA,OAAAA,CAAQU,IAAAA,CAAKxC,MAAAA,CAAOkB,GAAAA,CAAAA,CAAKjE,IAAI,CAAA;AAC7B3G,QAAAA,MAAAA,CAAOkM,KAAK7M,KAAAA,CAAAA;MACd,CAAA,MAAO;AACL,QAAA,MAAM,IAAItC,KAAAA,CAAM,CAAA,eAAA,EAAkB6N,GAAAA,CAAAA,CAAK,CAAA;AACzC,MAAA;AACF,IAAA;AAEA,IAAA,OAAO9G,MAAAA,CAAOjH,KAAKmH,SAAAA,CAAU;AAC3B8D,MAAAA,SAAAA,EAAW1D,MAAMyG,YAAAA,EAAY;MAC7BhO,IAAAA,EAAM;AACJ2O,QAAAA,OAAAA;QACAxL,MAAAA,EAAQ;AAACA,UAAAA;;AACX;KACF,CAAA;AACF,EAAA;AAEA,EAAA,MAAMmM,IAAAA,CAAKrI,MAAAA,GAA0B,IAAIwB,eAAAA,EAAAA,EAAiC;AACxE,IAAA,MAAMpB,EAAAA,GAAK,KAAKqH,aAAAA,EAAa;AAC7B,IAAA,MAAMa,OAAAA,GAAW,IAAA,CAAa,IAAA,CAAKhB,iBAAAA,EAAiB,CAAA;AACpD,IAAA,MAAM1B,MAAAA,GAAS,KAAKa,SAAAA,EAAS;AAE7B,IAAA,IAAI6B,OAAAA,KAAY,IAAA,IAAQA,OAAAA,KAAY5I,MAAAA,EAAW;AAC7C,MAAA,MAAM3G,OAA4B,EAAC;AACnC,MAAA,KAAA,MAAW,CAAC+N,GAAAA,EAAKxL,KAAAA,KAAUsL,MAAAA,CAAOC,OAAAA,CAAQjB,MAAAA,CAAAA,EAAS;AACjD7M,QAAAA,IAAAA,CAAK+N,GAAAA,CAAAA,GAAQ,IAAA,CAAaA,GAAAA,CAAAA;AAC5B,MAAA;AACA,MAAA,OAAQ,IAAA,CAAK,WAAA,CAAiCqB,MAAAA,CAAOpP,IAAAA,EAAMiH,MAAAA,CAAAA;AAC7D,IAAA;AAEA,IAAA,MAAM0H,UAAoB,EAAA;AAC1B,IAAA,MAAMxL,SAAgB,EAAA;AACtB,IAAA,KAAA,MAAW,CAAC4K,GAAAA,EAAKxL,KAAAA,KAAUsL,MAAAA,CAAOC,OAAAA,CAAQjB,MAAAA,CAAAA,EAAS;AACjD,MAAA,IAAItK,KAAAA,CAAMuH,IAAAA,KAASzC,EAAAA,EAAIyC,IAAAA,EAAM;AAC3B6E,QAAAA,OAAAA,CAAQU,IAAAA,CAAK9M,MAAMuH,IAAI,CAAA;AACvB3G,QAAAA,MAAAA,CAAOkM,IAAAA,CAAM,IAAA,CAAatB,GAAAA,CAAI,CAAA;AAChC,MAAA;AACF,IAAA;AAEA,IAAA,OACE9G,MAAAA,IACA,IAAA,CAAKA,MAAAA,CAAOjH,IAAAA,CAAKoH,mBAAmBmI,OAAAA,EAAS;AAC3CtE,MAAAA,SAAAA,EAAW,KAAK+C,YAAAA,EAAY;MAC5BwB,OAAAA,EAAS;QACP9I,MAAAA,EAAQ;UAAC;;AACTiI,QAAAA,OAAAA;AACAxL,QAAAA;AACF;KACF,CAAA;AAEJ,EAAA;EAEA,MAAMsM,MAAAA,CAAO/I,QAAiB8G,OAAAA,EAAmD;AAC/E,IAAA,MAAMnG,EAAAA,GAAK,KAAKqH,aAAAA,EAAa;AAC7B,IAAA,MAAMa,OAAAA,GAAW,IAAA,CAAa,IAAA,CAAKhB,iBAAAA,EAAiB,CAAA;AACpD,IAAA,MAAMmB,WAAAA,GAAchJ,MAAAA,IAAUrE,EAAAA,CAAGF,GAAAA,CAAIG,EAAAA,CAAG+E,IAAIyC,IAAAA,IAAQ,IAAA,EAAMyF,OAAAA,CAAAA,CAAAA,CAAAA;AAE1D,IAAA,OACE/B,OAAAA,IACA,IAAA,CAAKvG,MAAAA,CAAOjH,IAAAA,CAAK8H,UAAAA,CAAW;AAC1BmD,MAAAA,SAAAA,EAAW,KAAK+C,YAAAA,EAAY;MAC5BwB,OAAAA,EAAS;QACP9I,MAAAA,EAAQgJ;AACV;KACF,CAAA;AAEJ,EAAA;AAEA,EAAA,aAAaC,UAAAA,CAEXC,KAAAA,EACAC,SAAAA,GAAoB,EAAA,EACpBrC,OAAAA,EACiB;AACjB,IAAA,IAAI,CAACoC,KAAAA,CAAME,MAAAA,EAAQ,OAAO,CAAA;AAC1B,IAAA,IAAID,SAAAA,IAAa,CAAA,EAAG,MAAM,IAAI3P,MAAM,mCAAA,CAAA;AAEpC,IAAA,MAAMqH,KAAAA,GAAQ,IAAA;AACd,IAAA,MAAMsF,MAAAA,GAAStF,MAAMmG,SAAAA,EAAS;AAC9B,IAAA,IAAIqC,GAAAA,GAAM,CAAA;AACVF,IAAAA,SAAAA,GAAYG,IAAAA,CAAKvL,GAAAA,CAAIoL,SAAAA,EAAW,GAAA,CAAA;AAEhC,IAAA,MAAMlB,OAAAA,GAAUd,MAAAA,CAAOoC,IAAAA,CAAKL,KAAAA,CAAM,CAAA,CAAE,CAAA;AACpC,IAAA,MAAMM,UAAAA,GAAa,IAAIC,GAAAA,CAAIxB,OAAAA,CAAAA;AAE3B,IAAA,KAAA,MAAWyB,OAAOzB,OAAAA,EAAS;AACzB,MAAA,IAAI,EAAEyB,OAAOvD,MAAAA,CAAAA,EAAS;AACpB,QAAA,MAAM,IAAI3M,KAAAA,CAAM,CAAA,eAAA,EAAkBkQ,GAAAA,CAAAA,CAAK,CAAA;AACzC,MAAA;AACF,IAAA;AAEA,IAAA,IAAIjN,SAAkB,EAAA;AACtB,IAAA,MAAM8D,MAAAA,GAASuG,OAAAA,IAAW,IAAI/E,eAAAA,EAAAA;AAE9B,IAAA,KAAA,MAAWzI,QAAQ4P,KAAAA,EAAO;AACxB,MAAA,IAAIM,WAAWG,IAAAA,KAAS,IAAIF,GAAAA,CAAItC,MAAAA,CAAOoC,KAAKjQ,IAAAA,CAAAA,CAAAA,CAAOqQ,IAAAA,IAAQ,CAAC1B,OAAAA,CAAQ7H,KAAAA,CAAM,CAACwJ,CAAAA,KAAMA,CAAAA,IAAKtQ,IAAAA,CAAAA,EAAO;AAC3F,QAAA,MAAM,IAAIE,MAAM,qCAAA,CAAA;AAClB,MAAA;AAEAiD,MAAAA,MAAAA,CAAOkM,IAAAA,CAAKV,QAAQ/G,GAAAA,CAAI,CAAC0I,MAAMtQ,IAAAA,CAAKsQ,CAAAA,CAAE,CAAA,CAAA;AAEtC,MAAA,IAAInN,MAAAA,CAAO2M,WAAWD,SAAAA,EAAW;AAC/BE,QAAAA,GAAAA,IAAO,MAAM9I,MAAAA,CAAOjH,IAAAA,CAAKkH,UAAAA,CAAW;AAClC+D,UAAAA,SAAAA,EAAW1D,MAAMyG,YAAAA,EAAY;UAC7BhO,IAAAA,EAAM;AAAE2O,YAAAA,OAAAA,EAASA,QAAQ/G,GAAAA,CAAI,CAAC0I,MAAMzD,MAAAA,CAAOyD,CAAAA,EAAGxG,IAAI,CAAA;AAAG3G,YAAAA;AAAO;SAC9D,CAAA;AACAA,QAAAA,MAAAA,GAAS,EAAA;AACX,MAAA;AACF,IAAA;AAEA,IAAA,IAAIA,MAAAA,CAAO2M,SAAS,CAAA,EAAG;AACrBC,MAAAA,GAAAA,IAAO,MAAM9I,MAAAA,CAAOjH,IAAAA,CAAKkH,UAAAA,CAAW;AAClC+D,QAAAA,SAAAA,EAAW1D,MAAMyG,YAAAA,EAAY;QAC7BhO,IAAAA,EAAM;AAAE2O,UAAAA,OAAAA,EAASA,QAAQ/G,GAAAA,CAAI,CAAC0I,MAAMzD,MAAAA,CAAOyD,CAAAA,EAAGxG,IAAI,CAAA;AAAG3G,UAAAA;AAAO;OAC9D,CAAA;AACF,IAAA;AAEA,IAAA,OAAO4M,GAAAA;AACT,EAAA;EAEA,aAAaQ,MAAAA,CAEX7J,MAAAA,EACA1G,IAAAA,EACAwN,OAAAA,EACiB;AACjB,IAAA,MAAMjG,KAAAA,GAAQ,IAAA;AACd,IAAA,MAAMsF,MAAAA,GAAStF,MAAMmG,SAAAA,EAAS;AAC9B,IAAA,MAAMiB,OAAAA,GAAUd,MAAAA,CAAOoC,IAAAA,CAAKjQ,IAAAA,CAAAA;AAE5B,IAAA,IAAI,CAAC2O,QAAQmB,MAAAA,EAAQ;AACnB,MAAA,MAAM,IAAI5P,MAAM,sBAAA,CAAA;AAClB,IAAA;AAEA,IAAA,KAAA,MAAWkQ,OAAOzB,OAAAA,EAAS;AACzB,MAAA,IAAI,EAAEyB,OAAOvD,MAAAA,CAAAA,EAAS;AACpB,QAAA,MAAM,IAAI3M,KAAAA,CAAM,CAAA,eAAA,EAAkBkQ,GAAAA,CAAAA,CAAK,CAAA;AACzC,MAAA;AACF,IAAA;AAEA,IAAA,MAAMjN,SAASwL,OAAAA,CAAQ/G,GAAAA,CAAI,CAAC0I,CAAAA,KAAMtQ,IAAAA,CAAKsQ,CAAAA,CAAE,CAAA;AACzC,IAAA,MAAMrJ,MAAAA,GAASuG,OAAAA,IAAW,IAAI/E,eAAAA,EAAAA;AAE9B,IAAA,OAAOxB,MAAAA,CAAOjH,KAAK6H,UAAAA,CAAW;AAC5BoD,MAAAA,SAAAA,EAAW1D,MAAMyG,YAAAA,EAAY;MAC7BwB,OAAAA,EAAS;AACP9I,QAAAA,MAAAA;AACAiI,QAAAA,OAAAA,EAASA,QAAQ/G,GAAAA,CAAI,CAAC0I,MAAMzD,MAAAA,CAAOyD,CAAAA,EAAGxG,IAAI,CAAA;AAC1C3G,QAAAA;AACF;KACF,CAAA;AACF,EAAA;EAEA,aAAaqN,MAAAA,CAEX9J,QACA8G,OAAAA,EACiB;AACjB,IAAA,MAAMjG,KAAAA,GAAQ,IAAA;AACd,IAAA,MAAMN,MAAAA,GAASuG,OAAAA,IAAW,IAAI/E,eAAAA,EAAAA;AAE9B,IAAA,OAAOxB,MAAAA,CAAOjH,KAAK8H,UAAAA,CAAW;AAC5BmD,MAAAA,SAAAA,EAAW1D,MAAMyG,YAAAA,EAAY;MAC7BwB,OAAAA,EAAS;AAAE9I,QAAAA;AAAO;KACpB,CAAA;AACF,EAAA;EAEA,aAAa5F,GAAAA,CAEX4F,MAAAA,EACA+J,MAAAA,EACAjD,OAAAA,EACY;AACZ,IAAA,MAAMjG,KAAAA,GAAQ,IAAA;AACd,IAAA,MAAMsF,MAAAA,GAAStF,MAAMmG,SAAAA,EAAS;AAC9B,IAAA,MAAMzG,MAAAA,GAASuG,OAAAA,IAAW,IAAI/E,eAAAA,EAAAA;AAE9B,IAAA,MAAMzI,IAAAA,GAAO,MAAMiH,MAAAA,CAAOjH,IAAAA,CAAKsH,QAAAA,CAAS;AACtC2D,MAAAA,SAAAA,EAAW1D,MAAMyG,YAAAA,EAAY;MAC7BxG,KAAAA,EAAO;AACLd,QAAAA,MAAAA;QACA+J,MAAAA,EAAQA,MAAAA,IAAU5C,OAAO1K,MAAAA,CAAO0J,MAAAA,EAAQjF,GAAAA,CAAI,CAAC6G,CAAAA,KAAMA,CAAAA,CAAE3E,IAAI,CAAA;QACzD4G,KAAAA,EAAO;AACT;KACF,CAAA;AAEA,IAAA,OAAO,IAAI,KAAK1Q,IAAAA,CAAAA;AAClB,EAAA;AAEA,EAAA,aAAa0G,OAEXrB,OAAAA,EAWc;AACd,IAAA,MAAMkC,KAAAA,GAAQ,IAAA;AACd,IAAA,MAAMN,MAAAA,GAAS5B,OAAAA,CAAQmI,OAAAA,IAAW,IAAI/E,eAAAA,EAAAA;AAEtC,IAAA,MAAMzI,IAAAA,GAAO,MAAMiH,MAAAA,CAAOjH,IAAAA,CAAK0H,SAAAA,CAAU;AACvCuD,MAAAA,SAAAA,EAAW1D,MAAMyG,YAAAA,EAAY;MAC7BxG,KAAAA,EAAO;AACLd,QAAAA,MAAAA,EAAQrB,OAAAA,CAAQqB,MAAAA;AAChBiK,QAAAA,IAAAA,EAAMtL,OAAAA,CAAQsL,IAAAA;AACdC,QAAAA,SAAAA,EAAWvL,OAAAA,CAAQuL,SAAAA;AACnBC,QAAAA,IAAAA,EAAMxL,QAAQwL,IAAAA,GAAO;UAACxL,OAAAA,CAAQwL;AAAQlK,SAAAA,GAAAA,MAAAA;AACtC+J,QAAAA,KAAAA,EAAOrL,OAAAA,CAAQqL,KAAAA;AACfI,QAAAA,MAAAA,EAAQzL,OAAAA,CAAQyL,MAAAA;AAChBC,QAAAA,OAAAA,EAAS1L,OAAAA,CAAQ0L,OAAAA;AACjBN,QAAAA,MAAAA,EAAQpL,OAAAA,CAAQoL;AAClB;KACF,CAAA;AAEA,IAAA,OAAOzQ,KAAK4H,GAAAA,CAAI,CAACb,SAAc,IAAI,IAAA,CAAKA,IAAAA,CAAAA,CAAAA;AAC1C,EAAA;EAEA,aAAaiK,KAAAA,CAEX3L,OAAAA,GAKI,EAAC,EACY;AACjB,IAAA,MAAMkC,KAAAA,GAAQ,IAAA;AACd,IAAA,MAAMN,MAAAA,GAAS5B,OAAAA,CAAQmI,OAAAA,IAAW,IAAI/E,eAAAA,EAAAA;AAEtC,IAAA,MAAMzI,IAAAA,GAAO,MAAMiH,MAAAA,CAAOjH,IAAAA,CAAK0H,SAAAA,CAAU;AACvCuD,MAAAA,SAAAA,EAAW1D,MAAMyG,YAAAA,EAAY;MAC7BxG,KAAAA,EAAO;AACLd,QAAAA,MAAAA,EAAQrB,QAAQqB,MAAAA,IAAU;AAAC,UAAA;YAAC3D,GAAAA,CAAI,IAAA,EAAMyD,KAAAA,CAAM,CAAA,CAAA;;;QAC5CoK,SAAAA,EAAW;AACT,UAAA;YACEK,MAAAA,EAAQ,IAAA;AACRC,YAAAA,QAAAA,EAAU9R,iBAAAA,CAAkB+R,KAAAA;YAC5BC,KAAAA,EAAO;AACT;;AAEFP,QAAAA,IAAAA,EAAMxL,QAAQwL,IAAAA,GAAO;UAACxL,OAAAA,CAAQwL;AAAQlK,SAAAA,GAAAA,MAAAA;QACtC+J,KAAAA,EAAO,CAAA;QACPI,MAAAA,EAAQ,CAAA;AACRC,QAAAA,OAAAA,EAAS1L,OAAAA,CAAQ0L,OAAAA;QACjBN,MAAAA,EAAQ;AAAC,UAAA;;AACX;KACF,CAAA;AAEA,IAAA,OAAOzQ,KAAK8P,MAAAA,GAAS,CAAA,GAAI9P,IAAAA,CAAK,CAAA,EAAGgR,KAAAA,GAAQ,CAAA;AAC3C,EAAA;EAEAK,QAAAA,GAAmB;AACjB,IAAA,MAAMxE,MAAAA,GAAS,KAAKa,SAAAA,EAAS;AAC7B,IAAA,MAAM1N,OAA4B,EAAC;AAEnC,IAAA,KAAA,MAAW+N,GAAAA,IAAOF,MAAAA,CAAOoC,IAAAA,CAAKpD,MAAAA,CAAAA,EAAS;AACrC,MAAA,MAAMrK,KAAAA,GAAS,KAAauL,GAAAA,CAAAA;AAC5B,MAAA,IAAI,EAAEvL,iBAAiB6H,KAAAA,CAAAA,EAAQ;AAC7BrK,QAAAA,IAAAA,CAAK+N,GAAAA,CAAAA,GAAOvL,KAAAA;AACd,MAAA;AACF,IAAA;AAEAxC,IAAAA,IAAAA,CAAKyN,SAAS,IAAA,CAAKA,MAAAA;AACnB,IAAA,OAAO,CAAA,EAAG,IAAA,CAAK,WAAA,CAAY3D,IAAI,CAAA,CAAA,EAAI1I,IAAAA,CAAKC,SAAAA,CAAUrB,IAAAA,CAAAA,CAAMY,KAAAA,CAAM,CAAA,EAAG,EAAC,CAAA,CAAA,CAAA,CAAA;AACpE,EAAA;EAEA0Q,MAAAA,GAA8B;AAC5B,IAAA,MAAMzE,MAAAA,GAAS,KAAKa,SAAAA,EAAS;AAC7B,IAAA,MAAM1N,OAA4B,EAAC;AAEnC,IAAA,KAAA,MAAW+N,GAAAA,IAAOF,MAAAA,CAAOoC,IAAAA,CAAKpD,MAAAA,CAAAA,EAAS;AACrC7M,MAAAA,IAAAA,CAAK+N,GAAAA,CAAAA,GAAQ,IAAA,CAAaA,GAAAA,CAAAA;AAC5B,IAAA;AAEA,IAAA,OAAO;MAAE,GAAG/N,IAAAA;AAAM,MAAA,GAAG,IAAA,CAAKyN;AAAO,KAAA;AACnC,EAAA;AACF","file":"index.cjs","sourcesContent":["import { Filter } from './filter';\n\nexport const AccessType = {\n None: 'None',\n Read: 'Read',\n Write: 'Write',\n Admin: 'Admin',\n} as const;\n\nexport type AccessType = (typeof AccessType)[keyof typeof AccessType];\n\nexport interface SyntropixDBRowAccess {\n read?: Filter;\n write?: Filter;\n}\n\nexport interface SyntropixDBAccess {\n tableAccess: AccessType;\n rowAccess?: Record<string, SyntropixDBRowAccess>;\n columnAccess: Record<string, AccessType>;\n createdAt: Date;\n updatedAt: Date;\n}\n","export const IndexType = {\n Gin: 'Gin',\n GinTrgmOps: 'GinTrgmOps',\n IvfflatL2Ops: 'IvfflatL2Ops',\n InfflatCosineOps: 'InfflatCosineOps',\n InfflatIpOps: 'InfflatIpOps',\n} as const;\n\nexport type IndexType = (typeof IndexType)[keyof typeof IndexType];\n\nexport interface SyntropixDBIndex {\n name?: string;\n unique: boolean;\n nullsNotDistinct: boolean;\n columns: string[];\n indexType: IndexType;\n}\n","export const SortType = {\n Descending: 'Descending',\n Ascending: 'Ascending',\n} as const;\n\nexport type SortType = (typeof SortType)[keyof typeof SortType];\n\nexport enum AggregateFunction {\n Count = 'Count',\n Sum = 'Sum',\n Avg = 'Avg',\n Min = 'Min',\n Max = 'Max',\n CountDistinct = 'CountDistinct',\n}\n\nexport interface Join {\n table: string;\n on: any;\n}\n\nexport interface Aggregate {\n column: string;\n function: AggregateFunction;\n alias: string;\n}\n\nexport interface GroupBy {\n columns: string[];\n}\n\nexport interface Sort {\n column: string;\n direction: SortType;\n}\n\nexport interface SimilarityOptions {\n threshold: number;\n order?: SortType;\n alias?: string;\n}\n\nexport enum FilterOperation {\n LT = 'LT',\n LTE = 'LTE',\n GT = 'GT',\n GTE = 'GTE',\n EQ = 'EQ',\n NEQ = 'NEQ',\n Between = 'Between',\n In = 'In',\n Contains = 'Contains',\n Overlap = 'Overlap',\n NotIn = 'NotIn',\n Like = 'Like',\n NotLike = 'NotLike',\n ILike = 'ILike',\n NotILike = 'NotILike',\n IsNull = 'IsNull',\n IsNotNull = 'IsNotNull',\n Similarity = 'Similarity',\n SimilarityDistance = 'SimilarityDistance',\n WordSimilarity = 'WordSimilarity',\n WordSimilarityDistance = 'WordSimilarityDistance',\n StrictWordSimilarity = 'StrictWordSimilarity',\n StrictWordSimilarityDistance = 'StrictWordSimilarityDistance',\n EuclideanDistance = 'EuclideanDistance',\n NegativeInnerProduct = 'NegativeInnerProduct',\n CosineDistance = 'CosineDistance',\n}\n\nexport interface FilterItem {\n columnName: string;\n operator: FilterOperation;\n staticValue?: any;\n columnValue?: string;\n simiarityOptions?: SimilarityOptions;\n}\n\nexport type FilterGroup = FilterItem[];\n\nexport type Filter = FilterGroup[];\n","export const ForeignKeyAction = {\n Cascade: 'Cascade',\n Restrict: 'Restrict',\n SetNull: 'SetNull',\n NoAction: 'NoAction',\n SetDefault: 'SetDefault',\n} as const;\n\nexport type ForeignKeyAction = (typeof ForeignKeyAction)[keyof typeof ForeignKeyAction];\n\nexport interface SyntropixDBForeignKey {\n name?: string;\n fromTableName: string;\n fromColumnName: string;\n toTableName: string;\n toColumnName: string;\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n}\n","import { ClientConfig } from '@/core/config';\nimport { SyntropixResponse } from '@/types';\nimport axios, { AxiosError } from 'axios';\nimport { EJSON } from 'bson';\n\nfunction handleError(error: AxiosError) {\n const axiosErr = error as AxiosError<SyntropixResponse<any>>;\n if (axiosErr.response?.data?.status === 'error') {\n throw new Error(axiosErr.response.data.message);\n }\n throw new Error(axiosErr.message);\n}\n\nexport class BaseClient {\n protected config: ClientConfig;\n\n constructor(config: ClientConfig) {\n this.config = config;\n }\n\n private headers() {\n return {\n 'Content-Type': 'application/json',\n Authorization: this.config.apiKey || '',\n };\n }\n\n private url(path: string) {\n if (path.startsWith('/')) {\n path = path.slice(1);\n }\n return `${this.config.baseUrl}${path}`;\n }\n\n public async get<T>(path: string, data: Record<string, any> = {}): Promise<T> {\n try {\n const response = await axios.get(this.url(path), {\n headers: this.headers(),\n params: data,\n });\n const content = EJSON.parse(JSON.stringify(response.data));\n if (content.status !== 'success') {\n throw new Error(content.message as string);\n }\n return content.data as T;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n handleError(error);\n }\n console.error(error);\n throw new Error('Failed to get data: Unknown error');\n }\n }\n\n public async post<T>(path: string, data: Record<string, any> = {}): Promise<T> {\n try {\n const response = await axios.post(this.url(path), data, {\n headers: this.headers(),\n });\n const content = EJSON.parse(JSON.stringify(response.data));\n if (content.status !== 'success') {\n throw new Error(content.message);\n }\n return content.data;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n handleError(error);\n }\n console.error(error);\n throw new Error('Failed to post data: Unknown error');\n }\n }\n}\n","export class ClientConfig {\n public apiKey?: string;\n public baseUrl?: string;\n public timeout?: number;\n public retries?: number;\n\n constructor(config?: any) {\n this.apiKey = config?.apiKey || process.env.SYNTROPIX_API_KEY;\n this.baseUrl = config?.baseUrl || process.env.SYNTROPIX_API_URL;\n this.timeout = config?.timeout || process.env.SYNTROPIX_API_TIMEOUT;\n this.retries = config?.retries || process.env.SYNTROPIX_API_RETRIES;\n\n if (!this.apiKey || !this.baseUrl) {\n throw new Error('API key and base URL are required');\n }\n\n if (!this.timeout) {\n this.timeout = 10000;\n }\n\n if (!this.retries) {\n this.retries = 3;\n }\n\n if (!this.baseUrl.endsWith('/')) {\n this.baseUrl += '/';\n }\n }\n}\n","import { Filter, FilterGroup, FilterItem, FilterOperation, SimilarityOptions } from '@/types';\n\nexport const AND = (...conditions: FilterItem[]): FilterGroup => conditions;\n\nexport const OR = (...conditions: FilterGroup[]): Filter => conditions;\n\nexport const EQ = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EQ,\n staticValue: value,\n});\n\nexport const NE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NEQ,\n staticValue: value,\n});\n\nexport const GT = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GT,\n staticValue: value,\n});\n\nexport const GTE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GTE,\n staticValue: value,\n});\n\nexport const LT = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LT,\n staticValue: value,\n});\n\nexport const LTE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LTE,\n staticValue: value,\n});\n\nexport const IN = (field: string, values: any[]): FilterItem => ({\n columnName: field,\n operator: FilterOperation.In,\n staticValue: values,\n});\n\nexport const CONTAINS = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Contains,\n staticValue: value,\n});\n\nexport const OVERLAP = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Overlap,\n staticValue: value,\n});\n\nexport const I_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.ILike,\n staticValue: pattern,\n});\n\nexport const NOT_I_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotILike,\n staticValue: pattern,\n});\n\nexport const NOT_IN = (field: string, values: any[]): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotIn,\n staticValue: values,\n});\n\nexport const LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Like,\n staticValue: pattern,\n});\n\nexport const NOT_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotLike,\n staticValue: pattern,\n});\n\nexport const IS_NULL = (field: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.IsNull,\n});\n\nexport const IS_NOT_NULL = (field: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.IsNotNull,\n});\n\nexport const BETWEEN = (field: string, min: any, max: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Between,\n staticValue: [min, max],\n});\n\n// Column comparison (compare two columns)\nexport const EQ_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EQ,\n columnValue: otherField,\n});\n\nexport const NE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NEQ,\n columnValue: otherField,\n});\n\nexport const GT_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GT,\n columnValue: otherField,\n});\n\nexport const GTE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GTE,\n columnValue: otherField,\n});\n\nexport const LT_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LT,\n columnValue: otherField,\n});\n\nexport const LTE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LTE,\n columnValue: otherField,\n});\n\n// Similarity operations\nexport const SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Similarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.SimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const WORD_SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.WordSimilarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const WORD_SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.WordSimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const STRICT_WORD_SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.StrictWordSimilarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const STRICT_WORD_SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.StrictWordSimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const EUCLIDEAN_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EuclideanDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const NEGATIVE_INNER_PRODUCT = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NegativeInnerProduct,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const COSINE_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.CosineDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\n// Helper function for values (backward compatibility)\nexport const Value = (value: any) => value;\n\n// Helper function for wrapping filter\nexport function FilterWrapper(filter: Filter | FilterGroup | FilterItem | undefined): Filter | undefined {\n if (filter === undefined) {\n return undefined;\n }\n if (!Array.isArray(filter)) {\n return OR(AND(filter));\n } else if (!filter.every((item) => Array.isArray(item))) {\n return OR(filter);\n } else {\n return filter;\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport { FilterWrapper } from '@/core/filter-builder';\nimport { DeleteDataDto, InsertDto, QueryDto, UpdateDto } from '@/types';\nimport { BaseClient } from './base-client';\n\nexport class DataClient {\n private client: BaseClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.client = new BaseClient(config);\n }\n\n async insertData(data: InsertDto): Promise<any> {\n return await this.client.post<any>('/insert', data);\n }\n\n async insertOne(data: InsertDto): Promise<any> {\n return await this.client.post<any>('/insert/one', data);\n }\n\n async updateByPrimaryKey(pk: string, data: UpdateDto): Promise<any> {\n return await this.client.post<any>(`/update/${pk}`, data);\n }\n\n async queryOne(data: QueryDto, model?: any): Promise<any> {\n data.query.filter = FilterWrapper(data.query.filter);\n const response = await this.client.post<any>('/query', { One: data });\n if (model !== undefined) {\n return new model(response);\n }\n return response;\n }\n\n async queryMany(data: QueryDto, model?: any): Promise<any> {\n data.query.filter = FilterWrapper(data.query.filter);\n const response = await this.client.post<any[]>('/query', { Many: data });\n if (model !== undefined) {\n // In TypeScript, we would typically use a validation library or manual validation\n // For now, we'll return the data as-is, but in a real implementation you might want to use\n // a library like class-validator or zod for validation\n return response.map((item: any) => new model(item));\n }\n return response;\n }\n\n async updateData(data: UpdateDto): Promise<any> {\n return await this.client.post<any>('/update', data);\n }\n\n async deleteData(data: DeleteDataDto): Promise<any> {\n return await this.client.post<any>('/delete', data);\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport {\n TableAddColumnDto,\n TableCreateDto,\n TableCreateResponse,\n TableDropColumnDto,\n TableDropDto,\n TableGetListDto,\n TableGetSchemaDto,\n TableListResponse,\n TableModifyColumnDto,\n TableRenameDto,\n TableSchemaResponse,\n TableTruncateDto,\n} from '@/types';\nimport { BaseClient } from './base-client';\n\nexport class TableClient {\n private client: BaseClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.client = new BaseClient(config);\n }\n\n async createTable(data: TableCreateDto): Promise<TableCreateResponse> {\n return await this.client.post<TableCreateResponse>('/table/create', data);\n }\n\n async dropTable(data: TableDropDto): Promise<any> {\n return await this.client.post<any>('/table/drop', data);\n }\n\n async renameTable(data: TableRenameDto): Promise<any> {\n return await this.client.post<any>('/table/rename', data);\n }\n\n async truncateTable(data: TableTruncateDto): Promise<any> {\n return await this.client.post<any>('/table/truncate', data);\n }\n\n async addColumn(data: TableAddColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/add', data);\n }\n\n async dropColumn(data: TableDropColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/drop', data);\n }\n\n async modifyColumn(data: TableModifyColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/modify', data);\n }\n\n async getTableSchema(data: TableGetSchemaDto): Promise<TableSchemaResponse> {\n return await this.client.get<TableSchemaResponse>('/table/schema', data);\n }\n\n async getTableList(data: TableGetListDto): Promise<TableListResponse> {\n return await this.client.get<TableListResponse>('/table/list', data);\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport { DataClient } from './data-client';\nimport { TableClient } from './table-client';\n\nexport class SyntropixClient {\n private config: ClientConfig;\n private _tableClient?: TableClient;\n private _dataClient?: DataClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.config = config;\n }\n\n get table(): TableClient {\n if (!this._tableClient) {\n this._tableClient = new TableClient(this.config);\n }\n return this._tableClient;\n }\n\n get data(): DataClient {\n if (!this._dataClient) {\n this._dataClient = new DataClient(this.config);\n }\n return this._dataClient;\n }\n}\n","import { ArrayDataTypeSchema, ArrayType, DecimalType, EnumType, MoneyType, StringType, VectorType } from '@/types';\n\nexport const ArrayDataType = {\n String: (maxLength: number): StringType => ({ String: maxLength }),\n Decimal: (precision: number, scale: number): DecimalType => ({\n Decimal: precision && scale ? [precision, scale] : null,\n }),\n Text: 'Text',\n Integer: 'Integer',\n BigInteger: 'BigInteger',\n Double: 'Double',\n DateTime: 'DateTime',\n Timestamp: 'Timestamp',\n Date: 'Date',\n Boolean: 'Boolean',\n Money: (precision: number, scale: number): MoneyType => ({ Money: precision && scale ? [precision, scale] : null }),\n Uuid: 'Uuid',\n Enum: (name: string, variants: string[]): EnumType => ({ Enum: { name, variants } }),\n Json: 'Json',\n} as const;\n\nexport const ColumnDataType = {\n Integer: 'Integer',\n String: (maxLength: number): StringType => ({ String: maxLength }),\n Text: 'Text',\n Boolean: 'Boolean',\n DateTime: 'DateTime',\n Timestamp: 'Timestamp',\n Date: 'Date',\n Json: 'Json',\n Uuid: 'Uuid',\n Double: 'Double',\n\n Vector: (dimensions: number): VectorType => ({ Vector: dimensions }),\n Array: (dataType: ArrayDataTypeSchema): ArrayType => ({ Array: dataType }),\n Enum: (name: string, variants: string[]): EnumType => ({ Enum: { name, variants } }),\n Money: (precision: number, scale: number): MoneyType => ({ Money: precision && scale ? [precision, scale] : null }),\n Decimal: (precision: number, scale: number): DecimalType => ({\n Decimal: precision && scale ? [precision, scale] : null,\n }),\n} as const;\n","import {\n AccessType,\n ArrayDataTypeSchema,\n ColumnCreateDto,\n ColumnDataTypeSchema,\n FieldOptions,\n ForeignKeyAction,\n ForeignKeyFieldOptions,\n} from '@/types';\nimport { ColumnDataType } from './data-type';\n\nexport abstract class Field {\n name: string = '';\n displayName: string = '';\n description: string = '';\n columnType: ColumnDataTypeSchema;\n isPrimaryKey: boolean = false;\n isNullable: boolean = false;\n autoIncrement: boolean = false;\n default?: any;\n defaultAccess?: AccessType;\n\n constructor(columnType: ColumnDataTypeSchema, options: FieldOptions = {}) {\n this.columnType = columnType;\n this.name = options.name?.toLowerCase() || '';\n this.displayName = options.displayName || '';\n this.description = options.description || '';\n this.isPrimaryKey = options.isPrimaryKey || false;\n this.isNullable = options.isNullable || false;\n this.autoIncrement = options.autoIncrement || false;\n this.default = options.default;\n this.defaultAccess = options.defaultAccess;\n }\n\n intoColumnCreateDto(): ColumnCreateDto {\n return {\n name: this.name,\n displayName: this.displayName,\n columnType: this.columnType,\n description: this.description,\n isPrimaryKey: this.isPrimaryKey,\n isNullable: this.isNullable,\n autoIncrement: this.autoIncrement,\n default: this.default,\n defaultAccess: this.defaultAccess,\n };\n }\n}\n\nexport class ForeignKeyField extends Field {\n tableName: string;\n columnName: string;\n onDelete: ForeignKeyAction;\n onUpdate: ForeignKeyAction;\n\n constructor(\n columnType: ColumnDataTypeSchema,\n tableName: string,\n columnName: string,\n options: ForeignKeyFieldOptions = {},\n ) {\n super(columnType, options);\n this.tableName = tableName;\n this.columnName = columnName;\n this.onDelete = options.onDelete || ForeignKeyAction.Cascade;\n this.onUpdate = options.onUpdate || ForeignKeyAction.Cascade;\n }\n}\n\nexport class StringField extends Field {\n constructor(maxLength: number, options: FieldOptions = {}) {\n super(ColumnDataType.String(maxLength), options);\n }\n}\n\nexport class TextField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Text, options);\n }\n}\n\nexport class IntegerField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Integer, options);\n }\n}\n\nexport class BooleanField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Boolean, options);\n }\n}\n\nexport class DateTimeField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.DateTime, options);\n }\n}\n\nexport class TimestampField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Timestamp, options);\n }\n}\n\nexport class DateField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Date, options);\n }\n}\n\nexport class JsonField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Json, options);\n }\n}\n\nexport class UuidField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Uuid, options);\n }\n}\n\nexport class VectorField extends Field {\n constructor(dimensions: number, options: FieldOptions = {}) {\n super(ColumnDataType.Vector(dimensions), options);\n }\n}\n\nexport class ArrayField extends Field {\n constructor(dataType: ArrayDataTypeSchema, options: FieldOptions = {}) {\n super(ColumnDataType.Array(dataType), options);\n }\n}\n\nexport class EnumField extends Field {\n constructor(name: string, variants: string[], options: FieldOptions = {}) {\n super(ColumnDataType.Enum(name, variants), options);\n }\n}\n\nexport class MoneyField extends Field {\n constructor(precision: number, scale: number, options: FieldOptions = {}) {\n super(ColumnDataType.Money(precision, scale), options);\n }\n}\n\nexport class DecimalField extends Field {\n constructor(precision: number, scale: number, options: FieldOptions = {}) {\n super(ColumnDataType.Decimal(precision, scale), options);\n }\n}\n\nexport class DoubleField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Double, options);\n }\n}\n","import {\n Aggregate,\n AggregateFunction,\n ColumnCreateOptions,\n ColumnDataTypeSchema,\n Filter,\n ForeignKeyAction,\n GroupBy,\n Join,\n Sort,\n SyntropixDBForeignKey,\n SyntropixDBIndex,\n TableCreateResponse,\n TableSchemaResponse,\n} from '@/types';\nimport 'reflect-metadata';\nimport { SyntropixClient } from './client';\nimport { ColumnDataType } from './data-type';\nimport { Field, ForeignKeyField, IntegerField } from './field';\nimport { AND, EQ, GTE, OR, Value } from './filter-builder';\n\n// Metadata keys\nconst FIELDS_KEY = Symbol('fields');\nconst TABLE_NAME_KEY = Symbol('tableName');\nconst TABLE_DISPLAY_NAME_KEY = Symbol('displayTableName');\nconst DESCRIPTION_KEY = Symbol('description');\nconst INDEXES_KEY = Symbol('indexes');\nconst PATH_KEY = Symbol('path');\n\n// Column decorator\nexport function Column(options: ColumnCreateOptions = {}) {\n return function (target: any, propertyKey: string) {\n const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};\n\n const fieldName = options.name || propertyKey.toLowerCase();\n const columnType = options.type || ColumnDataType.Text;\n\n const field = new (class extends Field {\n constructor() {\n super(columnType, {\n name: fieldName,\n displayName: options.displayName,\n description: options.description,\n isPrimaryKey: options.primary,\n isNullable: options.nullable,\n autoIncrement: options.autoIncrement,\n default: options.default,\n defaultAccess: options.defaultAccess,\n });\n }\n })();\n\n fields[propertyKey] = field;\n Reflect.defineMetadata(FIELDS_KEY, fields, target.constructor);\n };\n}\n\n// Description decorator\nexport function Description(description: string) {\n return function (target: any) {\n Reflect.defineMetadata(DESCRIPTION_KEY, description, target);\n };\n}\n\n// ForeignKey decorator\nexport function ForeignKey(\n tableName: string,\n columnName: string,\n options: {\n type?: ColumnDataTypeSchema;\n displayName?: string;\n name?: string;\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n description?: string;\n nullable?: boolean;\n default?: any;\n } = {},\n) {\n return function (target: any, propertyKey: string) {\n const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};\n\n const field = new ForeignKeyField(options.type || ColumnDataType.Integer, tableName, columnName, {\n displayName: options.displayName,\n description: options.description,\n isNullable: options.nullable,\n default: options.default,\n onDelete: options.onDelete,\n onUpdate: options.onUpdate,\n });\n field.name = options.name || propertyKey.toLowerCase();\n\n fields[propertyKey] = field;\n Reflect.defineMetadata(FIELDS_KEY, fields, target.constructor);\n };\n}\n\nexport class BaseModel {\n private _client?: SyntropixClient;\n private _extra: Record<string, any> = {};\n\n constructor(data: Record<string, any> = {}) {\n const fields = this.getFields();\n\n // Create a mapping from column names to property names\n const columnToPropertyMap: Record<string, string> = {};\n for (const [propertyName, field] of Object.entries(fields)) {\n columnToPropertyMap[field.name] = propertyName;\n }\n\n for (const [key, value] of Object.entries(data)) {\n // Check if key is a property name\n if (key in fields) {\n (this as any)[key] = value;\n }\n // Check if key is a column name\n else if (key in columnToPropertyMap) {\n (this as any)[columnToPropertyMap[key]] = value;\n }\n // Otherwise, store in _extra\n else {\n this._extra[key] = value;\n }\n }\n }\n\n // Static metadata getters\n protected static getTableName(): string {\n const tableName = Reflect.getMetadata(TABLE_NAME_KEY, this);\n if (tableName) return tableName;\n\n // Check for static tableName property\n if ('tableName' in this && typeof (this as any).tableName === 'string') {\n return (this as any).tableName;\n }\n\n return this.name.toLowerCase();\n }\n\n protected static getDisplayName(): string | null {\n const displayName = Reflect.getMetadata(TABLE_DISPLAY_NAME_KEY, this);\n if (displayName) return displayName;\n\n // Check for static displayName property\n if ('displayName' in this && typeof (this as any).displayName === 'string') {\n return (this as any).displayName;\n }\n\n return null;\n }\n\n public static getDescription(): string {\n const metadataDescription = Reflect.getMetadata(DESCRIPTION_KEY, this);\n if (metadataDescription) return metadataDescription;\n\n // Check for static description property as fallback\n if ('description' in this && typeof (this as any).description === 'string') {\n return (this as any).description;\n }\n\n return '';\n }\n\n protected static getIndexes(): SyntropixDBIndex[] {\n return Reflect.getMetadata(INDEXES_KEY, this) || [];\n }\n\n protected static getPath(): string {\n return Reflect.getMetadata(PATH_KEY, this) || '';\n }\n\n protected static getFields(): Record<string, Field> {\n const fields = Reflect.getMetadata(FIELDS_KEY, this) || {};\n\n // Check if there's a primary key\n let hasPrimaryKey = false;\n for (const field of Object.values(fields) as Field[]) {\n if (field.isPrimaryKey) {\n hasPrimaryKey = true;\n field.isNullable = false;\n break;\n }\n }\n\n // If no primary key, add default 'id' field\n if (!hasPrimaryKey && !('id' in fields)) {\n fields['id'] = new IntegerField({\n isPrimaryKey: true,\n isNullable: false,\n autoIncrement: true,\n description: 'Primary key',\n });\n fields['id'].name = 'id';\n }\n\n return fields;\n }\n\n protected static getPrimaryKeyName(): string {\n const fields = this.getFields();\n for (const [key, field] of Object.entries(fields)) {\n if (field.isPrimaryKey) {\n return field.name;\n }\n }\n return 'id';\n }\n\n protected static getAssociations(): ForeignKeyField[] {\n const fields = this.getFields();\n return Object.values(fields).filter((f) => f instanceof ForeignKeyField) as ForeignKeyField[];\n }\n\n // Instance metadata getters\n protected getFields(): Record<string, Field> {\n return (this.constructor as typeof BaseModel).getFields();\n }\n\n protected getTableName(): string {\n return (this.constructor as typeof BaseModel).getTableName();\n }\n\n protected getDisplayName(): string | null {\n return (this.constructor as typeof BaseModel).getDisplayName();\n }\n\n protected getPrimaryKeyName(): string {\n return (this.constructor as typeof BaseModel).getPrimaryKeyName();\n }\n\n protected getPrimaryKey(): Field | undefined {\n const fields = this.getFields();\n for (const field of Object.values(fields)) {\n if (field.isPrimaryKey) {\n return field;\n }\n }\n return undefined;\n }\n\n // Client getter\n protected get client(): SyntropixClient {\n if (!this._client) {\n this._client = new SyntropixClient();\n }\n return this._client;\n }\n\n // Table operations\n static async createTable(client: SyntropixClient = new SyntropixClient()): Promise<TableCreateResponse> {\n const fields = this.getFields();\n const columns = Object.values(fields).map((f) => f.intoColumnCreateDto());\n const foreignKeys: SyntropixDBForeignKey[] = this.getAssociations().map((f) => ({\n fromTableName: this.getTableName(),\n fromColumnName: f.name,\n toTableName: f.tableName,\n toColumnName: f.columnName,\n onDelete: f.onDelete,\n onUpdate: f.onUpdate,\n }));\n const indexes = this.getIndexes();\n const path = this.getPath();\n return await client.table.createTable({\n name: this.getTableName(),\n displayName: this.getDisplayName() || undefined,\n description: this.getDescription() || '',\n columns,\n foreignKeys,\n indexes,\n path,\n });\n }\n\n static async dropTable(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.dropTable({ tableName: this.getTableName() });\n }\n\n static async renameTable(newName: string, client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.renameTable({\n tableName: this.getTableName(),\n newTableName: newName,\n });\n }\n\n static async truncateTable(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.truncateTable({ tableName: this.getTableName() });\n }\n\n static async getTableSchema(client: SyntropixClient = new SyntropixClient()): Promise<TableSchemaResponse> {\n return await client.table.getTableSchema({ tableName: this.getTableName() });\n }\n\n // Data operations\n static async create<T extends BaseModel>(\n this: new (data?: any) => T,\n data: Record<string, any>,\n client: SyntropixClient = new SyntropixClient(),\n ): Promise<any> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const columns: string[] = [];\n const values: any[] = [];\n\n for (const [key, value] of Object.entries(data)) {\n if (key in fields) {\n columns.push(fields[key].name);\n values.push(value);\n } else {\n throw new Error(`Invalid field: ${key}`);\n }\n }\n\n return client.data.insertOne({\n tableName: model.getTableName(),\n data: {\n columns,\n values: [values],\n },\n });\n }\n\n async save(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n const pk = this.getPrimaryKey();\n const pkValue = (this as any)[this.getPrimaryKeyName()];\n const fields = this.getFields();\n\n if (pkValue === null || pkValue === undefined) {\n const data: Record<string, any> = {};\n for (const [key, field] of Object.entries(fields)) {\n data[key] = (this as any)[key];\n }\n return (this.constructor as typeof BaseModel).create(data, client);\n }\n\n const columns: string[] = [];\n const values: any[] = [];\n for (const [key, field] of Object.entries(fields)) {\n if (field.name !== pk?.name) {\n columns.push(field.name);\n values.push((this as any)[key]);\n }\n }\n\n return (\n client ||\n this.client.data.updateByPrimaryKey(pkValue, {\n tableName: this.getTableName(),\n payload: {\n filter: [[]],\n columns,\n values,\n },\n })\n );\n }\n\n async remove(filter?: Filter, _client?: SyntropixClient | null): Promise<number> {\n const pk = this.getPrimaryKey();\n const pkValue = (this as any)[this.getPrimaryKeyName()];\n const finalFilter = filter || OR(AND(EQ(pk?.name || 'id', pkValue)));\n\n return (\n _client ||\n this.client.data.deleteData({\n tableName: this.getTableName(),\n payload: {\n filter: finalFilter,\n },\n })\n );\n }\n\n static async bulkCreate<T extends BaseModel>(\n this: new (data?: any) => T,\n datas: Record<string, any>[],\n batchSize: number = 32,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n if (!datas.length) return 0;\n if (batchSize <= 0) throw new Error('Batch size must be greater than 0');\n\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n let cnt = 0;\n batchSize = Math.min(batchSize, 128);\n\n const columns = Object.keys(datas[0]);\n const columnsSet = new Set(columns);\n\n for (const col of columns) {\n if (!(col in fields)) {\n throw new Error(`Invalid field: ${col}`);\n }\n }\n\n let values: any[][] = [];\n const client = _client || new SyntropixClient();\n\n for (const data of datas) {\n if (columnsSet.size !== new Set(Object.keys(data)).size || !columns.every((c) => c in data)) {\n throw new Error('All data must have the same columns');\n }\n\n values.push(columns.map((c) => data[c]));\n\n if (values.length === batchSize) {\n cnt += await client.data.insertData({\n tableName: model.getTableName(),\n data: { columns: columns.map((c) => fields[c].name), values },\n });\n values = [];\n }\n }\n\n if (values.length > 0) {\n cnt += await client.data.insertData({\n tableName: model.getTableName(),\n data: { columns: columns.map((c) => fields[c].name), values },\n });\n }\n\n return cnt;\n }\n\n static async update<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n data: Record<string, any>,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const columns = Object.keys(data);\n\n if (!columns.length) {\n throw new Error('No columns to update');\n }\n\n for (const col of columns) {\n if (!(col in fields)) {\n throw new Error(`Invalid field: ${col}`);\n }\n }\n\n const values = columns.map((c) => data[c]);\n const client = _client || new SyntropixClient();\n\n return client.data.updateData({\n tableName: model.getTableName(),\n payload: {\n filter,\n columns: columns.map((c) => fields[c].name),\n values,\n },\n });\n }\n\n static async delete<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const client = _client || new SyntropixClient();\n\n return client.data.deleteData({\n tableName: model.getTableName(),\n payload: { filter },\n });\n }\n\n static async get<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n select?: string[],\n _client?: SyntropixClient | null,\n ): Promise<T> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const client = _client || new SyntropixClient();\n\n const data = await client.data.queryOne({\n tableName: model.getTableName(),\n query: {\n filter,\n select: select || Object.values(fields).map((f) => f.name),\n limit: 1,\n },\n });\n\n return new this(data);\n }\n\n static async filter<T extends BaseModel>(\n this: new (data?: any) => T,\n options: {\n filter: Filter;\n sort?: Sort[];\n aggregate?: Aggregate[];\n join?: Join;\n limit?: number;\n offset?: number;\n groupBy?: GroupBy;\n select?: string[];\n _client?: SyntropixClient | null;\n },\n ): Promise<T[]> {\n const model = this as any as typeof BaseModel;\n const client = options._client || new SyntropixClient();\n\n const data = await client.data.queryMany({\n tableName: model.getTableName(),\n query: {\n filter: options.filter,\n sort: options.sort,\n aggregate: options.aggregate,\n join: options.join ? [options.join] : undefined,\n limit: options.limit,\n offset: options.offset,\n groupBy: options.groupBy,\n select: options.select,\n },\n });\n\n return data.map((item: any) => new this(item));\n }\n\n static async count<T extends BaseModel>(\n this: new (data?: any) => T,\n options: {\n filter?: Filter;\n join?: Join;\n groupBy?: GroupBy;\n _client?: SyntropixClient | null;\n } = {},\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const client = options._client || new SyntropixClient();\n\n const data = await client.data.queryMany({\n tableName: model.getTableName(),\n query: {\n filter: options.filter || [[GTE('id', Value(0))]],\n aggregate: [\n {\n column: 'id',\n function: AggregateFunction.Count,\n alias: 'count',\n },\n ],\n join: options.join ? [options.join] : undefined,\n limit: 1,\n offset: 0,\n groupBy: options.groupBy,\n select: ['count'],\n },\n });\n\n return data.length > 0 ? data[0].count : 0;\n }\n\n toString(): string {\n const fields = this.getFields();\n const data: Record<string, any> = {};\n\n for (const key of Object.keys(fields)) {\n const value = (this as any)[key];\n if (!(value instanceof Field)) {\n data[key] = value;\n }\n }\n\n data._extra = this._extra;\n return `${this.constructor.name}(${JSON.stringify(data).slice(1, -1)})`;\n }\n\n toJSON(): Record<string, any> {\n const fields = this.getFields();\n const data: Record<string, any> = {};\n\n for (const key of Object.keys(fields)) {\n data[key] = (this as any)[key];\n }\n\n return { ...data, ...this._extra };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/model/access.ts","../src/types/model/db-index.ts","../src/types/model/filter.ts","../src/types/model/foreign-key.ts","../src/core/client/base-client.ts","../src/core/config.ts","../src/core/filter-builder.ts","../src/core/client/data-client.ts","../src/core/client/table-client.ts","../src/core/client/syntropix-client.ts","../src/core/data-type.ts","../src/core/field.ts","../src/core/base-model.ts"],"names":["AccessType","None","Read","Write","Admin","IndexType","Gin","GinTrgmOps","IvfflatL2Ops","InfflatCosineOps","InfflatIpOps","SortType","Descending","Ascending","AggregateFunction","FilterOperation","ForeignKeyAction","Cascade","Restrict","SetNull","NoAction","SetDefault","handleError","error","axiosErr","response","data","status","Error","message","BaseClient","config","headers","Authorization","apiKey","url","path","startsWith","slice","baseUrl","get","axios","params","content","EJSON","parse","JSON","stringify","isAxiosError","console","post","ClientConfig","timeout","retries","process","env","SYNTROPIX_API_KEY","SYNTROPIX_API_URL","SYNTROPIX_API_TIMEOUT","SYNTROPIX_API_RETRIES","endsWith","AND","conditions","OR","EQ","field","value","columnName","operator","staticValue","NE","NEQ","GT","GTE","LT","LTE","IN","values","In","CONTAINS","Contains","OVERLAP","Overlap","I_LIKE","pattern","ILike","NOT_I_LIKE","NotILike","NOT_IN","NotIn","LIKE","Like","NOT_LIKE","NotLike","IS_NULL","IsNull","IS_NOT_NULL","IsNotNull","BETWEEN","min","max","Between","EQ_COL","otherField","columnValue","NE_COL","GT_COL","GTE_COL","LT_COL","LTE_COL","SIMILARITY","options","Similarity","simiarityOptions","SIMILARITY_DISTANCE","SimilarityDistance","WORD_SIMILARITY","WordSimilarity","WORD_SIMILARITY_DISTANCE","WordSimilarityDistance","STRICT_WORD_SIMILARITY","StrictWordSimilarity","STRICT_WORD_SIMILARITY_DISTANCE","StrictWordSimilarityDistance","EUCLIDEAN_DISTANCE","EuclideanDistance","NEGATIVE_INNER_PRODUCT","NegativeInnerProduct","COSINE_DISTANCE","CosineDistance","Value","FilterWrapper","filter","undefined","Array","isArray","every","item","DataClient","client","insertData","insertOne","updateByPrimaryKey","pk","queryOne","model","query","One","queryMany","Many","map","updateData","deleteData","TableClient","createTable","dropTable","renameTable","truncateTable","addColumn","dropColumn","modifyColumn","getTableSchema","getTableList","SyntropixClient","_tableClient","_dataClient","table","ArrayDataType","String","maxLength","Decimal","precision","scale","Text","Integer","BigInteger","Double","DateTime","Timestamp","Date","Boolean","Money","Uuid","Enum","name","variants","Json","ColumnDataType","Vector","dimensions","dataType","Field","displayName","description","columnType","isPrimaryKey","isNullable","autoIncrement","default","defaultAccess","toLowerCase","intoColumnCreateDto","ForeignKeyField","tableName","onDelete","onUpdate","StringField","TextField","IntegerField","BooleanField","DateTimeField","TimestampField","DateField","JsonField","UuidField","VectorField","ArrayField","EnumField","MoneyField","DecimalField","DoubleField","FIELDS_KEY","Symbol","TABLE_NAME_KEY","DISPLAY_NAME_KEY","DESCRIPTION_KEY","INDEXES_KEY","PATH_KEY","Column","target","propertyKey","fields","Reflect","getMetadata","fieldName","type","primary","nullable","defineMetadata","Description","DisplayName","Path","Indexes","indexes","ForeignKey","BaseModel","_client","_extra","getFields","columnToPropertyMap","propertyName","Object","entries","key","getTableName","getDisplayName","getDescription","metadataDescription","getIndexes","getPath","hasPrimaryKey","getPrimaryKeyName","getAssociations","f","getPrimaryKey","columns","foreignKeys","fromTableName","fromColumnName","toTableName","toColumnName","newName","newTableName","create","push","save","pkValue","payload","remove","finalFilter","bulkCreate","datas","batchSize","length","cnt","Math","keys","columnsSet","Set","col","size","c","update","delete","select","limit","sort","aggregate","join","offset","groupBy","count","function","Count","alias","toString","toJSON"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Filter } from './filter';\n\nexport const AccessType = {\n None: 'None',\n Read: 'Read',\n Write: 'Write',\n Admin: 'Admin',\n} as const;\n\nexport type AccessType = (typeof AccessType)[keyof typeof AccessType];\n\nexport interface SyntropixDBRowAccess {\n read?: Filter;\n write?: Filter;\n}\n\nexport interface SyntropixDBAccess {\n tableAccess: AccessType;\n rowAccess?: Record<string, SyntropixDBRowAccess>;\n columnAccess: Record<string, AccessType>;\n createdAt: Date;\n updatedAt: Date;\n}\n","export const IndexType = {\n Gin: 'Gin',\n GinTrgmOps: 'GinTrgmOps',\n IvfflatL2Ops: 'IvfflatL2Ops',\n InfflatCosineOps: 'InfflatCosineOps',\n InfflatIpOps: 'InfflatIpOps',\n} as const;\n\nexport type IndexType = (typeof IndexType)[keyof typeof IndexType];\n\nexport interface SyntropixDBIndex {\n name?: string;\n unique: boolean;\n nullsNotDistinct: boolean;\n columns: string[];\n indexType: IndexType;\n}\n","export const SortType = {\n Descending: 'Descending',\n Ascending: 'Ascending',\n} as const;\n\nexport type SortType = (typeof SortType)[keyof typeof SortType];\n\nexport enum AggregateFunction {\n Count = 'Count',\n Sum = 'Sum',\n Avg = 'Avg',\n Min = 'Min',\n Max = 'Max',\n CountDistinct = 'CountDistinct',\n}\n\nexport interface Join {\n tableName: string;\n onColumnName: string;\n}\n\nexport interface Aggregate {\n columnName: string;\n function: AggregateFunction;\n alias: string;\n}\n\nexport interface GroupBy {\n columns: string[];\n}\n\nexport interface Sort {\n columnName: string;\n direction: SortType;\n}\n\nexport interface SimilarityOptions {\n threshold: number;\n order?: SortType;\n alias?: string;\n}\n\nexport enum FilterOperation {\n LT = 'LT',\n LTE = 'LTE',\n GT = 'GT',\n GTE = 'GTE',\n EQ = 'EQ',\n NEQ = 'NEQ',\n Between = 'Between',\n In = 'In',\n Contains = 'Contains',\n Overlap = 'Overlap',\n NotIn = 'NotIn',\n Like = 'Like',\n NotLike = 'NotLike',\n ILike = 'ILike',\n NotILike = 'NotILike',\n IsNull = 'IsNull',\n IsNotNull = 'IsNotNull',\n Similarity = 'Similarity',\n SimilarityDistance = 'SimilarityDistance',\n WordSimilarity = 'WordSimilarity',\n WordSimilarityDistance = 'WordSimilarityDistance',\n StrictWordSimilarity = 'StrictWordSimilarity',\n StrictWordSimilarityDistance = 'StrictWordSimilarityDistance',\n EuclideanDistance = 'EuclideanDistance',\n NegativeInnerProduct = 'NegativeInnerProduct',\n CosineDistance = 'CosineDistance',\n}\n\nexport interface FilterItem {\n columnName: string;\n operator: FilterOperation;\n staticValue?: any;\n columnValue?: string;\n simiarityOptions?: SimilarityOptions;\n}\n\nexport type FilterGroup = FilterItem[];\n\nexport type Filter = FilterGroup[];\n","export const ForeignKeyAction = {\n Cascade: 'Cascade',\n Restrict: 'Restrict',\n SetNull: 'SetNull',\n NoAction: 'NoAction',\n SetDefault: 'SetDefault',\n} as const;\n\nexport type ForeignKeyAction = (typeof ForeignKeyAction)[keyof typeof ForeignKeyAction];\n\nexport interface SyntropixDBForeignKey {\n name?: string;\n fromTableName: string;\n fromColumnName: string;\n toTableName: string;\n toColumnName: string;\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n}\n","import { ClientConfig } from '@/core/config';\nimport { SyntropixResponse } from '@/types';\nimport axios, { AxiosError } from 'axios';\nimport { EJSON } from 'bson';\n\nfunction handleError(error: AxiosError) {\n const axiosErr = error as AxiosError<SyntropixResponse<any>>;\n if (axiosErr.response?.data?.status === 'error') {\n throw new Error(axiosErr.response.data.message);\n }\n throw new Error(axiosErr.message);\n}\n\nexport class BaseClient {\n protected config: ClientConfig;\n\n constructor(config: ClientConfig) {\n this.config = config;\n }\n\n private headers() {\n return {\n 'Content-Type': 'application/json',\n Authorization: this.config.apiKey || '',\n };\n }\n\n private url(path: string) {\n if (path.startsWith('/')) {\n path = path.slice(1);\n }\n return `${this.config.baseUrl}${path}`;\n }\n\n public async get<T>(path: string, data: Record<string, any> = {}): Promise<T> {\n try {\n const response = await axios.get(this.url(path), {\n headers: this.headers(),\n params: data,\n });\n const content = EJSON.parse(JSON.stringify(response.data));\n if (content.status !== 'success') {\n throw new Error(content.message as string);\n }\n return content.data as T;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n handleError(error);\n }\n console.error(error);\n throw new Error('Failed to get data: Unknown error');\n }\n }\n\n public async post<T>(path: string, data: Record<string, any> = {}): Promise<T> {\n try {\n const response = await axios.post(this.url(path), data, {\n headers: this.headers(),\n });\n const content = EJSON.parse(JSON.stringify(response.data));\n if (content.status !== 'success') {\n throw new Error(content.message);\n }\n return content.data;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n handleError(error);\n }\n console.error(error);\n throw new Error('Failed to post data: Unknown error');\n }\n }\n}\n","export class ClientConfig {\n public apiKey?: string;\n public baseUrl?: string;\n public timeout?: number;\n public retries?: number;\n\n constructor(config?: any) {\n this.apiKey = config?.apiKey || process.env.SYNTROPIX_API_KEY;\n this.baseUrl = config?.baseUrl || process.env.SYNTROPIX_API_URL;\n this.timeout = config?.timeout || process.env.SYNTROPIX_API_TIMEOUT;\n this.retries = config?.retries || process.env.SYNTROPIX_API_RETRIES;\n\n if (!this.apiKey || !this.baseUrl) {\n throw new Error('API key and base URL are required');\n }\n\n if (!this.timeout) {\n this.timeout = 10000;\n }\n\n if (!this.retries) {\n this.retries = 3;\n }\n\n if (!this.baseUrl.endsWith('/')) {\n this.baseUrl += '/';\n }\n }\n}\n","import { Filter, FilterGroup, FilterItem, FilterOperation, SimilarityOptions } from '@/types';\n\nexport const AND = (...conditions: FilterItem[]): FilterGroup => conditions;\n\nexport const OR = (...conditions: FilterGroup[]): Filter => conditions;\n\nexport const EQ = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EQ,\n staticValue: value,\n});\n\nexport const NE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NEQ,\n staticValue: value,\n});\n\nexport const GT = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GT,\n staticValue: value,\n});\n\nexport const GTE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GTE,\n staticValue: value,\n});\n\nexport const LT = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LT,\n staticValue: value,\n});\n\nexport const LTE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LTE,\n staticValue: value,\n});\n\nexport const IN = (field: string, values: any[]): FilterItem => ({\n columnName: field,\n operator: FilterOperation.In,\n staticValue: values,\n});\n\nexport const CONTAINS = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Contains,\n staticValue: value,\n});\n\nexport const OVERLAP = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Overlap,\n staticValue: value,\n});\n\nexport const I_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.ILike,\n staticValue: pattern,\n});\n\nexport const NOT_I_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotILike,\n staticValue: pattern,\n});\n\nexport const NOT_IN = (field: string, values: any[]): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotIn,\n staticValue: values,\n});\n\nexport const LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Like,\n staticValue: pattern,\n});\n\nexport const NOT_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotLike,\n staticValue: pattern,\n});\n\nexport const IS_NULL = (field: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.IsNull,\n});\n\nexport const IS_NOT_NULL = (field: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.IsNotNull,\n});\n\nexport const BETWEEN = (field: string, min: any, max: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Between,\n staticValue: [min, max],\n});\n\n// Column comparison (compare two columns)\nexport const EQ_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EQ,\n columnValue: otherField,\n});\n\nexport const NE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NEQ,\n columnValue: otherField,\n});\n\nexport const GT_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GT,\n columnValue: otherField,\n});\n\nexport const GTE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GTE,\n columnValue: otherField,\n});\n\nexport const LT_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LT,\n columnValue: otherField,\n});\n\nexport const LTE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LTE,\n columnValue: otherField,\n});\n\n// Similarity operations\nexport const SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Similarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.SimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const WORD_SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.WordSimilarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const WORD_SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.WordSimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const STRICT_WORD_SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.StrictWordSimilarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const STRICT_WORD_SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.StrictWordSimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const EUCLIDEAN_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EuclideanDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const NEGATIVE_INNER_PRODUCT = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NegativeInnerProduct,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const COSINE_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.CosineDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\n// Helper function for values (backward compatibility)\nexport const Value = (value: any) => value;\n\n// Helper function for wrapping filter\nexport function FilterWrapper(filter: Filter | FilterGroup | FilterItem | undefined): Filter | undefined {\n if (filter === undefined) {\n return undefined;\n }\n if (!Array.isArray(filter)) {\n return OR(AND(filter));\n } else if (!filter.every((item) => Array.isArray(item))) {\n return OR(filter);\n } else {\n return filter;\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport { FilterWrapper } from '@/core/filter-builder';\nimport { DeleteDataDto, InsertDto, QueryDto, UpdateDto } from '@/types';\nimport { BaseClient } from './base-client';\n\nexport class DataClient {\n private client: BaseClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.client = new BaseClient(config);\n }\n\n async insertData(data: InsertDto): Promise<any> {\n return await this.client.post<any>('/insert', data);\n }\n\n async insertOne(data: InsertDto): Promise<any> {\n return await this.client.post<any>('/insert/one', data);\n }\n\n async updateByPrimaryKey(pk: string, data: UpdateDto): Promise<any> {\n return await this.client.post<any>(`/update/${pk}`, data);\n }\n\n async queryOne(data: QueryDto, model?: any): Promise<any> {\n data.query.filter = FilterWrapper(data.query.filter);\n const response = await this.client.post<any>('/query', { One: data });\n if (model !== undefined) {\n return new model(response);\n }\n return response;\n }\n\n async queryMany(data: QueryDto, model?: any): Promise<any> {\n data.query.filter = FilterWrapper(data.query.filter);\n const response = await this.client.post<any[]>('/query', { Many: data });\n if (model !== undefined) {\n // In TypeScript, we would typically use a validation library or manual validation\n // For now, we'll return the data as-is, but in a real implementation you might want to use\n // a library like class-validator or zod for validation\n return response.map((item: any) => new model(item));\n }\n return response;\n }\n\n async updateData(data: UpdateDto): Promise<any> {\n return await this.client.post<any>('/update', data);\n }\n\n async deleteData(data: DeleteDataDto): Promise<any> {\n return await this.client.post<any>('/delete', data);\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport {\n TableAddColumnDto,\n TableCreateDto,\n TableCreateResponse,\n TableDropColumnDto,\n TableDropDto,\n TableGetListDto,\n TableGetSchemaDto,\n TableListResponse,\n TableModifyColumnDto,\n TableRenameDto,\n TableSchemaResponse,\n TableTruncateDto,\n} from '@/types';\nimport { BaseClient } from './base-client';\n\nexport class TableClient {\n private client: BaseClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.client = new BaseClient(config);\n }\n\n async createTable(data: TableCreateDto): Promise<TableCreateResponse> {\n return await this.client.post<TableCreateResponse>('/table/create', data);\n }\n\n async dropTable(data: TableDropDto): Promise<any> {\n return await this.client.post<any>('/table/drop', data);\n }\n\n async renameTable(data: TableRenameDto): Promise<any> {\n return await this.client.post<any>('/table/rename', data);\n }\n\n async truncateTable(data: TableTruncateDto): Promise<any> {\n return await this.client.post<any>('/table/truncate', data);\n }\n\n async addColumn(data: TableAddColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/add', data);\n }\n\n async dropColumn(data: TableDropColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/drop', data);\n }\n\n async modifyColumn(data: TableModifyColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/modify', data);\n }\n\n async getTableSchema(data: TableGetSchemaDto): Promise<TableSchemaResponse> {\n return await this.client.get<TableSchemaResponse>('/table/schema', data);\n }\n\n async getTableList(data: TableGetListDto): Promise<TableListResponse> {\n return await this.client.get<TableListResponse>('/table/list', data);\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport { DataClient } from './data-client';\nimport { TableClient } from './table-client';\n\nexport class SyntropixClient {\n private config: ClientConfig;\n private _tableClient?: TableClient;\n private _dataClient?: DataClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.config = config;\n }\n\n get table(): TableClient {\n if (!this._tableClient) {\n this._tableClient = new TableClient(this.config);\n }\n return this._tableClient;\n }\n\n get data(): DataClient {\n if (!this._dataClient) {\n this._dataClient = new DataClient(this.config);\n }\n return this._dataClient;\n }\n}\n","import { ArrayDataTypeSchema, ArrayType, DecimalType, EnumType, MoneyType, StringType, VectorType } from '@/types';\n\nexport const ArrayDataType = {\n String: (maxLength: number): StringType => ({ String: maxLength }),\n Decimal: (precision: number, scale: number): DecimalType => ({\n Decimal: precision && scale ? [precision, scale] : null,\n }),\n Text: 'Text',\n Integer: 'Integer',\n BigInteger: 'BigInteger',\n Double: 'Double',\n DateTime: 'DateTime',\n Timestamp: 'Timestamp',\n Date: 'Date',\n Boolean: 'Boolean',\n Money: (precision: number, scale: number): MoneyType => ({ Money: precision && scale ? [precision, scale] : null }),\n Uuid: 'Uuid',\n Enum: (name: string, variants: string[]): EnumType => ({ Enum: { name, variants } }),\n Json: 'Json',\n} as const;\n\nexport const ColumnDataType = {\n Integer: 'Integer',\n String: (maxLength: number): StringType => ({ String: maxLength }),\n Text: 'Text',\n Boolean: 'Boolean',\n DateTime: 'DateTime',\n Timestamp: 'Timestamp',\n Date: 'Date',\n Json: 'Json',\n Uuid: 'Uuid',\n Double: 'Double',\n\n Vector: (dimensions: number): VectorType => ({ Vector: dimensions }),\n Array: (dataType: ArrayDataTypeSchema): ArrayType => ({ Array: dataType }),\n Enum: (name: string, variants: string[]): EnumType => ({ Enum: { name, variants } }),\n Money: (precision: number, scale: number): MoneyType => ({ Money: precision && scale ? [precision, scale] : null }),\n Decimal: (precision: number, scale: number): DecimalType => ({\n Decimal: precision && scale ? [precision, scale] : null,\n }),\n} as const;\n","import {\n AccessType,\n ArrayDataTypeSchema,\n ColumnCreateDto,\n ColumnDataTypeSchema,\n FieldOptions,\n ForeignKeyAction,\n ForeignKeyFieldOptions,\n} from '@/types';\nimport { ColumnDataType } from './data-type';\n\nexport abstract class Field {\n name: string = '';\n displayName: string = '';\n description: string = '';\n columnType: ColumnDataTypeSchema;\n isPrimaryKey: boolean = false;\n isNullable: boolean = false;\n autoIncrement: boolean = false;\n default?: any;\n defaultAccess?: AccessType;\n\n constructor(columnType: ColumnDataTypeSchema, options: FieldOptions = {}) {\n this.columnType = columnType;\n this.name = options.name?.toLowerCase() || '';\n this.displayName = options.displayName || '';\n this.description = options.description || '';\n this.isPrimaryKey = options.isPrimaryKey || false;\n this.isNullable = options.isNullable || false;\n this.autoIncrement = options.autoIncrement || false;\n this.default = options.default;\n this.defaultAccess = options.defaultAccess;\n }\n\n intoColumnCreateDto(): ColumnCreateDto {\n return {\n name: this.name,\n displayName: this.displayName,\n columnType: this.columnType,\n description: this.description,\n isPrimaryKey: this.isPrimaryKey,\n isNullable: this.isNullable,\n autoIncrement: this.autoIncrement,\n default: this.default,\n defaultAccess: this.defaultAccess,\n };\n }\n}\n\nexport class ForeignKeyField extends Field {\n tableName: string;\n columnName: string;\n onDelete: ForeignKeyAction;\n onUpdate: ForeignKeyAction;\n\n constructor(\n columnType: ColumnDataTypeSchema,\n tableName: string,\n columnName: string,\n options: ForeignKeyFieldOptions = {},\n ) {\n super(columnType, options);\n this.tableName = tableName;\n this.columnName = columnName;\n this.onDelete = options.onDelete || ForeignKeyAction.Cascade;\n this.onUpdate = options.onUpdate || ForeignKeyAction.Cascade;\n }\n}\n\nexport class StringField extends Field {\n constructor(maxLength: number, options: FieldOptions = {}) {\n super(ColumnDataType.String(maxLength), options);\n }\n}\n\nexport class TextField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Text, options);\n }\n}\n\nexport class IntegerField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Integer, options);\n }\n}\n\nexport class BooleanField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Boolean, options);\n }\n}\n\nexport class DateTimeField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.DateTime, options);\n }\n}\n\nexport class TimestampField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Timestamp, options);\n }\n}\n\nexport class DateField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Date, options);\n }\n}\n\nexport class JsonField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Json, options);\n }\n}\n\nexport class UuidField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Uuid, options);\n }\n}\n\nexport class VectorField extends Field {\n constructor(dimensions: number, options: FieldOptions = {}) {\n super(ColumnDataType.Vector(dimensions), options);\n }\n}\n\nexport class ArrayField extends Field {\n constructor(dataType: ArrayDataTypeSchema, options: FieldOptions = {}) {\n super(ColumnDataType.Array(dataType), options);\n }\n}\n\nexport class EnumField extends Field {\n constructor(name: string, variants: string[], options: FieldOptions = {}) {\n super(ColumnDataType.Enum(name, variants), options);\n }\n}\n\nexport class MoneyField extends Field {\n constructor(precision: number, scale: number, options: FieldOptions = {}) {\n super(ColumnDataType.Money(precision, scale), options);\n }\n}\n\nexport class DecimalField extends Field {\n constructor(precision: number, scale: number, options: FieldOptions = {}) {\n super(ColumnDataType.Decimal(precision, scale), options);\n }\n}\n\nexport class DoubleField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Double, options);\n }\n}\n","import {\n Aggregate,\n AggregateFunction,\n ColumnCreateOptions,\n ColumnDataTypeSchema,\n Filter,\n ForeignKeyAction,\n GroupBy,\n Join,\n Sort,\n SyntropixDBForeignKey,\n SyntropixDBIndex,\n TableCreateResponse,\n TableSchemaResponse,\n} from '@/types';\nimport 'reflect-metadata';\nimport { SyntropixClient } from './client';\nimport { ColumnDataType } from './data-type';\nimport { Field, ForeignKeyField, IntegerField } from './field';\nimport { AND, EQ, GTE, OR, Value } from './filter-builder';\n\n// Metadata keys\nconst FIELDS_KEY = Symbol('fields');\nconst TABLE_NAME_KEY = Symbol('tableName');\nconst DISPLAY_NAME_KEY = Symbol('displayName');\nconst DESCRIPTION_KEY = Symbol('description');\nconst INDEXES_KEY = Symbol('indexes');\nconst PATH_KEY = Symbol('path');\n\n// Column decorator\nexport function Column(options: ColumnCreateOptions = {}) {\n return function (target: any, propertyKey: string) {\n const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};\n\n const fieldName = options.name || propertyKey.toLowerCase();\n const columnType = options.type || ColumnDataType.Text;\n\n const field = new (class extends Field {\n constructor() {\n super(columnType, {\n name: fieldName,\n displayName: options.displayName,\n description: options.description,\n isPrimaryKey: options.primary,\n isNullable: options.nullable,\n autoIncrement: options.autoIncrement,\n default: options.default,\n defaultAccess: options.defaultAccess,\n });\n }\n })();\n\n fields[propertyKey] = field;\n Reflect.defineMetadata(FIELDS_KEY, fields, target.constructor);\n };\n}\n\n// Description decorator\nexport function Description(description: string) {\n return function (target: any) {\n Reflect.defineMetadata(DESCRIPTION_KEY, description, target);\n };\n}\n\nexport function DisplayName(displayName: string) {\n return function (target: any) {\n Reflect.defineMetadata(DISPLAY_NAME_KEY, displayName, target);\n };\n}\n\nexport function Path(path: string) {\n return function (target: any) {\n Reflect.defineMetadata(PATH_KEY, path, target);\n };\n}\n\nexport function Indexes(indexes: SyntropixDBIndex[]) {\n return function (target: any) {\n Reflect.defineMetadata(INDEXES_KEY, indexes, target);\n };\n}\n\n// ForeignKey decorator\nexport function ForeignKey(\n tableName: string,\n columnName: string,\n options: {\n type?: ColumnDataTypeSchema;\n displayName?: string;\n name?: string;\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n description?: string;\n nullable?: boolean;\n default?: any;\n } = {},\n) {\n return function (target: any, propertyKey: string) {\n const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};\n\n const field = new ForeignKeyField(options.type || ColumnDataType.Integer, tableName, columnName, {\n displayName: options.displayName,\n description: options.description,\n isNullable: options.nullable,\n default: options.default,\n onDelete: options.onDelete,\n onUpdate: options.onUpdate,\n });\n field.name = options.name || propertyKey.toLowerCase();\n\n fields[propertyKey] = field;\n Reflect.defineMetadata(FIELDS_KEY, fields, target.constructor);\n };\n}\n\nexport class BaseModel {\n private _client?: SyntropixClient;\n private _extra: Record<string, any> = {};\n\n constructor(data: Record<string, any> = {}) {\n const fields = this.getFields();\n\n // Create a mapping from column names to property names\n const columnToPropertyMap: Record<string, string> = {};\n for (const [propertyName, field] of Object.entries(fields)) {\n columnToPropertyMap[field.name] = propertyName;\n }\n\n for (const [key, value] of Object.entries(data)) {\n // Check if key is a property name\n if (key in fields) {\n (this as any)[key] = value;\n }\n // Check if key is a column name\n else if (key in columnToPropertyMap) {\n (this as any)[columnToPropertyMap[key]] = value;\n }\n // Otherwise, store in _extra\n else {\n this._extra[key] = value;\n }\n }\n }\n\n // Static metadata getters\n protected static getTableName(): string {\n const tableName = Reflect.getMetadata(TABLE_NAME_KEY, this);\n if (tableName) return tableName;\n\n // Check for static tableName property\n if ('tableName' in this && typeof (this as any).tableName === 'string') {\n return (this as any).tableName;\n }\n\n return this.name.toLowerCase();\n }\n\n protected static getDisplayName(): string | null {\n const displayName = Reflect.getMetadata(DISPLAY_NAME_KEY, this);\n if (displayName) return displayName;\n\n // Check for static displayName property\n if ('displayName' in this && typeof (this as any).displayName === 'string') {\n return (this as any).displayName;\n }\n\n return null;\n }\n\n public static getDescription(): string {\n const metadataDescription = Reflect.getMetadata(DESCRIPTION_KEY, this);\n if (metadataDescription) return metadataDescription;\n\n // Check for static description property as fallback\n if ('description' in this && typeof (this as any).description === 'string') {\n return (this as any).description;\n }\n\n return '';\n }\n\n protected static getIndexes(): SyntropixDBIndex[] {\n const indexes = Reflect.getMetadata(INDEXES_KEY, this);\n if (indexes) return indexes;\n\n if ('indexes' in this && Array.isArray((this as any).indexes)) {\n return (this as any).indexes;\n }\n\n return [];\n }\n\n protected static getPath(): string | undefined {\n const path = Reflect.getMetadata(PATH_KEY, this);\n if (path) return path;\n\n if ('path' in this && typeof (this as any).path === 'string') {\n return (this as any).path;\n }\n\n return undefined;\n }\n\n protected static getFields(): Record<string, Field> {\n const fields = Reflect.getMetadata(FIELDS_KEY, this) || {};\n\n // Check if there's a primary key\n let hasPrimaryKey = false;\n for (const field of Object.values(fields) as Field[]) {\n if (field.isPrimaryKey) {\n hasPrimaryKey = true;\n field.isNullable = false;\n break;\n }\n }\n\n // If no primary key, add default 'id' field\n if (!hasPrimaryKey && !('id' in fields)) {\n fields['id'] = new IntegerField({\n isPrimaryKey: true,\n isNullable: false,\n autoIncrement: true,\n description: 'Primary key',\n });\n fields['id'].name = 'id';\n }\n\n return fields;\n }\n\n protected static getPrimaryKeyName(): string {\n const fields = this.getFields();\n for (const [key, field] of Object.entries(fields)) {\n if (field.isPrimaryKey) {\n return field.name;\n }\n }\n return 'id';\n }\n\n protected static getAssociations(): ForeignKeyField[] {\n const fields = this.getFields();\n return Object.values(fields).filter((f) => f instanceof ForeignKeyField) as ForeignKeyField[];\n }\n\n // Instance metadata getters\n protected getFields(): Record<string, Field> {\n return (this.constructor as typeof BaseModel).getFields();\n }\n\n protected getTableName(): string {\n return (this.constructor as typeof BaseModel).getTableName();\n }\n\n protected getDisplayName(): string | null {\n return (this.constructor as typeof BaseModel).getDisplayName();\n }\n\n protected getPrimaryKeyName(): string {\n return (this.constructor as typeof BaseModel).getPrimaryKeyName();\n }\n\n protected getPrimaryKey(): Field | undefined {\n const fields = this.getFields();\n for (const field of Object.values(fields)) {\n if (field.isPrimaryKey) {\n return field;\n }\n }\n return undefined;\n }\n\n // Client getter\n protected get client(): SyntropixClient {\n if (!this._client) {\n this._client = new SyntropixClient();\n }\n return this._client;\n }\n\n // Table operations\n static async createTable(client: SyntropixClient = new SyntropixClient()): Promise<TableCreateResponse> {\n const fields = this.getFields();\n const columns = Object.values(fields).map((f) => f.intoColumnCreateDto());\n const foreignKeys: SyntropixDBForeignKey[] = this.getAssociations().map((f) => ({\n fromTableName: this.getTableName(),\n fromColumnName: f.name,\n toTableName: f.tableName,\n toColumnName: f.columnName,\n onDelete: f.onDelete,\n onUpdate: f.onUpdate,\n }));\n const indexes = this.getIndexes();\n const path = this.getPath();\n return await client.table.createTable({\n name: this.getTableName(),\n displayName: this.getDisplayName() || undefined,\n description: this.getDescription() || '',\n columns,\n foreignKeys,\n indexes,\n path,\n });\n }\n\n static async dropTable(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.dropTable({ tableName: this.getTableName() });\n }\n\n static async renameTable(newName: string, client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.renameTable({\n tableName: this.getTableName(),\n newTableName: newName,\n });\n }\n\n static async truncateTable(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.truncateTable({ tableName: this.getTableName() });\n }\n\n static async getTableSchema(client: SyntropixClient = new SyntropixClient()): Promise<TableSchemaResponse> {\n return await client.table.getTableSchema({ tableName: this.getTableName() });\n }\n\n // Data operations\n static async create<T extends BaseModel>(\n this: new (data?: any) => T,\n data: Record<string, any>,\n client: SyntropixClient = new SyntropixClient(),\n ): Promise<any> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const columns: string[] = [];\n const values: any[] = [];\n\n for (const [key, value] of Object.entries(data)) {\n if (key in fields) {\n columns.push(fields[key].name);\n values.push(value);\n } else {\n throw new Error(`Invalid field: ${key}`);\n }\n }\n\n return client.data.insertOne({\n tableName: model.getTableName(),\n data: {\n columns,\n values: [values],\n },\n });\n }\n\n async save(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n const pk = this.getPrimaryKey();\n const pkValue = (this as any)[this.getPrimaryKeyName()];\n const fields = this.getFields();\n\n if (pkValue === null || pkValue === undefined) {\n const data: Record<string, any> = {};\n for (const [key, field] of Object.entries(fields)) {\n data[key] = (this as any)[key];\n }\n return (this.constructor as typeof BaseModel).create(data, client);\n }\n\n const columns: string[] = [];\n const values: any[] = [];\n for (const [key, field] of Object.entries(fields)) {\n if (field.name !== pk?.name) {\n columns.push(field.name);\n values.push((this as any)[key]);\n }\n }\n\n return (\n client ||\n this.client.data.updateByPrimaryKey(pkValue, {\n tableName: this.getTableName(),\n payload: {\n filter: [[]],\n columns,\n values,\n },\n })\n );\n }\n\n async remove(filter?: Filter, _client?: SyntropixClient | null): Promise<number> {\n const pk = this.getPrimaryKey();\n const pkValue = (this as any)[this.getPrimaryKeyName()];\n const finalFilter = filter || OR(AND(EQ(pk?.name || 'id', pkValue)));\n\n return (\n _client ||\n this.client.data.deleteData({\n tableName: this.getTableName(),\n payload: {\n filter: finalFilter,\n },\n })\n );\n }\n\n static async bulkCreate<T extends BaseModel>(\n this: new (data?: any) => T,\n datas: Record<string, any>[],\n batchSize: number = 32,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n if (!datas.length) return 0;\n if (batchSize <= 0) throw new Error('Batch size must be greater than 0');\n\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n let cnt = 0;\n batchSize = Math.min(batchSize, 128);\n\n const columns = Object.keys(datas[0]);\n const columnsSet = new Set(columns);\n\n for (const col of columns) {\n if (!(col in fields)) {\n throw new Error(`Invalid field: ${col}`);\n }\n }\n\n let values: any[][] = [];\n const client = _client || new SyntropixClient();\n\n for (const data of datas) {\n if (columnsSet.size !== new Set(Object.keys(data)).size || !columns.every((c) => c in data)) {\n throw new Error('All data must have the same columns');\n }\n\n values.push(columns.map((c) => data[c]));\n\n if (values.length === batchSize) {\n cnt += await client.data.insertData({\n tableName: model.getTableName(),\n data: { columns: columns.map((c) => fields[c].name), values },\n });\n values = [];\n }\n }\n\n if (values.length > 0) {\n cnt += await client.data.insertData({\n tableName: model.getTableName(),\n data: { columns: columns.map((c) => fields[c].name), values },\n });\n }\n\n return cnt;\n }\n\n static async update<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n data: Record<string, any>,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const columns = Object.keys(data);\n\n if (!columns.length) {\n throw new Error('No columns to update');\n }\n\n for (const col of columns) {\n if (!(col in fields)) {\n throw new Error(`Invalid field: ${col}`);\n }\n }\n\n const values = columns.map((c) => data[c]);\n const client = _client || new SyntropixClient();\n\n return client.data.updateData({\n tableName: model.getTableName(),\n payload: {\n filter,\n columns: columns.map((c) => fields[c].name),\n values,\n },\n });\n }\n\n static async delete<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const client = _client || new SyntropixClient();\n\n return client.data.deleteData({\n tableName: model.getTableName(),\n payload: { filter },\n });\n }\n\n static async get<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n select?: string[],\n _client?: SyntropixClient | null,\n ): Promise<T> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const client = _client || new SyntropixClient();\n\n const data = await client.data.queryOne({\n tableName: model.getTableName(),\n query: {\n filter,\n select: select || Object.values(fields).map((f) => f.name),\n limit: 1,\n },\n });\n\n return new this(data);\n }\n\n static async filter<T extends BaseModel>(\n this: new (data?: any) => T,\n options: {\n filter: Filter;\n sort?: Sort[];\n aggregate?: Aggregate[];\n join?: Join;\n limit?: number;\n offset?: number;\n groupBy?: GroupBy;\n select?: string[];\n _client?: SyntropixClient | null;\n },\n ): Promise<T[]> {\n const model = this as any as typeof BaseModel;\n const client = options._client || new SyntropixClient();\n\n const data = await client.data.queryMany({\n tableName: model.getTableName(),\n query: {\n filter: options.filter,\n sort: options.sort,\n aggregate: options.aggregate,\n join: options.join ? [options.join] : undefined,\n limit: options.limit,\n offset: options.offset,\n groupBy: options.groupBy,\n select: options.select,\n },\n });\n\n return data.map((item: any) => new this(item));\n }\n\n static async count<T extends BaseModel>(\n this: new (data?: any) => T,\n options: {\n filter?: Filter;\n join?: Join;\n groupBy?: GroupBy;\n _client?: SyntropixClient | null;\n } = {},\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const client = options._client || new SyntropixClient();\n\n const data = await client.data.queryMany({\n tableName: model.getTableName(),\n query: {\n filter: options.filter || [[GTE('id', Value(0))]],\n aggregate: [\n {\n columnName: 'id',\n function: AggregateFunction.Count,\n alias: 'count',\n },\n ],\n join: options.join ? [options.join] : undefined,\n limit: 1,\n offset: 0,\n groupBy: options.groupBy,\n select: ['count'],\n },\n });\n\n return data.length > 0 ? data[0].count : 0;\n }\n\n toString(): string {\n const fields = this.getFields();\n const data: Record<string, any> = {};\n\n for (const key of Object.keys(fields)) {\n const value = (this as any)[key];\n if (!(value instanceof Field)) {\n data[key] = value;\n }\n }\n\n data._extra = this._extra;\n return `${this.constructor.name}(${JSON.stringify(data).slice(1, -1)})`;\n }\n\n toJSON(): Record<string, any> {\n const fields = this.getFields();\n const data: Record<string, any> = {};\n\n for (const key of Object.keys(fields)) {\n data[key] = (this as any)[key];\n }\n\n return { ...data, ...this._extra };\n }\n}\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -14,11 +14,11 @@ declare enum AggregateFunction {
|
|
|
14
14
|
CountDistinct = "CountDistinct"
|
|
15
15
|
}
|
|
16
16
|
interface Join {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
tableName: string;
|
|
18
|
+
onColumnName: string;
|
|
19
19
|
}
|
|
20
20
|
interface Aggregate {
|
|
21
|
-
|
|
21
|
+
columnName: string;
|
|
22
22
|
function: AggregateFunction;
|
|
23
23
|
alias: string;
|
|
24
24
|
}
|
|
@@ -26,7 +26,7 @@ interface GroupBy {
|
|
|
26
26
|
columns: string[];
|
|
27
27
|
}
|
|
28
28
|
interface Sort {
|
|
29
|
-
|
|
29
|
+
columnName: string;
|
|
30
30
|
direction: SortType;
|
|
31
31
|
}
|
|
32
32
|
interface SimilarityOptions {
|
|
@@ -469,6 +469,9 @@ declare class DoubleField extends Field {
|
|
|
469
469
|
|
|
470
470
|
declare function Column(options?: ColumnCreateOptions): (target: any, propertyKey: string) => void;
|
|
471
471
|
declare function Description(description: string): (target: any) => void;
|
|
472
|
+
declare function DisplayName(displayName: string): (target: any) => void;
|
|
473
|
+
declare function Path(path: string): (target: any) => void;
|
|
474
|
+
declare function Indexes(indexes: SyntropixDBIndex[]): (target: any) => void;
|
|
472
475
|
declare function ForeignKey(tableName: string, columnName: string, options?: {
|
|
473
476
|
type?: ColumnDataTypeSchema;
|
|
474
477
|
displayName?: string;
|
|
@@ -487,7 +490,7 @@ declare class BaseModel {
|
|
|
487
490
|
protected static getDisplayName(): string | null;
|
|
488
491
|
static getDescription(): string;
|
|
489
492
|
protected static getIndexes(): SyntropixDBIndex[];
|
|
490
|
-
protected static getPath(): string;
|
|
493
|
+
protected static getPath(): string | undefined;
|
|
491
494
|
protected static getFields(): Record<string, Field>;
|
|
492
495
|
protected static getPrimaryKeyName(): string;
|
|
493
496
|
protected static getAssociations(): ForeignKeyField[];
|
|
@@ -601,4 +604,4 @@ declare const COSINE_DISTANCE: (field: string, value: any, options: SimilarityOp
|
|
|
601
604
|
declare const Value: (value: any) => any;
|
|
602
605
|
declare function FilterWrapper(filter: Filter | FilterGroup | FilterItem | undefined): Filter | undefined;
|
|
603
606
|
|
|
604
|
-
export { AND, AccessType, type Aggregate, AggregateFunction, ArrayDataType, type ArrayDataTypeSchema, ArrayField, type ArrayType, BETWEEN, BaseClient, BaseModel, BooleanField, CONTAINS, COSINE_DISTANCE, ClientConfig, Column, type ColumnCreateDto, type ColumnCreateOptions, type ColumnCreateResponse, ColumnDataType, type ColumnDataTypeSchema, DataClient, DateField, DateTimeField, DecimalField, type DecimalType, type DeleteDataDto, type DeleteDataPayloadDto, Description, DoubleField, EQ, EQ_COL, EUCLIDEAN_DISTANCE, EnumField, type EnumType, Field, type FieldOptions, type Filter, type FilterGroup, type FilterItem, FilterOperation, FilterWrapper, ForeignKey, ForeignKeyAction, ForeignKeyField, type ForeignKeyFieldOptions, GT, GTE, GTE_COL, GT_COL, type GroupBy, IN, IS_NOT_NULL, IS_NULL, I_LIKE, IndexType, type InsertDataDto, type InsertDto, IntegerField, type Join, JsonField, LIKE, LT, LTE, LTE_COL, LT_COL, MoneyField, type MoneyType, NE, NEGATIVE_INNER_PRODUCT, NE_COL, NOT_IN, NOT_I_LIKE, NOT_LIKE, OR, OVERLAP, type QueryDto, type QueryPayloadDto, SIMILARITY, SIMILARITY_DISTANCE, STRICT_WORD_SIMILARITY, STRICT_WORD_SIMILARITY_DISTANCE, type SimilarityOptions, type Sort, SortType, StringField, type StringType, SyntropixClient, type SyntropixDBAccess, type SyntropixDBColumn, type SyntropixDBForeignKey, type SyntropixDBIndex, type SyntropixDBRowAccess, type SyntropixDBTable, type SyntropixDBTableListItem, type SyntropixDBTableSchema, type SyntropixErrorResponse, type SyntropixResponse, type SyntropixSuccessResponse, type TableAddColumnDto, TableClient, type TableCreateDto, type TableCreateResponse, type TableDropColumnDto, type TableDropDto, type TableGetListDto, type TableGetSchemaDto, type TableListResponse, type TableModifyColumnDto, type TableRenameDto, type TableSchemaResponse, type TableTruncateDto, TextField, TimestampField, type UpdateDto, type UpdatePayloadDto, UuidField, Value, VectorField, type VectorType, WORD_SIMILARITY, WORD_SIMILARITY_DISTANCE };
|
|
607
|
+
export { AND, AccessType, type Aggregate, AggregateFunction, ArrayDataType, type ArrayDataTypeSchema, ArrayField, type ArrayType, BETWEEN, BaseClient, BaseModel, BooleanField, CONTAINS, COSINE_DISTANCE, ClientConfig, Column, type ColumnCreateDto, type ColumnCreateOptions, type ColumnCreateResponse, ColumnDataType, type ColumnDataTypeSchema, DataClient, DateField, DateTimeField, DecimalField, type DecimalType, type DeleteDataDto, type DeleteDataPayloadDto, Description, DisplayName, DoubleField, EQ, EQ_COL, EUCLIDEAN_DISTANCE, EnumField, type EnumType, Field, type FieldOptions, type Filter, type FilterGroup, type FilterItem, FilterOperation, FilterWrapper, ForeignKey, ForeignKeyAction, ForeignKeyField, type ForeignKeyFieldOptions, GT, GTE, GTE_COL, GT_COL, type GroupBy, IN, IS_NOT_NULL, IS_NULL, I_LIKE, IndexType, Indexes, type InsertDataDto, type InsertDto, IntegerField, type Join, JsonField, LIKE, LT, LTE, LTE_COL, LT_COL, MoneyField, type MoneyType, NE, NEGATIVE_INNER_PRODUCT, NE_COL, NOT_IN, NOT_I_LIKE, NOT_LIKE, OR, OVERLAP, Path, type QueryDto, type QueryPayloadDto, SIMILARITY, SIMILARITY_DISTANCE, STRICT_WORD_SIMILARITY, STRICT_WORD_SIMILARITY_DISTANCE, type SimilarityOptions, type Sort, SortType, StringField, type StringType, SyntropixClient, type SyntropixDBAccess, type SyntropixDBColumn, type SyntropixDBForeignKey, type SyntropixDBIndex, type SyntropixDBRowAccess, type SyntropixDBTable, type SyntropixDBTableListItem, type SyntropixDBTableSchema, type SyntropixErrorResponse, type SyntropixResponse, type SyntropixSuccessResponse, type TableAddColumnDto, TableClient, type TableCreateDto, type TableCreateResponse, type TableDropColumnDto, type TableDropDto, type TableGetListDto, type TableGetSchemaDto, type TableListResponse, type TableModifyColumnDto, type TableRenameDto, type TableSchemaResponse, type TableTruncateDto, TextField, TimestampField, type UpdateDto, type UpdatePayloadDto, UuidField, Value, VectorField, type VectorType, WORD_SIMILARITY, WORD_SIMILARITY_DISTANCE };
|
package/dist/index.d.ts
CHANGED
|
@@ -14,11 +14,11 @@ declare enum AggregateFunction {
|
|
|
14
14
|
CountDistinct = "CountDistinct"
|
|
15
15
|
}
|
|
16
16
|
interface Join {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
tableName: string;
|
|
18
|
+
onColumnName: string;
|
|
19
19
|
}
|
|
20
20
|
interface Aggregate {
|
|
21
|
-
|
|
21
|
+
columnName: string;
|
|
22
22
|
function: AggregateFunction;
|
|
23
23
|
alias: string;
|
|
24
24
|
}
|
|
@@ -26,7 +26,7 @@ interface GroupBy {
|
|
|
26
26
|
columns: string[];
|
|
27
27
|
}
|
|
28
28
|
interface Sort {
|
|
29
|
-
|
|
29
|
+
columnName: string;
|
|
30
30
|
direction: SortType;
|
|
31
31
|
}
|
|
32
32
|
interface SimilarityOptions {
|
|
@@ -469,6 +469,9 @@ declare class DoubleField extends Field {
|
|
|
469
469
|
|
|
470
470
|
declare function Column(options?: ColumnCreateOptions): (target: any, propertyKey: string) => void;
|
|
471
471
|
declare function Description(description: string): (target: any) => void;
|
|
472
|
+
declare function DisplayName(displayName: string): (target: any) => void;
|
|
473
|
+
declare function Path(path: string): (target: any) => void;
|
|
474
|
+
declare function Indexes(indexes: SyntropixDBIndex[]): (target: any) => void;
|
|
472
475
|
declare function ForeignKey(tableName: string, columnName: string, options?: {
|
|
473
476
|
type?: ColumnDataTypeSchema;
|
|
474
477
|
displayName?: string;
|
|
@@ -487,7 +490,7 @@ declare class BaseModel {
|
|
|
487
490
|
protected static getDisplayName(): string | null;
|
|
488
491
|
static getDescription(): string;
|
|
489
492
|
protected static getIndexes(): SyntropixDBIndex[];
|
|
490
|
-
protected static getPath(): string;
|
|
493
|
+
protected static getPath(): string | undefined;
|
|
491
494
|
protected static getFields(): Record<string, Field>;
|
|
492
495
|
protected static getPrimaryKeyName(): string;
|
|
493
496
|
protected static getAssociations(): ForeignKeyField[];
|
|
@@ -601,4 +604,4 @@ declare const COSINE_DISTANCE: (field: string, value: any, options: SimilarityOp
|
|
|
601
604
|
declare const Value: (value: any) => any;
|
|
602
605
|
declare function FilterWrapper(filter: Filter | FilterGroup | FilterItem | undefined): Filter | undefined;
|
|
603
606
|
|
|
604
|
-
export { AND, AccessType, type Aggregate, AggregateFunction, ArrayDataType, type ArrayDataTypeSchema, ArrayField, type ArrayType, BETWEEN, BaseClient, BaseModel, BooleanField, CONTAINS, COSINE_DISTANCE, ClientConfig, Column, type ColumnCreateDto, type ColumnCreateOptions, type ColumnCreateResponse, ColumnDataType, type ColumnDataTypeSchema, DataClient, DateField, DateTimeField, DecimalField, type DecimalType, type DeleteDataDto, type DeleteDataPayloadDto, Description, DoubleField, EQ, EQ_COL, EUCLIDEAN_DISTANCE, EnumField, type EnumType, Field, type FieldOptions, type Filter, type FilterGroup, type FilterItem, FilterOperation, FilterWrapper, ForeignKey, ForeignKeyAction, ForeignKeyField, type ForeignKeyFieldOptions, GT, GTE, GTE_COL, GT_COL, type GroupBy, IN, IS_NOT_NULL, IS_NULL, I_LIKE, IndexType, type InsertDataDto, type InsertDto, IntegerField, type Join, JsonField, LIKE, LT, LTE, LTE_COL, LT_COL, MoneyField, type MoneyType, NE, NEGATIVE_INNER_PRODUCT, NE_COL, NOT_IN, NOT_I_LIKE, NOT_LIKE, OR, OVERLAP, type QueryDto, type QueryPayloadDto, SIMILARITY, SIMILARITY_DISTANCE, STRICT_WORD_SIMILARITY, STRICT_WORD_SIMILARITY_DISTANCE, type SimilarityOptions, type Sort, SortType, StringField, type StringType, SyntropixClient, type SyntropixDBAccess, type SyntropixDBColumn, type SyntropixDBForeignKey, type SyntropixDBIndex, type SyntropixDBRowAccess, type SyntropixDBTable, type SyntropixDBTableListItem, type SyntropixDBTableSchema, type SyntropixErrorResponse, type SyntropixResponse, type SyntropixSuccessResponse, type TableAddColumnDto, TableClient, type TableCreateDto, type TableCreateResponse, type TableDropColumnDto, type TableDropDto, type TableGetListDto, type TableGetSchemaDto, type TableListResponse, type TableModifyColumnDto, type TableRenameDto, type TableSchemaResponse, type TableTruncateDto, TextField, TimestampField, type UpdateDto, type UpdatePayloadDto, UuidField, Value, VectorField, type VectorType, WORD_SIMILARITY, WORD_SIMILARITY_DISTANCE };
|
|
607
|
+
export { AND, AccessType, type Aggregate, AggregateFunction, ArrayDataType, type ArrayDataTypeSchema, ArrayField, type ArrayType, BETWEEN, BaseClient, BaseModel, BooleanField, CONTAINS, COSINE_DISTANCE, ClientConfig, Column, type ColumnCreateDto, type ColumnCreateOptions, type ColumnCreateResponse, ColumnDataType, type ColumnDataTypeSchema, DataClient, DateField, DateTimeField, DecimalField, type DecimalType, type DeleteDataDto, type DeleteDataPayloadDto, Description, DisplayName, DoubleField, EQ, EQ_COL, EUCLIDEAN_DISTANCE, EnumField, type EnumType, Field, type FieldOptions, type Filter, type FilterGroup, type FilterItem, FilterOperation, FilterWrapper, ForeignKey, ForeignKeyAction, ForeignKeyField, type ForeignKeyFieldOptions, GT, GTE, GTE_COL, GT_COL, type GroupBy, IN, IS_NOT_NULL, IS_NULL, I_LIKE, IndexType, Indexes, type InsertDataDto, type InsertDto, IntegerField, type Join, JsonField, LIKE, LT, LTE, LTE_COL, LT_COL, MoneyField, type MoneyType, NE, NEGATIVE_INNER_PRODUCT, NE_COL, NOT_IN, NOT_I_LIKE, NOT_LIKE, OR, OVERLAP, Path, type QueryDto, type QueryPayloadDto, SIMILARITY, SIMILARITY_DISTANCE, STRICT_WORD_SIMILARITY, STRICT_WORD_SIMILARITY_DISTANCE, type SimilarityOptions, type Sort, SortType, StringField, type StringType, SyntropixClient, type SyntropixDBAccess, type SyntropixDBColumn, type SyntropixDBForeignKey, type SyntropixDBIndex, type SyntropixDBRowAccess, type SyntropixDBTable, type SyntropixDBTableListItem, type SyntropixDBTableSchema, type SyntropixErrorResponse, type SyntropixResponse, type SyntropixSuccessResponse, type TableAddColumnDto, TableClient, type TableCreateDto, type TableCreateResponse, type TableDropColumnDto, type TableDropDto, type TableGetListDto, type TableGetSchemaDto, type TableListResponse, type TableModifyColumnDto, type TableRenameDto, type TableSchemaResponse, type TableTruncateDto, TextField, TimestampField, type UpdateDto, type UpdatePayloadDto, UuidField, Value, VectorField, type VectorType, WORD_SIMILARITY, WORD_SIMILARITY_DISTANCE };
|
package/dist/index.js
CHANGED
|
@@ -719,7 +719,7 @@ var DoubleField = class extends Field {
|
|
|
719
719
|
// src/core/base-model.ts
|
|
720
720
|
var FIELDS_KEY = Symbol("fields");
|
|
721
721
|
var TABLE_NAME_KEY = Symbol("tableName");
|
|
722
|
-
var
|
|
722
|
+
var DISPLAY_NAME_KEY = Symbol("displayName");
|
|
723
723
|
var DESCRIPTION_KEY = Symbol("description");
|
|
724
724
|
var INDEXES_KEY = Symbol("indexes");
|
|
725
725
|
var PATH_KEY = Symbol("path");
|
|
@@ -753,6 +753,24 @@ function Description(description) {
|
|
|
753
753
|
};
|
|
754
754
|
}
|
|
755
755
|
__name(Description, "Description");
|
|
756
|
+
function DisplayName(displayName) {
|
|
757
|
+
return function(target) {
|
|
758
|
+
Reflect.defineMetadata(DISPLAY_NAME_KEY, displayName, target);
|
|
759
|
+
};
|
|
760
|
+
}
|
|
761
|
+
__name(DisplayName, "DisplayName");
|
|
762
|
+
function Path(path) {
|
|
763
|
+
return function(target) {
|
|
764
|
+
Reflect.defineMetadata(PATH_KEY, path, target);
|
|
765
|
+
};
|
|
766
|
+
}
|
|
767
|
+
__name(Path, "Path");
|
|
768
|
+
function Indexes(indexes) {
|
|
769
|
+
return function(target) {
|
|
770
|
+
Reflect.defineMetadata(INDEXES_KEY, indexes, target);
|
|
771
|
+
};
|
|
772
|
+
}
|
|
773
|
+
__name(Indexes, "Indexes");
|
|
756
774
|
function ForeignKey(tableName, columnName, options = {}) {
|
|
757
775
|
return function(target, propertyKey) {
|
|
758
776
|
const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};
|
|
@@ -802,7 +820,7 @@ var BaseModel = class {
|
|
|
802
820
|
return this.name.toLowerCase();
|
|
803
821
|
}
|
|
804
822
|
static getDisplayName() {
|
|
805
|
-
const displayName = Reflect.getMetadata(
|
|
823
|
+
const displayName = Reflect.getMetadata(DISPLAY_NAME_KEY, this);
|
|
806
824
|
if (displayName) return displayName;
|
|
807
825
|
if ("displayName" in this && typeof this.displayName === "string") {
|
|
808
826
|
return this.displayName;
|
|
@@ -818,10 +836,20 @@ var BaseModel = class {
|
|
|
818
836
|
return "";
|
|
819
837
|
}
|
|
820
838
|
static getIndexes() {
|
|
821
|
-
|
|
839
|
+
const indexes = Reflect.getMetadata(INDEXES_KEY, this);
|
|
840
|
+
if (indexes) return indexes;
|
|
841
|
+
if ("indexes" in this && Array.isArray(this.indexes)) {
|
|
842
|
+
return this.indexes;
|
|
843
|
+
}
|
|
844
|
+
return [];
|
|
822
845
|
}
|
|
823
846
|
static getPath() {
|
|
824
|
-
|
|
847
|
+
const path = Reflect.getMetadata(PATH_KEY, this);
|
|
848
|
+
if (path) return path;
|
|
849
|
+
if ("path" in this && typeof this.path === "string") {
|
|
850
|
+
return this.path;
|
|
851
|
+
}
|
|
852
|
+
return void 0;
|
|
825
853
|
}
|
|
826
854
|
static getFields() {
|
|
827
855
|
const fields = Reflect.getMetadata(FIELDS_KEY, this) || {};
|
|
@@ -1119,7 +1147,7 @@ var BaseModel = class {
|
|
|
1119
1147
|
],
|
|
1120
1148
|
aggregate: [
|
|
1121
1149
|
{
|
|
1122
|
-
|
|
1150
|
+
columnName: "id",
|
|
1123
1151
|
function: AggregateFunction.Count,
|
|
1124
1152
|
alias: "count"
|
|
1125
1153
|
}
|
|
@@ -1162,6 +1190,6 @@ var BaseModel = class {
|
|
|
1162
1190
|
}
|
|
1163
1191
|
};
|
|
1164
1192
|
|
|
1165
|
-
export { AND, AccessType, AggregateFunction, ArrayDataType, ArrayField, BETWEEN, BaseClient, BaseModel, BooleanField, CONTAINS, COSINE_DISTANCE, ClientConfig, Column, ColumnDataType, DataClient, DateField, DateTimeField, DecimalField, Description, DoubleField, EQ, EQ_COL, EUCLIDEAN_DISTANCE, EnumField, Field, FilterOperation, FilterWrapper, ForeignKey, ForeignKeyAction, ForeignKeyField, GT, GTE, GTE_COL, GT_COL, IN, IS_NOT_NULL, IS_NULL, I_LIKE, IndexType, IntegerField, JsonField, LIKE, LT, LTE, LTE_COL, LT_COL, MoneyField, NE, NEGATIVE_INNER_PRODUCT, NE_COL, NOT_IN, NOT_I_LIKE, NOT_LIKE, OR, OVERLAP, SIMILARITY, SIMILARITY_DISTANCE, STRICT_WORD_SIMILARITY, STRICT_WORD_SIMILARITY_DISTANCE, SortType, StringField, SyntropixClient, TableClient, TextField, TimestampField, UuidField, Value, VectorField, WORD_SIMILARITY, WORD_SIMILARITY_DISTANCE };
|
|
1193
|
+
export { AND, AccessType, AggregateFunction, ArrayDataType, ArrayField, BETWEEN, BaseClient, BaseModel, BooleanField, CONTAINS, COSINE_DISTANCE, ClientConfig, Column, ColumnDataType, DataClient, DateField, DateTimeField, DecimalField, Description, DisplayName, DoubleField, EQ, EQ_COL, EUCLIDEAN_DISTANCE, EnumField, Field, FilterOperation, FilterWrapper, ForeignKey, ForeignKeyAction, ForeignKeyField, GT, GTE, GTE_COL, GT_COL, IN, IS_NOT_NULL, IS_NULL, I_LIKE, IndexType, Indexes, IntegerField, JsonField, LIKE, LT, LTE, LTE_COL, LT_COL, MoneyField, NE, NEGATIVE_INNER_PRODUCT, NE_COL, NOT_IN, NOT_I_LIKE, NOT_LIKE, OR, OVERLAP, Path, SIMILARITY, SIMILARITY_DISTANCE, STRICT_WORD_SIMILARITY, STRICT_WORD_SIMILARITY_DISTANCE, SortType, StringField, SyntropixClient, TableClient, TextField, TimestampField, UuidField, Value, VectorField, WORD_SIMILARITY, WORD_SIMILARITY_DISTANCE };
|
|
1166
1194
|
//# sourceMappingURL=index.js.map
|
|
1167
1195
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/model/access.ts","../src/types/model/db-index.ts","../src/types/model/filter.ts","../src/types/model/foreign-key.ts","../src/core/client/base-client.ts","../src/core/config.ts","../src/core/filter-builder.ts","../src/core/client/data-client.ts","../src/core/client/table-client.ts","../src/core/client/syntropix-client.ts","../src/core/data-type.ts","../src/core/field.ts","../src/core/base-model.ts"],"names":["AccessType","None","Read","Write","Admin","IndexType","Gin","GinTrgmOps","IvfflatL2Ops","InfflatCosineOps","InfflatIpOps","SortType","Descending","Ascending","AggregateFunction","FilterOperation","ForeignKeyAction","Cascade","Restrict","SetNull","NoAction","SetDefault","handleError","error","axiosErr","response","data","status","Error","message","BaseClient","config","headers","Authorization","apiKey","url","path","startsWith","slice","baseUrl","get","axios","params","content","EJSON","parse","JSON","stringify","isAxiosError","console","post","ClientConfig","timeout","retries","process","env","SYNTROPIX_API_KEY","SYNTROPIX_API_URL","SYNTROPIX_API_TIMEOUT","SYNTROPIX_API_RETRIES","endsWith","AND","conditions","OR","EQ","field","value","columnName","operator","staticValue","NE","NEQ","GT","GTE","LT","LTE","IN","values","In","CONTAINS","Contains","OVERLAP","Overlap","I_LIKE","pattern","ILike","NOT_I_LIKE","NotILike","NOT_IN","NotIn","LIKE","Like","NOT_LIKE","NotLike","IS_NULL","IsNull","IS_NOT_NULL","IsNotNull","BETWEEN","min","max","Between","EQ_COL","otherField","columnValue","NE_COL","GT_COL","GTE_COL","LT_COL","LTE_COL","SIMILARITY","options","Similarity","simiarityOptions","SIMILARITY_DISTANCE","SimilarityDistance","WORD_SIMILARITY","WordSimilarity","WORD_SIMILARITY_DISTANCE","WordSimilarityDistance","STRICT_WORD_SIMILARITY","StrictWordSimilarity","STRICT_WORD_SIMILARITY_DISTANCE","StrictWordSimilarityDistance","EUCLIDEAN_DISTANCE","EuclideanDistance","NEGATIVE_INNER_PRODUCT","NegativeInnerProduct","COSINE_DISTANCE","CosineDistance","Value","FilterWrapper","filter","undefined","Array","isArray","every","item","DataClient","client","insertData","insertOne","updateByPrimaryKey","pk","queryOne","model","query","One","queryMany","Many","map","updateData","deleteData","TableClient","createTable","dropTable","renameTable","truncateTable","addColumn","dropColumn","modifyColumn","getTableSchema","getTableList","SyntropixClient","_tableClient","_dataClient","table","ArrayDataType","String","maxLength","Decimal","precision","scale","Text","Integer","BigInteger","Double","DateTime","Timestamp","Date","Boolean","Money","Uuid","Enum","name","variants","Json","ColumnDataType","Vector","dimensions","dataType","Field","displayName","description","columnType","isPrimaryKey","isNullable","autoIncrement","default","defaultAccess","toLowerCase","intoColumnCreateDto","ForeignKeyField","tableName","onDelete","onUpdate","StringField","TextField","IntegerField","BooleanField","DateTimeField","TimestampField","DateField","JsonField","UuidField","VectorField","ArrayField","EnumField","MoneyField","DecimalField","DoubleField","FIELDS_KEY","Symbol","TABLE_NAME_KEY","TABLE_DISPLAY_NAME_KEY","DESCRIPTION_KEY","INDEXES_KEY","PATH_KEY","Column","target","propertyKey","fields","Reflect","getMetadata","fieldName","type","primary","nullable","defineMetadata","Description","ForeignKey","BaseModel","_client","_extra","getFields","columnToPropertyMap","propertyName","Object","entries","key","getTableName","getDisplayName","getDescription","metadataDescription","getIndexes","getPath","hasPrimaryKey","getPrimaryKeyName","getAssociations","f","getPrimaryKey","columns","foreignKeys","fromTableName","fromColumnName","toTableName","toColumnName","indexes","newName","newTableName","create","push","save","pkValue","payload","remove","finalFilter","bulkCreate","datas","batchSize","length","cnt","Math","keys","columnsSet","Set","col","size","c","update","delete","select","limit","sort","aggregate","join","offset","groupBy","count","column","function","Count","alias","toString","toJSON"],"mappings":"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","file":"index.js","sourcesContent":["import { Filter } from './filter';\n\nexport const AccessType = {\n None: 'None',\n Read: 'Read',\n Write: 'Write',\n Admin: 'Admin',\n} as const;\n\nexport type AccessType = (typeof AccessType)[keyof typeof AccessType];\n\nexport interface SyntropixDBRowAccess {\n read?: Filter;\n write?: Filter;\n}\n\nexport interface SyntropixDBAccess {\n tableAccess: AccessType;\n rowAccess?: Record<string, SyntropixDBRowAccess>;\n columnAccess: Record<string, AccessType>;\n createdAt: Date;\n updatedAt: Date;\n}\n","export const IndexType = {\n Gin: 'Gin',\n GinTrgmOps: 'GinTrgmOps',\n IvfflatL2Ops: 'IvfflatL2Ops',\n InfflatCosineOps: 'InfflatCosineOps',\n InfflatIpOps: 'InfflatIpOps',\n} as const;\n\nexport type IndexType = (typeof IndexType)[keyof typeof IndexType];\n\nexport interface SyntropixDBIndex {\n name?: string;\n unique: boolean;\n nullsNotDistinct: boolean;\n columns: string[];\n indexType: IndexType;\n}\n","export const SortType = {\n Descending: 'Descending',\n Ascending: 'Ascending',\n} as const;\n\nexport type SortType = (typeof SortType)[keyof typeof SortType];\n\nexport enum AggregateFunction {\n Count = 'Count',\n Sum = 'Sum',\n Avg = 'Avg',\n Min = 'Min',\n Max = 'Max',\n CountDistinct = 'CountDistinct',\n}\n\nexport interface Join {\n table: string;\n on: any;\n}\n\nexport interface Aggregate {\n column: string;\n function: AggregateFunction;\n alias: string;\n}\n\nexport interface GroupBy {\n columns: string[];\n}\n\nexport interface Sort {\n column: string;\n direction: SortType;\n}\n\nexport interface SimilarityOptions {\n threshold: number;\n order?: SortType;\n alias?: string;\n}\n\nexport enum FilterOperation {\n LT = 'LT',\n LTE = 'LTE',\n GT = 'GT',\n GTE = 'GTE',\n EQ = 'EQ',\n NEQ = 'NEQ',\n Between = 'Between',\n In = 'In',\n Contains = 'Contains',\n Overlap = 'Overlap',\n NotIn = 'NotIn',\n Like = 'Like',\n NotLike = 'NotLike',\n ILike = 'ILike',\n NotILike = 'NotILike',\n IsNull = 'IsNull',\n IsNotNull = 'IsNotNull',\n Similarity = 'Similarity',\n SimilarityDistance = 'SimilarityDistance',\n WordSimilarity = 'WordSimilarity',\n WordSimilarityDistance = 'WordSimilarityDistance',\n StrictWordSimilarity = 'StrictWordSimilarity',\n StrictWordSimilarityDistance = 'StrictWordSimilarityDistance',\n EuclideanDistance = 'EuclideanDistance',\n NegativeInnerProduct = 'NegativeInnerProduct',\n CosineDistance = 'CosineDistance',\n}\n\nexport interface FilterItem {\n columnName: string;\n operator: FilterOperation;\n staticValue?: any;\n columnValue?: string;\n simiarityOptions?: SimilarityOptions;\n}\n\nexport type FilterGroup = FilterItem[];\n\nexport type Filter = FilterGroup[];\n","export const ForeignKeyAction = {\n Cascade: 'Cascade',\n Restrict: 'Restrict',\n SetNull: 'SetNull',\n NoAction: 'NoAction',\n SetDefault: 'SetDefault',\n} as const;\n\nexport type ForeignKeyAction = (typeof ForeignKeyAction)[keyof typeof ForeignKeyAction];\n\nexport interface SyntropixDBForeignKey {\n name?: string;\n fromTableName: string;\n fromColumnName: string;\n toTableName: string;\n toColumnName: string;\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n}\n","import { ClientConfig } from '@/core/config';\nimport { SyntropixResponse } from '@/types';\nimport axios, { AxiosError } from 'axios';\nimport { EJSON } from 'bson';\n\nfunction handleError(error: AxiosError) {\n const axiosErr = error as AxiosError<SyntropixResponse<any>>;\n if (axiosErr.response?.data?.status === 'error') {\n throw new Error(axiosErr.response.data.message);\n }\n throw new Error(axiosErr.message);\n}\n\nexport class BaseClient {\n protected config: ClientConfig;\n\n constructor(config: ClientConfig) {\n this.config = config;\n }\n\n private headers() {\n return {\n 'Content-Type': 'application/json',\n Authorization: this.config.apiKey || '',\n };\n }\n\n private url(path: string) {\n if (path.startsWith('/')) {\n path = path.slice(1);\n }\n return `${this.config.baseUrl}${path}`;\n }\n\n public async get<T>(path: string, data: Record<string, any> = {}): Promise<T> {\n try {\n const response = await axios.get(this.url(path), {\n headers: this.headers(),\n params: data,\n });\n const content = EJSON.parse(JSON.stringify(response.data));\n if (content.status !== 'success') {\n throw new Error(content.message as string);\n }\n return content.data as T;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n handleError(error);\n }\n console.error(error);\n throw new Error('Failed to get data: Unknown error');\n }\n }\n\n public async post<T>(path: string, data: Record<string, any> = {}): Promise<T> {\n try {\n const response = await axios.post(this.url(path), data, {\n headers: this.headers(),\n });\n const content = EJSON.parse(JSON.stringify(response.data));\n if (content.status !== 'success') {\n throw new Error(content.message);\n }\n return content.data;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n handleError(error);\n }\n console.error(error);\n throw new Error('Failed to post data: Unknown error');\n }\n }\n}\n","export class ClientConfig {\n public apiKey?: string;\n public baseUrl?: string;\n public timeout?: number;\n public retries?: number;\n\n constructor(config?: any) {\n this.apiKey = config?.apiKey || process.env.SYNTROPIX_API_KEY;\n this.baseUrl = config?.baseUrl || process.env.SYNTROPIX_API_URL;\n this.timeout = config?.timeout || process.env.SYNTROPIX_API_TIMEOUT;\n this.retries = config?.retries || process.env.SYNTROPIX_API_RETRIES;\n\n if (!this.apiKey || !this.baseUrl) {\n throw new Error('API key and base URL are required');\n }\n\n if (!this.timeout) {\n this.timeout = 10000;\n }\n\n if (!this.retries) {\n this.retries = 3;\n }\n\n if (!this.baseUrl.endsWith('/')) {\n this.baseUrl += '/';\n }\n }\n}\n","import { Filter, FilterGroup, FilterItem, FilterOperation, SimilarityOptions } from '@/types';\n\nexport const AND = (...conditions: FilterItem[]): FilterGroup => conditions;\n\nexport const OR = (...conditions: FilterGroup[]): Filter => conditions;\n\nexport const EQ = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EQ,\n staticValue: value,\n});\n\nexport const NE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NEQ,\n staticValue: value,\n});\n\nexport const GT = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GT,\n staticValue: value,\n});\n\nexport const GTE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GTE,\n staticValue: value,\n});\n\nexport const LT = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LT,\n staticValue: value,\n});\n\nexport const LTE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LTE,\n staticValue: value,\n});\n\nexport const IN = (field: string, values: any[]): FilterItem => ({\n columnName: field,\n operator: FilterOperation.In,\n staticValue: values,\n});\n\nexport const CONTAINS = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Contains,\n staticValue: value,\n});\n\nexport const OVERLAP = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Overlap,\n staticValue: value,\n});\n\nexport const I_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.ILike,\n staticValue: pattern,\n});\n\nexport const NOT_I_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotILike,\n staticValue: pattern,\n});\n\nexport const NOT_IN = (field: string, values: any[]): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotIn,\n staticValue: values,\n});\n\nexport const LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Like,\n staticValue: pattern,\n});\n\nexport const NOT_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotLike,\n staticValue: pattern,\n});\n\nexport const IS_NULL = (field: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.IsNull,\n});\n\nexport const IS_NOT_NULL = (field: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.IsNotNull,\n});\n\nexport const BETWEEN = (field: string, min: any, max: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Between,\n staticValue: [min, max],\n});\n\n// Column comparison (compare two columns)\nexport const EQ_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EQ,\n columnValue: otherField,\n});\n\nexport const NE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NEQ,\n columnValue: otherField,\n});\n\nexport const GT_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GT,\n columnValue: otherField,\n});\n\nexport const GTE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GTE,\n columnValue: otherField,\n});\n\nexport const LT_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LT,\n columnValue: otherField,\n});\n\nexport const LTE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LTE,\n columnValue: otherField,\n});\n\n// Similarity operations\nexport const SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Similarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.SimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const WORD_SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.WordSimilarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const WORD_SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.WordSimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const STRICT_WORD_SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.StrictWordSimilarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const STRICT_WORD_SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.StrictWordSimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const EUCLIDEAN_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EuclideanDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const NEGATIVE_INNER_PRODUCT = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NegativeInnerProduct,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const COSINE_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.CosineDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\n// Helper function for values (backward compatibility)\nexport const Value = (value: any) => value;\n\n// Helper function for wrapping filter\nexport function FilterWrapper(filter: Filter | FilterGroup | FilterItem | undefined): Filter | undefined {\n if (filter === undefined) {\n return undefined;\n }\n if (!Array.isArray(filter)) {\n return OR(AND(filter));\n } else if (!filter.every((item) => Array.isArray(item))) {\n return OR(filter);\n } else {\n return filter;\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport { FilterWrapper } from '@/core/filter-builder';\nimport { DeleteDataDto, InsertDto, QueryDto, UpdateDto } from '@/types';\nimport { BaseClient } from './base-client';\n\nexport class DataClient {\n private client: BaseClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.client = new BaseClient(config);\n }\n\n async insertData(data: InsertDto): Promise<any> {\n return await this.client.post<any>('/insert', data);\n }\n\n async insertOne(data: InsertDto): Promise<any> {\n return await this.client.post<any>('/insert/one', data);\n }\n\n async updateByPrimaryKey(pk: string, data: UpdateDto): Promise<any> {\n return await this.client.post<any>(`/update/${pk}`, data);\n }\n\n async queryOne(data: QueryDto, model?: any): Promise<any> {\n data.query.filter = FilterWrapper(data.query.filter);\n const response = await this.client.post<any>('/query', { One: data });\n if (model !== undefined) {\n return new model(response);\n }\n return response;\n }\n\n async queryMany(data: QueryDto, model?: any): Promise<any> {\n data.query.filter = FilterWrapper(data.query.filter);\n const response = await this.client.post<any[]>('/query', { Many: data });\n if (model !== undefined) {\n // In TypeScript, we would typically use a validation library or manual validation\n // For now, we'll return the data as-is, but in a real implementation you might want to use\n // a library like class-validator or zod for validation\n return response.map((item: any) => new model(item));\n }\n return response;\n }\n\n async updateData(data: UpdateDto): Promise<any> {\n return await this.client.post<any>('/update', data);\n }\n\n async deleteData(data: DeleteDataDto): Promise<any> {\n return await this.client.post<any>('/delete', data);\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport {\n TableAddColumnDto,\n TableCreateDto,\n TableCreateResponse,\n TableDropColumnDto,\n TableDropDto,\n TableGetListDto,\n TableGetSchemaDto,\n TableListResponse,\n TableModifyColumnDto,\n TableRenameDto,\n TableSchemaResponse,\n TableTruncateDto,\n} from '@/types';\nimport { BaseClient } from './base-client';\n\nexport class TableClient {\n private client: BaseClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.client = new BaseClient(config);\n }\n\n async createTable(data: TableCreateDto): Promise<TableCreateResponse> {\n return await this.client.post<TableCreateResponse>('/table/create', data);\n }\n\n async dropTable(data: TableDropDto): Promise<any> {\n return await this.client.post<any>('/table/drop', data);\n }\n\n async renameTable(data: TableRenameDto): Promise<any> {\n return await this.client.post<any>('/table/rename', data);\n }\n\n async truncateTable(data: TableTruncateDto): Promise<any> {\n return await this.client.post<any>('/table/truncate', data);\n }\n\n async addColumn(data: TableAddColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/add', data);\n }\n\n async dropColumn(data: TableDropColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/drop', data);\n }\n\n async modifyColumn(data: TableModifyColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/modify', data);\n }\n\n async getTableSchema(data: TableGetSchemaDto): Promise<TableSchemaResponse> {\n return await this.client.get<TableSchemaResponse>('/table/schema', data);\n }\n\n async getTableList(data: TableGetListDto): Promise<TableListResponse> {\n return await this.client.get<TableListResponse>('/table/list', data);\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport { DataClient } from './data-client';\nimport { TableClient } from './table-client';\n\nexport class SyntropixClient {\n private config: ClientConfig;\n private _tableClient?: TableClient;\n private _dataClient?: DataClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.config = config;\n }\n\n get table(): TableClient {\n if (!this._tableClient) {\n this._tableClient = new TableClient(this.config);\n }\n return this._tableClient;\n }\n\n get data(): DataClient {\n if (!this._dataClient) {\n this._dataClient = new DataClient(this.config);\n }\n return this._dataClient;\n }\n}\n","import { ArrayDataTypeSchema, ArrayType, DecimalType, EnumType, MoneyType, StringType, VectorType } from '@/types';\n\nexport const ArrayDataType = {\n String: (maxLength: number): StringType => ({ String: maxLength }),\n Decimal: (precision: number, scale: number): DecimalType => ({\n Decimal: precision && scale ? [precision, scale] : null,\n }),\n Text: 'Text',\n Integer: 'Integer',\n BigInteger: 'BigInteger',\n Double: 'Double',\n DateTime: 'DateTime',\n Timestamp: 'Timestamp',\n Date: 'Date',\n Boolean: 'Boolean',\n Money: (precision: number, scale: number): MoneyType => ({ Money: precision && scale ? [precision, scale] : null }),\n Uuid: 'Uuid',\n Enum: (name: string, variants: string[]): EnumType => ({ Enum: { name, variants } }),\n Json: 'Json',\n} as const;\n\nexport const ColumnDataType = {\n Integer: 'Integer',\n String: (maxLength: number): StringType => ({ String: maxLength }),\n Text: 'Text',\n Boolean: 'Boolean',\n DateTime: 'DateTime',\n Timestamp: 'Timestamp',\n Date: 'Date',\n Json: 'Json',\n Uuid: 'Uuid',\n Double: 'Double',\n\n Vector: (dimensions: number): VectorType => ({ Vector: dimensions }),\n Array: (dataType: ArrayDataTypeSchema): ArrayType => ({ Array: dataType }),\n Enum: (name: string, variants: string[]): EnumType => ({ Enum: { name, variants } }),\n Money: (precision: number, scale: number): MoneyType => ({ Money: precision && scale ? [precision, scale] : null }),\n Decimal: (precision: number, scale: number): DecimalType => ({\n Decimal: precision && scale ? [precision, scale] : null,\n }),\n} as const;\n","import {\n AccessType,\n ArrayDataTypeSchema,\n ColumnCreateDto,\n ColumnDataTypeSchema,\n FieldOptions,\n ForeignKeyAction,\n ForeignKeyFieldOptions,\n} from '@/types';\nimport { ColumnDataType } from './data-type';\n\nexport abstract class Field {\n name: string = '';\n displayName: string = '';\n description: string = '';\n columnType: ColumnDataTypeSchema;\n isPrimaryKey: boolean = false;\n isNullable: boolean = false;\n autoIncrement: boolean = false;\n default?: any;\n defaultAccess?: AccessType;\n\n constructor(columnType: ColumnDataTypeSchema, options: FieldOptions = {}) {\n this.columnType = columnType;\n this.name = options.name?.toLowerCase() || '';\n this.displayName = options.displayName || '';\n this.description = options.description || '';\n this.isPrimaryKey = options.isPrimaryKey || false;\n this.isNullable = options.isNullable || false;\n this.autoIncrement = options.autoIncrement || false;\n this.default = options.default;\n this.defaultAccess = options.defaultAccess;\n }\n\n intoColumnCreateDto(): ColumnCreateDto {\n return {\n name: this.name,\n displayName: this.displayName,\n columnType: this.columnType,\n description: this.description,\n isPrimaryKey: this.isPrimaryKey,\n isNullable: this.isNullable,\n autoIncrement: this.autoIncrement,\n default: this.default,\n defaultAccess: this.defaultAccess,\n };\n }\n}\n\nexport class ForeignKeyField extends Field {\n tableName: string;\n columnName: string;\n onDelete: ForeignKeyAction;\n onUpdate: ForeignKeyAction;\n\n constructor(\n columnType: ColumnDataTypeSchema,\n tableName: string,\n columnName: string,\n options: ForeignKeyFieldOptions = {},\n ) {\n super(columnType, options);\n this.tableName = tableName;\n this.columnName = columnName;\n this.onDelete = options.onDelete || ForeignKeyAction.Cascade;\n this.onUpdate = options.onUpdate || ForeignKeyAction.Cascade;\n }\n}\n\nexport class StringField extends Field {\n constructor(maxLength: number, options: FieldOptions = {}) {\n super(ColumnDataType.String(maxLength), options);\n }\n}\n\nexport class TextField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Text, options);\n }\n}\n\nexport class IntegerField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Integer, options);\n }\n}\n\nexport class BooleanField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Boolean, options);\n }\n}\n\nexport class DateTimeField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.DateTime, options);\n }\n}\n\nexport class TimestampField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Timestamp, options);\n }\n}\n\nexport class DateField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Date, options);\n }\n}\n\nexport class JsonField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Json, options);\n }\n}\n\nexport class UuidField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Uuid, options);\n }\n}\n\nexport class VectorField extends Field {\n constructor(dimensions: number, options: FieldOptions = {}) {\n super(ColumnDataType.Vector(dimensions), options);\n }\n}\n\nexport class ArrayField extends Field {\n constructor(dataType: ArrayDataTypeSchema, options: FieldOptions = {}) {\n super(ColumnDataType.Array(dataType), options);\n }\n}\n\nexport class EnumField extends Field {\n constructor(name: string, variants: string[], options: FieldOptions = {}) {\n super(ColumnDataType.Enum(name, variants), options);\n }\n}\n\nexport class MoneyField extends Field {\n constructor(precision: number, scale: number, options: FieldOptions = {}) {\n super(ColumnDataType.Money(precision, scale), options);\n }\n}\n\nexport class DecimalField extends Field {\n constructor(precision: number, scale: number, options: FieldOptions = {}) {\n super(ColumnDataType.Decimal(precision, scale), options);\n }\n}\n\nexport class DoubleField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Double, options);\n }\n}\n","import {\n Aggregate,\n AggregateFunction,\n ColumnCreateOptions,\n ColumnDataTypeSchema,\n Filter,\n ForeignKeyAction,\n GroupBy,\n Join,\n Sort,\n SyntropixDBForeignKey,\n SyntropixDBIndex,\n TableCreateResponse,\n TableSchemaResponse,\n} from '@/types';\nimport 'reflect-metadata';\nimport { SyntropixClient } from './client';\nimport { ColumnDataType } from './data-type';\nimport { Field, ForeignKeyField, IntegerField } from './field';\nimport { AND, EQ, GTE, OR, Value } from './filter-builder';\n\n// Metadata keys\nconst FIELDS_KEY = Symbol('fields');\nconst TABLE_NAME_KEY = Symbol('tableName');\nconst TABLE_DISPLAY_NAME_KEY = Symbol('displayTableName');\nconst DESCRIPTION_KEY = Symbol('description');\nconst INDEXES_KEY = Symbol('indexes');\nconst PATH_KEY = Symbol('path');\n\n// Column decorator\nexport function Column(options: ColumnCreateOptions = {}) {\n return function (target: any, propertyKey: string) {\n const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};\n\n const fieldName = options.name || propertyKey.toLowerCase();\n const columnType = options.type || ColumnDataType.Text;\n\n const field = new (class extends Field {\n constructor() {\n super(columnType, {\n name: fieldName,\n displayName: options.displayName,\n description: options.description,\n isPrimaryKey: options.primary,\n isNullable: options.nullable,\n autoIncrement: options.autoIncrement,\n default: options.default,\n defaultAccess: options.defaultAccess,\n });\n }\n })();\n\n fields[propertyKey] = field;\n Reflect.defineMetadata(FIELDS_KEY, fields, target.constructor);\n };\n}\n\n// Description decorator\nexport function Description(description: string) {\n return function (target: any) {\n Reflect.defineMetadata(DESCRIPTION_KEY, description, target);\n };\n}\n\n// ForeignKey decorator\nexport function ForeignKey(\n tableName: string,\n columnName: string,\n options: {\n type?: ColumnDataTypeSchema;\n displayName?: string;\n name?: string;\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n description?: string;\n nullable?: boolean;\n default?: any;\n } = {},\n) {\n return function (target: any, propertyKey: string) {\n const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};\n\n const field = new ForeignKeyField(options.type || ColumnDataType.Integer, tableName, columnName, {\n displayName: options.displayName,\n description: options.description,\n isNullable: options.nullable,\n default: options.default,\n onDelete: options.onDelete,\n onUpdate: options.onUpdate,\n });\n field.name = options.name || propertyKey.toLowerCase();\n\n fields[propertyKey] = field;\n Reflect.defineMetadata(FIELDS_KEY, fields, target.constructor);\n };\n}\n\nexport class BaseModel {\n private _client?: SyntropixClient;\n private _extra: Record<string, any> = {};\n\n constructor(data: Record<string, any> = {}) {\n const fields = this.getFields();\n\n // Create a mapping from column names to property names\n const columnToPropertyMap: Record<string, string> = {};\n for (const [propertyName, field] of Object.entries(fields)) {\n columnToPropertyMap[field.name] = propertyName;\n }\n\n for (const [key, value] of Object.entries(data)) {\n // Check if key is a property name\n if (key in fields) {\n (this as any)[key] = value;\n }\n // Check if key is a column name\n else if (key in columnToPropertyMap) {\n (this as any)[columnToPropertyMap[key]] = value;\n }\n // Otherwise, store in _extra\n else {\n this._extra[key] = value;\n }\n }\n }\n\n // Static metadata getters\n protected static getTableName(): string {\n const tableName = Reflect.getMetadata(TABLE_NAME_KEY, this);\n if (tableName) return tableName;\n\n // Check for static tableName property\n if ('tableName' in this && typeof (this as any).tableName === 'string') {\n return (this as any).tableName;\n }\n\n return this.name.toLowerCase();\n }\n\n protected static getDisplayName(): string | null {\n const displayName = Reflect.getMetadata(TABLE_DISPLAY_NAME_KEY, this);\n if (displayName) return displayName;\n\n // Check for static displayName property\n if ('displayName' in this && typeof (this as any).displayName === 'string') {\n return (this as any).displayName;\n }\n\n return null;\n }\n\n public static getDescription(): string {\n const metadataDescription = Reflect.getMetadata(DESCRIPTION_KEY, this);\n if (metadataDescription) return metadataDescription;\n\n // Check for static description property as fallback\n if ('description' in this && typeof (this as any).description === 'string') {\n return (this as any).description;\n }\n\n return '';\n }\n\n protected static getIndexes(): SyntropixDBIndex[] {\n return Reflect.getMetadata(INDEXES_KEY, this) || [];\n }\n\n protected static getPath(): string {\n return Reflect.getMetadata(PATH_KEY, this) || '';\n }\n\n protected static getFields(): Record<string, Field> {\n const fields = Reflect.getMetadata(FIELDS_KEY, this) || {};\n\n // Check if there's a primary key\n let hasPrimaryKey = false;\n for (const field of Object.values(fields) as Field[]) {\n if (field.isPrimaryKey) {\n hasPrimaryKey = true;\n field.isNullable = false;\n break;\n }\n }\n\n // If no primary key, add default 'id' field\n if (!hasPrimaryKey && !('id' in fields)) {\n fields['id'] = new IntegerField({\n isPrimaryKey: true,\n isNullable: false,\n autoIncrement: true,\n description: 'Primary key',\n });\n fields['id'].name = 'id';\n }\n\n return fields;\n }\n\n protected static getPrimaryKeyName(): string {\n const fields = this.getFields();\n for (const [key, field] of Object.entries(fields)) {\n if (field.isPrimaryKey) {\n return field.name;\n }\n }\n return 'id';\n }\n\n protected static getAssociations(): ForeignKeyField[] {\n const fields = this.getFields();\n return Object.values(fields).filter((f) => f instanceof ForeignKeyField) as ForeignKeyField[];\n }\n\n // Instance metadata getters\n protected getFields(): Record<string, Field> {\n return (this.constructor as typeof BaseModel).getFields();\n }\n\n protected getTableName(): string {\n return (this.constructor as typeof BaseModel).getTableName();\n }\n\n protected getDisplayName(): string | null {\n return (this.constructor as typeof BaseModel).getDisplayName();\n }\n\n protected getPrimaryKeyName(): string {\n return (this.constructor as typeof BaseModel).getPrimaryKeyName();\n }\n\n protected getPrimaryKey(): Field | undefined {\n const fields = this.getFields();\n for (const field of Object.values(fields)) {\n if (field.isPrimaryKey) {\n return field;\n }\n }\n return undefined;\n }\n\n // Client getter\n protected get client(): SyntropixClient {\n if (!this._client) {\n this._client = new SyntropixClient();\n }\n return this._client;\n }\n\n // Table operations\n static async createTable(client: SyntropixClient = new SyntropixClient()): Promise<TableCreateResponse> {\n const fields = this.getFields();\n const columns = Object.values(fields).map((f) => f.intoColumnCreateDto());\n const foreignKeys: SyntropixDBForeignKey[] = this.getAssociations().map((f) => ({\n fromTableName: this.getTableName(),\n fromColumnName: f.name,\n toTableName: f.tableName,\n toColumnName: f.columnName,\n onDelete: f.onDelete,\n onUpdate: f.onUpdate,\n }));\n const indexes = this.getIndexes();\n const path = this.getPath();\n return await client.table.createTable({\n name: this.getTableName(),\n displayName: this.getDisplayName() || undefined,\n description: this.getDescription() || '',\n columns,\n foreignKeys,\n indexes,\n path,\n });\n }\n\n static async dropTable(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.dropTable({ tableName: this.getTableName() });\n }\n\n static async renameTable(newName: string, client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.renameTable({\n tableName: this.getTableName(),\n newTableName: newName,\n });\n }\n\n static async truncateTable(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.truncateTable({ tableName: this.getTableName() });\n }\n\n static async getTableSchema(client: SyntropixClient = new SyntropixClient()): Promise<TableSchemaResponse> {\n return await client.table.getTableSchema({ tableName: this.getTableName() });\n }\n\n // Data operations\n static async create<T extends BaseModel>(\n this: new (data?: any) => T,\n data: Record<string, any>,\n client: SyntropixClient = new SyntropixClient(),\n ): Promise<any> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const columns: string[] = [];\n const values: any[] = [];\n\n for (const [key, value] of Object.entries(data)) {\n if (key in fields) {\n columns.push(fields[key].name);\n values.push(value);\n } else {\n throw new Error(`Invalid field: ${key}`);\n }\n }\n\n return client.data.insertOne({\n tableName: model.getTableName(),\n data: {\n columns,\n values: [values],\n },\n });\n }\n\n async save(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n const pk = this.getPrimaryKey();\n const pkValue = (this as any)[this.getPrimaryKeyName()];\n const fields = this.getFields();\n\n if (pkValue === null || pkValue === undefined) {\n const data: Record<string, any> = {};\n for (const [key, field] of Object.entries(fields)) {\n data[key] = (this as any)[key];\n }\n return (this.constructor as typeof BaseModel).create(data, client);\n }\n\n const columns: string[] = [];\n const values: any[] = [];\n for (const [key, field] of Object.entries(fields)) {\n if (field.name !== pk?.name) {\n columns.push(field.name);\n values.push((this as any)[key]);\n }\n }\n\n return (\n client ||\n this.client.data.updateByPrimaryKey(pkValue, {\n tableName: this.getTableName(),\n payload: {\n filter: [[]],\n columns,\n values,\n },\n })\n );\n }\n\n async remove(filter?: Filter, _client?: SyntropixClient | null): Promise<number> {\n const pk = this.getPrimaryKey();\n const pkValue = (this as any)[this.getPrimaryKeyName()];\n const finalFilter = filter || OR(AND(EQ(pk?.name || 'id', pkValue)));\n\n return (\n _client ||\n this.client.data.deleteData({\n tableName: this.getTableName(),\n payload: {\n filter: finalFilter,\n },\n })\n );\n }\n\n static async bulkCreate<T extends BaseModel>(\n this: new (data?: any) => T,\n datas: Record<string, any>[],\n batchSize: number = 32,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n if (!datas.length) return 0;\n if (batchSize <= 0) throw new Error('Batch size must be greater than 0');\n\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n let cnt = 0;\n batchSize = Math.min(batchSize, 128);\n\n const columns = Object.keys(datas[0]);\n const columnsSet = new Set(columns);\n\n for (const col of columns) {\n if (!(col in fields)) {\n throw new Error(`Invalid field: ${col}`);\n }\n }\n\n let values: any[][] = [];\n const client = _client || new SyntropixClient();\n\n for (const data of datas) {\n if (columnsSet.size !== new Set(Object.keys(data)).size || !columns.every((c) => c in data)) {\n throw new Error('All data must have the same columns');\n }\n\n values.push(columns.map((c) => data[c]));\n\n if (values.length === batchSize) {\n cnt += await client.data.insertData({\n tableName: model.getTableName(),\n data: { columns: columns.map((c) => fields[c].name), values },\n });\n values = [];\n }\n }\n\n if (values.length > 0) {\n cnt += await client.data.insertData({\n tableName: model.getTableName(),\n data: { columns: columns.map((c) => fields[c].name), values },\n });\n }\n\n return cnt;\n }\n\n static async update<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n data: Record<string, any>,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const columns = Object.keys(data);\n\n if (!columns.length) {\n throw new Error('No columns to update');\n }\n\n for (const col of columns) {\n if (!(col in fields)) {\n throw new Error(`Invalid field: ${col}`);\n }\n }\n\n const values = columns.map((c) => data[c]);\n const client = _client || new SyntropixClient();\n\n return client.data.updateData({\n tableName: model.getTableName(),\n payload: {\n filter,\n columns: columns.map((c) => fields[c].name),\n values,\n },\n });\n }\n\n static async delete<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const client = _client || new SyntropixClient();\n\n return client.data.deleteData({\n tableName: model.getTableName(),\n payload: { filter },\n });\n }\n\n static async get<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n select?: string[],\n _client?: SyntropixClient | null,\n ): Promise<T> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const client = _client || new SyntropixClient();\n\n const data = await client.data.queryOne({\n tableName: model.getTableName(),\n query: {\n filter,\n select: select || Object.values(fields).map((f) => f.name),\n limit: 1,\n },\n });\n\n return new this(data);\n }\n\n static async filter<T extends BaseModel>(\n this: new (data?: any) => T,\n options: {\n filter: Filter;\n sort?: Sort[];\n aggregate?: Aggregate[];\n join?: Join;\n limit?: number;\n offset?: number;\n groupBy?: GroupBy;\n select?: string[];\n _client?: SyntropixClient | null;\n },\n ): Promise<T[]> {\n const model = this as any as typeof BaseModel;\n const client = options._client || new SyntropixClient();\n\n const data = await client.data.queryMany({\n tableName: model.getTableName(),\n query: {\n filter: options.filter,\n sort: options.sort,\n aggregate: options.aggregate,\n join: options.join ? [options.join] : undefined,\n limit: options.limit,\n offset: options.offset,\n groupBy: options.groupBy,\n select: options.select,\n },\n });\n\n return data.map((item: any) => new this(item));\n }\n\n static async count<T extends BaseModel>(\n this: new (data?: any) => T,\n options: {\n filter?: Filter;\n join?: Join;\n groupBy?: GroupBy;\n _client?: SyntropixClient | null;\n } = {},\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const client = options._client || new SyntropixClient();\n\n const data = await client.data.queryMany({\n tableName: model.getTableName(),\n query: {\n filter: options.filter || [[GTE('id', Value(0))]],\n aggregate: [\n {\n column: 'id',\n function: AggregateFunction.Count,\n alias: 'count',\n },\n ],\n join: options.join ? [options.join] : undefined,\n limit: 1,\n offset: 0,\n groupBy: options.groupBy,\n select: ['count'],\n },\n });\n\n return data.length > 0 ? data[0].count : 0;\n }\n\n toString(): string {\n const fields = this.getFields();\n const data: Record<string, any> = {};\n\n for (const key of Object.keys(fields)) {\n const value = (this as any)[key];\n if (!(value instanceof Field)) {\n data[key] = value;\n }\n }\n\n data._extra = this._extra;\n return `${this.constructor.name}(${JSON.stringify(data).slice(1, -1)})`;\n }\n\n toJSON(): Record<string, any> {\n const fields = this.getFields();\n const data: Record<string, any> = {};\n\n for (const key of Object.keys(fields)) {\n data[key] = (this as any)[key];\n }\n\n return { ...data, ...this._extra };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/model/access.ts","../src/types/model/db-index.ts","../src/types/model/filter.ts","../src/types/model/foreign-key.ts","../src/core/client/base-client.ts","../src/core/config.ts","../src/core/filter-builder.ts","../src/core/client/data-client.ts","../src/core/client/table-client.ts","../src/core/client/syntropix-client.ts","../src/core/data-type.ts","../src/core/field.ts","../src/core/base-model.ts"],"names":["AccessType","None","Read","Write","Admin","IndexType","Gin","GinTrgmOps","IvfflatL2Ops","InfflatCosineOps","InfflatIpOps","SortType","Descending","Ascending","AggregateFunction","FilterOperation","ForeignKeyAction","Cascade","Restrict","SetNull","NoAction","SetDefault","handleError","error","axiosErr","response","data","status","Error","message","BaseClient","config","headers","Authorization","apiKey","url","path","startsWith","slice","baseUrl","get","axios","params","content","EJSON","parse","JSON","stringify","isAxiosError","console","post","ClientConfig","timeout","retries","process","env","SYNTROPIX_API_KEY","SYNTROPIX_API_URL","SYNTROPIX_API_TIMEOUT","SYNTROPIX_API_RETRIES","endsWith","AND","conditions","OR","EQ","field","value","columnName","operator","staticValue","NE","NEQ","GT","GTE","LT","LTE","IN","values","In","CONTAINS","Contains","OVERLAP","Overlap","I_LIKE","pattern","ILike","NOT_I_LIKE","NotILike","NOT_IN","NotIn","LIKE","Like","NOT_LIKE","NotLike","IS_NULL","IsNull","IS_NOT_NULL","IsNotNull","BETWEEN","min","max","Between","EQ_COL","otherField","columnValue","NE_COL","GT_COL","GTE_COL","LT_COL","LTE_COL","SIMILARITY","options","Similarity","simiarityOptions","SIMILARITY_DISTANCE","SimilarityDistance","WORD_SIMILARITY","WordSimilarity","WORD_SIMILARITY_DISTANCE","WordSimilarityDistance","STRICT_WORD_SIMILARITY","StrictWordSimilarity","STRICT_WORD_SIMILARITY_DISTANCE","StrictWordSimilarityDistance","EUCLIDEAN_DISTANCE","EuclideanDistance","NEGATIVE_INNER_PRODUCT","NegativeInnerProduct","COSINE_DISTANCE","CosineDistance","Value","FilterWrapper","filter","undefined","Array","isArray","every","item","DataClient","client","insertData","insertOne","updateByPrimaryKey","pk","queryOne","model","query","One","queryMany","Many","map","updateData","deleteData","TableClient","createTable","dropTable","renameTable","truncateTable","addColumn","dropColumn","modifyColumn","getTableSchema","getTableList","SyntropixClient","_tableClient","_dataClient","table","ArrayDataType","String","maxLength","Decimal","precision","scale","Text","Integer","BigInteger","Double","DateTime","Timestamp","Date","Boolean","Money","Uuid","Enum","name","variants","Json","ColumnDataType","Vector","dimensions","dataType","Field","displayName","description","columnType","isPrimaryKey","isNullable","autoIncrement","default","defaultAccess","toLowerCase","intoColumnCreateDto","ForeignKeyField","tableName","onDelete","onUpdate","StringField","TextField","IntegerField","BooleanField","DateTimeField","TimestampField","DateField","JsonField","UuidField","VectorField","ArrayField","EnumField","MoneyField","DecimalField","DoubleField","FIELDS_KEY","Symbol","TABLE_NAME_KEY","DISPLAY_NAME_KEY","DESCRIPTION_KEY","INDEXES_KEY","PATH_KEY","Column","target","propertyKey","fields","Reflect","getMetadata","fieldName","type","primary","nullable","defineMetadata","Description","DisplayName","Path","Indexes","indexes","ForeignKey","BaseModel","_client","_extra","getFields","columnToPropertyMap","propertyName","Object","entries","key","getTableName","getDisplayName","getDescription","metadataDescription","getIndexes","getPath","hasPrimaryKey","getPrimaryKeyName","getAssociations","f","getPrimaryKey","columns","foreignKeys","fromTableName","fromColumnName","toTableName","toColumnName","newName","newTableName","create","push","save","pkValue","payload","remove","finalFilter","bulkCreate","datas","batchSize","length","cnt","Math","keys","columnsSet","Set","col","size","c","update","delete","select","limit","sort","aggregate","join","offset","groupBy","count","function","Count","alias","toString","toJSON"],"mappings":"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","file":"index.js","sourcesContent":["import { Filter } from './filter';\n\nexport const AccessType = {\n None: 'None',\n Read: 'Read',\n Write: 'Write',\n Admin: 'Admin',\n} as const;\n\nexport type AccessType = (typeof AccessType)[keyof typeof AccessType];\n\nexport interface SyntropixDBRowAccess {\n read?: Filter;\n write?: Filter;\n}\n\nexport interface SyntropixDBAccess {\n tableAccess: AccessType;\n rowAccess?: Record<string, SyntropixDBRowAccess>;\n columnAccess: Record<string, AccessType>;\n createdAt: Date;\n updatedAt: Date;\n}\n","export const IndexType = {\n Gin: 'Gin',\n GinTrgmOps: 'GinTrgmOps',\n IvfflatL2Ops: 'IvfflatL2Ops',\n InfflatCosineOps: 'InfflatCosineOps',\n InfflatIpOps: 'InfflatIpOps',\n} as const;\n\nexport type IndexType = (typeof IndexType)[keyof typeof IndexType];\n\nexport interface SyntropixDBIndex {\n name?: string;\n unique: boolean;\n nullsNotDistinct: boolean;\n columns: string[];\n indexType: IndexType;\n}\n","export const SortType = {\n Descending: 'Descending',\n Ascending: 'Ascending',\n} as const;\n\nexport type SortType = (typeof SortType)[keyof typeof SortType];\n\nexport enum AggregateFunction {\n Count = 'Count',\n Sum = 'Sum',\n Avg = 'Avg',\n Min = 'Min',\n Max = 'Max',\n CountDistinct = 'CountDistinct',\n}\n\nexport interface Join {\n tableName: string;\n onColumnName: string;\n}\n\nexport interface Aggregate {\n columnName: string;\n function: AggregateFunction;\n alias: string;\n}\n\nexport interface GroupBy {\n columns: string[];\n}\n\nexport interface Sort {\n columnName: string;\n direction: SortType;\n}\n\nexport interface SimilarityOptions {\n threshold: number;\n order?: SortType;\n alias?: string;\n}\n\nexport enum FilterOperation {\n LT = 'LT',\n LTE = 'LTE',\n GT = 'GT',\n GTE = 'GTE',\n EQ = 'EQ',\n NEQ = 'NEQ',\n Between = 'Between',\n In = 'In',\n Contains = 'Contains',\n Overlap = 'Overlap',\n NotIn = 'NotIn',\n Like = 'Like',\n NotLike = 'NotLike',\n ILike = 'ILike',\n NotILike = 'NotILike',\n IsNull = 'IsNull',\n IsNotNull = 'IsNotNull',\n Similarity = 'Similarity',\n SimilarityDistance = 'SimilarityDistance',\n WordSimilarity = 'WordSimilarity',\n WordSimilarityDistance = 'WordSimilarityDistance',\n StrictWordSimilarity = 'StrictWordSimilarity',\n StrictWordSimilarityDistance = 'StrictWordSimilarityDistance',\n EuclideanDistance = 'EuclideanDistance',\n NegativeInnerProduct = 'NegativeInnerProduct',\n CosineDistance = 'CosineDistance',\n}\n\nexport interface FilterItem {\n columnName: string;\n operator: FilterOperation;\n staticValue?: any;\n columnValue?: string;\n simiarityOptions?: SimilarityOptions;\n}\n\nexport type FilterGroup = FilterItem[];\n\nexport type Filter = FilterGroup[];\n","export const ForeignKeyAction = {\n Cascade: 'Cascade',\n Restrict: 'Restrict',\n SetNull: 'SetNull',\n NoAction: 'NoAction',\n SetDefault: 'SetDefault',\n} as const;\n\nexport type ForeignKeyAction = (typeof ForeignKeyAction)[keyof typeof ForeignKeyAction];\n\nexport interface SyntropixDBForeignKey {\n name?: string;\n fromTableName: string;\n fromColumnName: string;\n toTableName: string;\n toColumnName: string;\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n}\n","import { ClientConfig } from '@/core/config';\nimport { SyntropixResponse } from '@/types';\nimport axios, { AxiosError } from 'axios';\nimport { EJSON } from 'bson';\n\nfunction handleError(error: AxiosError) {\n const axiosErr = error as AxiosError<SyntropixResponse<any>>;\n if (axiosErr.response?.data?.status === 'error') {\n throw new Error(axiosErr.response.data.message);\n }\n throw new Error(axiosErr.message);\n}\n\nexport class BaseClient {\n protected config: ClientConfig;\n\n constructor(config: ClientConfig) {\n this.config = config;\n }\n\n private headers() {\n return {\n 'Content-Type': 'application/json',\n Authorization: this.config.apiKey || '',\n };\n }\n\n private url(path: string) {\n if (path.startsWith('/')) {\n path = path.slice(1);\n }\n return `${this.config.baseUrl}${path}`;\n }\n\n public async get<T>(path: string, data: Record<string, any> = {}): Promise<T> {\n try {\n const response = await axios.get(this.url(path), {\n headers: this.headers(),\n params: data,\n });\n const content = EJSON.parse(JSON.stringify(response.data));\n if (content.status !== 'success') {\n throw new Error(content.message as string);\n }\n return content.data as T;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n handleError(error);\n }\n console.error(error);\n throw new Error('Failed to get data: Unknown error');\n }\n }\n\n public async post<T>(path: string, data: Record<string, any> = {}): Promise<T> {\n try {\n const response = await axios.post(this.url(path), data, {\n headers: this.headers(),\n });\n const content = EJSON.parse(JSON.stringify(response.data));\n if (content.status !== 'success') {\n throw new Error(content.message);\n }\n return content.data;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n handleError(error);\n }\n console.error(error);\n throw new Error('Failed to post data: Unknown error');\n }\n }\n}\n","export class ClientConfig {\n public apiKey?: string;\n public baseUrl?: string;\n public timeout?: number;\n public retries?: number;\n\n constructor(config?: any) {\n this.apiKey = config?.apiKey || process.env.SYNTROPIX_API_KEY;\n this.baseUrl = config?.baseUrl || process.env.SYNTROPIX_API_URL;\n this.timeout = config?.timeout || process.env.SYNTROPIX_API_TIMEOUT;\n this.retries = config?.retries || process.env.SYNTROPIX_API_RETRIES;\n\n if (!this.apiKey || !this.baseUrl) {\n throw new Error('API key and base URL are required');\n }\n\n if (!this.timeout) {\n this.timeout = 10000;\n }\n\n if (!this.retries) {\n this.retries = 3;\n }\n\n if (!this.baseUrl.endsWith('/')) {\n this.baseUrl += '/';\n }\n }\n}\n","import { Filter, FilterGroup, FilterItem, FilterOperation, SimilarityOptions } from '@/types';\n\nexport const AND = (...conditions: FilterItem[]): FilterGroup => conditions;\n\nexport const OR = (...conditions: FilterGroup[]): Filter => conditions;\n\nexport const EQ = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EQ,\n staticValue: value,\n});\n\nexport const NE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NEQ,\n staticValue: value,\n});\n\nexport const GT = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GT,\n staticValue: value,\n});\n\nexport const GTE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GTE,\n staticValue: value,\n});\n\nexport const LT = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LT,\n staticValue: value,\n});\n\nexport const LTE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LTE,\n staticValue: value,\n});\n\nexport const IN = (field: string, values: any[]): FilterItem => ({\n columnName: field,\n operator: FilterOperation.In,\n staticValue: values,\n});\n\nexport const CONTAINS = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Contains,\n staticValue: value,\n});\n\nexport const OVERLAP = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Overlap,\n staticValue: value,\n});\n\nexport const I_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.ILike,\n staticValue: pattern,\n});\n\nexport const NOT_I_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotILike,\n staticValue: pattern,\n});\n\nexport const NOT_IN = (field: string, values: any[]): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotIn,\n staticValue: values,\n});\n\nexport const LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Like,\n staticValue: pattern,\n});\n\nexport const NOT_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotLike,\n staticValue: pattern,\n});\n\nexport const IS_NULL = (field: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.IsNull,\n});\n\nexport const IS_NOT_NULL = (field: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.IsNotNull,\n});\n\nexport const BETWEEN = (field: string, min: any, max: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Between,\n staticValue: [min, max],\n});\n\n// Column comparison (compare two columns)\nexport const EQ_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EQ,\n columnValue: otherField,\n});\n\nexport const NE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NEQ,\n columnValue: otherField,\n});\n\nexport const GT_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GT,\n columnValue: otherField,\n});\n\nexport const GTE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GTE,\n columnValue: otherField,\n});\n\nexport const LT_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LT,\n columnValue: otherField,\n});\n\nexport const LTE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LTE,\n columnValue: otherField,\n});\n\n// Similarity operations\nexport const SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Similarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.SimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const WORD_SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.WordSimilarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const WORD_SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.WordSimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const STRICT_WORD_SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.StrictWordSimilarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const STRICT_WORD_SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.StrictWordSimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const EUCLIDEAN_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EuclideanDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const NEGATIVE_INNER_PRODUCT = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NegativeInnerProduct,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const COSINE_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.CosineDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\n// Helper function for values (backward compatibility)\nexport const Value = (value: any) => value;\n\n// Helper function for wrapping filter\nexport function FilterWrapper(filter: Filter | FilterGroup | FilterItem | undefined): Filter | undefined {\n if (filter === undefined) {\n return undefined;\n }\n if (!Array.isArray(filter)) {\n return OR(AND(filter));\n } else if (!filter.every((item) => Array.isArray(item))) {\n return OR(filter);\n } else {\n return filter;\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport { FilterWrapper } from '@/core/filter-builder';\nimport { DeleteDataDto, InsertDto, QueryDto, UpdateDto } from '@/types';\nimport { BaseClient } from './base-client';\n\nexport class DataClient {\n private client: BaseClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.client = new BaseClient(config);\n }\n\n async insertData(data: InsertDto): Promise<any> {\n return await this.client.post<any>('/insert', data);\n }\n\n async insertOne(data: InsertDto): Promise<any> {\n return await this.client.post<any>('/insert/one', data);\n }\n\n async updateByPrimaryKey(pk: string, data: UpdateDto): Promise<any> {\n return await this.client.post<any>(`/update/${pk}`, data);\n }\n\n async queryOne(data: QueryDto, model?: any): Promise<any> {\n data.query.filter = FilterWrapper(data.query.filter);\n const response = await this.client.post<any>('/query', { One: data });\n if (model !== undefined) {\n return new model(response);\n }\n return response;\n }\n\n async queryMany(data: QueryDto, model?: any): Promise<any> {\n data.query.filter = FilterWrapper(data.query.filter);\n const response = await this.client.post<any[]>('/query', { Many: data });\n if (model !== undefined) {\n // In TypeScript, we would typically use a validation library or manual validation\n // For now, we'll return the data as-is, but in a real implementation you might want to use\n // a library like class-validator or zod for validation\n return response.map((item: any) => new model(item));\n }\n return response;\n }\n\n async updateData(data: UpdateDto): Promise<any> {\n return await this.client.post<any>('/update', data);\n }\n\n async deleteData(data: DeleteDataDto): Promise<any> {\n return await this.client.post<any>('/delete', data);\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport {\n TableAddColumnDto,\n TableCreateDto,\n TableCreateResponse,\n TableDropColumnDto,\n TableDropDto,\n TableGetListDto,\n TableGetSchemaDto,\n TableListResponse,\n TableModifyColumnDto,\n TableRenameDto,\n TableSchemaResponse,\n TableTruncateDto,\n} from '@/types';\nimport { BaseClient } from './base-client';\n\nexport class TableClient {\n private client: BaseClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.client = new BaseClient(config);\n }\n\n async createTable(data: TableCreateDto): Promise<TableCreateResponse> {\n return await this.client.post<TableCreateResponse>('/table/create', data);\n }\n\n async dropTable(data: TableDropDto): Promise<any> {\n return await this.client.post<any>('/table/drop', data);\n }\n\n async renameTable(data: TableRenameDto): Promise<any> {\n return await this.client.post<any>('/table/rename', data);\n }\n\n async truncateTable(data: TableTruncateDto): Promise<any> {\n return await this.client.post<any>('/table/truncate', data);\n }\n\n async addColumn(data: TableAddColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/add', data);\n }\n\n async dropColumn(data: TableDropColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/drop', data);\n }\n\n async modifyColumn(data: TableModifyColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/modify', data);\n }\n\n async getTableSchema(data: TableGetSchemaDto): Promise<TableSchemaResponse> {\n return await this.client.get<TableSchemaResponse>('/table/schema', data);\n }\n\n async getTableList(data: TableGetListDto): Promise<TableListResponse> {\n return await this.client.get<TableListResponse>('/table/list', data);\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport { DataClient } from './data-client';\nimport { TableClient } from './table-client';\n\nexport class SyntropixClient {\n private config: ClientConfig;\n private _tableClient?: TableClient;\n private _dataClient?: DataClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.config = config;\n }\n\n get table(): TableClient {\n if (!this._tableClient) {\n this._tableClient = new TableClient(this.config);\n }\n return this._tableClient;\n }\n\n get data(): DataClient {\n if (!this._dataClient) {\n this._dataClient = new DataClient(this.config);\n }\n return this._dataClient;\n }\n}\n","import { ArrayDataTypeSchema, ArrayType, DecimalType, EnumType, MoneyType, StringType, VectorType } from '@/types';\n\nexport const ArrayDataType = {\n String: (maxLength: number): StringType => ({ String: maxLength }),\n Decimal: (precision: number, scale: number): DecimalType => ({\n Decimal: precision && scale ? [precision, scale] : null,\n }),\n Text: 'Text',\n Integer: 'Integer',\n BigInteger: 'BigInteger',\n Double: 'Double',\n DateTime: 'DateTime',\n Timestamp: 'Timestamp',\n Date: 'Date',\n Boolean: 'Boolean',\n Money: (precision: number, scale: number): MoneyType => ({ Money: precision && scale ? [precision, scale] : null }),\n Uuid: 'Uuid',\n Enum: (name: string, variants: string[]): EnumType => ({ Enum: { name, variants } }),\n Json: 'Json',\n} as const;\n\nexport const ColumnDataType = {\n Integer: 'Integer',\n String: (maxLength: number): StringType => ({ String: maxLength }),\n Text: 'Text',\n Boolean: 'Boolean',\n DateTime: 'DateTime',\n Timestamp: 'Timestamp',\n Date: 'Date',\n Json: 'Json',\n Uuid: 'Uuid',\n Double: 'Double',\n\n Vector: (dimensions: number): VectorType => ({ Vector: dimensions }),\n Array: (dataType: ArrayDataTypeSchema): ArrayType => ({ Array: dataType }),\n Enum: (name: string, variants: string[]): EnumType => ({ Enum: { name, variants } }),\n Money: (precision: number, scale: number): MoneyType => ({ Money: precision && scale ? [precision, scale] : null }),\n Decimal: (precision: number, scale: number): DecimalType => ({\n Decimal: precision && scale ? [precision, scale] : null,\n }),\n} as const;\n","import {\n AccessType,\n ArrayDataTypeSchema,\n ColumnCreateDto,\n ColumnDataTypeSchema,\n FieldOptions,\n ForeignKeyAction,\n ForeignKeyFieldOptions,\n} from '@/types';\nimport { ColumnDataType } from './data-type';\n\nexport abstract class Field {\n name: string = '';\n displayName: string = '';\n description: string = '';\n columnType: ColumnDataTypeSchema;\n isPrimaryKey: boolean = false;\n isNullable: boolean = false;\n autoIncrement: boolean = false;\n default?: any;\n defaultAccess?: AccessType;\n\n constructor(columnType: ColumnDataTypeSchema, options: FieldOptions = {}) {\n this.columnType = columnType;\n this.name = options.name?.toLowerCase() || '';\n this.displayName = options.displayName || '';\n this.description = options.description || '';\n this.isPrimaryKey = options.isPrimaryKey || false;\n this.isNullable = options.isNullable || false;\n this.autoIncrement = options.autoIncrement || false;\n this.default = options.default;\n this.defaultAccess = options.defaultAccess;\n }\n\n intoColumnCreateDto(): ColumnCreateDto {\n return {\n name: this.name,\n displayName: this.displayName,\n columnType: this.columnType,\n description: this.description,\n isPrimaryKey: this.isPrimaryKey,\n isNullable: this.isNullable,\n autoIncrement: this.autoIncrement,\n default: this.default,\n defaultAccess: this.defaultAccess,\n };\n }\n}\n\nexport class ForeignKeyField extends Field {\n tableName: string;\n columnName: string;\n onDelete: ForeignKeyAction;\n onUpdate: ForeignKeyAction;\n\n constructor(\n columnType: ColumnDataTypeSchema,\n tableName: string,\n columnName: string,\n options: ForeignKeyFieldOptions = {},\n ) {\n super(columnType, options);\n this.tableName = tableName;\n this.columnName = columnName;\n this.onDelete = options.onDelete || ForeignKeyAction.Cascade;\n this.onUpdate = options.onUpdate || ForeignKeyAction.Cascade;\n }\n}\n\nexport class StringField extends Field {\n constructor(maxLength: number, options: FieldOptions = {}) {\n super(ColumnDataType.String(maxLength), options);\n }\n}\n\nexport class TextField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Text, options);\n }\n}\n\nexport class IntegerField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Integer, options);\n }\n}\n\nexport class BooleanField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Boolean, options);\n }\n}\n\nexport class DateTimeField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.DateTime, options);\n }\n}\n\nexport class TimestampField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Timestamp, options);\n }\n}\n\nexport class DateField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Date, options);\n }\n}\n\nexport class JsonField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Json, options);\n }\n}\n\nexport class UuidField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Uuid, options);\n }\n}\n\nexport class VectorField extends Field {\n constructor(dimensions: number, options: FieldOptions = {}) {\n super(ColumnDataType.Vector(dimensions), options);\n }\n}\n\nexport class ArrayField extends Field {\n constructor(dataType: ArrayDataTypeSchema, options: FieldOptions = {}) {\n super(ColumnDataType.Array(dataType), options);\n }\n}\n\nexport class EnumField extends Field {\n constructor(name: string, variants: string[], options: FieldOptions = {}) {\n super(ColumnDataType.Enum(name, variants), options);\n }\n}\n\nexport class MoneyField extends Field {\n constructor(precision: number, scale: number, options: FieldOptions = {}) {\n super(ColumnDataType.Money(precision, scale), options);\n }\n}\n\nexport class DecimalField extends Field {\n constructor(precision: number, scale: number, options: FieldOptions = {}) {\n super(ColumnDataType.Decimal(precision, scale), options);\n }\n}\n\nexport class DoubleField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Double, options);\n }\n}\n","import {\n Aggregate,\n AggregateFunction,\n ColumnCreateOptions,\n ColumnDataTypeSchema,\n Filter,\n ForeignKeyAction,\n GroupBy,\n Join,\n Sort,\n SyntropixDBForeignKey,\n SyntropixDBIndex,\n TableCreateResponse,\n TableSchemaResponse,\n} from '@/types';\nimport 'reflect-metadata';\nimport { SyntropixClient } from './client';\nimport { ColumnDataType } from './data-type';\nimport { Field, ForeignKeyField, IntegerField } from './field';\nimport { AND, EQ, GTE, OR, Value } from './filter-builder';\n\n// Metadata keys\nconst FIELDS_KEY = Symbol('fields');\nconst TABLE_NAME_KEY = Symbol('tableName');\nconst DISPLAY_NAME_KEY = Symbol('displayName');\nconst DESCRIPTION_KEY = Symbol('description');\nconst INDEXES_KEY = Symbol('indexes');\nconst PATH_KEY = Symbol('path');\n\n// Column decorator\nexport function Column(options: ColumnCreateOptions = {}) {\n return function (target: any, propertyKey: string) {\n const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};\n\n const fieldName = options.name || propertyKey.toLowerCase();\n const columnType = options.type || ColumnDataType.Text;\n\n const field = new (class extends Field {\n constructor() {\n super(columnType, {\n name: fieldName,\n displayName: options.displayName,\n description: options.description,\n isPrimaryKey: options.primary,\n isNullable: options.nullable,\n autoIncrement: options.autoIncrement,\n default: options.default,\n defaultAccess: options.defaultAccess,\n });\n }\n })();\n\n fields[propertyKey] = field;\n Reflect.defineMetadata(FIELDS_KEY, fields, target.constructor);\n };\n}\n\n// Description decorator\nexport function Description(description: string) {\n return function (target: any) {\n Reflect.defineMetadata(DESCRIPTION_KEY, description, target);\n };\n}\n\nexport function DisplayName(displayName: string) {\n return function (target: any) {\n Reflect.defineMetadata(DISPLAY_NAME_KEY, displayName, target);\n };\n}\n\nexport function Path(path: string) {\n return function (target: any) {\n Reflect.defineMetadata(PATH_KEY, path, target);\n };\n}\n\nexport function Indexes(indexes: SyntropixDBIndex[]) {\n return function (target: any) {\n Reflect.defineMetadata(INDEXES_KEY, indexes, target);\n };\n}\n\n// ForeignKey decorator\nexport function ForeignKey(\n tableName: string,\n columnName: string,\n options: {\n type?: ColumnDataTypeSchema;\n displayName?: string;\n name?: string;\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n description?: string;\n nullable?: boolean;\n default?: any;\n } = {},\n) {\n return function (target: any, propertyKey: string) {\n const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};\n\n const field = new ForeignKeyField(options.type || ColumnDataType.Integer, tableName, columnName, {\n displayName: options.displayName,\n description: options.description,\n isNullable: options.nullable,\n default: options.default,\n onDelete: options.onDelete,\n onUpdate: options.onUpdate,\n });\n field.name = options.name || propertyKey.toLowerCase();\n\n fields[propertyKey] = field;\n Reflect.defineMetadata(FIELDS_KEY, fields, target.constructor);\n };\n}\n\nexport class BaseModel {\n private _client?: SyntropixClient;\n private _extra: Record<string, any> = {};\n\n constructor(data: Record<string, any> = {}) {\n const fields = this.getFields();\n\n // Create a mapping from column names to property names\n const columnToPropertyMap: Record<string, string> = {};\n for (const [propertyName, field] of Object.entries(fields)) {\n columnToPropertyMap[field.name] = propertyName;\n }\n\n for (const [key, value] of Object.entries(data)) {\n // Check if key is a property name\n if (key in fields) {\n (this as any)[key] = value;\n }\n // Check if key is a column name\n else if (key in columnToPropertyMap) {\n (this as any)[columnToPropertyMap[key]] = value;\n }\n // Otherwise, store in _extra\n else {\n this._extra[key] = value;\n }\n }\n }\n\n // Static metadata getters\n protected static getTableName(): string {\n const tableName = Reflect.getMetadata(TABLE_NAME_KEY, this);\n if (tableName) return tableName;\n\n // Check for static tableName property\n if ('tableName' in this && typeof (this as any).tableName === 'string') {\n return (this as any).tableName;\n }\n\n return this.name.toLowerCase();\n }\n\n protected static getDisplayName(): string | null {\n const displayName = Reflect.getMetadata(DISPLAY_NAME_KEY, this);\n if (displayName) return displayName;\n\n // Check for static displayName property\n if ('displayName' in this && typeof (this as any).displayName === 'string') {\n return (this as any).displayName;\n }\n\n return null;\n }\n\n public static getDescription(): string {\n const metadataDescription = Reflect.getMetadata(DESCRIPTION_KEY, this);\n if (metadataDescription) return metadataDescription;\n\n // Check for static description property as fallback\n if ('description' in this && typeof (this as any).description === 'string') {\n return (this as any).description;\n }\n\n return '';\n }\n\n protected static getIndexes(): SyntropixDBIndex[] {\n const indexes = Reflect.getMetadata(INDEXES_KEY, this);\n if (indexes) return indexes;\n\n if ('indexes' in this && Array.isArray((this as any).indexes)) {\n return (this as any).indexes;\n }\n\n return [];\n }\n\n protected static getPath(): string | undefined {\n const path = Reflect.getMetadata(PATH_KEY, this);\n if (path) return path;\n\n if ('path' in this && typeof (this as any).path === 'string') {\n return (this as any).path;\n }\n\n return undefined;\n }\n\n protected static getFields(): Record<string, Field> {\n const fields = Reflect.getMetadata(FIELDS_KEY, this) || {};\n\n // Check if there's a primary key\n let hasPrimaryKey = false;\n for (const field of Object.values(fields) as Field[]) {\n if (field.isPrimaryKey) {\n hasPrimaryKey = true;\n field.isNullable = false;\n break;\n }\n }\n\n // If no primary key, add default 'id' field\n if (!hasPrimaryKey && !('id' in fields)) {\n fields['id'] = new IntegerField({\n isPrimaryKey: true,\n isNullable: false,\n autoIncrement: true,\n description: 'Primary key',\n });\n fields['id'].name = 'id';\n }\n\n return fields;\n }\n\n protected static getPrimaryKeyName(): string {\n const fields = this.getFields();\n for (const [key, field] of Object.entries(fields)) {\n if (field.isPrimaryKey) {\n return field.name;\n }\n }\n return 'id';\n }\n\n protected static getAssociations(): ForeignKeyField[] {\n const fields = this.getFields();\n return Object.values(fields).filter((f) => f instanceof ForeignKeyField) as ForeignKeyField[];\n }\n\n // Instance metadata getters\n protected getFields(): Record<string, Field> {\n return (this.constructor as typeof BaseModel).getFields();\n }\n\n protected getTableName(): string {\n return (this.constructor as typeof BaseModel).getTableName();\n }\n\n protected getDisplayName(): string | null {\n return (this.constructor as typeof BaseModel).getDisplayName();\n }\n\n protected getPrimaryKeyName(): string {\n return (this.constructor as typeof BaseModel).getPrimaryKeyName();\n }\n\n protected getPrimaryKey(): Field | undefined {\n const fields = this.getFields();\n for (const field of Object.values(fields)) {\n if (field.isPrimaryKey) {\n return field;\n }\n }\n return undefined;\n }\n\n // Client getter\n protected get client(): SyntropixClient {\n if (!this._client) {\n this._client = new SyntropixClient();\n }\n return this._client;\n }\n\n // Table operations\n static async createTable(client: SyntropixClient = new SyntropixClient()): Promise<TableCreateResponse> {\n const fields = this.getFields();\n const columns = Object.values(fields).map((f) => f.intoColumnCreateDto());\n const foreignKeys: SyntropixDBForeignKey[] = this.getAssociations().map((f) => ({\n fromTableName: this.getTableName(),\n fromColumnName: f.name,\n toTableName: f.tableName,\n toColumnName: f.columnName,\n onDelete: f.onDelete,\n onUpdate: f.onUpdate,\n }));\n const indexes = this.getIndexes();\n const path = this.getPath();\n return await client.table.createTable({\n name: this.getTableName(),\n displayName: this.getDisplayName() || undefined,\n description: this.getDescription() || '',\n columns,\n foreignKeys,\n indexes,\n path,\n });\n }\n\n static async dropTable(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.dropTable({ tableName: this.getTableName() });\n }\n\n static async renameTable(newName: string, client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.renameTable({\n tableName: this.getTableName(),\n newTableName: newName,\n });\n }\n\n static async truncateTable(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.truncateTable({ tableName: this.getTableName() });\n }\n\n static async getTableSchema(client: SyntropixClient = new SyntropixClient()): Promise<TableSchemaResponse> {\n return await client.table.getTableSchema({ tableName: this.getTableName() });\n }\n\n // Data operations\n static async create<T extends BaseModel>(\n this: new (data?: any) => T,\n data: Record<string, any>,\n client: SyntropixClient = new SyntropixClient(),\n ): Promise<any> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const columns: string[] = [];\n const values: any[] = [];\n\n for (const [key, value] of Object.entries(data)) {\n if (key in fields) {\n columns.push(fields[key].name);\n values.push(value);\n } else {\n throw new Error(`Invalid field: ${key}`);\n }\n }\n\n return client.data.insertOne({\n tableName: model.getTableName(),\n data: {\n columns,\n values: [values],\n },\n });\n }\n\n async save(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n const pk = this.getPrimaryKey();\n const pkValue = (this as any)[this.getPrimaryKeyName()];\n const fields = this.getFields();\n\n if (pkValue === null || pkValue === undefined) {\n const data: Record<string, any> = {};\n for (const [key, field] of Object.entries(fields)) {\n data[key] = (this as any)[key];\n }\n return (this.constructor as typeof BaseModel).create(data, client);\n }\n\n const columns: string[] = [];\n const values: any[] = [];\n for (const [key, field] of Object.entries(fields)) {\n if (field.name !== pk?.name) {\n columns.push(field.name);\n values.push((this as any)[key]);\n }\n }\n\n return (\n client ||\n this.client.data.updateByPrimaryKey(pkValue, {\n tableName: this.getTableName(),\n payload: {\n filter: [[]],\n columns,\n values,\n },\n })\n );\n }\n\n async remove(filter?: Filter, _client?: SyntropixClient | null): Promise<number> {\n const pk = this.getPrimaryKey();\n const pkValue = (this as any)[this.getPrimaryKeyName()];\n const finalFilter = filter || OR(AND(EQ(pk?.name || 'id', pkValue)));\n\n return (\n _client ||\n this.client.data.deleteData({\n tableName: this.getTableName(),\n payload: {\n filter: finalFilter,\n },\n })\n );\n }\n\n static async bulkCreate<T extends BaseModel>(\n this: new (data?: any) => T,\n datas: Record<string, any>[],\n batchSize: number = 32,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n if (!datas.length) return 0;\n if (batchSize <= 0) throw new Error('Batch size must be greater than 0');\n\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n let cnt = 0;\n batchSize = Math.min(batchSize, 128);\n\n const columns = Object.keys(datas[0]);\n const columnsSet = new Set(columns);\n\n for (const col of columns) {\n if (!(col in fields)) {\n throw new Error(`Invalid field: ${col}`);\n }\n }\n\n let values: any[][] = [];\n const client = _client || new SyntropixClient();\n\n for (const data of datas) {\n if (columnsSet.size !== new Set(Object.keys(data)).size || !columns.every((c) => c in data)) {\n throw new Error('All data must have the same columns');\n }\n\n values.push(columns.map((c) => data[c]));\n\n if (values.length === batchSize) {\n cnt += await client.data.insertData({\n tableName: model.getTableName(),\n data: { columns: columns.map((c) => fields[c].name), values },\n });\n values = [];\n }\n }\n\n if (values.length > 0) {\n cnt += await client.data.insertData({\n tableName: model.getTableName(),\n data: { columns: columns.map((c) => fields[c].name), values },\n });\n }\n\n return cnt;\n }\n\n static async update<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n data: Record<string, any>,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const columns = Object.keys(data);\n\n if (!columns.length) {\n throw new Error('No columns to update');\n }\n\n for (const col of columns) {\n if (!(col in fields)) {\n throw new Error(`Invalid field: ${col}`);\n }\n }\n\n const values = columns.map((c) => data[c]);\n const client = _client || new SyntropixClient();\n\n return client.data.updateData({\n tableName: model.getTableName(),\n payload: {\n filter,\n columns: columns.map((c) => fields[c].name),\n values,\n },\n });\n }\n\n static async delete<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const client = _client || new SyntropixClient();\n\n return client.data.deleteData({\n tableName: model.getTableName(),\n payload: { filter },\n });\n }\n\n static async get<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n select?: string[],\n _client?: SyntropixClient | null,\n ): Promise<T> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const client = _client || new SyntropixClient();\n\n const data = await client.data.queryOne({\n tableName: model.getTableName(),\n query: {\n filter,\n select: select || Object.values(fields).map((f) => f.name),\n limit: 1,\n },\n });\n\n return new this(data);\n }\n\n static async filter<T extends BaseModel>(\n this: new (data?: any) => T,\n options: {\n filter: Filter;\n sort?: Sort[];\n aggregate?: Aggregate[];\n join?: Join;\n limit?: number;\n offset?: number;\n groupBy?: GroupBy;\n select?: string[];\n _client?: SyntropixClient | null;\n },\n ): Promise<T[]> {\n const model = this as any as typeof BaseModel;\n const client = options._client || new SyntropixClient();\n\n const data = await client.data.queryMany({\n tableName: model.getTableName(),\n query: {\n filter: options.filter,\n sort: options.sort,\n aggregate: options.aggregate,\n join: options.join ? [options.join] : undefined,\n limit: options.limit,\n offset: options.offset,\n groupBy: options.groupBy,\n select: options.select,\n },\n });\n\n return data.map((item: any) => new this(item));\n }\n\n static async count<T extends BaseModel>(\n this: new (data?: any) => T,\n options: {\n filter?: Filter;\n join?: Join;\n groupBy?: GroupBy;\n _client?: SyntropixClient | null;\n } = {},\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const client = options._client || new SyntropixClient();\n\n const data = await client.data.queryMany({\n tableName: model.getTableName(),\n query: {\n filter: options.filter || [[GTE('id', Value(0))]],\n aggregate: [\n {\n columnName: 'id',\n function: AggregateFunction.Count,\n alias: 'count',\n },\n ],\n join: options.join ? [options.join] : undefined,\n limit: 1,\n offset: 0,\n groupBy: options.groupBy,\n select: ['count'],\n },\n });\n\n return data.length > 0 ? data[0].count : 0;\n }\n\n toString(): string {\n const fields = this.getFields();\n const data: Record<string, any> = {};\n\n for (const key of Object.keys(fields)) {\n const value = (this as any)[key];\n if (!(value instanceof Field)) {\n data[key] = value;\n }\n }\n\n data._extra = this._extra;\n return `${this.constructor.name}(${JSON.stringify(data).slice(1, -1)})`;\n }\n\n toJSON(): Record<string, any> {\n const fields = this.getFields();\n const data: Record<string, any> = {};\n\n for (const key of Object.keys(fields)) {\n data[key] = (this as any)[key];\n }\n\n return { ...data, ...this._extra };\n }\n}\n"]}
|