alinea 2.0.0-preview.7 → 2.0.0-preview.8
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.
- package/dist/.init/content/pages/welcome.json +1 -1
- package/dist/LICENSES.md +120 -120
- package/dist/adapter/next/cms.d.ts +18 -4
- package/dist/adapter/next/cms.js +125 -36
- package/dist/adapter/next/handler.d.ts +5 -1
- package/dist/adapter/next/handler.js +14 -7
- package/dist/adapter/next/node.d.ts +5 -0
- package/dist/adapter/next/node.js +16 -0
- package/dist/adapter/next/previews.d.ts +4 -1
- package/dist/adapter/next/previews.js +13 -1
- package/dist/adapter/next/renderStats.d.ts +24 -0
- package/dist/adapter/next/renderStats.js +74 -0
- package/dist/adapter/next/syncCheck.d.ts +8 -2
- package/dist/adapter/next/syncCheck.js +3 -3
- package/dist/adapter/next/with-alinea.js +0 -18
- package/dist/backend/Handler.d.ts +2 -2
- package/dist/backend/Handler.js +33 -12
- package/dist/backend/api/CreateBackend.js +15 -3
- package/dist/backend/api/DatabaseApi.js +22 -135
- package/dist/backend/api/database.js +15 -3
- package/dist/backend/resolver/ParsePreview.d.ts +2 -2
- package/dist/backend/router/NodeHandler.js +2 -0
- package/dist/backend/store/GeneratedDatabase.d.ts +5 -0
- package/dist/backend/store/GeneratedDatabase.js +31 -0
- package/dist/backend/store/GeneratedDatabaseNode.d.ts +4 -0
- package/dist/backend/store/GeneratedDatabaseNode.js +35 -0
- package/dist/backend/util/ORM.js +4 -2
- package/dist/bundled.d.ts +1470 -442
- package/dist/chunks/bun-sqlite-ZZDB7YQQ.js +18 -0
- package/dist/chunks/chunk-2BJ2IFQM.js +1085 -0
- package/dist/chunks/chunk-2PIFHEYR.js +364 -0
- package/dist/chunks/{chunk-X47OVDF3.js → chunk-2U43BB6P.js} +356 -1000
- package/dist/chunks/chunk-76VMZTLN.js +55 -0
- package/dist/chunks/chunk-A42DP5T7.js +94 -0
- package/dist/chunks/chunk-ATF42T2B.js +35 -0
- package/dist/chunks/{chunk-NWQXN4SB.js → chunk-ETBQTP2S.js} +40 -29
- package/dist/chunks/chunk-IL7FJQAY.js +94 -0
- package/dist/chunks/chunk-K62JP6HR.js +22 -0
- package/dist/chunks/chunk-K7LHQXI4.js +103 -0
- package/dist/chunks/chunk-M7KDJEGH.js +495 -0
- package/dist/chunks/chunk-N47Y62CI.js +396 -0
- package/dist/chunks/chunk-NLZLRQ5U.js +100 -0
- package/dist/chunks/chunk-QBPYWU6C.js +24 -0
- package/dist/chunks/{chunk-6P4UVRPH.js → chunk-RWWYUNVX.js} +2 -1
- package/dist/chunks/chunk-TFMUSWGG.js +605 -0
- package/dist/chunks/{chunk-I4GC3E65.js → chunk-UPY2RUZF.js} +0 -1
- package/dist/chunks/chunk-XCZXR3C2.js +112 -0
- package/dist/chunks/chunk-XTWYBWP2.js +81 -0
- package/dist/chunks/node-sqlite-7CSGL27V.js +18 -0
- package/dist/cli/Generate.js +74 -64
- package/dist/cli/Serve.js +1 -1
- package/dist/cli/bin.js +2 -1
- package/dist/cli/generate/CopyStaticFiles.js +17 -14
- package/dist/cli/generate/DevDB.d.ts +22 -5
- package/dist/cli/generate/DevDB.js +136 -24
- package/dist/cli/serve/CreateLocalServer.js +22 -4
- package/dist/cli/serve/LiveReload.d.ts +1 -1
- package/dist/cli/serve/LiveReload.js +3 -0
- package/dist/cloud/CloudRemote.js +2 -1
- package/dist/components/Calendar.js +6 -6
- package/dist/components/Checkbox.js +3 -3
- package/dist/components/ColorSwatchPicker.js +2 -2
- package/dist/components/ComboBox.js +9 -9
- package/dist/components/DateField.js +1 -1
- package/dist/components/DatePicker.js +6 -6
- package/dist/components/DateRangePicker.js +6 -6
- package/dist/components/Disclosure.js +9 -9
- package/dist/components/Label.js +5 -5
- package/dist/components/List.js +33 -33
- package/dist/components/Menu.js +3 -3
- package/dist/components/Modal.js +3 -3
- package/dist/components/MultipleSelect.js +25 -25
- package/dist/components/NumberField.js +6 -6
- package/dist/components/ProgressCircle.js +3 -3
- package/dist/components/RadioGroup.js +2 -2
- package/dist/components/SearchField.js +5 -5
- package/dist/components/Select.js +7 -7
- package/dist/components/Surface.js +2 -2
- package/dist/components/Table.js +6 -6
- package/dist/components/Tabs.js +2 -2
- package/dist/components/TextField.js +6 -6
- package/dist/components/Toggle.js +2 -2
- package/dist/components/Toolbar.js +2 -2
- package/dist/components/Tooltip.js +4 -4
- package/dist/components/Tree.d.ts +2 -1
- package/dist/components/Tree.js +5 -5
- package/dist/core/Document.js +15 -3
- package/dist/core/Entry.d.ts +3 -0
- package/dist/core/Entry.js +4 -0
- package/dist/core/EntrySeed.d.ts +19 -0
- package/dist/core/EntrySeed.js +136 -0
- package/dist/core/Field.d.ts +7 -0
- package/dist/core/Field.js +4 -0
- package/dist/core/Filter.d.ts +40 -2
- package/dist/core/Filter.js +145 -0
- package/dist/core/Graph.d.ts +9 -0
- package/dist/core/ListRow.d.ts +1 -0
- package/dist/core/ListRow.js +1 -0
- package/dist/core/Reference.d.ts +1 -0
- package/dist/core/Root.js +1 -1
- package/dist/core/Scope.d.ts +2 -0
- package/dist/core/Scope.js +16 -1
- package/dist/core/Type.d.ts +2 -1
- package/dist/core/Type.js +13 -1
- package/dist/core/db/EntryAliases.js +1 -11
- package/dist/core/db/EntryReference.d.ts +0 -6
- package/dist/core/db/IndexEvent.d.ts +2 -1
- package/dist/core/db/IndexEvent.js +11 -3
- package/dist/core/db/LinkResolver.d.ts +6 -6
- package/dist/core/db/LinkResolver.js +0 -52
- package/dist/core/db/LocalStore.d.ts +25 -0
- package/dist/core/field/ListField.js +19 -0
- package/dist/core/field/RecordField.js +8 -0
- package/dist/core/field/RichTextField.js +42 -0
- package/dist/core/field/UnionField.js +8 -0
- package/dist/core/source/FSSource.d.ts +14 -2
- package/dist/core/source/FSSource.js +58 -13
- package/dist/core/source/GitUtils.d.ts +4 -0
- package/dist/core/source/GitUtils.js +9 -10
- package/dist/core/source/GithubSource.js +22 -11
- package/dist/core/source/IndexedDBSource.d.ts +2 -1
- package/dist/core/source/IndexedDBSource.js +67 -53
- package/dist/core/source/MemorySource.js +5 -3
- package/dist/core/source/OverlaySource.d.ts +5 -2
- package/dist/core/source/OverlaySource.js +31 -3
- package/dist/core/source/Source.d.ts +3 -0
- package/dist/core/source/Source.js +15 -2
- package/dist/core/source/Tree.d.ts +10 -7
- package/dist/core/source/Tree.js +118 -70
- package/dist/core/source/Utils.js +6 -3
- package/dist/core/util/Arrays.d.ts +1 -0
- package/dist/core/util/Arrays.js +10 -0
- package/dist/core/util/Async.d.ts +7 -0
- package/dist/core/util/Async.js +15 -0
- package/dist/core/util/Checks.js +1 -1
- package/dist/core/util/EntryFilenames.d.ts +22 -1
- package/dist/core/util/EntryFilenames.js +56 -2
- package/dist/core/util/IndexedDB.d.ts +4 -0
- package/dist/core/util/IndexedDB.js +20 -0
- package/dist/core/util/Paths.js +5 -1
- package/dist/dashboard/App.js +3 -3
- package/dist/dashboard/ViewKeys.d.ts +1 -0
- package/dist/dashboard/ViewKeys.js +1 -0
- package/dist/dashboard/app/AccessDenied.js +4 -4
- package/dist/dashboard/app/ActivityStatus.js +11 -11
- package/dist/dashboard/app/AppShell.js +2 -2
- package/dist/dashboard/app/AuthView.js +9 -9
- package/dist/dashboard/app/Badge.js +2 -2
- package/dist/dashboard/app/CompactField.js +10 -10
- package/dist/dashboard/app/DashboardErrorBoundary.js +6 -6
- package/dist/dashboard/app/EntryFields.js +2 -2
- package/dist/dashboard/app/EntryHeader.js +10 -10
- package/dist/dashboard/app/EntryReferences.js +8 -8
- package/dist/dashboard/app/EntrySidebar.js +8 -8
- package/dist/dashboard/app/EntrySidebarPreview.js +11 -11
- package/dist/dashboard/app/EntryTranslationBanner.js +6 -6
- package/dist/dashboard/app/Explorer.js +44 -44
- package/dist/dashboard/app/ExplorerCards.js +30 -30
- package/dist/dashboard/app/ExplorerFileCard.js +17 -17
- package/dist/dashboard/app/ExplorerList.js +14 -14
- package/dist/dashboard/app/ExplorerModal.js +5 -5
- package/dist/dashboard/app/ExplorerTable.js +47 -47
- package/dist/dashboard/app/LinkPicker.js +2 -2
- package/dist/dashboard/app/LocaleMenu.js +6 -6
- package/dist/dashboard/app/SidebarTree.js +76 -40
- package/dist/dashboard/app/WorkspaceMenu.js +10 -10
- package/dist/dashboard/app/WorkspaceRoots.js +27 -27
- package/dist/dashboard/app/editor/FileEditor.js +24 -24
- package/dist/dashboard/app/editor/FilePreview.js +6 -6
- package/dist/dashboard/app/modals/CreateEntry.js +4 -4
- package/dist/dashboard/app/pages/EntryPage.js +15 -15
- package/dist/dashboard/app/pages/RootPage.js +3 -3
- package/dist/dashboard/app/pages/SplashPage.js +47 -47
- package/dist/dashboard/app/pages/UsersPage.js +36 -36
- package/dist/dashboard/app/ui/DashboardModal.js +17 -17
- package/dist/dashboard/app/ui/Rail.js +4 -4
- package/dist/dashboard/atoms/config.d.ts +4 -4
- package/dist/dashboard/atoms/entry.d.ts +8 -9
- package/dist/dashboard/atoms/entry.js +34 -4
- package/dist/dashboard/atoms/explorer.d.ts +2 -0
- package/dist/dashboard/atoms/explorer.js +7 -2
- package/dist/dashboard/boot/Boot.js +2 -3
- package/dist/dashboard/boot/DashboardWorker.d.ts +3 -3
- package/dist/dashboard/boot/DashboardWorker.js +78 -27
- package/dist/dashboard/boot/LoadWorker.js +2 -3
- package/dist/dashboard/icons.d.ts +2 -0
- package/dist/dashboard/icons.js +40 -0
- package/dist/dashboard/plugins/alineaFixturePlugin.js +14 -3
- package/dist/database/BrowserEntryStore.d.ts +30 -0
- package/dist/database/BrowserEntryStore.js +168 -0
- package/dist/database/DatabaseSource.d.ts +13 -0
- package/dist/database/DatabaseSource.js +25 -0
- package/dist/database/DatabaseTables.d.ts +38 -0
- package/dist/database/DatabaseTables.js +53 -0
- package/dist/database/EntryDatabase.d.ts +21 -0
- package/dist/database/EntryDatabase.js +138 -0
- package/dist/database/EntryLayer.d.ts +93 -0
- package/dist/database/EntryLayer.js +459 -0
- package/dist/database/EntryStore.d.ts +60 -0
- package/dist/database/EntryStore.js +269 -0
- package/dist/database/EntryTransaction.d.ts +33 -0
- package/dist/database/EntryTransaction.js +889 -0
- package/dist/database/EntryUrlAliases.d.ts +2 -0
- package/dist/database/EntryUrlAliases.js +69 -0
- package/dist/database/LocalDB.d.ts +39 -0
- package/dist/database/LocalDB.js +79 -0
- package/dist/database/Version.d.ts +9 -0
- package/dist/database/Version.js +13 -0
- package/dist/database/driver/RuntimeDatabase.d.ts +8 -0
- package/dist/database/driver/RuntimeDatabase.js +33 -0
- package/dist/database/driver/WasmDatabase.d.ts +8 -0
- package/dist/database/driver/WasmDatabase.js +33 -0
- package/dist/database/entry/EntryData.d.ts +13 -0
- package/dist/database/entry/EntryData.js +51 -0
- package/dist/database/entry/EntryTable.d.ts +173 -0
- package/dist/database/entry/EntryTable.js +137 -0
- package/dist/database/entry/EntryView.d.ts +22 -0
- package/dist/database/entry/EntryView.js +106 -0
- package/dist/database/query/Condition.d.ts +8 -0
- package/dist/database/query/Condition.js +117 -0
- package/dist/database/query/EntryQuery.d.ts +43 -0
- package/dist/database/query/EntryQuery.js +414 -0
- package/dist/database/query/EntryReferences.d.ts +6 -0
- package/dist/database/query/EntryReferences.js +68 -0
- package/dist/database/query/Relation.d.ts +11 -0
- package/dist/database/query/Relation.js +113 -0
- package/dist/database/query/ResolveQuery.d.ts +15 -0
- package/dist/database/query/ResolveQuery.js +154 -0
- package/dist/database/query/Search.d.ts +47 -0
- package/dist/database/query/Search.js +169 -0
- package/dist/database/sync/Derive.d.ts +8 -0
- package/dist/database/sync/Derive.js +270 -0
- package/dist/database/sync/EntryParser.d.ts +4 -0
- package/dist/database/sync/EntryParser.js +87 -0
- package/dist/database/sync/EntrySyncer.d.ts +37 -0
- package/dist/database/sync/EntrySyncer.js +117 -0
- package/dist/database/sync/Ingest.d.ts +21 -0
- package/dist/database/sync/Ingest.js +136 -0
- package/dist/database/sync/SyncQueries.d.ts +157 -0
- package/dist/database/sync/SyncQueries.js +192 -0
- package/dist/field/code/CodeField.view.js +12 -12
- package/dist/field/link/LinkField.js +23 -0
- package/dist/field/link/LinkField.view.js +41 -40
- package/dist/field/list/ListField.view.js +177 -155
- package/dist/field/metadata/MetadataField.d.ts +28 -3
- package/dist/field/metadata/MetadataField.js +44 -7
- package/dist/field/metadata/MetadataField.view.d.ts +5 -0
- package/dist/field/metadata/MetadataField.view.js +34 -19
- package/dist/field/richtext/RichTextBlock.js +2 -2
- package/dist/field/richtext/RichTextDocument.js +4 -3
- package/dist/field/richtext/RichTextExtensions.d.ts +1 -1
- package/dist/field/richtext/RichTextExtensions.js +32 -28
- package/dist/field/richtext/RichTextField.view.js +15 -6
- package/dist/field/views.js +2 -0
- package/dist/next.cjs +0 -18
- package/dist/next.d.ts +4 -3
- package/dist/next.edge.d.ts +1 -1
- package/dist/next.js +1 -2
- package/dist/picker/entry/EntryPicker.js +2 -1
- package/dist/picker/url/UrlPicker.js +1 -0
- package/dist/preview/widget.d.ts +16 -0
- package/dist/preview/widget.js +70 -1
- package/dist/query.d.ts +28 -0
- package/package.json +2 -1
- package/dist/backend/store/GeneratedSource.d.ts +0 -2
- package/dist/backend/store/GeneratedSource.js +0 -21
- package/dist/chunks/chunk-G6E35DMJ.js +0 -1997
- package/dist/core/db/EntryDB.d.ts +0 -19
- package/dist/core/db/EntryDB.js +0 -48
- package/dist/core/db/EntryIndex.d.ts +0 -143
- package/dist/core/db/EntryIndex.js +0 -2773
- package/dist/core/db/EntryReferenceIndex.d.ts +0 -21
- package/dist/core/db/EntryReferenceIndex.js +0 -131
- package/dist/core/db/EntryResolver.d.ts +0 -56
- package/dist/core/db/EntryResolver.js +0 -699
- package/dist/core/db/EntryTarget.d.ts +0 -5
- package/dist/core/db/EntryTransaction.d.ts +0 -31
- package/dist/core/db/EntryTransaction.js +0 -956
- package/dist/core/db/LocalDB.d.ts +0 -42
- package/dist/core/db/LocalDB.js +0 -127
- package/dist/core/db/TestDB.d.ts +0 -19
- package/dist/core/db/TestDB.js +0 -50
- /package/dist/core/db/{EntryTarget.js → LocalStore.js} +0 -0
|
@@ -1,45 +1,80 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
connect
|
|
3
|
+
} from "./chunk-A42DP5T7.js";
|
|
4
|
+
import {
|
|
5
|
+
connect as connect2
|
|
6
|
+
} from "./chunk-NLZLRQ5U.js";
|
|
7
|
+
import {
|
|
8
|
+
connect as connect3
|
|
9
|
+
} from "./chunk-IL7FJQAY.js";
|
|
10
|
+
import {
|
|
11
|
+
Dialect,
|
|
12
|
+
Emitter,
|
|
13
|
+
NamedParam,
|
|
14
|
+
ReusedStatement,
|
|
15
|
+
StatementCache,
|
|
16
|
+
ValueParam,
|
|
17
|
+
execTransaction,
|
|
18
|
+
sqliteDialect,
|
|
19
|
+
sqliteDiff
|
|
20
|
+
} from "./chunk-M7KDJEGH.js";
|
|
21
|
+
import {
|
|
22
|
+
AsyncDatabase,
|
|
23
|
+
Batch,
|
|
24
|
+
SyncDatabase,
|
|
25
|
+
txGenerator
|
|
26
|
+
} from "./chunk-N47Y62CI.js";
|
|
27
|
+
import {
|
|
7
28
|
and,
|
|
8
29
|
asc,
|
|
9
|
-
boolean,
|
|
10
|
-
column,
|
|
11
|
-
columnConfig,
|
|
12
30
|
eq,
|
|
13
|
-
formatColumn,
|
|
14
31
|
gt,
|
|
15
|
-
integer,
|
|
16
32
|
isNotNull,
|
|
17
33
|
isNull,
|
|
18
34
|
like,
|
|
19
35
|
not,
|
|
20
|
-
oid,
|
|
21
36
|
or,
|
|
37
|
+
when
|
|
38
|
+
} from "./chunk-XCZXR3C2.js";
|
|
39
|
+
import {
|
|
40
|
+
Column,
|
|
41
|
+
boolean,
|
|
42
|
+
column,
|
|
43
|
+
formatColumn,
|
|
44
|
+
integer,
|
|
45
|
+
oid,
|
|
22
46
|
primaryKeyColumns,
|
|
23
47
|
table,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
} from "./chunk-
|
|
48
|
+
tableFields,
|
|
49
|
+
text
|
|
50
|
+
} from "./chunk-TFMUSWGG.js";
|
|
51
|
+
import {
|
|
52
|
+
Field,
|
|
53
|
+
selection
|
|
54
|
+
} from "./chunk-2PIFHEYR.js";
|
|
55
|
+
import {
|
|
56
|
+
Functions
|
|
57
|
+
} from "./chunk-K62JP6HR.js";
|
|
58
|
+
import {
|
|
59
|
+
input
|
|
60
|
+
} from "./chunk-ATF42T2B.js";
|
|
27
61
|
import {
|
|
28
|
-
Sql,
|
|
29
|
-
getCreate,
|
|
30
62
|
getData,
|
|
31
|
-
|
|
63
|
+
getField,
|
|
32
64
|
getQuery,
|
|
33
|
-
getResolver,
|
|
34
65
|
getSelection,
|
|
35
66
|
getSql,
|
|
36
67
|
getTable,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
68
|
+
hasField,
|
|
69
|
+
hasSql,
|
|
70
|
+
internalCreate,
|
|
71
|
+
internalData,
|
|
72
|
+
internalDrop,
|
|
73
|
+
internalQuery,
|
|
74
|
+
internalSelection,
|
|
75
|
+
internalTarget,
|
|
41
76
|
sql
|
|
42
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-ETBQTP2S.js";
|
|
43
78
|
import {
|
|
44
79
|
__export
|
|
45
80
|
} from "./chunk-CQ52GEHY.js";
|
|
@@ -47,17 +82,17 @@ import {
|
|
|
47
82
|
// node_modules/rado/dist/driver.js
|
|
48
83
|
var driver_exports = {};
|
|
49
84
|
__export(driver_exports, {
|
|
50
|
-
"@electric-sql/pglite": () =>
|
|
51
|
-
"@libsql/client": () =>
|
|
52
|
-
"@neondatabase/serverless": () =>
|
|
53
|
-
"@vercel/postgres": () =>
|
|
54
|
-
"better-sqlite3": () =>
|
|
55
|
-
"bun:sqlite": () =>
|
|
56
|
-
d1: () =>
|
|
57
|
-
mysql2: () =>
|
|
58
|
-
"node:sqlite": () =>
|
|
59
|
-
pg: () =>
|
|
60
|
-
"sql.js": () =>
|
|
85
|
+
"@electric-sql/pglite": () => connect9,
|
|
86
|
+
"@libsql/client": () => connect6,
|
|
87
|
+
"@neondatabase/serverless": () => connect8,
|
|
88
|
+
"@vercel/postgres": () => connect8,
|
|
89
|
+
"better-sqlite3": () => connect4,
|
|
90
|
+
"bun:sqlite": () => connect,
|
|
91
|
+
d1: () => connect5,
|
|
92
|
+
mysql2: () => connect7,
|
|
93
|
+
"node:sqlite": () => connect2,
|
|
94
|
+
pg: () => connect8,
|
|
95
|
+
"sql.js": () => connect3
|
|
61
96
|
});
|
|
62
97
|
|
|
63
98
|
// node_modules/rado/dist/universal/functions.js
|
|
@@ -76,785 +111,213 @@ function concat(...slices) {
|
|
|
76
111
|
});
|
|
77
112
|
}
|
|
78
113
|
|
|
79
|
-
// node_modules/rado/dist/
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (inner instanceof Promise)
|
|
85
|
-
return inner.then(iter.next.bind(iter)).catch(iter.throw.bind(iter)).then(handle);
|
|
86
|
-
try {
|
|
87
|
-
return handle(iter.next(inner));
|
|
88
|
-
} catch (err) {
|
|
89
|
-
return handle(iter.throw(err));
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
const handle = ({ done, value }) => {
|
|
93
|
-
if (done) return value;
|
|
94
|
-
return next(typeof value === "function" ? tx.transaction(value) : value);
|
|
95
|
-
};
|
|
96
|
-
return next();
|
|
114
|
+
// node_modules/rado/dist/core/View.js
|
|
115
|
+
var ViewBase = class {
|
|
116
|
+
[internalData];
|
|
117
|
+
constructor(data) {
|
|
118
|
+
this[internalData] = data;
|
|
97
119
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
120
|
+
};
|
|
121
|
+
function viewIdentifier({ name, schemaName }) {
|
|
122
|
+
return schemaName ? sql.join([sql.identifier(schemaName), sql.identifier(name)], sql`.`) : sql.identifier(name);
|
|
123
|
+
}
|
|
124
|
+
function createView(data, as) {
|
|
125
|
+
const createKeyword = data.materialized ? sql`create materialized view` : sql`create view`;
|
|
126
|
+
const { columns, columnNames } = data;
|
|
127
|
+
const columnList = columnNames ? sql.join(
|
|
128
|
+
columnNames.map((name) => sql.identifier(name)),
|
|
129
|
+
sql`, `
|
|
130
|
+
) : columns ? sql.join(
|
|
131
|
+
Object.entries(columns).map(([name, column2]) => {
|
|
132
|
+
const columnData = getData(column2);
|
|
133
|
+
return sql.identifier(columnData.name ?? name);
|
|
134
|
+
}),
|
|
135
|
+
sql`, `
|
|
136
|
+
) : void 0;
|
|
137
|
+
return sql.join([
|
|
138
|
+
createKeyword,
|
|
139
|
+
viewIdentifier(data),
|
|
140
|
+
columnList ? sql`(${columnList})` : void 0,
|
|
141
|
+
sql`as`,
|
|
142
|
+
as
|
|
143
|
+
]).inlineValues();
|
|
144
|
+
}
|
|
145
|
+
function viewColumnNames(input2) {
|
|
146
|
+
const expr = getSql(input2);
|
|
147
|
+
if (expr) {
|
|
148
|
+
if (hasField(input2)) return [getField(input2).fieldName];
|
|
149
|
+
if (expr.alias) return [expr.alias];
|
|
150
|
+
throw new Error("Missing field name");
|
|
151
|
+
}
|
|
152
|
+
return Object.entries(input2).flatMap(([name, value]) => {
|
|
153
|
+
const expr2 = getSql(value);
|
|
154
|
+
if (expr2 && !hasField(value)) return [expr2.alias ?? name];
|
|
155
|
+
return viewColumnNames(value);
|
|
102
156
|
});
|
|
103
157
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
158
|
+
function viewFields(alias, source) {
|
|
159
|
+
return Object.fromEntries(
|
|
160
|
+
Object.entries(source).map(([key, value]) => {
|
|
161
|
+
if (value && typeof value === "object" && !hasSql(value))
|
|
162
|
+
return [key, viewFields(alias, value)];
|
|
163
|
+
const fieldName = hasField(value) ? getField(value).fieldName : key;
|
|
164
|
+
return [key, new Field(alias, fieldName, getSql(value))];
|
|
165
|
+
})
|
|
166
|
+
);
|
|
108
167
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const mapRow = isSelection ? getSelection(query).mapRow : void 0;
|
|
125
|
-
const emitter = this.#dialect.emit(query);
|
|
126
|
-
const stmt = this.#driver.prepare(emitter.sql, {
|
|
127
|
-
isSelection,
|
|
128
|
-
name
|
|
129
|
-
});
|
|
130
|
-
return new PreparedStatement(emitter, stmt, mapRow, this.#driver);
|
|
131
|
-
}
|
|
132
|
-
batch(queries) {
|
|
133
|
-
return new Batch(
|
|
134
|
-
this.#driver,
|
|
135
|
-
queries.map((query) => {
|
|
136
|
-
const isSelection = hasSelection(query);
|
|
137
|
-
const mapRow = isSelection ? getSelection(query).mapRow : void 0;
|
|
138
|
-
const emitter = this.#dialect.emit(query);
|
|
139
|
-
return { sql: emitter.sql, params: emitter.bind(), isSelection, mapRow };
|
|
140
|
-
})
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
var Batch = class {
|
|
145
|
-
#driver;
|
|
146
|
-
#queries;
|
|
147
|
-
constructor(driver, queries) {
|
|
148
|
-
this.#driver = driver;
|
|
149
|
-
this.#queries = queries;
|
|
150
|
-
}
|
|
151
|
-
#transform = (results) => {
|
|
152
|
-
const ctx = {
|
|
153
|
-
values: void 0,
|
|
154
|
-
index: 0,
|
|
155
|
-
specs: this.#driver
|
|
168
|
+
function dropView(data) {
|
|
169
|
+
const dropKeyword = data.materialized ? sql`drop materialized view` : sql`drop view`;
|
|
170
|
+
return sql.join([dropKeyword, sql`if exists`, viewIdentifier(data)]);
|
|
171
|
+
}
|
|
172
|
+
var QueryView = class extends ViewBase {
|
|
173
|
+
as(query) {
|
|
174
|
+
const data = getData(this);
|
|
175
|
+
const input2 = getSelection(query).input;
|
|
176
|
+
const target = {
|
|
177
|
+
[internalTarget]: viewIdentifier(data),
|
|
178
|
+
...viewFields(data.name, input2)
|
|
179
|
+
};
|
|
180
|
+
const createData = {
|
|
181
|
+
...data,
|
|
182
|
+
columnNames: viewColumnNames(input2)
|
|
156
183
|
};
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
184
|
+
return {
|
|
185
|
+
...target,
|
|
186
|
+
[internalSelection]: selection(target),
|
|
187
|
+
[internalQuery]: getQuery(query),
|
|
188
|
+
get [internalCreate]() {
|
|
189
|
+
const result = createView(createData, getQuery(query));
|
|
190
|
+
return [result];
|
|
191
|
+
},
|
|
192
|
+
get [internalDrop]() {
|
|
193
|
+
return [dropView(data)];
|
|
165
194
|
}
|
|
166
|
-
}
|
|
167
|
-
return results;
|
|
168
|
-
};
|
|
169
|
-
execute() {
|
|
170
|
-
const results = this.#driver.batch(this.#queries);
|
|
171
|
-
if (results instanceof Promise) return results.then(this.#transform);
|
|
172
|
-
return this.#transform(results);
|
|
173
|
-
}
|
|
174
|
-
};
|
|
175
|
-
var PreparedStatement = class {
|
|
176
|
-
#emitter;
|
|
177
|
-
#stmt;
|
|
178
|
-
#mapRow;
|
|
179
|
-
#specs;
|
|
180
|
-
constructor(emitter, stmt, mapRow, specs) {
|
|
181
|
-
this.#emitter = emitter;
|
|
182
|
-
this.#stmt = stmt;
|
|
183
|
-
this.#mapRow = mapRow;
|
|
184
|
-
this.#specs = specs;
|
|
185
|
-
}
|
|
186
|
-
#transform = (rows) => {
|
|
187
|
-
if (!this.#mapRow) return rows;
|
|
188
|
-
const ctx = {
|
|
189
|
-
values: void 0,
|
|
190
|
-
index: 0,
|
|
191
|
-
specs: this.#specs
|
|
192
195
|
};
|
|
193
|
-
for (let i = 0; i < rows.length; i++) {
|
|
194
|
-
ctx.values = rows[i];
|
|
195
|
-
ctx.index = 0;
|
|
196
|
-
rows[i] = this.#mapRow(ctx);
|
|
197
|
-
}
|
|
198
|
-
return rows;
|
|
199
|
-
};
|
|
200
|
-
all(inputs) {
|
|
201
|
-
const rows = this.#stmt.values(this.#emitter.bind(inputs));
|
|
202
|
-
if (rows instanceof Promise) return rows.then(this.#transform);
|
|
203
|
-
return this.#transform(rows);
|
|
204
|
-
}
|
|
205
|
-
get(inputs) {
|
|
206
|
-
const rows = this.all(inputs);
|
|
207
|
-
if (rows instanceof Promise) return rows.then((rows2) => rows2[0]);
|
|
208
|
-
return rows[0];
|
|
209
|
-
}
|
|
210
|
-
run(inputs) {
|
|
211
|
-
return this.#stmt.run(this.#emitter.bind(inputs));
|
|
212
|
-
}
|
|
213
|
-
async execute(inputs) {
|
|
214
|
-
return this.all(inputs);
|
|
215
|
-
}
|
|
216
|
-
free() {
|
|
217
|
-
this.#stmt.free();
|
|
218
196
|
}
|
|
219
197
|
};
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
this[internalResolver] = resolver;
|
|
231
|
-
this.driver = driver;
|
|
232
|
-
this.dialect = dialect;
|
|
233
|
-
this.diff = diff;
|
|
234
|
-
}
|
|
235
|
-
close() {
|
|
236
|
-
return this.driver.close();
|
|
237
|
-
}
|
|
238
|
-
[Symbol.dispose]() {
|
|
239
|
-
this.close();
|
|
240
|
-
}
|
|
241
|
-
async [Symbol.asyncDispose]() {
|
|
242
|
-
return this.close();
|
|
243
|
-
}
|
|
244
|
-
create(...createables) {
|
|
245
|
-
return new BatchQuery(getResolver(this), createables.flatMap(getCreate));
|
|
246
|
-
}
|
|
247
|
-
drop(...droppables) {
|
|
248
|
-
return new BatchQuery(getResolver(this), droppables.flatMap(getDrop));
|
|
249
|
-
}
|
|
250
|
-
run(input2) {
|
|
251
|
-
const sql2 = this.dialect.inline(input2);
|
|
252
|
-
return this.driver.exec(sql2);
|
|
253
|
-
}
|
|
254
|
-
get(input2) {
|
|
255
|
-
const emitter = this.dialect.emit(input2);
|
|
256
|
-
return this.driver.prepare(emitter.sql).get(emitter.bind());
|
|
257
|
-
}
|
|
258
|
-
all(input2) {
|
|
259
|
-
const emitter = this.dialect.emit(input2);
|
|
260
|
-
return this.driver.prepare(emitter.sql).all(emitter.bind());
|
|
261
|
-
}
|
|
262
|
-
migrate(...tables) {
|
|
263
|
-
if (this.dialect.runtime === "mysql" && tables.length > 1) {
|
|
264
|
-
const run = async () => {
|
|
265
|
-
for (const table2 of tables) await this.migrate(table2);
|
|
266
|
-
};
|
|
267
|
-
return run();
|
|
268
|
-
}
|
|
269
|
-
const computeDiff = this.diff;
|
|
270
|
-
return this.transaction(
|
|
271
|
-
txGenerator(function* (tx) {
|
|
272
|
-
for (const table2 of tables) {
|
|
273
|
-
const diff = yield* computeDiff(table2);
|
|
274
|
-
if (diff.length > 0) yield* tx.batch(diff.map(sql.unsafe));
|
|
275
|
-
}
|
|
276
|
-
})
|
|
277
|
-
);
|
|
198
|
+
var DefinedView = class extends ViewBase {
|
|
199
|
+
existing() {
|
|
200
|
+
const data = getData(this);
|
|
201
|
+
const { name, columns } = data;
|
|
202
|
+
const fields = tableFields(name, columns);
|
|
203
|
+
return {
|
|
204
|
+
[internalTarget]: viewIdentifier(data),
|
|
205
|
+
...fields,
|
|
206
|
+
[internalSelection]: selection(fields)
|
|
207
|
+
};
|
|
278
208
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
const emitter = this.dialect.emit(inner.inlineValues());
|
|
285
|
-
if (emitter.hasParams) throw new Error("Query has parameters");
|
|
286
|
-
return this.driver.exec(emitter.sql);
|
|
287
|
-
}
|
|
288
|
-
refreshMaterializedView(view) {
|
|
289
|
-
return this.execute(sql`refresh materialized view ${view}`);
|
|
290
|
-
}
|
|
291
|
-
transaction(run, options = {}) {
|
|
292
|
-
return this.driver.transaction(
|
|
293
|
-
(inner) => {
|
|
294
|
-
const tx = new Transaction(inner, this.dialect, this.diff);
|
|
295
|
-
return run(tx);
|
|
296
|
-
},
|
|
297
|
-
{ async: run.constructor.name === "AsyncFunction", ...options }
|
|
209
|
+
as(query) {
|
|
210
|
+
const data = getData(this);
|
|
211
|
+
const fields = tableFields(
|
|
212
|
+
data.name,
|
|
213
|
+
data.columns
|
|
298
214
|
);
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
this.data = data;
|
|
308
|
-
}
|
|
309
|
-
data;
|
|
310
|
-
};
|
|
311
|
-
var Transaction = class extends Database {
|
|
312
|
-
rollback(data) {
|
|
313
|
-
throw new Rollback(data);
|
|
314
|
-
}
|
|
315
|
-
};
|
|
316
|
-
var SyncDatabase = class extends Database {
|
|
317
|
-
};
|
|
318
|
-
var AsyncDatabase = class extends Database {
|
|
319
|
-
};
|
|
320
|
-
|
|
321
|
-
// node_modules/rado/dist/sqlite/columns.js
|
|
322
|
-
function boolean2(name) {
|
|
323
|
-
return new Column({
|
|
324
|
-
name,
|
|
325
|
-
type: column.integer(),
|
|
326
|
-
mapFromDriverValue(value) {
|
|
327
|
-
return value === 1;
|
|
328
|
-
},
|
|
329
|
-
mapToDriverValue(value) {
|
|
330
|
-
return value ? 1 : 0;
|
|
331
|
-
}
|
|
332
|
-
});
|
|
333
|
-
}
|
|
334
|
-
function integer2(...args) {
|
|
335
|
-
const { name, options } = columnConfig(args);
|
|
336
|
-
if (options?.mode === "timestamp" || options?.mode === "timestamp_ms") {
|
|
337
|
-
const scale = options.mode === "timestamp" ? 1e3 : 1;
|
|
338
|
-
return new Column({
|
|
339
|
-
name,
|
|
340
|
-
type: column.integer(),
|
|
341
|
-
mapFromDriverValue(value) {
|
|
342
|
-
if (value === null) return null;
|
|
343
|
-
return new Date(value * scale);
|
|
344
|
-
},
|
|
345
|
-
mapToDriverValue(value) {
|
|
346
|
-
return Math.floor(value.getTime() / scale);
|
|
347
|
-
}
|
|
348
|
-
});
|
|
349
|
-
}
|
|
350
|
-
if (options?.mode === "boolean") return boolean2();
|
|
351
|
-
return new Column({ name, type: column.integer() });
|
|
352
|
-
}
|
|
353
|
-
function text2(...args) {
|
|
354
|
-
const { name, options } = columnConfig(args);
|
|
355
|
-
if (options?.mode === "json")
|
|
356
|
-
return new JsonColumn({
|
|
357
|
-
name,
|
|
358
|
-
type: column.text(options?.length),
|
|
359
|
-
mapToDriverValue(value) {
|
|
360
|
-
return JSON.stringify(value);
|
|
215
|
+
return {
|
|
216
|
+
[internalTarget]: viewIdentifier(data),
|
|
217
|
+
...fields,
|
|
218
|
+
[internalSelection]: selection(fields),
|
|
219
|
+
[internalQuery]: getSql(query),
|
|
220
|
+
get [internalCreate]() {
|
|
221
|
+
const result = createView(data, query);
|
|
222
|
+
return [result];
|
|
361
223
|
},
|
|
362
|
-
|
|
363
|
-
return
|
|
224
|
+
get [internalDrop]() {
|
|
225
|
+
return [dropView(data)];
|
|
364
226
|
}
|
|
365
|
-
}
|
|
366
|
-
return new Column({ name, type: column.text(options?.length) });
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
// node_modules/rado/dist/core/Dialect.js
|
|
370
|
-
var Dialect = class {
|
|
371
|
-
runtime;
|
|
372
|
-
#createEmitter;
|
|
373
|
-
constructor(runtime, createEmitter) {
|
|
374
|
-
this.runtime = runtime;
|
|
375
|
-
this.#createEmitter = createEmitter;
|
|
376
|
-
}
|
|
377
|
-
emit = (input2) => {
|
|
378
|
-
const sql2 = hasQuery(input2) ? getQuery(input2) : getSql(input2);
|
|
379
|
-
const emitter = new this.#createEmitter(this.runtime);
|
|
380
|
-
sql2.emit(emitter);
|
|
381
|
-
return emitter;
|
|
382
|
-
};
|
|
383
|
-
inline = (input2) => {
|
|
384
|
-
const sql2 = hasQuery(input2) ? getQuery(input2) : getSql(input2);
|
|
385
|
-
const emitter = new this.#createEmitter(this.runtime);
|
|
386
|
-
sql2.inlineValues().emit(emitter);
|
|
387
|
-
return emitter.sql;
|
|
388
|
-
};
|
|
389
|
-
};
|
|
390
|
-
|
|
391
|
-
// node_modules/rado/dist/core/Param.js
|
|
392
|
-
var NamedParam = class {
|
|
393
|
-
constructor(name) {
|
|
394
|
-
this.name = name;
|
|
395
|
-
}
|
|
396
|
-
name;
|
|
397
|
-
};
|
|
398
|
-
var ValueParam = class {
|
|
399
|
-
constructor(value) {
|
|
400
|
-
this.value = value;
|
|
401
|
-
}
|
|
402
|
-
value;
|
|
403
|
-
};
|
|
404
|
-
|
|
405
|
-
// node_modules/rado/dist/core/Emitter.js
|
|
406
|
-
var Emitter = class {
|
|
407
|
-
#runtime;
|
|
408
|
-
sql = "";
|
|
409
|
-
params = [];
|
|
410
|
-
constructor(runtime) {
|
|
411
|
-
this.#runtime = runtime;
|
|
412
|
-
}
|
|
413
|
-
get hasParams() {
|
|
414
|
-
return this.params.length > 0;
|
|
415
|
-
}
|
|
416
|
-
bind(inputs) {
|
|
417
|
-
return this.params.map((param) => {
|
|
418
|
-
if (param instanceof ValueParam) return this.processValue(param.value);
|
|
419
|
-
if (inputs && param.name in inputs)
|
|
420
|
-
return this.processValue(inputs[param.name]);
|
|
421
|
-
throw new Error(`Missing input for named parameter: ${param.name}`);
|
|
422
|
-
});
|
|
423
|
-
}
|
|
424
|
-
processValue(value) {
|
|
425
|
-
return value;
|
|
426
|
-
}
|
|
427
|
-
emitIdentifierOrSelf(value) {
|
|
428
|
-
if (value === Sql.SELF_TARGET) {
|
|
429
|
-
if (!this.#selfName) throw new Error("Self target not defined");
|
|
430
|
-
this.emitIdentifier(this.#selfName);
|
|
431
|
-
} else {
|
|
432
|
-
this.emitIdentifier(value);
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
emitUnsafe(value) {
|
|
436
|
-
this.sql += value;
|
|
437
|
-
}
|
|
438
|
-
#selfName;
|
|
439
|
-
emitSelf(inner, name) {
|
|
440
|
-
this.#selfName = name;
|
|
441
|
-
inner.emit(this);
|
|
442
|
-
this.#selfName = void 0;
|
|
443
|
-
}
|
|
444
|
-
#inlineFields = false;
|
|
445
|
-
inlineFields(inner, withTableName) {
|
|
446
|
-
const previous = this.#inlineFields;
|
|
447
|
-
this.#inlineFields = !withTableName;
|
|
448
|
-
inner.emit(this);
|
|
449
|
-
this.#inlineFields = previous;
|
|
450
|
-
}
|
|
451
|
-
#inlineValues = false;
|
|
452
|
-
inlineValues(inner) {
|
|
453
|
-
const previous = this.#inlineValues;
|
|
454
|
-
this.#inlineValues = true;
|
|
455
|
-
inner.emit(this);
|
|
456
|
-
this.#inlineValues = previous;
|
|
457
|
-
}
|
|
458
|
-
emitField({ targetName, fieldName }) {
|
|
459
|
-
if (this.#inlineFields) return this.emitIdentifier(fieldName);
|
|
460
|
-
this.emitIdentifierOrSelf(targetName);
|
|
461
|
-
this.emitUnsafe(".");
|
|
462
|
-
this.emitIdentifier(fieldName);
|
|
463
|
-
}
|
|
464
|
-
emitValueOrInline(value) {
|
|
465
|
-
if (this.#inlineValues) this.emitInline(value);
|
|
466
|
-
else this.emitValue(value);
|
|
467
|
-
}
|
|
468
|
-
emitUniversal(runtimes) {
|
|
469
|
-
const sql2 = runtimes[this.#runtime] ?? runtimes.default;
|
|
470
|
-
if (!sql2) throw new Error("Unsupported runtime");
|
|
471
|
-
getSql(sql2).emit(this);
|
|
472
|
-
}
|
|
473
|
-
};
|
|
474
|
-
|
|
475
|
-
// node_modules/rado/dist/sqlite/dialect.js
|
|
476
|
-
var DOUBLE_QUOTE = '"';
|
|
477
|
-
var ESCAPE_DOUBLE_QUOTE = '""';
|
|
478
|
-
var MATCH_DOUBLE_QUOTE = /"/g;
|
|
479
|
-
var SINGLE_QUOTE = "'";
|
|
480
|
-
var ESCAPE_SINGLE_QUOTE = "''";
|
|
481
|
-
var MATCH_SINGLE_QUOTE = /'/g;
|
|
482
|
-
var sqliteDialect = new Dialect(
|
|
483
|
-
"sqlite",
|
|
484
|
-
class extends Emitter {
|
|
485
|
-
processValue(value) {
|
|
486
|
-
return typeof value === "boolean" ? value ? 1 : 0 : value;
|
|
487
|
-
}
|
|
488
|
-
emitValue(value) {
|
|
489
|
-
this.params.push(new ValueParam(value));
|
|
490
|
-
this.sql += "?";
|
|
491
|
-
}
|
|
492
|
-
emitPlaceholder(name) {
|
|
493
|
-
this.params.push(new NamedParam(name));
|
|
494
|
-
this.sql += "?";
|
|
495
|
-
}
|
|
496
|
-
emitJsonPath({ target, asSql, segments }) {
|
|
497
|
-
target.emit(this);
|
|
498
|
-
this.sql += asSql ? "->>" : "->";
|
|
499
|
-
this.sql += this.quoteString(
|
|
500
|
-
`$${segments.map(
|
|
501
|
-
(p) => typeof p === "number" ? `[${p}]` : `.${JSON.stringify(p)}`
|
|
502
|
-
).join("")}`
|
|
503
|
-
);
|
|
504
|
-
}
|
|
505
|
-
emitInline(value) {
|
|
506
|
-
if (value === null || value === void 0) return this.sql += "null";
|
|
507
|
-
if (typeof value === "number") return this.sql += value;
|
|
508
|
-
if (typeof value === "string")
|
|
509
|
-
return this.sql += this.quoteString(value);
|
|
510
|
-
if (typeof value === "boolean") return this.sql += value ? "1" : "0";
|
|
511
|
-
this.sql += `json(${this.quoteString(JSON.stringify(value))})`;
|
|
512
|
-
}
|
|
513
|
-
emitIdentifier(identifier) {
|
|
514
|
-
this.sql += DOUBLE_QUOTE + identifier.replace(MATCH_DOUBLE_QUOTE, ESCAPE_DOUBLE_QUOTE) + DOUBLE_QUOTE;
|
|
515
|
-
}
|
|
516
|
-
quoteString(input2) {
|
|
517
|
-
return SINGLE_QUOTE + input2.replace(MATCH_SINGLE_QUOTE, ESCAPE_SINGLE_QUOTE) + SINGLE_QUOTE;
|
|
518
|
-
}
|
|
227
|
+
};
|
|
519
228
|
}
|
|
520
|
-
);
|
|
521
|
-
|
|
522
|
-
// node_modules/rado/dist/sqlite/diff.js
|
|
523
|
-
var TableInfo = table("TableInfo", {
|
|
524
|
-
cid: integer2().notNull(),
|
|
525
|
-
name: text2().notNull(),
|
|
526
|
-
type: text2().notNull(),
|
|
527
|
-
notnull: boolean2().notNull(),
|
|
528
|
-
dflt_value: text2(),
|
|
529
|
-
pk: integer2().notNull()
|
|
530
|
-
});
|
|
531
|
-
var SqliteMaster = table("SqliteMaster", {
|
|
532
|
-
type: text2().notNull(),
|
|
533
|
-
name: text2().notNull(),
|
|
534
|
-
tbl_name: text2().notNull(),
|
|
535
|
-
rootpage: integer2().notNull(),
|
|
536
|
-
sql: text2().notNull()
|
|
537
|
-
});
|
|
538
|
-
var inline = (sql2) => sqliteDialect.inline(sql2);
|
|
539
|
-
var sqliteDiff = (targetTable) => {
|
|
540
|
-
return txGenerator(function* (tx) {
|
|
541
|
-
const tableApi = getTable(targetTable);
|
|
542
|
-
const columnInfo = yield* tx.select(TableInfo).from(sql`pragma_table_info(${sql.inline(tableApi.name)}) as "TableInfo"`);
|
|
543
|
-
if (columnInfo.length === 0) return tableApi.create().map(inline);
|
|
544
|
-
const indexInfo = yield* tx.select(SqliteMaster).from(sql`sqlite_master as "SqliteMaster"`).where(
|
|
545
|
-
eq(SqliteMaster.tbl_name, tableApi.name),
|
|
546
|
-
eq(SqliteMaster.type, "index")
|
|
547
|
-
);
|
|
548
|
-
const hasSinglePrimaryKey = columnInfo.reduce((acc, column2) => acc + column2.pk, 0) === 1;
|
|
549
|
-
const localColumns = new Map(
|
|
550
|
-
columnInfo.map((column2) => {
|
|
551
|
-
return [
|
|
552
|
-
column2.name,
|
|
553
|
-
inline(
|
|
554
|
-
formatColumn({
|
|
555
|
-
type: sql.unsafe(column2.type.toLowerCase()),
|
|
556
|
-
notNull: column2.notnull,
|
|
557
|
-
primary: hasSinglePrimaryKey && column2.pk === 1,
|
|
558
|
-
defaultValue: column2.dflt_value !== null ? sql.unsafe(column2.dflt_value) : void 0
|
|
559
|
-
})
|
|
560
|
-
)
|
|
561
|
-
];
|
|
562
|
-
})
|
|
563
|
-
);
|
|
564
|
-
const schemaColumns = new Map(
|
|
565
|
-
Object.entries(tableApi.columns).map(([name, column2]) => {
|
|
566
|
-
const columnApi = getData(column2);
|
|
567
|
-
return [columnApi.name ?? name, inline(formatColumn(columnApi))];
|
|
568
|
-
})
|
|
569
|
-
);
|
|
570
|
-
const localIndexes = new Map(
|
|
571
|
-
indexInfo.filter((index) => !index.name.startsWith("sqlite_autoindex_")).map((index) => [index.name, index.sql])
|
|
572
|
-
);
|
|
573
|
-
const schemaIndexes = new Map(
|
|
574
|
-
Object.entries(tableApi.indexes()).map(([name, index]) => {
|
|
575
|
-
const indexApi = getData(index);
|
|
576
|
-
return [name, inline(indexApi.toSql(tableApi.name, name, false))];
|
|
577
|
-
})
|
|
578
|
-
);
|
|
579
|
-
const stmts = [];
|
|
580
|
-
const columnNames = /* @__PURE__ */ new Set([
|
|
581
|
-
...localColumns.keys(),
|
|
582
|
-
...schemaColumns.keys()
|
|
583
|
-
]);
|
|
584
|
-
for (const columnName of columnNames) {
|
|
585
|
-
const localInstruction = localColumns.get(columnName);
|
|
586
|
-
const schemaInstruction = schemaColumns.get(columnName);
|
|
587
|
-
if (!schemaInstruction) {
|
|
588
|
-
stmts.push(
|
|
589
|
-
sql.query({
|
|
590
|
-
alterTable: sql.identifier(tableApi.name),
|
|
591
|
-
dropColumn: sql.identifier(columnName)
|
|
592
|
-
})
|
|
593
|
-
);
|
|
594
|
-
} else if (!localInstruction) {
|
|
595
|
-
stmts.push(
|
|
596
|
-
sql.query({
|
|
597
|
-
alterTable: sql.identifier(tableApi.name),
|
|
598
|
-
addColumn: [
|
|
599
|
-
sql.identifier(columnName),
|
|
600
|
-
sql.unsafe(schemaInstruction)
|
|
601
|
-
]
|
|
602
|
-
})
|
|
603
|
-
);
|
|
604
|
-
} else if (localInstruction !== schemaInstruction) {
|
|
605
|
-
return recreate();
|
|
606
|
-
}
|
|
607
|
-
}
|
|
608
|
-
const indexNames = /* @__PURE__ */ new Set([
|
|
609
|
-
...localIndexes.keys(),
|
|
610
|
-
...schemaIndexes.keys()
|
|
611
|
-
]);
|
|
612
|
-
for (const indexName of indexNames) {
|
|
613
|
-
const localInstruction = localIndexes.get(indexName);
|
|
614
|
-
const schemaInstruction = schemaIndexes.get(indexName);
|
|
615
|
-
const dropLocal = sql.query({
|
|
616
|
-
dropIndex: sql.identifier(indexName)
|
|
617
|
-
});
|
|
618
|
-
if (!schemaInstruction) {
|
|
619
|
-
stmts.unshift(dropLocal);
|
|
620
|
-
} else if (schemaInstruction && !localInstruction) {
|
|
621
|
-
stmts.push(sql.unsafe(schemaInstruction));
|
|
622
|
-
} else if (schemaInstruction && localInstruction !== schemaInstruction) {
|
|
623
|
-
stmts.unshift(dropLocal);
|
|
624
|
-
stmts.push(sql.unsafe(schemaInstruction));
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
try {
|
|
628
|
-
yield* txGenerator(function* (sp) {
|
|
629
|
-
yield* sp.batch(stmts);
|
|
630
|
-
const [tableInfo] = yield* sp.select(SqliteMaster.sql).from(sql`sqlite_master as "SqliteMaster"`).where(
|
|
631
|
-
eq(SqliteMaster.tbl_name, tableApi.name),
|
|
632
|
-
eq(SqliteMaster.type, "table")
|
|
633
|
-
);
|
|
634
|
-
sp.rollback(tableInfo);
|
|
635
|
-
});
|
|
636
|
-
} catch (err) {
|
|
637
|
-
if (!(err instanceof Rollback)) throw err;
|
|
638
|
-
const localInstruction = err.data;
|
|
639
|
-
const schemaInstruction = inline(tableApi.createTable());
|
|
640
|
-
const stripStmt = (q) => q.slice("create table ".length);
|
|
641
|
-
if (stripStmt(localInstruction) !== stripStmt(schemaInstruction)) {
|
|
642
|
-
return recreate();
|
|
643
|
-
}
|
|
644
|
-
}
|
|
645
|
-
return stmts.map(inline);
|
|
646
|
-
function recreate() {
|
|
647
|
-
const tempName = `new_${tableApi.name}`;
|
|
648
|
-
const tempTable = table(tempName, tableApi.columns);
|
|
649
|
-
const missingColumns = new Set(
|
|
650
|
-
Array.from(columnNames).filter((name) => !localColumns.has(name))
|
|
651
|
-
);
|
|
652
|
-
const selection = Object.fromEntries(
|
|
653
|
-
Object.entries(tableApi.columns).map(([name, column2]) => {
|
|
654
|
-
const columnApi = getData(column2);
|
|
655
|
-
const key = columnApi.name ?? name;
|
|
656
|
-
if (missingColumns.has(key))
|
|
657
|
-
return [name, columnApi.defaultValue ?? sql`null`];
|
|
658
|
-
return [name, targetTable[name]];
|
|
659
|
-
})
|
|
660
|
-
);
|
|
661
|
-
return [
|
|
662
|
-
// Create a new temporary table with the new definition
|
|
663
|
-
tableApi.createTable(tempName),
|
|
664
|
-
// Copy the data from the old table to the new table
|
|
665
|
-
getQuery(
|
|
666
|
-
tx.insert(tempTable).select(tx.select(selection).from(targetTable))
|
|
667
|
-
),
|
|
668
|
-
// Drop the old table
|
|
669
|
-
sql.query({ dropTable: sql.identifier(tableApi.name) }),
|
|
670
|
-
// Rename the temporary table to the old table name
|
|
671
|
-
sql.query({
|
|
672
|
-
alterTable: sql.identifier(tempName),
|
|
673
|
-
renameTo: sql.identifier(tableApi.name)
|
|
674
|
-
}),
|
|
675
|
-
// Create missing indexes
|
|
676
|
-
...tableApi.createIndexes()
|
|
677
|
-
].map(inline);
|
|
678
|
-
}
|
|
679
|
-
});
|
|
680
229
|
};
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
function execTransaction(driver, depth, wrap, run, options) {
|
|
685
|
-
const needsLock = options.async;
|
|
686
|
-
const behavior = options.behavior ?? "deferred";
|
|
687
|
-
if (!needsLock) return transact();
|
|
688
|
-
let trigger;
|
|
689
|
-
const lock = new Promise((resolve) => trigger = resolve);
|
|
690
|
-
const current = Promise.resolve(locks.get(driver));
|
|
691
|
-
locks.set(driver, lock);
|
|
692
|
-
return current.then(transact).finally(trigger);
|
|
693
|
-
function transact() {
|
|
694
|
-
try {
|
|
695
|
-
driver.exec(depth > 0 ? `savepoint d${depth}` : `begin ${behavior}`);
|
|
696
|
-
const result = run(wrap(depth + 1));
|
|
697
|
-
if (result instanceof Promise) return result.then(release, rollback);
|
|
698
|
-
return release(result);
|
|
699
|
-
} catch (error) {
|
|
700
|
-
return rollback(error);
|
|
701
|
-
}
|
|
702
|
-
}
|
|
703
|
-
function release(result) {
|
|
704
|
-
driver.exec(depth > 0 ? `release d${depth}` : "commit");
|
|
705
|
-
return result;
|
|
706
|
-
}
|
|
707
|
-
function rollback(error) {
|
|
708
|
-
driver.exec(depth > 0 ? `rollback to d${depth}` : "rollback");
|
|
709
|
-
throw error;
|
|
710
|
-
}
|
|
230
|
+
function view(name, columns, schemaName) {
|
|
231
|
+
if (columns) return new DefinedView({ name, columns, schemaName });
|
|
232
|
+
return new QueryView({ name, columns, schemaName });
|
|
711
233
|
}
|
|
712
234
|
|
|
713
235
|
// node_modules/rado/dist/driver/better-sqlite3.js
|
|
714
|
-
var
|
|
715
|
-
constructor(
|
|
716
|
-
|
|
236
|
+
var PreparedStatement = class extends ReusedStatement {
|
|
237
|
+
constructor(statements, sql2, isSelection) {
|
|
238
|
+
super(statements, sql2);
|
|
717
239
|
this.isSelection = isSelection;
|
|
718
240
|
}
|
|
719
|
-
stmt;
|
|
720
241
|
isSelection;
|
|
721
242
|
all(params) {
|
|
722
243
|
return this.stmt.all(...params);
|
|
723
244
|
}
|
|
724
245
|
run(params) {
|
|
725
|
-
|
|
246
|
+
const result = this.stmt.run(...params);
|
|
247
|
+
return {
|
|
248
|
+
affectedRows: result.changes,
|
|
249
|
+
insertId: result.lastInsertRowid
|
|
250
|
+
};
|
|
726
251
|
}
|
|
727
252
|
get(params) {
|
|
728
|
-
return this.stmt.get(...params);
|
|
253
|
+
return this.stmt.get(...params) ?? null;
|
|
729
254
|
}
|
|
730
255
|
values(params) {
|
|
731
|
-
if (this.isSelection)
|
|
256
|
+
if (!this.isSelection) {
|
|
257
|
+
this.stmt.run(...params);
|
|
258
|
+
return [];
|
|
259
|
+
}
|
|
260
|
+
try {
|
|
732
261
|
return this.stmt.raw(true).all(...params);
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
free() {
|
|
262
|
+
} finally {
|
|
263
|
+
this.stmt.raw(false);
|
|
264
|
+
}
|
|
737
265
|
}
|
|
738
266
|
};
|
|
739
267
|
var BetterSqlite3Driver = class _BetterSqlite3Driver {
|
|
740
|
-
constructor(client, depth = 0
|
|
268
|
+
constructor(client, depth = 0, statements = new StatementCache(
|
|
269
|
+
(sql2) => client.prepare(sql2),
|
|
270
|
+
() => {
|
|
271
|
+
}
|
|
272
|
+
)) {
|
|
741
273
|
this.client = client;
|
|
742
274
|
this.depth = depth;
|
|
275
|
+
this.statements = statements;
|
|
743
276
|
}
|
|
744
277
|
client;
|
|
745
278
|
depth;
|
|
279
|
+
statements;
|
|
746
280
|
parsesJson = false;
|
|
747
281
|
supportsTransactions = true;
|
|
748
282
|
exec(query) {
|
|
283
|
+
this.statements.invalidate(query);
|
|
749
284
|
this.client.exec(query);
|
|
750
285
|
}
|
|
751
286
|
close() {
|
|
287
|
+
this.statements.clear();
|
|
752
288
|
this.client.close();
|
|
753
289
|
}
|
|
754
290
|
prepare(sql2, options) {
|
|
755
|
-
return new
|
|
756
|
-
this.
|
|
291
|
+
return new PreparedStatement(
|
|
292
|
+
this.statements,
|
|
293
|
+
sql2,
|
|
757
294
|
options?.isSelection ?? false
|
|
758
295
|
);
|
|
759
296
|
}
|
|
760
297
|
batch(queries) {
|
|
761
|
-
return this.transaction(
|
|
762
|
-
(tx) => queries.map(
|
|
763
|
-
({ sql: sql2, params, isSelection }) => tx.prepare(sql2, { isSelection }).values(params)
|
|
764
|
-
),
|
|
765
|
-
{}
|
|
766
|
-
);
|
|
298
|
+
return this.transaction((tx) => Batch.run(tx, queries), {});
|
|
767
299
|
}
|
|
768
300
|
transaction(run, options) {
|
|
769
301
|
return execTransaction(
|
|
770
302
|
this,
|
|
771
303
|
this.depth,
|
|
772
|
-
(depth) => new _BetterSqlite3Driver(this.client, depth),
|
|
304
|
+
(depth) => new _BetterSqlite3Driver(this.client, depth, this.statements),
|
|
773
305
|
run,
|
|
774
306
|
options
|
|
775
307
|
);
|
|
776
308
|
}
|
|
777
309
|
};
|
|
778
|
-
function
|
|
310
|
+
function connect4(db, options) {
|
|
779
311
|
return new SyncDatabase(
|
|
780
312
|
new BetterSqlite3Driver(db),
|
|
781
313
|
sqliteDialect,
|
|
782
|
-
sqliteDiff
|
|
314
|
+
sqliteDiff,
|
|
315
|
+
options
|
|
783
316
|
);
|
|
784
317
|
}
|
|
785
318
|
|
|
786
|
-
// node_modules/rado/dist/driver/bun-sqlite.js
|
|
787
|
-
var PreparedStatement3 = class {
|
|
788
|
-
constructor(stmt, isSelection) {
|
|
789
|
-
this.stmt = stmt;
|
|
790
|
-
this.isSelection = isSelection;
|
|
791
|
-
}
|
|
792
|
-
stmt;
|
|
793
|
-
isSelection;
|
|
794
|
-
all(params) {
|
|
795
|
-
return this.stmt.all(...params);
|
|
796
|
-
}
|
|
797
|
-
run(params) {
|
|
798
|
-
return this.stmt.run(...params);
|
|
799
|
-
}
|
|
800
|
-
get(params) {
|
|
801
|
-
return this.stmt.get(...params);
|
|
802
|
-
}
|
|
803
|
-
values(params) {
|
|
804
|
-
if (!this.isSelection) {
|
|
805
|
-
this.stmt.run(...params);
|
|
806
|
-
return [];
|
|
807
|
-
}
|
|
808
|
-
return this.stmt.values(...params);
|
|
809
|
-
}
|
|
810
|
-
free() {
|
|
811
|
-
this.stmt.finalize();
|
|
812
|
-
}
|
|
813
|
-
};
|
|
814
|
-
var BunSqliteDriver = class _BunSqliteDriver {
|
|
815
|
-
constructor(client, depth = 0) {
|
|
816
|
-
this.client = client;
|
|
817
|
-
this.depth = depth;
|
|
818
|
-
}
|
|
819
|
-
client;
|
|
820
|
-
depth;
|
|
821
|
-
parsesJson = false;
|
|
822
|
-
supportsTransactions = true;
|
|
823
|
-
exec(query) {
|
|
824
|
-
this.client.exec(query);
|
|
825
|
-
}
|
|
826
|
-
close() {
|
|
827
|
-
this.client.close();
|
|
828
|
-
}
|
|
829
|
-
prepare(sql2, options) {
|
|
830
|
-
return new PreparedStatement3(
|
|
831
|
-
this.client.prepare(sql2),
|
|
832
|
-
options?.isSelection ?? false
|
|
833
|
-
);
|
|
834
|
-
}
|
|
835
|
-
batch(queries) {
|
|
836
|
-
return this.transaction((tx) => {
|
|
837
|
-
return queries.map(
|
|
838
|
-
({ sql: sql2, params, isSelection }) => tx.prepare(sql2, { isSelection }).values(params)
|
|
839
|
-
);
|
|
840
|
-
}, {});
|
|
841
|
-
}
|
|
842
|
-
transaction(run, options) {
|
|
843
|
-
return execTransaction(
|
|
844
|
-
this,
|
|
845
|
-
this.depth,
|
|
846
|
-
(depth) => new _BunSqliteDriver(this.client, depth),
|
|
847
|
-
run,
|
|
848
|
-
options
|
|
849
|
-
);
|
|
850
|
-
}
|
|
851
|
-
};
|
|
852
|
-
function connect2(db) {
|
|
853
|
-
return new SyncDatabase(new BunSqliteDriver(db), sqliteDialect, sqliteDiff);
|
|
854
|
-
}
|
|
855
|
-
|
|
856
319
|
// node_modules/rado/dist/driver/d1.js
|
|
857
|
-
var
|
|
320
|
+
var PreparedStatement2 = class {
|
|
858
321
|
constructor(stmt, isSelection) {
|
|
859
322
|
this.stmt = stmt;
|
|
860
323
|
this.isSelection = isSelection;
|
|
@@ -866,6 +329,11 @@ var PreparedStatement4 = class {
|
|
|
866
329
|
}
|
|
867
330
|
async run(params) {
|
|
868
331
|
const results = await this.stmt.bind(...params).run();
|
|
332
|
+
const meta = results.meta;
|
|
333
|
+
return {
|
|
334
|
+
affectedRows: meta.changes ?? meta.rows_written ?? 0,
|
|
335
|
+
insertId: meta.last_row_id
|
|
336
|
+
};
|
|
869
337
|
}
|
|
870
338
|
async get(params) {
|
|
871
339
|
return this.stmt.bind(...params).first();
|
|
@@ -889,7 +357,7 @@ var D1Driver = class {
|
|
|
889
357
|
await this.client.exec(query);
|
|
890
358
|
}
|
|
891
359
|
prepare(sql2, options) {
|
|
892
|
-
return new
|
|
360
|
+
return new PreparedStatement2(
|
|
893
361
|
this.client.prepare(sql2),
|
|
894
362
|
options?.isSelection ?? false
|
|
895
363
|
);
|
|
@@ -911,12 +379,17 @@ var D1Driver = class {
|
|
|
911
379
|
throw new Error("Transactions are not supported in D1");
|
|
912
380
|
}
|
|
913
381
|
};
|
|
914
|
-
function
|
|
915
|
-
return new AsyncDatabase(
|
|
382
|
+
function connect5(client, options) {
|
|
383
|
+
return new AsyncDatabase(
|
|
384
|
+
new D1Driver(client),
|
|
385
|
+
sqliteDialect,
|
|
386
|
+
sqliteDiff,
|
|
387
|
+
options
|
|
388
|
+
);
|
|
916
389
|
}
|
|
917
390
|
|
|
918
391
|
// node_modules/rado/dist/driver/libsql.js
|
|
919
|
-
var
|
|
392
|
+
var PreparedStatement3 = class {
|
|
920
393
|
constructor(client, sql2) {
|
|
921
394
|
this.client = client;
|
|
922
395
|
this.sql = sql2;
|
|
@@ -929,6 +402,10 @@ var PreparedStatement5 = class {
|
|
|
929
402
|
}
|
|
930
403
|
async run(params) {
|
|
931
404
|
const result = await this.client.execute({ sql: this.sql, args: params });
|
|
405
|
+
return {
|
|
406
|
+
affectedRows: result.rowsAffected,
|
|
407
|
+
insertId: result.lastInsertRowid
|
|
408
|
+
};
|
|
932
409
|
}
|
|
933
410
|
async get(params) {
|
|
934
411
|
return (await this.all(params))[0] ?? null;
|
|
@@ -953,7 +430,7 @@ var LibSQLClient = class _LibSQLClient {
|
|
|
953
430
|
await this.client.execute(query);
|
|
954
431
|
}
|
|
955
432
|
prepare(sql2, options) {
|
|
956
|
-
return new
|
|
433
|
+
return new PreparedStatement3(this.client, sql2);
|
|
957
434
|
}
|
|
958
435
|
async close() {
|
|
959
436
|
if ("close" in this.client) return this.client.close();
|
|
@@ -976,17 +453,25 @@ var LibSQLClient = class _LibSQLClient {
|
|
|
976
453
|
else await client.commit();
|
|
977
454
|
return result;
|
|
978
455
|
} catch (error) {
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
456
|
+
try {
|
|
457
|
+
if (this.depth > 0)
|
|
458
|
+
await client.execute(`rollback to savepoint d${this.depth}`);
|
|
459
|
+
else await client.rollback();
|
|
460
|
+
} catch {
|
|
461
|
+
}
|
|
982
462
|
throw error;
|
|
983
463
|
} finally {
|
|
984
464
|
if (this.depth === 0) client.close();
|
|
985
465
|
}
|
|
986
466
|
}
|
|
987
467
|
};
|
|
988
|
-
function
|
|
989
|
-
return new AsyncDatabase(
|
|
468
|
+
function connect6(client, options) {
|
|
469
|
+
return new AsyncDatabase(
|
|
470
|
+
new LibSQLClient(client),
|
|
471
|
+
sqliteDialect,
|
|
472
|
+
sqliteDiff,
|
|
473
|
+
options
|
|
474
|
+
);
|
|
990
475
|
}
|
|
991
476
|
|
|
992
477
|
// node_modules/rado/dist/mysql/dialect.js
|
|
@@ -995,9 +480,9 @@ var ESCAPE_BACKTICK = "``";
|
|
|
995
480
|
var MATCH_BACKTICK = /`/g;
|
|
996
481
|
var ESCAPE_BACKSLASH = "\\\\";
|
|
997
482
|
var MATCH_BACKSLASH = /\\/g;
|
|
998
|
-
var
|
|
999
|
-
var
|
|
1000
|
-
var
|
|
483
|
+
var SINGLE_QUOTE = "'";
|
|
484
|
+
var ESCAPE_SINGLE_QUOTE = "''";
|
|
485
|
+
var MATCH_SINGLE_QUOTE = /'/g;
|
|
1001
486
|
var mysqlDialect = new Dialect(
|
|
1002
487
|
"mysql",
|
|
1003
488
|
class extends Emitter {
|
|
@@ -1028,7 +513,7 @@ var mysqlDialect = new Dialect(
|
|
|
1028
513
|
this.sql += this.quoteString(JSON.stringify(value));
|
|
1029
514
|
}
|
|
1030
515
|
quoteString(input2) {
|
|
1031
|
-
return
|
|
516
|
+
return SINGLE_QUOTE + input2.replace(MATCH_BACKSLASH, ESCAPE_BACKSLASH).replace(MATCH_SINGLE_QUOTE, ESCAPE_SINGLE_QUOTE) + SINGLE_QUOTE;
|
|
1032
517
|
}
|
|
1033
518
|
emitIdentifier(identifier) {
|
|
1034
519
|
this.sql += BACKTICK + identifier.replace(MATCH_BACKTICK, ESCAPE_BACKTICK) + BACKTICK;
|
|
@@ -1041,44 +526,47 @@ function schema(schemaName) {
|
|
|
1041
526
|
return {
|
|
1042
527
|
table(tableName, columns, config) {
|
|
1043
528
|
return table(tableName, columns, config, schemaName);
|
|
529
|
+
},
|
|
530
|
+
view(viewName, columns) {
|
|
531
|
+
return columns ? view(viewName, columns, schemaName) : view(viewName, void 0, schemaName);
|
|
1044
532
|
}
|
|
1045
533
|
};
|
|
1046
534
|
}
|
|
1047
535
|
|
|
1048
536
|
// node_modules/rado/dist/mysql/columns.js
|
|
1049
|
-
function
|
|
537
|
+
function integer2(name) {
|
|
1050
538
|
return new Column({ name, type: column.integer() });
|
|
1051
539
|
}
|
|
1052
|
-
function
|
|
540
|
+
function text2(name) {
|
|
1053
541
|
return new Column({ name, type: column.text() });
|
|
1054
542
|
}
|
|
1055
543
|
|
|
1056
544
|
// node_modules/rado/dist/mysql/diff.js
|
|
1057
545
|
var ns = schema("information_schema");
|
|
1058
546
|
var Information = ns.table("columns", {
|
|
1059
|
-
table_name:
|
|
1060
|
-
column_name:
|
|
1061
|
-
column_type:
|
|
1062
|
-
is_nullable:
|
|
1063
|
-
column_default:
|
|
1064
|
-
extra:
|
|
1065
|
-
table_schema:
|
|
547
|
+
table_name: text2().notNull(),
|
|
548
|
+
column_name: text2().notNull(),
|
|
549
|
+
column_type: text2().notNull(),
|
|
550
|
+
is_nullable: text2().notNull(),
|
|
551
|
+
column_default: text2(),
|
|
552
|
+
extra: text2().notNull(),
|
|
553
|
+
table_schema: text2().notNull()
|
|
1066
554
|
});
|
|
1067
555
|
var Statistics = ns.table("statistics", {
|
|
1068
|
-
table_name:
|
|
1069
|
-
column_name:
|
|
1070
|
-
index_name:
|
|
1071
|
-
non_unique:
|
|
1072
|
-
seq_in_index:
|
|
1073
|
-
table_schema:
|
|
556
|
+
table_name: text2().notNull(),
|
|
557
|
+
column_name: text2().notNull(),
|
|
558
|
+
index_name: text2().notNull(),
|
|
559
|
+
non_unique: integer2().notNull(),
|
|
560
|
+
seq_in_index: integer2().notNull(),
|
|
561
|
+
table_schema: text2().notNull()
|
|
1074
562
|
});
|
|
1075
563
|
var TableConstraints = ns.table("table_constraints", {
|
|
1076
|
-
constraint_name:
|
|
1077
|
-
table_name:
|
|
1078
|
-
constraint_type:
|
|
1079
|
-
table_schema:
|
|
564
|
+
constraint_name: text2().notNull(),
|
|
565
|
+
table_name: text2().notNull(),
|
|
566
|
+
constraint_type: text2().notNull(),
|
|
567
|
+
table_schema: text2().notNull()
|
|
1080
568
|
});
|
|
1081
|
-
var
|
|
569
|
+
var inline = (sql2) => mysqlDialect.inline(sql2);
|
|
1082
570
|
var mysqlDiff = (hasTable) => {
|
|
1083
571
|
return txGenerator(function* (tx) {
|
|
1084
572
|
const tableApi = getTable(hasTable);
|
|
@@ -1093,7 +581,7 @@ var mysqlDiff = (hasTable) => {
|
|
|
1093
581
|
eq(Information.table_name, tableApi.name),
|
|
1094
582
|
eq(Information.table_schema, sql`database()`)
|
|
1095
583
|
);
|
|
1096
|
-
if (columnInfo.length === 0) return tableApi.create().map(
|
|
584
|
+
if (columnInfo.length === 0) return tableApi.create().map(inline);
|
|
1097
585
|
const indexInfo = yield* tx.select({
|
|
1098
586
|
index_name: Statistics.index_name,
|
|
1099
587
|
column_name: Statistics.column_name,
|
|
@@ -1168,7 +656,7 @@ var mysqlDiff = (hasTable) => {
|
|
|
1168
656
|
})
|
|
1169
657
|
);
|
|
1170
658
|
} else {
|
|
1171
|
-
if (
|
|
659
|
+
if (inline(localInstruction.type) !== inline(schemaInstruction.type)) {
|
|
1172
660
|
stmts.push(
|
|
1173
661
|
sql.query({
|
|
1174
662
|
alterTable,
|
|
@@ -1189,8 +677,8 @@ var mysqlDiff = (hasTable) => {
|
|
|
1189
677
|
}
|
|
1190
678
|
const localDefault = localInstruction.defaultValue;
|
|
1191
679
|
const schemaDefault = schemaInstruction.defaultValue;
|
|
1192
|
-
const localDefaultStr = localDefault &&
|
|
1193
|
-
const schemaDefaultStr = schemaDefault &&
|
|
680
|
+
const localDefaultStr = localDefault && inline(localDefault);
|
|
681
|
+
const schemaDefaultStr = schemaDefault && inline(schemaDefault);
|
|
1194
682
|
if (localDefaultStr !== schemaDefaultStr) {
|
|
1195
683
|
stmts.push(
|
|
1196
684
|
sql.query({
|
|
@@ -1234,7 +722,7 @@ var mysqlDiff = (hasTable) => {
|
|
|
1234
722
|
);
|
|
1235
723
|
} else if (!localInstruction) {
|
|
1236
724
|
stmts.push(schemaInstruction);
|
|
1237
|
-
} else if (
|
|
725
|
+
} else if (inline(localInstruction) !== inline(schemaInstruction)) {
|
|
1238
726
|
if (indexName === "PRIMARY") {
|
|
1239
727
|
stmts.unshift(
|
|
1240
728
|
sql.query({
|
|
@@ -1254,7 +742,7 @@ var mysqlDiff = (hasTable) => {
|
|
|
1254
742
|
}
|
|
1255
743
|
}
|
|
1256
744
|
}
|
|
1257
|
-
return stmts.map(
|
|
745
|
+
return stmts.map(inline);
|
|
1258
746
|
});
|
|
1259
747
|
};
|
|
1260
748
|
|
|
@@ -1275,7 +763,7 @@ function setTransaction(options) {
|
|
|
1275
763
|
}
|
|
1276
764
|
|
|
1277
765
|
// node_modules/rado/dist/driver/mysql2.js
|
|
1278
|
-
var
|
|
766
|
+
var PreparedStatement4 = class {
|
|
1279
767
|
constructor(client, sql2, isSelection, name) {
|
|
1280
768
|
this.client = client;
|
|
1281
769
|
this.sql = sql2;
|
|
@@ -1291,10 +779,25 @@ var PreparedStatement6 = class {
|
|
|
1291
779
|
return param;
|
|
1292
780
|
};
|
|
1293
781
|
all(params) {
|
|
1294
|
-
return this.client.query(
|
|
782
|
+
return this.client.query({
|
|
783
|
+
sql: this.sql,
|
|
784
|
+
values: params.map(this.#transformParam),
|
|
785
|
+
dateStrings: true,
|
|
786
|
+
supportBigNumbers: true
|
|
787
|
+
}).then((res) => res[0]);
|
|
1295
788
|
}
|
|
1296
789
|
async run(params) {
|
|
1297
|
-
await this.client.query(
|
|
790
|
+
const [result] = await this.client.query({
|
|
791
|
+
sql: this.sql,
|
|
792
|
+
values: params.map(this.#transformParam),
|
|
793
|
+
supportBigNumbers: true
|
|
794
|
+
});
|
|
795
|
+
const header = result;
|
|
796
|
+
return {
|
|
797
|
+
affectedRows: header.affectedRows ?? 0,
|
|
798
|
+
changedRows: header.changedRows ?? 0,
|
|
799
|
+
insertId: header.insertId ?? 0
|
|
800
|
+
};
|
|
1298
801
|
}
|
|
1299
802
|
get(params) {
|
|
1300
803
|
return this.all(params).then((rows) => rows[0] ?? null);
|
|
@@ -1304,7 +807,9 @@ var PreparedStatement6 = class {
|
|
|
1304
807
|
return this.client.query({
|
|
1305
808
|
sql: this.sql,
|
|
1306
809
|
values: params.map(this.#transformParam),
|
|
1307
|
-
rowsAsArray: true
|
|
810
|
+
rowsAsArray: true,
|
|
811
|
+
dateStrings: true,
|
|
812
|
+
supportBigNumbers: true
|
|
1308
813
|
}).then((res) => res[0]);
|
|
1309
814
|
}
|
|
1310
815
|
free() {
|
|
@@ -1323,7 +828,7 @@ var Mysql2Driver = class _Mysql2Driver {
|
|
|
1323
828
|
await this.client.query(query);
|
|
1324
829
|
}
|
|
1325
830
|
prepare(sql2, options) {
|
|
1326
|
-
return new
|
|
831
|
+
return new PreparedStatement4(
|
|
1327
832
|
this.client,
|
|
1328
833
|
sql2,
|
|
1329
834
|
options?.isSelection ?? false,
|
|
@@ -1334,12 +839,7 @@ var Mysql2Driver = class _Mysql2Driver {
|
|
|
1334
839
|
if ("end" in this.client) return this.client.end();
|
|
1335
840
|
}
|
|
1336
841
|
async batch(queries) {
|
|
1337
|
-
const transact =
|
|
1338
|
-
const results = [];
|
|
1339
|
-
for (const { sql: sql2, params, isSelection } of queries)
|
|
1340
|
-
results.push(await tx.prepare(sql2, { isSelection }).values(params));
|
|
1341
|
-
return results;
|
|
1342
|
-
};
|
|
842
|
+
const transact = (tx) => Batch.run(tx, queries);
|
|
1343
843
|
if (this.depth > 0) return transact(this);
|
|
1344
844
|
return this.transaction(transact, {});
|
|
1345
845
|
}
|
|
@@ -1347,22 +847,25 @@ var Mysql2Driver = class _Mysql2Driver {
|
|
|
1347
847
|
const client = isPool(this.client) ? await this.client.getConnection() : this.client;
|
|
1348
848
|
const driver = new _Mysql2Driver(client, this.depth + 1);
|
|
1349
849
|
try {
|
|
1350
|
-
await client.query(
|
|
1351
|
-
this.depth > 0 ? `savepoint d${this.depth}` : startTransaction(options)
|
|
1352
|
-
);
|
|
1353
850
|
if (this.depth === 0) {
|
|
1354
851
|
const setOptions = setTransaction(options);
|
|
1355
852
|
if (setOptions) await client.query(setOptions);
|
|
1356
853
|
}
|
|
854
|
+
await client.query(
|
|
855
|
+
this.depth > 0 ? `savepoint d${this.depth}` : startTransaction(options)
|
|
856
|
+
);
|
|
1357
857
|
const result = await run(driver);
|
|
1358
858
|
await client.query(
|
|
1359
859
|
this.depth > 0 ? `release savepoint d${this.depth}` : "commit"
|
|
1360
860
|
);
|
|
1361
861
|
return result;
|
|
1362
862
|
} catch (error) {
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
863
|
+
try {
|
|
864
|
+
await client.query(
|
|
865
|
+
this.depth > 0 ? `rollback to savepoint d${this.depth}` : "rollback"
|
|
866
|
+
);
|
|
867
|
+
} catch {
|
|
868
|
+
}
|
|
1366
869
|
throw error;
|
|
1367
870
|
} finally {
|
|
1368
871
|
if (isPool(this.client))
|
|
@@ -1373,96 +876,22 @@ var Mysql2Driver = class _Mysql2Driver {
|
|
|
1373
876
|
function isPool(client) {
|
|
1374
877
|
return "getConnection" in client;
|
|
1375
878
|
}
|
|
1376
|
-
function
|
|
879
|
+
function connect7(client, options) {
|
|
1377
880
|
return new AsyncDatabase(
|
|
1378
881
|
new Mysql2Driver("promise" in client ? client.promise() : client),
|
|
1379
882
|
mysqlDialect,
|
|
1380
|
-
mysqlDiff
|
|
883
|
+
mysqlDiff,
|
|
884
|
+
options
|
|
1381
885
|
);
|
|
1382
886
|
}
|
|
1383
887
|
|
|
1384
|
-
// node_modules/rado/dist/driver/node-sqlite.js
|
|
1385
|
-
var PreparedStatement7 = class {
|
|
1386
|
-
constructor(stmt, isSelection) {
|
|
1387
|
-
this.stmt = stmt;
|
|
1388
|
-
this.isSelection = isSelection;
|
|
1389
|
-
}
|
|
1390
|
-
stmt;
|
|
1391
|
-
isSelection;
|
|
1392
|
-
all(params) {
|
|
1393
|
-
return this.stmt.all(...params);
|
|
1394
|
-
}
|
|
1395
|
-
run(params) {
|
|
1396
|
-
this.stmt.run(...params);
|
|
1397
|
-
}
|
|
1398
|
-
get(params) {
|
|
1399
|
-
return this.stmt.get(...params);
|
|
1400
|
-
}
|
|
1401
|
-
values(params) {
|
|
1402
|
-
if (!this.isSelection) {
|
|
1403
|
-
this.stmt.run(...params);
|
|
1404
|
-
return [];
|
|
1405
|
-
}
|
|
1406
|
-
this.stmt.setReturnArrays(true);
|
|
1407
|
-
try {
|
|
1408
|
-
return this.stmt.all(...params);
|
|
1409
|
-
} finally {
|
|
1410
|
-
this.stmt.setReturnArrays(false);
|
|
1411
|
-
}
|
|
1412
|
-
}
|
|
1413
|
-
free() {
|
|
1414
|
-
}
|
|
1415
|
-
};
|
|
1416
|
-
var NodeSqliteDriver = class _NodeSqliteDriver {
|
|
1417
|
-
constructor(client, depth = 0) {
|
|
1418
|
-
this.client = client;
|
|
1419
|
-
this.depth = depth;
|
|
1420
|
-
}
|
|
1421
|
-
client;
|
|
1422
|
-
depth;
|
|
1423
|
-
parsesJson = false;
|
|
1424
|
-
supportsTransactions = true;
|
|
1425
|
-
exec(query) {
|
|
1426
|
-
this.client.exec(query);
|
|
1427
|
-
}
|
|
1428
|
-
close() {
|
|
1429
|
-
this.client.close();
|
|
1430
|
-
}
|
|
1431
|
-
prepare(sql2, options) {
|
|
1432
|
-
return new PreparedStatement7(
|
|
1433
|
-
this.client.prepare(sql2),
|
|
1434
|
-
options?.isSelection ?? false
|
|
1435
|
-
);
|
|
1436
|
-
}
|
|
1437
|
-
batch(queries) {
|
|
1438
|
-
return this.transaction(
|
|
1439
|
-
(tx) => queries.map(
|
|
1440
|
-
({ sql: sql2, params, isSelection }) => tx.prepare(sql2, { isSelection }).values(params)
|
|
1441
|
-
),
|
|
1442
|
-
{}
|
|
1443
|
-
);
|
|
1444
|
-
}
|
|
1445
|
-
transaction(run, options) {
|
|
1446
|
-
return execTransaction(
|
|
1447
|
-
this,
|
|
1448
|
-
this.depth,
|
|
1449
|
-
(depth) => new _NodeSqliteDriver(this.client, depth),
|
|
1450
|
-
run,
|
|
1451
|
-
options
|
|
1452
|
-
);
|
|
1453
|
-
}
|
|
1454
|
-
};
|
|
1455
|
-
function connect6(db) {
|
|
1456
|
-
return new SyncDatabase(new NodeSqliteDriver(db), sqliteDialect, sqliteDiff);
|
|
1457
|
-
}
|
|
1458
|
-
|
|
1459
888
|
// node_modules/rado/dist/postgres/dialect.js
|
|
1460
|
-
var
|
|
1461
|
-
var
|
|
1462
|
-
var
|
|
1463
|
-
var
|
|
1464
|
-
var
|
|
1465
|
-
var
|
|
889
|
+
var DOUBLE_QUOTE = '"';
|
|
890
|
+
var ESCAPE_DOUBLE_QUOTE = '""';
|
|
891
|
+
var MATCH_DOUBLE_QUOTE = /"/g;
|
|
892
|
+
var SINGLE_QUOTE2 = "'";
|
|
893
|
+
var ESCAPE_SINGLE_QUOTE2 = "''";
|
|
894
|
+
var MATCH_SINGLE_QUOTE2 = /'/g;
|
|
1466
895
|
var postgresDialect = new Dialect(
|
|
1467
896
|
"postgres",
|
|
1468
897
|
class extends Emitter {
|
|
@@ -1494,10 +923,10 @@ var postgresDialect = new Dialect(
|
|
|
1494
923
|
this.sql += this.quoteString(JSON.stringify(value));
|
|
1495
924
|
}
|
|
1496
925
|
quoteString(input2) {
|
|
1497
|
-
return
|
|
926
|
+
return SINGLE_QUOTE2 + input2.replace(MATCH_SINGLE_QUOTE2, ESCAPE_SINGLE_QUOTE2) + SINGLE_QUOTE2;
|
|
1498
927
|
}
|
|
1499
928
|
emitIdentifier(identifier) {
|
|
1500
|
-
this.sql +=
|
|
929
|
+
this.sql += DOUBLE_QUOTE + identifier.replace(MATCH_DOUBLE_QUOTE, ESCAPE_DOUBLE_QUOTE) + DOUBLE_QUOTE;
|
|
1501
930
|
}
|
|
1502
931
|
}
|
|
1503
932
|
);
|
|
@@ -1532,7 +961,7 @@ var AttrDef = table("pg_attrdef", {
|
|
|
1532
961
|
num: integer("adnum").notNull(),
|
|
1533
962
|
bin: text("adbin").notNull()
|
|
1534
963
|
});
|
|
1535
|
-
var
|
|
964
|
+
var inline2 = (sql2) => postgresDialect.inline(sql2);
|
|
1536
965
|
var columnType = sql`pg_catalog.format_type(${Attr.typId}, ${Attr.typMod})`;
|
|
1537
966
|
var columnDefaultValue = when(
|
|
1538
967
|
[Attr.hasDef, sql`pg_catalog.pg_get_expr(${AttrDef.bin}, ${AttrDef.relId})`],
|
|
@@ -1592,7 +1021,7 @@ var postgresDiff = (hasTable) => {
|
|
|
1592
1021
|
notNull: and(def.notNull, isNull(def.identity)),
|
|
1593
1022
|
defaultValue
|
|
1594
1023
|
}).from(def);
|
|
1595
|
-
if (columnInfo.length === 0) return tableApi.create().map(
|
|
1024
|
+
if (columnInfo.length === 0) return tableApi.create().map(inline2);
|
|
1596
1025
|
const localColumns = new Map(
|
|
1597
1026
|
columnInfo.map((column2) => {
|
|
1598
1027
|
return [
|
|
@@ -1645,7 +1074,7 @@ var postgresDiff = (hasTable) => {
|
|
|
1645
1074
|
})
|
|
1646
1075
|
);
|
|
1647
1076
|
} else {
|
|
1648
|
-
if (
|
|
1077
|
+
if (inline2(localInstruction.type) !== inline2(schemaInstruction.type)) {
|
|
1649
1078
|
stmts.push(
|
|
1650
1079
|
sql.query({
|
|
1651
1080
|
alterTable,
|
|
@@ -1666,8 +1095,8 @@ var postgresDiff = (hasTable) => {
|
|
|
1666
1095
|
}
|
|
1667
1096
|
const localDefault = localInstruction.defaultValue;
|
|
1668
1097
|
const schemaDefault = schemaInstruction.defaultValue;
|
|
1669
|
-
const localDefaultStr = localDefault &&
|
|
1670
|
-
const schemaDefaultStr = schemaDefault &&
|
|
1098
|
+
const localDefaultStr = localDefault && inline2(localDefault);
|
|
1099
|
+
const schemaDefaultStr = schemaDefault && inline2(schemaDefault);
|
|
1671
1100
|
if (localDefaultStr !== schemaDefaultStr) {
|
|
1672
1101
|
stmts.push(
|
|
1673
1102
|
sql.query({
|
|
@@ -1681,7 +1110,7 @@ var postgresDiff = (hasTable) => {
|
|
|
1681
1110
|
}
|
|
1682
1111
|
}
|
|
1683
1112
|
}
|
|
1684
|
-
return stmts.map(
|
|
1113
|
+
return stmts.map(inline2);
|
|
1685
1114
|
});
|
|
1686
1115
|
};
|
|
1687
1116
|
|
|
@@ -1707,7 +1136,7 @@ async function acquireClient(client, depth) {
|
|
|
1707
1136
|
release: () => acquired.release()
|
|
1708
1137
|
};
|
|
1709
1138
|
}
|
|
1710
|
-
var
|
|
1139
|
+
var PreparedStatement5 = class {
|
|
1711
1140
|
constructor(client, sql2, name) {
|
|
1712
1141
|
this.client = client;
|
|
1713
1142
|
this.sql = sql2;
|
|
@@ -1724,14 +1153,12 @@ var PreparedStatement8 = class {
|
|
|
1724
1153
|
}).then((res) => res.rows);
|
|
1725
1154
|
}
|
|
1726
1155
|
async run(params) {
|
|
1727
|
-
await this.client.query(
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
params
|
|
1734
|
-
);
|
|
1156
|
+
const result = await this.client.query({
|
|
1157
|
+
name: this.name,
|
|
1158
|
+
text: this.sql,
|
|
1159
|
+
values: params
|
|
1160
|
+
});
|
|
1161
|
+
return { affectedRows: result.rowCount ?? 0 };
|
|
1735
1162
|
}
|
|
1736
1163
|
get(params) {
|
|
1737
1164
|
return this.all(params).then((rows) => rows[0] ?? null);
|
|
@@ -1760,7 +1187,7 @@ var PgDriver = class _PgDriver {
|
|
|
1760
1187
|
await this.client.query(query);
|
|
1761
1188
|
}
|
|
1762
1189
|
prepare(sql2, options) {
|
|
1763
|
-
return new
|
|
1190
|
+
return new PreparedStatement5(this.client, sql2, options?.name);
|
|
1764
1191
|
}
|
|
1765
1192
|
async close() {
|
|
1766
1193
|
if (this.depth > 0) throw new Error("Cannot close a transaction");
|
|
@@ -1768,12 +1195,7 @@ var PgDriver = class _PgDriver {
|
|
|
1768
1195
|
if ("end" in this.client) return this.client.end();
|
|
1769
1196
|
}
|
|
1770
1197
|
async batch(queries) {
|
|
1771
|
-
return this.transaction(
|
|
1772
|
-
const results = [];
|
|
1773
|
-
for (const { sql: sql2, params } of queries)
|
|
1774
|
-
results.push(await tx.prepare(sql2).values(params));
|
|
1775
|
-
return results;
|
|
1776
|
-
}, {});
|
|
1198
|
+
return this.transaction((tx) => Batch.run(tx, queries), {});
|
|
1777
1199
|
}
|
|
1778
1200
|
async transaction(run, options) {
|
|
1779
1201
|
const { client, release } = await acquireClient(this.client, this.depth);
|
|
@@ -1786,20 +1208,24 @@ var PgDriver = class _PgDriver {
|
|
|
1786
1208
|
);
|
|
1787
1209
|
return result;
|
|
1788
1210
|
} catch (error) {
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1211
|
+
try {
|
|
1212
|
+
await client.query(
|
|
1213
|
+
this.depth > 0 ? `rollback to savepoint d${this.depth}` : "rollback"
|
|
1214
|
+
);
|
|
1215
|
+
} catch {
|
|
1216
|
+
}
|
|
1792
1217
|
throw error;
|
|
1793
1218
|
} finally {
|
|
1794
1219
|
release?.();
|
|
1795
1220
|
}
|
|
1796
1221
|
}
|
|
1797
1222
|
};
|
|
1798
|
-
function
|
|
1223
|
+
function connect8(client, options) {
|
|
1799
1224
|
return new AsyncDatabase(
|
|
1800
1225
|
new PgDriver(client),
|
|
1801
1226
|
postgresDialect,
|
|
1802
|
-
postgresDiff
|
|
1227
|
+
postgresDiff,
|
|
1228
|
+
options
|
|
1803
1229
|
);
|
|
1804
1230
|
}
|
|
1805
1231
|
|
|
@@ -1814,7 +1240,7 @@ var RAW_DATE_TIME_PARSERS = {
|
|
|
1814
1240
|
1184: (value) => value
|
|
1815
1241
|
// timestamptz
|
|
1816
1242
|
};
|
|
1817
|
-
var
|
|
1243
|
+
var PreparedStatement6 = class {
|
|
1818
1244
|
constructor(client, sql2) {
|
|
1819
1245
|
this.client = client;
|
|
1820
1246
|
this.sql = sql2;
|
|
@@ -1828,10 +1254,11 @@ var PreparedStatement9 = class {
|
|
|
1828
1254
|
}).then((res) => res.rows);
|
|
1829
1255
|
}
|
|
1830
1256
|
async run(params) {
|
|
1831
|
-
await this.client.query(this.sql, params, {
|
|
1257
|
+
const result = await this.client.query(this.sql, params, {
|
|
1832
1258
|
rowMode: "array",
|
|
1833
1259
|
parsers: RAW_DATE_TIME_PARSERS
|
|
1834
1260
|
});
|
|
1261
|
+
return { affectedRows: result.affectedRows ?? 0 };
|
|
1835
1262
|
}
|
|
1836
1263
|
get(params) {
|
|
1837
1264
|
return this.all(params).then((rows) => rows[0] ?? null);
|
|
@@ -1862,15 +1289,10 @@ var PGliteDriver = class _PGliteDriver {
|
|
|
1862
1289
|
throw new Error("Cannot close a transaction");
|
|
1863
1290
|
}
|
|
1864
1291
|
prepare(sql2) {
|
|
1865
|
-
return new
|
|
1292
|
+
return new PreparedStatement6(this.client, sql2);
|
|
1866
1293
|
}
|
|
1867
1294
|
async batch(queries) {
|
|
1868
|
-
const transact =
|
|
1869
|
-
const results = [];
|
|
1870
|
-
for (const { sql: sql2, params } of queries)
|
|
1871
|
-
results.push(await tx.prepare(sql2).values(params));
|
|
1872
|
-
return results;
|
|
1873
|
-
};
|
|
1295
|
+
const transact = (tx) => Batch.run(tx, queries);
|
|
1874
1296
|
if (this.depth > 0) return transact(this);
|
|
1875
1297
|
return this.transaction(transact, {});
|
|
1876
1298
|
}
|
|
@@ -1886,87 +1308,21 @@ var PGliteDriver = class _PGliteDriver {
|
|
|
1886
1308
|
await this.exec(`release d${this.depth}`);
|
|
1887
1309
|
return result;
|
|
1888
1310
|
} catch (error) {
|
|
1889
|
-
|
|
1311
|
+
try {
|
|
1312
|
+
await this.exec(`rollback to d${this.depth}`);
|
|
1313
|
+
} catch {
|
|
1314
|
+
}
|
|
1890
1315
|
throw error;
|
|
1891
1316
|
}
|
|
1892
1317
|
}
|
|
1893
1318
|
};
|
|
1894
|
-
function
|
|
1895
|
-
return new AsyncDatabase(
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
this.client = client;
|
|
1902
|
-
this.stmt = stmt;
|
|
1903
|
-
}
|
|
1904
|
-
client;
|
|
1905
|
-
stmt;
|
|
1906
|
-
*iterate(params) {
|
|
1907
|
-
this.stmt.bind(params);
|
|
1908
|
-
while (this.stmt.step()) yield this.stmt.getAsObject();
|
|
1909
|
-
this.stmt.reset();
|
|
1910
|
-
}
|
|
1911
|
-
*iterateValues(params) {
|
|
1912
|
-
this.stmt.bind(params);
|
|
1913
|
-
while (this.stmt.step()) yield this.stmt.get();
|
|
1914
|
-
this.stmt.reset();
|
|
1915
|
-
}
|
|
1916
|
-
all(params) {
|
|
1917
|
-
return Array.from(this.iterate(params));
|
|
1918
|
-
}
|
|
1919
|
-
run(params) {
|
|
1920
|
-
this.stmt.run(params);
|
|
1921
|
-
this.stmt.reset();
|
|
1922
|
-
return { rowsAffected: this.client.getRowsModified() };
|
|
1923
|
-
}
|
|
1924
|
-
get(params) {
|
|
1925
|
-
return this.all(params)[0] ?? null;
|
|
1926
|
-
}
|
|
1927
|
-
values(params) {
|
|
1928
|
-
return Array.from(this.iterateValues(params));
|
|
1929
|
-
}
|
|
1930
|
-
free() {
|
|
1931
|
-
this.stmt.free();
|
|
1932
|
-
}
|
|
1933
|
-
};
|
|
1934
|
-
var SqlJsDriver = class _SqlJsDriver {
|
|
1935
|
-
constructor(client, depth = 0) {
|
|
1936
|
-
this.client = client;
|
|
1937
|
-
this.depth = depth;
|
|
1938
|
-
}
|
|
1939
|
-
client;
|
|
1940
|
-
depth;
|
|
1941
|
-
parsesJson = false;
|
|
1942
|
-
supportsTransactions = true;
|
|
1943
|
-
exec(query) {
|
|
1944
|
-
this.client.exec(query);
|
|
1945
|
-
}
|
|
1946
|
-
close() {
|
|
1947
|
-
this.client.close();
|
|
1948
|
-
}
|
|
1949
|
-
prepare(sql2) {
|
|
1950
|
-
return new PreparedStatement10(this.client, this.client.prepare(sql2));
|
|
1951
|
-
}
|
|
1952
|
-
batch(queries) {
|
|
1953
|
-
return this.transaction(
|
|
1954
|
-
(tx) => queries.map(({ sql: sql2, params }) => tx.prepare(sql2).values(params)),
|
|
1955
|
-
{}
|
|
1956
|
-
);
|
|
1957
|
-
}
|
|
1958
|
-
transaction(run, options) {
|
|
1959
|
-
return execTransaction(
|
|
1960
|
-
this,
|
|
1961
|
-
this.depth,
|
|
1962
|
-
(depth) => new _SqlJsDriver(this.client, depth),
|
|
1963
|
-
run,
|
|
1964
|
-
options
|
|
1965
|
-
);
|
|
1966
|
-
}
|
|
1967
|
-
};
|
|
1968
|
-
function connect9(db) {
|
|
1969
|
-
return new SyncDatabase(new SqlJsDriver(db), sqliteDialect, sqliteDiff);
|
|
1319
|
+
function connect9(db, options) {
|
|
1320
|
+
return new AsyncDatabase(
|
|
1321
|
+
new PGliteDriver(db),
|
|
1322
|
+
postgresDialect,
|
|
1323
|
+
postgresDiff,
|
|
1324
|
+
options
|
|
1325
|
+
);
|
|
1970
1326
|
}
|
|
1971
1327
|
|
|
1972
1328
|
export {
|