@el-j/magic-helix-core 4.0.0-beta.1 → 4.0.0-beta.3
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/index-B88j4AyE.js +13 -0
- package/dist/index-B88j4AyE.js.map +1 -0
- package/dist/index-CY-pQbuu.cjs +2 -0
- package/dist/index-CY-pQbuu.cjs.map +1 -0
- package/dist/index.cjs +75 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.mjs +2234 -51
- package/dist/index.mjs.map +1 -1
- package/dist/pattern-combiner.d.ts +1 -1
- package/dist/plugin-loader.d.ts +7 -1
- package/package.json +4 -4
- package/dist/BasePlugin-6wv0hYJ9.js +0 -98
- package/dist/BasePlugin-6wv0hYJ9.js.map +0 -1
- package/dist/BasePlugin-odQJAKA-.cjs +0 -2
- package/dist/BasePlugin-odQJAKA-.cjs.map +0 -1
- package/dist/builtin-plugins/base/BasePlugin.d.ts +0 -69
- package/dist/builtin-plugins/csharp/index.d.ts +0 -20
- package/dist/builtin-plugins/go/index.d.ts +0 -23
- package/dist/builtin-plugins/index.d.ts +0 -15
- package/dist/builtin-plugins/java/index.d.ts +0 -22
- package/dist/builtin-plugins/nodejs/index.d.ts +0 -44
- package/dist/builtin-plugins/php/index.d.ts +0 -20
- package/dist/builtin-plugins/python/index.d.ts +0 -27
- package/dist/builtin-plugins/ruby/index.d.ts +0 -20
- package/dist/builtin-plugins/rust/index.d.ts +0 -53
- package/dist/builtin-plugins/swift/index.d.ts +0 -22
- package/dist/default_templates/angular/angular-core.md +0 -19
- package/dist/default_templates/architecture/codeowners.md +0 -123
- package/dist/default_templates/architecture/monorepo.md +0 -146
- package/dist/default_templates/architecture/nx.md +0 -122
- package/dist/default_templates/architecture/turborepo.md +0 -114
- package/dist/default_templates/ci/github-actions.md +0 -268
- package/dist/default_templates/ci/gitlab-ci.md +0 -330
- package/dist/default_templates/containers/docker-multistage.md +0 -120
- package/dist/default_templates/containers/kubernetes-deploy.md +0 -210
- package/dist/default_templates/devops/docker-compose.md +0 -111
- package/dist/default_templates/devops/docker-dockerfile.md +0 -94
- package/dist/default_templates/devops/github-actions.md +0 -160
- package/dist/default_templates/devops/gitlab-ci.md +0 -210
- package/dist/default_templates/dotnet/framework-aspnetcore.md +0 -205
- package/dist/default_templates/dotnet/framework-blazor.md +0 -271
- package/dist/default_templates/dotnet/lang-csharp.md +0 -162
- package/dist/default_templates/generic/lang-typescript.md +0 -11
- package/dist/default_templates/generic/state-redux.md +0 -21
- package/dist/default_templates/generic/state-rxjs.md +0 -6
- package/dist/default_templates/generic/style-mui.md +0 -23
- package/dist/default_templates/generic/style-tailwind.md +0 -6
- package/dist/default_templates/generic/test-cypress.md +0 -21
- package/dist/default_templates/generic/test-jest.md +0 -20
- package/dist/default_templates/generic/test-playwright.md +0 -21
- package/dist/default_templates/generic/test-vitest.md +0 -6
- package/dist/default_templates/go/lang-go.md +0 -571
- package/dist/default_templates/java/build-gradle.md +0 -102
- package/dist/default_templates/java/build-maven.md +0 -86
- package/dist/default_templates/java/framework-spring-boot.md +0 -179
- package/dist/default_templates/java/lang-java.md +0 -78
- package/dist/default_templates/java/lang-kotlin.md +0 -88
- package/dist/default_templates/meta/magic-helix-meta.md +0 -213
- package/dist/default_templates/meta/meta-debug.md +0 -459
- package/dist/default_templates/meta/meta-implement.md +0 -450
- package/dist/default_templates/meta/meta-roadmap.md +0 -265
- package/dist/default_templates/nestjs/nestjs-core.md +0 -7
- package/dist/default_templates/patterns/architecture/clean-architecture.md +0 -469
- package/dist/default_templates/patterns/architecture/dependency-injection.md +0 -517
- package/dist/default_templates/patterns/architecture/domain-driven-design.md +0 -621
- package/dist/default_templates/patterns/architecture/layered-architecture.md +0 -382
- package/dist/default_templates/patterns/architecture/repository-pattern.md +0 -408
- package/dist/default_templates/patterns/domain-expertise/nextjs-rules.md +0 -115
- package/dist/default_templates/patterns/domain-expertise/react-patterns.md +0 -181
- package/dist/default_templates/patterns/domain-expertise/server-components.md +0 -212
- package/dist/default_templates/patterns/domain-expertise/shadcn-ui.md +0 -52
- package/dist/default_templates/patterns/domain-expertise/tailwind-patterns.md +0 -52
- package/dist/default_templates/patterns/environment/container-awareness.md +0 -17
- package/dist/default_templates/patterns/environment/ide-features.md +0 -17
- package/dist/default_templates/patterns/environment/os-commands.md +0 -17
- package/dist/default_templates/patterns/organization/heading-hierarchy.md +0 -103
- package/dist/default_templates/patterns/organization/sequential-workflows.md +0 -102
- package/dist/default_templates/patterns/organization/xml-rule-groups.md +0 -64
- package/dist/default_templates/patterns/reasoning/agent-loop.md +0 -151
- package/dist/default_templates/patterns/reasoning/confirmation-gates.md +0 -141
- package/dist/default_templates/patterns/reasoning/dependency-analysis.md +0 -132
- package/dist/default_templates/patterns/reasoning/one-tool-per-iteration.md +0 -152
- package/dist/default_templates/patterns/reasoning/preview-before-action.md +0 -194
- package/dist/default_templates/patterns/reasoning/reflection-checkpoints.md +0 -166
- package/dist/default_templates/patterns/reasoning/result-verification.md +0 -157
- package/dist/default_templates/patterns/reasoning/subtask-breakdown.md +0 -131
- package/dist/default_templates/patterns/reasoning/thinking-tags.md +0 -100
- package/dist/default_templates/patterns/role-definition/capability-declarations.md +0 -72
- package/dist/default_templates/patterns/role-definition/expert-identity.md +0 -45
- package/dist/default_templates/patterns/role-definition/scope-boundaries.md +0 -61
- package/dist/default_templates/patterns/safety/code-safety-rules.md +0 -17
- package/dist/default_templates/patterns/safety/credential-handling.md +0 -17
- package/dist/default_templates/patterns/safety/destructive-warnings.md +0 -17
- package/dist/default_templates/patterns/safety/refusal-messages.md +0 -17
- package/dist/default_templates/patterns/tone/adaptive-tone.md +0 -17
- package/dist/default_templates/patterns/tone/concise-communication.md +0 -17
- package/dist/default_templates/patterns/tone/forbidden-phrases.md +0 -17
- package/dist/default_templates/patterns/tool-guidelines/function-schemas.md +0 -143
- package/dist/default_templates/patterns/tool-guidelines/parameter-examples.md +0 -137
- package/dist/default_templates/patterns/tool-guidelines/usage-policies.md +0 -105
- package/dist/default_templates/php/framework-laravel.md +0 -112
- package/dist/default_templates/php/lang-php.md +0 -94
- package/dist/default_templates/python/lang-python.md +0 -508
- package/dist/default_templates/react/react-core.md +0 -677
- package/dist/default_templates/react/react-zustand.md +0 -7
- package/dist/default_templates/ruby/framework-rails.md +0 -309
- package/dist/default_templates/ruby/framework-sinatra.md +0 -227
- package/dist/default_templates/ruby/lang-ruby.md +0 -216
- package/dist/default_templates/rust/lang-rust.md +0 -89
- package/dist/default_templates/swift/framework-vapor.md +0 -352
- package/dist/default_templates/swift/lang-swift.md +0 -291
- package/dist/default_templates/vue/style-primevue.md +0 -6
- package/dist/default_templates/vue/style-quasar.md +0 -22
- package/dist/default_templates/vue/vue-core.md +0 -28
- package/dist/default_templates/vue/vue-pinia.md +0 -5
- package/dist/index-AkVwRl-r.js +0 -92
- package/dist/index-AkVwRl-r.js.map +0 -1
- package/dist/index-B6BeG1yT.cjs +0 -68
- package/dist/index-B6BeG1yT.cjs.map +0 -1
- package/dist/index-B8pyjKdF.js +0 -94
- package/dist/index-B8pyjKdF.js.map +0 -1
- package/dist/index-B_6W_RnJ.cjs +0 -76
- package/dist/index-B_6W_RnJ.cjs.map +0 -1
- package/dist/index-Bg8DD8ku.js +0 -216
- package/dist/index-Bg8DD8ku.js.map +0 -1
- package/dist/index-BkJhe5Af.js +0 -1748
- package/dist/index-BkJhe5Af.js.map +0 -1
- package/dist/index-Bv4Q1Pr7.cjs +0 -33
- package/dist/index-Bv4Q1Pr7.cjs.map +0 -1
- package/dist/index-CN8J45Nc.cjs +0 -24
- package/dist/index-CN8J45Nc.cjs.map +0 -1
- package/dist/index-CPbv2Od1.js +0 -62
- package/dist/index-CPbv2Od1.js.map +0 -1
- package/dist/index-Cf-MC6Al.js +0 -63
- package/dist/index-Cf-MC6Al.js.map +0 -1
- package/dist/index-DDPXXXDy.cjs +0 -19
- package/dist/index-DDPXXXDy.cjs.map +0 -1
- package/dist/index-DO30AzDe.cjs +0 -19
- package/dist/index-DO30AzDe.cjs.map +0 -1
- package/dist/index-Dm37u5ut.js +0 -2128
- package/dist/index-Dm37u5ut.js.map +0 -1
- package/dist/index-DqHvgoXJ.cjs +0 -19
- package/dist/index-DqHvgoXJ.cjs.map +0 -1
- package/dist/index-J1qAfsnO.cjs +0 -2
- package/dist/index-J1qAfsnO.cjs.map +0 -1
- package/dist/index-Jz0HYZ7B.js +0 -13
- package/dist/index-Jz0HYZ7B.js.map +0 -1
- package/dist/index-K39pdw94.cjs +0 -31
- package/dist/index-K39pdw94.cjs.map +0 -1
- package/dist/index-L3IVvhd1.cjs +0 -89
- package/dist/index-L3IVvhd1.cjs.map +0 -1
- package/dist/index-OT2XAJkc.js +0 -117
- package/dist/index-OT2XAJkc.js.map +0 -1
- package/dist/index-TPAX4XKg.cjs +0 -30
- package/dist/index-TPAX4XKg.cjs.map +0 -1
- package/dist/index-WmVSB57y.js +0 -107
- package/dist/index-WmVSB57y.js.map +0 -1
- package/dist/index-mYXvc3Fs.js +0 -68
- package/dist/index-mYXvc3Fs.js.map +0 -1
package/dist/index-OT2XAJkc.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { B as p } from "./BasePlugin-6wv0hYJ9.js";
|
|
2
|
-
class d extends p {
|
|
3
|
-
constructor() {
|
|
4
|
-
super(...arguments), this.name = "python", this.displayName = "Python", this.version = "3.0.0", this.priority = 85;
|
|
5
|
-
}
|
|
6
|
-
async detect(e) {
|
|
7
|
-
return this.fileExists(e, "pyproject.toml") ? this.detectFromPyproject(e) : this.fileExists(e, "requirements.txt") ? this.detectFromRequirements(e) : this.fileExists(e, "setup.py") ? {
|
|
8
|
-
language: "Python",
|
|
9
|
-
name: this.getProjectName(e),
|
|
10
|
-
dependencies: {},
|
|
11
|
-
manifestFile: "setup.py",
|
|
12
|
-
projectPath: e
|
|
13
|
-
} : null;
|
|
14
|
-
}
|
|
15
|
-
getTemplates() {
|
|
16
|
-
return [
|
|
17
|
-
{
|
|
18
|
-
name: "python-core",
|
|
19
|
-
tags: ["python"],
|
|
20
|
-
content: this.getPythonTemplate()
|
|
21
|
-
}
|
|
22
|
-
];
|
|
23
|
-
}
|
|
24
|
-
getDependencyTagMap() {
|
|
25
|
-
return {
|
|
26
|
-
django: "django",
|
|
27
|
-
flask: "flask",
|
|
28
|
-
fastapi: "fastapi",
|
|
29
|
-
pytest: "pytest",
|
|
30
|
-
numpy: "numpy",
|
|
31
|
-
pandas: "pandas"
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
// Private helper methods
|
|
35
|
-
detectFromPyproject(e) {
|
|
36
|
-
const t = this.readFile(e, "pyproject.toml");
|
|
37
|
-
if (!t)
|
|
38
|
-
return {
|
|
39
|
-
language: "Python",
|
|
40
|
-
name: this.getProjectName(e),
|
|
41
|
-
dependencies: {},
|
|
42
|
-
manifestFile: "pyproject.toml",
|
|
43
|
-
projectPath: e
|
|
44
|
-
};
|
|
45
|
-
const o = t.match(/name\s*=\s*["']([^"']+)["']/), n = t.match(/description\s*=\s*["']([^"']+)["']/), s = {}, i = t.match(
|
|
46
|
-
/\[tool\.poetry\.dependencies\]([\s\S]*?)(?:\n\[|$)/
|
|
47
|
-
);
|
|
48
|
-
if (i) {
|
|
49
|
-
const a = i[1].split(`
|
|
50
|
-
`);
|
|
51
|
-
for (const c of a) {
|
|
52
|
-
const r = c.match(/^([a-zA-Z0-9_-]+)\s*=\s*["']([^"']+)["']/);
|
|
53
|
-
r && r[1] !== "python" && (s[r[1]] = r[2]);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
language: "Python",
|
|
58
|
-
name: o?.[1] || this.getProjectName(e),
|
|
59
|
-
description: n?.[1],
|
|
60
|
-
dependencies: s,
|
|
61
|
-
manifestFile: "pyproject.toml",
|
|
62
|
-
projectPath: e
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
detectFromRequirements(e) {
|
|
66
|
-
const t = this.readFile(e, "requirements.txt"), o = {};
|
|
67
|
-
if (t) {
|
|
68
|
-
for (const n of t.split(`
|
|
69
|
-
`))
|
|
70
|
-
if (n.trim() && !n.startsWith("#")) {
|
|
71
|
-
const s = n.split(/[=<>]/), i = s[0].trim(), a = s[1]?.trim() || "*";
|
|
72
|
-
i && (o[i] = a);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return {
|
|
76
|
-
language: "Python",
|
|
77
|
-
name: this.getProjectName(e),
|
|
78
|
-
dependencies: o,
|
|
79
|
-
manifestFile: "requirements.txt",
|
|
80
|
-
projectPath: e
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
getPythonTemplate() {
|
|
84
|
-
return `# Python Development Guidelines
|
|
85
|
-
|
|
86
|
-
This project uses Python.
|
|
87
|
-
|
|
88
|
-
## Project Structure
|
|
89
|
-
- Follow PEP 8 style guide
|
|
90
|
-
- Organize code in packages/modules
|
|
91
|
-
- Use virtual environments
|
|
92
|
-
|
|
93
|
-
## Code Style
|
|
94
|
-
- Use type hints where appropriate
|
|
95
|
-
- Follow naming conventions
|
|
96
|
-
- Write docstrings for functions and classes
|
|
97
|
-
|
|
98
|
-
## Dependencies
|
|
99
|
-
- Manage with pip/Poetry/conda
|
|
100
|
-
- Keep requirements.txt or pyproject.toml updated
|
|
101
|
-
- Pin dependency versions
|
|
102
|
-
|
|
103
|
-
## Testing
|
|
104
|
-
- Write tests with pytest
|
|
105
|
-
- Use fixtures for setup/teardown
|
|
106
|
-
- Aim for good test coverage
|
|
107
|
-
|
|
108
|
-
## Best Practices
|
|
109
|
-
- Handle exceptions properly
|
|
110
|
-
- Use context managers for resources
|
|
111
|
-
- Follow Pythonic idioms`;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
export {
|
|
115
|
-
d as PythonPlugin
|
|
116
|
-
};
|
|
117
|
-
//# sourceMappingURL=index-OT2XAJkc.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-OT2XAJkc.js","sources":["../src/builtin-plugins/python/index.ts"],"sourcesContent":["/**\n * Python Language Plugin\n *\n * Detects Python projects via pyproject.toml, requirements.txt, or setup.py\n * Supports Poetry, pip, and setuptools project formats\n */\n\nimport type { ProjectMetadata, TemplateDefinition } from '../../types';\nimport { BasePlugin } from '../base/BasePlugin';\n\nexport class PythonPlugin extends BasePlugin {\n name = 'python';\n displayName = 'Python';\n version = '3.0.0';\n priority = 85;\n\n async detect(projectPath: string): Promise<ProjectMetadata | null> {\n // Check for pyproject.toml (Poetry, modern Python)\n if (this.fileExists(projectPath, 'pyproject.toml')) {\n return this.detectFromPyproject(projectPath);\n }\n\n // Check for requirements.txt (pip)\n if (this.fileExists(projectPath, 'requirements.txt')) {\n return this.detectFromRequirements(projectPath);\n }\n\n // Check for setup.py (setuptools)\n if (this.fileExists(projectPath, 'setup.py')) {\n return {\n language: 'Python',\n name: this.getProjectName(projectPath),\n dependencies: {},\n manifestFile: 'setup.py',\n projectPath,\n };\n }\n\n return null;\n }\n\n getTemplates(): TemplateDefinition[] {\n return [\n {\n name: 'python-core',\n tags: ['python'],\n content: this.getPythonTemplate(),\n },\n ];\n }\n\n getDependencyTagMap() {\n return {\n django: 'django',\n flask: 'flask',\n fastapi: 'fastapi',\n pytest: 'pytest',\n numpy: 'numpy',\n pandas: 'pandas',\n };\n }\n\n // Private helper methods\n\n private detectFromPyproject(projectPath: string): ProjectMetadata {\n const content = this.readFile(projectPath, 'pyproject.toml');\n if (!content) {\n return {\n language: 'Python',\n name: this.getProjectName(projectPath),\n dependencies: {},\n manifestFile: 'pyproject.toml',\n projectPath,\n };\n }\n\n const nameMatch = content.match(/name\\s*=\\s*[\"']([^\"']+)[\"']/);\n const descMatch = content.match(/description\\s*=\\s*[\"']([^\"']+)[\"']/);\n const deps: Record<string, string> = {};\n\n // Parse Poetry dependencies\n const depsSection = content.match(\n /\\[tool\\.poetry\\.dependencies\\]([\\s\\S]*?)(?:\\n\\[|$)/,\n );\n if (depsSection) {\n const lines = depsSection[1].split('\\n');\n for (const line of lines) {\n const depMatch = line.match(/^([a-zA-Z0-9_-]+)\\s*=\\s*[\"']([^\"']+)[\"']/);\n if (depMatch && depMatch[1] !== 'python') {\n deps[depMatch[1]] = depMatch[2];\n }\n }\n }\n\n return {\n language: 'Python',\n name: nameMatch?.[1] || this.getProjectName(projectPath),\n description: descMatch?.[1],\n dependencies: deps,\n manifestFile: 'pyproject.toml',\n projectPath,\n };\n }\n\n private detectFromRequirements(projectPath: string): ProjectMetadata {\n const content = this.readFile(projectPath, 'requirements.txt');\n const deps: Record<string, string> = {};\n\n if (content) {\n for (const line of content.split('\\n')) {\n if (line.trim() && !line.startsWith('#')) {\n const parts = line.split(/[=<>]/);\n const name = parts[0].trim();\n const version = parts[1]?.trim() || '*';\n if (name) deps[name] = version;\n }\n }\n }\n\n return {\n language: 'Python',\n name: this.getProjectName(projectPath),\n dependencies: deps,\n manifestFile: 'requirements.txt',\n projectPath,\n };\n }\n\n private getPythonTemplate(): string {\n return `# Python Development Guidelines\n\nThis project uses Python.\n\n## Project Structure\n- Follow PEP 8 style guide\n- Organize code in packages/modules\n- Use virtual environments\n\n## Code Style\n- Use type hints where appropriate\n- Follow naming conventions\n- Write docstrings for functions and classes\n\n## Dependencies\n- Manage with pip/Poetry/conda\n- Keep requirements.txt or pyproject.toml updated\n- Pin dependency versions\n\n## Testing\n- Write tests with pytest\n- Use fixtures for setup/teardown\n- Aim for good test coverage\n\n## Best Practices\n- Handle exceptions properly\n- Use context managers for resources\n- Follow Pythonic idioms`;\n }\n}\n"],"names":["PythonPlugin","BasePlugin","projectPath","content","nameMatch","descMatch","deps","depsSection","lines","line","depMatch","parts","name","version"],"mappings":";AAUO,MAAMA,UAAqBC,EAAW;AAAA,EAAtC,cAAA;AAAA,UAAA,GAAA,SAAA,GACL,KAAA,OAAO,UACP,KAAA,cAAc,UACd,KAAA,UAAU,SACV,KAAA,WAAW;AAAA,EAAA;AAAA,EAEX,MAAM,OAAOC,GAAsD;AAEjE,WAAI,KAAK,WAAWA,GAAa,gBAAgB,IACxC,KAAK,oBAAoBA,CAAW,IAIzC,KAAK,WAAWA,GAAa,kBAAkB,IAC1C,KAAK,uBAAuBA,CAAW,IAI5C,KAAK,WAAWA,GAAa,UAAU,IAClC;AAAA,MACL,UAAU;AAAA,MACV,MAAM,KAAK,eAAeA,CAAW;AAAA,MACrC,cAAc,CAAA;AAAA,MACd,cAAc;AAAA,MACd,aAAAA;AAAA,IAAA,IAIG;AAAA,EACT;AAAA,EAEA,eAAqC;AACnC,WAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,MAAM,CAAC,QAAQ;AAAA,QACf,SAAS,KAAK,kBAAA;AAAA,MAAkB;AAAA,IAClC;AAAA,EAEJ;AAAA,EAEA,sBAAsB;AACpB,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAAA;AAAA,EAIQ,oBAAoBA,GAAsC;AAChE,UAAMC,IAAU,KAAK,SAASD,GAAa,gBAAgB;AAC3D,QAAI,CAACC;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,MAAM,KAAK,eAAeD,CAAW;AAAA,QACrC,cAAc,CAAA;AAAA,QACd,cAAc;AAAA,QACd,aAAAA;AAAA,MAAA;AAIJ,UAAME,IAAYD,EAAQ,MAAM,6BAA6B,GACvDE,IAAYF,EAAQ,MAAM,oCAAoC,GAC9DG,IAA+B,CAAA,GAG/BC,IAAcJ,EAAQ;AAAA,MAC1B;AAAA,IAAA;AAEF,QAAII,GAAa;AACf,YAAMC,IAAQD,EAAY,CAAC,EAAE,MAAM;AAAA,CAAI;AACvC,iBAAWE,KAAQD,GAAO;AACxB,cAAME,IAAWD,EAAK,MAAM,0CAA0C;AACtE,QAAIC,KAAYA,EAAS,CAAC,MAAM,aAC9BJ,EAAKI,EAAS,CAAC,CAAC,IAAIA,EAAS,CAAC;AAAA,MAElC;AAAA,IACF;AAEA,WAAO;AAAA,MACL,UAAU;AAAA,MACV,MAAMN,IAAY,CAAC,KAAK,KAAK,eAAeF,CAAW;AAAA,MACvD,aAAaG,IAAY,CAAC;AAAA,MAC1B,cAAcC;AAAA,MACd,cAAc;AAAA,MACd,aAAAJ;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEQ,uBAAuBA,GAAsC;AACnE,UAAMC,IAAU,KAAK,SAASD,GAAa,kBAAkB,GACvDI,IAA+B,CAAA;AAErC,QAAIH;AACF,iBAAWM,KAAQN,EAAQ,MAAM;AAAA,CAAI;AACnC,YAAIM,EAAK,KAAA,KAAU,CAACA,EAAK,WAAW,GAAG,GAAG;AACxC,gBAAME,IAAQF,EAAK,MAAM,OAAO,GAC1BG,IAAOD,EAAM,CAAC,EAAE,KAAA,GAChBE,IAAUF,EAAM,CAAC,GAAG,UAAU;AACpC,UAAIC,MAAMN,EAAKM,CAAI,IAAIC;AAAA,QACzB;AAAA;AAIJ,WAAO;AAAA,MACL,UAAU;AAAA,MACV,MAAM,KAAK,eAAeX,CAAW;AAAA,MACrC,cAAcI;AAAA,MACd,cAAc;AAAA,MACd,aAAAJ;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEQ,oBAA4B;AAClC,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA4BT;AACF;"}
|
package/dist/index-TPAX4XKg.cjs
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("./BasePlugin-odQJAKA-.cjs");class l extends g.BasePlugin{constructor(){super(...arguments),this.name="go",this.displayName="Go",this.version="3.0.0",this.priority=90}async detect(t){if(!this.fileExists(t,"go.mod"))return null;const o=this.readFile(t,"go.mod");if(!o)return{language:"Go",name:this.getProjectName(t),dependencies:{},manifestFile:"go.mod",projectPath:t};const r=o.match(/module\s+([^\s\n]+)/),n={},a=o.split(`
|
|
2
|
-
`);let s=!1;for(const i of a){if(i.trim().startsWith("require (")){s=!0;continue}if(s){if(i.trim()===")")break;const e=i.match(/^\s*([^\s]+)\s+v([^\s]+)/);e&&(n[e[1]]=e[2])}else if(i.trim().startsWith("require ")){const e=i.match(/require\s+([^\s]+)\s+v([^\s]+)/);e&&(n[e[1]]=e[2])}}return{language:"Go",name:r?.[1]||this.getProjectName(t),dependencies:n,manifestFile:"go.mod",projectPath:t}}getTemplates(){return[{name:"go-core",tags:["go"],content:this.getGoTemplate()}]}getDependencyTagMap(){return{"github.com/gin-gonic/gin":"gin","github.com/gofiber/fiber":"fiber","github.com/labstack/echo":"echo","gorm.io/gorm":"gorm"}}getGoTemplate(){return`# Go Development Guidelines
|
|
3
|
-
|
|
4
|
-
This project uses Go.
|
|
5
|
-
|
|
6
|
-
## Project Structure
|
|
7
|
-
- Follow standard Go project layout
|
|
8
|
-
- Organize code in packages
|
|
9
|
-
- Use proper module management
|
|
10
|
-
|
|
11
|
-
## Code Style
|
|
12
|
-
- Follow Go conventions and idioms
|
|
13
|
-
- Use \`gofmt\` for formatting
|
|
14
|
-
- Run \`golint\` and \`go vet\`
|
|
15
|
-
|
|
16
|
-
## Error Handling
|
|
17
|
-
- Handle errors explicitly
|
|
18
|
-
- Don't ignore errors
|
|
19
|
-
- Provide meaningful error messages
|
|
20
|
-
|
|
21
|
-
## Testing
|
|
22
|
-
- Write table-driven tests
|
|
23
|
-
- Use \`testing\` package
|
|
24
|
-
- Aim for good test coverage
|
|
25
|
-
|
|
26
|
-
## Dependencies
|
|
27
|
-
- Use Go modules (\`go.mod\`)
|
|
28
|
-
- Keep dependencies minimal
|
|
29
|
-
- Review dependency licenses`}}exports.GoPlugin=l;
|
|
30
|
-
//# sourceMappingURL=index-TPAX4XKg.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-TPAX4XKg.cjs","sources":["../src/builtin-plugins/go/index.ts"],"sourcesContent":["/**\n * Go Language Plugin\n *\n * Detects Go projects via go.mod file\n * Parses module dependencies from go.mod\n */\n\nimport type { ProjectMetadata, TemplateDefinition } from '../../types';\nimport { BasePlugin } from '../base/BasePlugin';\n\nexport class GoPlugin extends BasePlugin {\n name = 'go';\n displayName = 'Go';\n version = '3.0.0';\n priority = 90;\n\n async detect(projectPath: string): Promise<ProjectMetadata | null> {\n if (!this.fileExists(projectPath, 'go.mod')) {\n return null;\n }\n\n const content = this.readFile(projectPath, 'go.mod');\n if (!content) {\n return {\n language: 'Go',\n name: this.getProjectName(projectPath),\n dependencies: {},\n manifestFile: 'go.mod',\n projectPath,\n };\n }\n\n const moduleMatch = content.match(/module\\s+([^\\s\\n]+)/);\n const deps: Record<string, string> = {};\n\n // Parse dependencies\n const lines = content.split('\\n');\n let inRequire = false;\n for (const line of lines) {\n if (line.trim().startsWith('require (')) {\n inRequire = true;\n continue;\n }\n if (inRequire) {\n if (line.trim() === ')') break;\n const depMatch = line.match(/^\\s*([^\\s]+)\\s+v([^\\s]+)/);\n if (depMatch) {\n deps[depMatch[1]] = depMatch[2];\n }\n } else if (line.trim().startsWith('require ')) {\n const depMatch = line.match(/require\\s+([^\\s]+)\\s+v([^\\s]+)/);\n if (depMatch) {\n deps[depMatch[1]] = depMatch[2];\n }\n }\n }\n\n return {\n language: 'Go',\n name: moduleMatch?.[1] || this.getProjectName(projectPath),\n dependencies: deps,\n manifestFile: 'go.mod',\n projectPath,\n };\n }\n\n getTemplates(): TemplateDefinition[] {\n return [\n {\n name: 'go-core',\n tags: ['go'],\n content: this.getGoTemplate(),\n },\n ];\n }\n\n getDependencyTagMap() {\n return {\n 'github.com/gin-gonic/gin': 'gin',\n 'github.com/gofiber/fiber': 'fiber',\n 'github.com/labstack/echo': 'echo',\n 'gorm.io/gorm': 'gorm',\n };\n }\n\n private getGoTemplate(): string {\n return `# Go Development Guidelines\n\nThis project uses Go.\n\n## Project Structure\n- Follow standard Go project layout\n- Organize code in packages\n- Use proper module management\n\n## Code Style\n- Follow Go conventions and idioms\n- Use \\`gofmt\\` for formatting\n- Run \\`golint\\` and \\`go vet\\`\n\n## Error Handling\n- Handle errors explicitly\n- Don't ignore errors\n- Provide meaningful error messages\n\n## Testing\n- Write table-driven tests\n- Use \\`testing\\` package\n- Aim for good test coverage\n\n## Dependencies\n- Use Go modules (\\`go.mod\\`)\n- Keep dependencies minimal\n- Review dependency licenses`;\n }\n}\n"],"names":["GoPlugin","BasePlugin","projectPath","content","moduleMatch","deps","lines","inRequire","line","depMatch"],"mappings":"6HAUO,MAAMA,UAAiBC,EAAAA,UAAW,CAAlC,aAAA,CAAA,MAAA,GAAA,SAAA,EACL,KAAA,KAAO,KACP,KAAA,YAAc,KACd,KAAA,QAAU,QACV,KAAA,SAAW,EAAA,CAEX,MAAM,OAAOC,EAAsD,CACjE,GAAI,CAAC,KAAK,WAAWA,EAAa,QAAQ,EACxC,OAAO,KAGT,MAAMC,EAAU,KAAK,SAASD,EAAa,QAAQ,EACnD,GAAI,CAACC,EACH,MAAO,CACL,SAAU,KACV,KAAM,KAAK,eAAeD,CAAW,EACrC,aAAc,CAAA,EACd,aAAc,SACd,YAAAA,CAAA,EAIJ,MAAME,EAAcD,EAAQ,MAAM,qBAAqB,EACjDE,EAA+B,CAAA,EAG/BC,EAAQH,EAAQ,MAAM;AAAA,CAAI,EAChC,IAAII,EAAY,GAChB,UAAWC,KAAQF,EAAO,CACxB,GAAIE,EAAK,KAAA,EAAO,WAAW,WAAW,EAAG,CACvCD,EAAY,GACZ,QACF,CACA,GAAIA,EAAW,CACb,GAAIC,EAAK,KAAA,IAAW,IAAK,MACzB,MAAMC,EAAWD,EAAK,MAAM,0BAA0B,EAClDC,IACFJ,EAAKI,EAAS,CAAC,CAAC,EAAIA,EAAS,CAAC,EAElC,SAAWD,EAAK,KAAA,EAAO,WAAW,UAAU,EAAG,CAC7C,MAAMC,EAAWD,EAAK,MAAM,gCAAgC,EACxDC,IACFJ,EAAKI,EAAS,CAAC,CAAC,EAAIA,EAAS,CAAC,EAElC,CACF,CAEA,MAAO,CACL,SAAU,KACV,KAAML,IAAc,CAAC,GAAK,KAAK,eAAeF,CAAW,EACzD,aAAcG,EACd,aAAc,SACd,YAAAH,CAAA,CAEJ,CAEA,cAAqC,CACnC,MAAO,CACL,CACE,KAAM,UACN,KAAM,CAAC,IAAI,EACX,QAAS,KAAK,cAAA,CAAc,CAC9B,CAEJ,CAEA,qBAAsB,CACpB,MAAO,CACL,2BAA4B,MAC5B,2BAA4B,QAC5B,2BAA4B,OAC5B,eAAgB,MAAA,CAEpB,CAEQ,eAAwB,CAC9B,MAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BA4BT,CACF"}
|
package/dist/index-WmVSB57y.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { B as f } from "./BasePlugin-6wv0hYJ9.js";
|
|
2
|
-
class u extends f {
|
|
3
|
-
constructor() {
|
|
4
|
-
super(...arguments), this.name = "swift", this.displayName = "Swift", this.version = "3.0.0", this.priority = 75;
|
|
5
|
-
}
|
|
6
|
-
async detect(e) {
|
|
7
|
-
if (this.fileExists(e, "Package.swift"))
|
|
8
|
-
return this.detectSPM(e);
|
|
9
|
-
const t = await this.hasFiles(e, "**/*.xcodeproj"), s = await this.hasFiles(
|
|
10
|
-
e,
|
|
11
|
-
"**/*.xcworkspace"
|
|
12
|
-
);
|
|
13
|
-
return t || s ? this.detectXcode(e) : await this.hasFiles(e, "**/*.swift") ? {
|
|
14
|
-
language: "Swift",
|
|
15
|
-
name: this.getProjectName(e),
|
|
16
|
-
dependencies: {},
|
|
17
|
-
projectPath: e
|
|
18
|
-
} : null;
|
|
19
|
-
}
|
|
20
|
-
getTemplates() {
|
|
21
|
-
return [
|
|
22
|
-
{
|
|
23
|
-
name: "swift-core",
|
|
24
|
-
tags: ["swift"],
|
|
25
|
-
content: `# Swift Development Guidelines
|
|
26
|
-
|
|
27
|
-
This project uses Swift.
|
|
28
|
-
|
|
29
|
-
## Project Structure
|
|
30
|
-
- Follow Swift Package Manager conventions
|
|
31
|
-
- Use clear module organization
|
|
32
|
-
- Separate concerns appropriately
|
|
33
|
-
|
|
34
|
-
## Code Style
|
|
35
|
-
- Follow Swift API Design Guidelines
|
|
36
|
-
- Use Swift naming conventions (lowerCamelCase for vars/funcs, UpperCamelCase for types)
|
|
37
|
-
- Leverage SwiftLint for consistency
|
|
38
|
-
- Prefer value types (structs) over reference types when appropriate
|
|
39
|
-
|
|
40
|
-
## Best Practices
|
|
41
|
-
- Use optionals safely with guard/if let
|
|
42
|
-
- Leverage protocol-oriented programming
|
|
43
|
-
- Use strong type system features
|
|
44
|
-
- Handle errors with do/catch or Result types
|
|
45
|
-
- Write clear documentation comments
|
|
46
|
-
|
|
47
|
-
## Async/Concurrency
|
|
48
|
-
- Use async/await for asynchronous operations
|
|
49
|
-
- Use actors for shared mutable state
|
|
50
|
-
- Understand structured concurrency patterns
|
|
51
|
-
|
|
52
|
-
## Testing
|
|
53
|
-
- Write XCTest unit tests
|
|
54
|
-
- Use Quick/Nimble for BDD-style tests (if applicable)
|
|
55
|
-
- Mock dependencies appropriately
|
|
56
|
-
- Test async code with expectations`
|
|
57
|
-
}
|
|
58
|
-
];
|
|
59
|
-
}
|
|
60
|
-
getDependencyTagMap() {
|
|
61
|
-
return {
|
|
62
|
-
vapor: "vapor",
|
|
63
|
-
Vapor: "vapor",
|
|
64
|
-
swift: "swift"
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
detectSPM(e) {
|
|
68
|
-
const t = this.readFile(e, "Package.swift");
|
|
69
|
-
if (!t)
|
|
70
|
-
return {
|
|
71
|
-
language: "Swift",
|
|
72
|
-
name: this.getProjectName(e),
|
|
73
|
-
dependencies: {},
|
|
74
|
-
manifestFile: "Package.swift",
|
|
75
|
-
projectPath: e
|
|
76
|
-
};
|
|
77
|
-
const s = {}, i = {
|
|
78
|
-
language: "Swift",
|
|
79
|
-
name: this.getProjectName(e),
|
|
80
|
-
dependencies: s,
|
|
81
|
-
manifestFile: "Package.swift",
|
|
82
|
-
projectPath: e
|
|
83
|
-
}, a = t.match(/name:\s*"([^"]+)"/);
|
|
84
|
-
a && (i.name = a[1]);
|
|
85
|
-
const n = t.match(/swift-tools-version:\s*([\d.]+)/);
|
|
86
|
-
n && (i.description = `Swift ${n[1]}`), (t.includes("vapor") || t.includes("Vapor")) && (s.vapor = "*");
|
|
87
|
-
const o = t.matchAll(/\.package\([^)]+url:\s*"([^"]+)"/g);
|
|
88
|
-
for (const c of o) {
|
|
89
|
-
const r = c[1], l = r.split("/").pop()?.replace(".git", "") || r;
|
|
90
|
-
s[l] = "*";
|
|
91
|
-
}
|
|
92
|
-
return i;
|
|
93
|
-
}
|
|
94
|
-
detectXcode(e) {
|
|
95
|
-
return {
|
|
96
|
-
language: "Swift",
|
|
97
|
-
name: this.getProjectName(e),
|
|
98
|
-
dependencies: {},
|
|
99
|
-
description: "Xcode project",
|
|
100
|
-
projectPath: e
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
export {
|
|
105
|
-
u as SwiftPlugin
|
|
106
|
-
};
|
|
107
|
-
//# sourceMappingURL=index-WmVSB57y.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-WmVSB57y.js","sources":["../src/builtin-plugins/swift/index.ts"],"sourcesContent":["/**\n * Swift Language Plugin\n *\n * Detects Swift projects via Package.swift, .xcodeproj, or .xcworkspace\n */\n\nimport type { ProjectMetadata, TemplateDefinition } from '../../types';\nimport { BasePlugin } from '../base/BasePlugin';\n\nexport class SwiftPlugin extends BasePlugin {\n name = 'swift';\n displayName = 'Swift';\n version = '3.0.0';\n priority = 75;\n\n async detect(projectPath: string): Promise<ProjectMetadata | null> {\n // Check for Swift Package Manager\n if (this.fileExists(projectPath, 'Package.swift')) {\n return this.detectSPM(projectPath);\n }\n\n // Check for Xcode project\n const hasXcodeProject = await this.hasFiles(projectPath, '**/*.xcodeproj');\n const hasXcodeWorkspace = await this.hasFiles(\n projectPath,\n '**/*.xcworkspace',\n );\n\n if (hasXcodeProject || hasXcodeWorkspace) {\n return this.detectXcode(projectPath);\n }\n\n // Check for Swift files\n if (await this.hasFiles(projectPath, '**/*.swift')) {\n return {\n language: 'Swift',\n name: this.getProjectName(projectPath),\n dependencies: {},\n projectPath,\n };\n }\n\n return null;\n }\n\n getTemplates(): TemplateDefinition[] {\n return [\n {\n name: 'swift-core',\n tags: ['swift'],\n content: `# Swift Development Guidelines\n\nThis project uses Swift.\n\n## Project Structure\n- Follow Swift Package Manager conventions\n- Use clear module organization\n- Separate concerns appropriately\n\n## Code Style\n- Follow Swift API Design Guidelines\n- Use Swift naming conventions (lowerCamelCase for vars/funcs, UpperCamelCase for types)\n- Leverage SwiftLint for consistency\n- Prefer value types (structs) over reference types when appropriate\n\n## Best Practices\n- Use optionals safely with guard/if let\n- Leverage protocol-oriented programming\n- Use strong type system features\n- Handle errors with do/catch or Result types\n- Write clear documentation comments\n\n## Async/Concurrency\n- Use async/await for asynchronous operations\n- Use actors for shared mutable state\n- Understand structured concurrency patterns\n\n## Testing\n- Write XCTest unit tests\n- Use Quick/Nimble for BDD-style tests (if applicable)\n- Mock dependencies appropriately\n- Test async code with expectations`,\n },\n ];\n }\n\n getDependencyTagMap() {\n return {\n vapor: 'vapor',\n Vapor: 'vapor',\n swift: 'swift',\n };\n }\n\n private detectSPM(projectPath: string): ProjectMetadata {\n const content = this.readFile(projectPath, 'Package.swift');\n if (!content) {\n return {\n language: 'Swift',\n name: this.getProjectName(projectPath),\n dependencies: {},\n manifestFile: 'Package.swift',\n projectPath,\n };\n }\n\n const deps: Record<string, string> = {};\n const metadata: ProjectMetadata = {\n language: 'Swift',\n name: this.getProjectName(projectPath),\n dependencies: deps,\n manifestFile: 'Package.swift',\n projectPath,\n };\n\n // Extract package name\n const packageNameMatch = content.match(/name:\\s*\"([^\"]+)\"/);\n if (packageNameMatch) {\n metadata.name = packageNameMatch[1];\n }\n\n // Extract Swift tools version\n const swiftVersionMatch = content.match(/swift-tools-version:\\s*([\\d.]+)/);\n if (swiftVersionMatch) {\n metadata.description = `Swift ${swiftVersionMatch[1]}`;\n }\n\n // Detect Vapor framework\n if (content.includes('vapor') || content.includes('Vapor')) {\n deps.vapor = '*';\n }\n\n // Extract dependencies (simplified)\n const depMatches = content.matchAll(/\\.package\\([^)]+url:\\s*\"([^\"]+)\"/g);\n for (const match of depMatches) {\n const url = match[1];\n const depName = url.split('/').pop()?.replace('.git', '') || url;\n deps[depName] = '*';\n }\n\n return metadata;\n }\n\n private detectXcode(projectPath: string): ProjectMetadata {\n return {\n language: 'Swift',\n name: this.getProjectName(projectPath),\n dependencies: {},\n description: 'Xcode project',\n projectPath,\n };\n }\n}\n"],"names":["SwiftPlugin","BasePlugin","projectPath","hasXcodeProject","hasXcodeWorkspace","content","deps","metadata","packageNameMatch","swiftVersionMatch","depMatches","match","url","depName"],"mappings":";AASO,MAAMA,UAAoBC,EAAW;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA,GACL,KAAA,OAAO,SACP,KAAA,cAAc,SACd,KAAA,UAAU,SACV,KAAA,WAAW;AAAA,EAAA;AAAA,EAEX,MAAM,OAAOC,GAAsD;AAEjE,QAAI,KAAK,WAAWA,GAAa,eAAe;AAC9C,aAAO,KAAK,UAAUA,CAAW;AAInC,UAAMC,IAAkB,MAAM,KAAK,SAASD,GAAa,gBAAgB,GACnEE,IAAoB,MAAM,KAAK;AAAA,MACnCF;AAAA,MACA;AAAA,IAAA;AAGF,WAAIC,KAAmBC,IACd,KAAK,YAAYF,CAAW,IAIjC,MAAM,KAAK,SAASA,GAAa,YAAY,IACxC;AAAA,MACL,UAAU;AAAA,MACV,MAAM,KAAK,eAAeA,CAAW;AAAA,MACrC,cAAc,CAAA;AAAA,MACd,aAAAA;AAAA,IAAA,IAIG;AAAA,EACT;AAAA,EAEA,eAAqC;AACnC,WAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,MAAM,CAAC,OAAO;AAAA,QACd,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,IAgCX;AAAA,EAEJ;AAAA,EAEA,sBAAsB;AACpB,WAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,IAAA;AAAA,EAEX;AAAA,EAEQ,UAAUA,GAAsC;AACtD,UAAMG,IAAU,KAAK,SAASH,GAAa,eAAe;AAC1D,QAAI,CAACG;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,MAAM,KAAK,eAAeH,CAAW;AAAA,QACrC,cAAc,CAAA;AAAA,QACd,cAAc;AAAA,QACd,aAAAA;AAAA,MAAA;AAIJ,UAAMI,IAA+B,CAAA,GAC/BC,IAA4B;AAAA,MAChC,UAAU;AAAA,MACV,MAAM,KAAK,eAAeL,CAAW;AAAA,MACrC,cAAcI;AAAA,MACd,cAAc;AAAA,MACd,aAAAJ;AAAA,IAAA,GAIIM,IAAmBH,EAAQ,MAAM,mBAAmB;AAC1D,IAAIG,MACFD,EAAS,OAAOC,EAAiB,CAAC;AAIpC,UAAMC,IAAoBJ,EAAQ,MAAM,iCAAiC;AACzE,IAAII,MACFF,EAAS,cAAc,SAASE,EAAkB,CAAC,CAAC,MAIlDJ,EAAQ,SAAS,OAAO,KAAKA,EAAQ,SAAS,OAAO,OACvDC,EAAK,QAAQ;AAIf,UAAMI,IAAaL,EAAQ,SAAS,mCAAmC;AACvE,eAAWM,KAASD,GAAY;AAC9B,YAAME,IAAMD,EAAM,CAAC,GACbE,IAAUD,EAAI,MAAM,GAAG,EAAE,OAAO,QAAQ,QAAQ,EAAE,KAAKA;AAC7D,MAAAN,EAAKO,CAAO,IAAI;AAAA,IAClB;AAEA,WAAON;AAAA,EACT;AAAA,EAEQ,YAAYL,GAAsC;AACxD,WAAO;AAAA,MACL,UAAU;AAAA,MACV,MAAM,KAAK,eAAeA,CAAW;AAAA,MACrC,cAAc,CAAA;AAAA,MACd,aAAa;AAAA,MACb,aAAAA;AAAA,IAAA;AAAA,EAEJ;AACF;"}
|
package/dist/index-mYXvc3Fs.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { B as i } from "./BasePlugin-6wv0hYJ9.js";
|
|
2
|
-
class t extends i {
|
|
3
|
-
constructor() {
|
|
4
|
-
super(...arguments), this.name = "php", this.displayName = "PHP", this.version = "3.0.0", this.priority = 65;
|
|
5
|
-
}
|
|
6
|
-
async detect(e) {
|
|
7
|
-
if (!this.fileExists(e, "composer.json"))
|
|
8
|
-
return null;
|
|
9
|
-
const s = this.readJSON(e, "composer.json");
|
|
10
|
-
if (!s)
|
|
11
|
-
return {
|
|
12
|
-
language: "PHP",
|
|
13
|
-
name: this.getProjectName(e),
|
|
14
|
-
dependencies: {},
|
|
15
|
-
manifestFile: "composer.json",
|
|
16
|
-
projectPath: e
|
|
17
|
-
};
|
|
18
|
-
const n = {
|
|
19
|
-
...s.require,
|
|
20
|
-
...s["require-dev"]
|
|
21
|
-
};
|
|
22
|
-
return {
|
|
23
|
-
language: "PHP",
|
|
24
|
-
name: s.name || this.getProjectName(e),
|
|
25
|
-
description: s.description,
|
|
26
|
-
dependencies: n,
|
|
27
|
-
manifestFile: "composer.json",
|
|
28
|
-
projectPath: e
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
getTemplates() {
|
|
32
|
-
return [
|
|
33
|
-
{
|
|
34
|
-
name: "php-core",
|
|
35
|
-
tags: ["php"],
|
|
36
|
-
content: `# PHP Development Guidelines
|
|
37
|
-
|
|
38
|
-
This project uses PHP.
|
|
39
|
-
|
|
40
|
-
## Code Style
|
|
41
|
-
- Follow PSR-12 coding standard
|
|
42
|
-
- Use PHP-CS-Fixer
|
|
43
|
-
- Type hint where possible
|
|
44
|
-
|
|
45
|
-
## Dependencies
|
|
46
|
-
- Manage with Composer
|
|
47
|
-
- Keep composer.lock committed
|
|
48
|
-
- Review package security
|
|
49
|
-
|
|
50
|
-
## Testing
|
|
51
|
-
- Write PHPUnit tests
|
|
52
|
-
- Use proper assertions
|
|
53
|
-
- Aim for good coverage`
|
|
54
|
-
}
|
|
55
|
-
];
|
|
56
|
-
}
|
|
57
|
-
getDependencyTagMap() {
|
|
58
|
-
return {
|
|
59
|
-
"laravel/framework": "laravel",
|
|
60
|
-
"symfony/symfony": "symfony",
|
|
61
|
-
"phpunit/phpunit": "phpunit"
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
export {
|
|
66
|
-
t as PHPPlugin
|
|
67
|
-
};
|
|
68
|
-
//# sourceMappingURL=index-mYXvc3Fs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-mYXvc3Fs.js","sources":["../src/builtin-plugins/php/index.ts"],"sourcesContent":["/**\n * PHP Language Plugin\n *\n * Detects PHP projects via composer.json\n */\n\nimport type { ProjectMetadata, TemplateDefinition } from '../../types';\nimport { BasePlugin } from '../base/BasePlugin';\n\nexport class PHPPlugin extends BasePlugin {\n name = 'php';\n displayName = 'PHP';\n version = '3.0.0';\n priority = 65;\n\n async detect(projectPath: string): Promise<ProjectMetadata | null> {\n if (!this.fileExists(projectPath, 'composer.json')) {\n return null;\n }\n\n const composer = this.readJSON<{\n name?: string;\n description?: string;\n require?: Record<string, string>;\n 'require-dev'?: Record<string, string>;\n }>(projectPath, 'composer.json');\n\n if (!composer) {\n return {\n language: 'PHP',\n name: this.getProjectName(projectPath),\n dependencies: {},\n manifestFile: 'composer.json',\n projectPath,\n };\n }\n\n const deps = {\n ...composer.require,\n ...composer['require-dev'],\n };\n\n return {\n language: 'PHP',\n name: composer.name || this.getProjectName(projectPath),\n description: composer.description,\n dependencies: deps,\n manifestFile: 'composer.json',\n projectPath,\n };\n }\n\n getTemplates(): TemplateDefinition[] {\n return [\n {\n name: 'php-core',\n tags: ['php'],\n content: `# PHP Development Guidelines\n\nThis project uses PHP.\n\n## Code Style\n- Follow PSR-12 coding standard\n- Use PHP-CS-Fixer\n- Type hint where possible\n\n## Dependencies\n- Manage with Composer\n- Keep composer.lock committed\n- Review package security\n\n## Testing\n- Write PHPUnit tests\n- Use proper assertions\n- Aim for good coverage`,\n },\n ];\n }\n\n getDependencyTagMap() {\n return {\n 'laravel/framework': 'laravel',\n 'symfony/symfony': 'symfony',\n 'phpunit/phpunit': 'phpunit',\n };\n }\n}\n"],"names":["PHPPlugin","BasePlugin","projectPath","composer","deps"],"mappings":";AASO,MAAMA,UAAkBC,EAAW;AAAA,EAAnC,cAAA;AAAA,UAAA,GAAA,SAAA,GACL,KAAA,OAAO,OACP,KAAA,cAAc,OACd,KAAA,UAAU,SACV,KAAA,WAAW;AAAA,EAAA;AAAA,EAEX,MAAM,OAAOC,GAAsD;AACjE,QAAI,CAAC,KAAK,WAAWA,GAAa,eAAe;AAC/C,aAAO;AAGT,UAAMC,IAAW,KAAK,SAKnBD,GAAa,eAAe;AAE/B,QAAI,CAACC;AACH,aAAO;AAAA,QACL,UAAU;AAAA,QACV,MAAM,KAAK,eAAeD,CAAW;AAAA,QACrC,cAAc,CAAA;AAAA,QACd,cAAc;AAAA,QACd,aAAAA;AAAA,MAAA;AAIJ,UAAME,IAAO;AAAA,MACX,GAAGD,EAAS;AAAA,MACZ,GAAGA,EAAS,aAAa;AAAA,IAAA;AAG3B,WAAO;AAAA,MACL,UAAU;AAAA,MACV,MAAMA,EAAS,QAAQ,KAAK,eAAeD,CAAW;AAAA,MACtD,aAAaC,EAAS;AAAA,MACtB,cAAcC;AAAA,MACd,cAAc;AAAA,MACd,aAAAF;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,eAAqC;AACnC,WAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,MAAM,CAAC,KAAK;AAAA,QACZ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,IAkBX;AAAA,EAEJ;AAAA,EAEA,sBAAsB;AACpB,WAAO;AAAA,MACL,qBAAqB;AAAA,MACrB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IAAA;AAAA,EAEvB;AACF;"}
|