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 @@
|
|
|
1
|
+
{"version":3,"file":"numeric-utils.js","sourceRoot":"","sources":["../../src/utils/numeric-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAYxD;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAmB;IACtD,iDAAiD;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,oDAAoD;QACpD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8BAA8B;IAC9B,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,uDAAuD;IACvD,IACE,KAAK,CAAC,GAAG,KAAK,SAAS;QACvB,KAAK,CAAC,GAAG,KAAK,SAAS;QACvB,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EACrB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,CAAC,GAAG,iCAAiC,KAAK,CAAC,GAAG,GAAG,CACtF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,aAAqB,EACrB,KAAmB;IAEnB,IAAI,CAAC;QACH,6BAA6B;QAC7B,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAE5B,MAAM,OAAO,GAAsB,EAAE,CAAC;QAEtC,0BAA0B;QAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;gBAClC,SAAS,EAAE,mBAAmB,CAAC,MAAM;gBACrC,KAAK,EAAE,KAAK,CAAC,MAAM;aACpB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACtC,CAAC;QAED,2CAA2C;QAC3C,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;gBAClC,SAAS,EAAE,mBAAmB,CAAC,sBAAsB;gBACrD,KAAK,EAAE,KAAK,CAAC,GAAG;aACjB,CAAC,CAAC;QACL,CAAC;QAED,wCAAwC;QACxC,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;gBAClC,SAAS,EAAE,mBAAmB,CAAC,mBAAmB;gBAClD,KAAK,EAAE,KAAK,CAAC,GAAG;aACjB,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,OAAO;YACP,mFAAmF;YACnF,QAAQ,EAAE,KAAK;SAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,oCAAoC,YAAY,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pagination utilities for Attio MCP server
|
|
3
|
+
* Provides functions for implementing efficient pagination with filtered results
|
|
4
|
+
*/
|
|
5
|
+
import { AttioRecord } from '../types/attio.js';
|
|
6
|
+
/**
|
|
7
|
+
* Standard pagination metadata interface
|
|
8
|
+
*/
|
|
9
|
+
export interface PaginationMetadata {
|
|
10
|
+
/** Total number of records available */
|
|
11
|
+
totalCount: number;
|
|
12
|
+
/** Current page number (1-based) */
|
|
13
|
+
currentPage: number;
|
|
14
|
+
/** Number of records per page */
|
|
15
|
+
pageSize: number;
|
|
16
|
+
/** Total number of pages available */
|
|
17
|
+
totalPages: number;
|
|
18
|
+
/** Whether there are more pages available */
|
|
19
|
+
hasMore: boolean;
|
|
20
|
+
/** URL for the next page (if available) */
|
|
21
|
+
nextPageUrl?: string;
|
|
22
|
+
/** URL for the previous page (if available) */
|
|
23
|
+
prevPageUrl?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Paginated response interface
|
|
27
|
+
*/
|
|
28
|
+
export interface PaginatedResponse<T> {
|
|
29
|
+
/** Results for the current page */
|
|
30
|
+
results: T[];
|
|
31
|
+
/** Pagination metadata */
|
|
32
|
+
pagination: PaginationMetadata;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Creates a paginated response object with metadata
|
|
36
|
+
*
|
|
37
|
+
* @param results - The current page of results
|
|
38
|
+
* @param totalCount - The total number of results available
|
|
39
|
+
* @param page - The current page number (1-based)
|
|
40
|
+
* @param pageSize - The number of results per page
|
|
41
|
+
* @param baseUrl - Optional base URL for constructing next/prev page URLs
|
|
42
|
+
* @returns Paginated response object
|
|
43
|
+
*/
|
|
44
|
+
export declare function createPaginatedResponse<T>(results: T[], totalCount: number, page?: number, pageSize?: number, baseUrl?: string): PaginatedResponse<T>;
|
|
45
|
+
/**
|
|
46
|
+
* Applies pagination to a list of records
|
|
47
|
+
*
|
|
48
|
+
* @param records - The full list of records to paginate
|
|
49
|
+
* @param page - The page number to return (1-based)
|
|
50
|
+
* @param pageSize - The number of records per page
|
|
51
|
+
* @returns Paginated response with the requested page of records
|
|
52
|
+
*/
|
|
53
|
+
export declare function paginateRecords<T>(records: T[], page?: number, pageSize?: number): PaginatedResponse<T>;
|
|
54
|
+
/**
|
|
55
|
+
* Applies pagination parameters to a query
|
|
56
|
+
*
|
|
57
|
+
* @param pageParam - The page parameter from the request
|
|
58
|
+
* @param pageSizeParam - The page size parameter from the request
|
|
59
|
+
* @returns Object with normalized limit and offset values
|
|
60
|
+
*/
|
|
61
|
+
export declare function getPaginationParams(pageParam?: number | string, pageSizeParam?: number | string): {
|
|
62
|
+
limit: number;
|
|
63
|
+
offset: number;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Processes API responses with cursor-based pagination into a standardized paginated response
|
|
67
|
+
*
|
|
68
|
+
* @param apiResponse - The API response object with cursor-based pagination
|
|
69
|
+
* @param records - The records from the response
|
|
70
|
+
* @param page - The current page number (1-based)
|
|
71
|
+
* @param pageSize - The number of records per page
|
|
72
|
+
* @param baseUrl - Optional base URL for constructing next/prev page URLs
|
|
73
|
+
* @returns Standardized paginated response
|
|
74
|
+
*/
|
|
75
|
+
export declare function processCursorPagination<T extends AttioRecord>(apiResponse: any, records: T[], page?: number, pageSize?: number, baseUrl?: string): PaginatedResponse<T>;
|
|
76
|
+
/**
|
|
77
|
+
* Fetches all pages of results for a paginated query
|
|
78
|
+
*
|
|
79
|
+
* @param queryFn - Function that fetches a page of results
|
|
80
|
+
* @param pageSize - Page size to use for fetching
|
|
81
|
+
* @param maxPages - Maximum number of pages to fetch
|
|
82
|
+
* @returns All results combined
|
|
83
|
+
*/
|
|
84
|
+
export declare function fetchAllPages<T>(queryFn: (limit: number, offset: number) => Promise<T[]>, pageSize?: number, maxPages?: number): Promise<T[]>;
|
|
85
|
+
//# sourceMappingURL=pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/utils/pagination.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IAEnB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IAEjB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IAEnB,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IAEjB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,mCAAmC;IACnC,OAAO,EAAE,CAAC,EAAE,CAAC;IAEb,0BAA0B;IAC1B,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,OAAO,EAAE,CAAC,EAAE,EACZ,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,MAAU,EAChB,QAAQ,GAAE,MAAW,EACrB,OAAO,CAAC,EAAE,MAAM,GACf,iBAAiB,CAAC,CAAC,CAAC,CAqCtB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,CAAC,EAAE,EACZ,IAAI,GAAE,MAAU,EAChB,QAAQ,GAAE,MAAW,GACpB,iBAAiB,CAAC,CAAC,CAAC,CAmBtB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAC9B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA+BnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,WAAW,EAC3D,WAAW,EAAE,GAAG,EAChB,OAAO,EAAE,CAAC,EAAE,EACZ,IAAI,GAAE,MAAU,EAChB,QAAQ,GAAE,MAAW,EACrB,OAAO,CAAC,EAAE,MAAM,GACf,iBAAiB,CAAC,CAAC,CAAC,CA+CtB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EACxD,QAAQ,GAAE,MAAW,EACrB,QAAQ,GAAE,MAAW,GACpB,OAAO,CAAC,CAAC,EAAE,CAAC,CAsBd"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a paginated response object with metadata
|
|
3
|
+
*
|
|
4
|
+
* @param results - The current page of results
|
|
5
|
+
* @param totalCount - The total number of results available
|
|
6
|
+
* @param page - The current page number (1-based)
|
|
7
|
+
* @param pageSize - The number of results per page
|
|
8
|
+
* @param baseUrl - Optional base URL for constructing next/prev page URLs
|
|
9
|
+
* @returns Paginated response object
|
|
10
|
+
*/
|
|
11
|
+
export function createPaginatedResponse(results, totalCount, page = 1, pageSize = 20, baseUrl) {
|
|
12
|
+
// Calculate total pages
|
|
13
|
+
const totalPages = Math.max(1, Math.ceil(totalCount / pageSize));
|
|
14
|
+
// Determine if there are more pages
|
|
15
|
+
const hasMore = page < totalPages;
|
|
16
|
+
// Pagination metadata
|
|
17
|
+
const pagination = {
|
|
18
|
+
totalCount,
|
|
19
|
+
currentPage: page,
|
|
20
|
+
pageSize,
|
|
21
|
+
totalPages,
|
|
22
|
+
hasMore,
|
|
23
|
+
};
|
|
24
|
+
// Add URLs if base URL is provided
|
|
25
|
+
if (baseUrl) {
|
|
26
|
+
// Create next page URL if there are more pages
|
|
27
|
+
if (hasMore) {
|
|
28
|
+
pagination.nextPageUrl = `${baseUrl}?page=${page + 1}&pageSize=${pageSize}`;
|
|
29
|
+
}
|
|
30
|
+
// Create previous page URL if not on first page
|
|
31
|
+
if (page > 1) {
|
|
32
|
+
pagination.prevPageUrl = `${baseUrl}?page=${page - 1}&pageSize=${pageSize}`;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
results,
|
|
37
|
+
pagination,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Applies pagination to a list of records
|
|
42
|
+
*
|
|
43
|
+
* @param records - The full list of records to paginate
|
|
44
|
+
* @param page - The page number to return (1-based)
|
|
45
|
+
* @param pageSize - The number of records per page
|
|
46
|
+
* @returns Paginated response with the requested page of records
|
|
47
|
+
*/
|
|
48
|
+
export function paginateRecords(records, page = 1, pageSize = 20) {
|
|
49
|
+
// Ensure valid pagination parameters
|
|
50
|
+
const validPage = Math.max(1, page);
|
|
51
|
+
const validPageSize = Math.max(1, Math.min(100, pageSize)); // Limit page size to 100
|
|
52
|
+
// Calculate start and end indices
|
|
53
|
+
const startIndex = (validPage - 1) * validPageSize;
|
|
54
|
+
const endIndex = startIndex + validPageSize;
|
|
55
|
+
// Extract the requested page of records
|
|
56
|
+
const paginatedResults = records.slice(startIndex, endIndex);
|
|
57
|
+
// Create and return paginated response
|
|
58
|
+
return createPaginatedResponse(paginatedResults, records.length, validPage, validPageSize);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Applies pagination parameters to a query
|
|
62
|
+
*
|
|
63
|
+
* @param pageParam - The page parameter from the request
|
|
64
|
+
* @param pageSizeParam - The page size parameter from the request
|
|
65
|
+
* @returns Object with normalized limit and offset values
|
|
66
|
+
*/
|
|
67
|
+
export function getPaginationParams(pageParam, pageSizeParam) {
|
|
68
|
+
// Default values
|
|
69
|
+
const defaultPageSize = 20;
|
|
70
|
+
const defaultPage = 1;
|
|
71
|
+
const maxPageSize = 100;
|
|
72
|
+
// Parse and validate page
|
|
73
|
+
let page = defaultPage;
|
|
74
|
+
if (pageParam !== undefined) {
|
|
75
|
+
const parsedPage = Number(pageParam);
|
|
76
|
+
if (!isNaN(parsedPage) && parsedPage > 0) {
|
|
77
|
+
page = parsedPage;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Parse and validate page size
|
|
81
|
+
let pageSize = defaultPageSize;
|
|
82
|
+
if (pageSizeParam !== undefined) {
|
|
83
|
+
const parsedPageSize = Number(pageSizeParam);
|
|
84
|
+
if (!isNaN(parsedPageSize) && parsedPageSize > 0) {
|
|
85
|
+
pageSize = Math.min(parsedPageSize, maxPageSize);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Calculate offset from page and page size
|
|
89
|
+
const offset = (page - 1) * pageSize;
|
|
90
|
+
return {
|
|
91
|
+
limit: pageSize,
|
|
92
|
+
offset,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Processes API responses with cursor-based pagination into a standardized paginated response
|
|
97
|
+
*
|
|
98
|
+
* @param apiResponse - The API response object with cursor-based pagination
|
|
99
|
+
* @param records - The records from the response
|
|
100
|
+
* @param page - The current page number (1-based)
|
|
101
|
+
* @param pageSize - The number of records per page
|
|
102
|
+
* @param baseUrl - Optional base URL for constructing next/prev page URLs
|
|
103
|
+
* @returns Standardized paginated response
|
|
104
|
+
*/
|
|
105
|
+
export function processCursorPagination(apiResponse, records, page = 1, pageSize = 20, baseUrl) {
|
|
106
|
+
// Extract pagination metadata from the API response
|
|
107
|
+
const totalCount = apiResponse.pagination?.total_count || records.length;
|
|
108
|
+
const hasMore = apiResponse.has_more || apiResponse.pagination?.next_cursor !== undefined;
|
|
109
|
+
// Calculate total pages based on total count and page size
|
|
110
|
+
const totalPages = Math.max(1, Math.ceil(totalCount / pageSize));
|
|
111
|
+
// Create pagination metadata
|
|
112
|
+
const pagination = {
|
|
113
|
+
totalCount,
|
|
114
|
+
currentPage: page,
|
|
115
|
+
pageSize,
|
|
116
|
+
totalPages,
|
|
117
|
+
hasMore,
|
|
118
|
+
};
|
|
119
|
+
// Add URLs if base URL is provided
|
|
120
|
+
if (baseUrl) {
|
|
121
|
+
// Create next page URL if there's a next cursor
|
|
122
|
+
if (hasMore) {
|
|
123
|
+
const nextCursor = apiResponse.next_cursor || apiResponse.pagination?.next_cursor;
|
|
124
|
+
if (nextCursor) {
|
|
125
|
+
pagination.nextPageUrl = `${baseUrl}?cursor=${encodeURIComponent(nextCursor)}&pageSize=${pageSize}`;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
pagination.nextPageUrl = `${baseUrl}?page=${page + 1}&pageSize=${pageSize}`;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Create previous page URL if not on first page
|
|
132
|
+
if (page > 1) {
|
|
133
|
+
pagination.prevPageUrl = `${baseUrl}?page=${page - 1}&pageSize=${pageSize}`;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
results: records,
|
|
138
|
+
pagination,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Fetches all pages of results for a paginated query
|
|
143
|
+
*
|
|
144
|
+
* @param queryFn - Function that fetches a page of results
|
|
145
|
+
* @param pageSize - Page size to use for fetching
|
|
146
|
+
* @param maxPages - Maximum number of pages to fetch
|
|
147
|
+
* @returns All results combined
|
|
148
|
+
*/
|
|
149
|
+
export async function fetchAllPages(queryFn, pageSize = 20, maxPages = 10) {
|
|
150
|
+
let allResults = [];
|
|
151
|
+
let currentPage = 1;
|
|
152
|
+
let hasMoreResults = true;
|
|
153
|
+
while (hasMoreResults && currentPage <= maxPages) {
|
|
154
|
+
const offset = (currentPage - 1) * pageSize;
|
|
155
|
+
const pageResults = await queryFn(pageSize, offset);
|
|
156
|
+
// Add results to our collection
|
|
157
|
+
allResults = [...allResults, ...pageResults];
|
|
158
|
+
// Check if we've reached the end
|
|
159
|
+
if (pageResults.length < pageSize) {
|
|
160
|
+
hasMoreResults = false;
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
// Move to the next page
|
|
164
|
+
currentPage++;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return allResults;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/utils/pagination.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Person ID validation regex
|
|
3
|
+
* Matches person_<alphanumeric> with minimum 10 characters after prefix
|
|
4
|
+
*/
|
|
5
|
+
export declare const PERSON_ID_PATTERN: RegExp;
|
|
6
|
+
/**
|
|
7
|
+
* Interface for a record reference in Attio API format
|
|
8
|
+
*/
|
|
9
|
+
export interface RecordReference {
|
|
10
|
+
target_record_id: string;
|
|
11
|
+
target_object: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Finds a person by name or validates a Person Record ID
|
|
15
|
+
*
|
|
16
|
+
* This utility function helps with looking up people for record references.
|
|
17
|
+
* It handles both:
|
|
18
|
+
* 1. Direct Person Record IDs (e.g., "person_01h8g3j5k7m9n1p3r")
|
|
19
|
+
* 2. Person names, which will be searched in Attio
|
|
20
|
+
*
|
|
21
|
+
* @param value - Either a Person Record ID or a person name
|
|
22
|
+
* @param operationContext - Context information for error messages
|
|
23
|
+
* @param recordIdType - Type of record the error is associated with (e.g., "company")
|
|
24
|
+
* @param recordId - ID of the record (e.g., company ID)
|
|
25
|
+
* @returns Formatted record reference for the Attio API
|
|
26
|
+
* @throws CompanyOperationError if person lookup fails or multiple matches found
|
|
27
|
+
*/
|
|
28
|
+
export declare function findPersonReference(value: string, operationContext: string, recordIdType: string, recordId: string): Promise<RecordReference[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Clears a person reference by returning an empty array
|
|
31
|
+
*
|
|
32
|
+
* @returns Empty array representing cleared person reference
|
|
33
|
+
*/
|
|
34
|
+
export declare function clearPersonReference(): RecordReference[];
|
|
35
|
+
//# sourceMappingURL=person-lookup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"person-lookup.d.ts","sourceRoot":"","sources":["../../src/utils/person-lookup.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAA8B,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,EAAE,CAAC,CAwD5B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAExD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for looking up people and handling person references
|
|
3
|
+
*/
|
|
4
|
+
import { searchPeople } from '../objects/people/search.js';
|
|
5
|
+
import { CompanyOperationError } from '../errors/company-errors.js';
|
|
6
|
+
/**
|
|
7
|
+
* Person ID validation regex
|
|
8
|
+
* Matches person_<alphanumeric> with minimum 10 characters after prefix
|
|
9
|
+
*/
|
|
10
|
+
export const PERSON_ID_PATTERN = /^person_[a-zA-Z0-9]{10,}$/;
|
|
11
|
+
/**
|
|
12
|
+
* Finds a person by name or validates a Person Record ID
|
|
13
|
+
*
|
|
14
|
+
* This utility function helps with looking up people for record references.
|
|
15
|
+
* It handles both:
|
|
16
|
+
* 1. Direct Person Record IDs (e.g., "person_01h8g3j5k7m9n1p3r")
|
|
17
|
+
* 2. Person names, which will be searched in Attio
|
|
18
|
+
*
|
|
19
|
+
* @param value - Either a Person Record ID or a person name
|
|
20
|
+
* @param operationContext - Context information for error messages
|
|
21
|
+
* @param recordIdType - Type of record the error is associated with (e.g., "company")
|
|
22
|
+
* @param recordId - ID of the record (e.g., company ID)
|
|
23
|
+
* @returns Formatted record reference for the Attio API
|
|
24
|
+
* @throws CompanyOperationError if person lookup fails or multiple matches found
|
|
25
|
+
*/
|
|
26
|
+
export async function findPersonReference(value, operationContext, recordIdType, recordId) {
|
|
27
|
+
// Check if it's already a valid Person Record ID
|
|
28
|
+
if (PERSON_ID_PATTERN.test(value)) {
|
|
29
|
+
return [{ target_record_id: value, target_object: 'people' }];
|
|
30
|
+
}
|
|
31
|
+
// It's a name, try to find the person by name
|
|
32
|
+
try {
|
|
33
|
+
const people = await searchPeople(value);
|
|
34
|
+
if (people.length === 0) {
|
|
35
|
+
throw new CompanyOperationError(operationContext, recordId, `Person named "${value}" not found. Please provide an exact name or a valid Person Record ID (e.g., person_xxxxxxxxxxxx).`);
|
|
36
|
+
}
|
|
37
|
+
if (people.length > 1) {
|
|
38
|
+
const names = people
|
|
39
|
+
.map((p) => p.values.name?.[0]?.value || 'Unknown Name')
|
|
40
|
+
.join(', ');
|
|
41
|
+
throw new CompanyOperationError(operationContext, recordId, `Multiple people found for "${value}": [${names}]. Please provide a more specific name or the Person Record ID.`);
|
|
42
|
+
}
|
|
43
|
+
const person = people[0];
|
|
44
|
+
const personRecordId = person.id?.record_id;
|
|
45
|
+
if (!personRecordId) {
|
|
46
|
+
throw new CompanyOperationError(operationContext, recordId, `Could not retrieve Record ID for person "${value}".`);
|
|
47
|
+
}
|
|
48
|
+
return [{ target_record_id: personRecordId, target_object: 'people' }];
|
|
49
|
+
}
|
|
50
|
+
catch (searchError) {
|
|
51
|
+
// Pass through CompanyOperationError
|
|
52
|
+
if (searchError instanceof CompanyOperationError) {
|
|
53
|
+
throw searchError;
|
|
54
|
+
}
|
|
55
|
+
// Wrap other errors
|
|
56
|
+
throw new CompanyOperationError(operationContext, recordId, `Failed to search for person "${value}": ${searchError instanceof Error ? searchError.message : String(searchError)}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Clears a person reference by returning an empty array
|
|
61
|
+
*
|
|
62
|
+
* @returns Empty array representing cleared person reference
|
|
63
|
+
*/
|
|
64
|
+
export function clearPersonReference() {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=person-lookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"person-lookup.js","sourceRoot":"","sources":["../../src/utils/person-lookup.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AAU7D;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAa,EACb,gBAAwB,EACxB,YAAoB,EACpB,QAAgB;IAEhB,iDAAiD;IACjD,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,8CAA8C;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,qBAAqB,CAC7B,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,KAAK,oGAAoG,CAC3H,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,MAAM;iBACjB,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,cAAc,CAAC;iBAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,IAAI,qBAAqB,CAC7B,gBAAgB,EAChB,QAAQ,EACR,8BAA8B,KAAK,OAAO,KAAK,iEAAiE,CACjH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;QAE5C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,qBAAqB,CAC7B,gBAAgB,EAChB,QAAQ,EACR,4CAA4C,KAAK,IAAI,CACtD,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,WAAW,EAAE,CAAC;QACrB,qCAAqC;QACrC,IAAI,WAAW,YAAY,qBAAqB,EAAE,CAAC;YACjD,MAAM,WAAW,CAAC;QACpB,CAAC;QAED,oBAAoB;QACpB,MAAM,IAAI,qBAAqB,CAC7B,gBAAgB,EAChB,QAAQ,EACR,gCAAgC,KAAK,MACnC,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CACzE,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate limiter utility for Attio MCP server
|
|
3
|
+
* Provides simple rate limiting functionality for API endpoints
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for the rate limiter
|
|
7
|
+
*/
|
|
8
|
+
export interface RateLimiterConfig {
|
|
9
|
+
/** Maximum number of requests allowed in the time window */
|
|
10
|
+
maxRequests: number;
|
|
11
|
+
/** Time window in milliseconds */
|
|
12
|
+
windowMs: number;
|
|
13
|
+
/** Whether to track requests by IP address (default: true) */
|
|
14
|
+
trackByIp?: boolean;
|
|
15
|
+
/** Optional key function to determine the rate limiting key */
|
|
16
|
+
keyFn?: (req: any) => string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Rate limiter implementation
|
|
20
|
+
*/
|
|
21
|
+
export declare class RateLimiter {
|
|
22
|
+
private requests;
|
|
23
|
+
private config;
|
|
24
|
+
/**
|
|
25
|
+
* Create a new rate limiter
|
|
26
|
+
*
|
|
27
|
+
* @param config - Rate limiter configuration
|
|
28
|
+
*/
|
|
29
|
+
constructor(config: RateLimiterConfig);
|
|
30
|
+
/**
|
|
31
|
+
* Check if a request is allowed
|
|
32
|
+
*
|
|
33
|
+
* @param req - Request object (with IP address or other identifying info)
|
|
34
|
+
* @returns Object with allowed status and rate limit info
|
|
35
|
+
*/
|
|
36
|
+
check(req: any): {
|
|
37
|
+
allowed: boolean;
|
|
38
|
+
remaining: number;
|
|
39
|
+
resetTime: number;
|
|
40
|
+
msUntilReset: number;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Cleanup old entries to prevent memory leaks
|
|
44
|
+
*/
|
|
45
|
+
cleanup(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Get the key to track a request by
|
|
48
|
+
*
|
|
49
|
+
* @param req - Request object
|
|
50
|
+
* @returns Key for rate limiting
|
|
51
|
+
*/
|
|
52
|
+
private getKey;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get or create a rate limiter for a specific endpoint
|
|
56
|
+
*
|
|
57
|
+
* @param endpoint - Endpoint to rate limit
|
|
58
|
+
* @param config - Rate limiter configuration
|
|
59
|
+
* @returns Rate limiter instance
|
|
60
|
+
*/
|
|
61
|
+
export declare function getRateLimiter(endpoint: string, config: RateLimiterConfig): RateLimiter;
|
|
62
|
+
/**
|
|
63
|
+
* Middleware for rate limiting Express requests
|
|
64
|
+
*
|
|
65
|
+
* @param config - Rate limiter configuration
|
|
66
|
+
* @returns Express middleware function
|
|
67
|
+
*/
|
|
68
|
+
export declare function rateLimiterMiddleware(config: RateLimiterConfig): (req: any, res: any, next: () => void) => void;
|
|
69
|
+
/**
|
|
70
|
+
* Rate limiting for filter operations
|
|
71
|
+
*
|
|
72
|
+
* @param req - Request object
|
|
73
|
+
* @param endpoint - Endpoint being accessed
|
|
74
|
+
* @returns Object with allowed status and rate limit info
|
|
75
|
+
*/
|
|
76
|
+
export declare function checkFilterRateLimit(req: any, endpoint: string): {
|
|
77
|
+
allowed: boolean;
|
|
78
|
+
remaining: number;
|
|
79
|
+
resetTime: number;
|
|
80
|
+
msUntilReset: number;
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=rate-limiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IAEpB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IAEjB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,MAAM,CAAoB;IAElC;;;;OAIG;gBACS,MAAM,EAAE,iBAAiB;IAUrC;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB;IAkCD;;OAEG;IACH,OAAO,IAAI,IAAI;IASf;;;;;OAKG;IACH,OAAO,CAAC,MAAM;CAmBf;AAKD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,iBAAiB,GACxB,WAAW,CAUb;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,IAMrD,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,UAsB7C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,GACf;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,CAaA"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate limiter utility for Attio MCP server
|
|
3
|
+
* Provides simple rate limiting functionality for API endpoints
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Rate limiter implementation
|
|
7
|
+
*/
|
|
8
|
+
export class RateLimiter {
|
|
9
|
+
requests;
|
|
10
|
+
config;
|
|
11
|
+
/**
|
|
12
|
+
* Create a new rate limiter
|
|
13
|
+
*
|
|
14
|
+
* @param config - Rate limiter configuration
|
|
15
|
+
*/
|
|
16
|
+
constructor(config) {
|
|
17
|
+
this.requests = new Map();
|
|
18
|
+
this.config = {
|
|
19
|
+
maxRequests: config.maxRequests,
|
|
20
|
+
windowMs: config.windowMs,
|
|
21
|
+
trackByIp: config.trackByIp !== false, // Default to true
|
|
22
|
+
keyFn: config.keyFn,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if a request is allowed
|
|
27
|
+
*
|
|
28
|
+
* @param req - Request object (with IP address or other identifying info)
|
|
29
|
+
* @returns Object with allowed status and rate limit info
|
|
30
|
+
*/
|
|
31
|
+
check(req) {
|
|
32
|
+
const now = Date.now();
|
|
33
|
+
// Get the key to track this request by
|
|
34
|
+
const key = this.getKey(req);
|
|
35
|
+
// Get or create record for this key
|
|
36
|
+
let record = this.requests.get(key);
|
|
37
|
+
if (!record || now > record.resetTime) {
|
|
38
|
+
// If no record exists or the window has passed, create a new one
|
|
39
|
+
record = {
|
|
40
|
+
count: 0,
|
|
41
|
+
resetTime: now + this.config.windowMs,
|
|
42
|
+
};
|
|
43
|
+
this.requests.set(key, record);
|
|
44
|
+
}
|
|
45
|
+
// Check if request is allowed
|
|
46
|
+
const allowed = record.count < this.config.maxRequests;
|
|
47
|
+
// Increment counter if allowed
|
|
48
|
+
if (allowed) {
|
|
49
|
+
record.count++;
|
|
50
|
+
}
|
|
51
|
+
// Return result
|
|
52
|
+
return {
|
|
53
|
+
allowed,
|
|
54
|
+
remaining: Math.max(0, this.config.maxRequests - record.count),
|
|
55
|
+
resetTime: record.resetTime,
|
|
56
|
+
msUntilReset: Math.max(0, record.resetTime - now),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Cleanup old entries to prevent memory leaks
|
|
61
|
+
*/
|
|
62
|
+
cleanup() {
|
|
63
|
+
const now = Date.now();
|
|
64
|
+
for (const [key, record] of this.requests.entries()) {
|
|
65
|
+
if (now > record.resetTime) {
|
|
66
|
+
this.requests.delete(key);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get the key to track a request by
|
|
72
|
+
*
|
|
73
|
+
* @param req - Request object
|
|
74
|
+
* @returns Key for rate limiting
|
|
75
|
+
*/
|
|
76
|
+
getKey(req) {
|
|
77
|
+
// Use custom key function if provided
|
|
78
|
+
if (this.config.keyFn) {
|
|
79
|
+
return this.config.keyFn(req);
|
|
80
|
+
}
|
|
81
|
+
// Track by IP if configured
|
|
82
|
+
if (this.config.trackByIp) {
|
|
83
|
+
const ip = req.ip ||
|
|
84
|
+
req.connection?.remoteAddress ||
|
|
85
|
+
req.headers?.['x-forwarded-for'] ||
|
|
86
|
+
'unknown';
|
|
87
|
+
return `ip:${ip}`;
|
|
88
|
+
}
|
|
89
|
+
// Default to a static key (not recommended for production)
|
|
90
|
+
return 'global';
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Global rate limiter instances
|
|
94
|
+
const rateLimiters = new Map();
|
|
95
|
+
/**
|
|
96
|
+
* Get or create a rate limiter for a specific endpoint
|
|
97
|
+
*
|
|
98
|
+
* @param endpoint - Endpoint to rate limit
|
|
99
|
+
* @param config - Rate limiter configuration
|
|
100
|
+
* @returns Rate limiter instance
|
|
101
|
+
*/
|
|
102
|
+
export function getRateLimiter(endpoint, config) {
|
|
103
|
+
// Check if limiter already exists
|
|
104
|
+
let limiter = rateLimiters.get(endpoint);
|
|
105
|
+
if (!limiter) {
|
|
106
|
+
// Create new limiter
|
|
107
|
+
limiter = new RateLimiter(config);
|
|
108
|
+
rateLimiters.set(endpoint, limiter);
|
|
109
|
+
}
|
|
110
|
+
return limiter;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Middleware for rate limiting Express requests
|
|
114
|
+
*
|
|
115
|
+
* @param config - Rate limiter configuration
|
|
116
|
+
* @returns Express middleware function
|
|
117
|
+
*/
|
|
118
|
+
export function rateLimiterMiddleware(config) {
|
|
119
|
+
const limiter = new RateLimiter(config);
|
|
120
|
+
// Schedule cleanup every windowMs to prevent memory leaks
|
|
121
|
+
setInterval(() => limiter.cleanup(), config.windowMs);
|
|
122
|
+
return (req, res, next) => {
|
|
123
|
+
const result = limiter.check(req);
|
|
124
|
+
// Add rate limit headers
|
|
125
|
+
res.setHeader('X-RateLimit-Limit', config.maxRequests);
|
|
126
|
+
res.setHeader('X-RateLimit-Remaining', result.remaining);
|
|
127
|
+
res.setHeader('X-RateLimit-Reset', result.resetTime);
|
|
128
|
+
if (!result.allowed) {
|
|
129
|
+
// Return 429 Too Many Requests
|
|
130
|
+
res.status(429).json({
|
|
131
|
+
error: 'Too many requests',
|
|
132
|
+
message: `Rate limit exceeded. Try again in ${Math.ceil(result.msUntilReset / 1000)} seconds.`,
|
|
133
|
+
retryAfter: Math.ceil(result.msUntilReset / 1000),
|
|
134
|
+
});
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
next();
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Rate limiting for filter operations
|
|
142
|
+
*
|
|
143
|
+
* @param req - Request object
|
|
144
|
+
* @param endpoint - Endpoint being accessed
|
|
145
|
+
* @returns Object with allowed status and rate limit info
|
|
146
|
+
*/
|
|
147
|
+
export function checkFilterRateLimit(req, endpoint) {
|
|
148
|
+
// Configuration for filter endpoints
|
|
149
|
+
const config = {
|
|
150
|
+
maxRequests: 60, // 60 requests
|
|
151
|
+
windowMs: 60 * 1000, // per minute
|
|
152
|
+
trackByIp: true, // track by IP address
|
|
153
|
+
};
|
|
154
|
+
// Get limiter for this endpoint
|
|
155
|
+
const limiter = getRateLimiter(`filter:${endpoint}`, config);
|
|
156
|
+
// Check rate limit
|
|
157
|
+
return limiter.check(req);
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=rate-limiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"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"}
|