@lhremote/core 0.5.0 → 0.7.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.
Files changed (191) hide show
  1. package/README.md +39 -0
  2. package/dist/cdp/client.d.ts +5 -1
  3. package/dist/cdp/client.d.ts.map +1 -1
  4. package/dist/cdp/client.js +11 -3
  5. package/dist/cdp/client.js.map +1 -1
  6. package/dist/data/index.d.ts +1 -0
  7. package/dist/data/index.d.ts.map +1 -1
  8. package/dist/data/index.js +1 -0
  9. package/dist/data/index.js.map +1 -1
  10. package/dist/data/linkedin-reference.d.ts +44 -0
  11. package/dist/data/linkedin-reference.d.ts.map +1 -0
  12. package/dist/data/linkedin-reference.js +316 -0
  13. package/dist/data/linkedin-reference.js.map +1 -0
  14. package/dist/data/linkedin-reference.test.d.ts +2 -0
  15. package/dist/data/linkedin-reference.test.d.ts.map +1 -0
  16. package/dist/data/linkedin-reference.test.js +124 -0
  17. package/dist/data/linkedin-reference.test.js.map +1 -0
  18. package/dist/db/index.d.ts +1 -1
  19. package/dist/db/index.d.ts.map +1 -1
  20. package/dist/db/index.js +1 -1
  21. package/dist/db/index.js.map +1 -1
  22. package/dist/db/repositories/collection-list.d.ts +69 -0
  23. package/dist/db/repositories/collection-list.d.ts.map +1 -0
  24. package/dist/db/repositories/collection-list.integration.test.d.ts +2 -0
  25. package/dist/db/repositories/collection-list.integration.test.d.ts.map +1 -0
  26. package/dist/db/repositories/collection-list.integration.test.js +124 -0
  27. package/dist/db/repositories/collection-list.integration.test.js.map +1 -0
  28. package/dist/db/repositories/collection-list.js +161 -0
  29. package/dist/db/repositories/collection-list.js.map +1 -0
  30. package/dist/db/repositories/index.d.ts +1 -0
  31. package/dist/db/repositories/index.d.ts.map +1 -1
  32. package/dist/db/repositories/index.js +1 -0
  33. package/dist/db/repositories/index.js.map +1 -1
  34. package/dist/db/testing/create-fixture.js +17 -0
  35. package/dist/db/testing/create-fixture.js.map +1 -1
  36. package/dist/index.d.ts +5 -5
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +10 -4
  39. package/dist/index.js.map +1 -1
  40. package/dist/operations/add-people-to-collection.d.ts +22 -0
  41. package/dist/operations/add-people-to-collection.d.ts.map +1 -0
  42. package/dist/operations/add-people-to-collection.js +27 -0
  43. package/dist/operations/add-people-to-collection.js.map +1 -0
  44. package/dist/operations/add-people-to-collection.test.d.ts +2 -0
  45. package/dist/operations/add-people-to-collection.test.d.ts.map +1 -0
  46. package/dist/operations/add-people-to-collection.test.js +69 -0
  47. package/dist/operations/add-people-to-collection.test.js.map +1 -0
  48. package/dist/operations/build-linkedin-url.d.ts +39 -0
  49. package/dist/operations/build-linkedin-url.d.ts.map +1 -0
  50. package/dist/operations/build-linkedin-url.js +72 -0
  51. package/dist/operations/build-linkedin-url.js.map +1 -0
  52. package/dist/operations/collect-people.d.ts +40 -0
  53. package/dist/operations/collect-people.d.ts.map +1 -0
  54. package/dist/operations/collect-people.js +55 -0
  55. package/dist/operations/collect-people.js.map +1 -0
  56. package/dist/operations/collect-people.test.d.ts +2 -0
  57. package/dist/operations/collect-people.test.d.ts.map +1 -0
  58. package/dist/operations/collect-people.test.js +156 -0
  59. package/dist/operations/collect-people.test.js.map +1 -0
  60. package/dist/operations/create-collection.d.ts +20 -0
  61. package/dist/operations/create-collection.d.ts.map +1 -0
  62. package/dist/operations/create-collection.js +26 -0
  63. package/dist/operations/create-collection.js.map +1 -0
  64. package/dist/operations/create-collection.test.d.ts +2 -0
  65. package/dist/operations/create-collection.test.d.ts.map +1 -0
  66. package/dist/operations/create-collection.test.js +72 -0
  67. package/dist/operations/create-collection.test.js.map +1 -0
  68. package/dist/operations/delete-collection.d.ts +20 -0
  69. package/dist/operations/delete-collection.d.ts.map +1 -0
  70. package/dist/operations/delete-collection.js +26 -0
  71. package/dist/operations/delete-collection.js.map +1 -0
  72. package/dist/operations/delete-collection.test.d.ts +2 -0
  73. package/dist/operations/delete-collection.test.d.ts.map +1 -0
  74. package/dist/operations/delete-collection.test.js +61 -0
  75. package/dist/operations/delete-collection.test.js.map +1 -0
  76. package/dist/operations/import-people-from-collection.d.ts +30 -0
  77. package/dist/operations/import-people-from-collection.d.ts.map +1 -0
  78. package/dist/operations/import-people-from-collection.js +65 -0
  79. package/dist/operations/import-people-from-collection.js.map +1 -0
  80. package/dist/operations/import-people-from-collection.test.d.ts +2 -0
  81. package/dist/operations/import-people-from-collection.test.d.ts.map +1 -0
  82. package/dist/operations/import-people-from-collection.test.js +170 -0
  83. package/dist/operations/import-people-from-collection.test.js.map +1 -0
  84. package/dist/operations/index.d.ts +9 -0
  85. package/dist/operations/index.d.ts.map +1 -1
  86. package/dist/operations/index.js +12 -0
  87. package/dist/operations/index.js.map +1 -1
  88. package/dist/operations/list-collections.d.ts +18 -0
  89. package/dist/operations/list-collections.d.ts.map +1 -0
  90. package/dist/operations/list-collections.js +22 -0
  91. package/dist/operations/list-collections.js.map +1 -0
  92. package/dist/operations/list-collections.test.d.ts +2 -0
  93. package/dist/operations/list-collections.test.d.ts.map +1 -0
  94. package/dist/operations/list-collections.test.js +73 -0
  95. package/dist/operations/list-collections.test.js.map +1 -0
  96. package/dist/operations/remove-people-from-collection.d.ts +21 -0
  97. package/dist/operations/remove-people-from-collection.d.ts.map +1 -0
  98. package/dist/operations/remove-people-from-collection.js +26 -0
  99. package/dist/operations/remove-people-from-collection.js.map +1 -0
  100. package/dist/operations/remove-people-from-collection.test.d.ts +2 -0
  101. package/dist/operations/remove-people-from-collection.test.d.ts.map +1 -0
  102. package/dist/operations/remove-people-from-collection.test.js +68 -0
  103. package/dist/operations/remove-people-from-collection.test.js.map +1 -0
  104. package/dist/operations/resolve-linkedin-entity.d.ts +33 -0
  105. package/dist/operations/resolve-linkedin-entity.d.ts.map +1 -0
  106. package/dist/operations/resolve-linkedin-entity.js +198 -0
  107. package/dist/operations/resolve-linkedin-entity.js.map +1 -0
  108. package/dist/services/app.d.ts.map +1 -1
  109. package/dist/services/app.js +37 -12
  110. package/dist/services/app.js.map +1 -1
  111. package/dist/services/app.test.js +57 -0
  112. package/dist/services/app.test.js.map +1 -1
  113. package/dist/services/boolean-expression.d.ts +29 -0
  114. package/dist/services/boolean-expression.d.ts.map +1 -0
  115. package/dist/services/boolean-expression.js +79 -0
  116. package/dist/services/boolean-expression.js.map +1 -0
  117. package/dist/services/boolean-expression.test.d.ts +2 -0
  118. package/dist/services/boolean-expression.test.d.ts.map +1 -0
  119. package/dist/services/boolean-expression.test.js +64 -0
  120. package/dist/services/boolean-expression.test.js.map +1 -0
  121. package/dist/services/collection.d.ts +84 -0
  122. package/dist/services/collection.d.ts.map +1 -0
  123. package/dist/services/collection.js +154 -0
  124. package/dist/services/collection.js.map +1 -0
  125. package/dist/services/collection.test.d.ts +2 -0
  126. package/dist/services/collection.test.d.ts.map +1 -0
  127. package/dist/services/collection.test.js +219 -0
  128. package/dist/services/collection.test.js.map +1 -0
  129. package/dist/services/errors.d.ts +27 -0
  130. package/dist/services/errors.d.ts.map +1 -1
  131. package/dist/services/errors.js +38 -0
  132. package/dist/services/errors.js.map +1 -1
  133. package/dist/services/index.d.ts +7 -1
  134. package/dist/services/index.d.ts.map +1 -1
  135. package/dist/services/index.js +7 -1
  136. package/dist/services/index.js.map +1 -1
  137. package/dist/services/instance.d.ts +12 -0
  138. package/dist/services/instance.d.ts.map +1 -1
  139. package/dist/services/instance.js +28 -0
  140. package/dist/services/instance.js.map +1 -1
  141. package/dist/services/instance.test.js +31 -0
  142. package/dist/services/instance.test.js.map +1 -1
  143. package/dist/services/launcher.d.ts +16 -0
  144. package/dist/services/launcher.d.ts.map +1 -1
  145. package/dist/services/launcher.js +63 -10
  146. package/dist/services/launcher.js.map +1 -1
  147. package/dist/services/launcher.test.js +109 -42
  148. package/dist/services/launcher.test.js.map +1 -1
  149. package/dist/services/sn-url-builder.d.ts +21 -0
  150. package/dist/services/sn-url-builder.d.ts.map +1 -0
  151. package/dist/services/sn-url-builder.js +132 -0
  152. package/dist/services/sn-url-builder.js.map +1 -0
  153. package/dist/services/sn-url-builder.test.d.ts +2 -0
  154. package/dist/services/sn-url-builder.test.d.ts.map +1 -0
  155. package/dist/services/sn-url-builder.test.js +130 -0
  156. package/dist/services/sn-url-builder.test.js.map +1 -0
  157. package/dist/services/source-type-registry.d.ts +19 -0
  158. package/dist/services/source-type-registry.d.ts.map +1 -0
  159. package/dist/services/source-type-registry.js +66 -0
  160. package/dist/services/source-type-registry.js.map +1 -0
  161. package/dist/services/source-type-registry.test.d.ts +2 -0
  162. package/dist/services/source-type-registry.test.d.ts.map +1 -0
  163. package/dist/services/source-type-registry.test.js +124 -0
  164. package/dist/services/source-type-registry.test.js.map +1 -0
  165. package/dist/services/url-builder.d.ts +12 -0
  166. package/dist/services/url-builder.d.ts.map +1 -0
  167. package/dist/services/url-builder.js +100 -0
  168. package/dist/services/url-builder.js.map +1 -0
  169. package/dist/services/url-builder.test.d.ts +2 -0
  170. package/dist/services/url-builder.test.d.ts.map +1 -0
  171. package/dist/services/url-builder.test.js +79 -0
  172. package/dist/services/url-builder.test.js.map +1 -0
  173. package/dist/services/url-templates.d.ts +41 -0
  174. package/dist/services/url-templates.d.ts.map +1 -0
  175. package/dist/services/url-templates.js +118 -0
  176. package/dist/services/url-templates.js.map +1 -0
  177. package/dist/services/url-templates.test.d.ts +2 -0
  178. package/dist/services/url-templates.test.d.ts.map +1 -0
  179. package/dist/services/url-templates.test.js +159 -0
  180. package/dist/services/url-templates.test.js.map +1 -0
  181. package/dist/types/collection.d.ts +12 -0
  182. package/dist/types/collection.d.ts.map +1 -0
  183. package/dist/types/collection.js +4 -0
  184. package/dist/types/collection.js.map +1 -0
  185. package/dist/types/index.d.ts +2 -0
  186. package/dist/types/index.d.ts.map +1 -1
  187. package/dist/types/linkedin-url.d.ts +109 -0
  188. package/dist/types/linkedin-url.d.ts.map +1 -0
  189. package/dist/types/linkedin-url.js +4 -0
  190. package/dist/types/linkedin-url.js.map +1 -0
  191. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- export type { Account, ActionConfig, ActionErrorSummary, ActionPeopleCounts, ActionStatistics, CampaignActionConfig, CampaignActionResult, CampaignActionUpdateConfig, ActionSettings, ActionTargetPerson, Campaign, CampaignAction, CampaignConfig, CampaignPersonEntry, CampaignPersonState, CampaignRunResult, CampaignState, ResultProfileData, CampaignStatistics, CampaignStatus, CampaignSummary, CampaignUpdateConfig, CriticalErrorIssueData, DialogIssueData, ExcludeListEntry, Chat, ChatParticipant, ConversationMessages, ConversationThread, CurrentPosition, Education, ExternalId, ExternalIdTypeGroup, GetResultsOptions, GetStatisticsOptions, ImportPeopleResult, RemovePeopleResult, InstanceInfo, InstanceIssue, InstanceStatus, ListCampaignPeopleOptions, ListCampaignsOptions, Message, MessageStats, MessageSummary, MiniProfile, PopupState, Position, Profile, ProfileFindOptions, ProfileSearchOptions, ProfileSearchResult, ProfileSummary, RunnerState, Skill, StartInstanceParams, StartInstanceResult, UIHealthStatus, } from "./types/index.js";
