@elaraai/east-node-io 0.0.1-beta.9 → 1.0.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 (180) hide show
  1. package/CLA.md +1 -1
  2. package/CONTRIBUTING.md +3 -3
  3. package/LICENSE.md +31 -0
  4. package/README.md +56 -19
  5. package/dist/{compression → src/compression}/gzip.d.ts +1 -1
  6. package/dist/src/compression/gzip.d.ts.map +1 -0
  7. package/dist/{compression → src/compression}/gzip.js +3 -3
  8. package/dist/src/compression/gzip.js.map +1 -0
  9. package/dist/{compression → src/compression}/index.d.ts +16 -16
  10. package/dist/src/compression/index.d.ts.map +1 -0
  11. package/dist/src/compression/index.js.map +1 -0
  12. package/dist/{compression → src/compression}/tar.d.ts +2 -2
  13. package/dist/src/compression/tar.d.ts.map +1 -0
  14. package/dist/{compression → src/compression}/tar.js +7 -7
  15. package/dist/src/compression/tar.js.map +1 -0
  16. package/dist/{compression → src/compression}/types.d.ts +10 -10
  17. package/dist/src/compression/types.d.ts.map +1 -0
  18. package/dist/src/compression/types.js.map +1 -0
  19. package/dist/{compression → src/compression}/zip.d.ts +3 -3
  20. package/dist/src/compression/zip.d.ts.map +1 -0
  21. package/dist/{compression → src/compression}/zip.js +4 -4
  22. package/dist/src/compression/zip.js.map +1 -0
  23. package/dist/src/connection/index.d.ts.map +1 -0
  24. package/dist/{connection → src/connection}/index.js +2 -2
  25. package/dist/src/connection/index.js.map +1 -0
  26. package/dist/{format → src/format}/index.d.ts +77 -77
  27. package/dist/src/format/index.d.ts.map +1 -0
  28. package/dist/src/format/index.js.map +1 -0
  29. package/dist/{format → src/format}/types.d.ts +53 -53
  30. package/dist/src/format/types.d.ts.map +1 -0
  31. package/dist/src/format/types.js.map +1 -0
  32. package/dist/{format → src/format}/xlsx.d.ts +20 -20
  33. package/dist/src/format/xlsx.d.ts.map +1 -0
  34. package/dist/{format → src/format}/xlsx.js +6 -6
  35. package/dist/src/format/xlsx.js.map +1 -0
  36. package/dist/{format → src/format}/xml.d.ts +54 -54
  37. package/dist/src/format/xml.d.ts.map +1 -0
  38. package/dist/{format → src/format}/xml.js +14 -14
  39. package/dist/src/format/xml.js.map +1 -0
  40. package/dist/src/index.d.ts.map +1 -0
  41. package/dist/src/index.js.map +1 -0
  42. package/dist/{nosql → src/nosql}/index.d.ts +20 -20
  43. package/dist/src/nosql/index.d.ts.map +1 -0
  44. package/dist/src/nosql/index.js.map +1 -0
  45. package/dist/{nosql → src/nosql}/mongodb.d.ts +5 -5
  46. package/dist/src/nosql/mongodb.d.ts.map +1 -0
  47. package/dist/{nosql → src/nosql}/mongodb.js +8 -8
  48. package/dist/src/nosql/mongodb.js.map +1 -0
  49. package/dist/{nosql → src/nosql}/redis.d.ts +5 -5
  50. package/dist/src/nosql/redis.d.ts.map +1 -0
  51. package/dist/{nosql → src/nosql}/redis.js +6 -6
  52. package/dist/src/nosql/redis.js.map +1 -0
  53. package/dist/{nosql → src/nosql}/types.d.ts +10 -10
  54. package/dist/src/nosql/types.d.ts.map +1 -0
  55. package/dist/src/nosql/types.js.map +1 -0
  56. package/dist/src/platform.d.ts.map +1 -0
  57. package/dist/{platform.js → src/platform.js} +2 -0
  58. package/dist/src/platform.js.map +1 -0
  59. package/dist/src/sql/access.d.ts +243 -0
  60. package/dist/src/sql/access.d.ts.map +1 -0
  61. package/dist/src/sql/access.js +427 -0
  62. package/dist/src/sql/access.js.map +1 -0
  63. package/dist/src/sql/index.d.ts +1112 -0
  64. package/dist/src/sql/index.d.ts.map +1 -0
  65. package/dist/{sql → src/sql}/index.js +296 -4
  66. package/dist/src/sql/index.js.map +1 -0
  67. package/dist/{sql → src/sql}/mysql.d.ts +110 -32
  68. package/dist/src/sql/mysql.d.ts.map +1 -0
  69. package/dist/{sql → src/sql}/mysql.js +207 -6
  70. package/dist/src/sql/mysql.js.map +1 -0
  71. package/dist/{sql → src/sql}/postgres.d.ts +110 -32
  72. package/dist/src/sql/postgres.d.ts.map +1 -0
  73. package/dist/{sql → src/sql}/postgres.js +199 -6
  74. package/dist/src/sql/postgres.js.map +1 -0
  75. package/dist/{sql → src/sql}/sqlite.d.ts +108 -30
  76. package/dist/src/sql/sqlite.d.ts.map +1 -0
  77. package/dist/{sql → src/sql}/sqlite.js +209 -6
  78. package/dist/src/sql/sqlite.js.map +1 -0
  79. package/dist/src/sql/types.d.ts +269 -0
  80. package/dist/src/sql/types.d.ts.map +1 -0
  81. package/dist/{sql → src/sql}/types.js +65 -1
  82. package/dist/src/sql/types.js.map +1 -0
  83. package/dist/{storage → src/storage}/index.d.ts +63 -63
  84. package/dist/src/storage/index.d.ts.map +1 -0
  85. package/dist/{storage → src/storage}/index.js +1 -1
  86. package/dist/src/storage/index.js.map +1 -0
  87. package/dist/{storage → src/storage}/s3.d.ts +56 -49
  88. package/dist/src/storage/s3.d.ts.map +1 -0
  89. package/dist/{storage → src/storage}/s3.js +24 -15
  90. package/dist/src/storage/s3.js.map +1 -0
  91. package/dist/{storage → src/storage}/types.d.ts +18 -18
  92. package/dist/src/storage/types.d.ts.map +1 -0
  93. package/dist/src/storage/types.js.map +1 -0
  94. package/dist/{transfer → src/transfer}/ftp.d.ts +10 -10
  95. package/dist/src/transfer/ftp.d.ts.map +1 -0
  96. package/dist/{transfer → src/transfer}/ftp.js +6 -6
  97. package/dist/src/transfer/ftp.js.map +1 -0
  98. package/dist/{transfer → src/transfer}/index.d.ts +40 -40
  99. package/dist/src/transfer/index.d.ts.map +1 -0
  100. package/dist/src/transfer/index.js.map +1 -0
  101. package/dist/{transfer → src/transfer}/sftp.d.ts +10 -10
  102. package/dist/src/transfer/sftp.d.ts.map +1 -0
  103. package/dist/{transfer → src/transfer}/sftp.js +6 -6
  104. package/dist/src/transfer/sftp.js.map +1 -0
  105. package/dist/{transfer → src/transfer}/types.d.ts +15 -15
  106. package/dist/src/transfer/types.d.ts.map +1 -0
  107. package/dist/src/transfer/types.js.map +1 -0
  108. package/package.json +35 -54
  109. package/dist/compression/gzip.d.ts.map +0 -1
  110. package/dist/compression/gzip.js.map +0 -1
  111. package/dist/compression/index.d.ts.map +0 -1
  112. package/dist/compression/index.js.map +0 -1
  113. package/dist/compression/tar.d.ts.map +0 -1
  114. package/dist/compression/tar.js.map +0 -1
  115. package/dist/compression/types.d.ts.map +0 -1
  116. package/dist/compression/types.js.map +0 -1
  117. package/dist/compression/zip.d.ts.map +0 -1
  118. package/dist/compression/zip.js.map +0 -1
  119. package/dist/connection/index.d.ts.map +0 -1
  120. package/dist/connection/index.js.map +0 -1
  121. package/dist/format/index.d.ts.map +0 -1
  122. package/dist/format/index.js.map +0 -1
  123. package/dist/format/types.d.ts.map +0 -1
  124. package/dist/format/types.js.map +0 -1
  125. package/dist/format/xlsx.d.ts.map +0 -1
  126. package/dist/format/xlsx.js.map +0 -1
  127. package/dist/format/xml.d.ts.map +0 -1
  128. package/dist/format/xml.js.map +0 -1
  129. package/dist/index.d.ts.map +0 -1
  130. package/dist/index.js.map +0 -1
  131. package/dist/nosql/index.d.ts.map +0 -1
  132. package/dist/nosql/index.js.map +0 -1
  133. package/dist/nosql/mongodb.d.ts.map +0 -1
  134. package/dist/nosql/mongodb.js.map +0 -1
  135. package/dist/nosql/redis.d.ts.map +0 -1
  136. package/dist/nosql/redis.js.map +0 -1
  137. package/dist/nosql/types.d.ts.map +0 -1
  138. package/dist/nosql/types.js.map +0 -1
  139. package/dist/platform.d.ts.map +0 -1
  140. package/dist/platform.js.map +0 -1
  141. package/dist/sql/index.d.ts +0 -777
  142. package/dist/sql/index.d.ts.map +0 -1
  143. package/dist/sql/index.js.map +0 -1
  144. package/dist/sql/mysql.d.ts.map +0 -1
  145. package/dist/sql/mysql.js.map +0 -1
  146. package/dist/sql/postgres.d.ts.map +0 -1
  147. package/dist/sql/postgres.js.map +0 -1
  148. package/dist/sql/sqlite.d.ts.map +0 -1
  149. package/dist/sql/sqlite.js.map +0 -1
  150. package/dist/sql/types.d.ts +0 -205
  151. package/dist/sql/types.d.ts.map +0 -1
  152. package/dist/sql/types.js.map +0 -1
  153. package/dist/storage/index.d.ts.map +0 -1
  154. package/dist/storage/index.js.map +0 -1
  155. package/dist/storage/s3.d.ts.map +0 -1
  156. package/dist/storage/s3.js.map +0 -1
  157. package/dist/storage/types.d.ts.map +0 -1
  158. package/dist/storage/types.js.map +0 -1
  159. package/dist/transfer/ftp.d.ts.map +0 -1
  160. package/dist/transfer/ftp.js.map +0 -1
  161. package/dist/transfer/index.d.ts.map +0 -1
  162. package/dist/transfer/index.js.map +0 -1
  163. package/dist/transfer/sftp.d.ts.map +0 -1
  164. package/dist/transfer/sftp.js.map +0 -1
  165. package/dist/transfer/types.d.ts.map +0 -1
  166. package/dist/transfer/types.js.map +0 -1
  167. package/dist/tsconfig.tsbuildinfo +0 -1
  168. /package/dist/{compression → src/compression}/index.js +0 -0
  169. /package/dist/{compression → src/compression}/types.js +0 -0
  170. /package/dist/{connection → src/connection}/index.d.ts +0 -0
  171. /package/dist/{format → src/format}/index.js +0 -0
  172. /package/dist/{format → src/format}/types.js +0 -0
  173. /package/dist/{index.d.ts → src/index.d.ts} +0 -0
  174. /package/dist/{index.js → src/index.js} +0 -0
  175. /package/dist/{nosql → src/nosql}/index.js +0 -0
  176. /package/dist/{nosql → src/nosql}/types.js +0 -0
  177. /package/dist/{platform.d.ts → src/platform.d.ts} +0 -0
  178. /package/dist/{storage → src/storage}/types.js +0 -0
  179. /package/dist/{transfer → src/transfer}/index.js +0 -0
  180. /package/dist/{transfer → src/transfer}/types.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sql/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AAGH,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAgD3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,GAAG;IACZ;;;;OAIG;;QAEC;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA4BG;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;WA0BG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAuCG;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;WAsBG;;QAGH;;;;;;;;;;;;;;;;;;;;;WAqBG;;QAGH;;;;WAIG;;QAGH;;WAEG;;YAEC;;eAEG;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;;;;;;;;;;;;;;;;;IAKX;;;;OAIG;;QAEC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAgCG;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA8BG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAuCG;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;WA0BG;;QAGH;;;;;;;;;;;;;;;;;;;;;WAqBG;;QAGH;;;;WAIG;;QAGH;;WAEG;;YAEC;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;;;;;;;;;;;;;;;;;IAKX;;;;OAIG;;QAEC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAgCG;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA8BG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAuCG;;;;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;WA0BG;;QAGH;;;;;;;;;;;;;;;;;;;;;WAqBG;;QAGH;;;;WAIG;;QAGH;;WAEG;;YAEC;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;YAGH;;eAEG;;;;;;;;;;;;;;;;;;;;;;;;;;IAKX;;;;;OAKG;;QAEC;;;;;;;;;;;;;;;;;;;;;;WAsBG;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;WAuBG;;;;QAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAuCG;;;;;;;QAGH;;;;;;;;;;;;;;;;;;;;;WAqBG;;QAGH;;;;;;;;;;;;;;;;;;;;;WAqBG;;QAGH;;;;WAIG;;QAGH;;WAEG;;YAEC;;eAEG;;;;;YAGH;;eAEG;;;;;;;YAGH;;eAEG;;;;;;CAIL,CAAC"}
