@sixthsummit/ship-api 0.0.0-stage โ†’ 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (556) hide show
  1. package/CHANGELOG.md +605 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +4 -0
  4. package/README.md +58 -2
  5. package/cli/commands/add.js +537 -0
  6. package/cli/commands/contract.js +2 -0
  7. package/cli/commands/create.js +250 -0
  8. package/cli/commands/dev.js +227 -0
  9. package/cli/commands/doctor.js +286 -0
  10. package/cli/commands/generate.js +937 -0
  11. package/cli/commands/graph.js +2 -0
  12. package/cli/commands/migrate-orm.js +1171 -0
  13. package/cli/commands/update.js +37 -0
  14. package/cli/ship-api.js +285 -0
  15. package/lib/app/auth/AuthProvider.d.ts +91 -0
  16. package/lib/app/auth/AuthProvider.d.ts.map +1 -0
  17. package/lib/app/auth/AuthProvider.js +13 -0
  18. package/lib/app/auth/AuthProvider.js.map +1 -0
  19. package/lib/app/auth/adapters/firebase.d.ts +79 -0
  20. package/lib/app/auth/adapters/firebase.d.ts.map +1 -0
  21. package/lib/app/auth/adapters/firebase.js +122 -0
  22. package/lib/app/auth/adapters/firebase.js.map +1 -0
  23. package/lib/app/auth/adapters/jwtCookie.d.ts +55 -0
  24. package/lib/app/auth/adapters/jwtCookie.d.ts.map +1 -0
  25. package/lib/app/auth/adapters/jwtCookie.js +120 -0
  26. package/lib/app/auth/adapters/jwtCookie.js.map +1 -0
  27. package/lib/app/auth/index.d.ts +8 -0
  28. package/lib/app/auth/index.d.ts.map +1 -0
  29. package/lib/app/auth/index.js +7 -0
  30. package/lib/app/auth/index.js.map +1 -0
  31. package/lib/app/auth/jwt/AuthFlow.d.ts +94 -0
  32. package/lib/app/auth/jwt/AuthFlow.d.ts.map +1 -0
  33. package/lib/app/auth/jwt/AuthFlow.js +127 -0
  34. package/lib/app/auth/jwt/AuthFlow.js.map +1 -0
  35. package/lib/app/auth/jwt/DrizzleRefreshTokenStore.d.ts +80 -0
  36. package/lib/app/auth/jwt/DrizzleRefreshTokenStore.d.ts.map +1 -0
  37. package/lib/app/auth/jwt/DrizzleRefreshTokenStore.js +134 -0
  38. package/lib/app/auth/jwt/DrizzleRefreshTokenStore.js.map +1 -0
  39. package/lib/app/auth/jwt/JwtSigner.d.ts +123 -0
  40. package/lib/app/auth/jwt/JwtSigner.d.ts.map +1 -0
  41. package/lib/app/auth/jwt/JwtSigner.js +118 -0
  42. package/lib/app/auth/jwt/JwtSigner.js.map +1 -0
  43. package/lib/app/auth/jwt/RefreshTokenStore.d.ts +97 -0
  44. package/lib/app/auth/jwt/RefreshTokenStore.d.ts.map +1 -0
  45. package/lib/app/auth/jwt/RefreshTokenStore.js +122 -0
  46. package/lib/app/auth/jwt/RefreshTokenStore.js.map +1 -0
  47. package/lib/app/auth/permissionDefinition.d.ts +20 -0
  48. package/lib/app/auth/permissionDefinition.d.ts.map +1 -0
  49. package/lib/app/auth/permissionDefinition.js +2 -0
  50. package/lib/app/auth/permissionDefinition.js.map +1 -0
  51. package/lib/app/context/RequestContext.d.ts +59 -0
  52. package/lib/app/context/RequestContext.d.ts.map +1 -0
  53. package/lib/app/context/RequestContext.js +25 -0
  54. package/lib/app/context/RequestContext.js.map +1 -0
  55. package/lib/app/db/QueryOptions.d.ts +82 -0
  56. package/lib/app/db/QueryOptions.d.ts.map +1 -0
  57. package/lib/app/db/QueryOptions.js +37 -0
  58. package/lib/app/db/QueryOptions.js.map +1 -0
  59. package/lib/app/db/baseFields.d.ts +60 -0
  60. package/lib/app/db/baseFields.d.ts.map +1 -0
  61. package/lib/app/db/baseFields.js +54 -0
  62. package/lib/app/db/baseFields.js.map +1 -0
  63. package/lib/app/db/buildWhere.d.ts +22 -0
  64. package/lib/app/db/buildWhere.d.ts.map +1 -0
  65. package/lib/app/db/buildWhere.js +75 -0
  66. package/lib/app/db/buildWhere.js.map +1 -0
  67. package/lib/app/db/client.d.ts +111 -0
  68. package/lib/app/db/client.d.ts.map +1 -0
  69. package/lib/app/db/client.js +99 -0
  70. package/lib/app/db/client.js.map +1 -0
  71. package/lib/app/db/tenantScoped.d.ts +59 -0
  72. package/lib/app/db/tenantScoped.d.ts.map +1 -0
  73. package/lib/app/db/tenantScoped.js +54 -0
  74. package/lib/app/db/tenantScoped.js.map +1 -0
  75. package/lib/app/db/transaction.d.ts +58 -0
  76. package/lib/app/db/transaction.d.ts.map +1 -0
  77. package/lib/app/db/transaction.js +106 -0
  78. package/lib/app/db/transaction.js.map +1 -0
  79. package/lib/app/health/HealthCheck.d.ts +121 -0
  80. package/lib/app/health/HealthCheck.d.ts.map +1 -0
  81. package/lib/app/health/HealthCheck.js +151 -0
  82. package/lib/app/health/HealthCheck.js.map +1 -0
  83. package/lib/app/health/redisHealthCheck.d.ts +14 -0
  84. package/lib/app/health/redisHealthCheck.d.ts.map +1 -0
  85. package/lib/app/health/redisHealthCheck.js +21 -0
  86. package/lib/app/health/redisHealthCheck.js.map +1 -0
  87. package/lib/app/lifecycle/Bootstrapper.d.ts +92 -0
  88. package/lib/app/lifecycle/Bootstrapper.d.ts.map +1 -0
  89. package/lib/app/lifecycle/Bootstrapper.js +99 -0
  90. package/lib/app/lifecycle/Bootstrapper.js.map +1 -0
  91. package/lib/app/registry/routes.d.ts +89 -0
  92. package/lib/app/registry/routes.d.ts.map +1 -0
  93. package/lib/app/registry/routes.js +72 -0
  94. package/lib/app/registry/routes.js.map +1 -0
  95. package/lib/app/services/DrizzleEntityService.d.ts +123 -0
  96. package/lib/app/services/DrizzleEntityService.d.ts.map +1 -0
  97. package/lib/app/services/DrizzleEntityService.js +342 -0
  98. package/lib/app/services/DrizzleEntityService.js.map +1 -0
  99. package/lib/app/services/RedisProvider.d.ts +52 -0
  100. package/lib/app/services/RedisProvider.d.ts.map +1 -0
  101. package/lib/app/services/RedisProvider.js +75 -0
  102. package/lib/app/services/RedisProvider.js.map +1 -0
  103. package/lib/app/services/cache/Cache.d.ts +70 -0
  104. package/lib/app/services/cache/Cache.d.ts.map +1 -0
  105. package/lib/app/services/cache/Cache.js +18 -0
  106. package/lib/app/services/cache/Cache.js.map +1 -0
  107. package/lib/app/services/cache/InMemoryCache.d.ts +35 -0
  108. package/lib/app/services/cache/InMemoryCache.d.ts.map +1 -0
  109. package/lib/app/services/cache/InMemoryCache.js +76 -0
  110. package/lib/app/services/cache/InMemoryCache.js.map +1 -0
  111. package/lib/app/services/cache/RedisCache.d.ts +99 -0
  112. package/lib/app/services/cache/RedisCache.d.ts.map +1 -0
  113. package/lib/app/services/cache/RedisCache.js +150 -0
  114. package/lib/app/services/cache/RedisCache.js.map +1 -0
  115. package/lib/app/services/cache/cached.d.ts +30 -0
  116. package/lib/app/services/cache/cached.d.ts.map +1 -0
  117. package/lib/app/services/cache/cached.js +38 -0
  118. package/lib/app/services/cache/cached.js.map +1 -0
  119. package/lib/app/services/cache/index.d.ts +5 -0
  120. package/lib/app/services/cache/index.d.ts.map +1 -0
  121. package/lib/app/services/cache/index.js +4 -0
  122. package/lib/app/services/cache/index.js.map +1 -0
  123. package/lib/app/services/cron/defineCron.d.ts +57 -0
  124. package/lib/app/services/cron/defineCron.d.ts.map +1 -0
  125. package/lib/app/services/cron/defineCron.js +15 -0
  126. package/lib/app/services/cron/defineCron.js.map +1 -0
  127. package/lib/app/services/cron/index.d.ts +2 -0
  128. package/lib/app/services/cron/index.d.ts.map +1 -0
  129. package/lib/app/services/cron/index.js +2 -0
  130. package/lib/app/services/cron/index.js.map +1 -0
  131. package/lib/app/services/hooks/LifecycleHooks.d.ts +61 -0
  132. package/lib/app/services/hooks/LifecycleHooks.d.ts.map +1 -0
  133. package/lib/app/services/hooks/LifecycleHooks.js +85 -0
  134. package/lib/app/services/hooks/LifecycleHooks.js.map +1 -0
  135. package/lib/app/services/jobs/JobsManager.d.ts +67 -0
  136. package/lib/app/services/jobs/JobsManager.d.ts.map +1 -0
  137. package/lib/app/services/jobs/JobsManager.js +121 -0
  138. package/lib/app/services/jobs/JobsManager.js.map +1 -0
  139. package/lib/app/services/jobs/bullBoard.d.ts +72 -0
  140. package/lib/app/services/jobs/bullBoard.d.ts.map +1 -0
  141. package/lib/app/services/jobs/bullBoard.js +96 -0
  142. package/lib/app/services/jobs/bullBoard.js.map +1 -0
  143. package/lib/app/services/jobs/defineJob.d.ts +81 -0
  144. package/lib/app/services/jobs/defineJob.d.ts.map +1 -0
  145. package/lib/app/services/jobs/defineJob.js +49 -0
  146. package/lib/app/services/jobs/defineJob.js.map +1 -0
  147. package/lib/app/services/jobs/index.d.ts +4 -0
  148. package/lib/app/services/jobs/index.d.ts.map +1 -0
  149. package/lib/app/services/jobs/index.js +4 -0
  150. package/lib/app/services/jobs/index.js.map +1 -0
  151. package/lib/app/services/rateLimit/InMemorySlidingWindowBackend.d.ts +23 -0
  152. package/lib/app/services/rateLimit/InMemorySlidingWindowBackend.d.ts.map +1 -0
  153. package/lib/app/services/rateLimit/InMemorySlidingWindowBackend.js +51 -0
  154. package/lib/app/services/rateLimit/InMemorySlidingWindowBackend.js.map +1 -0
  155. package/lib/app/services/rateLimit/RateLimitBackend.d.ts +41 -0
  156. package/lib/app/services/rateLimit/RateLimitBackend.d.ts.map +1 -0
  157. package/lib/app/services/rateLimit/RateLimitBackend.js +19 -0
  158. package/lib/app/services/rateLimit/RateLimitBackend.js.map +1 -0
  159. package/lib/app/services/rateLimit/RedisSlidingWindowBackend.d.ts +16 -0
  160. package/lib/app/services/rateLimit/RedisSlidingWindowBackend.d.ts.map +1 -0
  161. package/lib/app/services/rateLimit/RedisSlidingWindowBackend.js +80 -0
  162. package/lib/app/services/rateLimit/RedisSlidingWindowBackend.js.map +1 -0
  163. package/lib/app/services/rateLimit/index.d.ts +4 -0
  164. package/lib/app/services/rateLimit/index.d.ts.map +1 -0
  165. package/lib/app/services/rateLimit/index.js +3 -0
  166. package/lib/app/services/rateLimit/index.js.map +1 -0
  167. package/lib/app/services/storage/DiskStorageAdapter.d.ts +62 -0
  168. package/lib/app/services/storage/DiskStorageAdapter.d.ts.map +1 -0
  169. package/lib/app/services/storage/DiskStorageAdapter.js +295 -0
  170. package/lib/app/services/storage/DiskStorageAdapter.js.map +1 -0
  171. package/lib/app/services/storage/GCSStorageAdapter.d.ts +44 -0
  172. package/lib/app/services/storage/GCSStorageAdapter.d.ts.map +1 -0
  173. package/lib/app/services/storage/GCSStorageAdapter.js +133 -0
  174. package/lib/app/services/storage/GCSStorageAdapter.js.map +1 -0
  175. package/lib/app/services/storage/S3StorageAdapter.d.ts +57 -0
  176. package/lib/app/services/storage/S3StorageAdapter.d.ts.map +1 -0
  177. package/lib/app/services/storage/S3StorageAdapter.js +162 -0
  178. package/lib/app/services/storage/S3StorageAdapter.js.map +1 -0
  179. package/lib/app/services/storage/StorageService.d.ts +88 -0
  180. package/lib/app/services/storage/StorageService.d.ts.map +1 -0
  181. package/lib/app/services/storage/StorageService.js +18 -0
  182. package/lib/app/services/storage/StorageService.js.map +1 -0
  183. package/lib/app/services/storage/index.d.ts +5 -0
  184. package/lib/app/services/storage/index.d.ts.map +1 -0
  185. package/lib/app/services/storage/index.js +4 -0
  186. package/lib/app/services/storage/index.js.map +1 -0
  187. package/lib/app/utils/ContextValidators.d.ts +46 -0
  188. package/lib/app/utils/ContextValidators.d.ts.map +1 -0
  189. package/lib/app/utils/ContextValidators.js +81 -0
  190. package/lib/app/utils/ContextValidators.js.map +1 -0
  191. package/lib/app/utils/defineEnv.d.ts +80 -0
  192. package/lib/app/utils/defineEnv.d.ts.map +1 -0
  193. package/lib/app/utils/defineEnv.js +95 -0
  194. package/lib/app/utils/defineEnv.js.map +1 -0
  195. package/lib/client.d.ts +139 -0
  196. package/lib/client.d.ts.map +1 -0
  197. package/lib/client.js +98 -0
  198. package/lib/client.js.map +1 -0
  199. package/lib/contract/application.d.ts +3 -0
  200. package/lib/contract/application.d.ts.map +1 -0
  201. package/lib/contract/application.js +2 -0
  202. package/lib/contract/application.js.map +1 -0
  203. package/lib/contract/client.d.ts +3 -0
  204. package/lib/contract/client.d.ts.map +1 -0
  205. package/lib/contract/client.js +3 -0
  206. package/lib/contract/client.js.map +1 -0
  207. package/lib/contract/index.d.ts +3 -0
  208. package/lib/contract/index.d.ts.map +1 -0
  209. package/lib/contract/index.js +3 -0
  210. package/lib/contract/index.js.map +1 -0
  211. package/lib/contract/manifest.d.ts +3 -0
  212. package/lib/contract/manifest.d.ts.map +1 -0
  213. package/lib/contract/manifest.js +2 -0
  214. package/lib/contract/manifest.js.map +1 -0
  215. package/lib/contract/openapi.d.ts +3 -0
  216. package/lib/contract/openapi.d.ts.map +1 -0
  217. package/lib/contract/openapi.js +3 -0
  218. package/lib/contract/openapi.js.map +1 -0
  219. package/lib/contract/project.d.ts +3 -0
  220. package/lib/contract/project.d.ts.map +1 -0
  221. package/lib/contract/project.js +3 -0
  222. package/lib/contract/project.js.map +1 -0
  223. package/lib/contract/schema.d.ts +3 -0
  224. package/lib/contract/schema.d.ts.map +1 -0
  225. package/lib/contract/schema.js +3 -0
  226. package/lib/contract/schema.js.map +1 -0
  227. package/lib/drizzle/index.d.ts +3 -0
  228. package/lib/drizzle/index.d.ts.map +1 -0
  229. package/lib/drizzle/index.js +3 -0
  230. package/lib/drizzle/index.js.map +1 -0
  231. package/lib/hono/auth.d.ts +6 -0
  232. package/lib/hono/auth.d.ts.map +1 -0
  233. package/lib/hono/auth.js +54 -0
  234. package/lib/hono/auth.js.map +1 -0
  235. package/lib/hono/index.d.ts +4 -0
  236. package/lib/hono/index.d.ts.map +1 -0
  237. package/lib/hono/index.js +4 -0
  238. package/lib/hono/index.js.map +1 -0
  239. package/lib/http/app/createApp.d.ts +132 -0
  240. package/lib/http/app/createApp.d.ts.map +1 -0
  241. package/lib/http/app/createApp.js +215 -0
  242. package/lib/http/app/createApp.js.map +1 -0
  243. package/lib/http/app/devRoutes.d.ts +31 -0
  244. package/lib/http/app/devRoutes.d.ts.map +1 -0
  245. package/lib/http/app/devRoutes.js +145 -0
  246. package/lib/http/app/devRoutes.js.map +1 -0
  247. package/lib/http/app/errors.d.ts +45 -0
  248. package/lib/http/app/errors.d.ts.map +1 -0
  249. package/lib/http/app/errors.js +93 -0
  250. package/lib/http/app/errors.js.map +1 -0
  251. package/lib/http/app/health.d.ts +66 -0
  252. package/lib/http/app/health.d.ts.map +1 -0
  253. package/lib/http/app/health.js +104 -0
  254. package/lib/http/app/health.js.map +1 -0
  255. package/lib/http/errors/AppError.d.ts +10 -0
  256. package/lib/http/errors/AppError.d.ts.map +1 -0
  257. package/lib/http/errors/AppError.js +19 -0
  258. package/lib/http/errors/AppError.js.map +1 -0
  259. package/lib/http/errors/AuthenticationError.d.ts +8 -0
  260. package/lib/http/errors/AuthenticationError.d.ts.map +1 -0
  261. package/lib/http/errors/AuthenticationError.js +10 -0
  262. package/lib/http/errors/AuthenticationError.js.map +1 -0
  263. package/lib/http/errors/AuthorizationError.d.ts +8 -0
  264. package/lib/http/errors/AuthorizationError.d.ts.map +1 -0
  265. package/lib/http/errors/AuthorizationError.js +10 -0
  266. package/lib/http/errors/AuthorizationError.js.map +1 -0
  267. package/lib/http/errors/BadRequestError.d.ts +8 -0
  268. package/lib/http/errors/BadRequestError.d.ts.map +1 -0
  269. package/lib/http/errors/BadRequestError.js +10 -0
  270. package/lib/http/errors/BadRequestError.js.map +1 -0
  271. package/lib/http/errors/ConflictError.d.ts +8 -0
  272. package/lib/http/errors/ConflictError.d.ts.map +1 -0
  273. package/lib/http/errors/ConflictError.js +10 -0
  274. package/lib/http/errors/ConflictError.js.map +1 -0
  275. package/lib/http/errors/InternalServerError.d.ts +8 -0
  276. package/lib/http/errors/InternalServerError.d.ts.map +1 -0
  277. package/lib/http/errors/InternalServerError.js +10 -0
  278. package/lib/http/errors/InternalServerError.js.map +1 -0
  279. package/lib/http/errors/NotFoundError.d.ts +8 -0
  280. package/lib/http/errors/NotFoundError.d.ts.map +1 -0
  281. package/lib/http/errors/NotFoundError.js +10 -0
  282. package/lib/http/errors/NotFoundError.js.map +1 -0
  283. package/lib/http/errors/RateLimitError.d.ts +13 -0
  284. package/lib/http/errors/RateLimitError.d.ts.map +1 -0
  285. package/lib/http/errors/RateLimitError.js +16 -0
  286. package/lib/http/errors/RateLimitError.js.map +1 -0
  287. package/lib/http/errors/ServiceUnavailableError.d.ts +8 -0
  288. package/lib/http/errors/ServiceUnavailableError.d.ts.map +1 -0
  289. package/lib/http/errors/ServiceUnavailableError.js +10 -0
  290. package/lib/http/errors/ServiceUnavailableError.js.map +1 -0
  291. package/lib/http/errors/ValidationError.d.ts +9 -0
  292. package/lib/http/errors/ValidationError.d.ts.map +1 -0
  293. package/lib/http/errors/ValidationError.js +12 -0
  294. package/lib/http/errors/ValidationError.js.map +1 -0
  295. package/lib/http/errors/index.d.ts +11 -0
  296. package/lib/http/errors/index.d.ts.map +1 -0
  297. package/lib/http/errors/index.js +12 -0
  298. package/lib/http/errors/index.js.map +1 -0
  299. package/lib/http/middleware/apiKey.d.ts +9 -0
  300. package/lib/http/middleware/apiKey.d.ts.map +1 -0
  301. package/lib/http/middleware/apiKey.js +71 -0
  302. package/lib/http/middleware/apiKey.js.map +1 -0
  303. package/lib/http/middleware/csrf.d.ts +63 -0
  304. package/lib/http/middleware/csrf.d.ts.map +1 -0
  305. package/lib/http/middleware/csrf.js +169 -0
  306. package/lib/http/middleware/csrf.js.map +1 -0
  307. package/lib/http/middleware/httpLogger.d.ts +39 -0
  308. package/lib/http/middleware/httpLogger.d.ts.map +1 -0
  309. package/lib/http/middleware/httpLogger.js +118 -0
  310. package/lib/http/middleware/httpLogger.js.map +1 -0
  311. package/lib/http/middleware/idempotency.d.ts +48 -0
  312. package/lib/http/middleware/idempotency.d.ts.map +1 -0
  313. package/lib/http/middleware/idempotency.js +180 -0
  314. package/lib/http/middleware/idempotency.js.map +1 -0
  315. package/lib/http/middleware/rateLimit.d.ts +105 -0
  316. package/lib/http/middleware/rateLimit.d.ts.map +1 -0
  317. package/lib/http/middleware/rateLimit.js +84 -0
  318. package/lib/http/middleware/rateLimit.js.map +1 -0
  319. package/lib/http/middleware/requireAuth.d.ts +58 -0
  320. package/lib/http/middleware/requireAuth.d.ts.map +1 -0
  321. package/lib/http/middleware/requireAuth.js +63 -0
  322. package/lib/http/middleware/requireAuth.js.map +1 -0
  323. package/lib/http/middleware/requirePermission.d.ts +23 -0
  324. package/lib/http/middleware/requirePermission.d.ts.map +1 -0
  325. package/lib/http/middleware/requirePermission.js +50 -0
  326. package/lib/http/middleware/requirePermission.js.map +1 -0
  327. package/lib/http/middleware/resolveTenant.d.ts +41 -0
  328. package/lib/http/middleware/resolveTenant.d.ts.map +1 -0
  329. package/lib/http/middleware/resolveTenant.js +17 -0
  330. package/lib/http/middleware/resolveTenant.js.map +1 -0
  331. package/lib/http/streaming/sse.d.ts +31 -0
  332. package/lib/http/streaming/sse.d.ts.map +1 -0
  333. package/lib/http/streaming/sse.js +11 -0
  334. package/lib/http/streaming/sse.js.map +1 -0
  335. package/lib/http/streaming/streamLLM.d.ts +94 -0
  336. package/lib/http/streaming/streamLLM.d.ts.map +1 -0
  337. package/lib/http/streaming/streamLLM.js +94 -0
  338. package/lib/http/streaming/streamLLM.js.map +1 -0
  339. package/lib/http/utils/authCookies.d.ts +74 -0
  340. package/lib/http/utils/authCookies.d.ts.map +1 -0
  341. package/lib/http/utils/authCookies.js +102 -0
  342. package/lib/http/utils/authCookies.js.map +1 -0
  343. package/lib/http/utils/clientIp.d.ts +85 -0
  344. package/lib/http/utils/clientIp.d.ts.map +1 -0
  345. package/lib/http/utils/clientIp.js +249 -0
  346. package/lib/http/utils/clientIp.js.map +1 -0
  347. package/lib/http/utils/index.d.ts +4 -0
  348. package/lib/http/utils/index.d.ts.map +1 -0
  349. package/lib/http/utils/index.js +5 -0
  350. package/lib/http/utils/index.js.map +1 -0
  351. package/lib/http/utils/metaTags.d.ts +49 -0
  352. package/lib/http/utils/metaTags.d.ts.map +1 -0
  353. package/lib/http/utils/metaTags.js +32 -0
  354. package/lib/http/utils/metaTags.js.map +1 -0
  355. package/lib/http/utils/publicSuffix.d.ts +34 -0
  356. package/lib/http/utils/publicSuffix.d.ts.map +1 -0
  357. package/lib/http/utils/publicSuffix.js +276 -0
  358. package/lib/http/utils/publicSuffix.js.map +1 -0
  359. package/lib/http/utils/uploads.d.ts +92 -0
  360. package/lib/http/utils/uploads.d.ts.map +1 -0
  361. package/lib/http/utils/uploads.js +126 -0
  362. package/lib/http/utils/uploads.js.map +1 -0
  363. package/lib/http/utils/validate.d.ts +41 -0
  364. package/lib/http/utils/validate.d.ts.map +1 -0
  365. package/lib/http/utils/validate.js +55 -0
  366. package/lib/http/utils/validate.js.map +1 -0
  367. package/lib/http/utils/webhooks.d.ts +63 -0
  368. package/lib/http/utils/webhooks.d.ts.map +1 -0
  369. package/lib/http/utils/webhooks.js +133 -0
  370. package/lib/http/utils/webhooks.js.map +1 -0
  371. package/lib/http/ws/auth.d.ts +46 -0
  372. package/lib/http/ws/auth.d.ts.map +1 -0
  373. package/lib/http/ws/auth.js +123 -0
  374. package/lib/http/ws/auth.js.map +1 -0
  375. package/lib/index.d.ts +80 -0
  376. package/lib/index.d.ts.map +1 -0
  377. package/lib/index.js +61 -0
  378. package/lib/index.js.map +1 -0
  379. package/lib/kernel/index.d.ts +3 -0
  380. package/lib/kernel/index.d.ts.map +1 -0
  381. package/lib/kernel/index.js +3 -0
  382. package/lib/kernel/index.js.map +1 -0
  383. package/lib/libraries/.gitkeep +0 -0
  384. package/lib/libraries/ai/CHANGELOG.md +17 -0
  385. package/lib/libraries/ai/README.md +164 -0
  386. package/lib/libraries/ai/adapters/AnthropicAdapter.ts +382 -0
  387. package/lib/libraries/ai/adapters/LLMProvider.ts +76 -0
  388. package/lib/libraries/ai/adapters/OpenAIAdapter.ts +466 -0
  389. package/lib/libraries/ai/experimental/index.ts +20 -0
  390. package/lib/libraries/ai/index.ts +128 -0
  391. package/lib/libraries/ai/library.json +19 -0
  392. package/lib/libraries/ai/loop/agentLoop.ts +377 -0
  393. package/lib/libraries/ai/prompts/definePrompt.ts +0 -0
  394. package/lib/libraries/ai/rag/retrieveAndAnswer.ts +177 -0
  395. package/lib/libraries/ai/streaming/streamLLM.ts +94 -0
  396. package/lib/libraries/ai/structured/completeStructured.ts +143 -0
  397. package/lib/libraries/ai/tokens/Tokenizer.ts +216 -0
  398. package/lib/libraries/ai/tools/defineTool.ts +208 -0
  399. package/lib/libraries/ai/types.ts +260 -0
  400. package/lib/libraries/chunking/ChunkingService.ts +103 -0
  401. package/lib/libraries/chunking/README.md +104 -0
  402. package/lib/libraries/chunking/docs/api-reference.md +549 -0
  403. package/lib/libraries/chunking/docs/best-practices.md +321 -0
  404. package/lib/libraries/chunking/docs/code-organization.md +538 -0
  405. package/lib/libraries/chunking/docs/configuration.md +418 -0
  406. package/lib/libraries/chunking/docs/index.md +236 -0
  407. package/lib/libraries/chunking/docs/quick-start.md +298 -0
  408. package/lib/libraries/chunking/docs/strategies.md +407 -0
  409. package/lib/libraries/chunking/docs/summary.md +258 -0
  410. package/lib/libraries/chunking/docs/troubleshooting.md +527 -0
  411. package/lib/libraries/chunking/index.ts +17 -0
  412. package/lib/libraries/chunking/library.json +16 -0
  413. package/lib/libraries/chunking/strategies/ChunkingStrategy.ts +13 -0
  414. package/lib/libraries/chunking/strategies/FixedLengthChunkingStrategy.ts +88 -0
  415. package/lib/libraries/chunking/strategies/SemanticChunkingStrategy.ts +389 -0
  416. package/lib/libraries/chunking/strategies/SlidingWindowChunkingStrategy.ts +258 -0
  417. package/lib/libraries/chunking/types/index.ts +63 -0
  418. package/lib/libraries/email/EmailService.ts +591 -0
  419. package/lib/libraries/email/README.md +777 -0
  420. package/lib/libraries/email/TemplateRegistry.ts +148 -0
  421. package/lib/libraries/email/TemplateRenderer.ts +273 -0
  422. package/lib/libraries/email/index.ts +4 -0
  423. package/lib/libraries/email/initializeEmailService.ts +60 -0
  424. package/lib/libraries/email/library.json +12 -0
  425. package/lib/libraries/email/types/EmailAddress.ts +4 -0
  426. package/lib/libraries/email/types/EmailAttachment.ts +11 -0
  427. package/lib/libraries/email/types/EmailTag.ts +9 -0
  428. package/lib/libraries/email/types/EmailTemplate.ts +124 -0
  429. package/lib/libraries/email/types/SendBatchEmailsOptions.ts +9 -0
  430. package/lib/libraries/email/types/SendBatchEmailsResult.ts +9 -0
  431. package/lib/libraries/email/types/SendEmailOptions.ts +33 -0
  432. package/lib/libraries/email/types/SendEmailResult.ts +9 -0
  433. package/lib/libraries/email/types/index.ts +8 -0
  434. package/lib/libraries/weaviate/QueryBuilder.ts +292 -0
  435. package/lib/libraries/weaviate/README.md +284 -0
  436. package/lib/libraries/weaviate/Weaviate.ts +1419 -0
  437. package/lib/libraries/weaviate/WeaviateConfig.ts +268 -0
  438. package/lib/libraries/weaviate/docs/.gitkeep +1 -0
  439. package/lib/libraries/weaviate/docs/API_REFERENCE.md +1067 -0
  440. package/lib/libraries/weaviate/docs/CONFIGURATION.md +320 -0
  441. package/lib/libraries/weaviate/docs/ERROR_HANDLING.md +271 -0
  442. package/lib/libraries/weaviate/docs/MULTI_TENANCY.md +348 -0
  443. package/lib/libraries/weaviate/docs/PERFORMANCE.md +602 -0
  444. package/lib/libraries/weaviate/docs/PLUGIN_DEVELOPMENT.md +547 -0
  445. package/lib/libraries/weaviate/docs/QUICK_START.md +443 -0
  446. package/lib/libraries/weaviate/docs/README.md +269 -0
  447. package/lib/libraries/weaviate/docs/SCHEMA_GUIDE.md +630 -0
  448. package/lib/libraries/weaviate/docs/WEAVIATE_README.md +520 -0
  449. package/lib/libraries/weaviate/errors/WeaviateError.ts +92 -0
  450. package/lib/libraries/weaviate/errors/index.ts +1 -0
  451. package/lib/libraries/weaviate/index.ts +35 -0
  452. package/lib/libraries/weaviate/library.json +26 -0
  453. package/lib/libraries/weaviate/plugins/index.ts +2 -0
  454. package/lib/libraries/weaviate/schemas/SchemaRegistry.ts +284 -0
  455. package/lib/libraries/weaviate/schemas/index.ts +2 -0
  456. package/lib/libraries/weaviate/types/BM25SearchOptions.ts +9 -0
  457. package/lib/libraries/weaviate/types/ExtendedWeaviateClient.ts +7 -0
  458. package/lib/libraries/weaviate/types/HybridSearchOptions.ts +11 -0
  459. package/lib/libraries/weaviate/types/MultiTenancy.ts +81 -0
  460. package/lib/libraries/weaviate/types/Plugin.ts +17 -0
  461. package/lib/libraries/weaviate/types/SchemaConfig.ts +25 -0
  462. package/lib/libraries/weaviate/types/SearchMethod.ts +8 -0
  463. package/lib/libraries/weaviate/types/SearchOptions.ts +16 -0
  464. package/lib/libraries/weaviate/types/SearchRequest.ts +19 -0
  465. package/lib/libraries/weaviate/types/SearchResult.ts +16 -0
  466. package/lib/libraries/weaviate/types/SearchableField.ts +87 -0
  467. package/lib/libraries/weaviate/types/VectorIndexConfig.ts +19 -0
  468. package/lib/libraries/weaviate/types/VectorSearchOptions.ts +18 -0
  469. package/lib/libraries/weaviate/types/VectorizerConfig.ts +8 -0
  470. package/lib/libraries/weaviate/types/index.ts +29 -0
  471. package/lib/libraries/weaviate/utils/TenantContextManager.ts +94 -0
  472. package/lib/modules/accounts/index.ts +47 -0
  473. package/lib/modules/accounts/module.json +15 -0
  474. package/lib/modules/accounts/permissions.ts +33 -0
  475. package/lib/modules/accounts/routes.ts +200 -0
  476. package/lib/modules/accounts/schema.ts +219 -0
  477. package/lib/modules/accounts/services/AccountService.ts +44 -0
  478. package/lib/modules/accounts/validation/schemas.ts +70 -0
  479. package/lib/modules/oauth/adapters/GmailOAuthAdapter.ts +35 -0
  480. package/lib/modules/oauth/adapters/GoogleOAuthAdapter.ts +278 -0
  481. package/lib/modules/oauth/adapters/MicrosoftOAuthAdapter.ts +269 -0
  482. package/lib/modules/oauth/adapters/MockOAuthAdapter.ts +138 -0
  483. package/lib/modules/oauth/adapters/OAuthAdapter.ts +211 -0
  484. package/lib/modules/oauth/adapters/OAuthAdapterRegistry.ts +77 -0
  485. package/lib/modules/oauth/adapters/OutlookOAuthAdapter.ts +38 -0
  486. package/lib/modules/oauth/index.ts +79 -0
  487. package/lib/modules/oauth/module.json +23 -0
  488. package/lib/modules/oauth/permissions.ts +39 -0
  489. package/lib/modules/oauth/routes.ts +497 -0
  490. package/lib/modules/oauth/schema.ts +127 -0
  491. package/lib/modules/oauth/services/OAuthConnectionService.ts +147 -0
  492. package/lib/modules/oauth/state.ts +234 -0
  493. package/lib/modules/oauth/stateJtiCache.ts +85 -0
  494. package/lib/modules/oauth/verifyIdToken.ts +178 -0
  495. package/lib/modules/outbox/EventEmitter.ts +106 -0
  496. package/lib/modules/outbox/OutboxDrainer.ts +163 -0
  497. package/lib/modules/outbox/handlers/EventHandler.ts +115 -0
  498. package/lib/modules/outbox/index.ts +43 -0
  499. package/lib/modules/outbox/module.json +15 -0
  500. package/lib/modules/outbox/permissions.ts +36 -0
  501. package/lib/modules/outbox/routes.ts +219 -0
  502. package/lib/modules/outbox/schema.ts +207 -0
  503. package/lib/modules/outbox/services/OutboxEventService.ts +223 -0
  504. package/lib/observability/logger.d.ts +30 -0
  505. package/lib/observability/logger.d.ts.map +1 -0
  506. package/lib/observability/logger.js +110 -0
  507. package/lib/observability/logger.js.map +1 -0
  508. package/lib/observability/metrics.d.ts +3 -0
  509. package/lib/observability/metrics.d.ts.map +1 -0
  510. package/lib/observability/metrics.js +3 -0
  511. package/lib/observability/metrics.js.map +1 -0
  512. package/lib/observability/otel.d.ts +3 -0
  513. package/lib/observability/otel.d.ts.map +1 -0
  514. package/lib/observability/otel.js +3 -0
  515. package/lib/observability/otel.js.map +1 -0
  516. package/lib/observability/safeErrorFields.d.ts +14 -0
  517. package/lib/observability/safeErrorFields.d.ts.map +1 -0
  518. package/lib/observability/safeErrorFields.js +14 -0
  519. package/lib/observability/safeErrorFields.js.map +1 -0
  520. package/lib/observability/tracing.d.ts +3 -0
  521. package/lib/observability/tracing.d.ts.map +1 -0
  522. package/lib/observability/tracing.js +3 -0
  523. package/lib/observability/tracing.js.map +1 -0
  524. package/lib/package.json +4 -0
  525. package/lib/testing.d.ts +3 -0
  526. package/lib/testing.d.ts.map +1 -0
  527. package/lib/testing.js +3 -0
  528. package/lib/testing.js.map +1 -0
  529. package/package.json +193 -3
  530. package/templates/default/.claude/agents/qa-brief.md +106 -0
  531. package/templates/default/.claude/commands/sherpa-brief.md +23 -0
  532. package/templates/default/.cursor/rules/api.mdc +80 -0
  533. package/templates/default/.cursor/rules/commits.mdc +88 -0
  534. package/templates/default/.cursor/rules/security.mdc +92 -0
  535. package/templates/default/.cursor/rules/testing.mdc +123 -0
  536. package/templates/default/.cursor/rules/typescript.mdc +86 -0
  537. package/templates/default/.env.example +79 -0
  538. package/templates/default/.github/workflows/sherpa-brief.yml +180 -0
  539. package/templates/default/AGENTS.md +166 -0
  540. package/templates/default/CLAUDE.md +17 -0
  541. package/templates/default/README.md +97 -0
  542. package/templates/default/_gitignore +27 -0
  543. package/templates/default/docker-compose.yml +83 -0
  544. package/templates/default/drizzle.config.ts +34 -0
  545. package/templates/default/eslint.config.mjs +106 -0
  546. package/templates/default/package.json +57 -0
  547. package/templates/default/ship-api.config.ts +21 -0
  548. package/templates/default/src/client.ts +34 -0
  549. package/templates/default/src/config/modules.ts +23 -0
  550. package/templates/default/src/db/schema.ts +26 -0
  551. package/templates/default/src/environment.ts +81 -0
  552. package/templates/default/src/index.test.ts +53 -0
  553. package/templates/default/src/index.ts +11 -0
  554. package/templates/default/src/instrumentation.ts +13 -0
  555. package/templates/default/src/server.ts +90 -0
  556. package/templates/default/tsconfig.json +24 -0
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Result of sending a single email
3
+ */
4
+ export interface SendEmailResult {
5
+ /** Email ID from Resend (if successful) */
6
+ id?: string;
7
+ /** Error (if failed) */
8
+ error?: Error;
9
+ }
@@ -0,0 +1,8 @@
1
+ export * from "./EmailAddress.js";
2
+ export * from "./EmailAttachment.js";
3
+ export * from "./EmailTag.js";
4
+ export * from "./EmailTemplate.js";
5
+ export * from "./SendBatchEmailsOptions.js";
6
+ export * from "./SendBatchEmailsResult.js";
7
+ export * from "./SendEmailOptions.js";
8
+ export * from "./SendEmailResult.js";
@@ -0,0 +1,292 @@
1
+ import type {
2
+ BM25SearchOptions,
3
+ HybridSearchOptions,
4
+ SearchOptions,
5
+ VectorSearchOptions,
6
+ } from "./types/index.js";
7
+
8
+ export class QueryBuilder {
9
+ private options: SearchOptions = {};
10
+
11
+ constructor(_schemaName: string) {
12
+ this.options = {};
13
+ }
14
+
15
+ /**
16
+ * Set query limit
17
+ */
18
+ limit(count: number): this {
19
+ this.options.limit = count;
20
+ return this;
21
+ }
22
+
23
+ /**
24
+ * Set query offset
25
+ */
26
+ offset(count: number): this {
27
+ this.options.offset = count;
28
+ return this;
29
+ }
30
+
31
+ /**
32
+ * Add where clause
33
+ */
34
+ where(condition: Record<string, any>): this {
35
+ this.options.where = condition;
36
+ return this;
37
+ }
38
+
39
+ /**
40
+ * Add field-based where clause
41
+ */
42
+ whereField(field: string, operator: string, value: any): this {
43
+ this.options.where = {
44
+ path: [field],
45
+ operator,
46
+ valueString: typeof value === "string" ? value : String(value),
47
+ };
48
+ return this;
49
+ }
50
+
51
+ /**
52
+ * Add multiple where conditions
53
+ */
54
+ whereAnd(conditions: Array<{ field: string; operator: string; value: any }>): this {
55
+ if (conditions.length === 1) {
56
+ return this.whereField(conditions[0].field, conditions[0].operator, conditions[0].value);
57
+ }
58
+
59
+ this.options.where = {
60
+ operator: "And",
61
+ operands: conditions.map((cond) => ({
62
+ path: [cond.field],
63
+ operator: cond.operator,
64
+ valueString: typeof cond.value === "string" ? cond.value : String(cond.value),
65
+ })),
66
+ };
67
+ return this;
68
+ }
69
+
70
+ /**
71
+ * Add OR where conditions
72
+ */
73
+ whereOr(conditions: Array<{ field: string; operator: string; value: any }>): this {
74
+ this.options.where = {
75
+ operator: "Or",
76
+ operands: conditions.map((cond) => ({
77
+ path: [cond.field],
78
+ operator: cond.operator,
79
+ valueString: typeof cond.value === "string" ? cond.value : String(cond.value),
80
+ })),
81
+ };
82
+ return this;
83
+ }
84
+
85
+ /**
86
+ * Add sort order
87
+ */
88
+ sort(field: string, order: "asc" | "desc" = "asc"): this {
89
+ this.options.sort = [{ field, order }];
90
+ return this;
91
+ }
92
+
93
+ /**
94
+ * Add multiple sort orders
95
+ */
96
+ sortBy(sorts: Array<{ field: string; order: "asc" | "desc" }>): this {
97
+ this.options.sort = sorts;
98
+ return this;
99
+ }
100
+
101
+ /**
102
+ * Specify fields to return
103
+ */
104
+ fields(fieldNames: string[]): this {
105
+ this.options.fields = fieldNames;
106
+ return this;
107
+ }
108
+
109
+ /**
110
+ * Include vector in results
111
+ */
112
+ includeVector(): this {
113
+ this.options.includeVector = true;
114
+ return this;
115
+ }
116
+
117
+ /**
118
+ * Include metadata in results
119
+ */
120
+ includeMetadata(): this {
121
+ this.options.includeMetadata = true;
122
+ return this;
123
+ }
124
+
125
+ /**
126
+ * Build vector search options
127
+ */
128
+ buildVectorSearch(
129
+ query: string,
130
+ options: {
131
+ concepts?: string[];
132
+ certainty?: number;
133
+ moveAwayFrom?: { concepts: string[]; force: number };
134
+ moveTo?: { concepts: string[]; force: number };
135
+ } = {},
136
+ ): VectorSearchOptions {
137
+ return {
138
+ ...this.options,
139
+ nearText: {
140
+ concepts: options.concepts || [query],
141
+ certainty: options.certainty,
142
+ moveAwayFrom: options.moveAwayFrom,
143
+ moveTo: options.moveTo,
144
+ },
145
+ };
146
+ }
147
+
148
+ /**
149
+ * Build BM25 search options
150
+ */
151
+ buildBM25Search(
152
+ query: string,
153
+ options: {
154
+ properties?: string[];
155
+ boost?: number;
156
+ } = {},
157
+ ): BM25SearchOptions {
158
+ return {
159
+ ...this.options,
160
+ bm25: {
161
+ query,
162
+ properties: options.properties,
163
+ boost: options.boost,
164
+ },
165
+ };
166
+ }
167
+
168
+ /**
169
+ * Build hybrid search options
170
+ */
171
+ buildHybridSearch(
172
+ query: string,
173
+ options: {
174
+ alpha?: number;
175
+ properties?: string[];
176
+ vector?: number[];
177
+ } = {},
178
+ ): HybridSearchOptions {
179
+ return {
180
+ ...this.options,
181
+ hybrid: {
182
+ query,
183
+ alpha: options.alpha || 0.5,
184
+ properties: options.properties,
185
+ vector: options.vector,
186
+ },
187
+ };
188
+ }
189
+
190
+ /**
191
+ * Build basic search options
192
+ */
193
+ build(): SearchOptions {
194
+ return { ...this.options };
195
+ }
196
+
197
+ /**
198
+ * Reset builder
199
+ */
200
+ reset(): this {
201
+ this.options = {};
202
+ return this;
203
+ }
204
+
205
+ /**
206
+ * Clone builder
207
+ */
208
+ clone(): QueryBuilder {
209
+ const cloned = new QueryBuilder("");
210
+ cloned.options = { ...this.options };
211
+ return cloned;
212
+ }
213
+ }
214
+
215
+ /**
216
+ * Factory function for creating query builders
217
+ */
218
+ export function createQueryBuilder(schemaName: string): QueryBuilder {
219
+ return new QueryBuilder(schemaName);
220
+ }
221
+
222
+ /**
223
+ * Common query patterns
224
+ */
225
+ export class QueryPatterns {
226
+ /**
227
+ * Search by date range
228
+ */
229
+ static dateRange(field: string, startDate: Date, endDate: Date): QueryBuilder {
230
+ return createQueryBuilder("").whereAnd([
231
+ { field, operator: "GreaterThanEqual", value: startDate.toISOString() },
232
+ { field, operator: "LessThanEqual", value: endDate.toISOString() },
233
+ ]);
234
+ }
235
+
236
+ /**
237
+ * Search by text contains
238
+ */
239
+ static textContains(field: string, text: string): QueryBuilder {
240
+ return createQueryBuilder("").whereField(field, "Like", `*${text}*`);
241
+ }
242
+
243
+ /**
244
+ * Search by exact match
245
+ */
246
+ static exactMatch(field: string, value: any): QueryBuilder {
247
+ return createQueryBuilder("").whereField(field, "Equal", value);
248
+ }
249
+
250
+ /**
251
+ * Search by multiple values
252
+ */
253
+ static inValues(field: string, values: any[]): QueryBuilder {
254
+ return createQueryBuilder("").where({
255
+ path: [field],
256
+ operator: "ContainsAny",
257
+ valueString: values.map((v) => String(v)),
258
+ });
259
+ }
260
+
261
+ /**
262
+ * Search by null/not null
263
+ */
264
+ static isNull(field: string, isNull: boolean = true): QueryBuilder {
265
+ return createQueryBuilder("").where({
266
+ path: [field],
267
+ operator: "IsNull",
268
+ valueString: isNull,
269
+ });
270
+ }
271
+
272
+ /**
273
+ * Search by numeric range
274
+ */
275
+ static numericRange(field: string, min?: number, max?: number): QueryBuilder {
276
+ const conditions: Array<{ field: string; operator: string; value: any }> = [];
277
+
278
+ if (min !== undefined) {
279
+ conditions.push({ field, operator: "GreaterThanEqual", value: min });
280
+ }
281
+
282
+ if (max !== undefined) {
283
+ conditions.push({ field, operator: "LessThanEqual", value: max });
284
+ }
285
+
286
+ if (conditions.length === 0) {
287
+ return createQueryBuilder("");
288
+ }
289
+
290
+ return createQueryBuilder("").whereAnd(conditions);
291
+ }
292
+ }
@@ -0,0 +1,284 @@
1
+ # `libraries/weaviate/` โ€” Weaviate vector search
2
+
3
+ A schema-driven framework around the Weaviate vector database with hybrid search, plugins, structured error handling, and an extensible architecture.
4
+
5
+ > **Install via**: `ship-api add -l weaviate`. Pulls in `weaviate-client`. Configure your Weaviate connection via env vars (see [`docs/CONFIGURATION.md`](./docs/CONFIGURATION.md)).
6
+
7
+ ## ๐Ÿš€ Quick Start
8
+
9
+ ```typescript
10
+ import Weaviate, { WeaviateConfigService } from "@sixthsummit/ship-api/libraries/weaviate";
11
+ import { schemas } from "./config/schemas";
12
+
13
+ // 1. Initialize Weaviate client
14
+ await WeaviateConfigService.initializeClient();
15
+
16
+ // 2. Create Weaviate instance (auto-initializes with default plugins)
17
+ const weaviate = new Weaviate();
18
+
19
+ // 3. Initialize schemas (once during app startup)
20
+ await weaviate.initializeSchemas(schemas);
21
+
22
+ // 4. Search with the new discriminated union pattern
23
+ const results = await weaviate.search("Person", {
24
+ method: "hybrid",
25
+ options: {
26
+ hybrid: { query: "engineer", alpha: 0.5 },
27
+ limit: 10,
28
+ },
29
+ });
30
+
31
+ // 5. Multi-tenant search
32
+ const tenantResults = await weaviate.searchWithTenant(
33
+ "Person",
34
+ {
35
+ method: "hybrid",
36
+ options: {
37
+ hybrid: { query: "engineer", alpha: 0.5 },
38
+ limit: 10,
39
+ },
40
+ },
41
+ "acme-corp",
42
+ );
43
+ ```
44
+
45
+ ## โœจ What's New
46
+
47
+ ### Recent Improvements
48
+
49
+ - โœ… **Discriminated Union Search API** - Type-safe search requests
50
+ - โœ… **Structured Error Handling** - `WeaviateError` with error codes
51
+ - โœ… **Configurable Plugins** - Control plugin initialization via options
52
+ - โœ… **Fail-Fast Validation** - Schema validation at registration time
53
+ - โœ… **Tenant Name Validation** - Consistent validation with helpful error messages
54
+ - โœ… **Simplified Architecture** - Merged `WeaviateService` into `Weaviate`
55
+ - โœ… **Instance-Based Registry** - Pure instance pattern (no global state)
56
+
57
+ ## ๐Ÿ“š Documentation
58
+
59
+ ### Essential Guides
60
+
61
+ - ๐Ÿ“– **[Complete Documentation Hub](./docs/README.md)** - Central documentation index
62
+ - ๐Ÿš€ **[Quick Start Guide](./docs/QUICK_START.md)** - Get up and running in minutes
63
+ - ๐Ÿ“˜ **[API Reference](./docs/API_REFERENCE.md)** - Complete method documentation
64
+ - ๐Ÿ—๏ธ **[Schema Guide](./docs/SCHEMA_GUIDE.md)** - Creating and managing schemas
65
+ - โš™๏ธ **[Configuration Guide](./docs/CONFIGURATION.md)** - Environment setup
66
+ - ๐Ÿข **[Multi-Tenancy Guide](./docs/MULTI_TENANCY.md)** - Tenant isolation and management
67
+ - ๐Ÿ”Œ **[Plugin Development](./docs/PLUGIN_DEVELOPMENT.md)** - Creating custom plugins
68
+ - โšก **[Performance Guide](./docs/PERFORMANCE.md)** - Optimization tips
69
+
70
+ ### Technical Documentation
71
+
72
+ - ๐Ÿšจ **[Error Handling](./docs/ERROR_HANDLING.md)** - Comprehensive error handling guide
73
+ - ๐Ÿ”ง **[Architecture Review](./docs/README.md)** - Design decisions and patterns
74
+ - ๐Ÿ“ **[Examples](./Weaviate.example.ts)** - Working code examples
75
+
76
+ ## ๐Ÿ”‘ Key Features
77
+
78
+ ### Core Functionality
79
+
80
+ - **๐ŸŽฏ Schema-Driven** - Define schemas in configuration files
81
+ - **โšก Generic Operations** - Single methods work with any schema
82
+ - **๐Ÿ” Hybrid Search** - Vector + BM25 search with configurable alpha
83
+ - **๐Ÿ—๏ธ Query Builder** - Fluent API for complex queries
84
+ - **๐Ÿ”Œ Plugin System** - Extensible with custom plugins
85
+ - **๐Ÿค– Smart Search** - Automatic method selection
86
+ - **๐ŸŒ Universal Search** - Search across multiple schemas
87
+ - **๐Ÿข Multi-Tenancy** - Built-in tenant isolation and management
88
+ - **๐Ÿšจ Error Handling** - Structured errors with codes for programmatic handling
89
+
90
+ ### Advanced Features
91
+
92
+ - **Type-Safe Search** - Discriminated unions for compile-time safety
93
+ - **Instance-Based Registry** - No global state, fully testable
94
+ - **Configurable Plugins** - Enable/disable default plugins or provide custom ones
95
+ - **Fail-Fast Validation** - Errors caught at registration, not runtime
96
+ - **Tenant Validation** - Automatic validation with helpful suggestions
97
+ - **Comprehensive Logging** - Contextual error messages for debugging
98
+
99
+ ## ๐ŸŽจ API Patterns
100
+
101
+ ### Constructor Options
102
+
103
+ ```typescript
104
+ // Default: Auto-initializes with default plugins
105
+ const weaviate = new Weaviate();
106
+
107
+ // Custom registry
108
+ const weaviate = new Weaviate({
109
+ registry: myCustomRegistry,
110
+ });
111
+
112
+ // Custom plugins
113
+ const weaviate = new Weaviate({
114
+ plugins: [new MyPlugin()],
115
+ });
116
+ ```
117
+
118
+ ### Search Methods
119
+
120
+ ```typescript
121
+ // Type-safe discriminated union pattern
122
+ const results = await weaviate.search("Person", {
123
+ method: "vector", // TypeScript narrows options based on method
124
+ options: {
125
+ nearText: { concepts: ["engineer"] },
126
+ limit: 10,
127
+ },
128
+ });
129
+
130
+ // Convenience methods (simpler API)
131
+ await weaviate.vectorSearch("Person", ["engineer"]);
132
+ await weaviate.textSearch("Person", "John Smith");
133
+ await weaviate.hybridSearch("Person", "AI researcher");
134
+ await weaviate.smartSearch("Person", "software engineer");
135
+ ```
136
+
137
+ ### Error Handling
138
+
139
+ ```typescript
140
+ import { WeaviateError, WeaviateErrorCode } from "@sixthsummit/ship-api/libraries/weaviate";
141
+
142
+ try {
143
+ await weaviate.createObject({ class: "Person", properties: { name: "John" } });
144
+ } catch (error) {
145
+ if (error instanceof WeaviateError) {
146
+ console.log(`Error ${error.code}: ${error.message}`);
147
+
148
+ if (error.is(WeaviateErrorCode.OBJECT_CREATION_ERROR)) {
149
+ // Handle creation errors specifically
150
+ }
151
+ }
152
+ }
153
+ ```
154
+
155
+ ## ๐Ÿ” Search Types
156
+
157
+ ### Vector Search (Semantic)
158
+
159
+ Best for natural language queries where meaning matters more than exact matches.
160
+
161
+ ```typescript
162
+ await weaviate.vectorSearch("Person", ["machine learning expert"]);
163
+ ```
164
+
165
+ ### BM25 Search (Keyword)
166
+
167
+ Best for exact term matching and proper names.
168
+
169
+ ```typescript
170
+ await weaviate.textSearch("Person", "John Smith");
171
+ ```
172
+
173
+ ### Hybrid Search (Recommended)
174
+
175
+ Combines both approaches for best overall results.
176
+
177
+ ```typescript
178
+ await weaviate.hybridSearch("Person", "AI researcher", { alpha: 0.5 });
179
+ ```
180
+
181
+ ## ๐Ÿงช Testing
182
+
183
+ ```bash
184
+ # Run all tests
185
+ npm test
186
+
187
+ # Run Weaviate tests only
188
+ npm test -- src/lib/weaviate/
189
+
190
+ # Run specific test file
191
+ npm test -- src/lib/weaviate/Weaviate.test.ts
192
+ ```
193
+
194
+ ## ๐Ÿ“ฆ Package Structure
195
+
196
+ ```
197
+ src/lib/weaviate/
198
+ โ”œโ”€โ”€ Weaviate.ts # Main framework class
199
+ โ”œโ”€โ”€ WeaviateConfig.ts # Connection management
200
+ โ”œโ”€โ”€ QueryBuilder.ts # Fluent query API
201
+ โ”œโ”€โ”€ SchemaRegistry.ts # Schema management
202
+ โ”œโ”€โ”€ errors/ # Error classes and codes
203
+ โ”‚ โ”œโ”€โ”€ WeaviateError.ts
204
+ โ”‚ โ””โ”€โ”€ index.ts
205
+ โ”œโ”€โ”€ schemas/ # Schema system
206
+ โ”‚ โ”œโ”€โ”€ SchemaRegistry.ts
207
+ โ”‚ โ””โ”€โ”€ index.ts
208
+ โ”œโ”€โ”€ plugins/ # Plugin system
209
+ โ”‚ โ””โ”€โ”€ index.ts # Custom plugins can be added
210
+ โ”œโ”€โ”€ types/ # TypeScript types
211
+ โ”‚ โ”œโ”€โ”€ SearchRequest.ts
212
+ โ”‚ โ”œโ”€โ”€ SchemaConfig.ts
213
+ โ”‚ โ””โ”€โ”€ ...
214
+ โ”œโ”€โ”€ utils/ # Utilities
215
+ โ”‚ โ””โ”€โ”€ TenantContextManager.ts
216
+ โ””โ”€โ”€ docs/ # Documentation
217
+ โ”œโ”€โ”€ README.md
218
+ โ”œโ”€โ”€ API_REFERENCE.md
219
+ โ”œโ”€โ”€ QUICK_START.md
220
+ โ””โ”€โ”€ ...
221
+ ```
222
+
223
+ ## ๐Ÿ”ง Development
224
+
225
+ Built with TypeScript featuring:
226
+
227
+ - **Full Type Safety** - Discriminated unions and strict typing
228
+ - **Comprehensive Tests** - Full test coverage across all components
229
+ - **Plugin Architecture** - Extensible design for custom functionality
230
+ - **Schema Validation** - Fail-fast validation at registration time
231
+ - **Error Handling** - Structured errors with codes
232
+ - **Performance Optimizations** - Efficient batch operations and caching
233
+
234
+ ## ๐Ÿ“ Examples
235
+
236
+ See [Weaviate.example.ts](./Weaviate.example.ts) for comprehensive examples including:
237
+
238
+ - Schema initialization
239
+ - All search methods
240
+ - Query builder usage
241
+ - Query patterns
242
+ - Universal search
243
+ - Custom schema registration
244
+ - CRUD operations
245
+ - Multi-tenancy
246
+
247
+ ## ๐Ÿค Contributing
248
+
249
+ When making changes:
250
+
251
+ 1. Follow the established patterns
252
+ 2. Add tests for new functionality
253
+ 3. Update documentation
254
+ 4. Run tests before committing
255
+ 5. Use structured error handling with `WeaviateError`
256
+
257
+ ## ๐Ÿ“Š Performance Tips
258
+
259
+ 1. Use **hybrid search** for general-purpose queries
260
+ 2. Use **vector search** for semantic/conceptual queries
261
+ 3. Use **BM25 search** for exact names and keywords
262
+ 4. Batch operations when creating multiple objects
263
+ 5. Use multi-tenancy for data isolation
264
+ 6. Implement proper error handling for resilience
265
+
266
+ ## ๐Ÿ†˜ Support
267
+
268
+ - **Documentation**: Start with [docs/README.md](./docs/README.md)
269
+ - **Examples**: See [Weaviate.example.ts](./Weaviate.example.ts)
270
+ - **API Reference**: Check [docs/API_REFERENCE.md](./docs/API_REFERENCE.md)
271
+ - **Error Handling**: Review [docs/ERROR_HANDLING.md](./docs/ERROR_HANDLING.md)
272
+ - **Architecture**: Review [docs/ARCHITECTURE_REVIEW.md](./docs/README.md) for design patterns
273
+
274
+ ## ๐Ÿ“„ License
275
+
276
+ Part of the SocialSweep API project.
277
+
278
+ ---
279
+
280
+ **Version**: 2.0.0 (Major refactoring with discriminated unions and structured errors)
281
+
282
+ **Last Updated**: 2025
283
+
284
+ **Status**: โœ… Production Ready