@chronoter/main 0.1.4 → 0.1.5

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/cli.js CHANGED
@@ -3,7 +3,7 @@ import ignore from 'ignore';
3
3
  import * as fs from 'fs/promises';
4
4
  import { readFile } from 'fs/promises';
5
5
  import * as path from 'path';
6
- import { dirname, resolve, join, relative, extname, basename } from 'path';
6
+ import { dirname, resolve, join, relative, extname, basename, normalize, sep } from 'path';
7
7
  import { visit } from 'unist-util-visit';
8
8
  import { compile } from '@mdx-js/mdx';
9
9
  import matter from 'gray-matter';
@@ -589,7 +589,28 @@ var init_routing_middleware = __esm({
589
589
  req.chronoterRoute = route;
590
590
  }
591
591
  const templatePath = __dirname$1.endsWith("dist") ? resolve(__dirname$1, "server/templates/index.html") : resolve(__dirname$1, "templates/index.html");
592
- const html = await readFile(templatePath, "utf-8");
592
+ let html = await readFile(templatePath, "utf-8");
593
+ const normalizedDirname = normalize(__dirname$1);
594
+ const isProduction = normalizedDirname.includes(`${sep}dist${sep}`) || normalizedDirname.endsWith(`${sep}dist`);
595
+ if (isProduction) {
596
+ html = html.replace(
597
+ "<!--__CHRONOTER_STYLES__-->",
598
+ '<link rel="stylesheet" href="/server/client/main.css" />'
599
+ );
600
+ html = html.replace(
601
+ "<!--__CHRONOTER_SCRIPTS__-->",
602
+ '<script type="module" src="/server/client/main.js"></script>'
603
+ );
604
+ } else {
605
+ html = html.replace("<!--__CHRONOTER_STYLES__-->", "");
606
+ html = html.replace(
607
+ "<!--__CHRONOTER_SCRIPTS__-->",
608
+ '<script type="module" src="/src/server/client/main.tsx"></script>'
609
+ );
610
+ }
611
+ const safeConfigJson = JSON.stringify(config).replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/&/g, "\\u0026");
612
+ const configScript = `<script type="application/json" id="chronoter-config">${safeConfigJson}</script>`;
613
+ html = html.replace("<!--__CHRONOTER_CONFIG__-->", configScript);
593
614
  const transformedHtml = await server.transformIndexHtml(url, html);
594
615
  res.statusCode = route ? 200 : 404;
595
616
  res.setHeader("Content-Type", "text/html; charset=utf-8");
