@selvajs/supabase-provider 0.14.4-beta.0 → 0.14.4-beta.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 (144) hide show
  1. package/LICENSE +1 -1
  2. package/dist/auth/SupabaseAuthProvider.d.ts.map +1 -1
  3. package/dist/auth/SupabaseAuthProvider.js +7 -14
  4. package/dist/auth/SupabaseAuthProvider.js.map +1 -1
  5. package/dist/data/SupabaseDataProvider.d.ts +13 -1
  6. package/dist/data/SupabaseDataProvider.d.ts.map +1 -1
  7. package/dist/data/SupabaseDataProvider.js +59 -0
  8. package/dist/data/SupabaseDataProvider.js.map +1 -1
  9. package/dist/data/SupabaseDefinitionStore.d.ts +1 -0
  10. package/dist/data/SupabaseDefinitionStore.d.ts.map +1 -1
  11. package/dist/data/SupabaseDefinitionStore.js +27 -1
  12. package/dist/data/SupabaseDefinitionStore.js.map +1 -1
  13. package/dist/data/index.d.ts +1 -0
  14. package/dist/data/index.d.ts.map +1 -1
  15. package/dist/data/index.js +1 -0
  16. package/dist/data/index.js.map +1 -1
  17. package/dist/data/migrationHead.d.ts +14 -0
  18. package/dist/data/migrationHead.d.ts.map +1 -0
  19. package/dist/data/migrationHead.js +14 -0
  20. package/dist/data/migrationHead.js.map +1 -0
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/permissions/SupabasePlatformPermissionStore.d.ts +5 -3
  26. package/dist/permissions/SupabasePlatformPermissionStore.d.ts.map +1 -1
  27. package/dist/permissions/SupabasePlatformPermissionStore.js +17 -30
  28. package/dist/permissions/SupabasePlatformPermissionStore.js.map +1 -1
  29. package/dist/storage/SupabaseStorageProvider.d.ts.map +1 -1
  30. package/dist/storage/SupabaseStorageProvider.js +3 -0
  31. package/dist/storage/SupabaseStorageProvider.js.map +1 -1
  32. package/package.json +13 -14
  33. package/supabase/.branches/_current_branch +1 -0
  34. package/supabase/.temp/cli-latest +1 -0
  35. package/supabase/migrations/20260712120000_user_profiles_disabled_and_gin.sql +95 -0
  36. package/supabase/migrations/20260712123000_selva_migration_head_fn.sql +38 -0
  37. package/supabase/migrations/20260713120000_selva_next_version_number.sql +59 -0
  38. package/supabase/migrations/20260713140000_selva_solve_cache_limit.sql +15 -0
  39. package/dist/auth/__tests__/conformance.test.d.ts +0 -2
  40. package/dist/auth/__tests__/conformance.test.d.ts.map +0 -1
  41. package/dist/auth/__tests__/conformance.test.js +0 -76
  42. package/dist/auth/__tests__/conformance.test.js.map +0 -1
  43. package/dist/auth/__tests__/token-verification.test.d.ts +0 -13
  44. package/dist/auth/__tests__/token-verification.test.d.ts.map +0 -1
  45. package/dist/auth/__tests__/token-verification.test.js +0 -135
  46. package/dist/auth/__tests__/token-verification.test.js.map +0 -1
  47. package/dist/data/__tests__/compute-server-conformance.test.d.ts +0 -2
  48. package/dist/data/__tests__/compute-server-conformance.test.d.ts.map +0 -1
  49. package/dist/data/__tests__/compute-server-conformance.test.js +0 -45
  50. package/dist/data/__tests__/compute-server-conformance.test.js.map +0 -1
  51. package/dist/data/__tests__/compute-server-encryption.test.d.ts +0 -12
  52. package/dist/data/__tests__/compute-server-encryption.test.d.ts.map +0 -1
  53. package/dist/data/__tests__/compute-server-encryption.test.js +0 -143
  54. package/dist/data/__tests__/compute-server-encryption.test.js.map +0 -1
  55. package/dist/data/__tests__/definition-conformance.test.d.ts +0 -2
  56. package/dist/data/__tests__/definition-conformance.test.d.ts.map +0 -1
  57. package/dist/data/__tests__/definition-conformance.test.js +0 -85
  58. package/dist/data/__tests__/definition-conformance.test.js.map +0 -1
  59. package/dist/data/__tests__/event-sink-conformance.test.d.ts +0 -2
  60. package/dist/data/__tests__/event-sink-conformance.test.d.ts.map +0 -1
  61. package/dist/data/__tests__/event-sink-conformance.test.js +0 -27
  62. package/dist/data/__tests__/event-sink-conformance.test.js.map +0 -1
  63. package/dist/data/__tests__/invite-conformance.test.d.ts +0 -2
  64. package/dist/data/__tests__/invite-conformance.test.d.ts.map +0 -1
  65. package/dist/data/__tests__/invite-conformance.test.js +0 -45
  66. package/dist/data/__tests__/invite-conformance.test.js.map +0 -1
  67. package/dist/data/__tests__/org-conformance.test.d.ts +0 -2
  68. package/dist/data/__tests__/org-conformance.test.d.ts.map +0 -1
  69. package/dist/data/__tests__/org-conformance.test.js +0 -29
  70. package/dist/data/__tests__/org-conformance.test.js.map +0 -1
  71. package/dist/data/__tests__/project-conformance.test.d.ts +0 -2
  72. package/dist/data/__tests__/project-conformance.test.d.ts.map +0 -1
  73. package/dist/data/__tests__/project-conformance.test.js +0 -57
  74. package/dist/data/__tests__/project-conformance.test.js.map +0 -1
  75. package/dist/data/__tests__/share-link-concurrency.test.d.ts +0 -22
  76. package/dist/data/__tests__/share-link-concurrency.test.d.ts.map +0 -1
  77. package/dist/data/__tests__/share-link-concurrency.test.js +0 -115
  78. package/dist/data/__tests__/share-link-concurrency.test.js.map +0 -1
  79. package/dist/data/__tests__/share-link-conformance.test.d.ts +0 -2
  80. package/dist/data/__tests__/share-link-conformance.test.d.ts.map +0 -1
  81. package/dist/data/__tests__/share-link-conformance.test.js +0 -88
  82. package/dist/data/__tests__/share-link-conformance.test.js.map +0 -1
  83. package/dist/data/__tests__/solve-metric-sink-conformance.test.d.ts +0 -2
  84. package/dist/data/__tests__/solve-metric-sink-conformance.test.d.ts.map +0 -1
  85. package/dist/data/__tests__/solve-metric-sink-conformance.test.js +0 -52
  86. package/dist/data/__tests__/solve-metric-sink-conformance.test.js.map +0 -1
  87. package/dist/data/__tests__/test-helpers.d.ts +0 -52
  88. package/dist/data/__tests__/test-helpers.d.ts.map +0 -1
  89. package/dist/data/__tests__/test-helpers.js +0 -177
  90. package/dist/data/__tests__/test-helpers.js.map +0 -1
  91. package/dist/permissions/__tests__/conformance.test.d.ts +0 -2
  92. package/dist/permissions/__tests__/conformance.test.d.ts.map +0 -1
  93. package/dist/permissions/__tests__/conformance.test.js +0 -27
  94. package/dist/permissions/__tests__/conformance.test.js.map +0 -1
  95. package/dist/storage/__tests__/conformance.test.d.ts +0 -2
  96. package/dist/storage/__tests__/conformance.test.d.ts.map +0 -1
  97. package/dist/storage/__tests__/conformance.test.js +0 -149
  98. package/dist/storage/__tests__/conformance.test.js.map +0 -1
  99. package/dist/userProfile/__tests__/conformance.test.d.ts +0 -2
  100. package/dist/userProfile/__tests__/conformance.test.d.ts.map +0 -1
  101. package/dist/userProfile/__tests__/conformance.test.js +0 -38
  102. package/dist/userProfile/__tests__/conformance.test.js.map +0 -1
  103. package/src/auth/SupabaseAuthProvider.ts +0 -600
  104. package/src/auth/__tests__/conformance.test.ts +0 -78
  105. package/src/auth/__tests__/token-verification.test.ts +0 -158
  106. package/src/auth/index.ts +0 -2
  107. package/src/cli/sync-migrations.ts +0 -133
  108. package/src/data/SupabaseAuditQuery.ts +0 -103
  109. package/src/data/SupabaseComputeServerStore.ts +0 -382
  110. package/src/data/SupabaseDataProvider.ts +0 -153
  111. package/src/data/SupabaseDefinitionStore.ts +0 -527
  112. package/src/data/SupabaseEventSink.ts +0 -30
  113. package/src/data/SupabaseInviteStore.ts +0 -171
  114. package/src/data/SupabaseOrgStore.ts +0 -508
  115. package/src/data/SupabaseProjectStore.ts +0 -431
  116. package/src/data/SupabaseShareLinkStore.ts +0 -176
  117. package/src/data/SupabaseSolveMetricSink.ts +0 -38
  118. package/src/data/__tests__/compute-server-conformance.test.ts +0 -46
  119. package/src/data/__tests__/compute-server-encryption.test.ts +0 -173
  120. package/src/data/__tests__/definition-conformance.test.ts +0 -89
  121. package/src/data/__tests__/event-sink-conformance.test.ts +0 -32
  122. package/src/data/__tests__/invite-conformance.test.ts +0 -46
  123. package/src/data/__tests__/org-conformance.test.ts +0 -30
  124. package/src/data/__tests__/project-conformance.test.ts +0 -57
  125. package/src/data/__tests__/share-link-concurrency.test.ts +0 -124
  126. package/src/data/__tests__/share-link-conformance.test.ts +0 -87
  127. package/src/data/__tests__/solve-metric-sink-conformance.test.ts +0 -59
  128. package/src/data/__tests__/test-helpers.ts +0 -188
  129. package/src/data/client.ts +0 -173
  130. package/src/data/errors.ts +0 -45
  131. package/src/data/index.ts +0 -29
  132. package/src/data/pagination.ts +0 -68
  133. package/src/data/query.ts +0 -22
  134. package/src/data/rowStamp.ts +0 -48
  135. package/src/index.ts +0 -42
  136. package/src/permissions/SupabasePlatformPermissionStore.ts +0 -161
  137. package/src/permissions/__tests__/conformance.test.ts +0 -28
  138. package/src/permissions/index.ts +0 -1
  139. package/src/storage/SupabaseStorageProvider.ts +0 -182
  140. package/src/storage/__tests__/conformance.test.ts +0 -152
  141. package/src/storage/index.ts +0 -2
  142. package/src/userProfile/SupabaseUserProfileProvider.ts +0 -177
  143. package/src/userProfile/__tests__/conformance.test.ts +0 -39
  144. package/src/userProfile/index.ts +0 -1
