edgepress 2026.10.12 → 2026.10.13

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 (57) hide show
  1. package/README.md +12 -2
  2. package/config.yml +171 -171
  3. package/content/assets/edgepress/brand/sources/export-manifest.json +181 -181
  4. package/content/assets/edgepress-markdown-guide.svg +21 -21
  5. package/content/guides/markdown-media.md +38 -0
  6. package/content/guides/product-demos.md +30 -30
  7. package/content/pages/deployment/en.json +1 -1
  8. package/content/posts/2026-09-24-edgepress-release-2026-9-1/en.md +1 -1
  9. package/content/posts/2026-09-24-edgepress-release-2026-9-1/zh-cn.md +1 -1
  10. package/languages/base/en.json +98 -98
  11. package/languages/packs/zh-CN.json +98 -98
  12. package/package.json +90 -90
  13. package/src/assets.js +187 -186
  14. package/src/browser-audit.js +158 -158
  15. package/src/build.js +293 -291
  16. package/src/cli.js +364 -364
  17. package/src/content.js +233 -233
  18. package/src/data-saver.js +3 -3
  19. package/src/generators.js +414 -420
  20. package/src/i18n.js +86 -86
  21. package/src/markdown.js +195 -160
  22. package/src/page-check.js +1 -1
  23. package/src/plugin-api.js +77 -77
  24. package/src/report-visuals.js +642 -642
  25. package/src/revision-cards.js +30 -30
  26. package/src/rss.js +100 -0
  27. package/src/theme.js +4 -4
  28. package/src/video-metadata.js +36 -0
  29. package/static/edgepress/fonts/faces.css +2217 -2217
  30. package/static/edgepress/media-viewer.js +67 -10
  31. package/static/edgepress/project-demo.js +83 -83
  32. package/static/edgepress/search.js +84 -84
  33. package/tests/assets-runtime.test.mjs +26 -26
  34. package/tests/audit.test.mjs +142 -142
  35. package/tests/brand-regression.test.mjs +110 -110
  36. package/tests/document-package.test.mjs +2 -2
  37. package/tests/embed-syntax.test.mjs +68 -68
  38. package/tests/image-viewer.test.mjs +36 -36
  39. package/tests/markdown-media.test.mjs +119 -0
  40. package/tests/oembed-layout.test.mjs +6 -1
  41. package/tests/project-demo.test.mjs +73 -73
  42. package/tests/release-version.test.mjs +28 -0
  43. package/tests/rss.test.mjs +54 -0
  44. package/tests/video-metadata.test.mjs +28 -0
  45. package/tests/writing.test.mjs +83 -83
  46. package/themes/atelier/assets/style.css +340 -340
  47. package/themes/default/assets/style.css +371 -371
  48. package/themes/default/layouts/partials/head.html +1 -1
  49. package/themes/folio/assets/style.css +515 -515
  50. package/themes/folio/theme.json +5 -5
  51. package/themes/signal/assets/style.css +332 -332
  52. package/tools/README.md +10 -10
  53. package/tools/assets/generate-brand-assets.py +160 -160
  54. package/tools/assets/video-preview.mjs +15 -0
  55. package/tools/recordings/demo-workbench.mjs +53 -53
  56. package/tools/recordings/desktop-recording.mjs +70 -70
  57. package/tools/recordings/vm-desktop.mjs +59 -59
@@ -26,106 +26,106 @@
26
26
  "documentViewerError": "Preview unavailable. Check the file, access and CORS settings.",
27
27
  "documentViewerPage": "Page",
28
28
  "documentViewerSheet": "Worksheet",
