hexo-theme-shokax 0.4.0-alpha.1 → 0.4.0-alpha.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. package/_config.yml +5 -4
  2. package/languages/README.md +22 -0
  3. package/languages/ar.yml +153 -0
  4. package/languages/de.yml +153 -0
  5. package/languages/es.yml +153 -0
  6. package/languages/fr.yml +153 -0
  7. package/languages/hi.yml +153 -0
  8. package/languages/id.yml +153 -0
  9. package/languages/it.yml +153 -0
  10. package/languages/ko.yml +153 -0
  11. package/languages/nl.yml +153 -0
  12. package/languages/pl.yml +153 -0
  13. package/languages/pt.yml +153 -0
  14. package/languages/ru.yml +153 -0
  15. package/languages/tr.yml +153 -0
  16. package/languages/vi.yml +153 -0
  17. package/layout/_mixin/comment.pug +2 -37
  18. package/layout/_partials/footer.pug +1 -1
  19. package/layout/_partials/head/head.pug +7 -3
  20. package/layout/_partials/header.pug +1 -1
  21. package/layout/_partials/layout.pug +1 -10
  22. package/layout/_partials/post/footer.pug +0 -9
  23. package/package.json +8 -2
  24. package/scripts/generaters/archive.js +1 -1
  25. package/scripts/generaters/script.js +63 -39
  26. package/scripts/helpers/asset.js +3 -72
  27. package/scripts/helpers/list_categories.js +0 -4
  28. package/scripts/plugin/lib/injects.js +1 -1
  29. package/source/js/_app/components/comments.ts +60 -0
  30. package/source/js/_app/components/sidebar.ts +7 -5
  31. package/source/js/_app/components/tcomments.ts +41 -0
  32. package/source/js/_app/globals/globalVars.ts +1 -0
  33. package/source/js/_app/globals/handles.ts +6 -5
  34. package/source/js/_app/globals/themeColor.ts +1 -1
  35. package/source/js/_app/globals/thirdparty.ts +1 -1
  36. package/source/js/_app/globals/tools.ts +3 -2
  37. package/source/js/_app/library/anime.ts +6 -5
  38. package/source/js/_app/library/declare.d.ts +25 -9
  39. package/source/js/_app/library/loadFile.ts +3 -1
  40. package/source/js/_app/library/proto.ts +75 -77
  41. package/source/js/_app/library/vue.ts +38 -48
  42. package/source/js/_app/page/fancybox.ts +2 -1
  43. package/source/js/_app/page/post.ts +4 -3
  44. package/source/js/_app/page/search.ts +17 -11
  45. package/source/js/_app/page/tab.ts +3 -2
  46. package/source/js/_app/pjax/domInit.ts +5 -4
  47. package/source/js/_app/pjax/refresh.ts +20 -2
  48. package/source/js/_app/pjax/siteInit.ts +12 -7
  49. package/source/js/_app/player.ts +16 -15
  50. package/scripts/filters/locals.d.ts +0 -1
  51. package/scripts/filters/locals.ts +0 -59
  52. package/scripts/filters/post.d.ts +0 -0
  53. package/scripts/filters/post.ts +0 -6
  54. package/scripts/generaters/archive.d.ts +0 -1
  55. package/scripts/generaters/archive.ts +0 -144
  56. package/scripts/generaters/config.d.ts +0 -1
  57. package/scripts/generaters/config.ts +0 -52
  58. package/scripts/generaters/images.d.ts +0 -1
  59. package/scripts/generaters/images.ts +0 -26
  60. package/scripts/generaters/index.d.ts +0 -1
  61. package/scripts/generaters/index.ts +0 -110
  62. package/scripts/generaters/pages.d.ts +0 -0
  63. package/scripts/generaters/pages.ts +0 -16
  64. package/scripts/generaters/script.d.ts +0 -1
  65. package/scripts/generaters/script.ts +0 -110
  66. package/scripts/helpers/asset.d.ts +0 -1
  67. package/scripts/helpers/asset.ts +0 -158
  68. package/scripts/helpers/engine.d.ts +0 -1
  69. package/scripts/helpers/engine.ts +0 -171
  70. package/scripts/helpers/list_categories.d.ts +0 -1
  71. package/scripts/helpers/list_categories.ts +0 -104
  72. package/scripts/helpers/summary_ai.d.ts +0 -1
  73. package/scripts/helpers/summary_ai.ts +0 -100
  74. package/scripts/helpers/symbols_count_time.d.ts +0 -1
  75. package/scripts/helpers/symbols_count_time.ts +0 -76
  76. package/scripts/plugin/check.d.ts +0 -1
  77. package/scripts/plugin/check.ts +0 -35
  78. package/scripts/plugin/index.d.ts +0 -6
  79. package/scripts/plugin/index.ts +0 -52
  80. package/scripts/plugin/lib/injects-point.d.ts +0 -5
  81. package/scripts/plugin/lib/injects-point.ts +0 -20
  82. package/scripts/plugin/lib/injects.d.ts +0 -2
  83. package/scripts/plugin/lib/injects.ts +0 -101
  84. package/scripts/tags/links.d.ts +0 -1
  85. package/scripts/tags/links.ts +0 -75
  86. package/scripts/tags/media.d.ts +0 -1
  87. package/scripts/tags/media.ts +0 -19
  88. package/source/assets/beian.webp +0 -0
  89. package/source/js/_app/library/libtype.d.ts +0 -4
