hazo_notes 1.1.6 → 2.0.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 +54 -11
- package/SETUP_CHECKLIST.md +28 -12
- package/config/hazo_notes_config.ini +48 -0
- package/db_setup_postgres.sql +49 -0
- package/db_setup_sqlite.sql +22 -0
- package/dist/api/create_files_handler.d.ts +1 -1
- package/dist/api/create_files_handler.d.ts.map +1 -1
- package/dist/api/create_files_handler.js +196 -139
- package/dist/api/create_files_handler.js.map +1 -1
- package/dist/api/create_notes_handler.d.ts.map +1 -1
- package/dist/api/create_notes_handler.js +246 -160
- package/dist/api/create_notes_handler.js.map +1 -1
- package/dist/components/hazo_notes_entry.js +1 -1
- package/dist/components/hazo_notes_entry.js.map +1 -1
- package/dist/components/hazo_notes_file_preview.js +1 -1
- package/dist/components/hazo_notes_file_preview.js.map +1 -1
- package/dist/components/hazo_notes_icon.js +1 -1
- package/dist/components/hazo_notes_icon.js.map +1 -1
- package/dist/components/hazo_notes_panel.js +1 -1
- package/dist/components/hazo_notes_panel.js.map +1 -1
- package/dist/components/internal/sheet.js +1 -1
- package/dist/components/internal/sheet.js.map +1 -1
- package/dist/index.client.d.ts +0 -1
- package/dist/index.client.d.ts.map +1 -1
- package/dist/index.client.js +2 -2
- package/dist/index.client.js.map +1 -1
- package/dist/lib/config/hazo_notes_config.d.ts +125 -0
- package/dist/lib/config/hazo_notes_config.d.ts.map +1 -0
- package/dist/lib/config/hazo_notes_config.js +76 -0
- package/dist/lib/config/hazo_notes_config.js.map +1 -0
- package/dist/lib/config/index.d.ts +3 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +2 -0
- package/dist/lib/config/index.js.map +1 -0
- package/dist/lib/config.d.ts +14 -15
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +45 -93
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/logger/server.d.ts +13 -9
- package/dist/logger/server.d.ts.map +1 -1
- package/dist/logger/server.js +21 -15
- package/dist/logger/server.js.map +1 -1
- package/dist/logger/types.d.ts +3 -2
- package/dist/logger/types.d.ts.map +1 -1
- package/dist/logger/types.js +2 -1
- package/dist/logger/types.js.map +1 -1
- package/dist/types/index.d.ts +31 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +30 -15
- package/dist/utils/cn.d.ts +0 -16
- package/dist/utils/cn.d.ts.map +0 -1
- package/dist/utils/cn.js +0 -19
- package/dist/utils/cn.js.map +0 -1
- package/migrations/001_create_hazo_notes_table.sql +0 -77
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
26
|
import { NextResponse } from 'next/server';
|
|
27
|
+
import { HazoError, HazoAuthError, HazoValidationError, HazoInternalError, HazoNotFoundError, withContext, createLogger, } from 'hazo_core';
|
|
27
28
|
import { get_mime_type, is_allowed_file_type, generate_file_no, } from '../utils/file_utils.js';
|
|
28
29
|
// ============================================================================
|
|
29
30
|
// Constants
|
|
@@ -33,17 +34,17 @@ const DEFAULT_ALLOWED_TYPES = ['pdf', 'png', 'jpg', 'jpeg', 'gif', 'doc', 'docx'
|
|
|
33
34
|
// ============================================================================
|
|
34
35
|
// Helper Functions
|
|
35
36
|
// ============================================================================
|
|
36
|
-
/** No-op logger */
|
|
37
|
-
const noopLogger = {
|
|
38
|
-
error: () => { },
|
|
39
|
-
warn: () => { },
|
|
40
|
-
info: () => { },
|
|
41
|
-
debug: () => { },
|
|
42
|
-
};
|
|
43
37
|
/** Create error response */
|
|
44
38
|
function createErrorResponse(error, status) {
|
|
45
39
|
return NextResponse.json({ success: false, error }, { status });
|
|
46
40
|
}
|
|
41
|
+
function errorResponseFromHazo(err) {
|
|
42
|
+
const status = err.httpStatus ?? 500;
|
|
43
|
+
return NextResponse.json({
|
|
44
|
+
success: false,
|
|
45
|
+
error: err.toUserMessage ? err.toUserMessage() : err.message,
|
|
46
|
+
}, { status });
|
|
47
|
+
}
|
|
47
48
|
/**
|
|
48
49
|
* Creates file upload and download handlers
|
|
49
50
|
*
|
|
@@ -52,7 +53,7 @@ function createErrorResponse(error, status) {
|
|
|
52
53
|
*/
|
|
53
54
|
export function createFilesHandler(options) {
|
|
54
55
|
const { getHazoConnect, getLogger, getUserIdFromRequest, file_storage_mode = 'jsonb', file_storage_path = '/uploads/notes', max_file_size_mb = DEFAULT_MAX_FILE_SIZE_MB, allowed_file_types = DEFAULT_ALLOWED_TYPES, } = options;
|
|
55
|
-
const logger = getLogger
|
|
56
|
+
const logger = getLogger ? getLogger() : createLogger('hazo_notes');
|
|
56
57
|
const max_bytes = max_file_size_mb * 1024 * 1024;
|
|
57
58
|
/**
|
|
58
59
|
* POST handler - Upload a file
|
|
@@ -63,150 +64,206 @@ export function createFilesHandler(options) {
|
|
|
63
64
|
* - embed_type: 'embed' or 'attachment'
|
|
64
65
|
*/
|
|
65
66
|
async function POST(request) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
// Validate file size
|
|
90
|
-
if (file.size > max_bytes) {
|
|
91
|
-
return createErrorResponse(`File size exceeds maximum of ${max_file_size_mb} MB`, 400);
|
|
92
|
-
}
|
|
93
|
-
logger.debug('[hazo_notes/files] Upload request', {
|
|
94
|
-
filename: file.name,
|
|
95
|
-
size: file.size,
|
|
96
|
-
ref_id,
|
|
97
|
-
embed_type,
|
|
98
|
-
storage_mode: file_storage_mode,
|
|
99
|
-
});
|
|
100
|
-
// Generate file number
|
|
101
|
-
const file_no = generate_file_no([]);
|
|
102
|
-
let filedata;
|
|
103
|
-
if (file_storage_mode === 'filesystem') {
|
|
104
|
-
// Filesystem storage - save to disk and store path
|
|
105
|
-
try {
|
|
106
|
-
const fs = await import('fs/promises');
|
|
107
|
-
const path = await import('path');
|
|
108
|
-
// Create directory if it doesn't exist
|
|
109
|
-
const upload_dir = path.join(process.cwd(), file_storage_path, ref_id);
|
|
110
|
-
await fs.mkdir(upload_dir, { recursive: true });
|
|
111
|
-
// Save file
|
|
112
|
-
const safe_filename = `${file_no}_${file.name.replace(/[^a-zA-Z0-9._-]/g, '_')}`;
|
|
113
|
-
const file_path = path.join(upload_dir, safe_filename);
|
|
114
|
-
const buffer = Buffer.from(await file.arrayBuffer());
|
|
115
|
-
await fs.writeFile(file_path, buffer);
|
|
116
|
-
// Store relative path
|
|
117
|
-
filedata = `${file_storage_path}/${ref_id}/${safe_filename}`;
|
|
118
|
-
logger.debug('[hazo_notes/files] File saved to filesystem', { path: filedata });
|
|
67
|
+
return withContext({}, async () => {
|
|
68
|
+
try {
|
|
69
|
+
const userId = getUserIdFromRequest
|
|
70
|
+
? await getUserIdFromRequest(request)
|
|
71
|
+
: null;
|
|
72
|
+
if (!userId) {
|
|
73
|
+
throw new HazoAuthError({
|
|
74
|
+
pkg: 'hazo_notes',
|
|
75
|
+
code: 'HAZO_NOTES_UNAUTHORIZED',
|
|
76
|
+
message: 'Unauthorized',
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
const formData = await request.formData();
|
|
80
|
+
const file = formData.get('file');
|
|
81
|
+
const ref_id = formData.get('ref_id');
|
|
82
|
+
const embed_type = formData.get('embed_type') || 'attachment';
|
|
83
|
+
if (!file) {
|
|
84
|
+
throw new HazoValidationError({
|
|
85
|
+
pkg: 'hazo_notes',
|
|
86
|
+
code: 'HAZO_NOTES_VALIDATION_ERROR',
|
|
87
|
+
message: 'No file provided',
|
|
88
|
+
context: { field: 'file' },
|
|
89
|
+
});
|
|
119
90
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
91
|
+
if (!ref_id) {
|
|
92
|
+
throw new HazoValidationError({
|
|
93
|
+
pkg: 'hazo_notes',
|
|
94
|
+
code: 'HAZO_NOTES_VALIDATION_ERROR',
|
|
95
|
+
message: 'ref_id is required',
|
|
96
|
+
context: { field: 'ref_id' },
|
|
123
97
|
});
|
|
124
|
-
return createErrorResponse('Failed to save file', 500);
|
|
125
98
|
}
|
|
99
|
+
if (!is_allowed_file_type(file.name, allowed_file_types)) {
|
|
100
|
+
throw new HazoValidationError({
|
|
101
|
+
pkg: 'hazo_notes',
|
|
102
|
+
code: 'HAZO_NOTES_UNSUPPORTED_TYPE',
|
|
103
|
+
message: `File type not allowed. Allowed types: ${allowed_file_types.join(', ')}`,
|
|
104
|
+
context: { filename: file.name, allowed: allowed_file_types },
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
if (file.size > max_bytes) {
|
|
108
|
+
throw new HazoValidationError({
|
|
109
|
+
pkg: 'hazo_notes',
|
|
110
|
+
code: 'HAZO_NOTES_FILE_TOO_LARGE',
|
|
111
|
+
message: `File size exceeds maximum of ${max_file_size_mb} MB`,
|
|
112
|
+
context: { size: file.size, max_bytes },
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
logger.debug('notes.files.upload.request', {
|
|
116
|
+
filename: file.name,
|
|
117
|
+
size: file.size,
|
|
118
|
+
ref_id,
|
|
119
|
+
embed_type,
|
|
120
|
+
storage_mode: file_storage_mode,
|
|
121
|
+
});
|
|
122
|
+
const file_no = generate_file_no([]);
|
|
123
|
+
let filedata;
|
|
124
|
+
if (file_storage_mode === 'filesystem') {
|
|
125
|
+
try {
|
|
126
|
+
const fs = await import('fs/promises');
|
|
127
|
+
const path = await import('path');
|
|
128
|
+
const upload_dir = path.join(process.cwd(), file_storage_path, ref_id);
|
|
129
|
+
await fs.mkdir(upload_dir, { recursive: true });
|
|
130
|
+
const safe_filename = `${file_no}_${file.name.replace(/[^a-zA-Z0-9._-]/g, '_')}`;
|
|
131
|
+
const file_path = path.join(upload_dir, safe_filename);
|
|
132
|
+
const buffer = Buffer.from(await file.arrayBuffer());
|
|
133
|
+
await fs.writeFile(file_path, buffer);
|
|
134
|
+
filedata = `${file_storage_path}/${ref_id}/${safe_filename}`;
|
|
135
|
+
logger.debug('notes.files.saved', { path: filedata });
|
|
136
|
+
}
|
|
137
|
+
catch (cause) {
|
|
138
|
+
throw new HazoInternalError({
|
|
139
|
+
pkg: 'hazo_notes',
|
|
140
|
+
code: 'HAZO_NOTES_STORAGE_FAILED',
|
|
141
|
+
message: 'Failed to save file',
|
|
142
|
+
cause: cause instanceof Error ? cause : new Error(String(cause)),
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const buffer = await file.arrayBuffer();
|
|
148
|
+
filedata = Buffer.from(buffer).toString('base64');
|
|
149
|
+
}
|
|
150
|
+
const note_file = {
|
|
151
|
+
file_no,
|
|
152
|
+
embed_type,
|
|
153
|
+
filename: file.name,
|
|
154
|
+
filedata,
|
|
155
|
+
mime_type: get_mime_type(file.name),
|
|
156
|
+
file_size: file.size,
|
|
157
|
+
};
|
|
158
|
+
logger.info('notes.files.uploaded', {
|
|
159
|
+
ref_id,
|
|
160
|
+
file_no,
|
|
161
|
+
storage_mode: file_storage_mode,
|
|
162
|
+
});
|
|
163
|
+
return NextResponse.json({
|
|
164
|
+
success: true,
|
|
165
|
+
file: note_file,
|
|
166
|
+
});
|
|
126
167
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
168
|
+
catch (error) {
|
|
169
|
+
if (HazoError.is(error)) {
|
|
170
|
+
const hazo = error;
|
|
171
|
+
if (hazo.httpStatus && hazo.httpStatus < 500) {
|
|
172
|
+
logger.warn('notes.files.upload.client_error', { code: hazo.code, message: hazo.message });
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
logger.error('notes.files.upload.error', { code: hazo.code, message: hazo.message });
|
|
176
|
+
}
|
|
177
|
+
return errorResponseFromHazo(hazo);
|
|
178
|
+
}
|
|
179
|
+
logger.error('notes.files.upload.error', {
|
|
180
|
+
error: error instanceof Error ? error.message : String(error),
|
|
181
|
+
});
|
|
182
|
+
return createErrorResponse('Failed to upload file', 500);
|
|
131
183
|
}
|
|
132
|
-
|
|
133
|
-
file_no,
|
|
134
|
-
embed_type,
|
|
135
|
-
filename: file.name,
|
|
136
|
-
filedata,
|
|
137
|
-
mime_type: get_mime_type(file.name),
|
|
138
|
-
file_size: file.size,
|
|
139
|
-
};
|
|
140
|
-
return NextResponse.json({
|
|
141
|
-
success: true,
|
|
142
|
-
file: note_file,
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
catch (error) {
|
|
146
|
-
logger.error('[hazo_notes/files] Upload error', {
|
|
147
|
-
error: error instanceof Error ? error.message : String(error),
|
|
148
|
-
});
|
|
149
|
-
return createErrorResponse('Failed to upload file', 500);
|
|
150
|
-
}
|
|
184
|
+
});
|
|
151
185
|
}
|
|
152
186
|
/**
|
|
153
187
|
* GET handler - Download a file (for filesystem storage mode)
|
|
154
|
-
*
|
|
155
|
-
* Query params:
|
|
156
|
-
* - ref_id: Reference ID
|
|
157
|
-
* - file_no: File number
|
|
158
188
|
*/
|
|
159
|
-
async function GET(request,
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
189
|
+
async function GET(request, _context) {
|
|
190
|
+
return withContext({}, async () => {
|
|
191
|
+
try {
|
|
192
|
+
if (file_storage_mode !== 'filesystem') {
|
|
193
|
+
throw new HazoValidationError({
|
|
194
|
+
pkg: 'hazo_notes',
|
|
195
|
+
code: 'HAZO_NOTES_VALIDATION_ERROR',
|
|
196
|
+
message: 'File download only available for filesystem storage mode',
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
const url = new URL(request.url);
|
|
200
|
+
const ref_id = url.searchParams.get('ref_id');
|
|
201
|
+
const file_no = url.searchParams.get('file_no');
|
|
202
|
+
if (!ref_id || !file_no) {
|
|
203
|
+
throw new HazoValidationError({
|
|
204
|
+
pkg: 'hazo_notes',
|
|
205
|
+
code: 'HAZO_NOTES_VALIDATION_ERROR',
|
|
206
|
+
message: 'ref_id and file_no are required',
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
const hazoConnect = await getHazoConnect();
|
|
210
|
+
const result = await hazoConnect.rawQuery(`/hazo_notes?ref_id=eq.${ref_id}`);
|
|
211
|
+
if (!result || result.length === 0) {
|
|
212
|
+
throw new HazoNotFoundError({
|
|
213
|
+
pkg: 'hazo_notes',
|
|
214
|
+
code: 'HAZO_NOTES_NOTE_NOT_FOUND',
|
|
215
|
+
message: 'Notes not found',
|
|
216
|
+
context: { ref_id },
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
const notes = result[0].note || [];
|
|
220
|
+
let file_info = null;
|
|
221
|
+
for (const note of notes) {
|
|
222
|
+
if (note.note_files) {
|
|
223
|
+
const found = note.note_files.find((f) => f.file_no === file_no);
|
|
224
|
+
if (found) {
|
|
225
|
+
file_info = found;
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
185
228
|
}
|
|
186
229
|
}
|
|
230
|
+
if (!file_info) {
|
|
231
|
+
throw new HazoNotFoundError({
|
|
232
|
+
pkg: 'hazo_notes',
|
|
233
|
+
code: 'HAZO_NOTES_FILE_NOT_FOUND',
|
|
234
|
+
message: 'File not found',
|
|
235
|
+
context: { ref_id, file_no },
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
const fs = await import('fs/promises');
|
|
239
|
+
const path = await import('path');
|
|
240
|
+
const file_path = path.join(process.cwd(), file_info.filedata);
|
|
241
|
+
const buffer = await fs.readFile(file_path);
|
|
242
|
+
return new NextResponse(buffer, {
|
|
243
|
+
headers: {
|
|
244
|
+
'Content-Type': file_info.mime_type || 'application/octet-stream',
|
|
245
|
+
'Content-Disposition': `attachment; filename="${file_info.filename}"`,
|
|
246
|
+
'Content-Length': String(buffer.length),
|
|
247
|
+
},
|
|
248
|
+
});
|
|
187
249
|
}
|
|
188
|
-
|
|
189
|
-
|
|
250
|
+
catch (error) {
|
|
251
|
+
if (HazoError.is(error)) {
|
|
252
|
+
const hazo = error;
|
|
253
|
+
if (hazo.httpStatus && hazo.httpStatus < 500) {
|
|
254
|
+
logger.warn('notes.files.download.client_error', { code: hazo.code, message: hazo.message });
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
logger.error('notes.files.download.error', { code: hazo.code, message: hazo.message });
|
|
258
|
+
}
|
|
259
|
+
return NextResponse.json({ success: false, error: hazo.toUserMessage ? hazo.toUserMessage() : hazo.message }, { status: hazo.httpStatus ?? 500 });
|
|
260
|
+
}
|
|
261
|
+
logger.error('notes.files.download.error', {
|
|
262
|
+
error: error instanceof Error ? error.message : String(error),
|
|
263
|
+
});
|
|
264
|
+
return createErrorResponse('Failed to download file', 500);
|
|
190
265
|
}
|
|
191
|
-
|
|
192
|
-
const fs = await import('fs/promises');
|
|
193
|
-
const path = await import('path');
|
|
194
|
-
const file_path = path.join(process.cwd(), file_info.filedata);
|
|
195
|
-
const buffer = await fs.readFile(file_path);
|
|
196
|
-
return new NextResponse(buffer, {
|
|
197
|
-
headers: {
|
|
198
|
-
'Content-Type': file_info.mime_type || 'application/octet-stream',
|
|
199
|
-
'Content-Disposition': `attachment; filename="${file_info.filename}"`,
|
|
200
|
-
'Content-Length': String(buffer.length),
|
|
201
|
-
},
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
catch (error) {
|
|
205
|
-
logger.error('[hazo_notes/files] Download error', {
|
|
206
|
-
error: error instanceof Error ? error.message : String(error),
|
|
207
|
-
});
|
|
208
|
-
return createErrorResponse('Failed to download file', 500);
|
|
209
|
-
}
|
|
266
|
+
});
|
|
210
267
|
}
|
|
211
268
|
return { GET, POST };
|
|
212
269
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_files_handler.js","sourceRoot":"","sources":["../../src/api/create_files_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"create_files_handler.js","sourceRoot":"","sources":["../../src/api/create_files_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,YAAY,GACb,MAAM,WAAW,CAAC;AAOnB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAElF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,4BAA4B;AAC5B,SAAS,mBAAmB,CAC1B,KAAa,EACb,MAAc;IAEd,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAc;IAC3C,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC;IACrC,OAAO,YAAY,CAAC,IAAI,CACtB;QACE,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO;KAC7D,EACD,EAAE,MAAM,EAAE,CACX,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAkC;IACnE,MAAM,EACJ,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,iBAAiB,GAAG,OAAO,EAC3B,iBAAiB,GAAG,gBAAgB,EACpC,gBAAgB,GAAG,wBAAwB,EAC3C,kBAAkB,GAAG,qBAAqB,GAC3C,GAAG,OAAO,CAAC;IAEZ,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;IAEjD;;;;;;;OAOG;IACH,KAAK,UAAU,IAAI,CAAC,OAAgB;QAClC,OAAO,WAAW,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,oBAAoB;oBACjC,CAAC,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC;oBACrC,CAAC,CAAC,IAAI,CAAC;gBAET,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,aAAa,CAAC;wBACtB,GAAG,EAAE,YAAY;wBACjB,IAAI,EAAE,yBAAyB;wBAC/B,OAAO,EAAE,cAAc;qBACxB,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAgB,CAAC;gBACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAkB,CAAC;gBACvD,MAAM,UAAU,GAAI,QAAQ,CAAC,GAAG,CAAC,YAAY,CAA4B,IAAI,YAAY,CAAC;gBAE1F,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,mBAAmB,CAAC;wBAC5B,GAAG,EAAE,YAAY;wBACjB,IAAI,EAAE,6BAA6B;wBACnC,OAAO,EAAE,kBAAkB;wBAC3B,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;qBAC3B,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,mBAAmB,CAAC;wBAC5B,GAAG,EAAE,YAAY;wBACjB,IAAI,EAAE,6BAA6B;wBACnC,OAAO,EAAE,oBAAoB;wBAC7B,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;qBAC7B,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,CAAC;oBACzD,MAAM,IAAI,mBAAmB,CAAC;wBAC5B,GAAG,EAAE,YAAY;wBACjB,IAAI,EAAE,6BAA6B;wBACnC,OAAO,EAAE,yCAAyC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACjF,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE;qBAC9D,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC;oBAC1B,MAAM,IAAI,mBAAmB,CAAC;wBAC5B,GAAG,EAAE,YAAY;wBACjB,IAAI,EAAE,2BAA2B;wBACjC,OAAO,EAAE,gCAAgC,gBAAgB,KAAK;wBAC9D,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE;qBACxC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;oBACzC,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM;oBACN,UAAU;oBACV,YAAY,EAAE,iBAAiB;iBAChC,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;gBAErC,IAAI,QAAgB,CAAC;gBAErB,IAAI,iBAAiB,KAAK,YAAY,EAAE,CAAC;oBACvC,IAAI,CAAC;wBACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;wBACvC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;wBAElC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;wBACvE,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBAEhD,MAAM,aAAa,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,EAAE,CAAC;wBACjF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;wBACvD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;wBACrD,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;wBAEtC,QAAQ,GAAG,GAAG,iBAAiB,IAAI,MAAM,IAAI,aAAa,EAAE,CAAC;wBAE7D,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACxD,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,IAAI,iBAAiB,CAAC;4BAC1B,GAAG,EAAE,YAAY;4BACjB,IAAI,EAAE,2BAA2B;4BACjC,OAAO,EAAE,qBAAqB;4BAC9B,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;yBACjE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;oBACxC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACpD,CAAC;gBAED,MAAM,SAAS,GAAa;oBAC1B,OAAO;oBACP,UAAU;oBACV,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,QAAQ;oBACR,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;oBACnC,SAAS,EAAE,IAAI,CAAC,IAAI;iBACrB,CAAC;gBAEF,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;oBAClC,MAAM;oBACN,OAAO;oBACP,YAAY,EAAE,iBAAiB;iBAChC,CAAC,CAAC;gBAEH,OAAO,YAAY,CAAC,IAAI,CAAC;oBACvB,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,SAAS;iBAChB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxB,MAAM,IAAI,GAAG,KAAkB,CAAC;oBAChC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;wBAC7C,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC7F,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvF,CAAC;oBACD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACrC,CAAC;gBACD,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;oBACvC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;gBACH,OAAO,mBAAmB,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,UAAU,GAAG,CAChB,OAAgB,EAChB,QAAmD;QAEnD,OAAO,WAAW,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC;gBACH,IAAI,iBAAiB,KAAK,YAAY,EAAE,CAAC;oBACvC,MAAM,IAAI,mBAAmB,CAAC;wBAC5B,GAAG,EAAE,YAAY;wBACjB,IAAI,EAAE,6BAA6B;wBACnC,OAAO,EAAE,0DAA0D;qBACpE,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAEhD,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;oBACxB,MAAM,IAAI,mBAAmB,CAAC;wBAC5B,GAAG,EAAE,YAAY;wBACjB,IAAI,EAAE,6BAA6B;wBACnC,OAAO,EAAE,iCAAiC;qBAC3C,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;gBAC3C,MAAM,MAAM,GAAmB,MAAM,WAAW,CAAC,QAAQ,CACvD,yBAAyB,MAAM,EAAE,CAClC,CAAC;gBAEF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnC,MAAM,IAAI,iBAAiB,CAAC;wBAC1B,GAAG,EAAE,YAAY;wBACjB,IAAI,EAAE,2BAA2B;wBACjC,OAAO,EAAE,iBAAiB;wBAC1B,OAAO,EAAE,EAAE,MAAM,EAAE;qBACpB,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBACnC,IAAI,SAAS,GAAoB,IAAI,CAAC;gBAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;wBACpB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;wBAC3E,IAAI,KAAK,EAAE,CAAC;4BACV,SAAS,GAAG,KAAK,CAAC;4BAClB,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,IAAI,iBAAiB,CAAC;wBAC1B,GAAG,EAAE,YAAY;wBACjB,IAAI,EAAE,2BAA2B;wBACjC,OAAO,EAAE,gBAAgB;wBACzB,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;qBAC7B,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;gBACvC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;gBAElC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAC/D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAE5C,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE;oBAC9B,OAAO,EAAE;wBACP,cAAc,EAAE,SAAS,CAAC,SAAS,IAAI,0BAA0B;wBACjE,qBAAqB,EAAE,yBAAyB,SAAS,CAAC,QAAQ,GAAG;wBACrE,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;qBACxC;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxB,MAAM,IAAI,GAAG,KAAkB,CAAC;oBAChC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;wBAC7C,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC/F,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBACzF,CAAC;oBACD,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EACnF,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,IAAI,GAAG,EAAE,CACnC,CAAC;gBACJ,CAAC;gBACD,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;oBACzC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;gBACH,OAAO,mBAAmB,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -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;
|
|
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;AAU3C,OAAO,KAAK,EACV,yBAAyB,EAKzB,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AA2D3B;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB;mBAgCxD,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;oBAmG/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;EAsK7C"}
|