@@ -1,27 +0,0 @@
1
- import { describe, beforeEach, it } from 'vitest';
2
- import { runPlatformPermissionStoreConformance } from '@selvajs/platform/testing';
3
- import { SupabasePlatformPermissionStore } from '../SupabasePlatformPermissionStore.js';
4
- import { readEnv, resetAllData, seedPlainUser } from '../../data/__tests__/test-helpers.js';
5
- const envCtx = readEnv();
6
- if (!envCtx) {
7
- describe.skip('SupabasePlatformPermissionStore (skipped: no live stack)', () => {
8
- it('populate packages/providers/supabase/.env.test with Supabase creds to run these tests', () => { });
9
- });
10
- }
11
- else {
12
- describe('SupabasePlatformPermissionStore', () => {
13
- beforeEach(async () => {
14
- await resetAllData(envCtx);
15
- });
16
- runPlatformPermissionStoreConformance({
17
- name: 'SupabasePlatformPermissionStore',
18
- createStore: async () => {
19
- return {
20
- store: new SupabasePlatformPermissionStore(envCtx.bundle),
21
- seedUser: async () => (await seedPlainUser(envCtx, '')).userId
22
- };
23
- }
24
- });
25
- });
26
- }
27
- //# sourceMappingURL=conformance.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conformance.test.js","sourceRoot":"","sources":["../../../src/permissions/__tests__/conformance.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE5F,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;AAEzB,IAAI,CAAC,MAAM,EAAE,CAAC;IACb,QAAQ,CAAC,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAC9E,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;AACJ,CAAC;KAAM,CAAC;IACP,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAChD,UAAU,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,qCAAqC,CAAC;YACrC,IAAI,EAAE,iCAAiC;YACvC,WAAW,EAAE,KAAK,IAAI,EAAE;gBACvB,OAAO;oBACN,KAAK,EAAE,IAAI,+BAA+B,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzD,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM;iBAC9D,CAAC;YACH,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=conformance.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conformance.test.d.ts","sourceRoot":"","sources":["../../../src/storage/__tests__/conformance.test.ts"],"names":[],"mappings":""}
@@ -1,149 +0,0 @@
1
- import { describe, beforeEach, it, expect } from 'vitest';
2
- import { createClient } from '@supabase/supabase-js';
3
- import { runStorageProviderConformance } from '@selvajs/platform/testing';
4
- import { definitionPaths } from '@selvajs/platform';
5
- import { SupabaseStorageProvider } from '../SupabaseStorageProvider.js';
6
- const SUPABASE_URL = process.env.SUPABASE_URL;
7
- const SERVICE_ROLE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY;
8
- const PUBLIC_BUCKET = process.env.SUPABASE_PUBLIC_BUCKET ?? 'selva-public';
9
- const PRIVATE_BUCKET = process.env.SUPABASE_PRIVATE_BUCKET ?? 'selva-private';
10
- // The conformance suite hits a live Supabase stack. If creds aren't present
11
- // (e.g. in CI without Docker, or a clean clone pre-`supabase start`), skip
12
- // the suite with a single explanatory test so the run surfaces the reason.
13
- // `createClient` transitively loads `@supabase/realtime-js`, which on Node < 22
14
- // throws at construction without native WebSocket — treat that as "no stack"
15
- // rather than crashing the suite during collection.
16
- function tryBuildAdminClient() {
17
- if (!SUPABASE_URL || !SERVICE_ROLE_KEY)
18
- return null;
19
- try {
20
- return createClient(SUPABASE_URL, SERVICE_ROLE_KEY, {
21
- auth: { persistSession: false, autoRefreshToken: false }
22
- });
23
- }
24
- catch (err) {
25
- const msg = err instanceof Error ? err.message : String(err);
26
- if (msg.includes('WebSocket'))
27
- return null;
28
- throw err;
29
- }
30
- }
31
- const _adminClient = tryBuildAdminClient();
32
- if (_adminClient === null) {
33
- describe.skip('SupabaseStorageProvider (skipped: no live stack)', () => {
34
- it('populate packages/providers/supabase/.env.test with SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY (from `npx supabase start`) to run these tests', () => { });
35
- });
36
- }
37
- else {
38
- // Re-bind in this branch so closures below see the non-null narrowed type.
39
- const adminClient = _adminClient;
40
- /**
41
- * Delete every object under a prefix in a bucket. The conformance suite
42
- * assumes fresh state per test; Supabase Storage is shared across runs,
43
- * so we reset both buckets before each test.
44
- */
45
- async function emptyBucket(bucket) {
46
- const keys = [];
47
- const stack = [''];
48
- while (stack.length > 0) {
49
- const dir = stack.pop();
50
- const { data, error } = await adminClient.storage.from(bucket).list(dir, {
51
- limit: 1000,
52
- sortBy: { column: 'name', order: 'asc' }
53
- });
54
- if (error)
55
- throw error;
56
- for (const entry of data ?? []) {
57
- const full = dir ? `${dir}/${entry.name}` : entry.name;
58
- if (entry.id === null)
59
- stack.push(full);
60
- else
61
- keys.push(full);
62
- }
63
- }
64
- if (keys.length === 0)
65
- return;
66
- for (let i = 0; i < keys.length; i += 1000) {
67
- const { error } = await adminClient.storage.from(bucket).remove(keys.slice(i, i + 1000));
68
- if (error)
69
- throw error;
70
- }
71
- }
72
- describe('SupabaseStorageProvider', () => {
73
- beforeEach(async () => {
74
- await Promise.all([emptyBucket(PUBLIC_BUCKET), emptyBucket(PRIVATE_BUCKET)]);
75
- });
76
- runStorageProviderConformance({
77
- name: 'SupabaseStorageProvider',
78
- createStorage: () => new SupabaseStorageProvider({
79
- supabaseUrl: SUPABASE_URL,
80
- serviceRoleKey: SERVICE_ROLE_KEY,
81
- publicBucket: PUBLIC_BUCKET,
82
- privateBucket: PRIVATE_BUCKET
83
- })
84
- });
85
- // ============================================================================
86
- // Bucket routing — Supabase-specific (the conformance suite is provider-
87
- // agnostic and can't see which bucket a file lands in). Without these tests
88
- // a regex regression in `bucketFor` could silently move .gh source files
89
- // into the public/CDN bucket.
90
- // ============================================================================
91
- describe('bucket routing', () => {
92
- const storage = new SupabaseStorageProvider({
93
- supabaseUrl: SUPABASE_URL,
94
- serviceRoleKey: SERVICE_ROLE_KEY,
95
- publicBucket: PUBLIC_BUCKET,
96
- privateBucket: PRIVATE_BUCKET
97
- });
98
- async function existsInBucket(bucket, path) {
99
- const { data, error } = await adminClient.storage.from(bucket).download(path);
100
- if (error)
101
- return false;
102
- return Boolean(data);
103
- }
104
- it('versioned .gh files land in the private bucket', async () => {
105
- const guid = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa';
106
- const path = definitionPaths.version(guid, 1, 'gh');
107
- await storage.put(path, new TextEncoder().encode('GH_BYTES'));
108
- expect(await existsInBucket(PRIVATE_BUCKET, path)).toBe(true);
109
- expect(await existsInBucket(PUBLIC_BUCKET, path)).toBe(false);
110
- });
111
- it('versioned .ghx files land in the private bucket', async () => {
112
- const guid = 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb';
113
- const path = definitionPaths.version(guid, 3, 'ghx');
114
- await storage.put(path, new TextEncoder().encode('GHX_BYTES'));
115
- expect(await existsInBucket(PRIVATE_BUCKET, path)).toBe(true);
116
- expect(await existsInBucket(PUBLIC_BUCKET, path)).toBe(false);
117
- });
118
- it('cover images land in the public bucket', async () => {
119
- const guid = 'cccccccc-cccc-cccc-cccc-cccccccccccc';
120
- const path = definitionPaths.image(guid);
121
- // Real 1×1 transparent PNG. The provider runs every image through
122
- // transcodeImageIfNeeded → sharp, so a hand-crafted byte stub
123
- // would fail the decode. Routing (the test's actual concern) is
124
- // independent of which format the input arrives in.
125
- const tinyPng = Uint8Array.from([
126
- 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 1, 0, 0, 0, 1, 8,
127
- 6, 0, 0, 0, 31, 21, 196, 137, 0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 3, 232, 0, 0, 3, 232, 1,
128
- 181, 123, 82, 107, 0, 0, 0, 13, 73, 68, 65, 84, 120, 156, 99, 96, 96, 96, 96, 0, 0, 0, 5,
129
- 0, 1, 165, 246, 69, 64, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130
130
- ]);
131
- await storage.put(path, tinyPng, 'image/png');
132
- expect(await existsInBucket(PUBLIC_BUCKET, path)).toBe(true);
133
- expect(await existsInBucket(PRIVATE_BUCKET, path)).toBe(false);
134
- });
135
- it('getPublicUrl returns the proxy prefix for private files', () => {
136
- const path = definitionPaths.version('guid-1', 1, 'gh');
137
- const url = storage.getPublicUrl(path);
138
- expect(url.startsWith('/api/files/')).toBe(true);
139
- expect(url).not.toContain('/storage/v1/object/public/');
140
- });
141
- it('getPublicUrl returns the CDN URL for public files', () => {
142
- const path = definitionPaths.image('guid-1');
143
- const url = storage.getPublicUrl(path);
144
- expect(url).toContain(`/storage/v1/object/public/${PUBLIC_BUCKET}/`);
145
- });
146
- });
147
- });
148
- }
149
- //# sourceMappingURL=conformance.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conformance.test.js","sourceRoot":"","sources":["../../../src/storage/__tests__/conformance.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AAC9C,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;AAC/D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,cAAc,CAAC;AAC3E,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,eAAe,CAAC;AAE9E,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAC3E,gFAAgF;AAChF,6EAA6E;AAC7E,oDAAoD;AACpD,SAAS,mBAAmB;IAC3B,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,CAAC;QACJ,OAAO,YAAY,CAAC,YAAY,EAAE,gBAAgB,EAAE;YACnD,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE;SACxD,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,GAAG,CAAC;IACX,CAAC;AACF,CAAC;AACD,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;AAE3C,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QACtE,EAAE,CAAC,+IAA+I,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC/J,CAAC,CAAC,CAAC;AACJ,CAAC;KAAM,CAAC;IACP,2EAA2E;IAC3E,MAAM,WAAW,GAAG,YAAY,CAAC;IAEjC;;;;OAIG;IACH,KAAK,UAAU,WAAW,CAAC,MAAc;QACxC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAa,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;YACzB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACxE,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;aACxC,CAAC,CAAC;YACH,IAAI,KAAK;gBAAE,MAAM,KAAK,CAAC;YACvB,KAAK,MAAM,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBACvD,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;oBACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACF,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;YAC5C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YACzF,IAAI,KAAK;gBAAE,MAAM,KAAK,CAAC;QACxB,CAAC;IACF,CAAC;IAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACxC,UAAU,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,6BAA6B,CAAC;YAC7B,IAAI,EAAE,yBAAyB;YAC/B,aAAa,EAAE,GAAG,EAAE,CACnB,IAAI,uBAAuB,CAAC;gBAC3B,WAAW,EAAE,YAAa;gBAC1B,cAAc,EAAE,gBAAiB;gBACjC,YAAY,EAAE,aAAa;gBAC3B,aAAa,EAAE,cAAc;aAC7B,CAAC;SACH,CAAC,CAAC;QAEH,+EAA+E;QAC/E,yEAAyE;QACzE,4EAA4E;QAC5E,yEAAyE;QACzE,8BAA8B;QAC9B,+EAA+E;QAC/E,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC/B,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC;gBAC3C,WAAW,EAAE,YAAa;gBAC1B,cAAc,EAAE,gBAAiB;gBACjC,YAAY,EAAE,aAAa;gBAC3B,aAAa,EAAE,cAAc;aAC7B,CAAC,CAAC;YAEH,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,IAAY;gBACzD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC9E,IAAI,KAAK;oBAAE,OAAO,KAAK,CAAC;gBACxB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;YAED,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC/D,MAAM,IAAI,GAAG,sCAAsC,CAAC;gBACpD,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBACpD,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC9D,MAAM,CAAC,MAAM,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9D,MAAM,CAAC,MAAM,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;gBAChE,MAAM,IAAI,GAAG,sCAAsC,CAAC;gBACpD,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBACrD,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC/D,MAAM,CAAC,MAAM,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9D,MAAM,CAAC,MAAM,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACvD,MAAM,IAAI,GAAG,sCAAsC,CAAC;gBACpD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzC,kEAAkE;gBAClE,8DAA8D;gBAC9D,gEAAgE;gBAChE,oDAAoD;gBACpD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;oBAC/B,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;oBACvF,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;oBACzF,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;oBACxF,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;iBACpE,CAAC,CAAC;gBACH,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;gBAC9C,MAAM,CAAC,MAAM,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7D,MAAM,CAAC,MAAM,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;gBAClE,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBACxD,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;gBAC5D,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,6BAA6B,aAAa,GAAG,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=conformance.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conformance.test.d.ts","sourceRoot":"","sources":["../../../src/userProfile/__tests__/conformance.test.ts"],"names":[],"mappings":""}
@@ -1,38 +0,0 @@
1
- import { describe, beforeEach, it } from 'vitest';
2
- import { runUserProfileStoreConformance } from '@selvajs/platform/testing';
3
- import { SupabaseUserProfileProvider } from '../SupabaseUserProfileProvider.js';
4
- import { readEnv, resetAllData } from '../../data/__tests__/test-helpers.js';
5
- const envCtx = readEnv();
6
- if (!envCtx) {
7
- describe.skip('SupabaseUserProfileProvider (skipped: no live stack)', () => {
8
- it('populate packages/providers/supabase/.env.test with Supabase creds to run these tests', () => { });
9
- });
10
- }
11
- else {
12
- describe('SupabaseUserProfileProvider', () => {
13
- beforeEach(async () => {
14
- await resetAllData(envCtx);
15
- });
16
- runUserProfileStoreConformance({
17
- name: 'SupabaseUserProfileProvider',
18
- createStore: async () => {
19
- const store = new SupabaseUserProfileProvider(envCtx.bundle);
20
- const seedUser = async (email) => {
21
- const { data, error } = await envCtx.adminClient.auth.admin.createUser({
22
- email,
23
- password: 'conformance-test-password-1234',
24
- email_confirm: true
25
- });
26
- if (error)
27
- throw error;
28
- return {
29
- id: data.user.id,
30
- email: data.user.email
31
- };
32
- };
33
- return { store, seedUser };
34
- }
35
- });
36
- });
37
- }
38
- //# sourceMappingURL=conformance.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conformance.test.js","sourceRoot":"","sources":["../../../src/userProfile/__tests__/conformance.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAE7E,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;AAEzB,IAAI,CAAC,MAAM,EAAE,CAAC;IACb,QAAQ,CAAC,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC1E,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;AACJ,CAAC;KAAM,CAAC;IACP,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC5C,UAAU,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,8BAA8B,CAAC;YAC9B,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,KAAK,IAAI,EAAE;gBACvB,MAAM,KAAK,GAAG,IAAI,2BAA2B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC7D,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAqB,EAAE;oBAC3D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;wBACtE,KAAK;wBACL,QAAQ,EAAE,gCAAgC;wBAC1C,aAAa,EAAE,IAAI;qBACnB,CAAC,CAAC;oBACH,IAAI,KAAK;wBAAE,MAAM,KAAK,CAAC;oBACvB,OAAO;wBACN,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;wBAChB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;qBACtB,CAAC;gBACH,CAAC,CAAC;gBACF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC5B,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}