@xenterprises/fastify-xhubspot 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +295 -0
- package/LICENSE +15 -0
- package/SECURITY.md +1078 -0
- package/index.d.ts +829 -0
- package/package.json +85 -0
- package/src/index.js +3 -0
- package/src/services/companies.js +138 -0
- package/src/services/contacts.js +327 -0
- package/src/services/customObjects.js +51 -0
- package/src/services/deals.js +52 -0
- package/src/services/engagement.js +54 -0
- package/src/xHubspot.js +57 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## [1.0.0] - 2025-12-29
|
|
11
|
+
|
|
12
|
+
### ✨ Initial Release
|
|
13
|
+
|
|
14
|
+
#### Added
|
|
15
|
+
|
|
16
|
+
**Core Plugin Features:**
|
|
17
|
+
- Complete Fastify v5 plugin with fastify-plugin integration
|
|
18
|
+
- Lazy initialization of HubSpot client
|
|
19
|
+
- API key validation on startup
|
|
20
|
+
- Comprehensive error handling with correlation IDs
|
|
21
|
+
- Request logging capability with sensitive data masking
|
|
22
|
+
- Module decoration pattern for Fastify instance
|
|
23
|
+
|
|
24
|
+
**Contact Management Service:**
|
|
25
|
+
- `create(contactData)` - Create individual contacts
|
|
26
|
+
- `getById(contactId, properties)` - Retrieve contact by HubSpot ID
|
|
27
|
+
- `getByEmail(email, properties)` - Retrieve contact by email (idempotent key)
|
|
28
|
+
- `update(contactId, properties)` - Update contact properties
|
|
29
|
+
- `delete(contactId)` - Archive/delete contacts
|
|
30
|
+
- `list(options)` - Paginated contact listing with filtering
|
|
31
|
+
- `search(property, value, options)` - Search contacts by property
|
|
32
|
+
- `batchCreate(contacts)` - Bulk create up to 100 contacts per call
|
|
33
|
+
- `batchUpdate(contacts)` - Bulk update up to 100 contacts per call
|
|
34
|
+
- `getAssociations(contactId, associationType)` - Retrieve associated objects
|
|
35
|
+
- `associate(contactId, objectId, associationType)` - Create associations
|
|
36
|
+
|
|
37
|
+
**Company Management Service:**
|
|
38
|
+
- `create(companyData)` - Create companies
|
|
39
|
+
- `getById(companyId, properties)` - Retrieve company by ID
|
|
40
|
+
- `getByDomain(domain, properties)` - Retrieve company by domain
|
|
41
|
+
- `update(companyId, properties)` - Update company properties
|
|
42
|
+
- `delete(companyId)` - Archive/delete companies
|
|
43
|
+
- `list(options)` - Paginated company listing
|
|
44
|
+
- `search(property, value)` - Search companies by property
|
|
45
|
+
- `batchCreate(companies)` - Bulk create up to 100 companies
|
|
46
|
+
- `getAssociations(companyId)` - Retrieve associated contacts/deals
|
|
47
|
+
|
|
48
|
+
**Deal Management Service:**
|
|
49
|
+
- `create(dealData)` - Create deals in HubSpot sales pipeline
|
|
50
|
+
- `getById(dealId, properties)` - Retrieve deal by ID
|
|
51
|
+
- `update(dealId, properties)` - Update deal properties
|
|
52
|
+
- `delete(dealId)` - Archive/delete deals
|
|
53
|
+
- `list(options)` - Paginated deal listing with pipeline filtering
|
|
54
|
+
- `getAssociations(dealId)` - Retrieve associated contacts/companies
|
|
55
|
+
|
|
56
|
+
**Engagement/Activity Service:**
|
|
57
|
+
- `createNote(contactId, body, ownerId)` - Create engagement notes
|
|
58
|
+
- `createTask(contactId, title, options)` - Create tasks with priority and due dates
|
|
59
|
+
- `createCall(contactId, callResult, options)` - Log call engagements
|
|
60
|
+
- `createEmail(contactId, subject, body, options)` - Log email engagements
|
|
61
|
+
- `getEngagements(options)` - Retrieve contact engagement history
|
|
62
|
+
- `getNotes(contactId, limit)` - Retrieve notes for contact
|
|
63
|
+
- `getTasks(contactId, limit)` - Retrieve tasks for contact
|
|
64
|
+
|
|
65
|
+
**Custom Objects Service:**
|
|
66
|
+
- `create(objectType, properties)` - Create custom objects
|
|
67
|
+
- `getById(objectType, objectId, properties)` - Retrieve custom objects
|
|
68
|
+
- `update(objectType, objectId, properties)` - Update custom objects
|
|
69
|
+
- `delete(objectType, objectId)` - Delete custom objects
|
|
70
|
+
- `list(options)` - List custom objects with pagination
|
|
71
|
+
- `getAssociations(objectType, objectId)` - Retrieve custom object associations
|
|
72
|
+
|
|
73
|
+
**Configuration & Environment:**
|
|
74
|
+
- Comprehensive `.env.example` with 100+ configuration options
|
|
75
|
+
- Environment variable support for:
|
|
76
|
+
- HubSpot API configuration
|
|
77
|
+
- Contact/company/deal/custom object properties
|
|
78
|
+
- Batch operation sizes
|
|
79
|
+
- Rate limiting
|
|
80
|
+
- Data validation rules
|
|
81
|
+
- Webhook configuration
|
|
82
|
+
- Logging levels
|
|
83
|
+
- Feature flags for selective enablement
|
|
84
|
+
|
|
85
|
+
**Documentation:**
|
|
86
|
+
- TypeScript definitions (index.d.ts) with full type safety
|
|
87
|
+
- Comprehensive SECURITY.md with 10 security sections:
|
|
88
|
+
- API key management
|
|
89
|
+
- Authentication & authorization
|
|
90
|
+
- Data protection & privacy
|
|
91
|
+
- Webhook security
|
|
92
|
+
- Request validation & sanitization
|
|
93
|
+
- Error handling & logging
|
|
94
|
+
- Rate limiting & DOS protection
|
|
95
|
+
- Network security
|
|
96
|
+
- Third-party portal integration
|
|
97
|
+
- Compliance & regulations (GDPR, CCPA)
|
|
98
|
+
- CHANGELOG.md tracking all versions
|
|
99
|
+
- LICENSE (ISC)
|
|
100
|
+
|
|
101
|
+
**Testing:**
|
|
102
|
+
- Basic test structure in place
|
|
103
|
+
- Plugin registration validation
|
|
104
|
+
- Service availability checks
|
|
105
|
+
|
|
106
|
+
**Docker Support:**
|
|
107
|
+
- Dockerfile with multi-stage build
|
|
108
|
+
- docker-compose.yml configuration
|
|
109
|
+
- .dockerignore file
|
|
110
|
+
|
|
111
|
+
### 📋 Known Limitations
|
|
112
|
+
|
|
113
|
+
- Single browser instance for Puppeteer (in future xPDF integration)
|
|
114
|
+
- No connection pooling for HubSpot API (uses single client)
|
|
115
|
+
- Webhook processing is synchronous (async processing recommended for production)
|
|
116
|
+
- No built-in caching (Redis integration recommended for high-volume reads)
|
|
117
|
+
|
|
118
|
+
### 🔒 Security Features
|
|
119
|
+
|
|
120
|
+
- API token validation on startup
|
|
121
|
+
- HTTPS enforcement in production
|
|
122
|
+
- Webhook signature validation support
|
|
123
|
+
- Email and phone number validation
|
|
124
|
+
- Blocked email domain configuration
|
|
125
|
+
- Sensitive data logging control
|
|
126
|
+
- Request logging with data masking
|
|
127
|
+
- Rate limiting configuration
|
|
128
|
+
- GDPR/CCPA compliance guidance
|
|
129
|
+
|
|
130
|
+
### 🚀 Performance Considerations
|
|
131
|
+
|
|
132
|
+
- Lazy client initialization (creates HubSpot client on first use)
|
|
133
|
+
- Batch operations support (up to 100 items per call)
|
|
134
|
+
- Configurable rate limiting (10-500 req/sec based on tier)
|
|
135
|
+
- Retry logic with exponential backoff
|
|
136
|
+
- Connection reuse for all operations
|
|
137
|
+
|
|
138
|
+
### 📚 Dependencies
|
|
139
|
+
|
|
140
|
+
#### Runtime
|
|
141
|
+
- `fastify-plugin`: ^5.0.0
|
|
142
|
+
- `@hubspot/api-client`: ^15.0.0 (or latest)
|
|
143
|
+
|
|
144
|
+
#### Development
|
|
145
|
+
- `fastify`: ^5.1.0
|
|
146
|
+
- `node`: ^20.0.0
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## [Unreleased] - Future Enhancements
|
|
151
|
+
|
|
152
|
+
### Planned for v1.1.0
|
|
153
|
+
|
|
154
|
+
**Features:**
|
|
155
|
+
- [ ] Contact deduplication API
|
|
156
|
+
- [ ] Contact merge functionality
|
|
157
|
+
- [ ] Advanced contact search with filters
|
|
158
|
+
- [ ] Deal pipeline stages API
|
|
159
|
+
- [ ] Deal stage automation
|
|
160
|
+
- [ ] Engagement batch operations
|
|
161
|
+
- [ ] Email template support
|
|
162
|
+
- [ ] SMS integration (via Twilio bridge)
|
|
163
|
+
- [ ] Workflow automation integration
|
|
164
|
+
- [ ] Custom property definitions API
|
|
165
|
+
|
|
166
|
+
**Performance:**
|
|
167
|
+
- [ ] Connection pooling
|
|
168
|
+
- [ ] Request caching layer
|
|
169
|
+
- [ ] Batch operation queuing
|
|
170
|
+
- [ ] Response compression
|
|
171
|
+
|
|
172
|
+
**Developer Experience:**
|
|
173
|
+
- [ ] GraphQL support
|
|
174
|
+
- [ ] Webhook sandbox environment
|
|
175
|
+
- [ ] Mock API for testing
|
|
176
|
+
- [ ] CLI tools for bulk operations
|
|
177
|
+
- [ ] Database schema sync utilities
|
|
178
|
+
|
|
179
|
+
### Planned for v1.2.0
|
|
180
|
+
|
|
181
|
+
**Features:**
|
|
182
|
+
- [ ] List/segment management
|
|
183
|
+
- [ ] Email campaign integration
|
|
184
|
+
- [ ] Chatbot/conversation API
|
|
185
|
+
- [ ] Landing page management
|
|
186
|
+
- [ ] Form submission handling
|
|
187
|
+
- [ ] Invoice generation
|
|
188
|
+
- [ ] Advanced reporting
|
|
189
|
+
- [ ] Custom field type support
|
|
190
|
+
|
|
191
|
+
**Compliance:**
|
|
192
|
+
- [ ] HIPAA compliance guidelines
|
|
193
|
+
- [ ] SOC 2 compliance documentation
|
|
194
|
+
- [ ] Data residency options
|
|
195
|
+
- [ ] Encryption at rest
|
|
196
|
+
|
|
197
|
+
**Infrastructure:**
|
|
198
|
+
- [ ] Kubernetes manifests
|
|
199
|
+
- [ ] Helm charts
|
|
200
|
+
- [ ] Terraform modules
|
|
201
|
+
- [ ] Load balancer configuration
|
|
202
|
+
|
|
203
|
+
### Planned for v2.0.0 (Major Release)
|
|
204
|
+
|
|
205
|
+
**Breaking Changes:**
|
|
206
|
+
- Migration to ES modules only (drop CommonJS)
|
|
207
|
+
- Required Node.js 22+
|
|
208
|
+
- Fastify v6+ support
|
|
209
|
+
|
|
210
|
+
**New Features:**
|
|
211
|
+
- [ ] GraphQL API server
|
|
212
|
+
- [ ] Real-time webhooks with WebSocket
|
|
213
|
+
- [ ] AI-powered contact recommendations
|
|
214
|
+
- [ ] Advanced analytics dashboard
|
|
215
|
+
- [ ] Multi-tenant support
|
|
216
|
+
- [ ] Custom database backends
|
|
217
|
+
|
|
218
|
+
**Performance:**
|
|
219
|
+
- [ ] Edge function support (Vercel, Cloudflare)
|
|
220
|
+
- [ ] Serverless function optimization
|
|
221
|
+
- [ ] Micro-service architecture support
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Version History
|
|
226
|
+
|
|
227
|
+
### v1.0.0 - 2025-12-29
|
|
228
|
+
- ✅ Initial production release
|
|
229
|
+
- ✅ All core features implemented
|
|
230
|
+
- ✅ Full documentation and type definitions
|
|
231
|
+
- ✅ Comprehensive security guidelines
|
|
232
|
+
- ✅ Docker support
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Migration Guides
|
|
237
|
+
|
|
238
|
+
### Upgrading from Beta to v1.0.0
|
|
239
|
+
|
|
240
|
+
No breaking changes - this is the first stable release.
|
|
241
|
+
|
|
242
|
+
### Future v1.0.0 → v1.1.0 Upgrade
|
|
243
|
+
|
|
244
|
+
Expected to be non-breaking. No API changes expected.
|
|
245
|
+
|
|
246
|
+
### Future v1.x → v2.0.0 Upgrade
|
|
247
|
+
|
|
248
|
+
Will include breaking changes:
|
|
249
|
+
- CommonJS removed (ES modules only)
|
|
250
|
+
- Node.js 22+ required
|
|
251
|
+
- Fastify v6+ required
|
|
252
|
+
- New API design for some services
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Release Schedule
|
|
257
|
+
|
|
258
|
+
- **v1.0.0**: 2025-12-29 (Initial release)
|
|
259
|
+
- **v1.1.0**: Estimated Q1 2026
|
|
260
|
+
- **v1.2.0**: Estimated Q2 2026
|
|
261
|
+
- **v2.0.0**: Estimated Q4 2026 (major rewrite)
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Support & Security Updates
|
|
266
|
+
|
|
267
|
+
| Version | Release Date | End of Life | Security Updates |
|
|
268
|
+
|---------|------------|----------|-----------------|
|
|
269
|
+
| 1.0.x | 2025-12-29 | 2027-12-29 | Until EOL |
|
|
270
|
+
| 1.1.x | 2026-Q1 | 2027-Q1 | Until EOL |
|
|
271
|
+
| 2.0.x | 2026-Q4 | 2028-Q4 | Until EOL |
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Contributing
|
|
276
|
+
|
|
277
|
+
Please follow these guidelines when submitting changes:
|
|
278
|
+
|
|
279
|
+
1. Reference an issue number in your PR
|
|
280
|
+
2. Include a test for new features
|
|
281
|
+
3. Update CHANGELOG.md in your PR
|
|
282
|
+
4. Follow [Keep a Changelog](https://keepachangelog.com/) format
|
|
283
|
+
5. Use semantic versioning for version bumps
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Security Announcements
|
|
288
|
+
|
|
289
|
+
None currently. All security issues should be reported privately to the maintainer.
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
**Last Updated:** 2025-12-29
|
|
294
|
+
**Maintainer:** Tim Mushen
|
|
295
|
+
**License:** ISC
|
package/LICENSE
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
ISC License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Tim Mushen
|
|
4
|
+
|
|
5
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
7
|
+
copyright notice and this permission notice appear in all copies.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
10
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
11
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
12
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
13
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
14
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
15
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|