@trokky/trokky 3.4.1 → 3.5.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 (59) hide show
  1. package/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts.map +1 -1
  2. package/dist/adapters/filesystem-data/filesystem-data-adapter.js +3 -1
  3. package/dist/adapters/filesystem-data/filesystem-data-adapter.js.map +1 -1
  4. package/dist/adapters/filesystem-media/filesystem-media-adapter.d.ts.map +1 -1
  5. package/dist/adapters/filesystem-media/filesystem-media-adapter.js +3 -1
  6. package/dist/adapters/filesystem-media/filesystem-media-adapter.js.map +1 -1
  7. package/dist/adapters/s3-media/index-key.d.ts +52 -0
  8. package/dist/adapters/s3-media/index-key.d.ts.map +1 -0
  9. package/dist/adapters/s3-media/index-key.js +91 -0
  10. package/dist/adapters/s3-media/index-key.js.map +1 -0
  11. package/dist/adapters/s3-media/index.d.ts +3 -0
  12. package/dist/adapters/s3-media/index.d.ts.map +1 -0
  13. package/dist/adapters/s3-media/index.js +12 -0
  14. package/dist/adapters/s3-media/index.js.map +1 -0
  15. package/dist/adapters/s3-media/s3-client.d.ts +112 -0
  16. package/dist/adapters/s3-media/s3-client.d.ts.map +1 -0
  17. package/dist/adapters/s3-media/s3-client.js +261 -0
  18. package/dist/adapters/s3-media/s3-client.js.map +1 -0
  19. package/dist/adapters/s3-media/s3-media-adapter.d.ts +118 -0
  20. package/dist/adapters/s3-media/s3-media-adapter.d.ts.map +1 -0
  21. package/dist/adapters/s3-media/s3-media-adapter.js +631 -0
  22. package/dist/adapters/s3-media/s3-media-adapter.js.map +1 -0
  23. package/dist/adapters/s3-media/types.d.ts +63 -0
  24. package/dist/adapters/s3-media/types.d.ts.map +1 -0
  25. package/dist/adapters/s3-media/types.js +2 -0
  26. package/dist/adapters/s3-media/types.js.map +1 -0
  27. package/dist/core/services/auth-service.d.ts.map +1 -1
  28. package/dist/core/services/auth-service.js +4 -1
  29. package/dist/core/services/auth-service.js.map +1 -1
  30. package/dist/core/services/token-service.d.ts.map +1 -1
  31. package/dist/core/services/token-service.js +11 -1
  32. package/dist/core/services/token-service.js.map +1 -1
  33. package/dist/core/types/storage-adapters.d.ts +7 -0
  34. package/dist/core/types/storage-adapters.d.ts.map +1 -1
  35. package/dist/integrations/express/config.d.ts +6 -1
  36. package/dist/integrations/express/config.d.ts.map +1 -1
  37. package/dist/integrations/express/config.js.map +1 -1
  38. package/dist/integrations/express/integration.js +3 -3
  39. package/dist/integrations/express/integration.js.map +1 -1
  40. package/dist/integrations/workers/index.d.ts +5 -0
  41. package/dist/integrations/workers/index.d.ts.map +1 -1
  42. package/dist/integrations/workers/index.js +10 -1
  43. package/dist/integrations/workers/index.js.map +1 -1
  44. package/dist/routes/handlers/base.d.ts +21 -0
  45. package/dist/routes/handlers/base.d.ts.map +1 -1
  46. package/dist/routes/handlers/base.js +62 -12
  47. package/dist/routes/handlers/base.js.map +1 -1
  48. package/dist/routes/handlers/documents.d.ts.map +1 -1
  49. package/dist/routes/handlers/documents.js +16 -0
  50. package/dist/routes/handlers/documents.js.map +1 -1
  51. package/dist/routes/handlers/media.js +7 -7
  52. package/dist/routes/handlers/media.js.map +1 -1
  53. package/dist/routes/handlers/search.d.ts.map +1 -1
  54. package/dist/routes/handlers/search.js +8 -2
  55. package/dist/routes/handlers/search.js.map +1 -1
  56. package/dist/routes/handlers/tokens.d.ts.map +1 -1
  57. package/dist/routes/handlers/tokens.js +42 -8
  58. package/dist/routes/handlers/tokens.js.map +1 -1
  59. package/package.json +6 -1
@@ -3,6 +3,8 @@
3
3
  */
4
4
  import { InvalidInputError } from '../../core/index.js';
5
5
  import { BaseRoutes } from './base.js';
