hazo_notes 1.1.6 → 1.2.0

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/README.md CHANGED
@@ -70,21 +70,24 @@ Create `app/api/hazo_notes/[ref_id]/route.ts`:
70
70
  ```typescript
71
71
  import { createNotesHandler } from 'hazo_notes/api';
72
72
  import { getHazoConnectSingleton } from 'hazo_connect/nextjs/setup';
73
- // Import your auth and user lookup functions
74
- import { getSession } from '@/lib/auth'; // Replace with your auth
73
+ import { hazo_get_tenant_auth } from 'hazo_auth/server-lib';
75
74
  import { getUserById } from '@/lib/users'; // Replace with your user lookup
75
+ import type { NextRequest } from 'next/server';
76
76
 
77
77
  export const dynamic = 'force-dynamic';
78
78
 
79
79
  const { GET, POST } = createNotesHandler({
80
80
  getHazoConnect: () => getHazoConnectSingleton(),
81
- getUserIdFromRequest: async (req) => {
82
- // IMPORTANT: Replace with your authentication logic
83
- const session = await getSession(req);
84
- return session?.user?.id || null;
81
+ // Preferred: hazo_auth@6.x tenant auth. Used by both GET and POST.
82
+ getAuth: async (req) => {
83
+ const auth = await hazo_get_tenant_auth(req as NextRequest);
84
+ if (!auth.authenticated || !auth.user?.id) return null;
85
+ return {
86
+ user_id: auth.user.id,
87
+ scope_id: auth.selected_scope_id ?? null,
88
+ };
85
89
  },
86
90
  getUserProfile: async (userId) => {
87
- // IMPORTANT: Replace with your user profile lookup
88
91
  const user = await getUserById(userId);
89
92
  return {
90
93
  id: userId,
@@ -98,6 +101,15 @@ const { GET, POST } = createNotesHandler({
98
101
  export { GET, POST };
99
102
  ```
100
103
 
104
+ > **GET requires auth.** Starting in `1.2.0`, GET responds `401` when the auth
105
+ > resolver returns `null`, matching POST. Older releases left GET anonymous.
106
+ > If you're still on `hazo_auth@5.x`, use `getUserIdFromRequest` instead of
107
+ > `getAuth` — the package falls back to it for backward compatibility.
108
+
109
+ > **Error detail.** On `500` responses the underlying error message is
110
+ > included as `cause` in dev (when `NODE_ENV !== 'production'`). Set
111
+ > `expose_error_cause: false` to suppress, or `true` to force it on in prod.
112
+
101
113
  ### 3. Set Up Database
102
114
 
103
115
  Run the migration:
@@ -114,6 +126,11 @@ CREATE TABLE hazo_notes (
114
126
  );
115
127
 
116
128
  CREATE INDEX idx_hazo_notes_ref_id ON hazo_notes(ref_id);
129
+
130
+ -- REQUIRED for PostgREST consumers — without this, GET/POST return 500 with
131
+ -- cause "permission denied for table hazo_notes" (PostgREST error 42501).
132
+ -- Shipped as migrations/002_grant_api_user_hazo_notes.sql.
133
+ GRANT SELECT, INSERT, UPDATE, DELETE ON hazo_notes TO api_user;
117
134
  ```
118
135
 
119
136
  **SQLite:**
@@ -672,17 +689,43 @@ getUserProfile: async (userId) => {
672
689
 
673
690
  ### Authentication errors
674
691
 
675
- **Problem**: "Unauthorized" when adding notes.
692
+ **Problem**: `401 Unauthorized` on GET or POST.
693
+
694
+ **Solution**: Wire `getAuth` (preferred, hazo_auth@6.x) or `getUserIdFromRequest`
695
+ (hazo_auth@5.x). GET and POST both require a non-null user; both return `401`
696
+ if the resolver returns `null`.
676
697
 
677
- **Solution**: Implement `getUserIdFromRequest` to return authenticated user ID:
678
698
  ```typescript