29
- "home": "Home",
30
- "archives": "Journal",
31
- "noPosts": "No posts yet",
32
- "newer": "Newer posts",
33
- "older": "Older posts",
34
- "tags": "Tags",
35
- "tag": "Tag",
36
- "notFound": "Page not found",
37
- "notFoundText": "The page you requested does not exist.",
38
- "forbidden": "Access denied",
39
- "forbiddenText": "You do not have permission to access this page.",
40
- "returnHome": "Return home",
41
- "allPosts": "All journal entries",
42
- "searchPosts": "Search articles",
43
- "searchIntro": "Search the Markdown articles published on this site. Search runs locally in your browser.",
44
- "searchLabel": "Search articles",
45
- "searchButton": "Search",
46
- "searchHint": "",
47
- "searchPrompt": "",
48
- "searchNeedsJavaScript": "Article search needs JavaScript enabled. The search index stays on this site.",
49
- "searchNoResults": "No matching articles.",
50
- "searchResults": "Matching articles",
51
- "searchResultCount": "Matching articles: {count}.",
52
- "markdownTaskComplete": "Task complete",
53
- "markdownTaskIncomplete": "Task incomplete",
54
- "postContents": "Contents",
55
- "closeContents": "Close contents",
56
- "feed": "Atom feed",
57
- "languageName": "English",
58
- "mainNavigationLabel": "Main navigation",
59
- "footerNavigationLabel": "Footer navigation",
60
- "languageLabel": "Language",
61
- "skipToContent": "Skip to content",
62
- "pagination": "Pagination",
63
- "pageNumber": "Page {page}",
64
- "pages": "Project pages",
65
- "latestPosts": "Latest posts",
66
- "postAuthor": "By {author}",
67
- "privacySettings": "Privacy settings",
68
- "privacyNotice": "Privacy choices",
69
- "privacyIntro": "Optional services stay off until you choose.",
70
- "acceptOptional": "Allow all",
71
- "rejectOptional": "Reject optional",
72
- "savePreferences": "Save choices",
73
- "optionalServices": "Optional services",
74
- "noIntegrations": "No optional services are active.",
75
- "privacyPolicy": "Privacy policy",
76
- "privacyController": "Operator",
77
- "privacyContact": "Contact",
78
- "servicePurpose": "Purpose",
79
- "serviceDataCategories": "Data used",
80
- "serviceRecipient": "Recipient",
81
- "serviceRetention": "Retention",
82
- "servicePrivacyDetails": "Privacy information",
83
- "servicePrivacyLink": "Open policy",
84
- "reviewDetails": "Details",
85
- "essentialStorage": "Choice saved on this device for up to {days} days.",
86
- "consentReload": "Your choice was saved. Reloading to apply the updated settings.",
87
- "agentSummary": "Technical practice, research, personal commentary, and project updates from JS.GRIPE.",
88
- "closePrivacy": "Close settings",
89
- "consentStoredOnDevice": "This device",
90
- "postStarter": "Write your first paragraph here. Use ## for sections, lists, links, and fenced code blocks as needed.",
91
- "postCreated": "Created {file}",
92
- "postNextSteps": "Open this file and replace the text after the closing --- with Markdown. The title, date, and language are already set.",
93
- "postPreview": "Preview with npm run dev. Build with npm run build; publish through your existing deployment workflow.",
94
- "postReadingTime": "About {minutes} min read",
95
- "categoryBlog": "Blog",
96
- "categoryUncategorized": "Uncategorized",
97
- "allCategoryPosts": "All articles in this category",
98
- "postPinned": "Pinned",
99
- "postUpdated": "Updated",
100
- "postChanges": "Most recent changes",
101
- "loadMedia": "Load media",
102
- "embedUnavailable": "Media is temporarily unavailable.",
103
- "embedNeedsConsent": "This media is provided by {service}. It stays unloaded until you allow this service and request it.",
104
- "embedReady": "You have allowed {service}. Media loads automatically when it comes into view.",
105
- "embedLoading": "Loading media from {service}…",
106
- "embedLoaded": "Media from {service} is loaded.",
107
- "embedDisabled": "The site has disabled {service}. This media has not been loaded.",
108
- "imageViewerOpenImage": "Enlarge image",
109
- "imageViewerCloseImage": "Close image",
110
- "imageViewerZoomIn": "Zoom in",
111
- "imageViewerZoomOut": "Zoom out",
112
- "imageViewerSaveOriginal": "Save original",
113
- "imageViewerRetryMedia": "Retry loading",
114
- "imageViewerLoading": "Loading…",
115
- "imageViewerImageUnavailable": "This image is unavailable.",
116
- "postChangeBefore": "Previously",
117
- "postChangeAfter": "Now",
118
- "postChangeAdded": "Added",
119
- "postChangeRemoved": "Removed",
120
- "demoPlay": "Play demo",
121
- "demoPause": "Pause demo",
122
- "demoReplay": "Replay demo",
123
- "demoError": "The walkthrough could not load. Please try again.",
124
- "demoResume": "Continue demo",
125
- "demoLoading": "Loading demo…",
29
+ "home": "Home",
30
+ "archives": "Journal",
31
+ "noPosts": "No posts yet",
32
+ "newer": "Newer posts",
33
+ "older": "Older posts",
34
+ "tags": "Tags",
35
+ "tag": "Tag",
36
+ "notFound": "Page not found",
37
+ "notFoundText": "The page you requested does not exist.",
38
+ "forbidden": "Access denied",
39
+ "forbiddenText": "You do not have permission to access this page.",
40
+ "returnHome": "Return home",
41
+ "allPosts": "All journal entries",
42
+ "searchPosts": "Search articles",
43
+ "searchIntro": "Search the Markdown articles published on this site. Search runs locally in your browser.",
44
+ "searchLabel": "Search articles",
45
+ "searchButton": "Search",
46
+ "searchHint": "",
47
+ "searchPrompt": "",
48
+ "searchNeedsJavaScript": "Article search needs JavaScript enabled. The search index stays on this site.",
49
+ "searchNoResults": "No matching articles.",
50
+ "searchResults": "Matching articles",
51
+ "searchResultCount": "Matching articles: {count}.",
52
+ "markdownTaskComplete": "Task complete",
53
+ "markdownTaskIncomplete": "Task incomplete",
54
+ "postContents": "Contents",
55
+ "closeContents": "Close contents",
56
+ "feed": "Atom feed",
57
+ "languageName": "English",
58
+ "mainNavigationLabel": "Main navigation",
59
+ "footerNavigationLabel": "Footer navigation",
60
+ "languageLabel": "Language",
61
+ "skipToContent": "Skip to content",
62
+ "pagination": "Pagination",
63
+ "pageNumber": "Page {page}",
64
+ "pages": "Project pages",
65
+ "latestPosts": "Latest posts",
66
+ "postAuthor": "By {author}",
67
+ "privacySettings": "Privacy settings",
68
+ "privacyNotice": "Privacy choices",
69
+ "privacyIntro": "Optional services stay off until you choose.",
70
+ "acceptOptional": "Allow all",
71
+ "rejectOptional": "Reject optional",
72
+ "savePreferences": "Save choices",
73
+ "optionalServices": "Optional services",
74
+ "noIntegrations": "No optional services are active.",
75
+ "privacyPolicy": "Privacy policy",
76
+ "privacyController": "Operator",
77
+ "privacyContact": "Contact",
78
+ "servicePurpose": "Purpose",
79
+ "serviceDataCategories": "Data used",
80
+ "serviceRecipient": "Recipient",
81
+ "serviceRetention": "Retention",
82
+ "servicePrivacyDetails": "Privacy information",
83
+ "servicePrivacyLink": "Open policy",
84
+ "reviewDetails": "Details",
85
+ "essentialStorage": "Choice saved on this device for up to {days} days.",
86
+ "consentReload": "Your choice was saved. Reloading to apply the updated settings.",
87
+ "agentSummary": "Technical practice, research, personal commentary, and project updates from JS.GRIPE.",
88
+ "closePrivacy": "Close settings",
89
+ "consentStoredOnDevice": "This device",
90
+ "postStarter": "Write your first paragraph here. Use ## for sections, lists, links, and fenced code blocks as needed.",
91
+ "postCreated": "Created {file}",
92
+ "postNextSteps": "Open this file and replace the text after the closing --- with Markdown. The title, date, and language are already set.",
93
+ "postPreview": "Preview with npm run dev. Build with npm run build; publish through your existing deployment workflow.",
94
+ "postReadingTime": "About {minutes} min read",
95
+ "categoryBlog": "Blog",
96
+ "categoryUncategorized": "Uncategorized",
97
+ "allCategoryPosts": "All articles in this category",
98
+ "postPinned": "Pinned",
99
+ "postUpdated": "Updated",
100
+ "postChanges": "Most recent changes",
101
+ "loadMedia": "Load media",
102
+ "embedUnavailable": "Media is temporarily unavailable.",
103
+ "embedNeedsConsent": "This media is provided by {service}. It stays unloaded until you allow this service and request it.",
104
+ "embedReady": "You have allowed {service}. Media loads automatically when it comes into view.",
105
+ "embedLoading": "Loading media from {service}…",
106
+ "embedLoaded": "Media from {service} is loaded.",
107
+ "embedDisabled": "The site has disabled {service}. This media has not been loaded.",
108
+ "imageViewerOpenImage": "Enlarge image",
109
+ "imageViewerCloseImage": "Close image",
110
+ "imageViewerZoomIn": "Zoom in",
111
+ "imageViewerZoomOut": "Zoom out",
112
+ "imageViewerSaveOriginal": "Save original",
113
+ "imageViewerRetryMedia": "Retry loading",
114
+ "imageViewerLoading": "Loading…",
115
+ "imageViewerImageUnavailable": "This image is unavailable.",
116
+ "postChangeBefore": "Previously",
117
+ "postChangeAfter": "Now",
118
+ "postChangeAdded": "Added",
119
+ "postChangeRemoved": "Removed",
120
+ "demoPlay": "Play demo",
121
+ "demoPause": "Pause demo",
122
+ "demoReplay": "Replay demo",
123
+ "demoError": "The walkthrough could not load. Please try again.",
124
+ "demoResume": "Continue demo",
125
+ "demoLoading": "Loading demo…",
126
126
  "demoSeek": "Demo progress",
