@lupinum/ginko 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +161 -0
- package/README.md +2 -2
- package/dist/basics.d.mts +492 -0
- package/dist/basics.d.ts +492 -0
- package/dist/basics.mjs +416 -0
- package/dist/cli/index.mjs +59 -56
- package/dist/index.d.mts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.mjs +3 -3
- package/dist/internal/search.mjs +6 -3
- package/dist/internal.d.mts +387 -41
- package/dist/internal.d.ts +387 -41
- package/dist/internal.mjs +267 -101
- package/dist/nuxt/module.d.mts +2 -2
- package/dist/nuxt/module.d.ts +2 -2
- package/dist/nuxt/module.mjs +108 -15
- package/dist/nuxt/runtime/GinkoImage.d.mts +1 -1
- package/dist/nuxt/runtime/GinkoMarkdown.mjs +2 -2
- package/dist/nuxt/runtime/composables.d.mts +4 -3
- package/dist/nuxt/runtime/composables.mjs +19 -15
- package/dist/nuxt/runtime/fetch.d.mts +3 -1
- package/dist/nuxt/runtime/fetch.mjs +12 -6
- package/dist/nuxt/runtime/markdown.d.mts +3 -0
- package/dist/nuxt/runtime/markdown.mjs +15 -3
- package/dist/nuxt/runtime/plugin.mjs +6 -35
- package/dist/nuxt/runtime/preview-listener.d.mts +13 -0
- package/dist/nuxt/runtime/preview-listener.mjs +37 -0
- package/dist/nuxt/runtime/preview.vue +3 -1
- package/dist/nuxt/runtime/schema.d.ts +6 -0
- package/dist/nuxt/runtime/server/bundles.d.ts +4 -0
- package/dist/nuxt/runtime/server/files-md.d.ts +2 -0
- package/dist/nuxt/runtime/server/files.d.ts +2 -0
- package/dist/nuxt/runtime/server/headers.d.ts +2 -0
- package/dist/nuxt/runtime/server/items.d.mts +12 -0
- package/dist/nuxt/runtime/server/items.d.ts +12 -0
- package/dist/nuxt/runtime/server/items.mjs +17 -0
- package/dist/nuxt/runtime/server/llms-full.d.ts +2 -0
- package/dist/nuxt/runtime/server/llms.d.ts +2 -0
- package/dist/nuxt/runtime/server/markdown-trees.d.ts +2 -0
- package/dist/nuxt/runtime/server/markdown.d.ts +2 -0
- package/dist/nuxt/runtime/server/markdown.mjs +1 -1
- package/dist/nuxt/runtime/server/platform-md.d.mts +3 -0
- package/dist/nuxt/runtime/server/platform-md.d.ts +3 -0
- package/dist/nuxt/runtime/server/platform-md.mjs +71 -0
- package/dist/nuxt/runtime/server/redirects.d.ts +2 -0
- package/dist/nuxt/runtime/server/robots.d.ts +2 -0
- package/dist/nuxt/runtime/server/search.d.ts +2 -0
- package/dist/nuxt/runtime/server/site-config.d.ts +14 -0
- package/dist/nuxt/runtime/server/sitemap-source.d.ts +2 -0
- package/dist/nuxt/runtime/server/sitemap-xml.d.ts +24 -0
- package/dist/nuxt/runtime/server/sitemap.d.ts +2 -0
- package/dist/nuxt/runtime/shared.d.mts +10 -3
- package/dist/nuxt/runtime/shared.mjs +2 -2
- package/dist/shared/{ginko.BBkZW2nW.d.ts → ginko.6cI8KXZP.d.mts} +2 -2
- package/dist/shared/{ginko.CrNRBkS5.mjs → ginko.B1-DoOea.mjs} +253 -309
- package/dist/shared/ginko.BNVC-g9n.mjs +10389 -0
- package/dist/shared/{ginko.Bwan3BB-.d.mts → ginko.B_pACpVU.d.ts} +2 -2
- package/dist/shared/ginko.BaFweQcB.d.mts +91 -0
- package/dist/shared/ginko.BiDXgjLy.d.ts +91 -0
- package/dist/shared/ginko.C-oz8wwI.mjs +95 -0
- package/dist/shared/{ginko.BDF3bW0C.d.ts → ginko.CLzVaDi4.d.ts} +56 -5
- package/dist/shared/ginko.C_nq6vk7.d.mts +1622 -0
- package/dist/shared/ginko.CjWB8N7f.d.ts +128 -0
- package/dist/shared/ginko.D1PeQ3ds.mjs +36 -0
- package/dist/shared/ginko.D2oht0Kx.d.ts +1622 -0
- package/dist/shared/ginko.DCHGkQ7P.mjs +116 -0
- package/dist/shared/ginko.DIl7l-75.mjs +26 -0
- package/dist/shared/{ginko.akHewCGt.d.mts → ginko.DkIc0ZZk.d.mts} +56 -5
- package/dist/shared/{ginko.D-fNojn9.d.mts → ginko.DrkUeYFP.d.mts} +824 -10
- package/dist/shared/{ginko.D-fNojn9.d.ts → ginko.DrkUeYFP.d.ts} +824 -10
- package/dist/shared/ginko.WAfoMhv1.mjs +601 -0
- package/dist/shared/ginko.o1yIKlgj.d.mts +128 -0
- package/dist/shared/{ginko.Dht0xxE5.mjs → ginko.raCzOPYC.mjs} +1 -2
- package/dist/shared/{ginko.C90fPpMP.mjs → ginko.t-gbwzxh.mjs} +128 -101
- package/dist/shared/ginko.yKMIjJ68.mjs +84 -0
- package/dist/vue.d.mts +5 -4
- package/dist/vue.d.ts +5 -4
- package/dist/vue.mjs +1 -1
- package/i18n/ar.json +212 -0
- package/i18n/de.json +9 -1
- package/i18n/en.json +9 -1
- package/i18n/es.json +12 -4
- package/i18n/fr.json +212 -0
- package/i18n/it.json +212 -0
- package/package.json +7 -3
- package/dist/shared/ginko.BTUfZCfa.d.mts +0 -172
- package/dist/shared/ginko.C-QjDn3O.mjs +0 -4944
- package/dist/shared/ginko.CQvxhyez.mjs +0 -40
- package/dist/shared/ginko.Dc0oNcDv.d.ts +0 -172
- package/dist/shared/ginko.Mn30dmlm.mjs +0 -20
|
@@ -4,6 +4,7 @@ import { ComarkPlugin } from 'comark';
|
|
|
4
4
|
declare namespace issues {
|
|
5
5
|
let unknownBrick: string;
|
|
6
6
|
let markdown: string;
|
|
7
|
+
let markdownAt: string;
|
|
7
8
|
let notObject: string;
|
|
8
9
|
let unknownField: string;
|
|
9
10
|
let fieldMissing: string;
|
|
@@ -25,6 +26,8 @@ declare namespace issues {
|
|
|
25
26
|
let badTime: string;
|
|
26
27
|
let badDateRange: string;
|
|
27
28
|
let dateRangeOrder: string;
|
|
29
|
+
let timeOrder: string;
|
|
30
|
+
let notWeekStart: string;
|
|
28
31
|
let badChoice: string;
|
|
29
32
|
let badChoices: string;
|
|
30
33
|
let duplicateValues: string;
|
|
@@ -41,6 +44,9 @@ declare namespace issues {
|
|
|
41
44
|
let duplicateRowId: string;
|
|
42
45
|
let notImage: string;
|
|
43
46
|
let altMissing: string;
|
|
47
|
+
let fileRefMissing: string;
|
|
48
|
+
let fileRefPdf: string;
|
|
49
|
+
let markdownImageAltMissing: string;
|
|
44
50
|
let altTooLong: string;
|
|
45
51
|
let notFile: string;
|
|
46
52
|
}
|
|
@@ -61,6 +67,8 @@ declare namespace markdown_1 {
|
|
|
61
67
|
let unsafeLink: string;
|
|
62
68
|
let oneParagraph: string;
|
|
63
69
|
let tooComplex: string;
|
|
70
|
+
let componentNotClosed: string;
|
|
71
|
+
let bracketText: string;
|
|
64
72
|
}
|
|
65
73
|
|
|
66
74
|
declare namespace component {
|
|
@@ -248,6 +256,7 @@ declare const coreCatalogs: {
|
|
|
248
256
|
issues: {
|
|
249
257
|
unknownBrick: string;
|
|
250
258
|
markdown: string;
|
|
259
|
+
markdownAt: string;
|
|
251
260
|
notObject: string;
|
|
252
261
|
unknownField: string;
|
|
253
262
|
fieldMissing: string;
|
|
@@ -269,6 +278,8 @@ declare const coreCatalogs: {
|
|
|
269
278
|
badTime: string;
|
|
270
279
|
badDateRange: string;
|
|
271
280
|
dateRangeOrder: string;
|
|
281
|
+
timeOrder: string;
|
|
282
|
+
notWeekStart: string;
|
|
272
283
|
badChoice: string;
|
|
273
284
|
badChoices: string;
|
|
274
285
|
duplicateValues: string;
|
|
@@ -285,6 +296,9 @@ declare const coreCatalogs: {
|
|
|
285
296
|
duplicateRowId: string;
|
|
286
297
|
notImage: string;
|
|
287
298
|
altMissing: string;
|
|
299
|
+
fileRefMissing: string;
|
|
300
|
+
fileRefPdf: string;
|
|
301
|
+
markdownImageAltMissing: string;
|
|
288
302
|
altTooLong: string;
|
|
289
303
|
notFile: string;
|
|
290
304
|
};
|
|
@@ -305,6 +319,8 @@ declare const coreCatalogs: {
|
|
|
305
319
|
unsafeLink: string;
|
|
306
320
|
oneParagraph: string;
|
|
307
321
|
tooComplex: string;
|
|
322
|
+
componentNotClosed: string;
|
|
323
|
+
bracketText: string;
|
|
308
324
|
};
|
|
309
325
|
component: {
|
|
310
326
|
or: string;
|
|
@@ -452,6 +468,7 @@ declare const coreCatalogs: {
|
|
|
452
468
|
issues: {
|
|
453
469
|
unknownBrick: string;
|
|
454
470
|
markdown: string;
|
|
471
|
+
markdownAt: string;
|
|
455
472
|
notObject: string;
|
|
456
473
|
unknownField: string;
|
|
457
474
|
fieldMissing: string;
|
|
@@ -473,6 +490,8 @@ declare const coreCatalogs: {
|
|
|
473
490
|
badTime: string;
|
|
474
491
|
badDateRange: string;
|
|
475
492
|
dateRangeOrder: string;
|
|
493
|
+
timeOrder: string;
|
|
494
|
+
notWeekStart: string;
|
|
476
495
|
badChoice: string;
|
|
477
496
|
badChoices: string;
|
|
478
497
|
duplicateValues: string;
|
|
@@ -489,6 +508,9 @@ declare const coreCatalogs: {
|
|
|
489
508
|
duplicateRowId: string;
|
|
490
509
|
notImage: string;
|
|
491
510
|
altMissing: string;
|
|
511
|
+
fileRefMissing: string;
|
|
512
|
+
fileRefPdf: string;
|
|
513
|
+
markdownImageAltMissing: string;
|
|
492
514
|
altTooLong: string;
|
|
493
515
|
notFile: string;
|
|
494
516
|
};
|
|
@@ -509,6 +531,8 @@ declare const coreCatalogs: {
|
|
|
509
531
|
unsafeLink: string;
|
|
510
532
|
oneParagraph: string;
|
|
511
533
|
tooComplex: string;
|
|
534
|
+
componentNotClosed: string;
|
|
535
|
+
bracketText: string;
|
|
512
536
|
};
|
|
513
537
|
component: {
|
|
514
538
|
or: string;
|
|
@@ -656,6 +680,7 @@ declare const coreCatalogs: {
|
|
|
656
680
|
issues: {
|
|
657
681
|
unknownBrick: string;
|
|
658
682
|
markdown: string;
|
|
683
|
+
markdownAt: string;
|
|
659
684
|
notObject: string;
|
|
660
685
|
unknownField: string;
|
|
661
686
|
fieldMissing: string;
|
|
@@ -677,6 +702,8 @@ declare const coreCatalogs: {
|
|
|
677
702
|
badTime: string;
|
|
678
703
|
badDateRange: string;
|
|
679
704
|
dateRangeOrder: string;
|
|
705
|
+
timeOrder: string;
|
|
706
|
+
notWeekStart: string;
|
|
680
707
|
badChoice: string;
|
|
681
708
|
badChoices: string;
|
|
682
709
|
duplicateValues: string;
|
|
@@ -693,6 +720,9 @@ declare const coreCatalogs: {
|
|
|
693
720
|
duplicateRowId: string;
|
|
694
721
|
notImage: string;
|
|
695
722
|
altMissing: string;
|
|
723
|
+
fileRefMissing: string;
|
|
724
|
+
fileRefPdf: string;
|
|
725
|
+
markdownImageAltMissing: string;
|
|
696
726
|
altTooLong: string;
|
|
697
727
|
notFile: string;
|
|
698
728
|
};
|
|
@@ -713,6 +743,644 @@ declare const coreCatalogs: {
|
|
|
713
743
|
unsafeLink: string;
|
|
714
744
|
oneParagraph: string;
|
|
715
745
|
tooComplex: string;
|
|
746
|
+
componentNotClosed: string;
|
|
747
|
+
bracketText: string;
|
|
748
|
+
};
|
|
749
|
+
component: {
|
|
750
|
+
or: string;
|
|
751
|
+
and: string;
|
|
752
|
+
quoted: string;
|
|
753
|
+
unknown: string;
|
|
754
|
+
propUnknown: string;
|
|
755
|
+
propInvalid: string;
|
|
756
|
+
propMissing: string;
|
|
757
|
+
propEmpty: string;
|
|
758
|
+
blockInParagraph: string;
|
|
759
|
+
parentOnly: string;
|
|
760
|
+
slotUnknown: string;
|
|
761
|
+
noSlots: string;
|
|
762
|
+
childNotAllowed: string;
|
|
763
|
+
prop: {
|
|
764
|
+
notBoolean: string;
|
|
765
|
+
notNumber: string;
|
|
766
|
+
outOfRange: string;
|
|
767
|
+
badStep: string;
|
|
768
|
+
notText: string;
|
|
769
|
+
tooLong: string;
|
|
770
|
+
badChoice: string;
|
|
771
|
+
badChoices: string;
|
|
772
|
+
duplicateValues: string;
|
|
773
|
+
tooManyChosen: string;
|
|
774
|
+
badImage: string;
|
|
775
|
+
notId: string;
|
|
776
|
+
badType: string;
|
|
777
|
+
};
|
|
778
|
+
};
|
|
779
|
+
links: {
|
|
780
|
+
snippetMissing: string;
|
|
781
|
+
linkBroken: string;
|
|
782
|
+
linkRedirected: string;
|
|
783
|
+
pathUnknown: string;
|
|
784
|
+
anchorMissing: string;
|
|
785
|
+
externalBroken: string;
|
|
786
|
+
};
|
|
787
|
+
editor: {
|
|
788
|
+
component: {
|
|
789
|
+
unknown: string;
|
|
790
|
+
more: string;
|
|
791
|
+
};
|
|
792
|
+
prop: {
|
|
793
|
+
missing: string;
|
|
794
|
+
empty: string;
|
|
795
|
+
invalid: string;
|
|
796
|
+
};
|
|
797
|
+
problem: {
|
|
798
|
+
imageNoDescription: string;
|
|
799
|
+
};
|
|
800
|
+
source: {
|
|
801
|
+
unstable: string;
|
|
802
|
+
lossy: string;
|
|
803
|
+
failed: string;
|
|
804
|
+
};
|
|
805
|
+
};
|
|
806
|
+
diff: {
|
|
807
|
+
freshSetting: string;
|
|
808
|
+
freshLocales: string;
|
|
809
|
+
siteRenamed: string;
|
|
810
|
+
currencyChanged: string;
|
|
811
|
+
mainLocaleChanged: string;
|
|
812
|
+
localeRemoved: string;
|
|
813
|
+
localeOrder: string;
|
|
814
|
+
localeAdded: string;
|
|
815
|
+
timezoneChanged: string;
|
|
816
|
+
valueChanged: string;
|
|
817
|
+
pagesChanged: string;
|
|
818
|
+
agentsChanged: string;
|
|
819
|
+
tasksChanged: string;
|
|
820
|
+
retiredBack: string;
|
|
821
|
+
unretired: string;
|
|
822
|
+
retiredRuleChanged: string;
|
|
823
|
+
retiredNow: string;
|
|
824
|
+
migrationChanged: string;
|
|
825
|
+
migrationFillsExisting: string;
|
|
826
|
+
migrationAdded: string;
|
|
827
|
+
migrationDropped: string;
|
|
828
|
+
brickRemoved: string;
|
|
829
|
+
brickAdded: string;
|
|
830
|
+
singleWithoutDefault: string;
|
|
831
|
+
unknownChange: string;
|
|
832
|
+
kindChanged: string;
|
|
833
|
+
textChanged: string;
|
|
834
|
+
maxLowered: string;
|
|
835
|
+
maxRaised: string;
|
|
836
|
+
routeAdded: string;
|
|
837
|
+
routeAddedLocale: string;
|
|
838
|
+
routeChanged: string;
|
|
839
|
+
fieldRemoved: string;
|
|
840
|
+
fieldAdded: string;
|
|
841
|
+
fieldAddedDefault: string;
|
|
842
|
+
fieldAddedMigration: string;
|
|
843
|
+
requiredWithoutDefault: string;
|
|
844
|
+
typeChanged: string;
|
|
845
|
+
retiredFieldChanged: string;
|
|
846
|
+
madeRequired: string;
|
|
847
|
+
madeOptional: string;
|
|
848
|
+
translationChanged: string;
|
|
849
|
+
defaultChanged: string;
|
|
850
|
+
minRaised: string;
|
|
851
|
+
minLowered: string;
|
|
852
|
+
minOffGrid: string;
|
|
853
|
+
propChanged: string;
|
|
854
|
+
optionRemoved: string;
|
|
855
|
+
optionRenamed: string;
|
|
856
|
+
optionAdded: string;
|
|
857
|
+
uniqueChanged: string;
|
|
858
|
+
uniqueDropped: string;
|
|
859
|
+
fix: {
|
|
860
|
+
newField: string;
|
|
861
|
+
newFieldOnly: string;
|
|
862
|
+
newSite: string;
|
|
863
|
+
moneyFields: string;
|
|
864
|
+
planMigration: string;
|
|
865
|
+
keepLocale: string;
|
|
866
|
+
keepLocaleOrder: string;
|
|
867
|
+
keepTimezone: string;
|
|
868
|
+
keepRule: string;
|
|
869
|
+
newMigrationId: string;
|
|
870
|
+
fillNewFieldsOnly: string;
|
|
871
|
+
retireBrick: string;
|
|
872
|
+
defaultOrOptional: string;
|
|
873
|
+
keepProperty: string;
|
|
874
|
+
keepMax: string;
|
|
875
|
+
keepRoute: string;
|
|
876
|
+
defaultMigrationOrOptional: string;
|
|
877
|
+
keepDefinition: string;
|
|
878
|
+
keepDefault: string;
|
|
879
|
+
keepMin: string;
|
|
880
|
+
minOnGrid: string;
|
|
881
|
+
keepOption: string;
|
|
882
|
+
newList: string;
|
|
883
|
+
};
|
|
884
|
+
};
|
|
885
|
+
preview: {
|
|
886
|
+
notFound: string;
|
|
887
|
+
failed: string;
|
|
888
|
+
loading: string;
|
|
889
|
+
};
|
|
890
|
+
};
|
|
891
|
+
readonly fr: {
|
|
892
|
+
issues: {
|
|
893
|
+
unknownBrick: string;
|
|
894
|
+
markdown: string;
|
|
895
|
+
markdownAt: string;
|
|
896
|
+
notObject: string;
|
|
897
|
+
unknownField: string;
|
|
898
|
+
fieldMissing: string;
|
|
899
|
+
notLocalized: string;
|
|
900
|
+
unknownLocale: string;
|
|
901
|
+
fieldEmpty: string;
|
|
902
|
+
notText: string;
|
|
903
|
+
tooLong: string;
|
|
904
|
+
controlChars: string;
|
|
905
|
+
badFormat: string;
|
|
906
|
+
badSlug: string;
|
|
907
|
+
notNumber: string;
|
|
908
|
+
outOfRange: string;
|
|
909
|
+
badStep: string;
|
|
910
|
+
notMoney: string;
|
|
911
|
+
moneyOutOfRange: string;
|
|
912
|
+
notBoolean: string;
|
|
913
|
+
badDate: string;
|
|
914
|
+
badTime: string;
|
|
915
|
+
badDateRange: string;
|
|
916
|
+
dateRangeOrder: string;
|
|
917
|
+
timeOrder: string;
|
|
918
|
+
notWeekStart: string;
|
|
919
|
+
badChoice: string;
|
|
920
|
+
badChoices: string;
|
|
921
|
+
duplicateValues: string;
|
|
922
|
+
tooManyChosen: string;
|
|
923
|
+
notIdList: string;
|
|
924
|
+
notId: string;
|
|
925
|
+
duplicateEntries: string;
|
|
926
|
+
refGone: string;
|
|
927
|
+
notList: string;
|
|
928
|
+
tooManyRows: string;
|
|
929
|
+
tooFewRows: string;
|
|
930
|
+
duplicateRowValue: string;
|
|
931
|
+
badRowId: string;
|
|
932
|
+
duplicateRowId: string;
|
|
933
|
+
notImage: string;
|
|
934
|
+
altMissing: string;
|
|
935
|
+
fileRefMissing: string;
|
|
936
|
+
fileRefPdf: string;
|
|
937
|
+
markdownImageAltMissing: string;
|
|
938
|
+
altTooLong: string;
|
|
939
|
+
notFile: string;
|
|
940
|
+
};
|
|
941
|
+
file: {
|
|
942
|
+
typeNotAllowed: string;
|
|
943
|
+
tooBig: string;
|
|
944
|
+
};
|
|
945
|
+
markdown: {
|
|
946
|
+
profile: {
|
|
947
|
+
inline: string;
|
|
948
|
+
basic: string;
|
|
949
|
+
rich: string;
|
|
950
|
+
page: string;
|
|
951
|
+
};
|
|
952
|
+
tagBlocked: string;
|
|
953
|
+
tagNotInProfile: string;
|
|
954
|
+
propBlocked: string;
|
|
955
|
+
unsafeLink: string;
|
|
956
|
+
oneParagraph: string;
|
|
957
|
+
tooComplex: string;
|
|
958
|
+
componentNotClosed: string;
|
|
959
|
+
bracketText: string;
|
|
960
|
+
};
|
|
961
|
+
component: {
|
|
962
|
+
or: string;
|
|
963
|
+
and: string;
|
|
964
|
+
quoted: string;
|
|
965
|
+
unknown: string;
|
|
966
|
+
propUnknown: string;
|
|
967
|
+
propInvalid: string;
|
|
968
|
+
propMissing: string;
|
|
969
|
+
propEmpty: string;
|
|
970
|
+
blockInParagraph: string;
|
|
971
|
+
parentOnly: string;
|
|
972
|
+
slotUnknown: string;
|
|
973
|
+
noSlots: string;
|
|
974
|
+
childNotAllowed: string;
|
|
975
|
+
prop: {
|
|
976
|
+
notBoolean: string;
|
|
977
|
+
notNumber: string;
|
|
978
|
+
outOfRange: string;
|
|
979
|
+
badStep: string;
|
|
980
|
+
notText: string;
|
|
981
|
+
tooLong: string;
|
|
982
|
+
badChoice: string;
|
|
983
|
+
badChoices: string;
|
|
984
|
+
duplicateValues: string;
|
|
985
|
+
tooManyChosen: string;
|
|
986
|
+
badImage: string;
|
|
987
|
+
notId: string;
|
|
988
|
+
badType: string;
|
|
989
|
+
};
|
|
990
|
+
};
|
|
991
|
+
links: {
|
|
992
|
+
snippetMissing: string;
|
|
993
|
+
linkBroken: string;
|
|
994
|
+
linkRedirected: string;
|
|
995
|
+
pathUnknown: string;
|
|
996
|
+
anchorMissing: string;
|
|
997
|
+
externalBroken: string;
|
|
998
|
+
};
|
|
999
|
+
editor: {
|
|
1000
|
+
component: {
|
|
1001
|
+
unknown: string;
|
|
1002
|
+
more: string;
|
|
1003
|
+
};
|
|
1004
|
+
prop: {
|
|
1005
|
+
missing: string;
|
|
1006
|
+
empty: string;
|
|
1007
|
+
invalid: string;
|
|
1008
|
+
};
|
|
1009
|
+
problem: {
|
|
1010
|
+
imageNoDescription: string;
|
|
1011
|
+
};
|
|
1012
|
+
source: {
|
|
1013
|
+
unstable: string;
|
|
1014
|
+
lossy: string;
|
|
1015
|
+
failed: string;
|
|
1016
|
+
};
|
|
1017
|
+
};
|
|
1018
|
+
diff: {
|
|
1019
|
+
freshSetting: string;
|
|
1020
|
+
freshLocales: string;
|
|
1021
|
+
siteRenamed: string;
|
|
1022
|
+
currencyChanged: string;
|
|
1023
|
+
mainLocaleChanged: string;
|
|
1024
|
+
localeRemoved: string;
|
|
1025
|
+
localeOrder: string;
|
|
1026
|
+
localeAdded: string;
|
|
1027
|
+
timezoneChanged: string;
|
|
1028
|
+
valueChanged: string;
|
|
1029
|
+
pagesChanged: string;
|
|
1030
|
+
agentsChanged: string;
|
|
1031
|
+
tasksChanged: string;
|
|
1032
|
+
retiredBack: string;
|
|
1033
|
+
unretired: string;
|
|
1034
|
+
retiredRuleChanged: string;
|
|
1035
|
+
retiredNow: string;
|
|
1036
|
+
migrationChanged: string;
|
|
1037
|
+
migrationFillsExisting: string;
|
|
1038
|
+
migrationAdded: string;
|
|
1039
|
+
migrationDropped: string;
|
|
1040
|
+
brickRemoved: string;
|
|
1041
|
+
brickAdded: string;
|
|
1042
|
+
singleWithoutDefault: string;
|
|
1043
|
+
unknownChange: string;
|
|
1044
|
+
kindChanged: string;
|
|
1045
|
+
textChanged: string;
|
|
1046
|
+
maxLowered: string;
|
|
1047
|
+
maxRaised: string;
|
|
1048
|
+
routeAdded: string;
|
|
1049
|
+
routeAddedLocale: string;
|
|
1050
|
+
routeChanged: string;
|
|
1051
|
+
fieldRemoved: string;
|
|
1052
|
+
fieldAdded: string;
|
|
1053
|
+
fieldAddedDefault: string;
|
|
1054
|
+
fieldAddedMigration: string;
|
|
1055
|
+
requiredWithoutDefault: string;
|
|
1056
|
+
typeChanged: string;
|
|
1057
|
+
retiredFieldChanged: string;
|
|
1058
|
+
madeRequired: string;
|
|
1059
|
+
madeOptional: string;
|
|
1060
|
+
translationChanged: string;
|
|
1061
|
+
defaultChanged: string;
|
|
1062
|
+
minRaised: string;
|
|
1063
|
+
minLowered: string;
|
|
1064
|
+
minOffGrid: string;
|
|
1065
|
+
propChanged: string;
|
|
1066
|
+
optionRemoved: string;
|
|
1067
|
+
optionRenamed: string;
|
|
1068
|
+
optionAdded: string;
|
|
1069
|
+
uniqueChanged: string;
|
|
1070
|
+
uniqueDropped: string;
|
|
1071
|
+
fix: {
|
|
1072
|
+
newField: string;
|
|
1073
|
+
newFieldOnly: string;
|
|
1074
|
+
newSite: string;
|
|
1075
|
+
moneyFields: string;
|
|
1076
|
+
planMigration: string;
|
|
1077
|
+
keepLocale: string;
|
|
1078
|
+
keepLocaleOrder: string;
|
|
1079
|
+
keepTimezone: string;
|
|
1080
|
+
keepRule: string;
|
|
1081
|
+
newMigrationId: string;
|
|
1082
|
+
fillNewFieldsOnly: string;
|
|
1083
|
+
retireBrick: string;
|
|
1084
|
+
defaultOrOptional: string;
|
|
1085
|
+
keepProperty: string;
|
|
1086
|
+
keepMax: string;
|
|
1087
|
+
keepRoute: string;
|
|
1088
|
+
defaultMigrationOrOptional: string;
|
|
1089
|
+
keepDefinition: string;
|
|
1090
|
+
keepDefault: string;
|
|
1091
|
+
keepMin: string;
|
|
1092
|
+
minOnGrid: string;
|
|
1093
|
+
keepOption: string;
|
|
1094
|
+
newList: string;
|
|
1095
|
+
};
|
|
1096
|
+
};
|
|
1097
|
+
preview: {
|
|
1098
|
+
notFound: string;
|
|
1099
|
+
failed: string;
|
|
1100
|
+
loading: string;
|
|
1101
|
+
};
|
|
1102
|
+
};
|
|
1103
|
+
readonly it: {
|
|
1104
|
+
issues: {
|
|
1105
|
+
unknownBrick: string;
|
|
1106
|
+
markdown: string;
|
|
1107
|
+
markdownAt: string;
|
|
1108
|
+
notObject: string;
|
|
1109
|
+
unknownField: string;
|
|
1110
|
+
fieldMissing: string;
|
|
1111
|
+
notLocalized: string;
|
|
1112
|
+
unknownLocale: string;
|
|
1113
|
+
fieldEmpty: string;
|
|
1114
|
+
notText: string;
|
|
1115
|
+
tooLong: string;
|
|
1116
|
+
controlChars: string;
|
|
1117
|
+
badFormat: string;
|
|
1118
|
+
badSlug: string;
|
|
1119
|
+
notNumber: string;
|
|
1120
|
+
outOfRange: string;
|
|
1121
|
+
badStep: string;
|
|
1122
|
+
notMoney: string;
|
|
1123
|
+
moneyOutOfRange: string;
|
|
1124
|
+
notBoolean: string;
|
|
1125
|
+
badDate: string;
|
|
1126
|
+
badTime: string;
|
|
1127
|
+
badDateRange: string;
|
|
1128
|
+
dateRangeOrder: string;
|
|
1129
|
+
timeOrder: string;
|
|
1130
|
+
notWeekStart: string;
|
|
1131
|
+
badChoice: string;
|
|
1132
|
+
badChoices: string;
|
|
1133
|
+
duplicateValues: string;
|
|
1134
|
+
tooManyChosen: string;
|
|
1135
|
+
notIdList: string;
|
|
1136
|
+
notId: string;
|
|
1137
|
+
duplicateEntries: string;
|
|
1138
|
+
refGone: string;
|
|
1139
|
+
notList: string;
|
|
1140
|
+
tooManyRows: string;
|
|
1141
|
+
tooFewRows: string;
|
|
1142
|
+
duplicateRowValue: string;
|
|
1143
|
+
badRowId: string;
|
|
1144
|
+
duplicateRowId: string;
|
|
1145
|
+
notImage: string;
|
|
1146
|
+
altMissing: string;
|
|
1147
|
+
fileRefMissing: string;
|
|
1148
|
+
fileRefPdf: string;
|
|
1149
|
+
markdownImageAltMissing: string;
|
|
1150
|
+
altTooLong: string;
|
|
1151
|
+
notFile: string;
|
|
1152
|
+
};
|
|
1153
|
+
file: {
|
|
1154
|
+
typeNotAllowed: string;
|
|
1155
|
+
tooBig: string;
|
|
1156
|
+
};
|
|
1157
|
+
markdown: {
|
|
1158
|
+
profile: {
|
|
1159
|
+
inline: string;
|
|
1160
|
+
basic: string;
|
|
1161
|
+
rich: string;
|
|
1162
|
+
page: string;
|
|
1163
|
+
};
|
|
1164
|
+
tagBlocked: string;
|
|
1165
|
+
tagNotInProfile: string;
|
|
1166
|
+
propBlocked: string;
|
|
1167
|
+
unsafeLink: string;
|
|
1168
|
+
oneParagraph: string;
|
|
1169
|
+
tooComplex: string;
|
|
1170
|
+
componentNotClosed: string;
|
|
1171
|
+
bracketText: string;
|
|
1172
|
+
};
|
|
1173
|
+
component: {
|
|
1174
|
+
or: string;
|
|
1175
|
+
and: string;
|
|
1176
|
+
quoted: string;
|
|
1177
|
+
unknown: string;
|
|
1178
|
+
propUnknown: string;
|
|
1179
|
+
propInvalid: string;
|
|
1180
|
+
propMissing: string;
|
|
1181
|
+
propEmpty: string;
|
|
1182
|
+
blockInParagraph: string;
|
|
1183
|
+
parentOnly: string;
|
|
1184
|
+
slotUnknown: string;
|
|
1185
|
+
noSlots: string;
|
|
1186
|
+
childNotAllowed: string;
|
|
1187
|
+
prop: {
|
|
1188
|
+
notBoolean: string;
|
|
1189
|
+
notNumber: string;
|
|
1190
|
+
outOfRange: string;
|
|
1191
|
+
badStep: string;
|
|
1192
|
+
notText: string;
|
|
1193
|
+
tooLong: string;
|
|
1194
|
+
badChoice: string;
|
|
1195
|
+
badChoices: string;
|
|
1196
|
+
duplicateValues: string;
|
|
1197
|
+
tooManyChosen: string;
|
|
1198
|
+
badImage: string;
|
|
1199
|
+
notId: string;
|
|
1200
|
+
badType: string;
|
|
1201
|
+
};
|
|
1202
|
+
};
|
|
1203
|
+
links: {
|
|
1204
|
+
snippetMissing: string;
|
|
1205
|
+
linkBroken: string;
|
|
1206
|
+
linkRedirected: string;
|
|
1207
|
+
pathUnknown: string;
|
|
1208
|
+
anchorMissing: string;
|
|
1209
|
+
externalBroken: string;
|
|
1210
|
+
};
|
|
1211
|
+
editor: {
|
|
1212
|
+
component: {
|
|
1213
|
+
unknown: string;
|
|
1214
|
+
more: string;
|
|
1215
|
+
};
|
|
1216
|
+
prop: {
|
|
1217
|
+
missing: string;
|
|
1218
|
+
empty: string;
|
|
1219
|
+
invalid: string;
|
|
1220
|
+
};
|
|
1221
|
+
problem: {
|
|
1222
|
+
imageNoDescription: string;
|
|
1223
|
+
};
|
|
1224
|
+
source: {
|
|
1225
|
+
unstable: string;
|
|
1226
|
+
lossy: string;
|
|
1227
|
+
failed: string;
|
|
1228
|
+
};
|
|
1229
|
+
};
|
|
1230
|
+
diff: {
|
|
1231
|
+
freshSetting: string;
|
|
1232
|
+
freshLocales: string;
|
|
1233
|
+
siteRenamed: string;
|
|
1234
|
+
currencyChanged: string;
|
|
1235
|
+
mainLocaleChanged: string;
|
|
1236
|
+
localeRemoved: string;
|
|
1237
|
+
localeOrder: string;
|
|
1238
|
+
localeAdded: string;
|
|
1239
|
+
timezoneChanged: string;
|
|
1240
|
+
valueChanged: string;
|
|
1241
|
+
pagesChanged: string;
|
|
1242
|
+
agentsChanged: string;
|
|
1243
|
+
tasksChanged: string;
|
|
1244
|
+
retiredBack: string;
|
|
1245
|
+
unretired: string;
|
|
1246
|
+
retiredRuleChanged: string;
|
|
1247
|
+
retiredNow: string;
|
|
1248
|
+
migrationChanged: string;
|
|
1249
|
+
migrationFillsExisting: string;
|
|
1250
|
+
migrationAdded: string;
|
|
1251
|
+
migrationDropped: string;
|
|
1252
|
+
brickRemoved: string;
|
|
1253
|
+
brickAdded: string;
|
|
1254
|
+
singleWithoutDefault: string;
|
|
1255
|
+
unknownChange: string;
|
|
1256
|
+
kindChanged: string;
|
|
1257
|
+
textChanged: string;
|
|
1258
|
+
maxLowered: string;
|
|
1259
|
+
maxRaised: string;
|
|
1260
|
+
routeAdded: string;
|
|
1261
|
+
routeAddedLocale: string;
|
|
1262
|
+
routeChanged: string;
|
|
1263
|
+
fieldRemoved: string;
|
|
1264
|
+
fieldAdded: string;
|
|
1265
|
+
fieldAddedDefault: string;
|
|
1266
|
+
fieldAddedMigration: string;
|
|
1267
|
+
requiredWithoutDefault: string;
|
|
1268
|
+
typeChanged: string;
|
|
1269
|
+
retiredFieldChanged: string;
|
|
1270
|
+
madeRequired: string;
|
|
1271
|
+
madeOptional: string;
|
|
1272
|
+
translationChanged: string;
|
|
1273
|
+
defaultChanged: string;
|
|
1274
|
+
minRaised: string;
|
|
1275
|
+
minLowered: string;
|
|
1276
|
+
minOffGrid: string;
|
|
1277
|
+
propChanged: string;
|
|
1278
|
+
optionRemoved: string;
|
|
1279
|
+
optionRenamed: string;
|
|
1280
|
+
optionAdded: string;
|
|
1281
|
+
uniqueChanged: string;
|
|
1282
|
+
uniqueDropped: string;
|
|
1283
|
+
fix: {
|
|
1284
|
+
newField: string;
|
|
1285
|
+
newFieldOnly: string;
|
|
1286
|
+
newSite: string;
|
|
1287
|
+
moneyFields: string;
|
|
1288
|
+
planMigration: string;
|
|
1289
|
+
keepLocale: string;
|
|
1290
|
+
keepLocaleOrder: string;
|
|
1291
|
+
keepTimezone: string;
|
|
1292
|
+
keepRule: string;
|
|
1293
|
+
newMigrationId: string;
|
|
1294
|
+
fillNewFieldsOnly: string;
|
|
1295
|
+
retireBrick: string;
|
|
1296
|
+
defaultOrOptional: string;
|
|
1297
|
+
keepProperty: string;
|
|
1298
|
+
keepMax: string;
|
|
1299
|
+
keepRoute: string;
|
|
1300
|
+
defaultMigrationOrOptional: string;
|
|
1301
|
+
keepDefinition: string;
|
|
1302
|
+
keepDefault: string;
|
|
1303
|
+
keepMin: string;
|
|
1304
|
+
minOnGrid: string;
|
|
1305
|
+
keepOption: string;
|
|
1306
|
+
newList: string;
|
|
1307
|
+
};
|
|
1308
|
+
};
|
|
1309
|
+
preview: {
|
|
1310
|
+
notFound: string;
|
|
1311
|
+
failed: string;
|
|
1312
|
+
loading: string;
|
|
1313
|
+
};
|
|
1314
|
+
};
|
|
1315
|
+
readonly ar: {
|
|
1316
|
+
issues: {
|
|
1317
|
+
unknownBrick: string;
|
|
1318
|
+
markdown: string;
|
|
1319
|
+
markdownAt: string;
|
|
1320
|
+
notObject: string;
|
|
1321
|
+
unknownField: string;
|
|
1322
|
+
fieldMissing: string;
|
|
1323
|
+
notLocalized: string;
|
|
1324
|
+
unknownLocale: string;
|
|
1325
|
+
fieldEmpty: string;
|
|
1326
|
+
notText: string;
|
|
1327
|
+
tooLong: string;
|
|
1328
|
+
controlChars: string;
|
|
1329
|
+
badFormat: string;
|
|
1330
|
+
badSlug: string;
|
|
1331
|
+
notNumber: string;
|
|
1332
|
+
outOfRange: string;
|
|
1333
|
+
badStep: string;
|
|
1334
|
+
notMoney: string;
|
|
1335
|
+
moneyOutOfRange: string;
|
|
1336
|
+
notBoolean: string;
|
|
1337
|
+
badDate: string;
|
|
1338
|
+
badTime: string;
|
|
1339
|
+
badDateRange: string;
|
|
1340
|
+
dateRangeOrder: string;
|
|
1341
|
+
timeOrder: string;
|
|
1342
|
+
notWeekStart: string;
|
|
1343
|
+
badChoice: string;
|
|
1344
|
+
badChoices: string;
|
|
1345
|
+
duplicateValues: string;
|
|
1346
|
+
tooManyChosen: string;
|
|
1347
|
+
notIdList: string;
|
|
1348
|
+
notId: string;
|
|
1349
|
+
duplicateEntries: string;
|
|
1350
|
+
refGone: string;
|
|
1351
|
+
notList: string;
|
|
1352
|
+
tooManyRows: string;
|
|
1353
|
+
tooFewRows: string;
|
|
1354
|
+
duplicateRowValue: string;
|
|
1355
|
+
badRowId: string;
|
|
1356
|
+
duplicateRowId: string;
|
|
1357
|
+
notImage: string;
|
|
1358
|
+
altMissing: string;
|
|
1359
|
+
fileRefMissing: string;
|
|
1360
|
+
fileRefPdf: string;
|
|
1361
|
+
markdownImageAltMissing: string;
|
|
1362
|
+
altTooLong: string;
|
|
1363
|
+
notFile: string;
|
|
1364
|
+
};
|
|
1365
|
+
file: {
|
|
1366
|
+
typeNotAllowed: string;
|
|
1367
|
+
tooBig: string;
|
|
1368
|
+
};
|
|
1369
|
+
markdown: {
|
|
1370
|
+
profile: {
|
|
1371
|
+
inline: string;
|
|
1372
|
+
basic: string;
|
|
1373
|
+
rich: string;
|
|
1374
|
+
page: string;
|
|
1375
|
+
};
|
|
1376
|
+
tagBlocked: string;
|
|
1377
|
+
tagNotInProfile: string;
|
|
1378
|
+
propBlocked: string;
|
|
1379
|
+
unsafeLink: string;
|
|
1380
|
+
oneParagraph: string;
|
|
1381
|
+
tooComplex: string;
|
|
1382
|
+
componentNotClosed: string;
|
|
1383
|
+
bracketText: string;
|
|
716
1384
|
};
|
|
717
1385
|
component: {
|
|
718
1386
|
or: string;
|
|
@@ -863,12 +1531,15 @@ declare function coreMessage(locale: string | undefined, key: string, params?: M
|
|
|
863
1531
|
declare function msg(key: CoreKey, params?: Msg['params']): Described;
|
|
864
1532
|
|
|
865
1533
|
/**
|
|
866
|
-
* In page state the tree is replaced by `ref`, the site path that serves it, so a page's
|
|
867
|
-
* carries only the texts it shows (CONTENT.md, Phase 14).
|
|
1534
|
+
* In page state the tree is replaced by `ref`, the site path that serves it (withMarkdownRefs), so a page's
|
|
1535
|
+
* payload carries only the texts it shows (CONTENT.md, Phase 14). The toc comes with the loaded tree; page
|
|
1536
|
+
* state no longer carries it, `toc` stays optional here so the type does not change. `words` is the tree's word
|
|
1537
|
+
* count (`wordsOf`), so a list page can show a reading time without loading every text.
|
|
868
1538
|
*/
|
|
869
1539
|
type MarkdownValue = MarkdownTree | {
|
|
870
1540
|
ref: string;
|
|
871
1541
|
toc?: MarkdownToc;
|
|
1542
|
+
words?: number;
|
|
872
1543
|
};
|
|
873
1544
|
/**
|
|
874
1545
|
* The parsed tree: comark nodes (`[tag, props, ...children]` or a string). `summary` holds the nodes
|
|
@@ -902,6 +1573,12 @@ declare const MARKDOWN_PROFILES: readonly ["inline", "basic", "rich", "page"];
|
|
|
902
1573
|
type MarkdownProfile = (typeof MARKDOWN_PROFILES)[number];
|
|
903
1574
|
/** Attributes that hold an address; their value must pass `isSafeHref` (`srcset`: each address in it). */
|
|
904
1575
|
declare const URL_PROPS: ReadonlySet<string>;
|
|
1576
|
+
/** What `attributeProblem` reads of the component registry: the declared props and their types. A full `ComponentRegistry` fits. */
|
|
1577
|
+
type AttributeRegistry = Record<string, {
|
|
1578
|
+
props: Record<string, {
|
|
1579
|
+
type: string;
|
|
1580
|
+
}>;
|
|
1581
|
+
}>;
|
|
905
1582
|
declare const UNSAFE_LINK: string;
|
|
906
1583
|
/** A short description of what the profile allows, for agent tools and editor hints. */
|
|
907
1584
|
declare function describeProfile(profile: MarkdownProfile, locale?: string): string;
|
|
@@ -926,8 +1603,17 @@ interface ParsedMarkdown {
|
|
|
926
1603
|
/** What the profile does not allow, as sentences. Empty when the text is fine. */
|
|
927
1604
|
problems: string[];
|
|
928
1605
|
/** The same problems with catalog key and parameters (`coreMessage(locale, key, params)`), in the same order. */
|
|
929
|
-
problemMessages:
|
|
1606
|
+
problemMessages: MarkdownProblem[];
|
|
1607
|
+
/**
|
|
1608
|
+
* True when the text has parts the tree does not show: link reference definitions (`[g]: https://…`, resolved into
|
|
1609
|
+
* their links and images) and HTML comments (`<!-- … -->`). A text written from the tree would lose them.
|
|
1610
|
+
*/
|
|
1611
|
+
hidden?: true;
|
|
930
1612
|
}
|
|
1613
|
+
/** A problem of a text; `line` (1-based, in the parsed text, frontmatter included) when it belongs to one line. */
|
|
1614
|
+
type MarkdownProblem = Described & {
|
|
1615
|
+
line?: number;
|
|
1616
|
+
};
|
|
931
1617
|
/** Parses Markdown with comark, checks it against the profile, adds heading anchors and the toc (h2, h3). */
|
|
932
1618
|
declare function parseMarkdown(text: string, options?: ParseOptions): Promise<ParsedMarkdown>;
|
|
933
1619
|
/** One top-level block of a text: its text, and for an h2 or h3 also its level and anchor. Code blocks (`pre`) are not blocks. */
|
|
@@ -942,6 +1628,11 @@ interface TextBlock {
|
|
|
942
1628
|
declare function textBlocks(tree: MarkdownTree | readonly Json[]): TextBlock[];
|
|
943
1629
|
/** All text of a tree (or of a node list), for excerpts and search. Blocks are separated by a line break; code blocks are left out. */
|
|
944
1630
|
declare function plainText(tree: MarkdownTree | readonly Json[]): string;
|
|
1631
|
+
/**
|
|
1632
|
+
* The number of words of a text, e.g. for a reading time: of the tree's `plainText`, or the count a `{ ref }` carries
|
|
1633
|
+
* in page state. `undefined` for a ref without a count or no value.
|
|
1634
|
+
*/
|
|
1635
|
+
declare function wordsOf(value: MarkdownValue | null | undefined): number | undefined;
|
|
945
1636
|
|
|
946
1637
|
/**
|
|
947
1638
|
* Provide/inject key of the app-wide tag → component map that `<GinkoMarkdown>` merges under its `components`
|
|
@@ -966,7 +1657,11 @@ interface ComponentDef<P extends Fields = Fields> {
|
|
|
966
1657
|
children?: readonly string[];
|
|
967
1658
|
/** This component may only appear directly inside one of these. */
|
|
968
1659
|
parents?: readonly string[];
|
|
969
|
-
/**
|
|
1660
|
+
/**
|
|
1661
|
+
* Slash menu: `group` is the heading the entry is listed under, per language like `label`. `example` is the Markdown
|
|
1662
|
+
* the menu inserts; its sample text shows as a placeholder. Without one the menu inserts the bare tag with no text
|
|
1663
|
+
* line, so a component that takes text should have an example with one.
|
|
1664
|
+
*/
|
|
970
1665
|
editor?: {
|
|
971
1666
|
icon?: string;
|
|
972
1667
|
group?: Label;
|
|
@@ -1028,8 +1723,11 @@ type ValueOf<F extends Field> = F extends RefField ? (F['multiple'] extends true
|
|
|
1028
1723
|
from: string;
|
|
1029
1724
|
to: string;
|
|
1030
1725
|
} : F extends NumberField ? number : F extends BooleanField ? boolean : F extends TextField | LongTextField | SlugField | DateField | TimeField ? string : unknown;
|
|
1726
|
+
/** Optional fields, and fields with `showWhen`: those are required only while shown, so a value can be absent. */
|
|
1031
1727
|
type OptionalKeys<F extends Fields> = {
|
|
1032
|
-
[K in keyof F]: F[K]['optional'] extends true ? K :
|
|
1728
|
+
[K in keyof F]: F[K]['optional'] extends true ? K : F[K] extends {
|
|
1729
|
+
showWhen: object;
|
|
1730
|
+
} ? K : never;
|
|
1033
1731
|
}[keyof F];
|
|
1034
1732
|
type RetiredKeys<F extends Fields> = {
|
|
1035
1733
|
[K in keyof F]: F[K]['retired'] extends true ? K : never;
|
|
@@ -1225,6 +1923,11 @@ declare function isTranslatable(field: {
|
|
|
1225
1923
|
}): boolean;
|
|
1226
1924
|
/** The longest alt text, own or library. */
|
|
1227
1925
|
declare const ALT_MAX = 300;
|
|
1926
|
+
/**
|
|
1927
|
+
* What an image description must not hold: control characters (as text fields, `controlChars`) and bidi overrides,
|
|
1928
|
+
* which turn the words around when a screen reader reads them out.
|
|
1929
|
+
*/
|
|
1930
|
+
declare const ALT_INVISIBLE: RegExp;
|
|
1228
1931
|
/**
|
|
1229
1932
|
* The description an image use shows in one language: the field's own trimmed text when it has
|
|
1230
1933
|
* some, else the Files library text of that language, else ''. Validation, the missing-alt
|
|
@@ -1234,6 +1937,14 @@ declare function effectiveAlt(own: unknown, library: Record<string, string> | un
|
|
|
1234
1937
|
|
|
1235
1938
|
/** `YYYY-MM-DD` of `now` in `timeZone`. */
|
|
1236
1939
|
declare function todayIn(timeZone: string, now?: Date): string;
|
|
1940
|
+
/** How far `timeZone` is ahead of UTC at the instant `ms`, in ms (+1 h for Vienna in winter, +2 h in summer). */
|
|
1941
|
+
declare function zoneOffset(timeZone: string, ms: number): number;
|
|
1942
|
+
/**
|
|
1943
|
+
* A wall-clock time in `timeZone` as ISO 8601 with its offset: `2026-12-03` `19:30` in Europe/Vienna →
|
|
1944
|
+
* `2026-12-03T19:30:00+01:00` (`+02:00` in summer). In the hour a clock change skips or repeats, the offset is one of
|
|
1945
|
+
* the two (no event is planned for a time that does not exist).
|
|
1946
|
+
*/
|
|
1947
|
+
declare function zonedDateTime(date: string, time: string, timeZone: string): string;
|
|
1237
1948
|
declare function addDays(date: string, days: number): string;
|
|
1238
1949
|
/** First day of the week and weekend days, ISO numbering (1 = Monday, 7 = Sunday). */
|
|
1239
1950
|
interface WeekInfo {
|
|
@@ -1255,8 +1966,40 @@ declare function startOfWeek(date: string, week: WeekInfo): string;
|
|
|
1255
1966
|
* Monday-first with Sat+Sun off: Saturday and Sunday. Sunday-first with Sat+Sun off: only Saturday.
|
|
1256
1967
|
*/
|
|
1257
1968
|
declare function workWeekOf(date: string, week: WeekInfo): string;
|
|
1969
|
+
/**
|
|
1970
|
+
* The first day on which `weekStart` is the work week (`workWeekOf`): the day a week planned ahead starts to show.
|
|
1971
|
+
* Monday-first with Saturday and Sunday off: the Saturday before.
|
|
1972
|
+
*/
|
|
1973
|
+
declare function firstDayShown(weekStart: string, week: WeekInfo): string;
|
|
1258
1974
|
declare function resolveToken(token: string, timeZone: string, week: WeekInfo, now?: Date): string | undefined;
|
|
1259
1975
|
|
|
1976
|
+
/** One public holiday with its name for guests in German and English. */
|
|
1977
|
+
interface Holiday {
|
|
1978
|
+
date: string;
|
|
1979
|
+
de: string;
|
|
1980
|
+
en: string;
|
|
1981
|
+
}
|
|
1982
|
+
/** A site's own holidays: all holidays of `year`. */
|
|
1983
|
+
type HolidayCalendar = (year: number) => Holiday[];
|
|
1984
|
+
/** The built-in calendars. `DE` has the nationwide holidays only. */
|
|
1985
|
+
type HolidayCalendarName = 'AT' | 'DE' | 'SG' | 'none';
|
|
1986
|
+
/** The `calendar` option of a site: a built-in calendar or the site's own function. */
|
|
1987
|
+
type HolidaysOption = HolidayCalendarName | HolidayCalendar;
|
|
1988
|
+
/** `schema.holidays`: the resolved calendar; `custom` is a function in the site's code that only the site can run. */
|
|
1989
|
+
type StoredHolidays = HolidayCalendarName | 'custom';
|
|
1990
|
+
declare const CALENDAR_NAMES: readonly HolidayCalendarName[];
|
|
1991
|
+
declare const STORED_HOLIDAYS: readonly StoredHolidays[];
|
|
1992
|
+
/** The calendar a country has, or `undefined` when Ginko has none for it. */
|
|
1993
|
+
declare function calendarOfCountry(country: string): HolidayCalendarName | undefined;
|
|
1994
|
+
/**
|
|
1995
|
+
* The stored calendar of a site: an explicit `calendar` wins (a function is `custom`), else the calendar of `country`
|
|
1996
|
+
* (`none` for a country without one), else `undefined` (unset: each caller keeps its own default, Austria in the gastro preset).
|
|
1997
|
+
*/
|
|
1998
|
+
declare function holidaysOf(site: {
|
|
1999
|
+
country?: string;
|
|
2000
|
+
calendar?: HolidaysOption;
|
|
2001
|
+
}): StoredHolidays | undefined;
|
|
2002
|
+
|
|
1260
2003
|
/**
|
|
1261
2004
|
* A locale code: a canonical BCP-47 tag such as `de`, `es`, `pt-BR` or `zh-Hant`, the key of every translated
|
|
1262
2005
|
* value and the URL segment (not the `languages` tag used for `lang` and formats). Open; `isLocale` is the runtime check.
|
|
@@ -1341,6 +2084,8 @@ interface DateField extends FieldBase {
|
|
|
1341
2084
|
}
|
|
1342
2085
|
interface TimeField extends FieldBase {
|
|
1343
2086
|
type: 'time';
|
|
2087
|
+
/** Another time field of the brick that this one must be later than (an end after its start), checked when both are set. */
|
|
2088
|
+
after?: string;
|
|
1344
2089
|
}
|
|
1345
2090
|
interface DateRangeField extends FieldBase {
|
|
1346
2091
|
type: 'daterange';
|
|
@@ -1359,6 +2104,12 @@ interface ChoicesField<V extends string = string> extends FieldBase {
|
|
|
1359
2104
|
label: Label;
|
|
1360
2105
|
}[];
|
|
1361
2106
|
max?: number;
|
|
2107
|
+
/**
|
|
2108
|
+
* A text field next to this one (a field of the same brick, or a column of the same list row) that this choice answers
|
|
2109
|
+
* for, such as the dish of its allergens. When that text changes in the main language and this choice does not, the
|
|
2110
|
+
* Studio asks whether it is still right and Save waits for the answer.
|
|
2111
|
+
*/
|
|
2112
|
+
askAgainWhen?: string;
|
|
1362
2113
|
}
|
|
1363
2114
|
interface ListField<F extends Fields = Fields> extends FieldBase {
|
|
1364
2115
|
type: 'list';
|
|
@@ -1403,7 +2154,10 @@ declare const isPrefillToken: (value: unknown) => value is PrefillToken;
|
|
|
1403
2154
|
* A quick task of a brick. `needsApproval: true`: what staff does with this task goes live only after an owner or
|
|
1404
2155
|
* admin approves it (SPEC 17). `F` is the fields of the brick: in `single()` and `collection()` a task names only
|
|
1405
2156
|
* fields the brick has, and a prefill is written like that field's value (see `ValueInput`). The release check
|
|
1406
|
-
* reports a token on a field that is not a `date`.
|
|
2157
|
+
* reports a token on a field that is not a `date`. A `create` task may list `fields`: it then asks for and writes only
|
|
2158
|
+
* those (besides its prefill and the fields' defaults), like an `edit` task. Without `fields` it asks for every field
|
|
2159
|
+
* but the slug and the plan of a planned change. The release check wants every required field without a default
|
|
2160
|
+
* (and not a slug) in `fields` or in the prefill.
|
|
1407
2161
|
*/
|
|
1408
2162
|
type Task<F extends Fields = Fields> = {
|
|
1409
2163
|
id: string;
|
|
@@ -1417,6 +2171,7 @@ type Task<F extends Fields = Fields> = {
|
|
|
1417
2171
|
id: string;
|
|
1418
2172
|
label: Label;
|
|
1419
2173
|
kind: 'create';
|
|
2174
|
+
fields?: readonly (keyof F & string)[];
|
|
1420
2175
|
prefill?: Prefill<F>;
|
|
1421
2176
|
needsApproval?: boolean;
|
|
1422
2177
|
} | {
|
|
@@ -1445,6 +2200,35 @@ type Visibility<K extends string = string> = {
|
|
|
1445
2200
|
days?: number;
|
|
1446
2201
|
deleteExpired?: boolean;
|
|
1447
2202
|
};
|
|
2203
|
+
/**
|
|
2204
|
+
* The one-line status of a collection on the Studio's Today page, computed on the server from the live entries:
|
|
2205
|
+
* `next` the first entry whose date (a `date`, or a `daterange` that has not ended) is today or later; `count` how many
|
|
2206
|
+
* entries end within 7 days (needs `visible: { mode: 'until' }`); `missing` how many entries leave an optional field
|
|
2207
|
+
* without a default empty; `age` the newest entry by a date field and how long ago that is. A status also says when a
|
|
2208
|
+
* section is due: entries end within 7 days, entries miss the field, or the next entry is within 7 days and misses a
|
|
2209
|
+
* required text. Changing it changes no stored data.
|
|
2210
|
+
*/
|
|
2211
|
+
type CollectionStatus<D extends string = string, K extends string = string> = {
|
|
2212
|
+
next: D;
|
|
2213
|
+
} | {
|
|
2214
|
+
count: true;
|
|
2215
|
+
} | {
|
|
2216
|
+
missing: K;
|
|
2217
|
+
} | {
|
|
2218
|
+
age: D;
|
|
2219
|
+
};
|
|
2220
|
+
/**
|
|
2221
|
+
* The status of a single brick on the Studio's Today page: `hours` shows today's opening hours ("Open today
|
|
2222
|
+
* 11:30–14:30", "Closed today") from the brick's `week`, `exceptions`, `closedOn` and `holidays` fields.
|
|
2223
|
+
* `{ hours: { plans: 'hourPlans' } }` also reads the site's hour plans (a collection of `hourPlans()`, by its key): the
|
|
2224
|
+
* line follows the plan that applies today.
|
|
2225
|
+
*/
|
|
2226
|
+
type SingleStatus = {
|
|
2227
|
+
hours: true | {
|
|
2228
|
+
plans: string;
|
|
2229
|
+
};
|
|
2230
|
+
};
|
|
2231
|
+
type BrickStatus = CollectionStatus | SingleStatus;
|
|
1448
2232
|
/** Where a brick's content comes from: the platform (default) or Markdown files in the site's repo (CONTENT.md). */
|
|
1449
2233
|
type BrickSource = 'files';
|
|
1450
2234
|
interface SingleBrick<F extends Fields = Fields> {
|
|
@@ -1459,6 +2243,19 @@ interface SingleBrick<F extends Fields = Fields> {
|
|
|
1459
2243
|
/** How the Studio shows field groups: headings one below the other, or tabs on wide screens (phones always show headings). */
|
|
1460
2244
|
layout?: 'sections' | 'tabs';
|
|
1461
2245
|
tasks?: readonly Task[];
|
|
2246
|
+
/**
|
|
2247
|
+
* A planned change of one field: from the date in `from` on, the value in `next` replaces `field`, e.g. a price that
|
|
2248
|
+
* goes up on the 1st. `next` (the type of `field`) and `from` (a date) are optional fields that are set together, and
|
|
2249
|
+
* every edit task that changes `field` shows them too. The site applies the plan; the platform checks it and opens a
|
|
2250
|
+
* task on the value in effect.
|
|
2251
|
+
*/
|
|
2252
|
+
planned?: {
|
|
2253
|
+
field: string;
|
|
2254
|
+
next: string;
|
|
2255
|
+
from: string;
|
|
2256
|
+
};
|
|
2257
|
+
/** The status line on the Studio's Today page (see `SingleStatus`). */
|
|
2258
|
+
status?: SingleStatus;
|
|
1462
2259
|
/** @internal Platform-managed: set when the brick is listed in `retired`. Do not set it. */
|
|
1463
2260
|
retired?: true;
|
|
1464
2261
|
}
|
|
@@ -1475,6 +2272,17 @@ interface CollectionBrick<F extends Fields = Fields, R extends Partial<Record<Lo
|
|
|
1475
2272
|
/** How the Studio shows field groups: headings one below the other, or tabs on wide screens (phones always show headings). */
|
|
1476
2273
|
layout?: 'sections' | 'tabs';
|
|
1477
2274
|
tasks?: readonly Task[];
|
|
2275
|
+
/**
|
|
2276
|
+
* A planned change of one field: from the date in `from` on, the value in `next` replaces `field`, e.g. a price that
|
|
2277
|
+
* goes up on the 1st. `next` (the type of `field`) and `from` (a date) are optional fields that are set together, and
|
|
2278
|
+
* every edit task that changes `field` shows them too. The site applies the plan; the platform checks it and opens a
|
|
2279
|
+
* task on the value in effect.
|
|
2280
|
+
*/
|
|
2281
|
+
planned?: {
|
|
2282
|
+
field: string;
|
|
2283
|
+
next: string;
|
|
2284
|
+
from: string;
|
|
2285
|
+
};
|
|
1478
2286
|
max: number;
|
|
1479
2287
|
/** `manual`: the owner sorts the entries. Else by a field, ascending unless `dir: 'desc'`. */
|
|
1480
2288
|
order: 'manual' | {
|
|
@@ -1484,8 +2292,10 @@ interface CollectionBrick<F extends Fields = Fields, R extends Partial<Record<Lo
|
|
|
1484
2292
|
route?: R;
|
|
1485
2293
|
visible?: Visibility;
|
|
1486
2294
|
/**
|
|
1487
|
-
* What an entry does in a language where a translatable required field is missing
|
|
1488
|
-
*
|
|
2295
|
+
* What an entry does in a language where a translatable required field is missing (an outdated translation still
|
|
2296
|
+
* counts): `'hide'` leaves it out of that language (no page, not in lists, sitemap or hreflang); `'fallback'` shows
|
|
2297
|
+
* the main language there and, with a `route`, links to the main-language page. Default: `'hide'` with a `route`,
|
|
2298
|
+
* else `'fallback'` (`untranslatedMode`).
|
|
1489
2299
|
*/
|
|
1490
2300
|
untranslated?: 'fallback' | 'hide';
|
|
1491
2301
|
/** Entries of this collection plan weeks of the single brick `brick`; `field` (a date field here) holds the first day of the week (`week.firstDay`). A planned week counts as entered for the weekly upkeep rule. */
|
|
@@ -1495,6 +2305,8 @@ interface CollectionBrick<F extends Fields = Fields, R extends Partial<Record<Lo
|
|
|
1495
2305
|
};
|
|
1496
2306
|
/** Entries can be saved as drafts and are shown only once published. */
|
|
1497
2307
|
drafts?: boolean;
|
|
2308
|
+
/** The status line on the Studio's Today page (see `CollectionStatus`). Without one, a collection with drafts shows its drafts and scheduled entries. */
|
|
2309
|
+
status?: CollectionStatus;
|
|
1498
2310
|
/** @internal Platform-managed: set when the brick is listed in `retired`. Do not set it. */
|
|
1499
2311
|
retired?: true;
|
|
1500
2312
|
}
|
|
@@ -1527,6 +2339,8 @@ interface Schema {
|
|
|
1527
2339
|
currency: Currency;
|
|
1528
2340
|
/** First day of the week and weekend days of the site (computed once from the main language or `firstDayOfWeek`). */
|
|
1529
2341
|
week: WeekInfo;
|
|
2342
|
+
/** The public-holiday calendar of the site (`calendar`, else from `country`); absent when the config sets neither. */
|
|
2343
|
+
holidays?: StoredHolidays;
|
|
1530
2344
|
/** Static pages by key, each with its path per locale (the home page is the one whose main-locale path is `/`). */
|
|
1531
2345
|
pages: Record<string, Partial<Record<Locale, string>>>;
|
|
1532
2346
|
bricks: Record<string, Brick>;
|
|
@@ -1550,5 +2364,5 @@ interface Issue {
|
|
|
1550
2364
|
message: string;
|
|
1551
2365
|
}
|
|
1552
2366
|
|
|
1553
|
-
export { ALT_MAX as
|
|
1554
|
-
export type {
|
|
2367
|
+
export { ALT_INVISIBLE as K, ALT_MAX as O, CALENDAR_NAMES as X, DEFAULT_WEEK as a1, GINKO_COMPONENTS_KEY as a5, GINKO_TOC_KEY as a6, effectiveProfile as aA, f as aB, firstDayShown as aC, holidaysOf as aD, isPrefillToken as aE, isShown as aF, isTranslatable as aG, msg as aH, parseMarkdown as aI, plainText as aJ, profileCovers as aK, resolveToken as aL, startOfWeek as aM, textBlocks as aN, todayIn as aO, weekInfoOf as aP, wordsOf as aQ, workWeekOf as aR, zoneOffset as aS, zonedDateTime as aT, MARKDOWN_PROFILES as aa, PREFILL_TOKENS as ag, STORED_HOLIDAYS as aj, UNSAFE_LINK as am, URL_PROPS as an, addDays as aq, componentProblems as ar, componentPropMessage as as, componentPropProblem as at, coreCatalogs as au, coreMessage as av, defineComponents as aw, describeProfile as ax, effectiveAlt as ay, effectiveMax as az, calendarOfCountry as z };
|
|
2368
|
+
export type { ComponentSlot as $, AttributeRegistry as A, Brick as B, Currency as C, DateField as D, Issue as E, Fields as F, Described as G, HolidaysOption as H, ImageField as I, Json as J, Locale as L, MarkdownTree as M, NumberField as N, ParseOptions as P, BrickStatus as Q, RetiredRule as R, Schema as S, Task as T, BrickValue as U, Visibility as V, WeekInfo as W, ChoiceOption as Y, ChoicesField as Z, ComponentDef as _, Msg as a, CoreKey as a0, DataOf as a2, FieldType as a3, FileValue as a4, ImageValue as a7, ItemOf as a8, Localized as a9, MarkdownProfile as ab, MarkdownToc as ac, MarkdownValue as ad, MigrationDescriptor as ae, Money as af, ParsedMarkdown as ah, PrefillToken as ai, TextBlock as ak, TocLink as al, UnknownChoice as ao, ValueOf as ap, ComponentRegistry as b, Label as c, BrickSource as d, CollectionStatus as e, CollectionBrick as f, SingleStatus as g, SingleBrick as h, TextField as i, SlugField as j, DateRangeField as k, TimeField as l, MarkdownField as m, MoneyField as n, BooleanField as o, Field as p, RefField as q, ChoiceField as r, Holiday as s, HolidayCalendar as t, StoredHolidays as u, ListField as v, LongTextField as w, FileField as x, HolidayCalendarName as y };
|