@motherbase/client 1.4.0 → 1.5.1

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.
Files changed (82) hide show
  1. package/README.md +379 -284
  2. package/dist/admin.d.ts +53 -3
  3. package/dist/admin.d.ts.map +1 -1
  4. package/dist/admin.js +37 -1
  5. package/dist/admin.js.map +1 -1
  6. package/dist/auth.d.ts +101 -4
  7. package/dist/auth.d.ts.map +1 -1
  8. package/dist/auth.js +147 -7
  9. package/dist/auth.js.map +1 -1
  10. package/dist/channel.d.ts +7 -0
  11. package/dist/channel.d.ts.map +1 -1
  12. package/dist/channel.js +2 -0
  13. package/dist/channel.js.map +1 -1
  14. package/dist/compat.d.ts.map +1 -1
  15. package/dist/compat.js +3 -1
  16. package/dist/compat.js.map +1 -1
  17. package/dist/http.d.ts +0 -1
  18. package/dist/http.d.ts.map +1 -1
  19. package/dist/http.js +16 -15
  20. package/dist/http.js.map +1 -1
  21. package/dist/index.d.ts +38 -8
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +55 -21
  24. package/dist/index.js.map +1 -1
  25. package/dist/mfa.d.ts +17 -0
  26. package/dist/mfa.d.ts.map +1 -1
  27. package/dist/mfa.js +22 -0
  28. package/dist/mfa.js.map +1 -1
  29. package/dist/organization.d.ts +234 -0
  30. package/dist/organization.d.ts.map +1 -0
  31. package/dist/organization.js +157 -0
  32. package/dist/organization.js.map +1 -0
  33. package/dist/passkey.d.ts +59 -0
  34. package/dist/passkey.d.ts.map +1 -0
  35. package/dist/passkey.js +87 -0
  36. package/dist/passkey.js.map +1 -0
  37. package/dist/pkce.d.ts +13 -0
  38. package/dist/pkce.d.ts.map +1 -0
  39. package/dist/pkce.js +52 -0
  40. package/dist/pkce.js.map +1 -0
  41. package/dist/plugin-endpoint.d.ts +20 -0
  42. package/dist/plugin-endpoint.d.ts.map +1 -0
  43. package/dist/plugin-endpoint.js +24 -0
  44. package/dist/plugin-endpoint.js.map +1 -0
  45. package/dist/postgrest.d.ts +1 -1
  46. package/dist/postgrest.d.ts.map +1 -1
  47. package/dist/postgrest.js +5 -9
  48. package/dist/postgrest.js.map +1 -1
  49. package/dist/realtime.d.ts.map +1 -1
  50. package/dist/realtime.js +5 -1
  51. package/dist/realtime.js.map +1 -1
  52. package/dist/sso.d.ts +147 -0
  53. package/dist/sso.d.ts.map +1 -0
  54. package/dist/sso.js +35 -0
  55. package/dist/sso.js.map +1 -0
  56. package/dist/storage.d.ts +42 -13
  57. package/dist/storage.d.ts.map +1 -1
  58. package/dist/storage.js +80 -30
  59. package/dist/storage.js.map +1 -1
  60. package/dist/types.d.ts +14 -9
  61. package/dist/types.d.ts.map +1 -1
  62. package/dist/warn.d.ts +0 -2
  63. package/dist/warn.d.ts.map +1 -1
  64. package/dist/warn.js +0 -4
  65. package/dist/warn.js.map +1 -1
  66. package/package.json +4 -2
  67. package/dist/devices.d.ts +0 -13
  68. package/dist/devices.d.ts.map +0 -1
  69. package/dist/devices.js +0 -13
  70. package/dist/devices.js.map +0 -1
  71. package/dist/edge.d.ts +0 -7
  72. package/dist/edge.d.ts.map +0 -1
  73. package/dist/edge.js +0 -13
  74. package/dist/edge.js.map +0 -1
  75. package/dist/profile.d.ts +0 -16
  76. package/dist/profile.d.ts.map +0 -1
  77. package/dist/profile.js +0 -26
  78. package/dist/profile.js.map +0 -1
  79. package/dist/rest.d.ts +0 -50
  80. package/dist/rest.d.ts.map +0 -1
  81. package/dist/rest.js +0 -75
  82. package/dist/rest.js.map +0 -1