127
127
  "externalLinkTitle": "You're leaving this site",
128
128
  "externalLinkDescription": "This link opens a different website, with its own content and privacy practices. Continue only if you want to visit it.",
129
129
  "externalLinkBack": "Return",
130
130
  "externalLinkContinue": "Continue to website"
131
- }
131
+ }
@@ -26,106 +26,106 @@
26
26
  "documentViewerError": "无法预览。请检查文件、访问权限和跨域设置。",
27
27
  "documentViewerPage": "页码",
28
28
  "documentViewerSheet": "工作表",
29
- "home": "首页",
30
- "archives": "见闻",
31
- "noPosts": "还没有文章",
32
- "newer": "较新文章",
33
- "older": "较早文章",
34
- "tags": "标签",
35
- "tag": "标签",
36
- "notFound": "页面不存在",
37
- "notFoundText": "你访问的页面不存在。",
38
- "forbidden": "无权访问",
39
- "forbiddenText": "你没有权限访问此页面。",
40
- "returnHome": "返回首页",
41
- "allPosts": "全部见闻",
42
- "searchPosts": "搜索文章",
43
- "searchIntro": "搜索此网站发布的 Markdown 文章。搜索在你的浏览器本地运行。",
44
- "searchLabel": "搜索文章",
45
- "searchButton": "搜索",
46
- "searchHint": "",
47
- "searchPrompt": "",
48
- "searchNeedsJavaScript": "文章搜索需要启用 JavaScript。搜索索引保存在此网站。",
49
- "searchNoResults": "没有找到匹配的文章。",
50
- "searchResults": "匹配的文章",
51
- "searchResultCount": "匹配文章数:{count}。",
52
- "markdownTaskComplete": "任务已完成",
53
- "markdownTaskIncomplete": "任务未完成",
54
- "postContents": "文章目录",
55
- "closeContents": "关闭目录",
56
- "feed": "Atom 订阅",
57
- "languageName": "简体中文",
58
- "mainNavigationLabel": "主导航",
59
- "footerNavigationLabel": "页脚导航",
60
- "languageLabel": "语言",
61
- "skipToContent": "跳转到正文",
62
- "pagination": "分页导航",
63
- "pageNumber": "第 {page} 页",
64
- "pages": "项目文档",
65
- "latestPosts": "最新文章",
66
- "postAuthor": "作者:{author}",
67
- "privacySettings": "隐私设置",
68
- "privacyNotice": "隐私选择",
69
- "privacyIntro": "可选服务仅在你选择后启用。",
70
- "acceptOptional": "全部允许",
71
- "rejectOptional": "拒绝可选服务",
72
- "savePreferences": "保存选择",
73
- "optionalServices": "可选服务",
74
- "noIntegrations": "当前没有启用可选服务。",
75
- "privacyPolicy": "隐私政策",
76
- "privacyController": "运营者",
77
- "privacyContact": "联系邮箱",
78
- "servicePurpose": "用途",
79
- "serviceDataCategories": "涉及的数据",
80
- "serviceRecipient": "接收方",
81
- "serviceRetention": "保留期限",
82
- "servicePrivacyDetails": "隐私说明",
83
- "servicePrivacyLink": "查看政策",
84
- "reviewDetails": "详情",
85
- "essentialStorage": "选择保存在此设备,最长 {days} 天。",
86
- "consentReload": "选择已保存,正在重新载入以应用设置。",
87
- "agentSummary": "EdgePress 网站构建器的项目指南与参考文档。",
88
- "closePrivacy": "关闭设置",
89
- "consentStoredOnDevice": "此设备",
90
- "postStarter": "在这里写第一段正文。需要时可使用 ## 小标题、列表、链接和代码块。",
91
- "postCreated": "已创建 {file}",
92
- "postNextSteps": "打开这个文件,在第二个 --- 后用 Markdown 写正文。标题、日期和语言已经填好。",
93
- "postPreview": "运行 npm run dev 预览,npm run build 构建,再通过已有部署流程发布。",
94
- "postReadingTime": "约 {minutes} 分钟阅读",
95
- "categoryBlog": "博客",
96
- "categoryUncategorized": "未分类",
97
- "allCategoryPosts": "此分类全部文章",
98
- "postPinned": "置顶",
99
- "postUpdated": "更新于",
100
- "postChanges": "最近一次变动",
101
- "loadMedia": "加载媒体",
102
- "embedUnavailable": "媒体暂时不可用。",
103
- "embedNeedsConsent": "此媒体由 {service} 提供。你同意此服务并请求查看后才会加载,当前尚未连接平台。",
104
- "embedReady": "你已同意 {service}。内容进入画面时会自动加载。",
105
- "embedLoading": "正在加载 {service} 媒体…",
106
- "embedLoaded": "已加载 {service} 媒体。",
107
- "embedDisabled": "本站已关闭 {service} 服务,此媒体未加载。",
108
- "imageViewerOpenImage": "放大图片",
109
- "imageViewerCloseImage": "关闭图片",
110
- "imageViewerZoomIn": "放大",
111
- "imageViewerZoomOut": "缩小",
112
- "imageViewerSaveOriginal": "保存原图",
113
- "imageViewerRetryMedia": "重新加载",
114
- "imageViewerLoading": "加载中…",
115
- "imageViewerImageUnavailable": "图片已删除或暂时无法加载。",
116
- "postChangeBefore": "修改前",
117
- "postChangeAfter": "修改后",
118
- "postChangeAdded": "新增内容",
119
- "postChangeRemoved": "移除内容",
120
- "demoPlay": "播放演示",
121
- "demoPause": "暂停演示",
122
- "demoReplay": "重新播放",
123
- "demoError": "演示暂时无法加载,请重试。",
124
- "demoResume": "继续播放",
125
- "demoLoading": "正在加载演示…",
29
+ "home": "首页",
30
+ "archives": "见闻",
31
+ "noPosts": "还没有文章",
32
+ "newer": "较新文章",
33
+ "older": "较早文章",
34
+ "tags": "标签",
35
+ "tag": "标签",
36
+ "notFound": "页面不存在",
37
+ "notFoundText": "你访问的页面不存在。",
38
+ "forbidden": "无权访问",
39
+ "forbiddenText": "你没有权限访问此页面。",
40
+ "returnHome": "返回首页",
41
+ "allPosts": "全部见闻",
42
+ "searchPosts": "搜索文章",
43
+ "searchIntro": "搜索此网站发布的 Markdown 文章。搜索在你的浏览器本地运行。",
44
+ "searchLabel": "搜索文章",
45
+ "searchButton": "搜索",
46
+ "searchHint": "",
47
+ "searchPrompt": "",
48
+ "searchNeedsJavaScript": "文章搜索需要启用 JavaScript。搜索索引保存在此网站。",
49
+ "searchNoResults": "没有找到匹配的文章。",
50
+ "searchResults": "匹配的文章",
51
+ "searchResultCount": "匹配文章数:{count}。",
52
+ "markdownTaskComplete": "任务已完成",
53
+ "markdownTaskIncomplete": "任务未完成",
54
+ "postContents": "文章目录",
55
+ "closeContents": "关闭目录",
56
+ "feed": "Atom 订阅",
57
+ "languageName": "简体中文",
58
+ "mainNavigationLabel": "主导航",
59
+ "footerNavigationLabel": "页脚导航",
60
+ "languageLabel": "语言",
61
+ "skipToContent": "跳转到正文",
62
+ "pagination": "分页导航",
63
+ "pageNumber": "第 {page} 页",
64
+ "pages": "项目文档",
65
+ "latestPosts": "最新文章",
66
+ "postAuthor": "作者:{author}",
67
+ "privacySettings": "隐私设置",
68
+ "privacyNotice": "隐私选择",
69
+ "privacyIntro": "可选服务仅在你选择后启用。",
70
+ "acceptOptional": "全部允许",
71
+ "rejectOptional": "拒绝可选服务",
72
+ "savePreferences": "保存选择",
73
+ "optionalServices": "可选服务",
74
+ "noIntegrations": "当前没有启用可选服务。",
75
+ "privacyPolicy": "隐私政策",
76
+ "privacyController": "运营者",
77
+ "privacyContact": "联系邮箱",
78
+ "servicePurpose": "用途",
79
+ "serviceDataCategories": "涉及的数据",
80
+ "serviceRecipient": "接收方",
81
+ "serviceRetention": "保留期限",
82
+ "servicePrivacyDetails": "隐私说明",
83
+ "servicePrivacyLink": "查看政策",
84
+ "reviewDetails": "详情",
85
+ "essentialStorage": "选择保存在此设备,最长 {days} 天。",
86
+ "consentReload": "选择已保存,正在重新载入以应用设置。",
87
+ "agentSummary": "EdgePress 网站构建器的项目指南与参考文档。",
88
+ "closePrivacy": "关闭设置",
89
+ "consentStoredOnDevice": "此设备",
90
+ "postStarter": "在这里写第一段正文。需要时可使用 ## 小标题、列表、链接和代码块。",
91
+ "postCreated": "已创建 {file}",
92
+ "postNextSteps": "打开这个文件,在第二个 --- 后用 Markdown 写正文。标题、日期和语言已经填好。",
93
+ "postPreview": "运行 npm run dev 预览,npm run build 构建,再通过已有部署流程发布。",
94
+ "postReadingTime": "约 {minutes} 分钟阅读",
95
+ "categoryBlog": "博客",
96
+ "categoryUncategorized": "未分类",
97
+ "allCategoryPosts": "此分类全部文章",
98
+ "postPinned": "置顶",
99
+ "postUpdated": "更新于",
100
+ "postChanges": "最近一次变动",
101
+ "loadMedia": "加载媒体",
102
+ "embedUnavailable": "媒体暂时不可用。",
103
+ "embedNeedsConsent": "此媒体由 {service} 提供。你同意此服务并请求查看后才会加载,当前尚未连接平台。",
104
+ "embedReady": "你已同意 {service}。内容进入画面时会自动加载。",
105
+ "embedLoading": "正在加载 {service} 媒体…",
106
+ "embedLoaded": "已加载 {service} 媒体。",
107
+ "embedDisabled": "本站已关闭 {service} 服务,此媒体未加载。",
108
+ "imageViewerOpenImage": "放大图片",
109
+ "imageViewerCloseImage": "关闭图片",
110
+ "imageViewerZoomIn": "放大",
111
+ "imageViewerZoomOut": "缩小",
112
+ "imageViewerSaveOriginal": "保存原图",
113
+ "imageViewerRetryMedia": "重新加载",
114
+ "imageViewerLoading": "加载中…",
115
+ "imageViewerImageUnavailable": "图片已删除或暂时无法加载。",
116
+ "postChangeBefore": "修改前",
117
+ "postChangeAfter": "修改后",
118
+ "postChangeAdded": "新增内容",
119
+ "postChangeRemoved": "移除内容",
120
+ "demoPlay": "播放演示",
121
+ "demoPause": "暂停演示",
122
+ "demoReplay": "重新播放",
123
+ "demoError": "演示暂时无法加载,请重试。",
124
+ "demoResume": "继续播放",
125
+ "demoLoading": "正在加载演示…",
126
126
  "demoSeek": "演示进度",