@@ -921,50 +942,6 @@ Please create a chronoter.config.json file.`
921
942
 
922
943
  // src/server/vite-config.ts
923
944
  init_ignore_patterns();
924
-
925
- // src/server/plugins/config-virtual-module.ts
926
- var VIRTUAL_CONFIG_MODULE_ID = "virtual:chronoter-config";
927
- var RESOLVED_VIRTUAL_CONFIG_MODULE_ID = "\0" + VIRTUAL_CONFIG_MODULE_ID;
928
- var createConfigVirtualModulePlugin = (config) => {
929
- return {
930
- name: "chronoter-config-virtual-module",
931
- /**
932
- * Virtual moduleのIDを解決
933
- */
934
- resolveId(id) {
935
- if (id === VIRTUAL_CONFIG_MODULE_ID) {
936
- return RESOLVED_VIRTUAL_CONFIG_MODULE_ID;
937
- }
938
- return null;
939
- },
940
- /**
941
- * Virtual moduleのコードを生成
942
- */
943
- load(id) {
944
- if (id === RESOLVED_VIRTUAL_CONFIG_MODULE_ID) {
945
- const configCode = `
946
- // Auto-generated by chronoter-config-virtual-module plugin
947
- // This module provides access to the Chronoter configuration
948
-
949
- export const config = ${JSON.stringify(config, null, 2)};
950
-
951
- // HMR\u5BFE\u5FDC
952
- if (import.meta.hot) {
953
- import.meta.hot.accept((newModule) => {
954
- if (newModule) {
955
- console.log('[chronoter] Configuration updated');
956
- // \u8A2D\u5B9A\u304C\u5909\u66F4\u3055\u308C\u305F\u5834\u5408\u306F\u30DA\u30FC\u30B8\u5168\u4F53\u3092\u30EA\u30ED\u30FC\u30C9
957
- window.location.reload();
958
- }
959
- });
960
- }
961
- `;
962
- return configCode;
963
- }
964
- return null;
965
- }
966
- };
967
- };
968
945
  var __filename2 = fileURLToPath(import.meta.url);
969
946
  var __dirname2 = dirname(__filename2);
970
947
  var isMediaFileRequest = (url) => {
@@ -1022,8 +999,6 @@ var createViteConfig = (config, options = {}) => {
1022
999
  // MDXファイルもReactコンポーネントとして扱う
1023
1000
  include: /\.(jsx|tsx|mdx)$/
1024
1001
  }),
1025
- // 設定情報をクライアントに注入するVirtual Moduleプラグイン
1026
- createConfigVirtualModulePlugin(config),
1027
1002
  // ルーティングミドルウェアを登録するプラグイン
1028
1003
  {
1029
1004
  name: "chronoter-routing",
@@ -1635,7 +1610,7 @@ var runVersionCheck = async (packageName, currentVersion) => {
1635
1610
 
1636
1611
  // src/cli/index.ts
1637
1612
  var PACKAGE_NAME = "chronoter";
1638
- var CURRENT_VERSION = "0.1.4";
1613
+ var CURRENT_VERSION = "0.1.5";
1639
1614
  var createCliProgram = () => {
1640
1615
  const program = new Command();
1641
1616
  program.name("chronoter").description("Chronoter - MDX-based documentation site generator").version(CURRENT_VERSION);
@@ -1693,10 +1668,13 @@ var main = async () => {
1693
1668
  }
1694
1669
  await program.parseAsync(process.argv);
1695
1670
  };
1696
- main().catch((error) => {
1697
- console.error(chalk2.red("An unexpected error occurred:"));
1698
- console.error(error);
1699
- process.exit(1);
1700
- });
1671
+ var isDirectRun = process.argv[1]?.includes("chronoter-main") ?? false;
1672
+ if (isDirectRun) {
1673
+ main().catch((error) => {
1674
+ console.error(chalk2.red("An unexpected error occurred:"));
1675
+ console.error(error);
1676
+ process.exit(1);
1677
+ });
1678
+ }
1701
1679
 
1702
1680
  export { CURRENT_VERSION, PACKAGE_NAME, createCliProgram };
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import ignore from 'ignore';
2
2
  import * as fs from 'fs/promises';
3
3
  import { readFile } from 'fs/promises';
4
4
  import * as path from 'path';
5
- import { dirname, resolve, join, extname, relative, basename } from 'path';
5
+ import { dirname, resolve, join, normalize, sep, extname, relative, basename } from 'path';
6
6
  import { visit } from 'unist-util-visit';
7
7
  import { compile } from '@mdx-js/mdx';
8
8
  import matter from 'gray-matter';
@@ -584,7 +584,28 @@ var init_routing_middleware = __esm({
584
584
  req.chronoterRoute = route;
585
585
  }
586
586
  const templatePath = __dirname$1.endsWith("dist") ? resolve(__dirname$1, "server/templates/index.html") : resolve(__dirname$1, "templates/index.html");
587
- const html = await readFile(templatePath, "utf-8");
587
+ let html = await readFile(templatePath, "utf-8");
588
+ const normalizedDirname = normalize(__dirname$1);
589
+ const isProduction = normalizedDirname.includes(`${sep}dist${sep}`) || normalizedDirname.endsWith(`${sep}dist`);
590
+ if (isProduction) {
591
+ html = html.replace(
592
+ "<!--__CHRONOTER_STYLES__-->",
593
+ '<link rel="stylesheet" href="/server/client/main.css" />'
594
+ );
595
+ html = html.replace(
596
+ "<!--__CHRONOTER_SCRIPTS__-->",
597
+ '<script type="module" src="/server/client/main.js"></script>'
598
+ );
599
+ } else {
600
+ html = html.replace("<!--__CHRONOTER_STYLES__-->", "");
601
+ html = html.replace(
602
+ "<!--__CHRONOTER_SCRIPTS__-->",
603
+ '<script type="module" src="/src/server/client/main.tsx"></script>'
604
+ );
605
+ }
606
+ const safeConfigJson = JSON.stringify(config).replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/&/g, "\\u0026");
607
+ const configScript = `<script type="application/json" id="chronoter-config">${safeConfigJson}</script>`;
608
+ html = html.replace("<!--__CHRONOTER_CONFIG__-->", configScript);
588
609
  const transformedHtml = await server.transformIndexHtml(url, html);
589
610
  res.statusCode = route ? 200 : 404;
590
611
  res.setHeader("Content-Type", "text/html; charset=utf-8");
@@ -916,50 +937,6 @@ Please create a chronoter.config.json file.`
916
937
 
