@teamvortexsoftware/vortex-nextjs-15-sdk 0.0.9 → 0.0.11
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/README.md +3 -3
- package/dist/config.d.ts +6 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/handlers/invitations.d.ts.map +1 -1
- package/dist/handlers/invitations.js +34 -15
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -263,9 +263,9 @@ This SDK re-exports everything from `@teamvortexsoftware/vortex-node-22-sdk`, so
|
|
|
263
263
|
## 🔗 Links
|
|
264
264
|
|
|
265
265
|
- [Node.js SDK Documentation](../vortex-node-22-sdk/README.md)
|
|
266
|
-
- [React Provider Documentation](
|
|
267
|
-
- [Example Implementation](../../apps/
|
|
266
|
+
- [React Provider Documentation](../../packages/vortex-react-provider/README.md)
|
|
267
|
+
- [Example Implementation](../../apps/acmetasks)
|
|
268
268
|
|
|
269
269
|
---
|
|
270
270
|
|
|
271
|
-
**Need help?** Open an issue or check the example implementation in `apps/
|
|
271
|
+
**Need help?** Open an issue or check the example implementation in `apps/acmetasks`
|
package/dist/config.d.ts
CHANGED
|
@@ -21,10 +21,15 @@ export interface InvitationResource {
|
|
|
21
21
|
}
|
|
22
22
|
export interface InvitationTargetResource {
|
|
23
23
|
invitationIds: string[];
|
|
24
|
-
target
|
|
24
|
+
target?: {
|
|
25
25
|
type: string;
|
|
26
26
|
value: string;
|
|
27
27
|
};
|
|
28
|
+
user?: {
|
|
29
|
+
email?: string;
|
|
30
|
+
phone?: string;
|
|
31
|
+
name?: string;
|
|
32
|
+
};
|
|
28
33
|
}
|
|
29
34
|
export interface GroupResource {
|
|
30
35
|
groupType: string;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzD,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAGD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invitations.d.ts","sourceRoot":"","sources":["../../src/handlers/invitations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,WAAW,wDAuCtE;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wDAgCnF;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wDA8BtF;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"invitations.d.ts","sourceRoot":"","sources":["../../src/handlers/invitations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,WAAW,wDAuCtE;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wDAgCnF;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wDA8BtF;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,WAAW,wDAwEjE;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,wDAmCzG;AAED,wBAAsB,8BAA8B,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,wDAmC5G;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wDA8B9E"}
|
|
@@ -197,7 +197,7 @@ function handleRevokeInvitation(request, invitationId) {
|
|
|
197
197
|
}
|
|
198
198
|
function handleAcceptInvitations(request) {
|
|
199
199
|
return __awaiter(this, void 0, void 0, function () {
|
|
200
|
-
var body, invitationIds, target, sanitizedIds, config,
|
|
200
|
+
var body, invitationIds, target, user, sanitizedIds, acceptData, config, authenticatedUser, hasAccess, vortex, result, error_4;
|
|
201
201
|
return __generator(this, function (_a) {
|
|
202
202
|
switch (_a.label) {
|
|
203
203
|
case 0:
|
|
@@ -208,8 +208,7 @@ function handleAcceptInvitations(request) {
|
|
|
208
208
|
return [4 /*yield*/, (0, utils_1.parseRequestBody)(request)];
|
|
209
209
|
case 1:
|
|
210
210
|
body = _a.sent();
|
|
211
|
-
|
|
212
|
-
invitationIds = body.invitationIds, target = body.target;
|
|
211
|
+
invitationIds = body.invitationIds, target = body.target, user = body.user;
|
|
213
212
|
if (!Array.isArray(invitationIds) || invitationIds.length === 0) {
|
|
214
213
|
return [2 /*return*/, (0, utils_1.createErrorResponse)('invitationIds must be a non-empty array', 400)];
|
|
215
214
|
}
|
|
@@ -217,20 +216,43 @@ function handleAcceptInvitations(request) {
|
|
|
217
216
|
if (sanitizedIds.length !== invitationIds.length) {
|
|
218
217
|
return [2 /*return*/, (0, utils_1.createErrorResponse)('Invalid invitation IDs provided', 400)];
|
|
219
218
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
219
|
+
// Support both new format (user) and legacy format (target)
|
|
220
|
+
if (!user && !target) {
|
|
221
|
+
return [2 /*return*/, (0, utils_1.createErrorResponse)('Either user or target must be provided', 400)];
|
|
222
|
+
}
|
|
223
|
+
acceptData = void 0;
|
|
224
|
+
if (user) {
|
|
225
|
+
// New format: user object with email/phone
|
|
226
|
+
if (!user.email && !user.phone) {
|
|
227
|
+
return [2 /*return*/, (0, utils_1.createErrorResponse)('user must have either email or phone', 400)];
|
|
228
|
+
}
|
|
229
|
+
acceptData = {
|
|
230
|
+
email: user.email ? (0, utils_1.sanitizeInput)(user.email) : undefined,
|
|
231
|
+
phone: user.phone ? (0, utils_1.sanitizeInput)(user.phone) : undefined,
|
|
232
|
+
name: user.name ? (0, utils_1.sanitizeInput)(user.name) : undefined,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
// Legacy format: target object
|
|
237
|
+
if (!target.type || !target.value) {
|
|
238
|
+
return [2 /*return*/, (0, utils_1.createErrorResponse)('target must have type and value properties', 400)];
|
|
239
|
+
}
|
|
240
|
+
if (!['email', 'username', 'phoneNumber', 'sms'].includes(target.type)) {
|
|
241
|
+
return [2 /*return*/, (0, utils_1.createErrorResponse)('target.type must be email, username, phoneNumber, or sms', 400)];
|
|
242
|
+
}
|
|
243
|
+
acceptData = {
|
|
244
|
+
type: target.type,
|
|
245
|
+
value: (0, utils_1.sanitizeInput)(target.value) || target.value
|
|
246
|
+
};
|
|
225
247
|
}
|
|
226
248
|
return [4 /*yield*/, (0, config_1.getVortexConfig)(request)];
|
|
227
249
|
case 2:
|
|
228
250
|
config = _a.sent();
|
|
229
251
|
return [4 /*yield*/, (0, config_1.authenticateRequest)(request)];
|
|
230
252
|
case 3:
|
|
231
|
-
|
|
253
|
+
authenticatedUser = _a.sent();
|
|
232
254
|
if (!config.canAcceptInvitations) return [3 /*break*/, 5];
|
|
233
|
-
return [4 /*yield*/, config.canAcceptInvitations(request,
|
|
255
|
+
return [4 /*yield*/, config.canAcceptInvitations(request, authenticatedUser, { invitationIds: sanitizedIds, target: target, user: user })];
|
|
234
256
|
case 4:
|
|
235
257
|
hasAccess = _a.sent();
|
|
236
258
|
if (!hasAccess) {
|
|
@@ -238,16 +260,13 @@ function handleAcceptInvitations(request) {
|
|
|
238
260
|
}
|
|
239
261
|
return [3 /*break*/, 6];
|
|
240
262
|
case 5:
|
|
241
|
-
if (!
|
|
263
|
+
if (!authenticatedUser) {
|
|
242
264
|
return [2 /*return*/, (0, utils_1.createErrorResponse)('Access denied. Configure access control hooks for invitation endpoints.', 403)];
|
|
243
265
|
}
|
|
244
266
|
_a.label = 6;
|
|
245
267
|
case 6:
|
|
246
268
|
vortex = new vortex_node_22_sdk_1.Vortex(config.apiKey);
|
|
247
|
-
return [4 /*yield*/, vortex.acceptInvitations(sanitizedIds,
|
|
248
|
-
type: target.type,
|
|
249
|
-
value: (0, utils_1.sanitizeInput)(target.value) || target.value
|
|
250
|
-
})];
|
|
269
|
+
return [4 /*yield*/, vortex.acceptInvitations(sanitizedIds, acceptData)];
|
|
251
270
|
case 7:
|
|
252
271
|
result = _a.sent();
|
|
253
272
|
return [2 /*return*/, (0, utils_1.createApiResponse)(result)];
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@teamvortexsoftware/vortex-nextjs-15-sdk",
|
|
3
3
|
"description": "Drop-in Next.js module for Vortex API integration",
|
|
4
4
|
"author": "@teamvortexsoftware",
|
|
5
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.11",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"bin": {
|
|
@@ -32,17 +32,17 @@
|
|
|
32
32
|
"testEnvironment": "node"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@eslint/js": "9.39.
|
|
35
|
+
"@eslint/js": "9.39.2",
|
|
36
36
|
"@jest/globals": "29.7.0",
|
|
37
37
|
"@types/node": "24.10.1",
|
|
38
|
-
"eslint": "9.39.
|
|
38
|
+
"eslint": "9.39.2",
|
|
39
39
|
"jest": "29.7.0",
|
|
40
40
|
"next": "^15.5.9",
|
|
41
41
|
"ts-jest": "29.4.6",
|
|
42
|
-
"typescript-eslint": "8.
|
|
42
|
+
"typescript-eslint": "8.50.1"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@teamvortexsoftware/vortex-node-22-sdk": "^0.1.
|
|
45
|
+
"@teamvortexsoftware/vortex-node-22-sdk": "^0.1.4"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
48
|
"next": ">=13.0.0"
|