@@ -14,12 +14,14 @@
14
14
  export * from "./sqlite.js";
15
15
  export * from "./postgres.js";
16
16
  export * from "./mysql.js";
17
+ export * from "./access.js";
17
18
  export * from "./types.js";
18
19
  // Import for grouped exports
19
- import { sqlite_connect, sqlite_query, sqlite_close, sqlite_close_all, SqliteImpl } from "./sqlite.js";
20
- import { postgres_connect, postgres_query, postgres_close, postgres_close_all, PostgresImpl } from "./postgres.js";
21
- import { mysql_connect, mysql_query, mysql_close, mysql_close_all, MySqlImpl } from "./mysql.js";
22
- import { SqliteConfigType, PostgresConfigType, MySqlConfigType, SqlParameterType, SqlParametersType, SqlRowType, SqlResultType } from "./types.js";
20
+ import { sqlite_connect, sqlite_query, sqlite_select, sqlite_close, sqlite_close_all, SqliteImpl } from "./sqlite.js";
21
+ import { postgres_connect, postgres_query, postgres_select, postgres_close, postgres_close_all, PostgresImpl } from "./postgres.js";
22
+ import { mysql_connect, mysql_query, mysql_select, mysql_close, mysql_close_all, MySqlImpl } from "./mysql.js";
23
+ import { access_open, access_tables, access_query, access_close, access_close_all, AccessImpl } from "./access.js";
24
+ import { SqliteConfigType, PostgresConfigType, MySqlConfigType, AccessConfigType, AccessQueryOptionsType, AccessTablesResultType, SqlParameterType, SqlParametersType, SqlRowType, SqlResultType } from "./types.js";
23
25
  /**
24
26
  * SQL database platform functions.
25
27
  *
@@ -122,6 +124,47 @@ export const SQL = {
122
124
  * ```
123
125
  */
