{"_id":"@cargo-ai/form-sdk","name":"@cargo-ai/form-sdk","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.2":{"name":"@cargo-ai/form-sdk","version":"1.0.2","description":"Zero-dependency browser SDK for embedding Cargo public forms (headless core + schema-driven renderer).","homepage":"https://www.getcargo.ai","repository":{"type":"git","url":"git+https://github.com/getcargohq/cargo.git","directory":"packages/form-sdk"},"private":false,"license":"UNLICENSED","engines":{"node":">=22"},"volta":{"node":"22.22.2"},"type":"module","exports":{".":"./build/src/index.js"},"scripts":{"afterinstall":"npm run build","dev":"tsc --watch","build":"tsc --build","build:cdn":"esbuild src/cdn.ts --bundle --format=iife --outfile=build/cdn/cargo-forms.js --minify","test":"vitest run","test:watch":"vitest","type:check":"tsc --noEmit","lint":"eslint ./ --fix","lint:check":"eslint ./ --max-warnings=0","format":"prettier --write .","format:check":"prettier --check ."},"dependencies":{"@cargo-ai/types":"^1.0.65"},"devDependencies":{"@cargo-ai/eslint-config":"*","@cargo-ai/prettier-config":"*","@cargo-ai/ts-config":"*","@types/node":"^20.10.8","esbuild":"^0.28.1","eslint":"9.26.0","jsdom":"^25.0.1","prettier":"3.3.3","typescript":"5.3.2","vite":"8.1.0","vitest":"4.1.2"},"_id":"@cargo-ai/form-sdk@1.0.2","gitHead":"5ba674ca933e855a49456c53b6785a74375f175d","bugs":{"url":"https://github.com/getcargohq/cargo/issues"},"_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-5WTOYd38do9fqNUhuwkvmKPMZ+RSwdvOOxpUrmxttE5ZQYxzFVXYGjRMA6kpKSha2kYBzQhjd0+wUqhVK8/30g==","shasum":"384af228f2e069e608fb522022cf3f17ba57cfdc","tarball":"https://registry.npmjs.org/@cargo-ai/form-sdk/-/form-sdk-1.0.2.tgz","fileCount":36,"unpackedSize":138648,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDi/j3B0pMUd79Uz+7Z+sKMomNt/e7OAK/PgM2l8n3lEAIgaR7QIJMLGcEtN9zo7/XVHQ+QT08GYQ+4RGBTqYx9tuk="}]},"_npmUser":{"name":"auree","email":"contact@auree.me"},"directories":{},"maintainers":[{"name":"auree","email":"contact@auree.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/form-sdk_1.0.2_1787444736499_0.7642834171419772"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T00:25:36.364Z","1.0.2":"2026-08-23T00:25:36.645Z","modified":"2026-08-23T00:25:36.917Z"},"maintainers":[{"name":"auree","email":"contact@auree.me"}],"description":"Zero-dependency browser SDK for embedding Cargo public forms (headless core + schema-driven renderer).","homepage":"https://www.getcargo.ai","repository":{"type":"git","url":"git+https://github.com/getcargohq/cargo.git","directory":"packages/form-sdk"},"bugs":{"url":"https://github.com/getcargohq/cargo/issues"},"license":"UNLICENSED","readme":"# @cargo-ai/form-sdk\n\nZero-dependency browser SDK for embedding Cargo public forms. It loads a Tool's\ndeployed form schema, renders it (or runs headless), and submits to the public\nCargo Form API which executes the Tool's workflow.\n\n## Embed (CDN)\n\nThe CDN bundle loads with `async`, so the snippet starts with a stub that\nqueues `Cargo.loadForm` calls made before the bundle finishes loading; the\nbundle drains the queue (and resolves the returned promises) on load.\n\n```html\n<div data-cargo-form=\"TOOL_UUID\"></div>\n<script>\n  window.Cargo = window.Cargo || {};\n  Cargo.loadForm =\n    Cargo.loadForm ||\n    function () {\n      var call = { args: arguments };\n      call.promise = new Promise(function (resolve, reject) {\n        call.resolve = resolve;\n        call.reject = reject;\n      });\n      (Cargo._q = Cargo._q || []).push(call);\n      return call.promise;\n    };\n\n  Cargo.loadForm(\"TOOL_UUID\", { mode: \"sync\" }, (form) => {\n    form.addHiddenFields({ page_url: location.href });\n    form.onSuccess((values, response) => {\n      location.href = \"/thank-you\";\n      return false;\n    });\n  });\n</script>\n<script src=\"https://cdn.getcargo.io/forms/v1.js\" async></script>\n```\n\n## npm\n\n```ts\nimport { loadForm } from \"@cargo-ai/form-sdk\";\n\nconst form = await loadForm(\"TOOL_UUID\", {\n  render: \"headless\", // or \"render\" (default)\n  mode: \"async\", // or \"sync\" (default)\n});\n\nform.setValues({ email: \"ada@example.com\" });\nawait form.submit();\n```\n\n## Options\n\n- `baseUrl` — Cargo API base URL (default `https://api.getcargo.io`).\n- `render` — `\"render\"` builds the form DOM from the schema; `\"headless\"` does not.\n- `mode` — `\"sync\"` waits for and returns run output; `\"async\"` returns immediately and polls.\n- `target` — element or selector to render into (defaults to `[data-cargo-form]`).\n- `autoCaptureUtm` — capture UTM params + page URL automatically (default `true`).\n\n## Lifecycle\n\n`setValues`, `addHiddenFields`, `getValues`, `onValidate`, `onSubmit`,\n`onSuccess`, `onError`, `submit`.\n\n## Privacy & anti-spam\n\n- Respects Global Privacy Control / Do Not Track: when opted out, no anonymous\n  id or UTM capture happens.\n- Injects a honeypot field and a render timestamp (time-trap) consumed by the\n  server-side spam guards. When a CAPTCHA provider is configured for the form,\n  pass the token via `form.addHiddenFields({ [CAPTCHA_TOKEN_FIELD]: token })`.\n\n## Build\n\n- `npm run build` — ESM npm artifact (`build/src/index.js`).\n- `npm run build:cdn` — minified IIFE CDN bundle exposing `window.Cargo`.\n","readmeFilename":"README.md","_rev":"1-0bc61ac2ea0fe7c0804c70eb9f0a14f7"}