2
- export { AccountResolutionError, ActionExecutionError, type ActionResult, AppLaunchError, AppNotFoundError, AppService, type AppServiceOptions, CampaignExecutionError, CampaignService, CampaignTimeoutError, type DatabaseContext, ExtractionTimeoutError, type InstanceDatabaseContext, InstanceNotRunningError, InstanceService, InvalidProfileUrlError, LauncherService, LinkedHelperNotRunningError, LinkedHelperUnreachableError, resolveAccount, ServiceError, StartInstanceError, startInstanceWithRecovery, UIBlockedError, type StartInstanceOutcome, checkStatus, type AccountInstanceStatus, type DatabaseStatus, type LauncherStatus, type StatusReport, waitForInstancePort, waitForInstanceShutdown, withDatabase, withInstanceDatabase, WrongPortError, } from "./services/index.js";
3
- export { CampaignExcludeListRepository, CampaignRepository, CampaignStatisticsRepository, DatabaseClient, type DatabaseClientOptions, discoverAllDatabases, discoverDatabase, MessageRepository, ProfileRepository, } from "./db/index.js";
1
+ export type { Account, ActionConfig, ActionErrorSummary, ActionPeopleCounts, ActionStatistics, CampaignActionConfig, CampaignActionResult, CampaignActionUpdateConfig, ActionSettings, ActionTargetPerson, Campaign, CampaignAction, CampaignConfig, CampaignPersonEntry, CampaignPersonState, CampaignRunResult, CampaignState, ResultProfileData, CampaignStatistics, CampaignStatus, CampaignSummary, CampaignUpdateConfig, CriticalErrorIssueData, DialogIssueData, ExcludeListEntry, Chat, ChatParticipant, ConversationMessages, ConversationThread, CurrentPosition, Education, ExternalId, ExternalIdTypeGroup, GetResultsOptions, GetStatisticsOptions, ImportPeopleResult, RemovePeopleResult, InstanceInfo, InstanceIssue, InstanceStatus, ListCampaignPeopleOptions, ListCampaignsOptions, Message, MessageStats, MessageSummary, MiniProfile, PopupState, Position, Profile, ProfileFindOptions, ProfileSearchOptions, ProfileSearchResult, ProfileSummary, RunnerState, Skill, BasicSearchParams, BooleanExpressionInput, BooleanExpressionRaw, BooleanExpressionStructured, CompanySizeEntry, ConnectionDegreeEntry, EntityMatch, EntityType, FunctionEntry, IndustryEntry, ProfileLanguageEntry, ReferenceDataType, SNFilter, SNFilterValue, SNSearchParams, SeniorityEntry, SourceTier, SourceType, StartInstanceParams, StartInstanceResult, UIHealthStatus, UrlBuilderResult, } from "./types/index.js";
2
+ export { AccountResolutionError, ActionExecutionError, type ActionResult, AppLaunchError, AppNotFoundError, AppService, type AppServiceOptions, CampaignExecutionError, CampaignService, CampaignTimeoutError, CollectionBusyError, CollectionError, type DatabaseContext, buildBasicSearchUrl, buildBooleanExpression, buildParameterisedUrl, buildSNSearchUrl, detectSourceType, getFixedUrl, getParameterType, isFixedUrlType, isParameterisedType, isSNSearchBuilderType, isSearchBuilderType, ExtractionTimeoutError, type InstanceDatabaseContext, InstanceNotRunningError, InstanceService, InvalidProfileUrlError, LauncherService, LinkedHelperNotRunningError, LinkedHelperUnreachableError, resolveAccount, ServiceError, StartInstanceError, startInstanceWithRecovery, UIBlockedError, validateSourceType, type StartInstanceOutcome, checkStatus, type AccountInstanceStatus, type DatabaseStatus, type LauncherStatus, type StatusReport, waitForInstancePort, waitForInstanceShutdown, withDatabase, withInstanceDatabase, NodeIntegrationUnavailableError, WrongPortError, } from "./services/index.js";
3
+ export { CampaignExcludeListRepository, CampaignRepository, CampaignStatisticsRepository, CollectionListRepository, type CollectionSummary, DatabaseClient, type DatabaseClientOptions, discoverAllDatabases, discoverDatabase, MessageRepository, ProfileRepository, } from "./db/index.js";
4
4
  export { CampaignFormatError, FormatError, parseCampaignJson, parseCampaignYaml, serializeCampaignJson, serializeCampaignYaml, } from "./formats/index.js";
