rado 0.1.52 → 0.1.53

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 (149) hide show
  1. package/dist/CPU.20230126.092143.12244.0.001.cpuprofile +1 -0
  2. package/dist/Column.d.ts +54 -0
  3. package/dist/Column.js +63 -0
  4. package/dist/Cursor.d.ts +77 -0
  5. package/dist/Cursor.js +221 -0
  6. package/dist/Driver.d.ts +89 -0
  7. package/dist/Driver.js +262 -0
  8. package/dist/Expr.d.ts +149 -0
  9. package/dist/Expr.js +284 -0
  10. package/dist/Fields.d.ts +11 -0
  11. package/dist/Fields.js +0 -0
  12. package/dist/Formatter.d.ts +55 -0
  13. package/dist/Formatter.js +496 -0
  14. package/dist/Functions.d.ts +7 -0
  15. package/dist/Functions.js +11 -0
  16. package/dist/Id.d.ts +3 -0
  17. package/dist/Id.js +0 -0
  18. package/dist/Ops.d.ts +8 -0
  19. package/dist/Ops.js +45 -0
  20. package/dist/OrderBy.d.ts +9 -0
  21. package/dist/OrderBy.js +9 -0
  22. package/dist/Param.d.ts +15 -0
  23. package/dist/Param.js +18 -0
  24. package/dist/Query.d.ts +107 -0
  25. package/dist/Query.js +74 -0
  26. package/dist/Sanitizer.d.ts +4 -0
  27. package/dist/Sanitizer.js +0 -0
  28. package/dist/Schema.d.ts +23 -0
  29. package/dist/Schema.js +60 -0
  30. package/dist/Selection.d.ts +20 -0
  31. package/dist/Selection.js +7 -0
  32. package/dist/Statement.d.ts +57 -0
  33. package/dist/Statement.js +184 -0
  34. package/dist/Table.d.ts +56 -0
  35. package/dist/Table.js +104 -0
  36. package/dist/Target.d.ts +30 -0
  37. package/dist/Target.js +37 -0
  38. package/dist/Update.d.ts +4 -0
  39. package/dist/Update.js +0 -0
  40. package/dist/define/Column.d.ts +58 -58
  41. package/dist/define/Cursor.d.ts +85 -85
  42. package/dist/define/Expr.d.ts +154 -154
  43. package/dist/define/Fields.d.ts +13 -13
  44. package/dist/define/Functions.d.ts +5 -5
  45. package/dist/define/Id.d.ts +3 -3
  46. package/dist/define/Index.d.ts +17 -17
  47. package/dist/define/Ops.d.ts +7 -7
  48. package/dist/define/OrderBy.d.ts +9 -9
  49. package/dist/define/Param.d.ts +15 -15
  50. package/dist/define/Query.d.ts +109 -109
  51. package/dist/define/Schema.d.ts +18 -18
  52. package/dist/define/Selection.d.ts +20 -20
  53. package/dist/define/Table.d.ts +62 -62
  54. package/dist/define/Target.d.ts +38 -38
  55. package/dist/define/Update.d.ts +4 -4
  56. package/dist/driver/better-sqlite3.d.ts +15 -15
  57. package/dist/driver/bun-sqlite.d.ts +18 -18
  58. package/dist/driver/sql.js.d.ts +15 -15
  59. package/dist/driver/sqlite3.d.ts +18 -18
  60. package/dist/index.d.ts +21 -21
  61. package/dist/lib/Column.d.ts +57 -0
  62. package/dist/lib/Column.js +63 -0
  63. package/dist/lib/Cursor.d.ts +79 -0
  64. package/dist/lib/Cursor.js +231 -0
  65. package/dist/lib/Driver.d.ts +110 -110
  66. package/dist/lib/Expr.d.ts +154 -0
  67. package/dist/lib/Expr.js +284 -0
  68. package/dist/lib/Fields.d.ts +13 -0
  69. package/dist/lib/Fields.js +0 -0
  70. package/dist/lib/Formatter.d.ts +78 -67
  71. package/dist/lib/Formatter.js +13 -9
  72. package/dist/lib/Functions.d.ts +5 -0
  73. package/dist/lib/Functions.js +11 -0
  74. package/dist/lib/Id.d.ts +3 -0
  75. package/dist/lib/Id.js +0 -0
  76. package/dist/lib/Index.d.ts +17 -0
  77. package/dist/lib/Index.js +20 -0
  78. package/dist/lib/Ops.d.ts +8 -0
  79. package/dist/lib/Ops.js +45 -0
  80. package/dist/lib/OrderBy.d.ts +9 -0
  81. package/dist/lib/OrderBy.js +9 -0
  82. package/dist/lib/Param.d.ts +20 -0
  83. package/dist/lib/Param.js +27 -0
  84. package/dist/lib/Query.d.ts +109 -0
  85. package/dist/lib/Query.js +74 -0
  86. package/dist/lib/Sanitizer.d.ts +5 -5
  87. package/dist/lib/Schema.d.ts +18 -0
  88. package/dist/lib/Schema.js +67 -0
  89. package/dist/lib/Selection.d.ts +20 -0
  90. package/dist/lib/Selection.js +7 -0
  91. package/dist/lib/SqlError.d.ts +3 -3
  92. package/dist/lib/Statement.d.ts +33 -29
  93. package/dist/lib/Statement.js +10 -7
  94. package/dist/lib/Table.d.ts +62 -0
  95. package/dist/lib/Table.js +130 -0
  96. package/dist/lib/Target.d.ts +30 -0
  97. package/dist/lib/Target.js +37 -0
  98. package/dist/lib/Update.d.ts +4 -0
  99. package/dist/lib/Update.js +0 -0
  100. package/dist/sqlite/SqliteFormatter.d.ts +11 -11
  101. package/dist/sqlite/SqliteFunctions.d.ts +165 -165
  102. package/dist/sqlite/SqliteSchema.d.ts +25 -25
  103. package/dist/sqlite/index.d.ts +2 -0
  104. package/dist/sqlite/index.js +3 -0
  105. package/dist/sqlite.d.ts +2 -2
  106. package/dist/src/driver/better-sqlite3.js +49 -0
  107. package/dist/src/driver/sql.js.js +66 -0
  108. package/dist/src/driver/sqlite3.js +87 -0
  109. package/dist/src/index.js +24 -0
  110. package/dist/src/lib/Column.js +63 -0
  111. package/dist/src/lib/Cursor.js +231 -0
  112. package/dist/src/lib/Driver.js +316 -0
  113. package/dist/src/lib/Expr.js +284 -0
  114. package/dist/src/lib/Fields.js +0 -0
  115. package/dist/src/lib/Formatter.js +625 -0
  116. package/dist/src/lib/Functions.js +11 -0
  117. package/dist/src/lib/Id.js +0 -0
  118. package/dist/src/lib/Index.js +20 -0
  119. package/dist/src/lib/Ops.js +45 -0
  120. package/dist/src/lib/OrderBy.js +9 -0
  121. package/dist/src/lib/Param.js +27 -0
  122. package/dist/src/lib/Query.js +74 -0
  123. package/dist/src/lib/Sanitizer.js +0 -0
  124. package/dist/src/lib/Schema.js +67 -0
  125. package/dist/src/lib/Selection.js +7 -0
  126. package/dist/src/lib/Statement.js +103 -0
  127. package/dist/src/lib/Table.js +130 -0
  128. package/dist/src/lib/Target.js +37 -0
  129. package/dist/src/lib/Update.js +0 -0
  130. package/dist/src/sqlite/SqliteFormatter.js +67 -0
  131. package/dist/src/sqlite/SqliteFunctions.js +146 -0
  132. package/dist/src/sqlite/SqliteSchema.js +47 -0
  133. package/dist/src/sqlite.js +3 -0
  134. package/dist/test/DbSuite.js +28 -0
  135. package/dist/test/TSTestTypes.js +6 -0
  136. package/dist/test/TestBasic.js +172 -0
  137. package/dist/test/TestExtend.js +68 -0
  138. package/dist/test/TestFts5.js +34 -0
  139. package/dist/test/TestFunctions.js +28 -0
  140. package/dist/test/TestJoins.js +34 -0
  141. package/dist/test/TestJson.js +33 -0
  142. package/dist/test/TestPrepare.js +27 -0
  143. package/dist/test/TestRawSql.js +31 -0
  144. package/dist/test/TestSchema.js +69 -0
  145. package/dist/test/TestSubQueries.js +79 -0
  146. package/dist/test/TestTransaction.js +54 -0
  147. package/dist/test/TestUpdate.js +95 -0
  148. package/dist/test/index.js +14 -0
  149. package/package.json +60 -60
