{"_id":"@blueshift-gg/doppler","_rev":"5-6ada5f04bf940311f6999b61b9173eca","name":"@blueshift-gg/doppler","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.0":{"name":"@blueshift-gg/doppler","version":"0.0.0","_id":"@blueshift-gg/doppler@0.0.0","maintainers":[{"name":"deanmlittle","email":"hi@deanlittle.com"},{"name":"jyezy","email":"webjyezy@gmail.com"},{"name":"dhkl","email":"david@davidslab.com"}],"dist":{"shasum":"dcb35b4d96e1539256579ca99050af03036970a3","tarball":"https://registry.npmjs.org/@blueshift-gg/doppler/-/doppler-0.0.0.tgz","fileCount":21,"integrity":"sha512-ApjZ7GkU6HreoEXA1J5lhbnLUBUcaa3fir+F8/P1WRN56aWXnCbzBvN4x7cd+Of26PZYPlEDnXWURoe+Djjc5Q==","signatures":[{"sig":"MEUCIDHFNc5uePab9BTUv65yGD3vlthhjDPXTH2Yo3bpDTm3AiEAnejCTPXCSP8typAyDeJAOCsWX/8YXA5lljKjFTbw2Ms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95326},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"601e7f7e2ddfaf0ceddce06ff5a4a1a6efa5ca19","scripts":{"test":"bun test","build":"rolldown -c --clean-dir","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"bun run build"},"_npmUser":{"name":"dhkl","email":"david@davidslab.com"},"_npmVersion":"11.12.1","description":"Core Doppler payload, manifest, SDK, bytecode, and deploy transaction APIs","directories":{},"_nodeVersion":"24.15.0","dependencies":{"bs58":"^6.0.0","@solana/kit":"^6.9.0","@solana/codecs":"^6.9.0","@solana/compat":"^6.9.0","@solana/web3.js":"3.0.0-rc.1","@solana-program/loader-v3":"^0.3.0","@blueshift-gg/sbpf-assembler":"^0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.1.0","@types/bun":"^1.3.14","typescript":"^6.0.3","@types/node":"^25.9.2","rolldown-plugin-dts":"^0.25.2"},"_npmOperationalInternal":{"tmp":"tmp/doppler_0.0.0_1781808831994_0.5579119176945613","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"@blueshift-gg/doppler","version":"0.0.1","_id":"@blueshift-gg/doppler@0.0.1","maintainers":[{"name":"deanmlittle","email":"hi@deanlittle.com"},{"name":"jyezy","email":"webjyezy@gmail.com"},{"name":"dhkl","email":"david@davidslab.com"}],"dist":{"shasum":"1c7057b24ed74ebc5ea65d60c1e471657beef87b","tarball":"https://registry.npmjs.org/@blueshift-gg/doppler/-/doppler-0.0.1.tgz","fileCount":6,"integrity":"sha512-5VMVBkkbWXIhwd76rcge+DlIQwDoFs53ST5An65MYdDi4evq9FjUuGgJ5yWPDbjpfd/HCTshwhzUWy3wEiddeg==","signatures":[{"sig":"MEUCIQDcIcum47XoNisTYah36DF3DBhdiBgQIjmInhejPGDSvQIgYd96DdLWGetY4SJaWnA8kSj2BaavvbVokb7wEbCFxB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40629},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3376288a91d8f8ce3d1b44ab84fe4b6a7c22e91a","scripts":{"test":"bun test","build":"rolldown -c --clean-dir","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"bun run build"},"_npmUser":{"name":"dhkl","email":"david@davidslab.com"},"_npmVersion":"11.6.2","description":"Core Doppler payload, manifest, SDK, bytecode, and deploy transaction APIs","directories":{},"_nodeVersion":"24.12.0","dependencies":{"bs58":"^6.0.0","@solana/kit":"^6.9.0","@solana/codecs":"^6.9.0","@solana/compat":"^6.9.0","@solana/web3.js":"3.0.0-rc.2","@solana-program/loader-v3":"^0.3.0","@blueshift-gg/sbpf-assembler":"^0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.1.0","@types/bun":"^1.3.14","typescript":"^6.0.3","@types/node":"^25.9.2","rolldown-plugin-dts":"^0.25.2"},"_npmOperationalInternal":{"tmp":"tmp/doppler_0.0.1_1782014620524_0.8171763620446142","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@blueshift-gg/doppler","version":"0.0.2","_id":"@blueshift-gg/doppler@0.0.2","maintainers":[{"name":"deanmlittle","email":"hi@deanlittle.com"},{"name":"jyezy","email":"webjyezy@gmail.com"},{"name":"dhkl","email":"david@davidslab.com"}],"dist":{"shasum":"171327d12ca266898e54bed67d7e60d24f4fd3e6","tarball":"https://registry.npmjs.org/@blueshift-gg/doppler/-/doppler-0.0.2.tgz","fileCount":6,"integrity":"sha512-6L752r8bCaU1Y9lLCNhaqTTi2GGJcTcO9eWa6HfV7TshdLJeOcOOpxR2445/1XjmXE1HOmHNpT9TO3G4VK8ohg==","signatures":[{"sig":"MEQCIBz1Y04vwvdCIQBiUM5QN4//w41fcfdiN8e5bt621ElUAiAWrZh57wr9WOf6qZNj5E3C3mFLI/drYqxjV4+EPz/KOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44279},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9b9cc636e8cdd83c5e1adc82a2c28b45fa86b310","scripts":{"test":"bun test","build":"rolldown -c --clean-dir","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"bun run build"},"_npmUser":{"name":"dhkl","email":"david@davidslab.com"},"_npmVersion":"11.6.2","description":"Core Doppler payload, manifest, SDK, ELF binary, and deploy transaction APIs","directories":{},"_nodeVersion":"24.12.0","dependencies":{"bs58":"^6.0.0","@solana/kit":"^6.9.0","@solana/codecs":"^6.9.0","@solana/compat":"^6.9.0","@solana/web3.js":"3.0.0-rc.2","@solana-program/loader-v3":"^0.3.0","@blueshift-gg/sbpf-assembler":"^0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.1.0","@types/bun":"^1.3.14","typescript":"^6.0.3","@types/node":"^25.9.2","rolldown-plugin-dts":"^0.25.2"},"_npmOperationalInternal":{"tmp":"tmp/doppler_0.0.2_1782384696255_0.31706081388828844","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@blueshift-gg/doppler","version":"0.0.3","_id":"@blueshift-gg/doppler@0.0.3","maintainers":[{"name":"deanmlittle","email":"hi@deanlittle.com"},{"name":"jyezy","email":"webjyezy@gmail.com"},{"name":"dhkl","email":"david@davidslab.com"}],"dist":{"shasum":"c43c93390a0817c44ed5a75613d3ad3c964a0eb3","tarball":"https://registry.npmjs.org/@blueshift-gg/doppler/-/doppler-0.0.3.tgz","fileCount":6,"integrity":"sha512-fiym0Ak0Ykbo4oDaYLQ+eKs6QJ+4ZmVS1yzVaP0oz8aNbYgRTcS86helgkKuQmJc00gSOOdi8n3lK8GA/bGJLA==","signatures":[{"sig":"MEYCIQDbVl24E7gbmXryPQLAC5y6NnkmykQ0xL28berJCKPXmAIhALUhAa42RHlToz8cGeCNnuZ3llcmy7lDFUCq+tgZAv6i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47673},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9a85ce6edd24b3333a2eca5ac1478fb683b41f9c","scripts":{"test":"bun test","build":"rolldown -c --clean-dir","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"bun run build"},"_npmUser":{"name":"dhkl","email":"david@davidslab.com"},"_npmVersion":"11.6.2","description":"Core Doppler payload, manifest, SDK, ELF binary, and deploy transaction APIs","directories":{},"_nodeVersion":"24.12.0","dependencies":{"bs58":"^6.0.0","@solana/kit":"^6.9.0","@solana/codecs":"^6.9.0","@solana/compat":"^6.9.0","@solana/web3.js":"3.0.0-rc.2","@solana-program/loader-v3":"^0.3.0","@blueshift-gg/sbpf-assembler":"^0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.1.0","@types/bun":"^1.3.14","typescript":"^6.0.3","@types/node":"^25.9.2","rolldown-plugin-dts":"^0.25.2"},"_npmOperationalInternal":{"tmp":"tmp/doppler_0.0.3_1782414014274_0.7767624115842897","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@blueshift-gg/doppler","version":"0.0.4","type":"module","description":"Core Doppler payload, manifest, SDK, ELF binary, and deploy transaction APIs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"publishConfig":{"access":"public"},"scripts":{"build":"rolldown -c --clean-dir","typecheck":"tsc -p tsconfig.json --noEmit","test":"bun test","prepublishOnly":"bun run --cwd ../.. packages:check"},"dependencies":{"@blueshift-gg/sbpf-assembler":"^0.2.1","@solana-program/loader-v3":"^0.4.0","@solana/codecs":"^6.9.0","@solana/compat":"^6.9.0","@solana/kit":"^6.9.0","@solana/web3.js":"3.0.0-rc.2","bs58":"^6.0.0"},"devDependencies":{"@types/bun":"^1.3.14","@types/node":"^25.9.2","rolldown":"^1.1.0","rolldown-plugin-dts":"^0.25.2","typescript":"^6.0.3"},"gitHead":"25419ddd7abcd8221f6de08370568459295420d2","_id":"@blueshift-gg/doppler@0.0.4","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-DQityRD1z80vFMhhCyLauwT4MrlLrqyjfAByrQo6eV/gaYejvePMlPWv7HDvI5JDDMazy+h0Jh83hZXAZO2YIA==","shasum":"01d9899cb6d5d7fd5875c71312b3fc4b6a7e02bd","tarball":"https://registry.npmjs.org/@blueshift-gg/doppler/-/doppler-0.0.4.tgz","fileCount":4,"unpackedSize":32942,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDY0/4PGvSI25pq1tv8Je6EyEbG+d68ru6sE3Yb6WiB6wIgZsAcfxlQvNG2n7I72G5zgMpVYYPigKNR5PNUz7jHSlk="}]},"_npmUser":{"name":"dhkl","email":"david@davidslab.com"},"directories":{},"maintainers":[{"name":"deanmlittle","email":"hi@deanlittle.com"},{"name":"jyezy","email":"webjyezy@gmail.com"},{"name":"dhkl","email":"david@davidslab.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/doppler_0.0.4_1782632307866_0.7918877847571442"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-18T18:53:51.899Z","modified":"2026-06-28T07:38:28.210Z","0.0.0":"2026-06-18T18:53:52.143Z","0.0.1":"2026-06-21T04:03:40.666Z","0.0.2":"2026-06-25T10:51:36.392Z","0.0.3":"2026-06-25T19:00:14.441Z","0.0.4":"2026-06-28T07:38:28.027Z"},"description":"Core Doppler payload, manifest, SDK, ELF binary, and deploy transaction APIs","maintainers":[{"name":"deanmlittle","email":"hi@deanlittle.com"},{"name":"jyezy","email":"webjyezy@gmail.com"},{"name":"dhkl","email":"david@davidslab.com"}],"readme":"# @blueshift-gg/doppler\n\nProgrammatic APIs for payload schema validation, binary generation, manifest creation, payload codecs, and Loader v3 deploy transaction construction.\n\n## Get Started\n\n```sh\nnpm install @blueshift-gg/doppler\n```\n\n## Workflow\n\n```ts\nimport {\n  buildPayloadCodec,\n  buildDeployTransactions,\n  createDopplerArtifacts,\n  createGeneratorConfig,\n} from \"@blueshift-gg/doppler\";\nimport { Connection } from \"@solana/web3.js\";\n\nconst payload = {\n  price: \"u64\",\n  confidence: \"u32\",\n  slot: \"u64\",\n} as const;\n\nconst config = createGeneratorConfig({\n  name: \"doppler\",\n  programId: \"fastRQJt3nLdY3QA7n8eZ8ETEVefy56ryfUGVkfZokm\",\n  admin: \"admnz5UvRa93HM5nTrxXmsJ1rw2tvXMBFGauvCgzQhE\",\n  arch: \"v3\",\n  payload,\n});\n\nconst { assembly, binary, manifest } = await createDopplerArtifacts(config);\n\nconst payloadCodec = buildPayloadCodec(payload);\n\nconst connection = new Connection(\"https://api.devnet.solana.com\");\nconst bundle = await buildDeployTransactions({\n  connection,\n  programId: config.programId,\n  payer: \"<payer-address>\",\n  binary,\n});\n```\n\nCore does not write files; callers decide where to persist artifacts.\n\n## Schema and manifest\n\nA generator config requires a fixed-size payload schema:\n\n```ts\nconst payload = {\n  price: \"u64\",\n  confidence: \"u32\",\n  slot: \"u64\",\n} as const;\n```\n\n`createGeneratorConfig` normalizes the schema, computes packed little-endian layout offsets, and validates required metadata (`name`, `programId`, `admin`, `arch`).\n\n`createDopplerArtifacts` returns a manifest shaped like:\n\n```json\n{\n  \"name\": \"doppler\",\n  \"programId\": \"fastRQJt3nLdY3QA7n8eZ8ETEVefy56ryfUGVkfZokm\",\n  \"admin\": \"admnz5UvRa93HM5nTrxXmsJ1rw2tvXMBFGauvCgzQhE\",\n  \"arch\": \"v3\",\n  \"payloadSize\": 20,\n  \"schemaHash\": \"sha256:...\",\n  \"elfSha256\": \"sha256:...\"\n}\n```\n\n## Supported Fields\n\nSupported scalar types:\n\n```txt\nu8, u16, u32, u64, i8, i16, i32, i64, bool\n```\n\nFixed-size arrays use this form:\n\n```ts\npayload: {\n  authority: { type: \"u8\", length: 32 },\n}\n```\n\nThe generated payload layout is packed and little-endian. There is no Rust `repr(C)` padding. Dynamic fields such as strings, vectors, maps, optional fields, and enums are intentionally unsupported in v1.\n\n## Public API\n\n| Module               | Responsibility                                                       |\n| -------------------- | -------------------------------------------------------------------- |\n| `schema`             | Payload field types, normalization, and validation.                  |\n| `layout`             | Packed offset and size calculation for payload fields.               |\n| `codec`              | Browser-safe fixed-size payload codec construction from schema.      |\n| `payload-form`       | Browser-safe payload form defaults, parsing, and display formatting. |\n| `config`             | `createGeneratorConfig` and package-name helpers.                    |\n| `assembly`           | sBPF assembly source rendering from admin and payload size.          |\n| `binary`             | Assembly-to-ELF compilation via `@blueshift-gg/sbpf-assembler`.      |\n| `artifacts`          | `createDopplerArtifacts` — assembly, binary, and manifest in memory. |\n| `transactions`       | `buildDeployTransactions` for unsigned Loader v3 deploy bundles.     |\n| `programs/loader-v3` | Loader v3 instruction builders used by deploy transactions.          |\n| `public-key`         | Solana address decoding and assembly literal helpers.                |\n\nThe current Doppler program does not embed the program ID in the binary. Program ID is written to the manifest. The binary embeds the admin address and payload size.\n\n## Deploy transactions\n\n`buildDeployTransactions` accepts precompiled binary and returns unsigned transactions in Loader v3 order: `initializeBuffer`, `Write` chunks, then `DeployWithMaxDataLen`. Core builds transactions only; signing, sending, and confirmation are left to the caller (the CLI handles that layer).\n\n## Tests\n\n```sh\nbun run test\nbun run typecheck\nbun run build\n```\n\nUnit tests under `tests/` cover schema layout, assembly rendering, binary compilation, payload codecs, and deploy transaction construction.\n","readmeFilename":"README.md"}