@@ -0,0 +1,153 @@
1
+ ---
2
+ name: Türkçe
3
+ favicon:
4
+ show: (●´3`●) İşte yine başlıyoruz.
5
+ hide: (´Д`) Bu bir felaket!
6
+
7
+ title:
8
+ archive: Arşiv
9
+ category: Kategori
10
+ tag: Etiket
11
+ all: Hepsi
12
+ not_found: Σ( ° △ °|||)︴404! Hiçbir şey görünmüyor
13
+ category_in: "%s" kategorisindeki makaleler
14
+ tag_in: "%s" etiketiyle makaleler
15
+ archive_in: "%s" tarihinde yayınlanan makaleler
16
+
17
+ menu:
18
+ home: Ana Sayfa
19
+ posts: Gönderiler
20
+ archives: Arşivler
21
+ categories: Kategoriler
22
+ tags: Etiketler
23
+ about: Hakkında
24
+ search: Ara
25
+ census: Blog ziyaret istatistikleri
26
+ aboutsite: Bu site hakkında
27
+ updata: Güncelleme günlüğü
28
+ statistics: İstatistikler
29
+ admiration: Takdir
30
+ friends: Arkadaşlar
31
+ privacy: Gizlilik Politikası
32
+
33
+ sidebar:
34
+ overview: Genel Bakış
35
+ toc: İçindekiler
36
+ related: İlgili makaleler
37
+
38
+ index:
39
+ sticky: Sabitlenmiş gönderiler
40
+ category: Seçili kategoriler
41
+ posts: Gönderi listesi
42
+ random_posts: Rastgele gönderiler
43
+ recent_comments: Son yorumlar
44
+
45
+ post:
46
+ posted: Yayınlandı
47
+ edited: Düzenlendi
48
+ created: Oluşturuldu
49
+ modified: Değiştirildi
50
+ edit: Düzenle
51
+ in: içinde
52
+ read_more: Daha fazla oku
53
+ untitled: Başlıksız
54
+ sticky: Sabitlenmiş
55
+ views: Görüntülenme
56
+ related_posts: İlgili gönderiler
57
+ next: Sonraki gönderi
58
+ prev: Önceki gönderi
59
+ copyright:
60
+ author: Gönderinin yazarı
61
+ link: Gönderi bağlantısı
62
+ license_title: Telif hakkı bildirimi
63
+ license_content: "Bu blogdaki tüm gönderiler, aksi belirtilmedikçe %s altında lisanslanmıştır."
64
+ nocopy: "<span class=\"red\">Bu sayfanın yeniden basılması yasaktır.</span>"
65
+
66
+ footer:
67
+ powered: "%s tarafından desteklenmektedir"
68
+ total_views: Toplam görüntülenme
69
+ total_visitors: Toplam ziyaretçi
70
+
71
+ counter:
72
+ index:
73
+ post: "Toplam %d gönderi"
74
+ category: "Toplam %d alt kategori, "
75
+ tag_cloud:
76
+ zero: Etiket yok
77
+ one: Toplam 1 etiket
78
+ other: "Toplam %d etiket"
79
+ categories:
80
+ zero: Kategori yok
81
+ one: Toplam 1 kategori
82
+ other: "Toplam %d kategori"
83
+ archive_posts:
84
+ zero: Gönderi yok.
85
+ one: 1 gönderi.
86
+ other: "Toplam %d gönderi."
87
+
88
+ state:
89
+ posts: Gönderiler
90
+ tags: Etiketler
91
+ categories: Kategoriler
92
+
93
+ search:
94
+ placeholder: Gönderileri ara
95
+ empty: "\"${query}\" için arama sonucu bulunamadı"
96
+ stats: "${time} ms içinde ${hits} sonuç bulundu"
97
+
98
+ cheers:
99
+ um: Hmm..
100
+ ok: Tamam
101
+ nice: Güzel
102
+ good: İyi
103
+ great: Harika
104
+ excellent: Mükemmel
105
+
106
+ keep_on: Göndermeye devam edin.
107
+
108
+ symbol:
109
+ comma: ", "
110
+ period: ". "
111
+ colon: ": "
112
+ year: "Y"
113
+ month: "A"
114
+
115
+ reward:
116
+ donate: Bağış yap
117
+ text: Bana bir fincan [kahve] ısmarla~( ̄▽ ̄)~*
118
+ wechatpay: WeChat Pay
119
+ alipay: Alipay
120
+ paypal: PayPal
121
+ bitcoin: Bitcoin
122
+
123
+ follow_me:
124
+ welcome: Diğer yayın kanallarıma hoş geldiniz
125
+
126
+ accessibility:
127
+ nav_toggle: Gezinti çubuğunu aç/kapat
128
+ prev_page: Önceki sayfa
129
+ next_page: Sonraki sayfa
130
+
131
+ symbols_count_time:
132
+ count: Gönderideki sembol sayısı
133
+ count_total: Toplam sembol sayısı
134
+ time: Okuma süresi
135
+ time_total: Toplam okuma süresi
136
+ time_minutes: dk.
137
+ word: kelimeler
138
+ view: kez
139
+
140
+ tips:
141
+ copyright: "Başarıyla panoya kopyalandı! <br> Bu blogdaki tüm gönderiler, aksi belirtilmedikçe %s altında lisanslanmıştır."
142
+ nocopy: "Panoya kopyalama başarısız oldu! Bu sayfanın yeniden basılması yasaktır."
143
+
144
+ quiz:
145
+ choice: Çoktan seçmeli soru
146
+ multiple: Çoklu yanıt sorusu
147
+ true_false: Doğru/Yanlış sorusu
148
+ essay: Açık uçlu sorular
149
+ gap_fill: Boşluk doldurma sorusu
150
+ mistake: Yanlış yanıt notu
151
+
152
+ outime:
153
+ template: "<div class=\"note warning\"><p><span class=\"label warning\">Makale zaman uygunluğu uyarısı</span><br>Bu, {{publish}} gün önce yayınlanan ve son olarak {{updated}} gün önce güncellenen bir makaledir. Bazı bilgiler değişmiş olabilir, bu yüzden kontrol ederken dikkatli olun.</p></div>"
@@ -0,0 +1,153 @@
1
+ ---
2
+ name: Tiếng Việt
3
+ favicon:
4
+ show: (●´3`●) Hãy bắt đầu lại.
5
+ hide: (´Д`) Đây là một thảm họa!
6
+
7
+ title:
8
+ archive: Lưu trữ
9
+ category: Danh mục
10
+ tag: Thẻ
11
+ all: Tất cả
12
+ not_found: Σ( ° △ °|||)︴404! Không thấy gì cả
13
+ category_in: Bài viết trong danh mục "%s"
14
+ tag_in: Bài viết với thẻ "%s"
15
+ archive_in: Bài viết được đăng vào "%s"
16
+
17
+ menu:
18
+ home: Trang chủ
19
+ posts: Bài đăng
20
+ archives: Lưu trữ
21
+ categories: Danh mục
22
+ tags: Thẻ
23
+ about: Về chúng tôi
24
+ search: Tìm kiếm
25
+ census: Thống kê lượt truy cập blog
26
+ aboutsite: Về trang web này
27
+ updata: Nhật ký cập nhật
28
+ statistics: Thống kê
29
+ admiration: Ngưỡng mộ
30
+ friends: Bạn bè
31
+ privacy: Chính sách bảo mật
32
+
33
+ sidebar:
34
+ overview: Tổng quan
35
+ toc: Mục lục
36
+ related: Bài viết liên quan
37
+
38
+ index:
39
+ sticky: Bài đăng được ghim
40
+ category: Danh mục được chọn
41
+ posts: Danh sách bài đăng
42
+ random_posts: Bài đăng ngẫu nhiên
43
+ recent_comments: Bình luận gần đây
44
+
45
+ post:
46
+ posted: Được đăng
47
+ edited: Được chỉnh sửa
48
+ created: Được tạo
49
+ modified: Được sửa đổi
50
+ edit: Chỉnh sửa
51
+ in: Trong
52
+ read_more: Đọc thêm
53
+ untitled: Không tiêu đề
54
+ sticky: Được ghim
55
+ views: Lượt xem
56
+ related_posts: Bài đăng liên quan
57
+ next: Bài đăng tiếp theo
58
+ prev: Bài đăng trước
59
+ copyright:
60
+ author: Tác giả bài đăng
61
+ link: Liên kết bài đăng
62
+ license_title: Thông báo bản quyền
63
+ license_content: "Tất cả các bài đăng trên blog này được cấp phép theo %s, trừ khi có ghi chú khác."
64
+ nocopy: '<span class="red">Trang này bị cấm in lại.</span>'
65
+
66
+ footer:
67
+ powered: "Được hỗ trợ bởi %s"
68
+ total_views: Tổng số lượt xem
69
+ total_visitors: Tổng số khách truy cập
70
+
71
+ counter:
72
+ index:
73
+ post: "Tổng cộng %d bài đăng"
74
+ category: "Tổng cộng %d tiểu mục, "
75
+ tag_cloud:
76
+ zero: Không có thẻ
77
+ one: Tổng cộng 1 thẻ
78
+ other: "Tổng cộng %d thẻ"
79
+ categories:
80
+ zero: Không có danh mục
81
+ one: Tổng cộng 1 danh mục
82
+ other: "Tổng cộng %d danh mục"
83
+ archive_posts:
84
+ zero: Không có bài đăng.
85
+ one: 1 bài đăng.
86
+ other: "Tổng cộng %d bài đăng."
87
+
88
+ state:
89
+ posts: Bài đăng
90
+ tags: Thẻ
91
+ categories: Danh mục
92
+
93
+ search:
94
+ placeholder: Tìm kiếm bài đăng
95
+ empty: "Chúng tôi không tìm thấy kết quả nào cho tìm kiếm: ${query}"
96
+ stats: "Tìm thấy ${hits} kết quả trong ${time} ms"
97
+
98
+ cheers:
99
+ um: Ừm..
100
+ ok: Được
101
+ nice: Tốt
102
+ good: Tốt
103
+ great: Tuyệt vời
104
+ excellent: Xuất sắc
105
+
106
+ keep_on: Tiếp tục đăng.
107
+
108
+ symbol:
109
+ comma: ", "
110
+ period: ". "
111
+ colon: ": "
112
+ year: "N"
113
+ month: "T"
114
+
115
+ reward:
116
+ donate: Quyên góp
117
+ text: Mua cho tôi một cốc [cà phê]~( ̄▽ ̄)~*
118
+ wechatpay: WeChat Pay
119
+ alipay: Alipay
120
+ paypal: PayPal
121
+ bitcoin: Bitcoin
122
+
123
+ follow_me:
124
+ welcome: Chào mừng bạn đến với các kênh xuất bản khác của tôi
125
+
126
+ accessibility:
127
+ nav_toggle: Chuyển đổi thanh điều hướng
128
+ prev_page: Trang trước
129
+ next_page: Trang tiếp theo
130
+
131
+ symbols_count_time:
132
+ count: Số ký tự trong bài đăng
133
+ count_total: Tổng số ký tự
134
+ time: Thời gian đọc
135
+ time_total: Tổng thời gian đọc
136
+ time_minutes: phút.
137
+ word: từ
138
+ view: lần
139
+
140
+ tips:
141
+ copyright: "Đã sao chép thành công vào khay nhớ tạm! <br> Tất cả các bài đăng trên blog này được cấp phép theo %s."
142
+ nocopy: "Sao chép vào khay nhớ tạm không thành công! Trang này bị cấm in lại."
143
+
144
+ quiz:
145
+ choice: Câu hỏi lựa chọn
146
+ multiple: Câu hỏi trả lời nhiều
147
+ true_false: Câu hỏi đúng/sai
148
+ essay: Câu hỏi
149
+ gap_fill: Câu hỏi điền vào chỗ trống
150
+ mistake: Ghi chú về câu trả lời sai
151
+
152
+ outime:
153
+ template: '<div class="note warning"><p><span class="label warning">Cảnh báo về thời gian của bài viết</span><br>Đây là một bài viết được đăng {{publish}} ngày trước và lần cuối cùng được cập nhật {{updated}} ngày trước. Một số thông tin có thể đã thay đổi, vì vậy hãy cẩn thận khi kiểm tra.</p></div>'
@@ -1,41 +1,6 @@
1
1
  mixin CommentRender()
