Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,6 @@ readme:
in `frontend/`.
metadata:
analyzerVersion: 0.1.0
rulesLoaded: 760
rulesLoaded: 778
languageDefsLoaded: 815
ignoredDirectories: []
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,6 @@ infrastructure:
- Dockerfile
metadata:
analyzerVersion: 0.1.0
rulesLoaded: 760
rulesLoaded: 778
languageDefsLoaded: 815
ignoredDirectories: []
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,6 @@ readme:
backed by Postgres.
metadata:
analyzerVersion: 0.1.0
rulesLoaded: 760
rulesLoaded: 778
languageDefsLoaded: 815
ignoredDirectories: []
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,6 @@ technologies:
infrastructure: []
metadata:
analyzerVersion: 0.1.0
rulesLoaded: 760
rulesLoaded: 778
languageDefsLoaded: 815
ignoredDirectories: []
8 changes: 7 additions & 1 deletion src/Ivy.StackAnalyzer/data/detectors/database.yml
Original file line number Diff line number Diff line change
Expand Up @@ -935,6 +935,9 @@
- { ecosystem: nuget, name: sqlite-net-pcl }
# --- pypi (pysqlite3/sqlite3 are stdlib; aiosqlite is the safe signal) ---
- { ecosystem: pypi, name: aiosqlite }
# --- maven (JVM JDBC drivers) ---
- { ecosystem: maven, name: "org.xerial:sqlite-jdbc" }
- { ecosystem: maven, name: "io.quarkiverse.jdbc:quarkus-jdbc-sqlite" }
depPrefix:
- { ecosystem: nuget, prefix: "SQLitePCLRaw." }
depsRegex:
Expand Down Expand Up @@ -1025,9 +1028,12 @@
- { ecosystem: composer, name: typesense/laravel-scout-typesense-driver }
- { ecosystem: terraform, name: airbyte_destination_typesense }
confidence: high
# Upstash Redis is a serverless cache/SaaS (commonly a rate-limiter), not the
# application's database engine; classify as saas so it never fills the db slot.
# A real self-hosted Redis is still caught by the generic `redis` rule.
- id: upstash.redis
name: Upstash Redis
category: database
category: saas
match:
deps:
- { ecosystem: npm, name: "@upstash/redis" }
Expand Down
50 changes: 50 additions & 0 deletions src/Ivy.StackAnalyzer/data/detectors/dotnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,45 @@
sdk: ["Microsoft.NET.Sdk.Worker"]
confidence: high

- id: avalonia
name: Avalonia
category: framework
match:
deps:
- { ecosystem: nuget, name: "Avalonia" }
depPrefix:
- { ecosystem: nuget, prefix: "Avalonia." }
confidence: high

- id: monogame
name: MonoGame
category: framework
match:
depPrefix:
- { ecosystem: nuget, prefix: "MonoGame.Framework" }
confidence: high

- id: elmish
name: Elmish
category: framework
match:
deps:
- { ecosystem: nuget, name: "Elmish" }
- { ecosystem: nuget, name: "Fable.Elmish" }
depPrefix:
- { ecosystem: nuget, prefix: "Elmish." }
- { ecosystem: nuget, prefix: "Fable.Elmish." }
confidence: high

- id: linqpad
name: LINQPad
category: framework
match:
deps:
- { ecosystem: nuget, name: "LINQPad.Runtime" }
- { ecosystem: nuget, name: "LINQPad" }
confidence: high

- id: ivy-framework
name: Ivy Framework
category: framework
Expand Down Expand Up @@ -96,6 +135,17 @@
- { ecosystem: nuget, name: "NUnit" }
confidence: low # bare NUnit ref is weak evidence; needs Test.Sdk/adapter to be a real test framework

# The test adapter proves a runnable NUnit suite; promote to high and supersede
# the weak bare-NUnit signal so the `test:` hash slot is populated.
- id: nunit-adapter
name: NUnit
category: testing
match:
deps:
- { ecosystem: nuget, name: "NUnit3TestAdapter" }
supersedes: [nunit]
confidence: high

