@microwiseai/snapshot 0.3.66 → 0.3.69

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.
@@ -1,139 +1,131 @@
1
1
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
2
  // ============================================================
3
- // Group 1: exchangeSessionToken() URL verification
3
+ // Group 1: getProxyAuthToken() IST JWT transport token
4
+ // SSOT (auth-credential-schema): single transport token =
5
+ // ~/.ist/credentials.json `.token` (IST JWT).
6
+ // env IST_SESSION_TOKEN override (value also an IST JWT).
7
+ // Legacy ~/.ist/session-token file + ~/.npmrc _authToken reads are RETIRED.
4
8
  // ============================================================
5
- describe('exchangeSessionToken() URL verification', () => {
6
- const FAKE_REFRESH_TOKEN = 'fake-refresh-token-abc123';
7
- const FAKE_ID_TOKEN = 'fake-id-token-xyz789';
8
- const FAKE_SESSION_TOKEN = 'fake-session-token-999';
9
- let fetchCalls;
10
- let originalFetch;
9
+ describe('getProxyAuthToken() credentials.json:.token SSOT', () => {
10
+ const FAKE_JWT = 'fake.ist.jwt-from-credentials';
11
11
  beforeEach(() => {
12
12
  vi.resetModules();
13
- fetchCalls = [];
14
- originalFetch = globalThis.fetch;
15
- // Clean env
16
13
  delete process.env.IST_SESSION_TOKEN;
17
14
  delete process.env.SNAPSHOT_LICENSE_KEY;
18
- delete process.env.LICENSE_API_URL;
19
15
  });
20
16
  afterEach(() => {
21
- globalThis.fetch = originalFetch;
22
17
  delete process.env.IST_SESSION_TOKEN;
23
18
  delete process.env.SNAPSHOT_LICENSE_KEY;
24
- delete process.env.LICENSE_API_URL;
25
19
  vi.restoreAllMocks();
26
20
  });
27
- it('should call Firebase and license-api with correct URLs (no /api/api duplication)', async () => {
28
- // Mock fs so that:
29
- // - ~/.ist/session-token does NOT exist (force credentials path)
30
- // - ~/.ist/credentials EXISTS with refreshToken
31
- const { existsSync: realExistsSync, readFileSync: realReadFileSync } = await import('fs');
21
+ it('returns IST_SESSION_TOKEN env var when set (override)', async () => {
22
+ process.env.IST_SESSION_TOKEN = 'proxy-token-abc';
23
+ const { getProxyAuthToken } = await import('./config.js');
24
+ expect(getProxyAuthToken()).toBe('proxy-token-abc');
25
+ });
26
+ it('reads .token from ~/.ist/credentials.json when no env override', async () => {
27
+ delete process.env.IST_SESSION_TOKEN;
32
28
  vi.doMock('fs', async () => {
33
29
  const actual = await vi.importActual('fs');
34
30
  return {
35
31
  ...actual,
36
32
  existsSync: (p) => {
37
- if (typeof p === 'string' && p.includes('session-token'))
38
- return false;
39
- if (typeof p === 'string' && p.includes('credentials'))
33
+ if (typeof p === 'string' && p.includes('credentials.json'))
40
34
  return true;
41
35
  return actual.existsSync(p);
42
36
  },
43
37
  readFileSync: (p, encoding) => {
44
- if (typeof p === 'string' && p.includes('credentials')) {
45
- return JSON.stringify({ refreshToken: FAKE_REFRESH_TOKEN });
38
+ if (typeof p === 'string' && p.includes('credentials.json')) {
39
+ return JSON.stringify({
40
+ uid: 'firebase-uid-123',
41
+ token: FAKE_JWT,
42
+ username: 'tester',
43
+ apiUrl: 'https://ist-identity-api.example.dev',
44
+ savedAt: '2026-06-02T00:00:00.000Z',
45
+ });
46
46
  }
47
47
  return actual.readFileSync(p, encoding);
48
48
  },
49
49
  };
50
50
  });
51
- // Mock fetch to capture calls
52
- globalThis.fetch = vi.fn(async (input, init) => {
53
- const url = typeof input === 'string' ? input : input instanceof URL ? input.toString() : input.url;
54
- fetchCalls.push({ url, options: init || {} });
55
- // Firebase response
56
- if (url.includes('securetoken.googleapis.com')) {
57
- return new Response(JSON.stringify({ id_token: FAKE_ID_TOKEN }), {
58
- status: 200,
59
- headers: { 'Content-Type': 'application/json' },
60
- });
61
- }
62
- // License API login response
63
- if (url.includes('/auth/login')) {
64
- return new Response(JSON.stringify({ data: { sessionToken: FAKE_SESSION_TOKEN } }), {
65
- status: 200,
66
- headers: { 'Content-Type': 'application/json' },
67
- });
68
- }
69
- return new Response('Not found', { status: 404 });
70
- });
71
- const { exchangeSessionToken } = await import('./config.js');
72
- const result = await exchangeSessionToken();
73
- expect(result).toBe(FAKE_SESSION_TOKEN);
74
- expect(fetchCalls.length).toBe(2);
75
- // 1. Firebase URL check
76
- const firebaseCall = fetchCalls[0];
77
- expect(firebaseCall.url).toMatch(/^https:\/\/securetoken\.googleapis\.com\/v1\/token\?key=/);
78
- // 2. License API URL check — must NOT have /api/api
79
- const loginCall = fetchCalls[1];
80
- expect(loginCall.url).toContain('/auth/login');
81
- expect(loginCall.url).not.toContain('/api/api');
82
- // Verify it's LICENSE_API_URL + '/auth/login'
83
- const expectedBase = 'https://license-api.sisung-kim1.workers.dev/api';
84
- expect(loginCall.url).toBe(`${expectedBase}/auth/login`);
51
+ const { getProxyAuthToken } = await import('./config.js');
52
+ expect(getProxyAuthToken()).toBe(FAKE_JWT);
85
53
  });
86
- it('should use custom LICENSE_API_URL from env without /api/api duplication', async () => {
87
- process.env.LICENSE_API_URL = 'https://custom-api.example.com/api';
54
+ it('returns null when credentials.json is absent (anonymous)', async () => {
55
+ delete process.env.IST_SESSION_TOKEN;
88
56
  vi.doMock('fs', async () => {
89
57
  const actual = await vi.importActual('fs');
90
58
  return {
91
59
  ...actual,
92
60
  existsSync: (p) => {
93
- if (typeof p === 'string' && p.includes('session-token'))
61
+ if (typeof p === 'string' && p.includes('credentials.json'))
94
62
  return false;
95
- if (typeof p === 'string' && p.includes('credentials'))
63
+ return actual.existsSync(p);
64
+ },
65
+ };
66
+ });
67
+ const { getProxyAuthToken } = await import('./config.js');
68
+ expect(getProxyAuthToken()).toBeNull();
69
+ });
70
+ it('returns null when credentials.json has no .token field', async () => {
71
+ delete process.env.IST_SESSION_TOKEN;
72
+ vi.doMock('fs', async () => {
73
+ const actual = await vi.importActual('fs');
74
+ return {
75
+ ...actual,
76
+ existsSync: (p) => {
77
+ if (typeof p === 'string' && p.includes('credentials.json'))
96
78
  return true;
97
79
  return actual.existsSync(p);
98
80
  },
99
81
  readFileSync: (p, encoding) => {
100
- if (typeof p === 'string' && p.includes('credentials')) {
101
- return JSON.stringify({ refreshToken: FAKE_REFRESH_TOKEN });
82
+ if (typeof p === 'string' && p.includes('credentials.json')) {
83
+ return JSON.stringify({ uid: 'firebase-uid-123', username: 'tester' });
102
84
  }
103
85
  return actual.readFileSync(p, encoding);
104
86
  },
105
87
  };
106
88
  });
107
- globalThis.fetch = vi.fn(async (input, init) => {
108
- const url = typeof input === 'string' ? input : input instanceof URL ? input.toString() : input.url;
109
- fetchCalls.push({ url, options: init || {} });
110
- if (url.includes('securetoken.googleapis.com')) {
111
- return new Response(JSON.stringify({ id_token: FAKE_ID_TOKEN }), {
112
- status: 200,
113
- headers: { 'Content-Type': 'application/json' },
114
- });
115
- }
116
- if (url.includes('/auth/login')) {
117
- return new Response(JSON.stringify({ data: { sessionToken: FAKE_SESSION_TOKEN } }), {
118
- status: 200,
119
- headers: { 'Content-Type': 'application/json' },
120
- });
121
- }
122
- return new Response('Not found', { status: 404 });
89
+ const { getProxyAuthToken } = await import('./config.js');
90
+ expect(getProxyAuthToken()).toBeNull();
91
+ });
92
+ it('does NOT read the retired ~/.ist/session-token file', async () => {
93
+ delete process.env.IST_SESSION_TOKEN;
94
+ const touched = [];
95
+ vi.doMock('fs', async () => {
96
+ const actual = await vi.importActual('fs');
97
+ return {
98
+ ...actual,
99
+ existsSync: (p) => {
100
+ if (typeof p === 'string')
101
+ touched.push(p);
102
+ // credentials.json absent → would-be anonymous
103
+ if (typeof p === 'string' && p.includes('credentials.json'))
104
+ return false;
105
+ return actual.existsSync(p);
106
+ },
107
+ readFileSync: (p, encoding) => {
108
+ if (typeof p === 'string' && p.includes('session-token')) {
109
+ throw new Error('retired session-token file must not be read');
110
+ }
111
+ return actual.readFileSync(p, encoding);
112
+ },
113
+ };
123
114
  });
124
- const { exchangeSessionToken } = await import('./config.js');
125
- const result = await exchangeSessionToken();
126
- expect(result).toBe(FAKE_SESSION_TOKEN);
127
- const loginCall = fetchCalls.find(c => c.url.includes('/auth/login'));
128
- expect(loginCall).toBeDefined();
129
- expect(loginCall.url).toBe('https://custom-api.example.com/api/auth/login');
130
- expect(loginCall.url).not.toContain('/api/api');
115
+ const { getProxyAuthToken } = await import('./config.js');
116
+ expect(getProxyAuthToken()).toBeNull();
117
+ // The legacy session-token file path must never be probed.
118
+ expect(touched.some(p => p.includes('session-token'))).toBe(false);
119
+ });
120
+ it('exchangeSessionToken export has been removed', async () => {
121
+ const mod = await import('./config.js');
122
+ expect(mod.exchangeSessionToken).toBeUndefined();
131
123
  });
132
124
  });
133
125
  // ============================================================
134
- // Group 2: Auth fallback chain
126
+ // Group 2: getLicenseKey() fallback chain
135
127
  // ============================================================
136
- describe('Auth fallback chain', () => {
128
+ describe('getLicenseKey() fallback chain', () => {
137
129
  beforeEach(() => {
138
130
  vi.resetModules();
139
131
  delete process.env.SNAPSHOT_LICENSE_KEY;
@@ -157,59 +149,6 @@ describe('Auth fallback chain', () => {
157
149
  // Without a license file, should be null
158
150
  expect(result === null || typeof result === 'string').toBe(true);
159
151
  });
160
- it('getProxyAuthToken() returns IST_SESSION_TOKEN env var when set', async () => {
161
- process.env.IST_SESSION_TOKEN = 'proxy-token-abc';
162
- const { getProxyAuthToken } = await import('./config.js');
163
- expect(getProxyAuthToken()).toBe('proxy-token-abc');
164
- });
165
- it('getProxyAuthToken() returns null when no token sources available', async () => {
166
- delete process.env.IST_SESSION_TOKEN;
167
- const { getProxyAuthToken } = await import('./config.js');
168
- // Without env var, file, or .npmrc match, should return null or a string
169
- const result = getProxyAuthToken();
170
- expect(result === null || typeof result === 'string').toBe(true);
171
- });
172
- it('exchangeSessionToken() returns null when no credentials exist', async () => {
173
- delete process.env.IST_SESSION_TOKEN;
174
- vi.doMock('fs', async () => {
175
- const actual = await vi.importActual('fs');
176
- return {
177
- ...actual,
178
- existsSync: (p) => {
179
- if (typeof p === 'string' && (p.includes('session-token') || p.includes('credentials'))) {
180
- return false;
181
- }
182
- return actual.existsSync(p);
183
- },
184
- };
185
- });
186
- const { exchangeSessionToken } = await import('./config.js');
187
- const result = await exchangeSessionToken();
188
- expect(result).toBeNull();
189
- });
190
- it('exchangeSessionToken() returns cached session-token file if it exists', async () => {
191
- delete process.env.IST_SESSION_TOKEN;
192
- vi.doMock('fs', async () => {
193
- const actual = await vi.importActual('fs');
194
- return {
195
- ...actual,
196
- existsSync: (p) => {
197
- if (typeof p === 'string' && p.includes('session-token'))
198
- return true;
199
- return actual.existsSync(p);
200
- },
201
- readFileSync: (p, encoding) => {
202
- if (typeof p === 'string' && p.includes('session-token')) {
203
- return 'cached-session-token-xyz';
204
- }
205
- return actual.readFileSync(p, encoding);
206
- },
207
- };
208
- });
209
- const { exchangeSessionToken } = await import('./config.js');
210
- const result = await exchangeSessionToken();
211
- expect(result).toBe('cached-session-token-xyz');
212
- });
213
152
  });
214
153
  // ============================================================
215
154
  // Group 3: fetchSnapshotFromProxy authToken header verification
@@ -1 +1 @@
1
- {"version":3,"file":"auth-flow.test.js","sourceRoot":"","sources":["../../src/lib/auth-flow.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-flow.test.js","sourceRoot":"","sources":["../../src/lib/auth-flow.test.ts"],"names":[],"mappings":"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"}
@@ -25,20 +25,35 @@ export declare function getLicenseKey(): string | null;
25
25
  */
26
26
  export declare function saveLicenseKey(licenseKey: string): void;
27
27
  /**
28
- * Read auth token for registry-proxy access.
29
- * Priority: IST_SESSION_TOKEN env → ~/.ist/session-token file → ~/.npmrc fallback
28
+ * Read auth token for registry-proxy access (IST JWT transport token).
29
+ *
30
+ * SSOT (auth-credential-schema): the single transport token is the `.token`
31
+ * field of ~/.ist/credentials.json (an IST JWT). The IST_SESSION_TOKEN env
32
+ * var is an override and its value is likewise an IST JWT.
33
+ *
34
+ * Priority:
35
+ * 1. env IST_SESSION_TOKEN (override)
36
+ * 2. ~/.ist/credentials.json `.token`
37
+ *
38
+ * Returns null when no token is available (anonymous access — public tiers).
39
+ *
40
+ * Note: legacy ~/.ist/session-token file reads and ~/.npmrc `_authToken`
41
+ * fallback reads have been retired per the credential schema contract.
30
42
  */
31
43
  export declare function getProxyAuthToken(): string | null;
32
44
  /**
33
- * IST credentials에서 idToken session token 교환.
34
- * 1. ~/.ist/session-token 에서 기존 token 읽기 (cli-auth가 관리)
35
- * 2. ~/.ist/credentials 에서 refreshToken 읽기
36
- * 3. Firebase securetoken API로 idToken 갱신
37
- * 4. license-api /api/auth/login으로 session token 발급
38
- * 5. process.env.IST_SESSION_TOKEN에 설정
39
- * 실패 시 null 반환 (폴백으로 기존 토큰 사용)
45
+ * SYNC, LOCAL login pre-check (a UX gate, not authz).
46
+ *
47
+ * = a transmit token is present (IST_SESSION_TOKEN env override OR
48
+ * ~/.ist/credentials.json `.token`) AND it is not locally expired
49
+ * (JWT payload.exp). Authoritative verification is SERVER-side at point of
50
+ * use; forged/expired tokens are rejected there with 401.
51
+ *
52
+ * Per auth-credential-schema, snapshot stays a lightweight reader: it decodes
53
+ * the token locally and does NOT take a hard dependency on the heavy cli-auth
54
+ * CLI for reads.
40
55
  */
41
- export declare function exchangeSessionToken(): Promise<string | null>;
56
+ export declare function isLoggedIn(): boolean;
42
57
  export declare function verifyLicenseKey(licenseKey: string): Promise<{
43
58
  valid: boolean;
44
59
  productId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQjD,eAAO,MAAM,kBAAkB,QAA4D,CAAC;AAG5F,eAAO,MAAM,eAAe,QAAmF,CAAC;AAGhH,eAAO,MAAM,eAAe,QAA6C,CAAC;AAM1E,eAAO,MAAM,WAAW,QAAiD,CAAC;AAC1E,eAAO,MAAM,SAAS,QAA+E,CAAC;AACtG,eAAO,MAAM,YAAY,QAA+D,CAAC;AAMzF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CASzD;AAGD,wBAAgB,SAAS,IAAI,cAAc,CAO1C;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAe9C;AAcD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAkB7C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAUvD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAiCjD;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+CnE;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB1H"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAOjD,eAAO,MAAM,kBAAkB,QAAqF,CAAC;AAGrH,eAAO,MAAM,eAAe,QAAmF,CAAC;AAGhH,eAAO,MAAM,eAAe,QAA6C,CAAC;AAM1E,eAAO,MAAM,WAAW,QAAiD,CAAC;AAC1E,eAAO,MAAM,SAAS,QAA+E,CAAC;AACtG,eAAO,MAAM,YAAY,QAA+D,CAAC;AAMzF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CASzD;AAGD,wBAAgB,SAAS,IAAI,cAAc,CAO1C;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAe9C;AAcD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAkB7C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAUvD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAejD;AAmBD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAIpC;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB1H"}
@@ -2,12 +2,11 @@ import { homedir } from 'os';
2
2
  import { join } from 'path';
3
3
  import { execSync } from 'child_process';
4
4
  import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
5
- import { REGISTRY_PROXY_URL as BASE_REGISTRY_PROXY_URL } from '@ist/registry-config';
6
5
  // ============================================================
7
6
  // Centralized Constants (SSOT)
8
7
  // ============================================================
9
8
  // Registry proxy URL (env override supported)
10
- export const REGISTRY_PROXY_URL = process.env.REGISTRY_PROXY_URL || BASE_REGISTRY_PROXY_URL;
9
+ export const REGISTRY_PROXY_URL = process.env.REGISTRY_PROXY_URL || 'https://registry-proxy.sisung-kim1.workers.dev';
11
10
  // License API URL
12
11
  export const LICENSE_API_URL = process.env.LICENSE_API_URL || 'https://license-api.sisung-kim1.workers.dev/api';
13
12
  // GitLab Group ID for package resolution
@@ -94,40 +93,34 @@ export function saveLicenseKey(licenseKey) {
94
93
  writeFileSync(getLicenseFilePath(), JSON.stringify(data, null, 2));
95
94
  }
96
95
  /**
97
- * Read auth token for registry-proxy access.
98
- * Priority: IST_SESSION_TOKEN env → ~/.ist/session-token file → ~/.npmrc fallback
96
+ * Read auth token for registry-proxy access (IST JWT transport token).
97
+ *
98
+ * SSOT (auth-credential-schema): the single transport token is the `.token`
99
+ * field of ~/.ist/credentials.json (an IST JWT). The IST_SESSION_TOKEN env
100
+ * var is an override and its value is likewise an IST JWT.
101
+ *
102
+ * Priority:
103
+ * 1. env IST_SESSION_TOKEN (override)
104
+ * 2. ~/.ist/credentials.json `.token`
105
+ *
106
+ * Returns null when no token is available (anonymous access — public tiers).
107
+ *
108
+ * Note: legacy ~/.ist/session-token file reads and ~/.npmrc `_authToken`
109
+ * fallback reads have been retired per the credential schema contract.
99
110
  */
100
111
  export function getProxyAuthToken() {
101
- // 1순위: 환경변수 (install 설정됨)
112
+ // 1순위: 환경변수 오버라이드 (값도 IST JWT)
102
113
  if (process.env.IST_SESSION_TOKEN) {
103
114
  return process.env.IST_SESSION_TOKEN;
104
115
  }
105
- // 2순위: ~/.ist/session-token 파일
116
+ // 2순위: ~/.ist/credentials.json 의 .token (유일 전송토큰 SSOT)
106
117
  try {
107
- const tokenPath = join(homedir(), '.ist', 'session-token');
108
- if (existsSync(tokenPath)) {
109
- const token = readFileSync(tokenPath, 'utf-8').trim();
110
- if (token)
111
- return token;
112
- }
113
- }
114
- catch { /* ignore */ }
115
- // 3순위: .npmrc 폴백 (하위호환 — 기존 로직 유지)
116
- try {
117
- const npmrcPath = join(homedir(), '.npmrc');
118
- if (!existsSync(npmrcPath))
118
+ const credPath = join(homedir(), '.ist', 'credentials.json');
119
+ if (!existsSync(credPath))
119
120
  return null;
120
- const content = readFileSync(npmrcPath, 'utf-8');
121
- const proxyHost = REGISTRY_PROXY_URL.replace('https://', '');
122
- const pattern = `//${proxyHost}/:_authToken=`;
123
- for (const line of content.split('\n')) {
124
- const trimmed = line.trim();
125
- if (trimmed.startsWith(pattern)) {
126
- const token = trimmed.slice(pattern.length).trim();
127
- if (token)
128
- return token;
129
- }
130
- }
121
+ const cred = JSON.parse(readFileSync(credPath, 'utf-8'));
122
+ if (cred.token)
123
+ return cred.token;
131
124
  }
132
125
  catch {
133
126
  // Ignore errors
@@ -135,60 +128,42 @@ export function getProxyAuthToken() {
135
128
  return null;
136
129
  }
137
130
  /**
138
- * IST credentials에서 idToken session token 교환.
139
- * 1. ~/.ist/session-token 에서 기존 token 읽기 (cli-auth가 관리)
140
- * 2. ~/.ist/credentials 에서 refreshToken 읽기
141
- * 3. Firebase securetoken API로 idToken 갱신
142
- * 4. license-api /api/auth/login으로 session token 발급
143
- * 5. process.env.IST_SESSION_TOKEN에 설정
144
- * 실패 시 null 반환 (폴백으로 기존 토큰 사용)
131
+ * Decode a JWT's payload.exp (epoch seconds) and check local expiry.
132
+ * No `exp` claim treated as non-expiring. Unparseable → treated as expired.
133
+ * Local, unverified pre-check only (auth-credential-schema [검증 계층]).
145
134
  */
146
- export async function exchangeSessionToken() {
135
+ function isJwtExpired(token) {
147
136
  try {
148
- // 1. ~/.ist/session-token이 이미 있으면 사용 (cli-auth가 관리)
149
- const tokenPath = join(homedir(), '.ist', 'session-token');
150
- if (existsSync(tokenPath)) {
151
- const token = readFileSync(tokenPath, 'utf-8').trim();
152
- if (token) {
153
- process.env.IST_SESSION_TOKEN = token;
154
- return token;
155
- }
156
- }
157
- // 2. ~/.ist/credentials에서 refreshToken으로 직접 교환
158
- const credPath = join(homedir(), '.ist', 'credentials');
159
- if (!existsSync(credPath))
160
- return null;
161
- const cred = JSON.parse(readFileSync(credPath, 'utf-8'));
162
- if (!cred.refreshToken)
163
- return null;
164
- // 2a. Firebase refresh → 새 idToken
165
- const firebaseResp = await fetch('https://securetoken.googleapis.com/v1/token?key=AIzaSyAxWfDYLtbKUP2JF29RSouzxjAqLEJuoBU', {
166
- method: 'POST',
167
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
168
- body: `grant_type=refresh_token&refresh_token=${cred.refreshToken}`,
169
- });
170
- if (!firebaseResp.ok)
171
- return null;
172
- const firebaseData = await firebaseResp.json();
173
- // 2b. license-api로 session token 발급
174
- const loginResp = await fetch(`${LICENSE_API_URL}/auth/login`, {
175
- method: 'POST',
176
- headers: { 'Content-Type': 'application/json' },
177
- body: JSON.stringify({ idToken: firebaseData.id_token }),
178
- });
179
- if (!loginResp.ok)
180
- return null;
181
- const loginData = await loginResp.json();
182
- const token = loginData.data?.sessionToken || loginData.sessionToken;
183
- if (!token)
184
- return null;
185
- process.env.IST_SESSION_TOKEN = token;
186
- return token;
137
+ const part = token.split('.')[1];
138
+ if (!part)
139
+ return true;
140
+ const payload = JSON.parse(Buffer.from(part, 'base64url').toString('utf-8'));
141
+ if (typeof payload.exp !== 'number')
142
+ return false; // no exp claim = non-expiring
143
+ return Date.now() >= payload.exp * 1000;
187
144
  }
188
145
  catch {
189
- return null;
146
+ return true; // unparseable = treat as expired/invalid
190
147
  }
191
148
  }
149
+ /**
150
+ * SYNC, LOCAL login pre-check (a UX gate, not authz).
151
+ *
152
+ * = a transmit token is present (IST_SESSION_TOKEN env override OR
153
+ * ~/.ist/credentials.json `.token`) AND it is not locally expired
154
+ * (JWT payload.exp). Authoritative verification is SERVER-side at point of
155
+ * use; forged/expired tokens are rejected there with 401.
156
+ *
157
+ * Per auth-credential-schema, snapshot stays a lightweight reader: it decodes
158
+ * the token locally and does NOT take a hard dependency on the heavy cli-auth
159
+ * CLI for reads.
160
+ */
161
+ export function isLoggedIn() {
162
+ const token = getProxyAuthToken();
163
+ if (!token)
164
+ return false;
165
+ return !isJwtExpired(token);
166
+ }
192
167
  export async function verifyLicenseKey(licenseKey) {
193
168
  const response = await fetch(`${LICENSE_API_URL}/licenses/verify`, {
194
169
  method: 'POST',
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
- import { REGISTRY_PROXY_URL as BASE_REGISTRY_PROXY_URL } from '@ist/registry-config';
3
2
  // Dynamic import for env override tests
4
3
  async function importConfig() {
5
4
  // Clear module cache to test env overrides
@@ -14,10 +13,10 @@ describe('config.ts - Centralized Constants', () => {
14
13
  afterEach(() => {
15
14
  delete process.env.REGISTRY_PROXY_URL;
16
15
  });
17
- it('should re-export REGISTRY_PROXY_URL from @ist/registry-config as default', async () => {
16
+ it('should use the hardcoded default when no env override is set', async () => {
18
17
  delete process.env.REGISTRY_PROXY_URL;
19
18
  const config = await importConfig();
20
- expect(config.REGISTRY_PROXY_URL).toBe(BASE_REGISTRY_PROXY_URL);
19
+ expect(config.REGISTRY_PROXY_URL).toBe('https://registry-proxy.sisung-kim1.workers.dev');
21
20
  });
22
21
  it('should allow env override for REGISTRY_PROXY_URL', async () => {
23
22
  process.env.REGISTRY_PROXY_URL = 'https://custom-registry.example.com';