6
+ // `resource:action` or `resource:*`, where resource is a collection-style name
7
+ const PERMISSION_FORMAT = /^[A-Za-z][A-Za-z0-9_-]*:(\*|[a-z]+)$/;
6
8
  export class TokenRoutes extends BaseRoutes {
7
9
  getRoutes() {
8
10
  const basePath = this.config.basePath || '';
@@ -17,7 +19,7 @@ export class TokenRoutes extends BaseRoutes {
17
19
  // Token Management Routes
18
20
  async listTokens(request) {
19
21
  try {
20
- await this.validateAuthentication(request);
22
+ await this.requirePermission(request, 'tokens:read');
21
23
  const { limit, offset, isActive } = request.query;
22
24
  const options = {};
23
25
  if (limit)
@@ -35,17 +37,49 @@ export class TokenRoutes extends BaseRoutes {
35
37
  }
36
38
  async createToken(request) {
37
39
  try {
38
- await this.validateAuthentication(request);
40
+ const session = await this.requirePermission(request, 'tokens:write');
39
41
  if (!request.body || typeof request.body !== 'object') {
40
42
  return this.errorResponse(new InvalidInputError('Token data is required'));
41
43
  }
42
44
  const tokenData = request.body;
43
45
  // Validate required fields
44
- if (!tokenData.name || !tokenData.permissions) {
46
+ if (!tokenData.name || !Array.isArray(tokenData.permissions) || tokenData.permissions.length === 0 ||
47
+ !tokenData.permissions.every(p => typeof p === 'string')) {
45
48
  return this.errorResponse(new InvalidInputError('Token name and permissions are required'));
46
49
  }
47
- // Get user from auth context (placeholder for now)
48
- const createdBy = 'system'; // TODO: Get from authenticated user context
50
+ const permissions = tokenData.permissions;
51
+ const malformed = permissions.filter(p => !PERMISSION_FORMAT.test(p));
52
+ if (malformed.length > 0) {
53
+ return this.errorResponse(new InvalidInputError(`Malformed permissions: ${malformed.join(', ')}`, 'permissions_format'));
54
+ }
55
+ let expiresAt;
56
+ if (tokenData.expiresAt !== undefined) {
57
+ expiresAt = typeof tokenData.expiresAt === 'string' ? Date.parse(tokenData.expiresAt) : NaN;
58
+ if (Number.isNaN(expiresAt) || expiresAt <= Date.now()) {
59
+ return this.errorResponse(new InvalidInputError('expiresAt must be a future date, as an ISO 8601 string', 'expiresAt'));
60
+ }
61
+ }
62
+ if (session) {
63
+ // A token can never hold more than the person minting it
64
+ const exceeding = permissions.filter(p => !this.sessionHasPermission(session, p));
65
+ if (exceeding.length > 0) {
66
+ return this.errorResponse(new InvalidInputError(`Cannot grant permissions you do not hold: ${exceeding.join(', ')}`, 'permissions'));
67
+ }
68
+ // A token minting tokens must not be able to outlive or out-replicate itself:
69
+ // children cannot manage tokens, and cannot expire after their parent.
70
+ if (session.role === 'api') {
71
+ if (permissions.some(p => p.startsWith('tokens:'))) {
72
+ return this.errorResponse(new InvalidInputError('An API token cannot grant token permissions', 'permissions'));
73
+ }
74
+ if (session.expiresAt) {
75
+ const parentExpiry = Date.parse(session.expiresAt);
76
+ if (expiresAt === undefined || expiresAt > parentExpiry) {
77
+ return this.errorResponse(new InvalidInputError('A token created by an API token must expire no later than it', 'permissions'));
78
+ }
79
+ }
80
+ }
81
+ }
82
+ const createdBy = session?.userId ?? 'system';
49
83
  const result = await this.core.createAppToken(tokenData, createdBy);
50
84
  if (!result.success) {
51
85
  return this.errorResponse(new Error(result.error || 'Failed to create token'));
@@ -61,7 +95,7 @@ export class TokenRoutes extends BaseRoutes {
61
95
  }
62
96
  async getToken(request) {
63
97
  try {
64
- await this.validateAuthentication(request);
98
+ await this.requirePermission(request, 'tokens:read');
65
99
  const { id } = request.params;
66
100
  if (!id) {
67
101
  return this.errorResponse(new InvalidInputError('Token ID is required'));
@@ -75,7 +109,7 @@ export class TokenRoutes extends BaseRoutes {
75
109
  }
76
110
  async updateToken(request) {
77
111
  try {
78
- await this.validateAuthentication(request);
112
+ await this.requirePermission(request, 'tokens:write');
79
113
  const { id } = request.params;
80
114
  if (!id) {
81
115
  return this.errorResponse(new InvalidInputError('Token ID is required'));
@@ -93,7 +127,7 @@ export class TokenRoutes extends BaseRoutes {
93
127
  }
94
128
  async deleteToken(request) {
95
129
  try {
96
- await this.validateAuthentication(request);
130
+ await this.requirePermission(request, 'tokens:delete');
97
131
  const { id } = request.params;
98
132
  if (!id) {
99
133
  return this.errorResponse(new InvalidInputError('Token ID is required'));
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/routes/handlers/tokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/routes/handlers/tokens.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trokky/trokky",
3
- "version": "3.4.1",
3
+ "version": "3.5.1",
4
4
  "description": "Modern, composable Content Management System - Server package",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -93,6 +93,10 @@
93
93
  "types": "./dist/adapters/postgres-data/index.d.ts",
94
94
  "import": "./dist/adapters/postgres-data/index.js"
95
95
  },
96
+ "./adapters/s3-media": {
97
+ "import": "./dist/adapters/s3-media/index.js",
98
+ "types": "./dist/adapters/s3-media/index.d.ts"
99
+ },
96
100
  "./express": {
97
101
  "types": "./dist/integrations/express/index.d.ts",
98
102
  "import": "./dist/integrations/express/index.js"
@@ -157,6 +161,7 @@
157
161
  },
158
162
  "dependencies": {
159
163
  "@simplewebauthn/server": "^13.2.2",
164
+ "aws4fetch": "^1.0.20",
160
165
  "bcrypt": "^6.0.0",
161
166
  "busboy": "^1.6.0",
162
167
  "cors": "^2.8.5",