opensoma 0.3.0 → 0.5.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 (89) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/src/client.d.ts +3 -3
  3. package/dist/src/client.d.ts.map +1 -1
  4. package/dist/src/client.js +37 -5
  5. package/dist/src/client.js.map +1 -1
  6. package/dist/src/commands/auth.d.ts +1 -1
  7. package/dist/src/commands/auth.d.ts.map +1 -1
  8. package/dist/src/commands/auth.js +94 -52
  9. package/dist/src/commands/auth.js.map +1 -1
  10. package/dist/src/commands/mentoring.d.ts.map +1 -1
  11. package/dist/src/commands/mentoring.js +26 -20
  12. package/dist/src/commands/mentoring.js.map +1 -1
  13. package/dist/src/commands/room.d.ts.map +1 -1
  14. package/dist/src/commands/room.js +25 -2
  15. package/dist/src/commands/room.js.map +1 -1
  16. package/dist/src/constants.d.ts +52 -9
  17. package/dist/src/constants.d.ts.map +1 -1
  18. package/dist/src/constants.js +65 -9
  19. package/dist/src/constants.js.map +1 -1
  20. package/dist/src/formatters.d.ts.map +1 -1
  21. package/dist/src/formatters.js +79 -39
  22. package/dist/src/formatters.js.map +1 -1
  23. package/dist/src/http.d.ts +3 -0
  24. package/dist/src/http.d.ts.map +1 -1
  25. package/dist/src/http.js +42 -1
  26. package/dist/src/http.js.map +1 -1
  27. package/dist/src/index.d.ts +3 -0
  28. package/dist/src/index.d.ts.map +1 -1
  29. package/dist/src/index.js +2 -0
  30. package/dist/src/index.js.map +1 -1
  31. package/dist/src/shared/utils/html.d.ts +3 -0
  32. package/dist/src/shared/utils/html.d.ts.map +1 -0
  33. package/dist/src/shared/utils/html.js +12 -0
  34. package/dist/src/shared/utils/html.js.map +1 -0
  35. package/dist/src/shared/utils/swmaestro.d.ts +2 -0
  36. package/dist/src/shared/utils/swmaestro.d.ts.map +1 -1
  37. package/dist/src/shared/utils/swmaestro.js +28 -5
  38. package/dist/src/shared/utils/swmaestro.js.map +1 -1
  39. package/dist/src/shared/utils/toz.d.ts +23 -0
  40. package/dist/src/shared/utils/toz.d.ts.map +1 -0
  41. package/dist/src/shared/utils/toz.js +72 -0
  42. package/dist/src/shared/utils/toz.js.map +1 -0
  43. package/dist/src/token-extractor.d.ts +9 -1
  44. package/dist/src/token-extractor.d.ts.map +1 -1
  45. package/dist/src/token-extractor.js +54 -10
  46. package/dist/src/token-extractor.js.map +1 -1
  47. package/dist/src/toz-formatters.d.ts +9 -0
  48. package/dist/src/toz-formatters.d.ts.map +1 -0
  49. package/dist/src/toz-formatters.js +151 -0
  50. package/dist/src/toz-formatters.js.map +1 -0
  51. package/dist/src/toz-http.d.ts +27 -0
  52. package/dist/src/toz-http.d.ts.map +1 -0
  53. package/dist/src/toz-http.js +154 -0
  54. package/dist/src/toz-http.js.map +1 -0
  55. package/dist/src/types.d.ts +88 -0
  56. package/dist/src/types.d.ts.map +1 -1
  57. package/dist/src/types.js +65 -1
  58. package/dist/src/types.js.map +1 -1
  59. package/package.json +1 -1
  60. package/src/__fixtures__/toz/toz_all_branches.json +211 -0
  61. package/src/__fixtures__/toz/toz_booking.html +2190 -0
  62. package/src/__fixtures__/toz/toz_boothes.json +59 -0
  63. package/src/__fixtures__/toz/toz_duration.json +25 -0
  64. package/src/__fixtures__/toz/toz_mypage_response.html +388 -0
  65. package/src/__fixtures__/toz/toz_page.html +211 -0
  66. package/src/client.test.ts +63 -16
  67. package/src/client.ts +43 -6
  68. package/src/commands/auth.ts +107 -50
  69. package/src/commands/mentoring.ts +34 -26
  70. package/src/commands/room.ts +31 -3
  71. package/src/constants.ts +74 -9
  72. package/src/formatters.test.ts +6 -2
  73. package/src/formatters.ts +92 -45
  74. package/src/http.test.ts +215 -0
  75. package/src/http.ts +45 -1
  76. package/src/index.ts +3 -0
  77. package/src/shared/utils/html.ts +12 -0
  78. package/src/shared/utils/swmaestro.test.ts +44 -0
  79. package/src/shared/utils/swmaestro.ts +30 -5
  80. package/src/shared/utils/toz.test.ts +133 -0
  81. package/src/shared/utils/toz.ts +100 -0
  82. package/src/token-extractor.test.ts +30 -5
  83. package/src/token-extractor.ts +65 -13
  84. package/src/toz-formatters.test.ts +197 -0
  85. package/src/toz-formatters.ts +211 -0
  86. package/src/toz-http.test.ts +157 -0
  87. package/src/toz-http.ts +188 -0
  88. package/src/types.test.ts +4 -1
  89. package/src/types.ts +81 -1
