@shin1ohno/sage 0.3.0 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/http-server-with-config.d.ts +38 -0
- package/dist/cli/http-server-with-config.d.ts.map +1 -0
- package/dist/cli/http-server-with-config.js +458 -0
- package/dist/cli/http-server-with-config.js.map +1 -0
- package/dist/cli/http-server.d.ts +74 -0
- package/dist/cli/http-server.d.ts.map +1 -0
- package/dist/cli/http-server.js +407 -0
- package/dist/cli/http-server.js.map +1 -0
- package/dist/cli/jwt-middleware.d.ts +36 -0
- package/dist/cli/jwt-middleware.d.ts.map +1 -0
- package/dist/cli/jwt-middleware.js +99 -0
- package/dist/cli/jwt-middleware.js.map +1 -0
- package/dist/cli/main-entry.d.ts +41 -0
- package/dist/cli/main-entry.d.ts.map +1 -0
- package/dist/cli/main-entry.js +80 -0
- package/dist/cli/main-entry.js.map +1 -0
- package/dist/cli/mcp-handler.d.ts +56 -0
- package/dist/cli/mcp-handler.d.ts.map +1 -0
- package/dist/cli/mcp-handler.js +2189 -0
- package/dist/cli/mcp-handler.js.map +1 -0
- package/dist/cli/parser.d.ts +43 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +162 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/remote-config-loader.d.ts +85 -0
- package/dist/cli/remote-config-loader.d.ts.map +1 -0
- package/dist/cli/remote-config-loader.js +129 -0
- package/dist/cli/remote-config-loader.js.map +1 -0
- package/dist/cli/secret-auth.d.ts +47 -0
- package/dist/cli/secret-auth.d.ts.map +1 -0
- package/dist/cli/secret-auth.js +165 -0
- package/dist/cli/secret-auth.js.map +1 -0
- package/dist/cli/sse-stream-handler.d.ts +45 -0
- package/dist/cli/sse-stream-handler.d.ts.map +1 -0
- package/dist/cli/sse-stream-handler.js +125 -0
- package/dist/cli/sse-stream-handler.js.map +1 -0
- package/dist/index.js +885 -209
- package/dist/index.js.map +1 -1
- package/dist/integrations/calendar-event-creator.d.ts +152 -0
- package/dist/integrations/calendar-event-creator.d.ts.map +1 -0
- package/dist/integrations/calendar-event-creator.js +507 -0
- package/dist/integrations/calendar-event-creator.js.map +1 -0
- package/dist/integrations/calendar-event-deleter.d.ts +137 -0
- package/dist/integrations/calendar-event-deleter.d.ts.map +1 -0
- package/dist/integrations/calendar-event-deleter.js +378 -0
- package/dist/integrations/calendar-event-deleter.js.map +1 -0
- package/dist/integrations/calendar-event-response.d.ts +213 -0
- package/dist/integrations/calendar-event-response.d.ts.map +1 -0
- package/dist/integrations/calendar-event-response.js +560 -0
- package/dist/integrations/calendar-event-response.js.map +1 -0
- package/dist/integrations/calendar-service.d.ts +66 -1
- package/dist/integrations/calendar-service.d.ts.map +1 -1
- package/dist/integrations/calendar-service.js +223 -0
- package/dist/integrations/calendar-service.js.map +1 -1
- package/dist/oauth/client-store.d.ts +36 -0
- package/dist/oauth/client-store.d.ts.map +1 -0
- package/dist/oauth/client-store.js +104 -0
- package/dist/oauth/client-store.js.map +1 -0
- package/dist/oauth/code-store.d.ts +48 -0
- package/dist/oauth/code-store.d.ts.map +1 -0
- package/dist/oauth/code-store.js +89 -0
- package/dist/oauth/code-store.js.map +1 -0
- package/dist/oauth/index.d.ts +13 -0
- package/dist/oauth/index.d.ts.map +1 -0
- package/dist/oauth/index.js +21 -0
- package/dist/oauth/index.js.map +1 -0
- package/dist/oauth/oauth-handler.d.ts +101 -0
- package/dist/oauth/oauth-handler.d.ts.map +1 -0
- package/dist/oauth/oauth-handler.js +577 -0
- package/dist/oauth/oauth-handler.js.map +1 -0
- package/dist/oauth/oauth-server.d.ts +165 -0
- package/dist/oauth/oauth-server.d.ts.map +1 -0
- package/dist/oauth/oauth-server.js +489 -0
- package/dist/oauth/oauth-server.js.map +1 -0
- package/dist/oauth/pkce.d.ts +48 -0
- package/dist/oauth/pkce.d.ts.map +1 -0
- package/dist/oauth/pkce.js +106 -0
- package/dist/oauth/pkce.js.map +1 -0
- package/dist/oauth/refresh-token-store.d.ts +45 -0
- package/dist/oauth/refresh-token-store.d.ts.map +1 -0
- package/dist/oauth/refresh-token-store.js +98 -0
- package/dist/oauth/refresh-token-store.js.map +1 -0
- package/dist/oauth/token-service.d.ts +46 -0
- package/dist/oauth/token-service.d.ts.map +1 -0
- package/dist/oauth/token-service.js +199 -0
- package/dist/oauth/token-service.js.map +1 -0
- package/dist/oauth/types.d.ts +264 -0
- package/dist/oauth/types.d.ts.map +1 -0
- package/dist/oauth/types.js +37 -0
- package/dist/oauth/types.js.map +1 -0
- package/dist/version.d.ts +9 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +11 -0
- package/dist/version.js.map +1 -0
- package/package.json +1 -1
|
@@ -350,5 +350,228 @@ return eventList`;
|
|
|
350
350
|
|
|
351
351
|
これにより、空き時間を計算して最適なタスク実行時間を提案します。`;
|
|
352
352
|
}
|
|
353
|
+
/**
|
|
354
|
+
* List calendar events for a specified period
|
|
355
|
+
* Requirement: 16.1
|
|
356
|
+
*/
|
|
357
|
+
async listEvents(request) {
|
|
358
|
+
// Validate date format (ISO 8601)
|
|
359
|
+
if (!this.isValidDateFormat(request.startDate)) {
|
|
360
|
+
throw new Error(`無効な日付形式です: ${request.startDate}。ISO 8601形式(例: 2025-01-15)を使用してください。`);
|
|
361
|
+
}
|
|
362
|
+
if (!this.isValidDateFormat(request.endDate)) {
|
|
363
|
+
throw new Error(`無効な日付形式です: ${request.endDate}。ISO 8601形式(例: 2025-01-15)を使用してください。`);
|
|
364
|
+
}
|
|
365
|
+
// Validate date range
|
|
366
|
+
const startDate = new Date(request.startDate);
|
|
367
|
+
const endDate = new Date(request.endDate);
|
|
368
|
+
if (endDate < startDate) {
|
|
369
|
+
throw new Error('終了日は開始日より後である必要があります。');
|
|
370
|
+
}
|
|
371
|
+
// Check calendar availability
|
|
372
|
+
const isAvailable = await this.isAvailable();
|
|
373
|
+
if (!isAvailable) {
|
|
374
|
+
throw new Error('カレンダー統合がこのプラットフォームで利用できません。macOSで実行してください。');
|
|
375
|
+
}
|
|
376
|
+
// Fetch events with detailed information
|
|
377
|
+
const events = await this.fetchEventsDetailed(request.startDate, request.endDate);
|
|
378
|
+
// Filter by calendar name if specified
|
|
379
|
+
let filteredEvents = events;
|
|
380
|
+
if (request.calendarName) {
|
|
381
|
+
filteredEvents = events.filter(e => e.calendar === request.calendarName);
|
|
382
|
+
}
|
|
383
|
+
return {
|
|
384
|
+
events: filteredEvents,
|
|
385
|
+
period: {
|
|
386
|
+
start: request.startDate,
|
|
387
|
+
end: request.endDate,
|
|
388
|
+
},
|
|
389
|
+
totalEvents: filteredEvents.length,
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Validate ISO 8601 date format (YYYY-MM-DD)
|
|
394
|
+
*/
|
|
395
|
+
isValidDateFormat(dateStr) {
|
|
396
|
+
const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
|
|
397
|
+
if (!dateRegex.test(dateStr)) {
|
|
398
|
+
return false;
|
|
399
|
+
}
|
|
400
|
+
const date = new Date(dateStr);
|
|
401
|
+
return !isNaN(date.getTime());
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Fetch events with detailed information (calendar, location)
|
|
405
|
+
* Requirement: 16.10, 16.11
|
|
406
|
+
*/
|
|
407
|
+
async fetchEventsDetailed(startDate, endDate) {
|
|
408
|
+
const platform = await this.detectPlatform();
|
|
409
|
+
switch (platform.recommendedMethod) {
|
|
410
|
+
case 'eventkit':
|
|
411
|
+
return this.fetchEventKitEventsDetailed(startDate, endDate);
|
|
412
|
+
case 'native':
|
|
413
|
+
case 'manual_input':
|
|
414
|
+
default:
|
|
415
|
+
return [];
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Fetch events via EventKit with detailed information
|
|
420
|
+
* Requirement: 16.10, 16.11
|
|
421
|
+
*/
|
|
422
|
+
async fetchEventKitEventsDetailed(startDate, endDate) {
|
|
423
|
+
try {
|
|
424
|
+
// Lazy load run-applescript
|
|
425
|
+
if (!this.runAppleScript) {
|
|
426
|
+
const module = await import('run-applescript');
|
|
427
|
+
this.runAppleScript = module.runAppleScript;
|
|
428
|
+
}
|
|
429
|
+
const script = this.buildEventKitScriptWithDetails(startDate, endDate);
|
|
430
|
+
// Use retry with exponential backoff for EventKit execution
|
|
431
|
+
const result = await retryWithBackoff(async () => {
|
|
432
|
+
return await this.runAppleScript(script);
|
|
433
|
+
}, {
|
|
434
|
+
...RETRY_OPTIONS,
|
|
435
|
+
onRetry: (error, attempt) => {
|
|
436
|
+
console.error(`EventKit Calendar retry attempt ${attempt}: ${error.message}`);
|
|
437
|
+
},
|
|
438
|
+
});
|
|
439
|
+
return this.parseEventKitResultWithDetails(result);
|
|
440
|
+
}
|
|
441
|
+
catch (error) {
|
|
442
|
+
console.error('EventKit カレンダーエラー:', error);
|
|
443
|
+
throw new Error(`カレンダーイベントの取得に失敗しました: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Build AppleScriptObjC script for fetching events with details
|
|
448
|
+
* Includes calendar name and location
|
|
449
|
+
* Requirement: 16.10
|
|
450
|
+
*/
|
|
451
|
+
buildEventKitScriptWithDetails(startDate, endDate) {
|
|
452
|
+
const start = this.parseDateComponents(startDate);
|
|
453
|
+
const end = this.parseDateComponents(endDate);
|
|
454
|
+
return `
|
|
455
|
+
use AppleScript version "2.7"
|
|
456
|
+
use framework "Foundation"
|
|
457
|
+
use framework "EventKit"
|
|
458
|
+
use scripting additions
|
|
459
|
+
|
|
460
|
+
-- Build start date
|
|
461
|
+
set startDate to current date
|
|
462
|
+
set year of startDate to ${start.year}
|
|
463
|
+
set month of startDate to ${start.month}
|
|
464
|
+
set day of startDate to ${start.day}
|
|
465
|
+
set hours of startDate to 0
|
|
466
|
+
set minutes of startDate to 0
|
|
467
|
+
set seconds of startDate to 0
|
|
468
|
+
|
|
469
|
+
-- Build end date (end of day)
|
|
470
|
+
set endDate to current date
|
|
471
|
+
set year of endDate to ${end.year}
|
|
472
|
+
set month of endDate to ${end.month}
|
|
473
|
+
set day of endDate to ${end.day}
|
|
474
|
+
set hours of endDate to 23
|
|
475
|
+
set minutes of endDate to 59
|
|
476
|
+
set seconds of endDate to 59
|
|
477
|
+
|
|
478
|
+
-- Create EventKit store
|
|
479
|
+
set theStore to current application's EKEventStore's alloc()'s init()
|
|
480
|
+
|
|
481
|
+
-- Request calendar access (synchronously wait for completion)
|
|
482
|
+
set accessGranted to false
|
|
483
|
+
theStore's requestFullAccessToEventsWithCompletion:(missing value)
|
|
484
|
+
delay 0.5
|
|
485
|
+
|
|
486
|
+
-- Convert AppleScript dates to NSDate
|
|
487
|
+
set startNSDate to current application's NSDate's dateWithTimeIntervalSince1970:((startDate - (date "Thursday, January 1, 1970 at 9:00:00")) / 1)
|
|
488
|
+
set endNSDate to current application's NSDate's dateWithTimeIntervalSince1970:((endDate - (date "Thursday, January 1, 1970 at 9:00:00")) / 1)
|
|
489
|
+
|
|
490
|
+
-- Create predicate for events in date range (all calendars)
|
|
491
|
+
set thePredicate to theStore's predicateForEventsWithStartDate:startNSDate endDate:endNSDate calendars:(missing value)
|
|
492
|
+
|
|
493
|
+
-- Fetch events (EventKit automatically expands recurring events into occurrences)
|
|
494
|
+
set theEvents to theStore's eventsMatchingPredicate:thePredicate
|
|
495
|
+
|
|
496
|
+
-- Build result string with calendar and location
|
|
497
|
+
set eventList to ""
|
|
498
|
+
repeat with anEvent in theEvents
|
|
499
|
+
set eventTitle to (anEvent's title()) as text
|
|
500
|
+
set eventStart to (anEvent's startDate()) as date
|
|
501
|
+
set eventEnd to (anEvent's endDate()) as date
|
|
502
|
+
set eventId to (anEvent's eventIdentifier()) as text
|
|
503
|
+
set isAllDay to (anEvent's isAllDay()) as boolean
|
|
504
|
+
|
|
505
|
+
-- Get calendar name
|
|
506
|
+
set eventCalendar to (anEvent's calendar()'s title()) as text
|
|
507
|
+
|
|
508
|
+
-- Get location (may be missing value)
|
|
509
|
+
set eventLocation to ""
|
|
510
|
+
try
|
|
511
|
+
set locationValue to anEvent's location()
|
|
512
|
+
if locationValue is not missing value then
|
|
513
|
+
set eventLocation to locationValue as text
|
|
514
|
+
end if
|
|
515
|
+
end try
|
|
516
|
+
|
|
517
|
+
set eventInfo to eventTitle & "|" & (eventStart as string) & "|" & (eventEnd as string) & "|" & eventId & "|" & (isAllDay as string) & "|" & eventCalendar & "|" & eventLocation
|
|
518
|
+
set eventList to eventList & eventInfo & linefeed
|
|
519
|
+
end repeat
|
|
520
|
+
|
|
521
|
+
return eventList`;
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* Parse EventKit result with detailed information
|
|
525
|
+
* Format: title|start|end|id|isAllDay|calendar|location
|
|
526
|
+
* Requirement: 16.10
|
|
527
|
+
*/
|
|
528
|
+
parseEventKitResultWithDetails(output) {
|
|
529
|
+
if (!output || output.trim() === '') {
|
|
530
|
+
return [];
|
|
531
|
+
}
|
|
532
|
+
const events = [];
|
|
533
|
+
const lines = output.trim().split('\n');
|
|
534
|
+
for (const line of lines) {
|
|
535
|
+
const parts = line.split('|');
|
|
536
|
+
if (parts.length >= 6) {
|
|
537
|
+
const location = parts.length >= 7 && parts[6].trim() !== '' ? parts[6] : undefined;
|
|
538
|
+
events.push({
|
|
539
|
+
id: parts[3],
|
|
540
|
+
title: parts[0],
|
|
541
|
+
start: this.formatDateToJST(parts[1]),
|
|
542
|
+
end: this.formatDateToJST(parts[2]),
|
|
543
|
+
isAllDay: parts[4].toLowerCase() === 'true',
|
|
544
|
+
source: 'eventkit',
|
|
545
|
+
calendar: parts[5],
|
|
546
|
+
location,
|
|
547
|
+
});
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
return events;
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* Format AppleScript date string to JST ISO 8601 format
|
|
554
|
+
* Requirement: 16.9
|
|
555
|
+
*/
|
|
556
|
+
formatDateToJST(appleScriptDate) {
|
|
557
|
+
try {
|
|
558
|
+
// Parse AppleScript date format and convert to JST ISO 8601
|
|
559
|
+
const date = new Date(appleScriptDate);
|
|
560
|
+
if (isNaN(date.getTime())) {
|
|
561
|
+
return appleScriptDate; // Return as-is if parsing fails
|
|
562
|
+
}
|
|
563
|
+
// Format with JST offset (+09:00)
|
|
564
|
+
const year = date.getFullYear();
|
|
565
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
566
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
567
|
+
const hours = String(date.getHours()).padStart(2, '0');
|
|
568
|
+
const minutes = String(date.getMinutes()).padStart(2, '0');
|
|
569
|
+
const seconds = String(date.getSeconds()).padStart(2, '0');
|
|
570
|
+
return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}+09:00`;
|
|
571
|
+
}
|
|
572
|
+
catch {
|
|
573
|
+
return appleScriptDate;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
353
576
|
}
|
|
354
577
|
//# sourceMappingURL=calendar-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar-service.js","sourceRoot":"","sources":["../../src/integrations/calendar-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"calendar-service.js","sourceRoot":"","sources":["../../src/integrations/calendar-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAKvE;;GAEG;AACH,MAAM,aAAa,GAAG;IACpB,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,GAAG;IACjB,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,gBAAgB;CAC9B,CAAC;AAqGF;;;GAGG;AACH,MAAM,OAAO,eAAe;IAClB,cAAc,GAAiD,IAAI,CAAC;IAE5E;;;OAGG;IACH,KAAK,CAAC,cAAc;QAClB,wCAAwC;QACxC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACpE,OAAO;gBACL,QAAQ,EAAE,OAAO;gBACjB,gBAAgB,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;gBACxC,iBAAiB,EAAE,UAAU;gBAC7B,kBAAkB,EAAE,IAAI;gBACxB,eAAe,EAAE,IAAI;aACtB,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;YAEpD,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,gBAAgB,EAAE,CAAC,QAAQ,CAAC;oBAC5B,iBAAiB,EAAE,QAAQ;oBAC3B,kBAAkB,EAAE,IAAI;oBACxB,eAAe,EAAE,IAAI;iBACtB,CAAC;YACJ,CAAC;YAED,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,OAAO;oBACL,QAAQ,EAAE,QAAQ;oBAClB,gBAAgB,EAAE,CAAC,QAAQ,CAAC;oBAC5B,iBAAiB,EAAE,QAAQ;oBAC3B,kBAAkB,EAAE,IAAI;oBACxB,eAAe,EAAE,IAAI;iBACtB,CAAC;YACJ,CAAC;YAED,cAAc;YACd,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,gBAAgB,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,SAAS,CAAC;gBACzD,iBAAiB,EAAE,cAAc;gBACjC,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,KAAK;aACvB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,gBAAgB,EAAE,CAAC,cAAc,CAAC;YAClC,iBAAiB,EAAE,cAAc;YACjC,kBAAkB,EAAE,KAAK;YACzB,eAAe,EAAE,KAAK;SACvB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,OAAO,QAAQ,CAAC,eAAe,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,OAAe;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE7C,QAAQ,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YACnC,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAEpD,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAEtD,KAAK,cAAc,CAAC;YACpB;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,iBAAiB,CAAC,UAAkB,EAAE,QAAgB;QAClE,qBAAqB;QACrB,gCAAgC;QAChC,OAAO,CAAC,IAAI,CACV,2DAA2D,CAC5D,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,mBAAmB,CAAC,SAAiB,EAAE,OAAe;QAClE,IAAI,CAAC;YACH,4EAA4E;YAC5E,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBAC/C,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;YAC9C,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAE5D,4DAA4D;YAC5D,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,KAAK,IAAI,EAAE;gBACT,OAAO,MAAM,IAAI,CAAC,cAAe,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC,EACD;gBACE,GAAG,aAAa;gBAChB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC1B,OAAO,CAAC,KAAK,CAAC,mCAAmC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChF,CAAC;aACF,CACF,CAAC;YAEF,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,OAAe;QACzC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;YACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;YAC1B,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;SACpB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,mBAAmB,CAAC,SAAiB,EAAE,OAAe;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE9C,OAAO;;;;;;;;2BAQgB,KAAK,CAAC,IAAI;4BACT,KAAK,CAAC,KAAK;0BACb,KAAK,CAAC,GAAG;;;;;;;yBAOV,GAAG,CAAC,IAAI;0BACP,GAAG,CAAC,KAAK;wBACX,GAAG,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoCd,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,MAAc;QAChC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;oBACZ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBACf,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBACf,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;oBACb,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK;oBACvE,MAAM,EAAE,UAAU;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,4BAA4B,CAC1B,MAAuB,EACvB,YAAoB,EACpB,YAA0B,EAC1B,IAAY;QAEZ,MAAM,KAAK,GAAoB,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/B,sBAAsB;QACtB,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAElE,kCAAkC;QAClC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9C,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAExC,6BAA6B;QAC7B,MAAM,SAAS,GAAG,MAAM;aACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;aAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACxB,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YACpB,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC;aACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,IAAI,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;aACxD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAEzD,8CAA8C;QAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,2BAA2B;QAC3B,IAAI,WAAW,GAAG,SAAS,CAAC;QAE5B,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YAEjF,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE;oBAChC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;oBAC9B,eAAe,EAAE,UAAU;oBAC3B,WAAW,EAAE,MAAM;oBACnB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ;oBACzC,SAAS,EAAE,EAAE;oBACb,OAAO,EAAE,QAAQ;oBACjB,MAAM,EAAE,UAAU;iBACnB,CAAC,CAAC;YACL,CAAC;YAED,WAAW,GAAG,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;QAClE,CAAC;QAED,wCAAwC;QACxC,MAAM,gBAAgB,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACnF,IAAI,gBAAgB,IAAI,YAAY,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE;gBAChC,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE;gBAC1B,eAAe,EAAE,gBAAgB;gBACjC,WAAW,EAAE,MAAM;gBACnB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ;gBAC/C,SAAS,EAAE,EAAE;gBACb,OAAO,EAAE,QAAQ;gBACjB,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAClB,IAAmB,EACnB,MAAsB;QAEtB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAEtE,IAAI,WAAW,GAAwC,MAAM,CAAC;QAC9D,IAAI,OAAO,GAA6C,QAAQ,CAAC;QACjE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAEzB,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,WAAW,GAAG,WAAW,CAAC;YAC1B,OAAO,GAAG,WAAW,CAAC;YACtB,MAAM,GAAG,GAAG,OAAO,cAAc,CAAC;QACpC,CAAC;aAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,WAAW,GAAG,YAAY,CAAC;YAC3B,OAAO,GAAG,eAAe,CAAC;YAC1B,MAAM,GAAG,GAAG,OAAO,WAAW,CAAC;QACjC,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,WAAW;YACX,OAAO;YACP,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,yBAAyB,CAAC,SAAiB,EAAE,OAAe;QAC1D,OAAO;;MAEL,SAAS,MAAM,OAAO;;;;;;;;;iCASK,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,OAA0B;QACzC,kCAAkC;QAClC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,cAAc,OAAO,CAAC,SAAS,sCAAsC,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,cAAc,OAAO,CAAC,OAAO,sCAAsC,CAAC,CAAC;QACvF,CAAC;QAED,sBAAsB;QACtB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,8BAA8B;QAC9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,yCAAyC;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAElF,uCAAuC;QACvC,IAAI,cAAc,GAAG,MAAM,CAAC;QAC5B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE;gBACN,KAAK,EAAE,OAAO,CAAC,SAAS;gBACxB,GAAG,EAAE,OAAO,CAAC,OAAO;aACrB;YACD,WAAW,EAAE,cAAc,CAAC,MAAM;SACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,OAAe;QACvC,MAAM,SAAS,GAAG,qBAAqB,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB,CAAC,SAAiB,EAAE,OAAe;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE7C,QAAQ,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YACnC,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAE9D,KAAK,QAAQ,CAAC;YACd,KAAK,cAAc,CAAC;YACpB;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,2BAA2B,CAAC,SAAiB,EAAE,OAAe;QAC1E,IAAI,CAAC;YACH,4BAA4B;YAC5B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBAC/C,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;YAC9C,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,8BAA8B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAEvE,4DAA4D;YAC5D,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,KAAK,IAAI,EAAE;gBACT,OAAO,MAAM,IAAI,CAAC,cAAe,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC,EACD;gBACE,GAAG,aAAa;gBAChB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC1B,OAAO,CAAC,KAAK,CAAC,mCAAmC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChF,CAAC;aACF,CACF,CAAC;YAEF,OAAO,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,8BAA8B,CAAC,SAAiB,EAAE,OAAe;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE9C,OAAO;;;;;;;;2BAQgB,KAAK,CAAC,IAAI;4BACT,KAAK,CAAC,KAAK;0BACb,KAAK,CAAC,GAAG;;;;;;;yBAOV,GAAG,CAAC,IAAI;0BACP,GAAG,CAAC,KAAK;wBACX,GAAG,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgDd,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,8BAA8B,CAAC,MAAc;QAC3C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAEpF,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;oBACZ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBACf,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACnC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;oBAC3C,MAAM,EAAE,UAAU;oBAClB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;oBAClB,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,eAAuB;QAC7C,IAAI,CAAC;YACH,4DAA4D;YAC5D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC1B,OAAO,eAAe,CAAC,CAAC,gCAAgC;YAC1D,CAAC;YAED,kCAAkC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAE3D,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,QAAQ,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,eAAe,CAAC;QACzB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Client Store
|
|
3
|
+
* Requirements: 24.1-24.8
|
|
4
|
+
*
|
|
5
|
+
* Manages OAuth client registration and storage for Dynamic Client Registration (RFC 7591).
|
|
6
|
+
*/
|
|
7
|
+
import { OAuthClient, ClientRegistrationRequest } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Client Store Configuration
|
|
10
|
+
*/
|
|
11
|
+
export interface ClientStoreConfig {
|
|
12
|
+
allowedRedirectUris: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Client Registration Result
|
|
16
|
+
*/
|
|
17
|
+
export interface ClientRegistrationResult {
|
|
18
|
+
success: boolean;
|
|
19
|
+
client?: OAuthClient;
|
|
20
|
+
error?: string;
|
|
21
|
+
errorDescription?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Client Store Interface
|
|
25
|
+
*/
|
|
26
|
+
export interface ClientStore {
|
|
27
|
+
registerClient(request: ClientRegistrationRequest): Promise<ClientRegistrationResult>;
|
|
28
|
+
getClient(clientId: string): Promise<OAuthClient | null>;
|
|
29
|
+
deleteClient(clientId: string): Promise<boolean>;
|
|
30
|
+
isValidRedirectUri(clientId: string, redirectUri: string): Promise<boolean>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create a Client Store instance
|
|
34
|
+
*/
|
|
35
|
+
export declare function createClientStore(config: ClientStoreConfig): ClientStore;
|
|
36
|
+
//# sourceMappingURL=client-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-store.d.ts","sourceRoot":"","sources":["../../src/oauth/client-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,WAAW,EACX,yBAAyB,EAE1B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACtF,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACzD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7E;AA8GD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAExE"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Client Store
|
|
3
|
+
* Requirements: 24.1-24.8
|
|
4
|
+
*
|
|
5
|
+
* Manages OAuth client registration and storage for Dynamic Client Registration (RFC 7591).
|
|
6
|
+
*/
|
|
7
|
+
import { randomBytes } from 'crypto';
|
|
8
|
+
import { CLAUDE_CALLBACK_URLS, } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Validate redirect URIs against allowed list
|
|
11
|
+
* Requirement 24.3, 24.4, 24.5
|
|
12
|
+
*/
|
|
13
|
+
function validateRedirectUris(uris, allowedUris) {
|
|
14
|
+
if (!uris || uris.length === 0) {
|
|
15
|
+
return { valid: false, error: 'redirect_uris is required' };
|
|
16
|
+
}
|
|
17
|
+
for (const uri of uris) {
|
|
18
|
+
// Check if URI is in Claude official URLs (always allowed)
|
|
19
|
+
if (CLAUDE_CALLBACK_URLS.includes(uri)) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
// Check if URI is in allowed list
|
|
23
|
+
if (!allowedUris.includes(uri) && !allowedUris.includes('*')) {
|
|
24
|
+
return { valid: false, error: `redirect_uri not allowed: ${uri}` };
|
|
25
|
+
}
|
|
26
|
+
// Validate URI format
|
|
27
|
+
try {
|
|
28
|
+
const parsed = new URL(uri);
|
|
29
|
+
// Require HTTPS for non-localhost URIs
|
|
30
|
+
if (parsed.protocol !== 'https:' && parsed.hostname !== 'localhost') {
|
|
31
|
+
return { valid: false, error: `redirect_uri must use HTTPS: ${uri}` };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return { valid: false, error: `Invalid redirect_uri format: ${uri}` };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return { valid: true };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* In-memory Client Store Implementation
|
|
42
|
+
*/
|
|
43
|
+
class InMemoryClientStore {
|
|
44
|
+
clients = new Map();
|
|
45
|
+
config;
|
|
46
|
+
constructor(config) {
|
|
47
|
+
this.config = config;
|
|
48
|
+
}
|
|
49
|
+
async registerClient(request) {
|
|
50
|
+
// Validate client_name
|
|
51
|
+
if (!request.client_name || request.client_name.trim() === '') {
|
|
52
|
+
return {
|
|
53
|
+
success: false,
|
|
54
|
+
error: 'invalid_client_metadata',
|
|
55
|
+
errorDescription: 'client_name is required',
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// Validate redirect_uris (Requirement 24.3)
|
|
59
|
+
const uriValidation = validateRedirectUris(request.redirect_uris, this.config.allowedRedirectUris);
|
|
60
|
+
if (!uriValidation.valid) {
|
|
61
|
+
return {
|
|
62
|
+
success: false,
|
|
63
|
+
error: 'invalid_redirect_uri',
|
|
64
|
+
errorDescription: uriValidation.error,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// Generate client_id
|
|
68
|
+
const clientId = `sage_${randomBytes(16).toString('hex')}`;
|
|
69
|
+
// Create client metadata
|
|
70
|
+
const client = {
|
|
71
|
+
client_id: clientId,
|
|
72
|
+
client_name: request.client_name,
|
|
73
|
+
redirect_uris: request.redirect_uris,
|
|
74
|
+
response_types: request.response_types || ['code'],
|
|
75
|
+
grant_types: request.grant_types || ['authorization_code', 'refresh_token'],
|
|
76
|
+
token_endpoint_auth_method: request.token_endpoint_auth_method || 'none',
|
|
77
|
+
client_id_issued_at: Math.floor(Date.now() / 1000),
|
|
78
|
+
};
|
|
79
|
+
// Store client
|
|
80
|
+
this.clients.set(clientId, client);
|
|
81
|
+
return { success: true, client };
|
|
82
|
+
}
|
|
83
|
+
async getClient(clientId) {
|
|
84
|
+
return this.clients.get(clientId) || null;
|
|
85
|
+
}
|
|
86
|
+
async deleteClient(clientId) {
|
|
87
|
+
return this.clients.delete(clientId);
|
|
88
|
+
}
|
|
89
|
+
async isValidRedirectUri(clientId, redirectUri) {
|
|
90
|
+
const client = await this.getClient(clientId);
|
|
91
|
+
if (!client) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
// Requirement 30.5: Exact match validation
|
|
95
|
+
return client.redirect_uris.includes(redirectUri);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create a Client Store instance
|
|
100
|
+
*/
|
|
101
|
+
export function createClientStore(config) {
|
|
102
|
+
return new InMemoryClientStore(config);
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=client-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-store.js","sourceRoot":"","sources":["../../src/oauth/client-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Authorization Code Store
|
|
3
|
+
* Requirements: 25.9, 25.10, 26.4
|
|
4
|
+
*
|
|
5
|
+
* Manages authorization code generation, storage, and validation.
|
|
6
|
+
*/
|
|
7
|
+
import { AuthorizationCode, CodeChallengeMethod } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Configuration for Authorization Code Store
|
|
10
|
+
*/
|
|
11
|
+
export interface AuthorizationCodeStoreConfig {
|
|
12
|
+
expirySeconds: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Options for generating an authorization code
|
|
16
|
+
*/
|
|
17
|
+
export interface GenerateCodeOptions {
|
|
18
|
+
clientId: string;
|
|
19
|
+
redirectUri: string;
|
|
20
|
+
scope: string;
|
|
21
|
+
codeChallenge: string;
|
|
22
|
+
codeChallengeMethod: CodeChallengeMethod;
|
|
23
|
+
userId: string;
|
|
24
|
+
resource?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Result of validating an authorization code
|
|
28
|
+
*/
|
|
29
|
+
export interface CodeValidationResult {
|
|
30
|
+
valid: boolean;
|
|
31
|
+
codeData?: AuthorizationCode;
|
|
32
|
+
error?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Authorization Code Store Interface
|
|
36
|
+
*/
|
|
37
|
+
export interface AuthorizationCodeStore {
|
|
38
|
+
generateCode(options: GenerateCodeOptions): Promise<string>;
|
|
39
|
+
validateCode(code: string, clientId: string): Promise<CodeValidationResult>;
|
|
40
|
+
consumeCode(code: string, clientId: string): Promise<CodeValidationResult>;
|
|
41
|
+
revokeCode(code: string): Promise<void>;
|
|
42
|
+
cleanup(): Promise<number>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Create an Authorization Code Store instance
|
|
46
|
+
*/
|
|
47
|
+
export declare function createAuthorizationCodeStore(config: AuthorizationCodeStoreConfig): AuthorizationCodeStore;
|
|
48
|
+
//# sourceMappingURL=code-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-store.d.ts","sourceRoot":"","sources":["../../src/oauth/code-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC5E,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3E,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5B;AAkGD;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,4BAA4B,GACnC,sBAAsB,CAExB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Authorization Code Store
|
|
3
|
+
* Requirements: 25.9, 25.10, 26.4
|
|
4
|
+
*
|
|
5
|
+
* Manages authorization code generation, storage, and validation.
|
|
6
|
+
*/
|
|
7
|
+
import { randomBytes } from 'crypto';
|
|
8
|
+
/**
|
|
9
|
+
* In-memory Authorization Code Store Implementation
|
|
10
|
+
*/
|
|
11
|
+
class InMemoryAuthorizationCodeStore {
|
|
12
|
+
codes = new Map();
|
|
13
|
+
config;
|
|
14
|
+
constructor(config) {
|
|
15
|
+
this.config = config;
|
|
16
|
+
}
|
|
17
|
+
async generateCode(options) {
|
|
18
|
+
// Generate secure random code
|
|
19
|
+
const code = randomBytes(32).toString('base64url');
|
|
20
|
+
const now = Date.now();
|
|
21
|
+
const expiresAt = now + this.config.expirySeconds * 1000;
|
|
22
|
+
const codeData = {
|
|
23
|
+
code,
|
|
24
|
+
client_id: options.clientId,
|
|
25
|
+
redirect_uri: options.redirectUri,
|
|
26
|
+
scope: options.scope,
|
|
27
|
+
code_challenge: options.codeChallenge,
|
|
28
|
+
code_challenge_method: options.codeChallengeMethod,
|
|
29
|
+
resource: options.resource,
|
|
30
|
+
user_id: options.userId,
|
|
31
|
+
created_at: now,
|
|
32
|
+
expires_at: expiresAt,
|
|
33
|
+
used: false,
|
|
34
|
+
};
|
|
35
|
+
this.codes.set(code, codeData);
|
|
36
|
+
return code;
|
|
37
|
+
}
|
|
38
|
+
async validateCode(code, clientId) {
|
|
39
|
+
const codeData = this.codes.get(code);
|
|
40
|
+
if (!codeData) {
|
|
41
|
+
return { valid: false, error: 'invalid_grant' };
|
|
42
|
+
}
|
|
43
|
+
// Check if code has been used
|
|
44
|
+
if (codeData.used) {
|
|
45
|
+
return { valid: false, error: 'invalid_grant' };
|
|
46
|
+
}
|
|
47
|
+
// Check if code has expired
|
|
48
|
+
if (Date.now() > codeData.expires_at) {
|
|
49
|
+
this.codes.delete(code);
|
|
50
|
+
return { valid: false, error: 'invalid_grant' };
|
|
51
|
+
}
|
|
52
|
+
// Verify client_id matches
|
|
53
|
+
if (codeData.client_id !== clientId) {
|
|
54
|
+
return { valid: false, error: 'invalid_grant' };
|
|
55
|
+
}
|
|
56
|
+
return { valid: true, codeData };
|
|
57
|
+
}
|
|
58
|
+
async consumeCode(code, clientId) {
|
|
59
|
+
const validationResult = await this.validateCode(code, clientId);
|
|
60
|
+
if (!validationResult.valid) {
|
|
61
|
+
return validationResult;
|
|
62
|
+
}
|
|
63
|
+
// Mark code as used (Requirement 25.10: one-time use)
|
|
64
|
+
const codeData = this.codes.get(code);
|
|
65
|
+
codeData.used = true;
|
|
66
|
+
return validationResult;
|
|
67
|
+
}
|
|
68
|
+
async revokeCode(code) {
|
|
69
|
+
this.codes.delete(code);
|
|
70
|
+
}
|
|
71
|
+
async cleanup() {
|
|
72
|
+
const now = Date.now();
|
|
73
|
+
let cleanedCount = 0;
|
|
74
|
+
for (const [code, data] of this.codes.entries()) {
|
|
75
|
+
if (data.expires_at < now || data.used) {
|
|
76
|
+
this.codes.delete(code);
|
|
77
|
+
cleanedCount++;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return cleanedCount;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Create an Authorization Code Store instance
|
|
85
|
+
*/
|
|
86
|
+
export function createAuthorizationCodeStore(config) {
|
|
87
|
+
return new InMemoryAuthorizationCodeStore(config);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=code-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-store.js","sourceRoot":"","sources":["../../src/oauth/code-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth 2.1 Module Exports
|
|
3
|
+
* Requirements: 21-31
|
|
4
|
+
*/
|
|
5
|
+
export * from './types.js';
|
|
6
|
+
export { generateCodeVerifier, generateCodeChallenge, verifyCodeChallenge, isValidCodeVerifier, isValidCodeChallenge } from './pkce.js';
|
|
7
|
+
export { createTokenService, generateKeyPair, TokenService } from './token-service.js';
|
|
8
|
+
export { createAuthorizationCodeStore, AuthorizationCodeStore } from './code-store.js';
|
|
9
|
+
export { createRefreshTokenStore, RefreshTokenStore } from './refresh-token-store.js';
|
|
10
|
+
export { createClientStore, ClientStore } from './client-store.js';
|
|
11
|
+
export { OAuthServer, createOAuthServer, OAuthServerConfig } from './oauth-server.js';
|
|
12
|
+
export { OAuthHandler, createOAuthHandler, OAuthHandlerConfig } from './oauth-handler.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oauth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGxI,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvF,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGvF,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGtF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth 2.1 Module Exports
|
|
3
|
+
* Requirements: 21-31
|
|
4
|
+
*/
|
|
5
|
+
// Types
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
// PKCE
|
|
8
|
+
export { generateCodeVerifier, generateCodeChallenge, verifyCodeChallenge, isValidCodeVerifier, isValidCodeChallenge } from './pkce.js';
|
|
9
|
+
// Token Service
|
|
10
|
+
export { createTokenService, generateKeyPair } from './token-service.js';
|
|
11
|
+
// Authorization Code Store
|
|
12
|
+
export { createAuthorizationCodeStore } from './code-store.js';
|
|
13
|
+
// Refresh Token Store
|
|
14
|
+
export { createRefreshTokenStore } from './refresh-token-store.js';
|
|
15
|
+
// Client Store
|
|
16
|
+
export { createClientStore } from './client-store.js';
|
|
17
|
+
// OAuth Server
|
|
18
|
+
export { OAuthServer, createOAuthServer } from './oauth-server.js';
|
|
19
|
+
// OAuth Handler
|
|
20
|
+
export { OAuthHandler, createOAuthHandler } from './oauth-handler.js';
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oauth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,OAAO;AACP,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAExI,gBAAgB;AAChB,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAgB,MAAM,oBAAoB,CAAC;AAEvF,2BAA2B;AAC3B,OAAO,EAAE,4BAA4B,EAA0B,MAAM,iBAAiB,CAAC;AAEvF,sBAAsB;AACtB,OAAO,EAAE,uBAAuB,EAAqB,MAAM,0BAA0B,CAAC;AAEtF,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAe,MAAM,mBAAmB,CAAC;AAEnE,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAqB,MAAM,mBAAmB,CAAC;AAEtF,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAsB,MAAM,oBAAoB,CAAC"}
|