124
126
  query: sqlite_query,
127
+ /**
128
+ * Executes a SELECT query with user-defined return type.
129
+ *
130
+ * Runs a SELECT query and returns typed rows. The return type is generic,
131
+ * allowing users to specify the expected row structure for type-safe access.
132
+ *
133
+ * @example
134
+ * ```ts
135
+ * const UserRowType = StructType({
136
+ * id: IntegerType,
137
+ * name: StringType,
138
+ * });
139
+ *
140
+ * const getUsers = East.function([], NullType, ($) => {
141
+ * const config = $.let({
142
+ * path: ":memory:",
143
+ * readOnly: variant('none', null),
144
+ * memory: variant('some', true),
145
+ * });
146
+ * const conn = $.let(SQL.SQLite.connect(config));
147
+ *
148
+ * // Create table and insert data
149
+ * $(SQL.SQLite.query(conn, "CREATE TABLE users (id INTEGER, name TEXT)", []));
150
+ * $(SQL.SQLite.query(conn, "INSERT INTO users VALUES (1, 'Alice')", []));
151
+ *
152
+ * // Query with typed results
153
+ * const users = $.let(SQL.SQLite.select([UserRowType], conn,
154
+ * "SELECT id, name FROM users",
155
+ * []
156
+ * ));
157
+ * // users is typed as Array<{ id: bigint, name: string }>
158
+ *
159
+ * $(SQL.SQLite.close(conn));
160
+ * $.return(null);
161
+ * });
162
+ *
163
+ * const compiled = East.compileAsync(getUsers.toIR(), SQL.SQLite.Implementation);
164
+ * await compiled();
165
+ * ```
166
+ */
167
+ select: sqlite_select,
125
168
  /**
126
169
  * Closes the SQLite database connection.
127
170
  *
@@ -273,6 +316,47 @@ export const SQL = {
273
316
  * ```
274
317
  */
