@aphexcms/cms-core 3.0.0 → 5.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/dist/api/schemas/user.d.ts +10 -0
- package/dist/api/schemas/user.d.ts.map +1 -1
- package/dist/api/schemas/user.js +10 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -2
- package/dist/hooks.d.ts +3 -4
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +20 -99
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +43 -4
- package/dist/lib/api/schemas/user.d.ts +10 -0
- package/dist/lib/api/schemas/user.d.ts.map +1 -1
- package/dist/lib/api/schemas/user.js +10 -0
- package/dist/lib/api/schemas/user.js.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +1 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/hooks.d.ts +3 -4
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +20 -99
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/index.d.ts +9 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +43 -4
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/server/api/index.d.ts +55 -0
- package/dist/lib/server/api/index.d.ts.map +1 -0
- package/dist/lib/server/api/index.js +107 -0
- package/dist/lib/server/api/index.js.map +1 -0
- package/dist/lib/server/api/routes/assets-bulk.d.ts +4 -0
- package/dist/lib/server/api/routes/assets-bulk.d.ts.map +1 -0
- package/dist/{routes → lib/server/api/routes}/assets-bulk.js +23 -23
- package/dist/lib/server/api/routes/assets-bulk.js.map +1 -0
- package/dist/lib/server/api/routes/assets-by-id.d.ts +4 -0
- package/dist/lib/server/api/routes/assets-by-id.d.ts.map +1 -0
- package/dist/lib/server/api/routes/assets-by-id.js +108 -0
- package/dist/lib/server/api/routes/assets-by-id.js.map +1 -0
- package/dist/lib/server/api/routes/assets-references.d.ts +15 -0
- package/dist/lib/server/api/routes/assets-references.d.ts.map +1 -0
- package/dist/lib/server/api/routes/assets-references.js +78 -0
- package/dist/lib/server/api/routes/assets-references.js.map +1 -0
- package/dist/lib/server/api/routes/assets.d.ts +4 -0
- package/dist/lib/server/api/routes/assets.d.ts.map +1 -0
- package/dist/{routes → lib/server/api/routes}/assets.js +76 -87
- package/dist/lib/server/api/routes/assets.js.map +1 -0
- package/dist/lib/server/api/routes/document-versions.d.ts +4 -0
- package/dist/lib/server/api/routes/document-versions.d.ts.map +1 -0
- package/dist/lib/server/api/routes/document-versions.js +113 -0
- package/dist/lib/server/api/routes/document-versions.js.map +1 -0
- package/dist/lib/server/api/routes/documents-by-id.d.ts +4 -0
- package/dist/lib/server/api/routes/documents-by-id.d.ts.map +1 -0
- package/dist/lib/server/api/routes/documents-by-id.js +148 -0
- package/dist/lib/server/api/routes/documents-by-id.js.map +1 -0
- package/dist/lib/server/api/routes/documents-publish.d.ts +4 -0
- package/dist/lib/server/api/routes/documents-publish.d.ts.map +1 -0
- package/dist/{routes → lib/server/api/routes}/documents-publish.js +42 -58
- package/dist/lib/server/api/routes/documents-publish.js.map +1 -0
- package/dist/lib/server/api/routes/documents-query.d.ts +8 -0
- package/dist/lib/server/api/routes/documents-query.d.ts.map +1 -0
- package/dist/lib/server/api/routes/documents-query.js +75 -0
- package/dist/lib/server/api/routes/documents-query.js.map +1 -0
- package/dist/lib/server/api/routes/documents.d.ts +4 -0
- package/dist/lib/server/api/routes/documents.d.ts.map +1 -0
- package/dist/{routes → lib/server/api/routes}/documents.js +55 -76
- package/dist/lib/server/api/routes/documents.js.map +1 -0
- package/dist/lib/server/api/routes/organizations-by-id.d.ts +4 -0
- package/dist/lib/server/api/routes/organizations-by-id.d.ts.map +1 -0
- package/dist/{routes → lib/server/api/routes}/organizations-by-id.js +62 -91
- package/dist/lib/server/api/routes/organizations-by-id.js.map +1 -0
- package/dist/lib/server/api/routes/organizations-invitations.d.ts +10 -0
- package/dist/lib/server/api/routes/organizations-invitations.d.ts.map +1 -0
- package/dist/{routes → lib/server/api/routes}/organizations-invitations.js +67 -78
- package/dist/lib/server/api/routes/organizations-invitations.js.map +1 -0
- package/dist/lib/server/api/routes/organizations-members.d.ts +4 -0
- package/dist/lib/server/api/routes/organizations-members.d.ts.map +1 -0
- package/dist/{routes → lib/server/api/routes}/organizations-members.js +74 -106
- package/dist/lib/server/api/routes/organizations-members.js.map +1 -0
- package/dist/lib/server/api/routes/organizations-switch.d.ts +4 -0
- package/dist/lib/server/api/routes/organizations-switch.d.ts.map +1 -0
- package/dist/lib/server/api/routes/organizations-switch.js +54 -0
- package/dist/lib/server/api/routes/organizations-switch.js.map +1 -0
- package/dist/lib/server/api/routes/organizations.d.ts +4 -0
- package/dist/lib/server/api/routes/organizations.d.ts.map +1 -0
- package/dist/lib/server/api/routes/organizations.js +99 -0
- package/dist/lib/server/api/routes/organizations.js.map +1 -0
- package/dist/lib/server/api/routes/roles.d.ts +12 -0
- package/dist/lib/server/api/routes/roles.d.ts.map +1 -0
- package/dist/lib/server/api/routes/roles.js +219 -0
- package/dist/lib/server/api/routes/roles.js.map +1 -0
- package/dist/lib/server/api/routes/schemas.d.ts +4 -0
- package/dist/lib/server/api/routes/schemas.d.ts.map +1 -0
- package/dist/lib/server/api/routes/schemas.js +27 -0
- package/dist/lib/server/api/routes/schemas.js.map +1 -0
- package/dist/lib/server/api/routes/user-preferences.d.ts +4 -0
- package/dist/lib/server/api/routes/user-preferences.d.ts.map +1 -0
- package/dist/lib/server/api/routes/user-preferences.js +63 -0
- package/dist/lib/server/api/routes/user-preferences.js.map +1 -0
- package/dist/lib/server/api/routes/user.d.ts +12 -0
- package/dist/lib/server/api/routes/user.d.ts.map +1 -0
- package/dist/lib/server/api/routes/user.js +114 -0
- package/dist/lib/server/api/routes/user.js.map +1 -0
- package/dist/lib/server/index.d.ts +2 -1
- package/dist/lib/server/index.d.ts.map +1 -1
- package/dist/lib/server/index.js +7 -3
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/types/config.d.ts +28 -29
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/server/api/index.d.ts +55 -0
- package/dist/server/api/index.d.ts.map +1 -0
- package/dist/server/api/index.js +106 -0
- package/dist/server/api/routes/assets-bulk.d.ts +4 -0
- package/dist/server/api/routes/assets-bulk.d.ts.map +1 -0
- package/dist/{lib → server/api}/routes/assets-bulk.js +22 -24
- package/dist/server/api/routes/assets-by-id.d.ts +4 -0
- package/dist/server/api/routes/assets-by-id.d.ts.map +1 -0
- package/dist/server/api/routes/assets-by-id.js +107 -0
- package/dist/server/api/routes/assets-references.d.ts +15 -0
- package/dist/server/api/routes/assets-references.d.ts.map +1 -0
- package/dist/server/api/routes/assets-references.js +77 -0
- package/dist/server/api/routes/assets.d.ts +4 -0
- package/dist/server/api/routes/assets.d.ts.map +1 -0
- package/dist/{lib → server/api}/routes/assets.js +75 -88
- package/dist/server/api/routes/document-versions.d.ts +4 -0
- package/dist/server/api/routes/document-versions.d.ts.map +1 -0
- package/dist/server/api/routes/document-versions.js +112 -0
- package/dist/server/api/routes/documents-by-id.d.ts +4 -0
- package/dist/server/api/routes/documents-by-id.d.ts.map +1 -0
- package/dist/server/api/routes/documents-by-id.js +147 -0
- package/dist/server/api/routes/documents-publish.d.ts +4 -0
- package/dist/server/api/routes/documents-publish.d.ts.map +1 -0
- package/dist/{lib → server/api}/routes/documents-publish.js +41 -59
- package/dist/server/api/routes/documents-query.d.ts +8 -0
- package/dist/server/api/routes/documents-query.d.ts.map +1 -0
- package/dist/server/api/routes/documents-query.js +74 -0
- package/dist/server/api/routes/documents.d.ts +4 -0
- package/dist/server/api/routes/documents.d.ts.map +1 -0
- package/dist/{lib → server/api}/routes/documents.js +54 -77
- package/dist/server/api/routes/organizations-by-id.d.ts +4 -0
- package/dist/server/api/routes/organizations-by-id.d.ts.map +1 -0
- package/dist/{lib → server/api}/routes/organizations-by-id.js +61 -92
- package/dist/server/api/routes/organizations-invitations.d.ts +10 -0
- package/dist/server/api/routes/organizations-invitations.d.ts.map +1 -0
- package/dist/{lib → server/api}/routes/organizations-invitations.js +66 -79
- package/dist/server/api/routes/organizations-members.d.ts +4 -0
- package/dist/server/api/routes/organizations-members.d.ts.map +1 -0
- package/dist/{lib → server/api}/routes/organizations-members.js +73 -107
- package/dist/server/api/routes/organizations-switch.d.ts +4 -0
- package/dist/server/api/routes/organizations-switch.d.ts.map +1 -0
- package/dist/server/api/routes/organizations-switch.js +53 -0
- package/dist/server/api/routes/organizations.d.ts +4 -0
- package/dist/server/api/routes/organizations.d.ts.map +1 -0
- package/dist/server/api/routes/organizations.js +98 -0
- package/dist/server/api/routes/roles.d.ts +12 -0
- package/dist/server/api/routes/roles.d.ts.map +1 -0
- package/dist/server/api/routes/roles.js +218 -0
- package/dist/server/api/routes/schemas.d.ts +4 -0
- package/dist/server/api/routes/schemas.d.ts.map +1 -0
- package/dist/server/api/routes/schemas.js +26 -0
- package/dist/server/api/routes/user-preferences.d.ts +4 -0
- package/dist/server/api/routes/user-preferences.d.ts.map +1 -0
- package/dist/server/api/routes/user-preferences.js +62 -0
- package/dist/server/api/routes/user.d.ts +12 -0
- package/dist/server/api/routes/user.d.ts.map +1 -0
- package/dist/server/api/routes/user.js +113 -0
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +7 -3
- package/dist/types/config.d.ts +28 -29
- package/dist/types/config.d.ts.map +1 -1
- package/package.json +4 -2
- package/dist/lib/routes/assets-bulk.d.ts +0 -3
- package/dist/lib/routes/assets-bulk.d.ts.map +0 -1
- package/dist/lib/routes/assets-bulk.js.map +0 -1
- package/dist/lib/routes/assets-by-id.d.ts +0 -5
- package/dist/lib/routes/assets-by-id.d.ts.map +0 -1
- package/dist/lib/routes/assets-by-id.js +0 -116
- package/dist/lib/routes/assets-by-id.js.map +0 -1
- package/dist/lib/routes/assets-references-counts.d.ts +0 -7
- package/dist/lib/routes/assets-references-counts.d.ts.map +0 -1
- package/dist/lib/routes/assets-references-counts.js +0 -42
- package/dist/lib/routes/assets-references-counts.js.map +0 -1
- package/dist/lib/routes/assets-references.d.ts +0 -7
- package/dist/lib/routes/assets-references.d.ts.map +0 -1
- package/dist/lib/routes/assets-references.js +0 -35
- package/dist/lib/routes/assets-references.js.map +0 -1
- package/dist/lib/routes/assets.d.ts +0 -4
- package/dist/lib/routes/assets.d.ts.map +0 -1
- package/dist/lib/routes/assets.js.map +0 -1
- package/dist/lib/routes/document-versions.d.ts +0 -5
- package/dist/lib/routes/document-versions.d.ts.map +0 -1
- package/dist/lib/routes/document-versions.js +0 -114
- package/dist/lib/routes/document-versions.js.map +0 -1
- package/dist/lib/routes/documents-by-id.d.ts +0 -5
- package/dist/lib/routes/documents-by-id.d.ts.map +0 -1
- package/dist/lib/routes/documents-by-id.js +0 -188
- package/dist/lib/routes/documents-by-id.js.map +0 -1
- package/dist/lib/routes/documents-publish.d.ts +0 -4
- package/dist/lib/routes/documents-publish.d.ts.map +0 -1
- package/dist/lib/routes/documents-publish.js.map +0 -1
- package/dist/lib/routes/documents-query.d.ts +0 -26
- package/dist/lib/routes/documents-query.d.ts.map +0 -1
- package/dist/lib/routes/documents-query.js +0 -104
- package/dist/lib/routes/documents-query.js.map +0 -1
- package/dist/lib/routes/documents.d.ts +0 -4
- package/dist/lib/routes/documents.d.ts.map +0 -1
- package/dist/lib/routes/documents.js.map +0 -1
- package/dist/lib/routes/index.d.ts +0 -9
- package/dist/lib/routes/index.d.ts.map +0 -1
- package/dist/lib/routes/index.js +0 -15
- package/dist/lib/routes/index.js.map +0 -1
- package/dist/lib/routes/organizations-by-id.d.ts +0 -5
- package/dist/lib/routes/organizations-by-id.d.ts.map +0 -1
- package/dist/lib/routes/organizations-by-id.js.map +0 -1
- package/dist/lib/routes/organizations-invitations.d.ts +0 -4
- package/dist/lib/routes/organizations-invitations.d.ts.map +0 -1
- package/dist/lib/routes/organizations-invitations.js.map +0 -1
- package/dist/lib/routes/organizations-members.d.ts +0 -5
- package/dist/lib/routes/organizations-members.d.ts.map +0 -1
- package/dist/lib/routes/organizations-members.js.map +0 -1
- package/dist/lib/routes/organizations-switch.d.ts +0 -3
- package/dist/lib/routes/organizations-switch.d.ts.map +0 -1
- package/dist/lib/routes/organizations-switch.js +0 -59
- package/dist/lib/routes/organizations-switch.js.map +0 -1
- package/dist/lib/routes/organizations.d.ts +0 -4
- package/dist/lib/routes/organizations.d.ts.map +0 -1
- package/dist/lib/routes/organizations.js +0 -117
- package/dist/lib/routes/organizations.js.map +0 -1
- package/dist/lib/routes/roles-by-name.d.ts +0 -4
- package/dist/lib/routes/roles-by-name.d.ts.map +0 -1
- package/dist/lib/routes/roles-by-name.js +0 -112
- package/dist/lib/routes/roles-by-name.js.map +0 -1
- package/dist/lib/routes/roles.d.ts +0 -4
- package/dist/lib/routes/roles.d.ts.map +0 -1
- package/dist/lib/routes/roles.js +0 -91
- package/dist/lib/routes/roles.js.map +0 -1
- package/dist/lib/routes/schemas-by-type.d.ts +0 -3
- package/dist/lib/routes/schemas-by-type.d.ts.map +0 -1
- package/dist/lib/routes/schemas-by-type.js +0 -27
- package/dist/lib/routes/schemas-by-type.js.map +0 -1
- package/dist/lib/routes/schemas.d.ts +0 -3
- package/dist/lib/routes/schemas.d.ts.map +0 -1
- package/dist/lib/routes/schemas.js +0 -12
- package/dist/lib/routes/schemas.js.map +0 -1
- package/dist/lib/routes/user-preferences.d.ts +0 -4
- package/dist/lib/routes/user-preferences.d.ts.map +0 -1
- package/dist/lib/routes/user-preferences.js +0 -73
- package/dist/lib/routes/user-preferences.js.map +0 -1
- package/dist/lib/routes-exports.d.ts +0 -20
- package/dist/lib/routes-exports.d.ts.map +0 -1
- package/dist/lib/routes-exports.js +0 -27
- package/dist/lib/routes-exports.js.map +0 -1
- package/dist/routes/assets-bulk.d.ts +0 -3
- package/dist/routes/assets-bulk.d.ts.map +0 -1
- package/dist/routes/assets-by-id.d.ts +0 -5
- package/dist/routes/assets-by-id.d.ts.map +0 -1
- package/dist/routes/assets-by-id.js +0 -115
- package/dist/routes/assets-references-counts.d.ts +0 -7
- package/dist/routes/assets-references-counts.d.ts.map +0 -1
- package/dist/routes/assets-references-counts.js +0 -41
- package/dist/routes/assets-references.d.ts +0 -7
- package/dist/routes/assets-references.d.ts.map +0 -1
- package/dist/routes/assets-references.js +0 -34
- package/dist/routes/assets.d.ts +0 -4
- package/dist/routes/assets.d.ts.map +0 -1
- package/dist/routes/document-versions.d.ts +0 -5
- package/dist/routes/document-versions.d.ts.map +0 -1
- package/dist/routes/document-versions.js +0 -113
- package/dist/routes/documents-by-id.d.ts +0 -5
- package/dist/routes/documents-by-id.d.ts.map +0 -1
- package/dist/routes/documents-by-id.js +0 -187
- package/dist/routes/documents-publish.d.ts +0 -4
- package/dist/routes/documents-publish.d.ts.map +0 -1
- package/dist/routes/documents-query.d.ts +0 -26
- package/dist/routes/documents-query.d.ts.map +0 -1
- package/dist/routes/documents-query.js +0 -103
- package/dist/routes/documents.d.ts +0 -4
- package/dist/routes/documents.d.ts.map +0 -1
- package/dist/routes/index.d.ts +0 -9
- package/dist/routes/index.d.ts.map +0 -1
- package/dist/routes/index.js +0 -14
- package/dist/routes/organizations-by-id.d.ts +0 -5
- package/dist/routes/organizations-by-id.d.ts.map +0 -1
- package/dist/routes/organizations-invitations.d.ts +0 -4
- package/dist/routes/organizations-invitations.d.ts.map +0 -1
- package/dist/routes/organizations-members.d.ts +0 -5
- package/dist/routes/organizations-members.d.ts.map +0 -1
- package/dist/routes/organizations-switch.d.ts +0 -3
- package/dist/routes/organizations-switch.d.ts.map +0 -1
- package/dist/routes/organizations-switch.js +0 -58
- package/dist/routes/organizations.d.ts +0 -4
- package/dist/routes/organizations.d.ts.map +0 -1
- package/dist/routes/organizations.js +0 -116
- package/dist/routes/roles-by-name.d.ts +0 -4
- package/dist/routes/roles-by-name.d.ts.map +0 -1
- package/dist/routes/roles-by-name.js +0 -111
- package/dist/routes/roles.d.ts +0 -4
- package/dist/routes/roles.d.ts.map +0 -1
- package/dist/routes/roles.js +0 -90
- package/dist/routes/schemas-by-type.d.ts +0 -3
- package/dist/routes/schemas-by-type.d.ts.map +0 -1
- package/dist/routes/schemas-by-type.js +0 -26
- package/dist/routes/schemas.d.ts +0 -3
- package/dist/routes/schemas.d.ts.map +0 -1
- package/dist/routes/schemas.js +0 -11
- package/dist/routes/user-preferences.d.ts +0 -4
- package/dist/routes/user-preferences.d.ts.map +0 -1
- package/dist/routes/user-preferences.js +0 -72
- package/dist/routes-exports.d.ts +0 -20
- package/dist/routes-exports.d.ts.map +0 -1
- package/dist/routes-exports.js +0 -26
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import type { AphexEnv } from '../index.js';
|
|
3
|
+
/**
|
|
4
|
+
* POST /api/documents/query — Advanced document querying with complex
|
|
5
|
+
* filters. Body shape mirrors LocalAPI's `FindOptions`.
|
|
6
|
+
*/
|
|
7
|
+
export declare const documentsQueryRouter: Hono<AphexEnv>;
|
|
8
|
+
//# sourceMappingURL=documents-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documents-query.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/api/routes/documents-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAO5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAKzC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAiF/C,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { zValidator } from '@hono/zod-validator';
|
|
3
|
+
import { authToContext } from '../../../local-api/auth-helpers.js';
|
|
4
|
+
import { PermissionError } from '../../../local-api/permissions.js';
|
|
5
|
+
import { cmsLogger } from '../../../utils/logger.js';
|
|
6
|
+
import { queryDocumentsRequest } from '../../../api/schemas/documents.js';
|
|
7
|
+
const DEFAULT_PAGE_SIZE = 20;
|
|
8
|
+
const DEFAULT_PAGE = 1;
|
|
9
|
+
/**
|
|
10
|
+
* POST /api/documents/query — Advanced document querying with complex
|
|
11
|
+
* filters. Body shape mirrors LocalAPI's `FindOptions`.
|
|
12
|
+
*/
|
|
13
|
+
export const documentsQueryRouter = new Hono().post('/query', zValidator('json', queryDocumentsRequest, (result, c) => {
|
|
14
|
+
if (!result.success) {
|
|
15
|
+
return c.json({
|
|
16
|
+
success: false,
|
|
17
|
+
error: 'Bad Request',
|
|
18
|
+
message: 'Document type is required in request body',
|
|
19
|
+
issues: result.error.issues
|
|
20
|
+
}, 400);
|
|
21
|
+
}
|
|
22
|
+
}), async (c) => {
|
|
23
|
+
try {
|
|
24
|
+
const { localAPI } = c.var.aphexCMS;
|
|
25
|
+
const context = authToContext(c.var.auth);
|
|
26
|
+
const body = c.req.valid('json');
|
|
27
|
+
const documentType = body.type;
|
|
28
|
+
if (!localAPI.hasCollection(documentType)) {
|
|
29
|
+
return c.json({
|
|
30
|
+
success: false,
|
|
31
|
+
error: 'Invalid document type',
|
|
32
|
+
message: `Collection '${documentType}' not found. Available: ${localAPI.getCollectionNames().join(', ')}`
|
|
33
|
+
}, 400);
|
|
34
|
+
}
|
|
35
|
+
const page = body.page ?? DEFAULT_PAGE;
|
|
36
|
+
const pageSize = body.pageSize ?? body.limit ?? DEFAULT_PAGE_SIZE;
|
|
37
|
+
const offset = body.offset !== undefined ? body.offset : (page - 1) * pageSize;
|
|
38
|
+
const findOptions = {
|
|
39
|
+
where: body.where,
|
|
40
|
+
limit: pageSize,
|
|
41
|
+
offset,
|
|
42
|
+
sort: body.sort,
|
|
43
|
+
depth: body.depth ?? 0,
|
|
44
|
+
select: body.select,
|
|
45
|
+
perspective: body.perspective ?? 'draft',
|
|
46
|
+
includeChildOrganizations: body.includeChildOrganizations,
|
|
47
|
+
filterOrganizationIds: body.filterOrganizationIds
|
|
48
|
+
};
|
|
49
|
+
const result = await localAPI.collections[documentType].find(context, findOptions);
|
|
50
|
+
return c.json({
|
|
51
|
+
success: true,
|
|
52
|
+
data: result.docs,
|
|
53
|
+
pagination: {
|
|
54
|
+
total: result.totalDocs,
|
|
55
|
+
page: result.page,
|
|
56
|
+
pageSize: result.limit,
|
|
57
|
+
totalPages: result.totalPages,
|
|
58
|
+
hasNextPage: result.hasNextPage,
|
|
59
|
+
hasPrevPage: result.hasPrevPage
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
cmsLogger.error('Failed to query documents:', error);
|
|
65
|
+
if (error instanceof PermissionError) {
|
|
66
|
+
return c.json({ success: false, error: 'Forbidden', message: error.message }, 403);
|
|
67
|
+
}
|
|
68
|
+
return c.json({
|
|
69
|
+
success: false,
|
|
70
|
+
error: 'Failed to query documents',
|
|
71
|
+
message: error instanceof Error ? error.message : 'Unknown error'
|
|
72
|
+
}, 500);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/api/routes/documents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAM5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAKzC,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,QAAQ,CAuKxC,CAAC"}
|
|
@@ -1,28 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import { authToContext } from '
|
|
4
|
-
import { PermissionError } from '
|
|
5
|
-
import { cmsLogger } from '
|
|
6
|
-
import { createDocumentRequest, listDocumentsQuery } from '
|
|
7
|
-
// Default values for API
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { zValidator } from '@hono/zod-validator';
|
|
3
|
+
import { authToContext } from '../../../local-api/auth-helpers.js';
|
|
4
|
+
import { PermissionError } from '../../../local-api/permissions.js';
|
|
5
|
+
import { cmsLogger } from '../../../utils/logger.js';
|
|
6
|
+
import { createDocumentRequest, listDocumentsQuery } from '../../../api/schemas/documents.js';
|
|
8
7
|
const DEFAULT_PAGE_SIZE = 20;
|
|
9
8
|
const DEFAULT_PAGE = 1;
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export const documentsRouter = new Hono()
|
|
10
|
+
.get('/', zValidator('query', listDocumentsQuery, (result, c) => {
|
|
11
|
+
if (!result.success) {
|
|
12
|
+
return c.json({
|
|
13
|
+
success: false,
|
|
14
|
+
error: 'Invalid query parameters',
|
|
15
|
+
issues: result.error.issues
|
|
16
|
+
}, 400);
|
|
17
|
+
}
|
|
18
|
+
}), async (c) => {
|
|
12
19
|
try {
|
|
13
|
-
const { localAPI } =
|
|
14
|
-
const context = authToContext(
|
|
15
|
-
|
|
16
|
-
const rawQuery = Object.fromEntries(url.searchParams.entries());
|
|
17
|
-
const parsedQuery = listDocumentsQuery.safeParse(rawQuery);
|
|
18
|
-
if (!parsedQuery.success) {
|
|
19
|
-
return json({
|
|
20
|
-
success: false,
|
|
21
|
-
error: 'Invalid query parameters',
|
|
22
|
-
issues: parsedQuery.error.issues
|
|
23
|
-
}, { status: 400 });
|
|
24
|
-
}
|
|
25
|
-
const q = parsedQuery.data;
|
|
20
|
+
const { localAPI } = c.var.aphexCMS;
|
|
21
|
+
const context = authToContext(c.var.auth);
|
|
22
|
+
const q = c.req.valid('query');
|
|
26
23
|
const docType = q.type ?? q.docType;
|
|
27
24
|
const status = q.status;
|
|
28
25
|
const sortParam = Array.isArray(q.sort) ? q.sort.join(',') : q.sort;
|
|
@@ -34,38 +31,35 @@ export const GET = async ({ url, locals }) => {
|
|
|
34
31
|
const offset = (page - 1) * pageSize;
|
|
35
32
|
const depth = q.depth ?? 0;
|
|
36
33
|
if (!docType) {
|
|
37
|
-
return json({
|
|
34
|
+
return c.json({
|
|
38
35
|
success: false,
|
|
39
36
|
error: 'Bad Request',
|
|
40
37
|
message: 'Document type is required. Use ?type=page or ?docType=page'
|
|
41
|
-
},
|
|
38
|
+
}, 400);
|
|
42
39
|
}
|
|
43
|
-
// Get collection API (TypeScript-safe)
|
|
44
40
|
const collection = localAPI.collections[docType];
|
|
45
41
|
if (!collection) {
|
|
46
|
-
return json({
|
|
42
|
+
return c.json({
|
|
47
43
|
success: false,
|
|
48
44
|
error: 'Invalid document type',
|
|
49
45
|
message: `Collection '${docType}' not found. Available: ${localAPI.getCollectionNames().join(', ')}`
|
|
50
|
-
},
|
|
46
|
+
}, 400);
|
|
51
47
|
}
|
|
52
|
-
// Build where clause from query params
|
|
53
48
|
const where = {};
|
|
54
49
|
if (status) {
|
|
55
50
|
where.status = { equals: status };
|
|
56
51
|
}
|
|
57
|
-
// Query via LocalAPI
|
|
58
52
|
const result = await collection.find(context, {
|
|
59
53
|
where: Object.keys(where).length > 0 ? where : undefined,
|
|
60
54
|
limit: pageSize,
|
|
61
|
-
offset
|
|
62
|
-
depth
|
|
55
|
+
offset,
|
|
56
|
+
depth,
|
|
63
57
|
sort: sortParam || undefined,
|
|
64
58
|
perspective,
|
|
65
59
|
includeChildOrganizations,
|
|
66
60
|
filterOrganizationIds
|
|
67
61
|
});
|
|
68
|
-
return json({
|
|
62
|
+
return c.json({
|
|
69
63
|
success: true,
|
|
70
64
|
data: result.docs,
|
|
71
65
|
pagination: {
|
|
@@ -81,77 +75,60 @@ export const GET = async ({ url, locals }) => {
|
|
|
81
75
|
catch (error) {
|
|
82
76
|
cmsLogger.error('Failed to fetch documents:', error);
|
|
83
77
|
if (error instanceof PermissionError) {
|
|
84
|
-
return json({
|
|
85
|
-
success: false,
|
|
86
|
-
error: 'Forbidden',
|
|
87
|
-
message: error.message
|
|
88
|
-
}, { status: 403 });
|
|
78
|
+
return c.json({ success: false, error: 'Forbidden', message: error.message }, 403);
|
|
89
79
|
}
|
|
90
|
-
return json({
|
|
80
|
+
return c.json({
|
|
91
81
|
success: false,
|
|
92
82
|
error: 'Failed to fetch documents',
|
|
93
83
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
94
|
-
},
|
|
84
|
+
}, 500);
|
|
95
85
|
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
86
|
+
})
|
|
87
|
+
.post('/', zValidator('json', createDocumentRequest, (result, c) => {
|
|
88
|
+
if (!result.success) {
|
|
89
|
+
return c.json({
|
|
90
|
+
success: false,
|
|
91
|
+
error: 'Invalid request body',
|
|
92
|
+
issues: result.error.issues
|
|
93
|
+
}, 400);
|
|
94
|
+
}
|
|
95
|
+
}), async (c) => {
|
|
99
96
|
try {
|
|
100
|
-
const { localAPI } =
|
|
101
|
-
const context = authToContext(
|
|
102
|
-
const
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
success: false,
|
|
107
|
-
error: 'Invalid request body',
|
|
108
|
-
issues: parsed.error.issues
|
|
109
|
-
}, { status: 400 });
|
|
110
|
-
}
|
|
111
|
-
const documentType = parsed.data.type;
|
|
112
|
-
const documentData = (parsed.data.draftData ?? parsed.data.data);
|
|
113
|
-
const shouldPublish = parsed.data.publish ?? false;
|
|
114
|
-
// Get collection API (TypeScript-safe)
|
|
97
|
+
const { localAPI } = c.var.aphexCMS;
|
|
98
|
+
const context = authToContext(c.var.auth);
|
|
99
|
+
const parsed = c.req.valid('json');
|
|
100
|
+
const documentType = parsed.type;
|
|
101
|
+
const documentData = (parsed.draftData ?? parsed.data);
|
|
102
|
+
const shouldPublish = parsed.publish ?? false;
|
|
115
103
|
const collection = localAPI.collections[documentType];
|
|
116
104
|
if (!collection) {
|
|
117
|
-
return json({
|
|
105
|
+
return c.json({
|
|
118
106
|
success: false,
|
|
119
107
|
error: 'Invalid document type',
|
|
120
108
|
message: `Collection '${documentType}' not found. Available: ${localAPI.getCollectionNames().join(', ')}`
|
|
121
|
-
},
|
|
109
|
+
}, 400);
|
|
122
110
|
}
|
|
123
|
-
// Create via LocalAPI (permission checks and validation happen inside)
|
|
124
111
|
const result = await collection.create(context, documentData, {
|
|
125
112
|
publish: shouldPublish
|
|
126
113
|
});
|
|
127
|
-
return json({
|
|
114
|
+
return c.json({
|
|
128
115
|
success: true,
|
|
129
116
|
data: result.document,
|
|
130
117
|
validation: result.validation
|
|
131
|
-
},
|
|
118
|
+
}, 201);
|
|
132
119
|
}
|
|
133
120
|
catch (error) {
|
|
134
121
|
cmsLogger.error('Failed to create document:', error);
|
|
135
122
|
if (error instanceof PermissionError) {
|
|
136
|
-
return json({
|
|
137
|
-
success: false,
|
|
138
|
-
error: 'Forbidden',
|
|
139
|
-
message: error.message
|
|
140
|
-
}, { status: 403 });
|
|
123
|
+
return c.json({ success: false, error: 'Forbidden', message: error.message }, 403);
|
|
141
124
|
}
|
|
142
|
-
// Validation errors from publish attempts
|
|
143
125
|
if (error instanceof Error && error.message.includes('validation errors')) {
|
|
144
|
-
return json({
|
|
145
|
-
success: false,
|
|
146
|
-
error: 'Validation failed',
|
|
147
|
-
message: error.message
|
|
148
|
-
}, { status: 400 });
|
|
126
|
+
return c.json({ success: false, error: 'Validation failed', message: error.message }, 400);
|
|
149
127
|
}
|
|
150
|
-
return json({
|
|
128
|
+
return c.json({
|
|
151
129
|
success: false,
|
|
152
130
|
error: 'Failed to create document',
|
|
153
131
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
154
|
-
},
|
|
132
|
+
}, 500);
|
|
155
133
|
}
|
|
156
|
-
};
|
|
157
|
-
//# sourceMappingURL=documents.js.map
|
|
134
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organizations-by-id.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/api/routes/organizations-by-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAuOhD,CAAC"}
|
|
@@ -1,111 +1,97 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import { cmsLogger } from '
|
|
4
|
-
import { updateOrganizationRequest } from '
|
|
5
|
-
import { hasCapability } from '
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { zValidator } from '@hono/zod-validator';
|
|
3
|
+
import { cmsLogger } from '../../../utils/logger.js';
|
|
4
|
+
import { updateOrganizationRequest } from '../../../api/schemas/organizations.js';
|
|
5
|
+
import { hasCapability } from '../../../types/capabilities.js';
|
|
6
|
+
export const organizationsByIdRouter = new Hono()
|
|
7
|
+
.get('/:id', async (c) => {
|
|
8
8
|
try {
|
|
9
|
-
const { databaseAdapter } =
|
|
10
|
-
const auth =
|
|
11
|
-
const
|
|
9
|
+
const { databaseAdapter } = c.var.aphexCMS;
|
|
10
|
+
const auth = c.var.auth;
|
|
11
|
+
const id = c.req.param('id');
|
|
12
12
|
if (!auth || auth.type !== 'session') {
|
|
13
|
-
return json({
|
|
13
|
+
return c.json({
|
|
14
14
|
success: false,
|
|
15
15
|
error: 'Unauthorized',
|
|
16
16
|
message: 'Session authentication required'
|
|
17
|
-
},
|
|
17
|
+
}, 401);
|
|
18
18
|
}
|
|
19
19
|
if (!id) {
|
|
20
|
-
return json({
|
|
20
|
+
return c.json({
|
|
21
21
|
success: false,
|
|
22
22
|
error: 'Missing required field',
|
|
23
23
|
message: 'Organization ID is required'
|
|
24
|
-
},
|
|
24
|
+
}, 400);
|
|
25
25
|
}
|
|
26
|
-
// Check if user is a member of this organization
|
|
27
26
|
const membership = await databaseAdapter.findUserMembership(auth.user.id, id);
|
|
28
27
|
if (!membership) {
|
|
29
|
-
return json({
|
|
28
|
+
return c.json({
|
|
30
29
|
success: false,
|
|
31
30
|
error: 'Forbidden',
|
|
32
31
|
message: 'You are not a member of this organization'
|
|
33
|
-
},
|
|
32
|
+
}, 403);
|
|
34
33
|
}
|
|
35
34
|
const organization = await databaseAdapter.findOrganizationById(id);
|
|
36
35
|
if (!organization) {
|
|
37
|
-
return json({
|
|
38
|
-
success: false,
|
|
39
|
-
error: 'Organization not found'
|
|
40
|
-
}, { status: 404 });
|
|
36
|
+
return c.json({ success: false, error: 'Organization not found' }, 404);
|
|
41
37
|
}
|
|
42
|
-
return json({
|
|
43
|
-
success: true,
|
|
44
|
-
data: organization
|
|
45
|
-
});
|
|
38
|
+
return c.json({ success: true, data: organization });
|
|
46
39
|
}
|
|
47
40
|
catch (error) {
|
|
48
41
|
cmsLogger.error('Failed to fetch organization:', error);
|
|
49
|
-
return json({
|
|
42
|
+
return c.json({
|
|
50
43
|
success: false,
|
|
51
44
|
error: 'Failed to fetch organization',
|
|
52
45
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
53
|
-
},
|
|
46
|
+
}, 500);
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
.patch('/:id', zValidator('json', updateOrganizationRequest, (result, c) => {
|
|
50
|
+
if (!result.success) {
|
|
51
|
+
return c.json({
|
|
52
|
+
success: false,
|
|
53
|
+
error: 'Invalid request body',
|
|
54
|
+
issues: result.error.issues
|
|
55
|
+
}, 400);
|
|
54
56
|
}
|
|
55
|
-
}
|
|
56
|
-
// PATCH /api/organizations/[id] - Update organization
|
|
57
|
-
export const PATCH = async ({ params, request, locals }) => {
|
|
57
|
+
}), async (c) => {
|
|
58
58
|
try {
|
|
59
|
-
const { databaseAdapter } =
|
|
60
|
-
const auth =
|
|
61
|
-
const
|
|
59
|
+
const { databaseAdapter } = c.var.aphexCMS;
|
|
60
|
+
const auth = c.var.auth;
|
|
61
|
+
const id = c.req.param('id');
|
|
62
62
|
if (!auth || auth.type !== 'session') {
|
|
63
|
-
return json({
|
|
63
|
+
return c.json({
|
|
64
64
|
success: false,
|
|
65
65
|
error: 'Unauthorized',
|
|
66
66
|
message: 'Session authentication required'
|
|
67
|
-
},
|
|
67
|
+
}, 401);
|
|
68
68
|
}
|
|
69
69
|
if (!id) {
|
|
70
|
-
return json({
|
|
70
|
+
return c.json({
|
|
71
71
|
success: false,
|
|
72
72
|
error: 'Missing required field',
|
|
73
73
|
message: 'Organization ID is required'
|
|
74
|
-
},
|
|
74
|
+
}, 400);
|
|
75
75
|
}
|
|
76
|
-
// Require `org.settings` capability + membership in the target org.
|
|
77
|
-
// Membership check stands regardless — even a capability holder can only
|
|
78
|
-
// edit orgs they actually belong to.
|
|
79
76
|
const membership = await databaseAdapter.findUserMembership(auth.user.id, id);
|
|
80
77
|
if (!membership || !hasCapability(auth, 'org.settings')) {
|
|
81
|
-
return json({
|
|
78
|
+
return c.json({
|
|
82
79
|
success: false,
|
|
83
80
|
error: 'Forbidden',
|
|
84
81
|
message: 'You do not have permission to update organization settings'
|
|
85
|
-
},
|
|
82
|
+
}, 403);
|
|
86
83
|
}
|
|
87
|
-
const
|
|
88
|
-
const parsed = updateOrganizationRequest.safeParse(rawBody);
|
|
89
|
-
if (!parsed.success) {
|
|
90
|
-
return json({
|
|
91
|
-
success: false,
|
|
92
|
-
error: 'Invalid request body',
|
|
93
|
-
issues: parsed.error.issues
|
|
94
|
-
}, { status: 400 });
|
|
95
|
-
}
|
|
96
|
-
const body = parsed.data;
|
|
97
|
-
// Validate: if slug is being changed, check it's not already taken
|
|
84
|
+
const body = c.req.valid('json');
|
|
98
85
|
if (body.slug) {
|
|
99
86
|
const existingOrg = await databaseAdapter.findOrganizationBySlug(body.slug);
|
|
100
87
|
if (existingOrg && existingOrg.id !== id) {
|
|
101
|
-
return json({
|
|
88
|
+
return c.json({
|
|
102
89
|
success: false,
|
|
103
90
|
error: 'Slug already exists',
|
|
104
91
|
message: `Organization with slug '${body.slug}' already exists`
|
|
105
|
-
},
|
|
92
|
+
}, 409);
|
|
106
93
|
}
|
|
107
94
|
}
|
|
108
|
-
// Update organization
|
|
109
95
|
const updateData = {};
|
|
110
96
|
if (body.name !== undefined)
|
|
111
97
|
updateData.name = body.name;
|
|
@@ -115,57 +101,47 @@ export const PATCH = async ({ params, request, locals }) => {
|
|
|
115
101
|
updateData.metadata = body.metadata;
|
|
116
102
|
const updatedOrganization = await databaseAdapter.updateOrganization(id, updateData);
|
|
117
103
|
if (!updatedOrganization) {
|
|
118
|
-
return json({
|
|
119
|
-
success: false,
|
|
120
|
-
error: 'Organization not found'
|
|
121
|
-
}, { status: 404 });
|
|
104
|
+
return c.json({ success: false, error: 'Organization not found' }, 404);
|
|
122
105
|
}
|
|
123
|
-
return json({
|
|
124
|
-
success: true,
|
|
125
|
-
data: updatedOrganization
|
|
126
|
-
});
|
|
106
|
+
return c.json({ success: true, data: updatedOrganization });
|
|
127
107
|
}
|
|
128
108
|
catch (error) {
|
|
129
109
|
cmsLogger.error('Failed to update organization:', error);
|
|
130
|
-
return json({
|
|
110
|
+
return c.json({
|
|
131
111
|
success: false,
|
|
132
112
|
error: 'Failed to update organization',
|
|
133
113
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
134
|
-
},
|
|
114
|
+
}, 500);
|
|
135
115
|
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
export const DELETE = async ({ params, locals }) => {
|
|
116
|
+
})
|
|
117
|
+
.delete('/:id', async (c) => {
|
|
139
118
|
try {
|
|
140
|
-
const { databaseAdapter } =
|
|
141
|
-
const auth =
|
|
142
|
-
const
|
|
119
|
+
const { databaseAdapter } = c.var.aphexCMS;
|
|
120
|
+
const auth = c.var.auth;
|
|
121
|
+
const id = c.req.param('id');
|
|
143
122
|
if (!auth || auth.type !== 'session') {
|
|
144
|
-
return json({
|
|
123
|
+
return c.json({
|
|
145
124
|
success: false,
|
|
146
125
|
error: 'Unauthorized',
|
|
147
126
|
message: 'Session authentication required'
|
|
148
|
-
},
|
|
127
|
+
}, 401);
|
|
149
128
|
}
|
|
150
129
|
if (!id) {
|
|
151
|
-
return json({
|
|
130
|
+
return c.json({
|
|
152
131
|
success: false,
|
|
153
132
|
error: 'Missing required field',
|
|
154
133
|
message: 'Organization ID is required'
|
|
155
|
-
},
|
|
134
|
+
}, 400);
|
|
156
135
|
}
|
|
157
|
-
// Only owners can delete an organization
|
|
158
136
|
const membership = await databaseAdapter.findUserMembership(auth.user.id, id);
|
|
159
137
|
if (!membership || membership.role !== 'owner') {
|
|
160
|
-
return json({
|
|
138
|
+
return c.json({
|
|
161
139
|
success: false,
|
|
162
140
|
error: 'Forbidden',
|
|
163
141
|
message: 'Only owners can delete an organization'
|
|
164
|
-
},
|
|
142
|
+
}, 403);
|
|
165
143
|
}
|
|
166
|
-
// Get all members of the organization
|
|
167
144
|
const members = await databaseAdapter.findOrganizationMembers(id);
|
|
168
|
-
// Handle member lifecycle
|
|
169
145
|
for (const member of members) {
|
|
170
146
|
const userSession = await databaseAdapter.findUserSession(member.userId);
|
|
171
147
|
if (userSession?.activeOrganizationId === id) {
|
|
@@ -179,24 +155,17 @@ export const DELETE = async ({ params, locals }) => {
|
|
|
179
155
|
}
|
|
180
156
|
}
|
|
181
157
|
}
|
|
182
|
-
// Delete all members from the organization
|
|
183
158
|
await databaseAdapter.removeAllMembers(id);
|
|
184
|
-
// Delete all invitations for the organization
|
|
185
159
|
await databaseAdapter.removeAllInvitations(id);
|
|
186
|
-
// Delete the organization
|
|
187
160
|
await databaseAdapter.deleteOrganization(id);
|
|
188
|
-
return json({
|
|
189
|
-
success: true,
|
|
190
|
-
message: 'Organization deleted successfully'
|
|
191
|
-
});
|
|
161
|
+
return c.json({ success: true, message: 'Organization deleted successfully' });
|
|
192
162
|
}
|
|
193
163
|
catch (error) {
|
|
194
164
|
cmsLogger.error('Failed to delete organization:', error);
|
|
195
|
-
return json({
|
|
165
|
+
return c.json({
|
|
196
166
|
success: false,
|
|
197
167
|
error: 'Failed to delete organization',
|
|
198
168
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
199
|
-
},
|
|
169
|
+
}, 500);
|
|
200
170
|
}
|
|
201
|
-
};
|
|
202
|
-
//# sourceMappingURL=organizations-by-id.js.map
|
|
171
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import type { AphexEnv } from '../index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Note: in studio, invitations are wrapped by a SvelteKit `+server.ts`
|
|
5
|
+
* that adds email sending after the invite row is created. While that
|
|
6
|
+
* shim exists, this Hono router sits dormant (specific SK routes win
|
|
7
|
+
* over the catch-all). Phase 5 moves the wrapper into `config.api`.
|
|
8
|
+
*/
|
|
9
|
+
export declare const organizationsInvitationsRouter: Hono<AphexEnv>;
|
|
10
|
+
//# sourceMappingURL=organizations-invitations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organizations-invitations.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/api/routes/organizations-invitations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAQ5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,EAAE,IAAI,CAAC,QAAQ,CA0MxD,CAAC"}
|