@memberjunction/integration-connectors 5.51.0 → 6.1.0-edge.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.
- package/LICENSE +7 -0
- package/README.md +109 -277
- package/dist/index.d.ts +0 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -38
- package/dist/index.js.map +1 -1
- package/package.json +14 -19
- package/dist/AptifyConnector.d.ts +0 -95
- package/dist/AptifyConnector.d.ts.map +0 -1
- package/dist/AptifyConnector.js +0 -760
- package/dist/AptifyConnector.js.map +0 -1
- package/dist/BlackbaudConnector.d.ts +0 -64
- package/dist/BlackbaudConnector.d.ts.map +0 -1
- package/dist/BlackbaudConnector.js +0 -916
- package/dist/BlackbaudConnector.js.map +0 -1
- package/dist/ConstantContactConnector.d.ts +0 -137
- package/dist/ConstantContactConnector.d.ts.map +0 -1
- package/dist/ConstantContactConnector.js +0 -663
- package/dist/ConstantContactConnector.js.map +0 -1
- package/dist/CventConnector.d.ts +0 -146
- package/dist/CventConnector.d.ts.map +0 -1
- package/dist/CventConnector.js +0 -540
- package/dist/CventConnector.js.map +0 -1
- package/dist/DynamicsDataverseConnector.d.ts +0 -296
- package/dist/DynamicsDataverseConnector.d.ts.map +0 -1
- package/dist/DynamicsDataverseConnector.js +0 -790
- package/dist/DynamicsDataverseConnector.js.map +0 -1
- package/dist/FileFeedConnector.d.ts +0 -64
- package/dist/FileFeedConnector.d.ts.map +0 -1
- package/dist/FileFeedConnector.js +0 -190
- package/dist/FileFeedConnector.js.map +0 -1
- package/dist/FontevaConnector.d.ts +0 -153
- package/dist/FontevaConnector.d.ts.map +0 -1
- package/dist/FontevaConnector.js +0 -421
- package/dist/FontevaConnector.js.map +0 -1
- package/dist/GrowthZoneConnector.d.ts +0 -183
- package/dist/GrowthZoneConnector.d.ts.map +0 -1
- package/dist/GrowthZoneConnector.js +0 -702
- package/dist/GrowthZoneConnector.js.map +0 -1
- package/dist/HivebriteConnector.d.ts +0 -151
- package/dist/HivebriteConnector.d.ts.map +0 -1
- package/dist/HivebriteConnector.js +0 -533
- package/dist/HivebriteConnector.js.map +0 -1
- package/dist/HubSpotConnector.d.ts +0 -523
- package/dist/HubSpotConnector.d.ts.map +0 -1
- package/dist/HubSpotConnector.js +0 -3110
- package/dist/HubSpotConnector.js.map +0 -1
- package/dist/IMISConnector.d.ts +0 -171
- package/dist/IMISConnector.d.ts.map +0 -1
- package/dist/IMISConnector.js +0 -695
- package/dist/IMISConnector.js.map +0 -1
- package/dist/MJToMJConnector.d.ts +0 -279
- package/dist/MJToMJConnector.d.ts.map +0 -1
- package/dist/MJToMJConnector.js +0 -893
- package/dist/MJToMJConnector.js.map +0 -1
- package/dist/MagnetMailConnector.d.ts +0 -163
- package/dist/MagnetMailConnector.d.ts.map +0 -1
- package/dist/MagnetMailConnector.js +0 -823
- package/dist/MagnetMailConnector.js.map +0 -1
- package/dist/MailchimpConnector.d.ts +0 -197
- package/dist/MailchimpConnector.d.ts.map +0 -1
- package/dist/MailchimpConnector.js +0 -791
- package/dist/MailchimpConnector.js.map +0 -1
- package/dist/MemberSuiteConnector.d.ts +0 -185
- package/dist/MemberSuiteConnector.d.ts.map +0 -1
- package/dist/MemberSuiteConnector.js +0 -762
- package/dist/MemberSuiteConnector.js.map +0 -1
- package/dist/NeonCRMConnector.d.ts +0 -273
- package/dist/NeonCRMConnector.d.ts.map +0 -1
- package/dist/NeonCRMConnector.js +0 -1039
- package/dist/NeonCRMConnector.js.map +0 -1
- package/dist/NetForumConnector.d.ts +0 -170
- package/dist/NetForumConnector.d.ts.map +0 -1
- package/dist/NetForumConnector.js +0 -778
- package/dist/NetForumConnector.js.map +0 -1
- package/dist/NetSuiteConnector.d.ts +0 -136
- package/dist/NetSuiteConnector.d.ts.map +0 -1
- package/dist/NetSuiteConnector.js +0 -703
- package/dist/NetSuiteConnector.js.map +0 -1
- package/dist/NimbleAMSConnector.d.ts +0 -142
- package/dist/NimbleAMSConnector.d.ts.map +0 -1
- package/dist/NimbleAMSConnector.js +0 -703
- package/dist/NimbleAMSConnector.js.map +0 -1
- package/dist/NoviConnector.d.ts +0 -178
- package/dist/NoviConnector.d.ts.map +0 -1
- package/dist/NoviConnector.js +0 -566
- package/dist/NoviConnector.js.map +0 -1
- package/dist/ORCIDConnector.d.ts +0 -207
- package/dist/ORCIDConnector.d.ts.map +0 -1
- package/dist/ORCIDConnector.js +0 -708
- package/dist/ORCIDConnector.js.map +0 -1
- package/dist/OpenWaterConnector.d.ts +0 -173
- package/dist/OpenWaterConnector.d.ts.map +0 -1
- package/dist/OpenWaterConnector.js +0 -893
- package/dist/OpenWaterConnector.js.map +0 -1
- package/dist/PathLMSConnector.d.ts +0 -395
- package/dist/PathLMSConnector.d.ts.map +0 -1
- package/dist/PathLMSConnector.js +0 -1281
- package/dist/PathLMSConnector.js.map +0 -1
- package/dist/PheedLoopConnector.d.ts +0 -119
- package/dist/PheedLoopConnector.d.ts.map +0 -1
- package/dist/PheedLoopConnector.js +0 -429
- package/dist/PheedLoopConnector.js.map +0 -1
- package/dist/PropFuelConnector.d.ts +0 -153
- package/dist/PropFuelConnector.d.ts.map +0 -1
- package/dist/PropFuelConnector.js +0 -450
- package/dist/PropFuelConnector.js.map +0 -1
- package/dist/QuickBooksConnector.d.ts +0 -92
- package/dist/QuickBooksConnector.d.ts.map +0 -1
- package/dist/QuickBooksConnector.js +0 -713
- package/dist/QuickBooksConnector.js.map +0 -1
- package/dist/RasaConnector.d.ts +0 -152
- package/dist/RasaConnector.d.ts.map +0 -1
- package/dist/RasaConnector.js +0 -929
- package/dist/RasaConnector.js.map +0 -1
- package/dist/Reach360Connector.d.ts +0 -175
- package/dist/Reach360Connector.d.ts.map +0 -1
- package/dist/Reach360Connector.js +0 -796
- package/dist/Reach360Connector.js.map +0 -1
- package/dist/RelationalDBConnector.d.ts +0 -108
- package/dist/RelationalDBConnector.d.ts.map +0 -1
- package/dist/RelationalDBConnector.js +0 -228
- package/dist/RelationalDBConnector.js.map +0 -1
- package/dist/RhythmConnector.d.ts +0 -188
- package/dist/RhythmConnector.d.ts.map +0 -1
- package/dist/RhythmConnector.js +0 -784
- package/dist/RhythmConnector.js.map +0 -1
- package/dist/SageIntacctConnector.d.ts +0 -337
- package/dist/SageIntacctConnector.d.ts.map +0 -1
- package/dist/SageIntacctConnector.js +0 -2081
- package/dist/SageIntacctConnector.js.map +0 -1
- package/dist/SalesforceConnector.d.ts +0 -461
- package/dist/SalesforceConnector.d.ts.map +0 -1
- package/dist/SalesforceConnector.js +0 -1862
- package/dist/SalesforceConnector.js.map +0 -1
- package/dist/SharePointConnector.d.ts +0 -188
- package/dist/SharePointConnector.d.ts.map +0 -1
- package/dist/SharePointConnector.js +0 -716
- package/dist/SharePointConnector.js.map +0 -1
- package/dist/WicketConnector.d.ts +0 -252
- package/dist/WicketConnector.d.ts.map +0 -1
- package/dist/WicketConnector.js +0 -938
- package/dist/WicketConnector.js.map +0 -1
- package/dist/WildApricotConnector.d.ts +0 -201
- package/dist/WildApricotConnector.d.ts.map +0 -1
- package/dist/WildApricotConnector.js +0 -1129
- package/dist/WildApricotConnector.js.map +0 -1
- package/dist/YourMembershipConnector.d.ts +0 -349
- package/dist/YourMembershipConnector.d.ts.map +0 -1
- package/dist/YourMembershipConnector.js +0 -4062
- package/dist/YourMembershipConnector.js.map +0 -1
- package/dist/generate-integration-actions.d.ts +0 -23
- package/dist/generate-integration-actions.d.ts.map +0 -1
- package/dist/generate-integration-actions.js +0 -201
- package/dist/generate-integration-actions.js.map +0 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
ISC License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 MemberJunction
|
|
4
|
+
|
|
5
|
+
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,283 +1,122 @@
|
|
|
1
1
|
# @memberjunction/integration-connectors
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
External Data Source connector **base classes** for the MemberJunction Integration Engine.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
> **6.x: the concrete vendor connectors have moved out of this package.**
|
|
6
|
+
> Every connector that used to live here now ships from
|
|
7
|
+
> [MemberJunction/Integrations](https://github.com/MemberJunction/Integrations) as its own Open App.
|
|
8
|
+
> See [What moved, and where](#what-moved-and-where) below.
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
## What's still here
|
|
8
11
|
|
|
9
|
-
|
|
12
|
+
Three abstract base classes — the shared layer that the per-engine External Data Source connectors
|
|
13
|
+
extend. They are the entire public surface of this package.
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
| Export | Role |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `BaseExternalDataSourceConnector` | The heart: bridges the Integration Engine's fetch/discovery contract onto the `@memberjunction/external-data-sources` connection layer. |
|
|
18
|
+
| `BaseSqlExternalDataSourceConnector` | SQL-flavoured specialisation. Extended by the SQL Server, PostgreSQL, MySQL, Oracle and Snowflake leaves. |
|
|
19
|
+
| `BaseDocumentDataSourceConnector` | Document-store specialisation. Extended by the MongoDB leaf. |
|
|
12
20
|
|
|
13
|
-
|
|
21
|
+
These stayed because six shipped Open Apps import them from this package rather than duplicating them:
|
|
14
22
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
The connector auto-detects the auth flow based on the credentials provided.
|
|
20
|
-
|
|
21
|
-
**1. Client Credentials Flow** (recommended for new setups):
|
|
22
|
-
```json
|
|
23
|
-
{
|
|
24
|
-
"authFlow": "client_credentials",
|
|
25
|
-
"loginUrl": "https://myorg.my.salesforce.com",
|
|
26
|
-
"clientId": "3MVG9...your-consumer-key",
|
|
27
|
-
"clientSecret": "D4A28...your-client-secret",
|
|
28
|
-
"apiVersion": "61.0"
|
|
29
|
-
}
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
**2. JWT Bearer Token Flow** (RS256, certificate-based):
|
|
33
|
-
```json
|
|
34
|
-
{
|
|
35
|
-
"authFlow": "jwt_bearer",
|
|
36
|
-
"loginUrl": "https://login.salesforce.com",
|
|
37
|
-
"tokenUrl": "https://myorg.my.salesforce.com",
|
|
38
|
-
"clientId": "3MVG9...your-consumer-key",
|
|
39
|
-
"username": "integration-user@myorg.com",
|
|
40
|
-
"privateKey": "-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----",
|
|
41
|
-
"apiVersion": "61.0"
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
| Field | Required | Description |
|
|
46
|
-
|---|---|---|
|
|
47
|
-
| `loginUrl` | Yes | Org URL. For Client Credentials: My Domain URL. For JWT: `login.salesforce.com` (prod) or `test.salesforce.com` (sandbox) as the JWT audience. |
|
|
48
|
-
| `clientId` | Yes | Connected App Consumer Key |
|
|
49
|
-
| `clientSecret` | CC only | Client Secret from Connected App |
|
|
50
|
-
| `username` | JWT only | Integration user's Salesforce email |
|
|
51
|
-
| `privateKey` | JWT only | PEM-encoded RSA private key (matching X.509 cert uploaded to Connected App) |
|
|
52
|
-
| `tokenUrl` | No | Token endpoint URL if different from `loginUrl` (e.g., My Domain URL for JWT flow) |
|
|
53
|
-
| `apiVersion` | No | Salesforce REST API version (default: `61.0`) |
|
|
54
|
-
| `authFlow` | No | Explicit flow selection. Auto-detected: `clientSecret` present → `client_credentials`; `privateKey` + `username` present → `jwt_bearer` |
|
|
55
|
-
|
|
56
|
-
**Capabilities:**
|
|
57
|
-
- Full CRUD (Create, Read, Update, Delete)
|
|
58
|
-
- SOQL-based search
|
|
59
|
-
- Live schema discovery via Describe API (standard + custom objects)
|
|
60
|
-
- Incremental sync with `SystemModstamp` watermarks and `queryAll` for deleted records
|
|
61
|
-
- Governor limit tracking (throttles at 80%, pauses at 95%)
|
|
62
|
-
- Automatic token caching and refresh
|
|
63
|
-
|
|
64
|
-
**Standard Objects (9):** Account, Contact, Lead, Opportunity, Task, Event, Case, Campaign, User (read-only)
|
|
65
|
-
|
|
66
|
-
**Default field mappings:**
|
|
67
|
-
| Source Object | Target Entity | Key Mappings |
|
|
68
|
-
|---|---|---|
|
|
69
|
-
| Contact | Contacts | Email (key), FirstName, LastName, Phone, MobilePhone, Title, Department, mailing address fields (12 total) |
|
|
70
|
-
| Account | Companies | Name (key), Industry, Phone, Website, billing address fields, Type, AnnualRevenue, NumberOfEmployees (10 total) |
|
|
71
|
-
| Lead | Contacts | Email (key), FirstName, LastName, Company, Phone, Title (6 total) |
|
|
72
|
-
|
|
73
|
-
See also: [Connector usage guide](../docs/salesforce-connector.md) · [Connected App setup guide](../docs/salesforce-connected-app-setup.md)
|
|
74
|
-
|
|
75
|
-
#### HubSpotConnector
|
|
76
|
-
|
|
77
|
-
Production connector for HubSpot CRM using the V3 API with full bidirectional sync, including association objects.
|
|
78
|
-
|
|
79
|
-
**Registration:** `@RegisterClass(BaseIntegrationConnector, 'HubSpotConnector')`
|
|
80
|
-
|
|
81
|
-
**Authentication:** OAuth2 Bearer token via HubSpot Private App credentials.
|
|
82
|
-
|
|
83
|
-
**Capabilities:** Full CRUD, search, list, association fetching (v4 per-object associations endpoint)
|
|
84
|
-
|
|
85
|
-
**Objects:** Contacts, Companies, Deals, Owners, Tickets, Line Items, plus association objects (Contact↔Company, Deal↔Company, etc.)
|
|
86
|
-
|
|
87
|
-
**Default field mappings:**
|
|
88
|
-
| Source Object | Target Entity | Key Mappings |
|
|
89
|
-
|---|---|---|
|
|
90
|
-
| Contacts | Contacts | email (key), firstname, lastname, phone, company, lifecyclestage |
|
|
91
|
-
| Companies | Companies | name (key), domain, industry, city, state |
|
|
92
|
-
|
|
93
|
-
#### RasaConnector
|
|
94
|
-
|
|
95
|
-
Production connector for Rasa.io newsletter platform. Read-only — pulls newsletter and subscriber data.
|
|
96
|
-
|
|
97
|
-
**Registration:** `@RegisterClass(BaseIntegrationConnector, 'RasaConnector')`
|
|
98
|
-
|
|
99
|
-
**Authentication:** Basic auth (username/password) to obtain a JWT, scoped to a community ID.
|
|
100
|
-
|
|
101
|
-
**Objects:** Newsletters, Newsletter Sections, Newsletter Section Items, Subscribers
|
|
102
|
-
|
|
103
|
-
#### WicketConnector
|
|
104
|
-
|
|
105
|
-
Production connector for Wicket membership management platform with full bidirectional sync.
|
|
106
|
-
|
|
107
|
-
**Registration:** `@RegisterClass(BaseIntegrationConnector, 'WicketConnector')`
|
|
108
|
-
|
|
109
|
-
**Authentication:** HMAC-SHA256 signed requests.
|
|
110
|
-
|
|
111
|
-
**Capabilities:** Full CRUD, search
|
|
112
|
-
|
|
113
|
-
### Accounting Connectors
|
|
114
|
-
|
|
115
|
-
These connectors integrate with accounting and ERP systems.
|
|
116
|
-
|
|
117
|
-
#### SageIntacctConnector
|
|
118
|
-
|
|
119
|
-
Production connector for Sage Intacct accounting/ERP using the XML Web Services API with full bidirectional sync.
|
|
120
|
-
|
|
121
|
-
**Registration:** `@RegisterClass(BaseIntegrationConnector, 'SageIntacctConnector')`
|
|
122
|
-
|
|
123
|
-
**Authentication:** Session-based — Sender ID/Password (app credentials) + User ID/Password authenticate via `getAPISession`, returning a session ID for subsequent requests.
|
|
124
|
-
|
|
125
|
-
**Credentials JSON:**
|
|
126
|
-
```json
|
|
127
|
-
{
|
|
128
|
-
"CompanyId": "your-company-id",
|
|
129
|
-
"SenderId": "your-sender-id",
|
|
130
|
-
"SenderPassword": "your-sender-password",
|
|
131
|
-
"UserId": "your-user-id",
|
|
132
|
-
"UserPassword": "your-user-password",
|
|
133
|
-
"EntityId": "optional-entity-id"
|
|
134
|
-
}
|
|
23
|
+
```ts
|
|
24
|
+
// Platform/SQLServer/src/SQLServerConnector.ts (in MemberJunction/Integrations)
|
|
25
|
+
import { BaseSqlExternalDataSourceConnector } from '@memberjunction/integration-connectors';
|
|
135
26
|
```
|
|
136
27
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
| `CompanyId` | Yes | Sage Intacct Company ID |
|
|
140
|
-
| `SenderId` | Yes | Web Services Sender ID (from Marketplace subscription) |
|
|
141
|
-
| `SenderPassword` | Yes | Web Services Sender Password |
|
|
142
|
-
| `UserId` | Yes | User ID for API authentication |
|
|
143
|
-
| `UserPassword` | Yes | User password |
|
|
144
|
-
| `EntityId` | No | Entity ID for multi-entity shared companies |
|
|
145
|
-
|
|
146
|
-
**Capabilities:**
|
|
147
|
-
- Full CRUD (Create, Read, Update, Delete)
|
|
148
|
-
- Query-based search via `readByQuery`
|
|
149
|
-
- Paginated listing via `readMore`
|
|
150
|
-
- Live schema discovery via `inspect` API
|
|
151
|
-
- Incremental sync with `WHENMODIFIED` watermarks
|
|
152
|
-
- Session caching and automatic refresh
|
|
153
|
-
- Retry with exponential backoff
|
|
154
|
-
|
|
155
|
-
**Objects (9):** Customer, Vendor, GL Account, AP Bill, AR Invoice, Project, Employee, Department, Class
|
|
156
|
-
|
|
157
|
-
**Default field mappings:**
|
|
158
|
-
| Source Object | Target Entity | Key Mappings |
|
|
159
|
-
|---|---|---|
|
|
160
|
-
| CUSTOMER | Contacts | CUSTOMERID (key), NAME, EMAIL, PHONE, STATUS |
|
|
161
|
-
| VENDOR | Companies | VENDORID (key), NAME, EMAIL, PHONE, STATUS |
|
|
28
|
+
The leaves themselves are deliberately thin — each is little more than a `@RegisterClass` decorator, a
|
|
29
|
+
name, and a side-effect import of its engine driver. The logic lives here.
|
|
162
30
|
|
|
163
|
-
|
|
31
|
+
## Why the concrete connectors moved
|
|
164
32
|
|
|
165
|
-
|
|
33
|
+
They were **duplicated**. The same 36 connector classes existed in both repositories, and the Integrations
|
|
34
|
+
copy is the one that actually ships to customers: each connector there is a self-contained Open App with
|
|
35
|
+
its own `package.json`, versioning, changesets, seed migrations (SQL Server **and** PostgreSQL), metadata
|
|
36
|
+
and CI gates. Keeping a second copy in the monorepo meant every fix had to be applied twice, and the two
|
|
37
|
+
copies drifted.
|
|
166
38
|
|
|
167
|
-
|
|
39
|
+
Removing the monorepo copy makes the Integrations repo the single source of truth, and lets connectors
|
|
40
|
+
version and release independently of the MJ core release train.
|
|
168
41
|
|
|
169
|
-
|
|
42
|
+
## What moved, and where
|
|
170
43
|
|
|
171
|
-
|
|
172
|
-
```json
|
|
173
|
-
{
|
|
174
|
-
"ClientId": "your-client-id",
|
|
175
|
-
"ClientSecret": "your-client-secret",
|
|
176
|
-
"RefreshToken": "your-refresh-token",
|
|
177
|
-
"RealmId": "your-company-realm-id",
|
|
178
|
-
"Environment": "production"
|
|
179
|
-
}
|
|
180
|
-
```
|
|
44
|
+
Each row is a class removed from this package in 6.x, with the Open App that now owns it.
|
|
181
45
|
|
|
182
|
-
|
|
|
46
|
+
| Removed class | Open App | npm package |
|
|
183
47
|
|---|---|---|
|
|
184
|
-
| `
|
|
185
|
-
| `
|
|
186
|
-
| `
|
|
187
|
-
| `
|
|
188
|
-
| `
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
|
203
|
-
|
|
204
|
-
|
|
|
205
|
-
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
}
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
**Capabilities:**
|
|
260
|
-
- `TestConnection` — checks that the file exists on disk
|
|
261
|
-
- `DiscoverObjects` — returns the file name as the single available object
|
|
262
|
-
- `DiscoverFields` — parses the CSV header row
|
|
263
|
-
- `FetchChanges` — parses all rows into `ExternalRecord[]` (watermark ignored)
|
|
264
|
-
|
|
265
|
-
## Action Generation
|
|
266
|
-
|
|
267
|
-
Integration connectors can auto-generate MJ Action metadata for use by AI agents and workflow engines. Each connector declares its objects and fields via `GetIntegrationObjects()`, and the CLI generator produces mj-sync compatible JSON files.
|
|
268
|
-
|
|
269
|
-
```bash
|
|
270
|
-
# Generate actions for all connectors
|
|
271
|
-
npx tsx src/generate-integration-actions.ts
|
|
272
|
-
|
|
273
|
-
# Generate for a specific connector
|
|
274
|
-
npx tsx src/generate-integration-actions.ts salesforce
|
|
275
|
-
npx tsx src/generate-integration-actions.ts hubspot
|
|
276
|
-
npx tsx src/generate-integration-actions.ts sage-intacct
|
|
277
|
-
npx tsx src/generate-integration-actions.ts quickbooks
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
See [INTEGRATION_ACTIONS.md](../INTEGRATION_ACTIONS.md) for full documentation.
|
|
48
|
+
| `AptifyConnector` | `AMS/Aptify` | `@memberjunction/connector-aptify` |
|
|
49
|
+
| `BlackbaudConnector` | `CRM/Blackbaud` | `@memberjunction/connector-blackbaud` |
|
|
50
|
+
| `ConstantContactConnector` | `Marketing/ConstantContact` | `@memberjunction/connector-constant-contact` |
|
|
51
|
+
| `CventConnector` | `Events/Cvent` | `@memberjunction/connector-cvent` |
|
|
52
|
+
| `DynamicsDataverseConnector` | `CRM/DynamicsDataverse` | `@memberjunction/connector-microsoft-dynamics-365-dataverse` |
|
|
53
|
+
| `FileFeedConnector` | `Platform/FileFeed` | `@memberjunction/connector-file-feed` |
|
|
54
|
+
| `FontevaConnector` | `AMS/Fonteva` | `@memberjunction/connector-fonteva` |
|
|
55
|
+
| `GrowthZoneConnector` | `AMS/GrowthZone` | `@memberjunction/connector-growthzone` |
|
|
56
|
+
| `HivebriteConnector` | `Platform/Hivebrite` | `@memberjunction/connector-hivebrite` |
|
|
57
|
+
| `HubSpotConnector` | `CRM/HubSpot` | `@memberjunction/connector-hubspot` |
|
|
58
|
+
| `IMISConnector` | `AMS/iMIS` | `@memberjunction/connector-imis` |
|
|
59
|
+
| `MJToMJConnector` | `Platform/MJtoMJ` | `@memberjunction/connector-mj-to-mj` |
|
|
60
|
+
| `MagnetMailConnector` | `Marketing/MagnetMail` | `@memberjunction/connector-magnetmail` |
|
|
61
|
+
| `MailchimpConnector` | `Marketing/Mailchimp` | `@memberjunction/connector-mailchimp` |
|
|
62
|
+
| `MemberSuiteConnector` | `AMS/MemberSuite` | `@memberjunction/connector-membersuite` |
|
|
63
|
+
| `NeonCRMConnector` | `CRM/NeonCRM` | `@memberjunction/connector-neon-crm` |
|
|
64
|
+
| `NetForumConnector` | `AMS/NetForum` | `@memberjunction/connector-netforum-enterprise` |
|
|
65
|
+
| `NetSuiteConnector` | `Finance/NetSuite` | `@memberjunction/connector-netsuite` |
|
|
66
|
+
| `NimbleAMSConnector` | `AMS/NimbleAMS` | `@memberjunction/connector-nimble-ams` |
|
|
67
|
+
| `NoviConnector` | `AMS/Novi` | `@memberjunction/connector-novi-ams` |
|
|
68
|
+
| `ORCIDConnector` | `Platform/ORCID` | `@memberjunction/connector-orcid` |
|
|
69
|
+
| `OpenWaterConnector` | `Events/OpenWater` | `@memberjunction/connector-openwater` |
|
|
70
|
+
| `PathLMSConnector` | `LMS/PathLMS` | `@memberjunction/connector-path-lms` |
|
|
71
|
+
| `PheedLoopConnector` | `Events/PheedLoop` | `@memberjunction/connector-pheedloop` |
|
|
72
|
+
| `PropFuelConnector` | `Marketing/PropFuel` | `@memberjunction/connector-propfuel` |
|
|
73
|
+
| `QuickBooksConnector` | `Finance/QuickBooks` | `@memberjunction/connector-quickbooks` |
|
|
74
|
+
| `RasaConnector` | `Marketing/Rasa` | `@memberjunction/connector-rasa-io` |
|
|
75
|
+
| `Reach360Connector` | `LMS/Reach360` | `@memberjunction/connector-reach360` |
|
|
76
|
+
| `RelationalDBConnector` | `Platform/RelationalDB` | `@memberjunction/connector-relational-db` |
|
|
77
|
+
| `RhythmConnector` | `AMS/Rhythm` | `@memberjunction/connector-rhythm-software` |
|
|
78
|
+
| `SageIntacctConnector` | `Finance/SageIntacct` | `@memberjunction/connector-sage-intacct` |
|
|
79
|
+
| `SalesforceConnector` | `CRM/Salesforce` | `@memberjunction/connector-salesforce` |
|
|
80
|
+
| `SharePointConnector` | `Platform/SharePoint` | `@memberjunction/connector-sharepoint` |
|
|
81
|
+
| `WicketConnector` | `AMS/Wicket` | `@memberjunction/connector-wicket` |
|
|
82
|
+
| `WildApricotConnector` | `AMS/WildApricot` | `@memberjunction/connector-wild-apricot` |
|
|
83
|
+
| `YourMembershipConnector` | `AMS/YourMembership` | `@memberjunction/connector-yourmembership` |
|
|
84
|
+
|
|
85
|
+
The Integrations repo also ships connectors that never existed here — Eventbrite, Impexium, Stripe,
|
|
86
|
+
Totara, Zendesk, Higher Logic (Thrive Community and Vanilla), Whova, and the per-engine EDS leaves
|
|
87
|
+
(SQL Server, PostgreSQL, MySQL, Oracle, Snowflake, MongoDB).
|
|
88
|
+
|
|
89
|
+
The `generate-integration-actions.ts` CLI was removed with them — it existed only to instantiate the
|
|
90
|
+
connectors in this package and emit their action metadata.
|
|
91
|
+
|
|
92
|
+
## Migrating a deployment
|
|
93
|
+
|
|
94
|
+
1. **Install the Open App(s)** you actually use. Each ships its own seed migration for SQL Server and
|
|
95
|
+
PostgreSQL.
|
|
96
|
+
2. **The catalog row is re-pointed for you.** Each Open App's seed migration writes the *same*
|
|
97
|
+
`__mj.Integration` row (same hardcoded `ID` as the monorepo's original seed) with `ClassName` and
|
|
98
|
+
`ImportPath` set to the connector's npm package name. So an existing `CompanyIntegration` keeps
|
|
99
|
+
working against the same Integration — its class resolution just moves from
|
|
100
|
+
`@memberjunction/integration-connectors` to `@memberjunction/connector-<vendor>`.
|
|
101
|
+
3. **Update your imports** if you referenced a connector class directly in application code:
|
|
102
|
+
```diff
|
|
103
|
+
- import { SalesforceConnector } from '@memberjunction/integration-connectors';
|
|
104
|
+
+ import { SalesforceConnector } from '@memberjunction/connector-salesforce';
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
> **Note on class-registration keys.** In this package the `@RegisterClass` key was the bare class symbol
|
|
108
|
+
> (`'SalesforceConnector'`). In the Integrations repo the key is the npm package name
|
|
109
|
+
> (`'@memberjunction/connector-salesforce'`), enforced by that repo's four-way identity invariant
|
|
110
|
+
> (registration key ≡ `Integration.ClassName` ≡ `ImportPath` ≡ package name). Step 2 above is what keeps
|
|
111
|
+
> resolution working: the Open App's own migration updates `ClassName` to match. **A deployment that
|
|
112
|
+
> upgrades MJ to 6.x without installing the corresponding Open App will have catalog rows pointing at a
|
|
113
|
+
> package that no longer contains those classes, and those integrations will fail to resolve.**
|
|
114
|
+
|
|
115
|
+
## Historical migrations are untouched
|
|
116
|
+
|
|
117
|
+
The `__mj.Integration` seeds under `migrations/v5/**` still carry the old `ClassName` / `ImportPath`
|
|
118
|
+
values. Applied migrations are immutable — they are not rewritten by this change. The re-point happens
|
|
119
|
+
forward, via each Open App's own migration, as described above.
|
|
281
120
|
|
|
282
121
|
## Building
|
|
283
122
|
|
|
@@ -298,18 +137,11 @@ npm run test:watch # watch mode
|
|
|
298
137
|
|
|
299
138
|
```
|
|
300
139
|
src/
|
|
301
|
-
index.ts
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
WicketConnector.ts # Wicket REST API connector (full CRUD)
|
|
309
|
-
YourMembershipConnector.ts # YourMembership SQL connector
|
|
310
|
-
FileFeedConnector.ts # CSV file connector
|
|
311
|
-
generate-integration-actions.ts # CLI: auto-generate action metadata from connectors
|
|
312
|
-
__tests__/ # Unit and integration tests
|
|
313
|
-
test-fixtures/
|
|
314
|
-
sample-contacts.csv # 100-row sample for FileFeed testing
|
|
140
|
+
index.ts # Package exports (the three base classes)
|
|
141
|
+
datasource/
|
|
142
|
+
BaseExternalDataSourceConnector.ts # EDS-backed connector heart
|
|
143
|
+
BaseSqlExternalDataSourceConnector.ts # SQL specialisation
|
|
144
|
+
BaseDocumentDataSourceConnector.ts # Document-store specialisation
|
|
145
|
+
__tests__/
|
|
146
|
+
EdsConnectors.test.ts # Coverage for the three base classes
|
|
315
147
|
```
|
package/dist/index.d.ts
CHANGED
|
@@ -1,40 +1,4 @@
|
|
|
1
|
-
export { RelationalDBConnector, type ConnectionConfig } from './RelationalDBConnector.js';
|
|
2
1
|
export { BaseExternalDataSourceConnector } from './datasource/BaseExternalDataSourceConnector.js';
|
|
3
2
|
export { BaseSqlExternalDataSourceConnector } from './datasource/BaseSqlExternalDataSourceConnector.js';
|
|
4
3
|
export { BaseDocumentDataSourceConnector } from './datasource/BaseDocumentDataSourceConnector.js';
|
|
5
|
-
export { HubSpotConnector } from './HubSpotConnector.js';
|
|
6
|
-
export { SalesforceConnector, type SalesforceConnectionConfig } from './SalesforceConnector.js';
|
|
7
|
-
export { FontevaConnector, LoadFontevaConnector } from './FontevaConnector.js';
|
|
8
|
-
export { YourMembershipConnector, type YMConnectionConfig } from './YourMembershipConnector.js';
|
|
9
|
-
export { FileFeedConnector, parseCsvLine } from './FileFeedConnector.js';
|
|
10
|
-
export { RasaConnector, type RasaConnectionConfig } from './RasaConnector.js';
|
|
11
|
-
export { WicketConnector, type WicketCRUDResult, type WicketSearchOptions, type WicketSearchResult } from './WicketConnector.js';
|
|
12
|
-
export { SageIntacctConnector, type SageIntacctConnectionConfig } from './SageIntacctConnector.js';
|
|
13
|
-
export { QuickBooksConnector, type QuickBooksConnectionConfig } from './QuickBooksConnector.js';
|
|
14
|
-
export { AptifyConnector, type AptifyConnectionConfig } from './AptifyConnector.js';
|
|
15
|
-
export { MJToMJConnector } from './MJToMJConnector.js';
|
|
16
|
-
export { GrowthZoneConnector } from './GrowthZoneConnector.js';
|
|
17
|
-
export { ORCIDConnector, LoadORCIDConnector, type ORCIDConnectionConfig } from './ORCIDConnector.js';
|
|
18
|
-
export { OpenWaterConnector, type OpenWaterConnectionConfig } from './OpenWaterConnector.js';
|
|
19
|
-
export { IMISConnector, LoadIMISConnector, type IMISConnectionConfig } from './IMISConnector.js';
|
|
20
|
-
export { ConstantContactConnector } from './ConstantContactConnector.js';
|
|
21
|
-
export { MailchimpConnector } from './MailchimpConnector.js';
|
|
22
|
-
export { SharePointConnector } from './SharePointConnector.js';
|
|
23
|
-
export { DynamicsDataverseConnector, LoadDynamicsDataverseConnector, type DynamicsConnectionConfig } from './DynamicsDataverseConnector.js';
|
|
24
|
-
export { MagnetMailConnector } from './MagnetMailConnector.js';
|
|
25
|
-
export { WildApricotConnector } from './WildApricotConnector.js';
|
|
26
|
-
export { Reach360Connector } from './Reach360Connector.js';
|
|
27
|
-
export { BlackbaudConnector } from './BlackbaudConnector.js';
|
|
28
|
-
export { NetSuiteConnector } from './NetSuiteConnector.js';
|
|
29
|
-
export { NetForumConnector } from './NetForumConnector.js';
|
|
30
|
-
export { NimbleAMSConnector } from './NimbleAMSConnector.js';
|
|
31
|
-
export { PropFuelConnector, parseFileName, compareMicrotime } from './PropFuelConnector.js';
|
|
32
|
-
export { PathLMSConnector, LoadPathLMSConnector } from './PathLMSConnector.js';
|
|
33
|
-
export { HivebriteConnector, LoadHivebriteConnector, type HivebriteConnectionConfig } from './HivebriteConnector.js';
|
|
34
|
-
export { CventConnector, LoadCventConnector, type CventConnectionConfig } from './CventConnector.js';
|
|
35
|
-
export { NeonCRMConnector, LoadNeonCRMConnector, type NeonCRMConnectionConfig } from './NeonCRMConnector.js';
|
|
36
|
-
export { PheedLoopConnector } from './PheedLoopConnector.js';
|
|
37
|
-
export { RhythmConnector, LoadRhythmConnector, type RhythmConnectionConfig } from './RhythmConnector.js';
|
|
38
|
-
export { NoviConnector, LoadNoviConnector, type NoviConnectionConfig } from './NoviConnector.js';
|
|
39
|
-
export { MemberSuiteConnector } from './MemberSuiteConnector.js';
|
|
40
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,kCAAkC,EAAE,MAAM,oDAAoD,CAAC;AACxG,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,43 +1,12 @@
|
|
|
1
|
-
export { RelationalDBConnector } from './RelationalDBConnector.js';
|
|
2
1
|
// ── EDS-consuming ingestion connector ABSTRACTIONS (the "heart" — share the External Data Sources
|
|
3
|
-
// connection layer). The thin per-engine leaves (SQLServerConnector, PostgresConnector,
|
|
4
|
-
// per-engine Open Apps in the
|
|
2
|
+
// connection layer). The thin per-engine leaves (SQLServerConnector, PostgresConnector, MongoConnector,
|
|
3
|
+
// OracleConnector, SnowflakeConnector, MySQLConnector) ship as per-engine Open Apps in the
|
|
4
|
+
// MemberJunction/Integrations repo, each extending one of these and importing it from this package. ──
|
|
5
|
+
//
|
|
6
|
+
// These three base classes are the ENTIRE remaining surface of this package. Every concrete vendor
|
|
7
|
+
// connector that used to live here now ships from MemberJunction/Integrations as its own Open App —
|
|
8
|
+
// see the README for the removal rationale.
|
|
5
9
|
export { BaseExternalDataSourceConnector } from './datasource/BaseExternalDataSourceConnector.js';
|
|
6
10
|
export { BaseSqlExternalDataSourceConnector } from './datasource/BaseSqlExternalDataSourceConnector.js';
|
|
7
11
|
export { BaseDocumentDataSourceConnector } from './datasource/BaseDocumentDataSourceConnector.js';
|
|
8
|
-
export { HubSpotConnector } from './HubSpotConnector.js';
|
|
9
|
-
export { SalesforceConnector } from './SalesforceConnector.js';
|
|
10
|
-
export { FontevaConnector, LoadFontevaConnector } from './FontevaConnector.js';
|
|
11
|
-
export { YourMembershipConnector } from './YourMembershipConnector.js';
|
|
12
|
-
export { FileFeedConnector, parseCsvLine } from './FileFeedConnector.js';
|
|
13
|
-
export { RasaConnector } from './RasaConnector.js';
|
|
14
|
-
export { WicketConnector } from './WicketConnector.js';
|
|
15
|
-
export { SageIntacctConnector } from './SageIntacctConnector.js';
|
|
16
|
-
export { QuickBooksConnector } from './QuickBooksConnector.js';
|
|
17
|
-
export { AptifyConnector } from './AptifyConnector.js';
|
|
18
|
-
export { MJToMJConnector } from './MJToMJConnector.js';
|
|
19
|
-
export { GrowthZoneConnector } from './GrowthZoneConnector.js';
|
|
20
|
-
export { ORCIDConnector, LoadORCIDConnector } from './ORCIDConnector.js';
|
|
21
|
-
export { OpenWaterConnector } from './OpenWaterConnector.js';
|
|
22
|
-
export { IMISConnector, LoadIMISConnector } from './IMISConnector.js';
|
|
23
|
-
export { ConstantContactConnector } from './ConstantContactConnector.js';
|
|
24
|
-
export { MailchimpConnector } from './MailchimpConnector.js';
|
|
25
|
-
export { SharePointConnector } from './SharePointConnector.js';
|
|
26
|
-
export { DynamicsDataverseConnector, LoadDynamicsDataverseConnector } from './DynamicsDataverseConnector.js';
|
|
27
|
-
export { MagnetMailConnector } from './MagnetMailConnector.js';
|
|
28
|
-
export { WildApricotConnector } from './WildApricotConnector.js';
|
|
29
|
-
export { Reach360Connector } from './Reach360Connector.js';
|
|
30
|
-
export { BlackbaudConnector } from './BlackbaudConnector.js';
|
|
31
|
-
export { NetSuiteConnector } from './NetSuiteConnector.js';
|
|
32
|
-
export { NetForumConnector } from './NetForumConnector.js';
|
|
33
|
-
export { NimbleAMSConnector } from './NimbleAMSConnector.js';
|
|
34
|
-
export { PropFuelConnector, parseFileName, compareMicrotime } from './PropFuelConnector.js';
|
|
35
|
-
export { PathLMSConnector, LoadPathLMSConnector } from './PathLMSConnector.js';
|
|
36
|
-
export { HivebriteConnector, LoadHivebriteConnector } from './HivebriteConnector.js';
|
|
37
|
-
export { CventConnector, LoadCventConnector } from './CventConnector.js';
|
|
38
|
-
export { NeonCRMConnector, LoadNeonCRMConnector } from './NeonCRMConnector.js';
|
|
39
|
-
export { PheedLoopConnector } from './PheedLoopConnector.js';
|
|
40
|
-
export { RhythmConnector, LoadRhythmConnector } from './RhythmConnector.js';
|
|
41
|
-
export { NoviConnector, LoadNoviConnector } from './NoviConnector.js';
|
|
42
|
-
export { MemberSuiteConnector } from './MemberSuiteConnector.js';
|
|
43
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,2GAA2G;AAC3G,8FAA8F;AAC9F,0GAA0G;AAC1G,EAAE;AACF,mGAAmG;AACnG,oGAAoG;AACpG,4CAA4C;AAC5C,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,kCAAkC,EAAE,MAAM,oDAAoD,CAAC;AACxG,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,31 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/integration-connectors",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "
|
|
5
|
-
"description": "MemberJunction
|
|
4
|
+
"version": "6.1.0-edge.1",
|
|
5
|
+
"description": "MemberJunction External Data Source connector base classes. Concrete vendor connectors ship from the MemberJunction/Integrations repo as individual Open Apps.",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"files": [
|
|
9
9
|
"/dist"
|
|
10
10
|
],
|
|
11
|
-
"scripts": {
|
|
12
|
-
"build": "tsc && tsc-alias -f",
|
|
13
|
-
"test": "vitest run",
|
|
14
|
-
"test:watch": "vitest"
|
|
15
|
-
},
|
|
16
11
|
"dependencies": {
|
|
17
|
-
"@memberjunction/core": "
|
|
18
|
-
"@memberjunction/core-entities": "
|
|
19
|
-
"@memberjunction/external-data-sources": "
|
|
20
|
-
"@memberjunction/
|
|
21
|
-
"@memberjunction/integration-engine": "
|
|
22
|
-
"@memberjunction/integration-engine-base": "5.51.0",
|
|
23
|
-
"jsonwebtoken": "9.0.3",
|
|
24
|
-
"mssql": "^12.2.0",
|
|
25
|
-
"zod": "^3.25.0"
|
|
12
|
+
"@memberjunction/core": "6.1.0-edge.1",
|
|
13
|
+
"@memberjunction/core-entities": "6.1.0-edge.1",
|
|
14
|
+
"@memberjunction/external-data-sources": "6.1.0-edge.1",
|
|
15
|
+
"@memberjunction/integration-engine": "6.1.0-edge.1",
|
|
16
|
+
"@memberjunction/integration-engine-base": "6.1.0-edge.1"
|
|
26
17
|
},
|
|
27
18
|
"devDependencies": {
|
|
28
|
-
"@types/jsonwebtoken": "^9.0.10",
|
|
29
19
|
"typescript": "^5.9.3",
|
|
30
20
|
"tsc-alias": "^1.8.16",
|
|
31
21
|
"vitest": "^4.0.18"
|
|
@@ -35,5 +25,10 @@
|
|
|
35
25
|
"url": "https://github.com/MemberJunction/MJ"
|
|
36
26
|
},
|
|
37
27
|
"author": "MemberJunction.com",
|
|
38
|
-
"license": "ISC"
|
|
39
|
-
|
|
28
|
+
"license": "ISC",
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsc && tsc-alias -f",
|
|
31
|
+
"test": "vitest run",
|
|
32
|
+
"test:watch": "vitest"
|
|
33
|
+
}
|
|
34
|
+
}
|