127
127
  "externalLinkTitle": "即将离开本站",
128
128
  "externalLinkDescription": "这个链接指向其他网站,其内容与隐私政策由对方负责。是否继续由你决定。",
129
129
  "externalLinkBack": "返回",
130
130
  "externalLinkContinue": "继续前往"
131
- }
131
+ }
package/package.json CHANGED
@@ -1,90 +1,90 @@
1
- {
2
- "name": "edgepress",
3
- "license": "MIT",
4
- "version": "2026.10.12",
5
- "description": "Static websites from Markdown and editable pages, with themes, consent-controlled embeds and readable article updates.",
6
- "type": "module",
7
- "bin": {
8
- "edgepress": "src/cli.js"
9
- },
10
- "files": [
11
- "content",
12
- "languages",
13
- "plugins",
14
- "src",
15
- "schemas",
16
- "static",
17
- "themes",
18
- "config.yml",
19
- "edgepress.config.mjs",
20
- "project-compatibility.json",
21
- "wrangler.jsonc",
22
- "README.md",
23
- "vercel.json",
24
- "edgeone.json",
25
- "esa.jsonc",
26
- "netlify.toml",
27
- "tests",
28
- "tools/assets",
29
- "tools/recordings",
30
- "tools/verification"
31
- ],
32
- "repository": {
33
- "type": "git",
34
- "url": "https://github.com/jsw-teams/edgepress.git"
35
- },
36
- "homepage": "https://github.com/jsw-teams/edgepress#readme",
37
- "keywords": [
38
- "static-site-generator",
39
- "cloudflare-workers",
40
- "markdown",
41
- "website-builder",
42
- "accessibility"
43
- ],
44
- "engines": {
45
- "node": ">=22.12.0"
46
- },
47
- "scripts": {
48
- "new": "node src/cli.js new",
49
- "build": "node src/cli.js build",
50
- "generate": "node src/cli.js generate",
51
- "dev": "node src/cli.js server",
52
- "preview": "node src/cli.js server",
53
- "deploy": "node src/cli.js deploy",
54
- "clean": "node src/cli.js clean",
55
- "check": "node src/cli.js check",
56
- "doctor": "node src/cli.js doctor",
57
- "iterate": "node src/cli.js iterate",
58
- "security:check": "node src/cli.js security",
59
- "test": "node --test --test-concurrency=2 tests/*.test.mjs",
60
- "icons:sync": "node tools/assets/sync-icons.mjs",
61
- "deploy:cloudflare": "node src/cli.js deploy cloudflare",
62
- "deploy:vercel": "node src/cli.js deploy vercel",
63
- "deploy:edgeone": "node src/cli.js deploy edgeone",
64
- "deploy:esa": "node src/cli.js deploy esa",
65
- "deploy:netlify": "node src/cli.js deploy netlify",
66
- "fonts:sync": "node tools/assets/sync-fonts.mjs"
67
- },
68
- "dependencies": {
69
- "@jsw-teams/document-viewer": "https://codeload.github.com/jsw-teams/document-viewer/tar.gz/ab21d0ee9c078d084b2abee373ffad302928978c",
70
- "@jsw-teams/media-viewer": "https://codeload.github.com/jsw-teams/media-viewer/tar.gz/158ca150b221b4da0058b61d87c8d3ca787ebf25",
71
- "esbuild": "^0.28.2",
72
- "htmlparser2": "^12.0.0",
73
- "image-size": "^2.0.4",
74
- "marked": "^18.0.13",
75
- "postcss": "^8.5.15",
76
- "sanitize-html": "^2.17.7",
77
- "yaml": "^2.9.1"
78
- },
79
- "overrides": {
80
- "@file-viewer/doc": {
81
- "dompurify": "3.4.16"
82
- }
83
- },
84
- "devDependencies": {
85
- "lucide-static": "1.52.0",
86
- "playwright": "^1.63.0",
87
- "vscode-json-languageservice": "^6.0.0-next.3",
88
- "wrangler": "^4.149.0"
89
- }
90
- }
1
+ {
2
+ "name": "edgepress",
3
+ "license": "MIT",
4
+ "version": "2026.10.13",
5
+ "description": "Static websites from Markdown and editable pages, with themes, consent-controlled embeds and readable article updates.",
6
+ "type": "module",
7
+ "bin": {
8
+ "edgepress": "src/cli.js"
9
+ },
10
+ "files": [
11
+ "content",
12
+ "languages",
13
+ "plugins",
14
+ "src",
15
+ "schemas",
16
+ "static",
17
+ "themes",
18
+ "config.yml",
19
+ "edgepress.config.mjs",
20
+ "project-compatibility.json",
21
+ "wrangler.jsonc",
22
+ "README.md",
23
+ "vercel.json",
24
+ "edgeone.json",
25
+ "esa.jsonc",
26
+ "netlify.toml",
27
+ "tests",
28
+ "tools/assets",
29
+ "tools/recordings",
30
+ "tools/verification"
31
+ ],
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/jsw-teams/edgepress.git"
35
+ },
36
+ "homepage": "https://github.com/jsw-teams/edgepress#readme",
37
+ "keywords": [
38
+ "static-site-generator",
39
+ "cloudflare-workers",
40
+ "markdown",
41
+ "website-builder",
42
+ "accessibility"
43
+ ],
44
+ "engines": {
45
+ "node": ">=22.12.0"
46
+ },
47
+ "scripts": {
48
+ "new": "node src/cli.js new",
49
+ "build": "node src/cli.js build",
50
+ "generate": "node src/cli.js generate",
51
+ "dev": "node src/cli.js server",
52
+ "preview": "node src/cli.js server",
53
+ "deploy": "node src/cli.js deploy",
54
+ "clean": "node src/cli.js clean",
55
+ "check": "node src/cli.js check",
56
+ "doctor": "node src/cli.js doctor",
57
+ "iterate": "node src/cli.js iterate",
58
+ "security:check": "node src/cli.js security",
59
+ "test": "node --test --test-concurrency=2 tests/*.test.mjs",
60
+ "icons:sync": "node tools/assets/sync-icons.mjs",
61
+ "deploy:cloudflare": "node src/cli.js deploy cloudflare",
62
+ "deploy:vercel": "node src/cli.js deploy vercel",
63
+ "deploy:edgeone": "node src/cli.js deploy edgeone",
64
+ "deploy:esa": "node src/cli.js deploy esa",
65
+ "deploy:netlify": "node src/cli.js deploy netlify",
66
+ "fonts:sync": "node tools/assets/sync-fonts.mjs"
67
+ },
68
+ "dependencies": {
69
+ "@jsw-teams/document-viewer": "https://codeload.github.com/jsw-teams/document-viewer/tar.gz/ab21d0ee9c078d084b2abee373ffad302928978c",
70
+ "@jsw-teams/media-viewer": "https://codeload.github.com/jsw-teams/media-viewer/tar.gz/12eb8983c2df1eabb3aaece44b232c56b4a9e1fe",
71
+ "esbuild": "^0.28.2",
72
+ "htmlparser2": "^12.0.0",
73
+ "image-size": "^2.0.4",
74
+ "marked": "^18.0.13",
75
+ "postcss": "^8.5.15",
76
+ "sanitize-html": "^2.18.1",
77
+ "yaml": "^2.9.1"
78
+ },
79
+ "overrides": {
80
+ "@file-viewer/doc": {
81
+ "dompurify": "3.4.17"
82
+ }
83
+ },
84
+ "devDependencies": {
85
+ "lucide-static": "1.55.0",
86
+ "playwright": "^1.63.0",
87
+ "vscode-json-languageservice": "^6.0.0-next.3",
88
+ "wrangler": "^4.149.0"
89
+ }
90
+ }