@unchainedshop/cockpit-api 2.3.0 → 2.3.2
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/client.js +2 -2
- package/dist/core/config.js +2 -2
- package/dist/core/url-builder.js +2 -2
- package/dist/fetch/client.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -3
- package/dist/schema/executor.js +1 -1
- package/dist/transformers/asset-path.js +1 -1
- package/dist/transformers/image-path.d.ts +0 -7
- package/dist/transformers/image-path.js +1 -18
- package/dist/transformers/index.d.ts +1 -1
- package/dist/transformers/index.js +1 -3
- package/dist/utils/route-map.js +2 -2
- package/package.json +2 -2
package/dist/client.js
CHANGED
|
@@ -82,7 +82,7 @@ export async function CockpitAPI(options = {}) {
|
|
|
82
82
|
baseUrl: config.endpoint.origin,
|
|
83
83
|
replacements: routeReplacements,
|
|
84
84
|
};
|
|
85
|
-
if (options.tenant
|
|
85
|
+
if (options.tenant)
|
|
86
86
|
transformerConfig.tenant = options.tenant;
|
|
87
87
|
const transformer = createImagePathTransformer(transformerConfig);
|
|
88
88
|
// Create URL builder
|
|
@@ -95,7 +95,7 @@ export async function CockpitAPI(options = {}) {
|
|
|
95
95
|
url: urlBuilder,
|
|
96
96
|
cache,
|
|
97
97
|
endpoint: endpointString,
|
|
98
|
-
...(options.tenant
|
|
98
|
+
...(options.tenant && { tenant: options.tenant }),
|
|
99
99
|
};
|
|
100
100
|
// Create method groups
|
|
101
101
|
const contentMethods = createContentMethods(ctx);
|
package/dist/core/config.js
CHANGED
|
@@ -17,7 +17,7 @@ export function createConfig(options = {}) {
|
|
|
17
17
|
? undefined
|
|
18
18
|
: options.tenant;
|
|
19
19
|
// Validate tenant format to prevent path traversal
|
|
20
|
-
if (tenant
|
|
20
|
+
if (tenant && !VALID_TENANT_PATTERN.test(tenant)) {
|
|
21
21
|
throw new Error("Cockpit: Invalid tenant format (only alphanumeric, hyphens, and underscores allowed)");
|
|
22
22
|
}
|
|
23
23
|
const endpoint = new URL(endpointStr);
|
|
@@ -28,7 +28,7 @@ export function createConfig(options = {}) {
|
|
|
28
28
|
useAdminAccess: options.useAdminAccess ?? false,
|
|
29
29
|
defaultLanguage: options.defaultLanguage ?? null,
|
|
30
30
|
cachePrefix: `${endpointStr}:${tenant ?? "default"}:`,
|
|
31
|
-
...(tenant
|
|
31
|
+
...(tenant && { tenant }),
|
|
32
32
|
...(apiKey !== undefined && { apiKey }),
|
|
33
33
|
});
|
|
34
34
|
return config;
|
package/dist/core/url-builder.js
CHANGED
|
@@ -7,7 +7,7 @@ import { createLocaleNormalizer } from "./locale.js";
|
|
|
7
7
|
* Creates a URL builder for the given configuration
|
|
8
8
|
*/
|
|
9
9
|
export function createUrlBuilder(config) {
|
|
10
|
-
const apiBasePath = config.tenant
|
|
10
|
+
const apiBasePath = config.tenant ? `/:${config.tenant}/api` : "/api";
|
|
11
11
|
const normalizeLocale = createLocaleNormalizer(config.defaultLanguage);
|
|
12
12
|
return {
|
|
13
13
|
build(path, options = {}) {
|
|
@@ -26,7 +26,7 @@ export function createUrlBuilder(config) {
|
|
|
26
26
|
},
|
|
27
27
|
graphqlEndpoint() {
|
|
28
28
|
const url = new URL(config.endpoint);
|
|
29
|
-
if (config.tenant
|
|
29
|
+
if (config.tenant) {
|
|
30
30
|
url.pathname = `/:${config.tenant}${url.pathname}`;
|
|
31
31
|
}
|
|
32
32
|
return url;
|
package/dist/fetch/client.js
CHANGED
|
@@ -14,7 +14,7 @@ import { createLocaleNormalizer } from "../core/locale.js";
|
|
|
14
14
|
*/
|
|
15
15
|
function buildApiBaseUrl(endpoint, tenant) {
|
|
16
16
|
const url = new URL(endpoint);
|
|
17
|
-
const basePath = tenant
|
|
17
|
+
const basePath = tenant ? `/:${tenant}/api` : "/api";
|
|
18
18
|
return `${url.origin}${basePath}`;
|
|
19
19
|
}
|
|
20
20
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export { getTenantIds, resolveTenantFromUrl, resolveTenantFromSubdomain, } from
|
|
|
11
11
|
export type { TenantUrlResult, ResolveTenantFromUrlOptions, ResolveTenantFromSubdomainOptions, } from "./utils/tenant.ts";
|
|
12
12
|
export { generateCmsRouteReplacements, generateCollectionAndSingletonSlugRouteMap, } from "./utils/route-map.ts";
|
|
13
13
|
export type { ResponseTransformer } from "./transformers/image-path.ts";
|
|
14
|
-
export { createImagePathTransformer, identityTransformer,
|
|
14
|
+
export { createImagePathTransformer, identityTransformer, } from "./transformers/image-path.ts";
|
|
15
15
|
export { createAssetPathTransformer, createPageLinkTransformer, composeTransformers, } from "./transformers/index.ts";
|
|
16
16
|
export type { MethodContext, ListQueryOptions, ContentItemQueryOptions, ContentListQueryOptions, TreeQueryOptions, AggregateQueryOptions, } from "./methods/content.ts";
|
|
17
17
|
export type { PageByIdOptions, PageByRouteOptions } from "./methods/pages.ts";
|
package/dist/index.js
CHANGED
|
@@ -6,9 +6,7 @@
|
|
|
6
6
|
export { CockpitAPI } from "./client.js";
|
|
7
7
|
export { getTenantIds, resolveTenantFromUrl, resolveTenantFromSubdomain, } from "./utils/tenant.js";
|
|
8
8
|
export { generateCmsRouteReplacements, generateCollectionAndSingletonSlugRouteMap, } from "./utils/route-map.js";
|
|
9
|
-
export { createImagePathTransformer, identityTransformer,
|
|
10
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
11
|
-
FixImagePaths, } from "./transformers/image-path.js";
|
|
9
|
+
export { createImagePathTransformer, identityTransformer, } from "./transformers/image-path.js";
|
|
12
10
|
export { createAssetPathTransformer, createPageLinkTransformer, composeTransformers, } from "./transformers/index.js";
|
|
13
11
|
export { ImageSizeMode, MimeType } from "./methods/assets.js";
|
|
14
12
|
export { parseCockpitUrl, isCockpitPageUrl, isCockpitAssetUrl, extractPageId, extractAssetId, } from "./utils/url-protocols.js";
|
package/dist/schema/executor.js
CHANGED
|
@@ -59,7 +59,7 @@ export function createRemoteExecutor(options = {}) {
|
|
|
59
59
|
preloadRoutes: true,
|
|
60
60
|
...cockpitOptions,
|
|
61
61
|
};
|
|
62
|
-
if (tenant
|
|
62
|
+
if (tenant)
|
|
63
63
|
clientOpts.tenant = tenant;
|
|
64
64
|
const clientPromise = CockpitAPI(clientOpts);
|
|
65
65
|
pendingClients.set(key, clientPromise);
|
|
@@ -8,7 +8,7 @@ import { logger } from "../cockpit-logger.js";
|
|
|
8
8
|
*/
|
|
9
9
|
export function transformAssetPaths(jsonString, config) {
|
|
10
10
|
const { baseUrl, tenant } = config;
|
|
11
|
-
const tenantUrl = `${baseUrl}${tenant
|
|
11
|
+
const tenantUrl = `${baseUrl}${tenant ? `/:${tenant}` : ""}`;
|
|
12
12
|
return (jsonString
|
|
13
13
|
// Fix asset paths in "path" fields
|
|
14
14
|
.replace(/"path":"\//g, `"path":"${tenantUrl}/storage/uploads/`)
|
|
@@ -19,10 +19,3 @@ export interface ImagePathTransformerConfig extends AssetPathConfig {
|
|
|
19
19
|
* Uses a single JSON stringify/parse cycle for efficiency.
|
|
20
20
|
*/
|
|
21
21
|
export declare function createImagePathTransformer(config: ImagePathTransformerConfig): ResponseTransformer;
|
|
22
|
-
/**
|
|
23
|
-
* Legacy export for backwards compatibility
|
|
24
|
-
* @deprecated Use createImagePathTransformer instead
|
|
25
|
-
*/
|
|
26
|
-
export declare function FixImagePaths(endpoint: string, replacements: Record<string, string>, tenant?: string): {
|
|
27
|
-
transformResult<T>(originalResponse: T): T;
|
|
28
|
-
};
|
|
@@ -21,7 +21,7 @@ export function createImagePathTransformer(config) {
|
|
|
21
21
|
const { baseUrl, tenant, replacements } = config;
|
|
22
22
|
// Build asset config, only including tenant if defined
|
|
23
23
|
const assetConfig = { baseUrl };
|
|
24
|
-
if (tenant
|
|
24
|
+
if (tenant)
|
|
25
25
|
assetConfig.tenant = tenant;
|
|
26
26
|
return {
|
|
27
27
|
transform(originalResponse) {
|
|
@@ -41,20 +41,3 @@ export function createImagePathTransformer(config) {
|
|
|
41
41
|
},
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Legacy export for backwards compatibility
|
|
46
|
-
* @deprecated Use createImagePathTransformer instead
|
|
47
|
-
*/
|
|
48
|
-
export function FixImagePaths(endpoint, replacements, tenant) {
|
|
49
|
-
const baseUrl = new URL(endpoint).origin;
|
|
50
|
-
const config = {
|
|
51
|
-
baseUrl,
|
|
52
|
-
replacements,
|
|
53
|
-
};
|
|
54
|
-
if (tenant !== undefined)
|
|
55
|
-
config.tenant = tenant;
|
|
56
|
-
const transformer = createImagePathTransformer(config);
|
|
57
|
-
return {
|
|
58
|
-
transformResult: transformer.transform.bind(transformer),
|
|
59
|
-
};
|
|
60
|
-
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Transformer exports
|
|
3
3
|
*/
|
|
4
4
|
export type { ResponseTransformer } from "./image-path.ts";
|
|
5
|
-
export { identityTransformer, createImagePathTransformer,
|
|
5
|
+
export { identityTransformer, createImagePathTransformer, } from "./image-path.ts";
|
|
6
6
|
export { composeTransformers } from "./compose.ts";
|
|
7
7
|
export { createAssetPathTransformer, transformAssetPaths, type AssetPathConfig, } from "./asset-path.ts";
|
|
8
8
|
export { createPageLinkTransformer, transformPageLinks } from "./page-link.ts";
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Transformer exports
|
|
3
3
|
*/
|
|
4
|
-
export { identityTransformer, createImagePathTransformer,
|
|
5
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
6
|
-
FixImagePaths, } from "./image-path.js";
|
|
4
|
+
export { identityTransformer, createImagePathTransformer, } from "./image-path.js";
|
|
7
5
|
export { composeTransformers } from "./compose.js";
|
|
8
6
|
export { createAssetPathTransformer, transformAssetPaths, } from "./asset-path.js";
|
|
9
7
|
export { createPageLinkTransformer, transformPageLinks } from "./page-link.js";
|
package/dist/utils/route-map.js
CHANGED
|
@@ -17,7 +17,7 @@ export async function generateCmsRouteReplacements(endpoint, tenant, cache) {
|
|
|
17
17
|
};
|
|
18
18
|
try {
|
|
19
19
|
const origin = new URL(endpoint).origin;
|
|
20
|
-
const apiPath = tenant
|
|
20
|
+
const apiPath = tenant ? `/:${tenant}/api` : "/api";
|
|
21
21
|
const response = await fetch(`${origin}${apiPath}/pages/pages?${new URLSearchParams(filterParams).toString()}`);
|
|
22
22
|
if (!response.ok) {
|
|
23
23
|
logger.warn(`Cockpit: Failed to fetch route replacements (status ${String(response.status)})`);
|
|
@@ -60,7 +60,7 @@ export async function generateCollectionAndSingletonSlugRouteMap(endpoint, tenan
|
|
|
60
60
|
};
|
|
61
61
|
try {
|
|
62
62
|
const origin = new URL(endpoint).origin;
|
|
63
|
-
const apiPath = tenant
|
|
63
|
+
const apiPath = tenant ? `/:${tenant}/api` : "/api";
|
|
64
64
|
const response = await fetch(`${origin}${apiPath}/pages/pages?locale=default&${new URLSearchParams(filterParams).toString()}`);
|
|
65
65
|
if (!response.ok) {
|
|
66
66
|
logger.warn(`Cockpit: Failed to fetch slug route map (status ${String(response.status)})`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/cockpit-api",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.2",
|
|
4
4
|
"description": "A package to interact with the Cockpit CMS API, including functionalities to handle GraphQL requests and various CMS content manipulations.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"homepage": "https://unchained.shop",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
"types": "dist/index.d.ts",
|
|
57
57
|
"peerDependencies": {
|
|
58
|
-
"@graphql-tools/wrap": "11.
|
|
58
|
+
"@graphql-tools/wrap": "^10.0.0 || ^11.0.0",
|
|
59
59
|
"graphql": "^15.0.0 || ^16.0.0"
|
|
60
60
|
},
|
|
61
61
|
"peerDependenciesMeta": {
|