@hasna/connectors 0.9.2 → 0.9.3
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/bin/index.js +176 -1
- package/bin/mcp.js +176 -1
- package/bin/serve.js +175 -0
- package/connectors/connect-embedai/.env.example +11 -0
- package/connectors/connect-embedai/CLAUDE.md +272 -0
- package/connectors/connect-embedai/README.md +193 -0
- package/connectors/connect-embedai/package.json +52 -0
- package/connectors/connect-embedai/scripts/release.ts +179 -0
- package/connectors/connect-embedai/src/api/client.ts +213 -0
- package/connectors/connect-embedai/src/api/example.ts +48 -0
- package/connectors/connect-embedai/src/api/index.ts +51 -0
- package/connectors/connect-embedai/src/cli/index.ts +254 -0
- package/connectors/connect-embedai/src/index.ts +103 -0
- package/connectors/connect-embedai/src/types/index.ts +237 -0
- package/connectors/connect-embedai/src/utils/auth.ts +274 -0
- package/connectors/connect-embedai/src/utils/bulk.ts +212 -0
- package/connectors/connect-embedai/src/utils/config.ts +326 -0
- package/connectors/connect-embedai/src/utils/output.ts +175 -0
- package/connectors/connect-embedai/src/utils/settings.ts +114 -0
- package/connectors/connect-embedai/src/utils/storage.ts +198 -0
- package/connectors/connect-embedai/tsconfig.json +16 -0
- package/connectors/connect-emelia/.env.example +11 -0
- package/connectors/connect-emelia/CLAUDE.md +272 -0
- package/connectors/connect-emelia/README.md +193 -0
- package/connectors/connect-emelia/package.json +52 -0
- package/connectors/connect-emelia/scripts/release.ts +179 -0
- package/connectors/connect-emelia/src/api/client.ts +213 -0
- package/connectors/connect-emelia/src/api/example.ts +48 -0
- package/connectors/connect-emelia/src/api/index.ts +51 -0
- package/connectors/connect-emelia/src/cli/index.ts +254 -0
- package/connectors/connect-emelia/src/index.ts +103 -0
- package/connectors/connect-emelia/src/types/index.ts +237 -0
- package/connectors/connect-emelia/src/utils/auth.ts +274 -0
- package/connectors/connect-emelia/src/utils/bulk.ts +212 -0
- package/connectors/connect-emelia/src/utils/config.ts +326 -0
- package/connectors/connect-emelia/src/utils/output.ts +175 -0
- package/connectors/connect-emelia/src/utils/settings.ts +114 -0
- package/connectors/connect-emelia/src/utils/storage.ts +198 -0
- package/connectors/connect-emelia/tsconfig.json +16 -0
- package/connectors/connect-empsing/.env.example +11 -0
- package/connectors/connect-empsing/CLAUDE.md +272 -0
- package/connectors/connect-empsing/README.md +193 -0
- package/connectors/connect-empsing/package.json +50 -0
- package/connectors/connect-empsing/scripts/release.ts +179 -0
- package/connectors/connect-empsing/src/api/client.ts +213 -0
- package/connectors/connect-empsing/src/api/example.ts +48 -0
- package/connectors/connect-empsing/src/api/index.ts +51 -0
- package/connectors/connect-empsing/src/cli/index.ts +254 -0
- package/connectors/connect-empsing/src/index.ts +103 -0
- package/connectors/connect-empsing/src/types/index.ts +237 -0
- package/connectors/connect-empsing/src/utils/auth.ts +274 -0
- package/connectors/connect-empsing/src/utils/bulk.ts +212 -0
- package/connectors/connect-empsing/src/utils/config.ts +326 -0
- package/connectors/connect-empsing/src/utils/output.ts +175 -0
- package/connectors/connect-empsing/src/utils/settings.ts +114 -0
- package/connectors/connect-empsing/src/utils/storage.ts +198 -0
- package/connectors/connect-empsing/tsconfig.json +16 -0
- package/connectors/connect-engati/.env.example +11 -0
- package/connectors/connect-engati/CLAUDE.md +272 -0
- package/connectors/connect-engati/README.md +193 -0
- package/connectors/connect-engati/package.json +52 -0
- package/connectors/connect-engati/scripts/release.ts +179 -0
- package/connectors/connect-engati/src/api/client.ts +213 -0
- package/connectors/connect-engati/src/api/example.ts +48 -0
- package/connectors/connect-engati/src/api/index.ts +51 -0
- package/connectors/connect-engati/src/cli/index.ts +254 -0
- package/connectors/connect-engati/src/index.ts +103 -0
- package/connectors/connect-engati/src/types/index.ts +237 -0
- package/connectors/connect-engati/src/utils/auth.ts +274 -0
- package/connectors/connect-engati/src/utils/bulk.ts +212 -0
- package/connectors/connect-engati/src/utils/config.ts +326 -0
- package/connectors/connect-engati/src/utils/output.ts +175 -0
- package/connectors/connect-engati/src/utils/settings.ts +114 -0
- package/connectors/connect-engati/src/utils/storage.ts +198 -0
- package/connectors/connect-engati/tsconfig.json +16 -0
- package/connectors/connect-enormail/.env.example +11 -0
- package/connectors/connect-enormail/CLAUDE.md +272 -0
- package/connectors/connect-enormail/README.md +193 -0
- package/connectors/connect-enormail/package.json +52 -0
- package/connectors/connect-enormail/scripts/release.ts +179 -0
- package/connectors/connect-enormail/src/api/client.ts +213 -0
- package/connectors/connect-enormail/src/api/example.ts +48 -0
- package/connectors/connect-enormail/src/api/index.ts +51 -0
- package/connectors/connect-enormail/src/cli/index.ts +254 -0
- package/connectors/connect-enormail/src/index.ts +103 -0
- package/connectors/connect-enormail/src/types/index.ts +237 -0
- package/connectors/connect-enormail/src/utils/auth.ts +274 -0
- package/connectors/connect-enormail/src/utils/bulk.ts +212 -0
- package/connectors/connect-enormail/src/utils/config.ts +326 -0
- package/connectors/connect-enormail/src/utils/output.ts +175 -0
- package/connectors/connect-enormail/src/utils/settings.ts +114 -0
- package/connectors/connect-enormail/src/utils/storage.ts +198 -0
- package/connectors/connect-enormail/tsconfig.json +16 -0
- package/connectors/connect-enterpret/.env.example +11 -0
- package/connectors/connect-enterpret/CLAUDE.md +272 -0
- package/connectors/connect-enterpret/README.md +193 -0
- package/connectors/connect-enterpret/package.json +52 -0
- package/connectors/connect-enterpret/scripts/release.ts +179 -0
- package/connectors/connect-enterpret/src/api/client.ts +213 -0
- package/connectors/connect-enterpret/src/api/example.ts +48 -0
- package/connectors/connect-enterpret/src/api/index.ts +51 -0
- package/connectors/connect-enterpret/src/cli/index.ts +254 -0
- package/connectors/connect-enterpret/src/index.ts +103 -0
- package/connectors/connect-enterpret/src/types/index.ts +237 -0
- package/connectors/connect-enterpret/src/utils/auth.ts +274 -0
- package/connectors/connect-enterpret/src/utils/bulk.ts +212 -0
- package/connectors/connect-enterpret/src/utils/config.ts +326 -0
- package/connectors/connect-enterpret/src/utils/output.ts +175 -0
- package/connectors/connect-enterpret/src/utils/settings.ts +114 -0
- package/connectors/connect-enterpret/src/utils/storage.ts +198 -0
- package/connectors/connect-enterpret/tsconfig.json +16 -0
- package/connectors/connect-envoy/.env.example +11 -0
- package/connectors/connect-envoy/CLAUDE.md +272 -0
- package/connectors/connect-envoy/README.md +193 -0
- package/connectors/connect-envoy/package.json +52 -0
- package/connectors/connect-envoy/scripts/release.ts +179 -0
- package/connectors/connect-envoy/src/api/client.ts +213 -0
- package/connectors/connect-envoy/src/api/example.ts +48 -0
- package/connectors/connect-envoy/src/api/index.ts +51 -0
- package/connectors/connect-envoy/src/cli/index.ts +254 -0
- package/connectors/connect-envoy/src/index.ts +103 -0
- package/connectors/connect-envoy/src/types/index.ts +237 -0
- package/connectors/connect-envoy/src/utils/auth.ts +274 -0
- package/connectors/connect-envoy/src/utils/bulk.ts +212 -0
- package/connectors/connect-envoy/src/utils/config.ts +326 -0
- package/connectors/connect-envoy/src/utils/output.ts +175 -0
- package/connectors/connect-envoy/src/utils/settings.ts +114 -0
- package/connectors/connect-envoy/src/utils/storage.ts +198 -0
- package/connectors/connect-envoy/tsconfig.json +16 -0
- package/connectors/connect-epo/.env.example +8 -0
- package/connectors/connect-epo/CLAUDE.md +225 -0
- package/connectors/connect-epo/README.md +259 -0
- package/connectors/connect-epo/package.json +52 -0
- package/connectors/connect-epo/src/api/classification.ts +226 -0
- package/connectors/connect-epo/src/api/client.ts +233 -0
- package/connectors/connect-epo/src/api/family.ts +210 -0
- package/connectors/connect-epo/src/api/index.ts +97 -0
- package/connectors/connect-epo/src/api/legal.ts +163 -0
- package/connectors/connect-epo/src/api/publications.ts +383 -0
- package/connectors/connect-epo/src/api/register.ts +434 -0
- package/connectors/connect-epo/src/cli/index.ts +708 -0
- package/connectors/connect-epo/src/index.ts +25 -0
- package/connectors/connect-epo/src/types/index.ts +372 -0
- package/connectors/connect-epo/src/utils/config.ts +251 -0
- package/connectors/connect-epo/src/utils/output.ts +119 -0
- package/connectors/connect-epo/tsconfig.json +16 -0
- package/connectors/connect-erpnext/.env.example +11 -0
- package/connectors/connect-erpnext/CLAUDE.md +272 -0
- package/connectors/connect-erpnext/README.md +193 -0
- package/connectors/connect-erpnext/package.json +52 -0
- package/connectors/connect-erpnext/scripts/release.ts +179 -0
- package/connectors/connect-erpnext/src/api/client.ts +213 -0
- package/connectors/connect-erpnext/src/api/example.ts +48 -0
- package/connectors/connect-erpnext/src/api/index.ts +51 -0
- package/connectors/connect-erpnext/src/cli/index.ts +254 -0
- package/connectors/connect-erpnext/src/index.ts +103 -0
- package/connectors/connect-erpnext/src/types/index.ts +237 -0
- package/connectors/connect-erpnext/src/utils/auth.ts +274 -0
- package/connectors/connect-erpnext/src/utils/bulk.ts +212 -0
- package/connectors/connect-erpnext/src/utils/config.ts +326 -0
- package/connectors/connect-erpnext/src/utils/output.ts +175 -0
- package/connectors/connect-erpnext/src/utils/settings.ts +114 -0
- package/connectors/connect-erpnext/src/utils/storage.ts +198 -0
- package/connectors/connect-erpnext/tsconfig.json +16 -0
- package/connectors/connect-esendex/.env.example +11 -0
- package/connectors/connect-esendex/CLAUDE.md +272 -0
- package/connectors/connect-esendex/README.md +193 -0
- package/connectors/connect-esendex/package.json +52 -0
- package/connectors/connect-esendex/scripts/release.ts +179 -0
- package/connectors/connect-esendex/src/api/client.ts +213 -0
- package/connectors/connect-esendex/src/api/example.ts +48 -0
- package/connectors/connect-esendex/src/api/index.ts +51 -0
- package/connectors/connect-esendex/src/cli/index.ts +254 -0
- package/connectors/connect-esendex/src/index.ts +103 -0
- package/connectors/connect-esendex/src/types/index.ts +237 -0
- package/connectors/connect-esendex/src/utils/auth.ts +274 -0
- package/connectors/connect-esendex/src/utils/bulk.ts +212 -0
- package/connectors/connect-esendex/src/utils/config.ts +326 -0
- package/connectors/connect-esendex/src/utils/output.ts +175 -0
- package/connectors/connect-esendex/src/utils/settings.ts +114 -0
- package/connectors/connect-esendex/src/utils/storage.ts +198 -0
- package/connectors/connect-esendex/tsconfig.json +16 -0
- package/connectors/connect-evervault/.env.example +11 -0
- package/connectors/connect-evervault/CLAUDE.md +272 -0
- package/connectors/connect-evervault/README.md +193 -0
- package/connectors/connect-evervault/package.json +51 -0
- package/connectors/connect-evervault/scripts/release.ts +179 -0
- package/connectors/connect-evervault/src/api/client.ts +213 -0
- package/connectors/connect-evervault/src/api/example.ts +48 -0
- package/connectors/connect-evervault/src/api/index.ts +51 -0
- package/connectors/connect-evervault/src/cli/index.ts +254 -0
- package/connectors/connect-evervault/src/index.ts +103 -0
- package/connectors/connect-evervault/src/types/index.ts +237 -0
- package/connectors/connect-evervault/src/utils/auth.ts +274 -0
- package/connectors/connect-evervault/src/utils/bulk.ts +212 -0
- package/connectors/connect-evervault/src/utils/config.ts +326 -0
- package/connectors/connect-evervault/src/utils/output.ts +175 -0
- package/connectors/connect-evervault/src/utils/settings.ts +114 -0
- package/connectors/connect-evervault/src/utils/storage.ts +198 -0
- package/connectors/connect-evervault/tsconfig.json +16 -0
- package/connectors/connect-evolphinzoom/.env.example +11 -0
- package/connectors/connect-evolphinzoom/CLAUDE.md +272 -0
- package/connectors/connect-evolphinzoom/README.md +193 -0
- package/connectors/connect-evolphinzoom/package.json +51 -0
- package/connectors/connect-evolphinzoom/scripts/release.ts +179 -0
- package/connectors/connect-evolphinzoom/src/api/client.ts +213 -0
- package/connectors/connect-evolphinzoom/src/api/example.ts +48 -0
- package/connectors/connect-evolphinzoom/src/api/index.ts +51 -0
- package/connectors/connect-evolphinzoom/src/cli/index.ts +254 -0
- package/connectors/connect-evolphinzoom/src/index.ts +103 -0
- package/connectors/connect-evolphinzoom/src/types/index.ts +237 -0
- package/connectors/connect-evolphinzoom/src/utils/auth.ts +274 -0
- package/connectors/connect-evolphinzoom/src/utils/bulk.ts +212 -0
- package/connectors/connect-evolphinzoom/src/utils/config.ts +326 -0
- package/connectors/connect-evolphinzoom/src/utils/output.ts +175 -0
- package/connectors/connect-evolphinzoom/src/utils/settings.ts +114 -0
- package/connectors/connect-evolphinzoom/src/utils/storage.ts +198 -0
- package/connectors/connect-evolphinzoom/tsconfig.json +16 -0
- package/connectors/connect-f5bigip/.env.example +11 -0
- package/connectors/connect-f5bigip/CLAUDE.md +272 -0
- package/connectors/connect-f5bigip/README.md +193 -0
- package/connectors/connect-f5bigip/package.json +51 -0
- package/connectors/connect-f5bigip/scripts/release.ts +179 -0
- package/connectors/connect-f5bigip/src/api/client.ts +213 -0
- package/connectors/connect-f5bigip/src/api/example.ts +48 -0
- package/connectors/connect-f5bigip/src/api/index.ts +51 -0
- package/connectors/connect-f5bigip/src/cli/index.ts +254 -0
- package/connectors/connect-f5bigip/src/index.ts +103 -0
- package/connectors/connect-f5bigip/src/types/index.ts +237 -0
- package/connectors/connect-f5bigip/src/utils/auth.ts +274 -0
- package/connectors/connect-f5bigip/src/utils/bulk.ts +212 -0
- package/connectors/connect-f5bigip/src/utils/config.ts +326 -0
- package/connectors/connect-f5bigip/src/utils/output.ts +175 -0
- package/connectors/connect-f5bigip/src/utils/settings.ts +114 -0
- package/connectors/connect-f5bigip/src/utils/storage.ts +198 -0
- package/connectors/connect-f5bigip/tsconfig.json +16 -0
- package/connectors/connect-faraday/.env.example +11 -0
- package/connectors/connect-faraday/CLAUDE.md +272 -0
- package/connectors/connect-faraday/README.md +193 -0
- package/connectors/connect-faraday/package.json +51 -0
- package/connectors/connect-faraday/scripts/release.ts +179 -0
- package/connectors/connect-faraday/src/api/client.ts +213 -0
- package/connectors/connect-faraday/src/api/example.ts +48 -0
- package/connectors/connect-faraday/src/api/index.ts +51 -0
- package/connectors/connect-faraday/src/cli/index.ts +254 -0
- package/connectors/connect-faraday/src/index.ts +103 -0
- package/connectors/connect-faraday/src/types/index.ts +237 -0
- package/connectors/connect-faraday/src/utils/auth.ts +274 -0
- package/connectors/connect-faraday/src/utils/bulk.ts +212 -0
- package/connectors/connect-faraday/src/utils/config.ts +326 -0
- package/connectors/connect-faraday/src/utils/output.ts +175 -0
- package/connectors/connect-faraday/src/utils/settings.ts +114 -0
- package/connectors/connect-faraday/src/utils/storage.ts +198 -0
- package/connectors/connect-faraday/tsconfig.json +16 -0
- package/connectors/connect-faros/.env.example +11 -0
- package/connectors/connect-faros/CLAUDE.md +272 -0
- package/connectors/connect-faros/README.md +193 -0
- package/connectors/connect-faros/package.json +51 -0
- package/connectors/connect-faros/scripts/release.ts +179 -0
- package/connectors/connect-faros/src/api/client.ts +213 -0
- package/connectors/connect-faros/src/api/example.ts +48 -0
- package/connectors/connect-faros/src/api/index.ts +51 -0
- package/connectors/connect-faros/src/cli/index.ts +254 -0
- package/connectors/connect-faros/src/index.ts +103 -0
- package/connectors/connect-faros/src/types/index.ts +237 -0
- package/connectors/connect-faros/src/utils/auth.ts +274 -0
- package/connectors/connect-faros/src/utils/bulk.ts +212 -0
- package/connectors/connect-faros/src/utils/config.ts +326 -0
- package/connectors/connect-faros/src/utils/output.ts +175 -0
- package/connectors/connect-faros/src/utils/settings.ts +114 -0
- package/connectors/connect-faros/src/utils/storage.ts +198 -0
- package/connectors/connect-faros/tsconfig.json +16 -0
- package/connectors/connect-fastbots/.env.example +11 -0
- package/connectors/connect-fastbots/CLAUDE.md +272 -0
- package/connectors/connect-fastbots/README.md +193 -0
- package/connectors/connect-fastbots/package.json +51 -0
- package/connectors/connect-fastbots/scripts/release.ts +179 -0
- package/connectors/connect-fastbots/src/api/client.ts +213 -0
- package/connectors/connect-fastbots/src/api/example.ts +48 -0
- package/connectors/connect-fastbots/src/api/index.ts +51 -0
- package/connectors/connect-fastbots/src/cli/index.ts +254 -0
- package/connectors/connect-fastbots/src/index.ts +103 -0
- package/connectors/connect-fastbots/src/types/index.ts +237 -0
- package/connectors/connect-fastbots/src/utils/auth.ts +274 -0
- package/connectors/connect-fastbots/src/utils/bulk.ts +212 -0
- package/connectors/connect-fastbots/src/utils/config.ts +326 -0
- package/connectors/connect-fastbots/src/utils/output.ts +175 -0
- package/connectors/connect-fastbots/src/utils/settings.ts +114 -0
- package/connectors/connect-fastbots/src/utils/storage.ts +198 -0
- package/connectors/connect-fastbots/tsconfig.json +16 -0
- package/connectors/connect-filemaker/.env.example +11 -0
- package/connectors/connect-filemaker/CLAUDE.md +272 -0
- package/connectors/connect-filemaker/README.md +193 -0
- package/connectors/connect-filemaker/package.json +51 -0
- package/connectors/connect-filemaker/scripts/release.ts +179 -0
- package/connectors/connect-filemaker/src/api/client.ts +213 -0
- package/connectors/connect-filemaker/src/api/example.ts +48 -0
- package/connectors/connect-filemaker/src/api/index.ts +51 -0
- package/connectors/connect-filemaker/src/cli/index.ts +254 -0
- package/connectors/connect-filemaker/src/index.ts +103 -0
- package/connectors/connect-filemaker/src/types/index.ts +237 -0
- package/connectors/connect-filemaker/src/utils/auth.ts +274 -0
- package/connectors/connect-filemaker/src/utils/bulk.ts +212 -0
- package/connectors/connect-filemaker/src/utils/config.ts +326 -0
- package/connectors/connect-filemaker/src/utils/output.ts +175 -0
- package/connectors/connect-filemaker/src/utils/settings.ts +114 -0
- package/connectors/connect-filemaker/src/utils/storage.ts +198 -0
- package/connectors/connect-filemaker/tsconfig.json +16 -0
- package/connectors/connect-filescan/.env.example +11 -0
- package/connectors/connect-filescan/CLAUDE.md +272 -0
- package/connectors/connect-filescan/README.md +193 -0
- package/connectors/connect-filescan/package.json +51 -0
- package/connectors/connect-filescan/scripts/release.ts +179 -0
- package/connectors/connect-filescan/src/api/client.ts +213 -0
- package/connectors/connect-filescan/src/api/example.ts +48 -0
- package/connectors/connect-filescan/src/api/index.ts +51 -0
- package/connectors/connect-filescan/src/cli/index.ts +254 -0
- package/connectors/connect-filescan/src/index.ts +103 -0
- package/connectors/connect-filescan/src/types/index.ts +237 -0
- package/connectors/connect-filescan/src/utils/auth.ts +274 -0
- package/connectors/connect-filescan/src/utils/bulk.ts +212 -0
- package/connectors/connect-filescan/src/utils/config.ts +326 -0
- package/connectors/connect-filescan/src/utils/output.ts +175 -0
- package/connectors/connect-filescan/src/utils/settings.ts +114 -0
- package/connectors/connect-filescan/src/utils/storage.ts +198 -0
- package/connectors/connect-filescan/tsconfig.json +16 -0
- package/connectors/connect-firmao/.env.example +11 -0
- package/connectors/connect-firmao/CLAUDE.md +272 -0
- package/connectors/connect-firmao/README.md +193 -0
- package/connectors/connect-firmao/package.json +51 -0
- package/connectors/connect-firmao/scripts/release.ts +179 -0
- package/connectors/connect-firmao/src/api/client.ts +213 -0
- package/connectors/connect-firmao/src/api/example.ts +48 -0
- package/connectors/connect-firmao/src/api/index.ts +51 -0
- package/connectors/connect-firmao/src/cli/index.ts +254 -0
- package/connectors/connect-firmao/src/index.ts +103 -0
- package/connectors/connect-firmao/src/types/index.ts +237 -0
- package/connectors/connect-firmao/src/utils/auth.ts +274 -0
- package/connectors/connect-firmao/src/utils/bulk.ts +212 -0
- package/connectors/connect-firmao/src/utils/config.ts +326 -0
- package/connectors/connect-firmao/src/utils/output.ts +175 -0
- package/connectors/connect-firmao/src/utils/settings.ts +114 -0
- package/connectors/connect-firmao/src/utils/storage.ts +198 -0
- package/connectors/connect-firmao/tsconfig.json +16 -0
- package/connectors/connect-fitbit/.env.example +11 -0
- package/connectors/connect-fitbit/CLAUDE.md +272 -0
- package/connectors/connect-fitbit/README.md +193 -0
- package/connectors/connect-fitbit/package.json +51 -0
- package/connectors/connect-fitbit/scripts/release.ts +179 -0
- package/connectors/connect-fitbit/src/api/client.ts +213 -0
- package/connectors/connect-fitbit/src/api/example.ts +48 -0
- package/connectors/connect-fitbit/src/api/index.ts +51 -0
- package/connectors/connect-fitbit/src/cli/index.ts +254 -0
- package/connectors/connect-fitbit/src/index.ts +103 -0
- package/connectors/connect-fitbit/src/types/index.ts +237 -0
- package/connectors/connect-fitbit/src/utils/auth.ts +274 -0
- package/connectors/connect-fitbit/src/utils/bulk.ts +212 -0
- package/connectors/connect-fitbit/src/utils/config.ts +326 -0
- package/connectors/connect-fitbit/src/utils/output.ts +175 -0
- package/connectors/connect-fitbit/src/utils/settings.ts +114 -0
- package/connectors/connect-fitbit/src/utils/storage.ts +198 -0
- package/connectors/connect-fitbit/tsconfig.json +16 -0
- package/connectors/connect-flagship/.env.example +11 -0
- package/connectors/connect-flagship/CLAUDE.md +272 -0
- package/connectors/connect-flagship/README.md +193 -0
- package/connectors/connect-flagship/package.json +51 -0
- package/connectors/connect-flagship/scripts/release.ts +179 -0
- package/connectors/connect-flagship/src/api/client.ts +213 -0
- package/connectors/connect-flagship/src/api/example.ts +48 -0
- package/connectors/connect-flagship/src/api/index.ts +51 -0
- package/connectors/connect-flagship/src/cli/index.ts +254 -0
- package/connectors/connect-flagship/src/index.ts +103 -0
- package/connectors/connect-flagship/src/types/index.ts +237 -0
- package/connectors/connect-flagship/src/utils/auth.ts +274 -0
- package/connectors/connect-flagship/src/utils/bulk.ts +212 -0
- package/connectors/connect-flagship/src/utils/config.ts +326 -0
- package/connectors/connect-flagship/src/utils/output.ts +175 -0
- package/connectors/connect-flagship/src/utils/settings.ts +114 -0
- package/connectors/connect-flagship/src/utils/storage.ts +198 -0
- package/connectors/connect-flagship/tsconfig.json +16 -0
- package/connectors/connect-float/.env.example +11 -0
- package/connectors/connect-float/CLAUDE.md +272 -0
- package/connectors/connect-float/README.md +193 -0
- package/connectors/connect-float/package.json +51 -0
- package/connectors/connect-float/scripts/release.ts +179 -0
- package/connectors/connect-float/src/api/client.ts +213 -0
- package/connectors/connect-float/src/api/example.ts +48 -0
- package/connectors/connect-float/src/api/index.ts +51 -0
- package/connectors/connect-float/src/cli/index.ts +254 -0
- package/connectors/connect-float/src/index.ts +103 -0
- package/connectors/connect-float/src/types/index.ts +237 -0
- package/connectors/connect-float/src/utils/auth.ts +274 -0
- package/connectors/connect-float/src/utils/bulk.ts +212 -0
- package/connectors/connect-float/src/utils/config.ts +326 -0
- package/connectors/connect-float/src/utils/output.ts +175 -0
- package/connectors/connect-float/src/utils/settings.ts +114 -0
- package/connectors/connect-float/src/utils/storage.ts +198 -0
- package/connectors/connect-float/tsconfig.json +16 -0
- package/connectors/connect-flotiq/.env.example +11 -0
- package/connectors/connect-flotiq/CLAUDE.md +272 -0
- package/connectors/connect-flotiq/README.md +193 -0
- package/connectors/connect-flotiq/package.json +51 -0
- package/connectors/connect-flotiq/scripts/release.ts +179 -0
- package/connectors/connect-flotiq/src/api/client.ts +213 -0
- package/connectors/connect-flotiq/src/api/example.ts +48 -0
- package/connectors/connect-flotiq/src/api/index.ts +51 -0
- package/connectors/connect-flotiq/src/cli/index.ts +254 -0
- package/connectors/connect-flotiq/src/index.ts +103 -0
- package/connectors/connect-flotiq/src/types/index.ts +237 -0
- package/connectors/connect-flotiq/src/utils/auth.ts +274 -0
- package/connectors/connect-flotiq/src/utils/bulk.ts +212 -0
- package/connectors/connect-flotiq/src/utils/config.ts +326 -0
- package/connectors/connect-flotiq/src/utils/output.ts +175 -0
- package/connectors/connect-flotiq/src/utils/settings.ts +114 -0
- package/connectors/connect-flotiq/src/utils/storage.ts +198 -0
- package/connectors/connect-flotiq/tsconfig.json +16 -0
- package/connectors/connect-flow/.env.example +11 -0
- package/connectors/connect-flow/CLAUDE.md +272 -0
- package/connectors/connect-flow/README.md +193 -0
- package/connectors/connect-flow/package.json +51 -0
- package/connectors/connect-flow/scripts/release.ts +179 -0
- package/connectors/connect-flow/src/api/client.ts +213 -0
- package/connectors/connect-flow/src/api/example.ts +48 -0
- package/connectors/connect-flow/src/api/index.ts +51 -0
- package/connectors/connect-flow/src/cli/index.ts +254 -0
- package/connectors/connect-flow/src/index.ts +103 -0
- package/connectors/connect-flow/src/types/index.ts +237 -0
- package/connectors/connect-flow/src/utils/auth.ts +274 -0
- package/connectors/connect-flow/src/utils/bulk.ts +212 -0
- package/connectors/connect-flow/src/utils/config.ts +326 -0
- package/connectors/connect-flow/src/utils/output.ts +175 -0
- package/connectors/connect-flow/src/utils/settings.ts +114 -0
- package/connectors/connect-flow/src/utils/storage.ts +198 -0
- package/connectors/connect-flow/tsconfig.json +16 -0
- package/connectors/connect-fluentsupport/.env.example +11 -0
- package/connectors/connect-fluentsupport/CLAUDE.md +272 -0
- package/connectors/connect-fluentsupport/README.md +193 -0
- package/connectors/connect-fluentsupport/package.json +52 -0
- package/connectors/connect-fluentsupport/scripts/release.ts +179 -0
- package/connectors/connect-fluentsupport/src/api/client.ts +213 -0
- package/connectors/connect-fluentsupport/src/api/example.ts +48 -0
- package/connectors/connect-fluentsupport/src/api/index.ts +51 -0
- package/connectors/connect-fluentsupport/src/cli/index.ts +254 -0
- package/connectors/connect-fluentsupport/src/index.ts +103 -0
- package/connectors/connect-fluentsupport/src/types/index.ts +237 -0
- package/connectors/connect-fluentsupport/src/utils/auth.ts +274 -0
- package/connectors/connect-fluentsupport/src/utils/bulk.ts +212 -0
- package/connectors/connect-fluentsupport/src/utils/config.ts +326 -0
- package/connectors/connect-fluentsupport/src/utils/output.ts +175 -0
- package/connectors/connect-fluentsupport/src/utils/settings.ts +114 -0
- package/connectors/connect-fluentsupport/src/utils/storage.ts +198 -0
- package/connectors/connect-fluentsupport/tsconfig.json +16 -0
- package/dist/index.js +175 -0
- package/package.json +1 -1
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync, unlinkSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { getConfigDir } from './config';
|
|
4
|
+
|
|
5
|
+
// ============================================
|
|
6
|
+
// Generic Data Storage Utility
|
|
7
|
+
// ============================================
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Base interface for storable entities
|
|
11
|
+
* All stored entities should have an id field
|
|
12
|
+
*/
|
|
13
|
+
export interface Storable {
|
|
14
|
+
id: string;
|
|
15
|
+
createdAt?: string;
|
|
16
|
+
updatedAt?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Get the storage directory for an entity type
|
|
21
|
+
*/
|
|
22
|
+
function getStorageDir(entityType: string): string {
|
|
23
|
+
const dir = join(getConfigDir(), 'data', entityType);
|
|
24
|
+
if (!existsSync(dir)) {
|
|
25
|
+
mkdirSync(dir, { recursive: true });
|
|
26
|
+
}
|
|
27
|
+
return dir;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Convert an ID to a safe filename
|
|
32
|
+
*/
|
|
33
|
+
function idToFilename(id: string): string {
|
|
34
|
+
return id.toLowerCase().replace(/[^a-z0-9]/g, '_') + '.json';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Get the file path for an entity
|
|
39
|
+
*/
|
|
40
|
+
function getEntityPath(entityType: string, id: string): string {
|
|
41
|
+
return join(getStorageDir(entityType), idToFilename(id));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Save an entity to storage
|
|
46
|
+
*/
|
|
47
|
+
export function saveEntity<T extends Storable>(entityType: string, entity: T): void {
|
|
48
|
+
const filepath = getEntityPath(entityType, entity.id);
|
|
49
|
+
const now = new Date().toISOString();
|
|
50
|
+
|
|
51
|
+
const existing = getEntity<T>(entityType, entity.id);
|
|
52
|
+
|
|
53
|
+
const data: T = {
|
|
54
|
+
...entity,
|
|
55
|
+
createdAt: existing?.createdAt || now,
|
|
56
|
+
updatedAt: now,
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
writeFileSync(filepath, JSON.stringify(data, null, 2));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Get an entity by ID
|
|
64
|
+
*/
|
|
65
|
+
export function getEntity<T extends Storable>(entityType: string, id: string): T | null {
|
|
66
|
+
const filepath = getEntityPath(entityType, id);
|
|
67
|
+
|
|
68
|
+
if (!existsSync(filepath)) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
try {
|
|
73
|
+
const content = readFileSync(filepath, 'utf-8');
|
|
74
|
+
return JSON.parse(content) as T;
|
|
75
|
+
} catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Check if an entity exists
|
|
82
|
+
*/
|
|
83
|
+
export function entityExists(entityType: string, id: string): boolean {
|
|
84
|
+
return existsSync(getEntityPath(entityType, id));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Get all entities of a type
|
|
89
|
+
*/
|
|
90
|
+
export function getAllEntities<T extends Storable>(entityType: string): T[] {
|
|
91
|
+
const storageDir = getStorageDir(entityType);
|
|
92
|
+
const files = readdirSync(storageDir).filter(f => f.endsWith('.json'));
|
|
93
|
+
|
|
94
|
+
const entities: T[] = [];
|
|
95
|
+
for (const file of files) {
|
|
96
|
+
try {
|
|
97
|
+
const content = readFileSync(join(storageDir, file), 'utf-8');
|
|
98
|
+
entities.push(JSON.parse(content) as T);
|
|
99
|
+
} catch {
|
|
100
|
+
// Skip invalid files
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return entities.sort((a, b) => a.id.localeCompare(b.id));
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Delete an entity
|
|
109
|
+
*/
|
|
110
|
+
export function deleteEntity(entityType: string, id: string): boolean {
|
|
111
|
+
const filepath = getEntityPath(entityType, id);
|
|
112
|
+
|
|
113
|
+
if (existsSync(filepath)) {
|
|
114
|
+
unlinkSync(filepath);
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Search entities by a predicate function
|
|
122
|
+
*/
|
|
123
|
+
export function searchEntities<T extends Storable>(
|
|
124
|
+
entityType: string,
|
|
125
|
+
predicate: (entity: T) => boolean
|
|
126
|
+
): T[] {
|
|
127
|
+
const all = getAllEntities<T>(entityType);
|
|
128
|
+
return all.filter(predicate);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Search entities by text match across all string fields
|
|
133
|
+
*/
|
|
134
|
+
export function searchEntitiesByText<T extends Storable>(
|
|
135
|
+
entityType: string,
|
|
136
|
+
query: string,
|
|
137
|
+
fields?: (keyof T)[]
|
|
138
|
+
): T[] {
|
|
139
|
+
const all = getAllEntities<T>(entityType);
|
|
140
|
+
const q = query.toLowerCase();
|
|
141
|
+
|
|
142
|
+
return all.filter(entity => {
|
|
143
|
+
const searchFields = fields || (Object.keys(entity) as (keyof T)[]);
|
|
144
|
+
return searchFields.some(field => {
|
|
145
|
+
const value = entity[field];
|
|
146
|
+
if (typeof value === 'string') {
|
|
147
|
+
return value.toLowerCase().includes(q);
|
|
148
|
+
}
|
|
149
|
+
return false;
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Count entities of a type
|
|
156
|
+
*/
|
|
157
|
+
export function countEntities(entityType: string): number {
|
|
158
|
+
const storageDir = getStorageDir(entityType);
|
|
159
|
+
if (!existsSync(storageDir)) {
|
|
160
|
+
return 0;
|
|
161
|
+
}
|
|
162
|
+
return readdirSync(storageDir).filter(f => f.endsWith('.json')).length;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Clear all entities of a type
|
|
167
|
+
*/
|
|
168
|
+
export function clearEntities(entityType: string): number {
|
|
169
|
+
const storageDir = getStorageDir(entityType);
|
|
170
|
+
if (!existsSync(storageDir)) {
|
|
171
|
+
return 0;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const files = readdirSync(storageDir).filter(f => f.endsWith('.json'));
|
|
175
|
+
for (const file of files) {
|
|
176
|
+
unlinkSync(join(storageDir, file));
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return files.length;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Create a typed storage helper for a specific entity type
|
|
184
|
+
* This provides a cleaner API for working with a single entity type
|
|
185
|
+
*/
|
|
186
|
+
export function createStorage<T extends Storable>(entityType: string) {
|
|
187
|
+
return {
|
|
188
|
+
save: (entity: T) => saveEntity<T>(entityType, entity),
|
|
189
|
+
get: (id: string) => getEntity<T>(entityType, id),
|
|
190
|
+
exists: (id: string) => entityExists(entityType, id),
|
|
191
|
+
getAll: () => getAllEntities<T>(entityType),
|
|
192
|
+
delete: (id: string) => deleteEntity(entityType, id),
|
|
193
|
+
search: (predicate: (entity: T) => boolean) => searchEntities<T>(entityType, predicate),
|
|
194
|
+
searchByText: (query: string, fields?: (keyof T)[]) => searchEntitiesByText<T>(entityType, query, fields),
|
|
195
|
+
count: () => countEntities(entityType),
|
|
196
|
+
clear: () => clearEntities(entityType),
|
|
197
|
+
};
|
|
198
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ESNext",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"esModuleInterop": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
"declaration": true,
|
|
10
|
+
"outDir": "./dist",
|
|
11
|
+
"rootDir": "./src",
|
|
12
|
+
"types": ["bun-types"]
|
|
13
|
+
},
|
|
14
|
+
"include": ["src/**/*"],
|
|
15
|
+
"exclude": ["node_modules", "dist", "bin"]
|
|
16
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# EPO Open Patent Services (OPS) Credentials
|
|
2
|
+
# Register at https://developers.epo.org/ to get your Consumer Key and Secret
|
|
3
|
+
|
|
4
|
+
EPO_CONSUMER_KEY=your-consumer-key-here
|
|
5
|
+
EPO_CONSUMER_SECRET=your-consumer-secret-here
|
|
6
|
+
|
|
7
|
+
# Optional: Custom base URL (if using different API version)
|
|
8
|
+
# EPO_BASE_URL=https://ops.epo.org/3.2/rest-services
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
connect-epo is a TypeScript connector for the EPO Open Patent Services (OPS) API. It provides a CLI and programmatic interface to search and retrieve European patent data including publications, patent families, legal status, and register information.
|
|
8
|
+
|
|
9
|
+
## Build & Run Commands
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Install dependencies
|
|
13
|
+
bun install
|
|
14
|
+
|
|
15
|
+
# Run CLI in development
|
|
16
|
+
bun run dev
|
|
17
|
+
|
|
18
|
+
# Build for distribution
|
|
19
|
+
bun run build
|
|
20
|
+
|
|
21
|
+
# Type check
|
|
22
|
+
bun run typecheck
|
|
23
|
+
|
|
24
|
+
# Run specific commands
|
|
25
|
+
bun run dev search "ti=solar AND pa=tesla"
|
|
26
|
+
bun run dev publication biblio EP1000000
|
|
27
|
+
bun run dev family get EP1000000
|
|
28
|
+
bun run dev legal EP1000000
|
|
29
|
+
bun run dev register search "pa=siemens"
|
|
30
|
+
bun run dev classification get H01L
|
|
31
|
+
bun run dev profile list
|
|
32
|
+
bun run dev config show
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Code Style
|
|
36
|
+
|
|
37
|
+
- TypeScript with strict mode
|
|
38
|
+
- ESM modules (type: module)
|
|
39
|
+
- Use async/await for all async operations
|
|
40
|
+
- Minimal dependencies: commander, chalk only
|
|
41
|
+
- Type annotations required everywhere
|
|
42
|
+
- Use interfaces for all API types
|
|
43
|
+
|
|
44
|
+
## Project Structure
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
src/
|
|
48
|
+
├── api/
|
|
49
|
+
│ ├── client.ts # HTTP client with OAuth2 authentication
|
|
50
|
+
│ ├── publications.ts # Published data search and retrieval
|
|
51
|
+
│ ├── family.ts # Patent family (INPADOC) data
|
|
52
|
+
│ ├── legal.ts # Legal status information
|
|
53
|
+
│ ├── register.ts # EP Register data
|
|
54
|
+
│ ├── classification.ts # CPC classification
|
|
55
|
+
│ └── index.ts # Main EPO class
|
|
56
|
+
├── cli/
|
|
57
|
+
│ └── index.ts # CLI commands
|
|
58
|
+
├── types/
|
|
59
|
+
│ └── index.ts # Type definitions
|
|
60
|
+
├── utils/
|
|
61
|
+
│ ├── config.ts # Multi-profile configuration
|
|
62
|
+
│ └── output.ts # CLI output formatting
|
|
63
|
+
└── index.ts # Library exports
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## API Modules
|
|
67
|
+
|
|
68
|
+
### Publications API (`/published-data`)
|
|
69
|
+
- Search published patents using CQL queries
|
|
70
|
+
- Get publication by document number
|
|
71
|
+
- Retrieve bibliographic data, abstracts, descriptions, claims
|
|
72
|
+
- Get images metadata
|
|
73
|
+
|
|
74
|
+
### Family API (`/family`)
|
|
75
|
+
- Get INPADOC patent family data
|
|
76
|
+
- Retrieve family with bibliographic data
|
|
77
|
+
- Get family with legal status
|
|
78
|
+
|
|
79
|
+
### Legal Status API (`/legal`)
|
|
80
|
+
- Get legal status events for a patent
|
|
81
|
+
- Track patent lifecycle (grant, expiry, opposition, etc.)
|
|
82
|
+
|
|
83
|
+
### Register API (`/register`)
|
|
84
|
+
- Search EP Register
|
|
85
|
+
- Get detailed register data for applications
|
|
86
|
+
- Retrieve procedural steps
|
|
87
|
+
|
|
88
|
+
### Classification API (`/classification/cpc`)
|
|
89
|
+
- Look up CPC classification symbols
|
|
90
|
+
- Get classification hierarchy with children/ancestors
|
|
91
|
+
- Search classifications by keyword
|
|
92
|
+
|
|
93
|
+
## Authentication
|
|
94
|
+
|
|
95
|
+
The EPO OPS API uses OAuth2 with client credentials grant:
|
|
96
|
+
- Register at https://developers.epo.org/ to get Consumer Key and Secret
|
|
97
|
+
- Token endpoint: https://ops.epo.org/3.2/auth/accesstoken
|
|
98
|
+
- Tokens are automatically cached and refreshed
|
|
99
|
+
|
|
100
|
+
## Environment Variables
|
|
101
|
+
|
|
102
|
+
| Variable | Description |
|
|
103
|
+
|----------|-------------|
|
|
104
|
+
| `EPO_CONSUMER_KEY` | Consumer key from EPO developer portal (required) |
|
|
105
|
+
| `EPO_CONSUMER_SECRET` | Consumer secret from EPO developer portal (required) |
|
|
106
|
+
| `EPO_BASE_URL` | Override base URL (default: https://ops.epo.org/3.2/rest-services) |
|
|
107
|
+
|
|
108
|
+
## Data Storage
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
~/.connect/connect-epo/
|
|
112
|
+
├── current_profile # Active profile name
|
|
113
|
+
├── token.json # Cached OAuth token
|
|
114
|
+
└── profiles/
|
|
115
|
+
├── default.json # Default profile
|
|
116
|
+
└── {name}.json # Named profiles
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Profile JSON structure:
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"consumerKey": "xxx",
|
|
123
|
+
"consumerSecret": "xxx",
|
|
124
|
+
"baseUrl": "optional-custom-url"
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## CLI Usage
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Search patents
|
|
132
|
+
connect-epo search "ti=solar AND pa=tesla"
|
|
133
|
+
connect-epo search "pa=siemens" --range 1-50
|
|
134
|
+
|
|
135
|
+
# Get publication data
|
|
136
|
+
connect-epo publication get EP1000000
|
|
137
|
+
connect-epo publication biblio EP1000000
|
|
138
|
+
connect-epo publication abstract EP1000000
|
|
139
|
+
connect-epo publication claims EP1000000
|
|
140
|
+
|
|
141
|
+
# Get patent family
|
|
142
|
+
connect-epo family get EP1000000
|
|
143
|
+
connect-epo family biblio EP1000000
|
|
144
|
+
|
|
145
|
+
# Get legal status
|
|
146
|
+
connect-epo legal EP1000000
|
|
147
|
+
|
|
148
|
+
# Search EP Register
|
|
149
|
+
connect-epo register search "pa=nokia"
|
|
150
|
+
connect-epo register get EP1000000
|
|
151
|
+
|
|
152
|
+
# CPC Classification
|
|
153
|
+
connect-epo classification get H01L
|
|
154
|
+
connect-epo classification get H01L --children
|
|
155
|
+
connect-epo classification search "semiconductor"
|
|
156
|
+
|
|
157
|
+
# Authentication
|
|
158
|
+
connect-epo auth test
|
|
159
|
+
connect-epo auth clear-token
|
|
160
|
+
|
|
161
|
+
# Configuration
|
|
162
|
+
connect-epo config set-credentials <key> <secret>
|
|
163
|
+
connect-epo config show
|
|
164
|
+
connect-epo profile create work --consumer-key xxx --consumer-secret xxx --use
|
|
165
|
+
connect-epo profile list
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Programmatic Usage
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
import { EPO } from '@hasna/connect-epo';
|
|
172
|
+
|
|
173
|
+
// Create client
|
|
174
|
+
const epo = new EPO({
|
|
175
|
+
consumerKey: 'your-key',
|
|
176
|
+
consumerSecret: 'your-secret',
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
// Search patents
|
|
180
|
+
const results = await epo.publications.search('ti=solar AND pa=tesla');
|
|
181
|
+
|
|
182
|
+
// Get bibliographic data
|
|
183
|
+
const biblio = await epo.publications.getBiblio('publication', 'epodoc', 'EP1000000');
|
|
184
|
+
|
|
185
|
+
// Get patent family
|
|
186
|
+
const family = await epo.family.getFamily('publication', 'epodoc', 'EP1000000');
|
|
187
|
+
|
|
188
|
+
// Get legal status
|
|
189
|
+
const legal = await epo.legal.getLegalStatus('publication', 'epodoc', 'EP1000000');
|
|
190
|
+
|
|
191
|
+
// Search EP Register
|
|
192
|
+
const registerResults = await epo.register.search('pa=siemens');
|
|
193
|
+
|
|
194
|
+
// Get CPC classification
|
|
195
|
+
const cpc = await epo.classification.getCPC('H01L');
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Document Reference Formats
|
|
199
|
+
|
|
200
|
+
- **docdb**: Country code + number + kind (e.g., EP1000000A1)
|
|
201
|
+
- **epodoc**: Simplified format (e.g., EP1000000)
|
|
202
|
+
- **original**: Original application number format
|
|
203
|
+
|
|
204
|
+
## CQL Query Syntax
|
|
205
|
+
|
|
206
|
+
Common search fields:
|
|
207
|
+
- `ti=` - Title
|
|
208
|
+
- `ab=` - Abstract
|
|
209
|
+
- `pa=` - Applicant
|
|
210
|
+
- `in=` - Inventor
|
|
211
|
+
- `pn=` - Publication number
|
|
212
|
+
- `ap=` - Application number
|
|
213
|
+
- `pr=` - Priority number
|
|
214
|
+
- `pd=` - Publication date
|
|
215
|
+
- `ic=` - IPC classification
|
|
216
|
+
|
|
217
|
+
Example queries:
|
|
218
|
+
- `ti=solar AND pa=tesla` - Solar patents by Tesla
|
|
219
|
+
- `pa=siemens AND pd>=2020` - Siemens patents from 2020+
|
|
220
|
+
- `ic=H01L AND ti=transistor` - Transistor patents in H01L class
|
|
221
|
+
|
|
222
|
+
## Dependencies
|
|
223
|
+
|
|
224
|
+
- commander: CLI framework
|
|
225
|
+
- chalk: Terminal styling
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
# connect-epo
|
|
2
|
+
|
|
3
|
+
A TypeScript connector for the EPO Open Patent Services (OPS) API. Search and retrieve European patent data including publications, patent families, legal status, and register information.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- OAuth2 authentication with automatic token refresh
|
|
8
|
+
- Multi-profile configuration (switch between different API credentials)
|
|
9
|
+
- Full EPO OPS API coverage:
|
|
10
|
+
- Published data search and retrieval
|
|
11
|
+
- Patent family (INPADOC) data
|
|
12
|
+
- Legal status information
|
|
13
|
+
- EP Register access
|
|
14
|
+
- CPC classification lookup
|
|
15
|
+
- Clean CLI with JSON/pretty output
|
|
16
|
+
- TypeScript with full type definitions
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Install globally
|
|
22
|
+
bun install -g @hasna/connect-epo
|
|
23
|
+
|
|
24
|
+
# Or use with npx
|
|
25
|
+
npx @hasna/connect-epo
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Quick Start
|
|
29
|
+
|
|
30
|
+
### 1. Get EPO Credentials
|
|
31
|
+
|
|
32
|
+
Register at [EPO Developer Portal](https://developers.epo.org/) to get your Consumer Key and Secret.
|
|
33
|
+
|
|
34
|
+
### 2. Configure Credentials
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
connect-epo config set-credentials <consumer-key> <consumer-secret>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Or set environment variables:
|
|
41
|
+
```bash
|
|
42
|
+
export EPO_CONSUMER_KEY=your-key
|
|
43
|
+
export EPO_CONSUMER_SECRET=your-secret
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 3. Search Patents
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Search by title and applicant
|
|
50
|
+
connect-epo search "ti=solar AND pa=tesla"
|
|
51
|
+
|
|
52
|
+
# Get publication data
|
|
53
|
+
connect-epo publication biblio EP1000000
|
|
54
|
+
|
|
55
|
+
# Get patent family
|
|
56
|
+
connect-epo family get EP1000000
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## CLI Usage
|
|
60
|
+
|
|
61
|
+
### Search
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Search published patents using CQL query
|
|
65
|
+
connect-epo search "ti=electric vehicle"
|
|
66
|
+
connect-epo search "pa=siemens AND pd>=2020" --range 1-50
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Publications
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Get publication by number
|
|
73
|
+
connect-epo publication get EP1000000
|
|
74
|
+
|
|
75
|
+
# Get specific data
|
|
76
|
+
connect-epo pub biblio EP1000000
|
|
77
|
+
connect-epo pub abstract EP1000000
|
|
78
|
+
connect-epo pub claims EP1000000
|
|
79
|
+
connect-epo pub description EP1000000
|
|
80
|
+
connect-epo pub images EP1000000
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Patent Family
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Get INPADOC family
|
|
87
|
+
connect-epo family get EP1000000
|
|
88
|
+
|
|
89
|
+
# With bibliographic data
|
|
90
|
+
connect-epo family biblio EP1000000
|
|
91
|
+
|
|
92
|
+
# With legal status
|
|
93
|
+
connect-epo family legal EP1000000
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Legal Status
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
connect-epo legal EP1000000
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### EP Register
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Search register
|
|
106
|
+
connect-epo register search "pa=nokia"
|
|
107
|
+
|
|
108
|
+
# Get register data
|
|
109
|
+
connect-epo register get EP1000000
|
|
110
|
+
|
|
111
|
+
# Get procedural steps
|
|
112
|
+
connect-epo register steps EP1000000
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### CPC Classification
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Look up classification
|
|
119
|
+
connect-epo classification get H01L
|
|
120
|
+
|
|
121
|
+
# With children
|
|
122
|
+
connect-epo class get H01L --children
|
|
123
|
+
|
|
124
|
+
# Search by keyword
|
|
125
|
+
connect-epo class search "semiconductor"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Configuration
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Set credentials
|
|
132
|
+
connect-epo config set-credentials <key> <secret>
|
|
133
|
+
|
|
134
|
+
# Show current config
|
|
135
|
+
connect-epo config show
|
|
136
|
+
|
|
137
|
+
# Test authentication
|
|
138
|
+
connect-epo auth test
|
|
139
|
+
|
|
140
|
+
# Manage profiles
|
|
141
|
+
connect-epo profile create work --consumer-key xxx --consumer-secret xxx --use
|
|
142
|
+
connect-epo profile list
|
|
143
|
+
connect-epo profile use work
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Programmatic Usage
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
import { EPO } from '@hasna/connect-epo';
|
|
150
|
+
|
|
151
|
+
// Create client
|
|
152
|
+
const epo = new EPO({
|
|
153
|
+
consumerKey: 'your-key',
|
|
154
|
+
consumerSecret: 'your-secret',
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
// Or from environment
|
|
158
|
+
const epo = EPO.fromEnv();
|
|
159
|
+
|
|
160
|
+
// Search patents
|
|
161
|
+
const results = await epo.publications.search('ti=solar', {
|
|
162
|
+
rangeBegin: 1,
|
|
163
|
+
rangeEnd: 25,
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// Get bibliographic data
|
|
167
|
+
const biblio = await epo.publications.getBiblio('publication', 'epodoc', 'EP1000000');
|
|
168
|
+
|
|
169
|
+
// Get patent family
|
|
170
|
+
const family = await epo.family.getFamily('publication', 'epodoc', 'EP1000000');
|
|
171
|
+
|
|
172
|
+
// Get legal status
|
|
173
|
+
const legal = await epo.legal.getLegalStatus('publication', 'epodoc', 'EP1000000');
|
|
174
|
+
|
|
175
|
+
// Search EP Register
|
|
176
|
+
const register = await epo.register.search('pa=siemens');
|
|
177
|
+
|
|
178
|
+
// Get CPC classification
|
|
179
|
+
const cpc = await epo.classification.getCPC('H01L');
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## CQL Query Syntax
|
|
183
|
+
|
|
184
|
+
The EPO OPS API uses CQL (Contextual Query Language) for searches.
|
|
185
|
+
|
|
186
|
+
### Common Fields
|
|
187
|
+
|
|
188
|
+
| Field | Description | Example |
|
|
189
|
+
|-------|-------------|---------|
|
|
190
|
+
| `ti` | Title | `ti=solar cell` |
|
|
191
|
+
| `ab` | Abstract | `ab=semiconductor` |
|
|
192
|
+
| `pa` | Applicant | `pa=tesla` |
|
|
193
|
+
| `in` | Inventor | `in=musk` |
|
|
194
|
+
| `pn` | Publication number | `pn=EP1000000` |
|
|
195
|
+
| `ap` | Application number | `ap=EP99123456` |
|
|
196
|
+
| `pr` | Priority number | `pr=US2019123456` |
|
|
197
|
+
| `pd` | Publication date | `pd=2020` or `pd>=20200101` |
|
|
198
|
+
| `ic` | IPC classification | `ic=H01L` |
|
|
199
|
+
| `cpc` | CPC classification | `cpc=H01L21` |
|
|
200
|
+
|
|
201
|
+
### Operators
|
|
202
|
+
|
|
203
|
+
- `AND` - Both conditions must match
|
|
204
|
+
- `OR` - Either condition matches
|
|
205
|
+
- `NOT` - Exclude matches
|
|
206
|
+
- `=` - Equals
|
|
207
|
+
- `>=`, `<=` - Date comparisons
|
|
208
|
+
|
|
209
|
+
### Examples
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# Solar patents by Tesla
|
|
213
|
+
connect-epo search "ti=solar AND pa=tesla"
|
|
214
|
+
|
|
215
|
+
# Electric vehicle patents since 2020
|
|
216
|
+
connect-epo search "ti=electric vehicle AND pd>=2020"
|
|
217
|
+
|
|
218
|
+
# Patents in semiconductor classification
|
|
219
|
+
connect-epo search "ic=H01L AND ti=transistor"
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Document Reference Formats
|
|
223
|
+
|
|
224
|
+
- **epodoc**: Simplified format (e.g., `EP1000000`) - recommended
|
|
225
|
+
- **docdb**: Full format with kind code (e.g., `EP.1000000.A1`)
|
|
226
|
+
- **original**: Original application format
|
|
227
|
+
|
|
228
|
+
## Environment Variables
|
|
229
|
+
|
|
230
|
+
| Variable | Description |
|
|
231
|
+
|----------|-------------|
|
|
232
|
+
| `EPO_CONSUMER_KEY` | Consumer key from EPO developer portal |
|
|
233
|
+
| `EPO_CONSUMER_SECRET` | Consumer secret from EPO developer portal |
|
|
234
|
+
| `EPO_BASE_URL` | Override API base URL (optional) |
|
|
235
|
+
|
|
236
|
+
## Data Storage
|
|
237
|
+
|
|
238
|
+
Configuration and tokens are stored in `~/.connect/connect-epo/`:
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
~/.connect/connect-epo/
|
|
242
|
+
├── current_profile # Active profile name
|
|
243
|
+
├── token.json # Cached OAuth token
|
|
244
|
+
└── profiles/
|
|
245
|
+
├── default.json # Default profile
|
|
246
|
+
└── {name}.json # Named profiles
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## API Rate Limits
|
|
250
|
+
|
|
251
|
+
The EPO OPS API has usage limits based on your subscription:
|
|
252
|
+
- Anonymous: 25 requests/week
|
|
253
|
+
- Registered: Varies by plan
|
|
254
|
+
|
|
255
|
+
See [EPO OPS documentation](https://www.epo.org/searching-for-patents/data/web-services/ops.html) for details.
|
|
256
|
+
|
|
257
|
+
## License
|
|
258
|
+
|
|
259
|
+
Apache-2.0
|