2
2
  != shokax_inject('comment')
3
- - var tk = theme?.twikoo?.enable,wl = theme?.waline?.enable
4
- if page.comment !== false && !theme.experiments.disableThemeComment
5
- if tk
6
- div(class="wrap" id="comments")
7
- script(type="text/javascript" data-pjax).
8
- setTimeout(function () {
9
- twikoo.init({
10
- envId: '#{ theme.twikoo.envId }',
11
- el: '#comments',
12
- region: '#{theme.twikoo.region}'
13
- })
14
- }, 1000)
15
- else if wl
16
- div(class="wrap" id="comments")
17
- - var locale = JSON.stringify(theme.waline.locale)
18
- - var emoji = JSON.stringify(theme.waline.emoji)
19
- - var meta = JSON.stringify(theme.waline.meta)
20
- - var requiredMeta = JSON.stringify(theme.waline.requiredMeta)
21
- script(type="module" data-pjax).
22
- import { init } from 'https://npm.webcache.cn/@waline/client@v2/dist/waline.mjs';
23
-
24
- setTimeout(function () {
25
- init({
26
- el: '#comments',
27
- serverURL: '#{theme.waline.serverURL.replace(/\/+$/, '')}',
28
- lang: '#{theme.waline.lang}',
29
- locale: !{locale},
30
- emoji: !{emoji},
31
- meta: !{meta},
32
- requiredMeta: !{requiredMeta},
33
- wordLimit: #{theme.waline.wordLimit},
34
- pageSize: #{theme.waline.pageSize},
35
- pageview: #{theme.waline.pageview},
36
- path: window.location.pathname,
37
- dark: 'html[data-theme="dark"]'
38
- });
39
- }, 1000)
3
+ if page.comment !== false
4
+ div(class="wrap" id="comments")
40
5
 