5
- export { type ActionCategory, type ActionType, type ActionTypeCatalog, type ActionTypeInfo, type ConfigFieldSchema, getActionTypeCatalog, getActionTypeInfo, } from "./data/index.js";
5
+ export { type ActionCategory, type ActionType, type ActionTypeCatalog, type ActionTypeInfo, type ConfigFieldSchema, getActionTypeCatalog, getActionTypeInfo, getFunctionById, getIndustryById, getLinkedInReferenceData, getSeniorityById, isReferenceDataType, } from "./data/index.js";
6
6
  export { ActionNotFoundError, CampaignNotFoundError, ChatNotFoundError, DatabaseError, DatabaseNotFoundError, ExcludeListNotFoundError, NoNextActionError, ProfileNotFoundError, } from "./db/index.js";
7
7
  export { CDPConnectionError, CDPError, CDPEvaluationError, CDPTimeoutError, discoverInstancePort, discoverTargets, findApp, type DiscoveredApp, killInstanceProcesses, } from "./cdp/index.js";
8
- export { type ConnectionOptions, campaignGet, type CampaignGetInput, type CampaignGetOutput, campaignList, type CampaignListInput, type CampaignListOutput, campaignCreate, type CampaignCreateInput, type CampaignCreateOutput, campaignUpdate, type CampaignUpdateInput, type CampaignUpdateOutput, campaignDelete, type CampaignDeleteInput, type CampaignDeleteOutput, campaignListPeople, type CampaignListPeopleInput, type CampaignListPeopleOutput, campaignStart, type CampaignStartInput, type CampaignStartOutput, campaignStop, type CampaignStopInput, type CampaignStopOutput, campaignRetry, type CampaignRetryInput, type CampaignRetryOutput, campaignMoveNext, type CampaignMoveNextInput, type CampaignMoveNextOutput, campaignStatistics, type CampaignStatisticsInput, type CampaignStatisticsOutput, campaignStatus, type CampaignStatusInput, type CampaignStatusOutput, campaignAddAction, type CampaignAddActionInput, type CampaignAddActionOutput, campaignRemoveAction, type CampaignRemoveActionInput, type CampaignRemoveActionOutput, campaignUpdateAction, type CampaignUpdateActionInput, type CampaignUpdateActionOutput, campaignReorderActions, type CampaignReorderActionsInput, type CampaignReorderActionsOutput, campaignExport, type CampaignExportInput, type CampaignExportOutput, campaignExcludeAdd, type CampaignExcludeAddInput, type CampaignExcludeAddOutput, campaignExcludeRemove, type CampaignExcludeRemoveInput, type CampaignExcludeRemoveOutput, campaignExcludeList, type CampaignExcludeListInput, type CampaignExcludeListOutput, getErrors, type GetErrorsInput, type GetErrorsOutput, queryMessages, type QueryMessagesInput, type QueryMessagesOutput, checkReplies, type CheckRepliesInput, type CheckRepliesOutput, scrapeMessagingHistory, type ScrapeMessagingHistoryInput, type ScrapeMessagingHistoryOutput, importPeopleFromUrls, type ImportPeopleFromUrlsInput, type ImportPeopleFromUrlsOutput, campaignRemovePeople, type CampaignRemovePeopleInput, type CampaignRemovePeopleOutput, } from "./operations/index.js";
8
+ export { type ConnectionOptions, campaignGet, type CampaignGetInput, type CampaignGetOutput, campaignList, type CampaignListInput, type CampaignListOutput, campaignCreate, type CampaignCreateInput, type CampaignCreateOutput, campaignUpdate, type CampaignUpdateInput, type CampaignUpdateOutput, campaignDelete, type CampaignDeleteInput, type CampaignDeleteOutput, collectPeople, type CollectPeopleInput, type CollectPeopleOutput, campaignListPeople, type CampaignListPeopleInput, type CampaignListPeopleOutput, campaignStart, type CampaignStartInput, type CampaignStartOutput, campaignStop, type CampaignStopInput, type CampaignStopOutput, campaignRetry, type CampaignRetryInput, type CampaignRetryOutput, campaignMoveNext, type CampaignMoveNextInput, type CampaignMoveNextOutput, campaignStatistics, type CampaignStatisticsInput, type CampaignStatisticsOutput, campaignStatus, type CampaignStatusInput, type CampaignStatusOutput, campaignAddAction, type CampaignAddActionInput, type CampaignAddActionOutput, campaignRemoveAction, type CampaignRemoveActionInput, type CampaignRemoveActionOutput, campaignUpdateAction, type CampaignUpdateActionInput, type CampaignUpdateActionOutput, campaignReorderActions, type CampaignReorderActionsInput, type CampaignReorderActionsOutput, campaignExport, type CampaignExportInput, type CampaignExportOutput, campaignExcludeAdd, type CampaignExcludeAddInput, type CampaignExcludeAddOutput, campaignExcludeRemove, type CampaignExcludeRemoveInput, type CampaignExcludeRemoveOutput, campaignExcludeList, type CampaignExcludeListInput, type CampaignExcludeListOutput, getErrors, type GetErrorsInput, type GetErrorsOutput, queryMessages, type QueryMessagesInput, type QueryMessagesOutput, checkReplies, type CheckRepliesInput, type CheckRepliesOutput, scrapeMessagingHistory, type ScrapeMessagingHistoryInput, type ScrapeMessagingHistoryOutput, importPeopleFromUrls, type ImportPeopleFromUrlsInput, type ImportPeopleFromUrlsOutput, campaignRemovePeople, type CampaignRemovePeopleInput, type CampaignRemovePeopleOutput, listCollections, type ListCollectionsInput, type ListCollectionsOutput, createCollection, type CreateCollectionInput, type CreateCollectionOutput, deleteCollection, type DeleteCollectionInput, type DeleteCollectionOutput, addPeopleToCollection, type AddPeopleToCollectionInput, type AddPeopleToCollectionOutput, removePeopleFromCollection, type RemovePeopleFromCollectionInput, type RemovePeopleFromCollectionOutput, importPeopleFromCollection, type ImportPeopleFromCollectionInput, type ImportPeopleFromCollectionOutput, buildLinkedInUrl, type BuildLinkedInUrlInput, type BuildLinkedInUrlOutput, resolveLinkedInEntity, type ResolveLinkedInEntityInput, type ResolveLinkedInEntityOutput, } from "./operations/index.js";
9
9
  export { DEFAULT_CDP_PORT } from "./constants.js";