275
318
  query: postgres_query,
319
+ /**
320
+ * Executes a SELECT query with user-defined return type.
321
+ *
322
+ * Runs a SELECT query and returns typed rows. The return type is generic,
323
+ * allowing users to specify the expected row structure for type-safe access.
324
+ *
325
+ * @example
326
+ * ```ts
327
+ * const UserRowType = StructType({
328
+ * id: IntegerType,
329
+ * name: StringType,
330
+ * });
331
+ *
332
+ * const getUsers = East.function([], NullType, ($) => {
333
+ * const config = $.let({
334
+ * host: "localhost",
335
+ * port: 5432n,
336
+ * database: "myapp",
337
+ * user: "postgres",
338
+ * password: "secret",
339
+ * ssl: variant('none', null),
340
+ * maxConnections: variant('none', null),
341
+ * });
342
+ * const conn = $.let(SQL.Postgres.connect(config));
343
+ *
344
+ * // Query with typed results
345
+ * const users = $.let(SQL.Postgres.select([UserRowType], conn,
346
+ * "SELECT id, name FROM users",
347
+ * []
348
+ * ));
349
+ * // users is typed as Array<{ id: bigint, name: string }>
350
+ *
351
+ * $(SQL.Postgres.close(conn));
352
+ * $.return(null);
353
+ * });
354
+ *
355
+ * const compiled = East.compileAsync(getUsers.toIR(), SQL.Postgres.Implementation);
356
+ * await compiled();
357
+ * ```
358
+ */
359
+ select: postgres_select,
276
360
  /**
277
361
  * Closes the PostgreSQL connection pool.
278
362
  *
@@ -428,6 +512,47 @@ export const SQL = {
428
512
  * ```
429
513
  */