41
6
 
@@ -33,7 +33,7 @@ div(class="status")
33
33
  - var beianN = theme.footer.icp?.beian, RC=theme.footer.icp?.recordcode
34
34
  if beianN && RC
35
35
  br
36
- a(target="_blank" href=`https://www.beian.gov.cn/portal/registerSystemInfo?recordcode=${RC}`)
36
+ a(target="_blank" href=`https://beian.mps.gov.cn/#/query/webSearch?code=${RC}`)
37
37
  img(src=theme.statics + theme.assets + '/' + theme.footer.icp.icon style="max-width: 2em;display:inline;" width="20" height="20")
38
38
  != beianN
39
39
  != shokax_inject('status')
@@ -38,14 +38,18 @@ each prelink in prelinks
38
38
  each dnsLink in dnslinks
39
39
  link(rel="dns-prefetch" href=dnsLink)
40
40
 
41
- - var fontConfig = theme?.font?.loadFromGoogle
41
+ - var fontConfig = theme.font?.loadFromGoogle
42
42
  if fontConfig
43
43
  != _vendor_font()
44
44
  != _css('app.css')
45
45
 
46
+ if theme.polyfill.enable
47
+ script(src=`https://polyfill.io/v3/polyfill.min.js?features=${theme.polyfill.features}` defer)
48
+
49
+ != vendor_js()
50
+ != _js('siteInit.js')
51
+
46
52
  include pwa.pug