917
938
  // src/server/vite-config.ts
918
939
  init_ignore_patterns();
919
-
920
- // src/server/plugins/config-virtual-module.ts
921
- var VIRTUAL_CONFIG_MODULE_ID = "virtual:chronoter-config";
922
- var RESOLVED_VIRTUAL_CONFIG_MODULE_ID = "\0" + VIRTUAL_CONFIG_MODULE_ID;
923
- var createConfigVirtualModulePlugin = (config) => {
924
- return {
925
- name: "chronoter-config-virtual-module",
926
- /**
927
- * Virtual moduleのIDを解決
928
- */
929
- resolveId(id) {
930
- if (id === VIRTUAL_CONFIG_MODULE_ID) {
931
- return RESOLVED_VIRTUAL_CONFIG_MODULE_ID;
932
- }
933
- return null;
934
- },
935
- /**
936
- * Virtual moduleのコードを生成
937
- */
938
- load(id) {
939
- if (id === RESOLVED_VIRTUAL_CONFIG_MODULE_ID) {
940
- const configCode = `
941
- // Auto-generated by chronoter-config-virtual-module plugin
942
- // This module provides access to the Chronoter configuration
943
-
944
- export const config = ${JSON.stringify(config, null, 2)};
945
-
946
- // HMR\u5BFE\u5FDC
947
- if (import.meta.hot) {
948
- import.meta.hot.accept((newModule) => {
949
- if (newModule) {
950
- console.log('[chronoter] Configuration updated');
951
- // \u8A2D\u5B9A\u304C\u5909\u66F4\u3055\u308C\u305F\u5834\u5408\u306F\u30DA\u30FC\u30B8\u5168\u4F53\u3092\u30EA\u30ED\u30FC\u30C9
952
- window.location.reload();
953
- }
954
- });
955
- }
956
- `;
957
- return configCode;
958
- }
959
- return null;
960
- }
961
- };
962
- };
963
940
  var __filename2 = fileURLToPath(import.meta.url);
964
941
  var __dirname2 = dirname(__filename2);
965
942
  var isMediaFileRequest = (url) => {
@@ -1017,8 +994,6 @@ var createViteConfig = (config, options = {}) => {
1017
994
  // MDXファイルもReactコンポーネントとして扱う
1018
995
  include: /\.(jsx|tsx|mdx)$/
1019
996
  }),
1020
- // 設定情報をクライアントに注入するVirtual Moduleプラグイン
1021
- createConfigVirtualModulePlugin(config),
1022
997
  // ルーティングミドルウェアを登録するプラグイン
1023
998
  {
1024
999
  name: "chronoter-routing",