699
+ // hazo_auth@6.x — preferred
700
+ getAuth: async (req) => {
701
+ const auth = await hazo_get_tenant_auth(req as NextRequest);
702
+ if (!auth.authenticated || !auth.user?.id) return null;
703
+ return { user_id: auth.user.id, scope_id: auth.selected_scope_id ?? null };
704
+ }
705
+
706
+ // hazo_auth@5.x — backward-compatible fallback
679
707
  getUserIdFromRequest: async (req) => {
680
708
  const session = await getSession(req);
681
- if (!session?.user?.id) return null;
682
- return session.user.id;
709
+ return session?.user?.id ?? null;
683
710
  }
684
711
  ```
685
712
 
713
+ ### PostgREST `permission denied for table hazo_notes` (500 with cause 42501)
714
+
715
+ **Problem**: GET/POST return 500. Response includes
716
+ `"cause": "permission denied for table hazo_notes"` (when `expose_error_cause`
717
+ is enabled).
718
+
719
+ **Solution**: Apply `migrations/002_grant_api_user_hazo_notes.sql`. It grants
720
+ `SELECT, INSERT, UPDATE, DELETE` on `hazo_notes` to the `api_user` role used
721
+ by PostgREST. Reproducing the underlying error directly:
722
+
723
+ ```bash
724
+ curl "$POSTGREST_URL/hazo_notes?limit=1"
725
+ # Before grant: 401 / "permission denied for table hazo_notes"
726
+ # After grant: [] or rows
727
+ ```
728
+
686
729
  ## Examples
687
730
 
688
731
  See the `test-app/` directory for complete working examples:
@@ -66,15 +66,25 @@ CREATE TABLE IF NOT EXISTS hazo_notes (
66
66
  CREATE INDEX IF NOT EXISTS idx_hazo_notes_ref_id ON hazo_notes(ref_id);
67
67
  ```
68
68
 
69
- **Alternative**: Use the provided migration file:
69
+ **Alternative**: Use the provided migration files:
70
70
  ```bash
71
- # PostgreSQL
71
+ # PostgreSQL — apply both files in order
72
72
  psql -d your_database -f node_modules/hazo_notes/migrations/001_create_hazo_notes_table.sql
73
+ psql -d your_database -f node_modules/hazo_notes/migrations/002_grant_api_user_hazo_notes.sql
73
74
 
74
- # SQLite
75
+ # SQLite — only 001 (SQLite has no role system, skip 002)
75
76
  sqlite3 your_database.db < node_modules/hazo_notes/migrations/001_create_hazo_notes_table.sql
76
77
  ```
77
78
 
79
+ > **PostgREST consumers MUST apply migration 002.** Without it, PostgREST
80
+ > returns `42501 / permission denied for table hazo_notes` and the API
81
+ > surfaces a generic 500. Migration 002 grants
82
+ > `SELECT, INSERT, UPDATE, DELETE` on `hazo_notes` to `api_user`. Verify with:
83
+ >
84
+ > ```bash
85
+ > curl "$POSTGREST_URL/hazo_notes?limit=1" # should return [] not 401
86
+ > ```
87
+
78
88
  ## API Routes
79
89
 
80
90
  ### 4. Create the notes API route
@@ -84,25 +94,27 @@ Create `app/api/hazo_notes/[ref_id]/route.ts`:
84
94
  ```typescript
85
95
  import { createNotesHandler } from 'hazo_notes/api';
86
96
  import { getHazoConnectSingleton } from 'hazo_connect/nextjs/setup';
87
- // Import your authentication and user lookup functions
88
- import { getSession } from '@/lib/auth';
97
+ import { hazo_get_tenant_auth } from 'hazo_auth/server-lib';
89
98
  import { getUserById } from '@/lib/users';
99
+ import type { NextRequest } from 'next/server';
90
100
 
91
101
  export const dynamic = 'force-dynamic';
92
102
 
93
103
  const { GET, POST } = createNotesHandler({
94
104
  getHazoConnect: () => getHazoConnectSingleton(),
95
105
 
96
- getUserIdFromRequest: async (req) => {
97
- // IMPORTANT: Replace this with your actual authentication logic
98
- // This function should return the authenticated user's ID or null
99
- const session = await getSession(req);
100
- return session?.user?.id || null;
106
+ // Preferred (hazo_auth@6.x). Used by BOTH GET and POST — both require auth.
107
+ getAuth: async (req) => {
108
+ const auth = await hazo_get_tenant_auth(req as NextRequest);
109
+ if (!auth.authenticated || !auth.user?.id) return null;
110
+ return {
111
+ user_id: auth.user.id,
112
+ scope_id: auth.selected_scope_id ?? null,
113
+ };
101
114
  },
102
115
 
103
116
  getUserProfile: async (userId) => {
104
117
  // IMPORTANT: Replace this with your actual user profile lookup
105
- // This function fetches user details for attribution
106
118
  const user = await getUserById(userId);
107
119
  return {
108
120
  id: userId,
@@ -117,9 +129,13 @@ export { GET, POST };
117
129
  ```
