alinea 2.0.0-preview.7 → 2.0.0-preview.9
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 +103 -103
- package/dist/adapter/next/cms.d.ts +18 -4
- package/dist/adapter/next/cms.js +141 -36
- package/dist/adapter/next/handler.d.ts +5 -1
- package/dist/adapter/next/handler.js +77 -17
- 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 +45 -0
- package/dist/adapter/next/renderStats.js +142 -0
- package/dist/adapter/next/syncCheck.d.ts +8 -2
- package/dist/adapter/next/syncCheck.js +5 -11
- package/dist/adapter/next/with-alinea.js +6 -20
- package/dist/backend/HandleAction.d.ts +1 -1
- package/dist/backend/HandleAction.js +1 -1
- package/dist/backend/Handler.d.ts +2 -2
- package/dist/backend/Handler.js +45 -47
- package/dist/backend/api/CreateBackend.js +15 -3
- package/dist/backend/api/DatabaseApi.js +22 -135
- package/dist/backend/api/ProxyMedia.d.ts +2 -3
- package/dist/backend/api/ProxyMedia.js +7 -22
- 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 +8 -0
- package/dist/backend/store/GeneratedDatabase.js +33 -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 +1565 -468
- package/dist/chunks/bun-sqlite-5SHXN3AT.js +18 -0
- package/dist/chunks/chunk-2BJ2IFQM.js +1085 -0
- package/dist/chunks/chunk-2PIFHEYR.js +364 -0
- package/dist/chunks/chunk-66YZ47TY.js +94 -0
- package/dist/chunks/chunk-76VMZTLN.js +55 -0
- package/dist/chunks/chunk-AIU6CMVT.js +495 -0
- package/dist/chunks/chunk-ASYKC6IE.js +103 -0
- package/dist/chunks/chunk-ATF42T2B.js +35 -0
- package/dist/chunks/{chunk-6P4UVRPH.js → chunk-DWR5A5KL.js} +6 -1
- package/dist/chunks/{chunk-NWQXN4SB.js → chunk-ETBQTP2S.js} +40 -29
- package/dist/chunks/chunk-ETWOY4AL.js +100 -0
- package/dist/chunks/chunk-K62JP6HR.js +22 -0
- package/dist/chunks/chunk-MOWR65LM.js +610 -0
- package/dist/chunks/chunk-N47Y62CI.js +396 -0
- package/dist/chunks/chunk-QBPYWU6C.js +24 -0
- package/dist/chunks/{chunk-X47OVDF3.js → chunk-QJGGYF6E.js} +356 -1000
- package/dist/chunks/chunk-QSN6RH6X.js +94 -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-XVNTNMCY.js +18 -0
- package/dist/cli/Generate.js +74 -64
- package/dist/cli/Serve.js +1 -1
- package/dist/cli/bin.js +6 -1
- package/dist/cli/generate/CopyStaticFiles.js +17 -14
- package/dist/cli/generate/DevDB.d.ts +22 -5
- package/dist/cli/generate/DevDB.js +138 -24
- package/dist/cli/serve/CreateLocalServer.js +22 -4
- package/dist/cli/serve/DevServer.d.ts +2 -0
- package/dist/cli/serve/DevServer.js +7 -2
- 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/Breadcrumbs.js +2 -2
- package/dist/components/Calendar.js +7 -7
- package/dist/components/Checkbox.js +1 -1
- package/dist/components/ColorSwatchPicker.js +2 -2
- package/dist/components/ComboBox.js +14 -14
- package/dist/components/DateField.js +1 -1
- package/dist/components/DatePicker.js +6 -6
- package/dist/components/DateRangePicker.js +4 -4
- package/dist/components/Disclosure.js +8 -8
- package/dist/components/Label.js +6 -6
- package/dist/components/List.js +33 -33
- package/dist/components/Menu.js +2 -2
- package/dist/components/Modal.js +2 -2
- package/dist/components/MultipleSelect.js +23 -23
- package/dist/components/NumberField.js +6 -6
- package/dist/components/ProgressCircle.js +3 -3
- package/dist/components/SearchField.js +8 -8
- package/dist/components/Select.js +8 -8
- package/dist/components/Surface.js +3 -3
- package/dist/components/Switch.js +2 -2
- package/dist/components/Table.js +7 -7
- package/dist/components/Tabs.js +2 -2
- package/dist/components/TagGroup.js +2 -2
- package/dist/components/TextField.js +2 -2
- package/dist/components/TimeField.js +3 -3
- 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 +6 -6
- package/dist/core/Client.d.ts +1 -4
- package/dist/core/Client.js +5 -7
- package/dist/core/Connection.d.ts +4 -1
- package/dist/core/Connection.js +3 -1
- 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 +27 -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 +60 -21
- 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 +2 -2
- package/dist/dashboard/app/ActivityStatus.js +14 -14
- package/dist/dashboard/app/AppShell.js +2 -2
- package/dist/dashboard/app/AuthView.js +12 -12
- package/dist/dashboard/app/CompactField.js +11 -11
- package/dist/dashboard/app/DashboardErrorBoundary.js +6 -6
- package/dist/dashboard/app/DashboardLayout.js +3 -3
- package/dist/dashboard/app/EntryHeader.js +8 -8
- package/dist/dashboard/app/EntryReferences.js +8 -8
- package/dist/dashboard/app/EntrySidebar.js +15 -15
- package/dist/dashboard/app/EntrySidebarPreview.js +7 -7
- package/dist/dashboard/app/EntryTranslationBanner.js +5 -5
- package/dist/dashboard/app/Explorer.js +39 -39
- package/dist/dashboard/app/ExplorerCards.js +31 -31
- package/dist/dashboard/app/ExplorerFileCard.js +19 -19
- package/dist/dashboard/app/ExplorerList.js +10 -10
- package/dist/dashboard/app/ExplorerModal.js +5 -5
- package/dist/dashboard/app/ExplorerTable.js +47 -47
- package/dist/dashboard/app/LinkPicker.js +5 -5
- package/dist/dashboard/app/LocaleMenu.js +4 -4
- package/dist/dashboard/app/SidebarTree.js +76 -40
- package/dist/dashboard/app/WorkspaceMenu.js +9 -9
- package/dist/dashboard/app/WorkspaceRoots.js +22 -22
- package/dist/dashboard/app/editor/FileEditor.js +28 -28
- package/dist/dashboard/app/editor/FilePreview.js +6 -6
- package/dist/dashboard/app/modals/CreateEntry.js +3 -3
- package/dist/dashboard/app/pages/EntryPage.js +18 -18
- package/dist/dashboard/app/pages/RootPage.js +3 -3
- package/dist/dashboard/app/pages/SplashPage.js +45 -45
- package/dist/dashboard/app/pages/UsersPage.js +34 -34
- package/dist/dashboard/app/ui/DashboardModal.js +18 -18
- package/dist/dashboard/app/ui/Rail.js +5 -5
- package/dist/dashboard/app/ui/Sidebar.js +2 -2
- 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 +82 -27
- package/dist/dashboard/boot/LoadWorker.js +2 -3
- package/dist/dashboard/boot/WorkerDB.d.ts +2 -2
- 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 +42 -0
- package/dist/database/BrowserEntryStore.js +182 -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 +97 -0
- package/dist/database/EntryDatabase.js +528 -0
- package/dist/database/EntryStore.d.ts +58 -0
- package/dist/database/EntryStore.js +230 -0
- package/dist/database/EntryTransaction.d.ts +33 -0
- package/dist/database/EntryTransaction.js +907 -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/DatabaseHandle.d.ts +17 -0
- package/dist/database/driver/DatabaseHandle.js +0 -0
- package/dist/database/driver/OverlayExtension.browser.d.ts +2 -0
- package/dist/database/driver/OverlayExtension.browser.js +9 -0
- package/dist/database/driver/OverlayExtension.d.ts +1 -0
- package/dist/database/driver/OverlayExtension.js +7 -0
- package/dist/database/driver/RuntimeDatabase.d.ts +13 -0
- package/dist/database/driver/RuntimeDatabase.js +77 -0
- package/dist/database/driver/WasmDatabase.d.ts +29 -0
- package/dist/database/driver/WasmDatabase.js +46 -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 +189 -0
- package/dist/database/entry/EntryTable.js +186 -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 +44 -0
- package/dist/database/query/EntryQuery.js +412 -0
- package/dist/database/query/EntryReferences.d.ts +5 -0
- package/dist/database/query/EntryReferences.js +70 -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 +12 -0
- package/dist/database/query/ResolveQuery.js +189 -0
- package/dist/database/query/Search.d.ts +38 -0
- package/dist/database/query/Search.js +149 -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 +8 -0
- package/dist/database/sync/EntryParser.js +90 -0
- package/dist/database/sync/EntrySyncer.d.ts +25 -0
- package/dist/database/sync/EntrySyncer.js +89 -0
- package/dist/database/sync/Ingest.d.ts +21 -0
- package/dist/database/sync/Ingest.js +145 -0
- package/dist/database/sync/SyncQueries.d.ts +160 -0
- package/dist/database/sync/SyncQueries.js +216 -0
- package/dist/field/check/CheckField.view.js +2 -2
- package/dist/field/code/CodeField.view.js +10 -10
- package/dist/field/link/LinkField.js +23 -0
- package/dist/field/link/LinkField.view.js +42 -41
- package/dist/field/list/ListField.view.js +172 -150
- 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 +31 -16
- package/dist/field/richtext/RichTextDocument.js +4 -3
- package/dist/field/richtext/RichTextExtensions.d.ts +1 -1
- package/dist/field/richtext/RichTextExtensions.js +33 -29
- package/dist/field/richtext/RichTextField.view.js +17 -8
- package/dist/field/richtext/RichTextInsertMenu.js +2 -2
- package/dist/field/views.js +2 -0
- package/dist/next.cjs +6 -20
- 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 +45 -0
- package/dist/preview/widget.js +96 -1
- package/dist/query.d.ts +28 -0
- package/package.json +6 -1
- package/dist/adapter/next/DevRemote.d.ts +0 -3
- package/dist/adapter/next/DevRemote.js +0 -45
- 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
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import {
|
|
2
|
+
count,
|
|
3
|
+
max,
|
|
4
|
+
min
|
|
5
|
+
} from "../../chunks/chunk-QBPYWU6C.js";
|
|
6
|
+
import {
|
|
7
|
+
Builder
|
|
8
|
+
} from "../../chunks/chunk-2BJ2IFQM.js";
|
|
9
|
+
import {
|
|
10
|
+
and,
|
|
11
|
+
eq,
|
|
12
|
+
gt,
|
|
13
|
+
inArray,
|
|
14
|
+
lt,
|
|
15
|
+
ne,
|
|
16
|
+
or,
|
|
17
|
+
when
|
|
18
|
+
} from "../../chunks/chunk-XCZXR3C2.js";
|
|
19
|
+
import "../../chunks/chunk-2PIFHEYR.js";
|
|
20
|
+
import "../../chunks/chunk-K62JP6HR.js";
|
|
21
|
+
import "../../chunks/chunk-ATF42T2B.js";
|
|
22
|
+
import {
|
|
23
|
+
sql
|
|
24
|
+
} from "../../chunks/chunk-ETBQTP2S.js";
|
|
25
|
+
import "../../chunks/chunk-CQ52GEHY.js";
|
|
26
|
+
|
|
27
|
+
// src/database/sync/SyncQueries.ts
|
|
28
|
+
import { DatabaseStateTable } from "../DatabaseTables.js";
|
|
29
|
+
import { entryDataText } from "../entry/EntryData.js";
|
|
30
|
+
import {
|
|
31
|
+
EntryIndexColumns,
|
|
32
|
+
EntryIndexTable,
|
|
33
|
+
EntryReferenceTable
|
|
34
|
+
} from "../entry/EntryTable.js";
|
|
35
|
+
import { EntrySearchTable } from "../query/Search.js";
|
|
36
|
+
var sqliteBatchSize = 5e3;
|
|
37
|
+
var builder = new Builder();
|
|
38
|
+
var ids = sql.placeholder("ids");
|
|
39
|
+
var versionIds = sql.placeholder("versionIds");
|
|
40
|
+
var filePaths = sql.placeholder("filePaths");
|
|
41
|
+
var dirs = sql.placeholder("dirs");
|
|
42
|
+
var dir = sql.placeholder("dir");
|
|
43
|
+
var from = sql.placeholder("from");
|
|
44
|
+
var to = sql.placeholder("to");
|
|
45
|
+
var revision = sql.placeholder("revision");
|
|
46
|
+
var treeSnapshot = sql.placeholder("tree");
|
|
47
|
+
var targets = sql.placeholder("targets");
|
|
48
|
+
function inJson(column, values) {
|
|
49
|
+
return sql`${column} in (select value from json_each(${values}))`;
|
|
50
|
+
}
|
|
51
|
+
function versionFields(entries) {
|
|
52
|
+
return {
|
|
53
|
+
versionId: entries.versionId,
|
|
54
|
+
id: entries.id,
|
|
55
|
+
locale: entries.locale,
|
|
56
|
+
versionStatus: entries.versionStatus,
|
|
57
|
+
type: entries.type,
|
|
58
|
+
index: entries.index,
|
|
59
|
+
workspace: entries.workspace,
|
|
60
|
+
root: entries.root,
|
|
61
|
+
path: entries.path,
|
|
62
|
+
filePath: entries.filePath,
|
|
63
|
+
level: entries.level,
|
|
64
|
+
parentDir: entries.parentDir,
|
|
65
|
+
childrenDir: entries.childrenDir,
|
|
66
|
+
childrenSha: entries.childrenSha,
|
|
67
|
+
parentId: entries.parentId,
|
|
68
|
+
parents: entries.parents,
|
|
69
|
+
status: entries.status,
|
|
70
|
+
active: entries.active,
|
|
71
|
+
main: entries.main,
|
|
72
|
+
visible: entries.visible,
|
|
73
|
+
url: entries.url
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function insertEntryQuery(entries, jsonb) {
|
|
77
|
+
const { rowid: _, ...columns } = EntryIndexColumns;
|
|
78
|
+
const values = Object.fromEntries(
|
|
79
|
+
Object.keys(columns).map((name) => [name, sql.placeholder(name)])
|
|
80
|
+
);
|
|
81
|
+
if (jsonb) values.data = sql`jsonb(${values.data})`;
|
|
82
|
+
return builder.insert(entries).values(values);
|
|
83
|
+
}
|
|
84
|
+
function insertEntryValues(row) {
|
|
85
|
+
return {
|
|
86
|
+
...row,
|
|
87
|
+
parents: JSON.stringify(row.parents),
|
|
88
|
+
active: Number(row.active),
|
|
89
|
+
main: Number(row.main),
|
|
90
|
+
visible: Number(row.visible)
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function prepareSyncQueries(db, jsonb) {
|
|
94
|
+
const entries = EntryIndexTable;
|
|
95
|
+
const state = DatabaseStateTable;
|
|
96
|
+
const search = EntrySearchTable;
|
|
97
|
+
const references = EntryReferenceTable;
|
|
98
|
+
const storedVersion = or(
|
|
99
|
+
inJson(entries.filePath, filePaths),
|
|
100
|
+
inJson(entries.versionId, versionIds)
|
|
101
|
+
);
|
|
102
|
+
const activeCount = count(
|
|
103
|
+
when([eq(entries.active, true), sql.value(1)], null)
|
|
104
|
+
);
|
|
105
|
+
const mainCount = count(when([eq(entries.main, true), sql.value(1)], null));
|
|
106
|
+
const parentKey = sql`coalesce(${entries.parentId}, '')`;
|
|
107
|
+
const statements = {
|
|
108
|
+
revision: builder.select({ revision: state.revision }).from(state).where(eq(state.id, 1)).$first().prepare(void 0, db),
|
|
109
|
+
tree: builder.select({ tree: state.tree }).from(state).where(eq(state.id, 1)).$first().prepare(void 0, db),
|
|
110
|
+
setRevision: builder.update(state).set({ revision, tree: sql`${treeSnapshot}` }).where(eq(state.id, 1)).prepare(void 0, db),
|
|
111
|
+
entryCount: builder.select({ value: count() }).from(entries).where(sql.value(true)).$first().prepare(void 0, db),
|
|
112
|
+
insertEntry: insertEntryQuery(entries, jsonb).prepare(void 0, db),
|
|
113
|
+
/** Index the entry row inserted last, under its rowid. */
|
|
114
|
+
insertSearch: builder.insert(search).values({
|
|
115
|
+
rowid: sql`last_insert_rowid()`,
|
|
116
|
+
title: sql.placeholder("title"),
|
|
117
|
+
body: sql.placeholder("body")
|
|
118
|
+
}).prepare(void 0, db),
|
|
119
|
+
/** Record the entry ids a version references, under its rowid. */
|
|
120
|
+
insertReferences: builder.insert(references).select(
|
|
121
|
+
builder.select({
|
|
122
|
+
targetId: sql`value`,
|
|
123
|
+
source: builder.select(entries.rowid).from(entries).where(
|
|
124
|
+
eq(entries.versionId, sql.placeholder("versionId"))
|
|
125
|
+
)
|
|
126
|
+
}).from(sql`json_each(${targets})`)
|
|
127
|
+
).prepare(void 0, db),
|
|
128
|
+
/** Versions stored at these file paths or under these version ids. */
|
|
129
|
+
storedFiles: builder.select({
|
|
130
|
+
id: entries.id,
|
|
131
|
+
filePath: entries.filePath,
|
|
132
|
+
childrenDir: entries.childrenDir,
|
|
133
|
+
childrenSha: entries.childrenSha
|
|
134
|
+
}).from(entries).where(storedVersion).prepare(void 0, db),
|
|
135
|
+
/** Delete the versions stored at these file paths or version ids. */
|
|
136
|
+
deleteFiles: builder.delete(entries).where(storedVersion).prepare(void 0, db),
|
|
137
|
+
/** Delete the search rows of those versions, before the versions. */
|
|
138
|
+
deleteSearch: builder.delete(search).where(
|
|
139
|
+
inArray(
|
|
140
|
+
search.rowid,
|
|
141
|
+
builder.select(entries.rowid).from(entries).where(storedVersion)
|
|
142
|
+
)
|
|
143
|
+
).prepare(void 0, db),
|
|
144
|
+
/** Delete the reference rows of those versions, before the versions. */
|
|
145
|
+
deleteReferences: builder.delete(references).where(
|
|
146
|
+
inArray(
|
|
147
|
+
references.source,
|
|
148
|
+
builder.select(entries.rowid).from(entries).where(storedVersion)
|
|
149
|
+
)
|
|
150
|
+
).prepare(void 0, db),
|
|
151
|
+
directories: builder.select({
|
|
152
|
+
id: entries.id,
|
|
153
|
+
childrenDir: entries.childrenDir,
|
|
154
|
+
childrenSha: entries.childrenSha
|
|
155
|
+
}).from(entries).where(inJson(entries.childrenDir, dirs)).prepare(void 0, db),
|
|
156
|
+
updateChildrenSha: builder.update(entries).set({ childrenSha: sql.placeholder("sha") }).where(eq(entries.childrenDir, dir)).prepare(void 0, db),
|
|
157
|
+
/** Every version of these entries. */
|
|
158
|
+
versionsOf: builder.select(versionFields(entries)).from(entries).where(inJson(entries.id, ids)).prepare(void 0, db),
|
|
159
|
+
/** Every version stored below one directory. */
|
|
160
|
+
versionsBelow: builder.select(versionFields(entries)).from(entries).where(and(gt(entries.filePath, from), lt(entries.filePath, to))).prepare(void 0, db),
|
|
161
|
+
/** The entry owning each directory: children stored there have it as parent. */
|
|
162
|
+
owners: builder.select({ childrenDir: entries.childrenDir, id: entries.id }).from(entries).where(inJson(entries.childrenDir, dirs)).groupBy(entries.childrenDir).prepare(void 0, db),
|
|
163
|
+
statusesOf: builder.select({ id: entries.id, locale: entries.locale, status: entries.status }).from(entries).where(inJson(entries.id, ids)).prepare(void 0, db),
|
|
164
|
+
dataOf: builder.select({ versionId: entries.versionId, data: entryDataText(entries) }).from(entries).where(inJson(entries.versionId, versionIds)).prepare(void 0, db),
|
|
165
|
+
updateVersion: builder.update(entries).set({
|
|
166
|
+
parentId: sql.placeholder("parentId"),
|
|
167
|
+
parents: sql.placeholder("parents"),
|
|
168
|
+
status: sql.placeholder("status"),
|
|
169
|
+
active: sql.placeholder("active"),
|
|
170
|
+
main: sql.placeholder("main"),
|
|
171
|
+
visible: sql.placeholder("visible"),
|
|
172
|
+
url: sql.placeholder("url")
|
|
173
|
+
}).where(eq(entries.versionId, sql.placeholder("versionId"))).prepare(void 0, db),
|
|
174
|
+
/** An entry whose versions disagree on what all of them must share. */
|
|
175
|
+
mismatchedEntry: builder.select({ id: entries.id }).from(entries).where(inJson(entries.id, ids)).groupBy(entries.id).having(
|
|
176
|
+
or(
|
|
177
|
+
ne(min(entries.type), max(entries.type)),
|
|
178
|
+
ne(min(entries.index), max(entries.index)),
|
|
179
|
+
ne(min(entries.root), max(entries.root)),
|
|
180
|
+
ne(min(entries.workspace), max(entries.workspace)),
|
|
181
|
+
ne(min(parentKey), max(parentKey))
|
|
182
|
+
)
|
|
183
|
+
).$first().prepare(void 0, db),
|
|
184
|
+
/** A language whose versions disagree on their location. */
|
|
185
|
+
mismatchedLanguage: builder.select({ id: entries.id, locale: entries.locale }).from(entries).where(inJson(entries.id, ids)).groupBy(entries.id, entries.locale).having(
|
|
186
|
+
or(
|
|
187
|
+
ne(min(entries.path), max(entries.path)),
|
|
188
|
+
ne(min(entries.parentDir), max(entries.parentDir)),
|
|
189
|
+
ne(min(entries.childrenDir), max(entries.childrenDir))
|
|
190
|
+
)
|
|
191
|
+
).$first().prepare(void 0, db),
|
|
192
|
+
/** A language without exactly one active and one main version. */
|
|
193
|
+
invalidStatus: builder.select({ id: entries.id, locale: entries.locale }).from(entries).where(inJson(entries.id, ids)).groupBy(entries.id, entries.locale).having(or(ne(activeCount, 1), ne(mainCount, 1))).$first().prepare(void 0, db),
|
|
194
|
+
/** A version listed among its own parents. */
|
|
195
|
+
cyclicVersion: builder.select({ filePath: entries.filePath }).from(entries).where(
|
|
196
|
+
and(
|
|
197
|
+
inJson(entries.id, ids),
|
|
198
|
+
sql`exists (
|
|
199
|
+
select 1 from json_each(${entries.parents}) parent
|
|
200
|
+
where parent.value = ${entries.id}
|
|
201
|
+
)`
|
|
202
|
+
)
|
|
203
|
+
).$first().prepare(void 0, db)
|
|
204
|
+
};
|
|
205
|
+
return {
|
|
206
|
+
...statements,
|
|
207
|
+
free() {
|
|
208
|
+
for (const statement of Object.values(statements)) statement.free();
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
export {
|
|
213
|
+
insertEntryValues,
|
|
214
|
+
prepareSyncQueries,
|
|
215
|
+
sqliteBatchSize
|
|
216
|
+
};
|
|
@@ -9,9 +9,9 @@ import { useField, useFieldError, useFieldOptions } from "alinea/dashboard/hooks
|
|
|
9
9
|
|
|
10
10
|
// src/field/check/CheckField.module.css
|
|
11
11
|
var CheckField_default = {
|
|
12
|
+
"checkline": "alinea-checkline",
|
|
12
13
|
"checkline-required": "alinea-checkline-required",
|
|
13
|
-
"checklineRequired": "alinea-checkline-required"
|
|
14
|
-
"checkline": "alinea-checkline"
|
|
14
|
+
"checklineRequired": "alinea-checkline-required"
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
// src/field/check/CheckField.view.tsx
|
|
@@ -66,25 +66,25 @@ import { Fragment, useId } from "react";
|
|
|
66
66
|
var CodeField_default = {
|
|
67
67
|
"CodeEditorInput-comment": "alinea-CodeEditorInput-comment",
|
|
68
68
|
"CodeEditorInputComment": "alinea-CodeEditorInput-comment",
|
|
69
|
-
"CodeEditorInput-
|
|
70
|
-
"
|
|
69
|
+
"CodeEditorInput-number": "alinea-CodeEditorInput-number",
|
|
70
|
+
"CodeEditorInputNumber": "alinea-CodeEditorInput-number",
|
|
71
71
|
"CodeEditorInput-regex": "alinea-CodeEditorInput-regex",
|
|
72
72
|
"CodeEditorInputRegex": "alinea-CodeEditorInput-regex",
|
|
73
|
-
"CodeEditorInput-
|
|
74
|
-
"
|
|
73
|
+
"CodeEditorInput-punctuation": "alinea-CodeEditorInput-punctuation",
|
|
74
|
+
"CodeEditorInputPunctuation": "alinea-CodeEditorInput-punctuation",
|
|
75
75
|
"CodeEditorInput-keyword": "alinea-CodeEditorInput-keyword",
|
|
76
76
|
"CodeEditorInputKeyword": "alinea-CodeEditorInput-keyword",
|
|
77
|
-
"CodeEditorInput-pre": "alinea-CodeEditorInput-pre",
|
|
78
|
-
"CodeEditorInputPre": "alinea-CodeEditorInput-pre",
|
|
79
|
-
"CodeEditorInput-number": "alinea-CodeEditorInput-number",
|
|
80
|
-
"CodeEditorInputNumber": "alinea-CodeEditorInput-number",
|
|
81
77
|
"CodeEditorInput-identifier": "alinea-CodeEditorInput-identifier",
|
|
82
78
|
"CodeEditorInputIdentifier": "alinea-CodeEditorInput-identifier",
|
|
79
|
+
"CodeEditorInput-editor": "alinea-CodeEditorInput-editor",
|
|
80
|
+
"CodeEditorInputEditor": "alinea-CodeEditorInput-editor",
|
|
81
|
+
"CodeEditorInput-string": "alinea-CodeEditorInput-string",
|
|
82
|
+
"CodeEditorInputString": "alinea-CodeEditorInput-string",
|
|
83
83
|
"CodeEditorInput": "alinea-CodeEditorInput",
|
|
84
84
|
"CodeEditorInput-textarea": "alinea-CodeEditorInput-textarea",
|
|
85
85
|
"CodeEditorInputTextarea": "alinea-CodeEditorInput-textarea",
|
|
86
|
-
"CodeEditorInput-
|
|
87
|
-
"
|
|
86
|
+
"CodeEditorInput-pre": "alinea-CodeEditorInput-pre",
|
|
87
|
+
"CodeEditorInputPre": "alinea-CodeEditorInput-pre"
|
|
88
88
|
};
|
|
89
89
|
|
|
90
90
|
// src/field/code/CodeField.view.tsx
|
|
@@ -11,6 +11,7 @@ import { ListRow } from "alinea/core/ListRow";
|
|
|
11
11
|
import { entries, fromEntries } from "alinea/core/util/Objects";
|
|
12
12
|
import { viewKeys } from "alinea/dashboard/ViewKeys";
|
|
13
13
|
import { unresolvedEntryMarker } from "alinea/picker/entry/EntryPicker";
|
|
14
|
+
import { EntryReference } from "alinea/picker/entry/EntryReference";
|
|
14
15
|
var LinkField = class extends UnionField {
|
|
15
16
|
first(query) {
|
|
16
17
|
return { edge: "entrySingle", first: true, field: this, ...query };
|
|
@@ -43,6 +44,9 @@ function createLink(label, options) {
|
|
|
43
44
|
}
|
|
44
45
|
];
|
|
45
46
|
},
|
|
47
|
+
localizeLinks(value, context) {
|
|
48
|
+
return localizeEntryLink(value, context);
|
|
49
|
+
},
|
|
46
50
|
view: viewKeys.SingleLinkInput
|
|
47
51
|
});
|
|
48
52
|
}
|
|
@@ -98,6 +102,17 @@ function createLinks(label, options) {
|
|
|
98
102
|
}
|
|
99
103
|
return result;
|
|
100
104
|
},
|
|
105
|
+
localizeLinks(rows, context) {
|
|
106
|
+
if (!Array.isArray(rows)) return rows;
|
|
107
|
+
let next = rows;
|
|
108
|
+
rows.forEach((row, index) => {
|
|
109
|
+
const localized = localizeEntryLink(row, context);
|
|
110
|
+
if (localized === row) return;
|
|
111
|
+
if (next === rows) next = [...rows];
|
|
112
|
+
next[index] = localized;
|
|
113
|
+
});
|
|
114
|
+
return next;
|
|
115
|
+
},
|
|
101
116
|
view: viewKeys.MultipleLinksInput
|
|
102
117
|
});
|
|
103
118
|
}
|
|
@@ -106,6 +121,14 @@ function entryIdOf(value) {
|
|
|
106
121
|
const entry = value._entry;
|
|
107
122
|
return typeof entry === "string" ? entry : void 0;
|
|
108
123
|
}
|
|
124
|
+
function localizeEntryLink(value, context) {
|
|
125
|
+
if (!value || value[Reference.type] !== "entry") return value;
|
|
126
|
+
const entryId = entryIdOf(value);
|
|
127
|
+
if (!entryId || !context.entryIds.has(entryId)) return value;
|
|
128
|
+
if (value[EntryReference.locale] === context.locale)
|
|
129
|
+
return value;
|
|
130
|
+
return { ...value, [EntryReference.locale]: context.locale };
|
|
131
|
+
}
|
|
109
132
|
function entryLinkType(type) {
|
|
110
133
|
return type === "entry" || type === "image" || type === "file" ? type : void 0;
|
|
111
134
|
}
|
|
@@ -89,56 +89,56 @@ import { Fragment, useMemo, useRef, useState } from "react";
|
|
|
89
89
|
|
|
90
90
|
// src/field/link/LinkField.module.css
|
|
91
91
|
var LinkField_default = {
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"LinkFieldView-
|
|
95
|
-
"
|
|
92
|
+
"is-loading": "alinea-is-loading",
|
|
93
|
+
"isLoading": "alinea-is-loading",
|
|
94
|
+
"LinkFieldView-create": "alinea-LinkFieldView-create",
|
|
95
|
+
"LinkFieldViewCreate": "alinea-LinkFieldView-create",
|
|
96
|
+
"LinkFieldView-label": "alinea-LinkFieldView-label",
|
|
97
|
+
"LinkFieldViewLabel": "alinea-LinkFieldView-label",
|
|
98
|
+
"LinkFieldView-image": "alinea-LinkFieldView-image",
|
|
99
|
+
"LinkFieldViewImage": "alinea-LinkFieldView-image",
|
|
100
|
+
"LinkFieldView-anchorOption-label": "alinea-LinkFieldView-anchorOption-label",
|
|
101
|
+
"LinkFieldViewAnchorOptionLabel": "alinea-LinkFieldView-anchorOption-label",
|
|
96
102
|
"LinkFieldView-title": "alinea-LinkFieldView-title",
|
|
97
103
|
"LinkFieldViewTitle": "alinea-LinkFieldView-title",
|
|
104
|
+
"LinkFieldView-anchorOption-location": "alinea-LinkFieldView-anchorOption-location",
|
|
105
|
+
"LinkFieldViewAnchorOptionLocation": "alinea-LinkFieldView-anchorOption-location",
|
|
106
|
+
"LinkFieldView-metaLabel": "alinea-LinkFieldView-metaLabel",
|
|
107
|
+
"LinkFieldViewMetaLabel": "alinea-LinkFieldView-metaLabel",
|
|
98
108
|
"LinkFieldView-imagePlaceholder": "alinea-LinkFieldView-imagePlaceholder",
|
|
99
109
|
"LinkFieldViewImagePlaceholder": "alinea-LinkFieldView-imagePlaceholder",
|
|
100
|
-
"LinkFieldView-
|
|
101
|
-
"
|
|
110
|
+
"LinkFieldView-skeleton-pulse": "alinea-LinkFieldView-skeleton-pulse",
|
|
111
|
+
"LinkFieldViewSkeletonPulse": "alinea-LinkFieldView-skeleton-pulse",
|
|
102
112
|
"LinkFieldView-previewImage": "alinea-LinkFieldView-previewImage",
|
|
103
113
|
"LinkFieldViewPreviewImage": "alinea-LinkFieldView-previewImage",
|
|
104
|
-
"LinkFieldView-metaLabel": "alinea-LinkFieldView-metaLabel",
|
|
105
|
-
"LinkFieldViewMetaLabel": "alinea-LinkFieldView-metaLabel",
|
|
106
|
-
"LinkFieldView-anchorOption": "alinea-LinkFieldView-anchorOption",
|
|
107
|
-
"LinkFieldViewAnchorOption": "alinea-LinkFieldView-anchorOption",
|
|
108
|
-
"LinkFieldView-icon": "alinea-LinkFieldView-icon",
|
|
109
|
-
"LinkFieldViewIcon": "alinea-LinkFieldView-icon",
|
|
110
|
-
"LinkFieldView-createButton": "alinea-LinkFieldView-createButton",
|
|
111
|
-
"LinkFieldViewCreateButton": "alinea-LinkFieldView-createButton",
|
|
112
114
|
"is-wide": "alinea-is-wide",
|
|
113
115
|
"isWide": "alinea-is-wide",
|
|
114
|
-
"LinkFieldView-
|
|
115
|
-
"
|
|
116
|
-
"LinkFieldView-skeleton": "alinea-LinkFieldView-skeleton",
|
|
117
|
-
"LinkFieldViewSkeleton": "alinea-LinkFieldView-skeleton",
|
|
118
|
-
"LinkFieldView-rowDropTarget": "alinea-LinkFieldView-rowDropTarget",
|
|
119
|
-
"LinkFieldViewRowDropTarget": "alinea-LinkFieldView-rowDropTarget",
|
|
120
|
-
"LinkFieldView-previewImagePlaceholder": "alinea-LinkFieldView-previewImagePlaceholder",
|
|
121
|
-
"LinkFieldViewPreviewImagePlaceholder": "alinea-LinkFieldView-previewImagePlaceholder",
|
|
122
|
-
"LinkFieldView-dropIndicator": "alinea-LinkFieldView-dropIndicator",
|
|
123
|
-
"LinkFieldViewDropIndicator": "alinea-LinkFieldView-dropIndicator",
|
|
124
|
-
"LinkFieldView-image": "alinea-LinkFieldView-image",
|
|
125
|
-
"LinkFieldViewImage": "alinea-LinkFieldView-image",
|
|
126
|
-
"LinkFieldView-type": "alinea-LinkFieldView-type",
|
|
127
|
-
"LinkFieldViewType": "alinea-LinkFieldView-type",
|
|
116
|
+
"LinkFieldView-createButton": "alinea-LinkFieldView-createButton",
|
|
117
|
+
"LinkFieldViewCreateButton": "alinea-LinkFieldView-createButton",
|
|
128
118
|
"is-missing": "alinea-is-missing",
|
|
129
119
|
"isMissing": "alinea-is-missing",
|
|
130
120
|
"LinkFieldView-inputHeader": "alinea-LinkFieldView-inputHeader",
|
|
131
121
|
"LinkFieldViewInputHeader": "alinea-LinkFieldView-inputHeader",
|
|
132
|
-
"LinkFieldView-
|
|
133
|
-
"
|
|
134
|
-
"
|
|
135
|
-
"
|
|
136
|
-
"LinkFieldView-label": "alinea-LinkFieldView-label",
|
|
137
|
-
"LinkFieldViewLabel": "alinea-LinkFieldView-label",
|
|
122
|
+
"LinkFieldView-labelText": "alinea-LinkFieldView-labelText",
|
|
123
|
+
"LinkFieldViewLabelText": "alinea-LinkFieldView-labelText",
|
|
124
|
+
"LinkFieldView-type": "alinea-LinkFieldView-type",
|
|
125
|
+
"LinkFieldViewType": "alinea-LinkFieldView-type",
|
|
138
126
|
"LinkFieldView-meta": "alinea-LinkFieldView-meta",
|
|
139
127
|
"LinkFieldViewMeta": "alinea-LinkFieldView-meta",
|
|
140
|
-
"LinkFieldView-
|
|
141
|
-
"
|
|
128
|
+
"LinkFieldView-rowDropTarget": "alinea-LinkFieldView-rowDropTarget",
|
|
129
|
+
"LinkFieldViewRowDropTarget": "alinea-LinkFieldView-rowDropTarget",
|
|
130
|
+
"LinkFieldView-previewImagePlaceholder": "alinea-LinkFieldView-previewImagePlaceholder",
|
|
131
|
+
"LinkFieldViewPreviewImagePlaceholder": "alinea-LinkFieldView-previewImagePlaceholder",
|
|
132
|
+
"LinkFieldView-anchorOption": "alinea-LinkFieldView-anchorOption",
|
|
133
|
+
"LinkFieldViewAnchorOption": "alinea-LinkFieldView-anchorOption",
|
|
134
|
+
"LinkFieldView-dropIndicator": "alinea-LinkFieldView-dropIndicator",
|
|
135
|
+
"LinkFieldViewDropIndicator": "alinea-LinkFieldView-dropIndicator",
|
|
136
|
+
"LinkFieldView-rowAction": "alinea-LinkFieldView-rowAction",
|
|
137
|
+
"LinkFieldViewRowAction": "alinea-LinkFieldView-rowAction",
|
|
138
|
+
"LinkFieldView-skeleton": "alinea-LinkFieldView-skeleton",
|
|
139
|
+
"LinkFieldViewSkeleton": "alinea-LinkFieldView-skeleton",
|
|
140
|
+
"LinkFieldView-icon": "alinea-LinkFieldView-icon",
|
|
141
|
+
"LinkFieldViewIcon": "alinea-LinkFieldView-icon"
|
|
142
142
|
};
|
|
143
143
|
|
|
144
144
|
// src/field/link/LinkField.view.tsx
|
|
@@ -221,7 +221,9 @@ function EntryRow({
|
|
|
221
221
|
);
|
|
222
222
|
}
|
|
223
223
|
function useLinkEntryState(entryId, locale) {
|
|
224
|
-
|
|
224
|
+
const scope = useOptionalEntryAtoms();
|
|
225
|
+
const linkLocale = locale ?? scope?.localeData.requestedLocale ?? void 0;
|
|
226
|
+
return useAtomValueRaw(linkEntryAtoms(entryId, linkLocale));
|
|
225
227
|
}
|
|
226
228
|
function MissingEntryRow({
|
|
227
229
|
entryId,
|
|
@@ -407,7 +409,6 @@ function LinkPickerAction({
|
|
|
407
409
|
const location = childLocation ?? resolved.location ?? fallbackLocation;
|
|
408
410
|
const condition = resolved.condition;
|
|
409
411
|
const handlesMultiple = Boolean(onPickMany && picker.handlesMultiple);
|
|
410
|
-
const selectsMultiple = handlesMultiple && !allowDuplicates;
|
|
411
412
|
const pickerProps = {
|
|
412
413
|
condition,
|
|
413
414
|
enableNavigation: options.enableNavigation,
|
|
@@ -428,9 +429,9 @@ function LinkPickerAction({
|
|
|
428
429
|
limitLocations: options.limitLocations,
|
|
429
430
|
nestedNavigation: !pickingChildren,
|
|
430
431
|
pickChildren: pickingChildren,
|
|
431
|
-
preselect:
|
|
432
|
-
selectionMode:
|
|
433
|
-
selectionBehavior:
|
|
432
|
+
preselect: handlesMultiple && !allowDuplicates,
|
|
433
|
+
selectionMode: handlesMultiple ? "multiple" : "single",
|
|
434
|
+
selectionBehavior: handlesMultiple ? "toggle" : "replace",
|
|
434
435
|
initialSelection: initialSelection(value, selection),
|
|
435
436
|
onConfirm(entryIds, locale) {
|
|
436
437
|
const existing = allowDuplicates ? [] : selection;
|