430
514
  query: mysql_query,
515
+ /**
516
+ * Executes a SELECT query with user-defined return type.
517
+ *
518
+ * Runs a SELECT query and returns typed rows. The return type is generic,
519
+ * allowing users to specify the expected row structure for type-safe access.
520
+ *
521
+ * @example
522
+ * ```ts
523
+ * const UserRowType = StructType({
524
+ * id: IntegerType,
525
+ * name: StringType,
526
+ * });
527
+ *
528
+ * const getUsers = East.function([], NullType, ($) => {
529
+ * const config = $.let({
530
+ * host: "localhost",
531
+ * port: 3306n,
532
+ * database: "myapp",
533
+ * user: "root",
534
+ * password: "secret",
535
+ * ssl: variant('none', null),
536
+ * maxConnections: variant('none', null),
537
+ * });
538
+ * const conn = $.let(SQL.MySQL.connect(config));
539
+ *
540
+ * // Query with typed results
541
+ * const users = $.let(SQL.MySQL.select([UserRowType], conn,
542
+ * "SELECT id, name FROM users",
543
+ * []
544
+ * ));
545
+ * // users is typed as Array<{ id: bigint, name: string }>
546
+ *
547
+ * $(SQL.MySQL.close(conn));
548
+ * $.return(null);
549
+ * });
550
+ *
551
+ * const compiled = East.compileAsync(getUsers.toIR(), SQL.MySQL.Implementation);
552
+ * await compiled();
553
+ * ```
554
+ */
555
+ select: mysql_select,
431
556
  /**
432
557
  * Closes the MySQL connection pool.
433
558
  *
@@ -511,5 +636,172 @@ export const SQL = {
511
636
  Result: SqlResultType,
512
637
  },
513
638
  },
639
+ /**
640
+ * Microsoft Access database operations.
641
+ *
642
+ * Provides read-only platform functions for Access databases (.mdb, .accdb).
643
+ * Supports Access 97 through Access 2019, including encrypted databases.
644
+ */
645
+ Access: {
646
+ /**
647
+ * Opens a Microsoft Access database file.
648
+ *
649
+ * Opens an Access database file and returns an opaque handle for use in queries.
650
+ *
651
+ * @example
652
+ * ```ts
653
+ * const listTables = East.function([], NullType, ($) => {
654
+ * const config = $.let({
655
+ * path: "./database.mdb",
656
+ * password: variant('none', null),
657
+ * });
658
+ *
659
+ * const conn = $.let(SQL.Access.open(config));
660
+ * const tables = $.let(SQL.Access.tables(conn));
661
+ * $(SQL.Access.close(conn));
662
+ * $.return(null);
663
+ * });
664
+ *
665
+ * const compiled = East.compileAsync(listTables.toIR(), SQL.Access.Implementation);
666
+ * await compiled();
667
+ * ```
668
+ */
669
+ open: access_open,
670
+ /**
671
+ * Lists all table names in an Access database.
672
+ *
673
+ * Returns an array of normal table names (not system or linked tables).
674
+ *
675
+ * @example
676
+ * ```ts
677
+ * const showTables = East.function([], NullType, ($) => {
678
+ * const config = $.let({
679
+ * path: "./database.mdb",
680
+ * password: variant('none', null),
681
+ * });
682
+ *
683
+ * const conn = $.let(SQL.Access.open(config));
684
+ * const result = $.let(SQL.Access.tables(conn));
685
+ * // result.tables contains ['Table1', 'Table2', ...]
686
+ * $(SQL.Access.close(conn));
687
+ * $.return(null);
688
+ * });
689
+ *
690
+ * const compiled = East.compileAsync(showTables.toIR(), SQL.Access.Implementation);
691
+ * await compiled();
692
+ * ```
693
+ */
694
+ tables: access_tables,
695
+ /**
696
+ * Queries data from an Access database table with a user-defined return type.
697
+ *
698
+ * Reads rows from a specified table with optional column selection and pagination.
699
+ * The return type is generic, allowing users to specify the expected row structure.
700
+ *
701
+ * @typeParam T - The expected row type for query results
702
+ *
703
+ * @example
704
+ * ```ts
705
+ * // Define the expected row type
706
+ * const UserRowType = StructType({
707
+ * id: IntegerType,
708
+ * name: StringType,
709
+ * email: StringType,
710
+ * });
711
+ *
712
+ * const queryUsers = East.function([], NullType, ($) => {
713
+ * const config = $.let({
714
+ * path: "./database.mdb",
715
+ * password: variant('none', null),
716
+ * });
717
+ *
718
+ * const conn = $.let(SQL.Access.open(config));
719
+ * // Query with typed results - returns Array<UserRowType>
720
+ * const users = $.let(SQL.Access.query([UserRowType], conn, {
721
+ * table: "Users",
722
+ * columns: variant('some', ["id", "name", "email"]),
723
+ * rowOffset: variant('none', null),
724
+ * rowLimit: variant('some', 100n),
725
+ * }));
726
+ * // users is typed as Array<{ id: bigint, name: string, email: string }>
727
+ * $(SQL.Access.close(conn));
728
+ * $.return(null);
729
+ * });
730
+ *
731
+ * const compiled = East.compileAsync(queryUsers.toIR(), SQL.Access.Implementation);
732
+ * await compiled();
733
+ * ```
734
+ */
735
+ query: access_query,
736
+ /**
737
+ * Closes an Access database connection.
738
+ *
739
+ * Releases all resources associated with the connection.
740
+ *
741
+ * @example
742
+ * ```ts
743
+ * const cleanup = East.function([], NullType, $ => {
744
+ * const config = $.let({
745
+ * path: "./database.mdb",
746
+ * password: variant('none', null),
747
+ * });
748
+ * const conn = $.let(SQL.Access.open(config));
749
+ * // ... do work ...
750
+ * $(SQL.Access.close(conn));
751
+ * $.return(null);
752
+ * });
753
+ *
754
+ * const compiled = East.compileAsync(cleanup.toIR(), SQL.Access.Implementation);
755
+ * await compiled();
756
+ * ```
757
+ */
758
+ close: access_close,
759
+ /**
760
+ * Closes all Access database connections.
761
+ *
762
+ * Closes all active Access connections and releases all resources.
763
+ * Useful for test cleanup to ensure all connections are closed.
764
+ *
765
+ * @returns Null on success
766
+ *
767
+ * @example
768
+ * ```ts
769
+ * const cleanupAll = East.function([], NullType, $ => {
770
+ * // ... test code that may have left connections open ...
771
+ * $(SQL.Access.closeAll());
772
+ * return $.return(null);
773
+ * });
774
+ *
775
+ * const compiled = East.compileAsync(cleanupAll.toIR(), SQL.Access.Implementation);
776
+ * await compiled();
777
+ * ```
778
+ *
779
+ * @internal
780
+ */
781
+ closeAll: access_close_all,
782
+ /**
783
+ * Node.js implementation of Access platform functions.
784
+ *
785
+ * Pass this to East.compileAsync() to enable Access operations.
786
+ */
787
+ Implementation: AccessImpl,
788
+ /**
789
+ * Type definitions for Access operations.
790
+ */
791
+ Types: {
792
+ /**
793
+ * Access connection configuration type.
794
+ */
795
+ Config: AccessConfigType,
796
+ /**
797
+ * Access query options type.
798
+ */
799
+ QueryOptions: AccessQueryOptionsType,
800
+ /**
801
+ * Access tables list result type.
802
+ */
803
+ TablesResult: AccessTablesResultType,
804
+ },
805
+ },
514
806
  };