10
10
  export { delay, errorMessage, isCdpPort, isLoopbackAddress } from "./utils/index.js";
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  // SPDX-License-Identifier: AGPL-3.0-only
2
2
  // Copyright (C) 2026 Oleksii PELYKH
3
3
  // Services
4
- export { AccountResolutionError, ActionExecutionError, AppLaunchError, AppNotFoundError, AppService, CampaignExecutionError, CampaignService, CampaignTimeoutError, ExtractionTimeoutError, InstanceNotRunningError, InstanceService, InvalidProfileUrlError, LauncherService, LinkedHelperNotRunningError, LinkedHelperUnreachableError, resolveAccount, ServiceError, StartInstanceError, startInstanceWithRecovery, UIBlockedError, checkStatus, waitForInstancePort, waitForInstanceShutdown, withDatabase, withInstanceDatabase, WrongPortError, } from "./services/index.js";
4
+ export { AccountResolutionError, ActionExecutionError, AppLaunchError, AppNotFoundError, AppService, CampaignExecutionError, CampaignService, CampaignTimeoutError, CollectionBusyError, CollectionError, buildBasicSearchUrl, buildBooleanExpression, buildParameterisedUrl, buildSNSearchUrl, detectSourceType, getFixedUrl, getParameterType, isFixedUrlType, isParameterisedType, isSNSearchBuilderType, isSearchBuilderType, ExtractionTimeoutError, InstanceNotRunningError, InstanceService, InvalidProfileUrlError, LauncherService, LinkedHelperNotRunningError, LinkedHelperUnreachableError, resolveAccount, ServiceError, StartInstanceError, startInstanceWithRecovery, UIBlockedError, validateSourceType, checkStatus, waitForInstancePort, waitForInstanceShutdown, withDatabase, withInstanceDatabase, NodeIntegrationUnavailableError, WrongPortError, } from "./services/index.js";
5
5
  // Data access
