@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,55 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import type { CMSInstances } from '../../hooks.js';
|
|
3
|
+
import type { Auth } from '../../types/auth.js';
|
|
4
|
+
/**
|
|
5
|
+
* Hono environment for the Aphex API.
|
|
6
|
+
*
|
|
7
|
+
* Variables on `c.var`:
|
|
8
|
+
* - `aphexCMS` — the singleton CMS service container (db, storage, services).
|
|
9
|
+
* - `auth` — the resolved auth principal for this request, or null if anonymous.
|
|
10
|
+
*
|
|
11
|
+
* These are populated by the SvelteKit catch-all, which invokes
|
|
12
|
+
* `app.fetch(request, { aphexCMS, auth })` and the bridge middleware below
|
|
13
|
+
* lifts them onto `c.var`.
|
|
14
|
+
*/
|
|
15
|
+
export type AphexEnv = {
|
|
16
|
+
Variables: {
|
|
17
|
+
aphexCMS: CMSInstances;
|
|
18
|
+
auth: Auth | null;
|
|
19
|
+
};
|
|
20
|
+
Bindings: {
|
|
21
|
+
aphexCMS: CMSInstances;
|
|
22
|
+
auth: Auth | null;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Build the Aphex API Hono app shell.
|
|
27
|
+
*
|
|
28
|
+
* Returns a Hono app with `/api` basePath and the bridge middleware that
|
|
29
|
+
* lifts `app.fetch(req, env)` values onto `c.var`. Built-in routes are NOT
|
|
30
|
+
* mounted yet — call `mountAphexBuiltins(app)` after registering any user
|
|
31
|
+
* middleware/overrides (Hono is registration-order-strict).
|
|
32
|
+
*/
|
|
33
|
+
export declare function createAphexApi(): import("hono/hono-base").HonoBase<AphexEnv, import("hono/types").BlankSchema, "/api", "/api">;
|
|
34
|
+
/**
|
|
35
|
+
* Mount cms-core's built-in resource routes onto an Aphex API app.
|
|
36
|
+
*
|
|
37
|
+
* Called by `createCMSHook` after `config.api?.(app)` runs, so user-provided
|
|
38
|
+
* middleware (e.g. an email-sending wrap on `/organizations/invitations`)
|
|
39
|
+
* registers ahead of the built-in handler and gets the chance to wrap it.
|
|
40
|
+
*/
|
|
41
|
+
export declare function mountAphexBuiltins(app: Hono<AphexEnv>): void;
|
|
42
|
+
export type ApiRoutes = ReturnType<typeof createAphexApi>;
|
|
43
|
+
/**
|
|
44
|
+
* Adapter: wrap a SvelteKit-style `RequestHandler` so it can be mounted
|
|
45
|
+
* onto a Hono router.
|
|
46
|
+
*
|
|
47
|
+
* Used for handlers that already exist in SK form (e.g. the built-in
|
|
48
|
+
* GraphQL Yoga app) and don't need to be rewritten just to flow through
|
|
49
|
+
* the Hono catch-all. We synthesize the minimum `event` shape those
|
|
50
|
+
* handlers actually read: `request` + `locals.{aphexCMS,auth}` + `params`
|
|
51
|
+
* + `url`. If a future SK handler reaches for `cookies`, `setHeaders`, or
|
|
52
|
+
* `getClientAddress`, extend the synthesized event accordingly.
|
|
53
|
+
*/
|
|
54
|
+
export declare function toHonoHandler(skHandler: (event: any) => Promise<Response> | Response): (c: import("hono").Context<AphexEnv>) => Promise<Response>;
|
|
55
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/server/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAoB7C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,SAAS,EAAE;QACV,QAAQ,EAAE,YAAY,CAAC;QACvB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;KAClB,CAAC;IACF,QAAQ,EAAE;QACT,QAAQ,EAAE,YAAY,CAAC;QACvB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;KAClB,CAAC;CACF,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,cAAc,kGAY7B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,QAoCrD;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,IAEzC,GAAG,OAAO,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,uBAejD"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { schemasRouter } from './routes/schemas.js';
|
|
3
|
+
import { documentsRouter } from './routes/documents.js';
|
|
4
|
+
import { documentsByIdRouter } from './routes/documents-by-id.js';
|
|
5
|
+
import { documentsPublishRouter } from './routes/documents-publish.js';
|
|
6
|
+
import { documentsQueryRouter } from './routes/documents-query.js';
|
|
7
|
+
import { documentVersionsRouter } from './routes/document-versions.js';
|
|
8
|
+
import { assetsRouter } from './routes/assets.js';
|
|
9
|
+
import { assetsByIdRouter } from './routes/assets-by-id.js';
|
|
10
|
+
import { assetsBulkRouter } from './routes/assets-bulk.js';
|
|
11
|
+
import { assetsReferencesRouter } from './routes/assets-references.js';
|
|
12
|
+
import { organizationsRouter } from './routes/organizations.js';
|
|
13
|
+
import { organizationsByIdRouter } from './routes/organizations-by-id.js';
|
|
14
|
+
import { organizationsInvitationsRouter } from './routes/organizations-invitations.js';
|
|
15
|
+
import { organizationsMembersRouter } from './routes/organizations-members.js';
|
|
16
|
+
import { organizationsSwitchRouter } from './routes/organizations-switch.js';
|
|
17
|
+
import { rolesRouter } from './routes/roles.js';
|
|
18
|
+
import { userPreferencesRouter } from './routes/user-preferences.js';
|
|
19
|
+
import { userRouter } from './routes/user.js';
|
|
20
|
+
/**
|
|
21
|
+
* Build the Aphex API Hono app shell.
|
|
22
|
+
*
|
|
23
|
+
* Returns a Hono app with `/api` basePath and the bridge middleware that
|
|
24
|
+
* lifts `app.fetch(req, env)` values onto `c.var`. Built-in routes are NOT
|
|
25
|
+
* mounted yet — call `mountAphexBuiltins(app)` after registering any user
|
|
26
|
+
* middleware/overrides (Hono is registration-order-strict).
|
|
27
|
+
*/
|
|
28
|
+
export function createAphexApi() {
|
|
29
|
+
const app = new Hono().basePath('/api');
|
|
30
|
+
// Bridge: lift values passed via app.fetch(req, env) onto c.var so
|
|
31
|
+
// handlers can read c.var.aphexCMS / c.var.auth directly.
|
|
32
|
+
app.use('*', async (c, next) => {
|
|
33
|
+
c.set('aphexCMS', c.env.aphexCMS);
|
|
34
|
+
c.set('auth', c.env.auth);
|
|
35
|
+
await next();
|
|
36
|
+
});
|
|
37
|
+
return app;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Mount cms-core's built-in resource routes onto an Aphex API app.
|
|
41
|
+
*
|
|
42
|
+
* Called by `createCMSHook` after `config.api?.(app)` runs, so user-provided
|
|
43
|
+
* middleware (e.g. an email-sending wrap on `/organizations/invitations`)
|
|
44
|
+
* registers ahead of the built-in handler and gets the chance to wrap it.
|
|
45
|
+
*/
|
|
46
|
+
export function mountAphexBuiltins(app) {
|
|
47
|
+
// Order matters: more-specific paths (`/documents/query`,
|
|
48
|
+
// `/documents/:id/publish`, `/documents/:id/versions/...`) must be
|
|
49
|
+
// registered before `/documents/:id` so Hono's first-match-wins
|
|
50
|
+
// resolver doesn't capture them under the catch-all `:id` param.
|
|
51
|
+
app.route('/schemas', schemasRouter);
|
|
52
|
+
app.route('/documents', documentsQueryRouter);
|
|
53
|
+
app.route('/documents', documentsPublishRouter);
|
|
54
|
+
app.route('/documents', documentVersionsRouter);
|
|
55
|
+
app.route('/documents', documentsByIdRouter);
|
|
56
|
+
app.route('/documents', documentsRouter);
|
|
57
|
+
// Assets — same precedence rule: specific paths before parametric.
|
|
58
|
+
// `/assets/bulk` and `/assets/references/counts` must register before
|
|
59
|
+
// `/assets/:id` or Hono will capture them as `:id = "bulk"` etc.
|
|
60
|
+
app.route('/assets', assetsBulkRouter);
|
|
61
|
+
app.route('/assets', assetsReferencesRouter);
|
|
62
|
+
app.route('/assets', assetsByIdRouter);
|
|
63
|
+
app.route('/assets', assetsRouter);
|
|
64
|
+
// Organizations — specifics (/switch, /invitations, /members) before /:id.
|
|
65
|
+
app.route('/organizations', organizationsSwitchRouter);
|
|
66
|
+
app.route('/organizations', organizationsInvitationsRouter);
|
|
67
|
+
app.route('/organizations', organizationsMembersRouter);
|
|
68
|
+
app.route('/organizations', organizationsByIdRouter);
|
|
69
|
+
app.route('/organizations', organizationsRouter);
|
|
70
|
+
// Roles — combined router covers /, /:name, no precedence concern.
|
|
71
|
+
app.route('/roles', rolesRouter);
|
|
72
|
+
// User account routes — register specifics first.
|
|
73
|
+
// `/user/cms-preference`, `/user/request-password-reset`,
|
|
74
|
+
// `/user/reset-password` need to win over `/user` PATCH otherwise
|
|
75
|
+
// Hono would try to match them under the wrong handler chain.
|
|
76
|
+
app.route('/user', userPreferencesRouter);
|
|
77
|
+
app.route('/user', userRouter);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Adapter: wrap a SvelteKit-style `RequestHandler` so it can be mounted
|
|
81
|
+
* onto a Hono router.
|
|
82
|
+
*
|
|
83
|
+
* Used for handlers that already exist in SK form (e.g. the built-in
|
|
84
|
+
* GraphQL Yoga app) and don't need to be rewritten just to flow through
|
|
85
|
+
* the Hono catch-all. We synthesize the minimum `event` shape those
|
|
86
|
+
* handlers actually read: `request` + `locals.{aphexCMS,auth}` + `params`
|
|
87
|
+
* + `url`. If a future SK handler reaches for `cookies`, `setHeaders`, or
|
|
88
|
+
* `getClientAddress`, extend the synthesized event accordingly.
|
|
89
|
+
*/
|
|
90
|
+
export function toHonoHandler(skHandler) {
|
|
91
|
+
return async (c) => {
|
|
92
|
+
const fakeEvent = {
|
|
93
|
+
request: c.req.raw,
|
|
94
|
+
url: new URL(c.req.url),
|
|
95
|
+
params: c.req.param(),
|
|
96
|
+
locals: {
|
|
97
|
+
aphexCMS: c.var.aphexCMS,
|
|
98
|
+
auth: c.var.auth
|
|
99
|
+
},
|
|
100
|
+
// No-op fallbacks — only used if a wrapped SK handler probes for them.
|
|
101
|
+
setHeaders: () => undefined,
|
|
102
|
+
getClientAddress: () => c.req.header('x-forwarded-for') ?? '127.0.0.1'
|
|
103
|
+
};
|
|
104
|
+
return skHandler(fakeEvent);
|
|
105
|
+
};
|
|
106
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-bulk.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/api/routes/assets-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAkE3C,CAAC"}
|
|
@@ -1,35 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { zValidator } from '@hono/zod-validator';
|
|
3
|
+
import { cmsLogger } from '../../../utils/logger.js';
|
|
4
|
+
import { bulkDeleteAssetsRequest } from '../../../api/schemas/assets.js';
|
|
5
|
+
export const assetsBulkRouter = new Hono().delete('/bulk', zValidator('json', bulkDeleteAssetsRequest, (result, c) => {
|
|
6
|
+
if (!result.success) {
|
|
7
|
+
return c.json({
|
|
8
|
+
success: false,
|
|
9
|
+
error: 'No asset IDs provided',
|
|
10
|
+
issues: result.error.issues
|
|
11
|
+
}, 400);
|
|
12
|
+
}
|
|
13
|
+
}), async (c) => {
|
|
5
14
|
try {
|
|
6
|
-
const { assetService, databaseAdapter } =
|
|
7
|
-
const auth =
|
|
15
|
+
const { assetService, databaseAdapter } = c.var.aphexCMS;
|
|
16
|
+
const auth = c.var.auth;
|
|
8
17
|
if (!auth || auth.type === 'partial_session') {
|
|
9
|
-
return json({ success: false, error: 'Unauthorized' },
|
|
10
|
-
}
|
|
11
|
-
const rawBody = await request.json();
|
|
12
|
-
const parsed = bulkDeleteAssetsRequest.safeParse(rawBody);
|
|
13
|
-
if (!parsed.success) {
|
|
14
|
-
return json({
|
|
15
|
-
success: false,
|
|
16
|
-
error: 'No asset IDs provided',
|
|
17
|
-
issues: parsed.error.issues
|
|
18
|
-
}, { status: 400 });
|
|
18
|
+
return c.json({ success: false, error: 'Unauthorized' }, 401);
|
|
19
19
|
}
|
|
20
|
-
const { ids } =
|
|
21
|
-
// Check for references before deleting
|
|
20
|
+
const { ids } = c.req.valid('json');
|
|
22
21
|
let referencedIds = [];
|
|
23
22
|
if (databaseAdapter.countDocumentReferencesForAssets) {
|
|
24
23
|
const counts = await databaseAdapter.countDocumentReferencesForAssets(auth.organizationId, ids);
|
|
25
24
|
referencedIds = ids.filter((id) => (counts[id] || 0) > 0);
|
|
26
25
|
}
|
|
27
26
|
if (referencedIds.length > 0) {
|
|
28
|
-
return json({
|
|
27
|
+
return c.json({
|
|
29
28
|
success: false,
|
|
30
29
|
error: `Cannot delete ${referencedIds.length} asset${referencedIds.length > 1 ? 's' : ''} because ${referencedIds.length > 1 ? 'they are' : 'it is'} still referenced by documents`,
|
|
31
30
|
referencedIds
|
|
32
|
-
},
|
|
31
|
+
}, 409);
|
|
33
32
|
}
|
|
34
33
|
const results = { deleted: 0, failed: 0 };
|
|
35
34
|
for (const id of ids) {
|
|
@@ -46,11 +45,10 @@ export const DELETE = async ({ request, locals }) => {
|
|
|
46
45
|
results.failed++;
|
|
47
46
|
}
|
|
48
47
|
}
|
|
49
|
-
return json({ success: true, data: results });
|
|
48
|
+
return c.json({ success: true, data: results });
|
|
50
49
|
}
|
|
51
50
|
catch (error) {
|
|
52
51
|
cmsLogger.error('Bulk delete failed:', error);
|
|
53
|
-
return json({ success: false, error: 'Bulk delete failed' },
|
|
52
|
+
return c.json({ success: false, error: 'Bulk delete failed' }, 500);
|
|
54
53
|
}
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=assets-bulk.js.map
|
|
54
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-by-id.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/api/routes/assets-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,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CA8HzC,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { zValidator } from '@hono/zod-validator';
|
|
3
|
+
import { cmsLogger } from '../../../utils/logger.js';
|
|
4
|
+
import { updateAssetRequest } from '../../../api/schemas/assets.js';
|
|
5
|
+
export const assetsByIdRouter = new Hono()
|
|
6
|
+
.get('/:id', async (c) => {
|
|
7
|
+
try {
|
|
8
|
+
const { assetService } = c.var.aphexCMS;
|
|
9
|
+
const auth = c.var.auth;
|
|
10
|
+
const id = c.req.param('id');
|
|
11
|
+
if (!auth || auth.type === 'partial_session') {
|
|
12
|
+
return c.json({ success: false, error: 'Unauthorized' }, 401);
|
|
13
|
+
}
|
|
14
|
+
if (!id) {
|
|
15
|
+
return c.json({ success: false, error: 'Asset ID is required' }, 400);
|
|
16
|
+
}
|
|
17
|
+
const asset = await assetService.findAssetById(auth.organizationId, id);
|
|
18
|
+
if (!asset) {
|
|
19
|
+
return c.json({ success: false, error: 'Asset not found' }, 404);
|
|
20
|
+
}
|
|
21
|
+
return c.json({ success: true, data: asset });
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
cmsLogger.error('[Asset API] Error fetching asset:', error);
|
|
25
|
+
return c.json({ success: false, error: 'Failed to fetch asset' }, 500);
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
.delete('/:id', async (c) => {
|
|
29
|
+
try {
|
|
30
|
+
const id = c.req.param('id');
|
|
31
|
+
const { assetService, databaseAdapter } = c.var.aphexCMS;
|
|
32
|
+
const auth = c.var.auth;
|
|
33
|
+
if (!auth || auth.type === 'partial_session') {
|
|
34
|
+
return c.json({ success: false, error: 'Unauthorized' }, 401);
|
|
35
|
+
}
|
|
36
|
+
if (!id) {
|
|
37
|
+
return c.json({ success: false, error: 'Asset ID is required' }, 400);
|
|
38
|
+
}
|
|
39
|
+
if (databaseAdapter.findDocumentsReferencingAsset) {
|
|
40
|
+
const refs = await databaseAdapter.findDocumentsReferencingAsset(auth.organizationId, id);
|
|
41
|
+
if (refs.length > 0) {
|
|
42
|
+
return c.json({
|
|
43
|
+
success: false,
|
|
44
|
+
error: `Cannot delete asset — it is referenced by ${refs.length} document${refs.length > 1 ? 's' : ''}`
|
|
45
|
+
}, 409);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const result = await assetService.deleteAsset(auth.organizationId, id);
|
|
49
|
+
if (!result) {
|
|
50
|
+
return c.json({ success: false, error: 'Asset not found or could not be deleted' }, 404);
|
|
51
|
+
}
|
|
52
|
+
return c.json({ success: true });
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
cmsLogger.error('Error deleting asset:', error);
|
|
56
|
+
return c.json({ success: false, error: 'Failed to delete asset' }, 500);
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
.patch('/:id', zValidator('json', updateAssetRequest, (result, c) => {
|
|
60
|
+
if (!result.success) {
|
|
61
|
+
return c.json({
|
|
62
|
+
success: false,
|
|
63
|
+
error: 'Invalid request body',
|
|
64
|
+
issues: result.error.issues
|
|
65
|
+
}, 400);
|
|
66
|
+
}
|
|
67
|
+
}), async (c) => {
|
|
68
|
+
try {
|
|
69
|
+
const { assetService } = c.var.aphexCMS;
|
|
70
|
+
const auth = c.var.auth;
|
|
71
|
+
const id = c.req.param('id');
|
|
72
|
+
if (!auth || auth.type === 'partial_session') {
|
|
73
|
+
return c.json({ success: false, error: 'Unauthorized' }, 401);
|
|
74
|
+
}
|
|
75
|
+
if (!id) {
|
|
76
|
+
return c.json({ success: false, error: 'Asset ID is required' }, 400);
|
|
77
|
+
}
|
|
78
|
+
const { title, description, alt, creditLine } = c.req.valid('json');
|
|
79
|
+
let updatedAsset;
|
|
80
|
+
if (auth.type === 'session') {
|
|
81
|
+
updatedAsset = await assetService.updateAssetMetadata(auth.organizationId, id, {
|
|
82
|
+
title,
|
|
83
|
+
description,
|
|
84
|
+
alt,
|
|
85
|
+
creditLine,
|
|
86
|
+
updatedBy: auth.user.id
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
updatedAsset = await assetService.updateAssetMetadata(auth.organizationId, id, {
|
|
91
|
+
title,
|
|
92
|
+
description,
|
|
93
|
+
alt,
|
|
94
|
+
creditLine,
|
|
95
|
+
updatedBy: auth.keyId
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
if (!updatedAsset) {
|
|
99
|
+
return c.json({ success: false, error: 'Asset not found' }, 404);
|
|
100
|
+
}
|
|
101
|
+
return c.json({ success: true, data: updatedAsset });
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
cmsLogger.error('Error updating asset:', error);
|
|
105
|
+
return c.json({ success: false, error: 'Failed to update asset' }, 500);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import type { AphexEnv } from '../index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Asset references endpoints. Two distinct paths sharing one router file:
|
|
5
|
+
* - GET /:id/references → docs that reference one asset
|
|
6
|
+
* - POST /references/counts → batch reference counts for many ids
|
|
7
|
+
*
|
|
8
|
+
* Mounted under `/assets`, so the wire paths are
|
|
9
|
+
* `/api/assets/:id/references` and `/api/assets/references/counts`.
|
|
10
|
+
*
|
|
11
|
+
* Order matters in createAphexApi(): mount this BEFORE assetsByIdRouter so
|
|
12
|
+
* `/references/counts` doesn't get captured as `:id = "references"`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const assetsReferencesRouter: Hono<AphexEnv>;
|
|
15
|
+
//# sourceMappingURL=assets-references.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-references.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/api/routes/assets-references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,EAAE,IAAI,CAAC,QAAQ,CAkFhD,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { zValidator } from '@hono/zod-validator';
|
|
3
|
+
import { cmsLogger } from '../../../utils/logger.js';
|
|
4
|
+
import { assetReferenceCountsRequest } from '../../../api/schemas/assets.js';
|
|
5
|
+
/**
|
|
6
|
+
* Asset references endpoints. Two distinct paths sharing one router file:
|
|
7
|
+
* - GET /:id/references → docs that reference one asset
|
|
8
|
+
* - POST /references/counts → batch reference counts for many ids
|
|
9
|
+
*
|
|
10
|
+
* Mounted under `/assets`, so the wire paths are
|
|
11
|
+
* `/api/assets/:id/references` and `/api/assets/references/counts`.
|
|
12
|
+
*
|
|
13
|
+
* Order matters in createAphexApi(): mount this BEFORE assetsByIdRouter so
|
|
14
|
+
* `/references/counts` doesn't get captured as `:id = "references"`.
|
|
15
|
+
*/
|
|
16
|
+
export const assetsReferencesRouter = new Hono()
|
|
17
|
+
.get('/:id/references', async (c) => {
|
|
18
|
+
try {
|
|
19
|
+
const { databaseAdapter } = c.var.aphexCMS;
|
|
20
|
+
const auth = c.var.auth;
|
|
21
|
+
if (!auth || auth.type === 'partial_session') {
|
|
22
|
+
return c.json({ success: false, error: 'Unauthorized' }, 401);
|
|
23
|
+
}
|
|
24
|
+
const id = c.req.param('id');
|
|
25
|
+
if (!id) {
|
|
26
|
+
return c.json({ success: false, error: 'Asset ID is required' }, 400);
|
|
27
|
+
}
|
|
28
|
+
if (!databaseAdapter.findDocumentsReferencingAsset) {
|
|
29
|
+
return c.json({ success: true, data: { references: [], total: 0 } });
|
|
30
|
+
}
|
|
31
|
+
const references = await databaseAdapter.findDocumentsReferencingAsset(auth.organizationId, id);
|
|
32
|
+
return c.json({
|
|
33
|
+
success: true,
|
|
34
|
+
data: {
|
|
35
|
+
references,
|
|
36
|
+
total: references.length
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
cmsLogger.error('Failed to find asset references:', error);
|
|
42
|
+
return c.json({ success: false, error: 'Failed to find asset references' }, 500);
|
|
43
|
+
}
|
|
44
|
+
})
|
|
45
|
+
.post('/references/counts', zValidator('json', assetReferenceCountsRequest, (result, c) => {
|
|
46
|
+
if (!result.success) {
|
|
47
|
+
return c.json({
|
|
48
|
+
success: false,
|
|
49
|
+
error: 'Invalid request body',
|
|
50
|
+
issues: result.error.issues
|
|
51
|
+
}, 400);
|
|
52
|
+
}
|
|
53
|
+
}), async (c) => {
|
|
54
|
+
try {
|
|
55
|
+
const { databaseAdapter } = c.var.aphexCMS;
|
|
56
|
+
const auth = c.var.auth;
|
|
57
|
+
if (!auth || auth.type === 'partial_session') {
|
|
58
|
+
return c.json({ success: false, error: 'Unauthorized' }, 401);
|
|
59
|
+
}
|
|
60
|
+
const { ids } = c.req.valid('json');
|
|
61
|
+
if (ids.length === 0) {
|
|
62
|
+
return c.json({ success: true, data: {} });
|
|
63
|
+
}
|
|
64
|
+
if (!databaseAdapter.countDocumentReferencesForAssets) {
|
|
65
|
+
const counts = {};
|
|
66
|
+
for (const id of ids)
|
|
67
|
+
counts[id] = 0;
|
|
68
|
+
return c.json({ success: true, data: counts });
|
|
69
|
+
}
|
|
70
|
+
const counts = await databaseAdapter.countDocumentReferencesForAssets(auth.organizationId, ids);
|
|
71
|
+
return c.json({ success: true, data: counts });
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
cmsLogger.error('Failed to count asset references:', error);
|
|
75
|
+
return c.json({ success: false, error: 'Failed to count asset references' }, 500);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/api/routes/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,YAAY,EAAE,IAAI,CAAC,QAAQ,CA+IrC,CAAC"}
|