devcache-hub 0.1.2 → 0.3.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.
Files changed (107) hide show
  1. package/dist/analyzers/ArchitectureAnalyzer.d.ts +17 -0
  2. package/dist/analyzers/ArchitectureAnalyzer.d.ts.map +1 -0
  3. package/dist/analyzers/ArchitectureAnalyzer.js +217 -0
  4. package/dist/analyzers/ArchitectureAnalyzer.js.map +1 -0
  5. package/dist/analyzers/FeaturesAnalyzer.d.ts +18 -0
  6. package/dist/analyzers/FeaturesAnalyzer.d.ts.map +1 -0
  7. package/dist/analyzers/FeaturesAnalyzer.js +258 -0
  8. package/dist/analyzers/FeaturesAnalyzer.js.map +1 -0
  9. package/dist/analyzers/ImpactAnalyzer.d.ts +16 -0
  10. package/dist/analyzers/ImpactAnalyzer.d.ts.map +1 -0
  11. package/dist/analyzers/ImpactAnalyzer.js +165 -0
  12. package/dist/analyzers/ImpactAnalyzer.js.map +1 -0
  13. package/dist/analyzers/ProjectAnalyzer.d.ts +14 -0
  14. package/dist/analyzers/ProjectAnalyzer.d.ts.map +1 -0
  15. package/dist/analyzers/ProjectAnalyzer.js +142 -0
  16. package/dist/analyzers/ProjectAnalyzer.js.map +1 -0
  17. package/dist/analyzers/StackAnalyzer.d.ts +28 -0
  18. package/dist/analyzers/StackAnalyzer.d.ts.map +1 -0
  19. package/dist/analyzers/StackAnalyzer.js +320 -0
  20. package/dist/analyzers/StackAnalyzer.js.map +1 -0
  21. package/dist/analyzers/base/BaseAnalyzer.d.ts +39 -0
  22. package/dist/analyzers/base/BaseAnalyzer.d.ts.map +1 -0
  23. package/dist/analyzers/base/BaseAnalyzer.js +64 -0
  24. package/dist/analyzers/base/BaseAnalyzer.js.map +1 -0
  25. package/dist/analyzers/index.d.ts +7 -0
  26. package/dist/analyzers/index.d.ts.map +1 -0
  27. package/dist/analyzers/index.js +23 -0
  28. package/dist/analyzers/index.js.map +1 -0
  29. package/dist/cli/commands/generate.d.ts.map +1 -1
  30. package/dist/cli/commands/generate.js +32 -19
  31. package/dist/cli/commands/generate.js.map +1 -1
  32. package/dist/cli/commands/login.d.ts.map +1 -1
  33. package/dist/cli/commands/login.js +89 -19
  34. package/dist/cli/commands/login.js.map +1 -1
  35. package/dist/cli/commands/push.d.ts.map +1 -1
  36. package/dist/cli/commands/push.js +81 -10
  37. package/dist/cli/commands/push.js.map +1 -1
  38. package/dist/orchestrator/FileSystemHandler.d.ts +35 -0
  39. package/dist/orchestrator/FileSystemHandler.d.ts.map +1 -0
  40. package/dist/orchestrator/FileSystemHandler.js +138 -0
  41. package/dist/orchestrator/FileSystemHandler.js.map +1 -0
  42. package/dist/orchestrator/Orchestrator.d.ts +31 -0
  43. package/dist/orchestrator/Orchestrator.d.ts.map +1 -0
  44. package/dist/orchestrator/Orchestrator.js +141 -0
  45. package/dist/orchestrator/Orchestrator.js.map +1 -0
  46. package/dist/orchestrator/TemplateManager.d.ts +35 -0
  47. package/dist/orchestrator/TemplateManager.d.ts.map +1 -0
  48. package/dist/orchestrator/TemplateManager.js +116 -0
  49. package/dist/orchestrator/TemplateManager.js.map +1 -0
  50. package/dist/orchestrator/index.d.ts +4 -0
  51. package/dist/orchestrator/index.d.ts.map +1 -0
  52. package/dist/orchestrator/index.js +20 -0
  53. package/dist/orchestrator/index.js.map +1 -0
  54. package/dist/supabase/client.d.ts +54 -0
  55. package/dist/supabase/client.d.ts.map +1 -0
  56. package/dist/supabase/client.js +181 -0
  57. package/dist/supabase/client.js.map +1 -0
  58. package/dist/supabase/index.d.ts +3 -0
  59. package/dist/supabase/index.d.ts.map +1 -0
  60. package/dist/supabase/index.js +19 -0
  61. package/dist/supabase/index.js.map +1 -0
  62. package/dist/supabase/oauth.d.ts +25 -0
  63. package/dist/supabase/oauth.d.ts.map +1 -0
  64. package/dist/supabase/oauth.js +218 -0
  65. package/dist/supabase/oauth.js.map +1 -0
  66. package/dist/supabase/storage.d.ts +46 -0
  67. package/dist/supabase/storage.d.ts.map +1 -0
  68. package/dist/supabase/storage.js +179 -0
  69. package/dist/supabase/storage.js.map +1 -0
  70. package/dist/types/analyzers.d.ts +51 -0
  71. package/dist/types/analyzers.d.ts.map +1 -0
  72. package/dist/types/analyzers.js +3 -0
  73. package/dist/types/analyzers.js.map +1 -0
  74. package/dist/types/config.d.ts +27 -0
  75. package/dist/types/config.d.ts.map +1 -0
  76. package/dist/types/config.js +3 -0
  77. package/dist/types/config.js.map +1 -0
  78. package/dist/types/index.d.ts +4 -0
  79. package/dist/types/index.d.ts.map +1 -0
  80. package/dist/types/index.js +20 -0
  81. package/dist/types/index.js.map +1 -0
  82. package/dist/types/templates.d.ts +18 -0
  83. package/dist/types/templates.d.ts.map +1 -0
  84. package/dist/types/templates.js +3 -0
  85. package/dist/types/templates.js.map +1 -0
  86. package/dist/utils/config.d.ts +17 -0
  87. package/dist/utils/config.d.ts.map +1 -0
  88. package/dist/utils/config.js +46 -0
  89. package/dist/utils/config.js.map +1 -0
  90. package/dist/utils/fileParser.d.ts +28 -0
  91. package/dist/utils/fileParser.d.ts.map +1 -0
  92. package/dist/utils/fileParser.js +111 -0
  93. package/dist/utils/fileParser.js.map +1 -0
  94. package/dist/utils/index.d.ts +4 -0
  95. package/dist/utils/index.d.ts.map +1 -0
  96. package/dist/utils/index.js +20 -0
  97. package/dist/utils/index.js.map +1 -0
  98. package/dist/utils/logger.d.ts +9 -0
  99. package/dist/utils/logger.d.ts.map +1 -0
  100. package/dist/utils/logger.js +31 -0
  101. package/dist/utils/logger.js.map +1 -0
  102. package/package.json +15 -14
  103. package/templates/general/project-impact.yaml +34 -0
  104. package/templates/general/project-overview.yaml +34 -0
  105. package/templates/tech/architecture-project.yaml +42 -0
  106. package/templates/tech/features.yaml +38 -0
  107. package/templates/tech/stack-project.yaml +42 -0
