{"_id":"@aphexcms/plugin-forms","_rev":"2-2485e26d66dbba2ed2e53f475d943b99","name":"@aphexcms/plugin-forms","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@aphexcms/plugin-forms","version":"0.1.0","keywords":["aphex","aphexcms","cms","plugin","forms","form-builder"],"license":"MIT","_id":"@aphexcms/plugin-forms@0.1.0","maintainers":[{"name":"rainbowasian96","email":"benjaminsinidol@gmail.com"}],"homepage":"https://github.com/IcelandicIcecream/aphex#readme","bugs":{"url":"https://github.com/IcelandicIcecream/aphex/issues"},"dist":{"shasum":"4cf9862cc324b241a4479885daf894a80dd8dc8e","tarball":"https://registry.npmjs.org/@aphexcms/plugin-forms/-/plugin-forms-0.1.0.tgz","fileCount":30,"integrity":"sha512-skwplFteXB+NlJ2i8uuRCif+NyMj5lYdqr6UfWjzIYesGt7SZr9Jx38AEbCsJu3XxL73enI1AuqK2/3L8JyVng==","signatures":[{"sig":"MEQCIHowhfOks9CXlGyRCyz3y1Ktj6wUeJ44GSlD481XeMPeAiAqYCkYQMMnTRP5+T1GtwXAKRsNiOnX8VaIKtEDgaC67g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88834},"main":"./src/lib/index.js","type":"module","types":"./src/lib/index.d.ts","exports":{".":{"types":"./src/lib/index.d.ts","svelte":"./src/lib/index.js","default":"./src/lib/index.js"},"./schema":{"types":"./src/lib/schema.d.ts","svelte":"./src/lib/schema.js","default":"./src/lib/schema.js"}},"gitHead":"03a1ab04e68665fda2f98b8b75069e392f51f11f","scripts":{"dev":"tsc --watch --preserveWatchOutput","build":"tsc && node ../../scripts/fix-imports.js ./dist","check":"tsc --noEmit","prepack":"node ../../scripts/swap-package-paths.js ./package.json dist lib","postpack":"node ../../scripts/swap-package-paths.js ./package.json src lib","dev:local":"node ../../scripts/swap-package-paths.js ./package.json src lib"},"_npmUser":{"name":"rainbowasian96","email":"benjaminsinidol@gmail.com"},"repository":{"url":"git+https://github.com/IcelandicIcecream/aphex.git","type":"git","directory":"plugins/plugin-forms"},"_npmVersion":"11.12.1","description":"Form builder plugin for AphexCMS — editor-composed forms, stored submissions, and email notifications","directories":{},"_nodeVersion":"26.0.0","dependencies":{"@lucide/svelte":"^0.554.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","typescript":"^5.9.3"},"peerDependencies":{"zod":"^4.0.0","@aphexcms/cms-core":"workspace:>=9"},"_npmOperationalInternal":{"tmp":"tmp/plugin-forms_0.1.0_1788801288772_0.8540645915433291","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aphexcms/plugin-forms","version":"0.1.1","description":"Form builder plugin for AphexCMS — editor-composed forms, stored submissions, and email notifications","license":"MIT","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/IcelandicIcecream/aphex.git","directory":"plugins/plugin-forms"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./schema":{"types":"./dist/schema.d.ts","svelte":"./dist/schema.js","default":"./dist/schema.js"}},"keywords":["aphex","aphexcms","cms","plugin","forms","form-builder"],"devDependencies":{"typescript":"^5.9.3","hono":"^4.6.0"},"peerDependencies":{"@aphexcms/cms-core":">=11.0.0","zod":"^4.0.0"},"dependencies":{"@lucide/svelte":"^0.554.0"},"scripts":{"dev":"tsc --watch --preserveWatchOutput","build":"tsc && node ../../scripts/fix-imports.js ./dist","check":"tsc --noEmit","dev:local":"node ../../scripts/swap-package-paths.js ./package.json src lib"},"_id":"@aphexcms/plugin-forms@0.1.1","bugs":{"url":"https://github.com/IcelandicIcecream/aphex/issues"},"homepage":"https://github.com/IcelandicIcecream/aphex#readme","_integrity":"sha512-7WdkZacnyelyWTsE9cTorBeniHcCneQY7vCSDwCaTHQsQxftU/ipij19OrFoV3KcVNxfviEzGZd3XDYBpnCxnA==","_resolved":"/tmp/630e5be88df0c75d7f9ca1431b07430b/aphexcms-plugin-forms-0.1.1.tgz","_from":"file:aphexcms-plugin-forms-0.1.1.tgz","_nodeVersion":"24.20.0","_npmVersion":"11.19.1","dist":{"integrity":"sha512-7WdkZacnyelyWTsE9cTorBeniHcCneQY7vCSDwCaTHQsQxftU/ipij19OrFoV3KcVNxfviEzGZd3XDYBpnCxnA==","shasum":"a7c88de2599359f767c670d4d9e1717a154fe18c","tarball":"https://registry.npmjs.org/@aphexcms/plugin-forms/-/plugin-forms-0.1.1.tgz","fileCount":31,"unpackedSize":89830,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aphexcms%2fplugin-forms@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDor9I9OBXhzEnqRAKvuUiWdGV8gMSUnP0pbw2CpP/eeAiEAlzXwdXKrNMueCWn+MdXCF7XsTF4A1Mr5jCL1G9jle+Q="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b3448e5c-bcd3-4386-b45b-347410171a12"}},"directories":{},"maintainers":[{"name":"rainbowasian96","email":"benjaminsinidol@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/plugin-forms_0.1.1_1788805985175_0.646025192778801"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-07T17:14:48.533Z","modified":"2026-09-07T18:33:05.656Z","0.1.0":"2026-09-07T17:14:48.902Z","0.1.1":"2026-09-07T18:33:05.299Z"},"bugs":{"url":"https://github.com/IcelandicIcecream/aphex/issues"},"license":"MIT","homepage":"https://github.com/IcelandicIcecream/aphex#readme","keywords":["aphex","aphexcms","cms","plugin","forms","form-builder"],"repository":{"type":"git","url":"git+https://github.com/IcelandicIcecream/aphex.git","directory":"plugins/plugin-forms"},"description":"Form builder plugin for AphexCMS — editor-composed forms, stored submissions, and email notifications","maintainers":[{"name":"rainbowasian96","email":"benjaminsinidol@gmail.com"}],"readme":"# @aphexcms/plugin-forms\n\nEditor-composed forms for [AphexCMS](https://github.com/IcelandicIcecream/aphex) — contact forms, signups, surveys — built in the admin rather than in code, with submissions stored as documents.\n\n📚 **Documentation: [docs.getaphex.com/forms](https://docs.getaphex.com/forms)**\n\n## Install\n\n```bash\npnpm add @aphexcms/plugin-forms\n```\n\n```ts title=\"src/lib/plugins.ts\"\nimport { formsPlugin } from '@aphexcms/plugin-forms';\n\nexport const plugins = [\n\tformsPlugin({\n\t\t// Address notification emails come from. Falls back to APHEX_EMAIL_FROM.\n\t\tfrom: 'Acme <forms@example.com>'\n\t})\n];\n```\n\nThe plugin is self-contained: it registers its own schemas, its submission endpoint, its admin tool, and its notification consumer. Nothing else in `aphex.config.ts` needs to know it exists.\n\nAfter adding it, regenerate types with the plugins path as the third argument, or the `form` and `formSubmission` collections stay untyped:\n\n```bash\naphex generate:types ./src/lib/schemaTypes/index.ts ./src/lib/generated-types.ts ./src/lib/plugins.ts\n```\n\n## What you get\n\n- A **form builder** in the admin — fields, labels, options, required flags, and confirmation behaviour, all editable by a non-developer.\n- **Stored submissions** as ordinary documents, so they're searchable, exportable, and subject to the same access control as everything else.\n- **Validation** derived from the form definition and enforced server-side, not just in the browser.\n- **Spam handling** — a honeypot field plus rate limiting on the submission endpoint.\n- **Email notifications** via an event consumer, so a failed send retries with backoff instead of vanishing.\n\n## Submissions carry personal data\n\nThey usually contain names and email addresses, so the default access rule on `formSubmission` is deliberately stricter than on ordinary content. Widen it knowingly, and check it before exposing submissions through the HTTP or GraphQL APIs.\n\n## Multi-tenancy\n\nThe endpoint derives the organization from the globally unique published form ID and never accepts\nan organization ID from the visitor. The submission and its notification event then commit in one\ntransaction within that exact tenant.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}