@malikasadjaved/readme-ai 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.
- package/LICENSE +21 -0
- package/README.md +309 -0
- package/dist/analyzers/badge-generator.d.ts +12 -0
- package/dist/analyzers/badge-generator.d.ts.map +1 -0
- package/dist/analyzers/badge-generator.js +139 -0
- package/dist/analyzers/badge-generator.js.map +1 -0
- package/dist/analyzers/code-analyzer.d.ts +34 -0
- package/dist/analyzers/code-analyzer.d.ts.map +1 -0
- package/dist/analyzers/code-analyzer.js +210 -0
- package/dist/analyzers/code-analyzer.js.map +1 -0
- package/dist/analyzers/dependency-analyzer.d.ts +16 -0
- package/dist/analyzers/dependency-analyzer.d.ts.map +1 -0
- package/dist/analyzers/dependency-analyzer.js +169 -0
- package/dist/analyzers/dependency-analyzer.js.map +1 -0
- package/dist/analyzers/diagram-builder.d.ts +11 -0
- package/dist/analyzers/diagram-builder.d.ts.map +1 -0
- package/dist/analyzers/diagram-builder.js +163 -0
- package/dist/analyzers/diagram-builder.js.map +1 -0
- package/dist/analyzers/file-scanner.d.ts +17 -0
- package/dist/analyzers/file-scanner.d.ts.map +1 -0
- package/dist/analyzers/file-scanner.js +103 -0
- package/dist/analyzers/file-scanner.js.map +1 -0
- package/dist/analyzers/index.d.ts +7 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +7 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/repo-fetcher.d.ts +22 -0
- package/dist/analyzers/repo-fetcher.d.ts.map +1 -0
- package/dist/analyzers/repo-fetcher.js +134 -0
- package/dist/analyzers/repo-fetcher.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +54 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/generate.d.ts +17 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +189 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/config.d.ts +17 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +28 -0
- package/dist/config.js.map +1 -0
- package/dist/generators/changelog.d.ts +7 -0
- package/dist/generators/changelog.d.ts.map +1 -0
- package/dist/generators/changelog.js +15 -0
- package/dist/generators/changelog.js.map +1 -0
- package/dist/generators/contributing.d.ts +5 -0
- package/dist/generators/contributing.d.ts.map +1 -0
- package/dist/generators/contributing.js +28 -0
- package/dist/generators/contributing.js.map +1 -0
- package/dist/generators/index.d.ts +6 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +6 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/install.d.ts +14 -0
- package/dist/generators/install.d.ts.map +1 -0
- package/dist/generators/install.js +95 -0
- package/dist/generators/install.js.map +1 -0
- package/dist/generators/overview.d.ts +20 -0
- package/dist/generators/overview.d.ts.map +1 -0
- package/dist/generators/overview.js +87 -0
- package/dist/generators/overview.js.map +1 -0
- package/dist/generators/usage.d.ts +33 -0
- package/dist/generators/usage.d.ts.map +1 -0
- package/dist/generators/usage.js +130 -0
- package/dist/generators/usage.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/anthropic.d.ts +3 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +47 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/gemini.d.ts +3 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +28 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/index.d.ts +8 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +24 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/ollama.d.ts +3 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +46 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +3 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +40 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/themes/academic.d.ts +3 -0
- package/dist/themes/academic.d.ts.map +1 -0
- package/dist/themes/academic.js +113 -0
- package/dist/themes/academic.js.map +1 -0
- package/dist/themes/default.d.ts +3 -0
- package/dist/themes/default.d.ts.map +1 -0
- package/dist/themes/default.js +114 -0
- package/dist/themes/default.js.map +1 -0
- package/dist/themes/hacker.d.ts +3 -0
- package/dist/themes/hacker.d.ts.map +1 -0
- package/dist/themes/hacker.js +100 -0
- package/dist/themes/hacker.js.map +1 -0
- package/dist/themes/index.d.ts +26 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +23 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/minimal.d.ts +3 -0
- package/dist/themes/minimal.d.ts.map +1 -0
- package/dist/themes/minimal.js +85 -0
- package/dist/themes/minimal.js.map +1 -0
- package/dist/themes/modern.d.ts +3 -0
- package/dist/themes/modern.d.ts.map +1 -0
- package/dist/themes/modern.js +114 -0
- package/dist/themes/modern.js.map +1 -0
- package/dist/utils/file-utils.d.ts +9 -0
- package/dist/utils/file-utils.d.ts.map +1 -0
- package/dist/utils/file-utils.js +93 -0
- package/dist/utils/file-utils.js.map +1 -0
- package/dist/utils/github-api.d.ts +27 -0
- package/dist/utils/github-api.d.ts.map +1 -0
- package/dist/utils/github-api.js +68 -0
- package/dist/utils/github-api.js.map +1 -0
- package/dist/utils/language-detector.d.ts +18 -0
- package/dist/utils/language-detector.d.ts.map +1 -0
- package/dist/utils/language-detector.js +139 -0
- package/dist/utils/language-detector.js.map +1 -0
- package/dist/utils/markdown-writer.d.ts +5 -0
- package/dist/utils/markdown-writer.d.ts.map +1 -0
- package/dist/utils/markdown-writer.js +19 -0
- package/dist/utils/markdown-writer.js.map +1 -0
- package/dist/utils/template-engine.d.ts +9 -0
- package/dist/utils/template-engine.d.ts.map +1 -0
- package/dist/utils/template-engine.js +29 -0
- package/dist/utils/template-engine.js.map +1 -0
- package/package.json +60 -0
- package/templates/.readmeaiignore.example +41 -0
- package/templates/github-action.yml +35 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
+
import { getAPIKey } from '../config.js';
|
|
3
|
+
export function createAnthropicProvider(model) {
|
|
4
|
+
const apiKey = getAPIKey('anthropic');
|
|
5
|
+
if (!apiKey) {
|
|
6
|
+
throw new Error('ANTHROPIC_API_KEY not set.\n' +
|
|
7
|
+
'Export your key: export ANTHROPIC_API_KEY=sk-ant-...\n' +
|
|
8
|
+
'Or use Ollama for free: --provider ollama');
|
|
9
|
+
}
|
|
10
|
+
const client = new Anthropic({ apiKey });
|
|
11
|
+
const modelId = model || 'claude-sonnet-4-20250514';
|
|
12
|
+
return {
|
|
13
|
+
name: 'anthropic',
|
|
14
|
+
model: modelId,
|
|
15
|
+
async generate(prompt) {
|
|
16
|
+
const response = await client.messages.create({
|
|
17
|
+
model: modelId,
|
|
18
|
+
max_tokens: 4096,
|
|
19
|
+
messages: [{ role: 'user', content: prompt }],
|
|
20
|
+
});
|
|
21
|
+
const block = response.content[0];
|
|
22
|
+
if (block.type === 'text') {
|
|
23
|
+
return block.text;
|
|
24
|
+
}
|
|
25
|
+
throw new Error('Unexpected response format from Anthropic');
|
|
26
|
+
},
|
|
27
|
+
async generateJSON(prompt) {
|
|
28
|
+
const response = await client.messages.create({
|
|
29
|
+
model: modelId,
|
|
30
|
+
max_tokens: 4096,
|
|
31
|
+
messages: [
|
|
32
|
+
{
|
|
33
|
+
role: 'user',
|
|
34
|
+
content: prompt + '\n\nRespond with valid JSON only. No markdown fences, no explanation.',
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
});
|
|
38
|
+
const block = response.content[0];
|
|
39
|
+
if (block.type === 'text') {
|
|
40
|
+
const text = block.text.trim().replace(/^```json\n?/, '').replace(/\n?```$/, '');
|
|
41
|
+
return JSON.parse(text);
|
|
42
|
+
}
|
|
43
|
+
throw new Error('Unexpected response format from Anthropic');
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,8BAA8B;YAC9B,wDAAwD;YACxD,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,KAAK,IAAI,0BAA0B,CAAC;IAEpD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,OAAO;QAEd,KAAK,CAAC,QAAQ,CAAC,MAAc;YAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC5C,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;aAC9C,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,OAAO,KAAK,CAAC,IAAI,CAAC;YACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,KAAK,CAAC,YAAY,CAAI,MAAc;YAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC5C,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,MAAM,GAAG,uEAAuE;qBAC1F;iBACF;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACjF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;YAC/B,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,CAgC/D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { GoogleGenerativeAI } from '@google/generative-ai';
|
|
2
|
+
import { getAPIKey } from '../config.js';
|
|
3
|
+
export function createGeminiProvider(model) {
|
|
4
|
+
const apiKey = getAPIKey('gemini');
|
|
5
|
+
if (!apiKey) {
|
|
6
|
+
throw new Error('GEMINI_API_KEY not set.\n' +
|
|
7
|
+
'Export your key: export GEMINI_API_KEY=...\n' +
|
|
8
|
+
'Or use Ollama for free: --provider ollama');
|
|
9
|
+
}
|
|
10
|
+
const genAI = new GoogleGenerativeAI(apiKey);
|
|
11
|
+
const modelId = model || 'gemini-1.5-flash';
|
|
12
|
+
return {
|
|
13
|
+
name: 'gemini',
|
|
14
|
+
model: modelId,
|
|
15
|
+
async generate(prompt) {
|
|
16
|
+
const genModel = genAI.getGenerativeModel({ model: modelId });
|
|
17
|
+
const result = await genModel.generateContent(prompt);
|
|
18
|
+
return result.response.text();
|
|
19
|
+
},
|
|
20
|
+
async generateJSON(prompt) {
|
|
21
|
+
const genModel = genAI.getGenerativeModel({ model: modelId });
|
|
22
|
+
const result = await genModel.generateContent(prompt + '\n\nRespond with valid JSON only. No markdown fences, no explanation.');
|
|
23
|
+
const text = result.response.text().trim().replace(/^```json\n?/, '').replace(/\n?```$/, '');
|
|
24
|
+
return JSON.parse(text);
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,2BAA2B;YAC3B,8CAA8C;YAC9C,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAAC;IAE5C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,OAAO;QAEd,KAAK,CAAC,QAAQ,CAAC,MAAc;YAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,YAAY,CAAI,MAAc;YAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAC3C,MAAM,GAAG,uEAAuE,CACjF,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC7F,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface AIProvider {
|
|
2
|
+
name: string;
|
|
3
|
+
model: string;
|
|
4
|
+
generate(prompt: string): Promise<string>;
|
|
5
|
+
generateJSON<T>(prompt: string): Promise<T>;
|
|
6
|
+
}
|
|
7
|
+
export declare function createProvider(name: string, model?: string): Promise<AIProvider>;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7C;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAwBtF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export async function createProvider(name, model) {
|
|
2
|
+
switch (name) {
|
|
3
|
+
case 'anthropic': {
|
|
4
|
+
const { createAnthropicProvider } = await import('./anthropic.js');
|
|
5
|
+
return createAnthropicProvider(model);
|
|
6
|
+
}
|
|
7
|
+
case 'openai': {
|
|
8
|
+
const { createOpenAIProvider } = await import('./openai.js');
|
|
9
|
+
return createOpenAIProvider(model);
|
|
10
|
+
}
|
|
11
|
+
case 'gemini': {
|
|
12
|
+
const { createGeminiProvider } = await import('./gemini.js');
|
|
13
|
+
return createGeminiProvider(model);
|
|
14
|
+
}
|
|
15
|
+
case 'ollama': {
|
|
16
|
+
const { createOllamaProvider } = await import('./ollama.js');
|
|
17
|
+
return createOllamaProvider(model);
|
|
18
|
+
}
|
|
19
|
+
default:
|
|
20
|
+
throw new Error(`Unknown provider: ${name}\n` +
|
|
21
|
+
'Available providers: anthropic, openai, gemini, ollama');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,KAAc;IAC/D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACnE,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAC7D,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAC7D,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAC7D,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,IAAI;gBAC7B,wDAAwD,CACzD,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,CAoD/D"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { getOllamaURL } from '../config.js';
|
|
2
|
+
export function createOllamaProvider(model) {
|
|
3
|
+
const baseUrl = getOllamaURL();
|
|
4
|
+
const modelId = model || 'llama3.1';
|
|
5
|
+
return {
|
|
6
|
+
name: 'ollama',
|
|
7
|
+
model: modelId,
|
|
8
|
+
async generate(prompt) {
|
|
9
|
+
const response = await fetch(`${baseUrl}/api/generate`, {
|
|
10
|
+
method: 'POST',
|
|
11
|
+
headers: { 'Content-Type': 'application/json' },
|
|
12
|
+
body: JSON.stringify({
|
|
13
|
+
model: modelId,
|
|
14
|
+
prompt,
|
|
15
|
+
stream: false,
|
|
16
|
+
}),
|
|
17
|
+
});
|
|
18
|
+
if (!response.ok) {
|
|
19
|
+
throw new Error(`Ollama request failed (${response.status}).\n` +
|
|
20
|
+
'Make sure Ollama is running: ollama serve\n' +
|
|
21
|
+
`And the model is pulled: ollama pull ${modelId}`);
|
|
22
|
+
}
|
|
23
|
+
const data = await response.json();
|
|
24
|
+
return data.response;
|
|
25
|
+
},
|
|
26
|
+
async generateJSON(prompt) {
|
|
27
|
+
const response = await fetch(`${baseUrl}/api/generate`, {
|
|
28
|
+
method: 'POST',
|
|
29
|
+
headers: { 'Content-Type': 'application/json' },
|
|
30
|
+
body: JSON.stringify({
|
|
31
|
+
model: modelId,
|
|
32
|
+
prompt: prompt + '\n\nRespond with valid JSON only. No markdown fences, no explanation.',
|
|
33
|
+
stream: false,
|
|
34
|
+
format: 'json',
|
|
35
|
+
}),
|
|
36
|
+
});
|
|
37
|
+
if (!response.ok) {
|
|
38
|
+
throw new Error(`Ollama request failed (${response.status})`);
|
|
39
|
+
}
|
|
40
|
+
const data = await response.json();
|
|
41
|
+
const text = data.response.trim().replace(/^```json\n?/, '').replace(/\n?```$/, '');
|
|
42
|
+
return JSON.parse(text);
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ollama.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,KAAK,IAAI,UAAU,CAAC;IAEpC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,OAAO;QAEd,KAAK,CAAC,QAAQ,CAAC,MAAc;YAC3B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,eAAe,EAAE;gBACtD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,OAAO;oBACd,MAAM;oBACN,MAAM,EAAE,KAAK;iBACd,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CACb,0BAA0B,QAAQ,CAAC,MAAM,MAAM;oBAC/C,6CAA6C;oBAC7C,wCAAwC,OAAO,EAAE,CAClD,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAC;YAC3D,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,KAAK,CAAC,YAAY,CAAI,MAAc;YAClC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,eAAe,EAAE;gBACtD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,MAAM,GAAG,uEAAuE;oBACxF,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,MAAM;iBACf,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAC;YAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACpF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,CA4C/D"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import { getAPIKey } from '../config.js';
|
|
3
|
+
export function createOpenAIProvider(model) {
|
|
4
|
+
const apiKey = getAPIKey('openai');
|
|
5
|
+
if (!apiKey) {
|
|
6
|
+
throw new Error('OPENAI_API_KEY not set.\n' +
|
|
7
|
+
'Export your key: export OPENAI_API_KEY=sk-...\n' +
|
|
8
|
+
'Or use Ollama for free: --provider ollama');
|
|
9
|
+
}
|
|
10
|
+
const client = new OpenAI({ apiKey });
|
|
11
|
+
const modelId = model || 'gpt-4o-mini';
|
|
12
|
+
return {
|
|
13
|
+
name: 'openai',
|
|
14
|
+
model: modelId,
|
|
15
|
+
async generate(prompt) {
|
|
16
|
+
const response = await client.chat.completions.create({
|
|
17
|
+
model: modelId,
|
|
18
|
+
messages: [{ role: 'user', content: prompt }],
|
|
19
|
+
max_tokens: 4096,
|
|
20
|
+
});
|
|
21
|
+
return response.choices[0]?.message?.content || '';
|
|
22
|
+
},
|
|
23
|
+
async generateJSON(prompt) {
|
|
24
|
+
const response = await client.chat.completions.create({
|
|
25
|
+
model: modelId,
|
|
26
|
+
messages: [
|
|
27
|
+
{
|
|
28
|
+
role: 'user',
|
|
29
|
+
content: prompt + '\n\nRespond with valid JSON only. No markdown fences, no explanation.',
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
max_tokens: 4096,
|
|
33
|
+
response_format: { type: 'json_object' },
|
|
34
|
+
});
|
|
35
|
+
const text = response.choices[0]?.message?.content || '{}';
|
|
36
|
+
return JSON.parse(text);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=openai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,2BAA2B;YAC3B,iDAAiD;YACjD,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,KAAK,IAAI,aAAa,CAAC;IAEvC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,OAAO;QAEd,KAAK,CAAC,QAAQ,CAAC,MAAc;YAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACpD,KAAK,EAAE,OAAO;gBACd,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;gBAC7C,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;QACrD,CAAC;QAED,KAAK,CAAC,YAAY,CAAI,MAAc;YAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACpD,KAAK,EAAE,OAAO;gBACd,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,MAAM,GAAG,uEAAuE;qBAC1F;iBACF;gBACD,UAAU,EAAE,IAAI;gBAChB,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;aACzC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;YAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"academic.d.ts","sourceRoot":"","sources":["../../src/themes/academic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CA4HtD"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
export function renderAcademic(data) {
|
|
2
|
+
const sections = [];
|
|
3
|
+
// Title page style
|
|
4
|
+
sections.push(`# ${data.projectName}
|
|
5
|
+
|
|
6
|
+
**Abstract:** ${data.tagline}
|
|
7
|
+
|
|
8
|
+
${data.badgeRow}
|
|
9
|
+
|
|
10
|
+
---`);
|
|
11
|
+
// Introduction
|
|
12
|
+
sections.push(`## 1. Introduction
|
|
13
|
+
|
|
14
|
+
${data.description}`);
|
|
15
|
+
// Features / Objectives
|
|
16
|
+
if (data.keyFeatures.length > 0) {
|
|
17
|
+
const cleanFeatures = data.keyFeatures.map(f => f.replace(/^[\p{Emoji_Presentation}\p{Extended_Pictographic}\s]+/u, ''));
|
|
18
|
+
sections.push(`## 2. Objectives
|
|
19
|
+
|
|
20
|
+
The primary objectives of this project are:
|
|
21
|
+
|
|
22
|
+
${cleanFeatures.map((f, i) => `${i + 1}. ${f}`).join('\n')}`);
|
|
23
|
+
}
|
|
24
|
+
// Architecture / Methods
|
|
25
|
+
if (data.diagram) {
|
|
26
|
+
sections.push(`## 3. System Architecture
|
|
27
|
+
|
|
28
|
+
${data.diagram.description}
|
|
29
|
+
|
|
30
|
+
\`\`\`mermaid
|
|
31
|
+
${data.diagram.mermaidCode}
|
|
32
|
+
\`\`\``);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
sections.push(`## 3. System Architecture`);
|
|
36
|
+
}
|
|
37
|
+
// Project Structure
|
|
38
|
+
if (data.directoryTree) {
|
|
39
|
+
sections.push(`### 3.1 Project Organization
|
|
40
|
+
|
|
41
|
+
The project follows the following directory structure:
|
|
42
|
+
|
|
43
|
+
\`\`\`
|
|
44
|
+
${data.directoryTree}
|
|
45
|
+
\`\`\``);
|
|
46
|
+
}
|
|
47
|
+
// Implementation / Getting Started
|
|
48
|
+
const installLines = ['## 4. Implementation', ''];
|
|
49
|
+
installLines.push('### 4.1 Prerequisites');
|
|
50
|
+
installLines.push('');
|
|
51
|
+
if (data.installSection.prerequisites.length > 0) {
|
|
52
|
+
installLines.push('The following software is required:');
|
|
53
|
+
installLines.push('');
|
|
54
|
+
installLines.push(data.installSection.prerequisites.map(p => `- ${p}`).join('\n'));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
installLines.push('No specific prerequisites are required.');
|
|
58
|
+
}
|
|
59
|
+
installLines.push('');
|
|
60
|
+
installLines.push('### 4.2 Installation Procedure');
|
|
61
|
+
installLines.push('');
|
|
62
|
+
data.installSection.installSteps.forEach((step, i) => {
|
|
63
|
+
installLines.push(`**Step ${i + 1}.** ${step.title}`);
|
|
64
|
+
installLines.push('');
|
|
65
|
+
installLines.push('```bash');
|
|
66
|
+
installLines.push(step.command);
|
|
67
|
+
installLines.push('```');
|
|
68
|
+
installLines.push('');
|
|
69
|
+
});
|
|
70
|
+
sections.push(installLines.join('\n'));
|
|
71
|
+
// Results / Usage
|
|
72
|
+
if (data.usageSection.examples.length > 0) {
|
|
73
|
+
const usageLines = ['## 5. Usage and Results', ''];
|
|
74
|
+
for (const example of data.usageSection.examples) {
|
|
75
|
+
usageLines.push(`### ${example.title}`);
|
|
76
|
+
usageLines.push('');
|
|
77
|
+
usageLines.push(example.description);
|
|
78
|
+
usageLines.push('');
|
|
79
|
+
usageLines.push(`\`\`\`${example.language}`);
|
|
80
|
+
usageLines.push(example.code);
|
|
81
|
+
usageLines.push('```');
|
|
82
|
+
usageLines.push('');
|
|
83
|
+
}
|
|
84
|
+
sections.push(usageLines.join('\n'));
|
|
85
|
+
}
|
|
86
|
+
// API Documentation
|
|
87
|
+
if (data.apiDocs && data.apiDocs.entries.length > 0) {
|
|
88
|
+
const apiLines = ['## 6. API Specification', ''];
|
|
89
|
+
for (const entry of data.apiDocs.entries) {
|
|
90
|
+
apiLines.push(`#### \`${entry.name}\``);
|
|
91
|
+
apiLines.push('');
|
|
92
|
+
apiLines.push(`**Signature:** \`${entry.signature}\``);
|
|
93
|
+
if (entry.description) {
|
|
94
|
+
apiLines.push('');
|
|
95
|
+
apiLines.push(`**Description:** ${entry.description}`);
|
|
96
|
+
}
|
|
97
|
+
apiLines.push('');
|
|
98
|
+
apiLines.push(`**Source:** \`${entry.file}\``);
|
|
99
|
+
apiLines.push('');
|
|
100
|
+
}
|
|
101
|
+
sections.push(apiLines.join('\n'));
|
|
102
|
+
}
|
|
103
|
+
// Contributing / Acknowledgments
|
|
104
|
+
sections.push(`## ${data.apiDocs ? '7' : '6'}. Contributing
|
|
105
|
+
|
|
106
|
+
${data.contributingSection}`);
|
|
107
|
+
// License
|
|
108
|
+
sections.push(`## ${data.apiDocs ? '8' : '7'}. License
|
|
109
|
+
|
|
110
|
+
${data.license}`);
|
|
111
|
+
return sections.join('\n\n').trim() + '\n';
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=academic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"academic.js","sourceRoot":"","sources":["../../src/themes/academic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/themes/default.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CA+HrD"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
export function renderDefault(data) {
|
|
2
|
+
const sections = [];
|
|
3
|
+
// Header
|
|
4
|
+
sections.push(`<div align="center">
|
|
5
|
+
|
|
6
|
+
# ${data.projectName}
|
|
7
|
+
|
|
8
|
+
> ${data.tagline}
|
|
9
|
+
|
|
10
|
+
${data.badgeRow}
|
|
11
|
+
|
|
12
|
+
</div>`);
|
|
13
|
+
// Overview
|
|
14
|
+
sections.push(`## 📖 Overview
|
|
15
|
+
|
|
16
|
+
${data.description}`);
|
|
17
|
+
// Features
|
|
18
|
+
if (data.keyFeatures.length > 0) {
|
|
19
|
+
sections.push(`## ✨ Features
|
|
20
|
+
|
|
21
|
+
${data.keyFeatures.map(f => `- ${f}`).join('\n')}`);
|
|
22
|
+
}
|
|
23
|
+
// Architecture diagram
|
|
24
|
+
if (data.diagram) {
|
|
25
|
+
sections.push(`## 🏗️ Architecture
|
|
26
|
+
|
|
27
|
+
\`\`\`mermaid
|
|
28
|
+
${data.diagram.mermaidCode}
|
|
29
|
+
\`\`\`
|
|
30
|
+
|
|
31
|
+
${data.diagram.description}`);
|
|
32
|
+
}
|
|
33
|
+
// Project structure
|
|
34
|
+
if (data.directoryTree) {
|
|
35
|
+
sections.push(`## 📁 Project Structure
|
|
36
|
+
|
|
37
|
+
\`\`\`
|
|
38
|
+
${data.directoryTree}
|
|
39
|
+
\`\`\``);
|
|
40
|
+
}
|
|
41
|
+
// Getting Started
|
|
42
|
+
const installLines = [];
|
|
43
|
+
installLines.push('## 🚀 Getting Started');
|
|
44
|
+
installLines.push('');
|
|
45
|
+
if (data.installSection.prerequisites.length > 0) {
|
|
46
|
+
installLines.push('### Prerequisites');
|
|
47
|
+
installLines.push('');
|
|
48
|
+
installLines.push(data.installSection.prerequisites.map(p => `- ${p}`).join('\n'));
|
|
49
|
+
installLines.push('');
|
|
50
|
+
}
|
|
51
|
+
installLines.push('### Installation');
|
|
52
|
+
installLines.push('');
|
|
53
|
+
data.installSection.installSteps.forEach((step, i) => {
|
|
54
|
+
installLines.push(`${i + 1}. **${step.title}**`);
|
|
55
|
+
installLines.push(` \`\`\`bash`);
|
|
56
|
+
installLines.push(` ${step.command}`);
|
|
57
|
+
installLines.push(` \`\`\``);
|
|
58
|
+
installLines.push('');
|
|
59
|
+
});
|
|
60
|
+
if (data.installSection.envSetupSteps) {
|
|
61
|
+
installLines.push('### Environment Setup');
|
|
62
|
+
installLines.push('');
|
|
63
|
+
data.installSection.envSetupSteps.forEach((step, i) => {
|
|
64
|
+
installLines.push(`${i + 1}. **${step.title}**`);
|
|
65
|
+
installLines.push(` \`\`\`bash`);
|
|
66
|
+
installLines.push(` ${step.command}`);
|
|
67
|
+
installLines.push(` \`\`\``);
|
|
68
|
+
installLines.push('');
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
sections.push(installLines.join('\n'));
|
|
72
|
+
// Usage
|
|
73
|
+
if (data.usageSection.examples.length > 0) {
|
|
74
|
+
const usageLines = ['## 💡 Usage', ''];
|
|
75
|
+
for (const example of data.usageSection.examples) {
|
|
76
|
+
usageLines.push(`### ${example.title}`);
|
|
77
|
+
usageLines.push('');
|
|
78
|
+
usageLines.push(example.description);
|
|
79
|
+
usageLines.push('');
|
|
80
|
+
usageLines.push(`\`\`\`${example.language}`);
|
|
81
|
+
usageLines.push(example.code);
|
|
82
|
+
usageLines.push('```');
|
|
83
|
+
usageLines.push('');
|
|
84
|
+
}
|
|
85
|
+
sections.push(usageLines.join('\n'));
|
|
86
|
+
}
|
|
87
|
+
// API Docs
|
|
88
|
+
if (data.apiDocs && data.apiDocs.entries.length > 0) {
|
|
89
|
+
const apiLines = ['## 📚 API Reference', ''];
|
|
90
|
+
for (const entry of data.apiDocs.entries) {
|
|
91
|
+
apiLines.push(`### \`${entry.name}\``);
|
|
92
|
+
apiLines.push('');
|
|
93
|
+
apiLines.push(`\`\`\`\n${entry.signature}\n\`\`\``);
|
|
94
|
+
if (entry.description) {
|
|
95
|
+
apiLines.push('');
|
|
96
|
+
apiLines.push(entry.description);
|
|
97
|
+
}
|
|
98
|
+
apiLines.push('');
|
|
99
|
+
apiLines.push(`*Defined in \`${entry.file}\`*`);
|
|
100
|
+
apiLines.push('');
|
|
101
|
+
}
|
|
102
|
+
sections.push(apiLines.join('\n'));
|
|
103
|
+
}
|
|
104
|
+
// Contributing
|
|
105
|
+
sections.push(`## 🤝 Contributing
|
|
106
|
+
|
|
107
|
+
${data.contributingSection}`);
|
|
108
|
+
// License
|
|
109
|
+
sections.push(`## 📄 License
|
|
110
|
+
|
|
111
|
+
${data.license}`);
|
|
112
|
+
return sections.join('\n\n---\n\n').trim() + '\n';
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=default.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/themes/default.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hacker.d.ts","sourceRoot":"","sources":["../../src/themes/hacker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAgB5C,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAqGpD"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
function asciiBox(title, subtitle) {
|
|
2
|
+
const width = Math.max(title.length, subtitle.length) + 4;
|
|
3
|
+
const top = '╔' + '═'.repeat(width) + '╗';
|
|
4
|
+
const bottom = '╚' + '═'.repeat(width) + '╝';
|
|
5
|
+
const padTitle = title.padEnd(width - 2);
|
|
6
|
+
const padSub = subtitle.padEnd(width - 2);
|
|
7
|
+
return `\`\`\`
|
|
8
|
+
${top}
|
|
9
|
+
║ ${padTitle} ║
|
|
10
|
+
║ ${padSub} ║
|
|
11
|
+
${bottom}
|
|
12
|
+
\`\`\``;
|
|
13
|
+
}
|
|
14
|
+
export function renderHacker(data) {
|
|
15
|
+
const sections = [];
|
|
16
|
+
// ASCII Header
|
|
17
|
+
sections.push(asciiBox(data.projectName, data.tagline));
|
|
18
|
+
// Badges in a code-like format
|
|
19
|
+
if (data.badgeRow) {
|
|
20
|
+
sections.push(data.badgeRow);
|
|
21
|
+
}
|
|
22
|
+
// Overview
|
|
23
|
+
sections.push(`## // Overview
|
|
24
|
+
|
|
25
|
+
> ${data.description.split('\n').join('\n> ')}`);
|
|
26
|
+
// Features
|
|
27
|
+
if (data.keyFeatures.length > 0) {
|
|
28
|
+
const cleanFeatures = data.keyFeatures.map(f => f.replace(/^[\p{Emoji_Presentation}\p{Extended_Pictographic}\s]+/u, ''));
|
|
29
|
+
sections.push(`## // Features
|
|
30
|
+
|
|
31
|
+
${cleanFeatures.map(f => `- [x] ${f}`).join('\n')}`);
|
|
32
|
+
}
|
|
33
|
+
// Architecture
|
|
34
|
+
if (data.diagram) {
|
|
35
|
+
sections.push(`## // Architecture
|
|
36
|
+
|
|
37
|
+
\`\`\`mermaid
|
|
38
|
+
${data.diagram.mermaidCode}
|
|
39
|
+
\`\`\`
|
|
40
|
+
|
|
41
|
+
> ${data.diagram.description}`);
|
|
42
|
+
}
|
|
43
|
+
// File tree
|
|
44
|
+
if (data.directoryTree) {
|
|
45
|
+
sections.push(`## // Project Structure
|
|
46
|
+
|
|
47
|
+
\`\`\`
|
|
48
|
+
${data.directoryTree}
|
|
49
|
+
\`\`\``);
|
|
50
|
+
}
|
|
51
|
+
// Setup
|
|
52
|
+
const installLines = ['## // Setup', ''];
|
|
53
|
+
if (data.installSection.prerequisites.length > 0) {
|
|
54
|
+
installLines.push('**Requirements:**');
|
|
55
|
+
installLines.push(data.installSection.prerequisites.map(p => `- \`${p}\``).join('\n'));
|
|
56
|
+
installLines.push('');
|
|
57
|
+
}
|
|
58
|
+
installLines.push('**Install:**');
|
|
59
|
+
installLines.push('');
|
|
60
|
+
installLines.push('```bash');
|
|
61
|
+
data.installSection.installSteps.forEach(step => {
|
|
62
|
+
installLines.push(`# ${step.title}`);
|
|
63
|
+
installLines.push(step.command);
|
|
64
|
+
});
|
|
65
|
+
installLines.push('```');
|
|
66
|
+
sections.push(installLines.join('\n'));
|
|
67
|
+
// Usage
|
|
68
|
+
if (data.usageSection.examples.length > 0) {
|
|
69
|
+
const usageLines = ['## // Usage', ''];
|
|
70
|
+
for (const example of data.usageSection.examples) {
|
|
71
|
+
usageLines.push(`\`\`\`${example.language}`);
|
|
72
|
+
usageLines.push(`# ${example.title}`);
|
|
73
|
+
usageLines.push(example.code);
|
|
74
|
+
usageLines.push('```');
|
|
75
|
+
usageLines.push('');
|
|
76
|
+
}
|
|
77
|
+
sections.push(usageLines.join('\n'));
|
|
78
|
+
}
|
|
79
|
+
// API
|
|
80
|
+
if (data.apiDocs && data.apiDocs.entries.length > 0) {
|
|
81
|
+
const apiLines = ['## // API Reference', ''];
|
|
82
|
+
for (const entry of data.apiDocs.entries) {
|
|
83
|
+
apiLines.push(`\`${entry.signature}\``);
|
|
84
|
+
if (entry.description)
|
|
85
|
+
apiLines.push(`> ${entry.description}`);
|
|
86
|
+
apiLines.push('');
|
|
87
|
+
}
|
|
88
|
+
sections.push(apiLines.join('\n'));
|
|
89
|
+
}
|
|
90
|
+
// Contributing
|
|
91
|
+
sections.push(`## // Contributing
|
|
92
|
+
|
|
93
|
+
${data.contributingSection}`);
|
|
94
|
+
// License
|
|
95
|
+
sections.push(`## // License
|
|
96
|
+
|
|
97
|
+
${data.license}`);
|
|
98
|
+
return sections.join('\n\n---\n\n').trim() + '\n';
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=hacker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hacker.js","sourceRoot":"","sources":["../../src/themes/hacker.ts"],"names":[],"mappings":"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"}
|