@produtype/core 0.70.0 → 0.71.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/README.md +1 -1
- package/dist/analyzer/catalogue.js +3 -0
- package/dist/analyzer/detectBackend.js +14 -10
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -174,7 +174,7 @@ prodkit plan ../my-app --output prodkit-plan.md
|
|
|
174
174
|
|
|
175
175
|
_Generated from the analyzer itself — run `npm run docs:stacks` after changing a detector._
|
|
176
176
|
|
|
177
|
-
- **Backend:** Express, Next.js, NestJS, Fastify, Hono, Elysia, Koa, AdonisJS, SvelteKit, Remix, Nuxt, Nitro, Astro, Django, Flask, FastAPI, aiohttp, Litestar, Sanic, Tornado, Starlette, Streamlit, Gradio, Dash, Chainlit, Gin, Echo, Fiber, chi, Gorilla, Beego, Go, Axum, Actix Web, Rocket, Warp, Tide, Poem, Salvo, Tower HTTP, Spring Boot, Quarkus, Micronaut, Ktor, Javalin, Vert.x, Dropwizard, Helidon, Rails, Sinatra, Hanami, Roda, Grape, Ruby, Laravel, Symfony, Slim, CodeIgniter, CakePHP, Yii, PHP, ASP.NET Core, .NET
|
|
177
|
+
- **Backend:** Express, Next.js, NestJS, Fastify, Hono, Elysia, Koa, AdonisJS, SvelteKit, Remix, Nuxt, Nitro, Astro, Django, Flask, FastAPI, aiohttp, Litestar, Sanic, Tornado, Starlette, Streamlit, Gradio, Dash, Chainlit, Gin, Echo, Fiber, chi, Gorilla, Beego, Go, Axum, Actix Web, Rocket, Warp, Tide, Poem, Salvo, Tower HTTP, Hyper, Spring Boot, Quarkus, Micronaut, Ktor, Javalin, Vert.x, Dropwizard, Helidon, Rails, Sinatra, Hanami, Roda, Grape, Ruby, Laravel, Symfony, Slim, CodeIgniter, CakePHP, Yii, PHP, ASP.NET Core, .NET
|
|
178
178
|
- **Frontend:** React, Vite, Vue, Nuxt, Svelte, Angular, Astro, Solid, Qwik, Preact, Remix, htmx, Tailwind CSS, Electron
|
|
179
179
|
- **Mobile:** Flutter, React Native, iOS (native), Android (native)
|
|
180
180
|
- **Databases:** Postgres, MySQL, SQLite, SQL Server, MongoDB, Redis, Firestore, DynamoDB, Convex
|
|
@@ -59,6 +59,8 @@ exports.RUST_BACKEND_FRAMEWORKS = [
|
|
|
59
59
|
['poem', ['poem']],
|
|
60
60
|
['salvo', ['salvo']],
|
|
61
61
|
['tower-http', ['tower-http']],
|
|
62
|
+
// What a Rust service uses when it uses no framework: the HTTP layer itself.
|
|
63
|
+
['hyper', ['hyper']],
|
|
62
64
|
];
|
|
63
65
|
/**
|
|
64
66
|
* JVM frameworks, read from pom.xml and build.gradle alike.
|
|
@@ -211,6 +213,7 @@ const LABELS = {
|
|
|
211
213
|
poem: 'Poem',
|
|
212
214
|
salvo: 'Salvo',
|
|
213
215
|
'tower-http': 'Tower HTTP',
|
|
216
|
+
hyper: 'Hyper',
|
|
214
217
|
rust: 'Rust',
|
|
215
218
|
rails: 'Rails',
|
|
216
219
|
sinatra: 'Sinatra',
|
|
@@ -109,24 +109,28 @@ async function detectBackend(ctx) {
|
|
|
109
109
|
evidence.push({ type: 'dependency', value: dep });
|
|
110
110
|
}
|
|
111
111
|
/** Rust, read from Cargo.toml. */
|
|
112
|
-
let namedRustFramework = false;
|
|
113
112
|
for (const [framework, deps] of catalogue_1.RUST_BACKEND_FRAMEWORKS) {
|
|
114
113
|
const hits = (0, detectContext_1.hasAnyRuntimeRustDep)(ctx, deps);
|
|
115
114
|
if (!hits.length)
|
|
116
115
|
continue;
|
|
117
|
-
namedRustFramework = true;
|
|
118
116
|
frameworks.push(framework);
|
|
119
117
|
for (const dep of hits)
|
|
120
118
|
evidence.push({ type: 'dependency', value: dep });
|
|
121
119
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
120
|
+
/**
|
|
121
|
+
* No fallback for Rust, and removing it is a correction of my own over-reach.
|
|
122
|
+
*
|
|
123
|
+
* This was written to mirror Go's, whose justification is that plenty of production
|
|
124
|
+
* services use `net/http` and nothing else. Rust's standard library has no HTTP
|
|
125
|
+
* server at all, so the mirror does not hold: a crate with no web framework is
|
|
126
|
+
* overwhelmingly a library, a parser or a command-line tool.
|
|
127
|
+
*
|
|
128
|
+
* ruff is the measurement. A linter with `Cargo.toml` at its root reported
|
|
129
|
+
* `backend: rust`, and "a backend disqualifies a library" then profiled it as a
|
|
130
|
+
* client application — so teaching this analyzer to read Rust made it worse at
|
|
131
|
+
* reading the best-known Rust project in the corpus. `hyper` joins the framework
|
|
132
|
+
* list instead: it is what a Rust service uses when it uses no framework.
|
|
133
|
+
*/
|
|
130
134
|
/** Ruby, read from the Gemfile. */
|
|
131
135
|
let namedRubyFramework = false;
|
|
132
136
|
for (const [framework, deps] of catalogue_1.RUBY_BACKEND_FRAMEWORKS) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@produtype/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.71.0",
|
|
4
4
|
"description": "Deterministic CLI and library that analyzes a web application repository and reports how far it is from production-ready for the kind of product it is meant to be.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bin": {
|