mdorigin 0.1.7 → 0.2.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.
@@ -1,16 +1,5 @@
1
- export function getBuiltInThemeStyles(theme) {
2
- const themeStyles = (() => {
3
- switch (theme) {
4
- case 'atlas':
5
- return buildAtlasThemeStyles();
6
- case 'gazette':
7
- return buildGazetteThemeStyles();
8
- case 'paper':
9
- default:
10
- return buildPaperThemeStyles();
11
- }
12
- })();
13
- return `${themeStyles}\n${buildSharedSearchStyles()}`;
1
+ export function getDefaultThemeStyles() {
2
+ return `${buildAtlasThemeStyles()}\n${buildSharedSearchStyles()}`;
14
3
  }
15
4
  function buildSharedSearchStyles() {
16
5
  return `
@@ -129,310 +118,6 @@ function buildSharedSearchStyles() {
129
118
  width: min(100%, 34rem);
130
119
  }
131
120
  }
132
- `.trim();
133
- }
134
- function buildPaperThemeStyles() {
135
- return `
136
- :root {
137
- color-scheme: light;
138
- --bg: #f7f4ee;
139
- --surface: #fffdf9;
140
- --text: #1c1a17;
141
- --muted: #6d655c;
142
- --border: #ddd3c4;
143
- --link: #7a3d16;
144
- --link-hover: #57290f;
145
- --code-bg: #f1ece3;
146
- --quote: #8e7f6d;
147
- --max: 46rem;
148
- }
149
- * { box-sizing: border-box; }
150
- html { font-size: 18px; }
151
- body {
152
- margin: 0;
153
- background:
154
- radial-gradient(circle at top, rgba(255,255,255,0.95), transparent 40%),
155
- linear-gradient(180deg, #f3eee4 0%, var(--bg) 100%);
156
- color: var(--text);
157
- font-family: Charter, "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;
158
- line-height: 1.75;
159
- }
160
- a { color: var(--link); text-decoration-thickness: 0.08em; text-underline-offset: 0.14em; }
161
- a:hover { color: var(--link-hover); }
162
- .site-header {
163
- max-width: calc(var(--max) + 4rem);
164
- margin: 0 auto;
165
- padding: 1.25rem 2rem 0;
166
- }
167
- .site-header__inner {
168
- display: grid;
169
- grid-template-columns: minmax(0, 1fr) auto;
170
- gap: 0.75rem 1.75rem;
171
- align-items: end;
172
- }
173
- .site-header__brand { min-width: 0; }
174
- .site-header__title { margin: 0; }
175
- .site-header__brand span {
176
- display: block;
177
- margin-top: 0.3rem;
178
- color: var(--muted);
179
- font-size: 0.95rem;
180
- }
181
- .site-header__title a {
182
- display: inline-block;
183
- color: var(--muted);
184
- text-decoration: none;
185
- font-size: 0.92rem;
186
- letter-spacing: 0.06em;
187
- text-transform: uppercase;
188
- }
189
- .site-header__logo {
190
- display: inline-flex;
191
- align-items: center;
192
- margin-right: 0.55rem;
193
- vertical-align: middle;
194
- }
195
- .site-header__logo img {
196
- display: block;
197
- width: 1.4rem;
198
- height: 1.4rem;
199
- object-fit: contain;
200
- }
201
- .site-nav ul {
202
- list-style: none;
203
- display: flex;
204
- flex-wrap: wrap;
205
- gap: 0.9rem;
206
- margin: 0;
207
- padding: 0;
208
- align-items: center;
209
- justify-content: flex-end;
210
- }
211
- .site-nav {
212
- min-width: 0;
213
- }
214
- .site-nav li {
215
- display: flex;
216
- align-items: center;
217
- margin: 0;
218
- }
219
- .site-nav li + li {
220
- margin-top: 0;
221
- }
222
- .site-nav a {
223
- color: var(--text);
224
- text-decoration: none;
225
- font-size: 0.95rem;
226
- font-weight: 600;
227
- text-transform: none;
228
- letter-spacing: 0;
229
- display: inline-flex;
230
- align-items: center;
231
- min-height: 2rem;
232
- padding: 0 0.1rem;
233
- }
234
- .site-nav a:hover { text-decoration: underline; }
235
- main {
236
- max-width: calc(var(--max) + 4rem);
237
- margin: 0 auto;
238
- padding: 1.25rem 2rem 4rem;
239
- }
240
- .site-footer {
241
- max-width: calc(var(--max) + 4rem);
242
- margin: 0 auto;
243
- padding: 0 2rem 2.5rem;
244
- }
245
- .site-footer__inner {
246
- border-top: 1px solid var(--border);
247
- padding-top: 1rem;
248
- color: var(--muted);
249
- }
250
- .site-footer__meta {
251
- margin-top: 0.9rem;
252
- display: flex;
253
- align-items: center;
254
- justify-content: space-between;
255
- gap: 1rem;
256
- }
257
- .site-footer__nav ul,
258
- .site-footer__social {
259
- list-style: none;
260
- display: flex;
261
- flex-wrap: wrap;
262
- gap: 0.85rem;
263
- margin: 0;
264
- padding: 0;
265
- }
266
- .site-footer__nav li,
267
- .site-footer__social li {
268
- margin: 0;
269
- }
270
- .site-footer__social {
271
- margin-top: 0.9rem;
272
- }
273
- .site-footer__social a {
274
- display: inline-flex;
275
- align-items: center;
276
- justify-content: center;
277
- width: 2rem;
278
- height: 2rem;
279
- color: var(--muted);
280
- }
281
- .site-footer__social svg {
282
- width: 1rem;
283
- height: 1rem;
284
- fill: currentColor;
285
- }
286
- .site-footer__social-label {
287
- font-size: 0.82rem;
288
- font-weight: 700;
289
- }
290
- .site-footer__text,
291
- .site-footer__edit-link {
292
- display: block;
293
- margin-top: 0.9rem;
294
- }
295
- .site-footer__edit-link {
296
- display: inline-block;
297
- margin-top: 0;
298
- font-size: 0.78rem;
299
- color: var(--muted);
300
- opacity: 0.72;
301
- }
302
- @media (max-width: 720px) {
303
- .site-footer__meta {
304
- flex-direction: column;
305
- align-items: flex-start;
306
- }
307
- }
308
- article {
309
- background: color-mix(in srgb, var(--surface) 92%, white 8%);
310
- border: 1px solid var(--border);
311
- border-radius: 22px;
312
- padding: 2.5rem;
313
- box-shadow: 0 16px 40px rgba(52, 41, 29, 0.07);
314
- }
315
- article > p:first-child {
316
- margin-top: 0;
317
- color: var(--muted);
318
- font-size: 0.95rem;
319
- font-weight: 600;
320
- }
321
- h1, h2, h3, h4 { line-height: 1.15; letter-spacing: -0.02em; margin: 2rem 0 0.8rem; }
322
- h1 { font-size: clamp(2.1rem, 5vw, 3.2rem); margin-top: 0.2rem; }
323
- h2 { font-size: 1.45rem; }
324
- h3 { font-size: 1.15rem; }
325
- p, ul, ol, pre, table, blockquote { margin: 1rem 0; }
326
- ul, ol { padding-left: 1.3rem; }
327
- li + li { margin-top: 0.35rem; }
328
- img { max-width: 100%; height: auto; border-radius: 12px; }
329
- pre, code { font-family: "SFMono-Regular", "SF Mono", Consolas, "Liberation Mono", Menlo, monospace; }
330
- code {
331
- background: var(--code-bg);
332
- border-radius: 0.35rem;
333
- padding: 0.12rem 0.35rem;
334
- font-size: 0.9em;
335
- }
336
- pre {
337
- background: #201c17;
338
- color: #f8f3ea;
339
- padding: 1rem 1.15rem;
340
- border-radius: 14px;
341
- overflow-x: auto;
342
- }
343
- pre code { background: transparent; padding: 0; color: inherit; }
344
- blockquote {
345
- margin-left: 0;
346
- padding: 0.2rem 0 0.2rem 1rem;
347
- border-left: 3px solid var(--border);
348
- color: var(--quote);
349
- }
350
- table {
351
- width: 100%;
352
- border-collapse: collapse;
353
- font-size: 0.95rem;
354
- }
355
- th, td {
356
- text-align: left;
357
- border-bottom: 1px solid var(--border);
358
- padding: 0.6rem 0.4rem;
359
- }
360
- hr { border: none; border-top: 1px solid var(--border); margin: 2rem 0; }
361
- .catalog-page {
362
- margin-top: 2rem;
363
- }
364
- .catalog-page__body > :last-child {
365
- margin-bottom: 0;
366
- }
367
- .catalog-list {
368
- margin-top: 1rem;
369
- display: grid;
370
- gap: 0.9rem;
371
- }
372
- .catalog-item {
373
- display: block;
374
- text-decoration: none;
375
- }
376
- .catalog-item__title {
377
- display: block;
378
- color: var(--text);
379
- font-size: 1.05rem;
380
- }
381
- .catalog-item__detail {
382
- display: block;
383
- margin-top: 0.35rem;
384
- color: var(--muted);
385
- font-size: 0.92rem;
386
- }
387
- .catalog-item {
388
- padding: 0.95rem 0;
389
- border-top: 1px solid var(--border);
390
- }
391
- .catalog-list > .catalog-item:first-child {
392
- border-top: 0;
393
- padding-top: 0;
394
- }
395
- .catalog-item:hover {
396
- text-decoration: none;
397
- }
398
- .catalog-load-more {
399
- margin-top: 1.2rem;
400
- }
401
- .catalog-load-more__button {
402
- appearance: none;
403
- border: 1px solid var(--border);
404
- background: var(--surface);
405
- color: var(--text);
406
- border-radius: 999px;
407
- padding: 0.65rem 1rem;
408
- font: inherit;
409
- font-size: 0.95rem;
410
- cursor: pointer;
411
- }
412
- .catalog-load-more__button:hover {
413
- background: color-mix(in srgb, var(--surface) 86%, var(--code-bg) 14%);
414
- }
415
- .catalog-load-more__button:disabled {
416
- cursor: wait;
417
- opacity: 0.7;
418
- }
419
- @media (max-width: 720px) {
420
- html { font-size: 17px; }
421
- .site-header, main, .site-footer { padding-left: 1rem; padding-right: 1rem; }
422
- .site-header__inner {
423
- grid-template-columns: 1fr;
424
- align-items: start;
425
- }
426
- .site-nav {
427
- margin-top: 0.8rem;
428
- padding-top: 0.8rem;
429
- border-top: 1px solid var(--border);
430
- }
431
- .site-nav ul { margin-top: 0; }
432
- .site-nav ul { justify-content: flex-start; }
433
- article { padding: 1.3rem; border-radius: 16px; }
434
- }
435
-
436
121
  `.trim();
437
122
  }
438
123
  function buildAtlasThemeStyles() {
@@ -556,6 +241,12 @@ main {
556
241
  justify-content: space-between;
557
242
  gap: 1rem;
558
243
  }
244
+ .site-footer__actions {
245
+ display: inline-flex;
246
+ align-items: center;
247
+ gap: 0.95rem;
248
+ flex-wrap: wrap;
249
+ }
559
250
  .site-footer__nav ul,
560
251
  .site-footer__social {
561
252
  list-style: none;
@@ -590,11 +281,13 @@ main {
590
281
  font-weight: 700;
591
282
  }
592
283
  .site-footer__text,
593
- .site-footer__edit-link {
284
+ .site-footer__edit-link,
285
+ .site-footer__markdown-link {
594
286
  display: block;
595
287
  margin-top: 0.95rem;
596
288
  }
597
- .site-footer__edit-link {
289
+ .site-footer__edit-link,
290
+ .site-footer__markdown-link {
598
291
  display: inline-block;
599
292
  margin-top: 0;
600
293
  font-size: 0.78rem;
@@ -737,314 +430,5 @@ hr { border: none; border-top: 1px solid var(--border); margin: 2rem 0; }
737
430
  .site-nav ul { justify-content: flex-start; }
738
431
  article { padding: 1.3rem; border-radius: 18px; }
739
432
  }
740
-
741
- `.trim();
742
- }
743
- function buildGazetteThemeStyles() {
744
- return `
745
- :root {
746
- color-scheme: light;
747
- --bg: #f3eee6;
748
- --surface: #fffdf8;
749
- --surface-alt: #efe7db;
750
- --text: #1b1712;
751
- --muted: #736558;
752
- --border: #d8c9b7;
753
- --link: #8a2d12;
754
- --link-hover: #5f1d0c;
755
- --code-bg: #f0e3d0;
756
- --max: 54rem;
757
- }
758
- * { box-sizing: border-box; }
759
- html { font-size: 18px; }
760
- body {
761
- margin: 0;
762
- background:
763
- linear-gradient(180deg, rgba(255,255,255,0.72), transparent 20%),
764
- radial-gradient(circle at 100% 0, rgba(177, 109, 68, 0.08), transparent 35%),
765
- var(--bg);
766
- color: var(--text);
767
- font-family: "Avenir Next", "Segoe UI", Helvetica, Arial, sans-serif;
768
- line-height: 1.75;
769
- }
770
- a { color: var(--link); text-decoration-thickness: 0.08em; text-underline-offset: 0.14em; }
771
- a:hover { color: var(--link-hover); }
772
- .site-header {
773
- max-width: calc(var(--max) + 6rem);
774
- margin: 0 auto;
775
- padding: 1.25rem 2rem 0;
776
- }
777
- .site-header__inner {
778
- display: grid;
779
- grid-template-columns: minmax(0, 1fr) auto;
780
- gap: 0.75rem 2rem;
781
- align-items: end;
782
- }
783
- .site-header__brand { min-width: 0; }
784
- .site-header__title { margin: 0; }
785
- .site-header__brand span {
786
- display: block;
787
- margin-top: 0.3rem;
788
- color: var(--muted);
789
- font-size: 0.95rem;
790
- max-width: 34rem;
791
- }
792
- .site-header__title a {
793
- color: var(--text);
794
- text-decoration: none;
795
- font-weight: 800;
796
- letter-spacing: 0.12em;
797
- text-transform: uppercase;
798
- font-size: 0.82rem;
799
- }
800
- .site-header__logo {
801
- display: inline-flex;
802
- align-items: center;
803
- margin-right: 0.55rem;
804
- vertical-align: middle;
805
- }
806
- .site-header__logo img {
807
- display: block;
808
- width: 1.45rem;
809
- height: 1.45rem;
810
- object-fit: contain;
811
- }
812
- .site-nav ul {
813
- list-style: none;
814
- display: flex;
815
- align-items: center;
816
- flex-wrap: wrap;
817
- gap: 0.9rem;
818
- margin: 0;
819
- padding: 0;
820
- }
821
- .site-nav {
822
- min-width: 0;
823
- }
824
- .site-nav li {
825
- display: flex;
826
- align-items: center;
827
- margin: 0;
828
- }
829
- .site-nav li + li {
830
- margin-top: 0;
831
- }
832
- .site-nav a {
833
- display: inline-flex;
834
- align-items: center;
835
- min-height: 2rem;
836
- text-transform: none;
837
- letter-spacing: 0;
838
- font-size: 0.95rem;
839
- }
840
- main {
841
- max-width: calc(var(--max) + 6rem);
842
- margin: 0 auto;
843
- padding: 1.4rem 2rem 4rem;
844
- }
845
- .site-footer {
846
- max-width: calc(var(--max) + 6rem);
847
- margin: 0 auto;
848
- padding: 0 2rem 2.5rem;
849
- }
850
- .site-footer__inner {
851
- border-top: 1px solid var(--border);
852
- padding-top: 1rem;
853
- color: var(--muted);
854
- }
855
- .site-footer__meta {
856
- margin-top: 0.95rem;
857
- display: flex;
858
- align-items: center;
859
- justify-content: space-between;
860
- gap: 1rem;
861
- }
862
- .site-footer__nav ul,
863
- .site-footer__social {
864
- list-style: none;
865
- display: flex;
866
- flex-wrap: wrap;
867
- gap: 0.9rem;
868
- margin: 0;
869
- padding: 0;
870
- }
871
- .site-footer__nav li,
872
- .site-footer__social li {
873
- margin: 0;
874
- }
875
- .site-footer__social {
876
- margin-top: 0.95rem;
877
- }
878
- .site-footer__social a {
879
- display: inline-flex;
880
- align-items: center;
881
- justify-content: center;
882
- width: 2rem;
883
- height: 2rem;
884
- color: var(--muted);
885
- }
886
- .site-footer__social svg {
887
- width: 1rem;
888
- height: 1rem;
889
- fill: currentColor;
890
- }
891
- .site-footer__social-label {
892
- font-size: 0.82rem;
893
- font-weight: 700;
894
- }
895
- .site-footer__text,
896
- .site-footer__edit-link {
897
- display: block;
898
- margin-top: 0.9rem;
899
- }
900
- .site-footer__edit-link {
901
- display: inline-block;
902
- margin-top: 0;
903
- font-size: 0.78rem;
904
- color: var(--muted);
905
- opacity: 0.72;
906
- }
907
- @media (max-width: 720px) {
908
- .site-footer__meta {
909
- flex-direction: column;
910
- align-items: flex-start;
911
- }
912
- }
913
- article {
914
- background:
915
- linear-gradient(180deg, rgba(255,255,255,0.94), rgba(255,253,248,0.98)),
916
- var(--surface);
917
- border: 1px solid var(--border);
918
- border-radius: 10px;
919
- padding: 2.6rem 2.4rem 2.4rem;
920
- box-shadow: 0 18px 44px rgba(45, 29, 16, 0.08);
921
- position: relative;
922
- }
923
- article::before {
924
- content: "";
925
- position: absolute;
926
- inset: 0;
927
- border-top: 5px solid #b7673c;
928
- border-radius: 10px;
929
- pointer-events: none;
930
- }
931
- article > p:first-child {
932
- margin-top: 0;
933
- color: var(--muted);
934
- font-size: 0.88rem;
935
- font-weight: 600;
936
- }
937
- h1, h2, h3, h4 {
938
- font-family: "Iowan Old Style", Charter, Georgia, serif;
939
- line-height: 1.08;
940
- letter-spacing: -0.03em;
941
- margin: 2rem 0 0.8rem;
942
- }
943
- h1 { font-size: clamp(2.4rem, 5vw, 4.1rem); margin-top: 0.2rem; }
944
- h2 { font-size: 1.6rem; }
945
- h3 { font-size: 1.16rem; }
946
- p, ul, ol, pre, table, blockquote { margin: 1rem 0; }
947
- ul, ol { padding-left: 1.35rem; }
948
- li + li { margin-top: 0.35rem; }
949
- img { max-width: 100%; height: auto; border-radius: 6px; border: 1px solid var(--border); }
950
- pre, code { font-family: "SFMono-Regular", "SF Mono", Consolas, "Liberation Mono", Menlo, monospace; }
951
- code {
952
- background: var(--code-bg);
953
- border-radius: 0.3rem;
954
- padding: 0.12rem 0.35rem;
955
- font-size: 0.88em;
956
- }
957
- pre {
958
- background: #231a14;
959
- color: #fff6eb;
960
- padding: 1rem 1.1rem;
961
- border-radius: 10px;
962
- overflow-x: auto;
963
- }
964
- pre code { background: transparent; padding: 0; color: inherit; }
965
- blockquote {
966
- margin-left: 0;
967
- padding: 0.1rem 0 0.1rem 1rem;
968
- border-left: 3px solid #b7673c;
969
- color: var(--muted);
970
- font-style: italic;
971
- }
972
- table { width: 100%; border-collapse: collapse; font-size: 0.95rem; }
973
- th, td { text-align: left; border-bottom: 1px solid var(--border); padding: 0.7rem 0.45rem; }
974
- hr { border: none; border-top: 1px solid var(--border); margin: 2rem 0; }
975
- .catalog-page {
976
- margin-top: 2rem;
977
- }
978
- .catalog-page__body > :last-child {
979
- margin-bottom: 0;
980
- }
981
- .catalog-list {
982
- margin-top: 1rem;
983
- display: grid;
984
- gap: 0.9rem;
985
- }
986
- .catalog-item {
987
- display: block;
988
- text-decoration: none;
989
- }
990
- .catalog-item__title {
991
- display: block;
992
- color: var(--text);
993
- font-size: 1.08rem;
994
- }
995
- .catalog-item__detail {
996
- display: block;
997
- margin-top: 0.4rem;
998
- color: var(--muted);
999
- font-size: 0.93rem;
1000
- }
1001
- .catalog-item {
1002
- padding: 0.95rem 0 0.05rem;
1003
- border-top: 1px solid var(--border);
1004
- }
1005
- .catalog-list > .catalog-item:first-child {
1006
- border-top: 0;
1007
- padding-top: 0;
1008
- }
1009
- .catalog-item:hover {
1010
- text-decoration: none;
1011
- }
1012
- .catalog-load-more {
1013
- margin-top: 1.2rem;
1014
- }
1015
- .catalog-load-more__button {
1016
- appearance: none;
1017
- border: 1px solid var(--border);
1018
- background: var(--surface);
1019
- color: var(--text);
1020
- border-radius: 999px;
1021
- padding: 0.65rem 1rem;
1022
- font: inherit;
1023
- font-size: 0.95rem;
1024
- cursor: pointer;
1025
- }
1026
- .catalog-load-more__button:hover {
1027
- background: color-mix(in srgb, var(--surface) 84%, #fff 16%);
1028
- }
1029
- .catalog-load-more__button:disabled {
1030
- cursor: wait;
1031
- opacity: 0.7;
1032
- }
1033
- @media (max-width: 720px) {
1034
- html { font-size: 17px; }
1035
- .site-header, main, .site-footer { padding-left: 1rem; padding-right: 1rem; }
1036
- .site-header__inner {
1037
- grid-template-columns: 1fr;
1038
- align-items: start;
1039
- }
1040
- .site-nav {
1041
- margin-top: 0.8rem;
1042
- padding-top: 0.8rem;
1043
- border-top: 1px solid var(--border);
1044
- }
1045
- .site-nav ul { justify-content: flex-start; }
1046
- article { padding: 1.35rem 1.2rem 1.25rem; }
1047
- }
1048
-
1049
433
  `.trim();
1050
434
  }
@@ -1,6 +1,7 @@
1
1
  import { readdir, readFile, realpath, stat, writeFile } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { applyIndexTransforms } from './core/extensions.js';
4
+ import { isIgnoredContentName } from './core/content-store.js';
4
5
  import { inferDirectoryContentType } from './core/content-type.js';
5
6
  import { getDirectoryIndexCandidates } from './core/directory-index.js';
6
7
  import { getDocumentSummary, getDocumentTitle, parseMarkdownDocument, } from './core/markdown.js';
@@ -72,7 +73,7 @@ export async function buildManagedIndexBlock(directoryPath, plugins = []) {
72
73
  const directories = [];
73
74
  const articles = [];
74
75
  for (const entry of entries) {
75
- if (entry.name.startsWith('.')) {
76
+ if (isIgnoredContentName(entry.name)) {
76
77
  continue;
77
78
  }
78
79
  const fullPath = path.join(directoryPath, entry.name);
@@ -167,6 +168,7 @@ function renderManagedIndexBlock(entries) {
167
168
  if (entry.detail) {
168
169
  lines.push(` ${entry.detail}`);
169
170
  }
171
+ lines.push(` <!-- mdorigin:index kind=${entry.kind} -->`);
170
172
  lines.push('');
171
173
  }
172
174
  }
@@ -207,7 +209,7 @@ async function listDirectoriesRecursivelyInternal(rootDir, visitedRealDirectorie
207
209
  const entries = await readdir(rootDir, { withFileTypes: true });
208
210
  const rootShape = await inspectDirectoryShape(rootDir);
209
211
  for (const entry of entries) {
210
- if (entry.name.startsWith('.')) {
212
+ if (isIgnoredContentName(entry.name)) {
211
213
  continue;
212
214
  }
213
215
  if (rootShape.hasSkillIndex && isIgnoredSkillSupportDirectory(entry.name)) {
@@ -254,7 +256,7 @@ async function hasMeaningfulDirectoryContent(directoryPath, visitedRealDirectori
254
256
  }
255
257
  const entries = await readdir(directoryPath, { withFileTypes: true });
256
258
  for (const entry of entries) {
257
- if (entry.name.startsWith('.')) {
259
+ if (isIgnoredContentName(entry.name)) {
258
260
  continue;
259
261
  }
260
262
  if (shape.hasSkillIndex && isIgnoredSkillSupportDirectory(entry.name)) {
@@ -278,7 +280,7 @@ async function inspectDirectoryShape(directoryPath) {
278
280
  let hasExtraMarkdownFiles = false;
279
281
  let hasAssetFiles = false;
280
282
  for (const entry of entries) {
281
- if (entry.name.startsWith('.')) {
283
+ if (isIgnoredContentName(entry.name)) {
282
284
  continue;
283
285
  }
284
286
  const fullPath = path.join(directoryPath, entry.name);