@@ -0,0 +1,54 @@
1
+ // test/TestTransaction.ts
2
+ import { test } from "uvu";
3
+ import * as assert from "uvu/assert";
4
+ import { column, table } from "../src/index.js";
5
+ import { connect } from "./DbSuite.js";
6
+ var User = table({
7
+ name: "User",
8
+ columns: {
9
+ id: column.integer().primaryKey(),
10
+ name: column.string()
11
+ }
12
+ });
13
+ test("Transaction", async () => {
14
+ const query = await connect();
15
+ const [_, bob] = await Promise.all([
16
+ query.transaction(async function(query2) {
17
+ await query2(User.createTable());
18
+ await query2(User.insertOne({ name: "Alice" }));
19
+ await query2(User.insertOne({ name: "Bob" }));
20
+ }),
21
+ query(User.first().where(User.name.is("Bob")))
22
+ ]);
23
+ assert.equal(bob?.name, "Bob");
24
+ });
25
+ test("Rollback", async () => {
26
+ const query = await connect();
27
+ await query(User.createTable());
28
+ await query.transaction(async function(query2) {
29
+ await query2(User.insertOne({ name: "Bob" }));
30
+ throw new Error("Rollback");
31
+ }).catch(() => {
32
+ });
33
+ const bob = await query(User.first().where(User.name.is("Bob")));
34
+ assert.is(bob, void 0);
35
+ });
36
+ test("Savepoints", async () => {
37
+ const query = await connect();
38
+ await query(User.createTable());
39
+ await query.transaction(async function(query2) {
40
+ await query2(User.insertOne({ name: "Bob" }));
41
+ await query2.transaction(async function(query3) {
42
+ await query3(User.insertOne({ name: "Ted" }));
43
+ throw new Error("Rollback");
44
+ }).catch(() => {
45
+ });
46
+ await query2(User.insertOne({ name: "Alice" }));
47
+ });
48
+ const users = await query(User);
49
+ assert.equal(users, [
50
+ { id: 1, name: "Bob" },
51
+ { id: 2, name: "Alice" }
52
+ ]);
53
+ });
54
+ test.run();
@@ -0,0 +1,95 @@
1
+ // test/TestUpdate.ts
2
+ import { test } from "uvu";
3
+ import * as assert from "uvu/assert";
4
+ import { column, table } from "../src/index.js";
5
+ import { connect } from "./DbSuite.js";
6
+ var User = table({
7
+ name: "user",
8
+ columns: {
9
+ id: column.integer().primaryKey(),
10
+ name: column.object(),
11
+ email: column.string().nullable(),
12
+ roles: column.array().nullable()
13
+ }
14
+ });
15
+ test("Update", async () => {
16
+ const query = await connect();
17
+ await query(User.createTable());
18
+ const user = await query(
19
+ User.insertOne({
20
+ name: {
21
+ given: "abc",
22
+ last: "test"
23
+ }
24
+ })
25
+ );
26
+ const res = await query(
27
+ User.set({
28
+ email: "test"
29
+ }).where(User.id.is(user.id))
30
+ );
31
+ assert.is(res.rowsAffected, 1);
32
+ assert.is((await query(User.first())).email, "test");
33
+ const res2 = await query(
34
+ User.set({
35
+ email: User.email.concat("@example.com")
36
+ }).where(User.id.is(user.id))
37
+ );
38
+ assert.is(res2.rowsAffected, 1);
39
+ assert.is((await query(User.first())).email, "test@example.com");
40
+ const res3 = await query(
41
+ User.set({
42
+ name: {
43
+ given: "def",
44
+ last: "okay"
45
+ }
46
+ }).where(User.id.is(user.id))
47
+ );
48
+ assert.is(res3.rowsAffected, 1);
49
+ assert.is((await query(User.first())).name.given, "def");
50
+ });
51
+ test("Update object", async () => {
52
+ const query = await connect();
53
+ await query(User.createTable());
54
+ const user = await query(
55
+ User.insertOne({
56
+ name: {
57
+ given: "abc",
58
+ last: "test"
59
+ }
60
+ })
61
+ );
62
+ const res = await query(
63
+ User.set({
64
+ name: {
65
+ given: "123",
66
+ last: "456"
67
+ }
68
+ }).where(User.id.is(user.id))
69
+ );
70
+ assert.is(res.rowsAffected, 1);
71
+ const user2 = await query(User.where(User.id.is(user.id)).first());
72
+ assert.is(user2.name.given, "123");
73
+ assert.is(user2.name.last, "456");
74
+ });
75
+ test("Update array", async () => {
76
+ const query = await connect();
77
+ await query(User.createTable());
78
+ const user = await query(
79
+ User.insertOne({
80
+ name: {
81
+ given: "abc",
82
+ last: "test"
83
+ }
84
+ })
85
+ );
86
+ const res = await query(
87
+ User.set({
88
+ roles: ["a", "b"]
89
+ }).where(User.id.is(user.id))
90
+ );
91
+ assert.is(res.rowsAffected, 1);
92
+ const user2 = await query(User.first().where(User.id.is(user.id)));
93
+ assert.equal(user2.roles, ["a", "b"]);
94
+ });
95
+ test.run();
@@ -0,0 +1,14 @@
1
+ // test/index.ts
2
+ import sade from "sade";
3
+ import { parse } from "uvu/parse";
4
+ import { run } from "uvu/run";
5
+ sade("test [pattern]", true).option("--driver", "Pick driver").action((pattern, opts) => {
6
+ process.env.TEST_DRIVER = opts.driver || "better-sqlite3";
7
+ parse("test", "Test*").then(
8
+ ({ suites }) => run(
9
+ suites.filter(
10
+ ({ name }) => pattern ? name.toLowerCase().includes(pattern) : name.startsWith("Test")
11
+ )
12
+ )
13
+ );
14
+ }).parse(process.argv);
package/package.json CHANGED
@@ -1,60 +1,60 @@
1
- {
2
- "name": "rado",
3
- "version": "0.1.52",
4
- "license": "MIT",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": "./dist/index.js",
10
- "./*": "./dist/*.js",
11
- "./driver/bun:sqlite": "./dist/driver/bun-sqlite.js"
12
- },
13
- "typesVersions": {
14
- "*": {
15
- "driver/bun:sqlite": [
16
- "./dist/driver/bun-sqlite.d.ts"
17
- ],
18
- "*": [
19
- "./dist/*",
20
- "./dist/index.d.ts"
21
- ]
22
- }
23
- },
24
- "files": [
25
- "dist"
26
- ],
27
- "sideEffects": false,
28
- "scripts": {
29
- "build": "tsc -p tsconfig.build.json && tsx build.ts",
30
- "test": "tsx test",
31
- "test:bun": "bun test/index.ts --driver=bun:sqlite",
32
- "profile": "cross-env PROFILE=true tsx build.ts && cd bin && (rimraf CPU*.cpuprofile || true) && node --cpu-prof --cpu-prof-interval=100 test && speedscope CPU*.cpuprofile",
33
- "prepublishOnly": "tsc -p tsconfig.build.json && tsx build.ts"
34
- },
35
- "devDependencies": {
36
- "@types/better-sqlite3": "^5.4.1",
37
- "@types/glob": "^8.0.0",
38
- "@types/sql.js": "^1.4.2",
39
- "better-sqlite3": "^7.5.1",
40
- "bun-types": "^0.5.0",
41
- "cross-env": "^7.0.3",
42
- "esbuild": "^0.16.16",
43
- "glob": "^8.0.3",
44
- "rimraf": "^4.1.2",
45
- "sade": "^1.8.1",
46
- "speedscope": "^1.15.0",
47
- "sql.js": "^1.8.0",
48
- "sqlite3": "^5.1.4",
49
- "tsx": "^3.12.1",
50
- "typescript": "next",
51
- "uvu": "^0.5.6"
52
- },
53
- "volta": {
54
- "node": "18.12.1"
55
- },
56
- "packageManager": "yarn@3.3.1",
57
- "resolutions": {
58
- "esbuild": "0.16.16"
59
- }
60
- }
1
+ {
2
+ "name": "rado",
3
+ "version": "0.1.53",
4
+ "license": "MIT",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": "./dist/index.js",
10
+ "./*": "./dist/*.js",
11
+ "./driver/bun:sqlite": "./dist/driver/bun-sqlite.js"
12
+ },
13
+ "typesVersions": {
14
+ "*": {
15
+ "driver/bun:sqlite": [
16
+ "./dist/driver/bun-sqlite.d.ts"
17
+ ],
18
+ "*": [
19
+ "./dist/*",
20
+ "./dist/index.d.ts"
21
+ ]
22
+ }
23
+ },
24
+ "files": [
25
+ "dist"
26
+ ],
27
+ "sideEffects": false,
28
+ "scripts": {
29
+ "build": "tsc -p tsconfig.build.json && tsx build.ts",
30
+ "test": "tsx test",
31
+ "test:bun": "bun test/index.ts --driver=bun:sqlite",
32
+ "profile": "cross-env PROFILE=true tsx build.ts && cd bin && (rimraf CPU*.cpuprofile || true) && node --cpu-prof --cpu-prof-interval=100 test && speedscope CPU*.cpuprofile",
33
+ "prepublishOnly": "tsc -p tsconfig.build.json && tsx build.ts"
34
+ },
35
+ "devDependencies": {
36
+ "@types/better-sqlite3": "^5.4.1",
37
+ "@types/glob": "^8.0.0",
38
+ "@types/sql.js": "^1.4.2",
39
+ "better-sqlite3": "^7.5.1",
40
+ "bun-types": "^0.5.0",
41
+ "cross-env": "^7.0.3",
42
+ "esbuild": "^0.16.16",
43
+ "glob": "^8.0.3",
44
+ "rimraf": "^4.1.2",
45
+ "sade": "^1.8.1",
46
+ "speedscope": "^1.15.0",
47
+ "sql.js": "^1.8.0",
48
+ "sqlite3": "^5.1.4",
49
+ "tsx": "^3.12.1",
50
+ "typescript": "next",
51
+ "uvu": "^0.5.6"
52
+ },
53
+ "volta": {
54
+ "node": "18.12.1"
55
+ },
56
+ "packageManager": "yarn@3.3.1",
57
+ "resolutions": {
58
+ "esbuild": "0.16.16"
59
+ }
60
+ }