118
130
 
119
131
  **Important Notes**:
120
- - The `getUserIdFromRequest` function MUST return a valid user ID for POST requests
132
+ - Either `getAuth` (hazo_auth@6.x) or `getUserIdFromRequest` (hazo_auth@5.x)
133
+ MUST be provided. GET and POST both return `401` if the resolver returns
134
+ `null`. GET-anonymous behavior from `1.1.x` is gone in `1.2.0`.
121
135
  - The `getUserProfile` function enriches notes with user information
122
136
  - If you don't have user profiles, you can omit `getUserProfile`
137
+ - On a 500 response, the underlying error message is included as `cause`
138
+ in non-production. Set `expose_error_cause: false` to suppress.
123
139
 
124
140
  ### 5. (Optional) Create the files API route for file attachments
125
141
 
@@ -1 +1 @@
1
- {"version":3,"file":"create_notes_handler.d.ts","sourceRoot":"","sources":["../../src/api/create_notes_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACV,yBAAyB,EAIzB,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AA2C3B;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB;mBAWxD,OAAO,WACP;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,KAC/C,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;oBAoE/B,OAAO,WACP;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,KAC/C,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;EAkJ7C"}
1
+ {"version":3,"file":"create_notes_handler.d.ts","sourceRoot":"","sources":["../../src/api/create_notes_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACV,yBAAyB,EAKzB,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAiD3B;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB;mBAmCxD,OAAO,WACP;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,KAC/C,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;oBA4E/B,OAAO,WACP;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,KAC/C,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;EAkJ7C"}
@@ -43,10 +43,11 @@ function generateUUID() {
43
43
  return crypto.randomUUID();
44
44
  }
45
45
  /** Create a standardized error response */
46
- function createErrorResponse(error, status) {
46
+ function createErrorResponse(error, status, cause) {
47
47
  return NextResponse.json({
48
48
  success: false,
49
49
  error,
50
+ ...(cause ? { cause } : {}),
50
51
  }, { status });
51
52
  }
52
53
  /** No-op logger */
@@ -56,6 +57,8 @@ const noopLogger = {
56
57
  info: () => { },
57
58
  debug: () => { },
58
59
  };
60
+ /** True when running outside production. Used as the default for exposing error causes. */
61
+ const isNonProduction = typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production';
59
62
  /**
60
63
  * Creates GET and POST handlers for notes
61
64
  *
@@ -63,8 +66,24 @@ const noopLogger = {
63
66
  * @returns Object with GET and POST handlers
64
67
  */
65
68
  export function createNotesHandler(options) {
66
- const { getHazoConnect, getLogger, getUserIdFromRequest, getUserProfile } = options;
69
+ const { getHazoConnect, getLogger, getAuth, getUserIdFromRequest, getUserProfile, expose_error_cause, } = options;
67
70
  const logger = getLogger?.() || noopLogger;
71
+ const exposeCause = expose_error_cause ?? isNonProduction;
72
+ /**
73
+ * Resolve auth context for a request. Prefers `getAuth`, falls back to
74
+ * `getUserIdFromRequest` for backward compatibility. Returns `null` when
75
+ * the request is unauthenticated or no resolver is wired.
76
+ */
77
+ async function resolveAuth(req) {
78
+ if (getAuth) {
79
+ return (await getAuth(req)) ?? null;
80
+ }
81
+ if (getUserIdFromRequest) {
82
+ const user_id = await getUserIdFromRequest(req);
83
+ return user_id ? { user_id, scope_id: null } : null;
84
+ }
85
+ return null;
86
+ }
68
87
  /**
69
88
  * GET handler - Fetch notes for a ref_id
70
89
  *
@@ -77,7 +96,11 @@ export function createNotesHandler(options) {
77
96
  if (!ref_id) {
78
97
  return createErrorResponse('ref_id is required', 400);
79
98
  }
80
- logger.debug('[hazo_notes] GET request', { ref_id });
99
+ const auth = await resolveAuth(request);
100
+ if (!auth) {
101
+ return createErrorResponse('Unauthorized - user not authenticated', 401);
102
+ }
103
+ logger.debug('[hazo_notes] GET request', { ref_id, user_id: auth.user_id });
81
104
  const hazoConnect = await getHazoConnect();
82
105
  // Query the hazo_notes table using PostgREST-style query
83
106
  const result = await hazoConnect.rawQuery(`/hazo_notes?ref_id=eq.${ref_id}`);
@@ -117,10 +140,9 @@ export function createNotesHandler(options) {
117
140
  });
118
141
  }
119
142
  catch (error) {
120
- logger.error('[hazo_notes] GET error', {
121
- error: error instanceof Error ? error.message : String(error),
122
- });
123
- return createErrorResponse('Failed to fetch notes', 500);
143
+ const message = error instanceof Error ? error.message : String(error);
144
+ logger.error('[hazo_notes] GET error', { error: message });
145
+ return createErrorResponse('Failed to fetch notes', 500, exposeCause ? message : undefined);
124
146
  }
125
147
  }
126
148
  /**
@@ -135,13 +157,11 @@ export function createNotesHandler(options) {
135
157
  if (!ref_id) {
136
158
  return NextResponse.json({ success: false, error: 'ref_id is required' }, { status: 400 });
137
159
  }
138
- // Get user ID from request
139
- const userId = getUserIdFromRequest
140
- ? await getUserIdFromRequest(request)
141
- : null;
142
- if (!userId) {
160
+ const auth = await resolveAuth(request);
161
+ if (!auth) {
143
162
  return NextResponse.json({ success: false, error: 'Unauthorized - user not authenticated' }, { status: 401 });
144
163
  }
164
+ const userId = auth.user_id;
145
165
  // Parse request body
146
166
  const body = await request.json();
147
167
  const { note_text, note_files } = body;
@@ -227,10 +247,13 @@ export function createNotesHandler(options) {
227
247
  });
228
248
  }
229
249
  catch (error) {
230
- logger.error('[hazo_notes] POST error', {
231
- error: error instanceof Error ? error.message : String(error),
232
- });
233
- return NextResponse.json({ success: false, error: 'Failed to add note' }, { status: 500 });
250
+ const message = error instanceof Error ? error.message : String(error);
251
+ logger.error('[hazo_notes] POST error', { error: message });
252
+ return NextResponse.json({
253
+ success: false,
254
+ error: 'Failed to add note',
255
+ ...(exposeCause ? { cause: message } : {}),
256
+ }, { status: 500 });
234
257
  }
235
258
  }
236
259
  return { GET, POST };
@@ -1 +1 @@
1
- {"version":3,"file":"create_notes_handler.js","sourceRoot":"","sources":["../../src/api/create_notes_handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create_notes_handler.js","sourceRoot":"","sources":["../../src/api/create_notes_handler.ts"],"names":[],"mappings":"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"}
@@ -220,6 +220,16 @@ export interface HazoNotesFilePreviewProps {
220
220
  /** Background color theme (Tailwind class, e.g., "bg-yellow-100") */
221
221
  background_color?: string;
222
222
  }
223
+ /**
224
+ * Resolved auth context for a request. Returned by `getAuth`.
225
+ *
226
+ * `scope_id` is accepted for forward compatibility with multi-tenant row
227
+ * filtering, but is not yet enforced at the database layer.
228
+ */
229
+ export interface NotesAuthContext {
230
+ user_id: string;
231
+ scope_id?: string | null;
232
+ }
223
233
  /**
224
234
  * API handler factory options
225
235
  */
@@ -228,10 +238,26 @@ export interface CreateNotesHandlerOptions {
228
238
  getHazoConnect: () => Promise<any> | any;
229
239
  /** Function to get logger instance */
230
240
  getLogger?: () => any;
231
- /** Function to extract user ID from request */
241
+ /**
242
+ * Preferred auth resolver. Returns `{ user_id, scope_id }` or `null` for
243
+ * unauthenticated requests. Used by both GET and POST. If provided,
244
+ * takes precedence over `getUserIdFromRequest`.
245
+ *
246
+ * Pairs with `hazo_auth@6.x`'s `hazo_get_tenant_auth` — see README example.
247
+ */
248
+ getAuth?: (req: Request) => Promise<NotesAuthContext | null>;
249
+ /**
250
+ * Legacy auth resolver. Use `getAuth` for new wiring; this is kept for
251
+ * backward compatibility with `hazo_auth@5.x` consumers.
252
+ */
232
253
  getUserIdFromRequest?: (req: Request) => Promise<string | null>;
233
254
  /** Function to get user profile by ID */
234
255
  getUserProfile?: (userId: string) => Promise<NoteUserInfo | null>;
256
+ /**
257
+ * When true, includes the underlying error message in the `cause` field of
258
+ * 500 responses. Defaults to true in development, false in production.
259
+ */
260
+ expose_error_cause?: boolean;
235
261
  }
236
262
  /**
237
263
  * API handler factory options for file operations
@@ -260,6 +286,8 @@ export interface NotesApiResponse {
260
286
  notes?: NoteEntry[];
261
287
  note_count?: number;
262
288
  error?: string;
289
+ /** Underlying error detail (only present when `expose_error_cause` is true). */
290
+ cause?: string;
263
291
  }
264
292
  /**
265
293
  * API response for adding a note
@@ -269,6 +297,8 @@ export interface AddNoteApiResponse {
269
297
  note?: NoteEntry;
270
298
  note_count?: number;
271
299
  error?: string;
300
+ /** Underlying error detail (only present when `expose_error_cause` is true). */
301
+ cause?: string;
272
302
  }
273
303
  /**
274
304
  * API response for file upload
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,UAAU,EAAE,OAAO,GAAG,YAAY,CAAC;IACnC,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,WAAW;IAC5C,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE;QACF,wDAAwD;QACxD,gBAAgB,EAAE,MAAM,CAAC;QACzB,+BAA+B;QAC/B,WAAW,EAAE,SAAS,GAAG,aAAa,CAAC;QACvC,0EAA0E;QAC1E,SAAS,EAAE,UAAU,GAAG,MAAM,CAAC;KAChC,CAAC;IACF,OAAO,EAAE;QACP,sEAAsE;QACtE,iBAAiB,EAAE,OAAO,GAAG,YAAY,CAAC;QAC1C,kCAAkC;QAClC,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,KAAK,EAAE;QACL,8BAA8B;QAC9B,gBAAgB,EAAE,MAAM,CAAC;QACzB,sCAAsC;QACtC,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,0CAA0C;QAC1C,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,OAAO,EAAE;QACP,oBAAoB;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,iCAAiC;IACjC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAE/C,kDAAkD;IAClD,YAAY,CAAC,EAAE,YAAY,CAAC;IAG5B,4BAA4B;IAC5B,WAAW,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;IACxC,oBAAoB;IACpB,SAAS,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAChC,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,8BAA8B;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6BAA6B;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yBAAyB;IACzB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAGtB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6DAA6D;IAC7D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,iDAAiD;IACjD,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,iCAAiC;IACjC,WAAW,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,gDAAgD;IAChD,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,oBAAoB;IACpB,SAAS,EAAE,UAAU,GAAG,MAAM,CAAC;IAC/B,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6BAA6B;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yBAAyB;IACzB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kDAAkD;IAClD,qBAAqB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,wCAAwC;IACxC,qBAAqB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACxD,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,0BAA0B;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,2DAA2D;IAC3D,YAAY,EAAE,OAAO,GAAG,YAAY,CAAC;IACrC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,2CAA2C;IAC3C,cAAc,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACzC,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC;IACtB,+CAA+C;IAC/C,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChE,yCAAyC;IACzC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,2CAA2C;IAC3C,cAAc,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACzC,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC;IACtB,+CAA+C;IAC/C,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChE,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAC3C,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yBAAyB;IACzB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ -- Migration: Grant api_user privileges on hazo_notes
2
+ -- Version: 002
3
+ -- Description: Allow the PostgREST role (api_user) to read/write hazo_notes.
4
+ -- Without this grant, PostgREST returns 42501 / "permission denied
5
+ -- for table hazo_notes" and the API surfaces a generic 500.
6
+ -- Compatible with: PostgreSQL only. SQLite has no role system, skip there.
7
+
8
+ -- ============================================================================
9
+ -- PostgreSQL Version
10
+ -- ============================================================================
11
+
12
+ GRANT SELECT, INSERT, UPDATE, DELETE ON hazo_notes TO api_user;
13
+
14
+ -- Idempotent re-runs are safe: GRANT on an already-granted privilege is a no-op.
15
+
16
+ -- ============================================================================
17
+ -- Verification
18
+ -- ============================================================================
19
+ --
20
+ -- After applying, this should return [] (not 401 / permission denied):
21
+ --
22
+ -- curl -H "Authorization: Bearer <api_user JWT>" \
23
+ -- "$POSTGREST_URL/hazo_notes?limit=1"
24
+ --
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hazo_notes",
3
- "version": "1.1.6",
3
+ "version": "1.2.0",
4
4
  "description": "Database-backed notes system with file attachment support for the hazo ecosystem",
5
5
  "type": "module",
6
6
  "main": "./dist/index.client.js",
@@ -71,27 +71,27 @@
71
71
  "@radix-ui/react-dialog": "^1.0.5",
72
72
  "@radix-ui/react-popover": "^1.0.7",
73
73
  "clsx": "^2.1.1",
74
- "hazo_config": "^1.0.0",
74
+ "hazo_config": "^2.1.0",
75
75
  "server-only": "^0.0.1",
76
- "tailwind-merge": "^2.5.4"
76
+ "tailwind-merge": "^3.5.0"
77
77
  },
78
78
  "devDependencies": {
79
- "@types/node": "^20.10.0",
80
- "@types/react": "^18.2.0",
81
- "@types/react-dom": "^18.2.0",
82
- "hazo_logs": "^1.0.0",
79
+ "@types/node": "^20.14.10",
80
+ "@types/react": "^18.3.3",
81
+ "@types/react-dom": "^18.3.0",
82
+ "hazo_logs": "^1.0.13",
83
83
  "next": "^14.2.33",
84
- "typescript": "^5.3.0"
84
+ "typescript": "^5.7.2"
85
85
  },
86
86
  "peerDependencies": {
87
- "hazo_auth": "^5.0.0",
88
- "hazo_connect": "^2.3.1",
89
- "hazo_logs": "^1.0.0",
87
+ "hazo_auth": "^6.0.0",
88
+ "hazo_connect": "^2.6.0",
89
+ "hazo_logs": "^1.0.13",
90
90
  "next": ">=14.0.0",
91
91
  "react": "^18.0.0 || ^19.0.0",
92
92
  "react-dom": "^18.0.0 || ^19.0.0",
93
93
  "react-icons": "^5.0.0",
94
- "tailwindcss": ">=3.0.0"
94
+ "tailwindcss": "^3.0.0 || ^4.0.0"
95
95
  },
96
96
  "peerDependenciesMeta": {
97
97
  "hazo_auth": {