@geekron/hono 0.1.2 → 0.1.4

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.
Files changed (272) hide show
  1. package/dist/admin/constants/inquiry.d.ts.map +1 -0
  2. package/dist/admin/constants/visitor.d.ts.map +1 -0
  3. package/dist/admin/database/constants/database.d.ts.map +1 -0
  4. package/dist/{core/lib → admin}/database/constants/database.js +1 -1
  5. package/dist/admin/database/database.service.d.ts.map +1 -0
  6. package/dist/admin/database/index.d.ts.map +1 -0
  7. package/dist/admin/database/managers/sqlite.d.ts.map +1 -0
  8. package/dist/{core/lib → admin}/database/managers/sqlite.js +1 -1
  9. package/dist/{core/lib → admin}/database/managers/visitor-shard.d.ts +1 -1
  10. package/dist/admin/database/managers/visitor-shard.d.ts.map +1 -0
  11. package/dist/{core/lib → admin}/database/managers/visitor-shard.js +1 -1
  12. package/dist/{core/lib → admin}/database/repositories/inquiry.repository.d.ts +1 -1
  13. package/dist/admin/database/repositories/inquiry.repository.d.ts.map +1 -0
  14. package/dist/{core/lib → admin}/database/repositories/inquiry.repository.js +1 -1
  15. package/dist/{core/lib → admin}/database/repositories/visitor.repository.d.ts +1 -1
  16. package/dist/admin/database/repositories/visitor.repository.d.ts.map +1 -0
  17. package/dist/{core/lib → admin}/database/repositories/visitor.repository.js +1 -1
  18. package/dist/admin/database/schemas/inquiry.schema.d.ts.map +1 -0
  19. package/dist/admin/database/schemas/visitor.schema.d.ts.map +1 -0
  20. package/dist/admin/routes/api/inquiries/[id]/index.d.ts +3 -0
  21. package/dist/admin/routes/api/inquiries/[id]/index.d.ts.map +1 -0
  22. package/dist/admin/routes/api/inquiries/[id]/index.js +27 -0
  23. package/dist/admin/routes/api/inquiries/[id]/read.d.ts +3 -0
  24. package/dist/admin/routes/api/inquiries/[id]/read.d.ts.map +1 -0
  25. package/dist/admin/routes/api/inquiries/[id]/read.js +40 -0
  26. package/dist/admin/routes/api/inquiries/index.d.ts +3 -0
  27. package/dist/admin/routes/api/inquiries/index.d.ts.map +1 -0
  28. package/dist/admin/routes/api/inquiries/index.js +45 -0
  29. package/dist/admin/routes/api/inquiry/post.d.ts +3 -0
  30. package/dist/admin/routes/api/inquiry/post.d.ts.map +1 -0
  31. package/dist/admin/routes/api/inquiry/post.js +29 -0
  32. package/dist/admin/routes/api/site/dashboard.d.ts +3 -0
  33. package/dist/admin/routes/api/site/dashboard.d.ts.map +1 -0
  34. package/dist/admin/routes/api/site/dashboard.js +28 -0
  35. package/dist/admin/routes/api/site/hello.d.ts +3 -0
  36. package/dist/admin/routes/api/site/hello.d.ts.map +1 -0
  37. package/dist/admin/routes/api/site/hello.js +3 -0
  38. package/dist/admin/routes/api/visitor/page-views.d.ts +3 -0
  39. package/dist/admin/routes/api/visitor/page-views.d.ts.map +1 -0
  40. package/dist/admin/routes/api/visitor/page-views.js +30 -0
  41. package/dist/admin/routes/api/visitor/sessions.d.ts +3 -0
  42. package/dist/admin/routes/api/visitor/sessions.d.ts.map +1 -0
  43. package/dist/admin/routes/api/visitor/sessions.js +28 -0
  44. package/dist/admin/routes/api/visitor/stats/daily-page.d.ts +3 -0
  45. package/dist/admin/routes/api/visitor/stats/daily-page.d.ts.map +1 -0
  46. package/dist/admin/routes/api/visitor/stats/daily-page.js +24 -0
  47. package/dist/admin/routes/api/visitor/stats/ip-page.d.ts +3 -0
  48. package/dist/admin/routes/api/visitor/stats/ip-page.d.ts.map +1 -0
  49. package/dist/admin/routes/api/visitor/stats/ip-page.js +19 -0
  50. package/dist/admin/routes/api/visitor/stats/pv.d.ts +3 -0
  51. package/dist/admin/routes/api/visitor/stats/pv.d.ts.map +1 -0
  52. package/dist/admin/routes/api/visitor/stats/pv.js +22 -0
  53. package/dist/admin/routes/api/visitor/stats/uv.d.ts +3 -0
  54. package/dist/admin/routes/api/visitor/stats/uv.d.ts.map +1 -0
  55. package/dist/admin/routes/api/visitor/stats/uv.js +20 -0
  56. package/dist/admin/services/captcha.service.d.ts.map +1 -0
  57. package/dist/admin/services/geoip.service.d.ts.map +1 -0
  58. package/dist/{core/lib → admin}/services/geoip.service.js +1 -1
  59. package/dist/admin/services/index.d.ts.map +1 -0
  60. package/dist/{core/lib → admin}/services/inquiry.service.d.ts +1 -1
  61. package/dist/admin/services/inquiry.service.d.ts.map +1 -0
  62. package/dist/{core/lib → admin}/services/inquiry.service.js +1 -1
  63. package/dist/{core/lib → admin}/services/mailer.service.d.ts +1 -1
  64. package/dist/admin/services/mailer.service.d.ts.map +1 -0
  65. package/dist/{core/lib → admin}/services/mailer.service.js +3 -3
  66. package/dist/admin/types/inquiry.d.ts.map +1 -0
  67. package/dist/admin/types/visitor.d.ts.map +1 -0
  68. package/dist/admin/utils/api.d.ts.map +1 -0
  69. package/dist/admin/utils/request.d.ts.map +1 -0
  70. package/dist/core/index.d.ts +2 -0
  71. package/dist/core/index.d.ts.map +1 -1
  72. package/dist/core/index.js +1 -0
  73. package/dist/core/middlewares/api-guard.d.ts +0 -2
  74. package/dist/core/middlewares/api-guard.d.ts.map +1 -1
  75. package/dist/core/middlewares/api-guard.js +0 -1
  76. package/dist/core/middlewares/visitor-tracker.js +1 -1
  77. package/dist/core/utils/index.d.ts +0 -1
  78. package/dist/core/utils/index.d.ts.map +1 -1
  79. package/dist/core/utils/index.js +0 -1
  80. package/dist/core/utils/routeUrl.d.ts +3 -15
  81. package/dist/core/utils/routeUrl.d.ts.map +1 -1
  82. package/dist/core/utils/routeUrl.js +56 -66
  83. package/dist/route/index.d.ts +2 -1
  84. package/dist/route/index.d.ts.map +1 -1
  85. package/dist/route/index.js +2 -1
  86. package/dist/route/interfaces.d.ts +35 -23
  87. package/dist/route/interfaces.d.ts.map +1 -1
  88. package/dist/route/router.d.ts +16 -0
  89. package/dist/route/router.d.ts.map +1 -0
  90. package/dist/route/router.js +200 -0
  91. package/dist/route/setup.d.ts +15 -26
  92. package/dist/route/setup.d.ts.map +1 -1
  93. package/dist/route/setup.js +39 -31
  94. package/dist/route/slot.d.ts +1 -1
  95. package/dist/route/slot.d.ts.map +1 -1
  96. package/dist/route/utils.d.ts +3 -0
  97. package/dist/route/utils.d.ts.map +1 -0
  98. package/dist/route/utils.js +11 -0
  99. package/dist/strapi/cms/cms.d.ts +4 -4
  100. package/dist/strapi/cms/cms.d.ts.map +1 -1
  101. package/dist/strapi/cms/cms.js +25 -6
  102. package/dist/strapi/cms/common.d.ts +1 -4
  103. package/dist/strapi/cms/common.d.ts.map +1 -1
  104. package/dist/strapi/cms/common.js +58 -23
  105. package/dist/strapi/cms/components.d.ts +1 -15
  106. package/dist/strapi/cms/components.d.ts.map +1 -1
  107. package/dist/strapi/cms/components.js +54 -24
  108. package/dist/strapi/cms/content-types.d.ts +1 -30
  109. package/dist/strapi/cms/content-types.d.ts.map +1 -1
  110. package/dist/strapi/cms/content-types.js +53 -25
  111. package/dist/strapi/cms/core/base-singleton.d.ts +37 -0
  112. package/dist/strapi/cms/core/base-singleton.d.ts.map +1 -0
  113. package/dist/strapi/cms/core/base-singleton.js +71 -0
  114. package/dist/strapi/cms/core/utils.d.ts +21 -0
  115. package/dist/strapi/cms/core/utils.d.ts.map +1 -0
  116. package/dist/strapi/cms/core/utils.js +48 -0
  117. package/dist/strapi/cms/index.d.ts +4 -0
  118. package/dist/strapi/cms/index.d.ts.map +1 -1
  119. package/dist/strapi/cms/index.js +2 -0
  120. package/dist/strapi/cms/locales.d.ts +1 -11
  121. package/dist/strapi/cms/locales.d.ts.map +1 -1
  122. package/dist/strapi/cms/locales.js +54 -24
  123. package/dist/strapi/cms/managers/index.d.ts +9 -0
  124. package/dist/strapi/cms/managers/index.d.ts.map +1 -0
  125. package/dist/strapi/cms/managers/index.js +8 -0
  126. package/dist/strapi/cms/managers/initialization-state.d.ts +26 -0
  127. package/dist/strapi/cms/managers/initialization-state.d.ts.map +1 -0
  128. package/dist/strapi/cms/managers/initialization-state.js +52 -0
  129. package/dist/strapi/cms/menu.d.ts +0 -4
  130. package/dist/strapi/cms/menu.d.ts.map +1 -1
  131. package/dist/strapi/cms/menu.js +38 -14
  132. package/dist/strapi/cms/setup.d.ts +3 -2
  133. package/dist/strapi/cms/setup.d.ts.map +1 -1
  134. package/dist/strapi/cms/setup.js +10 -10
  135. package/dist/strapi/cms/site.d.ts +1 -4
  136. package/dist/strapi/cms/site.d.ts.map +1 -1
  137. package/dist/strapi/cms/site.js +58 -23
  138. package/dist/strapi/cms/translations.d.ts +1 -10
  139. package/dist/strapi/cms/translations.d.ts.map +1 -1
  140. package/dist/strapi/cms/translations.js +42 -24
  141. package/dist/strapi/cms/types/common.d.ts +5 -0
  142. package/dist/strapi/cms/types/common.d.ts.map +1 -0
  143. package/dist/strapi/cms/types/common.js +1 -0
  144. package/dist/strapi/cms/types/component.d.ts +16 -0
  145. package/dist/strapi/cms/types/component.d.ts.map +1 -0
  146. package/dist/strapi/cms/types/component.js +1 -0
  147. package/dist/strapi/cms/types/content-type.d.ts +31 -0
  148. package/dist/strapi/cms/types/content-type.d.ts.map +1 -0
  149. package/dist/strapi/cms/types/content-type.js +1 -0
  150. package/dist/strapi/cms/types/index.d.ts +8 -0
  151. package/dist/strapi/cms/types/index.d.ts.map +1 -0
  152. package/dist/strapi/cms/types/index.js +7 -0
  153. package/dist/strapi/cms/types/locale.d.ts +11 -0
  154. package/dist/strapi/cms/types/locale.d.ts.map +1 -0
  155. package/dist/strapi/cms/types/locale.js +1 -0
  156. package/dist/strapi/cms/types/menu.d.ts +5 -0
  157. package/dist/strapi/cms/types/menu.d.ts.map +1 -0
  158. package/dist/strapi/cms/types/menu.js +1 -0
  159. package/dist/strapi/cms/types/site.d.ts +5 -0
  160. package/dist/strapi/cms/types/site.d.ts.map +1 -0
  161. package/dist/strapi/cms/types/site.js +1 -0
  162. package/dist/strapi/cms/types/translation.d.ts +11 -0
  163. package/dist/strapi/cms/types/translation.d.ts.map +1 -0
  164. package/dist/strapi/cms/types/translation.js +1 -0
  165. package/dist/strapi/index.d.ts +0 -1
  166. package/dist/strapi/index.d.ts.map +1 -1
  167. package/dist/strapi/index.js +0 -1
  168. package/dist/strapi/routes/api/site/pages.d.ts +3 -0
  169. package/dist/strapi/routes/api/site/pages.d.ts.map +1 -0
  170. package/dist/strapi/{api/site.js → routes/api/site/pages.js} +49 -53
  171. package/dist/strapi/routes/api/site/refresh.d.ts +3 -0
  172. package/dist/strapi/routes/api/site/refresh.d.ts.map +1 -0
  173. package/dist/strapi/routes/api/site/refresh.js +5 -0
  174. package/dist/strapi/routes/robots.txt.d.ts +3 -0
  175. package/dist/strapi/routes/robots.txt.d.ts.map +1 -0
  176. package/dist/strapi/routes/robots.txt.js +14 -0
  177. package/dist/strapi/routes/sitemap/[apiID].xml.d.ts +3 -0
  178. package/dist/strapi/routes/sitemap/[apiID].xml.d.ts.map +1 -0
  179. package/dist/strapi/routes/sitemap/[apiID].xml.js +124 -0
  180. package/dist/strapi/routes/sitemap.xml.d.ts +3 -0
  181. package/dist/strapi/routes/sitemap.xml.d.ts.map +1 -0
  182. package/dist/strapi/routes/sitemap.xml.js +48 -0
  183. package/dist/strapi/routes/sitemap.xsl.d.ts +3 -0
  184. package/dist/strapi/routes/sitemap.xsl.d.ts.map +1 -0
  185. package/dist/strapi/routes/sitemap.xsl.js +14 -0
  186. package/package.json +1 -1
  187. package/dist/core/api/common.d.ts +0 -2
  188. package/dist/core/api/common.d.ts.map +0 -1
  189. package/dist/core/api/common.js +0 -38
  190. package/dist/core/api/inquiries.d.ts +0 -2
  191. package/dist/core/api/inquiries.d.ts.map +0 -1
  192. package/dist/core/api/inquiries.js +0 -116
  193. package/dist/core/api/inquiry.d.ts +0 -2
  194. package/dist/core/api/inquiry.d.ts.map +0 -1
  195. package/dist/core/api/inquiry.js +0 -33
  196. package/dist/core/api/visitor.d.ts +0 -2
  197. package/dist/core/api/visitor.d.ts.map +0 -1
  198. package/dist/core/api/visitor.js +0 -152
  199. package/dist/core/lib/constants/inquiry.d.ts.map +0 -1
  200. package/dist/core/lib/constants/visitor.d.ts.map +0 -1
  201. package/dist/core/lib/database/constants/database.d.ts.map +0 -1
  202. package/dist/core/lib/database/database.service.d.ts.map +0 -1
  203. package/dist/core/lib/database/index.d.ts.map +0 -1
  204. package/dist/core/lib/database/managers/sqlite.d.ts.map +0 -1
  205. package/dist/core/lib/database/managers/visitor-shard.d.ts.map +0 -1
  206. package/dist/core/lib/database/repositories/inquiry.repository.d.ts.map +0 -1
  207. package/dist/core/lib/database/repositories/visitor.repository.d.ts.map +0 -1
  208. package/dist/core/lib/database/schemas/inquiry.schema.d.ts.map +0 -1
  209. package/dist/core/lib/database/schemas/visitor.schema.d.ts.map +0 -1
  210. package/dist/core/lib/services/captcha.service.d.ts.map +0 -1
  211. package/dist/core/lib/services/geoip.service.d.ts.map +0 -1
  212. package/dist/core/lib/services/index.d.ts.map +0 -1
  213. package/dist/core/lib/services/inquiry.service.d.ts.map +0 -1
  214. package/dist/core/lib/services/mailer.service.d.ts.map +0 -1
  215. package/dist/core/lib/types/inquiry.d.ts.map +0 -1
  216. package/dist/core/lib/types/visitor.d.ts.map +0 -1
  217. package/dist/core/lib/utils/api.d.ts.map +0 -1
  218. package/dist/core/lib/utils/request.d.ts.map +0 -1
  219. package/dist/core/utils/params.d.ts +0 -5
  220. package/dist/core/utils/params.d.ts.map +0 -1
  221. package/dist/core/utils/params.js +0 -14
  222. package/dist/route/methods.d.ts +0 -28
  223. package/dist/route/methods.d.ts.map +0 -1
  224. package/dist/route/methods.js +0 -106
  225. package/dist/strapi/api/site.d.ts +0 -2
  226. package/dist/strapi/api/site.d.ts.map +0 -1
  227. package/dist/strapi/pages/sitemap/index.d.ts +0 -2
  228. package/dist/strapi/pages/sitemap/index.d.ts.map +0 -1
  229. package/dist/strapi/pages/sitemap/index.js +0 -50
  230. package/dist/strapi/pages/sitemap/list.d.ts +0 -2
  231. package/dist/strapi/pages/sitemap/list.d.ts.map +0 -1
  232. package/dist/strapi/pages/sitemap/list.js +0 -123
  233. package/dist/strapi/pages/sitemap/robots.d.ts +0 -2
  234. package/dist/strapi/pages/sitemap/robots.d.ts.map +0 -1
  235. package/dist/strapi/pages/sitemap/robots.js +0 -19
  236. package/dist/strapi/pages/sitemap/style.d.ts +0 -2
  237. package/dist/strapi/pages/sitemap/style.d.ts.map +0 -1
  238. package/dist/strapi/pages/sitemap/style.js +0 -17
  239. package/dist/strapi/route.d.ts +0 -3
  240. package/dist/strapi/route.d.ts.map +0 -1
  241. package/dist/strapi/route.js +0 -61
  242. /package/dist/{core/lib → admin}/constants/inquiry.d.ts +0 -0
  243. /package/dist/{core/lib → admin}/constants/inquiry.js +0 -0
  244. /package/dist/{core/lib → admin}/constants/visitor.d.ts +0 -0
  245. /package/dist/{core/lib → admin}/constants/visitor.js +0 -0
  246. /package/dist/{core/lib → admin}/database/constants/database.d.ts +0 -0
  247. /package/dist/{core/lib → admin}/database/database.service.d.ts +0 -0
  248. /package/dist/{core/lib → admin}/database/database.service.js +0 -0
  249. /package/dist/{core/lib → admin}/database/index.d.ts +0 -0
  250. /package/dist/{core/lib → admin}/database/index.js +0 -0
  251. /package/dist/{core/lib → admin}/database/managers/sqlite.d.ts +0 -0
  252. /package/dist/{core/lib → admin}/database/schemas/inquiry.schema.d.ts +0 -0
  253. /package/dist/{core/lib → admin}/database/schemas/inquiry.schema.js +0 -0
  254. /package/dist/{core/lib → admin}/database/schemas/visitor.schema.d.ts +0 -0
  255. /package/dist/{core/lib → admin}/database/schemas/visitor.schema.js +0 -0
  256. /package/dist/{core/lib → admin}/services/captcha.service.d.ts +0 -0
  257. /package/dist/{core/lib → admin}/services/captcha.service.js +0 -0
  258. /package/dist/{core/lib → admin}/services/geoip.service.d.ts +0 -0
  259. /package/dist/{core/lib → admin}/services/index.d.ts +0 -0
  260. /package/dist/{core/lib → admin}/services/index.js +0 -0
  261. /package/dist/{core/lib → admin}/types/inquiry.d.ts +0 -0
  262. /package/dist/{core/lib → admin}/types/inquiry.js +0 -0
  263. /package/dist/{core/lib → admin}/types/visitor.d.ts +0 -0
  264. /package/dist/{core/lib → admin}/types/visitor.js +0 -0
  265. /package/dist/{core/lib → admin}/utils/api.d.ts +0 -0
  266. /package/dist/{core/lib → admin}/utils/api.js +0 -0
  267. /package/dist/{core/lib → admin}/utils/request.d.ts +0 -0
  268. /package/dist/{core/lib → admin}/utils/request.js +0 -0
  269. /package/dist/strapi/{pages/sitemap/list.xml → routes/sitemap/[apiID].xml} +0 -0
  270. /package/dist/strapi/{pages → routes}/sitemap/robots.txt +0 -0
  271. /package/dist/strapi/{pages/sitemap/index.xml → routes/sitemap/sitemap.xml} +0 -0
  272. /package/dist/strapi/{pages/sitemap/style.xsl → routes/sitemap/sitemap.xsl} +0 -0
