colonynote 1.0.0-beta.9 → 1.0.0

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 (144) hide show
  1. package/README.md +6 -6
  2. package/README.zh.md +6 -6
  3. package/bin/colonynote.js +48 -81
  4. package/dist/client/assets/arc-Ezd9GmKE.js +1 -0
  5. package/dist/client/assets/architecture-YZFGNWBL-Dns9u0e5.js +1 -0
  6. package/dist/client/assets/architectureDiagram-Q4EWVU46-BmLJotd1.js +36 -0
  7. package/dist/client/assets/array-C0548cPn.js +1 -0
  8. package/dist/client/assets/blockDiagram-DXYQGD6D-ZqrNO8HM.js +132 -0
  9. package/dist/client/assets/c4Diagram-AHTNJAMY-BJWyymhT.js +10 -0
  10. package/dist/client/assets/channel-C-zEXS3V.js +1 -0
  11. package/dist/client/assets/chunk-2KRD3SAO-B1G2AY6H.js +1 -0
  12. package/dist/client/assets/chunk-4BX2VUAB-mLNpdiNK.js +1 -0
  13. package/dist/client/assets/chunk-4TB4RGXK-BsRi3qra.js +206 -0
  14. package/dist/client/assets/chunk-55IACEB6-BkCqG_Mc.js +1 -0
  15. package/dist/client/assets/chunk-67CJDMHE-Cz-mqdi4.js +1 -0
  16. package/dist/client/assets/chunk-7N4EOEYR-BFd0Oy6w.js +1 -0
  17. package/dist/client/assets/chunk-AA7GKIK3-D77gJjH7.js +1 -0
  18. package/dist/client/assets/chunk-CIAEETIT-DxQTGSBH.js +1 -0
  19. package/dist/client/assets/chunk-Dlc7tRH4.js +1 -0
  20. package/dist/client/assets/chunk-EDXVE4YY-DglU8MxC.js +1 -0
  21. package/dist/client/assets/{chunk-FMBD7UC4-C7A8kZzG.js → chunk-FMBD7UC4-B_1_v8GP.js} +2 -2
  22. package/dist/client/assets/chunk-FOC6F5B3-CEMl5H_U.js +1 -0
  23. package/dist/client/assets/chunk-K5T4RW27-Dzh5Xx8O.js +94 -0
  24. package/dist/client/assets/chunk-KGLVRYIC-Be2dMs_W.js +1 -0
  25. package/dist/client/assets/chunk-LIHQZDEY-BGBWPKdn.js +1 -0
  26. package/dist/client/assets/chunk-ORNJ4GCN-W_NT507t.js +1 -0
  27. package/dist/client/assets/chunk-OYMX7WX6-BV6RCL_j.js +231 -0
  28. package/dist/client/assets/chunk-QZHKN3VN-B0CMV9NG.js +1 -0
  29. package/dist/client/assets/chunk-YZCP3GAM-CDitFgw3.js +1 -0
  30. package/dist/client/assets/classDiagram-6PBFFD2Q-XeqY_hie.js +1 -0
  31. package/dist/client/assets/classDiagram-v2-HSJHXN6E-D5yY32qd.js +1 -0
  32. package/dist/client/assets/clone-AnN0418d.js +1 -0
  33. package/dist/client/assets/cose-bilkent-S5V4N54A-YQtZwRYb.js +1 -0
  34. package/dist/client/assets/cytoscape.esm-DT0IEibP.js +321 -0
  35. package/dist/client/assets/dagre-Cs_hK0RA.js +1 -0
  36. package/dist/client/assets/dagre-KV5264BT-DvMqAy8J.js +4 -0
  37. package/dist/client/assets/defaultLocale-ClcAPJ5U.js +1 -0
  38. package/dist/client/assets/diagram-5BDNPKRD-BwrN8bUG.js +10 -0
  39. package/dist/client/assets/diagram-G4DWMVQ6-Cqaj-jnn.js +24 -0
  40. package/dist/client/assets/diagram-MMDJMWI5-DNA312HK.js +43 -0
  41. package/dist/client/assets/diagram-TYMM5635-BujcYOHW.js +24 -0
  42. package/dist/client/assets/erDiagram-SMLLAGMA-ZjZZH-zN.js +85 -0
  43. package/dist/client/assets/flatten-DA7ZzNkq.js +1 -0
  44. package/dist/client/assets/flowDiagram-DWJPFMVM-CeIGHswO.js +162 -0
  45. package/dist/client/assets/ganttDiagram-T4ZO3ILL-BeGMFmHq.js +292 -0
  46. package/dist/client/assets/gitGraph-7Q5UKJZL-Dib3-KZp.js +1 -0
  47. package/dist/client/assets/gitGraphDiagram-UUTBAWPF-2fnUKQRp.js +106 -0
  48. package/dist/client/assets/graphlib-DRri47Ms.js +1 -0
  49. package/dist/client/assets/identity-CQcu21F9.js +1 -0
  50. package/dist/client/assets/index-DKyd5iCm.css +2 -0
  51. package/dist/client/assets/index-Ts5WhtRB.js +574 -0
  52. package/dist/client/assets/info-OMHHGYJF-oQ5--hGK.js +1 -0
  53. package/dist/client/assets/infoDiagram-42DDH7IO-KL_uq6JQ.js +2 -0
  54. package/dist/client/assets/init-TU6eJ00_.js +1 -0
  55. package/dist/client/assets/ishikawaDiagram-UXIWVN3A-DYWG2VdA.js +70 -0
  56. package/dist/client/assets/journeyDiagram-VCZTEJTY-DT7IVz7z.js +139 -0
  57. package/dist/client/assets/kanban-definition-6JOO6SKY-CHPPLj8n.js +89 -0
  58. package/dist/client/assets/katex-HOUACuRw.js +257 -0
  59. package/dist/client/assets/linear-CizMozZt.js +1 -0
  60. package/dist/client/assets/mermaid-parser.core-Bpqvb2jv.js +4 -0
  61. package/dist/client/assets/mindmap-definition-QFDTVHPH-Dov77gi8.js +96 -0
  62. package/dist/client/assets/ordinal-DCsgWfZW.js +1 -0
  63. package/dist/client/assets/packet-4T2RLAQJ-Cuyyn0tM.js +1 -0
  64. package/dist/client/assets/path-yo4Xej8w.js +1 -0
  65. package/dist/client/assets/pie-ZZUOXDRM-DajTPYmY.js +1 -0
  66. package/dist/client/assets/pieDiagram-DEJITSTG-DwmqzTu7.js +30 -0
  67. package/dist/client/assets/quadrantDiagram-34T5L4WZ-CdCBXbvb.js +7 -0
  68. package/dist/client/assets/radar-PYXPWWZC-DWe78GFc.js +1 -0
  69. package/dist/client/assets/reduce-DV5GRzs4.js +1 -0
  70. package/dist/client/assets/requirementDiagram-MS252O5E-32eCbPFl.js +84 -0
  71. package/dist/client/assets/rough.esm-DulVNktb.js +1 -0
  72. package/dist/client/assets/sankeyDiagram-XADWPNL6-BBDL_wPZ.js +10 -0
  73. package/dist/client/assets/sequenceDiagram-FGHM5R23-Ck7ukfb7.js +157 -0
  74. package/dist/client/assets/stateDiagram-FHFEXIEX-BKJrixhp.js +1 -0
  75. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-Bio1QBYF.js +1 -0
  76. package/dist/client/assets/timeline-definition-GMOUNBTQ-B_D-q7Kc.js +120 -0
  77. package/dist/client/assets/treeView-SZITEDCU-BQ27_5HI.js +1 -0
  78. package/dist/client/assets/treemap-W4RFUUIX-D2TpEq--.js +1 -0
  79. package/dist/client/assets/vennDiagram-DHZGUBPP-CvHqv3h2.js +34 -0
  80. package/dist/client/assets/wardley-RL74JXVD-DoAmhKVb.js +1 -0
  81. package/dist/client/assets/wardleyDiagram-NUSXRM2D-CYRpN4xk.js +20 -0
  82. package/dist/client/assets/xychartDiagram-5P7HB3ND-Dh0MaaMp.js +7 -0
  83. package/dist/client/index.html +7 -2
  84. package/dist/config.js +122 -52
  85. package/dist/server/api.js +637 -31
  86. package/dist/server/ignore.js +221 -0
  87. package/dist/server/index.js +78 -24
  88. package/dist/server/search-ignore.test.js +51 -0
  89. package/dist/server/watcher.js +54 -18
  90. package/package.json +16 -16
  91. package/dist/client/assets/__vite-browser-external-BIHI7g3E.js +0 -1
  92. package/dist/client/assets/_basePickBy-D--Y6Qnf.js +0 -1
  93. package/dist/client/assets/_baseUniq-CGmIayRA.js +0 -1
  94. package/dist/client/assets/arc-JEfbYn4Z.js +0 -1
  95. package/dist/client/assets/architectureDiagram-2XIMDMQ5-MWOMordV.js +0 -36
  96. package/dist/client/assets/blockDiagram-WCTKOSBZ-Dmag7Wj_.js +0 -132
  97. package/dist/client/assets/c4Diagram-IC4MRINW-C3_AIswr.js +0 -10
  98. package/dist/client/assets/channel-2eZL646b.js +0 -1
  99. package/dist/client/assets/chunk-4BX2VUAB-Cw3UPx2y.js +0 -1
  100. package/dist/client/assets/chunk-55IACEB6-B2NTtZaZ.js +0 -1
  101. package/dist/client/assets/chunk-JSJVCQXG-CzPi8WMG.js +0 -1
  102. package/dist/client/assets/chunk-KX2RTZJC-ea2QZZjB.js +0 -1
  103. package/dist/client/assets/chunk-NQ4KR5QH-B6pfGakc.js +0 -220
  104. package/dist/client/assets/chunk-QZHKN3VN-C0jglaZo.js +0 -1
  105. package/dist/client/assets/chunk-WL4C6EOR-CFMwJdhq.js +0 -189
  106. package/dist/client/assets/classDiagram-VBA2DB6C-3mkluTsn.js +0 -1
  107. package/dist/client/assets/classDiagram-v2-RAHNMMFH-3mkluTsn.js +0 -1
  108. package/dist/client/assets/clone-ByYsCwKu.js +0 -1
  109. package/dist/client/assets/cose-bilkent-S5V4N54A-D72MQZnH.js +0 -1
  110. package/dist/client/assets/cytoscape.esm-BQaXIfA_.js +0 -331
  111. package/dist/client/assets/dagre-KLK3FWXG-7JkAxkM4.js +0 -4
  112. package/dist/client/assets/defaultLocale-DX6XiGOO.js +0 -1
  113. package/dist/client/assets/diagram-E7M64L7V-Ug-UhMUJ.js +0 -24
  114. package/dist/client/assets/diagram-IFDJBPK2-Dkg0uhRn.js +0 -43
  115. package/dist/client/assets/diagram-P4PSJMXO-B2p0xObJ.js +0 -24
  116. package/dist/client/assets/erDiagram-INFDFZHY-brLn9Si4.js +0 -70
  117. package/dist/client/assets/flowDiagram-PKNHOUZH-BE1LUc-D.js +0 -162
  118. package/dist/client/assets/ganttDiagram-A5KZAMGK-Cpxwz2ZR.js +0 -292
  119. package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-34Y0DLO4.js +0 -65
  120. package/dist/client/assets/graph-BdaeFsUq.js +0 -1
  121. package/dist/client/assets/index-AcpT_uDS.css +0 -1
  122. package/dist/client/assets/index-l_1AZZNa.js +0 -705
  123. package/dist/client/assets/infoDiagram-LFFYTUFH-DuMz9iqk.js +0 -2
  124. package/dist/client/assets/init-Gi6I4Gst.js +0 -1
  125. package/dist/client/assets/ishikawaDiagram-PHBUUO56-Ck0mnRfv.js +0 -70
  126. package/dist/client/assets/journeyDiagram-4ABVD52K-C94-O771.js +0 -139
  127. package/dist/client/assets/kanban-definition-K7BYSVSG-l46sso-6.js +0 -89
  128. package/dist/client/assets/katex-B1X10hvy.js +0 -261
  129. package/dist/client/assets/layout-CPSfpfI_.js +0 -1
  130. package/dist/client/assets/linear-DdrJMl3C.js +0 -1
  131. package/dist/client/assets/mindmap-definition-YRQLILUH-DHyNrbph.js +0 -68
  132. package/dist/client/assets/ordinal-Cboi1Yqb.js +0 -1
  133. package/dist/client/assets/pieDiagram-SKSYHLDU-BN73IyPO.js +0 -30
  134. package/dist/client/assets/quadrantDiagram-337W2JSQ-CRNMUsUn.js +0 -7
  135. package/dist/client/assets/requirementDiagram-Z7DCOOCP-D72Qsjcq.js +0 -73
  136. package/dist/client/assets/sankeyDiagram-WA2Y5GQK-DedybDaM.js +0 -10
  137. package/dist/client/assets/sequenceDiagram-2WXFIKYE-Cql4DQP3.js +0 -145
  138. package/dist/client/assets/stateDiagram-RAJIS63D-ChVgsQCJ.js +0 -1
  139. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-DpTKcB4R.js +0 -1
  140. package/dist/client/assets/timeline-definition-YZTLITO2-C4zgLb8F.js +0 -61
  141. package/dist/client/assets/treemap-KZPCXAKY-C56WA1HL.js +0 -162
  142. package/dist/client/assets/vennDiagram-LZ73GAT5-B-0T5e8m.js +0 -34
  143. package/dist/client/assets/xychartDiagram-JWTSCODW-D3_TT24I.js +0 -7
  144. package/dist/server/app.js +0 -14
