{"_id":"@api-extractor-tools/input-processor-protobuf","_rev":"3-87e91c2d2726bd9b1c90f6a944a9ba75","name":"@api-extractor-tools/input-processor-protobuf","dist-tags":{"alpha":"0.1.0-alpha.1","latest":"0.1.0"},"versions":{"0.1.0-alpha.1":{"name":"@api-extractor-tools/input-processor-protobuf","version":"0.1.0-alpha.1","keywords":["protobuf","protocol-buffers","grpc","api","change-detection","plugin","isomorphic","browser","change-detector:plugin","change-detector:input-processor-plugin"],"author":"","license":"MIT","_id":"@api-extractor-tools/input-processor-protobuf@0.1.0-alpha.1","maintainers":[{"name":"northm","email":"michael.l.north@gmail.com"}],"dist":{"shasum":"1ca6841845add5b434c3f781e587e47f832bd9aa","tarball":"https://registry.npmjs.org/@api-extractor-tools/input-processor-protobuf/-/input-processor-protobuf-0.1.0-alpha.1.tgz","fileCount":15,"integrity":"sha512-vSdEy93cNfqiuYKMdDH/sHhaOH8ahhCfC17AdOZSrQl6eaL1HI3St1asD1g+9gwwBKBjZbVnCaHJ9WU9kiBkXQ==","signatures":[{"sig":"MEQCIFrYZtlvtcS/iqnz0SBON9DO1yKopMbAuACSFPp3UwNdAiBbptbQXrK/1g727wg6lnrSJmNoMEe9Gz6UUJtqrmdxBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45581},"main":"dist/cjs/index.js","_from":"file:api-extractor-tools-input-processor-protobuf-0.1.0-alpha.1.tgz","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"test":"vitest run","build":"pnpm inject-version && pnpm build:esm && pnpm build:cjs","check":"pnpm check:eslint && pnpm check:typecheck-tests","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","check:eslint":"eslint src","test:coverage":"vitest run --coverage","inject-version":"node scripts/inject-version.mjs","check:typecheck-tests":"tsc -p test/tsconfig.json"},"_npmUser":{"name":"northm","email":"michael.l.north@gmail.com"},"_resolved":"/tmp/55db3ca08cfca0739c404b7c735888bd/api-extractor-tools-input-processor-protobuf-0.1.0-alpha.1.tgz","_integrity":"sha512-vSdEy93cNfqiuYKMdDH/sHhaOH8ahhCfC17AdOZSrQl6eaL1HI3St1asD1g+9gwwBKBjZbVnCaHJ9WU9kiBkXQ==","_npmVersion":"10.8.2","description":"Protocol Buffer input processor plugin for change-detector (isomorphic - works in Node.js and browsers)","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"protobufjs":"^7.4.0","@api-extractor-tools/change-detector-core":"0.1.0-alpha.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","@vitest/coverage-v8":"^4.0.15"},"_npmOperationalInternal":{"tmp":"tmp/input-processor-protobuf_0.1.0-alpha.1_1765481036419_0.4313533404483536","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.2":{"name":"@api-extractor-tools/input-processor-protobuf","version":"0.1.0-alpha.2","keywords":["protobuf","protocol-buffers","grpc","api","change-detection","plugin","isomorphic","browser","change-detector:plugin","change-detector:input-processor-plugin"],"author":"","license":"MIT","_id":"@api-extractor-tools/input-processor-protobuf@0.1.0-alpha.2","maintainers":[{"name":"northm","email":"michael.l.north@gmail.com"}],"dist":{"shasum":"32d9a583ed175d8e84633db19d46441d40bc0a9f","tarball":"https://registry.npmjs.org/@api-extractor-tools/input-processor-protobuf/-/input-processor-protobuf-0.1.0-alpha.2.tgz","fileCount":15,"integrity":"sha512-9L0m6zaZfm66cuQtGCdjEcLklZBOPW7A1K22+XmzhDXCkEQyjVfNcQSWzWEhgFR8SctO0aHo0t9CItrj79oo0Q==","signatures":[{"sig":"MEUCICyGr1CNGDr2p+BoOXHyV3CtjxoJyfp8uRbTKfZlpmDVAiEAonrQipJwVGg+tUjdo+atm1g9rENzfuzsxdOniPc1PGU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45765},"main":"dist/cjs/index.js","_from":"file:api-extractor-tools-input-processor-protobuf-0.1.0-alpha.2.tgz","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"scripts":{"test":"vitest run && pnpm test:types","build":"pnpm inject-version && pnpm build:esm && pnpm build:cjs","check":"pnpm check:eslint && pnpm check:typecheck-tests","clean":"rm -rf dist","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","test:types":"tsd --files 'test/**/*.test-d.ts'","check:eslint":"eslint src test","test:coverage":"vitest run --coverage","inject-version":"node scripts/inject-version.mjs","check:typecheck-tests":"tsc -p test/tsconfig.json"},"_npmUser":{"name":"northm","email":"michael.l.north@gmail.com"},"_resolved":"/tmp/50fe398cecc71ffae174fe7a3455adbf/api-extractor-tools-input-processor-protobuf-0.1.0-alpha.2.tgz","_integrity":"sha512-9L0m6zaZfm66cuQtGCdjEcLklZBOPW7A1K22+XmzhDXCkEQyjVfNcQSWzWEhgFR8SctO0aHo0t9CItrj79oo0Q==","_npmVersion":"10.8.2","description":"Protocol Buffer input processor plugin for change-detector (isomorphic - works in Node.js and browsers)","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"protobufjs":"^7.4.0","@api-extractor-tools/change-detector-core":"0.1.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"tsd":"^0.33.0","pkg-up":"^5.0.0","vitest":"^4.0.15","@types/node":"^24.10.2","@vitest/coverage-v8":"^4.0.15"},"_npmOperationalInternal":{"tmp":"tmp/input-processor-protobuf_0.1.0-alpha.2_1767304041087_0.019584857103025488","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@api-extractor-tools/input-processor-protobuf","version":"0.1.0","description":"Protocol Buffer input processor plugin for change-detector (isomorphic - works in Node.js and browsers)","main":"dist/cjs/index.js","module":"dist/esm/index.js","types":"dist/esm/index.d.ts","keywords":["protobuf","protocol-buffers","grpc","api","change-detection","plugin","isomorphic","browser","change-detector:plugin","change-detector:input-processor-plugin"],"author":"","license":"MIT","dependencies":{"protobufjs":"^7.4.0","@api-extractor-tools/change-detector-core":"0.1.0"},"devDependencies":{"@types/node":"^24.10.2","@vitest/coverage-v8":"^4.0.15","pkg-up":"^5.0.0","tsd":"^0.33.0","vitest":"^4.0.15"},"exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"sideEffects":false,"scripts":{"clean":"rm -rf dist","build":"pnpm inject-version && pnpm build:esm && pnpm build:cjs","inject-version":"node scripts/inject-version.mjs","build:esm":"tsc -p tsconfig.esm.json","build:cjs":"tsc -p tsconfig.cjs.json","test":"vitest run && pnpm test:types","test:types":"tsd --files 'test/**/*.test-d.ts'","test:coverage":"vitest run --coverage","check":"pnpm check:eslint && pnpm check:typecheck-tests","check:eslint":"eslint src test","check:typecheck-tests":"tsc -p test/tsconfig.json"},"_id":"@api-extractor-tools/input-processor-protobuf@0.1.0","_integrity":"sha512-zKJP3RfLQ+iQUSrahU1RfBSv6Z/qLvqPaC2UyIKCR3LqVkg0TEzlkwcKzn3STIvfdAfYxJN7CeaOZ7VQHubKkw==","_resolved":"/tmp/f4f76db94f20f6975b936dd91132f55e/api-extractor-tools-input-processor-protobuf-0.1.0.tgz","_from":"file:api-extractor-tools-input-processor-protobuf-0.1.0.tgz","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-zKJP3RfLQ+iQUSrahU1RfBSv6Z/qLvqPaC2UyIKCR3LqVkg0TEzlkwcKzn3STIvfdAfYxJN7CeaOZ7VQHubKkw==","shasum":"f1e274e29b3ca2698a14386d31be52cfaf3c80a8","tarball":"https://registry.npmjs.org/@api-extractor-tools/input-processor-protobuf/-/input-processor-protobuf-0.1.0.tgz","fileCount":15,"unpackedSize":45723,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD2MCVO7NBc1w1bMi1/xfxBgw0U/y3WK8Mv7QhA0+R7qAIhAIeheJ1oQqroXMI8ltS+R69+OEZxkNGH9L1hgMuqKn6C"}]},"_npmUser":{"name":"northm","email":"michael.l.north@gmail.com"},"directories":{},"maintainers":[{"name":"northm","email":"michael.l.north@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/input-processor-protobuf_0.1.0_1771015666164_0.8786082274932323"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-11T19:23:56.310Z","modified":"2026-02-13T20:47:46.439Z","0.1.0-alpha.1":"2025-12-11T19:23:56.578Z","0.1.0-alpha.2":"2026-01-01T21:47:21.234Z","0.1.0":"2026-02-13T20:47:46.316Z"},"license":"MIT","keywords":["protobuf","protocol-buffers","grpc","api","change-detection","plugin","isomorphic","browser","change-detector:plugin","change-detector:input-processor-plugin"],"description":"Protocol Buffer input processor plugin for change-detector (isomorphic - works in Node.js and browsers)","maintainers":[{"name":"northm","email":"michael.l.north@gmail.com"}],"readme":"# @api-extractor-tools/input-processor-protobuf\n\nProtocol Buffer input processor plugin for `@api-extractor-tools/change-detector`.\n\n## Overview\n\nThis plugin processes Protocol Buffer definitions and extracts exported symbols for API change detection. It provides two input processors:\n\n1. **Proto File Processor** (`.proto`) - Parses Protocol Buffer source files\n2. **JSON Descriptor Processor** (`.pb.json`, `.descriptor.json`) - Parses Protocol Buffer JSON descriptors (FileDescriptorSet format)\n\nBoth processors are **isomorphic** and work in Node.js and browser environments.\n\n## Installation\n\n```bash\npnpm add @api-extractor-tools/input-processor-protobuf\n```\n\n## Usage\n\n### As a Plugin\n\nThe change detector automatically discovers this plugin via the `\"change-detector:plugin\"` keyword in `package.json`.\n\n```typescript\nimport protobufPlugin from '@api-extractor-tools/input-processor-protobuf'\nimport { createPluginRegistry } from '@api-extractor-tools/change-detector-core'\n\nconst registry = createPluginRegistry()\nregistry.register(protobufPlugin)\n\n// Get the .proto processor\nconst protoProcessor = registry.getInputProcessor('protobuf:proto')\n\n// Get the JSON descriptor processor\nconst jsonProcessor = registry.getInputProcessor('protobuf:json-descriptor')\n```\n\n### Direct Usage (.proto files)\n\n```typescript\nimport { ProtoFileProcessor } from '@api-extractor-tools/input-processor-protobuf'\n\nconst processor = new ProtoFileProcessor()\nconst result = processor.process(`\n  syntax = \"proto3\";\n\n  message User {\n    string name = 1;\n    int32 age = 2;\n  }\n\n  service UserService {\n    rpc GetUser(GetUserRequest) returns (User);\n  }\n`)\n\nconsole.log(result.symbols) // Map<string, ExportedSymbol>\nconsole.log(result.errors) // string[]\n```\n\n### Direct Usage (JSON descriptors)\n\n```typescript\nimport { JsonDescriptorProcessor } from '@api-extractor-tools/input-processor-protobuf'\n\nconst processor = new JsonDescriptorProcessor()\nconst result = processor.process(\n  JSON.stringify({\n    nested: {\n      User: {\n        fields: {\n          name: { type: 'string', id: 1 },\n          age: { type: 'int32', id: 2 },\n        },\n      },\n    },\n  }),\n)\n\nconsole.log(result.symbols) // Map<string, ExportedSymbol>\n```\n\n### Configuration Options\n\nBoth processors accept options to customize behavior:\n\n```typescript\nconst processor = new ProtoFileProcessor({\n  includeNested: true, // Include nested message types (default: true)\n  includeServices: true, // Include service definitions (default: true)\n})\n```\n\n## Supported Features\n\n### Proto File Processor\n\n- Messages and nested messages\n- Enums\n- Services and RPC methods\n- Streaming RPCs (client, server, and bidirectional)\n- Map fields\n- Repeated fields\n- Optional fields\n- Package declarations\n\n### JSON Descriptor Processor\n\n- Message types\n- Enum types\n- Services and methods\n- Nested namespaces/packages\n\n## Plugin Information\n\n- **ID**: `protobuf`\n- **Processors**:\n  - `protobuf:proto` - For `.proto` files\n  - `protobuf:json-descriptor` - For `.pb.json` and `.descriptor.json` files\n\n## Browser Compatibility\n\nThis package is designed to work in browser environments. It uses `protobufjs` which provides browser-compatible parsing.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}