@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 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](../vortex-react-provider/README.md)
267
- - [Example Implementation](../../apps/demo-react)
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/demo-react`
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;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
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,wDAmDjE;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"}
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, user, hasAccess, vortex, result, error_4;
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
- (0, utils_1.validateRequiredFields)(body, ['invitationIds', 'target']);
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
- if (!target.type || !target.value) {
221
- return [2 /*return*/, (0, utils_1.createErrorResponse)('target must have type and value properties', 400)];
222
- }
223
- if (!['email', 'username', 'phoneNumber'].includes(target.type)) {
224
- return [2 /*return*/, (0, utils_1.createErrorResponse)('target.type must be email, username, or phoneNumber', 400)];
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
- user = _a.sent();
253
+ authenticatedUser = _a.sent();
232
254
  if (!config.canAcceptInvitations) return [3 /*break*/, 5];
233
- return [4 /*yield*/, config.canAcceptInvitations(request, user, { invitationIds: sanitizedIds, target: target })];
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 (!user) {
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.9",
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.1",
35
+ "@eslint/js": "9.39.2",
36
36
  "@jest/globals": "29.7.0",
37
37
  "@types/node": "24.10.1",
38
- "eslint": "9.39.1",
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.46.2"
42
+ "typescript-eslint": "8.50.1"
43
43
  },
44
44
  "dependencies": {
45
- "@teamvortexsoftware/vortex-node-22-sdk": "^0.1.2"
45
+ "@teamvortexsoftware/vortex-node-22-sdk": "^0.1.4"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "next": ">=13.0.0"