@@ -0,0 +1,157 @@
1
+ import { pluginGet, pluginPost } from './plugin-endpoint.js';
2
+ const R = {
3
+ create: '/api/auth/organization/create',
4
+ update: '/api/auth/organization/update',
5
+ delete: '/api/auth/organization/delete',
6
+ list: '/api/auth/organization/list',
7
+ getFull: '/api/auth/organization/get-full-organization',
8
+ setActive: '/api/auth/organization/set-active',
9
+ checkSlug: '/api/auth/organization/check-slug',
10
+ leave: '/api/auth/organization/leave',
11
+ listMembers: '/api/auth/organization/list-members',
12
+ getActiveMember: '/api/auth/organization/get-active-member',
13
+ getActiveMemberRole: '/api/auth/organization/get-active-member-role',
14
+ removeMember: '/api/auth/organization/remove-member',
15
+ updateMemberRole: '/api/auth/organization/update-member-role',
16
+ hasPermission: '/api/auth/organization/has-permission',
17
+ inviteMember: '/api/auth/organization/invite-member',
18
+ acceptInvitation: '/api/auth/organization/accept-invitation',
19
+ rejectInvitation: '/api/auth/organization/reject-invitation',
20
+ cancelInvitation: '/api/auth/organization/cancel-invitation',
21
+ getInvitation: '/api/auth/organization/get-invitation',
22
+ listInvitations: '/api/auth/organization/list-invitations',
23
+ listUserInvitations: '/api/auth/organization/list-user-invitations',
24
+ createTeam: '/api/auth/organization/create-team',
25
+ updateTeam: '/api/auth/organization/update-team',
26
+ removeTeam: '/api/auth/organization/remove-team',
27
+ listTeams: '/api/auth/organization/list-teams',
28
+ setActiveTeam: '/api/auth/organization/set-active-team',
29
+ listUserTeams: '/api/auth/organization/list-user-teams',
30
+ listTeamMembers: '/api/auth/organization/list-team-members',
31
+ addTeamMember: '/api/auth/organization/add-team-member',
32
+ removeTeamMember: '/api/auth/organization/remove-team-member',
33
+ };
34
+ export class OrganizationClient {
35
+ constructor(http) {
36
+ this.http = http;
37
+ }
38
+ // Organizations
39
+ /** Create an organization. The caller becomes its owner, and it becomes active unless told otherwise. */
40
+ create(params) {
41
+ return pluginPost(this.http, R.create, params);
42
+ }
43
+ update(params) {
44
+ return pluginPost(this.http, R.update, params);
45
+ }
46
+ delete(params) {
47
+ return pluginPost(this.http, R.delete, params);
48
+ }
49
+ /** Organizations the signed-in user belongs to. */
50
+ list() {
51
+ return pluginGet(this.http, R.list);
52
+ }
53
+ /**
54
+ * One organization with its members, invitations and teams. With no
55
+ * parameters, the active organization; `null` when there is none.
56
+ */
57
+ getFullOrganization(params = {}) {
58
+ return pluginGet(this.http, R.getFull, params);
59
+ }
60
+ /**
61
+ * Make an organization the session's active one, which every call taking an
62
+ * optional `organizationId` then defaults to. `organizationId: null` clears it.
63
+ */
64
+ setActive(params) {
65
+ return pluginPost(this.http, R.setActive, params);
66
+ }
67
+ /** Whether a slug is free. A taken slug is an error, as the server reports it. */
68
+ checkSlug(params) {
69
+ return pluginPost(this.http, R.checkSlug, params);
70
+ }
71
+ leave(params) {
72
+ return pluginPost(this.http, R.leave, params);
73
+ }
74
+ // Members
75
+ listMembers(params = {}) {
76
+ return pluginGet(this.http, R.listMembers, params);
77
+ }
78
+ /** The signed-in user's membership in the active organization. */
79
+ getActiveMember() {
80
+ return pluginGet(this.http, R.getActiveMember);
81
+ }
82
+ /** A member's role. Without `userId`, the signed-in user's. */
83
+ getActiveMemberRole(params = {}) {
84
+ return pluginGet(this.http, R.getActiveMemberRole, params);
85
+ }
86
+ removeMember(params) {
87
+ return pluginPost(this.http, R.removeMember, params);
88
+ }
89
+ updateMemberRole(params) {
90
+ return pluginPost(this.http, R.updateMemberRole, params);
91
+ }
92
+ /** Whether the signed-in user's role grants every listed action. */
93
+ hasPermission(params) {
94
+ return pluginPost(this.http, R.hasPermission, params);
95
+ }
96
+ // Invitations
97
+ /** Invite by email. The project's invitation email carries the invitation id for `acceptInvitation`. */
98
+ inviteMember(params) {
99
+ return pluginPost(this.http, R.inviteMember, params);
100
+ }
101
+ acceptInvitation(params) {
102
+ return pluginPost(this.http, R.acceptInvitation, params);
103
+ }
104
+ rejectInvitation(params) {
105
+ return pluginPost(this.http, R.rejectInvitation, params);
106
+ }
107
+ /** Withdraw an invitation that was sent. Rejecting one you received is `rejectInvitation`. */
108
+ cancelInvitation(params) {
109
+ return pluginPost(this.http, R.cancelInvitation, params);
110
+ }
111
+ /** An invitation addressed to the signed-in user, with what an accept screen needs to show. */
112
+ getInvitation(params) {
113
+ return pluginGet(this.http, R.getInvitation, params);
114
+ }
115
+ /** Invitations an organization has sent. */
116
+ listInvitations(params = {}) {
117
+ return pluginGet(this.http, R.listInvitations, params);
118
+ }
119
+ /** Pending invitations addressed to the signed-in user, across organizations. */
120
+ listUserInvitations() {
121
+ return pluginGet(this.http, R.listUserInvitations);
122
+ }
123
+ // Teams (require "Teams inside organizations")
124
+ createTeam(params) {
125
+ return pluginPost(this.http, R.createTeam, params);
126
+ }
127
+ updateTeam(params) {
128
+ return pluginPost(this.http, R.updateTeam, params);
129
+ }
130
+ removeTeam(params) {
131
+ return pluginPost(this.http, R.removeTeam, params);
132
+ }
133
+ /** Teams of an organization. */
134
+ listTeams(params = {}) {
135
+ return pluginGet(this.http, R.listTeams, params);
136
+ }
137
+ /** `teamId: null` clears the active team. */
138
+ setActiveTeam(params) {
139
+ return pluginPost(this.http, R.setActiveTeam, params);
140
+ }
141
+ /** Teams the signed-in user is in. */
142
+ listUserTeams() {
143
+ return pluginGet(this.http, R.listUserTeams);
144
+ }
145
+ /** Members of a team. Without `teamId`, the active team. */
146
+ listTeamMembers(params = {}) {
147
+ return pluginGet(this.http, R.listTeamMembers, params);
148
+ }
149
+ /** Add an organization member to a team. */
150
+ addTeamMember(params) {
151
+ return pluginPost(this.http, R.addTeamMember, params);
152
+ }
153
+ removeTeamMember(params) {
154
+ return pluginPost(this.http, R.removeTeamMember, params);
155
+ }
156
+ }
157
+ //# sourceMappingURL=organization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.js","sourceRoot":"","sources":["../src/organization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { HttpClient } from './http.js';
2
+ import type { MotherbaseResponse, User } from './types.js';
3
+ /**
4
+ * `client.auth.passkey`: the signed-in user's passkeys (Better Auth's passkey
5
+ * plugin). Signing in with one is `client.auth.signInWithPasskey()`.
6
+ *
7
+ * A passkey here is a first factor: it signs the user in on its own. supabase-js
8
+ * only knows WebAuthn as a second factor (`mfa.enroll({ factorType: 'webauthn' })`),
9
+ * so this is a separate namespace rather than a `mfa` factor that would sign in
10
+ * where supabase-js code expects a step-up.
11
+ *
12
+ * The browser ceremony uses WebAuthn's JSON methods
13
+ * (`PublicKeyCredential.parseCreationOptionsFromJSON` and `toJSON()`), so there
14
+ * is no encoding dependency. A runtime without them (React Native, Node, an old
15
+ * browser) gets an error result, not a crash.
16
+ */
17
+ export interface Passkey {
18
+ id: string;
19
+ name?: string | null;
20
+ userId: string;
21
+ credentialID: string;
22
+ deviceType: 'singleDevice' | 'multiDevice';
23
+ /** Synced by the platform (iCloud Keychain, Google Password Manager). */
24
+ backedUp: boolean;
25
+ transports?: string;
26
+ aaguid?: string | null;
27
+ createdAt: string;
28
+ }
29
+ export declare class PasskeyClient {
30
+ private readonly http;
31
+ constructor(http: HttpClient);
32
+ /** Create a passkey on this device for the signed-in user. Prompts the browser's passkey UI. */
33
+ register(params?: {
34
+ name?: string;
35
+ authenticatorAttachment?: 'platform' | 'cross-platform';
36
+ }): Promise<MotherbaseResponse<Passkey>>;
37
+ list(): Promise<MotherbaseResponse<Passkey[]>>;
38
+ /** Rename a passkey. */
39
+ update(params: {
40
+ id: string;
41
+ name: string;
42
+ }): Promise<MotherbaseResponse<{
43
+ passkey: Passkey;
44
+ }>>;
45
+ delete(params: {
46
+ id: string;
47
+ }): Promise<MotherbaseResponse<{
48
+ status: boolean;
49
+ }>>;
50
+ }
51
+ /**
52
+ * The sign-in half of the ceremony, for `AuthClient.signInWithPasskey`, which
53
+ * owns persisting the session. Resolves with the Better Auth session token.
54
+ */
55
+ export declare function authenticateWithPasskey(http: HttpClient): Promise<MotherbaseResponse<{
56
+ token: string;
57
+ user: User;
58
+ }>>;
59
+ //# sourceMappingURL=passkey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey.d.ts","sourceRoot":"","sources":["../src/passkey.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,cAAc,GAAG,aAAa,CAAC;IAC3C,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAiBD,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,gGAAgG;IAC1F,QAAQ,CACZ,MAAM,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,uBAAuB,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAA;KAAO,GACtF,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAyBvC,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC;IAI9C,wBAAwB;IACxB,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAI/F,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAGjF;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,kBAAkB,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC,CA4B5D"}
@@ -0,0 +1,87 @@
1
+ import { toError } from './http.js';
2
+ import { pluginGet, pluginPost } from './plugin-endpoint.js';
3
+ const R = {
4
+ registerOptions: '/api/auth/passkey/generate-register-options',
5
+ verifyRegistration: '/api/auth/passkey/verify-registration',
6
+ authenticateOptions: '/api/auth/passkey/generate-authenticate-options',
7
+ verifyAuthentication: '/api/auth/passkey/verify-authentication',
8
+ list: '/api/auth/passkey/list-user-passkeys',
9
+ update: '/api/auth/passkey/update-passkey',
10
+ delete: '/api/auth/passkey/delete-passkey',
11
+ };
12
+ // The plugin keeps the WebAuthn challenge in a signed cookie between the options
13
+ // call and the verify call; cross-origin, fetch only stores and resends it with
14
+ // `include` (the same constraint as the OAuth state cookie).
15
+ const CEREMONY = { credentials: 'include' };
16
+ export class PasskeyClient {
17
+ constructor(http) {
18
+ this.http = http;
19
+ }
20
+ /** Create a passkey on this device for the signed-in user. Prompts the browser's passkey UI. */
21
+ async register(params = {}) {
22
+ const unsupported = webAuthnUnsupported();
23
+ if (unsupported)
24
+ return unsupported;
25
+ const options = await pluginGet(this.http, R.registerOptions, params, CEREMONY);
26
+ if (options.error)
27
+ return { data: null, error: options.error };
28
+ const credential = await runCeremony(() => navigator.credentials.create({ publicKey: PublicKeyCredential.parseCreationOptionsFromJSON(options.data) }));
29
+ if (credential.error)
30
+ return { data: null, error: credential.error };
31
+ return pluginPost(this.http, R.verifyRegistration, { response: credential.data, name: params.name }, CEREMONY);
32
+ }
33
+ list() {
34
+ return pluginGet(this.http, R.list);
35
+ }
36
+ /** Rename a passkey. */
37
+ update(params) {
38
+ return pluginPost(this.http, R.update, params);
39
+ }
40
+ delete(params) {
41
+ return pluginPost(this.http, R.delete, params);
42
+ }
43
+ }
44
+ /**
45
+ * The sign-in half of the ceremony, for `AuthClient.signInWithPasskey`, which
46
+ * owns persisting the session. Resolves with the Better Auth session token.
47
+ */
48
+ export async function authenticateWithPasskey(http) {
49
+ const unsupported = webAuthnUnsupported();
50
+ if (unsupported)
51
+ return unsupported;
52
+ // Anonymous on purpose: with a session attached, the server narrows the
53
+ // allowed credentials to that user's, which is a re-authentication, not a sign-in.
54
+ const ceremony = { ...CEREMONY, anonymous: true };
55
+ const options = await pluginGet(http, R.authenticateOptions, {}, ceremony);
56
+ if (options.error)
57
+ return { data: null, error: options.error };
58
+ const credential = await runCeremony(() => navigator.credentials.get({ publicKey: PublicKeyCredential.parseRequestOptionsFromJSON(options.data) }));
59
+ if (credential.error)
60
+ return { data: null, error: credential.error };
61
+ const verified = await pluginPost(http, R.verifyAuthentication, { response: credential.data }, ceremony);
62
+ if (verified.error)
63
+ return { data: null, error: verified.error };
64
+ return { data: { token: verified.data.session.token, user: verified.data.user }, error: null };
65
+ }
66
+ function webAuthnUnsupported() {
67
+ const supported = typeof navigator !== 'undefined' &&
68
+ typeof navigator.credentials !== 'undefined' &&
69
+ typeof PublicKeyCredential !== 'undefined' &&
70
+ typeof PublicKeyCredential.parseCreationOptionsFromJSON === 'function';
71
+ return supported
72
+ ? null
73
+ : { data: null, error: { message: 'Passkeys need a browser with WebAuthn JSON support.' } };
74
+ }
75
+ /** Run the browser prompt. A dismissed prompt is a `NotAllowedError`, reported as the error result. */
76
+ async function runCeremony(prompt) {
77
+ try {
78
+ const credential = (await prompt());
79
+ if (!credential)
80
+ return { data: null, error: { message: 'No passkey was selected.' } };
81
+ return { data: credential.toJSON(), error: null };
82
+ }
83
+ catch (err) {
84
+ return { data: null, error: toError(err) };
85
+ }
86
+ }
87
+ //# sourceMappingURL=passkey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey.js","sourceRoot":"","sources":["../src/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAgC7D,MAAM,CAAC,GAAG;IACR,eAAe,EAAE,6CAA6C;IAC9D,kBAAkB,EAAE,uCAAuC;IAC3D,mBAAmB,EAAE,iDAAiD;IACtE,oBAAoB,EAAE,yCAAyC;IAC/D,IAAI,EAAE,sCAAsC;IAC5C,MAAM,EAAE,kCAAkC;IAC1C,MAAM,EAAE,kCAAkC;CAClC,CAAC;AAEX,iFAAiF;AACjF,gFAAgF;AAChF,6DAA6D;AAC7D,MAAM,QAAQ,GAAG,EAAE,WAAW,EAAE,SAAS,EAAW,CAAC;AAErD,MAAM,OAAO,aAAa;IACxB,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,gGAAgG;IAChG,KAAK,CAAC,QAAQ,CACZ,SAAqF,EAAE;QAEvF,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;QAC1C,IAAI,WAAW;YAAE,OAAO,WAAW,CAAC;QAEpC,MAAM,OAAO,GAAG,MAAM,SAAS,CAC7B,IAAI,CAAC,IAAI,EACT,CAAC,CAAC,eAAe,EACjB,MAAM,EACN,QAAQ,CACT,CAAC;QACF,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAE/D,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CACxC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,mBAAmB,CAAC,4BAA4B,CAAC,OAAO,CAAC,IAAK,CAAC,EAAE,CAAC,CAC7G,CAAC;QACF,IAAI,UAAU,CAAC,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;QAErE,OAAO,UAAU,CACf,IAAI,CAAC,IAAI,EACT,CAAC,CAAC,kBAAkB,EACpB,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAChD,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,IAAI;QACF,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,wBAAwB;IACxB,MAAM,CAAC,MAAoC;QACzC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,MAAsB;QAC3B,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAAgB;IAEhB,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,wEAAwE;IACxE,mFAAmF;IACnF,MAAM,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,SAAS,CAC7B,IAAI,EACJ,CAAC,CAAC,mBAAmB,EACrB,EAAE,EACF,QAAQ,CACT,CAAC;IACF,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IAE/D,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CACxC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,mBAAmB,CAAC,2BAA2B,CAAC,OAAO,CAAC,IAAK,CAAC,EAAE,CAAC,CACzG,CAAC;IACF,IAAI,UAAU,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;IAErE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAC/B,IAAI,EACJ,CAAC,CAAC,oBAAoB,EACtB,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,EAC7B,QAAQ,CACT,CAAC;IACF,IAAI,QAAQ,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACnG,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,SAAS,GACb,OAAO,SAAS,KAAK,WAAW;QAChC,OAAO,SAAS,CAAC,WAAW,KAAK,WAAW;QAC5C,OAAO,mBAAmB,KAAK,WAAW;QAC1C,OAAO,mBAAmB,CAAC,4BAA4B,KAAK,UAAU,CAAC;IACzE,OAAO,SAAS;QACd,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,qDAAqD,EAAE,EAAE,CAAC;AAChG,CAAC;AAED,uGAAuG;AACvG,KAAK,UAAU,WAAW,CACxB,MAAwC;IAExC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,CAAC,MAAM,MAAM,EAAE,CAA+B,CAAC;QAClE,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,CAAC;QACvF,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC"}
package/dist/pkce.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ import type { KeyValueStorageAdapter } from './types.js';
2
+ /** 56 unreserved characters (RFC 7636 allows 43 to 128). */
3
+ export declare function generateCodeVerifier(): string;
4
+ export declare function codeChallengeFor(verifier: string): Promise<string>;
5
+ /** Append the challenge to the redirect URL, which is where the server looks for it. */
6
+ export declare function withCodeChallenge(redirectTo: string, challenge: string): string;
7
+ export interface VerifierStore {
8
+ get(): Promise<string | null>;
9
+ set(verifier: string): Promise<void>;
10
+ clear(): Promise<void>;
11
+ }
12
+ export declare function verifierStore(storageKey: string, storage?: KeyValueStorageAdapter): VerifierStore;
13
+ //# sourceMappingURL=pkce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkce.d.ts","sourceRoot":"","sources":["../src/pkce.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAqBzD,4DAA4D;AAC5D,wBAAgB,oBAAoB,IAAI,MAAM,CAG7C;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGxE;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAM/E;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9B,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAWD,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,aAAa,CASjG"}
package/dist/pkce.js ADDED
@@ -0,0 +1,52 @@
1
+ /**
2
+ * The client half of the PKCE flow (`flowType: 'pkce'`).
3
+ *
4
+ * `signInWithOAuth` makes a verifier, keeps it, and sends only its SHA-256
5
+ * challenge on the redirect URL. The provider callback comes back with
6
+ * `?code=`, and `exchangeCodeForSession(code)` proves possession of the
7
+ * verifier to get the session. The verifier has to outlive a full-page
8
+ * navigation, so it lives in the key/value storage the app passed, or in
9
+ * localStorage, the way supabase-js keeps `<storageKey>-code-verifier`.
10
+ */
11
+ const VERIFIER_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';
12
+ function base64Url(bytes) {
13
+ let binary = '';
14
+ for (const byte of bytes)
15
+ binary += String.fromCharCode(byte);
16
+ return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
17
+ }
18
+ /** 56 unreserved characters (RFC 7636 allows 43 to 128). */
19
+ export function generateCodeVerifier() {
20
+ const bytes = crypto.getRandomValues(new Uint8Array(56));
21
+ return Array.from(bytes, b => VERIFIER_ALPHABET[b % VERIFIER_ALPHABET.length]).join('');
22
+ }
23
+ export async function codeChallengeFor(verifier) {
24
+ const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(verifier));
25
+ return base64Url(new Uint8Array(digest));
26
+ }
27
+ /** Append the challenge to the redirect URL, which is where the server looks for it. */
28
+ export function withCodeChallenge(redirectTo, challenge) {
29
+ const hash = redirectTo.indexOf('#');
30
+ const base = hash === -1 ? redirectTo : redirectTo.slice(0, hash);
31
+ const fragment = hash === -1 ? '' : redirectTo.slice(hash);
32
+ const separator = base.includes('?') ? '&' : '?';
33
+ return `${base}${separator}code_challenge=${encodeURIComponent(challenge)}&code_challenge_method=s256${fragment}`;
34
+ }
35
+ function inMemory() {
36
+ const values = new Map();
37
+ return {
38
+ getItem: key => values.get(key) ?? null,
39
+ setItem: (key, value) => void values.set(key, value),
40
+ removeItem: key => void values.delete(key),
41
+ };
42
+ }
43
+ export function verifierStore(storageKey, storage) {
44
+ const backing = storage ?? globalThis.localStorage ?? inMemory();
45
+ const key = `${storageKey}-code-verifier`;
46
+ return {
47
+ get: async () => (await backing.getItem(key)) ?? null,
48
+ set: async (verifier) => { await backing.setItem(key, verifier); },
49
+ clear: async () => { await backing.removeItem(key); },
50
+ };
51
+ }
52
+ //# sourceMappingURL=pkce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkce.js","sourceRoot":"","sources":["../src/pkce.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { HttpClient, RequestOptions } from './http.js';
2
+ import type { MotherbaseResponse } from './types.js';
3
+ /**
4
+ * Transport for the Better Auth plugin namespaces: `auth.organization`,
5
+ * `auth.passkey` and `auth.sso`.
6
+ *
7
+ * Those namespaces are thin on purpose. Their methods and parameters keep Better
8
+ * Auth's own names, so its plugin documentation stays accurate for them, and
9
+ * the SDK adds only what an app would otherwise have to wire itself: the
10
+ * session's bearer token, and the `{ data, error }` result every other SDK call
11
+ * returns. supabase-js has no equivalent for any of them, so there is no shape
12
+ * to be compatible with beyond that result.
13
+ */
14
+ type PluginRequestOptions = Pick<RequestOptions, 'anonymous' | 'credentials'>;
15
+ export declare function pluginGet<T>(http: HttpClient, path: string,
16
+ /** Scalar values only. `undefined` and `null` are left out rather than sent as text. */
17
+ query?: object, options?: PluginRequestOptions): Promise<MotherbaseResponse<T>>;
18
+ export declare function pluginPost<T>(http: HttpClient, path: string, body?: object, options?: PluginRequestOptions): Promise<MotherbaseResponse<T>>;
19
+ export {};
20
+ //# sourceMappingURL=plugin-endpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-endpoint.d.ts","sourceRoot":"","sources":["../src/plugin-endpoint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;;;;;;;;GAUG;AAEH,KAAK,oBAAoB,GAAG,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,aAAa,CAAC,CAAC;AAE9E,wBAAgB,SAAS,CAAC,CAAC,EACzB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM;AACZ,wFAAwF;AACxF,KAAK,GAAE,MAAW,EAClB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAOhC;AAED,wBAAgB,UAAU,CAAC,CAAC,EAC1B,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAW,EACjB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAEhC"}
@@ -0,0 +1,24 @@
1
+ import { toError } from './http.js';
2
+ export function pluginGet(http, path,
3
+ /** Scalar values only. `undefined` and `null` are left out rather than sent as text. */
4
+ query = {}, options = {}) {
5
+ const search = new URLSearchParams();
6
+ for (const [key, value] of Object.entries(query)) {
7
+ if (value !== undefined && value !== null)
8
+ search.set(key, String(value));
9
+ }
10
+ const suffix = search.toString();
11
+ return send(http, suffix ? `${path}?${suffix}` : path, options);
12
+ }
13
+ export function pluginPost(http, path, body = {}, options = {}) {
14
+ return send(http, path, { ...options, method: 'POST', body });
15
+ }
16
+ async function send(http, path, options) {
17
+ try {
18
+ return { data: await http.request(path, { ...options, raw: true }), error: null };
19
+ }
20
+ catch (err) {
21
+ return { data: null, error: toError(err) };
22
+ }
23
+ }
24
+ //# sourceMappingURL=plugin-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-endpoint.js","sourceRoot":"","sources":["../src/plugin-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,MAAM,UAAU,SAAS,CACvB,IAAgB,EAChB,IAAY;AACZ,wFAAwF;AACxF,QAAgB,EAAE,EAClB,UAAgC,EAAE;IAElC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IACjC,OAAO,IAAI,CAAI,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,IAAgB,EAChB,IAAY,EACZ,OAAe,EAAE,EACjB,UAAgC,EAAE;IAElC,OAAO,IAAI,CAAI,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,IAAI,CAAI,IAAgB,EAAE,IAAY,EAAE,OAAuB;IAC5E,IAAI,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAI,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACvF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -127,7 +127,7 @@ export declare class PostgrestQueryBuilder<Row extends object = Record<string, u
127
127
  private body?;
