@centia-io/sdk 0.0.35 → 0.0.37
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/centia-io-sdk.d.cts
CHANGED
|
@@ -288,7 +288,7 @@ interface DBSchema {
|
|
|
288
288
|
name: string;
|
|
289
289
|
tables: readonly TableDef[];
|
|
290
290
|
}
|
|
291
|
-
type ScalarFromTypename<T extends string> = T extends "int2" | "int4" | "int8" ? number : T extends "float4" | "float8" ? number : T extends "numeric" | "decimal" ? NumericString : T extends "varchar" | "text" | "bpchar" | "char" ? string : T extends "bool" ? PgBoolean : T extends "json" | "jsonb" ? JsonValue : T extends "date" ? DateString : T extends "time" ? TimeString : T extends "timetz" ? TimetzString : T extends "timestamp" ? TimestampString : T extends "timestamptz" ? TimestamptzString : T extends "interval" ? IntervalValue : T extends "point" ? Point : T extends "line" ? Line : T extends "lseg" ? Lseg : T extends "box" ? Box : T extends "path" ? Path : T extends "polygon" ? Polygon : T extends "circle" ? Circle : T extends "int4range" ? Int4Range : T extends "int8range" ? Int8Range : T extends "numrange" ? NumRange : T extends "tsrange" ? TsRange : T extends "tstzrange" ? TstzRange : T extends "daterange" ? DateRange :
|
|
291
|
+
type ScalarFromTypename<T extends string> = T extends "int2" | "int4" | "int8" ? number : T extends "float4" | "float8" ? number : T extends "numeric" | "decimal" ? NumericString : T extends "varchar" | "text" | "bpchar" | "char" ? string : T extends "bool" ? PgBoolean : T extends "json" | "jsonb" ? JsonValue : T extends "date" ? DateString : T extends "time" ? TimeString : T extends "timetz" ? TimetzString : T extends "timestamp" ? TimestampString : T extends "timestamptz" ? TimestamptzString : T extends "interval" ? IntervalValue : T extends "point" ? Point : T extends "line" ? Line : T extends "lseg" ? Lseg : T extends "box" ? Box : T extends "path" ? Path : T extends "polygon" ? Polygon : T extends "circle" ? Circle : T extends "int4range" ? Int4Range : T extends "int8range" ? Int8Range : T extends "numrange" ? NumRange : T extends "tsrange" ? TsRange : T extends "tstzrange" ? TstzRange : T extends "daterange" ? DateRange : string;
|
|
292
292
|
type TableNames<S extends DBSchema> = S["tables"][number]["name"];
|
|
293
293
|
type TableByName<S extends DBSchema, TN extends string> = Extract<S["tables"][number], {
|
|
294
294
|
name: TN;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"centia-io-sdk.d.cts","names":[],"sources":["../src/util/utils.ts","../src/services/gc2.services.ts","../src/CodeFlow.ts","../src/PasswordFlow.ts","../src/types/pgTypes.ts","../src/Sql.ts","../src/Rpc.ts","../src/Meta.ts","../src/Status.ts","../src/Claims.ts","../src/Users.ts","../src/Ws.ts","../src/Stats.ts","../src/Tables.ts","../src/Api.ts","../src/SignUp.ts","../src/SqlBuilder.ts"],"sourcesContent":[],"mappings":"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C+D,SAAA,QAAA,Ge8C1C,Yf9C0C,Ge+C/D,Cf/C+D,SAAA,WAAA,Ge+CvC,ef/CuC,GegD/D,CfhD+D,SAAA,aAAA,GegDrC,iBfhDqC,GeiD/D,CfjD+D,SAAA,UAAA,GeiDxC,afjDwC,GemD/D,CfnD+D,SAAA,OAAA,GemD3C,KfnD2C,GeoD/D,CfpD+D,SAAA,MAAA,GeoD5C,IfpD4C,GeqD/D,CfrD+D,SAAA,MAAA,GeqD5C,IfrD4C,GesD/D,CftD+D,SAAA,KAAA,GesD7C,GftD6C,GeuD/D,CfvD+D,SAAA,MAAA,GeuD5C,IfvD4C,GewD/D,CfxD+D,SAAA,SAAA,GewDzC,OfxDyC,GeyD/D,CfzD+D,SAAA,QAAA,GeyD1C,MfzD0C,Ge2D/D,Cf3D+D,SAAA,WAAA,Ge2DvC,Sf3DuC,Ge4D/D,Cf5D+D,SAAA,WAAA,Ge4DvC,Sf5DuC,Ge6D/D,Cf7D+D,SAAA,UAAA,Ge6DxC,Qf7DwC,Ge8D/D,Cf9D+D,SAAA,SAAA,Ge8DzC,Of9DyC,Ge+D/D,Cf/D+D,SAAA,WAAA,Ge+DvC,Sf/DuC,GegE/D,CfhE+D,SAAA,WAAA,GegEvC,SfhEuC,GAAA,OAAA;AAoD9B,KegBvB,UfhBuB,CAAA,UegBF,QfhBE,CAAA,GegBU,CfhBV,CAAA,QAAA,CAAA,CAAA,MAAA,CAAA,CAAA,MAAA,CAAA;AAAR,KeiBf,WfjBe,CAAA,UeiBO,QfjBP,EAAA,WAAA,MAAA,CAAA,GeiBsC,OfjBtC,CeiB8C,CfjB9C,CAAA,QAAA,CAAA,CAAA,MAAA,CAAA,EAAA;MAOwC,EeUmC,EfVnC;;AA8EpD,KenEH,SfmEG,CAAA,UenEiB,QfmEjB,EAAA,WAAA,MAAA,CAAA,GenEgD,WfmEhD,CenE4D,CfmE5D,EenE+D,EfmE/D,CAAA,CAAA,SAAA,CAAA;AAAR,KelEK,WfkEL,CAAA,UelE2B,QfkE3B,EAAA,WAAA,MAAA,CAAA,GelE0D,SfkE1D,CelEoE,CfkEpE,EelEuE,EfkEvE,CAAA,CAAA,MAAA,CAAA,CAAA,MAAA,CAAA;Ke/DF,kBfqFiC,CAAA,UerFJ,QfqFI,CAAA,GerFQ,CfqFR,CAAA,aAAA,CAAA,S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EY+hBiC,EZ/hBjC,CAAA;EACb,SAAA,EAAA,CAAA,IAAa,CAAA,EY+hBJ,aZ/hBI,CY+hBU,WZ/hBV,CY+hBsB,CZ/hBtB,EY+hByB,EZ/hBzB,CAAA,CAAA,EAAA,GY+hBkC,WZ/hBlC,CY+hB8C,CZ/hB9C,EY+hBiD,EZ/hBjD,CAAA;EAKb,KAAA,EAAA,GAAO,GY2hBJ,UZ3hBI,CY2hBO,MZ3hBP,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;AACnB;AACY,UY4hBK,WZ5hBC,CAAA,UY4hBqB,QZ5hBrB,EAAA,WAAA,MAAA,CAAA,CAAA;EACN,KAAA,EAAI,CAAA,KAAA,EY4hBC,aZ5hBD,CY4hBe,CZ5hBf,EY4hBkB,EZ5hBlB,CAAA,EAAA,GY4hB0B,WZ5hB1B,CY4hBsC,CZ5hBtC,EY4hByC,EZ5hBzC,CAAA;EAKJ,OAAA,EAAA,CAAA,EAAS,EYwhBL,eZxhBK,CYwhBW,CZxhBX,EYwhBc,EZxhBd,CAAA,EAAA,GYwhBsB,WZxhBtB,CYwhBkC,CZxhBlC,EYwhBqC,EZxhBrC,CAAA;EAKT,SAAA,EAAA,CAAA,IAAU,CAAA,EYohBD,aZphBC,CYohBa,WZphBb,CYohByB,CZphBzB,EYohB4B,EZphB5B,CAAA,CAAA,EAAA,GYohBqC,WZphBrC,CYohBiD,CZphBjD,EYohBoD,EZphBpD,CAAA;EACV,KAAA,EAAA,GAAA,GYohBG,UZphBO,CYohBI,MZphBJ,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;AACtB;AACY,iBYirCI,gBZjrCW,CAAA,UYirCgB,QZjrChB,CAAA,CAAA,MAAA,EYirCkC,CZjrClC,CAAA,EYirCsC,UZjrCtC,CYirCiD,CZjrCjD,CAAA"}
|
|
1
|
+
{"version":3,"file":"centia-io-sdk.d.cts","names":[],"sources":["../src/util/utils.ts","../src/services/gc2.services.ts","../src/CodeFlow.ts","../src/PasswordFlow.ts","../src/types/pgTypes.ts","../src/Sql.ts","../src/Rpc.ts","../src/Meta.ts","../src/Status.ts","../src/Claims.ts","../src/Users.ts","../src/Ws.ts","../src/Stats.ts","../src/Tables.ts","../src/Api.ts","../src/SignUp.ts","../src/SqlBuilder.ts"],"sourcesContent":[],"mappings":"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SAAA,QAAA,Ge4CR,Yf5CQ,Ge6CzB,Cf7CyB,SAAA,WAAA,Ge6CD,ef7CC,Ge8CrB,Cf9CqB,SAAA,aAAA,Ge8CK,iBf9CL,Ge+CjB,Cf/CiB,SAAA,UAAA,Ge+CM,af/CN,GeiDb,CfjDa,SAAA,OAAA,GeiDO,KfjDP,GekDT,CflDS,SAAA,MAAA,GekDU,IflDV,GemDL,CfnDK,SAAA,MAAA,GemDc,IfnDd,GeoDD,CfpDC,SAAA,KAAA,GeoDiB,GfpDjB,GeqDG,CfrDH,SAAA,MAAA,GeqDsB,IfrDtB,GesDO,CftDP,SAAA,SAAA,GesD6B,OftD7B,GeuDW,CfvDX,SAAA,QAAA,GeuDgC,MfvDhC,GeyDe,CfzDf,SAAA,WAAA,GeyDuC,SfzDvC,Ge0DmB,Cf1DnB,SAAA,WAAA,Ge0D2C,Sf1D3C,Ge2DuB,Cf3DvB,SAAA,UAAA,Ge2D8C,Qf3D9C,Ge4D2B,Cf5D3B,SAAA,SAAA,Ge4DiD,Of5DjD,Ge6D+B,Cf7D/B,SAAA,WAAA,Ge6DuD,Sf7DvD,Ge8DmC,Cf9DnC,SAAA,WAAA,Ge8D2D,Sf9D3D,GAAA,MAAA;AAoD9B,KecvB,UfduB,CAAA,UecF,QfdE,CAAA,GecU,CfdV,CAAA,QAAA,CAAA,CAAA,MAAA,CAAA,CAAA,MAAA,CAAA;AAAR,Keef,Wffe,CAAA,UeeO,QffP,EAAA,WAAA,MAAA,CAAA,GeesC,OfftC,Cee8C,Cff9C,CAAA,QAAA,CAAA,CAAA,MAAA,CAAA,EAAA;MAOwC,EeQmC,EfRnC;;AA8EpD,KerEH,SfqEG,CAAA,UerEiB,QfqEjB,EAAA,WAAA,MAAA,CAAA,GerEgD,WfqEhD,CerE4D,CfqE5D,EerE+D,EfqE/D,CAAA,CAAA,SAAA,CAAA;AAAR,KepEK,WfoEL,CAAA,UepE2B,QfoE3B,EAAA,WAAA,MAAA,CAAA,GepE0D,SfoE1D,CepEoE,CfoEpE,EepEuE,EfoEvE,CAAA,CAAA,MAAA,CAAA,CAAA,MAAA,CAAA;KejEF,kBfuFiC,CAAA,UevFJ,QfuFI,CAAA,GevFQ,CfuFR,CAAA,aAAA,CAAA,SAAA,SAAA,GAAA,EAAA,GevFkD,CfuFlD,CAAA,aAAA,CAAA,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AA,GYoiB0B,WZpiB1B,CYoiBsC,CZpiBtC,EYoiByC,EZpiBzC,CAAA;EAMrB,KAAA,EAAA,GAAA,GY+hBG,UZ/hBU,CY+hBC,MZ/hBD,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;AACzB;AAKY,UY4hBK,WZ5hBE,CAAA,UY4hBoB,QZ5hBpB,EAAA,WAAA,MAAA,CAAA,CAAA;EACP,KAAA,EAAI,CAAA,KAAA,EY4hBC,aZ5hBD,CY4hBe,CZ5hBf,EY4hBkB,EZ5hBlB,CAAA,EAAA,GY4hB0B,WZ5hB1B,CY4hBsC,CZ5hBtC,EY4hByC,EZ5hBzC,CAAA;EACJ,OAAA,EAAM,CAAA,EAAA,EY4hBF,eZ5hBE,CY4hBc,CZ5hBd,EY4hBiB,EZ5hBjB,CAAA,EAAA,GY4hByB,WZ5hBzB,CY4hBqC,CZ5hBrC,EY4hBwC,EZ5hBxC,CAAA;EACN,SAAI,EAAA,CAAA,IAAA,CAAA,EY4hBK,aZ5hBL,CY4hBmB,WZ5hBnB,CY4hB+B,CZ5hB/B,EY4hBkC,EZ5hBlC,CAAA,CAAA,EAAA,GY4hB2C,WZ5hB3C,CY4hBuD,CZ5hBvD,EY4hB0D,EZ5hB1D,CAAA;EAKJ,KAAA,EAAA,GAAA,GYwhBG,UZxhBM,CYwhBK,MZxhBL,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;AAKrB;AACY,UYqhBK,WZrhBK,CAAA,UYqhBiB,QZrhBjB,EAAA,WAAA,MAAA,CAAA,CAAA;EACV,KAAA,EAAA,CAAA,KAAA,EYqhBK,aZrhBO,CYqhBO,CZrhBP,EYqhBU,EZrhBV,CAAA,EAAA,GYqhBkB,WZrhBlB,CYqhB8B,CZrhB9B,EYqhBiC,EZrhBjC,CAAA;EACZ,OAAA,EAAA,CAAA,EAAA,EYqhBI,eZrhBW,CYqhBK,CZrhBL,EYqhBQ,EZrhBR,CAAA,EAAA,GYqhBgB,WZrhBhB,CYqhB4B,CZrhB5B,EYqhB+B,EZrhB/B,CAAA;EACf,SAAA,EAAA,CAAA,IAAiB,CAAjB,EYqhBS,aZrhBQ,CYqhBM,WZrhBN,CYqhBkB,CZrhBlB,EYqhBqB,EZrhBrB,CAAA,CAAA,EAAA,GYqhB8B,WZrhB9B,CYqhB0C,CZrhB1C,EYqhB6C,EZrhB7C,CAAA;EAEZ,KAAA,EAAA,GAAA,GYohBF,UZphBe,CYohBJ,MZphBI,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;AAY9B;AACiB,iBYsqCD,gBZtqCK,CAAA,UYsqCsB,QZtqCtB,CAAA,CAAA,MAAA,EYsqCwC,CZtqCxC,CAAA,EYsqC4C,UZtqC5C,CYsqCuD,CZtqCvD,CAAA"}
|
package/dist/centia-io-sdk.d.ts
CHANGED
|
@@ -288,7 +288,7 @@ interface DBSchema {
|
|
|
288
288
|
name: string;
|
|
289
289
|
tables: readonly TableDef[];
|
|
290
290
|
}
|
|
291
|
-
type ScalarFromTypename<T extends string> = T extends "int2" | "int4" | "int8" ? number : T extends "float4" | "float8" ? number : T extends "numeric" | "decimal" ? NumericString : T extends "varchar" | "text" | "bpchar" | "char" ? string : T extends "bool" ? PgBoolean : T extends "json" | "jsonb" ? JsonValue : T extends "date" ? DateString : T extends "time" ? TimeString : T extends "timetz" ? TimetzString : T extends "timestamp" ? TimestampString : T extends "timestamptz" ? TimestamptzString : T extends "interval" ? IntervalValue : T extends "point" ? Point : T extends "line" ? Line : T extends "lseg" ? Lseg : T extends "box" ? Box : T extends "path" ? Path : T extends "polygon" ? Polygon : T extends "circle" ? Circle : T extends "int4range" ? Int4Range : T extends "int8range" ? Int8Range : T extends "numrange" ? NumRange : T extends "tsrange" ? TsRange : T extends "tstzrange" ? TstzRange : T extends "daterange" ? DateRange :
|
|
291
|
+
type ScalarFromTypename<T extends string> = T extends "int2" | "int4" | "int8" ? number : T extends "float4" | "float8" ? number : T extends "numeric" | "decimal" ? NumericString : T extends "varchar" | "text" | "bpchar" | "char" ? string : T extends "bool" ? PgBoolean : T extends "json" | "jsonb" ? JsonValue : T extends "date" ? DateString : T extends "time" ? TimeString : T extends "timetz" ? TimetzString : T extends "timestamp" ? TimestampString : T extends "timestamptz" ? TimestamptzString : T extends "interval" ? IntervalValue : T extends "point" ? Point : T extends "line" ? Line : T extends "lseg" ? Lseg : T extends "box" ? Box : T extends "path" ? Path : T extends "polygon" ? Polygon : T extends "circle" ? Circle : T extends "int4range" ? Int4Range : T extends "int8range" ? Int8Range : T extends "numrange" ? NumRange : T extends "tsrange" ? TsRange : T extends "tstzrange" ? TstzRange : T extends "daterange" ? DateRange : string;
|
|
292
292
|
type TableNames<S extends DBSchema> = S["tables"][number]["name"];
|
|
293
293
|
type TableByName<S extends DBSchema, TN extends string> = Extract<S["tables"][number], {
|
|
294
294
|
name: TN;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"centia-io-sdk.d.ts","names":[],"sources":["../src/util/utils.ts","../src/services/gc2.services.ts","../src/CodeFlow.ts","../src/PasswordFlow.ts","../src/types/pgTypes.ts","../src/Sql.ts","../src/Rpc.ts","../src/Meta.ts","../src/Status.ts","../src/Claims.ts","../src/Users.ts","../src/Ws.ts","../src/Stats.ts","../src/Tables.ts","../src/Api.ts","../src/SignUp.ts","../src/SqlBuilder.ts"],"sourcesContent":[],"mappings":"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C+D,SAAA,QAAA,Ge8C1C,Yf9C0C,Ge+C/D,Cf/C+D,SAAA,WAAA,Ge+CvC,ef/CuC,GegD/D,CfhD+D,SAAA,aAAA,GegDrC,iBfhDqC,GeiD/D,CfjD+D,SAAA,UAAA,GeiDxC,afjDwC,GemD/D,CfnD+D,SAAA,OAAA,GemD3C,KfnD2C,GeoD/D,CfpD+D,SAAA,MAAA,GeoD5C,IfpD4C,GeqD/D,CfrD+D,SAAA,MAAA,GeqD5C,IfrD4C,GesD/D,CftD+D,SAAA,KAAA,GesD7C,GftD6C,GeuD/D,CfvD+D,SAAA,MAAA,GeuD5C,IfvD4C,GewD/D,CfxD+D,SAAA,SAAA,GewDzC,OfxDyC,GeyD/D,CfzD+D,SAAA,QAAA,GeyD1C,MfzD0C,Ge2D/D,Cf3D+D,SAAA,WAAA,Ge2DvC,Sf3DuC,Ge4D/D,Cf5D+D,SAAA,WAAA,Ge4DvC,Sf5DuC,Ge6D/D,Cf7D+D,SAAA,UAAA,Ge6DxC,Qf7DwC,Ge8D/D,Cf9D+D,SAAA,SAAA,Ge8DzC,Of9DyC,Ge+D/D,Cf/D+D,SAAA,WAAA,Ge+DvC,Sf/DuC,GegE/D,CfhE+D,SAAA,WAAA,GegEvC,SfhEuC,GAAA,OAAA;AAoD9B,KegBvB,UfhBuB,CAAA,UegBF,QfhBE,CAAA,GegBU,CfhBV,CAAA,QAAA,CAAA,CAAA,MAAA,CAAA,CAAA,MAAA,CAAA;AAAR,KeiBf,WfjBe,CAAA,UeiBO,QfjBP,EAAA,WAAA,MAAA,CAAA,GeiBsC,OfjBtC,CeiB8C,CfjB9C,CAAA,QAAA,CAAA,CAAA,MAAA,CAAA,EAAA;MAOwC,EeUmC,EfVnC;;AA8EpD,KenEH,SfmEG,CAAA,UenEiB,QfmEjB,EAAA,WAAA,MAAA,CAAA,GenEgD,WfmEhD,CenE4D,CfmE5D,EenE+D,EfmE/D,CAAA,CAAA,SAAA,CAAA;AAAR,KelEK,WfkEL,CAAA,UelE2B,QfkE3B,EAAA,WAAA,MAAA,CAAA,GelE0D,SfkE1D,CelEoE,CfkEpE,EelEuE,EfkEvE,CAAA,CAAA,MAAA,CAAA,CAAA,MAAA,CAAA;Ke/DF,kBfqFiC,CAAA,UerFJ,QfqFI,CAAA,GerFQ,CfqFR,CAAA,aAAA,CAAA,S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EY+hBiC,EZ/hBjC,CAAA;EACb,SAAA,EAAA,CAAA,IAAa,CAAA,EY+hBJ,aZ/hBI,CY+hBU,WZ/hBV,CY+hBsB,CZ/hBtB,EY+hByB,EZ/hBzB,CAAA,CAAA,EAAA,GY+hBkC,WZ/hBlC,CY+hB8C,CZ/hB9C,EY+hBiD,EZ/hBjD,CAAA;EAKb,KAAA,EAAA,GAAO,GY2hBJ,UZ3hBI,CY2hBO,MZ3hBP,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;AACnB;AACY,UY4hBK,WZ5hBC,CAAA,UY4hBqB,QZ5hBrB,EAAA,WAAA,MAAA,CAAA,CAAA;EACN,KAAA,EAAI,CAAA,KAAA,EY4hBC,aZ5hBD,CY4hBe,CZ5hBf,EY4hBkB,EZ5hBlB,CAAA,EAAA,GY4hB0B,WZ5hB1B,CY4hBsC,CZ5hBtC,EY4hByC,EZ5hBzC,CAAA;EAKJ,OAAA,EAAA,CAAA,EAAS,EYwhBL,eZxhBK,CYwhBW,CZxhBX,EYwhBc,EZxhBd,CAAA,EAAA,GYwhBsB,WZxhBtB,CYwhBkC,CZxhBlC,EYwhBqC,EZxhBrC,CAAA;EAKT,SAAA,EAAA,CAAA,IAAU,CAAA,EYohBD,aZphBC,CYohBa,WZphBb,CYohByB,CZphBzB,EYohB4B,EZphB5B,CAAA,CAAA,EAAA,GYohBqC,WZphBrC,CYohBiD,CZphBjD,EYohBoD,EZphBpD,CAAA;EACV,KAAA,EAAA,GAAA,GYohBG,UZphBO,CYohBI,MZphBJ,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;AACtB;AACY,iBYirCI,gBZjrCW,CAAA,UYirCgB,QZjrChB,CAAA,CAAA,MAAA,EYirCkC,CZjrClC,CAAA,EYirCsC,UZjrCtC,CYirCiD,CZjrCjD,CAAA"}
|
|
1
|
+
{"version":3,"file":"centia-io-sdk.d.ts","names":[],"sources":["../src/util/utils.ts","../src/services/gc2.services.ts","../src/CodeFlow.ts","../src/PasswordFlow.ts","../src/types/pgTypes.ts","../src/Sql.ts","../src/Rpc.ts","../src/Meta.ts","../src/Status.ts","../src/Claims.ts","../src/Users.ts","../src/Ws.ts","../src/Stats.ts","../src/Tables.ts","../src/Api.ts","../src/SignUp.ts","../src/SqlBuilder.ts"],"sourcesContent":[],"mappings":"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SAAA,QAAA,Ge4CR,Yf5CQ,Ge6CzB,Cf7CyB,SAAA,WAAA,Ge6CD,ef7CC,Ge8CrB,Cf9CqB,SAAA,aAAA,Ge8CK,iBf9CL,Ge+CjB,Cf/CiB,SAAA,UAAA,Ge+CM,af/CN,GeiDb,CfjDa,SAAA,OAAA,GeiDO,KfjDP,GekDT,CflDS,SAAA,MAAA,GekDU,IflDV,GemDL,CfnDK,SAAA,MAAA,GemDc,IfnDd,GeoDD,CfpDC,SAAA,KAAA,GeoDiB,GfpDjB,GeqDG,CfrDH,SAAA,MAAA,GeqDsB,IfrDtB,GesDO,CftDP,SAAA,SAAA,GesD6B,OftD7B,GeuDW,CfvDX,SAAA,QAAA,GeuDgC,MfvDhC,GeyDe,CfzDf,SAAA,WAAA,GeyDuC,SfzDvC,Ge0DmB,Cf1DnB,SAAA,WAAA,Ge0D2C,Sf1D3C,Ge2DuB,Cf3DvB,SAAA,UAAA,Ge2D8C,Qf3D9C,Ge4D2B,Cf5D3B,SAAA,SAAA,Ge4DiD,Of5DjD,Ge6D+B,Cf7D/B,SAAA,WAAA,Ge6DuD,Sf7DvD,Ge8DmC,Cf9DnC,SAAA,WAAA,Ge8D2D,Sf9D3D,GAAA,MAAA;AAoD9B,KecvB,UfduB,CAAA,UecF,QfdE,CAAA,GecU,CfdV,CAAA,QAAA,CAAA,CAAA,MAAA,CAAA,CAAA,MAAA,CAAA;AAAR,Keef,Wffe,CAAA,UeeO,QffP,EAAA,WAAA,MAAA,CAAA,GeesC,OfftC,Cee8C,Cff9C,CAAA,QAAA,CAAA,CAAA,MAAA,CAAA,EAAA;MAOwC,EeQmC,EfRnC;;AA8EpD,KerEH,SfqEG,CAAA,UerEiB,QfqEjB,EAAA,WAAA,MAAA,CAAA,GerEgD,WfqEhD,CerE4D,CfqE5D,EerE+D,EfqE/D,CAAA,CAAA,SAAA,CAAA;AAAR,KepEK,WfoEL,CAAA,UepE2B,QfoE3B,EAAA,WAAA,MAAA,CAAA,GepE0D,SfoE1D,CepEoE,CfoEpE,EepEuE,EfoEvE,CAAA,CAAA,MAAA,CAAA,CAAA,MAAA,CAAA;KejEF,kBfuFiC,CAAA,UevFJ,QfuFI,CAAA,GevFQ,CfuFR,CAAA,aAAA,CAAA,SAAA,SAAA,GAAA,EAAA,GevFkD,CfuFlD,CAAA,aAAA,CAAA,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AA,GYoiB0B,WZpiB1B,CYoiBsC,CZpiBtC,EYoiByC,EZpiBzC,CAAA;EAMrB,KAAA,EAAA,GAAA,GY+hBG,UZ/hBU,CY+hBC,MZ/hBD,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;AACzB;AAKY,UY4hBK,WZ5hBE,CAAA,UY4hBoB,QZ5hBpB,EAAA,WAAA,MAAA,CAAA,CAAA;EACP,KAAA,EAAI,CAAA,KAAA,EY4hBC,aZ5hBD,CY4hBe,CZ5hBf,EY4hBkB,EZ5hBlB,CAAA,EAAA,GY4hB0B,WZ5hB1B,CY4hBsC,CZ5hBtC,EY4hByC,EZ5hBzC,CAAA;EACJ,OAAA,EAAM,CAAA,EAAA,EY4hBF,eZ5hBE,CY4hBc,CZ5hBd,EY4hBiB,EZ5hBjB,CAAA,EAAA,GY4hByB,WZ5hBzB,CY4hBqC,CZ5hBrC,EY4hBwC,EZ5hBxC,CAAA;EACN,SAAI,EAAA,CAAA,IAAA,CAAA,EY4hBK,aZ5hBL,CY4hBmB,WZ5hBnB,CY4hB+B,CZ5hB/B,EY4hBkC,EZ5hBlC,CAAA,CAAA,EAAA,GY4hB2C,WZ5hB3C,CY4hBuD,CZ5hBvD,EY4hB0D,EZ5hB1D,CAAA;EAKJ,KAAA,EAAA,GAAA,GYwhBG,UZxhBM,CYwhBK,MZxhBL,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;AAKrB;AACY,UYqhBK,WZrhBK,CAAA,UYqhBiB,QZrhBjB,EAAA,WAAA,MAAA,CAAA,CAAA;EACV,KAAA,EAAA,CAAA,KAAA,EYqhBK,aZrhBO,CYqhBO,CZrhBP,EYqhBU,EZrhBV,CAAA,EAAA,GYqhBkB,WZrhBlB,CYqhB8B,CZrhB9B,EYqhBiC,EZrhBjC,CAAA;EACZ,OAAA,EAAA,CAAA,EAAA,EYqhBI,eZrhBW,CYqhBK,CZrhBL,EYqhBQ,EZrhBR,CAAA,EAAA,GYqhBgB,WZrhBhB,CYqhB4B,CZrhB5B,EYqhB+B,EZrhB/B,CAAA;EACf,SAAA,EAAA,CAAA,IAAiB,CAAjB,EYqhBS,aZrhBQ,CYqhBM,WZrhBN,CYqhBkB,CZrhBlB,EYqhBqB,EZrhBrB,CAAA,CAAA,EAAA,GYqhB8B,WZrhB9B,CYqhB0C,CZrhB1C,EYqhB6C,EZrhB7C,CAAA;EAEZ,KAAA,EAAA,GAAA,GYohBF,UZphBe,CYohBJ,MZphBI,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;AAY9B;AACiB,iBYsqCD,gBZtqCK,CAAA,UYsqCsB,QZtqCtB,CAAA,CAAA,MAAA,EYsqCwC,CZtqCxC,CAAA,EYsqC4C,UZtqC5C,CYsqCuD,CZtqCvD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"centia-io-sdk.js","names":["decoded: string","cached: StorageLike | null","g: any","g","str: string | null","tokens: any","options: any","headers: Record<string, string>","payload: string","e: any","redirectUri: string","url: string","e: any","headers: headers","request: RequestInit","getHeaders","res: any","get","make","get","make","get","make","get","make","ws: WebSocket","get","make","get","make","isPlainObject","data","request: RpcRequest","params: Record<string, unknown>","type_hints: Record<string, string>","parts: string[]","selectParts: string[]","cols","p","andParts: string[]","orGroupSql: string[]","orParts: string[]","orders: string[]","sources: TableDef[]","pickedSource: TableDef | null","pairs: { left: string; right: string }[] | null","cols: string[]","vals: string[]","setParts: string[]","whereClauses: string[]"],"sources":["../src/util/jwt-decode.ts","../src/util/storage.ts","../src/util/utils.ts","../src/services/gc2.services.ts","../src/CodeFlow.ts","../src/PasswordFlow.ts","../src/util/request-headers.ts","../src/util/make-request.ts","../src/util/get-response.ts","../src/Sql.ts","../src/Rpc.ts","../src/Meta.ts","../src/Status.ts","../src/Claims.ts","../src/Users.ts","../src/Ws.ts","../src/Stats.ts","../src/Tables.ts","../src/Api.ts","../src/SignUp.ts","../src/SqlBuilder.ts"],"sourcesContent":["/**\r\n * The MIT License (MIT)\r\n *\r\n * Copyright (c) 2015 Auth0, Inc. <support@auth0.com> (http://auth0.com)\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n */\r\n\r\nexport interface JwtDecodeOptions {\r\n header?: boolean;\r\n}\r\n\r\nexport interface JwtHeader {\r\n typ?: string;\r\n alg?: string;\r\n kid?: string;\r\n}\r\n\r\nexport interface JwtPayload {\r\n iss?: string;\r\n sub?: string;\r\n aud?: string[] | string;\r\n exp?: number;\r\n nbf?: number;\r\n iat?: number;\r\n jti?: string;\r\n}\r\n\r\nexport class InvalidTokenError extends Error {}\r\n\r\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\r\n\r\nfunction b64DecodeUnicode(str: string) {\r\n return decodeURIComponent(\r\n atob(str).replace(/(.)/g, (m, p) => {\r\n let code = (p as string).charCodeAt(0).toString(16).toUpperCase();\r\n if (code.length < 2) {\r\n code = \"0\" + code;\r\n }\r\n return \"%\" + code;\r\n }),\r\n );\r\n}\r\n\r\nfunction base64UrlDecode(str: string) {\r\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (output.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n output += \"==\";\r\n break;\r\n case 3:\r\n output += \"=\";\r\n break;\r\n default:\r\n throw new Error(\"base64 string is not of the correct length\");\r\n }\r\n\r\n try {\r\n return b64DecodeUnicode(output);\r\n } catch (err) {\r\n return atob(output);\r\n }\r\n}\r\n\r\nexport function jwtDecode<T = JwtHeader>(\r\n token: string,\r\n options: JwtDecodeOptions & { header: true },\r\n): T;\r\nexport function jwtDecode<T = JwtPayload>(token: string, options?: JwtDecodeOptions): T;\r\nexport function jwtDecode<T = JwtHeader | JwtPayload>(\r\n token: string,\r\n options?: JwtDecodeOptions,\r\n): T {\r\n if (typeof token !== \"string\") {\r\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\r\n }\r\n\r\n options ||= {};\r\n\r\n const pos = options.header === true ? 0 : 1;\r\n const part = token.split(\".\")[pos];\r\n\r\n if (typeof part !== \"string\") {\r\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\r\n }\r\n\r\n let decoded: string;\r\n try {\r\n decoded = base64UrlDecode(part);\r\n } catch (e) {\r\n throw new InvalidTokenError(\r\n `Invalid token specified: invalid base64 for part #${pos + 1} (${(e as Error).message})`,\r\n );\r\n }\r\n\r\n try {\r\n return JSON.parse(decoded) as T;\r\n } catch (e) {\r\n throw new InvalidTokenError(\r\n `Invalid token specified: invalid json for part #${pos + 1} (${(e as Error).message})`,\r\n );\r\n }\r\n}\r\n","export interface StorageLike {\r\n getItem(key: string): string | null\r\n setItem(key: string, value: string): void\r\n removeItem(key: string): void\r\n}\r\n\r\nclass MemoryStorage implements StorageLike {\r\n private store = new Map<string, string>()\r\n\r\n getItem(key: string): string | null {\r\n return this.store.has(key) ? this.store.get(key)! : null\r\n }\r\n\r\n setItem(key: string, value: string): void {\r\n this.store.set(key, String(value))\r\n }\r\n\r\n removeItem(key: string): void {\r\n this.store.delete(key)\r\n }\r\n}\r\n\r\nlet cached: StorageLike | null = null\r\n\r\nexport function getStorage(): StorageLike {\r\n if (cached) return cached\r\n try {\r\n const g: any = typeof globalThis !== 'undefined' ? (globalThis as any) : (window as any)\r\n if (g && g.localStorage && typeof g.localStorage.getItem === 'function') {\r\n cached = g.localStorage as StorageLike\r\n return cached\r\n }\r\n } catch (e) {\r\n // ignore and fall back to memory storage\r\n }\r\n const g: any = typeof globalThis !== 'undefined' ? (globalThis as any) : {}\r\n if (!g.__gc2_memory_storage) {\r\n g.__gc2_memory_storage = new MemoryStorage()\r\n }\r\n cached = g.__gc2_memory_storage as StorageLike\r\n return cached\r\n}\r\n","import {jwtDecode} from './jwt-decode'\r\nimport {Gc2Service} from \"../services/gc2.services\"\r\nimport {getStorage} from './storage'\r\n\r\nexport type Tokens = {\r\n accessToken: string\r\n refreshToken: string\r\n idToken?: string\r\n}\r\n\r\nexport type Options = {\r\n host: string\r\n wsHost?: string\r\n tokenUri?: string\r\n authUri?: string\r\n logoutUri?: string\r\n deviceUri?: string\r\n scope?: string\r\n clientId: string\r\n}\r\n\r\nexport type CodeFlowOptions = Options & {\r\n redirectUri: string\r\n}\r\n\r\nexport type PasswordFlowOptions = Options & {\r\n username: string\r\n password: string\r\n database: string\r\n}\r\n\r\nexport type SignUpOptions = Options & {\r\n host: string\r\n clientId: string\r\n parentDb: string\r\n redirectUri: string\r\n}\r\n\r\nexport type WsOptions = {\r\n host: string\r\n callBack: Function\r\n rel?: string\r\n wsClient?: unknown\r\n}\r\n\r\nexport type GetDeviceCodeResponse = {\r\n device_code: string\r\n user_code: string\r\n verification_uri: string\r\n verification_uri_complete?: string\r\n expires_in: number\r\n interval: number\r\n}\r\n\r\nexport type GetTokenResponse = {\r\n access_token: string\r\n expires_in: number\r\n refresh_expires_in: number\r\n refresh_token: string\r\n id_token?: string\r\n token_type: string\r\n 'not-before-policy': number\r\n session_state: string\r\n scope: string\r\n}\r\n\r\n\r\nexport const generatePkceChallenge = async () => {\r\n\r\n const generateRandomString = () => {\r\n const array = new Uint32Array(28);\r\n crypto.getRandomValues(array);\r\n return Array.from(array, dec => ('0' + dec.toString(16)).substr(-2)).join('');\r\n }\r\n\r\n const sha256 = (plain: string | undefined) => {\r\n const encoder = new TextEncoder();\r\n const data = encoder.encode(plain);\r\n return crypto.subtle.digest('SHA-256', data);\r\n }\r\n\r\n const base64urlEncode = (str: ArrayBuffer) => {\r\n\r\n return btoa(String.fromCharCode.apply(null, [...new Uint8Array(str)]))\r\n .replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\r\n }\r\n\r\n async function pkceChallengeFromVerifier(v: string | undefined) {\r\n const hashed = await sha256(v);\r\n return base64urlEncode(hashed);\r\n }\r\n\r\n const {state, codeVerifier} = {\r\n state: generateRandomString(),\r\n codeVerifier: generateRandomString(),\r\n };\r\n const codeChallenge = await pkceChallengeFromVerifier(codeVerifier);\r\n\r\n return {\r\n state,\r\n codeVerifier,\r\n codeChallenge,\r\n }\r\n}\r\n\r\nexport const isTokenExpired = (token: string): boolean => {\r\n let isJwtExpired = false\r\n const {exp} = jwtDecode(token)\r\n const currentTime = new Date().getTime() / 1000\r\n\r\n if (exp) {\r\n if (currentTime > exp) isJwtExpired = true\r\n }\r\n return isJwtExpired\r\n}\r\n\r\nexport const claims = (token: string): any => {\r\n return jwtDecode(token)\r\n}\r\n\r\nexport const passwordIsStrongEnough = (password: string, allowNull: boolean = false) => {\r\n const message = 'Entered password is too weak'\r\n if (password === '' && allowNull) return true\r\n if (password.length < 8) return message\r\n if (!(/[A-Z]/.test(password))) return message\r\n if (!(/[a-z]/.test(password))) return message\r\n if (!(/\\d/.test(password))) return message\r\n return true\r\n}\r\n\r\nexport const isLogin = async (gc2: Gc2Service): Promise<boolean> => {\r\n const {accessToken, refreshToken} = getTokens()\r\n if (!accessToken && !refreshToken) {\r\n return false\r\n }\r\n if (!accessToken || (accessToken && isTokenExpired(accessToken))) {\r\n if (refreshToken && isTokenExpired(refreshToken)) {\r\n clearTokens()\r\n clearOptions()\r\n throw new Error('Refresh token has expired. Please login again.')\r\n }\r\n if (refreshToken) {\r\n try {\r\n const data = await gc2.getRefreshToken(refreshToken)\r\n setTokens({accessToken: data.access_token, refreshToken, idToken: data?.id_token})\r\n console.log('Access token refreshed')\r\n } catch (e) {\r\n throw new Error('Could not get refresh token.')\r\n }\r\n }\r\n }\r\n return true\r\n}\r\n\r\nexport const setTokens = (tokens: Tokens): void => {\r\n getStorage().setItem('gc2_tokens', JSON.stringify({\r\n 'accessToken': tokens.accessToken,\r\n 'refreshToken': tokens.refreshToken,\r\n 'idToken': tokens?.idToken || ''\r\n }\r\n )\r\n )\r\n}\r\n\r\nexport const getTokens = (): Tokens => {\r\n const str: string | null = getStorage().getItem('gc2_tokens')\r\n const tokens: any = str ? JSON.parse(str) : {}\r\n return {\r\n accessToken: tokens?.accessToken || '',\r\n refreshToken: tokens?.refreshToken || '',\r\n idToken: tokens?.idToken || '',\r\n }\r\n}\r\n\r\nexport const setOptions = (options: CodeFlowOptions): void => {\r\n getStorage().setItem('gc2_options', JSON.stringify({\r\n 'clientId': options.clientId,\r\n 'host': options.host,\r\n 'redirectUri': options.redirectUri\r\n }\r\n )\r\n )\r\n}\r\n\r\nexport const getOptions = (): CodeFlowOptions => {\r\n const str: string | null = getStorage().getItem('gc2_options')\r\n const options: any = str ? JSON.parse(str) : {}\r\n return {\r\n clientId: options?.clientId || '',\r\n host: options?.host || '',\r\n redirectUri: options?.redirectUri || '',\r\n }\r\n}\r\n\r\nexport const base64UrlEncodeString = (str: string): string => {\r\n return btoa(new TextEncoder().encode(str).reduce((acc, byte) => acc + String.fromCharCode(byte), ''))\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=+$/, '');\r\n}\r\n\r\nexport const clearTokens = (): void => {\r\n getStorage().removeItem('gc2_tokens')\r\n}\r\n\r\nexport const clearOptions = (): void => {\r\n getStorage().removeItem('gc2_options')\r\n}\r\n\r\nexport const getNonce = (): string|null => {\r\n return <string>getStorage().getItem('gc2_nonce')\r\n}\r\nexport const clearNonce = (): void => {\r\n getStorage().removeItem('gc2_nonce')\r\n}\r\n\r\n","import {CodeFlowOptions, GetDeviceCodeResponse, getNonce, GetTokenResponse, PasswordFlowOptions, SignUpOptions} from '../util/utils';\r\n\r\nexport class Gc2Service {\r\n private readonly options: CodeFlowOptions | PasswordFlowOptions;\r\n private readonly host: string;\r\n\r\n constructor(options: CodeFlowOptions | PasswordFlowOptions | SignUpOptions) {\r\n this.options = options;\r\n this.host = options.host;\r\n }\r\n\r\n // Type guards to check if options is CodeFlowOptions or PasswordFlowOptions\r\n private isCodeFlowOptions(options: CodeFlowOptions | PasswordFlowOptions | SignUpOptions): options is CodeFlowOptions {\r\n return 'redirectUri' in options;\r\n }\r\n private isPasswordFlowOptions(options: CodeFlowOptions | PasswordFlowOptions| SignUpOptions): options is PasswordFlowOptions {\r\n return 'username' in options;\r\n }\r\n private isSignUpOptions(options: CodeFlowOptions | PasswordFlowOptions| SignUpOptions): options is SignUpOptions {\r\n return 'parentDb' in options;\r\n }\r\n\r\n private buildUrl(path: string): string {\r\n if (path.startsWith('http://') || path.startsWith('https://')) {\r\n return path;\r\n }\r\n return `${this.host}${path}`;\r\n }\r\n\r\n private async request(\r\n url: string,\r\n method: 'GET' | 'POST',\r\n body?: any,\r\n contentType: 'application/json' | 'application/x-www-form-urlencoded' = 'application/json'\r\n ): Promise<any> {\r\n const headers: Record<string, string> = {'Content-Type': contentType};\r\n let payload: string;\r\n\r\n if (contentType === 'application/json') {\r\n payload = JSON.stringify(body);\r\n } else {\r\n payload = new URLSearchParams(body).toString();\r\n }\r\n\r\n const response = await fetch(url, {\r\n method,\r\n headers,\r\n body: payload,\r\n });\r\n\r\n if (!response.ok) {\r\n const errText = await response.text();\r\n throw new Error(`HTTP error ${response.status}: ${errText}`);\r\n }\r\n\r\n return response.json();\r\n }\r\n\r\n async getDeviceCode(): Promise<GetDeviceCodeResponse> {\r\n const path = this.options.deviceUri ?? `${this.host}/api/v4/oauth/device`;\r\n return this.request(this.buildUrl(path), 'POST', {\r\n client_id: this.options.clientId,\r\n });\r\n }\r\n\r\n async pollToken(deviceCode: string, interval: number): Promise<GetTokenResponse> {\r\n const path = this.options.tokenUri ?? `${this.host}/api/v4/oauth`;\r\n const getToken = async (): Promise<GetTokenResponse | null | string> => {\r\n try {\r\n return await this.request(\r\n this.buildUrl(path),\r\n 'POST',\r\n {\r\n client_id: this.options.clientId,\r\n device_code: deviceCode,\r\n grant_type: 'device_code',\r\n }\r\n );\r\n } catch (e: any) {\r\n const err = JSON.parse(e.message.split(': ')[1]);\r\n if (err.error === 'authorization_pending') {\r\n return null;\r\n }\r\n return err.error_description;\r\n }\r\n };\r\n\r\n let response = await getToken();\r\n while (response === null) {\r\n await new Promise(resolve => setTimeout(resolve, interval * 1100));\r\n response = await getToken();\r\n }\r\n\r\n if (typeof response === 'string') {\r\n throw new Error(response);\r\n }\r\n\r\n return response;\r\n }\r\n\r\n getAuthorizationCodeURL(codeChallenge: string, state: string): string {\r\n let redirectUri: string\r\n if (this.isCodeFlowOptions(this.options)) {\r\n redirectUri = this.options.redirectUri\r\n } else {\r\n throw new Error('CodeFlow options required for this operation')\r\n }\r\n const base = this.options.authUri ?? `${this.host}/auth/`\r\n const params = new URLSearchParams()\r\n // Get nonce from local storage if it exists\r\n const nonce = getNonce()\r\n // Add parameters conditionally\r\n params.set('response_type', 'code');\r\n params.set('client_id', this.options.clientId);\r\n params.set('redirect_uri', redirectUri);\r\n params.set('state', state);\r\n params.set('code_challenge', codeChallenge);\r\n params.set('code_challenge_method', 'S256');\r\n if (nonce) {\r\n params.set('nonce', nonce);\r\n }\r\n // Only add scope if it's defined\r\n if (this.options.scope) {\r\n params.set('scope', this.options.scope);\r\n }\r\n return `${base}?${params.toString()}`;\r\n }\r\n\r\n getSignUpURL(): string {\r\n if (!this.isSignUpOptions(this.options)) {\r\n throw new Error('CodeFlow options required for this operation')\r\n }\r\n const base = this.options.authUri ?? `${this.host}/signup/`\r\n const params = new URLSearchParams()\r\n params.set('client_id', this.options.clientId)\r\n params.set('parentdb', this.options.parentDb)\r\n params.set('redirect_uri', this.options.redirectUri)\r\n return `${base}?${params.toString()}`;\r\n }\r\n\r\n async getAuthorizationCodeToken(\r\n code: string | string[],\r\n codeVerifier: string | null\r\n ): Promise<GetTokenResponse> {\r\n let redirectUri: string\r\n if (this.isCodeFlowOptions(this.options)) {\r\n redirectUri = this.options.redirectUri\r\n } else {\r\n throw new Error('CodeFlow options required for this operation')\r\n }\r\n const path = this.options.tokenUri ?? `${this.host}/api/v4/oauth`;\r\n return this.request(\r\n this.buildUrl(path),\r\n 'POST',\r\n {\r\n client_id: this.options.clientId,\r\n redirect_uri: redirectUri,\r\n grant_type: 'authorization_code',\r\n code,\r\n code_verifier: codeVerifier,\r\n },\r\n 'application/x-www-form-urlencoded'\r\n );\r\n }\r\n\r\n async getPasswordToken(): Promise<GetTokenResponse> {\r\n let username, password, database\r\n if (this.isPasswordFlowOptions(this.options)) {\r\n username = this.options.username\r\n password = this.options.password\r\n database = this.options.database\r\n } else {\r\n throw new Error('PasswordFlow options required for this operation')\r\n }\r\n const path = `${this.host}/api/v4/oauth`;\r\n return this.request(\r\n this.buildUrl(path),\r\n 'POST',\r\n {\r\n client_id: this.options.clientId,\r\n grant_type: 'password',\r\n username,\r\n password,\r\n database,\r\n }\r\n );\r\n }\r\n\r\n async getRefreshToken(token: string): Promise<GetTokenResponse> {\r\n const path = this.options.tokenUri ?? `${this.host}/api/v4/oauth`;\r\n return this.request(\r\n this.buildUrl(path),\r\n 'POST',\r\n {\r\n client_id: this.options.clientId,\r\n grant_type: 'refresh_token',\r\n refresh_token: token,\r\n }\r\n );\r\n }\r\n\r\n getSignOutURL(): string {\r\n let redirectUri: string\r\n if (this.isCodeFlowOptions(this.options)) {\r\n redirectUri = this.options.redirectUri\r\n } else {\r\n throw new Error('CodeFlow options required for this operation')\r\n }\r\n const params = new URLSearchParams({\r\n redirect_uri: redirectUri,\r\n });\r\n return this.options.logoutUri ?? `${this.host}/signout?${params.toString()}`;\r\n }\r\n}\r\n","import {Gc2Service} from './services/gc2.services'\r\nimport {generatePkceChallenge, isLogin, setTokens, setOptions, clearNonce} from './util/utils'\r\nimport {CodeFlowOptions, clearTokens, clearOptions} from \"./util/utils\";\r\nimport {getStorage} from './util/storage'\r\n\r\nexport default class CodeFlow {\r\n options: CodeFlowOptions\r\n service: Gc2Service\r\n\r\n constructor(options: CodeFlowOptions) {\r\n this.options = options\r\n this.service = new Gc2Service(options)\r\n }\r\n\r\n public async redirectHandle(): Promise<boolean> {\r\n const url: string = window.location.search\r\n const queryParams = new URLSearchParams(url)\r\n\r\n const error = queryParams.get('error')\r\n if (error) {\r\n throw new Error(`Failed to redirect: ${url}`)\r\n }\r\n\r\n const code = queryParams.get('code')\r\n if (code) {\r\n const state = queryParams.get('state')\r\n if (state !== getStorage().getItem('state')) {\r\n throw new Error('Possible CSRF attack. Aborting login!')\r\n }\r\n try {\r\n const {\r\n access_token,\r\n refresh_token,\r\n id_token,\r\n } = await this.service.getAuthorizationCodeToken(code, getStorage().getItem('codeVerifier'))\r\n setTokens({accessToken: access_token, refreshToken: refresh_token, idToken: id_token})\r\n setOptions({\r\n clientId: this.options.clientId,\r\n host: this.options.host,\r\n redirectUri: this.options.redirectUri\r\n })\r\n getStorage().removeItem('state')\r\n getStorage().removeItem('codeVerifier')\r\n\r\n // Remove state and code from the redirect url\r\n const params = new URLSearchParams(window.location.search);\r\n params.delete('code')\r\n params.delete('state')\r\n const loc = window.location\r\n const newUrl = loc.origin + loc.pathname + (params.size > 0 ? '?' + params.toString() : '')\r\n history.pushState(null, '', newUrl);\r\n\r\n return Promise.resolve(true)\r\n\r\n } catch (e: any) {\r\n throw new Error(e.message)\r\n }\r\n }\r\n return await isLogin(this.service);\r\n }\r\n\r\n public async signIn(): Promise<void> {\r\n const {state, codeVerifier, codeChallenge} = await generatePkceChallenge()\r\n getStorage().setItem(\"state\", state)\r\n getStorage().setItem(\"codeVerifier\", codeVerifier)\r\n window.location.assign(this.service.getAuthorizationCodeURL(\r\n codeChallenge,\r\n state,\r\n ))\r\n }\r\n\r\n public signOut(): void {\r\n this.clear()\r\n window.location.assign(this.service.getSignOutURL())\r\n }\r\n\r\n public clear(): void {\r\n clearTokens()\r\n clearOptions()\r\n clearNonce()\r\n }\r\n}\r\n","import {Gc2Service,} from './services/gc2.services'\r\nimport {isLogin, setTokens, setOptions, PasswordFlowOptions, clearTokens, clearOptions, clearNonce} from './util/utils'\r\n\r\nexport default class PasswordFlow {\r\n options: PasswordFlowOptions\r\n service: Gc2Service\r\n\r\n constructor(options: PasswordFlowOptions) {\r\n this.options = options\r\n this.service = new Gc2Service(options)\r\n }\r\n\r\n public async signIn(): Promise<void> {\r\n const {access_token, refresh_token} = await this.service.getPasswordToken()\r\n setTokens({accessToken: access_token, refreshToken: refresh_token})\r\n setOptions({\r\n clientId: this.options.clientId,\r\n host: this.options.host,\r\n redirectUri: ''\r\n })\r\n }\r\n\r\n public signOut(): void {\r\n this.clear()\r\n }\r\n\r\n public clear(): void {\r\n clearTokens()\r\n clearOptions()\r\n clearNonce()\r\n }\r\n}\r\n","/**\r\n * @author Martin Høgh <mh@mapcentia.com>\r\n * @copyright 2013-2024 MapCentia ApS\r\n * @license http://www.gnu.org/licenses/#AGPL GNU AFFERO GENERAL PUBLIC LICENSE 3\r\n *\r\n */\r\n\r\nimport {getOptions, getTokens, isLogin} from \"./utils\";\r\nimport {Gc2Service} from \"../services/gc2.services\";\r\n\r\nconst getHeaders = async (contentType: string|null = 'application/json'): Promise<any>=> {\r\n type headers = {\r\n Accept: string,\r\n Cookie: string,\r\n Authorization: string|null,\r\n 'Content-Type'?: string\r\n }\r\n\r\n const options = getOptions()\r\n const service = new Gc2Service(options)\r\n\r\n // We check is token needs refreshing\r\n if (!await isLogin(service)) {\r\n return Promise.reject('Is not logged in')\r\n }\r\n\r\n const {accessToken} = getTokens()\r\n\r\n const headers: headers = {\r\n Accept: 'application/json',\r\n Cookie: 'XDEBUG_SESSION=XDEBUG_ECLIPSE',\r\n Authorization: accessToken ? 'Bearer ' + accessToken : null,\r\n }\r\n if (contentType) {\r\n headers['Content-Type'] = contentType\r\n }\r\n return headers\r\n}\r\nexport default getHeaders\r\n\r\n","/**\r\n * @author Martin Høgh <mh@mapcentia.com>\r\n * @copyright 2013-2024 MapCentia ApS\r\n * @license http://www.gnu.org/licenses/#AGPL GNU AFFERO GENERAL PUBLIC LICENSE 3\r\n *\r\n */\r\n\r\nimport getHeaders from './request-headers'\r\nimport Method from '../common/http-verbs'\r\nimport {getOptions} from './utils'\r\n\r\nexport const make = async (version: string, resource: string, method: Method, payload?: any, contentType: string | null = 'application/json'): Promise<any> => {\r\n const options = getOptions()\r\n const headers = await getHeaders(contentType)\r\n\r\n let request: RequestInit = {\r\n method: method,\r\n headers: headers,\r\n redirect: 'manual'\r\n }\r\n if (payload) {\r\n request.body = contentType === 'application/json' ? JSON.stringify(payload) : payload\r\n }\r\n return await fetch(options.host + `/api/v${version}/${resource}`, request)\r\n}\r\nexport default make\r\n","const get = async (response: Response, expectedCode: number): Promise<any> => {\r\n let res: any = null\r\n let bodyText = ''\r\n\r\n // Read the body only once as text. This avoids \"body used already\" with node-fetch.\r\n try {\r\n // Even for 204/303, text() is safe and will return '' for empty bodies\r\n bodyText = await response.text()\r\n } catch (e) {\r\n // Ignore body read errors; we'll proceed with null/empty body\r\n }\r\n\r\n // Try to parse JSON if there is a body\r\n if (bodyText) {\r\n try {\r\n res = JSON.parse(bodyText)\r\n } catch (e) {\r\n // Not JSON; keep res as null and use bodyText for error messages\r\n }\r\n }\r\n\r\n if (response.status !== expectedCode) {\r\n const msg = (res && (res.message || res.error)) || bodyText || `Unexpected status ${response.status}`\r\n throw new Error(msg)\r\n }\r\n\r\n // For 204/303, res will be null (no body), which is fine for callers expecting no content\r\n return res\r\n}\r\n\r\nexport default get\r\n","import make from \"./util/make-request\";\r\nimport get from \"./util/get-response\";\r\nimport {SqlRequest, SQLResponse, DataRow, TypedSqlRequest} from \"./types/pgTypes\";\r\n\r\nexport default class Sql {\r\n // Overload for typed request: preserves row typing\r\n async exec<R extends DataRow>(request: TypedSqlRequest<R>): Promise<SQLResponse<R>>;\r\n // Fallback overload: plain SqlRequest returns generic DataRow\r\n async exec(request: SqlRequest): Promise<SQLResponse<DataRow>>;\r\n // Implementation\r\n async exec(request: SqlRequest): Promise<SQLResponse<any>> {\r\n const response = await make('4', `sql`, 'POST', request)\r\n return await get(response, 200)\r\n }\r\n}\r\n","import make from \"./util/make-request\";\r\nimport get from \"./util/get-response\";\r\nimport {RpcRequest, RpcResponse} from \"./types/pgTypes\";\r\n\r\nexport default class Rpc {\r\n async call(request: RpcRequest): Promise<RpcResponse> {\r\n const response = await make('4', `call`, 'POST', request)\r\n return await get(response, 200)\r\n }\r\n}\r\n","import make from \"./util/make-request\";\r\nimport get from \"./util/get-response\";\r\n\r\nexport default class Meta {\r\n async query(rel: string): Promise<any> {\r\n const response = await make('3', `meta/${rel}`, 'GET', null)\r\n return await get(response, 200)\r\n }\r\n}\r\n","import {getTokens} from \"./util/utils\";\r\n\r\nexport default class Status {\r\n isAuth() {\r\n const tokens = getTokens()\r\n return !(!tokens.accessToken && !tokens.refreshToken);\r\n }\r\n\r\n getTokens() {\r\n return getTokens()\r\n }\r\n}\r\n","import {claims, getTokens} from \"./util/utils\";\r\n\r\nexport default class Claims {\r\n get() {\r\n const tokens = getTokens().accessToken\r\n return claims(tokens);\r\n }\r\n}\r\n","import make from \"./util/make-request\";\r\nimport get from \"./util/get-response\";\r\n\r\nexport default class Users {\r\n async get(user: string): Promise<any> {\r\n const response = await make('4', `users/${user}`, 'GET', null)\r\n return await get(response, 200)\r\n }\r\n}\r\n","import {WsOptions, getTokens} from \"./util/utils\";\r\n\r\nexport default class Ws {\r\n private readonly options: WsOptions;\r\n\r\n constructor(options: WsOptions) {\r\n this.options = options;\r\n this.options.wsClient = this.options?.wsClient ?? WebSocket\r\n }\r\n\r\n connect(): void {\r\n const me = this;\r\n const {accessToken} = getTokens()\r\n\r\n const connect = () => {\r\n let queryString = `?token=` + accessToken\r\n if (this.options?.rel) {\r\n queryString = queryString + `&rel=` + this.options.rel\r\n }\r\n const WSClass = this.options.wsClient as any;\r\n const ws: WebSocket = new WSClass(\r\n this.options.host + `/` + queryString,\r\n );\r\n\r\n ws.onopen = function () {\r\n console.log('WebSocket connected!');\r\n };\r\n\r\n ws.onmessage = function (event: MessageEvent) {\r\n // Handle incoming messages\r\n me.options.callBack((event as any).data)\r\n };\r\n\r\n ws.onclose = function (event: CloseEvent) {\r\n if (accessToken !== '') {\r\n console.log('WebSocket closed, reconnecting in 3 seconds...', (event as any).reason);\r\n setTimeout(connect, 3000); // Try to reconnect\r\n }\r\n };\r\n\r\n ws.onerror = function (err: Event) {\r\n console.error('WebSocket error observed:', err);\r\n // Close the socket on error to ensure clean reconnection\r\n ws.close();\r\n };\r\n };\r\n\r\n // Start the connection\r\n if (accessToken !== '') {\r\n connect();\r\n }\r\n }\r\n}\r\n","import make from \"./util/make-request\";\r\nimport get from \"./util/get-response\";\r\n\r\nexport default class Stats {\r\n async get(): Promise<any> {\r\n const response = await make('4', `stats`, 'GET', null)\r\n return await get(response, 200)\r\n }\r\n}\r\n","import make from \"./util/make-request\";\r\nimport get from \"./util/get-response\";\r\n\r\nexport default class Tables {\r\n async get(schema: string, table: string): Promise<any> {\r\n const response = await make('4', `schemas/${encodeURIComponent(schema)}/tables/${encodeURIComponent(table)}`, 'GET', null)\r\n return await get(response, 200)\r\n }\r\n\r\n async create(schema: string, table: string, payload: any): Promise<any> {\r\n const response = await make('4', `schemas/${encodeURIComponent(schema)}/tables/${encodeURIComponent(table)}`, 'POST', payload)\r\n return await get(response, 200)\r\n }\r\n\r\n async patch(schema: string, table: string, payload: any): Promise<any> {\r\n const response = await make('4', `schemas/${encodeURIComponent(schema)}/tables/${encodeURIComponent(table)}`, 'PATCH', payload)\r\n return await get(response, 200)\r\n }\r\n\r\n async delete(schema: string, table: string): Promise<any> {\r\n const response = await make('4', `schemas/${encodeURIComponent(schema)}/tables/${encodeURIComponent(table)}`, 'DELETE', null)\r\n return await get(response, 204)\r\n }\r\n}\r\n","import Rpc from \"./Rpc\"\r\nimport {RpcRequest} from \"./types/pgTypes\"\r\n\r\ntype MethodsOf<T> = {\r\n [K in keyof T]: T[K] extends (...args: infer A) => infer R ? (...args: A) => R : never;\r\n};\r\n\r\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\r\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\r\n}\r\n\r\nfunction validateParamsForMethod(method: string, params: unknown): Record<string, unknown> | Array<Record<string, unknown>> {\r\n // Allow either a single plain object or an array of plain objects\r\n if (Array.isArray(params)) {\r\n const badIndex = params.findIndex(p => !isPlainObject(p));\r\n if (badIndex !== -1) {\r\n throw new TypeError(`createApi: Invalid argument at index ${badIndex} for RPC method \"${method}\". Expected a plain object.`);\r\n }\r\n return params as Array<Record<string, unknown>>;\r\n }\r\n if (params === undefined) {\r\n return {};\r\n }\r\n if (!isPlainObject(params)) {\r\n throw new TypeError(`createApi: Invalid argument for RPC method \"${method}\". Expected a plain object.`);\r\n }\r\n return params as Record<string, unknown>;\r\n}\r\n\r\nfunction extractDataFromResponse(method: string, res: any): any[] {\r\n if (!res || typeof res !== \"object\") {\r\n throw new TypeError(`createApi: Invalid RPC response for method \"${method}\". Expected an object.`);\r\n }\r\n if ((res as any).jsonrpc !== \"2.0\") {\r\n throw new TypeError(`createApi: Invalid RPC response for method \"${method}\". Missing or invalid jsonrpc version.`);\r\n }\r\n\r\n // Handle JSON-RPC error shape: { jsonrpc: \"2.0\", error: { code, message, data? }, id }\r\n const err = (res as any).error;\r\n if (err !== undefined) {\r\n if (!err || typeof err !== \"object\") {\r\n throw new TypeError(`createApi: Invalid RPC error for method \"${method}\". Expected 'error' to be an object.`);\r\n }\r\n const code = (err as any).code;\r\n const message = (err as any).message;\r\n const data = (err as any).data;\r\n const codeIsNum = typeof code === \"number\" && Number.isFinite(code);\r\n const msgIsStr = typeof message === \"string\" && message.length > 0;\r\n const details = msgIsStr ? message : \"Unknown error\";\r\n const e = new Error(`createApi: RPC error for method \"${method}\"${codeIsNum ? ` (${code})` : \"\"}: ${details}`);\r\n // Attach JSON-RPC specific properties for consumers to inspect\r\n ;(e as any).code = code;\r\n if (data !== undefined) (e as any).data = data;\r\n (e as any).method = method;\r\n (e as any).name = \"JsonRpcError\";\r\n throw e;\r\n }\r\n\r\n const result = (res as any).result;\r\n if (!result || typeof result !== \"object\") {\r\n throw new TypeError(`createApi: Invalid RPC response for method \"${method}\". Missing result object.`);\r\n }\r\n const data = (result as any).data;\r\n if (!Array.isArray(data)) {\r\n throw new TypeError(`createApi: Invalid RPC response for method \"${method}\". Expected result.data to be an array.`);\r\n }\r\n return data;\r\n}\r\n\r\n// Implementation signature (wide) — overloads above control the public typing\r\nasync function dispatch<K extends keyof any & string>(name: K, paramsLike: unknown): Promise<any> {\r\n if (typeof name !== \"string\" || name.length === 0) {\r\n throw new TypeError(\"createApi: RPC method name must be a non-empty string.\");\r\n }\r\n\r\n const params = validateParamsForMethod(String(name), paramsLike);\r\n\r\n const rpc = new Rpc()\r\n const request: RpcRequest = {\r\n jsonrpc: \"2.0\",\r\n method: name,\r\n id: 1,\r\n // JSON-RPC allows both object and array params; the SDK type is object-based, so cast for wire-compat.\r\n params: params as any,\r\n }\r\n const res = await rpc.call(request)\r\n return extractDataFromResponse(String(name), res)\r\n}\r\n\r\nexport default function createApi<T>(): MethodsOf<T> {\r\n return new Proxy(\r\n {},\r\n {\r\n get(_target, prop) {\r\n if (typeof prop !== \"string\") return undefined;\r\n return (...args: any[]) => {\r\n const packed = args.length === 0 ? {} : (args.length === 1 ? args[0] : args);\r\n return (dispatch as any)(prop, packed);\r\n };\r\n },\r\n }\r\n ) as unknown as MethodsOf<T>;\r\n}\r\n","import {Gc2Service} from './services/gc2.services'\r\nimport {SignUpOptions} from './util/utils'\r\n\r\nexport default class SignUp {\r\n options: SignUpOptions\r\n service: Gc2Service\r\n\r\n constructor(options: SignUpOptions) {\r\n this.options = options\r\n this.service = new Gc2Service(options)\r\n }\r\n\r\n public async signUp(): Promise<void> {\r\n window.location.assign(this.service.getSignUpURL())\r\n }\r\n}\r\n","import type { SqlRequest } from \"./types/pgTypes\";\r\nimport * as PgTypes from \"./types/pgTypes\";\r\n\r\n// Basic schema types (matches provided schema/schema.json shape)\r\nexport interface ColumnDef {\r\n name: string;\r\n _typname: string; // e.g. int4, varchar, jsonb\r\n _is_array: boolean;\r\n is_nullable: boolean;\r\n type?: string; // e.g. character varying(255)\r\n [key: string]: any;\r\n}\r\n\r\nexport interface ConstraintDef {\r\n name: string;\r\n constraint: \"primary\" | \"foreign\" | string;\r\n columns?: readonly string[];\r\n referenced_table?: string;\r\n referenced_columns?: readonly string[];\r\n check?: string;\r\n}\r\n\r\nexport interface TableDef {\r\n name: string;\r\n // Use readonly arrays so `as const` schemas preserve literal column names for typing\r\n columns: readonly ColumnDef[];\r\n constraints?: readonly ConstraintDef[];\r\n [key: string]: any;\r\n}\r\n\r\nexport interface DBSchema {\r\n name: string;\r\n // Use readonly arrays so `as const` schemas preserve literal table names for typing\r\n tables: readonly TableDef[];\r\n}\r\n\r\n// ---------- Type helpers (best effort) ----------\r\n// Map Postgres typname -> TypeScript value types used by PgTypes\r\nexport type ScalarFromTypename<T extends string> =\r\n // Numeric\r\n T extends \"int2\" | \"int4\" | \"int8\" ? number :\r\n T extends \"float4\" | \"float8\" ? number :\r\n T extends \"numeric\" | \"decimal\" ? PgTypes.NumericString :\r\n // Character\r\n T extends \"varchar\" | \"text\" | \"bpchar\" | \"char\" ? string :\r\n // Boolean\r\n T extends \"bool\" ? PgTypes.PgBoolean :\r\n // JSON\r\n T extends \"json\" | \"jsonb\" ? PgTypes.JsonValue :\r\n // Date/Time\r\n T extends \"date\" ? PgTypes.DateString :\r\n T extends \"time\" ? PgTypes.TimeString :\r\n T extends \"timetz\" ? PgTypes.TimetzString :\r\n T extends \"timestamp\" ? PgTypes.TimestampString :\r\n T extends \"timestamptz\" ? PgTypes.TimestamptzString :\r\n T extends \"interval\" ? PgTypes.IntervalValue :\r\n // Geometric\r\n T extends \"point\" ? PgTypes.Point :\r\n T extends \"line\" ? PgTypes.Line :\r\n T extends \"lseg\" ? PgTypes.Lseg :\r\n T extends \"box\" ? PgTypes.Box :\r\n T extends \"path\" ? PgTypes.Path :\r\n T extends \"polygon\" ? PgTypes.Polygon :\r\n T extends \"circle\" ? PgTypes.Circle :\r\n // Ranges\r\n T extends \"int4range\" ? PgTypes.Int4Range :\r\n T extends \"int8range\" ? PgTypes.Int8Range :\r\n T extends \"numrange\" ? PgTypes.NumRange :\r\n T extends \"tsrange\" ? PgTypes.TsRange :\r\n T extends \"tstzrange\" ? PgTypes.TstzRange :\r\n T extends \"daterange\" ? PgTypes.DateRange :\r\n unknown;\r\n\r\n// If schema object is declared with `as const`, these produce better types.\r\nexport type TableNames<S extends DBSchema> = S[\"tables\"][number][\"name\"];\r\nexport type TableByName<S extends DBSchema, TN extends string> = Extract<S[\"tables\"][number], { name: TN }>;\r\nexport type ColumnsOf<S extends DBSchema, TN extends string> = TableByName<S, TN>[\"columns\"];\r\nexport type ColumnNames<S extends DBSchema, TN extends string> = ColumnsOf<S, TN>[number][\"name\"];\r\n\r\n// Constraint helpers for typing allowed JOIN targets\r\ntype ConstraintsOfTable<T extends TableDef> = T[\"constraints\"] extends readonly any[] ? T[\"constraints\"][number] : never;\r\n\r\ntype ReferencedTablesOfTable<T extends TableDef> = ConstraintsOfTable<T> extends infer C\r\n ? C extends { constraint: \"foreign\"; referenced_table: infer RT extends string }\r\n ? RT\r\n : never\r\n : never;\r\n\r\n// Allowed join targets when selecting from TN: only tables referenced by TN via foreign key constraints\r\nexport type AllowedJoinTables<S extends DBSchema, TN extends string> = ReferencedTablesOfTable<TableByName<S, TN>>;\r\n\r\n// Primary key helpers for typing wherePk\r\n// Extract the primary constraint for a table (if any)\r\ntype PrimaryConstraintOfTable<T extends TableDef> = ConstraintsOfTable<T> extends infer C\r\n ? Extract<C, { constraint: \"primary\" }>\r\n : never;\r\n\r\n// The list of PK column names for the table (as a readonly tuple when schema is const)\r\ntype PrimaryKeyColumns<S extends DBSchema, TN extends string> = PrimaryConstraintOfTable<TableByName<S, TN>> extends {\r\n columns: infer A extends readonly string[]\r\n}\r\n ? A\r\n : never;\r\n\r\ntype IsTupleOfLength1<T extends readonly any[]> = T extends readonly [any] ? true : false;\r\n\r\n// Value type accepted by wherePk():\r\n// - single-column PK -> that column's value type\r\n// - composite PK -> an object with all PK columns\r\n// - no PK -> never (method becomes impossible to call in TS)\r\nexport type PrimaryKeyValue<S extends DBSchema, TN extends string> = PrimaryKeyColumns<S, TN> extends infer PK extends readonly string[]\r\n ? PK extends never\r\n ? never\r\n : IsTupleOfLength1<PK> extends true\r\n ? ColumnValueFor<S, TN, PK[0]>\r\n : { [K in PK[number]]: ColumnValueFor<S, TN, K> }\r\n : never;\r\n\r\n// Value type for a column based on typname and array/nullability flags.\r\n// Note: If schema is not `as const`, flags are not literal and result type becomes broader.\r\nexport type ColumnValueFromDef<C extends ColumnDef> =\r\n C[\"_is_array\"] extends true\r\n ? PgTypes.PgArray<ScalarFromTypename<C[\"_typname\"]>>\r\n : ScalarFromTypename<C[\"_typname\"]>;\r\n\r\nexport type NullableColumnValueFromDef<C extends ColumnDef> =\r\n C[\"is_nullable\"] extends true ? ColumnValueFromDef<C> | null : ColumnValueFromDef<C>;\r\n\r\n// Helpers to map a column name to its definition and value type\r\nexport type ColumnDefByName<S extends DBSchema, TN extends string, K extends string> = Extract<ColumnsOf<S, TN>[number], { name: K }>;\r\nexport type ColumnValueFor<S extends DBSchema, TN extends string, K extends string> = NullableColumnValueFromDef<ColumnDefByName<S, TN, K>>;\r\n\r\nexport type ValuesForTable<S extends DBSchema, TN extends string> = Partial<{\r\n [K in ColumnNames<S, TN>]: NullableColumnValueFromDef<Extract<ColumnsOf<S, TN>[number], { name: K }>>\r\n}>;\r\n\r\n// Where clause accepts equality and array (= ANY()) semantics.\r\nexport type WhereForTable<S extends DBSchema, TN extends string> = Partial<{\r\n [K in ColumnNames<S, TN>]:\r\n | NullableColumnValueFromDef<Extract<ColumnsOf<S, TN>[number], { name: K }>>\r\n | NullableColumnValueFromDef<Extract<ColumnsOf<S, TN>[number], { name: K }>>[]\r\n}>;\r\n\r\n// Extended operator support for where-chaining\r\nexport type WhereOperator =\r\n | \"=\"\r\n | \"!=\"\r\n | \"<\"\r\n | \"<=\"\r\n | \">\"\r\n | \">=\"\r\n | \"like\"\r\n | \"ilike\"\r\n | \"notlike\"\r\n | \"notilike\"\r\n | \"in\"\r\n | \"notin\"\r\n | \"isnull\"\r\n | \"notnull\";\r\n\r\n// Typed operator predicate for group APIs (compile-time value checks per operator)\r\nexport type OpPredicateForCol<S extends DBSchema, TN extends string, K extends ColumnNames<S, TN>> =\r\n | readonly [K, \"isnull\" | \"notnull\"]\r\n | readonly [K, \"like\" | \"ilike\" | \"notlike\" | \"notilike\", string]\r\n | readonly [K, \"in\" | \"notin\", ReadonlyArray<ColumnValueFor<S, TN, K>>]\r\n | readonly [K, \"=\" | \"!=\" | \"<\" | \"<=\" | \">\" | \">=\", ColumnValueFor<S, TN, K>];\r\n\r\nexport type OpPredicate<S extends DBSchema, TN extends string> = {\r\n [K in ColumnNames<S, TN>]: OpPredicateForCol<S, TN, K>\r\n}[ColumnNames<S, TN>];\r\n\r\n// Additional type helpers\r\nexport type IsAny<T> = 0 extends (1 & T) ? true : false;\r\n\r\nexport type OpArgsFor<S extends DBSchema, TN extends string, K extends ColumnNames<S, TN>, O extends WhereOperator> =\r\n IsAny<O> extends true ? never[] :\r\n O extends \"isnull\" | \"notnull\" ? [] :\r\n O extends \"like\" | \"ilike\" | \"notlike\" | \"notilike\" ? [value: string] :\r\n O extends \"in\" | \"notin\" ? [value: ReadonlyArray<ColumnValueFor<S, TN, K>>] :\r\n O extends \"=\" | \"!=\" | \"<\" | \"<=\" | \">\" | \">=\" ? [value: ColumnValueFor<S, TN, K>] :\r\n never[];\r\n\r\n// ---------- Runtime helpers ----------\r\nfunction findTable(schema: DBSchema, name: string): TableDef {\r\n const tbl = schema.tables.find(t => t.name === name);\r\n if (!tbl) throw new Error(`Table not found in schema: ${name}`);\r\n return tbl;\r\n}\r\n\r\nfunction findColumn(table: TableDef, name: string): ColumnDef {\r\n const col = table.columns.find(c => c.name === name);\r\n if (!col) throw new Error(`Column not found in table ${table.name}: ${name}`);\r\n return col;\r\n}\r\n\r\nfunction getPrimaryKeyColumns(table: TableDef): string[] {\r\n const cs = table.constraints || [];\r\n const pk = cs.find(c => c.constraint === \"primary\" && Array.isArray(c.columns) && c.columns.length > 0);\r\n return pk ? (pk.columns as readonly string[]).map(String) : [];\r\n}\r\n\r\nfunction typeNameToHint(typname: string, isArray: boolean): string | undefined {\r\n if (!typname) return undefined;\r\n const base = typname; // Already pg typname\r\n return isArray ? base + \"[]\" : base;\r\n}\r\n\r\n// Utility to push type_hints for array params, since arrays are not inferred by default.\r\nfunction addTypeHintForParam(\r\n typeHints: Record<string, string>,\r\n paramName: string,\r\n col: ColumnDef,\r\n value: unknown\r\n) {\r\n // Always provide a type hint: scalar as base typname, arrays as base[]\r\n // Special-case array-shaped geometric scalars (path, polygon):\r\n // - Equality scalar: value looks like an array but represents a single scalar -> hint as base (no [])\r\n // - IN/ANY arrays: value is array of those scalars (nested arrays) -> hint as base[]\r\n let isArr = col._is_array;\r\n if (Array.isArray(value)) {\r\n if (isArrayShapedGeomTypename(col._typname)) {\r\n const top = value as unknown[];\r\n // If every element is itself an array, it's an array of geom scalars\r\n isArr = top.every(Array.isArray);\r\n } else {\r\n isArr = true;\r\n }\r\n }\r\n const hint = typeNameToHint(col._typname, isArr);\r\n if (hint) typeHints[paramName] = hint;\r\n}\r\n\r\n// Runtime value type validation helpers for whereOp predicates\r\nfunction expectedScalarKind(typname: string): \"number\" | \"string\" | \"boolean\" | \"json\" | \"range\" | \"interval\" | \"geom\" | \"unknown\" {\r\n const t = typname.toLowerCase();\r\n if (t === \"int2\" || t === \"int4\" || t === \"int8\" || t === \"float4\" || t === \"float8\") return \"number\";\r\n if (t === \"numeric\" || t === \"decimal\") return \"string\"; // numeric represented as string in SDK\r\n if (t === \"varchar\" || t === \"text\" || t === \"bpchar\" || t === \"char\" || t === \"date\" || t === \"time\" || t === \"timetz\" || t === \"timestamp\" || t === \"timestamptz\") return \"string\";\r\n if (t === \"bool\") return \"boolean\";\r\n if (t === \"json\" || t === \"jsonb\") return \"json\";\r\n if (t === \"int4range\" || t === \"int8range\" || t === \"numrange\" || t === \"tsrange\" || t === \"tstzrange\" || t === \"daterange\") return \"range\";\r\n if (t === \"interval\") return \"interval\";\r\n if (t === \"point\" || t === \"line\" || t === \"lseg\" || t === \"box\" || t === \"path\" || t === \"polygon\" || t === \"circle\") return \"geom\";\r\n return \"unknown\";\r\n}\r\n\r\nfunction isArrayShapedGeomTypename(typname: string): boolean {\r\n const t = typname.toLowerCase();\r\n // path and polygon are represented as arrays at the value level, but are scalar types in PG\r\n return t === \"path\" || t === \"polygon\";\r\n}\r\n\r\nfunction isArrayShapedGeomScalarValue(col: ColumnDef, value: unknown): boolean {\r\n // Detect if a provided array value represents a single scalar for array-shaped geometric types\r\n if (!Array.isArray(value)) return false;\r\n if (!isArrayShapedGeomTypename(col._typname)) return false;\r\n const top = value as unknown[];\r\n // If every element is an array, then this is an array of scalars (for IN/ANY)\r\n // Otherwise, it's a single scalar (path or polygon)\r\n return !top.every(Array.isArray);\r\n}\r\n\r\nfunction expectedRangeInnerKind(typname: string): \"number\" | \"string\" | \"unknown\" {\r\n const t = typname.toLowerCase();\r\n if (t === \"int4range\" || t === \"int8range\") return \"number\";\r\n if (t === \"numrange\" || t === \"tsrange\" || t === \"tstzrange\" || t === \"daterange\") return \"string\";\r\n return \"unknown\";\r\n}\r\n\r\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\r\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\r\n}\r\n\r\nfunction isFiniteNumber(n: unknown): n is number {\r\n return typeof n === \"number\" && Number.isFinite(n);\r\n}\r\n\r\nfunction isPointLike(v: unknown): v is { x: number; y: number } {\r\n if (!isPlainObject(v)) return false;\r\n const x = (v as any).x;\r\n const y = (v as any).y;\r\n return isFiniteNumber(x) && isFiniteNumber(y);\r\n}\r\n\r\nfunction validateGeometryForColumn(col: ColumnDef, value: unknown, context: string): void {\r\n const t = col._typname.toLowerCase();\r\n\r\n if (t === \"point\") {\r\n if (!isPointLike(value)) {\r\n throw new Error(`Invalid value for ${context}. Expected Point { x: number, y: number }`);\r\n }\r\n return;\r\n }\r\n\r\n if (t === \"line\") {\r\n if (!isPlainObject(value)) throw new Error(`Invalid value for ${context}. Expected Line { A: number, B: number, C: number }`);\r\n const A = (value as any).A, B = (value as any).B, C = (value as any).C;\r\n if (!isFiniteNumber(A) || !isFiniteNumber(B) || !isFiniteNumber(C)) {\r\n throw new Error(`Invalid Line for ${context}. A, B, C must be finite numbers`);\r\n }\r\n return;\r\n }\r\n\r\n if (t === \"lseg\" || t === \"box\") {\r\n if (!isPlainObject(value)) throw new Error(`Invalid value for ${context}. Expected ${t.toUpperCase()} { start: Point, end: Point }`);\r\n const start = (value as any).start;\r\n const end = (value as any).end;\r\n if (!isPointLike(start) || !isPointLike(end)) {\r\n throw new Error(`Invalid ${t} for ${context}. 'start' and 'end' must be Point { x, y }`);\r\n }\r\n return;\r\n }\r\n\r\n if (t === \"path\") {\r\n if (!Array.isArray(value) || value.length < 1) {\r\n throw new Error(`Invalid value for ${context}. Expected Path [isClosed: boolean, ...points: Point[]]`);\r\n }\r\n const [isClosed, ...points] = value as any[];\r\n if (typeof isClosed !== \"boolean\") {\r\n throw new Error(`Invalid Path for ${context}. First element must be boolean (isClosed)`);\r\n }\r\n for (let i = 0; i < points.length; i++) {\r\n if (!isPointLike(points[i])) {\r\n throw new Error(`Invalid Path for ${context}. Element at index ${i + 1} must be Point { x, y }`);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (t === \"polygon\") {\r\n if (!Array.isArray(value)) {\r\n throw new Error(`Invalid value for ${context}. Expected Polygon as Point[]`);\r\n }\r\n for (let i = 0; i < value.length; i++) {\r\n if (!isPointLike((value as any)[i])) {\r\n throw new Error(`Invalid Polygon for ${context}. Element at index ${i} must be Point { x, y }`);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (t === \"circle\") {\r\n if (!isPlainObject(value)) throw new Error(`Invalid value for ${context}. Expected Circle { center: Point, radius: number }`);\r\n const center = (value as any).center;\r\n const radius = (value as any).radius;\r\n if (!isPointLike(center) || !isFiniteNumber(radius)) {\r\n throw new Error(`Invalid Circle for ${context}. 'center' must be Point and 'radius' must be finite number`);\r\n }\r\n return;\r\n }\r\n\r\n // Unknown geometric subtype; skip\r\n}\r\n\r\nfunction validateRangeForColumn(col: ColumnDef, value: unknown, context: string): void {\r\n if (!isPlainObject(value)) {\r\n throw new Error(`Invalid value for ${context}. Expected a range object for type ${col._typname}`);\r\n }\r\n const r = value as Record<string, unknown>;\r\n const hasLower = Object.prototype.hasOwnProperty.call(r, \"lower\");\r\n const hasUpper = Object.prototype.hasOwnProperty.call(r, \"upper\");\r\n const hasLi = Object.prototype.hasOwnProperty.call(r, \"lowerInclusive\");\r\n const hasUi = Object.prototype.hasOwnProperty.call(r, \"upperInclusive\");\r\n if (!hasLower || !hasUpper || !hasLi || !hasUi) {\r\n throw new Error(`Invalid range for ${context}. Required properties: lower, upper, lowerInclusive, upperInclusive`);\r\n }\r\n if (typeof r.lowerInclusive !== \"boolean\" || typeof r.upperInclusive !== \"boolean\") {\r\n throw new Error(`Invalid range for ${context}. lowerInclusive and upperInclusive must be boolean`);\r\n }\r\n const inner = expectedRangeInnerKind(col._typname);\r\n if (inner === \"number\") {\r\n if (typeof r.lower !== \"number\" || !Number.isFinite(r.lower as number)) {\r\n throw new Error(`Invalid range.lower for ${context}. Expected number for type ${col._typname}`);\r\n }\r\n if (typeof r.upper !== \"number\" || !Number.isFinite(r.upper as number)) {\r\n throw new Error(`Invalid range.upper for ${context}. Expected number for type ${col._typname}`);\r\n }\r\n } else if (inner === \"string\") {\r\n if (typeof r.lower !== \"string\") {\r\n throw new Error(`Invalid range.lower for ${context}. Expected string for type ${col._typname}`);\r\n }\r\n if (typeof r.upper !== \"string\") {\r\n throw new Error(`Invalid range.upper for ${context}. Expected string for type ${col._typname}`);\r\n }\r\n } else {\r\n // Unknown inner kind; best-effort: accept as-is\r\n }\r\n}\r\n\r\nfunction validateIntervalForColumn(col: ColumnDef, value: unknown, context: string): void {\r\n if (!isPlainObject(value)) {\r\n throw new Error(`Invalid value for ${context}. Expected an interval object for type ${col._typname}`);\r\n }\r\n const v = value as Record<string, unknown>;\r\n const keys: (keyof PgTypes.IntervalValue)[] = [\"y\", \"m\", \"d\", \"h\", \"i\", \"s\"];\r\n for (const k of keys) {\r\n if (!Object.prototype.hasOwnProperty.call(v, k)) {\r\n throw new Error(`Invalid interval for ${context}. Missing property '${k}'`);\r\n }\r\n const num = (v as any)[k];\r\n if (typeof num !== \"number\" || !Number.isFinite(num)) {\r\n throw new Error(`Invalid interval.${String(k)} for ${context}. Expected finite number`);\r\n }\r\n }\r\n}\r\n\r\nfunction isValidJsonLike(value: unknown): boolean {\r\n return (\r\n value === null ||\r\n typeof value === \"string\" ||\r\n typeof value === \"number\" ||\r\n typeof value === \"boolean\" ||\r\n (typeof value === \"object\" && value !== null)\r\n );\r\n}\r\n\r\nfunction validateScalarForColumn(col: ColumnDef, value: unknown, context: string): void {\r\n const kind = expectedScalarKind(col._typname);\r\n if (kind === \"unknown\") return; // best-effort: skip strict check for unknown types\r\n if (kind === \"number\") {\r\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\r\n throw new Error(`Invalid value for ${context}. Expected number for type ${col._typname}, got ${typeof value}`);\r\n }\r\n return;\r\n }\r\n if (kind === \"string\") {\r\n if (typeof value !== \"string\") {\r\n throw new Error(`Invalid value for ${context}. Expected string for type ${col._typname}, got ${typeof value}`);\r\n }\r\n return;\r\n }\r\n if (kind === \"boolean\") {\r\n if (typeof value !== \"boolean\") {\r\n throw new Error(`Invalid value for ${context}. Expected boolean for type ${col._typname}, got ${typeof value}`);\r\n }\r\n return;\r\n }\r\n if (kind === \"json\") {\r\n if (!isValidJsonLike(value)) {\r\n throw new Error(`Invalid value for ${context}. Expected JSON-compatible value for type ${col._typname}`);\r\n }\r\n return;\r\n }\r\n if (kind === \"range\") {\r\n validateRangeForColumn(col, value, context);\r\n return;\r\n }\r\n if (kind === \"interval\") {\r\n validateIntervalForColumn(col, value, context);\r\n return;\r\n }\r\n if (kind === \"geom\") {\r\n validateGeometryForColumn(col, value, context);\r\n return;\r\n }\r\n}\r\n\r\nfunction validateComparisonValue(col: ColumnDef, key: string, value: unknown, op: string): void {\r\n if (value === undefined || value === null) {\r\n throw new Error(`Operator ${op} on column ${key} requires a non-null value. Use isnull/notnull for null checks.`);\r\n }\r\n if (col._is_array) {\r\n if (!Array.isArray(value)) {\r\n throw new Error(`Operator ${op} on array column ${key} requires an array value`);\r\n }\r\n for (const [i, v] of (value as unknown[]).entries()) {\r\n validateScalarForColumn(col, v, `column ${key}[${i}]`);\r\n }\r\n } else {\r\n if (Array.isArray(value) && !isArrayShapedGeomScalarValue(col, value)) {\r\n throw new Error(`Operator ${op} on scalar column ${key} cannot accept an array value`);\r\n }\r\n // Note: some scalar types (path, polygon) appear as arrays at the value level; they are handled by validateScalarForColumn\r\n validateScalarForColumn(col, value, `column ${key}`);\r\n }\r\n}\r\n\r\nfunction validateInArrayValues(col: ColumnDef, key: string, values: unknown[], op: string): void {\r\n // For scalar columns ensure each element matches the scalar type. For array-typed columns, we only ensure it's an array of anything (Postgres may accept array of arrays); keep minimal.\r\n if (!col._is_array) {\r\n let idx = 0;\r\n for (const v of values) {\r\n validateScalarForColumn(col, v, `column ${key} (element ${idx})`);\r\n idx++;\r\n }\r\n }\r\n}\r\n\r\n// Attempt to derive join ON pairs between two tables using foreign key constraints.\r\nfunction findJoinOn(base: TableDef, target: TableDef): { left: string; right: string }[] | null {\r\n const bc = base.constraints || [];\r\n const tc = target.constraints || [];\r\n\r\n // Case 1: base has FK referencing target\r\n for (const c of bc) {\r\n if (c.constraint === \"foreign\" && c.referenced_table === target.name && c.columns?.length && c.referenced_columns?.length && c.columns.length === c.referenced_columns.length) {\r\n return c.columns.map((col, i) => ({ left: String(col), right: String(c.referenced_columns![i]) }));\r\n }\r\n }\r\n // Case 2: target has FK referencing base\r\n for (const c of tc) {\r\n if (c.constraint === \"foreign\" && c.referenced_table === base.name && c.columns?.length && c.referenced_columns?.length && c.columns.length === c.referenced_columns.length) {\r\n return c.referenced_columns.map((rcol, i) => ({ left: String(rcol), right: String(c.columns![i]) }));\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n// ---------- Builders ----------\r\nexport interface SqlBuilder<S extends DBSchema> {\r\n table: <TN extends TableNames<S>>(name: TN) => TableQuery<S, TN>;\r\n}\r\n\r\n// Row type helpers for selections\r\nexport type RowForTable<S extends DBSchema, TN extends string> = {\r\n [K in ColumnNames<S, TN>]: ColumnValueFor<S, TN, K>\r\n};\r\nexport type PickRow<S extends DBSchema, TN extends string, C extends ReadonlyArray<ColumnNames<S, TN>>> = {\r\n [K in C[number]]: ColumnValueFor<S, TN, K>\r\n};\r\n\r\nexport interface TableQuery<S extends DBSchema, TN extends string> {\r\n // SELECT\r\n select(): SelectQuery<S, TN, RowForTable<S, TN>>;\r\n select<C extends ReadonlyArray<ColumnNames<S, TN>>>(cols: C): SelectQuery<S, TN, PickRow<S, TN, C>>;\r\n // INSERT\r\n insert: (values: ValuesForTable<S, TN>) => InsertQuery<S, TN>;\r\n // UPDATE\r\n update: (values: Partial<ValuesForTable<S, TN>>) => UpdateQuery<S, TN>;\r\n // DELETE\r\n delete: () => DeleteQuery<S, TN>;\r\n}\r\n\r\nexport interface SelectQuery<S extends DBSchema, TN extends string, R extends PgTypes.DataRow> {\r\n selectFrom: <JT extends TableNames<S>>(table: JT, cols?: ReadonlyArray<ColumnNames<S, JT>>) => SelectQuery<S, TN, R>;\r\n andWhere: (where: WhereForTable<S, TN>) => SelectQuery<S, TN, R>;\r\n /** @deprecated Use andWhere() instead */\r\n where: (where: WhereForTable<S, TN>) => SelectQuery<S, TN, R>;\r\n orWhere: (where: WhereForTable<S, TN>) => SelectQuery<S, TN, R>;\r\n wherePk: (pk: PrimaryKeyValue<S, TN>) => SelectQuery<S, TN, R>;\r\n // Operator-based where chaining with compile-time value checks; also rejects `any` operator by disallowing extra args when O is any\r\n andWhereOp<K extends ColumnNames<S, TN>, O extends WhereOperator>(col: K, op: O, ...args: OpArgsFor<S, TN, K, O>): SelectQuery<S, TN, R>;\r\n orWhereOp<K extends ColumnNames<S, TN>, O extends WhereOperator>(col: K, op: O, ...args: OpArgsFor<S, TN, K, O>): SelectQuery<S, TN, R>;\r\n andWhereOpGroup: (predicates: ReadonlyArray<OpPredicate<S, TN>>) => SelectQuery<S, TN, R>;\r\n orWhereOpGroup: (predicates: ReadonlyArray<OpPredicate<S, TN>>) => SelectQuery<S, TN, R>;\r\n orderBy: (order: ReadonlyArray<readonly [ColumnNames<S, TN>, \"asc\" | \"desc\"]> | ColumnNames<S, TN>) => SelectQuery<S, TN, R>;\r\n limit: (n: number) => SelectQuery<S, TN, R>;\r\n offset: (n: number) => SelectQuery<S, TN, R>;\r\n join: <JT extends TableNames<S>>(table: JT, type?: \"inner\" | \"left\" | \"right\" | \"full\") => SelectQuery<S, TN, R>;\r\n toSql: () => PgTypes.TypedSqlRequest<R>;\r\n}\r\n\r\nexport interface InsertQuery<S extends DBSchema, TN extends string> {\r\n returning: (cols?: ReadonlyArray<ColumnNames<S, TN>>) => InsertQuery<S, TN>;\r\n toSql: () => SqlRequest<Record<string, unknown>>;\r\n}\r\n\r\nexport interface UpdateQuery<S extends DBSchema, TN extends string> {\r\n where: (where: WhereForTable<S, TN>) => UpdateQuery<S, TN>;\r\n wherePk: (pk: PrimaryKeyValue<S, TN>) => UpdateQuery<S, TN>;\r\n returning: (cols?: ReadonlyArray<ColumnNames<S, TN>>) => UpdateQuery<S, TN>;\r\n toSql: () => SqlRequest<Record<string, unknown>>;\r\n}\r\n\r\nexport interface DeleteQuery<S extends DBSchema, TN extends string> {\r\n where: (where: WhereForTable<S, TN>) => DeleteQuery<S, TN>;\r\n wherePk: (pk: PrimaryKeyValue<S, TN>) => DeleteQuery<S, TN>;\r\n returning: (cols?: ReadonlyArray<ColumnNames<S, TN>>) => DeleteQuery<S, TN>;\r\n toSql: () => SqlRequest<Record<string, unknown>>;\r\n}\r\n\r\nclass TableQueryImpl<S extends DBSchema, TN extends string> implements TableQuery<S, TN> {\r\n private readonly schema: DBSchema;\r\n private readonly table: TableDef;\r\n\r\n constructor(schema: DBSchema, tableName: string) {\r\n this.schema = schema;\r\n this.table = findTable(schema, tableName);\r\n }\r\n\r\n // Overloads provide precise row typing based on selected columns\r\n select(): SelectQuery<S, TN, RowForTable<S, TN>>;\r\n select<C extends ReadonlyArray<ColumnNames<S, TN>>>(cols: C): SelectQuery<S, TN, PickRow<S, TN, C>>;\r\n select(cols?: ReadonlyArray<ColumnNames<S, TN>>): any {\r\n const table = this.table;\r\n const schema = this.schema;\r\n const selected = (cols && cols.length ? cols : [\"*\"]) as (ColumnNames<S, TN> | \"*\")[];\r\n const state = {\r\n table,\r\n selected,\r\n where: {} as WhereForTable<S, TN>,\r\n orWhereGroups: [] as WhereForTable<S, TN>[],\r\n // Operator-based predicates\r\n andOps: [] as { col: ColumnNames<S, TN>; op: WhereOperator; value?: unknown }[],\r\n orOpGroups: [] as { col: ColumnNames<S, TN>; op: WhereOperator; value?: unknown }[][],\r\n order: [] as { col: ColumnNames<S, TN>; dir: \"asc\" | \"desc\" }[],\r\n limit: undefined as number | undefined,\r\n offset: undefined as number | undefined,\r\n joins: [] as { type: \"inner\" | \"left\" | \"right\" | \"full\"; source: TableDef; target: TableDef; on: { left: string; right: string }[] }[],\r\n joinSelections: [] as { target: TableDef; selected: (string | \"*\")[] }[],\r\n };\r\n\r\n return new (class implements SelectQuery<S, TN, any> {\r\n private s = state;\r\n\r\n selectFrom<JT extends TableNames<S>>(tableName: JT, cols?: ReadonlyArray<ColumnNames<S, JT>>): SelectQuery<S, TN, any> {\r\n const jtName = String(tableName);\r\n const join = this.s.joins.find(j => j.target.name === jtName);\r\n if (!join) {\r\n throw new Error(`selectFrom('${jtName}') requires a prior join('${jtName}') call`);\r\n }\r\n const sel = (!cols || (cols as readonly any[]).length === 0) ? [\"*\"] : (cols as readonly any[]).map(String);\r\n if (!(sel.length === 1 && sel[0] === \"*\")) {\r\n for (const c of sel) findColumn(join.target, String(c));\r\n }\r\n const existing = this.s.joinSelections.find(js => js.target.name === jtName);\r\n if (existing) {\r\n if (existing.selected.includes(\"*\")) return this;\r\n if (sel.length === 1 && sel[0] === \"*\") {\r\n existing.selected = [\"*\"];\r\n } else {\r\n const set = new Set(existing.selected as string[]);\r\n for (const c of sel) set.add(String(c));\r\n existing.selected = Array.from(set);\r\n }\r\n } else {\r\n this.s.joinSelections.push({ target: join.target, selected: sel as (string | \"*\")[] });\r\n }\r\n return this;\r\n }\r\n\r\n andWhere(where: WhereForTable<S, TN>): SelectQuery<S, TN, any> {\r\n // merge\r\n for (const k in where as Record<string, unknown>) this.s.where[k as keyof typeof where] = (where as any)[k];\r\n return this;\r\n }\r\n /** @deprecated Use andWhere() instead */\r\n where(where: WhereForTable<S, TN>): SelectQuery<S, TN, any> { return this.andWhere(where); }\r\n\r\n orWhere(where: WhereForTable<S, TN>): SelectQuery<S, TN, any> {\r\n // push a new OR group\r\n this.s.orWhereGroups.push(where);\r\n return this;\r\n }\r\n\r\n wherePk(pk: PrimaryKeyValue<S, TN>): SelectQuery<S, TN, any> {\r\n const pkCols = getPrimaryKeyColumns(table);\r\n if (!pkCols || pkCols.length === 0) {\r\n throw new Error(`Table ${table.name} does not have a primary key`);\r\n }\r\n if (pkCols.length === 1) {\r\n const colName = pkCols[0];\r\n const colDef = findColumn(table, colName);\r\n if (pk === null || pk === undefined) {\r\n throw new Error(`wherePk on ${table.name} requires a non-null value for primary key column ${colName}`);\r\n }\r\n if (Array.isArray(pk)) {\r\n throw new Error(`wherePk on ${table.name} expects a scalar for primary key column ${colName}, not an array`);\r\n }\r\n if (isPlainObject(pk)) {\r\n throw new Error(`wherePk on ${table.name} expects a scalar for primary key column ${colName}`);\r\n }\r\n // Runtime type validation against the PK column type\r\n validateScalarForColumn(colDef, pk as unknown, `primary key ${table.name}.${colName}`);\r\n (this.s.where as any)[colName] = pk as unknown;\r\n return this;\r\n } else {\r\n if (!isPlainObject(pk) || pk === null) {\r\n throw new Error(`wherePk on ${table.name} requires an object with keys: ${pkCols.join(\", \")}`);\r\n }\r\n const obj = pk as Record<string, unknown>;\r\n for (const k of Object.keys(obj)) {\r\n if (!pkCols.includes(k)) {\r\n throw new Error(`wherePk received unknown key '${k}'. Expected keys: ${pkCols.join(\", \")}`);\r\n }\r\n }\r\n for (const colName of pkCols) {\r\n if (!(colName in obj)) {\r\n throw new Error(`wherePk missing key '${colName}'. Required keys: ${pkCols.join(\", \")}`);\r\n }\r\n const v = obj[colName];\r\n if (v === null || v === undefined) {\r\n throw new Error(`wherePk on ${table.name} requires non-null values for all primary key columns (${pkCols.join(\", \")})`);\r\n }\r\n if (Array.isArray(v)) {\r\n throw new Error(`wherePk on ${table.name} expects scalar values for primary key column ${colName}, not an array`);\r\n }\r\n const colDef = findColumn(table, colName);\r\n validateScalarForColumn(colDef, v, `primary key ${table.name}.${colName}`);\r\n (this.s.where as any)[colName] = v;\r\n }\r\n return this;\r\n }\r\n }\r\n\r\n andWhereOp<K extends ColumnNames<S, TN>, O extends WhereOperator>(col: K, op: O, ...args: OpArgsFor<S, TN, K, O>): SelectQuery<S, TN, any>;\r\n andWhereOp(col: any, op: any, ...args: any[]): SelectQuery<S, TN> {\r\n const value = args[0];\r\n this.s.andOps.push({ col, op, value });\r\n return this;\r\n }\r\n orWhereOp<K extends ColumnNames<S, TN>, O extends WhereOperator>(col: K, op: O, ...args: OpArgsFor<S, TN, K, O>): SelectQuery<S, TN>;\r\n orWhereOp(col: any, op: any, ...args: any[]): SelectQuery<S, TN> {\r\n const value = args[0];\r\n this.s.orOpGroups.push([{ col, op, value }]);\r\n return this;\r\n }\r\n andWhereOpGroup(predicates: ReadonlyArray<OpPredicate<S, TN>>): SelectQuery<S, TN> {\r\n const group = (predicates as ReadonlyArray<readonly [ColumnNames<S, TN>, WhereOperator, unknown?]>).map(p => ({ col: p[0], op: p[1], value: p[2] }));\r\n for (const g of group) this.s.andOps.push(g);\r\n return this;\r\n }\r\n orWhereOpGroup(predicates: ReadonlyArray<OpPredicate<S, TN>>): SelectQuery<S, TN> {\r\n const group = (predicates as ReadonlyArray<readonly [ColumnNames<S, TN>, WhereOperator, unknown?]>).map(p => ({ col: p[0], op: p[1], value: p[2] }));\r\n this.s.orOpGroups.push(group);\r\n return this;\r\n }\r\n\r\n orderBy(order: ReadonlyArray<readonly [ColumnNames<S, TN>, \"asc\" | \"desc\"]> | ColumnNames<S, TN>): SelectQuery<S, TN> {\r\n this.s.order = [];\r\n const isValidDir = (d: string): d is \"asc\" | \"desc\" => d === \"asc\" || d === \"desc\";\r\n if (typeof order === \"string\") {\r\n // Runtime validation: ensure column exists\r\n findColumn(table, String(order));\r\n this.s.order.push({ col: order as ColumnNames<S, TN>, dir: \"asc\" });\r\n } else {\r\n for (const item of order) {\r\n const col = String(item[0]);\r\n const dir = String(item[1]);\r\n // Validate column exists on base table\r\n findColumn(table, col);\r\n // Validate direction\r\n if (!isValidDir(dir)) {\r\n throw new Error(`Invalid order direction: ${dir}. Allowed: asc | desc`);\r\n }\r\n this.s.order.push({ col: item[0], dir: dir });\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n limit(n: number): SelectQuery<S, TN> {\r\n // Runtime validation: limit must be a non-negative integer\r\n if (typeof n !== \"number\" || !Number.isFinite(n) || !Number.isInteger(n) || n < 0) {\r\n throw new Error(`Invalid limit: ${n}. Limit must be a non-negative integer`);\r\n }\r\n this.s.limit = n;\r\n return this;\r\n }\r\n offset(n: number): SelectQuery<S, TN> {\r\n // Runtime validation: offset must be a non-negative integer\r\n if (typeof n !== \"number\" || !Number.isFinite(n) || !Number.isInteger(n) || n < 0) {\r\n throw new Error(`Invalid offset: ${n}. Offset must be a non-negative integer`);\r\n }\r\n this.s.offset = n;\r\n return this;\r\n }\r\n\r\n join<JT extends TableNames<S>>(tableName: JT, type: \"inner\" | \"left\" | \"right\" | \"full\" = \"inner\"): SelectQuery<S, TN> {\r\n const target = findTable(schema, String(tableName));\r\n\r\n // Determine the source table to join from: try most recent join targets first, then earlier ones, then base table\r\n const sources: TableDef[] = [];\r\n // Add existing joined targets in reverse order (most recent first)\r\n for (let i = this.s.joins.length - 1; i >= 0; i--) {\r\n const src = this.s.joins[i].target;\r\n if (!sources.some(s => s.name === src.name)) sources.push(src);\r\n }\r\n // Finally, add the base table\r\n if (!sources.some(s => s.name === table.name)) sources.push(table);\r\n\r\n let pickedSource: TableDef | null = null;\r\n let pairs: { left: string; right: string }[] | null = null;\r\n for (const src of sources) {\r\n const p = findJoinOn(src, target);\r\n if (p && p.length) { pickedSource = src; pairs = p; break; }\r\n }\r\n\r\n if (!pairs || !pickedSource) {\r\n const candidates = sources.map(s => s.name).join(\", \");\r\n throw new Error(`No foreign key relation found between any of [${candidates}] and ${target.name}`);\r\n }\r\n\r\n // Validate join type\r\n const jt = String(type);\r\n if (jt !== \"inner\" && jt !== \"left\" && jt !== \"right\" && jt !== \"full\") {\r\n throw new Error(`Invalid join type: ${jt}. Allowed: inner | left | right | full`);\r\n }\r\n\r\n this.s.joins.push({ type: jt as any, source: pickedSource, target, on: pairs });\r\n return this;\r\n }\r\n\r\n toSql = (): SqlRequest => {\r\n const params: Record<string, unknown> = {};\r\n const type_hints: Record<string, string> = {};\r\n let p = 0;\r\n\r\n const parts: string[] = [];\r\n // Columns\r\n const selectParts: string[] = [];\r\n if (selected.length === 1 && selected[0] === \"*\") {\r\n selectParts.push(`\"${table.name}\".*`);\r\n } else {\r\n // Runtime validation: ensure every selected column exists on the table\r\n const sel = selected as string[];\r\n for (const c of sel) {\r\n // will throw if column not found\r\n findColumn(table, String(c));\r\n }\r\n selectParts.push(sel.map(c => `\"${table.name}\".\"${c}\"`).join(\", \"));\r\n }\r\n // Joined table selections\r\n for (const js of state.joinSelections) {\r\n if (js.selected.length === 1 && js.selected[0] === \"*\") {\r\n selectParts.push(`\"${js.target.name}\".*`);\r\n } else {\r\n const cols = js.selected as string[];\r\n for (const c of cols) findColumn(js.target, String(c));\r\n selectParts.push(cols.map(c => `\"${js.target.name}\".\"${c}\"`).join(\", \"));\r\n }\r\n }\r\n parts.push(`select ${selectParts.join(\", \")} from \"${schema.name}\".\"${table.name}\"`);\r\n\r\n // JOINs\r\n for (const j of state.joins) {\r\n const onExpr = j.on.map(p => `\"${j.source.name}\".\"${p.left}\" = \"${j.target.name}\".\"${p.right}\"`).join(\" and \");\r\n parts.push(`${j.type} join \"${schema.name}\".\"${j.target.name}\" on ${onExpr}`);\r\n }\r\n\r\n // Build WHERE with correct AND/OR semantics:\r\n // - Collect base AND predicates (equality and operator-based) into one AND group\r\n // - Collect OR groups (object-based and operator-based) as parenthesized groups\r\n // - If any OR groups exist, top-level is: (AND-group) or (OR-group1) or (OR-group2) ...\r\n // - Else, only the AND-group is used\r\n\r\n const andParts: string[] = [];\r\n\r\n // Base AND where (equality style)\r\n for (const key in state.where) {\r\n const value = (state.where as any)[key];\r\n const col = findColumn(table, key);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n\r\n if (value === null) {\r\n if (!col.is_nullable) {\r\n throw new Error(`Column ${table.name}.${key} is not nullable; cannot compare to null`);\r\n }\r\n andParts.push(`\"${table.name}\".\"${key}\" is null`);\r\n } else if (Array.isArray(value) && !isArrayShapedGeomScalarValue(col, value)) {\r\n // Validate array element types (treat as IN semantics)\r\n validateInArrayValues(col, key, value as unknown[], \"in\");\r\n // IN via = ANY(:param)\r\n andParts.push(`\"${table.name}\".\"${key}\" = ANY(:${paramName})`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n } else {\r\n // Validate scalar matches column type (note: path/polygon may appear as arrays but represent a single scalar)\r\n validateScalarForColumn(col, value, `column ${key}`);\r\n andParts.push(`\"${table.name}\".\"${key}\" = :${paramName}`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n }\r\n }\r\n // Operator-based AND predicates\r\n for (const pred of state.andOps) {\r\n const key = String(pred.col);\r\n const op = String(pred.op) as WhereOperator;\r\n const col = findColumn(table, key);\r\n const qualified = `\"${table.name}\".\"${key}\"`;\r\n if (op === \"isnull\" || op === \"notnull\") {\r\n if (pred.value !== undefined) {\r\n throw new Error(`Operator ${op} does not take a value for column ${key}`);\r\n }\r\n andParts.push(`${qualified} is ${op === \"isnull\" ? \"null\" : \"not null\"}`);\r\n } else if (op === \"in\" || op === \"notin\") {\r\n const val = pred.value as unknown;\r\n if (!Array.isArray(val)) {\r\n throw new Error(`Operator ${op} requires an array value for column ${key}`);\r\n }\r\n // Runtime validate each element type for scalar columns\r\n validateInArrayValues(col, key, val as unknown[], op);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n andParts.push(`${qualified} ${op === \"in\" ? \"= ANY\" : \"!= ALL\"}(:${paramName})`);\r\n params[paramName] = val;\r\n addTypeHintForParam(type_hints, paramName, col, val);\r\n } else if (op === \"like\" || op === \"ilike\" || op === \"notlike\" || op === \"notilike\") {\r\n const val = pred.value as unknown;\r\n if (typeof val !== \"string\") {\r\n throw new Error(`Operator ${op} requires a string value for column ${key}`);\r\n }\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n const sqlOp = op === \"like\" ? \"like\" : op === \"ilike\" ? \"ilike\" : op === \"notlike\" ? \"not like\" : \"not ilike\";\r\n andParts.push(`${qualified} ${sqlOp} :${paramName}`);\r\n params[paramName] = val;\r\n addTypeHintForParam(type_hints, paramName, col, val);\r\n } else {\r\n // comparison or equality/inequality\r\n const val = pred.value as unknown;\r\n if (val === undefined) throw new Error(`Operator ${op} requires a value for column ${key}`);\r\n // Runtime type validation against column type\r\n validateComparisonValue(col, key, val, op);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n if (op === \"=\") {\r\n andParts.push(`${qualified} = :${paramName}`);\r\n } else if (op === \"!=\") {\r\n andParts.push(`${qualified} <> :${paramName}`);\r\n } else if (op === \"<\" || op === \"<=\" || op === \">\" || op === \">=\") {\r\n andParts.push(`${qualified} ${op} :${paramName}`);\r\n } else {\r\n throw new Error(`Unsupported operator: ${op}`);\r\n }\r\n params[paramName] = val;\r\n addTypeHintForParam(type_hints, paramName, col, val);\r\n }\r\n }\r\n\r\n // Build OR groups from object-based orWhere\r\n const orGroupSql: string[] = [];\r\n for (const group of state.orWhereGroups) {\r\n const orParts: string[] = [];\r\n for (const key in group as Record<string, unknown>) {\r\n const value = (group as any)[key];\r\n const col = findColumn(table, key);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n if (value === null) {\r\n if (!col.is_nullable) {\r\n throw new Error(`Column ${table.name}.${key} is not nullable; cannot compare to null`);\r\n }\r\n orParts.push(`\"${table.name}\".\"${key}\" is null`);\r\n } else if (Array.isArray(value) && !isArrayShapedGeomScalarValue(col, value)) {\r\n // Validate array element types (treat as IN semantics)\r\n validateInArrayValues(col, key, value as unknown[], \"in\");\r\n orParts.push(`\"${table.name}\".\"${key}\" = ANY(:${paramName})`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n } else {\r\n // Validate scalar matches column type (note: path/polygon may appear as arrays but represent a single scalar)\r\n validateScalarForColumn(col, value, `column ${key}`);\r\n orParts.push(`\"${table.name}\".\"${key}\" = :${paramName}`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n }\r\n }\r\n if (orParts.length) orGroupSql.push(\"(\" + orParts.join(\" or \") + \")\");\r\n }\r\n // Build OR groups from operator-based orWhereOp groups\r\n for (const group of state.orOpGroups) {\r\n const orParts: string[] = [];\r\n for (const pred of group) {\r\n const key = String(pred.col);\r\n const op = String(pred.op) as WhereOperator;\r\n const col = findColumn(table, key);\r\n const qualified = `\"${table.name}\".\"${key}\"`;\r\n if (op === \"isnull\" || op === \"notnull\") {\r\n if (pred.value !== undefined) throw new Error(`Operator ${op} does not take a value for column ${key}`);\r\n orParts.push(`${qualified} is ${op === \"isnull\" ? \"null\" : \"not null\"}`);\r\n } else if (op === \"in\" || op === \"notin\") {\r\n const val = pred.value as unknown;\r\n if (!Array.isArray(val)) throw new Error(`Operator ${op} requires an array value for column ${key}`);\r\n // Runtime validate each element type for scalar columns\r\n validateInArrayValues(col, key, val as unknown[], op);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n orParts.push(`${qualified} ${op === \"in\" ? \"= ANY\" : \"!= ALL\"}(:${paramName})`);\r\n params[paramName] = val;\r\n addTypeHintForParam(type_hints, paramName, col, val);\r\n } else if (op === \"like\" || op === \"ilike\" || op === \"notlike\" || op === \"notilike\") {\r\n const val = pred.value as unknown;\r\n if (typeof val !== \"string\") throw new Error(`Operator ${op} requires a string value for column ${key}`);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n const sqlOp = op === \"like\" ? \"like\" : op === \"ilike\" ? \"ilike\" : op === \"notlike\" ? \"not like\" : \"not ilike\";\r\n orParts.push(`${qualified} ${sqlOp} :${paramName}`);\r\n params[paramName] = val;\r\n addTypeHintForParam(type_hints, paramName, col, val);\r\n } else {\r\n const val = pred.value as unknown;\r\n if (val === undefined) throw new Error(`Operator ${op} requires a value for column ${key}`);\r\n // Runtime type validation against column type\r\n validateComparisonValue(col, key, val, op);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n if (op === \"=\") {\r\n orParts.push(`${qualified} = :${paramName}`);\r\n } else if (op === \"!=\") {\r\n orParts.push(`${qualified} <> :${paramName}`);\r\n } else if (op === \"<\" || op === \"<=\" || op === \">\" || op === \">=\") {\r\n orParts.push(`${qualified} ${op} :${paramName}`);\r\n } else {\r\n throw new Error(`Unsupported operator: ${op}`);\r\n }\r\n params[paramName] = val;\r\n addTypeHintForParam(type_hints, paramName, col, val);\r\n }\r\n }\r\n if (orParts.length) orGroupSql.push(\"(\" + orParts.join(\" or \") + \")\");\r\n }\r\n\r\n // Compose final WHERE\r\n if (orGroupSql.length) {\r\n const andSql = andParts.length ? `(${andParts.join(\" and \")})` : \"\";\r\n const orSql = orGroupSql.join(\" or \");\r\n const full = andSql ? `${andSql} or ${orSql}` : orSql;\r\n if (full.trim().length) parts.push(\"where \" + full);\r\n } else if (andParts.length) {\r\n parts.push(\"where \" + andParts.join(\" and \"));\r\n }\r\n\r\n if (state.order.length) {\r\n const orders: string[] = [];\r\n for (const o of state.order) orders.push(`\"${table.name}\".\"${o.col}\" ${o.dir}`);\r\n parts.push(\"order by \" + orders.join(\", \"));\r\n }\r\n if (state.limit !== undefined) parts.push(\"limit \" + state.limit);\r\n if (state.offset !== undefined) parts.push(\"offset \" + state.offset);\r\n\r\n return {\r\n q: parts.join(\" \"),\r\n params : Object.keys(params).length > 0 ? params: undefined,\r\n type_hints: Object.keys(type_hints).length ? type_hints : undefined,\r\n };\r\n };\r\n })();\r\n }\r\n\r\n insert(values: ValuesForTable<S, TN>): InsertQuery<S, TN> {\r\n const table = this.table;\r\n const schema = this.schema;\r\n const state = { values, returning: [] as ColumnNames<S, TN>[] };\r\n\r\n return new (class implements InsertQuery<S, TN> {\r\n returning = (cols?: ReadonlyArray<ColumnNames<S, TN>>) => { state.returning = (cols as ColumnNames<S, TN>[] | undefined) || []; return this; };\r\n\r\n toSql = (): SqlRequest => {\r\n const cols: string[] = [];\r\n const vals: string[] = [];\r\n const params: Record<string, unknown> = {};\r\n const type_hints: Record<string, string> = {};\r\n let p = 0;\r\n\r\n for (const key in state.values) {\r\n const value = (state.values as any)[key];\r\n const col = findColumn(table, key);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n cols.push(`\"${key}\"`);\r\n vals.push(`:${paramName}`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n }\r\n\r\n const parts: string[] = [];\r\n parts.push(`insert into \"${schema.name}\".\"${table.name}\" (${cols.join(\", \")}) values (${vals.join(\", \")})`);\r\n if (state.returning.length) parts.push(\"returning \" + state.returning.join(\", \"));\r\n\r\n return {\r\n q: parts.join(\" \"),\r\n params : Object.keys(params).length > 0 ? params: undefined,\r\n type_hints: Object.keys(type_hints).length ? type_hints : undefined,\r\n };\r\n };\r\n })();\r\n }\r\n\r\n update(values: Partial<ValuesForTable<S, TN>>): UpdateQuery<S, TN> {\r\n const table = this.table;\r\n const schema = this.schema;\r\n const state = { values, where: {} as WhereForTable<S, TN>, returning: [] as ColumnNames<S, TN>[] };\r\n\r\n return new (class implements UpdateQuery<S, TN> {\r\n where = (w: WhereForTable<S, TN>) => { for (const k in w as Record<string, unknown>) state.where[k as keyof typeof w] = (w as any)[k]; return this; };\r\n wherePk = (pk: PrimaryKeyValue<S, TN>) => {\r\n const pkCols = getPrimaryKeyColumns(table);\r\n if (!pkCols || pkCols.length === 0) throw new Error(`Table ${table.name} does not have a primary key`);\r\n if (pkCols.length === 1) {\r\n const colName = pkCols[0];\r\n const colDef = findColumn(table, colName);\r\n if (pk === null || pk === undefined) throw new Error(`wherePk on ${table.name} requires a non-null value for primary key column ${colName}`);\r\n if (Array.isArray(pk)) throw new Error(`wherePk on ${table.name} expects a scalar for primary key column ${colName}, not an array`);\r\n if (isPlainObject(pk)) throw new Error(`wherePk on ${table.name} expects a scalar for primary key column ${colName}`);\r\n validateScalarForColumn(colDef, pk as unknown, `primary key ${table.name}.${colName}`);\r\n (state.where as any)[colName] = pk as unknown;\r\n } else {\r\n if (!isPlainObject(pk) || pk === null) throw new Error(`wherePk on ${table.name} requires an object with keys: ${pkCols.join(\", \")}`);\r\n const obj = pk as Record<string, unknown>;\r\n for (const k of Object.keys(obj)) {\r\n if (!pkCols.includes(k)) throw new Error(`wherePk received unknown key '${k}'. Expected keys: ${pkCols.join(\", \")}`);\r\n }\r\n for (const colName of pkCols) {\r\n if (!(colName in obj)) throw new Error(`wherePk missing key '${colName}'. Required keys: ${pkCols.join(\", \")}`);\r\n const v = obj[colName];\r\n if (v === null || v === undefined) throw new Error(`wherePk on ${table.name} requires non-null values for all primary key columns (${pkCols.join(\", \")})`);\r\n if (Array.isArray(v)) throw new Error(`wherePk on ${table.name} expects scalar values for primary key column ${colName}, not an array`);\r\n const colDef = findColumn(table, colName);\r\n validateScalarForColumn(colDef, v, `primary key ${table.name}.${colName}`);\r\n (state.where as any)[colName] = v;\r\n }\r\n }\r\n return this;\r\n };\r\n returning = (cols?: ReadonlyArray<ColumnNames<S, TN>>) => { state.returning = (cols as ColumnNames<S, TN>[] | undefined) || []; return this; };\r\n\r\n toSql = (): SqlRequest => {\r\n const params: Record<string, unknown> = {};\r\n const type_hints: Record<string, string> = {};\r\n let p = 0;\r\n\r\n const setParts: string[] = [];\r\n for (const key in state.values) {\r\n const value = (state.values as any)[key];\r\n const col = findColumn(table, key);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n setParts.push(`\"${key}\" = :${paramName}`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n }\r\n\r\n const whereClauses: string[] = [];\r\n for (const key in state.where) {\r\n const value = (state.where as any)[key];\r\n const col = findColumn(table, key);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n if (value === null) {\r\n if (!col.is_nullable) {\r\n throw new Error(`Column ${table.name}.${key} is not nullable; cannot compare to null`);\r\n }\r\n whereClauses.push(`\"${key}\" is null`);\r\n } else if (Array.isArray(value) && !isArrayShapedGeomScalarValue(col, value)) {\r\n // Validate array element types (treat as IN semantics)\r\n validateInArrayValues(col, key, value as unknown[], \"in\");\r\n whereClauses.push(`\"${key}\" = ANY(:${paramName})`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n } else {\r\n // Validate scalar matches column type (note: path/polygon may appear as arrays but represent a single scalar)\r\n validateScalarForColumn(col, value, `column ${key}`);\r\n whereClauses.push(`\"${key}\" = :${paramName}`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n }\r\n }\r\n\r\n const parts: string[] = [];\r\n parts.push(`update \"${schema.name}\".\"${table.name}\" set ${setParts.join(\", \")}`);\r\n if (whereClauses.length) parts.push(\"where \" + whereClauses.join(\" and \"));\r\n if (state.returning.length) parts.push(\"returning \" + state.returning.join(\", \"));\r\n\r\n return {\r\n q: parts.join(\" \"),\r\n params : Object.keys(params).length > 0 ? params: undefined,\r\n type_hints: Object.keys(type_hints).length ? type_hints : undefined,\r\n };\r\n };\r\n })();\r\n }\r\n\r\n delete(): DeleteQuery<S, TN> {\r\n const table = this.table;\r\n const schema = this.schema;\r\n const state = { where: {} as WhereForTable<S, TN>, returning: [] as ColumnNames<S, TN>[] };\r\n\r\n return new (class implements DeleteQuery<S, TN> {\r\n where = (w: WhereForTable<S, TN>) => { for (const k in w as Record<string, unknown>) state.where[k as keyof typeof w] = (w as any)[k]; return this; };\r\n wherePk = (pk: PrimaryKeyValue<S, TN>) => {\r\n const pkCols = getPrimaryKeyColumns(table);\r\n if (!pkCols || pkCols.length === 0) throw new Error(`Table ${table.name} does not have a primary key`);\r\n if (pkCols.length === 1) {\r\n const col = pkCols[0];\r\n if (isPlainObject(pk)) throw new Error(`wherePk on ${table.name} expects a scalar for primary key column ${col}`);\r\n (state.where as any)[col] = pk as unknown;\r\n } else {\r\n if (!isPlainObject(pk)) throw new Error(`wherePk on ${table.name} requires an object with keys: ${pkCols.join(\", \")}`);\r\n const obj = pk as Record<string, unknown>;\r\n for (const k of Object.keys(obj)) {\r\n if (!pkCols.includes(k)) throw new Error(`wherePk received unknown key '${k}'. Expected keys: ${pkCols.join(\", \")}`);\r\n }\r\n for (const col of pkCols) {\r\n if (!(col in obj)) throw new Error(`wherePk missing key '${col}'. Required keys: ${pkCols.join(\", \")}`);\r\n (state.where as any)[col] = obj[col];\r\n }\r\n }\r\n return this;\r\n };\r\n returning = (cols?: ReadonlyArray<ColumnNames<S, TN>>) => { state.returning = (cols as ColumnNames<S, TN>[] | undefined) || []; return this; };\r\n\r\n toSql = (): SqlRequest => {\r\n const params: Record<string, unknown> = {};\r\n const type_hints: Record<string, string> = {};\r\n let p = 0;\r\n\r\n const whereClauses: string[] = [];\r\n for (const key in state.where) {\r\n const value = (state.where as any)[key];\r\n const col = findColumn(table, key);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n if (value === null) {\r\n if (!col.is_nullable) {\r\n throw new Error(`Column ${table.name}.${key} is not nullable; cannot compare to null`);\r\n }\r\n whereClauses.push(`\"${key}\" is null`);\r\n } else if (Array.isArray(value)) {\r\n // Validate array element types (treat as IN semantics)\r\n validateInArrayValues(col, key, value as unknown[], \"in\");\r\n whereClauses.push(`\"${key}\" = ANY(:${paramName})`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n } else {\r\n // Validate scalar matches column type\r\n validateScalarForColumn(col, value, `column ${key}`);\r\n whereClauses.push(`\"${key}\" = :${paramName}`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n }\r\n }\r\n\r\n const parts: string[] = [];\r\n parts.push(`delete from \"${schema.name}\".\"${table.name}\"`);\r\n if (whereClauses.length) parts.push(\"where \" + whereClauses.join(\" and \"));\r\n if (state.returning.length) parts.push(\"returning \" + state.returning.join(\", \"));\r\n\r\n return {\r\n q: parts.join(\" \"),\r\n params : Object.keys(params).length > 0 ? params: undefined,\r\n type_hints: Object.keys(type_hints).length ? type_hints : undefined,\r\n };\r\n };\r\n })();\r\n }\r\n}\r\n\r\nexport function createSqlBuilder<S extends DBSchema>(schema: S): SqlBuilder<S> {\r\n return {\r\n table: <TN extends TableNames<S>>(name: TN) => new TableQueryImpl<S, TN>(schema as unknown as DBSchema, String(name)) as unknown as TableQuery<S, TN>,\r\n };\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"centia-io-sdk.js","names":["decoded: string","cached: StorageLike | null","g: any","g","str: string | null","tokens: any","options: any","headers: Record<string, string>","payload: string","e: any","redirectUri: string","url: string","e: any","headers: headers","request: RequestInit","getHeaders","res: any","get","make","get","make","get","make","get","make","ws: WebSocket","get","make","get","make","isPlainObject","data","request: RpcRequest","params: Record<string, unknown>","type_hints: Record<string, string>","parts: string[]","selectParts: string[]","cols","p","andParts: string[]","orGroupSql: string[]","orParts: string[]","orders: string[]","sources: TableDef[]","pickedSource: TableDef | null","pairs: { left: string; right: string }[] | null","cols: string[]","vals: string[]","setParts: string[]","whereClauses: string[]"],"sources":["../src/util/jwt-decode.ts","../src/util/storage.ts","../src/util/utils.ts","../src/services/gc2.services.ts","../src/CodeFlow.ts","../src/PasswordFlow.ts","../src/util/request-headers.ts","../src/util/make-request.ts","../src/util/get-response.ts","../src/Sql.ts","../src/Rpc.ts","../src/Meta.ts","../src/Status.ts","../src/Claims.ts","../src/Users.ts","../src/Ws.ts","../src/Stats.ts","../src/Tables.ts","../src/Api.ts","../src/SignUp.ts","../src/SqlBuilder.ts"],"sourcesContent":["/**\r\n * The MIT License (MIT)\r\n *\r\n * Copyright (c) 2015 Auth0, Inc. <support@auth0.com> (http://auth0.com)\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n */\r\n\r\nexport interface JwtDecodeOptions {\r\n header?: boolean;\r\n}\r\n\r\nexport interface JwtHeader {\r\n typ?: string;\r\n alg?: string;\r\n kid?: string;\r\n}\r\n\r\nexport interface JwtPayload {\r\n iss?: string;\r\n sub?: string;\r\n aud?: string[] | string;\r\n exp?: number;\r\n nbf?: number;\r\n iat?: number;\r\n jti?: string;\r\n}\r\n\r\nexport class InvalidTokenError extends Error {}\r\n\r\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\r\n\r\nfunction b64DecodeUnicode(str: string) {\r\n return decodeURIComponent(\r\n atob(str).replace(/(.)/g, (m, p) => {\r\n let code = (p as string).charCodeAt(0).toString(16).toUpperCase();\r\n if (code.length < 2) {\r\n code = \"0\" + code;\r\n }\r\n return \"%\" + code;\r\n }),\r\n );\r\n}\r\n\r\nfunction base64UrlDecode(str: string) {\r\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (output.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n output += \"==\";\r\n break;\r\n case 3:\r\n output += \"=\";\r\n break;\r\n default:\r\n throw new Error(\"base64 string is not of the correct length\");\r\n }\r\n\r\n try {\r\n return b64DecodeUnicode(output);\r\n } catch (err) {\r\n return atob(output);\r\n }\r\n}\r\n\r\nexport function jwtDecode<T = JwtHeader>(\r\n token: string,\r\n options: JwtDecodeOptions & { header: true },\r\n): T;\r\nexport function jwtDecode<T = JwtPayload>(token: string, options?: JwtDecodeOptions): T;\r\nexport function jwtDecode<T = JwtHeader | JwtPayload>(\r\n token: string,\r\n options?: JwtDecodeOptions,\r\n): T {\r\n if (typeof token !== \"string\") {\r\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\r\n }\r\n\r\n options ||= {};\r\n\r\n const pos = options.header === true ? 0 : 1;\r\n const part = token.split(\".\")[pos];\r\n\r\n if (typeof part !== \"string\") {\r\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\r\n }\r\n\r\n let decoded: string;\r\n try {\r\n decoded = base64UrlDecode(part);\r\n } catch (e) {\r\n throw new InvalidTokenError(\r\n `Invalid token specified: invalid base64 for part #${pos + 1} (${(e as Error).message})`,\r\n );\r\n }\r\n\r\n try {\r\n return JSON.parse(decoded) as T;\r\n } catch (e) {\r\n throw new InvalidTokenError(\r\n `Invalid token specified: invalid json for part #${pos + 1} (${(e as Error).message})`,\r\n );\r\n }\r\n}\r\n","export interface StorageLike {\r\n getItem(key: string): string | null\r\n setItem(key: string, value: string): void\r\n removeItem(key: string): void\r\n}\r\n\r\nclass MemoryStorage implements StorageLike {\r\n private store = new Map<string, string>()\r\n\r\n getItem(key: string): string | null {\r\n return this.store.has(key) ? this.store.get(key)! : null\r\n }\r\n\r\n setItem(key: string, value: string): void {\r\n this.store.set(key, String(value))\r\n }\r\n\r\n removeItem(key: string): void {\r\n this.store.delete(key)\r\n }\r\n}\r\n\r\nlet cached: StorageLike | null = null\r\n\r\nexport function getStorage(): StorageLike {\r\n if (cached) return cached\r\n try {\r\n const g: any = typeof globalThis !== 'undefined' ? (globalThis as any) : (window as any)\r\n if (g && g.localStorage && typeof g.localStorage.getItem === 'function') {\r\n cached = g.localStorage as StorageLike\r\n return cached\r\n }\r\n } catch (e) {\r\n // ignore and fall back to memory storage\r\n }\r\n const g: any = typeof globalThis !== 'undefined' ? (globalThis as any) : {}\r\n if (!g.__gc2_memory_storage) {\r\n g.__gc2_memory_storage = new MemoryStorage()\r\n }\r\n cached = g.__gc2_memory_storage as StorageLike\r\n return cached\r\n}\r\n","import {jwtDecode} from './jwt-decode'\r\nimport {Gc2Service} from \"../services/gc2.services\"\r\nimport {getStorage} from './storage'\r\n\r\nexport type Tokens = {\r\n accessToken: string\r\n refreshToken: string\r\n idToken?: string\r\n}\r\n\r\nexport type Options = {\r\n host: string\r\n wsHost?: string\r\n tokenUri?: string\r\n authUri?: string\r\n logoutUri?: string\r\n deviceUri?: string\r\n scope?: string\r\n clientId: string\r\n}\r\n\r\nexport type CodeFlowOptions = Options & {\r\n redirectUri: string\r\n}\r\n\r\nexport type PasswordFlowOptions = Options & {\r\n username: string\r\n password: string\r\n database: string\r\n}\r\n\r\nexport type SignUpOptions = Options & {\r\n host: string\r\n clientId: string\r\n parentDb: string\r\n redirectUri: string\r\n}\r\n\r\nexport type WsOptions = {\r\n host: string\r\n callBack: Function\r\n rel?: string\r\n wsClient?: unknown\r\n}\r\n\r\nexport type GetDeviceCodeResponse = {\r\n device_code: string\r\n user_code: string\r\n verification_uri: string\r\n verification_uri_complete?: string\r\n expires_in: number\r\n interval: number\r\n}\r\n\r\nexport type GetTokenResponse = {\r\n access_token: string\r\n expires_in: number\r\n refresh_expires_in: number\r\n refresh_token: string\r\n id_token?: string\r\n token_type: string\r\n 'not-before-policy': number\r\n session_state: string\r\n scope: string\r\n}\r\n\r\n\r\nexport const generatePkceChallenge = async () => {\r\n\r\n const generateRandomString = () => {\r\n const array = new Uint32Array(28);\r\n crypto.getRandomValues(array);\r\n return Array.from(array, dec => ('0' + dec.toString(16)).substr(-2)).join('');\r\n }\r\n\r\n const sha256 = (plain: string | undefined) => {\r\n const encoder = new TextEncoder();\r\n const data = encoder.encode(plain);\r\n return crypto.subtle.digest('SHA-256', data);\r\n }\r\n\r\n const base64urlEncode = (str: ArrayBuffer) => {\r\n\r\n return btoa(String.fromCharCode.apply(null, [...new Uint8Array(str)]))\r\n .replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\r\n }\r\n\r\n async function pkceChallengeFromVerifier(v: string | undefined) {\r\n const hashed = await sha256(v);\r\n return base64urlEncode(hashed);\r\n }\r\n\r\n const {state, codeVerifier} = {\r\n state: generateRandomString(),\r\n codeVerifier: generateRandomString(),\r\n };\r\n const codeChallenge = await pkceChallengeFromVerifier(codeVerifier);\r\n\r\n return {\r\n state,\r\n codeVerifier,\r\n codeChallenge,\r\n }\r\n}\r\n\r\nexport const isTokenExpired = (token: string): boolean => {\r\n let isJwtExpired = false\r\n const {exp} = jwtDecode(token)\r\n const currentTime = new Date().getTime() / 1000\r\n\r\n if (exp) {\r\n if (currentTime > exp) isJwtExpired = true\r\n }\r\n return isJwtExpired\r\n}\r\n\r\nexport const claims = (token: string): any => {\r\n return jwtDecode(token)\r\n}\r\n\r\nexport const passwordIsStrongEnough = (password: string, allowNull: boolean = false) => {\r\n const message = 'Entered password is too weak'\r\n if (password === '' && allowNull) return true\r\n if (password.length < 8) return message\r\n if (!(/[A-Z]/.test(password))) return message\r\n if (!(/[a-z]/.test(password))) return message\r\n if (!(/\\d/.test(password))) return message\r\n return true\r\n}\r\n\r\nexport const isLogin = async (gc2: Gc2Service): Promise<boolean> => {\r\n const {accessToken, refreshToken} = getTokens()\r\n if (!accessToken && !refreshToken) {\r\n return false\r\n }\r\n if (!accessToken || (accessToken && isTokenExpired(accessToken))) {\r\n if (refreshToken && isTokenExpired(refreshToken)) {\r\n clearTokens()\r\n clearOptions()\r\n throw new Error('Refresh token has expired. Please login again.')\r\n }\r\n if (refreshToken) {\r\n try {\r\n const data = await gc2.getRefreshToken(refreshToken)\r\n setTokens({accessToken: data.access_token, refreshToken, idToken: data?.id_token})\r\n console.log('Access token refreshed')\r\n } catch (e) {\r\n throw new Error('Could not get refresh token.')\r\n }\r\n }\r\n }\r\n return true\r\n}\r\n\r\nexport const setTokens = (tokens: Tokens): void => {\r\n getStorage().setItem('gc2_tokens', JSON.stringify({\r\n 'accessToken': tokens.accessToken,\r\n 'refreshToken': tokens.refreshToken,\r\n 'idToken': tokens?.idToken || ''\r\n }\r\n )\r\n )\r\n}\r\n\r\nexport const getTokens = (): Tokens => {\r\n const str: string | null = getStorage().getItem('gc2_tokens')\r\n const tokens: any = str ? JSON.parse(str) : {}\r\n return {\r\n accessToken: tokens?.accessToken || '',\r\n refreshToken: tokens?.refreshToken || '',\r\n idToken: tokens?.idToken || '',\r\n }\r\n}\r\n\r\nexport const setOptions = (options: CodeFlowOptions): void => {\r\n getStorage().setItem('gc2_options', JSON.stringify({\r\n 'clientId': options.clientId,\r\n 'host': options.host,\r\n 'redirectUri': options.redirectUri\r\n }\r\n )\r\n )\r\n}\r\n\r\nexport const getOptions = (): CodeFlowOptions => {\r\n const str: string | null = getStorage().getItem('gc2_options')\r\n const options: any = str ? JSON.parse(str) : {}\r\n return {\r\n clientId: options?.clientId || '',\r\n host: options?.host || '',\r\n redirectUri: options?.redirectUri || '',\r\n }\r\n}\r\n\r\nexport const base64UrlEncodeString = (str: string): string => {\r\n return btoa(new TextEncoder().encode(str).reduce((acc, byte) => acc + String.fromCharCode(byte), ''))\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=+$/, '');\r\n}\r\n\r\nexport const clearTokens = (): void => {\r\n getStorage().removeItem('gc2_tokens')\r\n}\r\n\r\nexport const clearOptions = (): void => {\r\n getStorage().removeItem('gc2_options')\r\n}\r\n\r\nexport const getNonce = (): string|null => {\r\n return <string>getStorage().getItem('gc2_nonce')\r\n}\r\nexport const clearNonce = (): void => {\r\n getStorage().removeItem('gc2_nonce')\r\n}\r\n\r\n","import {CodeFlowOptions, GetDeviceCodeResponse, getNonce, GetTokenResponse, PasswordFlowOptions, SignUpOptions} from '../util/utils';\r\n\r\nexport class Gc2Service {\r\n private readonly options: CodeFlowOptions | PasswordFlowOptions;\r\n private readonly host: string;\r\n\r\n constructor(options: CodeFlowOptions | PasswordFlowOptions | SignUpOptions) {\r\n this.options = options;\r\n this.host = options.host;\r\n }\r\n\r\n // Type guards to check if options is CodeFlowOptions or PasswordFlowOptions\r\n private isCodeFlowOptions(options: CodeFlowOptions | PasswordFlowOptions | SignUpOptions): options is CodeFlowOptions {\r\n return 'redirectUri' in options;\r\n }\r\n private isPasswordFlowOptions(options: CodeFlowOptions | PasswordFlowOptions| SignUpOptions): options is PasswordFlowOptions {\r\n return 'username' in options;\r\n }\r\n private isSignUpOptions(options: CodeFlowOptions | PasswordFlowOptions| SignUpOptions): options is SignUpOptions {\r\n return 'parentDb' in options;\r\n }\r\n\r\n private buildUrl(path: string): string {\r\n if (path.startsWith('http://') || path.startsWith('https://')) {\r\n return path;\r\n }\r\n return `${this.host}${path}`;\r\n }\r\n\r\n private async request(\r\n url: string,\r\n method: 'GET' | 'POST',\r\n body?: any,\r\n contentType: 'application/json' | 'application/x-www-form-urlencoded' = 'application/json'\r\n ): Promise<any> {\r\n const headers: Record<string, string> = {'Content-Type': contentType};\r\n let payload: string;\r\n\r\n if (contentType === 'application/json') {\r\n payload = JSON.stringify(body);\r\n } else {\r\n payload = new URLSearchParams(body).toString();\r\n }\r\n\r\n const response = await fetch(url, {\r\n method,\r\n headers,\r\n body: payload,\r\n });\r\n\r\n if (!response.ok) {\r\n const errText = await response.text();\r\n throw new Error(`HTTP error ${response.status}: ${errText}`);\r\n }\r\n\r\n return response.json();\r\n }\r\n\r\n async getDeviceCode(): Promise<GetDeviceCodeResponse> {\r\n const path = this.options.deviceUri ?? `${this.host}/api/v4/oauth/device`;\r\n return this.request(this.buildUrl(path), 'POST', {\r\n client_id: this.options.clientId,\r\n });\r\n }\r\n\r\n async pollToken(deviceCode: string, interval: number): Promise<GetTokenResponse> {\r\n const path = this.options.tokenUri ?? `${this.host}/api/v4/oauth`;\r\n const getToken = async (): Promise<GetTokenResponse | null | string> => {\r\n try {\r\n return await this.request(\r\n this.buildUrl(path),\r\n 'POST',\r\n {\r\n client_id: this.options.clientId,\r\n device_code: deviceCode,\r\n grant_type: 'device_code',\r\n }\r\n );\r\n } catch (e: any) {\r\n const err = JSON.parse(e.message.split(': ')[1]);\r\n if (err.error === 'authorization_pending') {\r\n return null;\r\n }\r\n return err.error_description;\r\n }\r\n };\r\n\r\n let response = await getToken();\r\n while (response === null) {\r\n await new Promise(resolve => setTimeout(resolve, interval * 1100));\r\n response = await getToken();\r\n }\r\n\r\n if (typeof response === 'string') {\r\n throw new Error(response);\r\n }\r\n\r\n return response;\r\n }\r\n\r\n getAuthorizationCodeURL(codeChallenge: string, state: string): string {\r\n let redirectUri: string\r\n if (this.isCodeFlowOptions(this.options)) {\r\n redirectUri = this.options.redirectUri\r\n } else {\r\n throw new Error('CodeFlow options required for this operation')\r\n }\r\n const base = this.options.authUri ?? `${this.host}/auth/`\r\n const params = new URLSearchParams()\r\n // Get nonce from local storage if it exists\r\n const nonce = getNonce()\r\n // Add parameters conditionally\r\n params.set('response_type', 'code');\r\n params.set('client_id', this.options.clientId);\r\n params.set('redirect_uri', redirectUri);\r\n params.set('state', state);\r\n params.set('code_challenge', codeChallenge);\r\n params.set('code_challenge_method', 'S256');\r\n if (nonce) {\r\n params.set('nonce', nonce);\r\n }\r\n // Only add scope if it's defined\r\n if (this.options.scope) {\r\n params.set('scope', this.options.scope);\r\n }\r\n return `${base}?${params.toString()}`;\r\n }\r\n\r\n getSignUpURL(): string {\r\n if (!this.isSignUpOptions(this.options)) {\r\n throw new Error('CodeFlow options required for this operation')\r\n }\r\n const base = this.options.authUri ?? `${this.host}/signup/`\r\n const params = new URLSearchParams()\r\n params.set('client_id', this.options.clientId)\r\n params.set('parentdb', this.options.parentDb)\r\n params.set('redirect_uri', this.options.redirectUri)\r\n return `${base}?${params.toString()}`;\r\n }\r\n\r\n async getAuthorizationCodeToken(\r\n code: string | string[],\r\n codeVerifier: string | null\r\n ): Promise<GetTokenResponse> {\r\n let redirectUri: string\r\n if (this.isCodeFlowOptions(this.options)) {\r\n redirectUri = this.options.redirectUri\r\n } else {\r\n throw new Error('CodeFlow options required for this operation')\r\n }\r\n const path = this.options.tokenUri ?? `${this.host}/api/v4/oauth`;\r\n return this.request(\r\n this.buildUrl(path),\r\n 'POST',\r\n {\r\n client_id: this.options.clientId,\r\n redirect_uri: redirectUri,\r\n grant_type: 'authorization_code',\r\n code,\r\n code_verifier: codeVerifier,\r\n },\r\n 'application/x-www-form-urlencoded'\r\n );\r\n }\r\n\r\n async getPasswordToken(): Promise<GetTokenResponse> {\r\n let username, password, database\r\n if (this.isPasswordFlowOptions(this.options)) {\r\n username = this.options.username\r\n password = this.options.password\r\n database = this.options.database\r\n } else {\r\n throw new Error('PasswordFlow options required for this operation')\r\n }\r\n const path = `${this.host}/api/v4/oauth`;\r\n return this.request(\r\n this.buildUrl(path),\r\n 'POST',\r\n {\r\n client_id: this.options.clientId,\r\n grant_type: 'password',\r\n username,\r\n password,\r\n database,\r\n }\r\n );\r\n }\r\n\r\n async getRefreshToken(token: string): Promise<GetTokenResponse> {\r\n const path = this.options.tokenUri ?? `${this.host}/api/v4/oauth`;\r\n return this.request(\r\n this.buildUrl(path),\r\n 'POST',\r\n {\r\n client_id: this.options.clientId,\r\n grant_type: 'refresh_token',\r\n refresh_token: token,\r\n }\r\n );\r\n }\r\n\r\n getSignOutURL(): string {\r\n let redirectUri: string\r\n if (this.isCodeFlowOptions(this.options)) {\r\n redirectUri = this.options.redirectUri\r\n } else {\r\n throw new Error('CodeFlow options required for this operation')\r\n }\r\n const params = new URLSearchParams({\r\n redirect_uri: redirectUri,\r\n });\r\n return this.options.logoutUri ?? `${this.host}/signout?${params.toString()}`;\r\n }\r\n}\r\n","import {Gc2Service} from './services/gc2.services'\r\nimport {generatePkceChallenge, isLogin, setTokens, setOptions, clearNonce} from './util/utils'\r\nimport {CodeFlowOptions, clearTokens, clearOptions} from \"./util/utils\";\r\nimport {getStorage} from './util/storage'\r\n\r\nexport default class CodeFlow {\r\n options: CodeFlowOptions\r\n service: Gc2Service\r\n\r\n constructor(options: CodeFlowOptions) {\r\n this.options = options\r\n this.service = new Gc2Service(options)\r\n }\r\n\r\n public async redirectHandle(): Promise<boolean> {\r\n const url: string = window.location.search\r\n const queryParams = new URLSearchParams(url)\r\n\r\n const error = queryParams.get('error')\r\n if (error) {\r\n throw new Error(`Failed to redirect: ${url}`)\r\n }\r\n\r\n const code = queryParams.get('code')\r\n if (code) {\r\n const state = queryParams.get('state')\r\n if (state !== getStorage().getItem('state')) {\r\n throw new Error('Possible CSRF attack. Aborting login!')\r\n }\r\n try {\r\n const {\r\n access_token,\r\n refresh_token,\r\n id_token,\r\n } = await this.service.getAuthorizationCodeToken(code, getStorage().getItem('codeVerifier'))\r\n setTokens({accessToken: access_token, refreshToken: refresh_token, idToken: id_token})\r\n setOptions({\r\n clientId: this.options.clientId,\r\n host: this.options.host,\r\n redirectUri: this.options.redirectUri\r\n })\r\n getStorage().removeItem('state')\r\n getStorage().removeItem('codeVerifier')\r\n\r\n // Remove state and code from the redirect url\r\n const params = new URLSearchParams(window.location.search);\r\n params.delete('code')\r\n params.delete('state')\r\n const loc = window.location\r\n const newUrl = loc.origin + loc.pathname + (params.size > 0 ? '?' + params.toString() : '')\r\n history.pushState(null, '', newUrl);\r\n\r\n return Promise.resolve(true)\r\n\r\n } catch (e: any) {\r\n throw new Error(e.message)\r\n }\r\n }\r\n return await isLogin(this.service);\r\n }\r\n\r\n public async signIn(): Promise<void> {\r\n const {state, codeVerifier, codeChallenge} = await generatePkceChallenge()\r\n getStorage().setItem(\"state\", state)\r\n getStorage().setItem(\"codeVerifier\", codeVerifier)\r\n window.location.assign(this.service.getAuthorizationCodeURL(\r\n codeChallenge,\r\n state,\r\n ))\r\n }\r\n\r\n public signOut(): void {\r\n this.clear()\r\n window.location.assign(this.service.getSignOutURL())\r\n }\r\n\r\n public clear(): void {\r\n clearTokens()\r\n clearOptions()\r\n clearNonce()\r\n }\r\n}\r\n","import {Gc2Service,} from './services/gc2.services'\r\nimport {isLogin, setTokens, setOptions, PasswordFlowOptions, clearTokens, clearOptions, clearNonce} from './util/utils'\r\n\r\nexport default class PasswordFlow {\r\n options: PasswordFlowOptions\r\n service: Gc2Service\r\n\r\n constructor(options: PasswordFlowOptions) {\r\n this.options = options\r\n this.service = new Gc2Service(options)\r\n }\r\n\r\n public async signIn(): Promise<void> {\r\n const {access_token, refresh_token} = await this.service.getPasswordToken()\r\n setTokens({accessToken: access_token, refreshToken: refresh_token})\r\n setOptions({\r\n clientId: this.options.clientId,\r\n host: this.options.host,\r\n redirectUri: ''\r\n })\r\n }\r\n\r\n public signOut(): void {\r\n this.clear()\r\n }\r\n\r\n public clear(): void {\r\n clearTokens()\r\n clearOptions()\r\n clearNonce()\r\n }\r\n}\r\n","/**\r\n * @author Martin Høgh <mh@mapcentia.com>\r\n * @copyright 2013-2024 MapCentia ApS\r\n * @license http://www.gnu.org/licenses/#AGPL GNU AFFERO GENERAL PUBLIC LICENSE 3\r\n *\r\n */\r\n\r\nimport {getOptions, getTokens, isLogin} from \"./utils\";\r\nimport {Gc2Service} from \"../services/gc2.services\";\r\n\r\nconst getHeaders = async (contentType: string|null = 'application/json'): Promise<any>=> {\r\n type headers = {\r\n Accept: string,\r\n Cookie: string,\r\n Authorization: string|null,\r\n 'Content-Type'?: string\r\n }\r\n\r\n const options = getOptions()\r\n const service = new Gc2Service(options)\r\n\r\n // We check is token needs refreshing\r\n if (!await isLogin(service)) {\r\n return Promise.reject('Is not logged in')\r\n }\r\n\r\n const {accessToken} = getTokens()\r\n\r\n const headers: headers = {\r\n Accept: 'application/json',\r\n Cookie: 'XDEBUG_SESSION=XDEBUG_ECLIPSE',\r\n Authorization: accessToken ? 'Bearer ' + accessToken : null,\r\n }\r\n if (contentType) {\r\n headers['Content-Type'] = contentType\r\n }\r\n return headers\r\n}\r\nexport default getHeaders\r\n\r\n","/**\r\n * @author Martin Høgh <mh@mapcentia.com>\r\n * @copyright 2013-2024 MapCentia ApS\r\n * @license http://www.gnu.org/licenses/#AGPL GNU AFFERO GENERAL PUBLIC LICENSE 3\r\n *\r\n */\r\n\r\nimport getHeaders from './request-headers'\r\nimport Method from '../common/http-verbs'\r\nimport {getOptions} from './utils'\r\n\r\nexport const make = async (version: string, resource: string, method: Method, payload?: any, contentType: string | null = 'application/json'): Promise<any> => {\r\n const options = getOptions()\r\n const headers = await getHeaders(contentType)\r\n\r\n let request: RequestInit = {\r\n method: method,\r\n headers: headers,\r\n redirect: 'manual'\r\n }\r\n if (payload) {\r\n request.body = contentType === 'application/json' ? JSON.stringify(payload) : payload\r\n }\r\n return await fetch(options.host + `/api/v${version}/${resource}`, request)\r\n}\r\nexport default make\r\n","const get = async (response: Response, expectedCode: number): Promise<any> => {\r\n let res: any = null\r\n let bodyText = ''\r\n\r\n // Read the body only once as text. This avoids \"body used already\" with node-fetch.\r\n try {\r\n // Even for 204/303, text() is safe and will return '' for empty bodies\r\n bodyText = await response.text()\r\n } catch (e) {\r\n // Ignore body read errors; we'll proceed with null/empty body\r\n }\r\n\r\n // Try to parse JSON if there is a body\r\n if (bodyText) {\r\n try {\r\n res = JSON.parse(bodyText)\r\n } catch (e) {\r\n // Not JSON; keep res as null and use bodyText for error messages\r\n }\r\n }\r\n\r\n if (response.status !== expectedCode) {\r\n const msg = (res && (res.message || res.error)) || bodyText || `Unexpected status ${response.status}`\r\n throw new Error(msg)\r\n }\r\n\r\n // For 204/303, res will be null (no body), which is fine for callers expecting no content\r\n return res\r\n}\r\n\r\nexport default get\r\n","import make from \"./util/make-request\";\r\nimport get from \"./util/get-response\";\r\nimport {SqlRequest, SQLResponse, DataRow, TypedSqlRequest} from \"./types/pgTypes\";\r\n\r\nexport default class Sql {\r\n // Overload for typed request: preserves row typing\r\n async exec<R extends DataRow>(request: TypedSqlRequest<R>): Promise<SQLResponse<R>>;\r\n // Fallback overload: plain SqlRequest returns generic DataRow\r\n async exec(request: SqlRequest): Promise<SQLResponse<DataRow>>;\r\n // Implementation\r\n async exec(request: SqlRequest): Promise<SQLResponse<any>> {\r\n const response = await make('4', `sql`, 'POST', request)\r\n return await get(response, 200)\r\n }\r\n}\r\n","import make from \"./util/make-request\";\r\nimport get from \"./util/get-response\";\r\nimport {RpcRequest, RpcResponse} from \"./types/pgTypes\";\r\n\r\nexport default class Rpc {\r\n async call(request: RpcRequest): Promise<RpcResponse> {\r\n const response = await make('4', `call`, 'POST', request)\r\n return await get(response, 200)\r\n }\r\n}\r\n","import make from \"./util/make-request\";\r\nimport get from \"./util/get-response\";\r\n\r\nexport default class Meta {\r\n async query(rel: string): Promise<any> {\r\n const response = await make('3', `meta/${rel}`, 'GET', null)\r\n return await get(response, 200)\r\n }\r\n}\r\n","import {getTokens} from \"./util/utils\";\r\n\r\nexport default class Status {\r\n isAuth() {\r\n const tokens = getTokens()\r\n return !(!tokens.accessToken && !tokens.refreshToken);\r\n }\r\n\r\n getTokens() {\r\n return getTokens()\r\n }\r\n}\r\n","import {claims, getTokens} from \"./util/utils\";\r\n\r\nexport default class Claims {\r\n get() {\r\n const tokens = getTokens().accessToken\r\n return claims(tokens);\r\n }\r\n}\r\n","import make from \"./util/make-request\";\r\nimport get from \"./util/get-response\";\r\n\r\nexport default class Users {\r\n async get(user: string): Promise<any> {\r\n const response = await make('4', `users/${user}`, 'GET', null)\r\n return await get(response, 200)\r\n }\r\n}\r\n","import {WsOptions, getTokens} from \"./util/utils\";\r\n\r\nexport default class Ws {\r\n private readonly options: WsOptions;\r\n\r\n constructor(options: WsOptions) {\r\n this.options = options;\r\n this.options.wsClient = this.options?.wsClient ?? WebSocket\r\n }\r\n\r\n connect(): void {\r\n const me = this;\r\n const {accessToken} = getTokens()\r\n\r\n const connect = () => {\r\n let queryString = `?token=` + accessToken\r\n if (this.options?.rel) {\r\n queryString = queryString + `&rel=` + this.options.rel\r\n }\r\n const WSClass = this.options.wsClient as any;\r\n const ws: WebSocket = new WSClass(\r\n this.options.host + `/` + queryString,\r\n );\r\n\r\n ws.onopen = function () {\r\n console.log('WebSocket connected!');\r\n };\r\n\r\n ws.onmessage = function (event: MessageEvent) {\r\n // Handle incoming messages\r\n me.options.callBack((event as any).data)\r\n };\r\n\r\n ws.onclose = function (event: CloseEvent) {\r\n if (accessToken !== '') {\r\n console.log('WebSocket closed, reconnecting in 3 seconds...', (event as any).reason);\r\n setTimeout(connect, 3000); // Try to reconnect\r\n }\r\n };\r\n\r\n ws.onerror = function (err: Event) {\r\n console.error('WebSocket error observed:', err);\r\n // Close the socket on error to ensure clean reconnection\r\n ws.close();\r\n };\r\n };\r\n\r\n // Start the connection\r\n if (accessToken !== '') {\r\n connect();\r\n }\r\n }\r\n}\r\n","import make from \"./util/make-request\";\r\nimport get from \"./util/get-response\";\r\n\r\nexport default class Stats {\r\n async get(): Promise<any> {\r\n const response = await make('4', `stats`, 'GET', null)\r\n return await get(response, 200)\r\n }\r\n}\r\n","import make from \"./util/make-request\";\r\nimport get from \"./util/get-response\";\r\n\r\nexport default class Tables {\r\n async get(schema: string, table: string): Promise<any> {\r\n const response = await make('4', `schemas/${encodeURIComponent(schema)}/tables/${encodeURIComponent(table)}`, 'GET', null)\r\n return await get(response, 200)\r\n }\r\n\r\n async create(schema: string, table: string, payload: any): Promise<any> {\r\n const response = await make('4', `schemas/${encodeURIComponent(schema)}/tables/${encodeURIComponent(table)}`, 'POST', payload)\r\n return await get(response, 200)\r\n }\r\n\r\n async patch(schema: string, table: string, payload: any): Promise<any> {\r\n const response = await make('4', `schemas/${encodeURIComponent(schema)}/tables/${encodeURIComponent(table)}`, 'PATCH', payload)\r\n return await get(response, 200)\r\n }\r\n\r\n async delete(schema: string, table: string): Promise<any> {\r\n const response = await make('4', `schemas/${encodeURIComponent(schema)}/tables/${encodeURIComponent(table)}`, 'DELETE', null)\r\n return await get(response, 204)\r\n }\r\n}\r\n","import Rpc from \"./Rpc\"\r\nimport {RpcRequest} from \"./types/pgTypes\"\r\n\r\ntype MethodsOf<T> = {\r\n [K in keyof T]: T[K] extends (...args: infer A) => infer R ? (...args: A) => R : never;\r\n};\r\n\r\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\r\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\r\n}\r\n\r\nfunction validateParamsForMethod(method: string, params: unknown): Record<string, unknown> | Array<Record<string, unknown>> {\r\n // Allow either a single plain object or an array of plain objects\r\n if (Array.isArray(params)) {\r\n const badIndex = params.findIndex(p => !isPlainObject(p));\r\n if (badIndex !== -1) {\r\n throw new TypeError(`createApi: Invalid argument at index ${badIndex} for RPC method \"${method}\". Expected a plain object.`);\r\n }\r\n return params as Array<Record<string, unknown>>;\r\n }\r\n if (params === undefined) {\r\n return {};\r\n }\r\n if (!isPlainObject(params)) {\r\n throw new TypeError(`createApi: Invalid argument for RPC method \"${method}\". Expected a plain object.`);\r\n }\r\n return params as Record<string, unknown>;\r\n}\r\n\r\nfunction extractDataFromResponse(method: string, res: any): any[] {\r\n if (!res || typeof res !== \"object\") {\r\n throw new TypeError(`createApi: Invalid RPC response for method \"${method}\". Expected an object.`);\r\n }\r\n if ((res as any).jsonrpc !== \"2.0\") {\r\n throw new TypeError(`createApi: Invalid RPC response for method \"${method}\". Missing or invalid jsonrpc version.`);\r\n }\r\n\r\n // Handle JSON-RPC error shape: { jsonrpc: \"2.0\", error: { code, message, data? }, id }\r\n const err = (res as any).error;\r\n if (err !== undefined) {\r\n if (!err || typeof err !== \"object\") {\r\n throw new TypeError(`createApi: Invalid RPC error for method \"${method}\". Expected 'error' to be an object.`);\r\n }\r\n const code = (err as any).code;\r\n const message = (err as any).message;\r\n const data = (err as any).data;\r\n const codeIsNum = typeof code === \"number\" && Number.isFinite(code);\r\n const msgIsStr = typeof message === \"string\" && message.length > 0;\r\n const details = msgIsStr ? message : \"Unknown error\";\r\n const e = new Error(`createApi: RPC error for method \"${method}\"${codeIsNum ? ` (${code})` : \"\"}: ${details}`);\r\n // Attach JSON-RPC specific properties for consumers to inspect\r\n ;(e as any).code = code;\r\n if (data !== undefined) (e as any).data = data;\r\n (e as any).method = method;\r\n (e as any).name = \"JsonRpcError\";\r\n throw e;\r\n }\r\n\r\n const result = (res as any).result;\r\n if (!result || typeof result !== \"object\") {\r\n throw new TypeError(`createApi: Invalid RPC response for method \"${method}\". Missing result object.`);\r\n }\r\n const data = (result as any).data;\r\n if (!Array.isArray(data)) {\r\n throw new TypeError(`createApi: Invalid RPC response for method \"${method}\". Expected result.data to be an array.`);\r\n }\r\n return data;\r\n}\r\n\r\n// Implementation signature (wide) — overloads above control the public typing\r\nasync function dispatch<K extends keyof any & string>(name: K, paramsLike: unknown): Promise<any> {\r\n if (typeof name !== \"string\" || name.length === 0) {\r\n throw new TypeError(\"createApi: RPC method name must be a non-empty string.\");\r\n }\r\n\r\n const params = validateParamsForMethod(String(name), paramsLike);\r\n\r\n const rpc = new Rpc()\r\n const request: RpcRequest = {\r\n jsonrpc: \"2.0\",\r\n method: name,\r\n id: 1,\r\n // JSON-RPC allows both object and array params; the SDK type is object-based, so cast for wire-compat.\r\n params: params as any,\r\n }\r\n const res = await rpc.call(request)\r\n return extractDataFromResponse(String(name), res)\r\n}\r\n\r\nexport default function createApi<T>(): MethodsOf<T> {\r\n return new Proxy(\r\n {},\r\n {\r\n get(_target, prop) {\r\n if (typeof prop !== \"string\") return undefined;\r\n return (...args: any[]) => {\r\n const packed = args.length === 0 ? {} : (args.length === 1 ? args[0] : args);\r\n return (dispatch as any)(prop, packed);\r\n };\r\n },\r\n }\r\n ) as unknown as MethodsOf<T>;\r\n}\r\n","import {Gc2Service} from './services/gc2.services'\r\nimport {SignUpOptions} from './util/utils'\r\n\r\nexport default class SignUp {\r\n options: SignUpOptions\r\n service: Gc2Service\r\n\r\n constructor(options: SignUpOptions) {\r\n this.options = options\r\n this.service = new Gc2Service(options)\r\n }\r\n\r\n public async signUp(): Promise<void> {\r\n window.location.assign(this.service.getSignUpURL())\r\n }\r\n}\r\n","import type { SqlRequest } from \"./types/pgTypes\";\r\nimport * as PgTypes from \"./types/pgTypes\";\r\n\r\n// Basic schema types (matches provided schema/schema.json shape)\r\nexport interface ColumnDef {\r\n name: string;\r\n _typname: string; // e.g. int4, varchar, jsonb\r\n _is_array: boolean;\r\n is_nullable: boolean;\r\n type?: string; // e.g. character varying(255)\r\n [key: string]: any;\r\n}\r\n\r\nexport interface ConstraintDef {\r\n name: string;\r\n constraint: \"primary\" | \"foreign\" | string;\r\n columns?: readonly string[];\r\n referenced_table?: string;\r\n referenced_columns?: readonly string[];\r\n check?: string;\r\n}\r\n\r\nexport interface TableDef {\r\n name: string;\r\n // Use readonly arrays so `as const` schemas preserve literal column names for typing\r\n columns: readonly ColumnDef[];\r\n constraints?: readonly ConstraintDef[];\r\n [key: string]: any;\r\n}\r\n\r\nexport interface DBSchema {\r\n name: string;\r\n // Use readonly arrays so `as const` schemas preserve literal table names for typing\r\n tables: readonly TableDef[];\r\n}\r\n\r\nexport type ScalarFromTypename<T extends string> =\r\n// Numeric\r\n T extends \"int2\" | \"int4\" | \"int8\" ? number :\r\n T extends \"float4\" | \"float8\" ? number :\r\n T extends \"numeric\" | \"decimal\" ? PgTypes.NumericString :\r\n // Character\r\n T extends \"varchar\" | \"text\" | \"bpchar\" | \"char\" ? string :\r\n // Boolean\r\n T extends \"bool\" ? PgTypes.PgBoolean :\r\n // JSON\r\n T extends \"json\" | \"jsonb\" ? PgTypes.JsonValue :\r\n // Date/Time\r\n T extends \"date\" ? PgTypes.DateString :\r\n T extends \"time\" ? PgTypes.TimeString :\r\n T extends \"timetz\" ? PgTypes.TimetzString :\r\n T extends \"timestamp\" ? PgTypes.TimestampString :\r\n T extends \"timestamptz\" ? PgTypes.TimestamptzString :\r\n T extends \"interval\" ? PgTypes.IntervalValue :\r\n // Geometric\r\n T extends \"point\" ? PgTypes.Point :\r\n T extends \"line\" ? PgTypes.Line :\r\n T extends \"lseg\" ? PgTypes.Lseg :\r\n T extends \"box\" ? PgTypes.Box :\r\n T extends \"path\" ? PgTypes.Path :\r\n T extends \"polygon\" ? PgTypes.Polygon :\r\n T extends \"circle\" ? PgTypes.Circle :\r\n // Ranges\r\n T extends \"int4range\" ? PgTypes.Int4Range :\r\n T extends \"int8range\" ? PgTypes.Int8Range :\r\n T extends \"numrange\" ? PgTypes.NumRange :\r\n T extends \"tsrange\" ? PgTypes.TsRange :\r\n T extends \"tstzrange\" ? PgTypes.TstzRange :\r\n T extends \"daterange\" ? PgTypes.DateRange :\r\n string;\r\n\r\n// If schema object is declared with `as const`, these produce better types.\r\nexport type TableNames<S extends DBSchema> = S[\"tables\"][number][\"name\"];\r\nexport type TableByName<S extends DBSchema, TN extends string> = Extract<S[\"tables\"][number], { name: TN }>;\r\nexport type ColumnsOf<S extends DBSchema, TN extends string> = TableByName<S, TN>[\"columns\"];\r\nexport type ColumnNames<S extends DBSchema, TN extends string> = ColumnsOf<S, TN>[number][\"name\"];\r\n\r\n// Constraint helpers for typing allowed JOIN targets\r\ntype ConstraintsOfTable<T extends TableDef> = T[\"constraints\"] extends readonly any[] ? T[\"constraints\"][number] : never;\r\n\r\ntype ReferencedTablesOfTable<T extends TableDef> = ConstraintsOfTable<T> extends infer C\r\n ? C extends { constraint: \"foreign\"; referenced_table: infer RT extends string }\r\n ? RT\r\n : never\r\n : never;\r\n\r\n// Allowed join targets when selecting from TN: only tables referenced by TN via foreign key constraints\r\nexport type AllowedJoinTables<S extends DBSchema, TN extends string> = ReferencedTablesOfTable<TableByName<S, TN>>;\r\n\r\n// Primary key helpers for typing wherePk\r\n// Extract the primary constraint for a table (if any)\r\ntype PrimaryConstraintOfTable<T extends TableDef> = ConstraintsOfTable<T> extends infer C\r\n ? Extract<C, { constraint: \"primary\" }>\r\n : never;\r\n\r\n// The list of PK column names for the table (as a readonly tuple when schema is const)\r\ntype PrimaryKeyColumns<S extends DBSchema, TN extends string> = PrimaryConstraintOfTable<TableByName<S, TN>> extends {\r\n columns: infer A extends readonly string[]\r\n}\r\n ? A\r\n : never;\r\n\r\ntype IsTupleOfLength1<T extends readonly any[]> = T extends readonly [any] ? true : false;\r\n\r\n// Value type accepted by wherePk():\r\n// - single-column PK -> that column's value type\r\n// - composite PK -> an object with all PK columns\r\n// - no PK -> never (method becomes impossible to call in TS)\r\nexport type PrimaryKeyValue<S extends DBSchema, TN extends string> = PrimaryKeyColumns<S, TN> extends infer PK extends readonly string[]\r\n ? PK extends never\r\n ? never\r\n : IsTupleOfLength1<PK> extends true\r\n ? ColumnValueFor<S, TN, PK[0]>\r\n : { [K in PK[number]]: ColumnValueFor<S, TN, K> }\r\n : never;\r\n\r\n// Value type for a column based on typname and array/nullability flags.\r\n// Note: If schema is not `as const`, flags are not literal and result type becomes broader.\r\nexport type ColumnValueFromDef<C extends ColumnDef> =\r\n C[\"_is_array\"] extends true\r\n ? PgTypes.PgArray<ScalarFromTypename<C[\"_typname\"]>>\r\n : ScalarFromTypename<C[\"_typname\"]>;\r\n\r\nexport type NullableColumnValueFromDef<C extends ColumnDef> =\r\n C[\"is_nullable\"] extends true ? ColumnValueFromDef<C> | null : ColumnValueFromDef<C>;\r\n\r\n// Helpers to map a column name to its definition and value type\r\nexport type ColumnDefByName<S extends DBSchema, TN extends string, K extends string> = Extract<ColumnsOf<S, TN>[number], { name: K }>;\r\nexport type ColumnValueFor<S extends DBSchema, TN extends string, K extends string> = NullableColumnValueFromDef<ColumnDefByName<S, TN, K>>;\r\n\r\nexport type ValuesForTable<S extends DBSchema, TN extends string> = Partial<{\r\n [K in ColumnNames<S, TN>]: NullableColumnValueFromDef<Extract<ColumnsOf<S, TN>[number], { name: K }>>\r\n}>;\r\n\r\n// Where clause accepts equality and array (= ANY()) semantics.\r\nexport type WhereForTable<S extends DBSchema, TN extends string> = Partial<{\r\n [K in ColumnNames<S, TN>]:\r\n | NullableColumnValueFromDef<Extract<ColumnsOf<S, TN>[number], { name: K }>>\r\n | NullableColumnValueFromDef<Extract<ColumnsOf<S, TN>[number], { name: K }>>[]\r\n}>;\r\n\r\n// Extended operator support for where-chaining\r\nexport type WhereOperator =\r\n | \"=\"\r\n | \"!=\"\r\n | \"<\"\r\n | \"<=\"\r\n | \">\"\r\n | \">=\"\r\n | \"like\"\r\n | \"ilike\"\r\n | \"notlike\"\r\n | \"notilike\"\r\n | \"in\"\r\n | \"notin\"\r\n | \"isnull\"\r\n | \"notnull\";\r\n\r\n// Typed operator predicate for group APIs (compile-time value checks per operator)\r\nexport type OpPredicateForCol<S extends DBSchema, TN extends string, K extends ColumnNames<S, TN>> =\r\n | readonly [K, \"isnull\" | \"notnull\"]\r\n | readonly [K, \"like\" | \"ilike\" | \"notlike\" | \"notilike\", string]\r\n | readonly [K, \"in\" | \"notin\", ReadonlyArray<ColumnValueFor<S, TN, K>>]\r\n | readonly [K, \"=\" | \"!=\" | \"<\" | \"<=\" | \">\" | \">=\", ColumnValueFor<S, TN, K>];\r\n\r\nexport type OpPredicate<S extends DBSchema, TN extends string> = {\r\n [K in ColumnNames<S, TN>]: OpPredicateForCol<S, TN, K>\r\n}[ColumnNames<S, TN>];\r\n\r\n// Additional type helpers\r\nexport type IsAny<T> = 0 extends (1 & T) ? true : false;\r\n\r\nexport type OpArgsFor<S extends DBSchema, TN extends string, K extends ColumnNames<S, TN>, O extends WhereOperator> =\r\n IsAny<O> extends true ? never[] :\r\n O extends \"isnull\" | \"notnull\" ? [] :\r\n O extends \"like\" | \"ilike\" | \"notlike\" | \"notilike\" ? [value: string] :\r\n O extends \"in\" | \"notin\" ? [value: ReadonlyArray<ColumnValueFor<S, TN, K>>] :\r\n O extends \"=\" | \"!=\" | \"<\" | \"<=\" | \">\" | \">=\" ? [value: ColumnValueFor<S, TN, K>] :\r\n never[];\r\n\r\n// ---------- Runtime helpers ----------\r\nfunction findTable(schema: DBSchema, name: string): TableDef {\r\n const tbl = schema.tables.find(t => t.name === name);\r\n if (!tbl) throw new Error(`Table not found in schema: ${name}`);\r\n return tbl;\r\n}\r\n\r\nfunction findColumn(table: TableDef, name: string): ColumnDef {\r\n const col = table.columns.find(c => c.name === name);\r\n if (!col) throw new Error(`Column not found in table ${table.name}: ${name}`);\r\n return col;\r\n}\r\n\r\nfunction getPrimaryKeyColumns(table: TableDef): string[] {\r\n const cs = table.constraints || [];\r\n const pk = cs.find(c => c.constraint === \"primary\" && Array.isArray(c.columns) && c.columns.length > 0);\r\n return pk ? (pk.columns as readonly string[]).map(String) : [];\r\n}\r\n\r\nfunction typeNameToHint(typname: string, isArray: boolean): string | undefined {\r\n if (!typname) return undefined;\r\n const base = typname; // Already pg typname\r\n return isArray ? base + \"[]\" : base;\r\n}\r\n\r\n// Utility to push type_hints for array params, since arrays are not inferred by default.\r\nfunction addTypeHintForParam(\r\n typeHints: Record<string, string>,\r\n paramName: string,\r\n col: ColumnDef,\r\n value: unknown\r\n) {\r\n // Always provide a type hint: scalar as base typname, arrays as base[]\r\n // Special-case array-shaped geometric scalars (path, polygon):\r\n // - Equality scalar: value looks like an array but represents a single scalar -> hint as base (no [])\r\n // - IN/ANY arrays: value is array of those scalars (nested arrays) -> hint as base[]\r\n let isArr = col._is_array;\r\n if (Array.isArray(value)) {\r\n if (isArrayShapedGeomTypename(col._typname)) {\r\n const top = value as unknown[];\r\n // If every element is itself an array, it's an array of geom scalars\r\n isArr = top.every(Array.isArray);\r\n } else {\r\n isArr = true;\r\n }\r\n }\r\n const hint = typeNameToHint(col._typname, isArr);\r\n if (hint) typeHints[paramName] = hint;\r\n}\r\n\r\n// Runtime value type validation helpers for whereOp predicates\r\nfunction expectedScalarKind(typname: string): \"number\" | \"string\" | \"boolean\" | \"json\" | \"range\" | \"interval\" | \"geom\" | \"unknown\" {\r\n const t = typname.toLowerCase();\r\n if (t === \"int2\" || t === \"int4\" || t === \"int8\" || t === \"float4\" || t === \"float8\") return \"number\";\r\n if (t === \"numeric\" || t === \"decimal\") return \"string\"; // numeric represented as string in SDK\r\n if (t === \"varchar\" || t === \"text\" || t === \"bpchar\" || t === \"char\" || t === \"date\" || t === \"time\" || t === \"timetz\" || t === \"timestamp\" || t === \"timestamptz\") return \"string\";\r\n if (t === \"bool\") return \"boolean\";\r\n if (t === \"json\" || t === \"jsonb\") return \"json\";\r\n if (t === \"int4range\" || t === \"int8range\" || t === \"numrange\" || t === \"tsrange\" || t === \"tstzrange\" || t === \"daterange\") return \"range\";\r\n if (t === \"interval\") return \"interval\";\r\n if (t === \"point\" || t === \"line\" || t === \"lseg\" || t === \"box\" || t === \"path\" || t === \"polygon\" || t === \"circle\") return \"geom\";\r\n return \"unknown\";\r\n}\r\n\r\nfunction isArrayShapedGeomTypename(typname: string): boolean {\r\n const t = typname.toLowerCase();\r\n // path and polygon are represented as arrays at the value level, but are scalar types in PG\r\n return t === \"path\" || t === \"polygon\";\r\n}\r\n\r\nfunction isArrayShapedGeomScalarValue(col: ColumnDef, value: unknown): boolean {\r\n // Detect if a provided array value represents a single scalar for array-shaped geometric types\r\n if (!Array.isArray(value)) return false;\r\n if (!isArrayShapedGeomTypename(col._typname)) return false;\r\n const top = value as unknown[];\r\n // If every element is an array, then this is an array of scalars (for IN/ANY)\r\n // Otherwise, it's a single scalar (path or polygon)\r\n return !top.every(Array.isArray);\r\n}\r\n\r\nfunction expectedRangeInnerKind(typname: string): \"number\" | \"string\" | \"unknown\" {\r\n const t = typname.toLowerCase();\r\n if (t === \"int4range\" || t === \"int8range\") return \"number\";\r\n if (t === \"numrange\" || t === \"tsrange\" || t === \"tstzrange\" || t === \"daterange\") return \"string\";\r\n return \"unknown\";\r\n}\r\n\r\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\r\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\r\n}\r\n\r\nfunction isFiniteNumber(n: unknown): n is number {\r\n return typeof n === \"number\" && Number.isFinite(n);\r\n}\r\n\r\nfunction isPointLike(v: unknown): v is { x: number; y: number } {\r\n if (!isPlainObject(v)) return false;\r\n const x = (v as any).x;\r\n const y = (v as any).y;\r\n return isFiniteNumber(x) && isFiniteNumber(y);\r\n}\r\n\r\nfunction validateGeometryForColumn(col: ColumnDef, value: unknown, context: string): void {\r\n const t = col._typname.toLowerCase();\r\n\r\n if (t === \"point\") {\r\n if (!isPointLike(value)) {\r\n throw new Error(`Invalid value for ${context}. Expected Point { x: number, y: number }`);\r\n }\r\n return;\r\n }\r\n\r\n if (t === \"line\") {\r\n if (!isPlainObject(value)) throw new Error(`Invalid value for ${context}. Expected Line { A: number, B: number, C: number }`);\r\n const A = (value as any).A, B = (value as any).B, C = (value as any).C;\r\n if (!isFiniteNumber(A) || !isFiniteNumber(B) || !isFiniteNumber(C)) {\r\n throw new Error(`Invalid Line for ${context}. A, B, C must be finite numbers`);\r\n }\r\n return;\r\n }\r\n\r\n if (t === \"lseg\" || t === \"box\") {\r\n if (!isPlainObject(value)) throw new Error(`Invalid value for ${context}. Expected ${t.toUpperCase()} { start: Point, end: Point }`);\r\n const start = (value as any).start;\r\n const end = (value as any).end;\r\n if (!isPointLike(start) || !isPointLike(end)) {\r\n throw new Error(`Invalid ${t} for ${context}. 'start' and 'end' must be Point { x, y }`);\r\n }\r\n return;\r\n }\r\n\r\n if (t === \"path\") {\r\n if (!Array.isArray(value) || value.length < 1) {\r\n throw new Error(`Invalid value for ${context}. Expected Path [isClosed: boolean, ...points: Point[]]`);\r\n }\r\n const [isClosed, ...points] = value as any[];\r\n if (typeof isClosed !== \"boolean\") {\r\n throw new Error(`Invalid Path for ${context}. First element must be boolean (isClosed)`);\r\n }\r\n for (let i = 0; i < points.length; i++) {\r\n if (!isPointLike(points[i])) {\r\n throw new Error(`Invalid Path for ${context}. Element at index ${i + 1} must be Point { x, y }`);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (t === \"polygon\") {\r\n if (!Array.isArray(value)) {\r\n throw new Error(`Invalid value for ${context}. Expected Polygon as Point[]`);\r\n }\r\n for (let i = 0; i < value.length; i++) {\r\n if (!isPointLike((value as any)[i])) {\r\n throw new Error(`Invalid Polygon for ${context}. Element at index ${i} must be Point { x, y }`);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (t === \"circle\") {\r\n if (!isPlainObject(value)) throw new Error(`Invalid value for ${context}. Expected Circle { center: Point, radius: number }`);\r\n const center = (value as any).center;\r\n const radius = (value as any).radius;\r\n if (!isPointLike(center) || !isFiniteNumber(radius)) {\r\n throw new Error(`Invalid Circle for ${context}. 'center' must be Point and 'radius' must be finite number`);\r\n }\r\n return;\r\n }\r\n\r\n // Unknown geometric subtype; skip\r\n}\r\n\r\nfunction validateRangeForColumn(col: ColumnDef, value: unknown, context: string): void {\r\n if (!isPlainObject(value)) {\r\n throw new Error(`Invalid value for ${context}. Expected a range object for type ${col._typname}`);\r\n }\r\n const r = value as Record<string, unknown>;\r\n const hasLower = Object.prototype.hasOwnProperty.call(r, \"lower\");\r\n const hasUpper = Object.prototype.hasOwnProperty.call(r, \"upper\");\r\n const hasLi = Object.prototype.hasOwnProperty.call(r, \"lowerInclusive\");\r\n const hasUi = Object.prototype.hasOwnProperty.call(r, \"upperInclusive\");\r\n if (!hasLower || !hasUpper || !hasLi || !hasUi) {\r\n throw new Error(`Invalid range for ${context}. Required properties: lower, upper, lowerInclusive, upperInclusive`);\r\n }\r\n if (typeof r.lowerInclusive !== \"boolean\" || typeof r.upperInclusive !== \"boolean\") {\r\n throw new Error(`Invalid range for ${context}. lowerInclusive and upperInclusive must be boolean`);\r\n }\r\n const inner = expectedRangeInnerKind(col._typname);\r\n if (inner === \"number\") {\r\n if (typeof r.lower !== \"number\" || !Number.isFinite(r.lower as number)) {\r\n throw new Error(`Invalid range.lower for ${context}. Expected number for type ${col._typname}`);\r\n }\r\n if (typeof r.upper !== \"number\" || !Number.isFinite(r.upper as number)) {\r\n throw new Error(`Invalid range.upper for ${context}. Expected number for type ${col._typname}`);\r\n }\r\n } else if (inner === \"string\") {\r\n if (typeof r.lower !== \"string\") {\r\n throw new Error(`Invalid range.lower for ${context}. Expected string for type ${col._typname}`);\r\n }\r\n if (typeof r.upper !== \"string\") {\r\n throw new Error(`Invalid range.upper for ${context}. Expected string for type ${col._typname}`);\r\n }\r\n } else {\r\n // Unknown inner kind; best-effort: accept as-is\r\n }\r\n}\r\n\r\nfunction validateIntervalForColumn(col: ColumnDef, value: unknown, context: string): void {\r\n if (!isPlainObject(value)) {\r\n throw new Error(`Invalid value for ${context}. Expected an interval object for type ${col._typname}`);\r\n }\r\n const v = value as Record<string, unknown>;\r\n const keys: (keyof PgTypes.IntervalValue)[] = [\"y\", \"m\", \"d\", \"h\", \"i\", \"s\"];\r\n for (const k of keys) {\r\n if (!Object.prototype.hasOwnProperty.call(v, k)) {\r\n throw new Error(`Invalid interval for ${context}. Missing property '${k}'`);\r\n }\r\n const num = (v as any)[k];\r\n if (typeof num !== \"number\" || !Number.isFinite(num)) {\r\n throw new Error(`Invalid interval.${String(k)} for ${context}. Expected finite number`);\r\n }\r\n }\r\n}\r\n\r\nfunction isValidJsonLike(value: unknown): boolean {\r\n return (\r\n value === null ||\r\n typeof value === \"string\" ||\r\n typeof value === \"number\" ||\r\n typeof value === \"boolean\" ||\r\n (typeof value === \"object\" && value !== null)\r\n );\r\n}\r\n\r\nfunction validateScalarForColumn(col: ColumnDef, value: unknown, context: string): void {\r\n const kind = expectedScalarKind(col._typname);\r\n if (kind === \"unknown\") return; // best-effort: skip strict check for unknown types\r\n if (kind === \"number\") {\r\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\r\n throw new Error(`Invalid value for ${context}. Expected number for type ${col._typname}, got ${typeof value}`);\r\n }\r\n return;\r\n }\r\n if (kind === \"string\") {\r\n if (typeof value !== \"string\") {\r\n throw new Error(`Invalid value for ${context}. Expected string for type ${col._typname}, got ${typeof value}`);\r\n }\r\n return;\r\n }\r\n if (kind === \"boolean\") {\r\n if (typeof value !== \"boolean\") {\r\n throw new Error(`Invalid value for ${context}. Expected boolean for type ${col._typname}, got ${typeof value}`);\r\n }\r\n return;\r\n }\r\n if (kind === \"json\") {\r\n if (!isValidJsonLike(value)) {\r\n throw new Error(`Invalid value for ${context}. Expected JSON-compatible value for type ${col._typname}`);\r\n }\r\n return;\r\n }\r\n if (kind === \"range\") {\r\n validateRangeForColumn(col, value, context);\r\n return;\r\n }\r\n if (kind === \"interval\") {\r\n validateIntervalForColumn(col, value, context);\r\n return;\r\n }\r\n if (kind === \"geom\") {\r\n validateGeometryForColumn(col, value, context);\r\n return;\r\n }\r\n}\r\n\r\nfunction validateComparisonValue(col: ColumnDef, key: string, value: unknown, op: string): void {\r\n if (value === undefined || value === null) {\r\n throw new Error(`Operator ${op} on column ${key} requires a non-null value. Use isnull/notnull for null checks.`);\r\n }\r\n if (col._is_array) {\r\n if (!Array.isArray(value)) {\r\n throw new Error(`Operator ${op} on array column ${key} requires an array value`);\r\n }\r\n for (const [i, v] of (value as unknown[]).entries()) {\r\n validateScalarForColumn(col, v, `column ${key}[${i}]`);\r\n }\r\n } else {\r\n if (Array.isArray(value) && !isArrayShapedGeomScalarValue(col, value)) {\r\n throw new Error(`Operator ${op} on scalar column ${key} cannot accept an array value`);\r\n }\r\n // Note: some scalar types (path, polygon) appear as arrays at the value level; they are handled by validateScalarForColumn\r\n validateScalarForColumn(col, value, `column ${key}`);\r\n }\r\n}\r\n\r\nfunction validateInArrayValues(col: ColumnDef, key: string, values: unknown[], op: string): void {\r\n // For scalar columns ensure each element matches the scalar type. For array-typed columns, we only ensure it's an array of anything (Postgres may accept array of arrays); keep minimal.\r\n if (!col._is_array) {\r\n let idx = 0;\r\n for (const v of values) {\r\n validateScalarForColumn(col, v, `column ${key} (element ${idx})`);\r\n idx++;\r\n }\r\n }\r\n}\r\n\r\n// Attempt to derive join ON pairs between two tables using foreign key constraints.\r\nfunction findJoinOn(base: TableDef, target: TableDef): { left: string; right: string }[] | null {\r\n const bc = base.constraints || [];\r\n const tc = target.constraints || [];\r\n\r\n // Case 1: base has FK referencing target\r\n for (const c of bc) {\r\n if (c.constraint === \"foreign\" && c.referenced_table === target.name && c.columns?.length && c.referenced_columns?.length && c.columns.length === c.referenced_columns.length) {\r\n return c.columns.map((col, i) => ({ left: String(col), right: String(c.referenced_columns![i]) }));\r\n }\r\n }\r\n // Case 2: target has FK referencing base\r\n for (const c of tc) {\r\n if (c.constraint === \"foreign\" && c.referenced_table === base.name && c.columns?.length && c.referenced_columns?.length && c.columns.length === c.referenced_columns.length) {\r\n return c.referenced_columns.map((rcol, i) => ({ left: String(rcol), right: String(c.columns![i]) }));\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n// ---------- Builders ----------\r\nexport interface SqlBuilder<S extends DBSchema> {\r\n table: <TN extends TableNames<S>>(name: TN) => TableQuery<S, TN>;\r\n}\r\n\r\n// Row type helpers for selections\r\nexport type RowForTable<S extends DBSchema, TN extends string> = {\r\n [K in ColumnNames<S, TN>]: ColumnValueFor<S, TN, K>\r\n};\r\nexport type PickRow<S extends DBSchema, TN extends string, C extends ReadonlyArray<ColumnNames<S, TN>>> = {\r\n [K in C[number]]: ColumnValueFor<S, TN, K>\r\n};\r\n\r\n// Extractor helpers: infer the row type from a SelectQuery or TypedSqlRequest\r\nexport type RowOfSelect<Q> = Q extends SelectQuery<any, any, infer R> ? R : never;\r\nexport type RowsOfSelect<Q> = RowOfSelect<Q>[];\r\n\r\nexport type RowOfRequest<Rq> = Rq extends PgTypes.TypedSqlRequest<infer R> ? R : never;\r\nexport type RowsOfRequest<Rq> = RowOfRequest<Rq>[];\r\n\r\nexport interface TableQuery<S extends DBSchema, TN extends string> {\r\n // SELECT\r\n select(): SelectQuery<S, TN, RowForTable<S, TN>>;\r\n select<C extends ReadonlyArray<ColumnNames<S, TN>>>(cols: C): SelectQuery<S, TN, PickRow<S, TN, C>>;\r\n // INSERT\r\n insert: (values: ValuesForTable<S, TN>) => InsertQuery<S, TN>;\r\n // UPDATE\r\n update: (values: Partial<ValuesForTable<S, TN>>) => UpdateQuery<S, TN>;\r\n // DELETE\r\n delete: () => DeleteQuery<S, TN>;\r\n}\r\n\r\nexport interface SelectQuery<S extends DBSchema, TN extends string, R extends PgTypes.DataRow> {\r\n selectFrom: <JT extends TableNames<S>>(table: JT, cols?: ReadonlyArray<ColumnNames<S, JT>>) => SelectQuery<S, TN, R>;\r\n andWhere: (where: WhereForTable<S, TN>) => SelectQuery<S, TN, R>;\r\n /** @deprecated Use andWhere() instead */\r\n where: (where: WhereForTable<S, TN>) => SelectQuery<S, TN, R>;\r\n orWhere: (where: WhereForTable<S, TN>) => SelectQuery<S, TN, R>;\r\n wherePk: (pk: PrimaryKeyValue<S, TN>) => SelectQuery<S, TN, R>;\r\n // Operator-based where chaining with compile-time value checks; also rejects `any` operator by disallowing extra args when O is any\r\n andWhereOp<K extends ColumnNames<S, TN>, O extends WhereOperator>(col: K, op: O, ...args: OpArgsFor<S, TN, K, O>): SelectQuery<S, TN, R>;\r\n orWhereOp<K extends ColumnNames<S, TN>, O extends WhereOperator>(col: K, op: O, ...args: OpArgsFor<S, TN, K, O>): SelectQuery<S, TN, R>;\r\n andWhereOpGroup: (predicates: ReadonlyArray<OpPredicate<S, TN>>) => SelectQuery<S, TN, R>;\r\n orWhereOpGroup: (predicates: ReadonlyArray<OpPredicate<S, TN>>) => SelectQuery<S, TN, R>;\r\n orderBy: (order: ReadonlyArray<readonly [ColumnNames<S, TN>, \"asc\" | \"desc\"]> | ColumnNames<S, TN>) => SelectQuery<S, TN, R>;\r\n limit: (n: number) => SelectQuery<S, TN, R>;\r\n offset: (n: number) => SelectQuery<S, TN, R>;\r\n join: <JT extends TableNames<S>>(table: JT, type?: \"inner\" | \"left\" | \"right\" | \"full\") => SelectQuery<S, TN, R>;\r\n toSql: () => PgTypes.TypedSqlRequest<R>;\r\n}\r\n\r\nexport interface InsertQuery<S extends DBSchema, TN extends string> {\r\n returning: (cols?: ReadonlyArray<ColumnNames<S, TN>>) => InsertQuery<S, TN>;\r\n toSql: () => SqlRequest<Record<string, unknown>>;\r\n}\r\n\r\nexport interface UpdateQuery<S extends DBSchema, TN extends string> {\r\n where: (where: WhereForTable<S, TN>) => UpdateQuery<S, TN>;\r\n wherePk: (pk: PrimaryKeyValue<S, TN>) => UpdateQuery<S, TN>;\r\n returning: (cols?: ReadonlyArray<ColumnNames<S, TN>>) => UpdateQuery<S, TN>;\r\n toSql: () => SqlRequest<Record<string, unknown>>;\r\n}\r\n\r\nexport interface DeleteQuery<S extends DBSchema, TN extends string> {\r\n where: (where: WhereForTable<S, TN>) => DeleteQuery<S, TN>;\r\n wherePk: (pk: PrimaryKeyValue<S, TN>) => DeleteQuery<S, TN>;\r\n returning: (cols?: ReadonlyArray<ColumnNames<S, TN>>) => DeleteQuery<S, TN>;\r\n toSql: () => SqlRequest<Record<string, unknown>>;\r\n}\r\n\r\nclass TableQueryImpl<S extends DBSchema, TN extends string> implements TableQuery<S, TN> {\r\n private readonly schema: DBSchema;\r\n private readonly table: TableDef;\r\n\r\n constructor(schema: DBSchema, tableName: string) {\r\n this.schema = schema;\r\n this.table = findTable(schema, tableName);\r\n }\r\n\r\n // Overloads provide precise row typing based on selected columns\r\n select(): SelectQuery<S, TN, RowForTable<S, TN>>;\r\n select<C extends ReadonlyArray<ColumnNames<S, TN>>>(cols: C): SelectQuery<S, TN, PickRow<S, TN, C>>;\r\n select(cols?: ReadonlyArray<ColumnNames<S, TN>>): any {\r\n const table = this.table;\r\n const schema = this.schema;\r\n const selected = (cols && cols.length ? cols : [\"*\"]) as (ColumnNames<S, TN> | \"*\")[];\r\n const state = {\r\n table,\r\n selected,\r\n where: {} as WhereForTable<S, TN>,\r\n orWhereGroups: [] as WhereForTable<S, TN>[],\r\n // Operator-based predicates\r\n andOps: [] as { col: ColumnNames<S, TN>; op: WhereOperator; value?: unknown }[],\r\n orOpGroups: [] as { col: ColumnNames<S, TN>; op: WhereOperator; value?: unknown }[][],\r\n order: [] as { col: ColumnNames<S, TN>; dir: \"asc\" | \"desc\" }[],\r\n limit: undefined as number | undefined,\r\n offset: undefined as number | undefined,\r\n joins: [] as { type: \"inner\" | \"left\" | \"right\" | \"full\"; source: TableDef; target: TableDef; on: { left: string; right: string }[] }[],\r\n joinSelections: [] as { target: TableDef; selected: (string | \"*\")[] }[],\r\n };\r\n\r\n return new (class implements SelectQuery<S, TN, any> {\r\n private s = state;\r\n\r\n selectFrom<JT extends TableNames<S>>(tableName: JT, cols?: ReadonlyArray<ColumnNames<S, JT>>): SelectQuery<S, TN, any> {\r\n const jtName = String(tableName);\r\n const join = this.s.joins.find(j => j.target.name === jtName);\r\n if (!join) {\r\n throw new Error(`selectFrom('${jtName}') requires a prior join('${jtName}') call`);\r\n }\r\n const sel = (!cols || (cols as readonly any[]).length === 0) ? [\"*\"] : (cols as readonly any[]).map(String);\r\n if (!(sel.length === 1 && sel[0] === \"*\")) {\r\n for (const c of sel) findColumn(join.target, String(c));\r\n }\r\n const existing = this.s.joinSelections.find(js => js.target.name === jtName);\r\n if (existing) {\r\n if (existing.selected.includes(\"*\")) return this;\r\n if (sel.length === 1 && sel[0] === \"*\") {\r\n existing.selected = [\"*\"];\r\n } else {\r\n const set = new Set(existing.selected as string[]);\r\n for (const c of sel) set.add(String(c));\r\n existing.selected = Array.from(set);\r\n }\r\n } else {\r\n this.s.joinSelections.push({ target: join.target, selected: sel as (string | \"*\")[] });\r\n }\r\n return this;\r\n }\r\n\r\n andWhere(where: WhereForTable<S, TN>): SelectQuery<S, TN, any> {\r\n // merge\r\n for (const k in where as Record<string, unknown>) this.s.where[k as keyof typeof where] = (where as any)[k];\r\n return this;\r\n }\r\n /** @deprecated Use andWhere() instead */\r\n where(where: WhereForTable<S, TN>): SelectQuery<S, TN, any> { return this.andWhere(where); }\r\n\r\n orWhere(where: WhereForTable<S, TN>): SelectQuery<S, TN, any> {\r\n // push a new OR group\r\n this.s.orWhereGroups.push(where);\r\n return this;\r\n }\r\n\r\n wherePk(pk: PrimaryKeyValue<S, TN>): SelectQuery<S, TN, any> {\r\n const pkCols = getPrimaryKeyColumns(table);\r\n if (!pkCols || pkCols.length === 0) {\r\n throw new Error(`Table ${table.name} does not have a primary key`);\r\n }\r\n if (pkCols.length === 1) {\r\n const colName = pkCols[0];\r\n const colDef = findColumn(table, colName);\r\n if (pk === null || pk === undefined) {\r\n throw new Error(`wherePk on ${table.name} requires a non-null value for primary key column ${colName}`);\r\n }\r\n if (Array.isArray(pk)) {\r\n throw new Error(`wherePk on ${table.name} expects a scalar for primary key column ${colName}, not an array`);\r\n }\r\n if (isPlainObject(pk)) {\r\n throw new Error(`wherePk on ${table.name} expects a scalar for primary key column ${colName}`);\r\n }\r\n // Runtime type validation against the PK column type\r\n validateScalarForColumn(colDef, pk as unknown, `primary key ${table.name}.${colName}`);\r\n (this.s.where as any)[colName] = pk as unknown;\r\n return this;\r\n } else {\r\n if (!isPlainObject(pk) || pk === null) {\r\n throw new Error(`wherePk on ${table.name} requires an object with keys: ${pkCols.join(\", \")}`);\r\n }\r\n const obj = pk as Record<string, unknown>;\r\n for (const k of Object.keys(obj)) {\r\n if (!pkCols.includes(k)) {\r\n throw new Error(`wherePk received unknown key '${k}'. Expected keys: ${pkCols.join(\", \")}`);\r\n }\r\n }\r\n for (const colName of pkCols) {\r\n if (!(colName in obj)) {\r\n throw new Error(`wherePk missing key '${colName}'. Required keys: ${pkCols.join(\", \")}`);\r\n }\r\n const v = obj[colName];\r\n if (v === null || v === undefined) {\r\n throw new Error(`wherePk on ${table.name} requires non-null values for all primary key columns (${pkCols.join(\", \")})`);\r\n }\r\n if (Array.isArray(v)) {\r\n throw new Error(`wherePk on ${table.name} expects scalar values for primary key column ${colName}, not an array`);\r\n }\r\n const colDef = findColumn(table, colName);\r\n validateScalarForColumn(colDef, v, `primary key ${table.name}.${colName}`);\r\n (this.s.where as any)[colName] = v;\r\n }\r\n return this;\r\n }\r\n }\r\n\r\n andWhereOp<K extends ColumnNames<S, TN>, O extends WhereOperator>(col: K, op: O, ...args: OpArgsFor<S, TN, K, O>): SelectQuery<S, TN, any>;\r\n andWhereOp(col: any, op: any, ...args: any[]): SelectQuery<S, TN, any> {\r\n const value = args[0];\r\n this.s.andOps.push({ col, op, value });\r\n return this;\r\n }\r\n orWhereOp<K extends ColumnNames<S, TN>, O extends WhereOperator>(col: K, op: O, ...args: OpArgsFor<S, TN, K, O>): SelectQuery<S, TN, any>;\r\n orWhereOp(col: any, op: any, ...args: any[]): SelectQuery<S, TN, any> {\r\n const value = args[0];\r\n this.s.orOpGroups.push([{ col, op, value }]);\r\n return this;\r\n }\r\n andWhereOpGroup(predicates: ReadonlyArray<OpPredicate<S, TN>>): SelectQuery<S, TN, any> {\r\n const group = (predicates as ReadonlyArray<readonly [ColumnNames<S, TN>, WhereOperator, unknown?]>).map(p => ({ col: p[0], op: p[1], value: p[2] }));\r\n for (const g of group) this.s.andOps.push(g);\r\n return this;\r\n }\r\n orWhereOpGroup(predicates: ReadonlyArray<OpPredicate<S, TN>>): SelectQuery<S, TN, any> {\r\n const group = (predicates as ReadonlyArray<readonly [ColumnNames<S, TN>, WhereOperator, unknown?]>).map(p => ({ col: p[0], op: p[1], value: p[2] }));\r\n this.s.orOpGroups.push(group);\r\n return this;\r\n }\r\n\r\n orderBy(order: ReadonlyArray<readonly [ColumnNames<S, TN>, \"asc\" | \"desc\"]> | ColumnNames<S, TN>): SelectQuery<S, TN, any> {\r\n this.s.order = [];\r\n const isValidDir = (d: string): d is \"asc\" | \"desc\" => d === \"asc\" || d === \"desc\";\r\n if (typeof order === \"string\") {\r\n // Runtime validation: ensure column exists\r\n findColumn(table, String(order));\r\n this.s.order.push({ col: order as ColumnNames<S, TN>, dir: \"asc\" });\r\n } else {\r\n for (const item of order) {\r\n const col = String(item[0]);\r\n const dir = String(item[1]);\r\n // Validate column exists on base table\r\n findColumn(table, col);\r\n // Validate direction\r\n if (!isValidDir(dir)) {\r\n throw new Error(`Invalid order direction: ${dir}. Allowed: asc | desc`);\r\n }\r\n this.s.order.push({ col: item[0], dir: dir });\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n limit(n: number): SelectQuery<S, TN, any> {\r\n // Runtime validation: limit must be a non-negative integer\r\n if (typeof n !== \"number\" || !Number.isFinite(n) || !Number.isInteger(n) || n < 0) {\r\n throw new Error(`Invalid limit: ${n}. Limit must be a non-negative integer`);\r\n }\r\n this.s.limit = n;\r\n return this;\r\n }\r\n offset(n: number): SelectQuery<S, TN, any> {\r\n // Runtime validation: offset must be a non-negative integer\r\n if (typeof n !== \"number\" || !Number.isFinite(n) || !Number.isInteger(n) || n < 0) {\r\n throw new Error(`Invalid offset: ${n}. Offset must be a non-negative integer`);\r\n }\r\n this.s.offset = n;\r\n return this;\r\n }\r\n\r\n join<JT extends TableNames<S>>(tableName: JT, type: \"inner\" | \"left\" | \"right\" | \"full\" = \"inner\"): SelectQuery<S, TN, any> {\r\n const target = findTable(schema, String(tableName));\r\n\r\n // Determine the source table to join from: try most recent join targets first, then earlier ones, then base table\r\n const sources: TableDef[] = [];\r\n // Add existing joined targets in reverse order (most recent first)\r\n for (let i = this.s.joins.length - 1; i >= 0; i--) {\r\n const src = this.s.joins[i].target;\r\n if (!sources.some(s => s.name === src.name)) sources.push(src);\r\n }\r\n // Finally, add the base table\r\n if (!sources.some(s => s.name === table.name)) sources.push(table);\r\n\r\n let pickedSource: TableDef | null = null;\r\n let pairs: { left: string; right: string }[] | null = null;\r\n for (const src of sources) {\r\n const p = findJoinOn(src, target);\r\n if (p && p.length) { pickedSource = src; pairs = p; break; }\r\n }\r\n\r\n if (!pairs || !pickedSource) {\r\n const candidates = sources.map(s => s.name).join(\", \");\r\n throw new Error(`No foreign key relation found between any of [${candidates}] and ${target.name}`);\r\n }\r\n\r\n // Validate join type\r\n const jt = String(type);\r\n if (jt !== \"inner\" && jt !== \"left\" && jt !== \"right\" && jt !== \"full\") {\r\n throw new Error(`Invalid join type: ${jt}. Allowed: inner | left | right | full`);\r\n }\r\n\r\n this.s.joins.push({ type: jt as any, source: pickedSource, target, on: pairs });\r\n return this;\r\n }\r\n\r\n toSql = (): SqlRequest => {\r\n const params: Record<string, unknown> = {};\r\n const type_hints: Record<string, string> = {};\r\n let p = 0;\r\n\r\n const parts: string[] = [];\r\n // Columns\r\n const selectParts: string[] = [];\r\n if (selected.length === 1 && selected[0] === \"*\") {\r\n selectParts.push(`\"${table.name}\".*`);\r\n } else {\r\n // Runtime validation: ensure every selected column exists on the table\r\n const sel = selected as string[];\r\n for (const c of sel) {\r\n // will throw if column not found\r\n findColumn(table, String(c));\r\n }\r\n selectParts.push(sel.map(c => `\"${table.name}\".\"${c}\"`).join(\", \"));\r\n }\r\n // Joined table selections\r\n for (const js of state.joinSelections) {\r\n if (js.selected.length === 1 && js.selected[0] === \"*\") {\r\n selectParts.push(`\"${js.target.name}\".*`);\r\n } else {\r\n const cols = js.selected as string[];\r\n for (const c of cols) findColumn(js.target, String(c));\r\n selectParts.push(cols.map(c => `\"${js.target.name}\".\"${c}\"`).join(\", \"));\r\n }\r\n }\r\n parts.push(`select ${selectParts.join(\", \")} from \"${schema.name}\".\"${table.name}\"`);\r\n\r\n // JOINs\r\n for (const j of state.joins) {\r\n const onExpr = j.on.map(p => `\"${j.source.name}\".\"${p.left}\" = \"${j.target.name}\".\"${p.right}\"`).join(\" and \");\r\n parts.push(`${j.type} join \"${schema.name}\".\"${j.target.name}\" on ${onExpr}`);\r\n }\r\n\r\n // Build WHERE with correct AND/OR semantics:\r\n // - Collect base AND predicates (equality and operator-based) into one AND group\r\n // - Collect OR groups (object-based and operator-based) as parenthesized groups\r\n // - If any OR groups exist, top-level is: (AND-group) or (OR-group1) or (OR-group2) ...\r\n // - Else, only the AND-group is used\r\n\r\n const andParts: string[] = [];\r\n\r\n // Base AND where (equality style)\r\n for (const key in state.where) {\r\n const value = (state.where as any)[key];\r\n const col = findColumn(table, key);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n\r\n if (value === null) {\r\n if (!col.is_nullable) {\r\n throw new Error(`Column ${table.name}.${key} is not nullable; cannot compare to null`);\r\n }\r\n andParts.push(`\"${table.name}\".\"${key}\" is null`);\r\n } else if (Array.isArray(value) && !isArrayShapedGeomScalarValue(col, value)) {\r\n // Validate array element types (treat as IN semantics)\r\n validateInArrayValues(col, key, value as unknown[], \"in\");\r\n // IN via = ANY(:param)\r\n andParts.push(`\"${table.name}\".\"${key}\" = ANY(:${paramName})`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n } else {\r\n // Validate scalar matches column type (note: path/polygon may appear as arrays but represent a single scalar)\r\n validateScalarForColumn(col, value, `column ${key}`);\r\n andParts.push(`\"${table.name}\".\"${key}\" = :${paramName}`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n }\r\n }\r\n // Operator-based AND predicates\r\n for (const pred of state.andOps) {\r\n const key = String(pred.col);\r\n const op = String(pred.op) as WhereOperator;\r\n const col = findColumn(table, key);\r\n const qualified = `\"${table.name}\".\"${key}\"`;\r\n if (op === \"isnull\" || op === \"notnull\") {\r\n if (pred.value !== undefined) {\r\n throw new Error(`Operator ${op} does not take a value for column ${key}`);\r\n }\r\n andParts.push(`${qualified} is ${op === \"isnull\" ? \"null\" : \"not null\"}`);\r\n } else if (op === \"in\" || op === \"notin\") {\r\n const val = pred.value as unknown;\r\n if (!Array.isArray(val)) {\r\n throw new Error(`Operator ${op} requires an array value for column ${key}`);\r\n }\r\n // Runtime validate each element type for scalar columns\r\n validateInArrayValues(col, key, val as unknown[], op);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n andParts.push(`${qualified} ${op === \"in\" ? \"= ANY\" : \"!= ALL\"}(:${paramName})`);\r\n params[paramName] = val;\r\n addTypeHintForParam(type_hints, paramName, col, val);\r\n } else if (op === \"like\" || op === \"ilike\" || op === \"notlike\" || op === \"notilike\") {\r\n const val = pred.value as unknown;\r\n if (typeof val !== \"string\") {\r\n throw new Error(`Operator ${op} requires a string value for column ${key}`);\r\n }\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n const sqlOp = op === \"like\" ? \"like\" : op === \"ilike\" ? \"ilike\" : op === \"notlike\" ? \"not like\" : \"not ilike\";\r\n andParts.push(`${qualified} ${sqlOp} :${paramName}`);\r\n params[paramName] = val;\r\n addTypeHintForParam(type_hints, paramName, col, val);\r\n } else {\r\n // comparison or equality/inequality\r\n const val = pred.value as unknown;\r\n if (val === undefined) throw new Error(`Operator ${op} requires a value for column ${key}`);\r\n // Runtime type validation against column type\r\n validateComparisonValue(col, key, val, op);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n if (op === \"=\") {\r\n andParts.push(`${qualified} = :${paramName}`);\r\n } else if (op === \"!=\") {\r\n andParts.push(`${qualified} <> :${paramName}`);\r\n } else if (op === \"<\" || op === \"<=\" || op === \">\" || op === \">=\") {\r\n andParts.push(`${qualified} ${op} :${paramName}`);\r\n } else {\r\n throw new Error(`Unsupported operator: ${op}`);\r\n }\r\n params[paramName] = val;\r\n addTypeHintForParam(type_hints, paramName, col, val);\r\n }\r\n }\r\n\r\n // Build OR groups from object-based orWhere\r\n const orGroupSql: string[] = [];\r\n for (const group of state.orWhereGroups) {\r\n const orParts: string[] = [];\r\n for (const key in group as Record<string, unknown>) {\r\n const value = (group as any)[key];\r\n const col = findColumn(table, key);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n if (value === null) {\r\n if (!col.is_nullable) {\r\n throw new Error(`Column ${table.name}.${key} is not nullable; cannot compare to null`);\r\n }\r\n orParts.push(`\"${table.name}\".\"${key}\" is null`);\r\n } else if (Array.isArray(value) && !isArrayShapedGeomScalarValue(col, value)) {\r\n // Validate array element types (treat as IN semantics)\r\n validateInArrayValues(col, key, value as unknown[], \"in\");\r\n orParts.push(`\"${table.name}\".\"${key}\" = ANY(:${paramName})`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n } else {\r\n // Validate scalar matches column type (note: path/polygon may appear as arrays but represent a single scalar)\r\n validateScalarForColumn(col, value, `column ${key}`);\r\n orParts.push(`\"${table.name}\".\"${key}\" = :${paramName}`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n }\r\n }\r\n if (orParts.length) orGroupSql.push(\"(\" + orParts.join(\" or \") + \")\");\r\n }\r\n // Build OR groups from operator-based orWhereOp groups\r\n for (const group of state.orOpGroups) {\r\n const orParts: string[] = [];\r\n for (const pred of group) {\r\n const key = String(pred.col);\r\n const op = String(pred.op) as WhereOperator;\r\n const col = findColumn(table, key);\r\n const qualified = `\"${table.name}\".\"${key}\"`;\r\n if (op === \"isnull\" || op === \"notnull\") {\r\n if (pred.value !== undefined) throw new Error(`Operator ${op} does not take a value for column ${key}`);\r\n orParts.push(`${qualified} is ${op === \"isnull\" ? \"null\" : \"not null\"}`);\r\n } else if (op === \"in\" || op === \"notin\") {\r\n const val = pred.value as unknown;\r\n if (!Array.isArray(val)) throw new Error(`Operator ${op} requires an array value for column ${key}`);\r\n // Runtime validate each element type for scalar columns\r\n validateInArrayValues(col, key, val as unknown[], op);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n orParts.push(`${qualified} ${op === \"in\" ? \"= ANY\" : \"!= ALL\"}(:${paramName})`);\r\n params[paramName] = val;\r\n addTypeHintForParam(type_hints, paramName, col, val);\r\n } else if (op === \"like\" || op === \"ilike\" || op === \"notlike\" || op === \"notilike\") {\r\n const val = pred.value as unknown;\r\n if (typeof val !== \"string\") throw new Error(`Operator ${op} requires a string value for column ${key}`);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n const sqlOp = op === \"like\" ? \"like\" : op === \"ilike\" ? \"ilike\" : op === \"notlike\" ? \"not like\" : \"not ilike\";\r\n orParts.push(`${qualified} ${sqlOp} :${paramName}`);\r\n params[paramName] = val;\r\n addTypeHintForParam(type_hints, paramName, col, val);\r\n } else {\r\n const val = pred.value as unknown;\r\n if (val === undefined) throw new Error(`Operator ${op} requires a value for column ${key}`);\r\n // Runtime type validation against column type\r\n validateComparisonValue(col, key, val, op);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n if (op === \"=\") {\r\n orParts.push(`${qualified} = :${paramName}`);\r\n } else if (op === \"!=\") {\r\n orParts.push(`${qualified} <> :${paramName}`);\r\n } else if (op === \"<\" || op === \"<=\" || op === \">\" || op === \">=\") {\r\n orParts.push(`${qualified} ${op} :${paramName}`);\r\n } else {\r\n throw new Error(`Unsupported operator: ${op}`);\r\n }\r\n params[paramName] = val;\r\n addTypeHintForParam(type_hints, paramName, col, val);\r\n }\r\n }\r\n if (orParts.length) orGroupSql.push(\"(\" + orParts.join(\" or \") + \")\");\r\n }\r\n\r\n // Compose final WHERE\r\n if (orGroupSql.length) {\r\n const andSql = andParts.length ? `(${andParts.join(\" and \")})` : \"\";\r\n const orSql = orGroupSql.join(\" or \");\r\n const full = andSql ? `${andSql} or ${orSql}` : orSql;\r\n if (full.trim().length) parts.push(\"where \" + full);\r\n } else if (andParts.length) {\r\n parts.push(\"where \" + andParts.join(\" and \"));\r\n }\r\n\r\n if (state.order.length) {\r\n const orders: string[] = [];\r\n for (const o of state.order) orders.push(`\"${table.name}\".\"${o.col}\" ${o.dir}`);\r\n parts.push(\"order by \" + orders.join(\", \"));\r\n }\r\n if (state.limit !== undefined) parts.push(\"limit \" + state.limit);\r\n if (state.offset !== undefined) parts.push(\"offset \" + state.offset);\r\n\r\n return {\r\n q: parts.join(\" \"),\r\n params : Object.keys(params).length > 0 ? params: undefined,\r\n type_hints: Object.keys(type_hints).length ? type_hints : undefined,\r\n };\r\n };\r\n })();\r\n }\r\n\r\n insert(values: ValuesForTable<S, TN>): InsertQuery<S, TN> {\r\n const table = this.table;\r\n const schema = this.schema;\r\n const state = { values, returning: [] as ColumnNames<S, TN>[] };\r\n\r\n return new (class implements InsertQuery<S, TN> {\r\n returning = (cols?: ReadonlyArray<ColumnNames<S, TN>>) => { state.returning = (cols as ColumnNames<S, TN>[] | undefined) || []; return this; };\r\n\r\n toSql = (): SqlRequest => {\r\n const cols: string[] = [];\r\n const vals: string[] = [];\r\n const params: Record<string, unknown> = {};\r\n const type_hints: Record<string, string> = {};\r\n let p = 0;\r\n\r\n for (const key in state.values) {\r\n const value = (state.values as any)[key];\r\n const col = findColumn(table, key);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n cols.push(`\"${key}\"`);\r\n vals.push(`:${paramName}`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n }\r\n\r\n const parts: string[] = [];\r\n parts.push(`insert into \"${schema.name}\".\"${table.name}\" (${cols.join(\", \")}) values (${vals.join(\", \")})`);\r\n if (state.returning.length) parts.push(\"returning \" + state.returning.join(\", \"));\r\n\r\n return {\r\n q: parts.join(\" \"),\r\n params : Object.keys(params).length > 0 ? params: undefined,\r\n type_hints: Object.keys(type_hints).length ? type_hints : undefined,\r\n };\r\n };\r\n })();\r\n }\r\n\r\n update(values: Partial<ValuesForTable<S, TN>>): UpdateQuery<S, TN> {\r\n const table = this.table;\r\n const schema = this.schema;\r\n const state = { values, where: {} as WhereForTable<S, TN>, returning: [] as ColumnNames<S, TN>[] };\r\n\r\n return new (class implements UpdateQuery<S, TN> {\r\n where = (w: WhereForTable<S, TN>) => { for (const k in w as Record<string, unknown>) state.where[k as keyof typeof w] = (w as any)[k]; return this; };\r\n wherePk = (pk: PrimaryKeyValue<S, TN>) => {\r\n const pkCols = getPrimaryKeyColumns(table);\r\n if (!pkCols || pkCols.length === 0) throw new Error(`Table ${table.name} does not have a primary key`);\r\n if (pkCols.length === 1) {\r\n const colName = pkCols[0];\r\n const colDef = findColumn(table, colName);\r\n if (pk === null || pk === undefined) throw new Error(`wherePk on ${table.name} requires a non-null value for primary key column ${colName}`);\r\n if (Array.isArray(pk)) throw new Error(`wherePk on ${table.name} expects a scalar for primary key column ${colName}, not an array`);\r\n if (isPlainObject(pk)) throw new Error(`wherePk on ${table.name} expects a scalar for primary key column ${colName}`);\r\n validateScalarForColumn(colDef, pk as unknown, `primary key ${table.name}.${colName}`);\r\n (state.where as any)[colName] = pk as unknown;\r\n } else {\r\n if (!isPlainObject(pk) || pk === null) throw new Error(`wherePk on ${table.name} requires an object with keys: ${pkCols.join(\", \")}`);\r\n const obj = pk as Record<string, unknown>;\r\n for (const k of Object.keys(obj)) {\r\n if (!pkCols.includes(k)) throw new Error(`wherePk received unknown key '${k}'. Expected keys: ${pkCols.join(\", \")}`);\r\n }\r\n for (const colName of pkCols) {\r\n if (!(colName in obj)) throw new Error(`wherePk missing key '${colName}'. Required keys: ${pkCols.join(\", \")}`);\r\n const v = obj[colName];\r\n if (v === null || v === undefined) throw new Error(`wherePk on ${table.name} requires non-null values for all primary key columns (${pkCols.join(\", \")})`);\r\n if (Array.isArray(v)) throw new Error(`wherePk on ${table.name} expects scalar values for primary key column ${colName}, not an array`);\r\n const colDef = findColumn(table, colName);\r\n validateScalarForColumn(colDef, v, `primary key ${table.name}.${colName}`);\r\n (state.where as any)[colName] = v;\r\n }\r\n }\r\n return this;\r\n };\r\n returning = (cols?: ReadonlyArray<ColumnNames<S, TN>>) => { state.returning = (cols as ColumnNames<S, TN>[] | undefined) || []; return this; };\r\n\r\n toSql = (): SqlRequest => {\r\n const params: Record<string, unknown> = {};\r\n const type_hints: Record<string, string> = {};\r\n let p = 0;\r\n\r\n const setParts: string[] = [];\r\n for (const key in state.values) {\r\n const value = (state.values as any)[key];\r\n const col = findColumn(table, key);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n setParts.push(`\"${key}\" = :${paramName}`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n }\r\n\r\n const whereClauses: string[] = [];\r\n for (const key in state.where) {\r\n const value = (state.where as any)[key];\r\n const col = findColumn(table, key);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n if (value === null) {\r\n if (!col.is_nullable) {\r\n throw new Error(`Column ${table.name}.${key} is not nullable; cannot compare to null`);\r\n }\r\n whereClauses.push(`\"${key}\" is null`);\r\n } else if (Array.isArray(value) && !isArrayShapedGeomScalarValue(col, value)) {\r\n // Validate array element types (treat as IN semantics)\r\n validateInArrayValues(col, key, value as unknown[], \"in\");\r\n whereClauses.push(`\"${key}\" = ANY(:${paramName})`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n } else {\r\n // Validate scalar matches column type (note: path/polygon may appear as arrays but represent a single scalar)\r\n validateScalarForColumn(col, value, `column ${key}`);\r\n whereClauses.push(`\"${key}\" = :${paramName}`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n }\r\n }\r\n\r\n const parts: string[] = [];\r\n parts.push(`update \"${schema.name}\".\"${table.name}\" set ${setParts.join(\", \")}`);\r\n if (whereClauses.length) parts.push(\"where \" + whereClauses.join(\" and \"));\r\n if (state.returning.length) parts.push(\"returning \" + state.returning.join(\", \"));\r\n\r\n return {\r\n q: parts.join(\" \"),\r\n params : Object.keys(params).length > 0 ? params: undefined,\r\n type_hints: Object.keys(type_hints).length ? type_hints : undefined,\r\n };\r\n };\r\n })();\r\n }\r\n\r\n delete(): DeleteQuery<S, TN> {\r\n const table = this.table;\r\n const schema = this.schema;\r\n const state = { where: {} as WhereForTable<S, TN>, returning: [] as ColumnNames<S, TN>[] };\r\n\r\n return new (class implements DeleteQuery<S, TN> {\r\n where = (w: WhereForTable<S, TN>) => { for (const k in w as Record<string, unknown>) state.where[k as keyof typeof w] = (w as any)[k]; return this; };\r\n wherePk = (pk: PrimaryKeyValue<S, TN>) => {\r\n const pkCols = getPrimaryKeyColumns(table);\r\n if (!pkCols || pkCols.length === 0) throw new Error(`Table ${table.name} does not have a primary key`);\r\n if (pkCols.length === 1) {\r\n const col = pkCols[0];\r\n if (isPlainObject(pk)) throw new Error(`wherePk on ${table.name} expects a scalar for primary key column ${col}`);\r\n (state.where as any)[col] = pk as unknown;\r\n } else {\r\n if (!isPlainObject(pk)) throw new Error(`wherePk on ${table.name} requires an object with keys: ${pkCols.join(\", \")}`);\r\n const obj = pk as Record<string, unknown>;\r\n for (const k of Object.keys(obj)) {\r\n if (!pkCols.includes(k)) throw new Error(`wherePk received unknown key '${k}'. Expected keys: ${pkCols.join(\", \")}`);\r\n }\r\n for (const col of pkCols) {\r\n if (!(col in obj)) throw new Error(`wherePk missing key '${col}'. Required keys: ${pkCols.join(\", \")}`);\r\n (state.where as any)[col] = obj[col];\r\n }\r\n }\r\n return this;\r\n };\r\n returning = (cols?: ReadonlyArray<ColumnNames<S, TN>>) => { state.returning = (cols as ColumnNames<S, TN>[] | undefined) || []; return this; };\r\n\r\n toSql = (): SqlRequest => {\r\n const params: Record<string, unknown> = {};\r\n const type_hints: Record<string, string> = {};\r\n let p = 0;\r\n\r\n const whereClauses: string[] = [];\r\n for (const key in state.where) {\r\n const value = (state.where as any)[key];\r\n const col = findColumn(table, key);\r\n p += 1;\r\n const paramName = `${table.name}_${key}_${p}`;\r\n if (value === null) {\r\n if (!col.is_nullable) {\r\n throw new Error(`Column ${table.name}.${key} is not nullable; cannot compare to null`);\r\n }\r\n whereClauses.push(`\"${key}\" is null`);\r\n } else if (Array.isArray(value)) {\r\n // Validate array element types (treat as IN semantics)\r\n validateInArrayValues(col, key, value as unknown[], \"in\");\r\n whereClauses.push(`\"${key}\" = ANY(:${paramName})`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n } else {\r\n // Validate scalar matches column type\r\n validateScalarForColumn(col, value, `column ${key}`);\r\n whereClauses.push(`\"${key}\" = :${paramName}`);\r\n params[paramName] = value;\r\n addTypeHintForParam(type_hints, paramName, col, value);\r\n }\r\n }\r\n\r\n const parts: string[] = [];\r\n parts.push(`delete from \"${schema.name}\".\"${table.name}\"`);\r\n if (whereClauses.length) parts.push(\"where \" + whereClauses.join(\" and \"));\r\n if (state.returning.length) parts.push(\"returning \" + state.returning.join(\", \"));\r\n\r\n return {\r\n q: parts.join(\" \"),\r\n params : Object.keys(params).length > 0 ? params: undefined,\r\n type_hints: Object.keys(type_hints).length ? type_hints : undefined,\r\n };\r\n };\r\n })();\r\n }\r\n}\r\n\r\nexport function createSqlBuilder<S extends DBSchema>(schema: S): SqlBuilder<S> {\r\n return {\r\n table: <TN extends TableNames<S>>(name: TN) => new TableQueryImpl<S, TN>(schema as unknown as DBSchema, String(name)) as unknown as TableQuery<S, TN>,\r\n };\r\n}\r\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@centia-io/sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.37",
|
|
4
4
|
"description": "Centia-io TypeScript SDK",
|
|
5
5
|
"author": "Martin Høgh",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"private": false,
|
|
26
26
|
"scripts": {
|
|
27
|
-
"build": "tsdown
|
|
27
|
+
"build": "tsdown",
|
|
28
|
+
"build-watch": "tsdown --watch"
|
|
28
29
|
}
|
|
29
30
|
}
|