6
- export { CampaignExcludeListRepository, CampaignRepository, CampaignStatisticsRepository, DatabaseClient, discoverAllDatabases, discoverDatabase, MessageRepository, ProfileRepository, } from "./db/index.js";
6
+ export { CampaignExcludeListRepository, CampaignRepository, CampaignStatisticsRepository, CollectionListRepository, DatabaseClient, discoverAllDatabases, discoverDatabase, MessageRepository, ProfileRepository, } from "./db/index.js";
7
7
  // Formats
8
8
  export { CampaignFormatError, FormatError, parseCampaignJson, parseCampaignYaml, serializeCampaignJson, serializeCampaignYaml, } from "./formats/index.js";
9
9
  // Data (action types catalog)
10
- export { getActionTypeCatalog, getActionTypeInfo, } from "./data/index.js";
10
+ export { getActionTypeCatalog, getActionTypeInfo, getFunctionById, getIndustryById, getLinkedInReferenceData, getSeniorityById, isReferenceDataType, } from "./data/index.js";
11
11
  // Errors (DB + CDP errors can propagate through the service layer)
12
12
  export { ActionNotFoundError, CampaignNotFoundError, ChatNotFoundError, DatabaseError, DatabaseNotFoundError, ExcludeListNotFoundError, NoNextActionError, ProfileNotFoundError, } from "./db/index.js";
13
13
  export { CDPConnectionError, CDPError, CDPEvaluationError, CDPTimeoutError, discoverInstancePort, discoverTargets, findApp, killInstanceProcesses, } from "./cdp/index.js";
@@ -15,6 +15,8 @@ export { CDPConnectionError, CDPError, CDPEvaluationError, CDPTimeoutError, disc
15
15
  export {
16
16
  // Campaign CRUD
17
17
  campaignGet, campaignList, campaignCreate, campaignUpdate, campaignDelete,
18
+ // People collection
19
+ collectPeople,
18
20
  // Campaign people
19
21
  campaignListPeople,
20
22
  // Campaign execution
@@ -26,7 +28,11 @@ campaignExcludeAdd, campaignExcludeRemove, campaignExcludeList,
26
28
  // Error detection
27
29
  getErrors,
28
30
  // Messaging
29
- queryMessages, checkReplies, scrapeMessagingHistory, importPeopleFromUrls, campaignRemovePeople, } from "./operations/index.js";
31
+ queryMessages, checkReplies, scrapeMessagingHistory, importPeopleFromUrls, campaignRemovePeople,
32
+ // Collections (Lists)
33
+ listCollections, createCollection, deleteCollection, addPeopleToCollection, removePeopleFromCollection, importPeopleFromCollection,
34
+ // URL building & entity resolution
35
+ buildLinkedInUrl, resolveLinkedInEntity, } from "./operations/index.js";
30
36
  // Constants
31
37
  export { DEFAULT_CDP_PORT } from "./constants.js";