128
128
  private rowMode;
129
129
  private shouldThrow;
130
- /** Set by `select()`, so a write can tell "rows asked for" from "rows always returned". */
130
+ /** Set by `select()`, so a write can tell "rows asked for" from "no rows requested". */
131
131
  private selectCalled;
132
132
  constructor(http: HttpClient, model: string,
133
133
  /** supabase-js semantic parity, from `createClient(..., { compat: 'supabase' })`. */
@@ -1 +1 @@
1
- {"version":3,"file":"postgrest.d.ts","sourceRoot":"","sources":["../src/postgrest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgrest.d.ts","sourceRoot":"","sources":["../src/postgrest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,WAAW,CAAC;AAEhD,OAAO,KAAK,EAAmB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAElE,sEAAsE;AACtE,MAAM,MAAM,qBAAqB,GAC7B,MAAM,GACN,SAAS,kBAAkB,EAAE,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,2FAA2F;AAC3F,MAAM,MAAM,uBAAuB,GAC/B,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,IAAI,GACJ,IAAI,GACJ,YAAY,GACZ,KAAK,GACL,OAAO,GACP,OAAO,GACP,MAAM,GACN,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,KAAK,CAAC;AAEV,6EAA6E;AAC7E,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAa,SAAQ,qBAAqB;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,mEAAmE;IACnE,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IACjE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAkBD,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAK/D;AA4DD;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAqB,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC7E,YAAW,WAAW,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;IA8B9C,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,qFAAqF;IACrF,OAAO,CAAC,QAAQ,CAAC,MAAM;IA/BzB,OAAO,CAAC,MAAM,CAAuD;IACrE,OAAO,CAAC,OAAO,CAAO;IACtB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,yFAAyF;IACzF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAU;IACvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAS;IAC5B,wFAAwF;IACxF,OAAO,CAAC,YAAY,CAAS;gBAGV,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM;IAC9B,qFAAqF;IACpE,MAAM,UAAQ;IAKjC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,SAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,IAAI;IAWxD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAE,aAAkB,GAAG,IAAI;IASrF;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAE,aAAkB,GAAG,IAAI;IAWrF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,GAAE,aAAkB,GAAG,IAAI;IAO/D,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,IAAI;IAMzC;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAapB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAGnD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAGpD,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAGnD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAGpD,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAGnD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAGpD,gEAAgE;IAChE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAG3C,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAG5C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAG5D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAG5D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAG7D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAG7D,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,kBAAkB,EAAE,GAAG,IAAI;IAG/D,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAGjD,oDAAoD;IACpD,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,IAAI;IAKtD;;;;OAIG;IACH,GAAG,CACD,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,uBAAuB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EACjD,KAAK,EAAE,kBAAkB,GAAG,SAAS,kBAAkB,EAAE,GACxD,IAAI;IAIP;;;OAGG;IACH,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,uBAAuB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EACjD,KAAK,EAAE,kBAAkB,GAAG,SAAS,kBAAkB,EAAE,GACxD,IAAI;IAIP;;;OAGG;IACH,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,IAAI;IAI9D,kFAAkF;IAClF,UAAU,CACR,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,cAAc,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GACvD,IAAI;IAaP,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAG5D,oDAAoD;IACpD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAG/D,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAI5D,yCAAyC;IACzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAG5C,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAG7C,wCAAwC;IACxC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAG5C,uDAAuD;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAG7C,oCAAoC;IACpC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlD,OAAO,CAAC,IAAI;IAOZ,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,IAAI;IAWvD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,IAAI;IAK/D,oFAAoF;IACpF,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,IAAI;IAO1E;;;;;;;;;;;;;;;OAeG;IACI,MAAM,CAAC,OAAO,GAAE,eAAoB,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC;IAMlF;;;;;;;;OAQG;IACI,QAAQ,CACb,OAAO,GAAE,eAAoB,GAC5B,cAAc,CAAC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,IAAI,EAAE,SAAS,CAAC;IA2BvF,2DAA2D;IAC3D,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKtC;;;OAGG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,KAAK,qBAAqB,CAAC,CAAC,CAAC;IAIrD,+EAA+E;IAC/E,aAAa,CAAC,CAAC,SAAS,MAAM,KAAK,qBAAqB,CAAC,CAAC,CAAC;IAI3D;;;;;;;;OAQG;IACH,YAAY,IAAI,IAAI;IAKpB;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC;;;OAGG;IACH,QAAQ,IAAI,IAAI;IAKhB,iFAAiF;IACjF,OAAO,IAAI,uBAAuB;IAMlC,2EAA2E;IAC3E,GAAG,IAAI,oBAAoB;IAM3B,yEAAyE;IACzE,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,uBAAuB;IAW9D,MAAM,IAAI,sBAAsB,CAAC,GAAG,CAAC;IAKrC,WAAW,IAAI,sBAAsB,CAAC,GAAG,CAAC;IAO1C,gFAAgF;IAChF,MAAM,IAAI,MAAM;IAmBhB;;;;;;;OAOG;IACH,SAAS,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE;IAc9F,8EAA8E;IAC9E,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;YAWrB,OAAO;IAgDrB,OAAO,CAAC,OAAO;IAIf,wFAAwF;IACxF,OAAO,CAAC,MAAM;IAiBd,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,EACxD,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,EAC5F,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAC1E,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAYpC;AAUD,yFAAyF;AACzF,MAAM,WAAW,sBAAsB,CAAC,GAAG,SAAS,MAAM,CACxD,SAAQ,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAC,EACrF,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,CAAC,CAAC,SAAS,MAAM,KAAK,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EACtD,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,EAC1F,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAC1E,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;CACrC;AAED,8DAA8D;AAC9D,MAAM,WAAW,oBAAqB,SAAQ,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAClF,MAAM,IAAI,MAAM,CAAC;IACjB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,qFAAqF;AACrF,MAAM,WAAW,uBAAwB,SAAQ,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,IAAI,MAAM,CAAC;IACjB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC"}
package/dist/postgrest.js CHANGED
@@ -118,7 +118,7 @@ export class PostgrestQueryBuilder {
118
118
  this.headOnly = false;
119
119
  this.rowMode = 'many';
120
120
  this.shouldThrow = false;
121
- /** Set by `select()`, so a write can tell "rows asked for" from "rows always returned". */
121
+ /** Set by `select()`, so a write can tell "rows asked for" from "no rows requested". */
122
122
  this.selectCalled = false;
123
123
  }
124
124
  // --- verbs -------------------------------------------------------------
@@ -131,8 +131,6 @@ export class PostgrestQueryBuilder {
131
131
  select(columns = '*', options = {}) {
132
132
  this.columns = columns;
133
133
  this.selectCalled = true;
134
- if (this.method !== 'GET' && this.method !== 'HEAD')
135
- this.prefer.push('return=representation');
136
134
  if (options.count)
137
135
  this.countOption = options.count;
138
136
  if (options.head) {
@@ -529,11 +527,9 @@ export class PostgrestQueryBuilder {
529
527
  const prefer = [...this.prefer];
530
528
  if (this.countOption)
531
529
  prefer.push(`count=${this.countOption}`);
532
- // supabase-js only returns written rows when `.select()` asked for them.
533
- // The server defaults to `return=representation`, so parity means saying
534
- // `minimal` out loud rather than dropping the rows on arrival.
535
- if (this.compat && this.isWrite() && !this.selectCalled)
536
- prefer.push('return=minimal');
530
+ // Use the same write contract with and without compat mode.
531
+ if (this.isWrite())
532
+ prefer.push(`return=${this.selectCalled ? 'representation' : 'minimal'}`);
537
533
  if (prefer.length)
538
534
  headers['Prefer'] = prefer.join(',');
539
535
  if (this.accept)
@@ -567,7 +563,7 @@ export class PostgrestQueryBuilder {
567
563
  return { data: null, error: null, count };
568
564
  // `return=minimal` was sent: the write happened, there are no rows to
569
565
  // report, and supabase-js resolves `{ data: null }` for exactly this case.
570
- if (this.compat && this.isWrite() && !this.selectCalled) {
566
+ if (this.isWrite() && !this.selectCalled) {
571
567
  return { data: null, error: null, count };
572
568
  }
573
569
  const rows = result.data;