@@ -5,7 +5,7 @@ import { createRequire } from 'node:module';
5
5
  import { homedir, tmpdir } from 'node:os';
6
6
  import { basename, dirname, join } from 'node:path';
7
7
  const require = createRequire(import.meta.url);
8
- const COOKIE_QUERY = "SELECT encrypted_value, last_access_utc, value FROM cookies WHERE host_key LIKE '%swmaestro.ai' AND name = 'JSESSIONID' ORDER BY last_access_utc DESC LIMIT 1";
8
+ const COOKIE_QUERY = "SELECT encrypted_value, last_access_utc, value FROM cookies WHERE (host_key LIKE '%swmaestro.ai' OR host_key LIKE '%opensoma.dev') AND name = 'JSESSIONID' ORDER BY last_access_utc DESC LIMIT 1";
9
9
  const CHROMIUM_SALT = 'saltysalt';
10
10
  const CHROMIUM_IV = Buffer.alloc(16, 0x20);
11
11
  const PROFILE_DIR_PATTERN = /^Profile\s+\d+$/;
@@ -89,9 +89,24 @@ function queryCookieDb(dbPath) {
89
89
  export class TokenExtractor {
90
90
  platform;
91
91
  homeDirectory;
92
- constructor(platform = process.platform, homeDirectory = homedir()) {
93
- this.platform = platform;
94
- this.homeDirectory = homeDirectory;
92
+ debugEnabled;
93
+ constructor(platformOrOptions, homeDirectory, debug) {
94
+ if (typeof platformOrOptions === 'object' && platformOrOptions !== null) {
95
+ this.platform = platformOrOptions.platform ?? process.platform;
96
+ this.homeDirectory = platformOrOptions.homeDirectory ?? homedir();
97
+ this.debugEnabled = platformOrOptions.debug ?? false;
98
+ }
99
+ else {
100
+ this.platform = platformOrOptions ?? process.platform;
101
+ this.homeDirectory = homeDirectory ?? homedir();
102
+ this.debugEnabled = debug ?? false;
103
+ }
104
+ }
105
+ log(...args) {
106
+ if (!this.debugEnabled)
107
+ return;
108
+ const message = args.map((a) => (typeof a === 'string' ? a : JSON.stringify(a))).join(' ');
109
+ process.stderr.write(`[extract] ${message}\n`);
95
110
  }
96
111
  async extract() {
97
112
  const candidates = await this.extractCandidates();
@@ -103,22 +118,29 @@ export class TokenExtractor {
103
118
  }
104
119
  async extractCandidates() {
105
120
  const candidates = new Map();
106
- for (const databasePath of this.findCookieDatabases()) {
121
+ const cookieDatabases = this.findCookieDatabases();
122
+ this.log(`Found ${cookieDatabases.length} cookie database(s)`);
123
+ for (const databasePath of cookieDatabases) {
107
124
  const browser = this.getBrowserByPath(databasePath);
108
125
  if (!browser) {
126
+ this.log(`Skipping ${databasePath} (no matching browser config)`);
109
127
  continue;
110
128
  }
111
129
  const profile = basename(dirname(databasePath));
130
+ this.log(`Processing ${browser.name} / ${profile}`);
112
131
  const tempDirectory = mkdtempSync(join(tmpdir(), 'opensoma-cookie-db-'));
113
132
  const tempDatabasePath = join(tempDirectory, 'Cookies');
114
133
  try {
115
134
  copySqliteDatabase(databasePath, tempDatabasePath);
135
+ this.log(` Copied DB to ${tempDatabasePath}`);
116
136
  const row = queryCookieDb(tempDatabasePath);
117
137
  if (!row) {
138
+ this.log(' No JSESSIONID cookie found');
118
139
  continue;
119
140
  }
120
141
  const plaintextValue = normalizeCookieText(row.value);
121
142
  if (plaintextValue) {
143
+ this.log(` Found plaintext cookie (${plaintextValue.length} chars)`);
122
144
  this.addCandidate(candidates, {
123
145
  browser: browser.name,
124
146
  lastAccessUtc: this.normalizeLastAccessUtc(row.last_access_utc),
@@ -129,10 +151,13 @@ export class TokenExtractor {
129
151
  }
130
152
  const encryptedValue = normalizeCookieBytes(row.encrypted_value);
131
153
  if (!encryptedValue || encryptedValue.length === 0) {
154
+ this.log(' No plaintext or encrypted value');
132
155
  continue;
133
156
  }
157
+ this.log(` Decrypting encrypted cookie (${encryptedValue.length} bytes)...`);
134
158
  const decryptedValue = await this.decryptCookie(encryptedValue, browser.name);
135
159
  if (decryptedValue) {
160
+ this.log(` Decrypted successfully (${decryptedValue.length} chars)`);
136
161
  this.addCandidate(candidates, {
137
162
  browser: browser.name,
138
163
  lastAccessUtc: this.normalizeLastAccessUtc(row.last_access_utc),
@@ -140,29 +165,42 @@ export class TokenExtractor {
140
165
  sessionCookie: decryptedValue,
141
166
  });
142
167
  }
168
+ else {
169
+ this.log(' Decryption returned empty value');
170
+ }
143
171
  }
144
- catch {
172
+ catch (error) {
173
+ this.log(` Error: ${error instanceof Error ? error.message : String(error)}`);
145
174
  }
146
175
  finally {
147
176
  rmSync(tempDirectory, { recursive: true, force: true });
148
177
  }
149
178
  }
179
+ this.log(`Total unique candidates: ${candidates.size}`);
150
180
  return [...candidates.values()].sort((left, right) => right.lastAccessUtc - left.lastAccessUtc);
151
181
  }
152
182
  findCookieDatabases() {
153
- return BROWSERS.flatMap((browser) => this.findBrowserCookieDatabases(browser));
183
+ const results = BROWSERS.flatMap((browser) => this.findBrowserCookieDatabases(browser));
184
+ if (results.length === 0) {
185
+ this.log('No cookie databases found. Searched browsers:', BROWSERS.map((b) => b.name).join(', '));
186
+ }
187
+ return results;
154
188
  }
155
189
  async decryptCookie(encryptedValue, browserName) {
156
190
  if (encryptedValue.length === 0) {
157
191
  return '';
158
192
  }
159
193
  if (this.platform === 'linux') {
194
+ this.log(' Using Linux PBKDF2 decryption');
160
195
  return this.decryptChromiumValue(encryptedValue, pbkdf2Sync('peanuts', CHROMIUM_SALT, 1, 16, 'sha1'));
161
196
  }
162
197
  if (this.platform === 'darwin') {
198
+ this.log(` Fetching macOS Keychain key for ${browserName}...`);
163
199
  const key = await this.getMacOSEncryptionKey(browserName);
200
+ this.log(' Keychain key obtained');
164
201
  return this.decryptChromiumValue(encryptedValue, key);
165
202
  }
203
+ this.log(` Unsupported platform for decryption: ${this.platform}`);
166
204
  return '';
167
205
  }
168
206
  async getMacOSEncryptionKey(browserName) {
@@ -170,7 +208,9 @@ export class TokenExtractor {
170
208
  if (!browser) {
171
209
  throw new Error(`Unsupported browser: ${browserName}`);
172
210
  }
173
- const password = execSync(`security find-generic-password -s ${JSON.stringify(browser.keychainService)} -a ${JSON.stringify(browser.keychainAccount)} -w`, { encoding: 'utf8' }).trimEnd();
211
+ const command = `security find-generic-password -s ${JSON.stringify(browser.keychainService)} -a ${JSON.stringify(browser.keychainAccount)} -w`;
212
+ this.log(` Keychain command: ${command}`);
213
+ const password = execSync(command, { encoding: 'utf8' }).trimEnd();
174
214
  return pbkdf2Sync(password, CHROMIUM_SALT, 1003, 16, 'sha1');
175
215
  }
176
216
  decryptChromiumValue(encryptedValue, key) {
@@ -199,13 +239,17 @@ export class TokenExtractor {
199
239
  findBrowserCookieDatabases(browser) {
200
240
  const browserRoot = this.getBrowserRoot(browser);
201
241
  if (!browserRoot || !existsSync(browserRoot)) {
242
+ this.log(`${browser.name}: not found at ${browserRoot ?? '(unsupported platform)'}`);
202
243
  return [];
203
244
  }
204
- return readdirSync(browserRoot, { withFileTypes: true })
245
+ const profiles = readdirSync(browserRoot, { withFileTypes: true })
205
246
  .filter((entry) => entry.isDirectory() && this.isSupportedProfileDirectory(entry.name))
206
- .sort((left, right) => left.name.localeCompare(right.name))
247
+ .sort((left, right) => left.name.localeCompare(right.name));
248
+ const databases = profiles
207
249
  .map((entry) => join(browserRoot, entry.name, 'Cookies'))
208
250
  .filter((databasePath) => existsSync(databasePath));
251
+ this.log(`${browser.name}: ${profiles.length} profile(s), ${databases.length} cookie DB(s)`);
252
+ return databases;
209
253
  }
210
254
  getBrowserRoot(browser) {
211
255
  if (this.platform === 'darwin') {
@@ -1 +1 @@
1
- {"version":3,"file":"token-extractor.js","sourceRoot":"","sources":["../../src/token-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-extractor.js","sourceRoot":"","sources":["../../src/token-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type TozBooth, type TozBranch, type TozDuration, type TozMeeting, type TozReservation, type TozReserved } from './types.js';
2
+ export declare function parseBookingPageBranches(html: string): TozBranch[];
3
+ export declare function parseBookingPageMeetings(html: string): TozMeeting[];
4
+ export declare function parseTozDurations(json: unknown): TozDuration[];
5
+ export declare function parseTozBoothes(json: unknown): TozBooth[];
6
+ export declare function parseTozReserved(json: unknown): TozReserved;
7
+ export declare function isReservationConfirmSuccess(resultMsg: string): boolean;
8
+ export declare function parseMypageReservations(html: string): TozReservation[];
9
+ //# sourceMappingURL=toz-formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toz-formatters.d.ts","sourceRoot":"","sources":["../../src/toz-formatters.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,SAAS,EAEd,KAAK,WAAW,EAEhB,KAAK,UAAU,EAEf,KAAK,cAAc,EAEnB,KAAK,WAAW,EAEjB,MAAM,SAAS,CAAA;AA8BhB,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAmBlE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAmBnE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,EAAE,CAkB9D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,CA0BzD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAa3D;AAID,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAmCtE"}
@@ -0,0 +1,151 @@
1
+ import { parse } from 'node-html-parser';
2
+ import { decodeHtmlEntities } from './shared/utils/html.js';
3
+ import { parseDurationKey } from './shared/utils/toz.js';
4
+ import { TozBoothSchema, TozBranchSchema, TozDurationSchema, TozMeetingSchema, TozReservationSchema, TozReservedSchema, } from './types.js';
5
+ export function parseBookingPageBranches(html) {
6
+ const root = parse(html);
7
+ const inputs = root.querySelectorAll('input[name="branch_id"]');
8
+ const branches = [];
9
+ for (const input of inputs) {
10
+ const value = input.getAttribute('value');
11
+ if (!value)
12
+ continue;
13
+ const id = Number.parseInt(value, 10);
14
+ if (!Number.isFinite(id))
15
+ continue;
16
+ const label = input.parentNode;
17
+ const name = label ? cleanText(label.text) : '';
18
+ if (!name)
19
+ continue;
20
+ branches.push(TozBranchSchema.parse({ id, name }));
21
+ }
22
+ return branches;
23
+ }
24
+ export function parseBookingPageMeetings(html) {
25
+ const root = parse(html);
26
+ const select = root.querySelector('select[name="meeting_id"]');
27
+ if (!select)
28
+ return [];
29
+ const meetings = [];
30
+ for (const option of select.querySelectorAll('option')) {
31
+ const value = option.getAttribute('value');
32
+ if (!value || value === '새모임')
33
+ continue;
34
+ const id = Number.parseInt(value, 10);
35
+ if (!Number.isFinite(id))
36
+ continue;
37
+ const name = cleanText(option.text);
38
+ if (!name)
39
+ continue;
40
+ meetings.push(TozMeetingSchema.parse({ id, name }));
41
+ }
42
+ return meetings;
43
+ }
44
+ export function parseTozDurations(json) {
45
+ if (!Array.isArray(json))
46
+ return [];
47
+ const seen = new Set();
48
+ const durations = [];
49
+ for (const raw of json) {
50
+ if (!raw?.key || !raw?.value || seen.has(raw.key))
51
+ continue;
52
+ seen.add(raw.key);
53
+ durations.push(TozDurationSchema.parse({
54
+ key: raw.key,
55
+ value: raw.value,
56
+ minutes: parseDurationKey(raw.key),
57
+ }));
58
+ }
59
+ return durations;
60
+ }
61
+ export function parseTozBoothes(json) {
62
+ if (!Array.isArray(json))
63
+ return [];
64
+ const items = json;
65
+ if (items.length === 0)
66
+ return [];
67
+ const first = items[0];
68
+ if (first?.resultMsg && first.resultMsg !== 'SUCCESS') {
69
+ throw new Error(first.resultMsg);
70
+ }
71
+ return items
72
+ .filter((raw) => raw.id !== undefined && raw.id !== null)
73
+ .map((raw) => TozBoothSchema.parse({
74
+ id: raw.id,
75
+ name: raw.name ?? '',
76
+ branchName: raw.branchName ?? '',
77
+ branchTel: raw.branchTel ?? '',
78
+ minUseUserCount: raw.minUseUserCount ?? 0,
79
+ enableMaxUserCount: raw.enableMaxUserCount ?? 0,
80
+ boothGroupName: raw.boothGroupName ?? '',
81
+ boothGroupUrl: raw.boothGroupUrl ?? null,
82
+ boothMemoForUser: raw.boothMemoForUser ?? '',
83
+ isLargeBooth: Boolean(raw.isLargeBooth),
84
+ }));
85
+ }
86
+ export function parseTozReserved(json) {
87
+ const raw = json;
88
+ if (!raw || raw.result !== 'SUCCESS' || !raw.resultMsg) {
89
+ throw new Error(raw?.resultMsg || '부스 예약에 실패했습니다.');
90
+ }
91
+ return TozReservedSchema.parse({
92
+ reservationId: raw.resultMsg,
93
+ branchName: raw.branchName ?? '',
94
+ branchTel: raw.branchTel ?? '',
95
+ boothGroupName: raw.boothGroupName ?? '',
96
+ isLargeBooth: Boolean(raw.boothIsLarge),
97
+ });
98
+ }
99
+ const SUCCESS_PATTERNS = ['예약 되었습니다', '대형부스 예약 신청되었습니다'];
100
+ export function isReservationConfirmSuccess(resultMsg) {
101
+ return SUCCESS_PATTERNS.some((p) => resultMsg.includes(p));
102
+ }
103
+ export function parseMypageReservations(html) {
104
+ const root = parse(html);
105
+ // The 실시간예약 table is the second table.reservation in the page.
106
+ // The 상담요청 table (first) lives inside a parent <table style="display:none">.
107
+ const tables = root.querySelectorAll('table.reservation');
108
+ if (tables.length === 0)
109
+ return [];
110
+ const target = tables[tables.length - 1];
111
+ const rows = target.querySelectorAll('tbody tr');
112
+ const reservations = [];
113
+ for (const row of rows) {
114
+ const cells = row.querySelectorAll('td');
115
+ if (cells.length !== 8)
116
+ continue;
117
+ const [no, meetingName, date, time, branch, booth, reservedAt, statusCell] = cells;
118
+ const cancelLink = statusCell.querySelector('a');
119
+ const reservationId = extractReservationIdFromOnclick(cancelLink?.getAttribute('href'));
120
+ reservations.push(TozReservationSchema.parse({
121
+ no: Number.parseInt(cleanText(no.text), 10) || 0,
122
+ reservationId,
123
+ meetingName: cleanText(meetingName.text),
124
+ date: cleanText(date.text),
125
+ ...splitTimeRange(cleanText(time.text)),
126
+ branchName: cleanText(branch.text),
127
+ boothName: cleanText(booth.text),
128
+ reservedAt: cleanText(reservedAt.text),
129
+ status: cleanText(statusCell.text),
130
+ }));
131
+ }
132
+ return reservations;
133
+ }
134
+ function splitTimeRange(text) {
135
+ const match = /(\d{1,2}:\d{2})\s*[~-]\s*(\d{1,2}:\d{2})/.exec(text);
136
+ if (!match)
137
+ return { startTime: text, endTime: '' };
138
+ return { startTime: match[1], endTime: match[2] };
139
+ }
140
+ function extractReservationIdFromOnclick(href) {
141
+ if (!href)
142
+ return null;
143
+ const match = /destroyReservation\(\s*(\d+)\s*\)/.exec(href);
144
+ if (!match)
145
+ return null;
146
+ return Number.parseInt(match[1], 10);
147
+ }
148
+ function cleanText(text) {
149
+ return decodeHtmlEntities(text).replace(/\s+/g, ' ').trim();
150
+ }
151
+ //# sourceMappingURL=toz-formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toz-formatters.js","sourceRoot":"","sources":["../../src/toz-formatters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export interface TozHttpOptions {
2
+ sessionCookie?: string;
3
+ cookies?: Record<string, string>;
4
+ }
5
+ export interface TozHttpState {
6
+ cookies: Record<string, string>;
7
+ }
8
+ export declare class TozHttp {
9
+ private cookies;
10
+ constructor(options?: TozHttpOptions);
11
+ bootstrap(): Promise<void>;
12
+ get(path: string, params?: Record<string, string>): Promise<string>;
13
+ post(path: string, body: Record<string, string>): Promise<string>;
14
+ postJson<T>(path: string, body: Record<string, string>): Promise<T>;
15
+ postText(path: string, body: Record<string, string>): Promise<string>;
16
+ getCookies(): Record<string, string>;
17
+ getSessionCookie(): string | undefined;
18
+ getState(): TozHttpState;
19
+ private rawPost;
20
+ private readFollowingRedirects;
21
+ private buildUrl;
22
+ private buildHeaders;
23
+ private updateFromResponse;
24
+ private setCookie;
25
+ private serializeCookies;
26
+ }
27
+ //# sourceMappingURL=toz-http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toz-http.d.ts","sourceRoot":"","sources":["../../src/toz-http.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAA4B;gBAE/B,OAAO,GAAE,cAAmB;IAUlC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAWnE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAWnE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3E,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIpC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAItC,QAAQ,IAAI,YAAY;YAIV,OAAO;YAoBP,sBAAsB;IA2BpC,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -0,0 +1,154 @@
1
+ import { TOZ_BASE_URL } from './constants.js';
2
+ const DEFAULT_USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36';
3
+ const DEFAULT_ACCEPT_LANGUAGE = 'ko,en-US;q=0.9,en;q=0.8';
4
+ export class TozHttp {
5
+ cookies = new Map();
6
+ constructor(options = {}) {
7
+ if (options.cookies) {
8
+ for (const [name, value] of Object.entries(options.cookies)) {
9
+ this.cookies.set(name, value);
10
+ }
11
+ }
12
+ else if (options.sessionCookie) {
13
+ this.cookies.set('JSESSIONID', stripJsessionPrefix(options.sessionCookie));
14
+ }
15
+ }
16
+ async bootstrap() {
17
+ if (this.cookies.has('JSESSIONID'))
18
+ return;
19
+ await this.get('/index.htm');
20
+ }
21
+ async get(path, params) {
22
+ const response = await fetch(this.buildUrl(path, params), {
23
+ method: 'GET',
24
+ headers: this.buildHeaders(),
25
+ redirect: 'manual',
26
+ });
27
+ this.updateFromResponse(response);
28
+ return this.readFollowingRedirects(response, 'GET');
29
+ }
30
+ async post(path, body) {
31
+ const response = await this.rawPost(path, body);
32
+ return this.readFollowingRedirects(response, 'POST');
33
+ }
34
+ async postJson(path, body) {
35
+ const text = await this.post(path, body);
36
+ try {
37
+ return JSON.parse(text);
38
+ }
39
+ catch (error) {
40
+ throw new Error(`Failed to parse JSON response from ${path}: ${error instanceof Error ? error.message : 'unknown'}`);
41
+ }
42
+ }
43
+ async postText(path, body) {
44
+ return (await this.post(path, body)).trim();
45
+ }
46
+ getCookies() {
47
+ return Object.fromEntries(this.cookies);
48
+ }
49
+ getSessionCookie() {
50
+ return this.cookies.get('JSESSIONID');
51
+ }
52
+ getState() {
53
+ return { cookies: this.getCookies() };
54
+ }
55
+ async rawPost(path, body) {
56
+ const url = this.buildUrl(path);
57
+ const formBody = new URLSearchParams(body).toString();
58
+ const response = await fetch(url, {
59
+ method: 'POST',
60
+ headers: {
61
+ ...this.buildHeaders(),
62
+ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
63
+ 'X-Requested-With': 'XMLHttpRequest',
64
+ Referer: this.buildUrl('/booking.htm'),
65
+ },
66
+ body: formBody,
67
+ redirect: 'manual',
68
+ });
69
+ this.updateFromResponse(response);
70
+ return response;
71
+ }
72
+ async readFollowingRedirects(initial, method) {
73
+ let response = initial;
74
+ let hops = 0;
75
+ while (response.status >= 300 && response.status < 400 && hops < 5) {
76
+ const location = response.headers.get('location');
77
+ if (!location)
78
+ break;
79
+ const redirectUrl = location.startsWith('http') ? location : new URL(location, `${TOZ_BASE_URL}/`).toString();
80
+ if (!isSameOrigin(redirectUrl, TOZ_BASE_URL)) {
81
+ throw new Error(`Refusing to follow cross-origin redirect to ${new URL(redirectUrl).origin}`);
82
+ }
83
+ response = await fetch(redirectUrl, {
84
+ method: 'GET',
85
+ headers: this.buildHeaders(),
86
+ redirect: 'manual',
87
+ });
88
+ this.updateFromResponse(response);
89
+ hops += 1;
90
+ }
91
+ if (!response.ok) {
92
+ throw new Error(`Toz ${method} ${initial.url} failed: HTTP ${response.status} ${response.statusText}`);
93
+ }
94
+ return response.text();
95
+ }
96
+ buildUrl(path, params) {
97
+ const normalized = path.startsWith('/') ? path.slice(1) : path;
98
+ const url = new URL(normalized, `${TOZ_BASE_URL}/`);
99
+ if (params) {
100
+ for (const [key, value] of Object.entries(params)) {
101
+ url.searchParams.set(key, value);
102
+ }
103
+ }
104
+ return url.toString();
105
+ }
106
+ buildHeaders() {
107
+ const cookieHeader = this.serializeCookies();
108
+ return {
109
+ 'Accept-Language': DEFAULT_ACCEPT_LANGUAGE,
110
+ 'User-Agent': DEFAULT_USER_AGENT,
111
+ ...(cookieHeader ? { cookie: cookieHeader } : {}),
112
+ };
113
+ }
114
+ updateFromResponse(response) {
115
+ for (const cookie of readSetCookies(response.headers)) {
116
+ this.setCookie(cookie);
117
+ }
118
+ }
119
+ setCookie(cookieHeader) {
120
+ const pair = cookieHeader.split(';')[0]?.trim();
121
+ if (!pair)
122
+ return;
123
+ const idx = pair.indexOf('=');
124
+ if (idx === -1)
125
+ return;
126
+ const name = pair.slice(0, idx).trim();
127
+ const value = pair.slice(idx + 1).trim();
128
+ if (name)
129
+ this.cookies.set(name, value);
130
+ }
131
+ serializeCookies() {
132
+ return [...this.cookies.entries()].map(([name, value]) => `${name}=${value}`).join('; ');
133
+ }
134
+ }
135
+ function stripJsessionPrefix(cookie) {
136
+ return cookie.includes('=') ? (cookie.split('=', 2)[1] ?? cookie) : cookie;
137
+ }
138
+ function isSameOrigin(url, baseUrl) {
139
+ try {
140
+ return new URL(url).origin === new URL(baseUrl).origin;
141
+ }
142
+ catch {
143
+ return false;
144
+ }
145
+ }
146
+ function readSetCookies(headers) {
147
+ const enhanced = headers;
148
+ if (typeof enhanced.getSetCookie === 'function') {
149
+ return enhanced.getSetCookie();
150
+ }
151
+ const single = headers.get('set-cookie');
152
+ return single ? [single] : [];
153
+ }
154
+ //# sourceMappingURL=toz-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toz-http.js","sourceRoot":"","sources":["../../src/toz-http.ts"],"names":[],"mappings":"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"}