32
38
  // Utilities
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAgEpC,WAAW;AACX,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EAEpB,cAAc,EACd,gBAAgB,EAChB,UAAU,EAEV,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EAEpB,sBAAsB,EAEtB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,2BAA2B,EAC3B,4BAA4B,EAC5B,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,cAAc,EAEd,WAAW,EAKX,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,cAAc;AACd,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,4BAA4B,EAC5B,cAAc,EAEd,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,UAAU;AACV,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,8BAA8B;AAC9B,OAAO,EAML,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,mEAAmE;AACnE,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,OAAO,EAEP,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,mDAAmD;AACnD,OAAO;AAEL,gBAAgB;AAChB,WAAW,EAGX,YAAY,EAGZ,cAAc,EAGd,cAAc,EAGd,cAAc;AAGd,kBAAkB;AAClB,kBAAkB;AAGlB,qBAAqB;AACrB,aAAa,EAGb,YAAY,EAGZ,aAAa,EAGb,gBAAgB,EAGhB,kBAAkB,EAGlB,cAAc;AAGd,yBAAyB;AACzB,iBAAiB,EAGjB,oBAAoB,EAGpB,oBAAoB,EAGpB,sBAAsB,EAGtB,cAAc;AAGd,eAAe;AACf,kBAAkB,EAGlB,qBAAqB,EAGrB,mBAAmB;AAGnB,kBAAkB;AAClB,SAAS;AAGT,YAAY;AACZ,aAAa,EAGb,YAAY,EAGZ,sBAAsB,EAGtB,oBAAoB,EAGpB,oBAAoB,GAGrB,MAAM,uBAAuB,CAAC;AAE/B,YAAY;AACZ,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,YAAY;AACZ,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAmFpC,WAAW;AACX,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EAEpB,cAAc,EACd,gBAAgB,EAChB,UAAU,EAEV,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EAEf,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EAEtB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,2BAA2B,EAC3B,4BAA4B,EAC5B,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAElB,WAAW,EAKX,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,oBAAoB,EACpB,+BAA+B,EAC/B,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,cAAc;AACd,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,4BAA4B,EAC5B,wBAAwB,EAExB,cAAc,EAEd,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,UAAU;AACV,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,8BAA8B;AAC9B,OAAO,EAML,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,mEAAmE;AACnE,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,OAAO,EAEP,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,mDAAmD;AACnD,OAAO;AAEL,gBAAgB;AAChB,WAAW,EAGX,YAAY,EAGZ,cAAc,EAGd,cAAc,EAGd,cAAc;AAGd,oBAAoB;AACpB,aAAa;AAGb,kBAAkB;AAClB,kBAAkB;AAGlB,qBAAqB;AACrB,aAAa,EAGb,YAAY,EAGZ,aAAa,EAGb,gBAAgB,EAGhB,kBAAkB,EAGlB,cAAc;AAGd,yBAAyB;AACzB,iBAAiB,EAGjB,oBAAoB,EAGpB,oBAAoB,EAGpB,sBAAsB,EAGtB,cAAc;AAGd,eAAe;AACf,kBAAkB,EAGlB,qBAAqB,EAGrB,mBAAmB;AAGnB,kBAAkB;AAClB,SAAS;AAGT,YAAY;AACZ,aAAa,EAGb,YAAY,EAGZ,sBAAsB,EAGtB,oBAAoB,EAGpB,oBAAoB;AAGpB,sBAAsB;AACtB,eAAe,EAGf,gBAAgB,EAGhB,gBAAgB,EAGhB,qBAAqB,EAGrB,0BAA0B,EAG1B,0BAA0B;AAG1B,mCAAmC;AACnC,gBAAgB,EAGhB,qBAAqB,GAGtB,MAAM,uBAAuB,CAAC;AAE/B,YAAY;AACZ,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,YAAY;AACZ,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { ConnectionOptions } from "./types.js";
2
+ /**
3
+ * Input for the add-people-to-collection operation.
4
+ */
5
+ export interface AddPeopleToCollectionInput extends ConnectionOptions {
6
+ readonly collectionId: number;
7
+ readonly personIds: number[];
8
+ }
9
+ /**
10
+ * Output from the add-people-to-collection operation.
11
+ */
12
+ export interface AddPeopleToCollectionOutput {
13
+ readonly success: true;
14
+ readonly collectionId: number;
15
+ readonly added: number;
16
+ readonly alreadyInCollection: number;
17
+ }
18
+ /**
19
+ * Add people to a collection by person IDs.
20
+ */
21
+ export declare function addPeopleToCollection(input: AddPeopleToCollectionInput): Promise<AddPeopleToCollectionOutput>;
22
+ //# sourceMappingURL=add-people-to-collection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-people-to-collection.d.ts","sourceRoot":"","sources":["../../src/operations/add-people-to-collection.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,2BAA2B,CAAC,CAkBtC"}
@@ -0,0 +1,27 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { resolveAccount } from "../services/account-resolution.js";
4
+ import { withDatabase } from "../services/instance-context.js";
5
+ import { CollectionListRepository } from "../db/index.js";
6
+ import { DEFAULT_CDP_PORT } from "../constants.js";
7
+ /**
8
+ * Add people to a collection by person IDs.
9
+ */
10
+ export async function addPeopleToCollection(input) {
11
+ const cdpPort = input.cdpPort ?? DEFAULT_CDP_PORT;
12
+ const accountId = await resolveAccount(cdpPort, {
13
+ ...(input.cdpHost !== undefined && { host: input.cdpHost }),
14
+ ...(input.allowRemote !== undefined && { allowRemote: input.allowRemote }),
15
+ });
16
+ return withDatabase(accountId, ({ db }) => {
17
+ const repo = new CollectionListRepository(db);
18
+ const added = repo.addPeople(input.collectionId, input.personIds);
19
+ return {
20
+ success: true,
21
+ collectionId: input.collectionId,
22
+ added,
23
+ alreadyInCollection: input.personIds.length - added,
24
+ };
25
+ }, { readOnly: false });
26
+ }
27
+ //# sourceMappingURL=add-people-to-collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-people-to-collection.js","sourceRoot":"","sources":["../../src/operations/add-people-to-collection.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAqBnD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAiC;IAEjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC;IAElD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE;QAC9C,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3D,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;KAC3E,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,IAAI,wBAAwB,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAClE,OAAO;YACL,OAAO,EAAE,IAAa;YACtB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,KAAK;YACL,mBAAmB,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK;SACpD,CAAC;IACJ,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=add-people-to-collection.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-people-to-collection.test.d.ts","sourceRoot":"","sources":["../../src/operations/add-people-to-collection.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
4
+ vi.mock("../services/account-resolution.js", () => ({
5
+ resolveAccount: vi.fn(),
6
+ }));
7
+ vi.mock("../services/instance-context.js", () => ({
8
+ withDatabase: vi.fn(),
9
+ }));
10
+ vi.mock("../db/index.js", () => ({
11
+ CollectionListRepository: vi.fn(),
12
+ }));
13
+ import { resolveAccount } from "../services/account-resolution.js";
14
+ import { withDatabase } from "../services/instance-context.js";
15
+ import { CollectionListRepository } from "../db/index.js";
16
+ import { addPeopleToCollection } from "./add-people-to-collection.js";
17
+ function setupMocks(added = 2) {
18
+ vi.mocked(resolveAccount).mockResolvedValue(1);
19
+ vi.mocked(withDatabase).mockImplementation(async (_accountId, callback) => callback({ accountId: 1, db: {} }));
20
+ vi.mocked(CollectionListRepository).mockImplementation(function () {
21
+ return {
22
+ addPeople: vi.fn().mockReturnValue(added),
23
+ };
24
+ });
25
+ }
26
+ describe("addPeopleToCollection", () => {
27
+ beforeEach(() => {
28
+ vi.clearAllMocks();
29
+ });
30
+ afterEach(() => {
31
+ vi.restoreAllMocks();
32
+ });
33
+ it("returns added count and alreadyInCollection", async () => {
34
+ setupMocks(2);
35
+ const result = await addPeopleToCollection({
36
+ collectionId: 10,
37
+ personIds: [1, 2, 3],
38
+ cdpPort: 9222,
39
+ });
40
+ expect(result.success).toBe(true);
41
+ expect(result.collectionId).toBe(10);
42
+ expect(result.added).toBe(2);
43
+ expect(result.alreadyInCollection).toBe(1);
44
+ });
45
+ it("passes collectionId and personIds to repository", async () => {
46
+ setupMocks();
47
+ await addPeopleToCollection({
48
+ collectionId: 10,
49
+ personIds: [1, 2],
50
+ cdpPort: 9222,
51
+ });
52
+ const mockResult = vi.mocked(CollectionListRepository).mock.results[0];
53
+ expect(mockResult.value.addPeople).toHaveBeenCalledWith(10, [1, 2]);
54
+ });
55
+ it("opens database in write mode", async () => {
56
+ setupMocks();
57
+ await addPeopleToCollection({
58
+ collectionId: 10,
59
+ personIds: [1],
60
+ cdpPort: 9222,
61
+ });
62
+ expect(withDatabase).toHaveBeenCalledWith(1, expect.any(Function), { readOnly: false });
63
+ });
64
+ it("propagates resolveAccount errors", async () => {
65
+ vi.mocked(resolveAccount).mockRejectedValue(new Error("connection refused"));
66
+ await expect(addPeopleToCollection({ collectionId: 10, personIds: [1], cdpPort: 9222 })).rejects.toThrow("connection refused");
67
+ });
68
+ });
69
+ //# sourceMappingURL=add-people-to-collection.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-people-to-collection.test.js","sourceRoot":"","sources":["../../src/operations/add-people-to-collection.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { BasicSearchParams, SNSearchParams, UrlBuilderResult } from "../types/linkedin-url.js";
2
+ /**
3
+ * Input for the unified LinkedIn URL builder.
4
+ */
5
+ export interface BuildLinkedInUrlInput {
6
+ /** The LinkedIn source type to build a URL for. */
7
+ readonly sourceType: string;
8
+ readonly keywords?: BasicSearchParams["keywords"] | undefined;
9
+ readonly currentCompany?: string[] | undefined;
10
+ readonly pastCompany?: string[] | undefined;
11
+ readonly geoUrn?: string[] | undefined;
12
+ readonly industry?: string[] | undefined;
13
+ readonly school?: string[] | undefined;
14
+ readonly network?: string[] | undefined;
15
+ readonly profileLanguage?: string[] | undefined;
16
+ readonly serviceCategory?: string[] | undefined;
17
+ readonly filters?: SNSearchParams["filters"] | undefined;
18
+ readonly slug?: string | undefined;
19
+ readonly id?: string | undefined;
20
+ }
21
+ /**
22
+ * Output from the unified URL builder.
23
+ */
24
+ export type BuildLinkedInUrlOutput = UrlBuilderResult;
25
+ /**
26
+ * Build a LinkedIn URL for any supported source type.
27
+ *
28
+ * Dispatches to the appropriate builder based on the source type:
29
+ * - `SearchPage` → basic search URL builder
30
+ * - `SNSearchPage` → Sales Navigator URL builder
31
+ * - Parameterised types → template substitution
32
+ * - Fixed types → static URL lookup
33
+ *
34
+ * @param input - Build parameters including source type
35
+ * @returns The built URL with any warnings
36
+ * @throws Error if the source type is unknown or required params are missing
37
+ */
38
+ export declare function buildLinkedInUrl(input: BuildLinkedInUrlInput): BuildLinkedInUrlOutput;
39
+ //# sourceMappingURL=build-linkedin-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-linkedin-url.d.ts","sourceRoot":"","sources":["../../src/operations/build-linkedin-url.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAalC;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAG5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAGhD,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAGzD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,qBAAqB,GAC3B,sBAAsB,CA+DxB"}
@@ -0,0 +1,72 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { validateSourceType } from "../services/source-type-registry.js";
4
+ import { buildBasicSearchUrl } from "../services/url-builder.js";
5
+ import { buildSNSearchUrl } from "../services/sn-url-builder.js";
6
+ import { buildParameterisedUrl, getFixedUrl, isFixedUrlType, isParameterisedType, isSNSearchBuilderType, isSearchBuilderType, } from "../services/url-templates.js";
7
+ /**
8
+ * Build a LinkedIn URL for any supported source type.
9
+ *
10
+ * Dispatches to the appropriate builder based on the source type:
11
+ * - `SearchPage` → basic search URL builder
12
+ * - `SNSearchPage` → Sales Navigator URL builder
13
+ * - Parameterised types → template substitution
14
+ * - Fixed types → static URL lookup
15
+ *
16
+ * @param input - Build parameters including source type
17
+ * @returns The built URL with any warnings
18
+ * @throws Error if the source type is unknown or required params are missing
19
+ */
20
+ export function buildLinkedInUrl(input) {
21
+ if (!validateSourceType(input.sourceType)) {
22
+ throw new Error(`Unknown source type: "${input.sourceType}"`);
23
+ }
24
+ const sourceType = input.sourceType;
25
+ // SearchPage → basic search builder
26
+ if (isSearchBuilderType(sourceType)) {
27
+ const params = {
28
+ ...(input.keywords !== undefined && { keywords: input.keywords }),
29
+ ...(input.currentCompany !== undefined && { currentCompany: input.currentCompany }),
30
+ ...(input.pastCompany !== undefined && { pastCompany: input.pastCompany }),
31
+ ...(input.geoUrn !== undefined && { geoUrn: input.geoUrn }),
32
+ ...(input.industry !== undefined && { industry: input.industry }),
33
+ ...(input.school !== undefined && { school: input.school }),
34
+ ...(input.network !== undefined && { network: input.network }),
35
+ ...(input.profileLanguage !== undefined && { profileLanguage: input.profileLanguage }),
36
+ ...(input.serviceCategory !== undefined && { serviceCategory: input.serviceCategory }),
37
+ };
38
+ return buildBasicSearchUrl(params);
39
+ }
40
+ // SNSearchPage → SN search builder
41
+ if (isSNSearchBuilderType(sourceType)) {
42
+ const params = {
43
+ ...(input.keywords !== undefined && { keywords: input.keywords }),
44
+ ...(input.filters !== undefined && { filters: input.filters }),
45
+ };
46
+ return buildSNSearchUrl(params);
47
+ }
48
+ // Parameterised template types
49
+ if (isParameterisedType(sourceType)) {
50
+ const url = buildParameterisedUrl(sourceType, {
51
+ ...(input.slug !== undefined && { slug: input.slug }),
52
+ ...(input.id !== undefined && { id: input.id }),
53
+ });
54
+ if (url === undefined) {
55
+ throw new Error(`Missing required parameter for source type "${sourceType}": ` +
56
+ "provide slug or id as appropriate");
57
+ }
58
+ return { url, sourceType, warnings: [] };
59
+ }
60
+ // Fixed URL types
61
+ if (isFixedUrlType(sourceType)) {
62
+ const url = getFixedUrl(sourceType);
63
+ if (url === undefined) {
64
+ throw new Error(`Missing fixed URL for source type "${sourceType}" (internal error)`);
65
+ }
66
+ return { url, sourceType, warnings: [] };
67
+ }
68
+ // Should not reach here if validateSourceType passed,
69
+ // but handle gracefully
70
+ throw new Error(`No URL builder available for source type "${sourceType}"`);
71
+ }
72
+ //# sourceMappingURL=build-linkedin-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-linkedin-url.js","sourceRoot":"","sources":["../../src/operations/build-linkedin-url.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { SourceType } from "../types/index.js";
2
+ import type { ConnectionOptions } from "./types.js";
3
+ /**
4
+ * Input for the collect-people operation.
5
+ */
6
+ export interface CollectPeopleInput extends ConnectionOptions {
7
+ /** LinkedIn page URL to collect people from. */
8
+ readonly sourceUrl: string;
9
+ /** Campaign to collect people into. */
10
+ readonly campaignId: number;
11
+ /** Maximum number of profiles to collect. */
12
+ readonly limit?: number;
13
+ /** Maximum number of pages to process. */
14
+ readonly maxPages?: number;
15
+ /** Number of results per page. */
16
+ readonly pageSize?: number;
17
+ /** Explicit source type to bypass URL detection. */
18
+ readonly sourceType?: string;
19
+ }
20
+ /**
21
+ * Output from the collect-people operation.
22
+ */
23
+ export interface CollectPeopleOutput {
24
+ readonly success: true;
25
+ readonly campaignId: number;
26
+ readonly sourceType: SourceType;
27
+ }
28
+ /**
29
+ * Orchestrate people collection from a LinkedIn page into a campaign.
30
+ *
31
+ * Detects the source type from the URL (or uses an explicit override),
32
+ * then initiates collection via {@link CollectionService}. Returns
33
+ * immediately — the caller should poll `campaign-status` to monitor
34
+ * progress.
35
+ *
36
+ * @throws {CollectionError} if the source type is unknown or invalid.
37
+ * @throws {CollectionBusyError} if the instance is not idle.
38
+ */
39
+ export declare function collectPeople(input: CollectPeopleInput): Promise<CollectPeopleOutput>;
40
+ //# sourceMappingURL=collect-people.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-people.d.ts","sourceRoot":"","sources":["../../src/operations/collect-people.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAyC9B"}
@@ -0,0 +1,55 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { resolveAccount } from "../services/account-resolution.js";
4
+ import { withInstanceDatabase } from "../services/instance-context.js";
5
+ import { CollectionService } from "../services/collection.js";
6
+ import { CollectionError } from "../services/errors.js";
7
+ import { detectSourceType, validateSourceType } from "../services/source-type-registry.js";
8
+ import { DEFAULT_CDP_PORT } from "../constants.js";
9
+ /**
10
+ * Orchestrate people collection from a LinkedIn page into a campaign.
11
+ *
12
+ * Detects the source type from the URL (or uses an explicit override),
13
+ * then initiates collection via {@link CollectionService}. Returns
14
+ * immediately — the caller should poll `campaign-status` to monitor
15
+ * progress.
16
+ *
17
+ * @throws {CollectionError} if the source type is unknown or invalid.
18
+ * @throws {CollectionBusyError} if the instance is not idle.
19
+ */
20
+ export async function collectPeople(input) {
21
+ const cdpPort = input.cdpPort ?? DEFAULT_CDP_PORT;
22
+ // Resolve source type: explicit override or URL detection
23
+ let sourceType;
24
+ if (input.sourceType !== undefined) {
25
+ if (!validateSourceType(input.sourceType)) {
26
+ throw new CollectionError(`Invalid source type: ${input.sourceType}`);
27
+ }
28
+ sourceType = input.sourceType;
29
+ }
30
+ else {
31
+ const detected = detectSourceType(input.sourceUrl);
32
+ if (!detected) {
33
+ throw new CollectionError(`Unrecognized source URL: ${input.sourceUrl} — cannot determine LinkedIn page type`);
34
+ }
35
+ sourceType = detected;
36
+ }
37
+ const accountId = await resolveAccount(cdpPort, {
38
+ ...(input.cdpHost !== undefined && { host: input.cdpHost }),
39
+ ...(input.allowRemote !== undefined && { allowRemote: input.allowRemote }),
40
+ });
41
+ return withInstanceDatabase(cdpPort, accountId, async ({ instance }) => {
42
+ const collectionService = new CollectionService(instance);
43
+ await collectionService.collect(input.sourceUrl, input.campaignId, {
44
+ ...(input.limit !== undefined && { limit: input.limit }),
45
+ ...(input.maxPages !== undefined && { maxPages: input.maxPages }),
46
+ ...(input.pageSize !== undefined && { pageSize: input.pageSize }),
47
+ });
48
+ return {
49
+ success: true,
50
+ campaignId: input.campaignId,
51
+ sourceType,
52
+ };
53
+ });
54
+ }
55
+ //# sourceMappingURL=collect-people.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-people.js","sourceRoot":"","sources":["../../src/operations/collect-people.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AA8BnD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAyB;IAEzB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC;IAElD,0DAA0D;IAC1D,IAAI,UAAsB,CAAC;IAC3B,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,eAAe,CACvB,wBAAwB,KAAK,CAAC,UAAU,EAAE,CAC3C,CAAC;QACJ,CAAC;QACD,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,eAAe,CACvB,4BAA4B,KAAK,CAAC,SAAS,wCAAwC,CACpF,CAAC;QACJ,CAAC;QACD,UAAU,GAAG,QAAQ,CAAC;IACxB,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE;QAC9C,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3D,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;KAC3E,CAAC,CAAC;IAEH,OAAO,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrE,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE;YACjE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YACxD,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjE,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;SAClE,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAa;YACtB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU;SACX,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=collect-people.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-people.test.d.ts","sourceRoot":"","sources":["../../src/operations/collect-people.test.ts"],"names":[],"mappings":""}