rapidkit 0.42.0 → 0.42.2
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 +53 -9
- package/contracts/agent-customization-pack.v1.json +29 -29
- package/contracts/create-planner-capabilities.v1.json +2 -2
- package/contracts/extension-cli-compatibility.v1.json +2 -2
- package/contracts/runtime-command-surface.v1.json +2 -2
- package/contracts/workspace-registry.v1.json +1 -1
- package/contracts/workspace-run-last.v1.json +1 -1
- package/dist/autopilot-release-5J55NPXF.js +1 -0
- package/dist/{chunk-YWUWRSNO.js → chunk-4EIQRQSA.js} +1 -1
- package/dist/{chunk-QOH5TIRZ.js → chunk-6WDDATKQ.js} +1 -1
- package/dist/{chunk-2ZLIVGO7.js → chunk-7M2VBCAX.js} +1 -1
- package/dist/{chunk-FEA53XL6.js → chunk-7V7C6GXV.js} +1 -1
- package/dist/{chunk-DZU4KPPW.js → chunk-CXWWNQDF.js} +1 -1
- package/dist/{chunk-5QAVZET2.js → chunk-DMITBXR2.js} +1 -1
- package/dist/{chunk-4ZSDU5OO.js → chunk-FLFZC7ZV.js} +1 -1
- package/dist/{chunk-QKVEWX4L.js → chunk-JN6R5UP4.js} +2 -2
- package/dist/chunk-KEMWZUGO.js +5 -0
- package/dist/{chunk-IS2XUPMP.js → chunk-KQRXY2GJ.js} +1 -1
- package/dist/{chunk-FSIZLBTL.js → chunk-KUOCSDIY.js} +1 -1
- package/dist/{chunk-FB35IONI.js → chunk-MOAQ3WU6.js} +1 -1
- package/dist/{chunk-F7GYXSBT.js → chunk-NN3IV4U6.js} +1 -1
- package/dist/chunk-QKVDG6FD.js +32 -0
- package/dist/{chunk-LANBSCGS.js → chunk-RQIHAPF3.js} +1 -1
- package/dist/{chunk-M44C2P3R.js → chunk-S4U2FRJV.js} +1 -1
- package/dist/{chunk-YM5Q3PV6.js → chunk-TQULVWUA.js} +1 -1
- package/dist/{chunk-5PFGOXBQ.js → chunk-WKCBS5DC.js} +1 -1
- package/dist/{create-EAE2AJJL.js → create-TPFUONHK.js} +1 -1
- package/dist/{demo-kit-N5U3NGAE.js → demo-kit-4NCHGEA6.js} +1 -1
- package/dist/{doctor-E6JE4Q3B.js → doctor-O2B3XNAB.js} +1 -1
- package/dist/{dotnet-webapi-clean-K33C77EI.js → dotnet-webapi-clean-LV3MADHG.js} +1 -1
- package/dist/{gofiber-standard-BQ4HCXL2.js → gofiber-standard-25DZS5UY.js} +1 -1
- package/dist/{gogin-standard-PUBCYW3A.js → gogin-standard-FMVHPLO5.js} +1 -1
- package/dist/index.js +21 -20
- package/dist/{pipeline-TRA4MMZC.js → pipeline-PX6ZUINW.js} +1 -1
- package/dist/{springboot-standard-XFVQI37R.js → springboot-standard-LMZF7OJS.js} +1 -1
- package/dist/{workspace-IBTKZX7T.js → workspace-MPKEUHFP.js} +1 -1
- package/dist/{workspace-agent-sync-LEYLJ42D.js → workspace-agent-sync-XD32GG5V.js} +1 -1
- package/dist/{workspace-context-NTG3D4DI.js → workspace-context-QFES7YBC.js} +1 -1
- package/dist/workspace-explain-Q7TJCHD5.js +1 -0
- package/dist/{workspace-foundation-6AUEEJQQ.js → workspace-foundation-2OVUZXPT.js} +1 -1
- package/dist/{workspace-intelligence-C6NT557E.js → workspace-intelligence-FJP5ONDB.js} +1 -1
- package/dist/{workspace-mcp-serve-GM7A3IVM.js → workspace-mcp-serve-DFJIUTL5.js} +1 -1
- package/dist/{workspace-model-AOTSEAVW.js → workspace-model-IDRCH3VI.js} +1 -1
- package/dist/workspace-run-NULA72JV.js +1 -0
- package/dist/{workspace-verify-7R3XBNKE.js → workspace-verify-K4RSQIXT.js} +1 -1
- package/dist/{workspace-watch-SGY2DEZ5.js → workspace-watch-PFJDHPXI.js} +1 -1
- package/package.json +1 -1
- package/dist/autopilot-release-MVFRZMHD.js +0 -1
- package/dist/chunk-3HBNF2A3.js +0 -32
- package/dist/chunk-Q2KZIBV4.js +0 -5
- package/dist/workspace-explain-P2EBRNP6.js +0 -1
- package/dist/workspace-run-ATFFJCMK.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {c,b}from'./chunk-ULIVVMT6.js';import {f as f$1,e}from'./chunk-PCXSTKZ5.js';import {b as b$2}from'./chunk-KMUWWZRT.js';import {j,g}from'./chunk-COBMOVUK.js';import {b as b$1}from'./chunk-CDCYRBAY.js';import {c as c$3,a as a$2,b as b$3}from'./chunk-NFUXULIF.js';import {q}from'./chunk-2ZLIVGO7.js';import {i,d,b as b$5,a as a$4}from'./chunk-4KUIFXHM.js';import {a as a$1}from'./chunk-TDSIF42O.js';import {f}from'./chunk-OLDPVVSV.js';import {c as c$2,l,i as i$1,b as b$4,q as q$1,m,o}from'./chunk-WRMCPKGA.js';import {a as a$3}from'./chunk-2FIX2MDC.js';import {a}from'./chunk-HHJAANUC.js';import p from'chalk';import {createHash}from'crypto';import {execa}from'execa';import c$1 from'fs-extra';import s from'path';function Qe(e){return `"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Ft(e){let t=`scripts.${e.scriptName}=${e.scriptValue}`;return `cd ${Qe(e.projectPath)} && npm pkg set ${Qe(t)}`}function Ae(e){return `rapidkit:doctor:repair ${Buffer.from(JSON.stringify(e),"utf8").toString("base64url")}`}function et(e){let t=s.join(e.projectPath,e.relativePath),i={type:"file-create",path:t,content:e.content,overwrite:false};return {id:`${e.issueId}.file-create`,issueId:e.issueId,title:e.title,status:"available",fixKind:"file-create",risk:e.risk??"safe",canAutoFix:true,canEditFiles:true,requiresApproval:true,requiresReview:e.requiresReview??false,files:[t],command:Ae(i),operation:i,verifyCommand:"npx rapidkit doctor project --json",refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}function Nt(e){let t=s.join(e.projectPath,e.relativePath),i={type:"file-append",path:t,lines:e.lines,ensureNewline:true};return {id:`${e.issueId}.file-append`,issueId:e.issueId,title:e.title,status:"available",fixKind:"file-append",risk:e.risk??"safe",canAutoFix:true,canEditFiles:true,requiresApproval:true,requiresReview:e.requiresReview??false,files:[t],command:Ae(i),operation:i,verifyCommand:"npx rapidkit doctor project --json",refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}function It(e){let t=s.join(e.projectPath,e.sourceRelativePath),i=s.join(e.projectPath,e.targetRelativePath),n={type:"file-copy",sourcePath:t,path:i,overwrite:false};return {id:`${e.issueId}.file-copy`,issueId:e.issueId,title:e.title,status:"available",fixKind:"file-copy",risk:e.risk??"safe",canAutoFix:true,canEditFiles:true,requiresApproval:true,requiresReview:e.requiresReview??false,files:[t,i],command:Ae(n),operation:n,verifyCommand:"npx rapidkit doctor project --json",refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}function At(e){return e.lint&&e.lint.trim().length>0?"npm run lint":e.build&&e.build.trim().length>0?"npm run build":null}function Ot(e){let t=`frontend-script-${e.scriptName}`,i=s.join(e.projectPath,"package.json"),n=["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"];return e.scriptValue?{id:`${t}.package-json-script`,issueId:t,title:`Add package.json ${e.scriptName} script`,status:"available",fixKind:"package-json-script",risk:"guarded",canAutoFix:true,canEditFiles:true,requiresApproval:true,requiresReview:false,files:[i],command:Ft({projectPath:e.projectPath,scriptName:e.scriptName,scriptValue:e.scriptValue}),operation:{type:"package-json-script",path:i,scriptName:e.scriptName,scriptValue:e.scriptValue},verifyCommand:"npx rapidkit doctor project --json",refreshCommands:n,reason:`Reuse the existing ${e.scriptValue} validation path as the ${e.scriptName} gate for ${e.frameworkDisplayName}.`}:{id:`${t}.manual`,issueId:t,title:`Define ${e.scriptName} script`,status:"manual",fixKind:"manual",risk:"guarded",canAutoFix:false,canEditFiles:false,requiresApproval:true,requiresReview:true,files:[i],refreshCommands:n,reason:`No safe ${e.frameworkDisplayName} fallback script could be inferred from existing package.json scripts.`,limitations:["Add a real test/lint/build command that matches the project quality gate before release."]}}function Mt(e){let t=s.join(e.projectPath,"package.json");return {id:`${e.issueId}.package-json-script`,issueId:e.issueId,title:e.title,status:"available",fixKind:"package-json-script",risk:e.risk??"guarded",canAutoFix:true,canEditFiles:true,requiresApproval:true,requiresReview:e.requiresReview??false,files:[t],command:Ft({projectPath:e.projectPath,scriptName:e.scriptName,scriptValue:e.scriptValue}),operation:{type:"package-json-script",path:t,scriptName:e.scriptName,scriptValue:e.scriptValue},verifyCommand:"npx rapidkit doctor project --json",refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}function Tt(e){let t=s.join(e.projectPath,"Makefile"),i={type:"makefile-target",path:t,target:e.targetName,command:e.command,phony:true};return {id:`${e.issueId}.makefile-target`,issueId:e.issueId,title:e.title,status:"available",fixKind:"file-append",risk:e.risk??"guarded",canAutoFix:true,canEditFiles:true,requiresApproval:true,requiresReview:e.requiresReview??true,files:[t],command:Ae(i),operation:i,verifyCommand:"npx rapidkit doctor project --json",refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}function Ht(e){return {id:`${e.issueId}.command`,issueId:e.issueId,title:e.title,status:"available",fixKind:e.fixKind??"command",risk:e.risk??"guarded",canAutoFix:true,canEditFiles:false,requiresApproval:true,requiresReview:e.requiresReview??true,files:e.files.map(t=>s.join(e.projectPath,t)),command:`cd ${Qe(e.projectPath)} && ${e.command}`,verifyCommand:"npx rapidkit doctor project --json",refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}var yn=[".eslintrc.js",".eslintrc.cjs",".eslintrc.json",".eslintrc.yaml",".eslintrc.yml","eslint.config.js","eslint.config.mjs","eslint.config.cjs"],hn=["tests","test","src/test","__tests__","e2e","playwright","cypress"],kn=["vitest.config.ts","vitest.config.js","vitest.config.mjs","jest.config.js","jest.config.ts","jest.config.mjs","playwright.config.ts","playwright.config.js","cypress.config.js","cypress.config.ts"],wn=["src","app","pages"],vn=["dev","build","test","lint"];function _t(e){let t=e?.scripts;if(!t||typeof t!="object"||Array.isArray(t))return {};let i={};for(let[n,o]of Object.entries(t))typeof o=="string"&&o.trim().length>0&&(i[n]=o);return i}async function Bt(e,t){for(let o of yn)if(await c$1.pathExists(s.join(e,o)))return true;let i=t??(await c$1.pathExists(s.join(e,"package.json"))?await c$1.readJson(s.join(e,"package.json")):null);if(!i)return false;if(i.eslintConfig)return true;let n={...i.dependencies??{},...i.devDependencies??{}};return !!(n.eslint||n["@eslint/js"]||n["@eslint/eslintrc"])}async function qt(e,t){for(let o of hn)if(await c$1.pathExists(s.join(e,o)))return true;for(let o of kn)if(await c$1.pathExists(s.join(e,o)))return true;let i=_t(t);if(i.test||i["test:unit"]||i["test:e2e"]||i["test:ci"]||i["test:watch"])return true;let n={...t?.dependencies??{},...t?.devDependencies??{}};return n.vitest||n.jest||n["@playwright/test"]||n.cypress?true:await bn(e)}async function bn(e){let t=["src","app","pages","components"],i=/\.(test|spec)\.(tsx?|jsx?|vue|svelte)$/i,o=new Set(["node_modules",".git","dist","build",".next","coverage",".turbo"]);for(let a of t){let r=s.join(e,a);if(!await c$1.pathExists(r))continue;let l=[{dir:r,depth:0}];for(;l.length>0;){let d=l.shift();if(!d)break;let u=[];try{u=await c$1.readdir(d.dir);}catch{continue}for(let h of u){let y=s.join(d.dir,h);if(i.test(h))return true;if(!(d.depth>=3||o.has(h)||h.startsWith(".")))try{(await c$1.stat(y)).isDirectory()&&l.push({dir:y,depth:d.depth+1});}catch{continue}}}}return false}async function tt(e){for(let t of wn){let i=s.join(e,t);if(await c$1.pathExists(i))try{if((await c$1.readdir(i)).some(o=>!o.startsWith(".")))return true}catch{continue}}return false}function jn(e){let t=e.key;return b$5(t).key}function xn(e,t,i){return a$4(t,i).some(o=>!!e[o])}async function Kt(e){let{projectPath:t,detection:i,packageJsonData:n}=e,o=jn(i),a=b$5(o),r=_t(n),l=[],d=await c$1.pathExists(s.join(t,"package-lock.json"))||await c$1.pathExists(s.join(t,"pnpm-lock.yaml"))||await c$1.pathExists(s.join(t,"yarn.lock"))||await c$1.pathExists(s.join(t,"bun.lockb"));l.push({id:"frontend-lockfile-integrity",label:"Frontend lockfile integrity",status:d?"pass":"warn",severity:"warn",scope:"project-scoped",reason:d?"Node lockfile detected for deterministic dependency restore.":"No Node lockfile detected (package-lock/yarn.lock/pnpm-lock.yaml/bun.lockb).",recommendation:d?void 0:"Commit a lockfile for deterministic installs and CI parity."});let u=await c$1.pathExists(s.join(t,"tsconfig.json")),h=await c$1.pathExists(s.join(t,"jsconfig.json")),y=u||h;l.push({id:"frontend-typescript-surface",label:"TypeScript project surface",status:y?"pass":"warn",severity:"warn",scope:"project-scoped",reason:y?u?"tsconfig.json detected.":"jsconfig.json detected.":"No tsconfig.json or jsconfig.json detected.",recommendation:y?void 0:"Add tsconfig.json (or jsconfig.json) for typed frontend builds and IDE parity."});let w=a.fileHints.length>0&&a.fileHints.some(f=>c$1.pathExistsSync(s.join(t,f)));l.push({id:"frontend-framework-config",label:`${a.displayName} config surface`,status:w?"pass":"warn",severity:"warn",scope:"project-scoped",reason:w?`${a.displayName} configuration artifacts detected.`:`No ${a.displayName} config markers detected (${a.fileHints.join(", ")||"n/a"}).`,recommendation:w?void 0:"Keep framework config files in-repo for reproducible dev/build behavior."});for(let f of vn){let v=xn(r,o,f),x=f==="dev"||f==="build",k=!v&&f==="test"?Ot({projectPath:t,frameworkDisplayName:a.displayName,scriptName:f,scriptValue:At(r)}):void 0;l.push({id:`frontend-script-${f}`,label:`${f} script surface`,status:v?"pass":x?"fail":"warn",severity:x?"error":"warn",scope:"project-scoped",reason:v?`package.json exposes a ${f} script for ${a.displayName}.`:`No ${f} script detected for ${a.displayName}.`,recommendation:v?void 0:`Add a "${a$4(o,f)[0]??f}" script to package.json.`,repairCapability:k});}let g=await tt(t);return l.push({id:"frontend-source-tree",label:"Frontend source tree",status:g?"pass":"warn",severity:"warn",scope:"project-scoped",reason:g?"Application source directories detected (src/app/pages).":"No frontend source directories detected under src/, app/, or pages/.",recommendation:g?void 0:"Ensure the scaffolded application tree exists before running lifecycle commands."}),l}var Pn={node:["package-lock.json","pnpm-lock.yaml","yarn.lock","bun.lock","bun.lockb"],deno:["deno.lock"],bun:["bun.lock","bun.lockb"],python:["uv.lock","poetry.lock","requirements.txt","requirements.lock"],go:["go.sum"],java:["pom.xml","gradle.lockfile","gradle/libs.versions.toml"],rust:["Cargo.lock"],elixir:["mix.lock"],clojure:["deps.edn","project.clj"],php:["composer.lock"],ruby:["Gemfile.lock"],dotnet:["packages.lock.json","Directory.Packages.props"],unknown:[]},Cn={node:["package.json"],deno:["deno.json","deno.jsonc"],bun:["package.json","bunfig.toml"],python:["pyproject.toml","requirements.txt","setup.py"],go:["go.mod"],java:["pom.xml","build.gradle","build.gradle.kts"],rust:["Cargo.toml"],elixir:["mix.exs"],clojure:["deps.edn","project.clj"],php:["composer.json"],ruby:["Gemfile"],dotnet:["*.csproj","*.sln"],unknown:[]},Rn=["node_modules",".git",".rapidkit/reports",".venv","dist","build","coverage",".env",".env.*","!.env.example"].join(`
|
|
1
|
+
import {c,b}from'./chunk-ULIVVMT6.js';import {f as f$1,e}from'./chunk-PCXSTKZ5.js';import {b as b$2}from'./chunk-KMUWWZRT.js';import {j,g}from'./chunk-COBMOVUK.js';import {b as b$1}from'./chunk-CDCYRBAY.js';import {c as c$3,a as a$2,b as b$3}from'./chunk-NFUXULIF.js';import {q}from'./chunk-7M2VBCAX.js';import {i,d,b as b$5,a as a$4}from'./chunk-4KUIFXHM.js';import {a as a$1}from'./chunk-TDSIF42O.js';import {f}from'./chunk-OLDPVVSV.js';import {c as c$2,l,i as i$1,b as b$4,q as q$1,m,o}from'./chunk-WRMCPKGA.js';import {a as a$3}from'./chunk-2FIX2MDC.js';import {a}from'./chunk-HHJAANUC.js';import p from'chalk';import {createHash}from'crypto';import {execa}from'execa';import c$1 from'fs-extra';import s from'path';function Qe(e){return `"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Ft(e){let t=`scripts.${e.scriptName}=${e.scriptValue}`;return `cd ${Qe(e.projectPath)} && npm pkg set ${Qe(t)}`}function Ae(e){return `rapidkit:doctor:repair ${Buffer.from(JSON.stringify(e),"utf8").toString("base64url")}`}function et(e){let t=s.join(e.projectPath,e.relativePath),i={type:"file-create",path:t,content:e.content,overwrite:false};return {id:`${e.issueId}.file-create`,issueId:e.issueId,title:e.title,status:"available",fixKind:"file-create",risk:e.risk??"safe",canAutoFix:true,canEditFiles:true,requiresApproval:true,requiresReview:e.requiresReview??false,files:[t],command:Ae(i),operation:i,verifyCommand:"npx rapidkit doctor project --json",refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}function Nt(e){let t=s.join(e.projectPath,e.relativePath),i={type:"file-append",path:t,lines:e.lines,ensureNewline:true};return {id:`${e.issueId}.file-append`,issueId:e.issueId,title:e.title,status:"available",fixKind:"file-append",risk:e.risk??"safe",canAutoFix:true,canEditFiles:true,requiresApproval:true,requiresReview:e.requiresReview??false,files:[t],command:Ae(i),operation:i,verifyCommand:"npx rapidkit doctor project --json",refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}function It(e){let t=s.join(e.projectPath,e.sourceRelativePath),i=s.join(e.projectPath,e.targetRelativePath),n={type:"file-copy",sourcePath:t,path:i,overwrite:false};return {id:`${e.issueId}.file-copy`,issueId:e.issueId,title:e.title,status:"available",fixKind:"file-copy",risk:e.risk??"safe",canAutoFix:true,canEditFiles:true,requiresApproval:true,requiresReview:e.requiresReview??false,files:[t,i],command:Ae(n),operation:n,verifyCommand:"npx rapidkit doctor project --json",refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}function At(e){return e.lint&&e.lint.trim().length>0?"npm run lint":e.build&&e.build.trim().length>0?"npm run build":null}function Ot(e){let t=`frontend-script-${e.scriptName}`,i=s.join(e.projectPath,"package.json"),n=["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"];return e.scriptValue?{id:`${t}.package-json-script`,issueId:t,title:`Add package.json ${e.scriptName} script`,status:"available",fixKind:"package-json-script",risk:"guarded",canAutoFix:true,canEditFiles:true,requiresApproval:true,requiresReview:false,files:[i],command:Ft({projectPath:e.projectPath,scriptName:e.scriptName,scriptValue:e.scriptValue}),operation:{type:"package-json-script",path:i,scriptName:e.scriptName,scriptValue:e.scriptValue},verifyCommand:"npx rapidkit doctor project --json",refreshCommands:n,reason:`Reuse the existing ${e.scriptValue} validation path as the ${e.scriptName} gate for ${e.frameworkDisplayName}.`}:{id:`${t}.manual`,issueId:t,title:`Define ${e.scriptName} script`,status:"manual",fixKind:"manual",risk:"guarded",canAutoFix:false,canEditFiles:false,requiresApproval:true,requiresReview:true,files:[i],refreshCommands:n,reason:`No safe ${e.frameworkDisplayName} fallback script could be inferred from existing package.json scripts.`,limitations:["Add a real test/lint/build command that matches the project quality gate before release."]}}function Mt(e){let t=s.join(e.projectPath,"package.json");return {id:`${e.issueId}.package-json-script`,issueId:e.issueId,title:e.title,status:"available",fixKind:"package-json-script",risk:e.risk??"guarded",canAutoFix:true,canEditFiles:true,requiresApproval:true,requiresReview:e.requiresReview??false,files:[t],command:Ft({projectPath:e.projectPath,scriptName:e.scriptName,scriptValue:e.scriptValue}),operation:{type:"package-json-script",path:t,scriptName:e.scriptName,scriptValue:e.scriptValue},verifyCommand:"npx rapidkit doctor project --json",refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}function Tt(e){let t=s.join(e.projectPath,"Makefile"),i={type:"makefile-target",path:t,target:e.targetName,command:e.command,phony:true};return {id:`${e.issueId}.makefile-target`,issueId:e.issueId,title:e.title,status:"available",fixKind:"file-append",risk:e.risk??"guarded",canAutoFix:true,canEditFiles:true,requiresApproval:true,requiresReview:e.requiresReview??true,files:[t],command:Ae(i),operation:i,verifyCommand:"npx rapidkit doctor project --json",refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}function Ht(e){return {id:`${e.issueId}.command`,issueId:e.issueId,title:e.title,status:"available",fixKind:e.fixKind??"command",risk:e.risk??"guarded",canAutoFix:true,canEditFiles:false,requiresApproval:true,requiresReview:e.requiresReview??true,files:e.files.map(t=>s.join(e.projectPath,t)),command:`cd ${Qe(e.projectPath)} && ${e.command}`,verifyCommand:"npx rapidkit doctor project --json",refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}var yn=[".eslintrc.js",".eslintrc.cjs",".eslintrc.json",".eslintrc.yaml",".eslintrc.yml","eslint.config.js","eslint.config.mjs","eslint.config.cjs"],hn=["tests","test","src/test","__tests__","e2e","playwright","cypress"],kn=["vitest.config.ts","vitest.config.js","vitest.config.mjs","jest.config.js","jest.config.ts","jest.config.mjs","playwright.config.ts","playwright.config.js","cypress.config.js","cypress.config.ts"],wn=["src","app","pages"],vn=["dev","build","test","lint"];function _t(e){let t=e?.scripts;if(!t||typeof t!="object"||Array.isArray(t))return {};let i={};for(let[n,o]of Object.entries(t))typeof o=="string"&&o.trim().length>0&&(i[n]=o);return i}async function Bt(e,t){for(let o of yn)if(await c$1.pathExists(s.join(e,o)))return true;let i=t??(await c$1.pathExists(s.join(e,"package.json"))?await c$1.readJson(s.join(e,"package.json")):null);if(!i)return false;if(i.eslintConfig)return true;let n={...i.dependencies??{},...i.devDependencies??{}};return !!(n.eslint||n["@eslint/js"]||n["@eslint/eslintrc"])}async function qt(e,t){for(let o of hn)if(await c$1.pathExists(s.join(e,o)))return true;for(let o of kn)if(await c$1.pathExists(s.join(e,o)))return true;let i=_t(t);if(i.test||i["test:unit"]||i["test:e2e"]||i["test:ci"]||i["test:watch"])return true;let n={...t?.dependencies??{},...t?.devDependencies??{}};return n.vitest||n.jest||n["@playwright/test"]||n.cypress?true:await bn(e)}async function bn(e){let t=["src","app","pages","components"],i=/\.(test|spec)\.(tsx?|jsx?|vue|svelte)$/i,o=new Set(["node_modules",".git","dist","build",".next","coverage",".turbo"]);for(let a of t){let r=s.join(e,a);if(!await c$1.pathExists(r))continue;let l=[{dir:r,depth:0}];for(;l.length>0;){let d=l.shift();if(!d)break;let u=[];try{u=await c$1.readdir(d.dir);}catch{continue}for(let h of u){let y=s.join(d.dir,h);if(i.test(h))return true;if(!(d.depth>=3||o.has(h)||h.startsWith(".")))try{(await c$1.stat(y)).isDirectory()&&l.push({dir:y,depth:d.depth+1});}catch{continue}}}}return false}async function tt(e){for(let t of wn){let i=s.join(e,t);if(await c$1.pathExists(i))try{if((await c$1.readdir(i)).some(o=>!o.startsWith(".")))return true}catch{continue}}return false}function jn(e){let t=e.key;return b$5(t).key}function xn(e,t,i){return a$4(t,i).some(o=>!!e[o])}async function Kt(e){let{projectPath:t,detection:i,packageJsonData:n}=e,o=jn(i),a=b$5(o),r=_t(n),l=[],d=await c$1.pathExists(s.join(t,"package-lock.json"))||await c$1.pathExists(s.join(t,"pnpm-lock.yaml"))||await c$1.pathExists(s.join(t,"yarn.lock"))||await c$1.pathExists(s.join(t,"bun.lockb"));l.push({id:"frontend-lockfile-integrity",label:"Frontend lockfile integrity",status:d?"pass":"warn",severity:"warn",scope:"project-scoped",reason:d?"Node lockfile detected for deterministic dependency restore.":"No Node lockfile detected (package-lock/yarn.lock/pnpm-lock.yaml/bun.lockb).",recommendation:d?void 0:"Commit a lockfile for deterministic installs and CI parity."});let u=await c$1.pathExists(s.join(t,"tsconfig.json")),h=await c$1.pathExists(s.join(t,"jsconfig.json")),y=u||h;l.push({id:"frontend-typescript-surface",label:"TypeScript project surface",status:y?"pass":"warn",severity:"warn",scope:"project-scoped",reason:y?u?"tsconfig.json detected.":"jsconfig.json detected.":"No tsconfig.json or jsconfig.json detected.",recommendation:y?void 0:"Add tsconfig.json (or jsconfig.json) for typed frontend builds and IDE parity."});let w=a.fileHints.length>0&&a.fileHints.some(f=>c$1.pathExistsSync(s.join(t,f)));l.push({id:"frontend-framework-config",label:`${a.displayName} config surface`,status:w?"pass":"warn",severity:"warn",scope:"project-scoped",reason:w?`${a.displayName} configuration artifacts detected.`:`No ${a.displayName} config markers detected (${a.fileHints.join(", ")||"n/a"}).`,recommendation:w?void 0:"Keep framework config files in-repo for reproducible dev/build behavior."});for(let f of vn){let v=xn(r,o,f),x=f==="dev"||f==="build",k=!v&&f==="test"?Ot({projectPath:t,frameworkDisplayName:a.displayName,scriptName:f,scriptValue:At(r)}):void 0;l.push({id:`frontend-script-${f}`,label:`${f} script surface`,status:v?"pass":x?"fail":"warn",severity:x?"error":"warn",scope:"project-scoped",reason:v?`package.json exposes a ${f} script for ${a.displayName}.`:`No ${f} script detected for ${a.displayName}.`,recommendation:v?void 0:`Add a "${a$4(o,f)[0]??f}" script to package.json.`,repairCapability:k});}let g=await tt(t);return l.push({id:"frontend-source-tree",label:"Frontend source tree",status:g?"pass":"warn",severity:"warn",scope:"project-scoped",reason:g?"Application source directories detected (src/app/pages).":"No frontend source directories detected under src/, app/, or pages/.",recommendation:g?void 0:"Ensure the scaffolded application tree exists before running lifecycle commands."}),l}var Pn={node:["package-lock.json","pnpm-lock.yaml","yarn.lock","bun.lock","bun.lockb"],deno:["deno.lock"],bun:["bun.lock","bun.lockb"],python:["uv.lock","poetry.lock","requirements.txt","requirements.lock"],go:["go.sum"],java:["pom.xml","gradle.lockfile","gradle/libs.versions.toml"],rust:["Cargo.lock"],elixir:["mix.lock"],clojure:["deps.edn","project.clj"],php:["composer.lock"],ruby:["Gemfile.lock"],dotnet:["packages.lock.json","Directory.Packages.props"],unknown:[]},Cn={node:["package.json"],deno:["deno.json","deno.jsonc"],bun:["package.json","bunfig.toml"],python:["pyproject.toml","requirements.txt","setup.py"],go:["go.mod"],java:["pom.xml","build.gradle","build.gradle.kts"],rust:["Cargo.toml"],elixir:["mix.exs"],clojure:["deps.edn","project.clj"],php:["composer.json"],ruby:["Gemfile"],dotnet:["*.csproj","*.sln"],unknown:[]},Rn=["node_modules",".git",".rapidkit/reports",".venv","dist","build","coverage",".env",".env.*","!.env.example"].join(`
|
|
2
2
|
`),nt=[".env",".env.*","!.env.example"];function Re(e){return e?e==="bun"?"node":e==="python"||e==="node"||e==="go"||e==="java"||e==="rust"||e==="elixir"||e==="clojure"||e==="deno"||e==="php"||e==="ruby"||e==="dotnet"?e:"unknown":"unknown"}async function Oe(e,t){for(let i of t){if(i.includes("*")){let n=i.replace("*","");if(await Dn(e,n,2))return true;continue}if(await c$1.pathExists(s.join(e,i)))return true}return false}async function Dn(e,t,i){let n=[{dir:e,depth:0}],o=new Set(["node_modules",".git",".rapidkit","dist","build","coverage"]);for(;n.length>0;){let a=n.shift();if(!a)break;let r=[];try{r=await c$1.readdir(a.dir,{withFileTypes:true});}catch{continue}for(let l of r){if(o.has(l.name))continue;let d=s.join(a.dir,l.name);if(l.isFile()&&l.name.endsWith(t))return true;l.isDirectory()&&a.depth<i&&!l.name.startsWith(".")&&n.push({dir:d,depth:a.depth+1});}}return false}async function Me(e){try{return await c$1.pathExists(e)?await c$1.readFile(e,"utf8"):""}catch{return ""}}async function it(e,t){let i=[];for(let n of t){let o=await Me(s.join(e,n));o&&i.push(o);}return i.join(`
|
|
3
3
|
`)}async function En(e){if(e.runtime==="node"){let t=typeof e.packageJsonData?.packageManager=="string"?e.packageJsonData.packageManager.split("@")[0]:null;return {command:t==="pnpm"?"pnpm install":t==="yarn"?"yarn install":t==="bun"?"bun install":"npm install",title:"Generate Node dependency lockfile",files:["package.json","package-lock.json","pnpm-lock.yaml","yarn.lock","bun.lock"],limitations:["Review dependency and lockfile changes before committing."]}}if(e.runtime==="go"&&await c$1.pathExists(s.join(e.projectPath,"go.mod")))return {command:"go mod tidy",title:"Reconcile Go module graph",files:["go.mod","go.sum"],limitations:["Review go.mod/go.sum changes before committing."]};if(e.runtime==="rust")return {command:"cargo fetch",title:"Generate Rust dependency baseline",files:["Cargo.toml","Cargo.lock"],limitations:["Review Cargo.lock changes before committing."]};if(e.runtime==="php")return {command:"composer install",title:"Generate Composer lockfile",files:["composer.json","composer.lock"],limitations:["Review composer.lock changes before committing."]};if(e.runtime==="ruby")return {command:"bundle install",title:"Generate Bundler lockfile",files:["Gemfile","Gemfile.lock"],limitations:["Review Gemfile.lock changes before committing."]};if(e.runtime==="dotnet")return {command:"dotnet restore",title:".NET dependency restore",files:["*.sln","*.csproj","packages.lock.json","Directory.Packages.props"],limitations:["Enable NuGet lock files in the project when release policy requires deterministic restore."]};if(e.runtime==="elixir")return {command:"mix deps.get",title:"Generate Elixir dependency lockfile",files:["mix.exs","mix.lock"],limitations:["Review mix.lock changes before committing."]};if(e.runtime==="clojure")return {command:"clojure -P",title:"Prepare Clojure dependency baseline",files:["deps.edn","project.clj"],limitations:["Review dependency cache and CI restore policy before release."]};if(e.runtime==="python"){let t=await Me(s.join(e.projectPath,"pyproject.toml"));if(/\[tool\.poetry\]/.test(t))return {command:"poetry install --no-root",title:"Install Poetry dependency baseline",files:["pyproject.toml","poetry.lock"],limitations:["Review poetry.lock changes before committing when Poetry resolves or updates the lockfile."]};if(/\[tool\.uv\]|\[project\]/.test(t))return {command:"uv lock",title:"Generate uv lockfile",files:["pyproject.toml","uv.lock"],limitations:["Review uv.lock changes before committing."]}}return null}function rt(e){let t=e?.scripts;if(!t||typeof t!="object"||Array.isArray(t))return {};let i={};for(let[n,o]of Object.entries(t))typeof o=="string"&&o.trim().length>0&&(i[n]=o);return i}function Sn(e){if(e.runtime==="node"){let i=rt(e.packageJsonData);if(!e.packageJsonData)return null;if(e.kind==="test"){let n=i.lint?"npm run lint":i.build?"npm run build":null;return n?{command:n,title:"Define Node test script",targetName:"test",files:["package.json"],limitations:["Replace this fallback with real tests when product coverage is required."]}:null}return e.kind==="security"?{command:"npm audit --audit-level=moderate",title:"Define Node security audit script",targetName:"audit",files:["package.json"]}:null}return {python:{test:{command:"python -m pytest",title:"Define Python test command",targetName:"test",files:["Makefile","pyproject.toml"]},quality:{command:"python -m ruff check .",title:"Define Python quality command",targetName:"quality",files:["Makefile","pyproject.toml"],limitations:["Ensure ruff is declared in project dev dependencies before enforcing in CI."]},security:{command:"python -m pip_audit",title:"Define Python security audit command",targetName:"security",files:["Makefile","pyproject.toml"],limitations:["Ensure pip-audit is available in the project toolchain before enforcing in CI."]}},go:{test:{command:"go test ./...",title:"Define Go test command",targetName:"test",files:["Makefile","go.mod"]},quality:{command:"gofmt -w .",title:"Define Go formatting command",targetName:"quality",files:["Makefile","go.mod"],limitations:["Use CI-specific check mode if formatting should not mutate files in pipelines."]},security:{command:"govulncheck ./...",title:"Define Go vulnerability scan command",targetName:"security",files:["Makefile","go.mod"],limitations:["Ensure govulncheck is installed or provisioned by CI before enforcing."]}},rust:{test:{command:"cargo test",title:"Define Rust test command",targetName:"test",files:["Makefile","Cargo.toml"]},quality:{command:"cargo fmt -- --check && cargo clippy --all-targets -- -D warnings",title:"Define Rust quality command",targetName:"quality",files:["Makefile","Cargo.toml"]},security:{command:"cargo audit",title:"Define Rust security audit command",targetName:"security",files:["Makefile","Cargo.toml"],limitations:["Ensure cargo-audit is installed or provisioned by CI before enforcing."]}},php:{test:{command:"vendor/bin/phpunit",title:"Define PHP test command",targetName:"test",files:["Makefile","composer.json"]},quality:{command:"vendor/bin/phpstan analyse",title:"Define PHP static analysis command",targetName:"quality",files:["Makefile","composer.json"],limitations:["Ensure phpstan is declared in require-dev before enforcing in CI."]},security:{command:"composer audit",title:"Define Composer security audit command",targetName:"security",files:["Makefile","composer.json"]}},ruby:{test:{command:"bundle exec rspec",title:"Define Ruby test command",targetName:"test",files:["Makefile","Gemfile"],limitations:["Use bundle exec ruby -Itest when the project uses minitest instead of RSpec."]},quality:{command:"bundle exec rubocop",title:"Define Ruby quality command",targetName:"quality",files:["Makefile","Gemfile"]},security:{command:"bundle exec bundler-audit check",title:"Define Ruby security audit command",targetName:"security",files:["Makefile","Gemfile"],limitations:["Ensure bundler-audit is installed or provisioned by CI before enforcing."]}},dotnet:{test:{command:"dotnet test",title:"Define .NET test command",targetName:"test",files:["Makefile","*.sln","*.csproj"]},quality:{command:"dotnet format --verify-no-changes",title:"Define .NET formatting gate",targetName:"quality",files:["Makefile","*.sln","*.csproj"]},security:{command:"dotnet list package --vulnerable",title:"Define .NET package vulnerability check",targetName:"security",files:["Makefile","*.sln","*.csproj"]}},java:{test:{command:"mvn test",title:"Define Java test command",targetName:"test",files:["Makefile","pom.xml","build.gradle","build.gradle.kts"],limitations:["Use ./gradlew test when the project is Gradle-first."]},quality:{command:"mvn verify",title:"Define Java verification command",targetName:"quality",files:["Makefile","pom.xml","build.gradle","build.gradle.kts"],limitations:["Use ./gradlew check when the project is Gradle-first."]},security:{command:"mvn org.owasp:dependency-check-maven:check",title:"Define Java dependency vulnerability check",targetName:"security",files:["Makefile","pom.xml"],limitations:["Review OWASP dependency-check policy and cache behavior before enforcing in CI."]}}}[e.runtime]?.[e.kind]??null}async function $n(e){return Tt({issueId:e.issueId,title:e.contract.title,projectPath:e.projectPath,targetName:e.contract.targetName,command:e.contract.command,reason:e.reason,risk:"guarded",requiresReview:true,limitations:e.contract.limitations})}async function ot(e){let t=Sn({runtime:e.runtime,kind:e.kind,packageJsonData:e.packageJsonData});if(t)return e.runtime==="node"&&e.packageJsonData?Mt({issueId:e.issueId,title:t.title,projectPath:e.projectPath,scriptName:t.targetName,scriptValue:t.command,reason:e.reason,risk:"guarded",limitations:t.limitations}):$n({issueId:e.issueId,projectPath:e.projectPath,contract:t,reason:e.reason})}function De(e){return {id:`${e.issueId}.manual`,issueId:e.issueId,title:e.title,status:"manual",fixKind:"manual",risk:"guarded",canAutoFix:false,canEditFiles:false,requiresApproval:true,requiresReview:true,files:e.files.map(t=>s.join(e.projectPath,t)),refreshCommands:["npx rapidkit doctor project --json","npx rapidkit workspace verify --json"],reason:e.reason,limitations:e.limitations}}function Fn(e){return et({issueId:"surface-dockerignore",title:"Create .dockerignore",projectPath:e,relativePath:".dockerignore",content:`${Rn}
|
|
4
4
|
`,reason:"Create a Docker build ignore baseline to keep secrets, dependencies, and reports out of container contexts."})}async function Nn(e){if(!await c$1.pathExists(s.join(e,".gitignore")))return et({issueId:"surface-security-hygiene",title:"Create .gitignore secret baseline",projectPath:e,relativePath:".gitignore",content:`${nt.join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{c as PYTHON_FREE_WORKSPACE_PROFILES,a as buildWorkspaceManifest,f as createProject,g as registerWorkspaceAtPath,d as resolvePythonFreeFallbackProfile,b as syncWorkspaceFoundationFiles,e as writeWorkspaceLauncher}from'./chunk-
|
|
1
|
+
export{c as PYTHON_FREE_WORKSPACE_PROFILES,a as buildWorkspaceManifest,f as createProject,g as registerWorkspaceAtPath,d as resolvePythonFreeFallbackProfile,b as syncWorkspaceFoundationFiles,e as writeWorkspaceLauncher}from'./chunk-NN3IV4U6.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {b}from'./chunk-
|
|
1
|
+
import {b}from'./chunk-KEMWZUGO.js';import {promises}from'fs';import s from'path';import L from'nunjucks';import t from'chalk';import h from'ora';import {fileURLToPath}from'url';import {execa}from'execa';import T from'crypto';var N=fileURLToPath(import.meta.url),K=s.dirname(N);function O(e=32){let i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",v=T.randomBytes(e),r="";for(let p=0;p<e;p++)r+=i[v[p]%i.length];return r}async function Q(e,i){let r=(i.template||"fastapi")==="fastapi",p=r?"FastAPI":"NestJS",d=i.kit_name||(r?"fastapi.standard":"nestjs.standard"),A=d.replace(".","/"),w=h(`Generating ${p} project...`).start();try{let u=s.resolve(K,".."),l;d==="fastapi.ddd"?l="fastapi-ddd":d.startsWith("fastapi")?l="fastapi-standard":l="nestjs-standard";let k=s.join(u,"templates","kits",l),x=L.configure(k,{autoescape:false,trimBlocks:true,lstripBlocks:true});x.addFilter("generate_secret",function(a,o=32){return O(o)});let R={project_name:i.project_name,author:i.author||"RapidKit User",description:i.description||(r?"FastAPI service generated with RapidKit":"NestJS application generated with RapidKit"),app_version:i.app_version||"0.1.0",license:i.license||"MIT",package_manager:i.package_manager||"npm",node_version:i.node_version||"20.0.0",database_type:i.database_type||"postgresql",include_caching:i.include_caching||false,created_at:new Date().toISOString(),rapidkit_version:b()},j;r?j=["src/main.py.j2","src/__init__.py.j2","src/cli.py.j2","src/routing/__init__.py.j2","src/routing/health.py.j2","src/routing/examples.py.j2","src/modules/__init__.py.j2","tests/__init__.py.j2","tests/test_health.py.j2","tests/test_examples.py.j2","README.md.j2","pyproject.toml.j2","Makefile.j2","env.example.j2",".rapidkit/__init__.py.j2",".rapidkit/project.json.j2",".rapidkit/cli.py.j2",".rapidkit/rapidkit.j2",".rapidkit/activate.j2","rapidkit.j2","rapidkit.cmd.j2"]:j=["src/main.ts.j2","src/app.module.ts.j2","src/app.controller.ts.j2","src/app.service.ts.j2","src/config/configuration.ts.j2","src/config/validation.ts.j2","src/config/index.ts.j2","src/modules/index.ts.j2","src/examples/examples.module.ts.j2","src/examples/examples.controller.ts.j2","src/examples/examples.service.ts.j2","src/examples/dto/create-note.dto.ts.j2","test/app.controller.spec.ts.j2","test/examples.controller.spec.ts.j2","test/app.e2e-spec.ts.j2","test/jest-e2e.json.j2","package.json.j2","tsconfig.json.j2","tsconfig.build.json.j2","nest-cli.json.j2","jest.config.ts.j2","eslint.config.cjs.j2","env.example.j2","docker-compose.yml.j2","Dockerfile.j2","README.md.j2",".rapidkit/project.json.j2",".rapidkit/rapidkit.j2",".rapidkit/rapidkit.cmd.j2",".rapidkit/activate.j2","rapidkit.j2","rapidkit.cmd.j2"];for(let a of j){let o=s.join(k,a);try{await promises.access(o);}catch{continue}let f=await promises.readFile(o,"utf-8"),m;try{m=x.renderString(f,R);}catch(C){throw console.error(`Failed to render template: ${a}`),C}let c=a==="env.example.j2"?".env.example":a.replace(/\.j2$/,""),_=s.join(e,c);await promises.mkdir(s.dirname(_),{recursive:true}),await promises.writeFile(_,m),(c.endsWith(".rapidkit/rapidkit")||c.endsWith(".rapidkit/cli.py")||c.endsWith(".rapidkit/activate")||c==="rapidkit")&&await promises.chmod(_,493);}if(r){let a=s.join(k,".rapidkit","context.json"),o=s.join(e,".rapidkit","context.json");try{await promises.mkdir(s.join(e,".rapidkit"),{recursive:true}),await promises.copyFile(a,o);}catch{await promises.mkdir(s.join(e,".rapidkit"),{recursive:true});let m=i.engine||"pip";await promises.writeFile(o,JSON.stringify({engine:m,created_by:"rapidkit-npm-fallback"},null,2));}}let $=s.join(e,".rapidkit");await promises.mkdir($,{recursive:true});let D=s.join($,"project.json"),F={kit_name:d,profile:A,created_at:new Date().toISOString(),created_by:"rapidkit-npm-fallback",runtime:r?"python":"node"};await promises.writeFile(D,JSON.stringify(F,null,2),"utf-8");let y=s.join(e,"rapidkit");await promises.access(y).then(()=>true).catch(()=>false)||(await promises.writeFile(y,`#!/usr/bin/env bash
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
SCRIPT_DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
|
|
4
4
|
cd "$SCRIPT_DIR"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{b as computeDoctorGateExitCode,a as resolveDoctorPolicyProfile,c as runDoctor}from'./chunk-
|
|
1
|
+
export{b as computeDoctorGateExitCode,a as resolveDoctorPolicyProfile,c as runDoctor}from'./chunk-WKCBS5DC.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {b,c}from'./chunk-3Q7264EJ.js';import {b as b$2}from'./chunk-
|
|
1
|
+
import {b,c}from'./chunk-3Q7264EJ.js';import {b as b$2}from'./chunk-KEMWZUGO.js';import {promises}from'fs';import n from'path';import i from'chalk';import b$1 from'ora';import {execa}from'execa';var C="net8.0",R="8080";function A(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}function j(e,r){return e.trim().replace(/[^A-Za-z0-9_.]+/g,".").replace(/^\.+|\.+$/g,"").replace(/\.{2,}/g,".").split(".").map(a=>a.replace(/^[^A-Za-z_]+/,"").replace(/[^A-Za-z0-9_]/g,"")).filter(Boolean).join(".")||r}function S(e,r){return e.replace(/[\r\n\t]+/g," ").trim()||r}function y(e){return /^net\d+\.\d+$/.test(e.trim())}function _(){return JSON.stringify({engine:"npm",runtime:"dotnet"},null,2)}function E(e,r){return JSON.stringify({kit_name:"dotnet.webapi.clean",runtime:"dotnet",framework:"dotnet",module_support:false,project_name:e.project_name,root_namespace:e.root_namespace,target_framework:e.target_framework,app_version:e.app_version,created_by:"rapidkit-npm",rapidkit_version:r,created_at:new Date().toISOString()},null,2)}function D(e){return `<Project Sdk="Microsoft.NET.Sdk.Web">
|
|
2
2
|
<PropertyGroup>
|
|
3
3
|
<TargetFramework>${e.target_framework}</TargetFramework>
|
|
4
4
|
<Nullable>enable</Nullable>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {c,b as b$1,d as d$1,e,f,a}from'./chunk-3Q7264EJ.js';import {b}from'./chunk-
|
|
1
|
+
import {c,b as b$1,d as d$1,e,f,a}from'./chunk-3Q7264EJ.js';import {b}from'./chunk-KEMWZUGO.js';import {promises}from'fs';import d from'path';import o from'chalk';import S from'ora';import {execa}from'execa';function _(e){return `package main
|
|
2
2
|
|
|
3
3
|
import (
|
|
4
4
|
"fmt"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {c,b as b$2,d as d$1,e,f,a}from'./chunk-3Q7264EJ.js';import {b as b$1}from'./chunk-
|
|
1
|
+
import {c,b as b$2,d as d$1,e,f,a}from'./chunk-3Q7264EJ.js';import {b as b$1}from'./chunk-KEMWZUGO.js';import {promises}from'fs';import d from'path';import o from'chalk';import _ from'ora';import {execa}from'execa';function T(e){return `package main
|
|
2
2
|
|
|
3
3
|
import (
|
|
4
4
|
"context"
|