@@ -0,0 +1,35 @@
1
+ import { Template } from '../types';
2
+ export declare class TemplateManager {
3
+ private templates;
4
+ private templatesPath;
5
+ constructor(templatesPath?: string);
6
+ /**
7
+ * Load all template definitions
8
+ */
9
+ loadTemplates(): Promise<void>;
10
+ /**
11
+ * Get template by name
12
+ */
13
+ getTemplate(name: string): Template | undefined;
14
+ /**
15
+ * Get all templates
16
+ */
17
+ getAllTemplates(): Template[];
18
+ /**
19
+ * Get templates by category
20
+ */
21
+ getTemplatesByCategory(category: 'general' | 'tech'): Template[];
22
+ /**
23
+ * Render template to markdown
24
+ */
25
+ renderTemplate(template: Template, data: any): string;
26
+ /**
27
+ * Render a section recursively
28
+ */
29
+ private renderSection;
30
+ /**
31
+ * Validate template structure
32
+ */
33
+ validateTemplate(template: Template): boolean;
34
+ }
35
+ //# sourceMappingURL=TemplateManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateManager.d.ts","sourceRoot":"","sources":["../../src/orchestrator/TemplateManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAoB,MAAM,UAAU,CAAC;AAGtD,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,aAAa,CAAS;gBAElB,aAAa,CAAC,EAAE,MAAM;IAKlC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BpC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI/C;;OAEG;IACH,eAAe,IAAI,QAAQ,EAAE;IAI7B;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,EAAE;IAIhE;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM;IAcrD;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;CAe9C"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TemplateManager = void 0;
7
+ const promises_1 = __importDefault(require("fs/promises"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const yaml_1 = __importDefault(require("yaml"));
10
+ const utils_1 = require("../utils");
11
+ class TemplateManager {
12
+ constructor(templatesPath) {
13
+ this.templates = {};
14
+ // Default to templates directory in package
15
+ this.templatesPath = templatesPath || path_1.default.join(__dirname, '../../templates');
16
+ }
17
+ /**
18
+ * Load all template definitions
19
+ */
20
+ async loadTemplates() {
21
+ try {
22
+ const categories = ['general', 'tech'];
23
+ for (const category of categories) {
24
+ const categoryPath = path_1.default.join(this.templatesPath, category);
25
+ try {
26
+ const files = await promises_1.default.readdir(categoryPath);
27
+ for (const file of files) {
28
+ if (file.endsWith('.yaml') || file.endsWith('.yml')) {
29
+ const filePath = path_1.default.join(categoryPath, file);
30
+ const content = await promises_1.default.readFile(filePath, 'utf-8');
31
+ const template = yaml_1.default.parse(content);
32
+ this.templates[template.name] = template;
33
+ utils_1.Logger.debug(`Loaded template: ${template.name}`);
34
+ }
35
+ }
36
+ }
37
+ catch (error) {
38
+ utils_1.Logger.warn(`Could not load templates from ${categoryPath}`);
39
+ }
40
+ }
41
+ utils_1.Logger.debug(`Loaded ${Object.keys(this.templates).length} templates`);
42
+ }
43
+ catch (error) {
44
+ throw new Error(`Failed to load templates: ${error}`);
45
+ }
46
+ }
47
+ /**
48
+ * Get template by name
49
+ */
50
+ getTemplate(name) {
51
+ return this.templates[name];
52
+ }
53
+ /**
54
+ * Get all templates
55
+ */
56
+ getAllTemplates() {
57
+ return Object.values(this.templates);
58
+ }
59
+ /**
60
+ * Get templates by category
61
+ */
62
+ getTemplatesByCategory(category) {
63
+ return Object.values(this.templates).filter((t) => t.category === category);
64
+ }
65
+ /**
66
+ * Render template to markdown
67
+ */
68
+ renderTemplate(template, data) {
69
+ let markdown = `# ${data.title || template.description}\n\n`;
70
+ for (const section of template.sections) {
71
+ markdown += this.renderSection(section, data, 2);
72
+ }
73
+ // Add metadata footer
74
+ markdown += '\n---\n\n';
75
+ markdown += `*Generated by DevCache on ${new Date().toISOString()}*\n`;
76
+ return markdown;
77
+ }
78
+ /**
79
+ * Render a section recursively
80
+ */
81
+ renderSection(section, data, level) {
82
+ let markdown = '';
83
+ const heading = '#'.repeat(level);
84
+ // Add section heading
85
+ markdown += `${heading} ${section.heading}\n\n`;
86
+ // Add section content if available
87
+ const sectionData = data.sections?.find((s) => s.heading === section.heading);
88
+ if (sectionData?.content) {
89
+ markdown += `${sectionData.content}\n\n`;
90
+ }
91
+ // Render subsections
92
+ if (section.subsections) {
93
+ for (const subsection of section.subsections) {
94
+ markdown += this.renderSection(subsection, data, level + 1);
95
+ }
96
+ }
97
+ return markdown;
98
+ }
99
+ /**
100
+ * Validate template structure
101
+ */
102
+ validateTemplate(template) {
103
+ if (!template.name || !template.category || !template.outputFile) {
104
+ return false;
105
+ }
106
+ if (!['general', 'tech'].includes(template.category)) {
107
+ return false;
108
+ }
109
+ if (!template.sections || template.sections.length === 0) {
110
+ return false;
111
+ }
112
+ return true;
113
+ }
114
+ }
115
+ exports.TemplateManager = TemplateManager;
116
+ //# sourceMappingURL=TemplateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateManager.js","sourceRoot":"","sources":["../../src/orchestrator/TemplateManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './Orchestrator';
2
+ export * from './TemplateManager';
3
+ export * from './FileSystemHandler';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Orchestrator"), exports);
18
+ __exportStar(require("./TemplateManager"), exports);
19
+ __exportStar(require("./FileSystemHandler"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,oDAAkC;AAClC,sDAAoC"}
@@ -0,0 +1,54 @@
1
+ import { SupabaseClient } from '@supabase/supabase-js';
2
+ export interface SessionData {
3
+ access_token: string;
4
+ refresh_token: string;
5
+ user_id: string;
6
+ email: string;
7
+ expires_at: number;
8
+ }
9
+ export declare class DevCacheSupabaseClient {
10
+ private client;
11
+ private session;
12
+ /**
13
+ * Initialize Supabase client with environment variables
14
+ */
15
+ initialize(): Promise<void>;
16
+ /**
17
+ * Authenticate user with email and password
18
+ */
19
+ login(email: string, password: string): Promise<SessionData>;
20
+ /**
21
+ * Get current session
22
+ */
23
+ getSession(): Promise<SessionData | null>;
24
+ /**
25
+ * Refresh session token
26
+ */
27
+ private refreshSession;
28
+ /**
29
+ * Save OAuth session (public method for OAuth flow)
30
+ */
31
+ saveOAuthSession(session: SessionData): Promise<void>;
32
+ /**
33
+ * Save session to file
34
+ */
35
+ private saveSession;
36
+ /**
37
+ * Load session from file
38
+ */
39
+ private loadSession;
40
+ /**
41
+ * Clear session
42
+ */
43
+ clearSession(): Promise<void>;
44
+ /**
45
+ * Get Supabase client
46
+ */
47
+ getClient(): SupabaseClient;
48
+ /**
49
+ * Check if user is authenticated
50
+ */
51
+ isAuthenticated(): boolean;
52
+ }
53
+ export declare function getSupabaseClient(): DevCacheSupabaseClient;
54
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/supabase/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAOrE,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,OAAO,CAA4B;IAE3C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgClE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAa/C;;OAEG;YACW,cAAc;IA2B5B;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3D;;OAEG;YACW,WAAW;IAQzB;;OAEG;YACW,WAAW;IAkBzB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAcnC;;OAEG;IACH,SAAS,IAAI,cAAc;IAQ3B;;OAEG;IACH,eAAe,IAAI,OAAO;CAG3B;AAKD,wBAAgB,iBAAiB,IAAI,sBAAsB,CAK1D"}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DevCacheSupabaseClient = void 0;
7
+ exports.getSupabaseClient = getSupabaseClient;
8
+ const supabase_js_1 = require("@supabase/supabase-js");
9
+ const promises_1 = __importDefault(require("fs/promises"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const os_1 = __importDefault(require("os"));
12
+ const SESSION_FILE = path_1.default.join(os_1.default.homedir(), '.devcache', 'session.json');
13
+ class DevCacheSupabaseClient {
14
+ constructor() {
15
+ this.client = null;
16
+ this.session = null;
17
+ }
18
+ /**
19
+ * Initialize Supabase client with environment variables
20
+ */
21
+ async initialize() {
22
+ const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
23
+ const supabaseKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
24
+ if (!supabaseUrl || !supabaseKey) {
25
+ throw new Error('Supabase credentials not found. Please set NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY environment variables.');
26
+ }
27
+ this.client = (0, supabase_js_1.createClient)(supabaseUrl, supabaseKey);
28
+ // Try to load existing session
29
+ await this.loadSession();
30
+ }
31
+ /**
32
+ * Authenticate user with email and password
33
+ */
34
+ async login(email, password) {
35
+ if (!this.client) {
36
+ throw new Error('Supabase client not initialized');
37
+ }
38
+ const { data, error } = await this.client.auth.signInWithPassword({
39
+ email,
40
+ password,
41
+ });
42
+ if (error) {
43
+ throw new Error(`Authentication failed: ${error.message}`);
44
+ }
45
+ if (!data.session || !data.user) {
46
+ throw new Error('No session data returned from authentication');
47
+ }
48
+ // Store session
49
+ this.session = {
50
+ access_token: data.session.access_token,
51
+ refresh_token: data.session.refresh_token,
52
+ user_id: data.user.id,
53
+ email: data.user.email,
54
+ expires_at: data.session.expires_at || 0,
55
+ };
56
+ await this.saveSession();
57
+ return this.session;
58
+ }
59
+ /**
60
+ * Get current session
61
+ */
62
+ async getSession() {
63
+ if (!this.session) {
64
+ await this.loadSession();
65
+ }
66
+ // Check if session is expired
67
+ if (this.session && this.session.expires_at < Date.now() / 1000) {
68
+ await this.refreshSession();
69
+ }
70
+ return this.session;
71
+ }
72
+ /**
73
+ * Refresh session token
74
+ */
75
+ async refreshSession() {
76
+ if (!this.client || !this.session) {
77
+ throw new Error('No session to refresh');
78
+ }
79
+ const { data, error } = await this.client.auth.refreshSession({
80
+ refresh_token: this.session.refresh_token,
81
+ });
82
+ if (error || !data.session) {
83
+ // Session expired, clear it
84
+ this.session = null;
85
+ await this.clearSession();
86
+ throw new Error('Session expired. Please login again.');
87
+ }
88
+ this.session = {
89
+ access_token: data.session.access_token,
90
+ refresh_token: data.session.refresh_token,
91
+ user_id: data.session.user.id,
92
+ email: data.session.user.email,
93
+ expires_at: data.session.expires_at || 0,
94
+ };
95
+ await this.saveSession();
96
+ }
97
+ /**
98
+ * Save OAuth session (public method for OAuth flow)
99
+ */
100
+ async saveOAuthSession(session) {
101
+ this.session = session;
102
+ // Set session in Supabase client
103
+ if (this.client) {
104
+ await this.client.auth.setSession({
105
+ access_token: session.access_token,
106
+ refresh_token: session.refresh_token,
107
+ });
108
+ }
109
+ await this.saveSession();
110
+ }
111
+ /**
112
+ * Save session to file
113
+ */
114
+ async saveSession() {
115
+ if (!this.session)
116
+ return;
117
+ const sessionDir = path_1.default.dirname(SESSION_FILE);
118
+ await promises_1.default.mkdir(sessionDir, { recursive: true });
119
+ await promises_1.default.writeFile(SESSION_FILE, JSON.stringify(this.session, null, 2), 'utf-8');
120
+ }
121
+ /**
122
+ * Load session from file
123
+ */
124
+ async loadSession() {
125
+ try {
126
+ const content = await promises_1.default.readFile(SESSION_FILE, 'utf-8');
127
+ this.session = JSON.parse(content);
128
+ // Set session in Supabase client
129
+ if (this.client && this.session) {
130
+ await this.client.auth.setSession({
131
+ access_token: this.session.access_token,
132
+ refresh_token: this.session.refresh_token,
133
+ });
134
+ }
135
+ }
136
+ catch (error) {
137
+ // Session file doesn't exist or is invalid
138
+ this.session = null;
139
+ }
140
+ }
141
+ /**
142
+ * Clear session
143
+ */
144
+ async clearSession() {
145
+ this.session = null;
146
+ try {
147
+ await promises_1.default.unlink(SESSION_FILE);
148
+ }
149
+ catch (error) {
150
+ // File doesn't exist, ignore
151
+ }
152
+ if (this.client) {
153
+ await this.client.auth.signOut();
154
+ }
155
+ }
156
+ /**
157
+ * Get Supabase client
158
+ */
159
+ getClient() {
160
+ if (!this.client) {
161
+ throw new Error('Supabase client not initialized. Call initialize() first.');
162
+ }
163
+ return this.client;
164
+ }
165
+ /**
166
+ * Check if user is authenticated
167
+ */
168
+ isAuthenticated() {
169
+ return this.session !== null;
170
+ }
171
+ }
172
+ exports.DevCacheSupabaseClient = DevCacheSupabaseClient;
173
+ // Singleton instance
174
+ let instance = null;
175
+ function getSupabaseClient() {
176
+ if (!instance) {
177
+ instance = new DevCacheSupabaseClient();
178
+ }
179
+ return instance;
180
+ }
181
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/supabase/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './client';
2
+ export * from './storage';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/supabase/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./client"), exports);
18
+ __exportStar(require("./storage"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/supabase/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B"}
@@ -0,0 +1,25 @@
1
+ export interface OAuthResult {
2
+ access_token: string;
3
+ refresh_token: string;
4
+ user_id: string;
5
+ email: string;
6
+ expires_at: number;
7
+ }
8
+ export declare class OAuthFlow {
9
+ private server;
10
+ private resolve;
11
+ private reject;
12
+ /**
13
+ * Start OAuth flow
14
+ */
15
+ startFlow(appUrl: string): Promise<OAuthResult>;
16
+ /**
17
+ * Handle callback request
18
+ */
19
+ private handleRequest;
20
+ /**
21
+ * Cleanup server
22
+ */
23
+ private cleanup;
24
+ }
25
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/supabase/oauth.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,OAAO,CAA+C;IAC9D,OAAO,CAAC,MAAM,CAAyC;IAEvD;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgCrD;;OAEG;IACH,OAAO,CAAC,aAAa;IAqKrB;;OAEG;IACH,OAAO,CAAC,OAAO;CAQhB"}