alinea 2.0.0-preview.8 → 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 +136 -136
- package/dist/adapter/next/cms.js +24 -8
- package/dist/adapter/next/handler.js +63 -10
- package/dist/adapter/next/renderStats.d.ts +25 -4
- package/dist/adapter/next/renderStats.js +71 -3
- package/dist/adapter/next/syncCheck.js +2 -8
- package/dist/adapter/next/with-alinea.js +6 -2
- package/dist/backend/HandleAction.d.ts +1 -1
- package/dist/backend/HandleAction.js +1 -1
- package/dist/backend/Handler.js +12 -35
- package/dist/backend/api/CreateBackend.js +6 -6
- package/dist/backend/api/DatabaseApi.js +2 -2
- package/dist/backend/api/ProxyMedia.d.ts +2 -3
- package/dist/backend/api/ProxyMedia.js +7 -22
- package/dist/backend/api/database.js +6 -6
- package/dist/backend/store/GeneratedDatabase.d.ts +6 -3
- package/dist/backend/store/GeneratedDatabase.js +13 -11
- package/dist/backend/store/GeneratedDatabaseNode.d.ts +1 -1
- package/dist/backend/store/GeneratedDatabaseNode.js +1 -1
- package/dist/bundled.d.ts +280 -211
- package/dist/chunks/{node-sqlite-7CSGL27V.js → bun-sqlite-5SHXN3AT.js} +3 -3
- package/dist/chunks/{chunk-IL7FJQAY.js → chunk-66YZ47TY.js} +1 -1
- package/dist/chunks/{chunk-M7KDJEGH.js → chunk-AIU6CMVT.js} +1 -1
- package/dist/chunks/{chunk-K7LHQXI4.js → chunk-ASYKC6IE.js} +1 -1
- package/dist/chunks/{chunk-RWWYUNVX.js → chunk-DWR5A5KL.js} +6 -2
- package/dist/chunks/{chunk-NLZLRQ5U.js → chunk-ETWOY4AL.js} +1 -1
- package/dist/chunks/{chunk-TFMUSWGG.js → chunk-MOWR65LM.js} +72 -67
- package/dist/chunks/{chunk-2U43BB6P.js → chunk-QJGGYF6E.js} +5 -5
- package/dist/chunks/{chunk-A42DP5T7.js → chunk-QSN6RH6X.js} +1 -1
- package/dist/chunks/{bun-sqlite-ZZDB7YQQ.js → node-sqlite-XVNTNMCY.js} +3 -3
- package/dist/cli/Serve.js +1 -1
- package/dist/cli/bin.js +6 -2
- package/dist/cli/generate/DevDB.js +4 -2
- package/dist/cli/serve/DevServer.d.ts +2 -0
- package/dist/cli/serve/DevServer.js +7 -2
- package/dist/cloud/CloudRemote.js +1 -1
- package/dist/components/Breadcrumbs.js +2 -2
- package/dist/components/Calendar.js +7 -7
- package/dist/components/Checkbox.js +3 -3
- package/dist/components/ComboBox.js +12 -12
- package/dist/components/DatePicker.js +3 -3
- package/dist/components/DateRangePicker.js +5 -5
- package/dist/components/Disclosure.js +7 -7
- package/dist/components/Label.js +5 -5
- package/dist/components/List.js +37 -37
- package/dist/components/Menu.js +2 -2
- package/dist/components/Modal.js +3 -3
- package/dist/components/MultipleSelect.js +26 -26
- 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 +7 -7
- package/dist/components/Select.js +7 -7
- package/dist/components/Surface.js +2 -2
- package/dist/components/Switch.js +2 -2
- package/dist/components/Table.js +7 -7
- package/dist/components/Tabs.js +3 -3
- package/dist/components/TagGroup.js +2 -2
- package/dist/components/TextField.js +4 -4
- package/dist/components/TimeField.js +3 -3
- package/dist/components/Toggle.js +2 -2
- package/dist/components/Toolbar.js +3 -3
- package/dist/components/Tree.js +7 -7
- 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/db/LocalStore.d.ts +2 -0
- package/dist/core/source/GithubSource.js +39 -11
- package/dist/dashboard/App.js +2 -2
- package/dist/dashboard/app/AccessDenied.js +4 -4
- package/dist/dashboard/app/ActivityStatus.js +15 -15
- package/dist/dashboard/app/AuthView.js +13 -13
- package/dist/dashboard/app/Badge.js +2 -2
- package/dist/dashboard/app/CompactField.js +9 -9
- package/dist/dashboard/app/DashboardErrorBoundary.js +7 -7
- package/dist/dashboard/app/DashboardLayout.js +3 -3
- package/dist/dashboard/app/EntryFields.js +2 -2
- package/dist/dashboard/app/EntryHeader.js +10 -10
- package/dist/dashboard/app/EntryReferences.js +7 -7
- package/dist/dashboard/app/EntrySidebar.js +16 -16
- package/dist/dashboard/app/EntrySidebarPreview.js +10 -10
- package/dist/dashboard/app/EntryTranslationBanner.js +3 -3
- package/dist/dashboard/app/Explorer.js +44 -44
- package/dist/dashboard/app/ExplorerCards.js +34 -34
- package/dist/dashboard/app/ExplorerFileCard.js +21 -21
- package/dist/dashboard/app/ExplorerList.js +10 -10
- package/dist/dashboard/app/ExplorerModal.js +4 -4
- package/dist/dashboard/app/ExplorerTable.js +49 -49
- package/dist/dashboard/app/LinkPicker.js +4 -4
- package/dist/dashboard/app/LocaleMenu.js +3 -3
- package/dist/dashboard/app/SidebarTree.js +42 -42
- package/dist/dashboard/app/WorkspaceMenu.js +12 -12
- package/dist/dashboard/app/WorkspaceRoots.js +28 -28
- package/dist/dashboard/app/editor/FileEditor.js +27 -27
- package/dist/dashboard/app/editor/FilePreview.js +7 -7
- package/dist/dashboard/app/modals/CreateEntry.js +3 -3
- package/dist/dashboard/app/pages/EntryPage.js +19 -19
- package/dist/dashboard/app/pages/SplashPage.js +46 -46
- package/dist/dashboard/app/pages/UsersPage.js +36 -36
- package/dist/dashboard/app/ui/DashboardModal.js +19 -19
- package/dist/dashboard/app/ui/Rail.js +3 -3
- package/dist/dashboard/app/ui/Sidebar.js +2 -2
- package/dist/dashboard/boot/DashboardWorker.js +6 -2
- package/dist/dashboard/boot/WorkerDB.d.ts +2 -2
- package/dist/database/BrowserEntryStore.d.ts +18 -6
- package/dist/database/BrowserEntryStore.js +95 -81
- package/dist/database/DatabaseSource.d.ts +2 -2
- package/dist/database/DatabaseTables.js +2 -2
- package/dist/database/EntryDatabase.d.ts +83 -7
- package/dist/database/EntryDatabase.js +420 -30
- package/dist/database/EntryStore.d.ts +10 -12
- package/dist/database/EntryStore.js +27 -66
- package/dist/database/EntryTransaction.d.ts +3 -3
- package/dist/database/EntryTransaction.js +39 -21
- package/dist/database/Version.d.ts +2 -2
- package/dist/database/Version.js +1 -1
- 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 +11 -6
- package/dist/database/driver/RuntimeDatabase.js +66 -22
- package/dist/database/driver/WasmDatabase.d.ts +23 -2
- package/dist/database/driver/WasmDatabase.js +22 -9
- package/dist/database/entry/EntryTable.d.ts +21 -5
- package/dist/database/entry/EntryTable.js +59 -10
- package/dist/database/query/EntryQuery.d.ts +3 -2
- package/dist/database/query/EntryQuery.js +23 -25
- package/dist/database/query/EntryReferences.d.ts +2 -3
- package/dist/database/query/EntryReferences.js +43 -41
- package/dist/database/query/Relation.js +1 -1
- package/dist/database/query/ResolveQuery.d.ts +1 -4
- package/dist/database/query/ResolveQuery.js +54 -19
- package/dist/database/query/Search.d.ts +8 -17
- package/dist/database/query/Search.js +17 -37
- package/dist/database/sync/EntryParser.d.ts +5 -1
- package/dist/database/sync/EntryParser.js +4 -1
- package/dist/database/sync/EntrySyncer.d.ts +7 -19
- package/dist/database/sync/EntrySyncer.js +17 -45
- package/dist/database/sync/Ingest.js +40 -31
- package/dist/database/sync/SyncQueries.d.ts +5 -2
- package/dist/database/sync/SyncQueries.js +27 -3
- package/dist/field/check/CheckField.view.js +2 -2
- package/dist/field/code/CodeField.view.js +11 -11
- package/dist/field/link/LinkField.view.js +34 -34
- package/dist/field/list/ListField.view.js +17 -17
- package/dist/field/metadata/MetadataField.view.js +15 -15
- package/dist/field/richtext/RichTextBlock.js +2 -2
- package/dist/field/richtext/RichTextExtensions.js +23 -23
- package/dist/field/richtext/RichTextField.view.js +2 -2
- package/dist/field/richtext/RichTextInsertMenu.js +2 -2
- package/dist/next.cjs +6 -2
- package/dist/preview/widget.d.ts +29 -0
- package/dist/preview/widget.js +31 -5
- package/package.json +6 -2
- package/dist/adapter/next/DevRemote.d.ts +0 -3
- package/dist/adapter/next/DevRemote.js +0 -45
- package/dist/database/EntryLayer.d.ts +0 -93
- package/dist/database/EntryLayer.js +0 -459
- package/dist/database/entry/EntryView.d.ts +0 -22
- package/dist/database/entry/EntryView.js +0 -106
package/dist/LICENSES.md
CHANGED
|
@@ -2,7 +2,87 @@ This file contains the licenses of the bundled modules in this distribution.
|
|
|
2
2
|
|
|
3
3
|
===
|
|
4
4
|
|
|
5
|
-
# @
|
|
5
|
+
# rado@1.3.0-preview.11 (MIT)
|
|
6
|
+
|
|
7
|
+
MIT License
|
|
8
|
+
|
|
9
|
+
Copyright (c) 2024 Ben Merckx
|
|
10
|
+
|
|
11
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
12
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
13
|
+
in the Software without restriction, including without limitation the rights
|
|
14
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
15
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
16
|
+
furnished to do so, subject to the following conditions:
|
|
17
|
+
|
|
18
|
+
The above copyright notice and this permission notice shall be included in all
|
|
19
|
+
copies or substantial portions of the Software.
|
|
20
|
+
|
|
21
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
22
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
23
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
24
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
25
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
26
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
27
|
+
SOFTWARE.
|
|
28
|
+
|
|
29
|
+
===
|
|
30
|
+
|
|
31
|
+
# jotai@3.0.0 (MIT)
|
|
32
|
+
|
|
33
|
+
MIT License
|
|
34
|
+
|
|
35
|
+
Copyright (c) 2020 Poimandres
|
|
36
|
+
|
|
37
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
38
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
39
|
+
in the Software without restriction, including without limitation the rights
|
|
40
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
41
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
42
|
+
furnished to do so, subject to the following conditions:
|
|
43
|
+
|
|
44
|
+
The above copyright notice and this permission notice shall be included in all
|
|
45
|
+
copies or substantial portions of the Software.
|
|
46
|
+
|
|
47
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
48
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
49
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
50
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
51
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
52
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
53
|
+
SOFTWARE.
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
===
|
|
57
|
+
|
|
58
|
+
# @tiptap/core@3.30.5 (MIT)
|
|
59
|
+
|
|
60
|
+
MIT License
|
|
61
|
+
|
|
62
|
+
Copyright (c) 2025, Tiptap GmbH
|
|
63
|
+
|
|
64
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
65
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
66
|
+
in the Software without restriction, including without limitation the rights
|
|
67
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
68
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
69
|
+
furnished to do so, subject to the following conditions:
|
|
70
|
+
|
|
71
|
+
The above copyright notice and this permission notice shall be included in all
|
|
72
|
+
copies or substantial portions of the Software.
|
|
73
|
+
|
|
74
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
75
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
76
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
77
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
78
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
79
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
80
|
+
SOFTWARE.
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
===
|
|
84
|
+
|
|
85
|
+
# react-aria-components@1.17.0 (Apache-2.0)
|
|
6
86
|
|
|
7
87
|
Apache License
|
|
8
88
|
Version 2.0, January 2004
|
|
@@ -209,11 +289,11 @@ This file contains the licenses of the bundled modules in this distribution.
|
|
|
209
289
|
|
|
210
290
|
===
|
|
211
291
|
|
|
212
|
-
#
|
|
292
|
+
# microcbor@1.2.1 (MIT)
|
|
213
293
|
|
|
214
294
|
MIT License
|
|
215
295
|
|
|
216
|
-
Copyright (c)
|
|
296
|
+
Copyright (c) 2021 Joel Gustafson
|
|
217
297
|
|
|
218
298
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
219
299
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -236,7 +316,7 @@ SOFTWARE.
|
|
|
236
316
|
|
|
237
317
|
===
|
|
238
318
|
|
|
239
|
-
#
|
|
319
|
+
# @internationalized/date@3.12.1 (Apache-2.0)
|
|
240
320
|
|
|
241
321
|
Apache License
|
|
242
322
|
Version 2.0, January 2004
|
|
@@ -441,59 +521,6 @@ SOFTWARE.
|
|
|
441
521
|
limitations under the License.
|
|
442
522
|
|
|
443
523
|
|
|
444
|
-
===
|
|
445
|
-
|
|
446
|
-
# rado@1.3.0-preview.11 (MIT)
|
|
447
|
-
|
|
448
|
-
MIT License
|
|
449
|
-
|
|
450
|
-
Copyright (c) 2024 Ben Merckx
|
|
451
|
-
|
|
452
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
453
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
454
|
-
in the Software without restriction, including without limitation the rights
|
|
455
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
456
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
457
|
-
furnished to do so, subject to the following conditions:
|
|
458
|
-
|
|
459
|
-
The above copyright notice and this permission notice shall be included in all
|
|
460
|
-
copies or substantial portions of the Software.
|
|
461
|
-
|
|
462
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
463
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
464
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
465
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
466
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
467
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
468
|
-
SOFTWARE.
|
|
469
|
-
|
|
470
|
-
===
|
|
471
|
-
|
|
472
|
-
# microcbor@1.2.1 (MIT)
|
|
473
|
-
|
|
474
|
-
MIT License
|
|
475
|
-
|
|
476
|
-
Copyright (c) 2021 Joel Gustafson
|
|
477
|
-
|
|
478
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
479
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
480
|
-
in the Software without restriction, including without limitation the rights
|
|
481
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
482
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
483
|
-
furnished to do so, subject to the following conditions:
|
|
484
|
-
|
|
485
|
-
The above copyright notice and this permission notice shall be included in all
|
|
486
|
-
copies or substantial portions of the Software.
|
|
487
|
-
|
|
488
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
489
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
490
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
491
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
492
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
493
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
494
|
-
SOFTWARE.
|
|
495
|
-
|
|
496
|
-
|
|
497
524
|
===
|
|
498
525
|
|
|
499
526
|
# react-stately@3.46.0 (Apache-2.0)
|
|
@@ -703,11 +730,38 @@ SOFTWARE.
|
|
|
703
730
|
|
|
704
731
|
===
|
|
705
732
|
|
|
706
|
-
# @
|
|
733
|
+
# jotai-location@0.6.2 (MIT)
|
|
734
|
+
|
|
735
|
+
The MIT License (MIT)
|
|
736
|
+
|
|
737
|
+
Copyright (c) 2022 Daishi Kato
|
|
738
|
+
|
|
739
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
740
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
741
|
+
in the Software without restriction, including without limitation the rights
|
|
742
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
743
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
744
|
+
furnished to do so, subject to the following conditions:
|
|
745
|
+
|
|
746
|
+
The above copyright notice and this permission notice shall be included in
|
|
747
|
+
all copies or substantial portions of the Software.
|
|
748
|
+
|
|
749
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
750
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
751
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
752
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
753
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
754
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
755
|
+
THE SOFTWARE.
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
===
|
|
759
|
+
|
|
760
|
+
# jotai-family@1.1.0 (MIT)
|
|
707
761
|
|
|
708
762
|
MIT License
|
|
709
763
|
|
|
710
|
-
Copyright (c) 2025
|
|
764
|
+
Copyright (c) 2025 Poimandres
|
|
711
765
|
|
|
712
766
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
713
767
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -937,38 +991,11 @@ SOFTWARE.
|
|
|
937
991
|
|
|
938
992
|
===
|
|
939
993
|
|
|
940
|
-
#
|
|
941
|
-
|
|
942
|
-
The MIT License (MIT)
|
|
943
|
-
|
|
944
|
-
Copyright (c) 2022 Daishi Kato
|
|
945
|
-
|
|
946
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
947
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
948
|
-
in the Software without restriction, including without limitation the rights
|
|
949
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
950
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
951
|
-
furnished to do so, subject to the following conditions:
|
|
952
|
-
|
|
953
|
-
The above copyright notice and this permission notice shall be included in
|
|
954
|
-
all copies or substantial portions of the Software.
|
|
955
|
-
|
|
956
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
957
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
958
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
959
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
960
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
961
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
962
|
-
THE SOFTWARE.
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
===
|
|
966
|
-
|
|
967
|
-
# jotai-family@1.1.0 (MIT)
|
|
994
|
+
# @badgateway/oauth2-client@3.3.1 (MIT)
|
|
968
995
|
|
|
969
996
|
MIT License
|
|
970
997
|
|
|
971
|
-
Copyright (c) 2025
|
|
998
|
+
Copyright (c) 2019-2025 Evert Pot
|
|
972
999
|
|
|
973
1000
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
974
1001
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -991,11 +1018,11 @@ SOFTWARE.
|
|
|
991
1018
|
|
|
992
1019
|
===
|
|
993
1020
|
|
|
994
|
-
# @
|
|
1021
|
+
# @tiptap/extension-list@3.30.5 (MIT)
|
|
995
1022
|
|
|
996
1023
|
MIT License
|
|
997
1024
|
|
|
998
|
-
Copyright (c)
|
|
1025
|
+
Copyright (c) 2025, Tiptap GmbH
|
|
999
1026
|
|
|
1000
1027
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
1001
1028
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -1018,38 +1045,34 @@ SOFTWARE.
|
|
|
1018
1045
|
|
|
1019
1046
|
===
|
|
1020
1047
|
|
|
1021
|
-
# @
|
|
1022
|
-
|
|
1023
|
-
MIT License
|
|
1024
|
-
|
|
1025
|
-
Copyright (c) 2025, Tiptap GmbH
|
|
1048
|
+
# htmlparser2@9.1.0 (MIT)
|
|
1026
1049
|
|
|
1050
|
+
Copyright 2010, 2011, Chris Winberry <chris@winberry.net>. All rights reserved.
|
|
1027
1051
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
1028
|
-
of this software and associated documentation files (the "Software"), to
|
|
1029
|
-
in the Software without restriction, including without limitation the
|
|
1030
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
1031
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
1052
|
+
of this software and associated documentation files (the "Software"), to
|
|
1053
|
+
deal in the Software without restriction, including without limitation the
|
|
1054
|
+
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
1055
|
+
sell copies of the Software, and to permit persons to whom the Software is
|
|
1032
1056
|
furnished to do so, subject to the following conditions:
|
|
1033
|
-
|
|
1034
|
-
The above copyright notice and this permission notice shall be included in
|
|
1035
|
-
copies or substantial portions of the Software.
|
|
1036
|
-
|
|
1057
|
+
|
|
1058
|
+
The above copyright notice and this permission notice shall be included in
|
|
1059
|
+
all copies or substantial portions of the Software.
|
|
1060
|
+
|
|
1037
1061
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
1038
1062
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
1039
1063
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
1040
1064
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
1041
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
1042
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
1043
|
-
SOFTWARE.
|
|
1044
|
-
|
|
1065
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
1066
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
1067
|
+
IN THE SOFTWARE.
|
|
1045
1068
|
|
|
1046
1069
|
===
|
|
1047
1070
|
|
|
1048
|
-
#
|
|
1071
|
+
# fp16@1.0.0 (MIT)
|
|
1049
1072
|
|
|
1050
1073
|
MIT License
|
|
1051
1074
|
|
|
1052
|
-
Copyright (c)
|
|
1075
|
+
Copyright (c) 2021 Joel Gustafson
|
|
1053
1076
|
|
|
1054
1077
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
1055
1078
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -1072,11 +1095,11 @@ SOFTWARE.
|
|
|
1072
1095
|
|
|
1073
1096
|
===
|
|
1074
1097
|
|
|
1075
|
-
#
|
|
1098
|
+
# use-sync-external-store@1.6.0 (MIT)
|
|
1076
1099
|
|
|
1077
1100
|
MIT License
|
|
1078
1101
|
|
|
1079
|
-
Copyright (c)
|
|
1102
|
+
Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
1080
1103
|
|
|
1081
1104
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
1082
1105
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -1099,30 +1122,7 @@ SOFTWARE.
|
|
|
1099
1122
|
|
|
1100
1123
|
===
|
|
1101
1124
|
|
|
1102
|
-
#
|
|
1103
|
-
|
|
1104
|
-
Copyright 2010, 2011, Chris Winberry <chris@winberry.net>. All rights reserved.
|
|
1105
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
1106
|
-
of this software and associated documentation files (the "Software"), to
|
|
1107
|
-
deal in the Software without restriction, including without limitation the
|
|
1108
|
-
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
1109
|
-
sell copies of the Software, and to permit persons to whom the Software is
|
|
1110
|
-
furnished to do so, subject to the following conditions:
|
|
1111
|
-
|
|
1112
|
-
The above copyright notice and this permission notice shall be included in
|
|
1113
|
-
all copies or substantial portions of the Software.
|
|
1114
|
-
|
|
1115
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
1116
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
1117
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
1118
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
1119
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
1120
|
-
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
1121
|
-
IN THE SOFTWARE.
|
|
1122
|
-
|
|
1123
|
-
===
|
|
1124
|
-
|
|
1125
|
-
# domhandler@5.0.3 (BSD-2-Clause)
|
|
1125
|
+
# domutils@3.2.2 (BSD-2-Clause)
|
|
1126
1126
|
|
|
1127
1127
|
Copyright (c) Felix Böhm
|
|
1128
1128
|
All rights reserved.
|
|
@@ -1139,7 +1139,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
1139
1139
|
|
|
1140
1140
|
===
|
|
1141
1141
|
|
|
1142
|
-
#
|
|
1142
|
+
# domhandler@5.0.3 (BSD-2-Clause)
|
|
1143
1143
|
|
|
1144
1144
|
Copyright (c) Felix Böhm
|
|
1145
1145
|
All rights reserved.
|
package/dist/adapter/next/cms.js
CHANGED
|
@@ -13,7 +13,6 @@ import { Client } from "alinea/core/Client";
|
|
|
13
13
|
import { CMS } from "alinea/core/CMS";
|
|
14
14
|
import { Config } from "alinea/core/Config";
|
|
15
15
|
import { outcome } from "alinea/core/Outcome";
|
|
16
|
-
import { ReadonlyTree } from "alinea/core/source/Tree";
|
|
17
16
|
import { trace } from "alinea/core/Trace";
|
|
18
17
|
import { getPreviewPayloadFromCookies } from "alinea/preview/PreviewCookies";
|
|
19
18
|
import { Headers } from "@alinea/iso";
|
|
@@ -26,6 +25,8 @@ var preValidatedRemote = { validate: false };
|
|
|
26
25
|
var NextCMS = class extends CMS {
|
|
27
26
|
bundledDb;
|
|
28
27
|
#syncedAt;
|
|
28
|
+
/** How the bundled database opened, once it did. */
|
|
29
|
+
#opened;
|
|
29
30
|
constructor(config, openBundledDatabase) {
|
|
30
31
|
super(config);
|
|
31
32
|
this.bundledDb = PLazy.from(async () => {
|
|
@@ -38,13 +39,20 @@ var NextCMS = class extends CMS {
|
|
|
38
39
|
"A bundled database loader is required. Import createCMS from 'alinea/next'."
|
|
39
40
|
);
|
|
40
41
|
const span = trace(this.config, "alinea.next.cms.db");
|
|
41
|
-
|
|
42
|
+
const start = performance.now();
|
|
43
|
+
const db = await span(
|
|
42
44
|
() => openBundledDatabase(this.config, {
|
|
43
45
|
// Statements run in the async context of the query that caused
|
|
44
46
|
// them, which carries the React request of the render.
|
|
45
|
-
logQuery: (
|
|
47
|
+
logQuery: (query, durationMs) => this.#render().stats?.statement(durationMs, query.sql)
|
|
46
48
|
})
|
|
47
49
|
);
|
|
50
|
+
this.#opened = {
|
|
51
|
+
driver: db.driver,
|
|
52
|
+
openMs: performance.now() - start,
|
|
53
|
+
readyAt: Date.now()
|
|
54
|
+
};
|
|
55
|
+
return db;
|
|
48
56
|
});
|
|
49
57
|
}
|
|
50
58
|
throttle = createThrottledSync();
|
|
@@ -146,8 +154,8 @@ var NextCMS = class extends CMS {
|
|
|
146
154
|
};
|
|
147
155
|
}
|
|
148
156
|
const client = createClient(this.config, context);
|
|
149
|
-
const
|
|
150
|
-
return { source: "handler", sha
|
|
157
|
+
const sha = await client.getSha().catch(() => void 0);
|
|
158
|
+
return { source: "handler", sha, syncedAt: void 0 };
|
|
151
159
|
}
|
|
152
160
|
async resolve(query) {
|
|
153
161
|
const stats = await this.#renderStats();
|
|
@@ -169,10 +177,18 @@ var NextCMS = class extends CMS {
|
|
|
169
177
|
return timed(row, () => span(() => client.resolve(request)));
|
|
170
178
|
}
|
|
171
179
|
const db = await this.bundledDb;
|
|
180
|
+
const stats = this.#render().stats;
|
|
181
|
+
const opened = this.#opened;
|
|
182
|
+
if (stats && opened)
|
|
183
|
+
stats.database ??= {
|
|
184
|
+
driver: opened.driver,
|
|
185
|
+
openMs: opened.openMs,
|
|
186
|
+
cold: opened.readyAt >= stats.startedAt
|
|
187
|
+
};
|
|
188
|
+
const answer = () => stats && row ? stats.executed(row, () => db.resolve(request)) : db.resolve(request);
|
|
172
189
|
const syncInterval = request.disableSync ? Number.POSITIVE_INFINITY : request.syncInterval ?? this.config.syncInterval;
|
|
173
|
-
if (hasPreview) return
|
|
190
|
+
if (hasPreview) return answer();
|
|
174
191
|
if (!isBuild) {
|
|
175
|
-
const stats = this.#render().stats;
|
|
176
192
|
const tracked = {
|
|
177
193
|
sha: db.sha,
|
|
178
194
|
syncWith: () => this.#syncDb(db, client, stats)
|
|
@@ -181,7 +197,7 @@ var NextCMS = class extends CMS {
|
|
|
181
197
|
if (!settled)
|
|
182
198
|
await this.throttle(() => this.#syncDb(db, client, stats), syncInterval);
|
|
183
199
|
}
|
|
184
|
-
return
|
|
200
|
+
return answer();
|
|
185
201
|
}
|
|
186
202
|
async #authenticatedClient() {
|
|
187
203
|
const context = await requestContext(this.config);
|
|
@@ -10,19 +10,25 @@ import {
|
|
|
10
10
|
import {
|
|
11
11
|
createHandler as createCoreHandler
|
|
12
12
|
} from "alinea/backend/Handler";
|
|
13
|
+
import { HandleAction } from "alinea/backend/HandleAction";
|
|
13
14
|
import { JWTPreviews } from "alinea/backend/util/JWTPreviews";
|
|
14
15
|
import { CloudRemote } from "alinea/cloud/CloudRemote";
|
|
16
|
+
import { Client } from "alinea/core/Client";
|
|
15
17
|
import { Config } from "alinea/core/Config";
|
|
18
|
+
import {
|
|
19
|
+
developmentKeyHeader,
|
|
20
|
+
forwardedMutationHeader
|
|
21
|
+
} from "alinea/core/Connection";
|
|
22
|
+
import { HttpError } from "alinea/core/HttpError";
|
|
16
23
|
import { trace } from "alinea/core/Trace";
|
|
17
24
|
import { NextCMS } from "./cms.js";
|
|
18
25
|
import { requestContext } from "./context.js";
|
|
19
|
-
import { createDevRemote } from "./DevRemote.js";
|
|
20
26
|
import { revalidateContentSha } from "./syncCheck.js";
|
|
21
27
|
function createHandlerWithDatabase(input, openGeneratedDatabase) {
|
|
22
28
|
const options = input instanceof NextCMS ? { cms: input } : input;
|
|
23
29
|
const config = options.cms.config;
|
|
24
30
|
const backend = typeof options.backend === "function" ? options.backend : options.backend ? backendFromOptions(options.backend) : (context) => new CloudRemote(context, config);
|
|
25
|
-
const remote = (context) =>
|
|
31
|
+
const remote = (context) => backend(context, config);
|
|
26
32
|
const span = trace(config, "alinea.next.handler.db");
|
|
27
33
|
const db = PLazy.from(
|
|
28
34
|
() => span(async () => {
|
|
@@ -37,19 +43,57 @@ function createHandlerWithDatabase(input, openGeneratedDatabase) {
|
|
|
37
43
|
return openGeneratedDatabase(config);
|
|
38
44
|
})
|
|
39
45
|
);
|
|
46
|
+
const afterCommit = async (context) => {
|
|
47
|
+
await revalidateContentSha();
|
|
48
|
+
await options.afterCommit?.(context);
|
|
49
|
+
};
|
|
40
50
|
const handleBackend = createCoreHandler({
|
|
41
51
|
...options,
|
|
42
52
|
remote,
|
|
43
53
|
db,
|
|
44
|
-
|
|
45
|
-
// page revalidation triggered there already sees the fresh sha when
|
|
46
|
-
// RSC renders resolve. Invalidation never throws (failures are
|
|
47
|
-
// swallowed inside revalidateContentSha).
|
|
48
|
-
afterCommit: async (context) => {
|
|
49
|
-
await revalidateContentSha();
|
|
50
|
-
await options.afterCommit?.(context);
|
|
51
|
-
}
|
|
54
|
+
afterCommit
|
|
52
55
|
});
|
|
56
|
+
async function handleDevelopment(request, context) {
|
|
57
|
+
const action = new URL(request.url).searchParams.get("action");
|
|
58
|
+
if (action !== HandleAction.Mutate || request.method !== "POST")
|
|
59
|
+
return failure(404, "Answered by the Alinea dev server");
|
|
60
|
+
const developmentKey = request.headers.get(developmentKeyHeader);
|
|
61
|
+
if (!context.apiKey || developmentKey !== context.apiKey)
|
|
62
|
+
return failure(401, "Invalid development credentials");
|
|
63
|
+
let mutations;
|
|
64
|
+
try {
|
|
65
|
+
mutations = await request.json();
|
|
66
|
+
} catch {
|
|
67
|
+
return failure(400, "Expected JSON");
|
|
68
|
+
}
|
|
69
|
+
if (!Array.isArray(mutations)) return failure(400, "Expected mutations");
|
|
70
|
+
const adjusted = await options.beforeCommit?.({ mutations });
|
|
71
|
+
if (adjusted) mutations = [...adjusted];
|
|
72
|
+
const devServer = new Client({
|
|
73
|
+
config,
|
|
74
|
+
url: context.handlerUrl.href,
|
|
75
|
+
applyAuth(init) {
|
|
76
|
+
const authorized = context.applyAuth?.(init) ?? init ?? {};
|
|
77
|
+
const headers = new Headers(authorized.headers);
|
|
78
|
+
headers.set(forwardedMutationHeader, "true");
|
|
79
|
+
return { ...authorized, headers };
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
let sha;
|
|
83
|
+
try {
|
|
84
|
+
;
|
|
85
|
+
({ sha } = await devServer.mutate(mutations));
|
|
86
|
+
} catch (error) {
|
|
87
|
+
if (error instanceof HttpError) return failure(error.code, error.message);
|
|
88
|
+
throw error;
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
await afterCommit({ mutations, sha });
|
|
92
|
+
} catch (error) {
|
|
93
|
+
console.error("Alinea afterCommit hook failed", error);
|
|
94
|
+
}
|
|
95
|
+
return Response.json({ sha });
|
|
96
|
+
}
|
|
53
97
|
const handle = async (request) => {
|
|
54
98
|
const url = new URL(request.url);
|
|
55
99
|
const context = await requestContext(config, request);
|
|
@@ -61,6 +105,11 @@ function createHandlerWithDatabase(input, openGeneratedDatabase) {
|
|
|
61
105
|
backendUrl.pathname = handlerPath;
|
|
62
106
|
backendUrl.searchParams.set("file", rewrittenFile);
|
|
63
107
|
backendUrl.searchParams.set("delivery", "proxy");
|
|
108
|
+
if (context.isDev) {
|
|
109
|
+
const devUrl = new URL(context.handlerUrl);
|
|
110
|
+
devUrl.search = backendUrl.search;
|
|
111
|
+
return Response.redirect(devUrl, 307);
|
|
112
|
+
}
|
|
64
113
|
return await handleBackend(new Request(backendUrl, request), context);
|
|
65
114
|
}
|
|
66
115
|
if (url.pathname !== handlerPath)
|
|
@@ -88,6 +137,7 @@ function createHandlerWithDatabase(input, openGeneratedDatabase) {
|
|
|
88
137
|
headers: { location: String(location) }
|
|
89
138
|
});
|
|
90
139
|
}
|
|
140
|
+
if (context.isDev) return await handleDevelopment(request, context);
|
|
91
141
|
return await handleBackend(request, context);
|
|
92
142
|
} catch (error) {
|
|
93
143
|
console.error(error);
|
|
@@ -96,6 +146,9 @@ function createHandlerWithDatabase(input, openGeneratedDatabase) {
|
|
|
96
146
|
};
|
|
97
147
|
return handle;
|
|
98
148
|
}
|
|
149
|
+
function failure(status, error) {
|
|
150
|
+
return Response.json({ success: false, error }, { status });
|
|
151
|
+
}
|
|
99
152
|
function handlerPathname(config, requestUrl) {
|
|
100
153
|
return new URL(Config.handlerUrl(config), requestUrl).pathname;
|
|
101
154
|
}
|
|
@@ -1,14 +1,30 @@
|
|
|
1
1
|
import type { GraphQuery } from 'alinea/core/Graph';
|
|
2
|
-
import type { PreviewStat, PreviewStats } from 'alinea/preview/widget';
|
|
2
|
+
import type { PreviewDatabase, PreviewStat, PreviewStatement, PreviewStats } from 'alinea/preview/widget';
|
|
3
3
|
/** Collects the CMS queries and syncs of one draft render. */
|
|
4
4
|
export declare class RenderStats {
|
|
5
5
|
#private;
|
|
6
6
|
rows: Array<PreviewStat>;
|
|
7
7
|
statements: number;
|
|
8
8
|
sqlMs: number;
|
|
9
|
+
slowest: Array<PreviewStatement>;
|
|
10
|
+
/** The bundled database that answered, once a query reached it. */
|
|
11
|
+
database?: PreviewDatabase;
|
|
12
|
+
readonly startedAt: number;
|
|
9
13
|
/** Add a row and count it as pending until `run` settles; see `timed`. */
|
|
10
14
|
track<T>(stat: Omit<PreviewStat, 'durationMs'>, run: (row: PreviewStat) => Promise<T>): Promise<T>;
|
|
11
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Time a database query without the time it waited behind the others:
|
|
17
|
+
* queries of a render run one at a time in the order they were called, so
|
|
18
|
+
* one starts executing once the previous one finished, or when it was
|
|
19
|
+
* called if that is later.
|
|
20
|
+
*/
|
|
21
|
+
executed<T>(row: PreviewStat, run: () => Promise<T>): Promise<T>;
|
|
22
|
+
/**
|
|
23
|
+
* Count a statement towards the render, and towards the row that ran it:
|
|
24
|
+
* a sync in progress, or else the query executing, which is the earliest
|
|
25
|
+
* one called that has not finished (see `executed`).
|
|
26
|
+
*/
|
|
27
|
+
statement(durationMs: number, sql?: string): void;
|
|
12
28
|
/**
|
|
13
29
|
* Resolves once nothing ran for `quietMs`, so queries of server components
|
|
14
30
|
* that render after the caller are counted, or after `maxMs` regardless.
|
|
@@ -16,8 +32,13 @@ export declare class RenderStats {
|
|
|
16
32
|
settled(quietMs?: number, maxMs?: number): Promise<PreviewStats>;
|
|
17
33
|
}
|
|
18
34
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
35
|
+
* A statement short enough to read in a table, such as
|
|
36
|
+
* `select … from alinea_entry_index where (visible = ? and id in (?))`.
|
|
37
|
+
*/
|
|
38
|
+
export declare function summarizeSql(sql: string, maxLength?: number): string;
|
|
39
|
+
/**
|
|
40
|
+
* Time the work a row stands for from call to answer, such as a sync or a
|
|
41
|
+
* query the handler answers, without the sync it waited for.
|
|
21
42
|
*/
|
|
22
43
|
export declare function timed<T>(row: PreviewStat | undefined, run: () => Promise<T>): Promise<T>;
|
|
23
44
|
/** A short description such as `first(type, url=/about)`. */
|