@@ -1,106 +0,0 @@
1
- import { HTTPException } from 'hono/http-exception';
2
- import { setup } from '../route/setup';
3
- import { fetchContentTypes } from '../strapi';
4
- const routeItems = [];
5
- const routeItemByName = new Map();
6
- const routeItemByType = new Map();
7
- if (!global.__pendingRoutes) {
8
- global.__pendingRoutes = [];
9
- }
10
- const pendingRoutes = global.__pendingRoutes;
11
- if (typeof global !== 'undefined' && global) {
12
- if (!global.__route_module_initialized) {
13
- global.__route_module_initialized = true;
14
- console.log('Route module initialized');
15
- }
16
- else {
17
- console.log('Route module re-initialized, but using persistent pendingRoutes');
18
- }
19
- }
20
- export const route = {
21
- all: method('all'),
22
- get: method('get'),
23
- post: method('post'),
24
- put: method('put'),
25
- notFound: (handler) => {
26
- setup.app.notFound(async (c) => {
27
- c.status(404);
28
- return handler(c);
29
- });
30
- },
31
- onError: (handler) => {
32
- setup.app.onError(async (error, c) => {
33
- console.error(error);
34
- if (error instanceof HTTPException) {
35
- if (error.status < 500) {
36
- c.status(error.status);
37
- }
38
- else {
39
- c.status(400);
40
- }
41
- }
42
- return handler(c);
43
- });
44
- },
45
- };
46
- export const getRouteItems = () => {
47
- return routeItems;
48
- };
49
- export const getRouteTypes = () => {
50
- return routeItemByType;
51
- };
52
- export const getRouteItemByName = (name) => {
53
- return routeItemByName.get(name);
54
- };
55
- export const getRouteItemByType = (dataType) => {
56
- return routeItemByType.get(dataType);
57
- };
58
- export const getPendingRoutes = () => {
59
- return pendingRoutes;
60
- };
61
- export const bindRoutes = async (app, routeItemHandler) => {
62
- const types = await fetchContentTypes();
63
- const methods = {
64
- get: app.get.bind(app),
65
- post: app.post.bind(app),
66
- put: app.put.bind(app),
67
- all: app.all.bind(app),
68
- };
69
- pendingRoutes.forEach(({ method: methodType, path, option }) => {
70
- const route = methods[methodType];
71
- const handler = routeItemHandler(methodType);
72
- Promise.resolve(handler(path, option)).then((routeItem) => {
73
- const name = routeItem.name;
74
- if (routeItemByName.has(name)) {
75
- throw new Error(`Route item name "${name}" already exists`);
76
- }
77
- routeItemByName.set(name, routeItem);
78
- const dataType = routeItem.dataType;
79
- if (dataType) {
80
- if (!types.has(dataType)) {
81
- throw new Error(`Content type "${dataType}" not found`);
82
- }
83
- const items = routeItemByType.get(dataType)?.items || [];
84
- routeItemByType.set(dataType, {
85
- dataType,
86
- items: [...items, routeItem],
87
- });
88
- }
89
- routeItems.push(routeItem);
90
- route(routeItem.fullPath, async (c) => {
91
- return option.handler(c);
92
- });
93
- });
94
- });
95
- // 清空已处理的路由,防止重复处理
96
- pendingRoutes.length = 0;
97
- };
98
- function method(method) {
99
- return (path, option) => {
100
- pendingRoutes.push({
101
- method,
102
- path,
103
- option,
104
- });
105
- };
106
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=site.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/strapi/api/site.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/strapi/pages/sitemap/index.tsx"],"names":[],"mappings":""}
@@ -1,50 +0,0 @@
1
- import { engine, readTemplateSync } from '../../../core/template';
2
- import { getRouteTypes, route } from '../../../route';
3
- import { cms, getContentTypes, getSite } from '../../../strapi/cms';
4
- import { resource } from '../../../strapi/utils';
5
- const xml = readTemplateSync(__dirname, './index.xml');
6
- route.get('/sitemap.xml', {
7
- handler: async (c) => {
8
- const site = getSite();
9
- const types = getContentTypes();
10
- const routeTypes = getRouteTypes();
11
- // 生成 sitemap index items
12
- const dataTypes = Array.from(routeTypes.values()).filter((option) => {
13
- return (option.dataType &&
14
- types.get(option.dataType)?.schema.kind === 'collectionType');
15
- });
16
- // 获取每个视图的页面数量
17
- const typeCount = new Map();
18
- const itemsMap = new Map();
19
- await Promise.all(dataTypes.map(async (option) => {
20
- const dataType = types.get(option.dataType);
21
- if (!dataType)
22
- return;
23
- const collectionName = resource(option.dataType);
24
- const res = await cms.collection(collectionName).find({
25
- pagination: { limit: 1 },
26
- status: 'published',
27
- });
28
- if (res.meta.pagination?.total && res.meta.pagination?.total > 0) {
29
- itemsMap.set(option.dataType, {
30
- loc: `${site.url}/sitemap/${dataType.apiID}.xml`,
31
- lastmod: new Date().toISOString(),
32
- });
33
- }
34
- typeCount.set(option.dataType, res.meta.pagination?.total || 0);
35
- }));
36
- // 添加 single 视图
37
- itemsMap.set('single', {
38
- loc: `${site.url}/sitemap/single.xml`,
39
- lastmod: new Date().toISOString(),
40
- });
41
- // 生成 sitemap index
42
- const result = engine.parseAndRenderSync(xml, {
43
- sitemapStyleUrl: `${site.url}/sitemap.xsl`,
44
- items: Array.from(itemsMap.values()),
45
- });
46
- return c.html(result, 200, {
47
- 'Content-Type': 'text/xml; charset=utf-8',
48
- });
49
- },
50
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/strapi/pages/sitemap/list.tsx"],"names":[],"mappings":""}
@@ -1,123 +0,0 @@
1
- import { engine, readTemplateSync } from '../../../core/template';
2
- import { params, routeUrl } from '../../../core/utils';
3
- import { getRouteTypes, route } from '../../../route';
4
- import { getContentTypes, getSite, resource } from '../../../strapi';
5
- import { cms } from '../../../strapi/cms';
6
- const xml = readTemplateSync(__dirname, './list.xml');
7
- const fetchSingleItems = async () => {
8
- const site = getSite();
9
- const types = getContentTypes();
10
- const routeTypes = getRouteTypes();
11
- const singleTypes = Array.from(routeTypes.values()).filter(({ dataType }) => {
12
- return types.get(dataType)?.schema?.kind === 'singleType';
13
- });
14
- const promises = singleTypes.map(async (route) => {
15
- const schema = types.get(route.dataType)?.schema;
16
- const res = await cms.single(String(schema?.singularName)).find({
17
- status: 'published',
18
- });
19
- if (res.data) {
20
- return route.items.map((item) => {
21
- const sitemap = (item.sitemap ||
22
- res.data?.sitemap ||
23
- {});
24
- sitemap.paginate = item.sitemap?.paginate;
25
- return {
26
- loc: routeUrl(item.name, {}, {}, { baseUrl: site.url, suffix: item.suffix }),
27
- lastmod: res.data?.updatedAt,
28
- changefreq: sitemap?.changefreq ?? 'daily',
29
- priority: sitemap?.priority ?? 0.5,
30
- };
31
- });
32
- }
33
- return [];
34
- });
35
- return Promise.all(promises).then((items) => items.flat());
36
- };
37
- const fetchCollectionItems = async (apiID) => {
38
- const site = getSite();
39
- const types = getContentTypes();
40
- const routeTypes = getRouteTypes();
41
- const typesByApiID = new Map(Array.from(types.values()).map((type) => [type.apiID, type]));
42
- const dataType = typesByApiID.get(apiID);
43
- if (!dataType)
44
- return [];
45
- const collection = resource(dataType.uid);
46
- const { data, meta: { pagination }, } = await cms.collection(collection).find({
47
- status: 'published',
48
- });
49
- const routeType = routeTypes.get(String(dataType?.uid));
50
- // 这里需要根据 routeType 从 CMS 或数据源获取所有页面
51
- const items = data.reduce((result, item) => {
52
- routeType?.items?.forEach((route) => {
53
- const sitemap = (item.sitemap || route.sitemap || {});
54
- sitemap.paginate = route.sitemap?.paginate;
55
- const params = {};
56
- route.params.forEach((param) => {
57
- params[param] = item[param];
58
- });
59
- if (sitemap.disabled)
60
- return;
61
- if (sitemap.paginate && pagination) {
62
- const totalPages = Math.ceil(pagination.total / sitemap.paginate);
63
- for (let page = 1; page <= totalPages; page++) {
64
- params.page = page;
65
- try {
66
- if (page < 2)
67
- return;
68
- result.push({
69
- loc: routeUrl(route.name, params, {}, { baseUrl: site.url, suffix: route.suffix }),
70
- lastmod: item.updatedAt,
71
- changefreq: sitemap.changefreq ?? 'daily',
72
- priority: sitemap.priority ?? 0.5,
73
- });
74
- }
75
- catch (error) {
76
- console.error(route.name, params, error);
77
- }
78
- }
79
- }
80
- else {
81
- try {
82
- result.push({
83
- loc: routeUrl(route.name, params, {}, { baseUrl: site.url, suffix: route.suffix }),
84
- lastmod: item.updatedAt,
85
- changefreq: sitemap.changefreq ?? 'daily',
86
- priority: sitemap.priority ?? 0.5,
87
- });
88
- }
89
- catch (error) {
90
- console.error(route.name, params, error);
91
- }
92
- }
93
- });
94
- return result;
95
- }, []);
96
- const itemsMap = new Map(items.map((item) => [item.loc, item]));
97
- return Array.from(itemsMap.values());
98
- };
99
- route.get('/sitemap/:apiID.xml', {
100
- handler: async (c) => {
101
- const site = getSite();
102
- const apiID = String(params('apiID'));
103
- let items = [];
104
- try {
105
- if (apiID === 'single') {
106
- items = await fetchSingleItems();
107
- }
108
- else {
109
- items = await fetchCollectionItems(apiID);
110
- }
111
- }
112
- catch (error) {
113
- console.error(error);
114
- }
115
- const result = engine.parseAndRenderSync(xml, {
116
- sitemapStyleUrl: `${site.url}/sitemap.xsl`,
117
- items,
118
- });
119
- return c.html(result, 200, {
120
- 'Content-Type': 'text/xml; charset=utf-8',
121
- });
122
- },
123
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=robots.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../../../../src/strapi/pages/sitemap/robots.tsx"],"names":[],"mappings":""}
@@ -1,19 +0,0 @@
1
- import { trim } from 'voca';
2
- import { engine, readTemplateSync } from '../../../core/template';
3
- import { route } from '../../../route';
4
- import { getSite } from '../../../strapi';
5
- const txt = readTemplateSync(__dirname, './robots.txt');
6
- route.get('/robots.txt', {
7
- handler: async (c) => {
8
- const site = getSite();
9
- const result = engine.parseAndRenderSync(trim(site.robots || '') || txt, {
10
- indexing: site.indexing,
11
- siteUrl: site.url,
12
- siteTitle: site.title || 'Geekron',
13
- sitemapIndexUrl: `${site.url}/sitemap.xml`,
14
- });
15
- return c.html(result, 200, {
16
- 'Content-Type': 'text/plain; charset=utf-8',
17
- });
18
- },
19
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=style.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../../src/strapi/pages/sitemap/style.tsx"],"names":[],"mappings":""}
@@ -1,17 +0,0 @@
1
- import { engine, readTemplateSync } from '../../../core/template';
2
- import { route } from '../../../route';
3
- import { getSite } from '../../../strapi';
4
- const xsl = readTemplateSync(__dirname, './style.xsl');
5
- route.get('/sitemap.xsl', {
6
- handler: async (c) => {
7
- const site = getSite();
8
- const result = engine.parseAndRenderSync(xsl, {
9
- siteUrl: site.url,
10
- siteTitle: site.title || 'Geekron',
11
- sitemapIndexUrl: `${site.url}/sitemap.xml`,
12
- });
13
- return c.html(result, 200, {
14
- 'Content-Type': 'text/xsl; charset=utf-8',
15
- });
16
- },
17
- });
@@ -1,3 +0,0 @@
1
- import type { RouteItemHandler } from '../route';
2
- export declare const routeItemHandler: RouteItemHandler;
3
- //# sourceMappingURL=route.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/strapi/route.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,eAAO,MAAM,gBAAgB,EAAE,gBAuC9B,CAAA"}
@@ -1,61 +0,0 @@
1
- import { kebabCase, trim } from 'voca';
2
- import { URL_SUFFIX } from '../contract';
3
- export const routeItemHandler = (method) => {
4
- return (path, option) => {
5
- const name = option?.name || kebabCase(path);
6
- if (option.suffix === undefined) {
7
- option.suffix = trim(URL_SUFFIX, '.');
8
- }
9
- const pathSeparated = path.split('.');
10
- if (pathSeparated.length > 1) {
11
- option.suffix = pathSeparated.pop();
12
- }
13
- if (path === '/') {
14
- option.suffix = '';
15
- }
16
- // 创建 fullPath
17
- const fullPath = makeFullPath(path, option.suffix || '');
18
- // 获取参数
19
- const params = path
20
- .split('/')
21
- .filter((part) => part.startsWith(':'))
22
- .map((param) => {
23
- return trim(param.split('.')[0], ':');
24
- });
25
- return {
26
- method,
27
- path,
28
- fullPath,
29
- name,
30
- params,
31
- suffix: option.suffix || '',
32
- dataType: option.dataType,
33
- sitemap: option.sitemap,
34
- };
35
- };
36
- };
37
- function makeFullPath(path, suffix) {
38
- if (path === '/') {
39
- return path;
40
- }
41
- const pathSeparated = path.split('.');
42
- if (pathSeparated.length > 1) {
43
- pathSeparated.pop();
44
- }
45
- path = pathSeparated.join('.');
46
- if (!suffix)
47
- return path;
48
- // 按 '/' 分割路径
49
- const parts = path.split('/').filter(Boolean); // 过滤掉空字符串(如开头的 /)
50
- const lastPart = parts[parts.length - 1];
51
- // 判断最后一段是否是动态参数(以 : 开头)
52
- if (lastPart.startsWith(':')) {
53
- // 动态段:替换为 :param{.+\.suffix}
54
- parts[parts.length - 1] = `${lastPart}{.+\\.${suffix}}`;
55
- }
56
- else {
57
- // 静态段:直接加后缀
58
- parts[parts.length - 1] = `${lastPart}.${suffix}`;
59
- }
60
- return `/${parts.join('/')}`;
61
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes