@hasna/connectors 0.9.2 → 0.9.3

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