@proofkit/cli 2.0.0-beta.22 → 2.0.0-beta.23
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/CHANGELOG.md +28 -0
- package/dist/add-DrcID6d6.js +57 -0
- package/dist/add-DrcID6d6.js.map +1 -0
- package/dist/addPackageDependency-BGZl7xc5.js +4 -0
- package/dist/addPackageDependency-BGZl7xc5.js.map +1 -0
- package/dist/consts-BZnOMxpW.js +10 -0
- package/dist/consts-BZnOMxpW.js.map +1 -0
- package/dist/deploy-D25sPO7K.js +34 -0
- package/dist/deploy-D25sPO7K.js.map +1 -0
- package/dist/fmdapi-BO4QL0F8.js +2 -0
- package/dist/fmdapi-BO4QL0F8.js.map +1 -0
- package/dist/fmdapi-DyRYZWzI.js +3 -0
- package/dist/fmdapi-DyRYZWzI.js.map +1 -0
- package/dist/getUserPkgManager-Cph_6l1P.js +2 -0
- package/dist/getUserPkgManager-Cph_6l1P.js.map +1 -0
- package/dist/globalOptions-CkqEi9uC.js +2 -0
- package/dist/globalOptions-CkqEi9uC.js.map +1 -0
- package/dist/index-DALPpGd1.d.ts +366 -0
- package/dist/index-DALPpGd1.d.ts.map +1 -0
- package/dist/index.js +10 -159
- package/dist/index.js.map +1 -1
- package/dist/logger-DCEXcH26.js +2 -0
- package/dist/logger-DCEXcH26.js.map +1 -0
- package/dist/parseSettings-DJ2m9sgJ.js +2 -0
- package/dist/parseSettings-DJ2m9sgJ.js.map +1 -0
- package/dist/proofkit-webviewer-73IB1OBU.js +2 -0
- package/dist/proofkit-webviewer-73IB1OBU.js.map +1 -0
- package/dist/remove-BOCU6In3.js +2 -0
- package/dist/remove-BOCU6In3.js.map +1 -0
- package/dist/state-BVEcvFT3.js +41 -0
- package/dist/state-BVEcvFT3.js.map +1 -0
- package/dist/typegen-DyXaif5O.js +2 -0
- package/dist/typegen-DyXaif5O.js.map +1 -0
- package/dist/update-FX71y5b3.js +7 -0
- package/dist/update-FX71y5b3.js.map +1 -0
- package/dist/utils-DymV7zmv.js +3 -0
- package/dist/utils-DymV7zmv.js.map +1 -0
- package/package.json +18 -8
- package/template/fm-addon/ProofKitWV/de.xml +517 -20
- package/template/fm-addon/ProofKitWV/en.xml +517 -20
- package/template/fm-addon/ProofKitWV/es.xml +517 -20
- package/template/fm-addon/ProofKitWV/fr.xml +517 -20
- package/template/fm-addon/ProofKitWV/icon.png +0 -0
- package/template/fm-addon/ProofKitWV/icon@2x.png +0 -0
- package/template/fm-addon/ProofKitWV/info.json +9 -6
- package/template/fm-addon/ProofKitWV/info_de.json +12 -5
- package/template/fm-addon/ProofKitWV/info_en.json +16 -5
- package/template/fm-addon/ProofKitWV/info_es.json +12 -5
- package/template/fm-addon/ProofKitWV/info_fr.json +12 -5
- package/template/fm-addon/ProofKitWV/info_it.json +12 -5
- package/template/fm-addon/ProofKitWV/info_ja.json +12 -5
- package/template/fm-addon/ProofKitWV/info_ko.json +12 -5
- package/template/fm-addon/ProofKitWV/info_nl.json +12 -5
- package/template/fm-addon/ProofKitWV/info_pt.json +12 -5
- package/template/fm-addon/ProofKitWV/info_sv.json +12 -5
- package/template/fm-addon/ProofKitWV/info_zh.json +12 -5
- package/template/fm-addon/ProofKitWV/it.xml +517 -20
- package/template/fm-addon/ProofKitWV/ja.xml +517 -20
- package/template/fm-addon/ProofKitWV/ko.xml +517 -20
- package/template/fm-addon/ProofKitWV/nl.xml +517 -20
- package/template/fm-addon/ProofKitWV/preview.png +0 -0
- package/template/fm-addon/ProofKitWV/pt.xml +517 -20
- package/template/fm-addon/ProofKitWV/records_de.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_en.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_es.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_fr.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_it.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_ja.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_ko.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_nl.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_pt.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_sv.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_zh.xml +0 -0
- package/template/fm-addon/ProofKitWV/sv.xml +517 -20
- package/template/fm-addon/ProofKitWV/template.xml +0 -0
- package/template/fm-addon/ProofKitWV/zh.xml +517 -20
- package/template/nextjs-mantine/AGENTS.md +1 -0
- package/template/nextjs-mantine/package.json +2 -3
- package/template/nextjs-shadcn/AGENTS.md +1 -0
- package/template/nextjs-shadcn/package.json +3 -4
- package/template/vite-wv/.claude/launch.json +18 -0
- package/template/vite-wv/AGENTS.md +1 -0
- package/template/vite-wv/package.json +5 -3
- package/template/vite-wv/proofkit-typegen.config.jsonc +1 -1
- package/template/vite-wv/scripts/filemaker.js +6 -6
- package/template/vite-wv/scripts/launch-fm.js +1 -1
- package/template/vite-wv/scripts/upload.js +1 -1
- package/template/vite-wv/src/App.tsx +4 -4
- package/template/vite-wv/src/main.tsx +8 -2
- package/template/vite-wv/src/router.tsx +57 -0
- package/template/vite-wv/src/routes/query-demo.tsx +37 -0
- package/dist/index-JtcdNmdz.d.ts +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"./state-BVEcvFT3.js";import"./consts-BZnOMxpW.js";import{r as e}from"./utils-DymV7zmv.js";import"./logger-DCEXcH26.js";import"./parseSettings-DJ2m9sgJ.js";import{u as t}from"./fmdapi-DyRYZWzI.js";import{Command as n}from"commander";async function r(e){await t()}const i=()=>{let t=new n(`typegen`).description(`Generate types for your project`).action(r);return t.hook(`preAction`,(t,n)=>{let r=e({commandName:`typegen`});n.setOptionValue(`settings`,r)}),t};export{i as makeTypegenCommand,r as runTypegen};
|
|
2
|
+
//# sourceMappingURL=typegen-DyXaif5O.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typegen-DyXaif5O.js","names":[],"sources":["../src/cli/typegen/index.ts"],"sourcesContent":["import { Command } from \"commander\";\n\nimport { runCodegenCommand } from \"~/generators/fmdapi.js\";\nimport type { Settings } from \"~/utils/parseSettings.js\";\nimport { ensureProofKitProject } from \"../utils.js\";\n\nexport async function runTypegen(_opts: { settings: Settings }) {\n await runCodegenCommand();\n}\n\nexport const makeTypegenCommand = () => {\n const typegenCommand = new Command(\"typegen\").description(\"Generate types for your project\").action(runTypegen);\n\n typegenCommand.hook(\"preAction\", (_thisCommand, actionCommand) => {\n const settings = ensureProofKitProject({ commandName: \"typegen\" });\n actionCommand.setOptionValue(\"settings\", settings);\n });\n\n return typegenCommand;\n};\n"],"mappings":"+OAMA,eAAsB,EAAW,EAA+B,CAC9D,MAAM,GAAmB,CAG3B,MAAa,MAA2B,CACtC,IAAM,EAAiB,IAAI,EAAQ,UAAU,CAAC,YAAY,kCAAkC,CAAC,OAAO,EAAW,CAO/G,OALA,EAAe,KAAK,aAAc,EAAc,IAAkB,CAChE,IAAM,EAAW,EAAsB,CAAE,YAAa,UAAW,CAAC,CAClE,EAAc,eAAe,WAAY,EAAS,EAClD,CAEK"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{r as e,t}from"./state-BVEcvFT3.js";import{i as n}from"./consts-BZnOMxpW.js";import{r}from"./utils-DymV7zmv.js";import{t as i}from"./logger-DCEXcH26.js";import{n as a,r as o}from"./parseSettings-DJ2m9sgJ.js";import{t as s}from"./getUserPkgManager-Cph_6l1P.js";import{r as c,t as l}from"./addPackageDependency-BGZl7xc5.js";import u from"node:path";import d from"chalk";import f from"fs-extra";import{Command as p}from"commander";async function m(){let t=e.projectDir,r=u.join(n,`template/extras`),i=u.join(r,`_cursor/rules`),a=u.join(t,`.cursor/rules`);if(!f.existsSync(i))return;let o=s();await f.ensureDir(a),await f.copy(i,a);let c=u.join(r,`_cursor/conditional-rules`),l={pnpm:`pnpm.mdc`,npm:`npm.mdc`,yarn:`yarn.mdc`}[o];if(l){let e=u.join(c,l),t=u.join(a,`package-manager.mdc`);f.existsSync(e)&&await f.copy(e,t,{overwrite:!0})}}const h=[`@radix-ui/react-slot`,`@tailwindcss/postcss`,`class-variance-authority`,`clsx`,`lucide-react`,`tailwind-merge`,`tailwindcss`,`tw-animate-css`],g=[];async function _(){let t=e.projectDir,r=u.join(n,`template/nextjs`);l({dependencies:h,devMode:!1,projectDir:t}),l({dependencies:g,devMode:!0,projectDir:t}),f.copySync(u.join(r,`components.json`),u.join(t,`components.json`)),f.copySync(u.join(r,`postcss.config.cjs`),u.join(t,`postcss.config.cjs`)),f.copySync(u.join(r,`src/utils/styles.ts`),u.join(t,`src/utils/styles.ts`)),f.copySync(u.join(r,`src/config/theme/globals.css`),u.join(t,`src/config/theme/globals.css`)),await c(),console.log(`
|
|
2
|
+
✅ shadcn/ui + Tailwind v4 upgrade complete!
|
|
3
|
+
`)}const v=[{key:`cursorRules`,title:`Upgrade Cursor Rules`,description:`Upgrade the .cursor rules in your project to the latest version.`,appType:[`browser`],function:m},{key:`shadcn`,title:`Add Shadcn`,description:`Add Shadcn to your project, to support easily adding new components from a variety of component registries.`,appType:[`browser`,`webviewer`],function:_}];function y(){let e=a();if(e.ui===`shadcn`)return[];let t=e.appliedUpgrades;return v.filter(n=>!t.includes(n.key)&&n.appType.includes(e.appType)).map(({key:e,title:t,description:n})=>({key:e,title:t,description:n}))}async function b(){let e=y(),t=a();if(t.ui!==`shadcn`)for(let n of e){let e=v.find(e=>e.key===n.key)?.function;if(e){await e();let r=t.appliedUpgrades;o({appliedUpgrades:[...r,n.key]})}}}const x=async()=>{t({}),e.baseCommand=`upgrade`,r({commandName:`upgrade`}),i.info(`
|
|
4
|
+
Upgrading ProofKit components...
|
|
5
|
+
`);try{await b(),i.info(d.green(`✔ Successfully upgraded components
|
|
6
|
+
`))}catch(e){i.error(`Failed to upgrade components:`,e),process.exit(1)}},S=new p().name(`upgrade`).description(`Upgrade ProofKit components in your project`).action(x);export{x as runUpgrade,S as upgrade};
|
|
7
|
+
//# sourceMappingURL=update-FX71y5b3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-FX71y5b3.js","names":[],"sources":["../src/upgrades/cursorRules.ts","../src/upgrades/shadcn.ts","../src/upgrades/index.ts","../src/cli/update/index.ts"],"sourcesContent":["import path from \"node:path\";\nimport fs from \"fs-extra\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { state } from \"~/state.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\n\nexport async function copyCursorRules() {\n const projectDir = state.projectDir;\n const extrasDir = path.join(PKG_ROOT, \"template/extras\");\n const cursorRulesSrcDir = path.join(extrasDir, \"_cursor/rules\");\n const cursorRulesDestDir = path.join(projectDir, \".cursor/rules\");\n\n if (!fs.existsSync(cursorRulesSrcDir)) {\n return;\n }\n\n const pkgManager = getUserPkgManager();\n await fs.ensureDir(cursorRulesDestDir);\n await fs.copy(cursorRulesSrcDir, cursorRulesDestDir);\n\n // Copy package manager specific rules\n const conditionalRulesDir = path.join(extrasDir, \"_cursor/conditional-rules\");\n\n const packageManagerRules = {\n pnpm: \"pnpm.mdc\",\n npm: \"npm.mdc\",\n yarn: \"yarn.mdc\",\n };\n\n const selectedRule = packageManagerRules[pkgManager as keyof typeof packageManagerRules];\n\n if (selectedRule) {\n const ruleSrc = path.join(conditionalRulesDir, selectedRule);\n const ruleDest = path.join(cursorRulesDestDir, \"package-manager.mdc\");\n\n if (fs.existsSync(ruleSrc)) {\n await fs.copy(ruleSrc, ruleDest, { overwrite: true });\n }\n }\n}\n","import path from \"node:path\";\nimport fs from \"fs-extra\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport type { AvailableDependencies } from \"~/installers/dependencyVersionMap.js\";\nimport { state } from \"~/state.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\n\nconst BASE_DEPS = [\n \"@radix-ui/react-slot\",\n \"@tailwindcss/postcss\",\n \"class-variance-authority\",\n \"clsx\",\n \"lucide-react\",\n \"tailwind-merge\",\n \"tailwindcss\",\n \"tw-animate-css\",\n] as AvailableDependencies[];\nconst BASE_DEV_DEPS = [] as AvailableDependencies[];\n\nexport async function addShadcn() {\n const projectDir = state.projectDir;\n\n const TEMPLATE_ROOT = path.join(PKG_ROOT, \"template/nextjs\");\n\n // 1. Add dependencies\n addPackageDependency({\n dependencies: BASE_DEPS,\n devMode: false,\n projectDir,\n });\n addPackageDependency({\n dependencies: BASE_DEV_DEPS,\n devMode: true,\n projectDir,\n });\n\n // 2. Copy config and utility files\n fs.copySync(path.join(TEMPLATE_ROOT, \"components.json\"), path.join(projectDir, \"components.json\"));\n fs.copySync(path.join(TEMPLATE_ROOT, \"postcss.config.cjs\"), path.join(projectDir, \"postcss.config.cjs\"));\n fs.copySync(path.join(TEMPLATE_ROOT, \"src/utils/styles.ts\"), path.join(projectDir, \"src/utils/styles.ts\"));\n fs.copySync(\n path.join(TEMPLATE_ROOT, \"src/config/theme/globals.css\"),\n path.join(projectDir, \"src/config/theme/globals.css\"),\n );\n\n // 3. Install dependencies\n await installDependencies();\n\n // 4. Success message\n console.log(\"\\n✅ shadcn/ui + Tailwind v4 upgrade complete!\\n\");\n}\n","import { type appTypes, getSettings, mergeSettings } from \"~/utils/parseSettings.js\";\nimport { copyCursorRules } from \"./cursorRules.js\";\nimport { addShadcn } from \"./shadcn.js\";\n\ninterface Upgrade {\n key: string;\n title: string;\n description: string;\n appType: (typeof appTypes)[number][];\n function: () => Promise<void>;\n}\n\nconst availableUpgrades: Upgrade[] = [\n {\n key: \"cursorRules\",\n title: \"Upgrade Cursor Rules\",\n description: \"Upgrade the .cursor rules in your project to the latest version.\",\n appType: [\"browser\"],\n function: copyCursorRules,\n },\n {\n key: \"shadcn\",\n title: \"Add Shadcn\",\n description:\n \"Add Shadcn to your project, to support easily adding new components from a variety of component registries.\",\n appType: [\"browser\", \"webviewer\"],\n function: addShadcn,\n },\n];\n\nexport type UpgradeKeys = (typeof availableUpgrades)[number][\"key\"];\n\nexport function checkForAvailableUpgrades() {\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n return [];\n }\n\n const appliedUpgrades = settings.appliedUpgrades;\n\n const neededUpgrades = availableUpgrades.filter(\n (upgrade) => !appliedUpgrades.includes(upgrade.key) && upgrade.appType.includes(settings.appType),\n );\n\n return neededUpgrades.map(({ key, title, description }) => ({\n key,\n title,\n description,\n }));\n}\n\nexport async function runAllAvailableUpgrades() {\n const upgrades = checkForAvailableUpgrades();\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n return;\n }\n\n for (const upgrade of upgrades) {\n const upgradeFunction = availableUpgrades.find((u) => u.key === upgrade.key)?.function;\n if (upgradeFunction) {\n await upgradeFunction();\n const appliedUpgrades = settings.appliedUpgrades;\n mergeSettings({\n appliedUpgrades: [...appliedUpgrades, upgrade.key],\n });\n }\n }\n}\n","import chalk from \"chalk\";\nimport { Command } from \"commander\";\n\nimport { initProgramState, state } from \"~/state.js\";\nimport { runAllAvailableUpgrades } from \"~/upgrades/index.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { ensureProofKitProject } from \"../utils.js\";\n\nexport const runUpgrade = async () => {\n initProgramState({});\n state.baseCommand = \"upgrade\";\n ensureProofKitProject({ commandName: \"upgrade\" });\n\n logger.info(\"\\nUpgrading ProofKit components...\\n\");\n\n try {\n await runAllAvailableUpgrades();\n logger.info(chalk.green(\"✔ Successfully upgraded components\\n\"));\n } catch (error) {\n logger.error(\"Failed to upgrade components:\", error);\n process.exit(1);\n }\n};\n\nexport const upgrade = new Command()\n .name(\"upgrade\")\n .description(\"Upgrade ProofKit components in your project\")\n .action(runUpgrade);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{a as e,g as t}from"./state-BVEcvFT3.js";import{c as n}from"./consts-BZnOMxpW.js";import{n as r}from"./parseSettings-DJ2m9sgJ.js";import i from"node:path";import a from"chalk";import o from"fs-extra";import*as s from"@clack/prompts";import{confirm as c,input as l,password as u,search as d,select as f}from"@inquirer/prompts";const p=Symbol.for(`@proofkit/cli/prompt-cancelled`);s.intro;const m=s.outro,h=s.note,g=s.log,_=s.spinner,v=s.cancel;function y(e){if(e)return t=>e(t)??!0}function b(e){return typeof e==`string`?e:e?!0:void 0}function x(e){return e instanceof Error&&e.name===`ExitPromptError`}function S(e){return e().catch(e=>{if(x(e))return p;throw e})}function C(e){return e===p||s.isCancel(e)}function w(e,t){return[e.label,e.hint??``,...e.keywords??[]].join(` `).toLowerCase().includes(t.trim().toLowerCase())}function T(e,t){let n=t?.trim();return n?e.filter(e=>w(e,n)):e}function E(e){return S(()=>l({message:e.message,default:e.defaultValue,validate:y(e.validate)}))}function D(e){return S(()=>u({message:e.message,validate:y(e.validate)}))}function O(e){return S(()=>c({message:e.message,default:e.initialValue}))}function k(e){return S(()=>f({message:e.message,pageSize:e.maxItems??10,default:e.initialValue,choices:e.options.map(e=>({value:e.value,name:e.label,description:e.hint,disabled:b(e.disabled)}))}))}function A(e){return S(()=>d({message:e.message,pageSize:10,source:t=>{let n=T(e.options,t);return n.length===0?[{value:`__no_matches__`,name:e.emptyMessage??`No matches found. Keep typing to refine your search.`,disabled:e.emptyMessage??`No matches found`}]:n.map(e=>({value:e.value,name:e.label,description:e.hint,disabled:b(e.disabled)}))}}))}const j=({commandName:s})=>{o.existsSync(i.join(process.cwd(),`proofkit.json`))||(console.log(a.yellow(`The "${s}" command requires an existing ProofKit project.
|
|
2
|
+
Please run " ${n} init" first, or try this command again when inside a ProofKit project.`)),process.exit(1));try{return r()}catch(n){console.log(a.red(`Error parsing ProofKit settings file:`)),n instanceof t?console.log(e.prettifyError(n)):console.log(n),process.exit(1)}};var M=class extends Error{};function N(e){if(C(e))throw v(),new M;return e}export{O as a,h as c,A as d,k as f,v as i,m as l,E as m,N as n,C as o,_ as p,j as r,g as s,M as t,D as u};
|
|
3
|
+
//# sourceMappingURL=utils-DymV7zmv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-DymV7zmv.js","names":["intro","note","log","spinner","isCancel","inquirerInput","password","inquirerPassword","confirm","inquirerConfirm","select","inquirerSelect","inquirerSearch","z","isCancel"],"sources":["../src/cli/prompts.ts","../src/cli/utils.ts"],"sourcesContent":["import * as clack from \"@clack/prompts\";\nimport {\n checkbox as inquirerCheckbox,\n confirm as inquirerConfirm,\n input as inquirerInput,\n password as inquirerPassword,\n search as inquirerSearch,\n select as inquirerSelect,\n} from \"@inquirer/prompts\";\n\nconst CANCEL_SYMBOL = Symbol.for(\"@proofkit/cli/prompt-cancelled\");\n\nexport const intro = clack.intro;\nexport const outro = clack.outro;\nexport const note = clack.note;\nexport const log = clack.log;\nexport const spinner = clack.spinner;\nexport const cancel = clack.cancel;\n\nexport interface PromptOption<T extends string> {\n value: T;\n label: string;\n hint?: string;\n disabled?: boolean | string;\n}\n\nexport interface SearchPromptOption<T extends string> extends PromptOption<T> {\n keywords?: readonly string[];\n}\n\nfunction normalizeValidate(\n validate: ((value: string) => string | undefined) | undefined,\n): ((value: string) => string | boolean) | undefined {\n if (!validate) {\n return undefined;\n }\n\n return (value: string) => validate(value) ?? true;\n}\n\nfunction normalizeDisabledMessage(value: boolean | string | undefined) {\n if (typeof value === \"string\") {\n return value;\n }\n return value ? true : undefined;\n}\n\nfunction isPromptCancel(error: unknown) {\n return error instanceof Error && error.name === \"ExitPromptError\";\n}\n\nfunction withCancelSentinel<T>(fn: () => Promise<T>): Promise<T | symbol> {\n return fn().catch((error: unknown) => {\n if (isPromptCancel(error)) {\n return CANCEL_SYMBOL;\n }\n throw error;\n });\n}\n\nexport function isCancel(value: unknown): value is symbol {\n return value === CANCEL_SYMBOL || clack.isCancel(value);\n}\n\nfunction matchesSearch(option: SearchPromptOption<string>, query: string) {\n const haystack = [option.label, option.hint ?? \"\", ...(option.keywords ?? [])].join(\" \").toLowerCase();\n return haystack.includes(query.trim().toLowerCase());\n}\n\nexport function filterSearchOptions<T extends string>(\n options: readonly SearchPromptOption<T>[],\n query: string | undefined,\n) {\n const term = query?.trim();\n if (!term) {\n return options;\n }\n\n return options.filter((option) => matchesSearch(option, term));\n}\n\nexport function text(options: {\n message: string;\n defaultValue?: string;\n validate?: (value: string) => string | undefined;\n}) {\n return withCancelSentinel(() =>\n inquirerInput({\n message: options.message,\n default: options.defaultValue,\n validate: normalizeValidate(options.validate),\n }),\n );\n}\n\nexport function password(options: { message: string; validate?: (value: string) => string | undefined }) {\n return withCancelSentinel(() =>\n inquirerPassword({\n message: options.message,\n validate: normalizeValidate(options.validate),\n }),\n );\n}\n\nexport function confirm(options: { message: string; initialValue?: boolean }) {\n return withCancelSentinel(\n () =>\n inquirerConfirm({\n message: options.message,\n default: options.initialValue,\n }) as Promise<boolean>,\n );\n}\n\nexport function select<T extends string>(options: {\n message: string;\n options: PromptOption<T>[];\n maxItems?: number;\n initialValue?: T;\n}) {\n return withCancelSentinel(() =>\n inquirerSelect<T>({\n message: options.message,\n pageSize: options.maxItems ?? 10,\n default: options.initialValue,\n choices: options.options.map((option) => ({\n value: option.value,\n name: option.label,\n description: option.hint,\n disabled: normalizeDisabledMessage(option.disabled),\n })),\n }),\n );\n}\n\nexport function searchSelect<T extends string>(options: {\n message: string;\n emptyMessage?: string;\n options: SearchPromptOption<T>[];\n}) {\n return withCancelSentinel(() =>\n inquirerSearch<T>({\n message: options.message,\n pageSize: 10,\n source: (input) => {\n const filtered = filterSearchOptions(options.options, input);\n if (filtered.length === 0) {\n return [\n {\n value: \"__no_matches__\" as T,\n name: options.emptyMessage ?? \"No matches found. Keep typing to refine your search.\",\n disabled: options.emptyMessage ?? \"No matches found\",\n },\n ];\n }\n\n return filtered.map((option) => ({\n value: option.value,\n name: option.label,\n description: option.hint,\n disabled: normalizeDisabledMessage(option.disabled),\n }));\n },\n }),\n );\n}\n\nexport function multiSearchSelect<T extends string>(options: {\n message: string;\n options: SearchPromptOption<T>[];\n required?: boolean;\n}) {\n return withCancelSentinel(() =>\n inquirerCheckbox<T>({\n message: options.message,\n pageSize: 10,\n required: options.required,\n choices: options.options.map((option) => ({\n value: option.value,\n name: option.label,\n description: option.hint,\n disabled: normalizeDisabledMessage(option.disabled),\n })),\n }),\n );\n}\n","import path from \"node:path\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport z, { ZodError } from \"zod/v4\";\n\nimport { cancel, isCancel } from \"~/cli/prompts.js\";\nimport { npmName } from \"~/consts.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\n\n/**\n * Runs before any add command is run. Checks if the user is in a ProofKit project and if the\n * proofkit.json file is valid.\n */\nexport const ensureProofKitProject = ({ commandName }: { commandName: string }) => {\n const settingsExists = fs.existsSync(path.join(process.cwd(), \"proofkit.json\"));\n if (!settingsExists) {\n console.log(\n chalk.yellow(\n `The \"${commandName}\" command requires an existing ProofKit project.\nPlease run \" ${npmName} init\" first, or try this command again when inside a ProofKit project.`,\n ),\n );\n process.exit(1);\n }\n\n try {\n return getSettings();\n } catch (error) {\n console.log(chalk.red(\"Error parsing ProofKit settings file:\"));\n if (error instanceof ZodError) {\n console.log(z.prettifyError(error));\n } else {\n console.log(error);\n }\n\n process.exit(1);\n }\n};\n\nexport class UserAbortedError extends Error {}\nexport function abortIfCancel(value: symbol | string): string;\nexport function abortIfCancel<T extends boolean>(value: symbol | T): T;\nexport function abortIfCancel<T extends string | boolean>(value: T | symbol): T {\n if (isCancel(value)) {\n cancel();\n throw new UserAbortedError();\n }\n return value;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@proofkit/cli",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.0.0-beta.23",
|
|
4
|
+
"description": "Interactive CLI to scaffold and manage ProofKit projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -30,9 +30,8 @@
|
|
|
30
30
|
"dist",
|
|
31
31
|
"template",
|
|
32
32
|
"README.md",
|
|
33
|
-
"index.d.ts",
|
|
34
|
-
"LICENSE",
|
|
35
33
|
"CHANGELOG.md",
|
|
34
|
+
"index.d.ts",
|
|
36
35
|
"package.json"
|
|
37
36
|
],
|
|
38
37
|
"engines": {
|
|
@@ -42,11 +41,18 @@
|
|
|
42
41
|
"@better-fetch/fetch": "1.1.17",
|
|
43
42
|
"@clack/core": "^0.3.5",
|
|
44
43
|
"@clack/prompts": "^0.11.0",
|
|
44
|
+
"@effect/cli": "0.74.0",
|
|
45
|
+
"@effect/platform": "0.95.0",
|
|
46
|
+
"@effect/platform-node": "0.105.0",
|
|
47
|
+
"@effect/printer": "0.48.0",
|
|
48
|
+
"@effect/printer-ansi": "0.48.0",
|
|
49
|
+
"@inquirer/prompts": "^8.3.2",
|
|
45
50
|
"@types/glob": "^8.1.0",
|
|
46
51
|
"axios": "^1.13.2",
|
|
47
52
|
"chalk": "5.4.1",
|
|
48
53
|
"commander": "^14.0.2",
|
|
49
54
|
"dotenv": "^16.6.1",
|
|
55
|
+
"effect": "^3.20.0",
|
|
50
56
|
"es-toolkit": "^1.43.0",
|
|
51
57
|
"execa": "^9.6.1",
|
|
52
58
|
"fast-glob": "^3.3.3",
|
|
@@ -63,8 +69,9 @@
|
|
|
63
69
|
"shadcn": "^2.10.0",
|
|
64
70
|
"sort-package-json": "^2.15.1",
|
|
65
71
|
"ts-morph": "^26.0.0",
|
|
66
|
-
"
|
|
67
|
-
"@proofkit/
|
|
72
|
+
"type-fest": "^3.13.1",
|
|
73
|
+
"@proofkit/fmdapi": "5.1.0-beta.3",
|
|
74
|
+
"@proofkit/typegen": "1.1.0-beta.19"
|
|
68
75
|
},
|
|
69
76
|
"devDependencies": {
|
|
70
77
|
"@auth/drizzle-adapter": "^1.11.1",
|
|
@@ -102,13 +109,15 @@
|
|
|
102
109
|
"superjson": "^2.2.6",
|
|
103
110
|
"tailwindcss": "^4.1.18",
|
|
104
111
|
"tsdown": "^0.14.2",
|
|
105
|
-
"type-fest": "^3.13.1",
|
|
106
112
|
"typescript": "^5.9.3",
|
|
107
113
|
"ultracite": "7.0.8",
|
|
108
114
|
"vitest": "^4.0.17",
|
|
109
115
|
"zod": "^4.3.5",
|
|
110
116
|
"@proofkit/registry": "1.0.1-beta.0"
|
|
111
117
|
},
|
|
118
|
+
"publishConfig": {
|
|
119
|
+
"access": "public"
|
|
120
|
+
},
|
|
112
121
|
"scripts": {
|
|
113
122
|
"typecheck": "tsc",
|
|
114
123
|
"build": "NODE_ENV=production tsdown && publint --strict",
|
|
@@ -121,6 +130,7 @@
|
|
|
121
130
|
"pub:beta": "NODE_ENV=production pnpm build && npm publish --tag beta --access public",
|
|
122
131
|
"pub:next": "NODE_ENV=production pnpm build && npm publish --tag next --access public",
|
|
123
132
|
"pub:release": "NODE_ENV=production pnpm build && npm publish --access public",
|
|
124
|
-
"test": "vitest run"
|
|
133
|
+
"test": "pnpm build && vitest run",
|
|
134
|
+
"test:smoke": "PROOFKIT_RUN_SMOKE_TESTS=1 vitest run --config vitest.smoke.config.ts"
|
|
125
135
|
}
|
|
126
136
|
}
|