package/dist/config.js CHANGED
@@ -1,10 +1,37 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
+ import os from 'os';
3
4
  import markdownExtensions from 'markdown-extensions';
5
+ export const DEFAULT_PORT = 5787;
6
+ export const DEFAULT_HOST = '0.0.0.0';
7
+ export const DEFAULT_SENSITIVE_PATHS = [
8
+ '.env',
9
+ '.env.local',
10
+ '.env.*.local',
11
+ '*.key',
12
+ '*.pem',
13
+ '*.p12',
14
+ '*.pfx',
15
+ 'id_rsa',
16
+ 'id_dsa',
17
+ 'id_ecdsa',
18
+ 'id_ed25519',
19
+ '.ssh/',
20
+ '.aws/',
21
+ '.docker/',
22
+ '.kube/',
23
+ 'credentials',
24
+ 'secrets',
25
+ '.htpasswd',
26
+ '.netrc',
27
+ '.npmrc',
28
+ '.pypirc',
29
+ 'token',
30
+ 'password',
31
+ 'secret',
32
+ ];
4
33
  const defaultConfig = {
5
- root: process.cwd(),
6
- port: 5787,
7
- host: '0.0.0.0',
34
+ dirs: [],
8
35
  allowedExtensions: markdownExtensions.map((ext) => `.${ext}`),
9
36
  showHiddenFiles: false,
10
37
  theme: {
@@ -14,70 +41,113 @@ const defaultConfig = {
14
41
  autosave: true,
15
42
  debounceMs: 300,
16
43
  },
44
+ ignore: {
45
+ patterns: [
46
+ 'node_modules',
47
+ '.git',
48
+ '.next',
49
+ '.nuxt',
50
+ '.output',
51
+ 'dist',
52
+ 'build',
53
+ '.cache',
54
+ '.turbo',
55
+ '.vite',
56
+ 'coverage',
57
+ '.DS_Store',
58
+ 'Thumbs.db',
59
+ ],
60
+ },
17
61
  };
18
- export async function loadConfig(configPath) {
62
+ export function getConfigFilePath(env = 'production') {
63
+ const homeDir = os.homedir();
64
+ const colonynoteDir = path.join(homeDir, '.colonynote');
65
+ return path.join(colonynoteDir, env === 'development' ? 'config.dev.json' : 'config.json');
66
+ }
67
+ export async function loadConfig(env = 'production') {
19
68
  const config = { ...defaultConfig };
20
- const possiblePaths = configPath
21
- ? [configPath]
22
- : [
23
- path.join(process.cwd(), 'colonynote.config.js'),
24
- path.join(process.cwd(), 'colonynote.config.mjs'),
25
- ];
26
- for (const p of possiblePaths) {
27
- if (fs.existsSync(p)) {
28
- try {
29
- const module = await import(p);
30
- const userConfig = module.default || module;
31
- Object.assign(config, userConfig);
32
- if (userConfig.theme) {
69
+ const homeDir = os.homedir();
70
+ const colonynoteDir = path.join(homeDir, '.colonynote');
71
+ // 开发环境优先加载 config.dev.json,否则加载 config.json
72
+ const configFileName = env === 'development' ? 'config.dev.json' : 'config.json';
73
+ const configPath = path.join(colonynoteDir, configFileName);
74
+ // 生产环境回退逻辑:如果 config.json 不存在,尝试加载 config.dev.json 作为 fallback
75
+ if (!fs.existsSync(configPath) && env === 'production') {
76
+ const devConfigPath = path.join(colonynoteDir, 'config.dev.json');
77
+ if (fs.existsSync(devConfigPath)) {
78
+ console.log('Production config not found, falling back to dev config');
79
+ loadConfigFile(devConfigPath, config);
80
+ }
81
+ }
82
+ else if (fs.existsSync(configPath)) {
83
+ loadConfigFile(configPath, config);
84
+ }
85
+ else if (env === 'development') {
86
+ console.log(`No dev config found at ${configPath}, using default configuration`);
87
+ }
88
+ // Resolve all paths to absolute paths
89
+ config.dirs = config.dirs.map((dir) => ({
90
+ ...dir,
91
+ path: path.resolve(dir.path),
92
+ }));
93
+ // Deduplicate directories by resolved path, keeping the first occurrence
94
+ const seenPaths = new Set();
95
+ config.dirs = config.dirs.filter((dir) => {
96
+ if (seenPaths.has(dir.path)) {
97
+ return false;
98
+ }
99
+ seenPaths.add(dir.path);
100
+ return true;
101
+ });
102
+ return config;
103
+ }
104
+ function loadConfigFile(configPath, config) {
105
+ try {
106
+ const content = fs.readFileSync(configPath, 'utf-8');
107
+ const userConfig = JSON.parse(content);
108
+ // Merge user config, filtering out invalid fields
109
+ const validFields = ['dirs', 'showHiddenFiles', 'allowedExtensions', 'theme', 'editor', 'ignore'];
110
+ for (const field of validFields) {
111
+ if (field in userConfig) {
112
+ if (field === 'dirs' && Array.isArray(userConfig.dirs)) {
113
+ config.dirs = userConfig.dirs;
114
+ }
115
+ else if (field === 'showHiddenFiles' && typeof userConfig.showHiddenFiles === 'boolean') {
116
+ config.showHiddenFiles = userConfig.showHiddenFiles;
117
+ }
118
+ else if (field === 'allowedExtensions' && Array.isArray(userConfig.allowedExtensions)) {
119
+ config.allowedExtensions = userConfig.allowedExtensions;
120
+ }
121
+ else if (field === 'theme' && typeof userConfig.theme === 'object') {
33
122
  config.theme = { ...defaultConfig.theme, ...userConfig.theme };
34
123
  }
35
- if (userConfig.editor) {
124
+ else if (field === 'editor' && typeof userConfig.editor === 'object') {
36
125
  config.editor = { ...defaultConfig.editor, ...userConfig.editor };
37
126
  }
38
- break;
39
- }
40
- catch (e) {
41
- console.warn(`Failed to load config from ${p}:`, e);
127
+ else if (field === 'ignore' && typeof userConfig.ignore === 'object') {
128
+ config.ignore = { ...defaultConfig.ignore, ...userConfig.ignore };
129
+ }
42
130
  }
43
131
  }
44
132
  }
45
- const userConfigPath = path.join(config.root, 'colonynote.user.json');
46
- if (fs.existsSync(userConfigPath)) {
47
- try {
48
- const userSettings = JSON.parse(fs.readFileSync(userConfigPath, 'utf-8'));
49
- if (typeof userSettings.showHiddenFiles === 'boolean') {
50
- config.showHiddenFiles = userSettings.showHiddenFiles;
51
- }
52
- if (Array.isArray(userSettings.allowedExtensions)) {
53
- config.allowedExtensions = userSettings.allowedExtensions;
54
- }
55
- }
56
- catch (e) {
57
- console.warn(`Failed to load user config from ${userConfigPath}:`, e);
58
- }
133
+ catch (e) {
134
+ console.warn(`Failed to load config from ${configPath}:`, e);
135
+ console.log('Using default configuration');
59
136
  }
60
- config.root = path.resolve(config.root);
61
- return config;
62
137
  }
63
- export function saveUserConfig(root, settings) {
64
- const userConfigPath = path.join(root, 'colonynote.user.json');
138
+ export function saveConfig(config, env = 'production') {
139
+ const homeDir = os.homedir();
140
+ const colonynoteDir = path.join(homeDir, '.colonynote');
141
+ const configFileName = env === 'development' ? 'config.dev.json' : 'config.json';
142
+ const configPath = path.join(colonynoteDir, configFileName);
65
143
  try {
66
- let userSettings = {};
67
- if (fs.existsSync(userConfigPath)) {
68
- userSettings = JSON.parse(fs.readFileSync(userConfigPath, 'utf-8'));
69
- }
70
- if (typeof settings.showHiddenFiles === 'boolean') {
71
- userSettings.showHiddenFiles = settings.showHiddenFiles;
72
- }
73
- if (Array.isArray(settings.allowedExtensions)) {
74
- userSettings.allowedExtensions = settings.allowedExtensions;
144
+ if (!fs.existsSync(colonynoteDir)) {
145
+ fs.mkdirSync(colonynoteDir, { recursive: true });
75
146
  }
76
- fs.writeFileSync(userConfigPath, JSON.stringify(userSettings, null, 2), 'utf-8');
147
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
77
148
  }
78
149
  catch (e) {
79
- console.error(`Failed to save user config to ${userConfigPath}:`, e);
150
+ console.error(`Failed to save config to ${configPath}:`, e);
80
151
  throw e;
81
152
  }
82
153
  }
83
- export { defaultConfig };