- id: mstest
name: MSTest
category: testing
Expand Down
59 changes: 56 additions & 3 deletions src/Ivy.StackAnalyzer/data/detectors/framework.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,34 @@
deps:
- { ecosystem: cargo, name: axum }
confidence: high
- id: tonic
name: tonic
category: framework
match:
deps:
- { ecosystem: cargo, name: tonic }
- { ecosystem: cargo, name: tonic-build }
confidence: high
- id: ratatui
name: Ratatui
category: framework
match:
deps:
- { ecosystem: cargo, name: ratatui }
- { ecosystem: cargo, name: ratatui-macros }
confidence: high
- id: pyo3
name: PyO3
category: framework
match:
deps:
- { ecosystem: cargo, name: pyo3 }
confidence: high
# commander/yargs are argument parsers, not application frameworks; keep them out
# of the framework hash slot (a CLI tool is a `lib`-role, language-only stack).
- id: commander
name: Commander
category: framework
category: library
match:
deps:
- { ecosystem: npm, name: commander }
Expand Down Expand Up @@ -139,7 +164,7 @@
confidence: high
- id: yargs
name: Yargs
category: framework
category: library
match:
deps:
- { ecosystem: npm, name: yargs }
Expand Down Expand Up @@ -196,6 +221,32 @@
deps:
- { ecosystem: pypi, name: django }
confidence: high
- id: quarkus
name: Quarkus
category: framework
match:
depPrefix:
- { ecosystem: maven, prefix: "io.quarkus:" }
- { ecosystem: maven, prefix: "io.quarkiverse" }
confidence: high
- id: langchain
name: LangChain
category: framework
match:
deps:
- { ecosystem: pypi, name: langchain }
- { ecosystem: pypi, name: langchain-core }
- { ecosystem: pypi, name: langchain-community }
- { ecosystem: npm, name: langchain }
- { ecosystem: npm, name: "@langchain/core" }
confidence: high
- id: streamlit
name: Streamlit
category: framework
match:
deps:
- { ecosystem: pypi, name: streamlit }
confidence: high
- id: docsify
name: Docsify
category: documentation
Expand Down Expand Up @@ -347,9 +398,11 @@
depsRegex:
- { ecosystem: npm, pattern: "@ionic\\/" }
confidence: high
# Jekyll is a static-site/docs generator, not an application framework; classify
# as documentation (like MkDocs/Docusaurus) so it never fills the framework slot.
- id: jekyll
name: Jekyll
category: framework
category: documentation
match:
deps:
- { ecosystem: githubAction, name: jeffreytse/jekyll-deploy-action }
Expand Down
36 changes: 36 additions & 0 deletions src/Ivy.StackAnalyzer/data/detectors/library.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,40 @@
# Technology detectors (category: library) seeded from specfy/stack-analyser (MIT).
# Hand-added libraries below are surfaced as facts but are NOT framework/db/orm
# slots, so they never enter the stack hash.
- id: protobuf
name: Protocol Buffers
category: library
match:
deps:
- { ecosystem: npm, name: protobufjs }
- { ecosystem: pypi, name: protobuf }
- { ecosystem: cargo, name: prost }
- { ecosystem: go, name: google.golang.org/protobuf }
depPrefix:
- { ecosystem: maven, prefix: "com.google.protobuf" }
extensions: [proto]
confidence: high
- id: transformers
name: Transformers
category: library
match:
deps:
- { ecosystem: pypi, name: transformers }
confidence: high
- id: diffusers
name: Diffusers
category: library
match:
deps:
- { ecosystem: pypi, name: diffusers }
confidence: high
- id: sharpdx
name: SharpDX
category: library
match:
depPrefix:
- { ecosystem: nuget, prefix: "SharpDX" }
confidence: high
- id: airbyte
name: Airbyte
category: library
Expand Down
10 changes: 10 additions & 0 deletions src/Ivy.StackAnalyzer/data/detectors/orm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@
deps:
- { ecosystem: go, name: gorm.io/gorm }
confidence: high
- id: hibernate
name: Hibernate
category: orm
match:
deps:
- { ecosystem: maven, name: "io.quarkus:quarkus-hibernate-orm-panache" }
depPrefix:
- { ecosystem: maven, prefix: "org.hibernate" }
- { ecosystem: maven, prefix: "io.quarkus:quarkus-hibernate" }
confidence: high
- id: knex
name: Knex
category: orm
Expand Down
10 changes: 6 additions & 4 deletions src/Ivy.StackAnalyzer/data/detectors/styling.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
confidence: high
- id: gradio
name: Gradio
category: styling
category: framework
match:
deps:
- { ecosystem: pypi, name: gradio }
Expand Down Expand Up @@ -128,9 +128,11 @@
- { ecosystem: npm, name: "@radix-ui/react-label" }
- { ecosystem: npm, name: radix-ui }
confidence: high
# Routers are not a styling/UI choice; classify as library so they never pollute
# the styling hash slot (the SDH spec drops routers).
- id: reactrouterdom
name: React Router
category: styling
category: library
match:
deps:
- { ecosystem: npm, name: react-router-dom }
Expand All @@ -154,7 +156,7 @@
confidence: high
- id: remixrouter
name: Remix Router
category: styling
category: library
match:
deps:
- { ecosystem: npm, name: "@remix-run/router" }
Expand Down Expand Up @@ -184,7 +186,7 @@
confidence: high
- id: tanstackrouter
name: TanStack Router
category: styling
category: library
match:
deps:
- { ecosystem: npm, name: "@tanstack/react-router" }
Expand Down
13 changes: 12 additions & 1 deletion src/Ivy.StackAnalyzer/data/detectors/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,24 @@
- { ecosystem: go, name: github.com/frankban/quicktest }
filesRegex: ["_test\\.go$"]
confidence: high
# `.snap` files are shared by many snapshot tools (Jest, Vitest); they are not
# proof of the Rust `insta` crate. Match the cargo dependency only.
- id: insta
name: insta
category: testing
match:
deps:
- { ecosystem: cargo, name: insta }
filesRegex: ["\\.snap$"]
confidence: high
- id: junit
name: JUnit
category: testing
match:
deps:
- { ecosystem: maven, name: "junit:junit" }
- { ecosystem: maven, name: "io.quarkus:quarkus-junit5" }
depPrefix:
- { ecosystem: maven, prefix: "org.junit" }
confidence: high
- id: jest
name: Jest
Expand Down
19 changes: 15 additions & 4 deletions src/Ivy.StackAnalyzer/data/detectors/tool.yml
Original file line number Diff line number Diff line change
Expand Up @@ -130,13 +130,24 @@
- { ecosystem: cargo, name: openapi }
files: [openapi.yaml, openapi.json, openapi.yml]
confidence: high
# ML frameworks are the defining choice of an ML repo -> framework slot. The PyPI
# package is `torch` (`pytorch` is the conda name); match both.
- id: pytorch
name: Pytorch
category: tool
name: PyTorch
category: framework
match:
deps:
- { ecosystem: pypi, name: torch }
- { ecosystem: pypi, name: pytorch }
confidence: high
- id: pytorch-lightning
name: PyTorch Lightning
category: framework
match:
deps:
- { ecosystem: pypi, name: pytorch-lightning }
- { ecosystem: pypi, name: lightning }
confidence: high
- id: reactemail
name: React Email
category: tool
Expand All @@ -154,8 +165,8 @@
- { ecosystem: npm, name: "@opentelemetry/instrumentation-socket.io" }
confidence: high
- id: tensorflow
name: Tensorflow
category: tool
name: TensorFlow
category: framework
match:
deps:
- { ecosystem: docker, name: tensorflow/tensorflow }
Expand Down
Loading