515
807
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sql/index.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@
10
10
  *
11
11
  * @packageDocumentation
12
12
  */
13
- import { BlobType, BooleanType, DateTimeType, FloatType, IntegerType, NullType, StringType as EastStringType } from "@elaraai/east";
13
+ import { ArrayType, BlobType, BooleanType, DateTimeType, FloatType, IntegerType, NullType, OptionType, StringType as EastStringType } from "@elaraai/east";
14
14
  import type { PlatformFunction } from "@elaraai/east/internal";
15
15
  import { StringType } from './types.js';
16
16
  /**
@@ -69,13 +69,13 @@ import { StringType } from './types.js';
69
69
  * - Connections are automatically returned to the pool after queries
70
70
  */
71
71
  export declare const mysql_connect: import("@elaraai/east").AsyncPlatformDefinition<[import("@elaraai/east").StructType<{
72
- host: EastStringType;
73
- port: IntegerType;
74
- database: EastStringType;
75
- user: EastStringType;
76
- password: EastStringType;
77
- ssl: import("@elaraai/east").OptionType<BooleanType>;
78
- maxConnections: import("@elaraai/east").OptionType<IntegerType>;
72
+ readonly host: EastStringType;
73
+ readonly port: IntegerType;
74
+ readonly database: EastStringType;
75
+ readonly user: EastStringType;
76
+ readonly password: EastStringType;
77
+ readonly ssl: OptionType<BooleanType>;
78
+ readonly maxConnections: OptionType<IntegerType>;
79
79
  }>], EastStringType>;
