@hasna/connectors 0.9.0 → 0.9.1
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 +260 -1
- package/bin/mcp.js +260 -1
- package/bin/serve.js +259 -0
- package/connectors/connect-cloudlayer/.env.example +11 -0
- package/connectors/connect-cloudlayer/CLAUDE.md +272 -0
- package/connectors/connect-cloudlayer/README.md +84 -0
- package/connectors/connect-cloudlayer/package.json +51 -0
- package/connectors/connect-cloudlayer/scripts/release.ts +179 -0
- package/connectors/connect-cloudlayer/src/api/client.ts +213 -0
- package/connectors/connect-cloudlayer/src/api/example.ts +48 -0
- package/connectors/connect-cloudlayer/src/api/index.ts +51 -0
- package/connectors/connect-cloudlayer/src/cli/index.ts +254 -0
- package/connectors/connect-cloudlayer/src/index.ts +103 -0
- package/connectors/connect-cloudlayer/src/types/index.ts +237 -0
- package/connectors/connect-cloudlayer/src/utils/auth.ts +274 -0
- package/connectors/connect-cloudlayer/src/utils/bulk.ts +212 -0
- package/connectors/connect-cloudlayer/src/utils/config.ts +326 -0
- package/connectors/connect-cloudlayer/src/utils/output.ts +175 -0
- package/connectors/connect-cloudlayer/src/utils/settings.ts +114 -0
- package/connectors/connect-cloudlayer/src/utils/storage.ts +198 -0
- package/connectors/connect-cloudlayer/tsconfig.json +16 -0
- package/connectors/connect-cloudshare/.env.example +11 -0
- package/connectors/connect-cloudshare/CLAUDE.md +272 -0
- package/connectors/connect-cloudshare/README.md +77 -0
- package/connectors/connect-cloudshare/package.json +51 -0
- package/connectors/connect-cloudshare/scripts/release.ts +179 -0
- package/connectors/connect-cloudshare/src/api/client.ts +213 -0
- package/connectors/connect-cloudshare/src/api/example.ts +48 -0
- package/connectors/connect-cloudshare/src/api/index.ts +51 -0
- package/connectors/connect-cloudshare/src/cli/index.ts +254 -0
- package/connectors/connect-cloudshare/src/index.ts +103 -0
- package/connectors/connect-cloudshare/src/types/index.ts +237 -0
- package/connectors/connect-cloudshare/src/utils/auth.ts +274 -0
- package/connectors/connect-cloudshare/src/utils/bulk.ts +212 -0
- package/connectors/connect-cloudshare/src/utils/config.ts +326 -0
- package/connectors/connect-cloudshare/src/utils/output.ts +175 -0
- package/connectors/connect-cloudshare/src/utils/settings.ts +114 -0
- package/connectors/connect-cloudshare/src/utils/storage.ts +198 -0
- package/connectors/connect-cloudshare/tsconfig.json +16 -0
- package/connectors/connect-cloze/.env.example +11 -0
- package/connectors/connect-cloze/CLAUDE.md +272 -0
- package/connectors/connect-cloze/README.md +77 -0
- package/connectors/connect-cloze/package.json +51 -0
- package/connectors/connect-cloze/scripts/release.ts +179 -0
- package/connectors/connect-cloze/src/api/client.ts +213 -0
- package/connectors/connect-cloze/src/api/example.ts +48 -0
- package/connectors/connect-cloze/src/api/index.ts +51 -0
- package/connectors/connect-cloze/src/cli/index.ts +254 -0
- package/connectors/connect-cloze/src/index.ts +103 -0
- package/connectors/connect-cloze/src/types/index.ts +237 -0
- package/connectors/connect-cloze/src/utils/auth.ts +274 -0
- package/connectors/connect-cloze/src/utils/bulk.ts +212 -0
- package/connectors/connect-cloze/src/utils/config.ts +326 -0
- package/connectors/connect-cloze/src/utils/output.ts +175 -0
- package/connectors/connect-cloze/src/utils/settings.ts +114 -0
- package/connectors/connect-cloze/src/utils/storage.ts +198 -0
- package/connectors/connect-cloze/tsconfig.json +16 -0
- package/connectors/connect-cockpit/.env.example +11 -0
- package/connectors/connect-cockpit/CLAUDE.md +272 -0
- package/connectors/connect-cockpit/README.md +77 -0
- package/connectors/connect-cockpit/package.json +51 -0
- package/connectors/connect-cockpit/scripts/release.ts +179 -0
- package/connectors/connect-cockpit/src/api/client.ts +213 -0
- package/connectors/connect-cockpit/src/api/example.ts +48 -0
- package/connectors/connect-cockpit/src/api/index.ts +51 -0
- package/connectors/connect-cockpit/src/cli/index.ts +254 -0
- package/connectors/connect-cockpit/src/index.ts +103 -0
- package/connectors/connect-cockpit/src/types/index.ts +237 -0
- package/connectors/connect-cockpit/src/utils/auth.ts +274 -0
- package/connectors/connect-cockpit/src/utils/bulk.ts +212 -0
- package/connectors/connect-cockpit/src/utils/config.ts +326 -0
- package/connectors/connect-cockpit/src/utils/output.ts +175 -0
- package/connectors/connect-cockpit/src/utils/settings.ts +114 -0
- package/connectors/connect-cockpit/src/utils/storage.ts +198 -0
- package/connectors/connect-cockpit/tsconfig.json +16 -0
- package/connectors/connect-codeclimate/.env.example +11 -0
- package/connectors/connect-codeclimate/CLAUDE.md +272 -0
- package/connectors/connect-codeclimate/README.md +77 -0
- package/connectors/connect-codeclimate/package.json +51 -0
- package/connectors/connect-codeclimate/scripts/release.ts +179 -0
- package/connectors/connect-codeclimate/src/api/client.ts +213 -0
- package/connectors/connect-codeclimate/src/api/example.ts +48 -0
- package/connectors/connect-codeclimate/src/api/index.ts +51 -0
- package/connectors/connect-codeclimate/src/cli/index.ts +254 -0
- package/connectors/connect-codeclimate/src/index.ts +103 -0
- package/connectors/connect-codeclimate/src/types/index.ts +237 -0
- package/connectors/connect-codeclimate/src/utils/auth.ts +274 -0
- package/connectors/connect-codeclimate/src/utils/bulk.ts +212 -0
- package/connectors/connect-codeclimate/src/utils/config.ts +326 -0
- package/connectors/connect-codeclimate/src/utils/output.ts +175 -0
- package/connectors/connect-codeclimate/src/utils/settings.ts +114 -0
- package/connectors/connect-codeclimate/src/utils/storage.ts +198 -0
- package/connectors/connect-codeclimate/tsconfig.json +16 -0
- package/connectors/connect-codefresh/.env.example +11 -0
- package/connectors/connect-codefresh/CLAUDE.md +272 -0
- package/connectors/connect-codefresh/README.md +77 -0
- package/connectors/connect-codefresh/package.json +51 -0
- package/connectors/connect-codefresh/scripts/release.ts +179 -0
- package/connectors/connect-codefresh/src/api/client.ts +213 -0
- package/connectors/connect-codefresh/src/api/example.ts +48 -0
- package/connectors/connect-codefresh/src/api/index.ts +51 -0
- package/connectors/connect-codefresh/src/cli/index.ts +254 -0
- package/connectors/connect-codefresh/src/index.ts +103 -0
- package/connectors/connect-codefresh/src/types/index.ts +237 -0
- package/connectors/connect-codefresh/src/utils/auth.ts +274 -0
- package/connectors/connect-codefresh/src/utils/bulk.ts +212 -0
- package/connectors/connect-codefresh/src/utils/config.ts +326 -0
- package/connectors/connect-codefresh/src/utils/output.ts +175 -0
- package/connectors/connect-codefresh/src/utils/settings.ts +114 -0
- package/connectors/connect-codefresh/src/utils/storage.ts +198 -0
- package/connectors/connect-codefresh/tsconfig.json +16 -0
- package/connectors/connect-cody/.env.example +11 -0
- package/connectors/connect-cody/CLAUDE.md +272 -0
- package/connectors/connect-cody/README.md +77 -0
- package/connectors/connect-cody/package.json +51 -0
- package/connectors/connect-cody/scripts/release.ts +179 -0
- package/connectors/connect-cody/src/api/client.ts +213 -0
- package/connectors/connect-cody/src/api/example.ts +48 -0
- package/connectors/connect-cody/src/api/index.ts +51 -0
- package/connectors/connect-cody/src/cli/index.ts +254 -0
- package/connectors/connect-cody/src/index.ts +103 -0
- package/connectors/connect-cody/src/types/index.ts +237 -0
- package/connectors/connect-cody/src/utils/auth.ts +274 -0
- package/connectors/connect-cody/src/utils/bulk.ts +212 -0
- package/connectors/connect-cody/src/utils/config.ts +326 -0
- package/connectors/connect-cody/src/utils/output.ts +175 -0
- package/connectors/connect-cody/src/utils/settings.ts +114 -0
- package/connectors/connect-cody/src/utils/storage.ts +198 -0
- package/connectors/connect-cody/tsconfig.json +16 -0
- package/connectors/connect-coinbase/.env.example +11 -0
- package/connectors/connect-coinbase/CLAUDE.md +128 -0
- package/connectors/connect-coinbase/README.md +77 -0
- package/connectors/connect-coinbase/package.json +53 -0
- package/connectors/connect-coinbase/src/api/client.ts +167 -0
- package/connectors/connect-coinbase/src/api/index.ts +283 -0
- package/connectors/connect-coinbase/src/cli/index.ts +536 -0
- package/connectors/connect-coinbase/src/index.ts +23 -0
- package/connectors/connect-coinbase/src/types/index.ts +329 -0
- package/connectors/connect-coinbase/src/utils/config.ts +220 -0
- package/connectors/connect-coinbase/src/utils/output.ts +119 -0
- package/connectors/connect-coinbase/tsconfig.json +16 -0
- package/connectors/connect-collegefootballdata/.env.example +11 -0
- package/connectors/connect-collegefootballdata/CLAUDE.md +272 -0
- package/connectors/connect-collegefootballdata/README.md +77 -0
- package/connectors/connect-collegefootballdata/package.json +51 -0
- package/connectors/connect-collegefootballdata/scripts/release.ts +179 -0
- package/connectors/connect-collegefootballdata/src/api/client.ts +213 -0
- package/connectors/connect-collegefootballdata/src/api/example.ts +48 -0
- package/connectors/connect-collegefootballdata/src/api/index.ts +51 -0
- package/connectors/connect-collegefootballdata/src/cli/index.ts +254 -0
- package/connectors/connect-collegefootballdata/src/index.ts +103 -0
- package/connectors/connect-collegefootballdata/src/types/index.ts +237 -0
- package/connectors/connect-collegefootballdata/src/utils/auth.ts +274 -0
- package/connectors/connect-collegefootballdata/src/utils/bulk.ts +212 -0
- package/connectors/connect-collegefootballdata/src/utils/config.ts +326 -0
- package/connectors/connect-collegefootballdata/src/utils/output.ts +175 -0
- package/connectors/connect-collegefootballdata/src/utils/settings.ts +114 -0
- package/connectors/connect-collegefootballdata/src/utils/storage.ts +198 -0
- package/connectors/connect-collegefootballdata/tsconfig.json +16 -0
- package/connectors/connect-configcat/.env.example +11 -0
- package/connectors/connect-configcat/CLAUDE.md +272 -0
- package/connectors/connect-configcat/README.md +77 -0
- package/connectors/connect-configcat/package.json +51 -0
- package/connectors/connect-configcat/scripts/release.ts +179 -0
- package/connectors/connect-configcat/src/api/client.ts +213 -0
- package/connectors/connect-configcat/src/api/example.ts +48 -0
- package/connectors/connect-configcat/src/api/index.ts +51 -0
- package/connectors/connect-configcat/src/cli/index.ts +254 -0
- package/connectors/connect-configcat/src/index.ts +103 -0
- package/connectors/connect-configcat/src/types/index.ts +237 -0
- package/connectors/connect-configcat/src/utils/auth.ts +274 -0
- package/connectors/connect-configcat/src/utils/bulk.ts +212 -0
- package/connectors/connect-configcat/src/utils/config.ts +326 -0
- package/connectors/connect-configcat/src/utils/output.ts +175 -0
- package/connectors/connect-configcat/src/utils/settings.ts +114 -0
- package/connectors/connect-configcat/src/utils/storage.ts +198 -0
- package/connectors/connect-configcat/tsconfig.json +16 -0
- package/connectors/connect-confluent/.env.example +11 -0
- package/connectors/connect-confluent/CLAUDE.md +272 -0
- package/connectors/connect-confluent/README.md +193 -0
- package/connectors/connect-confluent/package.json +51 -0
- package/connectors/connect-confluent/scripts/release.ts +179 -0
- package/connectors/connect-confluent/src/api/client.ts +213 -0
- package/connectors/connect-confluent/src/api/example.ts +48 -0
- package/connectors/connect-confluent/src/api/index.ts +51 -0
- package/connectors/connect-confluent/src/cli/index.ts +254 -0
- package/connectors/connect-confluent/src/index.ts +103 -0
- package/connectors/connect-confluent/src/types/index.ts +237 -0
- package/connectors/connect-confluent/src/utils/auth.ts +274 -0
- package/connectors/connect-confluent/src/utils/bulk.ts +212 -0
- package/connectors/connect-confluent/src/utils/config.ts +326 -0
- package/connectors/connect-confluent/src/utils/output.ts +175 -0
- package/connectors/connect-confluent/src/utils/settings.ts +114 -0
- package/connectors/connect-confluent/src/utils/storage.ts +198 -0
- package/connectors/connect-confluent/tsconfig.json +16 -0
- package/connectors/connect-contactout/.env.example +7 -0
- package/connectors/connect-contactout/CLAUDE.md +182 -0
- package/connectors/connect-contactout/README.md +186 -0
- package/connectors/connect-contactout/package.json +53 -0
- package/connectors/connect-contactout/scripts/publish.ts +210 -0
- package/connectors/connect-contactout/src/api/client.ts +133 -0
- package/connectors/connect-contactout/src/api/company.ts +60 -0
- package/connectors/connect-contactout/src/api/email.ts +81 -0
- package/connectors/connect-contactout/src/api/index.ts +65 -0
- package/connectors/connect-contactout/src/api/linkedin.ts +131 -0
- package/connectors/connect-contactout/src/api/people.ts +107 -0
- package/connectors/connect-contactout/src/api/stats.ts +30 -0
- package/connectors/connect-contactout/src/cli/index.ts +619 -0
- package/connectors/connect-contactout/src/index.ts +29 -0
- package/connectors/connect-contactout/src/types/index.ts +363 -0
- package/connectors/connect-contactout/src/utils/config.ts +197 -0
- package/connectors/connect-contactout/src/utils/output.ts +119 -0
- package/connectors/connect-contactout/tsconfig.json +16 -0
- package/connectors/connect-contentful/.env.example +11 -0
- package/connectors/connect-contentful/CLAUDE.md +272 -0
- package/connectors/connect-contentful/README.md +193 -0
- package/connectors/connect-contentful/package.json +51 -0
- package/connectors/connect-contentful/scripts/release.ts +179 -0
- package/connectors/connect-contentful/src/api/client.ts +213 -0
- package/connectors/connect-contentful/src/api/example.ts +48 -0
- package/connectors/connect-contentful/src/api/index.ts +51 -0
- package/connectors/connect-contentful/src/cli/index.ts +254 -0
- package/connectors/connect-contentful/src/index.ts +103 -0
- package/connectors/connect-contentful/src/types/index.ts +237 -0
- package/connectors/connect-contentful/src/utils/auth.ts +274 -0
- package/connectors/connect-contentful/src/utils/bulk.ts +212 -0
- package/connectors/connect-contentful/src/utils/config.ts +326 -0
- package/connectors/connect-contentful/src/utils/output.ts +175 -0
- package/connectors/connect-contentful/src/utils/settings.ts +114 -0
- package/connectors/connect-contentful/src/utils/storage.ts +198 -0
- package/connectors/connect-contentful/tsconfig.json +16 -0
- package/connectors/connect-convertapi/.env.example +11 -0
- package/connectors/connect-convertapi/CLAUDE.md +272 -0
- package/connectors/connect-convertapi/README.md +193 -0
- package/connectors/connect-convertapi/package.json +51 -0
- package/connectors/connect-convertapi/scripts/release.ts +179 -0
- package/connectors/connect-convertapi/src/api/client.ts +213 -0
- package/connectors/connect-convertapi/src/api/example.ts +48 -0
- package/connectors/connect-convertapi/src/api/index.ts +51 -0
- package/connectors/connect-convertapi/src/cli/index.ts +254 -0
- package/connectors/connect-convertapi/src/index.ts +103 -0
- package/connectors/connect-convertapi/src/types/index.ts +237 -0
- package/connectors/connect-convertapi/src/utils/auth.ts +274 -0
- package/connectors/connect-convertapi/src/utils/bulk.ts +212 -0
- package/connectors/connect-convertapi/src/utils/config.ts +326 -0
- package/connectors/connect-convertapi/src/utils/output.ts +175 -0
- package/connectors/connect-convertapi/src/utils/settings.ts +114 -0
- package/connectors/connect-convertapi/src/utils/storage.ts +198 -0
- package/connectors/connect-convertapi/tsconfig.json +16 -0
- package/connectors/connect-convi/.env.example +11 -0
- package/connectors/connect-convi/CLAUDE.md +272 -0
- package/connectors/connect-convi/README.md +193 -0
- package/connectors/connect-convi/package.json +51 -0
- package/connectors/connect-convi/scripts/release.ts +179 -0
- package/connectors/connect-convi/src/api/client.ts +213 -0
- package/connectors/connect-convi/src/api/example.ts +48 -0
- package/connectors/connect-convi/src/api/index.ts +51 -0
- package/connectors/connect-convi/src/cli/index.ts +254 -0
- package/connectors/connect-convi/src/index.ts +103 -0
- package/connectors/connect-convi/src/types/index.ts +237 -0
- package/connectors/connect-convi/src/utils/auth.ts +274 -0
- package/connectors/connect-convi/src/utils/bulk.ts +212 -0
- package/connectors/connect-convi/src/utils/config.ts +326 -0
- package/connectors/connect-convi/src/utils/output.ts +175 -0
- package/connectors/connect-convi/src/utils/settings.ts +114 -0
- package/connectors/connect-convi/src/utils/storage.ts +198 -0
- package/connectors/connect-convi/tsconfig.json +16 -0
- package/connectors/connect-copper/.env.example +11 -0
- package/connectors/connect-copper/CLAUDE.md +272 -0
- package/connectors/connect-copper/README.md +193 -0
- package/connectors/connect-copper/package.json +51 -0
- package/connectors/connect-copper/scripts/release.ts +179 -0
- package/connectors/connect-copper/src/api/client.ts +213 -0
- package/connectors/connect-copper/src/api/example.ts +48 -0
- package/connectors/connect-copper/src/api/index.ts +51 -0
- package/connectors/connect-copper/src/cli/index.ts +254 -0
- package/connectors/connect-copper/src/index.ts +103 -0
- package/connectors/connect-copper/src/types/index.ts +237 -0
- package/connectors/connect-copper/src/utils/auth.ts +274 -0
- package/connectors/connect-copper/src/utils/bulk.ts +212 -0
- package/connectors/connect-copper/src/utils/config.ts +326 -0
- package/connectors/connect-copper/src/utils/output.ts +175 -0
- package/connectors/connect-copper/src/utils/settings.ts +114 -0
- package/connectors/connect-copper/src/utils/storage.ts +198 -0
- package/connectors/connect-copper/tsconfig.json +16 -0
- package/connectors/connect-copyai/.env.example +11 -0
- package/connectors/connect-copyai/CLAUDE.md +272 -0
- package/connectors/connect-copyai/README.md +193 -0
- package/connectors/connect-copyai/package.json +51 -0
- package/connectors/connect-copyai/scripts/release.ts +179 -0
- package/connectors/connect-copyai/src/api/client.ts +213 -0
- package/connectors/connect-copyai/src/api/example.ts +48 -0
- package/connectors/connect-copyai/src/api/index.ts +51 -0
- package/connectors/connect-copyai/src/cli/index.ts +254 -0
- package/connectors/connect-copyai/src/index.ts +103 -0
- package/connectors/connect-copyai/src/types/index.ts +237 -0
- package/connectors/connect-copyai/src/utils/auth.ts +274 -0
- package/connectors/connect-copyai/src/utils/bulk.ts +212 -0
- package/connectors/connect-copyai/src/utils/config.ts +326 -0
- package/connectors/connect-copyai/src/utils/output.ts +175 -0
- package/connectors/connect-copyai/src/utils/settings.ts +114 -0
- package/connectors/connect-copyai/src/utils/storage.ts +198 -0
- package/connectors/connect-copyai/tsconfig.json +16 -0
- package/connectors/connect-corsizio/.env.example +11 -0
- package/connectors/connect-corsizio/CLAUDE.md +272 -0
- package/connectors/connect-corsizio/README.md +193 -0
- package/connectors/connect-corsizio/package.json +51 -0
- package/connectors/connect-corsizio/scripts/release.ts +179 -0
- package/connectors/connect-corsizio/src/api/client.ts +213 -0
- package/connectors/connect-corsizio/src/api/example.ts +48 -0
- package/connectors/connect-corsizio/src/api/index.ts +51 -0
- package/connectors/connect-corsizio/src/cli/index.ts +254 -0
- package/connectors/connect-corsizio/src/index.ts +103 -0
- package/connectors/connect-corsizio/src/types/index.ts +237 -0
- package/connectors/connect-corsizio/src/utils/auth.ts +274 -0
- package/connectors/connect-corsizio/src/utils/bulk.ts +212 -0
- package/connectors/connect-corsizio/src/utils/config.ts +326 -0
- package/connectors/connect-corsizio/src/utils/output.ts +175 -0
- package/connectors/connect-corsizio/src/utils/settings.ts +114 -0
- package/connectors/connect-corsizio/src/utils/storage.ts +198 -0
- package/connectors/connect-corsizio/tsconfig.json +16 -0
- package/connectors/connect-cortex/.env.example +11 -0
- package/connectors/connect-cortex/CLAUDE.md +272 -0
- package/connectors/connect-cortex/README.md +193 -0
- package/connectors/connect-cortex/package.json +51 -0
- package/connectors/connect-cortex/scripts/release.ts +179 -0
- package/connectors/connect-cortex/src/api/client.ts +213 -0
- package/connectors/connect-cortex/src/api/example.ts +48 -0
- package/connectors/connect-cortex/src/api/index.ts +51 -0
- package/connectors/connect-cortex/src/cli/index.ts +254 -0
- package/connectors/connect-cortex/src/index.ts +103 -0
- package/connectors/connect-cortex/src/types/index.ts +237 -0
- package/connectors/connect-cortex/src/utils/auth.ts +274 -0
- package/connectors/connect-cortex/src/utils/bulk.ts +212 -0
- package/connectors/connect-cortex/src/utils/config.ts +326 -0
- package/connectors/connect-cortex/src/utils/output.ts +175 -0
- package/connectors/connect-cortex/src/utils/settings.ts +114 -0
- package/connectors/connect-cortex/src/utils/storage.ts +198 -0
- package/connectors/connect-cortex/tsconfig.json +16 -0
- package/connectors/connect-cradlai/.env.example +11 -0
- package/connectors/connect-cradlai/CLAUDE.md +272 -0
- package/connectors/connect-cradlai/README.md +193 -0
- package/connectors/connect-cradlai/package.json +51 -0
- package/connectors/connect-cradlai/scripts/release.ts +179 -0
- package/connectors/connect-cradlai/src/api/client.ts +213 -0
- package/connectors/connect-cradlai/src/api/example.ts +48 -0
- package/connectors/connect-cradlai/src/api/index.ts +51 -0
- package/connectors/connect-cradlai/src/cli/index.ts +254 -0
- package/connectors/connect-cradlai/src/index.ts +103 -0
- package/connectors/connect-cradlai/src/types/index.ts +237 -0
- package/connectors/connect-cradlai/src/utils/auth.ts +274 -0
- package/connectors/connect-cradlai/src/utils/bulk.ts +212 -0
- package/connectors/connect-cradlai/src/utils/config.ts +326 -0
- package/connectors/connect-cradlai/src/utils/output.ts +175 -0
- package/connectors/connect-cradlai/src/utils/settings.ts +114 -0
- package/connectors/connect-cradlai/src/utils/storage.ts +198 -0
- package/connectors/connect-cradlai/tsconfig.json +16 -0
- package/connectors/connect-craftdraft/.env.example +11 -0
- package/connectors/connect-craftdraft/CLAUDE.md +272 -0
- package/connectors/connect-craftdraft/README.md +193 -0
- package/connectors/connect-craftdraft/package.json +51 -0
- package/connectors/connect-craftdraft/scripts/release.ts +179 -0
- package/connectors/connect-craftdraft/src/api/client.ts +213 -0
- package/connectors/connect-craftdraft/src/api/example.ts +48 -0
- package/connectors/connect-craftdraft/src/api/index.ts +51 -0
- package/connectors/connect-craftdraft/src/cli/index.ts +254 -0
- package/connectors/connect-craftdraft/src/index.ts +103 -0
- package/connectors/connect-craftdraft/src/types/index.ts +237 -0
- package/connectors/connect-craftdraft/src/utils/auth.ts +274 -0
- package/connectors/connect-craftdraft/src/utils/bulk.ts +212 -0
- package/connectors/connect-craftdraft/src/utils/config.ts +326 -0
- package/connectors/connect-craftdraft/src/utils/output.ts +175 -0
- package/connectors/connect-craftdraft/src/utils/settings.ts +114 -0
- package/connectors/connect-craftdraft/src/utils/storage.ts +198 -0
- package/connectors/connect-craftdraft/tsconfig.json +16 -0
- package/connectors/connect-cratedb/.env.example +11 -0
- package/connectors/connect-cratedb/CLAUDE.md +272 -0
- package/connectors/connect-cratedb/README.md +193 -0
- package/connectors/connect-cratedb/package.json +51 -0
- package/connectors/connect-cratedb/scripts/release.ts +179 -0
- package/connectors/connect-cratedb/src/api/client.ts +213 -0
- package/connectors/connect-cratedb/src/api/example.ts +48 -0
- package/connectors/connect-cratedb/src/api/index.ts +51 -0
- package/connectors/connect-cratedb/src/cli/index.ts +254 -0
- package/connectors/connect-cratedb/src/index.ts +103 -0
- package/connectors/connect-cratedb/src/types/index.ts +237 -0
- package/connectors/connect-cratedb/src/utils/auth.ts +274 -0
- package/connectors/connect-cratedb/src/utils/bulk.ts +212 -0
- package/connectors/connect-cratedb/src/utils/config.ts +326 -0
- package/connectors/connect-cratedb/src/utils/output.ts +175 -0
- package/connectors/connect-cratedb/src/utils/settings.ts +114 -0
- package/connectors/connect-cratedb/src/utils/storage.ts +198 -0
- package/connectors/connect-cratedb/tsconfig.json +16 -0
- package/connectors/connect-cronly/.env.example +11 -0
- package/connectors/connect-cronly/CLAUDE.md +272 -0
- package/connectors/connect-cronly/README.md +193 -0
- package/connectors/connect-cronly/package.json +51 -0
- package/connectors/connect-cronly/scripts/release.ts +179 -0
- package/connectors/connect-cronly/src/api/client.ts +213 -0
- package/connectors/connect-cronly/src/api/example.ts +48 -0
- package/connectors/connect-cronly/src/api/index.ts +51 -0
- package/connectors/connect-cronly/src/cli/index.ts +254 -0
- package/connectors/connect-cronly/src/index.ts +103 -0
- package/connectors/connect-cronly/src/types/index.ts +237 -0
- package/connectors/connect-cronly/src/utils/auth.ts +274 -0
- package/connectors/connect-cronly/src/utils/bulk.ts +212 -0
- package/connectors/connect-cronly/src/utils/config.ts +326 -0
- package/connectors/connect-cronly/src/utils/output.ts +175 -0
- package/connectors/connect-cronly/src/utils/settings.ts +114 -0
- package/connectors/connect-cronly/src/utils/storage.ts +198 -0
- package/connectors/connect-cronly/tsconfig.json +16 -0
- package/connectors/connect-crossmint/.env.example +11 -0
- package/connectors/connect-crossmint/CLAUDE.md +272 -0
- package/connectors/connect-crossmint/README.md +193 -0
- package/connectors/connect-crossmint/package.json +51 -0
- package/connectors/connect-crossmint/scripts/release.ts +179 -0
- package/connectors/connect-crossmint/src/api/client.ts +213 -0
- package/connectors/connect-crossmint/src/api/example.ts +48 -0
- package/connectors/connect-crossmint/src/api/index.ts +51 -0
- package/connectors/connect-crossmint/src/cli/index.ts +254 -0
- package/connectors/connect-crossmint/src/index.ts +103 -0
- package/connectors/connect-crossmint/src/types/index.ts +237 -0
- package/connectors/connect-crossmint/src/utils/auth.ts +274 -0
- package/connectors/connect-crossmint/src/utils/bulk.ts +212 -0
- package/connectors/connect-crossmint/src/utils/config.ts +326 -0
- package/connectors/connect-crossmint/src/utils/output.ts +175 -0
- package/connectors/connect-crossmint/src/utils/settings.ts +114 -0
- package/connectors/connect-crossmint/src/utils/storage.ts +198 -0
- package/connectors/connect-crossmint/tsconfig.json +16 -0
- package/connectors/connect-crowddev/.env.example +11 -0
- package/connectors/connect-crowddev/CLAUDE.md +272 -0
- package/connectors/connect-crowddev/README.md +193 -0
- package/connectors/connect-crowddev/package.json +51 -0
- package/connectors/connect-crowddev/scripts/release.ts +179 -0
- package/connectors/connect-crowddev/src/api/client.ts +213 -0
- package/connectors/connect-crowddev/src/api/example.ts +48 -0
- package/connectors/connect-crowddev/src/api/index.ts +51 -0
- package/connectors/connect-crowddev/src/cli/index.ts +254 -0
- package/connectors/connect-crowddev/src/index.ts +103 -0
- package/connectors/connect-crowddev/src/types/index.ts +237 -0
- package/connectors/connect-crowddev/src/utils/auth.ts +274 -0
- package/connectors/connect-crowddev/src/utils/bulk.ts +212 -0
- package/connectors/connect-crowddev/src/utils/config.ts +326 -0
- package/connectors/connect-crowddev/src/utils/output.ts +175 -0
- package/connectors/connect-crowddev/src/utils/settings.ts +114 -0
- package/connectors/connect-crowddev/src/utils/storage.ts +198 -0
- package/connectors/connect-crowddev/tsconfig.json +16 -0
- package/connectors/connect-crowdin/.env.example +11 -0
- package/connectors/connect-crowdin/CLAUDE.md +272 -0
- package/connectors/connect-crowdin/README.md +193 -0
- package/connectors/connect-crowdin/package.json +51 -0
- package/connectors/connect-crowdin/scripts/release.ts +179 -0
- package/connectors/connect-crowdin/src/api/client.ts +213 -0
- package/connectors/connect-crowdin/src/api/example.ts +48 -0
- package/connectors/connect-crowdin/src/api/index.ts +51 -0
- package/connectors/connect-crowdin/src/cli/index.ts +254 -0
- package/connectors/connect-crowdin/src/index.ts +103 -0
- package/connectors/connect-crowdin/src/types/index.ts +237 -0
- package/connectors/connect-crowdin/src/utils/auth.ts +274 -0
- package/connectors/connect-crowdin/src/utils/bulk.ts +212 -0
- package/connectors/connect-crowdin/src/utils/config.ts +326 -0
- package/connectors/connect-crowdin/src/utils/output.ts +175 -0
- package/connectors/connect-crowdin/src/utils/settings.ts +114 -0
- package/connectors/connect-crowdin/src/utils/storage.ts +198 -0
- package/connectors/connect-crowdin/tsconfig.json +16 -0
- package/connectors/connect-crowdpower/.env.example +11 -0
- package/connectors/connect-crowdpower/CLAUDE.md +272 -0
- package/connectors/connect-crowdpower/README.md +193 -0
- package/connectors/connect-crowdpower/package.json +51 -0
- package/connectors/connect-crowdpower/scripts/release.ts +179 -0
- package/connectors/connect-crowdpower/src/api/client.ts +213 -0
- package/connectors/connect-crowdpower/src/api/example.ts +48 -0
- package/connectors/connect-crowdpower/src/api/index.ts +51 -0
- package/connectors/connect-crowdpower/src/cli/index.ts +254 -0
- package/connectors/connect-crowdpower/src/index.ts +103 -0
- package/connectors/connect-crowdpower/src/types/index.ts +237 -0
- package/connectors/connect-crowdpower/src/utils/auth.ts +274 -0
- package/connectors/connect-crowdpower/src/utils/bulk.ts +212 -0
- package/connectors/connect-crowdpower/src/utils/config.ts +326 -0
- package/connectors/connect-crowdpower/src/utils/output.ts +175 -0
- package/connectors/connect-crowdpower/src/utils/settings.ts +114 -0
- package/connectors/connect-crowdpower/src/utils/storage.ts +198 -0
- package/connectors/connect-crowdpower/tsconfig.json +16 -0
- package/connectors/connect-crowdstrike/.env.example +11 -0
- package/connectors/connect-crowdstrike/CLAUDE.md +272 -0
- package/connectors/connect-crowdstrike/README.md +193 -0
- package/connectors/connect-crowdstrike/package.json +51 -0
- package/connectors/connect-crowdstrike/scripts/release.ts +179 -0
- package/connectors/connect-crowdstrike/src/api/client.ts +213 -0
- package/connectors/connect-crowdstrike/src/api/example.ts +48 -0
- package/connectors/connect-crowdstrike/src/api/index.ts +51 -0
- package/connectors/connect-crowdstrike/src/cli/index.ts +254 -0
- package/connectors/connect-crowdstrike/src/index.ts +103 -0
- package/connectors/connect-crowdstrike/src/types/index.ts +237 -0
- package/connectors/connect-crowdstrike/src/utils/auth.ts +274 -0
- package/connectors/connect-crowdstrike/src/utils/bulk.ts +212 -0
- package/connectors/connect-crowdstrike/src/utils/config.ts +326 -0
- package/connectors/connect-crowdstrike/src/utils/output.ts +175 -0
- package/connectors/connect-crowdstrike/src/utils/settings.ts +114 -0
- package/connectors/connect-crowdstrike/src/utils/storage.ts +198 -0
- package/connectors/connect-crowdstrike/tsconfig.json +16 -0
- package/connectors/connect-cryptolens/.env.example +11 -0
- package/connectors/connect-cryptolens/CLAUDE.md +272 -0
- package/connectors/connect-cryptolens/README.md +193 -0
- package/connectors/connect-cryptolens/package.json +51 -0
- package/connectors/connect-cryptolens/scripts/release.ts +179 -0
- package/connectors/connect-cryptolens/src/api/client.ts +213 -0
- package/connectors/connect-cryptolens/src/api/example.ts +48 -0
- package/connectors/connect-cryptolens/src/api/index.ts +51 -0
- package/connectors/connect-cryptolens/src/cli/index.ts +254 -0
- package/connectors/connect-cryptolens/src/index.ts +103 -0
- package/connectors/connect-cryptolens/src/types/index.ts +237 -0
- package/connectors/connect-cryptolens/src/utils/auth.ts +274 -0
- package/connectors/connect-cryptolens/src/utils/bulk.ts +212 -0
- package/connectors/connect-cryptolens/src/utils/config.ts +326 -0
- package/connectors/connect-cryptolens/src/utils/output.ts +175 -0
- package/connectors/connect-cryptolens/src/utils/settings.ts +114 -0
- package/connectors/connect-cryptolens/src/utils/storage.ts +198 -0
- package/connectors/connect-cryptolens/tsconfig.json +16 -0
- package/connectors/connect-currents/.env.example +11 -0
- package/connectors/connect-currents/CLAUDE.md +272 -0
- package/connectors/connect-currents/README.md +193 -0
- package/connectors/connect-currents/package.json +51 -0
- package/connectors/connect-currents/scripts/release.ts +179 -0
- package/connectors/connect-currents/src/api/client.ts +213 -0
- package/connectors/connect-currents/src/api/example.ts +48 -0
- package/connectors/connect-currents/src/api/index.ts +51 -0
- package/connectors/connect-currents/src/cli/index.ts +254 -0
- package/connectors/connect-currents/src/index.ts +103 -0
- package/connectors/connect-currents/src/types/index.ts +237 -0
- package/connectors/connect-currents/src/utils/auth.ts +274 -0
- package/connectors/connect-currents/src/utils/bulk.ts +212 -0
- package/connectors/connect-currents/src/utils/config.ts +326 -0
- package/connectors/connect-currents/src/utils/output.ts +175 -0
- package/connectors/connect-currents/src/utils/settings.ts +114 -0
- package/connectors/connect-currents/src/utils/storage.ts +198 -0
- package/connectors/connect-currents/tsconfig.json +16 -0
- package/connectors/connect-customeriq/.env.example +11 -0
- package/connectors/connect-customeriq/CLAUDE.md +272 -0
- package/connectors/connect-customeriq/README.md +193 -0
- package/connectors/connect-customeriq/package.json +49 -0
- package/connectors/connect-customeriq/scripts/release.ts +179 -0
- package/connectors/connect-customeriq/src/api/client.ts +213 -0
- package/connectors/connect-customeriq/src/api/example.ts +48 -0
- package/connectors/connect-customeriq/src/api/index.ts +51 -0
- package/connectors/connect-customeriq/src/cli/index.ts +254 -0
- package/connectors/connect-customeriq/src/index.ts +103 -0
- package/connectors/connect-customeriq/src/types/index.ts +237 -0
- package/connectors/connect-customeriq/src/utils/auth.ts +274 -0
- package/connectors/connect-customeriq/src/utils/bulk.ts +212 -0
- package/connectors/connect-customeriq/src/utils/config.ts +326 -0
- package/connectors/connect-customeriq/src/utils/output.ts +175 -0
- package/connectors/connect-customeriq/src/utils/settings.ts +114 -0
- package/connectors/connect-customeriq/src/utils/storage.ts +198 -0
- package/connectors/connect-customeriq/tsconfig.json +16 -0
- package/connectors/connect-daffy/.env.example +11 -0
- package/connectors/connect-daffy/CLAUDE.md +272 -0
- package/connectors/connect-daffy/README.md +193 -0
- package/connectors/connect-daffy/package.json +50 -0
- package/connectors/connect-daffy/scripts/release.ts +179 -0
- package/connectors/connect-daffy/src/api/client.ts +213 -0
- package/connectors/connect-daffy/src/api/example.ts +48 -0
- package/connectors/connect-daffy/src/api/index.ts +51 -0
- package/connectors/connect-daffy/src/cli/index.ts +254 -0
- package/connectors/connect-daffy/src/index.ts +103 -0
- package/connectors/connect-daffy/src/types/index.ts +237 -0
- package/connectors/connect-daffy/src/utils/auth.ts +274 -0
- package/connectors/connect-daffy/src/utils/bulk.ts +212 -0
- package/connectors/connect-daffy/src/utils/config.ts +326 -0
- package/connectors/connect-daffy/src/utils/output.ts +175 -0
- package/connectors/connect-daffy/src/utils/settings.ts +114 -0
- package/connectors/connect-daffy/src/utils/storage.ts +198 -0
- package/connectors/connect-daffy/tsconfig.json +16 -0
- package/connectors/connect-danteai/.env.example +11 -0
- package/connectors/connect-danteai/CLAUDE.md +272 -0
- package/connectors/connect-danteai/README.md +193 -0
- package/connectors/connect-danteai/package.json +50 -0
- package/connectors/connect-danteai/scripts/release.ts +179 -0
- package/connectors/connect-danteai/src/api/client.ts +213 -0
- package/connectors/connect-danteai/src/api/example.ts +48 -0
- package/connectors/connect-danteai/src/api/index.ts +51 -0
- package/connectors/connect-danteai/src/cli/index.ts +254 -0
- package/connectors/connect-danteai/src/index.ts +103 -0
- package/connectors/connect-danteai/src/types/index.ts +237 -0
- package/connectors/connect-danteai/src/utils/auth.ts +274 -0
- package/connectors/connect-danteai/src/utils/bulk.ts +212 -0
- package/connectors/connect-danteai/src/utils/config.ts +326 -0
- package/connectors/connect-danteai/src/utils/output.ts +175 -0
- package/connectors/connect-danteai/src/utils/settings.ts +114 -0
- package/connectors/connect-danteai/src/utils/storage.ts +198 -0
- package/connectors/connect-danteai/tsconfig.json +16 -0
- package/connectors/connect-darkskyapi/.env.example +11 -0
- package/connectors/connect-darkskyapi/CLAUDE.md +272 -0
- package/connectors/connect-darkskyapi/README.md +193 -0
- package/connectors/connect-darkskyapi/package.json +50 -0
- package/connectors/connect-darkskyapi/scripts/release.ts +179 -0
- package/connectors/connect-darkskyapi/src/api/client.ts +213 -0
- package/connectors/connect-darkskyapi/src/api/example.ts +48 -0
- package/connectors/connect-darkskyapi/src/api/index.ts +51 -0
- package/connectors/connect-darkskyapi/src/cli/index.ts +254 -0
- package/connectors/connect-darkskyapi/src/index.ts +103 -0
- package/connectors/connect-darkskyapi/src/types/index.ts +237 -0
- package/connectors/connect-darkskyapi/src/utils/auth.ts +274 -0
- package/connectors/connect-darkskyapi/src/utils/bulk.ts +212 -0
- package/connectors/connect-darkskyapi/src/utils/config.ts +326 -0
- package/connectors/connect-darkskyapi/src/utils/output.ts +175 -0
- package/connectors/connect-darkskyapi/src/utils/settings.ts +114 -0
- package/connectors/connect-darkskyapi/src/utils/storage.ts +198 -0
- package/connectors/connect-darkskyapi/tsconfig.json +16 -0
- package/connectors/connect-dasha/.env.example +11 -0
- package/connectors/connect-dasha/CLAUDE.md +272 -0
- package/connectors/connect-dasha/README.md +193 -0
- package/connectors/connect-dasha/package.json +49 -0
- package/connectors/connect-dasha/scripts/release.ts +179 -0
- package/connectors/connect-dasha/src/api/client.ts +213 -0
- package/connectors/connect-dasha/src/api/example.ts +48 -0
- package/connectors/connect-dasha/src/api/index.ts +51 -0
- package/connectors/connect-dasha/src/cli/index.ts +254 -0
- package/connectors/connect-dasha/src/index.ts +103 -0
- package/connectors/connect-dasha/src/types/index.ts +237 -0
- package/connectors/connect-dasha/src/utils/auth.ts +274 -0
- package/connectors/connect-dasha/src/utils/bulk.ts +212 -0
- package/connectors/connect-dasha/src/utils/config.ts +326 -0
- package/connectors/connect-dasha/src/utils/output.ts +175 -0
- package/connectors/connect-dasha/src/utils/settings.ts +114 -0
- package/connectors/connect-dasha/src/utils/storage.ts +198 -0
- package/connectors/connect-dasha/tsconfig.json +16 -0
- package/connectors/connect-databox/.env.example +11 -0
- package/connectors/connect-databox/CLAUDE.md +272 -0
- package/connectors/connect-databox/README.md +193 -0
- package/connectors/connect-databox/package.json +50 -0
- package/connectors/connect-databox/scripts/release.ts +179 -0
- package/connectors/connect-databox/src/api/client.ts +213 -0
- package/connectors/connect-databox/src/api/example.ts +48 -0
- package/connectors/connect-databox/src/api/index.ts +51 -0
- package/connectors/connect-databox/src/cli/index.ts +254 -0
- package/connectors/connect-databox/src/index.ts +103 -0
- package/connectors/connect-databox/src/types/index.ts +237 -0
- package/connectors/connect-databox/src/utils/auth.ts +274 -0
- package/connectors/connect-databox/src/utils/bulk.ts +212 -0
- package/connectors/connect-databox/src/utils/config.ts +326 -0
- package/connectors/connect-databox/src/utils/output.ts +175 -0
- package/connectors/connect-databox/src/utils/settings.ts +114 -0
- package/connectors/connect-databox/src/utils/storage.ts +198 -0
- package/connectors/connect-databox/tsconfig.json +16 -0
- package/connectors/connect-datarobot/.env.example +11 -0
- package/connectors/connect-datarobot/CLAUDE.md +272 -0
- package/connectors/connect-datarobot/README.md +193 -0
- package/connectors/connect-datarobot/package.json +50 -0
- package/connectors/connect-datarobot/scripts/release.ts +179 -0
- package/connectors/connect-datarobot/src/api/client.ts +213 -0
- package/connectors/connect-datarobot/src/api/example.ts +48 -0
- package/connectors/connect-datarobot/src/api/index.ts +51 -0
- package/connectors/connect-datarobot/src/cli/index.ts +254 -0
- package/connectors/connect-datarobot/src/index.ts +103 -0
- package/connectors/connect-datarobot/src/types/index.ts +237 -0
- package/connectors/connect-datarobot/src/utils/auth.ts +274 -0
- package/connectors/connect-datarobot/src/utils/bulk.ts +212 -0
- package/connectors/connect-datarobot/src/utils/config.ts +326 -0
- package/connectors/connect-datarobot/src/utils/output.ts +175 -0
- package/connectors/connect-datarobot/src/utils/settings.ts +114 -0
- package/connectors/connect-datarobot/src/utils/storage.ts +198 -0
- package/connectors/connect-datarobot/tsconfig.json +16 -0
- package/dist/index.js +259 -0
- package/package.json +1 -1
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
/**
|
|
3
|
+
* Auto-versioning publish script
|
|
4
|
+
* - Fetches current npm version
|
|
5
|
+
* - Auto-bumps patch version if local version <= npm version
|
|
6
|
+
* - Creates git tag
|
|
7
|
+
* - Publishes to npm
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { $ } from 'bun';
|
|
11
|
+
import { readFileSync, writeFileSync } from 'fs';
|
|
12
|
+
import { join } from 'path';
|
|
13
|
+
|
|
14
|
+
interface PackageJson {
|
|
15
|
+
name: string;
|
|
16
|
+
version: string;
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
type BumpType = 'patch' | 'minor' | 'major';
|
|
21
|
+
|
|
22
|
+
function parseVersion(version: string): { major: number; minor: number; patch: number } {
|
|
23
|
+
const [major, minor, patch] = version.split('.').map(Number);
|
|
24
|
+
return { major, minor, patch };
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function bumpVersion(version: string, type: BumpType = 'patch'): string {
|
|
28
|
+
const { major, minor, patch } = parseVersion(version);
|
|
29
|
+
|
|
30
|
+
switch (type) {
|
|
31
|
+
case 'major':
|
|
32
|
+
return `${major + 1}.0.0`;
|
|
33
|
+
case 'minor':
|
|
34
|
+
return `${major}.${minor + 1}.0`;
|
|
35
|
+
case 'patch':
|
|
36
|
+
default:
|
|
37
|
+
return `${major}.${minor}.${patch + 1}`;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function compareVersions(a: string, b: string): number {
|
|
42
|
+
const vA = parseVersion(a);
|
|
43
|
+
const vB = parseVersion(b);
|
|
44
|
+
|
|
45
|
+
if (vA.major !== vB.major) return vA.major - vB.major;
|
|
46
|
+
if (vA.minor !== vB.minor) return vA.minor - vB.minor;
|
|
47
|
+
return vA.patch - vB.patch;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async function getNpmVersion(packageName: string): Promise<string | null> {
|
|
51
|
+
try {
|
|
52
|
+
const result = await $`npm view ${packageName} version 2>/dev/null`.text();
|
|
53
|
+
return result.trim() || null;
|
|
54
|
+
} catch {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async function hasUncommittedChanges(): Promise<boolean> {
|
|
60
|
+
try {
|
|
61
|
+
const result = await $`git status --porcelain`.text();
|
|
62
|
+
return result.trim().length > 0;
|
|
63
|
+
} catch {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async function isGitRepo(): Promise<boolean> {
|
|
69
|
+
try {
|
|
70
|
+
await $`git rev-parse --git-dir 2>/dev/null`.text();
|
|
71
|
+
return true;
|
|
72
|
+
} catch {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async function createGitTag(version: string, packageName: string): Promise<boolean> {
|
|
78
|
+
const tagName = `${packageName}@${version}`;
|
|
79
|
+
|
|
80
|
+
try {
|
|
81
|
+
// Check if tag already exists
|
|
82
|
+
const existingTags = await $`git tag -l ${tagName}`.text();
|
|
83
|
+
if (existingTags.trim()) {
|
|
84
|
+
console.log(`⚠️ Tag ${tagName} already exists, skipping tag creation`);
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
await $`git tag -a ${tagName} -m "Release ${tagName}"`;
|
|
89
|
+
console.log(`✅ Created git tag: ${tagName}`);
|
|
90
|
+
return true;
|
|
91
|
+
} catch (error) {
|
|
92
|
+
console.error(`❌ Failed to create git tag: ${error}`);
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async function commitVersionBump(version: string, packageName: string): Promise<boolean> {
|
|
98
|
+
try {
|
|
99
|
+
await $`git add package.json`;
|
|
100
|
+
await $`git commit -m "chore(${packageName}): bump version to ${version}"`;
|
|
101
|
+
console.log(`✅ Committed version bump`);
|
|
102
|
+
return true;
|
|
103
|
+
} catch (error) {
|
|
104
|
+
console.error(`❌ Failed to commit: ${error}`);
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
async function main() {
|
|
110
|
+
const args = process.argv.slice(2);
|
|
111
|
+
const bumpType = (args.find(a => ['patch', 'minor', 'major'].includes(a)) || 'patch') as BumpType;
|
|
112
|
+
const skipGit = args.includes('--skip-git');
|
|
113
|
+
const dryRun = args.includes('--dry-run');
|
|
114
|
+
const force = args.includes('--force');
|
|
115
|
+
|
|
116
|
+
// Read package.json
|
|
117
|
+
const pkgPath = join(process.cwd(), 'package.json');
|
|
118
|
+
const pkg: PackageJson = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
119
|
+
|
|
120
|
+
console.log(`\n📦 Publishing ${pkg.name}\n`);
|
|
121
|
+
|
|
122
|
+
// Get current npm version
|
|
123
|
+
const npmVersion = await getNpmVersion(pkg.name);
|
|
124
|
+
let newVersion = pkg.version;
|
|
125
|
+
|
|
126
|
+
if (npmVersion) {
|
|
127
|
+
console.log(`📌 Current npm version: ${npmVersion}`);
|
|
128
|
+
console.log(`📌 Local version: ${pkg.version}`);
|
|
129
|
+
|
|
130
|
+
// Check if we need to bump
|
|
131
|
+
if (compareVersions(pkg.version, npmVersion) <= 0) {
|
|
132
|
+
newVersion = bumpVersion(npmVersion, bumpType);
|
|
133
|
+
console.log(`🔄 Auto-bumping to: ${newVersion}`);
|
|
134
|
+
} else {
|
|
135
|
+
console.log(`✅ Local version is ahead, using: ${pkg.version}`);
|
|
136
|
+
}
|
|
137
|
+
} else {
|
|
138
|
+
console.log(`📌 Package not yet published to npm`);
|
|
139
|
+
console.log(`📌 Using local version: ${pkg.version}`);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Update package.json if version changed
|
|
143
|
+
if (newVersion !== pkg.version) {
|
|
144
|
+
if (dryRun) {
|
|
145
|
+
console.log(`\n🧪 DRY RUN: Would update version to ${newVersion}`);
|
|
146
|
+
} else {
|
|
147
|
+
pkg.version = newVersion;
|
|
148
|
+
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
|
|
149
|
+
console.log(`✅ Updated package.json to version ${newVersion}`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Git operations
|
|
154
|
+
const isGit = await isGitRepo();
|
|
155
|
+
|
|
156
|
+
if (isGit && !skipGit) {
|
|
157
|
+
const hasChanges = await hasUncommittedChanges();
|
|
158
|
+
|
|
159
|
+
if (hasChanges && newVersion !== pkg.version) {
|
|
160
|
+
if (dryRun) {
|
|
161
|
+
console.log(`🧪 DRY RUN: Would commit version bump`);
|
|
162
|
+
} else {
|
|
163
|
+
await commitVersionBump(newVersion, pkg.name.replace('@hasna/', ''));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (dryRun) {
|
|
168
|
+
console.log(`🧪 DRY RUN: Would create tag ${pkg.name}@${newVersion}`);
|
|
169
|
+
} else {
|
|
170
|
+
await createGitTag(newVersion, pkg.name.replace('@hasna/', ''));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Build
|
|
175
|
+
console.log(`\n🔨 Building...`);
|
|
176
|
+
if (!dryRun) {
|
|
177
|
+
await $`bun run build`;
|
|
178
|
+
} else {
|
|
179
|
+
console.log(`🧪 DRY RUN: Would run build`);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Publish
|
|
183
|
+
console.log(`\n🚀 Publishing to npm...`);
|
|
184
|
+
if (dryRun) {
|
|
185
|
+
console.log(`🧪 DRY RUN: Would publish ${pkg.name}@${newVersion}`);
|
|
186
|
+
} else {
|
|
187
|
+
try {
|
|
188
|
+
await $`npm publish`;
|
|
189
|
+
console.log(`\n✅ Successfully published ${pkg.name}@${newVersion}`);
|
|
190
|
+
} catch (error) {
|
|
191
|
+
console.error(`\n❌ Publish failed: ${error}`);
|
|
192
|
+
process.exit(1);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Push tags
|
|
197
|
+
if (isGit && !skipGit && !dryRun) {
|
|
198
|
+
console.log(`\n📤 Pushing tags to remote...`);
|
|
199
|
+
try {
|
|
200
|
+
await $`git push --tags`;
|
|
201
|
+
console.log(`✅ Pushed tags to remote`);
|
|
202
|
+
} catch {
|
|
203
|
+
console.log(`⚠️ Could not push tags (no remote or not configured)`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
console.log(`\n✨ Done!\n`);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
main().catch(console.error);
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import type { ContactOutConfig, OutputFormat } from '../types';
|
|
2
|
+
import { ContactOutApiError } from '../types';
|
|
3
|
+
|
|
4
|
+
const DEFAULT_BASE_URL = 'https://api.contactout.com';
|
|
5
|
+
|
|
6
|
+
export interface RequestOptions {
|
|
7
|
+
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
8
|
+
params?: Record<string, string | number | boolean | undefined>;
|
|
9
|
+
body?: Record<string, unknown> | unknown[] | string;
|
|
10
|
+
headers?: Record<string, string>;
|
|
11
|
+
format?: OutputFormat;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class ContactOutClient {
|
|
15
|
+
private readonly apiKey: string;
|
|
16
|
+
private readonly baseUrl: string;
|
|
17
|
+
|
|
18
|
+
constructor(config: ContactOutConfig) {
|
|
19
|
+
if (!config.apiKey) {
|
|
20
|
+
throw new Error('API key is required');
|
|
21
|
+
}
|
|
22
|
+
this.apiKey = config.apiKey;
|
|
23
|
+
this.baseUrl = config.baseUrl || DEFAULT_BASE_URL;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
private buildUrl(path: string, params?: Record<string, string | number | boolean | undefined>): string {
|
|
27
|
+
const url = new URL(`${this.baseUrl}${path}`);
|
|
28
|
+
|
|
29
|
+
if (params) {
|
|
30
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
31
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
32
|
+
url.searchParams.append(key, String(value));
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return url.toString();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Make an authenticated request to the ContactOut API
|
|
42
|
+
* Uses token header authentication as per ContactOut API docs
|
|
43
|
+
*/
|
|
44
|
+
async request<T>(path: string, options: RequestOptions = {}): Promise<T> {
|
|
45
|
+
const { method = 'GET', params, body, headers = {} } = options;
|
|
46
|
+
|
|
47
|
+
const url = this.buildUrl(path, params);
|
|
48
|
+
|
|
49
|
+
// ContactOut uses token header for authentication
|
|
50
|
+
const requestHeaders: Record<string, string> = {
|
|
51
|
+
'token': this.apiKey,
|
|
52
|
+
'Accept': 'application/json',
|
|
53
|
+
...headers,
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
if (body && ['POST', 'PUT', 'PATCH'].includes(method)) {
|
|
57
|
+
requestHeaders['Content-Type'] = 'application/json';
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const fetchOptions: RequestInit = {
|
|
61
|
+
method,
|
|
62
|
+
headers: requestHeaders,
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
if (body && ['POST', 'PUT', 'PATCH'].includes(method)) {
|
|
66
|
+
fetchOptions.body = typeof body === 'string' ? body : JSON.stringify(body);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const response = await fetch(url, fetchOptions);
|
|
70
|
+
|
|
71
|
+
// Handle 204 No Content
|
|
72
|
+
if (response.status === 204) {
|
|
73
|
+
return {} as T;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Parse response
|
|
77
|
+
let data: unknown;
|
|
78
|
+
const contentType = response.headers.get('content-type') || '';
|
|
79
|
+
|
|
80
|
+
if (contentType.includes('application/json')) {
|
|
81
|
+
const text = await response.text();
|
|
82
|
+
if (text) {
|
|
83
|
+
try {
|
|
84
|
+
data = JSON.parse(text);
|
|
85
|
+
} catch {
|
|
86
|
+
data = text;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
} else {
|
|
90
|
+
data = await response.text();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Handle errors
|
|
94
|
+
if (!response.ok) {
|
|
95
|
+
const errorMessage = typeof data === 'object' && data !== null
|
|
96
|
+
? JSON.stringify(data)
|
|
97
|
+
: String(data || response.statusText);
|
|
98
|
+
throw new ContactOutApiError(errorMessage, response.status);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return data as T;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async get<T>(path: string, params?: Record<string, string | number | boolean | undefined>): Promise<T> {
|
|
105
|
+
return this.request<T>(path, { method: 'GET', params });
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
async post<T>(path: string, body?: Record<string, unknown> | unknown[] | string | object, params?: Record<string, string | number | boolean | undefined>): Promise<T> {
|
|
109
|
+
return this.request<T>(path, { method: 'POST', body: body as Record<string, unknown>, params });
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
async put<T>(path: string, body?: Record<string, unknown> | object, params?: Record<string, string | number | boolean | undefined>): Promise<T> {
|
|
113
|
+
return this.request<T>(path, { method: 'PUT', body: body as Record<string, unknown>, params });
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async patch<T>(path: string, body?: Record<string, unknown> | object, params?: Record<string, string | number | boolean | undefined>): Promise<T> {
|
|
117
|
+
return this.request<T>(path, { method: 'PATCH', body: body as Record<string, unknown>, params });
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
async delete<T>(path: string, params?: Record<string, string | number | boolean | undefined>): Promise<T> {
|
|
121
|
+
return this.request<T>(path, { method: 'DELETE', params });
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Get a preview of the API key (for display/debugging)
|
|
126
|
+
*/
|
|
127
|
+
getApiKeyPreview(): string {
|
|
128
|
+
if (this.apiKey.length > 10) {
|
|
129
|
+
return `${this.apiKey.substring(0, 6)}...${this.apiKey.substring(this.apiKey.length - 4)}`;
|
|
130
|
+
}
|
|
131
|
+
return '***';
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { ContactOutClient } from './client';
|
|
2
|
+
import type {
|
|
3
|
+
CompanySearchParams,
|
|
4
|
+
CompanySearchResponse,
|
|
5
|
+
DomainEnrichParams,
|
|
6
|
+
DomainEnrichResponse,
|
|
7
|
+
} from '../types';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Company API - Search and enrich company profiles
|
|
11
|
+
*/
|
|
12
|
+
export class CompanyApi {
|
|
13
|
+
constructor(private readonly client: ContactOutClient) {}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Search for companies matching criteria
|
|
17
|
+
* @param params - Search filters including name, domain, size, location, industry, revenue, etc.
|
|
18
|
+
* @returns Paginated list of matching companies
|
|
19
|
+
* @cost 1 search credit per company
|
|
20
|
+
*/
|
|
21
|
+
async search(params: CompanySearchParams): Promise<CompanySearchResponse> {
|
|
22
|
+
return this.client.post<CompanySearchResponse>('/v1/company/search', {
|
|
23
|
+
name: params.name,
|
|
24
|
+
domain: params.domain,
|
|
25
|
+
size: params.size,
|
|
26
|
+
location: params.location,
|
|
27
|
+
industry: params.industry,
|
|
28
|
+
min_revenue: params.min_revenue,
|
|
29
|
+
max_revenue: params.max_revenue,
|
|
30
|
+
year_founded_from: params.year_founded_from,
|
|
31
|
+
year_founded_to: params.year_founded_to,
|
|
32
|
+
page: params.page,
|
|
33
|
+
hq_only: params.hq_only,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Enrich company information from domains
|
|
39
|
+
* @param params.domains - Array of domain names (max 30)
|
|
40
|
+
* @returns Company details for each domain
|
|
41
|
+
* @cost No credits consumed
|
|
42
|
+
*/
|
|
43
|
+
async enrichFromDomains(params: DomainEnrichParams): Promise<DomainEnrichResponse> {
|
|
44
|
+
if (params.domains.length > 30) {
|
|
45
|
+
throw new Error('Maximum 30 domains allowed per request');
|
|
46
|
+
}
|
|
47
|
+
return this.client.post<DomainEnrichResponse>('/v1/domain/enrich', {
|
|
48
|
+
domains: params.domains,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Get company by domain (convenience method for single domain)
|
|
54
|
+
* @param domain - Company domain
|
|
55
|
+
* @returns Company profile
|
|
56
|
+
*/
|
|
57
|
+
async getByDomain(domain: string): Promise<DomainEnrichResponse> {
|
|
58
|
+
return this.enrichFromDomains({ domains: [domain] });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { ContactOutClient } from './client';
|
|
2
|
+
import type {
|
|
3
|
+
EmailEnrichParams,
|
|
4
|
+
EmailEnrichResponse,
|
|
5
|
+
EmailVerifyResponse,
|
|
6
|
+
BatchEmailVerifyParams,
|
|
7
|
+
BatchEmailVerifyResponse,
|
|
8
|
+
BatchEmailVerifyJobResponse,
|
|
9
|
+
EmailToLinkedInResponse,
|
|
10
|
+
} from '../types';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Email API - Enrich profiles from email, verify emails, find LinkedIn from email
|
|
14
|
+
*/
|
|
15
|
+
export class EmailApi {
|
|
16
|
+
constructor(private readonly client: ContactOutClient) {}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Enrich a profile from an email address
|
|
20
|
+
* @param params.email - Email address to lookup
|
|
21
|
+
* @param params.include - Optional: include work_email in response
|
|
22
|
+
* @returns Full profile data mapped to email
|
|
23
|
+
* @cost 1 email/phone credit per match
|
|
24
|
+
*/
|
|
25
|
+
async enrich(params: EmailEnrichParams): Promise<EmailEnrichResponse> {
|
|
26
|
+
return this.client.get<EmailEnrichResponse>('/v1/email/enrich', {
|
|
27
|
+
email: params.email,
|
|
28
|
+
include: params.include,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Verify a single email address
|
|
34
|
+
* @param email - Email address to verify
|
|
35
|
+
* @returns Verification status: valid, invalid, accept_all, disposable, or unknown
|
|
36
|
+
* @cost 1 verifier credit if result is valid/invalid/accept_all
|
|
37
|
+
*/
|
|
38
|
+
async verify(email: string): Promise<EmailVerifyResponse> {
|
|
39
|
+
return this.client.get<EmailVerifyResponse>('/v1/email/verify', {
|
|
40
|
+
email,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Batch verify multiple email addresses (asynchronous)
|
|
46
|
+
* @param params.emails - Array of email addresses (max 1000)
|
|
47
|
+
* @param params.callback_url - Optional webhook URL for completion notification
|
|
48
|
+
* @returns Job ID for polling
|
|
49
|
+
* @cost 1 verifier credit per email (valid/invalid/accept_all results)
|
|
50
|
+
*/
|
|
51
|
+
async batchVerify(params: BatchEmailVerifyParams): Promise<BatchEmailVerifyResponse> {
|
|
52
|
+
if (params.emails.length > 1000) {
|
|
53
|
+
throw new Error('Maximum 1000 emails allowed per batch');
|
|
54
|
+
}
|
|
55
|
+
return this.client.post<BatchEmailVerifyResponse>('/v1/email/verify/batch', {
|
|
56
|
+
emails: params.emails,
|
|
57
|
+
callback_url: params.callback_url,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Get batch verification job status and results
|
|
63
|
+
* @param jobId - Job UUID from batchVerify
|
|
64
|
+
* @returns Job status and results when complete
|
|
65
|
+
*/
|
|
66
|
+
async getBatchVerifyJob(jobId: string): Promise<BatchEmailVerifyJobResponse> {
|
|
67
|
+
return this.client.get<BatchEmailVerifyJobResponse>(`/v1/email/verify/batch/${jobId}`);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Find LinkedIn profile URL from an email address
|
|
72
|
+
* @param email - Email address to lookup
|
|
73
|
+
* @returns LinkedIn profile URL if found
|
|
74
|
+
* @cost 1 email credit if found
|
|
75
|
+
*/
|
|
76
|
+
async toLinkedIn(email: string): Promise<EmailToLinkedInResponse> {
|
|
77
|
+
return this.client.get<EmailToLinkedInResponse>('/v1/people/person', {
|
|
78
|
+
email,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { ContactOutConfig } from '../types';
|
|
2
|
+
import { ContactOutClient } from './client';
|
|
3
|
+
import { LinkedInApi } from './linkedin';
|
|
4
|
+
import { PeopleApi } from './people';
|
|
5
|
+
import { CompanyApi } from './company';
|
|
6
|
+
import { EmailApi } from './email';
|
|
7
|
+
import { StatsApi } from './stats';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* ContactOut API Client
|
|
11
|
+
* Find emails, phone numbers, and enrich LinkedIn profiles
|
|
12
|
+
*/
|
|
13
|
+
export class ContactOut {
|
|
14
|
+
private readonly client: ContactOutClient;
|
|
15
|
+
|
|
16
|
+
// API modules
|
|
17
|
+
public readonly linkedin: LinkedInApi;
|
|
18
|
+
public readonly people: PeopleApi;
|
|
19
|
+
public readonly company: CompanyApi;
|
|
20
|
+
public readonly email: EmailApi;
|
|
21
|
+
public readonly stats: StatsApi;
|
|
22
|
+
|
|
23
|
+
constructor(config: ContactOutConfig) {
|
|
24
|
+
this.client = new ContactOutClient(config);
|
|
25
|
+
this.linkedin = new LinkedInApi(this.client);
|
|
26
|
+
this.people = new PeopleApi(this.client);
|
|
27
|
+
this.company = new CompanyApi(this.client);
|
|
28
|
+
this.email = new EmailApi(this.client);
|
|
29
|
+
this.stats = new StatsApi(this.client);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Create a client from environment variables
|
|
34
|
+
* Looks for CONTACTOUT_API_KEY
|
|
35
|
+
*/
|
|
36
|
+
static fromEnv(): ContactOut {
|
|
37
|
+
const apiKey = process.env.CONTACTOUT_API_KEY;
|
|
38
|
+
|
|
39
|
+
if (!apiKey) {
|
|
40
|
+
throw new Error('CONTACTOUT_API_KEY environment variable is required');
|
|
41
|
+
}
|
|
42
|
+
return new ContactOut({ apiKey });
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Get a preview of the API key (for debugging)
|
|
47
|
+
*/
|
|
48
|
+
getApiKeyPreview(): string {
|
|
49
|
+
return this.client.getApiKeyPreview();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Get the underlying client for direct API access
|
|
54
|
+
*/
|
|
55
|
+
getClient(): ContactOutClient {
|
|
56
|
+
return this.client;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { ContactOutClient } from './client';
|
|
61
|
+
export { LinkedInApi } from './linkedin';
|
|
62
|
+
export { PeopleApi } from './people';
|
|
63
|
+
export { CompanyApi } from './company';
|
|
64
|
+
export { EmailApi } from './email';
|
|
65
|
+
export { StatsApi } from './stats';
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import type { ContactOutClient } from './client';
|
|
2
|
+
import type {
|
|
3
|
+
LinkedInEnrichParams,
|
|
4
|
+
LinkedInEnrichResponse,
|
|
5
|
+
ContactInfoParams,
|
|
6
|
+
ContactInfoResponse,
|
|
7
|
+
BatchContactParams,
|
|
8
|
+
BatchContactResponse,
|
|
9
|
+
BatchJobResponse,
|
|
10
|
+
EmailStatusResponse,
|
|
11
|
+
PhoneStatusResponse,
|
|
12
|
+
} from '../types';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* LinkedIn Profile API - Enrich and get contact info from LinkedIn profiles
|
|
16
|
+
*/
|
|
17
|
+
export class LinkedInApi {
|
|
18
|
+
constructor(private readonly client: ContactOutClient) {}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Enrich a LinkedIn profile - get full profile data including contact info
|
|
22
|
+
* @param params.profile - LinkedIn profile URL
|
|
23
|
+
* @param params.profile_only - If true, returns profile without contact info
|
|
24
|
+
* @returns Profile data with emails and phones
|
|
25
|
+
* @cost 1 email/phone credit per match; 1 search credit if profile_only
|
|
26
|
+
*/
|
|
27
|
+
async enrich(params: LinkedInEnrichParams): Promise<LinkedInEnrichResponse> {
|
|
28
|
+
return this.client.get<LinkedInEnrichResponse>('/v1/linkedin/enrich', {
|
|
29
|
+
profile: params.profile,
|
|
30
|
+
profile_only: params.profile_only,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Get contact info for a single LinkedIn profile
|
|
36
|
+
* @param params.profile - LinkedIn profile URL
|
|
37
|
+
* @param params.include_phone - Include phone numbers in response
|
|
38
|
+
* @param params.email_type - Type of email to return: personal, work, personal,work, or none
|
|
39
|
+
* @returns Email addresses and phone numbers
|
|
40
|
+
* @cost 1 email/phone credit per match
|
|
41
|
+
*/
|
|
42
|
+
async getContactInfo(params: ContactInfoParams): Promise<ContactInfoResponse> {
|
|
43
|
+
return this.client.get<ContactInfoResponse>('/v1/people/linkedin', {
|
|
44
|
+
profile: params.profile,
|
|
45
|
+
include_phone: params.include_phone,
|
|
46
|
+
email_type: params.email_type,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Batch get contact info for up to 30 LinkedIn profiles (synchronous)
|
|
52
|
+
* @param params.profiles - Array of LinkedIn profile URLs (max 30)
|
|
53
|
+
* @returns Map of LinkedIn URLs to email arrays
|
|
54
|
+
* @cost 1 email credit per profile with match
|
|
55
|
+
*/
|
|
56
|
+
async batchContactInfo(params: BatchContactParams): Promise<BatchContactResponse> {
|
|
57
|
+
if (params.profiles.length > 30) {
|
|
58
|
+
throw new Error('V1 batch endpoint supports maximum 30 profiles. Use batchContactInfoAsync for larger batches.');
|
|
59
|
+
}
|
|
60
|
+
return this.client.post<BatchContactResponse>('/v1/people/linkedin/batch', {
|
|
61
|
+
profiles: params.profiles,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Batch get contact info for up to 1000 LinkedIn profiles (asynchronous)
|
|
67
|
+
* @param params.profiles - Array of LinkedIn profile URLs (max 1000)
|
|
68
|
+
* @param params.callback_url - Optional webhook URL for completion notification
|
|
69
|
+
* @param params.include_phone - Include phone numbers in response
|
|
70
|
+
* @returns Job ID for polling
|
|
71
|
+
* @cost 1 email credit per profile with match
|
|
72
|
+
*/
|
|
73
|
+
async batchContactInfoAsync(params: BatchContactParams): Promise<BatchContactResponse> {
|
|
74
|
+
if (params.profiles.length > 1000) {
|
|
75
|
+
throw new Error('V2 batch endpoint supports maximum 1000 profiles');
|
|
76
|
+
}
|
|
77
|
+
return this.client.post<BatchContactResponse>('/v2/people/linkedin/batch', {
|
|
78
|
+
profiles: params.profiles,
|
|
79
|
+
callback_url: params.callback_url,
|
|
80
|
+
include_phone: params.include_phone,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Get batch job status and results
|
|
86
|
+
* @param jobId - Job UUID from batchContactInfoAsync
|
|
87
|
+
* @returns Job status and results when complete
|
|
88
|
+
*/
|
|
89
|
+
async getBatchJob(jobId: string): Promise<BatchJobResponse> {
|
|
90
|
+
return this.client.get<BatchJobResponse>(`/v2/people/linkedin/batch/${jobId}`);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Check if personal email is available for a LinkedIn profile
|
|
95
|
+
* @param profile - LinkedIn profile URL
|
|
96
|
+
* @returns Boolean indicating if personal email is available
|
|
97
|
+
* @cost No credits consumed
|
|
98
|
+
* @access Paid users only
|
|
99
|
+
*/
|
|
100
|
+
async checkPersonalEmailStatus(profile: string): Promise<EmailStatusResponse> {
|
|
101
|
+
return this.client.get<EmailStatusResponse>('/v1/people/linkedin/personal_email_status', {
|
|
102
|
+
profile,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Check if work email is available for a LinkedIn profile
|
|
108
|
+
* @param profile - LinkedIn profile URL
|
|
109
|
+
* @returns Email availability and verification status
|
|
110
|
+
* @cost No credits consumed
|
|
111
|
+
* @access Paid users only
|
|
112
|
+
*/
|
|
113
|
+
async checkWorkEmailStatus(profile: string): Promise<EmailStatusResponse> {
|
|
114
|
+
return this.client.get<EmailStatusResponse>('/v1/people/linkedin/work_email_status', {
|
|
115
|
+
profile,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Check if phone number is available for a LinkedIn profile
|
|
121
|
+
* @param profile - LinkedIn profile URL
|
|
122
|
+
* @returns Boolean indicating if phone is available
|
|
123
|
+
* @cost No credits consumed
|
|
124
|
+
* @access Paid users only
|
|
125
|
+
*/
|
|
126
|
+
async checkPhoneStatus(profile: string): Promise<PhoneStatusResponse> {
|
|
127
|
+
return this.client.get<PhoneStatusResponse>('/v1/people/linkedin/phone_status', {
|
|
128
|
+
profile,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|