forgehive 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +280 -5
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -9450,6 +9450,279 @@ async function promptConfirm(question) {
|
|
|
9450
9450
|
});
|
|
9451
9451
|
});
|
|
9452
9452
|
}
|
|
9453
|
+
var ANSI = { bold: "\x1B[1m", dim: "\x1B[2m", reset: "\x1B[0m" };
|
|
9454
|
+
var CAP_DISPLAY = {
|
|
9455
|
+
// Sprache
|
|
9456
|
+
javascript: "JavaScript",
|
|
9457
|
+
typescript: "TypeScript",
|
|
9458
|
+
python: "Python",
|
|
9459
|
+
rust: "Rust",
|
|
9460
|
+
golang: "Go",
|
|
9461
|
+
java: "Java",
|
|
9462
|
+
kotlin: "Kotlin",
|
|
9463
|
+
scala: "Scala",
|
|
9464
|
+
ruby: "Ruby",
|
|
9465
|
+
php: "PHP",
|
|
9466
|
+
csharp: "C#",
|
|
9467
|
+
fsharp: "F#",
|
|
9468
|
+
vbnet: "VB.NET",
|
|
9469
|
+
swift: "Swift",
|
|
9470
|
+
dart: "Dart",
|
|
9471
|
+
elixir: "Elixir",
|
|
9472
|
+
crystal: "Crystal",
|
|
9473
|
+
zig: "Zig",
|
|
9474
|
+
nim: "Nim",
|
|
9475
|
+
perl: "Perl",
|
|
9476
|
+
cpp: "C++",
|
|
9477
|
+
cmake: "CMake",
|
|
9478
|
+
// Runtime
|
|
9479
|
+
nodejs: "Node.js",
|
|
9480
|
+
dotnet: ".NET",
|
|
9481
|
+
jvm: "JVM",
|
|
9482
|
+
flutter: "Flutter",
|
|
9483
|
+
// Framework
|
|
9484
|
+
react: "React",
|
|
9485
|
+
nextjs: "Next.js",
|
|
9486
|
+
vue: "Vue",
|
|
9487
|
+
nuxt: "Nuxt",
|
|
9488
|
+
svelte: "Svelte",
|
|
9489
|
+
sveltekit: "SvelteKit",
|
|
9490
|
+
angular: "Angular",
|
|
9491
|
+
remix: "Remix",
|
|
9492
|
+
astro: "Astro",
|
|
9493
|
+
gatsby: "Gatsby",
|
|
9494
|
+
qwik: "Qwik",
|
|
9495
|
+
solidjs: "SolidJS",
|
|
9496
|
+
express: "Express",
|
|
9497
|
+
fastify: "Fastify",
|
|
9498
|
+
nestjs: "NestJS",
|
|
9499
|
+
hono: "Hono",
|
|
9500
|
+
koa: "Koa",
|
|
9501
|
+
hapi: "Hapi",
|
|
9502
|
+
feathers: "Feathers",
|
|
9503
|
+
fastapi: "FastAPI",
|
|
9504
|
+
django: "Django",
|
|
9505
|
+
flask: "Flask",
|
|
9506
|
+
starlette: "Starlette",
|
|
9507
|
+
tornado: "Tornado",
|
|
9508
|
+
litestar: "Litestar",
|
|
9509
|
+
rails: "Rails",
|
|
9510
|
+
sinatra: "Sinatra",
|
|
9511
|
+
grape: "Grape",
|
|
9512
|
+
hanami: "Hanami",
|
|
9513
|
+
"spring-boot": "Spring Boot",
|
|
9514
|
+
"spring-web": "Spring Web",
|
|
9515
|
+
quarkus: "Quarkus",
|
|
9516
|
+
micronaut: "Micronaut",
|
|
9517
|
+
ktor: "Ktor",
|
|
9518
|
+
phoenix: "Phoenix",
|
|
9519
|
+
axum: "Axum",
|
|
9520
|
+
"actix-web": "Actix Web",
|
|
9521
|
+
warp: "Warp",
|
|
9522
|
+
rocket: "Rocket",
|
|
9523
|
+
poem: "Poem",
|
|
9524
|
+
gin: "Gin",
|
|
9525
|
+
echo: "Echo",
|
|
9526
|
+
fiber: "Fiber",
|
|
9527
|
+
chi: "Chi",
|
|
9528
|
+
"gorilla-mux": "Gorilla Mux",
|
|
9529
|
+
wpf: "WPF",
|
|
9530
|
+
avalonia: "Avalonia",
|
|
9531
|
+
maui: "MAUI",
|
|
9532
|
+
blazor: "Blazor",
|
|
9533
|
+
"uno-platform": "Uno Platform",
|
|
9534
|
+
liveview: "LiveView",
|
|
9535
|
+
mvvm: "MVVM",
|
|
9536
|
+
carter: "Carter",
|
|
9537
|
+
fastendpoints: "FastEndpoints",
|
|
9538
|
+
// ORM / DB
|
|
9539
|
+
prisma: "Prisma",
|
|
9540
|
+
drizzle: "Drizzle",
|
|
9541
|
+
typeorm: "TypeORM",
|
|
9542
|
+
mongoose: "Mongoose",
|
|
9543
|
+
sequelize: "Sequelize",
|
|
9544
|
+
knex: "Knex",
|
|
9545
|
+
"mikro-orm": "MikroORM",
|
|
9546
|
+
"ef-core": "EF Core",
|
|
9547
|
+
gorm: "GORM",
|
|
9548
|
+
sqlx: "sqlx",
|
|
9549
|
+
diesel: "Diesel",
|
|
9550
|
+
"sea-orm": "SeaORM",
|
|
9551
|
+
ecto: "Ecto",
|
|
9552
|
+
activerecord: "ActiveRecord",
|
|
9553
|
+
sequel: "Sequel",
|
|
9554
|
+
dapper: "Dapper",
|
|
9555
|
+
sqlalchemy: "SQLAlchemy",
|
|
9556
|
+
"tortoise-orm": "Tortoise ORM",
|
|
9557
|
+
"rom-rb": "ROM-rb",
|
|
9558
|
+
postgresql: "PostgreSQL",
|
|
9559
|
+
mysql: "MySQL",
|
|
9560
|
+
sqlite: "SQLite",
|
|
9561
|
+
mongodb: "MongoDB",
|
|
9562
|
+
redis: "Redis",
|
|
9563
|
+
elasticsearch: "Elasticsearch",
|
|
9564
|
+
turso: "Turso",
|
|
9565
|
+
neon: "Neon",
|
|
9566
|
+
dynamodb: "DynamoDB",
|
|
9567
|
+
csvhelper: "CsvHelper",
|
|
9568
|
+
epplus: "EPPlus",
|
|
9569
|
+
closedxml: "ClosedXML",
|
|
9570
|
+
// Auth
|
|
9571
|
+
"next-auth": "NextAuth",
|
|
9572
|
+
"auth-js": "Auth.js",
|
|
9573
|
+
lucia: "Lucia",
|
|
9574
|
+
passport: "Passport",
|
|
9575
|
+
jwt: "JWT",
|
|
9576
|
+
bcrypt: "bcrypt",
|
|
9577
|
+
clerk: "Clerk",
|
|
9578
|
+
devise: "Devise",
|
|
9579
|
+
doorkeeper: "Doorkeeper",
|
|
9580
|
+
guardian: "Guardian",
|
|
9581
|
+
pow: "Pow",
|
|
9582
|
+
identityserver: "IdentityServer",
|
|
9583
|
+
azure: "Azure AD",
|
|
9584
|
+
oauth2: "OAuth2",
|
|
9585
|
+
"google-sign-in": "Google Sign-In",
|
|
9586
|
+
"microsoft-identity": "Microsoft Identity",
|
|
9587
|
+
auth: "Auth",
|
|
9588
|
+
// Testing
|
|
9589
|
+
jest: "Jest",
|
|
9590
|
+
vitest: "Vitest",
|
|
9591
|
+
mocha: "Mocha",
|
|
9592
|
+
jasmine: "Jasmine",
|
|
9593
|
+
playwright: "Playwright",
|
|
9594
|
+
cypress: "Cypress",
|
|
9595
|
+
puppeteer: "Puppeteer",
|
|
9596
|
+
rspec: "RSpec",
|
|
9597
|
+
minitest: "Minitest",
|
|
9598
|
+
xunit: "xUnit",
|
|
9599
|
+
nunit: "NUnit",
|
|
9600
|
+
mstest: "MSTest",
|
|
9601
|
+
pytest: "pytest",
|
|
9602
|
+
testify: "Testify",
|
|
9603
|
+
ginkgo: "Ginkgo",
|
|
9604
|
+
exunit: "ExUnit",
|
|
9605
|
+
"ex-machina": "ex_machina",
|
|
9606
|
+
"unit-testing": "Unit Testing",
|
|
9607
|
+
"e2e-testing": "E2E Testing",
|
|
9608
|
+
"bdd-testing": "BDD Testing",
|
|
9609
|
+
moq: "Moq",
|
|
9610
|
+
nsubstitute: "NSubstitute",
|
|
9611
|
+
fakeiteasy: "FakeItEasy",
|
|
9612
|
+
mockito: "Mockito",
|
|
9613
|
+
mocking: "Mocking",
|
|
9614
|
+
mocktail: "Mocktail",
|
|
9615
|
+
mockall: "Mockall",
|
|
9616
|
+
"fluent-assertions": "FluentAssertions",
|
|
9617
|
+
shouldly: "Shouldly",
|
|
9618
|
+
assertj: "AssertJ",
|
|
9619
|
+
capybara: "Capybara",
|
|
9620
|
+
"factory-bot": "FactoryBot",
|
|
9621
|
+
"dotnet-test": ".NET Test",
|
|
9622
|
+
benchmark: "Benchmark",
|
|
9623
|
+
// AI / ML
|
|
9624
|
+
openai: "OpenAI",
|
|
9625
|
+
anthropic: "Anthropic",
|
|
9626
|
+
langchain: "LangChain",
|
|
9627
|
+
huggingface: "Hugging Face",
|
|
9628
|
+
pytorch: "PyTorch",
|
|
9629
|
+
tensorflow: "TensorFlow",
|
|
9630
|
+
keras: "Keras",
|
|
9631
|
+
jax: "JAX",
|
|
9632
|
+
"scikit-learn": "scikit-learn",
|
|
9633
|
+
numpy: "NumPy",
|
|
9634
|
+
pandas: "pandas",
|
|
9635
|
+
spacy: "spaCy",
|
|
9636
|
+
nltk: "NLTK",
|
|
9637
|
+
"vercel-ai": "Vercel AI",
|
|
9638
|
+
"llama-index": "LlamaIndex",
|
|
9639
|
+
chromadb: "ChromaDB",
|
|
9640
|
+
pinecone: "Pinecone",
|
|
9641
|
+
weaviate: "Weaviate",
|
|
9642
|
+
qdrant: "Qdrant",
|
|
9643
|
+
milvus: "Milvus",
|
|
9644
|
+
faiss: "FAISS",
|
|
9645
|
+
gemini: "Gemini",
|
|
9646
|
+
mistral: "Mistral",
|
|
9647
|
+
groq: "Groq",
|
|
9648
|
+
// Build
|
|
9649
|
+
vite: "Vite",
|
|
9650
|
+
webpack: "Webpack",
|
|
9651
|
+
esbuild: "esbuild",
|
|
9652
|
+
rollup: "Rollup",
|
|
9653
|
+
parcel: "Parcel",
|
|
9654
|
+
swc: "SWC",
|
|
9655
|
+
babel: "Babel",
|
|
9656
|
+
turborepo: "Turborepo",
|
|
9657
|
+
nx: "Nx",
|
|
9658
|
+
lerna: "Lerna",
|
|
9659
|
+
gradle: "Gradle",
|
|
9660
|
+
maven: "Maven",
|
|
9661
|
+
sbt: "sbt",
|
|
9662
|
+
cargo: "Cargo",
|
|
9663
|
+
spm: "SPM",
|
|
9664
|
+
cocoapods: "CocoaPods",
|
|
9665
|
+
carthage: "Carthage",
|
|
9666
|
+
pip: "pip",
|
|
9667
|
+
pipenv: "Pipenv",
|
|
9668
|
+
bundler: "Bundler",
|
|
9669
|
+
composer: "Composer",
|
|
9670
|
+
nuget: "NuGet",
|
|
9671
|
+
// CI/CD
|
|
9672
|
+
"github-actions": "GitHub Actions",
|
|
9673
|
+
"gitlab-ci": "GitLab CI",
|
|
9674
|
+
"travis-ci": "Travis CI",
|
|
9675
|
+
jenkins: "Jenkins",
|
|
9676
|
+
circleci: "CircleCI",
|
|
9677
|
+
"azure-devops": "Azure DevOps",
|
|
9678
|
+
bitbucket: "Bitbucket",
|
|
9679
|
+
"ci-cd": "CI/CD",
|
|
9680
|
+
// Infra
|
|
9681
|
+
docker: "Docker",
|
|
9682
|
+
"docker-compose": "Docker Compose",
|
|
9683
|
+
kubernetes: "Kubernetes",
|
|
9684
|
+
helm: "Helm",
|
|
9685
|
+
terraform: "Terraform",
|
|
9686
|
+
ansible: "Ansible",
|
|
9687
|
+
pulumi: "Pulumi",
|
|
9688
|
+
"aws-cdk": "AWS CDK",
|
|
9689
|
+
vagrant: "Vagrant",
|
|
9690
|
+
"infrastructure-as-code": "IaC",
|
|
9691
|
+
// Hosting
|
|
9692
|
+
vercel: "Vercel",
|
|
9693
|
+
netlify: "Netlify",
|
|
9694
|
+
"fly-io": "Fly.io",
|
|
9695
|
+
render: "Render",
|
|
9696
|
+
heroku: "Heroku",
|
|
9697
|
+
"gcp-app-engine": "GCP App Engine",
|
|
9698
|
+
"aws-lambda": "AWS Lambda",
|
|
9699
|
+
serverless: "Serverless",
|
|
9700
|
+
// Messaging
|
|
9701
|
+
rabbitmq: "RabbitMQ",
|
|
9702
|
+
kafka: "Kafka",
|
|
9703
|
+
nats: "NATS",
|
|
9704
|
+
masstransit: "MassTransit",
|
|
9705
|
+
oban: "Oban",
|
|
9706
|
+
broadway: "Broadway",
|
|
9707
|
+
sidekiq: "Sidekiq",
|
|
9708
|
+
celery: "Celery",
|
|
9709
|
+
hangfire: "Hangfire",
|
|
9710
|
+
"task-queue": "Task Queue",
|
|
9711
|
+
messaging: "Messaging",
|
|
9712
|
+
// Observability
|
|
9713
|
+
opentelemetry: "OpenTelemetry",
|
|
9714
|
+
prometheus: "Prometheus",
|
|
9715
|
+
sentry: "Sentry",
|
|
9716
|
+
datadog: "Datadog",
|
|
9717
|
+
logging: "Logging",
|
|
9718
|
+
serilog: "Serilog",
|
|
9719
|
+
nlog: "NLog",
|
|
9720
|
+
logrus: "Logrus",
|
|
9721
|
+
zap: "Zap",
|
|
9722
|
+
pino: "Pino",
|
|
9723
|
+
winston: "Winston",
|
|
9724
|
+
loguru: "Loguru"
|
|
9725
|
+
};
|
|
9453
9726
|
var CAP_CATEGORIES = [
|
|
9454
9727
|
["Sprache", ["javascript", "typescript", "python", "rust", "golang", "java", "kotlin", "scala", "ruby", "php", "csharp", "fsharp", "vbnet", "swift", "dart", "elixir", "crystal", "zig", "nim", "perl", "cpp", "cmake"]],
|
|
9455
9728
|
["Runtime", ["nodejs", "dotnet", "jvm", "flutter"]],
|
|
@@ -9474,15 +9747,17 @@ function buildCapabilitySummary(ids) {
|
|
|
9474
9747
|
const matched = members.filter((m) => set2.has(m));
|
|
9475
9748
|
if (matched.length === 0) continue;
|
|
9476
9749
|
matched.forEach((m) => used.add(m));
|
|
9477
|
-
rows.push([label, matched
|
|
9750
|
+
rows.push([label, matched]);
|
|
9478
9751
|
}
|
|
9479
9752
|
const rest2 = ids.filter((id) => !used.has(id));
|
|
9480
|
-
if (rest2.length > 0) rows.push(["Weitere", rest2
|
|
9753
|
+
if (rest2.length > 0) rows.push(["Weitere", rest2]);
|
|
9481
9754
|
if (rows.length === 0) return " (keine Capabilities erkannt)";
|
|
9482
9755
|
const labelWidth = Math.max(...rows.map((r) => r[0].length));
|
|
9483
|
-
|
|
9484
|
-
|
|
9485
|
-
|
|
9756
|
+
const sep = `${ANSI.dim} \xB7 ${ANSI.reset}`;
|
|
9757
|
+
return rows.map(([label, capIds]) => {
|
|
9758
|
+
const names = capIds.map((id) => CAP_DISPLAY[id] ?? id).join(sep);
|
|
9759
|
+
return ` ${ANSI.bold}${label.padEnd(labelWidth)}${ANSI.reset} ${names}`;
|
|
9760
|
+
}).join("\n");
|
|
9486
9761
|
}
|
|
9487
9762
|
if (command === "init") {
|
|
9488
9763
|
(async () => {
|