80
80
  /**
81
81
  * Executes a SQL query with parameterized values.
@@ -135,37 +135,115 @@ export declare const mysql_connect: import("@elaraai/east").AsyncPlatformDefinit
135
135
  * - Parameters prevent SQL injection attacks
136
136
  * - Returns lastInsertId for INSERT operations
137
137
  */
138
- export declare const mysql_query: import("@elaraai/east").AsyncPlatformDefinition<[EastStringType, EastStringType, import("@elaraai/east").ArrayType<import("@elaraai/east").VariantType<{
139
- Null: NullType;
140
- Boolean: BooleanType;
141
- Integer: IntegerType;
142
- Float: FloatType;
143
- String: StringType;
144
- DateTime: DateTimeType;
145
- Blob: BlobType;
138
+ export declare const mysql_query: import("@elaraai/east").AsyncPlatformDefinition<[EastStringType, EastStringType, ArrayType<import("@elaraai/east").VariantType<{
139
+ readonly Null: NullType;
140
+ readonly Boolean: BooleanType;
141
+ readonly Integer: IntegerType;
142
+ readonly Float: FloatType;
143
+ readonly String: StringType;
144
+ readonly DateTime: DateTimeType;
145
+ readonly Blob: BlobType;
146
146
  }>>], import("@elaraai/east").VariantType<{
147
- select: import("@elaraai/east").StructType<{
148
- rows: import("@elaraai/east").ArrayType<import("@elaraai/east").DictType<EastStringType, import("@elaraai/east").VariantType<{
149
- Null: NullType;
150
- Boolean: BooleanType;
151
- Integer: IntegerType;
152
- Float: FloatType;
153
- String: StringType;
154
- DateTime: DateTimeType;
155
- Blob: BlobType;
147
+ readonly select: import("@elaraai/east").StructType<{
148
+ readonly rows: ArrayType<import("@elaraai/east").DictType<EastStringType, import("@elaraai/east").VariantType<{
149
+ readonly Null: NullType;
150
+ readonly Boolean: BooleanType;
151
+ readonly Integer: IntegerType;
152
+ readonly Float: FloatType;
153
+ readonly String: StringType;
154
+ readonly DateTime: DateTimeType;
155
+ readonly Blob: BlobType;
156
156
  }>>>;
157
157
  }>;
158
- insert: import("@elaraai/east").StructType<{
159
- rowsAffected: IntegerType;
160
- lastInsertId: import("@elaraai/east").OptionType<IntegerType>;
158
+ readonly insert: import("@elaraai/east").StructType<{
159
+ readonly rowsAffected: IntegerType;
160
+ readonly lastInsertId: OptionType<IntegerType>;
161
161
  }>;
162
- update: import("@elaraai/east").StructType<{
163
- rowsAffected: IntegerType;
162
+ readonly update: import("@elaraai/east").StructType<{
163
+ readonly rowsAffected: IntegerType;
164
164
  }>;
165
- delete: import("@elaraai/east").StructType<{
166
- rowsAffected: IntegerType;
165
+ readonly delete: import("@elaraai/east").StructType<{
166
+ readonly rowsAffected: IntegerType;
167
167
  }>;
168
168
  }>>;
169
+ /**
170
+ * Executes a SELECT query with user-defined return type.
171
+ *
172
+ * Runs a SELECT query against a MySQL database with parameter binding and
173
+ * returns results as an array of typed rows. The return type is generic,
174
+ * allowing users to specify the expected row structure for type-safe access.
175
+ *
176
+ * This is a generic platform function for the East language, enabling type-safe
177
+ * SELECT queries in East programs running on Node.js.
178
+ *
179
+ * @typeParam T - The expected row type for query results
180
+ * @param handle - Connection handle from mysql_connect()
181
+ * @param sql - SQL SELECT query string with ? placeholders
182
+ * @param params - Query parameters as SqlParameterType array
183
+ * @returns Array of rows matching the specified type T
184
+ *
185
+ * @throws {EastError} When query fails due to:
186
+ * - Invalid connection handle (location: "mysql_select")
187
+ * - SQL syntax errors (location: "mysql_select")
188
+ * - Query is not a SELECT (location: "mysql_select")
189
+ * - Type coercion failure (location: "mysql_select")
190
+ *
191
+ * @example
192
+ * ```ts
193
+ * import { East, NullType, StructType, StringType, IntegerType, variant } from "@elaraai/east";
194
+ * import { SQL } from "@elaraai/east-node-io";
195
+ *
196
+ * // Define the expected row type
197
+ * const UserRowType = StructType({
198
+ * id: IntegerType,
199
+ * name: StringType,
200
+ * email: StringType,
201
+ * });
202
+ *
203
+ * const queryUsers = East.function([], NullType, ($) => {
204
+ * const config = $.let({
205
+ * host: "localhost",
206
+ * port: 3306n,
207
+ * database: "myapp",
208
+ * user: "root",
209
+ * password: "secret",
210
+ * ssl: variant('none', null),
211
+ * maxConnections: variant('none', null),
212
+ * });
213
+ *
214
+ * const conn = $.let(SQL.MySQL.connect(config));
215
+ *
216
+ * // Query with typed results - returns Array<UserRowType>
217
+ * const users = $.let(SQL.MySQL.select([UserRowType], conn,
218
+ * "SELECT id, name, email FROM users WHERE active = ?",
219
+ * [variant('Boolean', true)]
220
+ * ));
221
+ * // users is typed as Array<{ id: bigint, name: string, email: string }>
222
+ *
223
+ * $(SQL.MySQL.close(conn));
224
+ * $.return(null);
225
+ * });
226
+ *
227
+ * const compiled = East.compileAsync(queryUsers.toIR(), SQL.MySQL.Implementation);
228
+ * await compiled();
229
+ * ```
230
+ *
231
+ * @remarks
232
+ * - Only SELECT queries are supported (use mysql_query for INSERT/UPDATE/DELETE)
233
+ * - Uses ? for parameter placeholders
234
+ * - Row type T should match the structure of selected columns
235
+ * - All MySQL data types are mapped to appropriate East types
236
+ * - NULL values are preserved in the result
237
+ */
238
+ export declare const mysql_select: import("@elaraai/east").AsyncGenericPlatformDefinition<readonly ["T"], readonly [EastStringType, EastStringType, ArrayType<import("@elaraai/east").VariantType<{
239
+ readonly Null: NullType;
240
+ readonly Boolean: BooleanType;
241
+ readonly Integer: IntegerType;
242
+ readonly Float: FloatType;
243
+ readonly String: StringType;
244
+ readonly DateTime: DateTimeType;
245
+ readonly Blob: BlobType;
246
+ }>>], ArrayType<"T">>;
169
247
  /**
170
248
  * Closes a MySQL connection pool.
171
249
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../../src/sql/mysql.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAQ,SAAS,EAAE,WAAW,EAAsC,QAAQ,EAAE,UAAU,EAAa,UAAU,IAAI,cAAc,EAA4B,MAAM,eAAe,CAAC;AAE1O,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI9E,OAAO,EAKH,UAAU,EAEb,MAAM,YAAY,CAAC;AA+BpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,eAAO,MAAM,aAAa;;;;;;;;oBAA+E,CAAC;AAE1G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA0G,CAAC;AAEnI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AACH,eAAO,MAAM,YAAY;;;;;;;;qBAKxB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,WAAW,6EAAsE,CAAC;AAE/F;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,eAAe,+DAAsD,CAAC;AAuFnF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,gBAAgB,EAkSvC,CAAC"}