@supabase/postgrest-js 1.0.0-rc.1 → 1.0.0-rc.4
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/main/PostgrestBuilder.d.ts.map +1 -1
- package/dist/main/PostgrestBuilder.js +4 -0
- package/dist/main/PostgrestBuilder.js.map +1 -1
- package/dist/main/PostgrestClient.d.ts +1 -3
- package/dist/main/PostgrestClient.d.ts.map +1 -1
- package/dist/main/PostgrestClient.js +4 -2
- package/dist/main/PostgrestClient.js.map +1 -1
- package/dist/main/PostgrestQueryBuilder.d.ts +4 -12
- package/dist/main/PostgrestQueryBuilder.d.ts.map +1 -1
- package/dist/main/PostgrestQueryBuilder.js +4 -16
- package/dist/main/PostgrestQueryBuilder.js.map +1 -1
- package/dist/main/PostgrestTransformBuilder.d.ts +5 -2
- package/dist/main/PostgrestTransformBuilder.d.ts.map +1 -1
- package/dist/main/PostgrestTransformBuilder.js +16 -2
- package/dist/main/PostgrestTransformBuilder.js.map +1 -1
- package/dist/main/version.d.ts +1 -1
- package/dist/main/version.js +1 -1
- package/dist/module/PostgrestBuilder.d.ts.map +1 -1
- package/dist/module/PostgrestBuilder.js +4 -0
- package/dist/module/PostgrestBuilder.js.map +1 -1
- package/dist/module/PostgrestClient.d.ts +1 -3
- package/dist/module/PostgrestClient.d.ts.map +1 -1
- package/dist/module/PostgrestClient.js +4 -2
- package/dist/module/PostgrestClient.js.map +1 -1
- package/dist/module/PostgrestQueryBuilder.d.ts +4 -12
- package/dist/module/PostgrestQueryBuilder.d.ts.map +1 -1
- package/dist/module/PostgrestQueryBuilder.js +4 -16
- package/dist/module/PostgrestQueryBuilder.js.map +1 -1
- package/dist/module/PostgrestTransformBuilder.d.ts +5 -2
- package/dist/module/PostgrestTransformBuilder.d.ts.map +1 -1
- package/dist/module/PostgrestTransformBuilder.js +16 -2
- package/dist/module/PostgrestTransformBuilder.js.map +1 -1
- package/dist/module/version.d.ts +1 -1
- package/dist/module/version.js +1 -1
- package/package.json +3 -2
- package/src/PostgrestBuilder.ts +154 -0
- package/src/PostgrestClient.ts +124 -0
- package/src/PostgrestFilterBuilder.ts +431 -0
- package/src/PostgrestQueryBuilder.ts +235 -0
- package/src/PostgrestTransformBuilder.ts +204 -0
- package/src/constants.ts +2 -0
- package/src/index.ts +11 -0
- package/src/select-query-parser.ts +297 -0
- package/src/types.ts +61 -0
- package/src/version.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgrestQueryBuilder.js","sourceRoot":"","sources":["../../src/PostgrestQueryBuilder.ts"],"names":[],"mappings":"AACA,OAAO,sBAAsB,MAAM,0BAA0B,CAAA;AAI7D,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAOxC,YACE,GAAQ,EACR,EACE,OAAO,GAAG,EAAE,EACZ,MAAM,EACN,KAAK,GAKN;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAIJ,OAAe,EACf,EACE,IAAI,GAAG,KAAK,EACZ,KAAK,MAMH,EAAE;QAEN,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;QACpC,wCAAwC;QACxC,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,MAAM,cAAc,GAAG,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,GAAG,CAAC;aACpC,KAAK,CAAC,EAAE,CAAC;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC3B,OAAO,EAAE,CAAA;aACV;YACD,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,MAAM,GAAG,CAAC,MAAM,CAAA;aACjB;YACD,OAAO,CAAC,CAAA;QACV,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAA;QACX,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;QACnD,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,KAAK,EAAE,CAAA;SAC1C;QAED,OAAO,IAAI,sBAAsB,CAAC;YAChC,MAAM;YACN,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,KAAK;SACqB,CAAC,CAAA;IAC3C,CAAC;IAED;;;;OAIG;IACH,MAAM,CACJ,MAAmB,EACnB,EACE,KAAK,
|
|
1
|
+
{"version":3,"file":"PostgrestQueryBuilder.js","sourceRoot":"","sources":["../../src/PostgrestQueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -79,13 +79,16 @@ export default class PostgrestTransformBuilder<Table extends Record<string, unkn
|
|
|
79
79
|
* @param settings If `true`, include information on configuration parameters that affect query planning.
|
|
80
80
|
* @param buffers If `true`, include information on buffer usage.
|
|
81
81
|
* @param wal If `true`, include information on WAL record generation
|
|
82
|
+
* @param format The format of the output, can be 'text'(default) or `json`
|
|
82
83
|
*/
|
|
83
|
-
explain({ analyze, verbose, settings, buffers, wal, }?: {
|
|
84
|
+
explain({ analyze, verbose, settings, buffers, wal, format, }?: {
|
|
84
85
|
analyze?: boolean;
|
|
85
86
|
verbose?: boolean;
|
|
86
87
|
settings?: boolean;
|
|
87
88
|
buffers?: boolean;
|
|
88
89
|
wal?: boolean;
|
|
89
|
-
|
|
90
|
+
format?: 'json' | 'text';
|
|
91
|
+
}): PromiseLike<PostgrestResponse<Record<string, unknown>>> | PromiseLike<PostgrestSingleResponse<string>>;
|
|
92
|
+
rollback(): this;
|
|
90
93
|
}
|
|
91
94
|
//# sourceMappingURL=PostgrestTransformBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgrestTransformBuilder.d.ts","sourceRoot":"","sources":["../../src/PostgrestTransformBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAElG;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,yBAAyB,CAC5C,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,MAAM,CACN,SAAQ,gBAAgB,CAAC,MAAM,CAAC;IAChC;;;;OAIG;IACH,MAAM,CAAC,KAAK,SAAS,MAAM,GAAG,GAAG,EAAE,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,SAAS,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,EAC9F,OAAO,CAAC,EAAE,KAAK,GACd,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC;IAuB9C;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,KAAK,EAC3C,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,SAAS,CAAA;KAAE,GAChF,IAAI;IACP,KAAK,CACH,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAC5E,IAAI;IAqBP;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAM5E;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IASvF;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKtC;;;OAGG;IACH,MAAM,IAAI,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAKtD;;;;OAIG;IACH,WAAW,IAAI,WAAW,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAMhE;;OAEG;IACH,GAAG,IAAI,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAKnD;;OAEG;IACH,OAAO,IAAI,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAKxE
|
|
1
|
+
{"version":3,"file":"PostgrestTransformBuilder.d.ts","sourceRoot":"","sources":["../../src/PostgrestTransformBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAElG;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,yBAAyB,CAC5C,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,MAAM,CACN,SAAQ,gBAAgB,CAAC,MAAM,CAAC;IAChC;;;;OAIG;IACH,MAAM,CAAC,KAAK,SAAS,MAAM,GAAG,GAAG,EAAE,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,SAAS,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,EAC9F,OAAO,CAAC,EAAE,KAAK,GACd,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC;IAuB9C;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,KAAK,EAC3C,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,SAAS,CAAA;KAAE,GAChF,IAAI;IACP,KAAK,CACH,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAC5E,IAAI;IAqBP;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAM5E;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IASvF;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKtC;;;OAGG;IACH,MAAM,IAAI,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAKtD;;;;OAIG;IACH,WAAW,IAAI,WAAW,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAMhE;;OAEG;IACH,GAAG,IAAI,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAKnD;;OAEG;IACH,OAAO,IAAI,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAKxE;;;;;;;;;OASG;IACH,OAAO,CAAC,EACN,OAAe,EACf,OAAe,EACf,QAAgB,EAChB,OAAe,EACf,GAAW,EACX,MAAe,GAChB,GAAE;QACD,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,GAAG,CAAC,EAAE,OAAO,CAAA;QACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KACpB,GACF,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GACvD,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAmBhD,QAAQ,IAAI,IAAI;CAQjB"}
|
|
@@ -109,8 +109,9 @@ export default class PostgrestTransformBuilder extends PostgrestBuilder {
|
|
|
109
109
|
* @param settings If `true`, include information on configuration parameters that affect query planning.
|
|
110
110
|
* @param buffers If `true`, include information on buffer usage.
|
|
111
111
|
* @param wal If `true`, include information on WAL record generation
|
|
112
|
+
* @param format The format of the output, can be 'text'(default) or `json`
|
|
112
113
|
*/
|
|
113
|
-
explain({ analyze = false, verbose = false, settings = false, buffers = false, wal = false, } = {}) {
|
|
114
|
+
explain({ analyze = false, verbose = false, settings = false, buffers = false, wal = false, format = 'text', } = {}) {
|
|
114
115
|
const options = [
|
|
115
116
|
analyze ? 'analyze' : null,
|
|
116
117
|
verbose ? 'verbose' : null,
|
|
@@ -122,7 +123,20 @@ export default class PostgrestTransformBuilder extends PostgrestBuilder {
|
|
|
122
123
|
.join('|');
|
|
123
124
|
// An Accept header can carry multiple media types but postgrest-js always sends one
|
|
124
125
|
const forMediatype = this.headers['Accept'];
|
|
125
|
-
this.headers['Accept'] = `application/vnd.pgrst.plan
|
|
126
|
+
this.headers['Accept'] = `application/vnd.pgrst.plan+${format}; for="${forMediatype}"; options=${options};`;
|
|
127
|
+
if (format === 'json')
|
|
128
|
+
return this;
|
|
129
|
+
else
|
|
130
|
+
return this;
|
|
131
|
+
}
|
|
132
|
+
rollback() {
|
|
133
|
+
var _a;
|
|
134
|
+
if (((_a = this.headers['Prefer']) !== null && _a !== void 0 ? _a : '').trim().length > 0) {
|
|
135
|
+
this.headers['Prefer'] += ',tx=rollback';
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
this.headers['Prefer'] = 'tx=rollback';
|
|
139
|
+
}
|
|
126
140
|
return this;
|
|
127
141
|
}
|
|
128
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgrestTransformBuilder.js","sourceRoot":"","sources":["../../src/PostgrestTransformBuilder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PostgrestTransformBuilder.js","sourceRoot":"","sources":["../../src/PostgrestTransformBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AAIjD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,yBAGnB,SAAQ,gBAAwB;IAChC;;;;OAIG;IACH,MAAM,CACJ,OAAe;QAEf,wCAAwC;QACxC,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,MAAM,cAAc,GAAG,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,GAAG,CAAC;aACpC,KAAK,CAAC,EAAE,CAAC;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC3B,OAAO,EAAE,CAAA;aACV;YACD,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,MAAM,GAAG,CAAC,MAAM,CAAA;aACjB;YACD,OAAO,CAAC,CAAA;QACV,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAA;QACX,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;QACnD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAA;SAC9B;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,uBAAuB,CAAA;QACjD,OAAO,IAA8D,CAAA;IACvE,CAAC;IAkBD,KAAK,CACH,MAAc,EACd,EACE,SAAS,GAAG,IAAI,EAChB,UAAU,EACV,YAAY,MAC4D,EAAE;QAE5E,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAA;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEpD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CACvB,GAAG,EACH,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAChF,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAC/D,EAAE,CACH,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAa,EAAE,EAAE,YAAY,KAAgC,EAAE;QACnE,MAAM,GAAG,GAAG,OAAO,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,QAAQ,CAAA;QACnF,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE,YAAY,KAAgC,EAAE;QAC9E,MAAM,SAAS,GAAG,OAAO,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,SAAS,CAAA;QAC3F,MAAM,QAAQ,GAAG,OAAO,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,QAAQ,CAAA;QACxF,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;QAC/C,+BAA+B;QAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAA;QACvD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,mCAAmC,CAAA;QAC5D,OAAO,IAAoD,CAAA;IAC7D,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,mCAAmC,CAAA;QAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACtB,OAAO,IAAyD,CAAA;IAClE,CAAC;IAED;;OAEG;IACH,GAAG;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAA;QACnC,OAAO,IAAoD,CAAA;IAC7D,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,sBAAsB,CAAA;QAC/C,OAAO,IAAqE,CAAA;IAC9E,CAAC;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,EACN,OAAO,GAAG,KAAK,EACf,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,KAAK,EACf,GAAG,GAAG,KAAK,EACX,MAAM,GAAG,MAAM,MAQb,EAAE;QAGJ,MAAM,OAAO,GAAG;YACd,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;YAC1B,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;YAC1B,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;YAC5B,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;YAC1B,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;SACnB;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CAAA;QACZ,oFAAoF;QACpF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,CAAC,OAAO,CACV,QAAQ,CACT,GAAG,8BAA8B,MAAM,UAAU,YAAY,cAAc,OAAO,GAAG,CAAA;QACtF,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,IAA+D,CAAA;;YACxF,OAAO,IAAoD,CAAA;IAClE,CAAC;IAED,QAAQ;;QACN,IAAI,CAAC,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YACpD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAA;SACzC;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAA;SACvC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
package/dist/module/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "1.0.0-rc.
|
|
1
|
+
export declare const version = "1.0.0-rc.4";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/module/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '1.0.0-rc.
|
|
1
|
+
export const version = '1.0.0-rc.4';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@supabase/postgrest-js",
|
|
3
|
-
"version": "1.0.0-rc.
|
|
3
|
+
"version": "1.0.0-rc.4",
|
|
4
4
|
"description": "Isomorphic PostgREST client",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"postgrest",
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"author": "Supabase",
|
|
13
13
|
"files": [
|
|
14
|
-
"dist"
|
|
14
|
+
"dist",
|
|
15
|
+
"src"
|
|
15
16
|
],
|
|
16
17
|
"main": "dist/main/index.js",
|
|
17
18
|
"module": "dist/module/index.js",
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import crossFetch from 'cross-fetch'
|
|
2
|
+
|
|
3
|
+
import type { Fetch, PostgrestResponse } from './types'
|
|
4
|
+
|
|
5
|
+
export default abstract class PostgrestBuilder<Result>
|
|
6
|
+
implements PromiseLike<PostgrestResponse<Result>>
|
|
7
|
+
{
|
|
8
|
+
protected method: 'GET' | 'HEAD' | 'POST' | 'PATCH' | 'DELETE'
|
|
9
|
+
protected url: URL
|
|
10
|
+
protected headers: Record<string, string>
|
|
11
|
+
protected schema?: string
|
|
12
|
+
protected body?: unknown
|
|
13
|
+
protected shouldThrowOnError = false
|
|
14
|
+
protected signal?: AbortSignal
|
|
15
|
+
protected fetch: Fetch
|
|
16
|
+
protected allowEmpty: boolean
|
|
17
|
+
|
|
18
|
+
constructor(builder: PostgrestBuilder<Result>) {
|
|
19
|
+
this.method = builder.method
|
|
20
|
+
this.url = builder.url
|
|
21
|
+
this.headers = builder.headers
|
|
22
|
+
this.schema = builder.schema
|
|
23
|
+
this.body = builder.body
|
|
24
|
+
this.shouldThrowOnError = builder.shouldThrowOnError
|
|
25
|
+
this.signal = builder.signal
|
|
26
|
+
this.allowEmpty = builder.allowEmpty
|
|
27
|
+
|
|
28
|
+
if (builder.fetch) {
|
|
29
|
+
this.fetch = builder.fetch
|
|
30
|
+
} else if (typeof fetch === 'undefined') {
|
|
31
|
+
this.fetch = crossFetch
|
|
32
|
+
} else {
|
|
33
|
+
this.fetch = fetch
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* If there's an error with the query, throwOnError will reject the promise by
|
|
39
|
+
* throwing the error instead of returning it as part of a successful response.
|
|
40
|
+
*
|
|
41
|
+
* {@link https://github.com/supabase/supabase-js/issues/92}
|
|
42
|
+
*/
|
|
43
|
+
throwOnError(): this {
|
|
44
|
+
this.shouldThrowOnError = true
|
|
45
|
+
return this
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
then<TResult1 = PostgrestResponse<Result>, TResult2 = never>(
|
|
49
|
+
onfulfilled?:
|
|
50
|
+
| ((value: PostgrestResponse<Result>) => TResult1 | PromiseLike<TResult1>)
|
|
51
|
+
| undefined
|
|
52
|
+
| null,
|
|
53
|
+
onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null
|
|
54
|
+
): PromiseLike<TResult1 | TResult2> {
|
|
55
|
+
// https://postgrest.org/en/stable/api.html#switching-schemas
|
|
56
|
+
if (typeof this.schema === 'undefined') {
|
|
57
|
+
// skip
|
|
58
|
+
} else if (['GET', 'HEAD'].includes(this.method)) {
|
|
59
|
+
this.headers['Accept-Profile'] = this.schema
|
|
60
|
+
} else {
|
|
61
|
+
this.headers['Content-Profile'] = this.schema
|
|
62
|
+
}
|
|
63
|
+
if (this.method !== 'GET' && this.method !== 'HEAD') {
|
|
64
|
+
this.headers['Content-Type'] = 'application/json'
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// NOTE: Invoke w/o `this` to avoid illegal invocation error.
|
|
68
|
+
// https://github.com/supabase/postgrest-js/pull/247
|
|
69
|
+
const _fetch = this.fetch
|
|
70
|
+
let res = _fetch(this.url.toString(), {
|
|
71
|
+
method: this.method,
|
|
72
|
+
headers: this.headers,
|
|
73
|
+
body: JSON.stringify(this.body),
|
|
74
|
+
signal: this.signal,
|
|
75
|
+
}).then(async (res) => {
|
|
76
|
+
let error = undefined
|
|
77
|
+
let data = undefined
|
|
78
|
+
let count = undefined
|
|
79
|
+
let status = res.status
|
|
80
|
+
let statusText = res.statusText
|
|
81
|
+
|
|
82
|
+
if (res.ok) {
|
|
83
|
+
const isReturnMinimal = this.headers['Prefer']?.split(',').includes('return=minimal')
|
|
84
|
+
if (this.method !== 'HEAD' && !isReturnMinimal) {
|
|
85
|
+
const text = await res.text()
|
|
86
|
+
if (!text) {
|
|
87
|
+
// discard `text`
|
|
88
|
+
} else if (this.headers['Accept'] === 'text/csv') {
|
|
89
|
+
data = text
|
|
90
|
+
} else if (
|
|
91
|
+
this.headers['Accept'] &&
|
|
92
|
+
this.headers['Accept'].indexOf('application/vnd.pgrst.plan+text') !== -1
|
|
93
|
+
) {
|
|
94
|
+
data = text
|
|
95
|
+
} else {
|
|
96
|
+
data = JSON.parse(text)
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const countHeader = this.headers['Prefer']?.match(/count=(exact|planned|estimated)/)
|
|
101
|
+
const contentRange = res.headers.get('content-range')?.split('/')
|
|
102
|
+
if (countHeader && contentRange && contentRange.length > 1) {
|
|
103
|
+
count = parseInt(contentRange[1])
|
|
104
|
+
}
|
|
105
|
+
} else {
|
|
106
|
+
const body = await res.text()
|
|
107
|
+
|
|
108
|
+
try {
|
|
109
|
+
error = JSON.parse(body)
|
|
110
|
+
} catch {
|
|
111
|
+
error = {
|
|
112
|
+
message: body,
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (error && this.allowEmpty && error?.details?.includes('Results contain 0 rows')) {
|
|
117
|
+
error = undefined
|
|
118
|
+
status = 200
|
|
119
|
+
statusText = 'OK'
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (error && this.shouldThrowOnError) {
|
|
123
|
+
throw error
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const postgrestResponse = {
|
|
128
|
+
error,
|
|
129
|
+
data,
|
|
130
|
+
count,
|
|
131
|
+
status,
|
|
132
|
+
statusText,
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return postgrestResponse
|
|
136
|
+
})
|
|
137
|
+
if (!this.shouldThrowOnError) {
|
|
138
|
+
res = res.catch((fetchError) => ({
|
|
139
|
+
error: {
|
|
140
|
+
message: `FetchError: ${fetchError.message}`,
|
|
141
|
+
details: '',
|
|
142
|
+
hint: '',
|
|
143
|
+
code: fetchError.code || '',
|
|
144
|
+
},
|
|
145
|
+
data: undefined,
|
|
146
|
+
count: undefined,
|
|
147
|
+
status: 400,
|
|
148
|
+
statusText: 'Bad Request',
|
|
149
|
+
}))
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return res.then(onfulfilled, onrejected)
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import PostgrestQueryBuilder from './PostgrestQueryBuilder'
|
|
2
|
+
import PostgrestFilterBuilder from './PostgrestFilterBuilder'
|
|
3
|
+
import PostgrestBuilder from './PostgrestBuilder'
|
|
4
|
+
import { DEFAULT_HEADERS } from './constants'
|
|
5
|
+
import { Fetch, GenericSchema } from './types'
|
|
6
|
+
|
|
7
|
+
export default class PostgrestClient<
|
|
8
|
+
Database = any,
|
|
9
|
+
SchemaName extends string & keyof Database = 'public' extends keyof Database
|
|
10
|
+
? 'public'
|
|
11
|
+
: string & keyof Database,
|
|
12
|
+
Schema extends GenericSchema = Database[SchemaName] extends GenericSchema
|
|
13
|
+
? Database[SchemaName]
|
|
14
|
+
: any
|
|
15
|
+
> {
|
|
16
|
+
url: string
|
|
17
|
+
headers: Record<string, string>
|
|
18
|
+
schema?: SchemaName
|
|
19
|
+
fetch?: Fetch
|
|
20
|
+
|
|
21
|
+
// TODO: Add back shouldThrowOnError once we figure out the typings
|
|
22
|
+
/**
|
|
23
|
+
* Creates a PostgREST client.
|
|
24
|
+
*
|
|
25
|
+
* @param url URL of the PostgREST endpoint.
|
|
26
|
+
* @param headers Custom headers.
|
|
27
|
+
* @param schema Postgres schema to switch to.
|
|
28
|
+
*/
|
|
29
|
+
constructor(
|
|
30
|
+
url: string,
|
|
31
|
+
{
|
|
32
|
+
headers = {},
|
|
33
|
+
schema,
|
|
34
|
+
fetch,
|
|
35
|
+
}: {
|
|
36
|
+
headers?: Record<string, string>
|
|
37
|
+
schema?: SchemaName
|
|
38
|
+
fetch?: Fetch
|
|
39
|
+
} = {}
|
|
40
|
+
) {
|
|
41
|
+
this.url = url
|
|
42
|
+
this.headers = { ...DEFAULT_HEADERS, ...headers }
|
|
43
|
+
this.schema = schema
|
|
44
|
+
this.fetch = fetch
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Perform a table operation.
|
|
49
|
+
*
|
|
50
|
+
* @param table The table name to operate on.
|
|
51
|
+
*/
|
|
52
|
+
from<
|
|
53
|
+
TableName extends string & keyof Schema['Tables'],
|
|
54
|
+
Table extends Schema['Tables'][TableName]
|
|
55
|
+
>(table: TableName): PostgrestQueryBuilder<Table>
|
|
56
|
+
from(table: string): PostgrestQueryBuilder<any>
|
|
57
|
+
from(table: string): PostgrestQueryBuilder<any> {
|
|
58
|
+
const url = new URL(`${this.url}/${table}`)
|
|
59
|
+
return new PostgrestQueryBuilder<any>(url, {
|
|
60
|
+
headers: { ...this.headers },
|
|
61
|
+
schema: this.schema,
|
|
62
|
+
fetch: this.fetch,
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Perform a function call.
|
|
68
|
+
*
|
|
69
|
+
* @param fn The function name to call.
|
|
70
|
+
* @param args The parameters to pass to the function call.
|
|
71
|
+
* @param options Named parameters.
|
|
72
|
+
*/
|
|
73
|
+
rpc<
|
|
74
|
+
FunctionName extends string & keyof Schema['Functions'],
|
|
75
|
+
Function_ extends Schema['Functions'][FunctionName]
|
|
76
|
+
>(
|
|
77
|
+
fn: FunctionName,
|
|
78
|
+
args: Function_['Args'] = {},
|
|
79
|
+
{
|
|
80
|
+
head = false,
|
|
81
|
+
count,
|
|
82
|
+
}: {
|
|
83
|
+
/** When set to true, no data will be returned. */
|
|
84
|
+
head?: boolean
|
|
85
|
+
/** Count algorithm to use to count rows in a table. */
|
|
86
|
+
count?: 'exact' | 'planned' | 'estimated'
|
|
87
|
+
} = {}
|
|
88
|
+
): PostgrestFilterBuilder<
|
|
89
|
+
Function_['Returns'] extends any[]
|
|
90
|
+
? Function_['Returns'][number] extends Record<string, unknown>
|
|
91
|
+
? Function_['Returns'][number]
|
|
92
|
+
: never
|
|
93
|
+
: never,
|
|
94
|
+
Function_['Returns']
|
|
95
|
+
> {
|
|
96
|
+
let method: 'HEAD' | 'POST'
|
|
97
|
+
const url = new URL(`${this.url}/rpc/${fn}`)
|
|
98
|
+
let body: unknown | undefined
|
|
99
|
+
if (head) {
|
|
100
|
+
method = 'HEAD'
|
|
101
|
+
Object.entries(args).forEach(([name, value]) => {
|
|
102
|
+
url.searchParams.append(name, `${value}`)
|
|
103
|
+
})
|
|
104
|
+
} else {
|
|
105
|
+
method = 'POST'
|
|
106
|
+
body = args
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const headers = { ...this.headers }
|
|
110
|
+
if (count) {
|
|
111
|
+
headers['Prefer'] = `count=${count}`
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return new PostgrestFilterBuilder({
|
|
115
|
+
method,
|
|
116
|
+
url,
|
|
117
|
+
headers,
|
|
118
|
+
schema: this.schema,
|
|
119
|
+
body,
|
|
120
|
+
fetch: this.fetch,
|
|
121
|
+
allowEmpty: false,
|
|
122
|
+
} as unknown as PostgrestBuilder<Function_['Returns']>)
|
|
123
|
+
}
|
|
124
|
+
}
|