@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.
- package/dist/admin/constants/inquiry.d.ts.map +1 -0
- package/dist/admin/constants/visitor.d.ts.map +1 -0
- package/dist/admin/database/constants/database.d.ts.map +1 -0
- package/dist/{core/lib → admin}/database/constants/database.js +1 -1
- package/dist/admin/database/database.service.d.ts.map +1 -0
- package/dist/admin/database/index.d.ts.map +1 -0
- package/dist/admin/database/managers/sqlite.d.ts.map +1 -0
- package/dist/{core/lib → admin}/database/managers/sqlite.js +1 -1
- package/dist/{core/lib → admin}/database/managers/visitor-shard.d.ts +1 -1
- package/dist/admin/database/managers/visitor-shard.d.ts.map +1 -0
- package/dist/{core/lib → admin}/database/managers/visitor-shard.js +1 -1
- package/dist/{core/lib → admin}/database/repositories/inquiry.repository.d.ts +1 -1
- package/dist/admin/database/repositories/inquiry.repository.d.ts.map +1 -0
- package/dist/{core/lib → admin}/database/repositories/inquiry.repository.js +1 -1
- package/dist/{core/lib → admin}/database/repositories/visitor.repository.d.ts +1 -1
- package/dist/admin/database/repositories/visitor.repository.d.ts.map +1 -0
- package/dist/{core/lib → admin}/database/repositories/visitor.repository.js +1 -1
- package/dist/admin/database/schemas/inquiry.schema.d.ts.map +1 -0
- package/dist/admin/database/schemas/visitor.schema.d.ts.map +1 -0
- package/dist/admin/routes/api/inquiries/[id]/index.d.ts +3 -0
- package/dist/admin/routes/api/inquiries/[id]/index.d.ts.map +1 -0
- package/dist/admin/routes/api/inquiries/[id]/index.js +27 -0
- package/dist/admin/routes/api/inquiries/[id]/read.d.ts +3 -0
- package/dist/admin/routes/api/inquiries/[id]/read.d.ts.map +1 -0
- package/dist/admin/routes/api/inquiries/[id]/read.js +40 -0
- package/dist/admin/routes/api/inquiries/index.d.ts +3 -0
- package/dist/admin/routes/api/inquiries/index.d.ts.map +1 -0
- package/dist/admin/routes/api/inquiries/index.js +45 -0
- package/dist/admin/routes/api/inquiry/post.d.ts +3 -0
- package/dist/admin/routes/api/inquiry/post.d.ts.map +1 -0
- package/dist/admin/routes/api/inquiry/post.js +29 -0
- package/dist/admin/routes/api/site/dashboard.d.ts +3 -0
- package/dist/admin/routes/api/site/dashboard.d.ts.map +1 -0
- package/dist/admin/routes/api/site/dashboard.js +28 -0
- package/dist/admin/routes/api/site/hello.d.ts +3 -0
- package/dist/admin/routes/api/site/hello.d.ts.map +1 -0
- package/dist/admin/routes/api/site/hello.js +3 -0
- package/dist/admin/routes/api/visitor/page-views.d.ts +3 -0
- package/dist/admin/routes/api/visitor/page-views.d.ts.map +1 -0
- package/dist/admin/routes/api/visitor/page-views.js +30 -0
- package/dist/admin/routes/api/visitor/sessions.d.ts +3 -0
- package/dist/admin/routes/api/visitor/sessions.d.ts.map +1 -0
- package/dist/admin/routes/api/visitor/sessions.js +28 -0
- package/dist/admin/routes/api/visitor/stats/daily-page.d.ts +3 -0
- package/dist/admin/routes/api/visitor/stats/daily-page.d.ts.map +1 -0
- package/dist/admin/routes/api/visitor/stats/daily-page.js +24 -0
- package/dist/admin/routes/api/visitor/stats/ip-page.d.ts +3 -0
- package/dist/admin/routes/api/visitor/stats/ip-page.d.ts.map +1 -0
- package/dist/admin/routes/api/visitor/stats/ip-page.js +19 -0
- package/dist/admin/routes/api/visitor/stats/pv.d.ts +3 -0
- package/dist/admin/routes/api/visitor/stats/pv.d.ts.map +1 -0
- package/dist/admin/routes/api/visitor/stats/pv.js +22 -0
- package/dist/admin/routes/api/visitor/stats/uv.d.ts +3 -0
- package/dist/admin/routes/api/visitor/stats/uv.d.ts.map +1 -0
- package/dist/admin/routes/api/visitor/stats/uv.js +20 -0
- package/dist/admin/services/captcha.service.d.ts.map +1 -0
- package/dist/admin/services/geoip.service.d.ts.map +1 -0
- package/dist/{core/lib → admin}/services/geoip.service.js +1 -1
- package/dist/admin/services/index.d.ts.map +1 -0
- package/dist/{core/lib → admin}/services/inquiry.service.d.ts +1 -1
- package/dist/admin/services/inquiry.service.d.ts.map +1 -0
- package/dist/{core/lib → admin}/services/inquiry.service.js +1 -1
- package/dist/{core/lib → admin}/services/mailer.service.d.ts +1 -1
- package/dist/admin/services/mailer.service.d.ts.map +1 -0
- package/dist/{core/lib → admin}/services/mailer.service.js +3 -3
- package/dist/admin/types/inquiry.d.ts.map +1 -0
- package/dist/admin/types/visitor.d.ts.map +1 -0
- package/dist/admin/utils/api.d.ts.map +1 -0
- package/dist/admin/utils/request.d.ts.map +1 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/middlewares/api-guard.d.ts +0 -2
- package/dist/core/middlewares/api-guard.d.ts.map +1 -1
- package/dist/core/middlewares/api-guard.js +0 -1
- package/dist/core/middlewares/visitor-tracker.js +1 -1
- package/dist/core/utils/index.d.ts +0 -1
- package/dist/core/utils/index.d.ts.map +1 -1
- package/dist/core/utils/index.js +0 -1
- package/dist/core/utils/routeUrl.d.ts +3 -15
- package/dist/core/utils/routeUrl.d.ts.map +1 -1
- package/dist/core/utils/routeUrl.js +56 -66
- package/dist/route/index.d.ts +2 -1
- package/dist/route/index.d.ts.map +1 -1
- package/dist/route/index.js +2 -1
- package/dist/route/interfaces.d.ts +35 -23
- package/dist/route/interfaces.d.ts.map +1 -1
- package/dist/route/router.d.ts +16 -0
- package/dist/route/router.d.ts.map +1 -0
- package/dist/route/router.js +200 -0
- package/dist/route/setup.d.ts +15 -26
- package/dist/route/setup.d.ts.map +1 -1
- package/dist/route/setup.js +39 -31
- package/dist/route/slot.d.ts +1 -1
- package/dist/route/slot.d.ts.map +1 -1
- package/dist/route/utils.d.ts +3 -0
- package/dist/route/utils.d.ts.map +1 -0
- package/dist/route/utils.js +11 -0
- package/dist/strapi/cms/cms.d.ts +4 -4
- package/dist/strapi/cms/cms.d.ts.map +1 -1
- package/dist/strapi/cms/cms.js +25 -6
- package/dist/strapi/cms/common.d.ts +1 -4
- package/dist/strapi/cms/common.d.ts.map +1 -1
- package/dist/strapi/cms/common.js +58 -23
- package/dist/strapi/cms/components.d.ts +1 -15
- package/dist/strapi/cms/components.d.ts.map +1 -1
- package/dist/strapi/cms/components.js +54 -24
- package/dist/strapi/cms/content-types.d.ts +1 -30
- package/dist/strapi/cms/content-types.d.ts.map +1 -1
- package/dist/strapi/cms/content-types.js +53 -25
- package/dist/strapi/cms/core/base-singleton.d.ts +37 -0
- package/dist/strapi/cms/core/base-singleton.d.ts.map +1 -0
- package/dist/strapi/cms/core/base-singleton.js +71 -0
- package/dist/strapi/cms/core/utils.d.ts +21 -0
- package/dist/strapi/cms/core/utils.d.ts.map +1 -0
- package/dist/strapi/cms/core/utils.js +48 -0
- package/dist/strapi/cms/index.d.ts +4 -0
- package/dist/strapi/cms/index.d.ts.map +1 -1
- package/dist/strapi/cms/index.js +2 -0
- package/dist/strapi/cms/locales.d.ts +1 -11
- package/dist/strapi/cms/locales.d.ts.map +1 -1
- package/dist/strapi/cms/locales.js +54 -24
- package/dist/strapi/cms/managers/index.d.ts +9 -0
- package/dist/strapi/cms/managers/index.d.ts.map +1 -0
- package/dist/strapi/cms/managers/index.js +8 -0
- package/dist/strapi/cms/managers/initialization-state.d.ts +26 -0
- package/dist/strapi/cms/managers/initialization-state.d.ts.map +1 -0
- package/dist/strapi/cms/managers/initialization-state.js +52 -0
- package/dist/strapi/cms/menu.d.ts +0 -4
- package/dist/strapi/cms/menu.d.ts.map +1 -1
- package/dist/strapi/cms/menu.js +38 -14
- package/dist/strapi/cms/setup.d.ts +3 -2
- package/dist/strapi/cms/setup.d.ts.map +1 -1
- package/dist/strapi/cms/setup.js +10 -10
- package/dist/strapi/cms/site.d.ts +1 -4
- package/dist/strapi/cms/site.d.ts.map +1 -1
- package/dist/strapi/cms/site.js +58 -23
- package/dist/strapi/cms/translations.d.ts +1 -10
- package/dist/strapi/cms/translations.d.ts.map +1 -1
- package/dist/strapi/cms/translations.js +42 -24
- package/dist/strapi/cms/types/common.d.ts +5 -0
- package/dist/strapi/cms/types/common.d.ts.map +1 -0
- package/dist/strapi/cms/types/common.js +1 -0
- package/dist/strapi/cms/types/component.d.ts +16 -0
- package/dist/strapi/cms/types/component.d.ts.map +1 -0
- package/dist/strapi/cms/types/component.js +1 -0
- package/dist/strapi/cms/types/content-type.d.ts +31 -0
- package/dist/strapi/cms/types/content-type.d.ts.map +1 -0
- package/dist/strapi/cms/types/content-type.js +1 -0
- package/dist/strapi/cms/types/index.d.ts +8 -0
- package/dist/strapi/cms/types/index.d.ts.map +1 -0
- package/dist/strapi/cms/types/index.js +7 -0
- package/dist/strapi/cms/types/locale.d.ts +11 -0
- package/dist/strapi/cms/types/locale.d.ts.map +1 -0
- package/dist/strapi/cms/types/locale.js +1 -0
- package/dist/strapi/cms/types/menu.d.ts +5 -0
- package/dist/strapi/cms/types/menu.d.ts.map +1 -0
- package/dist/strapi/cms/types/menu.js +1 -0
- package/dist/strapi/cms/types/site.d.ts +5 -0
- package/dist/strapi/cms/types/site.d.ts.map +1 -0
- package/dist/strapi/cms/types/site.js +1 -0
- package/dist/strapi/cms/types/translation.d.ts +11 -0
- package/dist/strapi/cms/types/translation.d.ts.map +1 -0
- package/dist/strapi/cms/types/translation.js +1 -0
- package/dist/strapi/index.d.ts +0 -1
- package/dist/strapi/index.d.ts.map +1 -1
- package/dist/strapi/index.js +0 -1
- package/dist/strapi/routes/api/site/pages.d.ts +3 -0
- package/dist/strapi/routes/api/site/pages.d.ts.map +1 -0
- package/dist/strapi/{api/site.js → routes/api/site/pages.js} +49 -53
- package/dist/strapi/routes/api/site/refresh.d.ts +3 -0
- package/dist/strapi/routes/api/site/refresh.d.ts.map +1 -0
- package/dist/strapi/routes/api/site/refresh.js +5 -0
- package/dist/strapi/routes/robots.txt.d.ts +3 -0
- package/dist/strapi/routes/robots.txt.d.ts.map +1 -0
- package/dist/strapi/routes/robots.txt.js +14 -0
- package/dist/strapi/routes/sitemap/[apiID].xml.d.ts +3 -0
- package/dist/strapi/routes/sitemap/[apiID].xml.d.ts.map +1 -0
- package/dist/strapi/routes/sitemap/[apiID].xml.js +124 -0
- package/dist/strapi/routes/sitemap.xml.d.ts +3 -0
- package/dist/strapi/routes/sitemap.xml.d.ts.map +1 -0
- package/dist/strapi/routes/sitemap.xml.js +48 -0
- package/dist/strapi/routes/sitemap.xsl.d.ts +3 -0
- package/dist/strapi/routes/sitemap.xsl.d.ts.map +1 -0
- package/dist/strapi/routes/sitemap.xsl.js +14 -0
- package/package.json +1 -1
- package/dist/core/api/common.d.ts +0 -2
- package/dist/core/api/common.d.ts.map +0 -1
- package/dist/core/api/common.js +0 -38
- package/dist/core/api/inquiries.d.ts +0 -2
- package/dist/core/api/inquiries.d.ts.map +0 -1
- package/dist/core/api/inquiries.js +0 -116
- package/dist/core/api/inquiry.d.ts +0 -2
- package/dist/core/api/inquiry.d.ts.map +0 -1
- package/dist/core/api/inquiry.js +0 -33
- package/dist/core/api/visitor.d.ts +0 -2
- package/dist/core/api/visitor.d.ts.map +0 -1
- package/dist/core/api/visitor.js +0 -152
- package/dist/core/lib/constants/inquiry.d.ts.map +0 -1
- package/dist/core/lib/constants/visitor.d.ts.map +0 -1
- package/dist/core/lib/database/constants/database.d.ts.map +0 -1
- package/dist/core/lib/database/database.service.d.ts.map +0 -1
- package/dist/core/lib/database/index.d.ts.map +0 -1
- package/dist/core/lib/database/managers/sqlite.d.ts.map +0 -1
- package/dist/core/lib/database/managers/visitor-shard.d.ts.map +0 -1
- package/dist/core/lib/database/repositories/inquiry.repository.d.ts.map +0 -1
- package/dist/core/lib/database/repositories/visitor.repository.d.ts.map +0 -1
- package/dist/core/lib/database/schemas/inquiry.schema.d.ts.map +0 -1
- package/dist/core/lib/database/schemas/visitor.schema.d.ts.map +0 -1
- package/dist/core/lib/services/captcha.service.d.ts.map +0 -1
- package/dist/core/lib/services/geoip.service.d.ts.map +0 -1
- package/dist/core/lib/services/index.d.ts.map +0 -1
- package/dist/core/lib/services/inquiry.service.d.ts.map +0 -1
- package/dist/core/lib/services/mailer.service.d.ts.map +0 -1
- package/dist/core/lib/types/inquiry.d.ts.map +0 -1
- package/dist/core/lib/types/visitor.d.ts.map +0 -1
- package/dist/core/lib/utils/api.d.ts.map +0 -1
- package/dist/core/lib/utils/request.d.ts.map +0 -1
- package/dist/core/utils/params.d.ts +0 -5
- package/dist/core/utils/params.d.ts.map +0 -1
- package/dist/core/utils/params.js +0 -14
- package/dist/route/methods.d.ts +0 -28
- package/dist/route/methods.d.ts.map +0 -1
- package/dist/route/methods.js +0 -106
- package/dist/strapi/api/site.d.ts +0 -2
- package/dist/strapi/api/site.d.ts.map +0 -1
- package/dist/strapi/pages/sitemap/index.d.ts +0 -2
- package/dist/strapi/pages/sitemap/index.d.ts.map +0 -1
- package/dist/strapi/pages/sitemap/index.js +0 -50
- package/dist/strapi/pages/sitemap/list.d.ts +0 -2
- package/dist/strapi/pages/sitemap/list.d.ts.map +0 -1
- package/dist/strapi/pages/sitemap/list.js +0 -123
- package/dist/strapi/pages/sitemap/robots.d.ts +0 -2
- package/dist/strapi/pages/sitemap/robots.d.ts.map +0 -1
- package/dist/strapi/pages/sitemap/robots.js +0 -19
- package/dist/strapi/pages/sitemap/style.d.ts +0 -2
- package/dist/strapi/pages/sitemap/style.d.ts.map +0 -1
- package/dist/strapi/pages/sitemap/style.js +0 -17
- package/dist/strapi/route.d.ts +0 -3
- package/dist/strapi/route.d.ts.map +0 -1
- package/dist/strapi/route.js +0 -61
- /package/dist/{core/lib → admin}/constants/inquiry.d.ts +0 -0
- /package/dist/{core/lib → admin}/constants/inquiry.js +0 -0
- /package/dist/{core/lib → admin}/constants/visitor.d.ts +0 -0
- /package/dist/{core/lib → admin}/constants/visitor.js +0 -0
- /package/dist/{core/lib → admin}/database/constants/database.d.ts +0 -0
- /package/dist/{core/lib → admin}/database/database.service.d.ts +0 -0
- /package/dist/{core/lib → admin}/database/database.service.js +0 -0
- /package/dist/{core/lib → admin}/database/index.d.ts +0 -0
- /package/dist/{core/lib → admin}/database/index.js +0 -0
- /package/dist/{core/lib → admin}/database/managers/sqlite.d.ts +0 -0
- /package/dist/{core/lib → admin}/database/schemas/inquiry.schema.d.ts +0 -0
- /package/dist/{core/lib → admin}/database/schemas/inquiry.schema.js +0 -0
- /package/dist/{core/lib → admin}/database/schemas/visitor.schema.d.ts +0 -0
- /package/dist/{core/lib → admin}/database/schemas/visitor.schema.js +0 -0
- /package/dist/{core/lib → admin}/services/captcha.service.d.ts +0 -0
- /package/dist/{core/lib → admin}/services/captcha.service.js +0 -0
- /package/dist/{core/lib → admin}/services/geoip.service.d.ts +0 -0
- /package/dist/{core/lib → admin}/services/index.d.ts +0 -0
- /package/dist/{core/lib → admin}/services/index.js +0 -0
- /package/dist/{core/lib → admin}/types/inquiry.d.ts +0 -0
- /package/dist/{core/lib → admin}/types/inquiry.js +0 -0
- /package/dist/{core/lib → admin}/types/visitor.d.ts +0 -0
- /package/dist/{core/lib → admin}/types/visitor.js +0 -0
- /package/dist/{core/lib → admin}/utils/api.d.ts +0 -0
- /package/dist/{core/lib → admin}/utils/api.js +0 -0
- /package/dist/{core/lib → admin}/utils/request.d.ts +0 -0
- /package/dist/{core/lib → admin}/utils/request.js +0 -0
- /package/dist/strapi/{pages/sitemap/list.xml → routes/sitemap/[apiID].xml} +0 -0
- /package/dist/strapi/{pages → routes}/sitemap/robots.txt +0 -0
- /package/dist/strapi/{pages/sitemap/index.xml → routes/sitemap/sitemap.xml} +0 -0
- /package/dist/strapi/{pages/sitemap/style.xsl → routes/sitemap/sitemap.xsl} +0 -0
package/dist/route/methods.js
DELETED
|
@@ -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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/strapi/api/site.ts"],"names":[],"mappings":""}
|
|
@@ -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 +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 +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 +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
|
-
});
|
package/dist/strapi/route.d.ts
DELETED
|
@@ -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"}
|
package/dist/strapi/route.js
DELETED
|
@@ -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
|
|
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
|