freelang-v4 4.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 (261) hide show
  1. package/README.md +548 -0
  2. package/dist/ast.d.ts +367 -0
  3. package/dist/ast.js +4 -0
  4. package/dist/ast.js.map +1 -0
  5. package/dist/async-basic.test.d.ts +1 -0
  6. package/dist/async-basic.test.js +88 -0
  7. package/dist/async-basic.test.js.map +1 -0
  8. package/dist/async-jest.test.d.ts +1 -0
  9. package/dist/async-jest.test.js +99 -0
  10. package/dist/async-jest.test.js.map +1 -0
  11. package/dist/channel-jest.test.d.ts +1 -0
  12. package/dist/channel-jest.test.js +148 -0
  13. package/dist/channel-jest.test.js.map +1 -0
  14. package/dist/checker-jest.test.d.ts +1 -0
  15. package/dist/checker-jest.test.js +160 -0
  16. package/dist/checker-jest.test.js.map +1 -0
  17. package/dist/checker.d.ts +149 -0
  18. package/dist/checker.js +1565 -0
  19. package/dist/checker.js.map +1 -0
  20. package/dist/checker.test.d.ts +1 -0
  21. package/dist/checker.test.js +217 -0
  22. package/dist/checker.test.js.map +1 -0
  23. package/dist/compiler-jest.test.d.ts +1 -0
  24. package/dist/compiler-jest.test.js +233 -0
  25. package/dist/compiler-jest.test.js.map +1 -0
  26. package/dist/compiler.d.ts +127 -0
  27. package/dist/compiler.js +1588 -0
  28. package/dist/compiler.js.map +1 -0
  29. package/dist/compiler.test.d.ts +1 -0
  30. package/dist/compiler.test.js +313 -0
  31. package/dist/compiler.test.js.map +1 -0
  32. package/dist/db-100m-full.d.ts +5 -0
  33. package/dist/db-100m-full.js +78 -0
  34. package/dist/db-100m-full.js.map +1 -0
  35. package/dist/db-100m-no-index.d.ts +12 -0
  36. package/dist/db-100m-no-index.js +119 -0
  37. package/dist/db-100m-no-index.js.map +1 -0
  38. package/dist/db-100m-real.d.ts +5 -0
  39. package/dist/db-100m-real.js +131 -0
  40. package/dist/db-100m-real.js.map +1 -0
  41. package/dist/db-100m-streaming.d.ts +15 -0
  42. package/dist/db-100m-streaming.js +164 -0
  43. package/dist/db-100m-streaming.js.map +1 -0
  44. package/dist/db-100m-test.d.ts +5 -0
  45. package/dist/db-100m-test.js +111 -0
  46. package/dist/db-100m-test.js.map +1 -0
  47. package/dist/db-jest.test.d.ts +1 -0
  48. package/dist/db-jest.test.js +182 -0
  49. package/dist/db-jest.test.js.map +1 -0
  50. package/dist/db-runtime.d.ts +24 -0
  51. package/dist/db-runtime.js +204 -0
  52. package/dist/db-runtime.js.map +1 -0
  53. package/dist/db.d.ts +249 -0
  54. package/dist/db.js +593 -0
  55. package/dist/db.js.map +1 -0
  56. package/dist/file-io-jest.test.d.ts +1 -0
  57. package/dist/file-io-jest.test.js +225 -0
  58. package/dist/file-io-jest.test.js.map +1 -0
  59. package/dist/for-of-jest.test.d.ts +1 -0
  60. package/dist/for-of-jest.test.js +230 -0
  61. package/dist/for-of-jest.test.js.map +1 -0
  62. package/dist/for-of.test.d.ts +1 -0
  63. package/dist/for-of.test.js +305 -0
  64. package/dist/for-of.test.js.map +1 -0
  65. package/dist/function-literal-jest.test.d.ts +1 -0
  66. package/dist/function-literal-jest.test.js +180 -0
  67. package/dist/function-literal-jest.test.js.map +1 -0
  68. package/dist/function-literal.test.d.ts +1 -0
  69. package/dist/function-literal.test.js +245 -0
  70. package/dist/function-literal.test.js.map +1 -0
  71. package/dist/generics-jest.test.d.ts +1 -0
  72. package/dist/generics-jest.test.js +93 -0
  73. package/dist/generics-jest.test.js.map +1 -0
  74. package/dist/ir-gen.d.ts +15 -0
  75. package/dist/ir-gen.js +400 -0
  76. package/dist/ir-gen.js.map +1 -0
  77. package/dist/ir.d.ts +114 -0
  78. package/dist/ir.js +5 -0
  79. package/dist/ir.js.map +1 -0
  80. package/dist/lexer.d.ts +110 -0
  81. package/dist/lexer.js +467 -0
  82. package/dist/lexer.js.map +1 -0
  83. package/dist/lexer.test.d.ts +1 -0
  84. package/dist/lexer.test.js +426 -0
  85. package/dist/lexer.test.js.map +1 -0
  86. package/dist/main.d.ts +2 -0
  87. package/dist/main.js +241 -0
  88. package/dist/main.js.map +1 -0
  89. package/dist/module-jest.test.d.ts +1 -0
  90. package/dist/module-jest.test.js +123 -0
  91. package/dist/module-jest.test.js.map +1 -0
  92. package/dist/parser.d.ts +56 -0
  93. package/dist/parser.js +1060 -0
  94. package/dist/parser.js.map +1 -0
  95. package/dist/parser.test.d.ts +1 -0
  96. package/dist/parser.test.js +461 -0
  97. package/dist/parser.test.js.map +1 -0
  98. package/dist/pattern-matching-jest.test.d.ts +1 -0
  99. package/dist/pattern-matching-jest.test.js +158 -0
  100. package/dist/pattern-matching-jest.test.js.map +1 -0
  101. package/dist/pkg/init.d.ts +1 -0
  102. package/dist/pkg/init.js +118 -0
  103. package/dist/pkg/init.js.map +1 -0
  104. package/dist/pkg/install.d.ts +1 -0
  105. package/dist/pkg/install.js +77 -0
  106. package/dist/pkg/install.js.map +1 -0
  107. package/dist/pkg/registry.d.ts +23 -0
  108. package/dist/pkg/registry.js +106 -0
  109. package/dist/pkg/registry.js.map +1 -0
  110. package/dist/pkg/run.d.ts +1 -0
  111. package/dist/pkg/run.js +76 -0
  112. package/dist/pkg/run.js.map +1 -0
  113. package/dist/pkg/toml.d.ts +5 -0
  114. package/dist/pkg/toml.js +117 -0
  115. package/dist/pkg/toml.js.map +1 -0
  116. package/dist/repl.d.ts +15 -0
  117. package/dist/repl.js +197 -0
  118. package/dist/repl.js.map +1 -0
  119. package/dist/runtime/bytecode.d.ts +92 -0
  120. package/dist/runtime/bytecode.js +253 -0
  121. package/dist/runtime/bytecode.js.map +1 -0
  122. package/dist/runtime/value.d.ts +102 -0
  123. package/dist/runtime/value.js +302 -0
  124. package/dist/runtime/value.js.map +1 -0
  125. package/dist/runtime/vm.d.ts +65 -0
  126. package/dist/runtime/vm.js +293 -0
  127. package/dist/runtime/vm.js.map +1 -0
  128. package/dist/struct-instance-jest.test.d.ts +1 -0
  129. package/dist/struct-instance-jest.test.js +209 -0
  130. package/dist/struct-instance-jest.test.js.map +1 -0
  131. package/dist/struct-instance.test.d.ts +1 -0
  132. package/dist/struct-instance.test.js +291 -0
  133. package/dist/struct-instance.test.js.map +1 -0
  134. package/dist/struct-jest.test.d.ts +1 -0
  135. package/dist/struct-jest.test.js +176 -0
  136. package/dist/struct-jest.test.js.map +1 -0
  137. package/dist/struct.test.d.ts +1 -0
  138. package/dist/struct.test.js +231 -0
  139. package/dist/struct.test.js.map +1 -0
  140. package/dist/trait-jest.test.d.ts +1 -0
  141. package/dist/trait-jest.test.js +120 -0
  142. package/dist/trait-jest.test.js.map +1 -0
  143. package/dist/vm-jest.test.d.ts +1 -0
  144. package/dist/vm-jest.test.js +569 -0
  145. package/dist/vm-jest.test.js.map +1 -0
  146. package/dist/vm.d.ts +81 -0
  147. package/dist/vm.js +1956 -0
  148. package/dist/vm.js.map +1 -0
  149. package/dist/vm.test.d.ts +1 -0
  150. package/dist/vm.test.js +337 -0
  151. package/dist/vm.test.js.map +1 -0
  152. package/dist/web-repl/sandbox.d.ts +11 -0
  153. package/dist/web-repl/sandbox.js +76 -0
  154. package/dist/web-repl/sandbox.js.map +1 -0
  155. package/dist/web-repl/server.d.ts +1 -0
  156. package/dist/web-repl/server.js +111 -0
  157. package/dist/web-repl/server.js.map +1 -0
  158. package/dist/while-loop-jest.test.d.ts +1 -0
  159. package/dist/while-loop-jest.test.js +201 -0
  160. package/dist/while-loop-jest.test.js.map +1 -0
  161. package/dist/while-loop.test.d.ts +1 -0
  162. package/dist/while-loop.test.js +262 -0
  163. package/dist/while-loop.test.js.map +1 -0
  164. package/docs/EXPERIENCE.md +787 -0
  165. package/docs/README.md +175 -0
  166. package/docs/V1_V2_V3_ANALYSIS.md +107 -0
  167. package/docs/_config.yml +36 -0
  168. package/docs/api-reference.md +459 -0
  169. package/docs/architecture.md +470 -0
  170. package/docs/benchmarks.md +295 -0
  171. package/docs/comparison.md +454 -0
  172. package/docs/index.md +335 -0
  173. package/docs/language-completeness.md +228 -0
  174. package/docs/learning-guide.md +651 -0
  175. package/package.json +65 -0
  176. package/src/api/deploy_key.fl +294 -0
  177. package/src/api/issue.fl +302 -0
  178. package/src/api/org.fl +356 -0
  179. package/src/api/repo.fl +394 -0
  180. package/src/api/team.fl +299 -0
  181. package/src/api/user.fl +385 -0
  182. package/src/api/webhook.fl +273 -0
  183. package/src/ast.ts +158 -0
  184. package/src/async-basic.test.ts +94 -0
  185. package/src/async-jest.test.ts +107 -0
  186. package/src/channel-jest.test.ts +158 -0
  187. package/src/checker-jest.test.ts +189 -0
  188. package/src/checker.test.ts +279 -0
  189. package/src/checker.ts +1861 -0
  190. package/src/commands/analyze.fl +227 -0
  191. package/src/commands/auth.fl +315 -0
  192. package/src/commands/batch.fl +349 -0
  193. package/src/commands/config.fl +199 -0
  194. package/src/commands/deploy_key.fl +352 -0
  195. package/src/commands/issue.fl +275 -0
  196. package/src/commands/main.fl +492 -0
  197. package/src/commands/org.fl +425 -0
  198. package/src/commands/repo.fl +581 -0
  199. package/src/commands/team.fl +244 -0
  200. package/src/commands/user.fl +423 -0
  201. package/src/commands/webhook.fl +400 -0
  202. package/src/compiler-jest.test.ts +275 -0
  203. package/src/compiler.test.ts +375 -0
  204. package/src/compiler.ts +1770 -0
  205. package/src/config.fl +175 -0
  206. package/src/core/batch.fl +355 -0
  207. package/src/core/cache.fl +284 -0
  208. package/src/core/ensure.fl +324 -0
  209. package/src/db-100m-full.ts +96 -0
  210. package/src/db-100m-no-index.ts +133 -0
  211. package/src/db-100m-real.ts +152 -0
  212. package/src/db-100m-streaming.ts +154 -0
  213. package/src/db-100m-test.ts +136 -0
  214. package/src/db-jest.test.ts +161 -0
  215. package/src/db-runtime.ts +242 -0
  216. package/src/db.ts +676 -0
  217. package/src/errors.fl +134 -0
  218. package/src/for-of-jest.test.ts +246 -0
  219. package/src/for-of.test.ts +308 -0
  220. package/src/function-literal-jest.test.ts +193 -0
  221. package/src/function-literal.test.ts +248 -0
  222. package/src/generics-jest.test.ts +104 -0
  223. package/src/http/client.fl +327 -0
  224. package/src/ir-gen.ts +459 -0
  225. package/src/ir.ts +80 -0
  226. package/src/lexer.test.ts +499 -0
  227. package/src/lexer.ts +522 -0
  228. package/src/main.ts +223 -0
  229. package/src/models.fl +162 -0
  230. package/src/module-jest.test.ts +145 -0
  231. package/src/parser.test.ts +542 -0
  232. package/src/parser.ts +1211 -0
  233. package/src/pattern-matching-jest.test.ts +170 -0
  234. package/src/pkg/init.ts +91 -0
  235. package/src/pkg/install.ts +56 -0
  236. package/src/pkg/registry.ts +103 -0
  237. package/src/pkg/run.ts +49 -0
  238. package/src/pkg/toml.ts +129 -0
  239. package/src/repl.ts +190 -0
  240. package/src/runtime/bytecode.ts +291 -0
  241. package/src/runtime/value.ts +322 -0
  242. package/src/runtime/vm.ts +354 -0
  243. package/src/self-host/bootstrap.fl +68 -0
  244. package/src/self-host/interpreter.fl +361 -0
  245. package/src/self-host/lexer-simple.fl +22 -0
  246. package/src/self-host/lexer.fl +305 -0
  247. package/src/self-host/parser.fl +580 -0
  248. package/src/struct-instance-jest.test.ts +221 -0
  249. package/src/struct-instance.test.ts +293 -0
  250. package/src/struct-jest.test.ts +187 -0
  251. package/src/struct.test.ts +234 -0
  252. package/src/trait-jest.test.ts +136 -0
  253. package/src/vm-jest.test.ts +754 -0
  254. package/src/vm.ts +1976 -0
  255. package/src/web-repl/public/index.html +50 -0
  256. package/src/web-repl/public/main.js +105 -0
  257. package/src/web-repl/public/style.css +225 -0
  258. package/src/web-repl/sandbox.ts +88 -0
  259. package/src/web-repl/server.ts +97 -0
  260. package/src/while-loop-jest.test.ts +218 -0
  261. package/src/while-loop.test.ts +267 -0
package/dist/db.js ADDED
@@ -0,0 +1,593 @@
1
+ "use strict";
2
+ // FreeLang v4.2 — 데이터베이스 지원 (sql.js 기반)
3
+ // SQLite, PostgreSQL, MySQL 인터페이스
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || (function () {
21
+ var ownKeys = function(o) {
22
+ ownKeys = Object.getOwnPropertyNames || function (o) {
23
+ var ar = [];
24
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
25
+ return ar;
26
+ };
27
+ return ownKeys(o);
28
+ };
29
+ return function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ })();
37
+ var __importDefault = (this && this.__importDefault) || function (mod) {
38
+ return (mod && mod.__esModule) ? mod : { "default": mod };
39
+ };
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.MySQLDB = exports.PostgreSQLDB = exports.MigrationManager = exports.QueryBuilder = exports.SQLiteDB = void 0;
42
+ const sql_js_1 = __importDefault(require("sql.js"));
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ /**
46
+ * SQLite 데이터베이스 구현 (sql.js 기반)
47
+ */
48
+ class SQLiteDB {
49
+ constructor(filename) {
50
+ this.db = null;
51
+ this.inTransaction = false;
52
+ this.initialized = false;
53
+ this.driverName = "sqlite";
54
+ this.filename = filename;
55
+ }
56
+ /**
57
+ * 초기화 (비동기)
58
+ */
59
+ async init() {
60
+ if (this.initialized)
61
+ return;
62
+ try {
63
+ const SQL = await (0, sql_js_1.default)();
64
+ // 파일에서 로드하거나 새 DB 생성
65
+ if (fs.existsSync(this.filename)) {
66
+ const buffer = fs.readFileSync(this.filename);
67
+ this.db = new SQL.Database(buffer);
68
+ }
69
+ else {
70
+ this.db = new SQL.Database();
71
+ }
72
+ // 외래 키 제약 활성화
73
+ this.db.run("PRAGMA foreign_keys = ON");
74
+ this.initialized = true;
75
+ }
76
+ catch (e) {
77
+ throw new Error(`Database initialization failed: ${e.message}`);
78
+ }
79
+ }
80
+ /**
81
+ * 디스크에 저장
82
+ */
83
+ save() {
84
+ if (!this.db)
85
+ return;
86
+ const data = this.db.export();
87
+ const buffer = Buffer.from(data);
88
+ fs.writeFileSync(this.filename, buffer);
89
+ }
90
+ /**
91
+ * SELECT 쿼리 실행
92
+ */
93
+ async query(sql, params = []) {
94
+ if (!this.db)
95
+ await this.init();
96
+ if (!this.db)
97
+ throw new Error("Database not initialized");
98
+ try {
99
+ const stmt = this.db.prepare(sql);
100
+ stmt.bind(params);
101
+ const result = [];
102
+ while (stmt.step()) {
103
+ const row = stmt.getAsObject();
104
+ result.push(row);
105
+ }
106
+ stmt.free();
107
+ return result;
108
+ }
109
+ catch (e) {
110
+ throw new Error(`Query error: ${e.message}`);
111
+ }
112
+ }
113
+ /**
114
+ * 단일 행 조회
115
+ */
116
+ async queryOne(sql, params = []) {
117
+ const result = await this.query(sql, params);
118
+ return result.length > 0 ? result[0] : null;
119
+ }
120
+ /**
121
+ * INSERT/UPDATE/DELETE 실행
122
+ */
123
+ async execute(sql, params = []) {
124
+ if (!this.db)
125
+ await this.init();
126
+ if (!this.db)
127
+ throw new Error("Database not initialized");
128
+ try {
129
+ this.db.run(sql, params);
130
+ // 트랜잭션 중에는 저장하지 않음
131
+ if (!this.inTransaction) {
132
+ this.save();
133
+ }
134
+ return { changes: this.db.getRowsModified() };
135
+ }
136
+ catch (e) {
137
+ throw new Error(`Execute error: ${e.message}`);
138
+ }
139
+ }
140
+ /**
141
+ * 트랜잭션 실행
142
+ */
143
+ async transaction(callback) {
144
+ if (!this.db)
145
+ await this.init();
146
+ if (!this.db)
147
+ throw new Error("Database not initialized");
148
+ try {
149
+ this.db.run("BEGIN");
150
+ this.inTransaction = true;
151
+ const result = await callback();
152
+ this.db.run("COMMIT");
153
+ this.inTransaction = false;
154
+ this.save();
155
+ return result;
156
+ }
157
+ catch (e) {
158
+ this.db.run("ROLLBACK");
159
+ this.inTransaction = false;
160
+ throw new Error(`Transaction error: ${e.message}`);
161
+ }
162
+ }
163
+ /**
164
+ * 트랜잭션 시작 (수동)
165
+ */
166
+ async begin(isolation = "deferred") {
167
+ if (!this.db)
168
+ await this.init();
169
+ if (!this.db)
170
+ throw new Error("Database not initialized");
171
+ const cmd = `BEGIN ${isolation.toUpperCase()}`;
172
+ this.db.run(cmd);
173
+ this.inTransaction = true;
174
+ }
175
+ /**
176
+ * 트랜잭션 커밋
177
+ */
178
+ async commit() {
179
+ if (!this.db)
180
+ throw new Error("Database not initialized");
181
+ if (!this.inTransaction)
182
+ throw new Error("No active transaction");
183
+ this.db.run("COMMIT");
184
+ this.inTransaction = false;
185
+ this.save();
186
+ }
187
+ /**
188
+ * 트랜잭션 롤백
189
+ */
190
+ async rollback() {
191
+ if (!this.db)
192
+ throw new Error("Database not initialized");
193
+ if (!this.inTransaction)
194
+ throw new Error("No active transaction");
195
+ this.db.run("ROLLBACK");
196
+ this.inTransaction = false;
197
+ }
198
+ /**
199
+ * 테이블 생성
200
+ */
201
+ async createTable(tableName, columns) {
202
+ const columnDefs = Object.entries(columns)
203
+ .map(([name, type]) => `${name} ${type}`)
204
+ .join(", ");
205
+ const sql = `CREATE TABLE IF NOT EXISTS ${tableName} (${columnDefs})`;
206
+ try {
207
+ await this.execute(sql);
208
+ }
209
+ catch (e) {
210
+ throw new Error(`Create table error: ${e.message}`);
211
+ }
212
+ }
213
+ /**
214
+ * 테이블 삭제
215
+ */
216
+ async dropTable(tableName) {
217
+ try {
218
+ await this.execute(`DROP TABLE IF EXISTS ${tableName}`);
219
+ }
220
+ catch (e) {
221
+ throw new Error(`Drop table error: ${e.message}`);
222
+ }
223
+ }
224
+ /**
225
+ * 모든 테이블 목록
226
+ */
227
+ async listTables() {
228
+ const result = await this.query(`
229
+ SELECT name FROM sqlite_master
230
+ WHERE type='table' AND name NOT LIKE 'sqlite_%'
231
+ `);
232
+ return result.map((row) => row.name);
233
+ }
234
+ /**
235
+ * 테이블 스키마 조회
236
+ */
237
+ async getTableSchema(tableName) {
238
+ const result = await this.query(`PRAGMA table_info(${tableName})`);
239
+ return result;
240
+ }
241
+ /**
242
+ * 데이터베이스 연결 종료
243
+ */
244
+ async close() {
245
+ if (this.db) {
246
+ this.save();
247
+ this.db.close();
248
+ this.db = null;
249
+ }
250
+ }
251
+ /**
252
+ * 데이터베이스 정보
253
+ */
254
+ getInfo() {
255
+ return {
256
+ filename: this.filename,
257
+ initialized: this.initialized,
258
+ inTransaction: this.inTransaction,
259
+ };
260
+ }
261
+ }
262
+ exports.SQLiteDB = SQLiteDB;
263
+ /**
264
+ * 쿼리 빌더
265
+ */
266
+ class QueryBuilder {
267
+ constructor(table) {
268
+ this.table = "";
269
+ this.whereConditions = [];
270
+ this.orderByClause = "";
271
+ this.limitValue = 0;
272
+ this.offsetValue = 0;
273
+ this.selectColumns = ["*"];
274
+ this.joinClauses = [];
275
+ this.params = [];
276
+ this.table = table;
277
+ }
278
+ select(...columns) {
279
+ this.selectColumns = columns;
280
+ return this;
281
+ }
282
+ where(condition, ...params) {
283
+ this.whereConditions.push(condition);
284
+ this.params.push(...params);
285
+ return this;
286
+ }
287
+ join(table, on) {
288
+ this.joinClauses.push(`JOIN ${table} ON ${on}`);
289
+ return this;
290
+ }
291
+ orderBy(column, direction = "ASC") {
292
+ this.orderByClause = `ORDER BY ${column} ${direction}`;
293
+ return this;
294
+ }
295
+ limit(n) {
296
+ this.limitValue = n;
297
+ return this;
298
+ }
299
+ offset(n) {
300
+ this.offsetValue = n;
301
+ return this;
302
+ }
303
+ build() {
304
+ let sql = `SELECT ${this.selectColumns.join(", ")} FROM ${this.table}`;
305
+ if (this.joinClauses.length > 0) {
306
+ sql += " " + this.joinClauses.join(" ");
307
+ }
308
+ if (this.whereConditions.length > 0) {
309
+ sql += " WHERE " + this.whereConditions.join(" AND ");
310
+ }
311
+ if (this.orderByClause) {
312
+ sql += " " + this.orderByClause;
313
+ }
314
+ if (this.limitValue > 0) {
315
+ sql += ` LIMIT ${this.limitValue}`;
316
+ }
317
+ if (this.offsetValue > 0) {
318
+ sql += ` OFFSET ${this.offsetValue}`;
319
+ }
320
+ return { sql, params: this.params };
321
+ }
322
+ async execute(db) {
323
+ const { sql, params } = this.build();
324
+ return await db.query(sql, params);
325
+ }
326
+ }
327
+ exports.QueryBuilder = QueryBuilder;
328
+ /**
329
+ * 마이그레이션 관리자
330
+ */
331
+ class MigrationManager {
332
+ constructor(db, migrationsDir = "./migrations") {
333
+ this.db = db;
334
+ this.migrationsDir = migrationsDir;
335
+ }
336
+ async init() {
337
+ // 마이그레이션 메타테이블 생성
338
+ try {
339
+ await this.db.execute(`
340
+ CREATE TABLE IF NOT EXISTS _migrations (
341
+ id INTEGER PRIMARY KEY,
342
+ name TEXT UNIQUE NOT NULL,
343
+ applied_at DATETIME DEFAULT CURRENT_TIMESTAMP
344
+ )
345
+ `);
346
+ }
347
+ catch (e) {
348
+ // 이미 존재할 수 있음
349
+ }
350
+ }
351
+ /**
352
+ * 모든 마이그레이션 실행
353
+ */
354
+ async up() {
355
+ await this.init();
356
+ if (!fs.existsSync(this.migrationsDir)) {
357
+ console.log("마이그레이션 디렉토리가 없습니다");
358
+ return;
359
+ }
360
+ const files = fs.readdirSync(this.migrationsDir).sort();
361
+ for (const file of files) {
362
+ if (!file.endsWith(".sql") || file.endsWith(".down.sql"))
363
+ continue;
364
+ const applied = await this.db.queryOne("SELECT * FROM _migrations WHERE name = ?", [file]);
365
+ if (applied) {
366
+ console.log(`✓ 스킵: ${file}`);
367
+ continue;
368
+ }
369
+ const sql = fs.readFileSync(path.join(this.migrationsDir, file), "utf-8");
370
+ try {
371
+ // 여러 SQL 명령 실행
372
+ const statements = sql.split(";").filter((s) => s.trim());
373
+ for (const stmt of statements) {
374
+ if (stmt.trim()) {
375
+ await this.db.execute(stmt);
376
+ }
377
+ }
378
+ await this.db.execute("INSERT INTO _migrations (name) VALUES (?)", [file]);
379
+ console.log(`✓ 적용: ${file}`);
380
+ }
381
+ catch (e) {
382
+ console.error(`✗ 실패: ${file} - ${e.message}`);
383
+ throw e;
384
+ }
385
+ }
386
+ }
387
+ /**
388
+ * 마이그레이션 이력 조회
389
+ */
390
+ async status() {
391
+ await this.init();
392
+ return await this.db.query("SELECT * FROM _migrations ORDER BY applied_at");
393
+ }
394
+ /**
395
+ * 마이그레이션 롤백 (역순 실행)
396
+ */
397
+ async down() {
398
+ await this.init();
399
+ if (!fs.existsSync(this.migrationsDir)) {
400
+ console.log("마이그레이션 디렉토리가 없습니다");
401
+ return;
402
+ }
403
+ const files = fs.readdirSync(this.migrationsDir)
404
+ .filter(f => f.endsWith(".sql"))
405
+ .sort()
406
+ .reverse();
407
+ for (const file of files) {
408
+ const downFile = file.replace(".sql", ".down.sql");
409
+ const downPath = path.join(this.migrationsDir, downFile);
410
+ if (!fs.existsSync(downPath)) {
411
+ console.log(`⊘ 건너뜀: ${file} (롤백 파일 없음)`);
412
+ continue;
413
+ }
414
+ const applied = await this.db.queryOne("SELECT * FROM _migrations WHERE name = ?", [file]);
415
+ if (!applied) {
416
+ console.log(`⊘ 건너뜀: ${file} (미적용)`);
417
+ continue;
418
+ }
419
+ const sql = fs.readFileSync(downPath, "utf-8");
420
+ try {
421
+ const statements = sql.split(";").filter((s) => s.trim());
422
+ for (const stmt of statements) {
423
+ if (stmt.trim()) {
424
+ await this.db.execute(stmt);
425
+ }
426
+ }
427
+ await this.db.execute("DELETE FROM _migrations WHERE name = ?", [file]);
428
+ console.log(`✓ 롤백: ${file}`);
429
+ }
430
+ catch (e) {
431
+ console.error(`✗ 실패: ${file} - ${e.message}`);
432
+ throw e;
433
+ }
434
+ }
435
+ }
436
+ }
437
+ exports.MigrationManager = MigrationManager;
438
+ /**
439
+ * PostgreSQL 데이터베이스 구현 (pg 드라이버 기반)
440
+ */
441
+ class PostgreSQLDB {
442
+ constructor(config) {
443
+ this.config = config;
444
+ this.client = null;
445
+ this.connected = false;
446
+ this.driverName = "postgresql";
447
+ }
448
+ /**
449
+ * 연결 초기화
450
+ */
451
+ async connect() {
452
+ const { Client } = require("pg");
453
+ this.client = new Client(this.config);
454
+ await this.client.connect();
455
+ this.connected = true;
456
+ }
457
+ /**
458
+ * SQL 플레이스홀더 변환 (? → $1, $2, ...)
459
+ */
460
+ convertPlaceholders(sql) {
461
+ let i = 0;
462
+ return sql.replace(/\?/g, () => `$${++i}`);
463
+ }
464
+ /**
465
+ * SELECT 쿼리 실행
466
+ */
467
+ async query(sql, params = []) {
468
+ if (!this.connected)
469
+ throw new Error("Not connected to PostgreSQL");
470
+ const pgSql = this.convertPlaceholders(sql);
471
+ const result = await this.client.query(pgSql, params);
472
+ return result.rows;
473
+ }
474
+ /**
475
+ * INSERT/UPDATE/DELETE 실행
476
+ */
477
+ async execute(sql, params = []) {
478
+ if (!this.connected)
479
+ throw new Error("Not connected to PostgreSQL");
480
+ const pgSql = this.convertPlaceholders(sql);
481
+ const result = await this.client.query(pgSql, params);
482
+ return { changes: result.rowCount ?? 0 };
483
+ }
484
+ /**
485
+ * 트랜잭션 시작
486
+ */
487
+ async begin(isolation = "deferred") {
488
+ if (!this.connected)
489
+ throw new Error("Not connected to PostgreSQL");
490
+ const cmd = isolation === "deferred" ? "BEGIN" : `BEGIN ${isolation.toUpperCase()}`;
491
+ await this.client.query(cmd);
492
+ }
493
+ /**
494
+ * 트랜잭션 커밋
495
+ */
496
+ async commit() {
497
+ if (!this.connected)
498
+ throw new Error("Not connected to PostgreSQL");
499
+ await this.client.query("COMMIT");
500
+ }
501
+ /**
502
+ * 트랜잭션 롤백
503
+ */
504
+ async rollback() {
505
+ if (!this.connected)
506
+ throw new Error("Not connected to PostgreSQL");
507
+ await this.client.query("ROLLBACK");
508
+ }
509
+ /**
510
+ * 연결 종료
511
+ */
512
+ async close() {
513
+ if (this.client) {
514
+ await this.client.end();
515
+ this.client = null;
516
+ this.connected = false;
517
+ }
518
+ }
519
+ }
520
+ exports.PostgreSQLDB = PostgreSQLDB;
521
+ /**
522
+ * MySQL 데이터베이스 구현 (mysql2/promise 드라이버 기반)
523
+ */
524
+ class MySQLDB {
525
+ constructor(config) {
526
+ this.config = config;
527
+ this.conn = null;
528
+ this.connected = false;
529
+ this.driverName = "mysql";
530
+ }
531
+ /**
532
+ * 연결 초기화
533
+ */
534
+ async connect() {
535
+ const mysql = require("mysql2/promise");
536
+ this.conn = await mysql.createConnection(this.config);
537
+ this.connected = true;
538
+ }
539
+ /**
540
+ * SELECT 쿼리 실행
541
+ */
542
+ async query(sql, params = []) {
543
+ if (!this.connected)
544
+ throw new Error("Not connected to MySQL");
545
+ const [rows] = await this.conn.query(sql, params);
546
+ return rows;
547
+ }
548
+ /**
549
+ * INSERT/UPDATE/DELETE 실행
550
+ */
551
+ async execute(sql, params = []) {
552
+ if (!this.connected)
553
+ throw new Error("Not connected to MySQL");
554
+ const [result] = await this.conn.execute(sql, params);
555
+ return { changes: result.affectedRows ?? 0 };
556
+ }
557
+ /**
558
+ * 트랜잭션 시작
559
+ */
560
+ async begin(isolation = "deferred") {
561
+ if (!this.connected)
562
+ throw new Error("Not connected to MySQL");
563
+ await this.conn.beginTransaction();
564
+ }
565
+ /**
566
+ * 트랜잭션 커밋
567
+ */
568
+ async commit() {
569
+ if (!this.connected)
570
+ throw new Error("Not connected to MySQL");
571
+ await this.conn.commit();
572
+ }
573
+ /**
574
+ * 트랜잭션 롤백
575
+ */
576
+ async rollback() {
577
+ if (!this.connected)
578
+ throw new Error("Not connected to MySQL");
579
+ await this.conn.rollback();
580
+ }
581
+ /**
582
+ * 연결 종료
583
+ */
584
+ async close() {
585
+ if (this.conn) {
586
+ await this.conn.end();
587
+ this.conn = null;
588
+ this.connected = false;
589
+ }
590
+ }
591
+ }
592
+ exports.MySQLDB = MySQLDB;
593
+ //# sourceMappingURL=db.js.map
package/dist/db.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};