attio-mcp 0.1.0
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/CHANGELOG.md +62 -0
- package/LICENSE +236 -0
- package/README.md +105 -0
- package/dist/api/attio-client.d.ts +25 -0
- package/dist/api/attio-client.d.ts.map +1 -0
- package/dist/api/attio-client.js +64 -0
- package/dist/api/attio-client.js.map +1 -0
- package/dist/api/attribute-types.d.ts +119 -0
- package/dist/api/attribute-types.d.ts.map +1 -0
- package/dist/api/attribute-types.js +320 -0
- package/dist/api/attribute-types.js.map +1 -0
- package/dist/api/client.d.ts +3 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +61 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/operations/batch.d.ts +55 -0
- package/dist/api/operations/batch.d.ts.map +1 -0
- package/dist/api/operations/batch.js +176 -0
- package/dist/api/operations/batch.js.map +1 -0
- package/dist/api/operations/crud.d.ts +61 -0
- package/dist/api/operations/crud.d.ts.map +1 -0
- package/dist/api/operations/crud.js +192 -0
- package/dist/api/operations/crud.js.map +1 -0
- package/dist/api/operations/index.d.ts +14 -0
- package/dist/api/operations/index.d.ts.map +1 -0
- package/dist/api/operations/index.js +18 -0
- package/dist/api/operations/index.js.map +1 -0
- package/dist/api/operations/lists.d.ts +66 -0
- package/dist/api/operations/lists.d.ts.map +1 -0
- package/dist/api/operations/lists.js +300 -0
- package/dist/api/operations/lists.js.map +1 -0
- package/dist/api/operations/notes.d.ts +29 -0
- package/dist/api/operations/notes.d.ts.map +1 -0
- package/dist/api/operations/notes.js +63 -0
- package/dist/api/operations/notes.js.map +1 -0
- package/dist/api/operations/retry.d.ts +48 -0
- package/dist/api/operations/retry.d.ts.map +1 -0
- package/dist/api/operations/retry.js +98 -0
- package/dist/api/operations/retry.js.map +1 -0
- package/dist/api/operations/search.d.ts +37 -0
- package/dist/api/operations/search.d.ts.map +1 -0
- package/dist/api/operations/search.js +186 -0
- package/dist/api/operations/search.js.map +1 -0
- package/dist/api/operations/tasks.d.ts +20 -0
- package/dist/api/operations/tasks.d.ts.map +1 -0
- package/dist/api/operations/tasks.js +87 -0
- package/dist/api/operations/tasks.js.map +1 -0
- package/dist/api/operations/types.d.ts +61 -0
- package/dist/api/operations/types.d.ts.map +1 -0
- package/dist/api/operations/types.js +10 -0
- package/dist/api/operations/types.js.map +1 -0
- package/dist/cli/commands/attributes.d.ts +34 -0
- package/dist/cli/commands/attributes.d.ts.map +1 -0
- package/dist/cli/commands/attributes.js +171 -0
- package/dist/cli/commands/attributes.js.map +1 -0
- package/dist/cli/discover.d.ts +3 -0
- package/dist/cli/discover.d.ts.map +1 -0
- package/dist/cli/discover.js +72 -0
- package/dist/cli/discover.js.map +1 -0
- package/dist/errors/api-errors.d.ts +191 -0
- package/dist/errors/api-errors.d.ts.map +1 -0
- package/dist/errors/api-errors.js +305 -0
- package/dist/errors/api-errors.js.map +1 -0
- package/dist/errors/company-errors.d.ts +40 -0
- package/dist/errors/company-errors.d.ts.map +1 -0
- package/dist/errors/company-errors.js +62 -0
- package/dist/errors/company-errors.js.map +1 -0
- package/dist/errors/value-match-error.d.ts +15 -0
- package/dist/errors/value-match-error.d.ts.map +1 -0
- package/dist/errors/value-match-error.js +40 -0
- package/dist/errors/value-match-error.js.map +1 -0
- package/dist/handlers/error-interceptor.d.ts +6 -0
- package/dist/handlers/error-interceptor.d.ts.map +1 -0
- package/dist/handlers/error-interceptor.js +17 -0
- package/dist/handlers/error-interceptor.js.map +1 -0
- package/dist/handlers/rate-limited-handler.d.ts +17 -0
- package/dist/handlers/rate-limited-handler.d.ts.map +1 -0
- package/dist/handlers/rate-limited-handler.js +126 -0
- package/dist/handlers/rate-limited-handler.js.map +1 -0
- package/dist/handlers/resources.d.ts +11 -0
- package/dist/handlers/resources.d.ts.map +1 -0
- package/dist/handlers/resources.js +109 -0
- package/dist/handlers/resources.js.map +1 -0
- package/dist/handlers/tool-configs/companies/attributes.d.ts +85 -0
- package/dist/handlers/tool-configs/companies/attributes.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/attributes.js +203 -0
- package/dist/handlers/tool-configs/companies/attributes.js.map +1 -0
- package/dist/handlers/tool-configs/companies/batch.d.ts +145 -0
- package/dist/handlers/tool-configs/companies/batch.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/batch.js +249 -0
- package/dist/handlers/tool-configs/companies/batch.js.map +1 -0
- package/dist/handlers/tool-configs/companies/crud.d.ts +103 -0
- package/dist/handlers/tool-configs/companies/crud.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/crud.js +157 -0
- package/dist/handlers/tool-configs/companies/crud.js.map +1 -0
- package/dist/handlers/tool-configs/companies/definitions.d.ts +5 -0
- package/dist/handlers/tool-configs/companies/definitions.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/definitions.js +9 -0
- package/dist/handlers/tool-configs/companies/definitions.js.map +1 -0
- package/dist/handlers/tool-configs/companies/formatters.d.ts +42 -0
- package/dist/handlers/tool-configs/companies/formatters.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/formatters.js +324 -0
- package/dist/handlers/tool-configs/companies/formatters.js.map +1 -0
- package/dist/handlers/tool-configs/companies/index.d.ts +642 -0
- package/dist/handlers/tool-configs/companies/index.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/index.js +86 -0
- package/dist/handlers/tool-configs/companies/index.js.map +1 -0
- package/dist/handlers/tool-configs/companies/notes.d.ts +61 -0
- package/dist/handlers/tool-configs/companies/notes.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/notes.js +109 -0
- package/dist/handlers/tool-configs/companies/notes.js.map +1 -0
- package/dist/handlers/tool-configs/companies/relationships.d.ts +137 -0
- package/dist/handlers/tool-configs/companies/relationships.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/relationships.js +163 -0
- package/dist/handlers/tool-configs/companies/relationships.js.map +1 -0
- package/dist/handlers/tool-configs/companies/search.d.ts +101 -0
- package/dist/handlers/tool-configs/companies/search.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/search.js +163 -0
- package/dist/handlers/tool-configs/companies/search.js.map +1 -0
- package/dist/handlers/tool-configs/companies/types.d.ts +6 -0
- package/dist/handlers/tool-configs/companies/types.d.ts.map +1 -0
- package/dist/handlers/tool-configs/companies/types.js +2 -0
- package/dist/handlers/tool-configs/companies/types.js.map +1 -0
- package/dist/handlers/tool-configs/index.d.ts +12 -0
- package/dist/handlers/tool-configs/index.d.ts.map +1 -0
- package/dist/handlers/tool-configs/index.js +12 -0
- package/dist/handlers/tool-configs/index.js.map +1 -0
- package/dist/handlers/tool-configs/lists.d.ts +459 -0
- package/dist/handlers/tool-configs/lists.d.ts.map +1 -0
- package/dist/handlers/tool-configs/lists.js +597 -0
- package/dist/handlers/tool-configs/lists.js.map +1 -0
- package/dist/handlers/tool-configs/paginated-people.d.ts +197 -0
- package/dist/handlers/tool-configs/paginated-people.d.ts.map +1 -0
- package/dist/handlers/tool-configs/paginated-people.js +256 -0
- package/dist/handlers/tool-configs/paginated-people.js.map +1 -0
- package/dist/handlers/tool-configs/people/activity-search.d.ts +98 -0
- package/dist/handlers/tool-configs/people/activity-search.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/activity-search.js +113 -0
- package/dist/handlers/tool-configs/people/activity-search.js.map +1 -0
- package/dist/handlers/tool-configs/people/advanced-search.d.ts +62 -0
- package/dist/handlers/tool-configs/people/advanced-search.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/advanced-search.js +74 -0
- package/dist/handlers/tool-configs/people/advanced-search.js.map +1 -0
- package/dist/handlers/tool-configs/people/crud.d.ts +63 -0
- package/dist/handlers/tool-configs/people/crud.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/crud.js +71 -0
- package/dist/handlers/tool-configs/people/crud.js.map +1 -0
- package/dist/handlers/tool-configs/people/date-search.d.ts +42 -0
- package/dist/handlers/tool-configs/people/date-search.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/date-search.js +93 -0
- package/dist/handlers/tool-configs/people/date-search.js.map +1 -0
- package/dist/handlers/tool-configs/people/formatters.d.ts +19 -0
- package/dist/handlers/tool-configs/people/formatters.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/formatters.js +98 -0
- package/dist/handlers/tool-configs/people/formatters.js.map +1 -0
- package/dist/handlers/tool-configs/people/index.d.ts +407 -0
- package/dist/handlers/tool-configs/people/index.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/index.js +30 -0
- package/dist/handlers/tool-configs/people/index.js.map +1 -0
- package/dist/handlers/tool-configs/people/notes.d.ts +38 -0
- package/dist/handlers/tool-configs/people/notes.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/notes.js +57 -0
- package/dist/handlers/tool-configs/people/notes.js.map +1 -0
- package/dist/handlers/tool-configs/people/relationships.d.ts +112 -0
- package/dist/handlers/tool-configs/people/relationships.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/relationships.js +173 -0
- package/dist/handlers/tool-configs/people/relationships.js.map +1 -0
- package/dist/handlers/tool-configs/people/search.d.ts +53 -0
- package/dist/handlers/tool-configs/people/search.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people/search.js +61 -0
- package/dist/handlers/tool-configs/people/search.js.map +1 -0
- package/dist/handlers/tool-configs/people-fix-complete.d.ts +6 -0
- package/dist/handlers/tool-configs/people-fix-complete.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people-fix-complete.js +76 -0
- package/dist/handlers/tool-configs/people-fix-complete.js.map +1 -0
- package/dist/handlers/tool-configs/people-fixed.d.ts +12 -0
- package/dist/handlers/tool-configs/people-fixed.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people-fixed.js +58 -0
- package/dist/handlers/tool-configs/people-fixed.js.map +1 -0
- package/dist/handlers/tool-configs/people-types.d.ts +32 -0
- package/dist/handlers/tool-configs/people-types.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people-types.js +5 -0
- package/dist/handlers/tool-configs/people-types.js.map +1 -0
- package/dist/handlers/tool-configs/people.d.ts +599 -0
- package/dist/handlers/tool-configs/people.d.ts.map +1 -0
- package/dist/handlers/tool-configs/people.js +817 -0
- package/dist/handlers/tool-configs/people.js.map +1 -0
- package/dist/handlers/tool-configs/prompts.d.ts +69 -0
- package/dist/handlers/tool-configs/prompts.d.ts.map +1 -0
- package/dist/handlers/tool-configs/prompts.js +90 -0
- package/dist/handlers/tool-configs/prompts.js.map +1 -0
- package/dist/handlers/tool-configs/rate-limited-people.d.ts +203 -0
- package/dist/handlers/tool-configs/rate-limited-people.d.ts.map +1 -0
- package/dist/handlers/tool-configs/rate-limited-people.js +44 -0
- package/dist/handlers/tool-configs/rate-limited-people.js.map +1 -0
- package/dist/handlers/tool-configs/records/index.d.ts +282 -0
- package/dist/handlers/tool-configs/records/index.d.ts.map +1 -0
- package/dist/handlers/tool-configs/records/index.js +277 -0
- package/dist/handlers/tool-configs/records/index.js.map +1 -0
- package/dist/handlers/tool-configs/records.d.ts +282 -0
- package/dist/handlers/tool-configs/records.d.ts.map +1 -0
- package/dist/handlers/tool-configs/records.js +277 -0
- package/dist/handlers/tool-configs/records.js.map +1 -0
- package/dist/handlers/tool-configs/resource-specific-tools.d.ts +15 -0
- package/dist/handlers/tool-configs/resource-specific-tools.d.ts.map +1 -0
- package/dist/handlers/tool-configs/resource-specific-tools.js +33 -0
- package/dist/handlers/tool-configs/resource-specific-tools.js.map +1 -0
- package/dist/handlers/tool-configs/tasks.d.ts +127 -0
- package/dist/handlers/tool-configs/tasks.d.ts.map +1 -0
- package/dist/handlers/tool-configs/tasks.js +95 -0
- package/dist/handlers/tool-configs/tasks.js.map +1 -0
- package/dist/handlers/tool-types.d.ts +47 -0
- package/dist/handlers/tool-types.d.ts.map +1 -0
- package/dist/handlers/tool-types.js +2 -0
- package/dist/handlers/tool-types.js.map +1 -0
- package/dist/handlers/tools/config-verifier.d.ts +27 -0
- package/dist/handlers/tools/config-verifier.d.ts.map +1 -0
- package/dist/handlers/tools/config-verifier.js +108 -0
- package/dist/handlers/tools/config-verifier.js.map +1 -0
- package/dist/handlers/tools/dispatcher/core.d.ts +12 -0
- package/dist/handlers/tools/dispatcher/core.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/core.js +276 -0
- package/dist/handlers/tools/dispatcher/core.js.map +1 -0
- package/dist/handlers/tools/dispatcher/formatting.d.ts +17 -0
- package/dist/handlers/tools/dispatcher/formatting.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/formatting.js +25 -0
- package/dist/handlers/tools/dispatcher/formatting.js.map +1 -0
- package/dist/handlers/tools/dispatcher/logging.d.ts +63 -0
- package/dist/handlers/tools/dispatcher/logging.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/logging.js +108 -0
- package/dist/handlers/tools/dispatcher/logging.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/batch.d.ts +29 -0
- package/dist/handlers/tools/dispatcher/operations/batch.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/batch.js +137 -0
- package/dist/handlers/tools/dispatcher/operations/batch.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/crud.d.ts +25 -0
- package/dist/handlers/tools/dispatcher/operations/crud.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/crud.js +110 -0
- package/dist/handlers/tools/dispatcher/operations/crud.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/details.d.ts +13 -0
- package/dist/handlers/tools/dispatcher/operations/details.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/details.js +52 -0
- package/dist/handlers/tools/dispatcher/operations/details.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/info.d.ts +25 -0
- package/dist/handlers/tools/dispatcher/operations/info.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/info.js +82 -0
- package/dist/handlers/tools/dispatcher/operations/info.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/lists.d.ts +62 -0
- package/dist/handlers/tools/dispatcher/operations/lists.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/lists.js +283 -0
- package/dist/handlers/tools/dispatcher/operations/lists.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/notes.d.ts +17 -0
- package/dist/handlers/tools/dispatcher/operations/notes.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/notes.js +102 -0
- package/dist/handlers/tools/dispatcher/operations/notes.js.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/search.d.ts +43 -0
- package/dist/handlers/tools/dispatcher/operations/search.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/operations/search.js +190 -0
- package/dist/handlers/tools/dispatcher/operations/search.js.map +1 -0
- package/dist/handlers/tools/dispatcher/validation.d.ts +27 -0
- package/dist/handlers/tools/dispatcher/validation.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher/validation.js +47 -0
- package/dist/handlers/tools/dispatcher/validation.js.map +1 -0
- package/dist/handlers/tools/dispatcher.d.ts +11 -0
- package/dist/handlers/tools/dispatcher.d.ts.map +1 -0
- package/dist/handlers/tools/dispatcher.js +15 -0
- package/dist/handlers/tools/dispatcher.js.map +1 -0
- package/dist/handlers/tools/error-types.d.ts +33 -0
- package/dist/handlers/tools/error-types.d.ts.map +1 -0
- package/dist/handlers/tools/error-types.js +21 -0
- package/dist/handlers/tools/error-types.js.map +1 -0
- package/dist/handlers/tools/formatters.d.ts +43 -0
- package/dist/handlers/tools/formatters.d.ts.map +1 -0
- package/dist/handlers/tools/formatters.js +170 -0
- package/dist/handlers/tools/formatters.js.map +1 -0
- package/dist/handlers/tools/index.d.ts +15 -0
- package/dist/handlers/tools/index.d.ts.map +1 -0
- package/dist/handlers/tools/index.js +34 -0
- package/dist/handlers/tools/index.js.map +1 -0
- package/dist/handlers/tools/registry.d.ts +1874 -0
- package/dist/handlers/tools/registry.d.ts.map +1 -0
- package/dist/handlers/tools/registry.js +103 -0
- package/dist/handlers/tools/registry.js.map +1 -0
- package/dist/health/http-server.d.ts +24 -0
- package/dist/health/http-server.d.ts.map +1 -0
- package/dist/health/http-server.js +106 -0
- package/dist/health/http-server.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +238 -0
- package/dist/index.js.map +1 -0
- package/dist/objects/base-operations.d.ts +41 -0
- package/dist/objects/base-operations.d.ts.map +1 -0
- package/dist/objects/base-operations.js +116 -0
- package/dist/objects/base-operations.js.map +1 -0
- package/dist/objects/batch-companies.d.ts +112 -0
- package/dist/objects/batch-companies.d.ts.map +1 -0
- package/dist/objects/batch-companies.js +347 -0
- package/dist/objects/batch-companies.js.map +1 -0
- package/dist/objects/companies/attributes.d.ts +83 -0
- package/dist/objects/companies/attributes.d.ts.map +1 -0
- package/dist/objects/companies/attributes.js +426 -0
- package/dist/objects/companies/attributes.js.map +1 -0
- package/dist/objects/companies/basic.d.ts +117 -0
- package/dist/objects/companies/basic.d.ts.map +1 -0
- package/dist/objects/companies/basic.js +367 -0
- package/dist/objects/companies/basic.js.map +1 -0
- package/dist/objects/companies/batch.d.ts +6 -0
- package/dist/objects/companies/batch.d.ts.map +1 -0
- package/dist/objects/companies/batch.js +6 -0
- package/dist/objects/companies/batch.js.map +1 -0
- package/dist/objects/companies/index.d.ts +13 -0
- package/dist/objects/companies/index.d.ts.map +1 -0
- package/dist/objects/companies/index.js +17 -0
- package/dist/objects/companies/index.js.map +1 -0
- package/dist/objects/companies/notes.d.ts +26 -0
- package/dist/objects/companies/notes.d.ts.map +1 -0
- package/dist/objects/companies/notes.js +199 -0
- package/dist/objects/companies/notes.js.map +1 -0
- package/dist/objects/companies/relationships.d.ts +41 -0
- package/dist/objects/companies/relationships.d.ts.map +1 -0
- package/dist/objects/companies/relationships.js +142 -0
- package/dist/objects/companies/relationships.js.map +1 -0
- package/dist/objects/companies/search.d.ts +158 -0
- package/dist/objects/companies/search.d.ts.map +1 -0
- package/dist/objects/companies/search.js +463 -0
- package/dist/objects/companies/search.js.map +1 -0
- package/dist/objects/companies/types.d.ts +27 -0
- package/dist/objects/companies/types.d.ts.map +1 -0
- package/dist/objects/companies/types.js +3 -0
- package/dist/objects/companies/types.js.map +1 -0
- package/dist/objects/lists.d.ts +148 -0
- package/dist/objects/lists.d.ts.map +1 -0
- package/dist/objects/lists.js +586 -0
- package/dist/objects/lists.js.map +1 -0
- package/dist/objects/paginated-people.d.ts +50 -0
- package/dist/objects/paginated-people.d.ts.map +1 -0
- package/dist/objects/paginated-people.js +171 -0
- package/dist/objects/paginated-people.js.map +1 -0
- package/dist/objects/people/basic.d.ts +90 -0
- package/dist/objects/people/basic.d.ts.map +1 -0
- package/dist/objects/people/basic.js +157 -0
- package/dist/objects/people/basic.js.map +1 -0
- package/dist/objects/people/batch.d.ts +24 -0
- package/dist/objects/people/batch.d.ts.map +1 -0
- package/dist/objects/people/batch.js +145 -0
- package/dist/objects/people/batch.js.map +1 -0
- package/dist/objects/people/index.d.ts +11 -0
- package/dist/objects/people/index.d.ts.map +1 -0
- package/dist/objects/people/index.js +17 -0
- package/dist/objects/people/index.js.map +1 -0
- package/dist/objects/people/notes.d.ts +20 -0
- package/dist/objects/people/notes.d.ts.map +1 -0
- package/dist/objects/people/notes.js +60 -0
- package/dist/objects/people/notes.js.map +1 -0
- package/dist/objects/people/relationships.d.ts +23 -0
- package/dist/objects/people/relationships.d.ts.map +1 -0
- package/dist/objects/people/relationships.js +116 -0
- package/dist/objects/people/relationships.js.map +1 -0
- package/dist/objects/people/search.d.ts +83 -0
- package/dist/objects/people/search.d.ts.map +1 -0
- package/dist/objects/people/search.js +286 -0
- package/dist/objects/people/search.js.map +1 -0
- package/dist/objects/people/types.d.ts +37 -0
- package/dist/objects/people/types.d.ts.map +1 -0
- package/dist/objects/people/types.js +71 -0
- package/dist/objects/people/types.js.map +1 -0
- package/dist/objects/people-write.d.ts +71 -0
- package/dist/objects/people-write.d.ts.map +1 -0
- package/dist/objects/people-write.js +261 -0
- package/dist/objects/people-write.js.map +1 -0
- package/dist/objects/records/formatters.d.ts +20 -0
- package/dist/objects/records/formatters.d.ts.map +1 -0
- package/dist/objects/records/formatters.js +47 -0
- package/dist/objects/records/formatters.js.map +1 -0
- package/dist/objects/records/index.d.ts +74 -0
- package/dist/objects/records/index.d.ts.map +1 -0
- package/dist/objects/records/index.js +374 -0
- package/dist/objects/records/index.js.map +1 -0
- package/dist/objects/records.d.ts +88 -0
- package/dist/objects/records.d.ts.map +1 -0
- package/dist/objects/records.js +432 -0
- package/dist/objects/records.js.map +1 -0
- package/dist/objects/tasks.d.ts +19 -0
- package/dist/objects/tasks.d.ts.map +1 -0
- package/dist/objects/tasks.js +23 -0
- package/dist/objects/tasks.js.map +1 -0
- package/dist/prompts/error-handler.d.ts +28 -0
- package/dist/prompts/error-handler.d.ts.map +1 -0
- package/dist/prompts/error-handler.js +47 -0
- package/dist/prompts/error-handler.js.map +1 -0
- package/dist/prompts/handlers.d.ts +49 -0
- package/dist/prompts/handlers.d.ts.map +1 -0
- package/dist/prompts/handlers.js +353 -0
- package/dist/prompts/handlers.js.map +1 -0
- package/dist/prompts/index.d.ts +11 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +15 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/templates/companies.d.ts +10 -0
- package/dist/prompts/templates/companies.d.ts.map +1 -0
- package/dist/prompts/templates/companies.js +128 -0
- package/dist/prompts/templates/companies.js.map +1 -0
- package/dist/prompts/templates/index.d.ts +42 -0
- package/dist/prompts/templates/index.d.ts.map +1 -0
- package/dist/prompts/templates/index.js +58 -0
- package/dist/prompts/templates/index.js.map +1 -0
- package/dist/prompts/templates/lists.d.ts +10 -0
- package/dist/prompts/templates/lists.d.ts.map +1 -0
- package/dist/prompts/templates/lists.js +127 -0
- package/dist/prompts/templates/lists.js.map +1 -0
- package/dist/prompts/templates/notes.d.ts +10 -0
- package/dist/prompts/templates/notes.d.ts.map +1 -0
- package/dist/prompts/templates/notes.js +119 -0
- package/dist/prompts/templates/notes.js.map +1 -0
- package/dist/prompts/templates/people.d.ts +10 -0
- package/dist/prompts/templates/people.d.ts.map +1 -0
- package/dist/prompts/templates/people.js +127 -0
- package/dist/prompts/templates/people.js.map +1 -0
- package/dist/prompts/types.d.ts +52 -0
- package/dist/prompts/types.d.ts.map +1 -0
- package/dist/prompts/types.js +5 -0
- package/dist/prompts/types.js.map +1 -0
- package/dist/types/attio.d.ts +424 -0
- package/dist/types/attio.d.ts.map +1 -0
- package/dist/types/attio.js +116 -0
- package/dist/types/attio.js.map +1 -0
- package/dist/types/company-types.d.ts +52 -0
- package/dist/types/company-types.d.ts.map +1 -0
- package/dist/types/company-types.js +5 -0
- package/dist/types/company-types.js.map +1 -0
- package/dist/types/tool-types.d.ts +262 -0
- package/dist/types/tool-types.d.ts.map +1 -0
- package/dist/types/tool-types.js +6 -0
- package/dist/types/tool-types.js.map +1 -0
- package/dist/utils/api-fallback.d.ts +39 -0
- package/dist/utils/api-fallback.d.ts.map +1 -0
- package/dist/utils/api-fallback.js +94 -0
- package/dist/utils/api-fallback.js.map +1 -0
- package/dist/utils/attribute-mapping/attribute-mappers.d.ts +39 -0
- package/dist/utils/attribute-mapping/attribute-mappers.d.ts.map +1 -0
- package/dist/utils/attribute-mapping/attribute-mappers.js +394 -0
- package/dist/utils/attribute-mapping/attribute-mappers.js.map +1 -0
- package/dist/utils/attribute-mapping/filter-translator.d.ts +9 -0
- package/dist/utils/attribute-mapping/filter-translator.d.ts.map +1 -0
- package/dist/utils/attribute-mapping/filter-translator.js +104 -0
- package/dist/utils/attribute-mapping/filter-translator.js.map +1 -0
- package/dist/utils/attribute-mapping/index.d.ts +10 -0
- package/dist/utils/attribute-mapping/index.d.ts.map +1 -0
- package/dist/utils/attribute-mapping/index.js +12 -0
- package/dist/utils/attribute-mapping/index.js.map +1 -0
- package/dist/utils/attribute-mapping/legacy-maps.d.ts +11 -0
- package/dist/utils/attribute-mapping/legacy-maps.d.ts.map +1 -0
- package/dist/utils/attribute-mapping/legacy-maps.js +54 -0
- package/dist/utils/attribute-mapping/legacy-maps.js.map +1 -0
- package/dist/utils/attribute-mapping/mapping-utils.d.ts +90 -0
- package/dist/utils/attribute-mapping/mapping-utils.d.ts.map +1 -0
- package/dist/utils/attribute-mapping/mapping-utils.js +145 -0
- package/dist/utils/attribute-mapping/mapping-utils.js.map +1 -0
- package/dist/utils/auto-discovery.d.ts +22 -0
- package/dist/utils/auto-discovery.d.ts.map +1 -0
- package/dist/utils/auto-discovery.js +143 -0
- package/dist/utils/auto-discovery.js.map +1 -0
- package/dist/utils/cli-colors.d.ts +36 -0
- package/dist/utils/cli-colors.d.ts.map +1 -0
- package/dist/utils/cli-colors.js +35 -0
- package/dist/utils/cli-colors.js.map +1 -0
- package/dist/utils/config-loader.d.ts +41 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +167 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/config-migration.d.ts +140 -0
- package/dist/utils/config-migration.d.ts.map +1 -0
- package/dist/utils/config-migration.js +310 -0
- package/dist/utils/config-migration.js.map +1 -0
- package/dist/utils/date-utils.d.ts +63 -0
- package/dist/utils/date-utils.d.ts.map +1 -0
- package/dist/utils/date-utils.js +329 -0
- package/dist/utils/date-utils.js.map +1 -0
- package/dist/utils/debug-b2b-segment.d.ts +2 -0
- package/dist/utils/debug-b2b-segment.d.ts.map +1 -0
- package/dist/utils/debug-b2b-segment.js +67 -0
- package/dist/utils/debug-b2b-segment.js.map +1 -0
- package/dist/utils/domain-utils.d.ts +46 -0
- package/dist/utils/domain-utils.d.ts.map +1 -0
- package/dist/utils/domain-utils.js +143 -0
- package/dist/utils/domain-utils.js.map +1 -0
- package/dist/utils/dynamic-import.d.ts +33 -0
- package/dist/utils/dynamic-import.d.ts.map +1 -0
- package/dist/utils/dynamic-import.js +41 -0
- package/dist/utils/dynamic-import.js.map +1 -0
- package/dist/utils/error-enhancer.d.ts +23 -0
- package/dist/utils/error-enhancer.d.ts.map +1 -0
- package/dist/utils/error-enhancer.js +188 -0
- package/dist/utils/error-enhancer.js.map +1 -0
- package/dist/utils/error-handler.d.ts +89 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +336 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/filters/builders/activity.d.ts +13 -0
- package/dist/utils/filters/builders/activity.d.ts.map +1 -0
- package/dist/utils/filters/builders/activity.js +65 -0
- package/dist/utils/filters/builders/activity.js.map +1 -0
- package/dist/utils/filters/builders/basic.d.ts +13 -0
- package/dist/utils/filters/builders/basic.d.ts.map +1 -0
- package/dist/utils/filters/builders/basic.js +36 -0
- package/dist/utils/filters/builders/basic.js.map +1 -0
- package/dist/utils/filters/builders/complex.d.ts +31 -0
- package/dist/utils/filters/builders/complex.d.ts.map +1 -0
- package/dist/utils/filters/builders/complex.js +92 -0
- package/dist/utils/filters/builders/complex.js.map +1 -0
- package/dist/utils/filters/builders/date.d.ts +17 -0
- package/dist/utils/filters/builders/date.d.ts.map +1 -0
- package/dist/utils/filters/builders/date.js +51 -0
- package/dist/utils/filters/builders/date.js.map +1 -0
- package/dist/utils/filters/builders/index.d.ts +8 -0
- package/dist/utils/filters/builders/index.d.ts.map +1 -0
- package/dist/utils/filters/builders/index.js +8 -0
- package/dist/utils/filters/builders/index.js.map +1 -0
- package/dist/utils/filters/builders/numeric.d.ts +17 -0
- package/dist/utils/filters/builders/numeric.d.ts.map +1 -0
- package/dist/utils/filters/builders/numeric.js +61 -0
- package/dist/utils/filters/builders/numeric.js.map +1 -0
- package/dist/utils/filters/builders/text.d.ts +17 -0
- package/dist/utils/filters/builders/text.d.ts.map +1 -0
- package/dist/utils/filters/builders/text.js +47 -0
- package/dist/utils/filters/builders/text.js.map +1 -0
- package/dist/utils/filters/builders/types.d.ts +2 -0
- package/dist/utils/filters/builders/types.d.ts.map +1 -0
- package/dist/utils/filters/builders/types.js +2 -0
- package/dist/utils/filters/builders/types.js.map +1 -0
- package/dist/utils/filters/builders.d.ts +2 -0
- package/dist/utils/filters/builders.d.ts.map +1 -0
- package/dist/utils/filters/builders.js +2 -0
- package/dist/utils/filters/builders.js.map +1 -0
- package/dist/utils/filters/cache.d.ts +80 -0
- package/dist/utils/filters/cache.d.ts.map +1 -0
- package/dist/utils/filters/cache.js +212 -0
- package/dist/utils/filters/cache.js.map +1 -0
- package/dist/utils/filters/index.d.ts +51 -0
- package/dist/utils/filters/index.d.ts.map +1 -0
- package/dist/utils/filters/index.js +67 -0
- package/dist/utils/filters/index.js.map +1 -0
- package/dist/utils/filters/operators.d.ts +65 -0
- package/dist/utils/filters/operators.d.ts.map +1 -0
- package/dist/utils/filters/operators.js +214 -0
- package/dist/utils/filters/operators.js.map +1 -0
- package/dist/utils/filters/relationship.d.ts +81 -0
- package/dist/utils/filters/relationship.d.ts.map +1 -0
- package/dist/utils/filters/relationship.js +393 -0
- package/dist/utils/filters/relationship.js.map +1 -0
- package/dist/utils/filters/translators.d.ts +120 -0
- package/dist/utils/filters/translators.d.ts.map +1 -0
- package/dist/utils/filters/translators.js +397 -0
- package/dist/utils/filters/translators.js.map +1 -0
- package/dist/utils/filters/types.d.ts +77 -0
- package/dist/utils/filters/types.d.ts.map +1 -0
- package/dist/utils/filters/types.js +85 -0
- package/dist/utils/filters/types.js.map +1 -0
- package/dist/utils/filters/utils.d.ts +86 -0
- package/dist/utils/filters/utils.d.ts.map +1 -0
- package/dist/utils/filters/utils.js +142 -0
- package/dist/utils/filters/utils.js.map +1 -0
- package/dist/utils/filters/validation-utils.d.ts +123 -0
- package/dist/utils/filters/validation-utils.d.ts.map +1 -0
- package/dist/utils/filters/validation-utils.js +282 -0
- package/dist/utils/filters/validation-utils.js.map +1 -0
- package/dist/utils/filters/validators.d.ts +73 -0
- package/dist/utils/filters/validators.d.ts.map +1 -0
- package/dist/utils/filters/validators.js +311 -0
- package/dist/utils/filters/validators.js.map +1 -0
- package/dist/utils/json-serializer.d.ts +68 -0
- package/dist/utils/json-serializer.d.ts.map +1 -0
- package/dist/utils/json-serializer.js +235 -0
- package/dist/utils/json-serializer.js.map +1 -0
- package/dist/utils/logger.d.ts +226 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +323 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/numeric-utils.d.ts +27 -0
- package/dist/utils/numeric-utils.d.ts.map +1 -0
- package/dist/utils/numeric-utils.js +83 -0
- package/dist/utils/numeric-utils.js.map +1 -0
- package/dist/utils/pagination.d.ts +85 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/pagination.js +169 -0
- package/dist/utils/pagination.js.map +1 -0
- package/dist/utils/person-lookup.d.ts +35 -0
- package/dist/utils/person-lookup.d.ts.map +1 -0
- package/dist/utils/person-lookup.js +67 -0
- package/dist/utils/person-lookup.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +82 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +159 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/record-utils.d.ts +74 -0
- package/dist/utils/record-utils.d.ts.map +1 -0
- package/dist/utils/record-utils.js +312 -0
- package/dist/utils/record-utils.js.map +1 -0
- package/dist/utils/relationship-utils.d.ts +61 -0
- package/dist/utils/relationship-utils.d.ts.map +1 -0
- package/dist/utils/relationship-utils.js +242 -0
- package/dist/utils/relationship-utils.js.map +1 -0
- package/dist/utils/response-formatter.d.ts +121 -0
- package/dist/utils/response-formatter.d.ts.map +1 -0
- package/dist/utils/response-formatter.js +188 -0
- package/dist/utils/response-formatter.js.map +1 -0
- package/dist/utils/uri-parser.d.ts +18 -0
- package/dist/utils/uri-parser.d.ts.map +1 -0
- package/dist/utils/uri-parser.js +31 -0
- package/dist/utils/uri-parser.js.map +1 -0
- package/dist/utils/validation.d.ts +59 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +264 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/utils/value-matcher.d.ts +58 -0
- package/dist/utils/value-matcher.d.ts.map +1 -0
- package/dist/utils/value-matcher.js +131 -0
- package/dist/utils/value-matcher.js.map +1 -0
- package/dist/validators/attribute-validator.d.ts +59 -0
- package/dist/validators/attribute-validator.d.ts.map +1 -0
- package/dist/validators/attribute-validator.js +531 -0
- package/dist/validators/attribute-validator.js.map +1 -0
- package/dist/validators/company/field_detector.d.ts +5 -0
- package/dist/validators/company/field_detector.d.ts.map +1 -0
- package/dist/validators/company/field_detector.js +95 -0
- package/dist/validators/company/field_detector.js.map +1 -0
- package/dist/validators/company/index.d.ts +26 -0
- package/dist/validators/company/index.d.ts.map +1 -0
- package/dist/validators/company/index.js +433 -0
- package/dist/validators/company/index.js.map +1 -0
- package/dist/validators/company/type_cache.d.ts +14 -0
- package/dist/validators/company/type_cache.d.ts.map +1 -0
- package/dist/validators/company/type_cache.js +28 -0
- package/dist/validators/company/type_cache.js.map +1 -0
- package/dist/validators/company/types.d.ts +8 -0
- package/dist/validators/company/types.d.ts.map +1 -0
- package/dist/validators/company/types.js +2 -0
- package/dist/validators/company/types.js.map +1 -0
- package/dist/validators/company-validator.d.ts +2 -0
- package/dist/validators/company-validator.d.ts.map +1 -0
- package/dist/validators/company-validator.js +2 -0
- package/dist/validators/company-validator.js.map +1 -0
- package/package.json +167 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attribute type detection and management for Attio attributes
|
|
3
|
+
*/
|
|
4
|
+
import { getAttioClient } from './attio-client.js';
|
|
5
|
+
/**
|
|
6
|
+
* Cache for attribute metadata to avoid repeated API calls
|
|
7
|
+
*/
|
|
8
|
+
const attributeCache = new Map();
|
|
9
|
+
/**
|
|
10
|
+
* Fetches and caches attribute metadata for a specific object type
|
|
11
|
+
*
|
|
12
|
+
* @param objectSlug - The object type (e.g., 'companies', 'people')
|
|
13
|
+
* @returns Map of attribute slug to metadata
|
|
14
|
+
*/
|
|
15
|
+
export async function getObjectAttributeMetadata(objectSlug) {
|
|
16
|
+
// Check cache first
|
|
17
|
+
if (attributeCache.has(objectSlug)) {
|
|
18
|
+
return attributeCache.get(objectSlug);
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const api = getAttioClient();
|
|
22
|
+
const response = await api.get(`/objects/${objectSlug}/attributes`);
|
|
23
|
+
const attributes = response.data.data || [];
|
|
24
|
+
// Build metadata map
|
|
25
|
+
const metadataMap = new Map();
|
|
26
|
+
attributes.forEach((attr) => {
|
|
27
|
+
if (attr.api_slug) {
|
|
28
|
+
metadataMap.set(attr.api_slug, attr);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
// Cache the result
|
|
32
|
+
attributeCache.set(objectSlug, metadataMap);
|
|
33
|
+
return metadataMap;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
console.error(`Failed to fetch attributes for ${objectSlug}:`, error);
|
|
37
|
+
// Return empty map on error
|
|
38
|
+
return new Map();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Detects the field type of a specific attribute
|
|
43
|
+
*
|
|
44
|
+
* @param objectSlug - The object type (e.g., 'companies', 'people')
|
|
45
|
+
* @param attributeSlug - The attribute slug (e.g., 'name', 'products')
|
|
46
|
+
* @returns The detected field type
|
|
47
|
+
*/
|
|
48
|
+
export async function detectFieldType(objectSlug, attributeSlug) {
|
|
49
|
+
const metadata = await getObjectAttributeMetadata(objectSlug);
|
|
50
|
+
const attrMetadata = metadata.get(attributeSlug);
|
|
51
|
+
if (!attrMetadata) {
|
|
52
|
+
// Default to 'string' if metadata not found
|
|
53
|
+
return 'string';
|
|
54
|
+
}
|
|
55
|
+
// Map Attio types to our internal types
|
|
56
|
+
const isMultiple = attrMetadata.is_multiselect || attrMetadata.allow_multiple_values;
|
|
57
|
+
switch (attrMetadata.type) {
|
|
58
|
+
case 'text':
|
|
59
|
+
case 'email':
|
|
60
|
+
case 'url':
|
|
61
|
+
case 'phone-number':
|
|
62
|
+
return isMultiple ? 'array' : 'string';
|
|
63
|
+
case 'select':
|
|
64
|
+
// For select fields, check if multiselect is enabled
|
|
65
|
+
return isMultiple ? 'array' : 'string';
|
|
66
|
+
case 'record-reference':
|
|
67
|
+
return isMultiple ? 'array' : 'object';
|
|
68
|
+
case 'number':
|
|
69
|
+
case 'currency':
|
|
70
|
+
return isMultiple ? 'array' : 'number';
|
|
71
|
+
case 'checkbox':
|
|
72
|
+
case 'boolean':
|
|
73
|
+
return 'boolean';
|
|
74
|
+
case 'date':
|
|
75
|
+
case 'datetime':
|
|
76
|
+
case 'timestamp':
|
|
77
|
+
return attrMetadata.is_multiselect ? 'array' : 'string';
|
|
78
|
+
case 'actor-reference':
|
|
79
|
+
case 'workspace-member':
|
|
80
|
+
return attrMetadata.is_multiselect ? 'array' : 'string';
|
|
81
|
+
case 'domain':
|
|
82
|
+
case 'location':
|
|
83
|
+
return attrMetadata.is_multiselect ? 'array' : 'object';
|
|
84
|
+
case 'interaction':
|
|
85
|
+
return 'object';
|
|
86
|
+
default:
|
|
87
|
+
// Default to array if multiple values allowed, otherwise string
|
|
88
|
+
return attrMetadata.is_multiselect ? 'array' : 'string';
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Gets detailed type information for an attribute
|
|
93
|
+
*
|
|
94
|
+
* @param objectSlug - The object type
|
|
95
|
+
* @param attributeSlug - The attribute slug
|
|
96
|
+
* @returns Detailed type information
|
|
97
|
+
*/
|
|
98
|
+
export async function getAttributeTypeInfo(objectSlug, attributeSlug) {
|
|
99
|
+
const metadata = await getObjectAttributeMetadata(objectSlug);
|
|
100
|
+
const attrMetadata = metadata.get(attributeSlug);
|
|
101
|
+
if (!attrMetadata) {
|
|
102
|
+
return {
|
|
103
|
+
fieldType: 'string',
|
|
104
|
+
isArray: false,
|
|
105
|
+
isRequired: false,
|
|
106
|
+
isUnique: false,
|
|
107
|
+
attioType: 'unknown',
|
|
108
|
+
metadata: null,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const fieldType = await detectFieldType(objectSlug, attributeSlug);
|
|
112
|
+
return {
|
|
113
|
+
fieldType,
|
|
114
|
+
isArray: attrMetadata.is_multiselect || false,
|
|
115
|
+
isRequired: attrMetadata.is_required || false,
|
|
116
|
+
isUnique: attrMetadata.is_unique || false,
|
|
117
|
+
attioType: attrMetadata.type,
|
|
118
|
+
metadata: attrMetadata,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Clears the attribute cache for a specific object type or all types
|
|
123
|
+
*
|
|
124
|
+
* @param objectSlug - Optional object type to clear (clears all if not provided)
|
|
125
|
+
*/
|
|
126
|
+
export function clearAttributeCache(objectSlug) {
|
|
127
|
+
if (objectSlug) {
|
|
128
|
+
attributeCache.delete(objectSlug);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
attributeCache.clear();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Looks up the API slug for an attribute by its ID
|
|
136
|
+
*
|
|
137
|
+
* @param objectSlug - The object type
|
|
138
|
+
* @param attributeId - The attribute's unique ID
|
|
139
|
+
* @returns The corresponding slug or null if not found
|
|
140
|
+
*/
|
|
141
|
+
export async function getAttributeSlugById(objectSlug, attributeId) {
|
|
142
|
+
const metadata = await getObjectAttributeMetadata(objectSlug);
|
|
143
|
+
for (const [slug, attr] of metadata.entries()) {
|
|
144
|
+
if (attr.id.attribute_id === attributeId) {
|
|
145
|
+
return slug;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Gets field validation rules based on attribute metadata
|
|
152
|
+
*
|
|
153
|
+
* @param objectSlug - The object type
|
|
154
|
+
* @param attributeSlug - The attribute slug
|
|
155
|
+
* @returns Validation rules for the field
|
|
156
|
+
*/
|
|
157
|
+
export async function getFieldValidationRules(objectSlug, attributeSlug) {
|
|
158
|
+
const typeInfo = await getAttributeTypeInfo(objectSlug, attributeSlug);
|
|
159
|
+
const rules = {
|
|
160
|
+
type: typeInfo.fieldType,
|
|
161
|
+
required: typeInfo.isRequired,
|
|
162
|
+
unique: typeInfo.isUnique,
|
|
163
|
+
allowMultiple: typeInfo.isArray,
|
|
164
|
+
};
|
|
165
|
+
// Add specific validation rules based on Attio type
|
|
166
|
+
if (typeInfo.metadata) {
|
|
167
|
+
switch (typeInfo.attioType) {
|
|
168
|
+
case 'email':
|
|
169
|
+
rules.pattern = '^[^@]+@[^@]+\\.[^@]+$';
|
|
170
|
+
break;
|
|
171
|
+
case 'url':
|
|
172
|
+
rules.pattern = '^https?://';
|
|
173
|
+
break;
|
|
174
|
+
case 'phone_number':
|
|
175
|
+
rules.pattern = '^\\+?[0-9-()\\s]+$';
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
// Add enum values for select fields
|
|
179
|
+
const config = typeInfo.metadata.config;
|
|
180
|
+
if (typeInfo.attioType === 'select' && config?.options) {
|
|
181
|
+
rules.enum = config.options.map((opt) => opt.value);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return rules;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Formats an attribute value according to Attio's expected format
|
|
188
|
+
*
|
|
189
|
+
* @param objectSlug - The object type
|
|
190
|
+
* @param attributeSlug - The attribute slug
|
|
191
|
+
* @param value - The raw value to format
|
|
192
|
+
* @returns The formatted value in Attio's expected structure
|
|
193
|
+
*/
|
|
194
|
+
export async function formatAttributeValue(objectSlug, attributeSlug, value) {
|
|
195
|
+
const typeInfo = await getAttributeTypeInfo(objectSlug, attributeSlug);
|
|
196
|
+
// Handle null/undefined values
|
|
197
|
+
if (value === null || value === undefined) {
|
|
198
|
+
// If the attribute is an array type, clearing it means sending an empty array.
|
|
199
|
+
// Otherwise, send null.
|
|
200
|
+
const returnValue = typeInfo.isArray ? [] : null;
|
|
201
|
+
return returnValue;
|
|
202
|
+
}
|
|
203
|
+
// Different field types need different formatting
|
|
204
|
+
switch (typeInfo.attioType) {
|
|
205
|
+
case 'select':
|
|
206
|
+
// Select fields expect direct string values (title or ID)
|
|
207
|
+
if (typeInfo.isArray) {
|
|
208
|
+
// Multiselect: array of strings
|
|
209
|
+
const arrayValue = Array.isArray(value) ? value : [value];
|
|
210
|
+
return arrayValue;
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
// Single select: direct string
|
|
214
|
+
return value;
|
|
215
|
+
}
|
|
216
|
+
case 'text':
|
|
217
|
+
// Text fields for people object don't need wrapping for certain slugs
|
|
218
|
+
if (objectSlug === 'people' &&
|
|
219
|
+
(attributeSlug === 'name' ||
|
|
220
|
+
attributeSlug === 'job_title' ||
|
|
221
|
+
attributeSlug === 'first_name' ||
|
|
222
|
+
attributeSlug === 'last_name')) {
|
|
223
|
+
return value;
|
|
224
|
+
}
|
|
225
|
+
// Other text fields need wrapped values if not array, or array of wrapped if array
|
|
226
|
+
if (typeInfo.isArray) {
|
|
227
|
+
const arrayValue = Array.isArray(value) ? value : [value];
|
|
228
|
+
return arrayValue.map((v) => ({ value: v }));
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
return { value };
|
|
232
|
+
}
|
|
233
|
+
case 'personal-name':
|
|
234
|
+
// Personal name fields don't need value wrapping
|
|
235
|
+
return value;
|
|
236
|
+
case 'url':
|
|
237
|
+
// URL fields need wrapped values
|
|
238
|
+
if (typeInfo.isArray) {
|
|
239
|
+
const arrayValue = Array.isArray(value) ? value : [value];
|
|
240
|
+
return arrayValue.map((v) => ({ value: v }));
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
return { value };
|
|
244
|
+
}
|
|
245
|
+
case 'phone-number':
|
|
246
|
+
// Phone fields are like email - array but no value wrapping
|
|
247
|
+
if (typeInfo.isArray) {
|
|
248
|
+
const arrayValue = Array.isArray(value) ? value : [value];
|
|
249
|
+
return arrayValue;
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
return value;
|
|
253
|
+
}
|
|
254
|
+
case 'email-address':
|
|
255
|
+
// Email is an array field but doesn't need value wrapping
|
|
256
|
+
const emails = Array.isArray(value) ? value : [value];
|
|
257
|
+
return emails;
|
|
258
|
+
case 'domain':
|
|
259
|
+
// Domain fields are like email - array but no value wrapping
|
|
260
|
+
if (typeInfo.isArray) {
|
|
261
|
+
const arrayValue = Array.isArray(value) ? value : [value];
|
|
262
|
+
return arrayValue;
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
return value;
|
|
266
|
+
}
|
|
267
|
+
case 'number':
|
|
268
|
+
case 'currency':
|
|
269
|
+
// Numeric fields
|
|
270
|
+
if (typeInfo.isArray) {
|
|
271
|
+
const arrayValue = Array.isArray(value) ? value : [value];
|
|
272
|
+
return arrayValue.map((v) => ({ value: v }));
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
return { value };
|
|
276
|
+
}
|
|
277
|
+
case 'checkbox':
|
|
278
|
+
case 'boolean':
|
|
279
|
+
// Boolean fields - direct value
|
|
280
|
+
return value;
|
|
281
|
+
case 'date':
|
|
282
|
+
case 'datetime':
|
|
283
|
+
case 'timestamp':
|
|
284
|
+
// Date fields - wrapped values
|
|
285
|
+
if (typeInfo.isArray) {
|
|
286
|
+
const arrayValue = Array.isArray(value) ? value : [value];
|
|
287
|
+
return arrayValue.map((v) => ({ value: v }));
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
return { value };
|
|
291
|
+
}
|
|
292
|
+
default:
|
|
293
|
+
// Default: wrap the value for safety
|
|
294
|
+
if (typeInfo.isArray) {
|
|
295
|
+
const arrayValue = Array.isArray(value) ? value : [value];
|
|
296
|
+
return arrayValue.map((v) => ({ value: v }));
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
return { value };
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Validates and formats all attributes for an object
|
|
305
|
+
*
|
|
306
|
+
* @param objectSlug - The object type
|
|
307
|
+
* @param attributes - Raw attributes object
|
|
308
|
+
* @returns Formatted attributes ready for Attio API
|
|
309
|
+
*/
|
|
310
|
+
export async function formatAllAttributes(objectSlug, attributes) {
|
|
311
|
+
const formatted = {};
|
|
312
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
313
|
+
if (value !== undefined) {
|
|
314
|
+
// Handle null values explicitly - format them according to Attio's expected structure
|
|
315
|
+
formatted[key] = await formatAttributeValue(objectSlug, key, value);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return formatted;
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=attribute-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute-types.js","sourceRoot":"","sources":["../../src/api/attribute-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAc,EACZ,aAAa,EAId,MAAM,OAAO,CAAC;AAYf,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,aAAa,CAiFf"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { enhanceApiError } from '../utils/error-enhancer.js';
|
|
3
|
+
// If logger is used, ensure it's imported, e.g.:
|
|
4
|
+
// import { logger } from '../utils/logger';
|
|
5
|
+
const MAX_RETRIES = 3;
|
|
6
|
+
const RETRY_DELAY_MS = 1000;
|
|
7
|
+
export function createAttioApiClient(baseURL, apiKey) {
|
|
8
|
+
const instance = axios.create({
|
|
9
|
+
baseURL,
|
|
10
|
+
headers: {
|
|
11
|
+
Authorization: `Bearer ${apiKey}`,
|
|
12
|
+
'Content-Type': 'application/json',
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
instance.interceptors.response.use((response) => response, async (error) => {
|
|
16
|
+
// Enhanced logging to inspect the error object thoroughly
|
|
17
|
+
console.error('[Interceptor] Raw error received by interceptor. Message:', error?.message);
|
|
18
|
+
console.error('[Interceptor] Is Axios Error:', axios.isAxiosError(error));
|
|
19
|
+
if (axios.isAxiosError(error)) {
|
|
20
|
+
const axiosError = error;
|
|
21
|
+
console.error('[Interceptor] Axios error config:', axiosError.config);
|
|
22
|
+
// console.error('[Interceptor] Axios error request:', axiosError.request); // Often large, skip for brevity unless needed
|
|
23
|
+
console.error('[Interceptor] Axios error response status:', axiosError.response?.status);
|
|
24
|
+
console.error('[Interceptor] Axios error response headers:', JSON.stringify(axiosError.response?.headers));
|
|
25
|
+
console.error('[Interceptor] Axios error response data (raw):', JSON.stringify(axiosError.response?.data));
|
|
26
|
+
if (axiosError.response) {
|
|
27
|
+
console.error(`[Interceptor] API Error: ${axiosError.response.status} ${axiosError.config?.method?.toUpperCase()} ${axiosError.config
|
|
28
|
+
?.url}`);
|
|
29
|
+
// console.error('[Interceptor] Full error.response object:', JSON.stringify(axiosError.response)); // Can be very verbose
|
|
30
|
+
const config = axiosError.config;
|
|
31
|
+
const { status } = axiosError.response;
|
|
32
|
+
// Attempt to enhance the error first
|
|
33
|
+
const enhancedError = enhanceApiError(axiosError); // Pass the original AxiosError
|
|
34
|
+
config.retryCount = config.retryCount || 0;
|
|
35
|
+
if (config.retryCount < MAX_RETRIES &&
|
|
36
|
+
(status === 429 || status >= 500)) {
|
|
37
|
+
config.retryCount++;
|
|
38
|
+
console.warn(`[Interceptor] Retrying request (${config.retryCount}/${MAX_RETRIES}) for ${config.url} due to ${status}`);
|
|
39
|
+
await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY_MS * (config.retryCount || 1)));
|
|
40
|
+
return instance.request(config);
|
|
41
|
+
}
|
|
42
|
+
return Promise.reject(enhancedError); // Reject with the potentially enhanced error
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
console.error('[Interceptor] Non-Axios error structure:', JSON.stringify(error, Object.getOwnPropertyNames(error || {})));
|
|
47
|
+
}
|
|
48
|
+
// Fallback for non-Axios errors or Axios errors without a response
|
|
49
|
+
return Promise.reject(error);
|
|
50
|
+
});
|
|
51
|
+
return instance;
|
|
52
|
+
}
|
|
53
|
+
// Example of creating a default client (ensure env variables are set up)
|
|
54
|
+
// const defaultBaseURL = process.env.ATTIO_API_BASE_URL || 'https://api.attio.com/v2';
|
|
55
|
+
// const defaultApiKey = process.env.ATTIO_API_KEY;
|
|
56
|
+
// if (!defaultApiKey) {
|
|
57
|
+
// console.warn('ATTIO_API_KEY is not set. Default Attio API client will not be functional.');
|
|
58
|
+
// }
|
|
59
|
+
// export const attio = defaultApiKey ? createAttioApiClient(defaultBaseURL, defaultApiKey) : null;
|
|
60
|
+
// If you had a global Attio instance like this, re-add it. For now, just exporting the factory.
|
|
61
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Batch operations for Attio API
|
|
3
|
+
* Handles bulk operations with chunking and error handling
|
|
4
|
+
*/
|
|
5
|
+
import { AttioRecord, ResourceType, RecordBatchCreateParams, RecordBatchUpdateParams } from '../../types/attio.js';
|
|
6
|
+
import { BatchRequestItem, BatchResponse, BatchConfig } from './types.js';
|
|
7
|
+
import { RetryConfig } from './retry.js';
|
|
8
|
+
/**
|
|
9
|
+
* Creates multiple records in a batch operation
|
|
10
|
+
*
|
|
11
|
+
* @param params - Batch record creation parameters
|
|
12
|
+
* @param retryConfig - Optional retry configuration
|
|
13
|
+
* @returns Array of created records
|
|
14
|
+
*/
|
|
15
|
+
export declare function batchCreateRecords<T extends AttioRecord>(params: RecordBatchCreateParams, retryConfig?: Partial<RetryConfig>): Promise<T[]>;
|
|
16
|
+
/**
|
|
17
|
+
* Updates multiple records in a batch operation
|
|
18
|
+
*
|
|
19
|
+
* @param params - Batch record update parameters
|
|
20
|
+
* @param retryConfig - Optional retry configuration
|
|
21
|
+
* @returns Array of updated records
|
|
22
|
+
*/
|
|
23
|
+
export declare function batchUpdateRecords<T extends AttioRecord>(params: RecordBatchUpdateParams, retryConfig?: Partial<RetryConfig>): Promise<T[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Default batch configuration
|
|
26
|
+
*/
|
|
27
|
+
export declare const DEFAULT_BATCH_CONFIG: BatchConfig;
|
|
28
|
+
/**
|
|
29
|
+
* Execute a batch of operations with chunking, error handling, and retry support
|
|
30
|
+
*
|
|
31
|
+
* @param operations - Array of operations to process in batch
|
|
32
|
+
* @param apiCall - Function that processes a single operation
|
|
33
|
+
* @param config - Batch configuration options
|
|
34
|
+
* @returns Batch response with individual results and summary
|
|
35
|
+
*/
|
|
36
|
+
export declare function executeBatchOperations<T, R>(operations: BatchRequestItem<T>[], apiCall: (params: T) => Promise<R>, config?: Partial<BatchConfig>): Promise<BatchResponse<R>>;
|
|
37
|
+
/**
|
|
38
|
+
* Generic function to perform batch searches for any object type
|
|
39
|
+
*
|
|
40
|
+
* @param objectType - Type of object to search (people or companies)
|
|
41
|
+
* @param queries - Array of search query strings
|
|
42
|
+
* @param batchConfig - Optional batch configuration
|
|
43
|
+
* @returns Batch response with search results
|
|
44
|
+
*/
|
|
45
|
+
export declare function batchSearchObjects<T extends AttioRecord>(objectType: ResourceType, queries: string[], batchConfig?: Partial<BatchConfig>): Promise<BatchResponse<T[]>>;
|
|
46
|
+
/**
|
|
47
|
+
* Generic function to get details for multiple records of any object type
|
|
48
|
+
*
|
|
49
|
+
* @param objectType - Type of object to get details for (people or companies)
|
|
50
|
+
* @param recordIds - Array of record IDs to fetch
|
|
51
|
+
* @param batchConfig - Optional batch configuration
|
|
52
|
+
* @returns Batch response with record details
|
|
53
|
+
*/
|
|
54
|
+
export declare function batchGetObjectDetails<T extends AttioRecord>(objectType: ResourceType, recordIds: string[], batchConfig?: Partial<BatchConfig>): Promise<BatchResponse<T>>;
|
|
55
|
+
//# sourceMappingURL=batch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/api/operations/batch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,WAAW,EACX,YAAY,EAEZ,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,EAEhB,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAiB,WAAW,EAAwB,MAAM,YAAY,CAAC;AAa9E;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAC5D,MAAM,EAAE,uBAAuB,EAC/B,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,CAAC,EAAE,CAAC,CAmBd;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAC5D,MAAM,EAAE,uBAAuB,EAC/B,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,CAAC,EAAE,CAAC,CAoBd;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAIlC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAC/C,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EACjC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAClC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAChC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAkE3B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAC5D,UAAU,EAAE,YAAY,EACxB,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAe7B;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,SAAS,WAAW,EAC/D,UAAU,EAAE,YAAY,EACxB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAa3B"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Batch operations for Attio API
|
|
3
|
+
* Handles bulk operations with chunking and error handling
|
|
4
|
+
*/
|
|
5
|
+
import { getAttioClient } from '../attio-client.js';
|
|
6
|
+
import { callWithRetry, DEFAULT_RETRY_CONFIG } from './retry.js';
|
|
7
|
+
import { searchObject } from './search.js';
|
|
8
|
+
import { getObjectDetails } from './crud.js';
|
|
9
|
+
/**
|
|
10
|
+
* Helper function to construct object path
|
|
11
|
+
* @private
|
|
12
|
+
*/
|
|
13
|
+
function getObjectPath(objectSlug, objectId) {
|
|
14
|
+
// If object ID is provided, use it, otherwise use the slug
|
|
15
|
+
return `/objects/${objectId || objectSlug}`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Creates multiple records in a batch operation
|
|
19
|
+
*
|
|
20
|
+
* @param params - Batch record creation parameters
|
|
21
|
+
* @param retryConfig - Optional retry configuration
|
|
22
|
+
* @returns Array of created records
|
|
23
|
+
*/
|
|
24
|
+
export async function batchCreateRecords(params, retryConfig) {
|
|
25
|
+
const api = getAttioClient();
|
|
26
|
+
const objectPath = getObjectPath(params.objectSlug, params.objectId);
|
|
27
|
+
const path = `${objectPath}/records/batch`;
|
|
28
|
+
return callWithRetry(async () => {
|
|
29
|
+
try {
|
|
30
|
+
const response = await api.post(path, {
|
|
31
|
+
records: params.records.map((record) => ({
|
|
32
|
+
attributes: record.attributes,
|
|
33
|
+
})),
|
|
34
|
+
});
|
|
35
|
+
return response.data.data || [];
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
// Let upstream handlers create specific, rich error objects.
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
}, retryConfig);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Updates multiple records in a batch operation
|
|
45
|
+
*
|
|
46
|
+
* @param params - Batch record update parameters
|
|
47
|
+
* @param retryConfig - Optional retry configuration
|
|
48
|
+
* @returns Array of updated records
|
|
49
|
+
*/
|
|
50
|
+
export async function batchUpdateRecords(params, retryConfig) {
|
|
51
|
+
const api = getAttioClient();
|
|
52
|
+
const objectPath = getObjectPath(params.objectSlug, params.objectId);
|
|
53
|
+
const path = `${objectPath}/records/batch`;
|
|
54
|
+
return callWithRetry(async () => {
|
|
55
|
+
try {
|
|
56
|
+
const response = await api.patch(path, {
|
|
57
|
+
records: params.records.map((record) => ({
|
|
58
|
+
id: record.id,
|
|
59
|
+
attributes: record.attributes,
|
|
60
|
+
})),
|
|
61
|
+
});
|
|
62
|
+
return response.data.data || [];
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
// Let upstream handlers create specific, rich error objects.
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}, retryConfig);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Default batch configuration
|
|
72
|
+
*/
|
|
73
|
+
export const DEFAULT_BATCH_CONFIG = {
|
|
74
|
+
maxBatchSize: 10,
|
|
75
|
+
continueOnError: true,
|
|
76
|
+
retryConfig: DEFAULT_RETRY_CONFIG,
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Execute a batch of operations with chunking, error handling, and retry support
|
|
80
|
+
*
|
|
81
|
+
* @param operations - Array of operations to process in batch
|
|
82
|
+
* @param apiCall - Function that processes a single operation
|
|
83
|
+
* @param config - Batch configuration options
|
|
84
|
+
* @returns Batch response with individual results and summary
|
|
85
|
+
*/
|
|
86
|
+
export async function executeBatchOperations(operations, apiCall, config = {}) {
|
|
87
|
+
// Merge with default config
|
|
88
|
+
const batchConfig = {
|
|
89
|
+
...DEFAULT_BATCH_CONFIG,
|
|
90
|
+
...config,
|
|
91
|
+
};
|
|
92
|
+
// Initialize batch response
|
|
93
|
+
const batchResponse = {
|
|
94
|
+
results: [],
|
|
95
|
+
summary: {
|
|
96
|
+
total: operations.length,
|
|
97
|
+
succeeded: 0,
|
|
98
|
+
failed: 0,
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
// Process operations in chunks to respect maxBatchSize
|
|
102
|
+
const chunks = [];
|
|
103
|
+
for (let i = 0; i < operations.length; i += batchConfig.maxBatchSize) {
|
|
104
|
+
chunks.push(operations.slice(i, i + batchConfig.maxBatchSize));
|
|
105
|
+
}
|
|
106
|
+
// Process each chunk
|
|
107
|
+
for (const chunk of chunks) {
|
|
108
|
+
// Process operations in the current chunk
|
|
109
|
+
await Promise.all(chunk.map(async (operation) => {
|
|
110
|
+
const result = {
|
|
111
|
+
id: operation.id,
|
|
112
|
+
success: false,
|
|
113
|
+
};
|
|
114
|
+
try {
|
|
115
|
+
// Execute the operation with retry logic if configured
|
|
116
|
+
if (batchConfig.retryConfig) {
|
|
117
|
+
result.data = await callWithRetry(() => apiCall(operation.params), batchConfig.retryConfig);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
result.data = await apiCall(operation.params);
|
|
121
|
+
}
|
|
122
|
+
// Mark as successful
|
|
123
|
+
result.success = true;
|
|
124
|
+
batchResponse.summary.succeeded++;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
// Handle operation failure
|
|
128
|
+
result.success = false;
|
|
129
|
+
result.error = error;
|
|
130
|
+
batchResponse.summary.failed++;
|
|
131
|
+
// If configured to abort on error, throw the error to stop processing
|
|
132
|
+
if (!batchConfig.continueOnError) {
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Add result to batch response
|
|
137
|
+
batchResponse.results.push(result);
|
|
138
|
+
}));
|
|
139
|
+
}
|
|
140
|
+
return batchResponse;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Generic function to perform batch searches for any object type
|
|
144
|
+
*
|
|
145
|
+
* @param objectType - Type of object to search (people or companies)
|
|
146
|
+
* @param queries - Array of search query strings
|
|
147
|
+
* @param batchConfig - Optional batch configuration
|
|
148
|
+
* @returns Batch response with search results
|
|
149
|
+
*/
|
|
150
|
+
export async function batchSearchObjects(objectType, queries, batchConfig) {
|
|
151
|
+
// Convert queries to batch request items
|
|
152
|
+
const operations = queries.map((query, index) => ({
|
|
153
|
+
params: query,
|
|
154
|
+
id: `search_${objectType}_${index}`,
|
|
155
|
+
}));
|
|
156
|
+
// Execute batch operations using the searchObject function
|
|
157
|
+
return executeBatchOperations(operations, (query) => searchObject(objectType, query), batchConfig);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Generic function to get details for multiple records of any object type
|
|
161
|
+
*
|
|
162
|
+
* @param objectType - Type of object to get details for (people or companies)
|
|
163
|
+
* @param recordIds - Array of record IDs to fetch
|
|
164
|
+
* @param batchConfig - Optional batch configuration
|
|
165
|
+
* @returns Batch response with record details
|
|
166
|
+
*/
|
|
167
|
+
export async function batchGetObjectDetails(objectType, recordIds, batchConfig) {
|
|
168
|
+
// Convert record IDs to batch request items
|
|
169
|
+
const operations = recordIds.map((recordId) => ({
|
|
170
|
+
params: recordId,
|
|
171
|
+
id: `get_${objectType}_${recordId}`,
|
|
172
|
+
}));
|
|
173
|
+
// Execute batch operations using the getObjectDetails function
|
|
174
|
+
return executeBatchOperations(operations, (recordId) => getObjectDetails(objectType, recordId), batchConfig);
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/api/operations/batch.ts"],"names":[],"mappings":"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"}
|