47
- if tk
48
- script(src=theme.twikoo.link )
49
53
  else if wl
50
54
  link(rel="stylesheet" href="https://npm.webcache.cn/@waline/client@v2/dist/waline.css" media="none" onload="this.media='all'")
51
55
 
@@ -11,7 +11,7 @@ nav(id="nav")
11
11
  != alternate || title
12
12
  ul(class="right" id="rightNav")
13
13
  li(class="item theme" @click="changeThemeByBtn")
14
- i(class="ic" :class="{'i-sun': !themeStatus,'i-moon': themeStatus}")
14
+ i(class="ic i-sun")
15
15
  li(class="item search")
16
16
  i(class="ic i-search")
17
17
  != shokax_inject('rightNav')
@@ -82,6 +82,7 @@ html(lang=page.language?page.language:config.language, style=theme.grayMode ? 'f
82
82
 
83
83
  script(data-config type="text/javascript").
84
84
  var LOCAL = {
85
+ ispost: !{is_post()},
85
86
  path: `#{_permapath(page.path)}`,
86
87
  favicon: {
87
88
  show: `#{__('favicon.show')}`,
@@ -115,16 +116,6 @@ html(lang=page.language?page.language:config.language, style=theme.grayMode ? 'f
115
116
  ]
116
117
  };
117
118
 
118
- if theme.polyfill.enable
119
- script(src=`https://polyfill.io/v3/polyfill.min.js?features=${theme.polyfill.features}`)
120
-
121
- - debugVue = theme?.experiments?.debug
122
- if debugVue
123
- script(src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.4/vue.global.min.js")
124
- else
125
- script(src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.4/vue.global.prod.min.js")
126
- != vendor_js()
127
- != _js('app.js')
128
119
  != partial('_partials/third-party/baidu-analytics.pug', {}, {cache: true})
129
120
  != partial('_partials/third-party/clarity.pug', {}, {cache: true})
130
121
  != partial('_partials/third-party/google-analytics.pug', {}, {cache: true})
@@ -12,14 +12,5 @@ div(class="meta")
12
12
  != __('post.edited')
13
13
  time(title=__('post.modified') + __('symbol.colon') + full_date(post.updated) itemprop="dateModified" datetime=moment(post.updated).format())
14
14
  != date(post.updated)
15
- if theme.waline.pageview && !theme.waline.enable && !theme.twikoo.enable
16
- script(type = "module" data-pjax).
17
- import { pageviewCount } from 'https://unpkg.com/@waline/client@2/dist/pageview.mjs';
18
-
19
- const path = document.getElementById("twikoo_visitors").getAttribute("data-path");
20
- pageviewCount({
21
- serverURL: '#{theme.waline.serverURL}',
22
- path: path,
23
- });
24
15
 
25
16
  != shokax_inject('postMeta')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hexo-theme-shokax",
3
- "version": "0.4.0-alpha.1",
3
+ "version": "0.4.0-alpha.3",
4
4
  "description": "a hexo theme based on shoka",
5
5
  "main": "index.js",
6
6
  "repository": "https://github.com/theme-shoka-x/hexo-theme-shokaX",
@@ -16,28 +16,34 @@
16
16
  "@types/jquery": "^3.5.29",
17
17
  "@types/js-yaml": "^4.0.9",
18
18
  "@types/node": "^20.11.10",
19
+ "@types/quicklink": "^2.3.4",
19
20
  "@typescript-eslint/eslint-plugin": "^6.20.0",
20
21
  "@typescript-eslint/parser": "^6.20.0",
22
+ "@waline/client": "3.0.0-alpha.11",
21
23
  "eslint": "^8.56.0",
22
24
  "eslint-config-standard": "~17",
23
25
  "eslint-plugin-import": "^2.29.1",
24
26
  "eslint-plugin-n": "^16.6.2",
25
27
  "eslint-plugin-promise": "^6.1.1",
26
28
  "eslint-plugin-vue": "^9.20.1",
27
- "instantsearch.js": "^4.64.1",
28
29
  "typescript": "^5.3.3",
29
30
  "vue": "^3.4.15"
30
31
  },
31
32
  "dependencies": {
33
+ "@algolia/client-search": "^4.22.1",
34
+ "algoliasearch": "4.22.1",
32
35
  "esbuild": "^0.20.0",
33
36
  "hexo": "7.0.0",
34
37
  "hexo-fs": "^4.1.1",
35
38
  "hexo-pagination": "^3.0.0",
36
39
  "hexo-util": "^3.2.0",
40
+ "instantsearch.js": "^4.64.2",
37
41
  "js-yaml": "^4.1.0",
38
42
  "mouse-firework": "^0.0.5",
43
+ "quicklink": "^2.3.0",
39
44
  "theme-shokax-anime": "^0.0.6",
40
45
  "theme-shokax-pjax": "^0.0.3",
46
+ "twikoo": "^1.6.31",
41
47
  "unlazy": "^0.10.4"
42
48
  },
43
49
  "engines": {
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  // @ts-ignore
8
8
  const hexo_pagination_1 = __importDefault(require("hexo-pagination"));
9
9
  // @ts-ignore
10
- const fmtNum = num => {
10
+ const fmtNum = (num) => {
11
11
  return num < 10 ? '0' + num : num;
12
12
  };
13
13
  if (!(hexo.config.archive && hexo.config.archive.enabled === false)) {
@@ -1,34 +1,11 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
4
  };
28
5
  Object.defineProperty(exports, "__esModule", { value: true });
29
6
  /* global hexo */
30
7
  const package_json_1 = __importDefault(require("../../package.json"));
31
- const fs = __importStar(require("hexo-fs"));
8
+ const node_fs_1 = __importDefault(require("node:fs"));
32
9
  const esbuild_1 = require("esbuild");
33
10
  const utils_1 = require("../utils");
34
11
  hexo.extend.generator.register('script', function (locals) {
@@ -70,7 +47,22 @@ hexo.extend.generator.register('script', function (locals) {
70
47
  audio: undefined,
71
48
  fireworks: (theme.fireworks && theme.fireworks.enable && theme.fireworks.options)
72
49
  ? theme.fireworks.options
73
- : undefined
50
+ : undefined,
51
+ waline: {
52
+ serverURL: theme.waline.serverURL,
53
+ lang: theme.waline.lang,
54
+ locale: theme.waline.locale,
55
+ emoji: theme.waline.emoji,
56
+ meta: theme.waline.meta,
57
+ requiredMeta: theme.waline.requiredMeta,
58
+ wordLimit: theme.waline.wordLimit,
59
+ pageSize: theme.waline.pageSize,
60
+ pageview: theme.waline.pageview
61
+ },
62
+ twikoo: {
63
+ envId: theme.twikoo.envId,
64
+ region: theme.twikoo.region
65
+ },
74
66
  };
75
67
  if (config?.algolia) {
76
68
  siteConfig.search = {
@@ -83,19 +75,17 @@ hexo.extend.generator.register('script', function (locals) {
83
75
  if (theme?.audio) {
84
76
  siteConfig.audio = theme.audio;
85
77
  }
86
- let text;
87
78
  let enterPoint;
88
- if (fs.existsSync('themes/shokaX/source/js/_app/pjax/siteInit.ts')) {
79
+ if (node_fs_1.default.existsSync('themes/shokaX/source/js/_app/pjax/siteInit.ts')) {
89
80
  enterPoint = 'themes/shokaX/source/js/_app/pjax/siteInit.ts';
90
81
  }
91
82
  else {
92
83
  enterPoint = 'node_modules/hexo-theme-shokax/source/js/_app/pjax/siteInit.ts';
93
84
  }
94
- text = 'const CONFIG = ' + JSON.stringify(siteConfig) + ';';
95
85
  (0, esbuild_1.buildSync)({
96
86
  entryPoints: [enterPoint],
97
87
  bundle: true,
98
- outfile: 'shokax_temp.js',
88
+ outdir: 'shokaxTemp',
99
89
  tsconfigRaw: {
100
90
  compilerOptions: {
101
91
  target: 'ES2022',
@@ -106,9 +96,12 @@ hexo.extend.generator.register('script', function (locals) {
106
96
  }
107
97
  },
108
98
  platform: 'browser',
109
- format: 'iife',
99
+ format: 'esm',
110
100
  target: ['es2022'],
111
101
  minify: true,
102
+ legalComments: 'linked',
103
+ mainFields: ['module', 'main'],
104
+ splitting: true,
112
105
  define: {
113
106
  __UNLAZY_LOGGING__: 'false',
114
107
  __UNLAZY_HASH_DECODING__: theme.modules.unlazyHash ? 'true' : 'false',
@@ -119,16 +112,47 @@ hexo.extend.generator.register('script', function (locals) {
119
112
  __shokax_outime__: theme.outime.enable ? 'true' : 'false',
120
113
  __shokax_tabs__: theme.modules.tabs ? 'true' : 'false',
121
114
  __shokax_quiz__: theme.modules.quiz ? 'true' : 'false',
122
- __shokax_fancybox__: theme.modules.fancybox ? 'true' : 'false'
115
+ __shokax_fancybox__: theme.modules.fancybox ? 'true' : 'false',
116
+ __shokax_waline__: theme.waline.enable ? 'true' : 'false',
117
+ __shokax_twikoo__: theme.twikoo.enable ? 'true' : 'false',
118
+ shokax_CONFIG: JSON.stringify(siteConfig),
119
+ shokax_siteURL: "'" + config.url + "'"
120
+ },
121
+ alias: {
122
+ 'algoliasearch/lite': 'algoliasearch/dist/algoliasearch-lite.esm.browser.js'
123
123
  }
124
124
  });
125
- text += fs.readFileSync('shokax_temp.js');
126
- const result = hexo.render.renderSync({ text, engine: 'js' });
127
- fs.unlinkSync('shokax_temp.js');
128
- return {
129
- path: theme.js + '/app.js',
130
- data: function () {
131
- return result;
125
+ const res = [];
126
+ node_fs_1.default.readdirSync('./shokaxTemp').forEach((file) => {
127
+ const fileText = node_fs_1.default.readFileSync(`./shokaxTemp/${file}`, { encoding: 'utf-8' });
128
+ if (file.endsWith('js')) {
129
+ const result = hexo.render.renderSync({ text: fileText, engine: 'js' });
130
+ res.push({
131
+ path: theme.js + '/' + file,
132
+ data: function () {
133
+ return result;
134
+ }
135
+ });
132
136
  }
133
- };
137
+ else if (file.endsWith('css')) {
138
+ const result = hexo.render.renderSync({ text: fileText, engine: 'css' });
139
+ res.push({
140
+ path: theme.css + '/' + file,
141
+ data: function () {
142
+ return result;
143
+ }
144
+ });
145
+ }
146
+ else {
147
+ res.push({
148
+ path: theme.js + '/' + file,
149
+ data: function () {
150
+ return fileText;
151
+ }
152
+ });
153
+ }
154
+ node_fs_1.default.unlinkSync(`./shokaxTemp/${file}`);
155
+ });
156
+ node_fs_1.default.rmSync('./shokaxTemp', { force: true, recursive: true });
157
+ return res;
134
158
  });