@storyblok/api-client 0.3.1 → 1.0.0-alpha.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/README.md +3 -1
- package/dist/client.cjs +179 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.cts +567 -0
- package/dist/client.d.mts +567 -0
- package/dist/client.mjs +178 -0
- package/dist/client.mjs.map +1 -0
- package/dist/error.cjs.map +1 -1
- package/dist/error.d.cts +13 -2
- package/dist/error.d.mts +13 -2
- package/dist/error.mjs.map +1 -1
- package/dist/generated/capi/_internal.gen.d.cts +120 -0
- package/dist/generated/capi/_internal.gen.d.mts +120 -0
- package/dist/generated/{shared → capi}/client/client.gen.cjs +1 -1
- package/dist/generated/capi/client/client.gen.cjs.map +1 -0
- package/dist/generated/capi/client/client.gen.d.mts +1 -0
- package/dist/generated/{shared → capi}/client/client.gen.mjs +1 -1
- package/dist/generated/capi/client/client.gen.mjs.map +1 -0
- package/dist/generated/capi/client/index.d.mts +3 -0
- package/dist/generated/{shared → capi}/client/types.gen.d.cts +40 -4
- package/dist/generated/{shared → capi}/client/types.gen.d.mts +40 -4
- package/dist/generated/{shared → capi}/client/utils.gen.cjs +1 -1
- package/dist/generated/capi/client/utils.gen.cjs.map +1 -0
- package/dist/generated/{shared → capi}/client/utils.gen.d.cts +1 -1
- package/dist/generated/{shared → capi}/client/utils.gen.d.mts +1 -1
- package/dist/generated/{shared → capi}/client/utils.gen.mjs +1 -1
- package/dist/generated/capi/client/utils.gen.mjs.map +1 -0
- package/dist/generated/capi/client.gen.cjs +10 -0
- package/dist/generated/capi/client.gen.cjs.map +1 -0
- package/dist/generated/capi/client.gen.mjs +10 -0
- package/dist/generated/capi/client.gen.mjs.map +1 -0
- package/dist/generated/{shared → capi}/core/auth.gen.cjs +1 -1
- package/dist/generated/capi/core/auth.gen.cjs.map +1 -0
- package/dist/generated/{shared → capi}/core/auth.gen.d.cts +1 -1
- package/dist/generated/{shared → capi}/core/auth.gen.d.mts +1 -1
- package/dist/generated/{shared → capi}/core/auth.gen.mjs +1 -1
- package/dist/generated/capi/core/auth.gen.mjs.map +1 -0
- package/dist/generated/{shared → capi}/core/bodySerializer.gen.cjs +1 -1
- package/dist/generated/capi/core/bodySerializer.gen.cjs.map +1 -0
- package/dist/generated/{shared → capi}/core/bodySerializer.gen.d.cts +1 -1
- package/dist/generated/{shared → capi}/core/bodySerializer.gen.d.mts +1 -1
- package/dist/generated/{shared → capi}/core/bodySerializer.gen.mjs +1 -1
- package/dist/generated/capi/core/bodySerializer.gen.mjs.map +1 -0
- package/dist/generated/{shared → capi}/core/params.gen.cjs +1 -1
- package/dist/generated/capi/core/params.gen.cjs.map +1 -0
- package/dist/generated/{shared → capi}/core/params.gen.mjs +1 -1
- package/dist/generated/capi/core/params.gen.mjs.map +1 -0
- package/dist/generated/{shared → capi}/core/pathSerializer.gen.cjs +1 -1
- package/dist/generated/capi/core/pathSerializer.gen.cjs.map +1 -0
- package/dist/generated/{shared → capi}/core/pathSerializer.gen.d.cts +1 -1
- package/dist/generated/{shared → capi}/core/pathSerializer.gen.d.mts +1 -1
- package/dist/generated/{shared → capi}/core/pathSerializer.gen.mjs +1 -1
- package/dist/generated/capi/core/pathSerializer.gen.mjs.map +1 -0
- package/dist/generated/{shared → capi}/core/serverSentEvents.gen.cjs +1 -1
- package/dist/generated/capi/core/serverSentEvents.gen.cjs.map +1 -0
- package/dist/generated/{shared → capi}/core/serverSentEvents.gen.d.cts +5 -2
- package/dist/generated/{shared → capi}/core/serverSentEvents.gen.d.mts +5 -2
- package/dist/generated/{shared → capi}/core/serverSentEvents.gen.mjs +1 -1
- package/dist/generated/capi/core/serverSentEvents.gen.mjs.map +1 -0
- package/dist/generated/{shared → capi}/core/types.gen.d.cts +15 -2
- package/dist/generated/{shared → capi}/core/types.gen.d.mts +15 -2
- package/dist/generated/{shared → capi}/core/utils.gen.cjs +1 -1
- package/dist/generated/capi/core/utils.gen.cjs.map +1 -0
- package/dist/generated/{shared → capi}/core/utils.gen.mjs +1 -1
- package/dist/generated/capi/core/utils.gen.mjs.map +1 -0
- package/dist/generated/capi/sdk.gen.cjs +141 -0
- package/dist/generated/capi/sdk.gen.cjs.map +1 -0
- package/dist/generated/capi/sdk.gen.mjs +133 -0
- package/dist/generated/capi/sdk.gen.mjs.map +1 -0
- package/dist/generated/capi/types-aliased.gen.d.cts +181 -0
- package/dist/generated/capi/types-aliased.gen.d.mts +181 -0
- package/dist/generated/capi/types.gen.d.cts +919 -0
- package/dist/generated/capi/types.gen.d.mts +919 -0
- package/dist/generated/mapi/_internal.gen.d.cts +146 -0
- package/dist/generated/mapi/_internal.gen.d.mts +146 -0
- package/dist/generated/mapi/types.gen.d.cts +293 -0
- package/dist/generated/mapi/types.gen.d.mts +293 -0
- package/dist/generated/overlay/_internal.gen.d.cts +831 -0
- package/dist/generated/overlay/_internal.gen.d.mts +831 -0
- package/dist/generated/types/_utils.d.cts +7 -0
- package/dist/generated/types/_utils.d.mts +7 -0
- package/dist/generated/types/block.d.cts +29 -0
- package/dist/generated/types/block.d.mts +29 -0
- package/dist/generated/types/field.d.cts +64 -0
- package/dist/generated/types/field.d.mts +64 -0
- package/dist/generated/types/story.d.cts +19 -0
- package/dist/generated/types/story.d.mts +19 -0
- package/dist/index.cjs +2 -154
- package/dist/index.d.cts +8 -184
- package/dist/index.d.mts +8 -184
- package/dist/index.mjs +2 -151
- package/dist/resources/datasource-entries.cjs +2 -2
- package/dist/resources/datasource-entries.cjs.map +1 -1
- package/dist/resources/datasource-entries.mjs +2 -2
- package/dist/resources/datasource-entries.mjs.map +1 -1
- package/dist/resources/datasources.cjs +4 -4
- package/dist/resources/datasources.cjs.map +1 -1
- package/dist/resources/datasources.mjs +4 -4
- package/dist/resources/datasources.mjs.map +1 -1
- package/dist/resources/experiments.cjs +26 -0
- package/dist/resources/experiments.cjs.map +1 -0
- package/dist/resources/experiments.mjs +26 -0
- package/dist/resources/experiments.mjs.map +1 -0
- package/dist/resources/links.cjs +2 -2
- package/dist/resources/links.cjs.map +1 -1
- package/dist/resources/links.mjs +2 -2
- package/dist/resources/links.mjs.map +1 -1
- package/dist/resources/spaces.cjs +4 -4
- package/dist/resources/spaces.cjs.map +1 -1
- package/dist/resources/spaces.mjs +4 -4
- package/dist/resources/spaces.mjs.map +1 -1
- package/dist/resources/stories.cjs +16 -12
- package/dist/resources/stories.cjs.map +1 -1
- package/dist/resources/stories.d.cts +82 -4
- package/dist/resources/stories.d.mts +82 -4
- package/dist/resources/stories.mjs +16 -12
- package/dist/resources/stories.mjs.map +1 -1
- package/dist/resources/tags.cjs +2 -2
- package/dist/resources/tags.cjs.map +1 -1
- package/dist/resources/tags.mjs +2 -2
- package/dist/resources/tags.mjs.map +1 -1
- package/dist/utils/fetch-rel-uuids.cjs +2 -2
- package/dist/utils/fetch-rel-uuids.cjs.map +1 -1
- package/dist/utils/fetch-rel-uuids.mjs +2 -2
- package/dist/utils/fetch-rel-uuids.mjs.map +1 -1
- package/dist/utils/inline-relations.cjs.map +1 -1
- package/dist/utils/inline-relations.mjs.map +1 -1
- package/dist/utils/rate-limit.cjs +9 -5
- package/dist/utils/rate-limit.cjs.map +1 -1
- package/dist/utils/rate-limit.d.cts +4 -18
- package/dist/utils/rate-limit.d.mts +4 -18
- package/dist/utils/rate-limit.mjs +10 -4
- package/dist/utils/rate-limit.mjs.map +1 -1
- package/package.json +16 -12
- package/dist/generated/datasource_entries/client.gen.cjs +0 -10
- package/dist/generated/datasource_entries/client.gen.cjs.map +0 -1
- package/dist/generated/datasource_entries/client.gen.mjs +0 -10
- package/dist/generated/datasource_entries/client.gen.mjs.map +0 -1
- package/dist/generated/datasource_entries/sdk.gen.cjs +0 -21
- package/dist/generated/datasource_entries/sdk.gen.cjs.map +0 -1
- package/dist/generated/datasource_entries/sdk.gen.mjs +0 -21
- package/dist/generated/datasource_entries/sdk.gen.mjs.map +0 -1
- package/dist/generated/datasource_entries/types.gen.d.cts +0 -67
- package/dist/generated/datasource_entries/types.gen.d.mts +0 -67
- package/dist/generated/datasources/client.gen.cjs +0 -10
- package/dist/generated/datasources/client.gen.cjs.map +0 -1
- package/dist/generated/datasources/client.gen.mjs +0 -10
- package/dist/generated/datasources/client.gen.mjs.map +0 -1
- package/dist/generated/datasources/sdk.gen.cjs +0 -36
- package/dist/generated/datasources/sdk.gen.cjs.map +0 -1
- package/dist/generated/datasources/sdk.gen.mjs +0 -35
- package/dist/generated/datasources/sdk.gen.mjs.map +0 -1
- package/dist/generated/datasources/types.gen.d.cts +0 -109
- package/dist/generated/datasources/types.gen.d.mts +0 -109
- package/dist/generated/links/client.gen.cjs +0 -10
- package/dist/generated/links/client.gen.cjs.map +0 -1
- package/dist/generated/links/client.gen.mjs +0 -10
- package/dist/generated/links/client.gen.mjs.map +0 -1
- package/dist/generated/links/sdk.gen.cjs +0 -21
- package/dist/generated/links/sdk.gen.cjs.map +0 -1
- package/dist/generated/links/sdk.gen.mjs +0 -21
- package/dist/generated/links/sdk.gen.mjs.map +0 -1
- package/dist/generated/links/types.gen.d.cts +0 -142
- package/dist/generated/links/types.gen.d.mts +0 -142
- package/dist/generated/shared/client/client.gen.cjs.map +0 -1
- package/dist/generated/shared/client/client.gen.mjs.map +0 -1
- package/dist/generated/shared/client/utils.gen.cjs.map +0 -1
- package/dist/generated/shared/client/utils.gen.mjs.map +0 -1
- package/dist/generated/shared/core/auth.gen.cjs.map +0 -1
- package/dist/generated/shared/core/auth.gen.mjs.map +0 -1
- package/dist/generated/shared/core/bodySerializer.gen.cjs.map +0 -1
- package/dist/generated/shared/core/bodySerializer.gen.mjs.map +0 -1
- package/dist/generated/shared/core/params.gen.cjs.map +0 -1
- package/dist/generated/shared/core/params.gen.mjs.map +0 -1
- package/dist/generated/shared/core/pathSerializer.gen.cjs.map +0 -1
- package/dist/generated/shared/core/pathSerializer.gen.mjs.map +0 -1
- package/dist/generated/shared/core/serverSentEvents.gen.cjs.map +0 -1
- package/dist/generated/shared/core/serverSentEvents.gen.mjs.map +0 -1
- package/dist/generated/shared/core/utils.gen.cjs.map +0 -1
- package/dist/generated/shared/core/utils.gen.mjs.map +0 -1
- package/dist/generated/spaces/client.gen.cjs +0 -10
- package/dist/generated/spaces/client.gen.cjs.map +0 -1
- package/dist/generated/spaces/client.gen.mjs +0 -10
- package/dist/generated/spaces/client.gen.mjs.map +0 -1
- package/dist/generated/spaces/sdk.gen.cjs +0 -21
- package/dist/generated/spaces/sdk.gen.cjs.map +0 -1
- package/dist/generated/spaces/sdk.gen.mjs +0 -21
- package/dist/generated/spaces/sdk.gen.mjs.map +0 -1
- package/dist/generated/spaces/types.gen.d.cts +0 -34
- package/dist/generated/spaces/types.gen.d.mts +0 -34
- package/dist/generated/stories/client.gen.cjs +0 -10
- package/dist/generated/stories/client.gen.cjs.map +0 -1
- package/dist/generated/stories/client.gen.mjs +0 -10
- package/dist/generated/stories/client.gen.mjs.map +0 -1
- package/dist/generated/stories/sdk.gen.cjs +0 -36
- package/dist/generated/stories/sdk.gen.cjs.map +0 -1
- package/dist/generated/stories/sdk.gen.mjs +0 -35
- package/dist/generated/stories/sdk.gen.mjs.map +0 -1
- package/dist/generated/stories/types.gen.d.cts +0 -544
- package/dist/generated/stories/types.gen.d.mts +0 -544
- package/dist/generated/tags/client.gen.cjs +0 -10
- package/dist/generated/tags/client.gen.cjs.map +0 -1
- package/dist/generated/tags/client.gen.mjs +0 -10
- package/dist/generated/tags/client.gen.mjs.map +0 -1
- package/dist/generated/tags/sdk.gen.cjs +0 -21
- package/dist/generated/tags/sdk.gen.cjs.map +0 -1
- package/dist/generated/tags/sdk.gen.mjs +0 -21
- package/dist/generated/tags/sdk.gen.mjs.map +0 -1
- package/dist/generated/tags/types.gen.d.cts +0 -44
- package/dist/generated/tags/types.gen.d.mts +0 -44
- package/dist/index.cjs.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/types.d.cts +0 -37
- package/dist/types.d.mts +0 -37
- /package/dist/generated/{shared → capi}/client/index.cjs +0 -0
- /package/dist/generated/{shared → capi}/client/index.mjs +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.mjs","names":[
|
|
1
|
+
{"version":3,"file":"links.mjs","names":[],"sources":["../../src/resources/links.ts"],"sourcesContent":["import { listLinks } from '../generated/capi/sdk.gen';\nimport type { ListLinksData, ListLinksResponses } from '../generated/capi/types.gen';\nimport type { ApiResponse, FetchOptions, ResourceDeps } from '../client';\n\nexport function createLinksResource<DefaultThrowOnError extends boolean = false>(deps: ResourceDeps<DefaultThrowOnError>) {\n const { client, requestWithCache, asApiResponse, throttleManager } = deps;\n\n return {\n list: async <ThrowOnError extends boolean = DefaultThrowOnError>(\n options: { query?: ListLinksData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<ListLinksResponses[200], ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const requestPath = '/v2/cdn/links';\n return requestWithCache<ListLinksResponses[200], ThrowOnError>('GET', requestPath, query, (requestQuery: Record<string, unknown>) => {\n return throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse<ListLinksResponses[200], ThrowOnError>(listLinks({\n client,\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n })));\n });\n },\n };\n}\n"],"mappings":";;;AAIA,SAAgB,oBAAiE,MAAyC;CACxH,MAAM,EAAE,QAAQ,kBAAkB,eAAe,oBAAoB;AAErE,QAAO,EACL,MAAM,OACJ,UAA8H,EAAE,KAChE;EAChE,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;EAC3D,MAAM,cAAc;AACpB,SAAO,iBAAwD,OAAO,aAAa,QAAQ,iBAA0C;AACnI,UAAO,gBAAgB,QAAQ,aAAa,oBAC1C,cAAqD,UAAU;IAC7D;IACA,OAAO;IACP;IACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IACtD,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAC5F,CAAC,CAAC,CAAC;IACN;IAEL"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
const require_sdk_gen = require('../generated/
|
|
1
|
+
const require_sdk_gen = require('../generated/capi/sdk.gen.cjs');
|
|
2
2
|
|
|
3
3
|
//#region src/resources/spaces.ts
|
|
4
4
|
function createSpacesResource(deps) {
|
|
5
5
|
const { client, requestWithCache, asApiResponse, throttleManager } = deps;
|
|
6
6
|
return { get: async (options = {}) => {
|
|
7
|
-
const { signal, throwOnError, fetchOptions } = options;
|
|
7
|
+
const { query = {}, signal, throwOnError, fetchOptions } = options;
|
|
8
8
|
const requestPath = "/v2/cdn/spaces/me";
|
|
9
|
-
return requestWithCache("GET", requestPath,
|
|
10
|
-
return throttleManager.execute(requestPath, requestQuery, () => asApiResponse(require_sdk_gen.
|
|
9
|
+
return requestWithCache("GET", requestPath, query, (requestQuery) => {
|
|
10
|
+
return throttleManager.execute(requestPath, requestQuery, () => asApiResponse(require_sdk_gen.getSpace({
|
|
11
11
|
client,
|
|
12
12
|
query: requestQuery,
|
|
13
13
|
signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spaces.cjs","names":["getSpaceApi"],"sources":["../../src/resources/spaces.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"spaces.cjs","names":["getSpaceApi"],"sources":["../../src/resources/spaces.ts"],"sourcesContent":["import { getSpace as getSpaceApi } from '../generated/capi/sdk.gen';\nimport type { GetSpaceData, GetSpaceResponses } from '../generated/capi/types.gen';\nimport type { ApiResponse, FetchOptions, ResourceDeps } from '../client';\n\nexport function createSpacesResource<DefaultThrowOnError extends boolean = false>(deps: ResourceDeps<DefaultThrowOnError>) {\n const { client, requestWithCache, asApiResponse, throttleManager } = deps;\n\n return {\n get: async <ThrowOnError extends boolean = DefaultThrowOnError>(\n options: { query?: GetSpaceData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<GetSpaceResponses[200], ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const requestPath = '/v2/cdn/spaces/me';\n return requestWithCache<GetSpaceResponses[200], ThrowOnError>('GET', requestPath, query, (requestQuery: Record<string, unknown>) => {\n return throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse<GetSpaceResponses[200], ThrowOnError>(getSpaceApi({\n client,\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n })));\n });\n },\n };\n}\n"],"mappings":";;;AAIA,SAAgB,qBAAkE,MAAyC;CACzH,MAAM,EAAE,QAAQ,kBAAkB,eAAe,oBAAoB;AAErE,QAAO,EACL,KAAK,OACH,UAA6H,EAAE,KAChE;EAC/D,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;EAC3D,MAAM,cAAc;AACpB,SAAO,iBAAuD,OAAO,aAAa,QAAQ,iBAA0C;AAClI,UAAO,gBAAgB,QAAQ,aAAa,oBAC1C,cAAoDA,yBAAY;IAC9D;IACA,OAAO;IACP;IACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IACtD,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAC5F,CAAC,CAAC,CAAC;IACN;IAEL"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getSpace } from "../generated/capi/sdk.gen.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/resources/spaces.ts
|
|
4
4
|
function createSpacesResource(deps) {
|
|
5
5
|
const { client, requestWithCache, asApiResponse, throttleManager } = deps;
|
|
6
6
|
return { get: async (options = {}) => {
|
|
7
|
-
const { signal, throwOnError, fetchOptions } = options;
|
|
7
|
+
const { query = {}, signal, throwOnError, fetchOptions } = options;
|
|
8
8
|
const requestPath = "/v2/cdn/spaces/me";
|
|
9
|
-
return requestWithCache("GET", requestPath,
|
|
10
|
-
return throttleManager.execute(requestPath, requestQuery, () => asApiResponse(
|
|
9
|
+
return requestWithCache("GET", requestPath, query, (requestQuery) => {
|
|
10
|
+
return throttleManager.execute(requestPath, requestQuery, () => asApiResponse(getSpace({
|
|
11
11
|
client,
|
|
12
12
|
query: requestQuery,
|
|
13
13
|
signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spaces.mjs","names":["getSpaceApi"],"sources":["../../src/resources/spaces.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"spaces.mjs","names":["getSpaceApi"],"sources":["../../src/resources/spaces.ts"],"sourcesContent":["import { getSpace as getSpaceApi } from '../generated/capi/sdk.gen';\nimport type { GetSpaceData, GetSpaceResponses } from '../generated/capi/types.gen';\nimport type { ApiResponse, FetchOptions, ResourceDeps } from '../client';\n\nexport function createSpacesResource<DefaultThrowOnError extends boolean = false>(deps: ResourceDeps<DefaultThrowOnError>) {\n const { client, requestWithCache, asApiResponse, throttleManager } = deps;\n\n return {\n get: async <ThrowOnError extends boolean = DefaultThrowOnError>(\n options: { query?: GetSpaceData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<GetSpaceResponses[200], ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const requestPath = '/v2/cdn/spaces/me';\n return requestWithCache<GetSpaceResponses[200], ThrowOnError>('GET', requestPath, query, (requestQuery: Record<string, unknown>) => {\n return throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse<GetSpaceResponses[200], ThrowOnError>(getSpaceApi({\n client,\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n })));\n });\n },\n };\n}\n"],"mappings":";;;AAIA,SAAgB,qBAAkE,MAAyC;CACzH,MAAM,EAAE,QAAQ,kBAAkB,eAAe,oBAAoB;AAErE,QAAO,EACL,KAAK,OACH,UAA6H,EAAE,KAChE;EAC/D,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;EAC3D,MAAM,cAAc;AACpB,SAAO,iBAAuD,OAAO,aAAa,QAAQ,iBAA0C;AAClI,UAAO,gBAAgB,QAAQ,aAAa,oBAC1C,cAAoDA,SAAY;IAC9D;IACA,OAAO;IACP;IACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IACtD,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAC5F,CAAC,CAAC,CAAC;IACN;IAEL"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_sdk_gen = require('../generated/
|
|
1
|
+
const require_sdk_gen = require('../generated/capi/sdk.gen.cjs');
|
|
2
2
|
const require_inline_relations = require('../utils/inline-relations.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/resources/stories.ts
|
|
@@ -8,15 +8,16 @@ function createStoriesResource(deps) {
|
|
|
8
8
|
return {
|
|
9
9
|
get: async (identifier, options = {}) => {
|
|
10
10
|
const { query = {}, signal, throwOnError, fetchOptions } = options;
|
|
11
|
-
const
|
|
12
|
-
|
|
11
|
+
const typedQuery = query ?? {};
|
|
12
|
+
const resolvedQuery = typeof identifier === "string" && UUID_RE.test(identifier) && !typedQuery.find_by ? {
|
|
13
|
+
...typedQuery,
|
|
13
14
|
find_by: "uuid"
|
|
14
|
-
} :
|
|
15
|
+
} : typedQuery;
|
|
15
16
|
const requestPath = `/v2/cdn/stories/${identifier}`;
|
|
16
17
|
return requestWithCache("GET", requestPath, resolvedQuery, async (requestQuery) => {
|
|
17
|
-
const response = await throttleManager.execute(requestPath, requestQuery, () => asApiResponse(require_sdk_gen.
|
|
18
|
+
const response = await throttleManager.execute(requestPath, requestQuery, () => asApiResponse(require_sdk_gen.getStoryById({
|
|
18
19
|
client,
|
|
19
|
-
path: { identifier },
|
|
20
|
+
path: { id: identifier },
|
|
20
21
|
query: requestQuery,
|
|
21
22
|
signal,
|
|
22
23
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
@@ -26,7 +27,8 @@ function createStoriesResource(deps) {
|
|
|
26
27
|
} } : {}
|
|
27
28
|
})));
|
|
28
29
|
if (!inlineRelations || response.data === void 0) return response;
|
|
29
|
-
const
|
|
30
|
+
const storyData = response.data;
|
|
31
|
+
const resolved = await require_inline_relations.resolveRelationMap(storyData, requestQuery, {
|
|
30
32
|
client,
|
|
31
33
|
throttleManager
|
|
32
34
|
});
|
|
@@ -35,16 +37,17 @@ function createStoriesResource(deps) {
|
|
|
35
37
|
...response,
|
|
36
38
|
data: {
|
|
37
39
|
...response.data,
|
|
38
|
-
story: require_inline_relations.inlineStoryContent(
|
|
40
|
+
story: require_inline_relations.inlineStoryContent(storyData.story, resolved.relationPaths, resolved.relationMap)
|
|
39
41
|
}
|
|
40
42
|
};
|
|
41
43
|
}, inlineRelations ? { cacheKeyPrefix: "inline" } : void 0);
|
|
42
44
|
},
|
|
43
45
|
list: async (options = {}) => {
|
|
44
46
|
const { query = {}, signal, throwOnError, fetchOptions } = options;
|
|
47
|
+
const typedQuery = query ?? {};
|
|
45
48
|
const requestPath = "/v2/cdn/stories";
|
|
46
|
-
return requestWithCache("GET", requestPath,
|
|
47
|
-
const response = await throttleManager.execute(requestPath, requestQuery, () => asApiResponse(require_sdk_gen.
|
|
49
|
+
return requestWithCache("GET", requestPath, typedQuery, async (requestQuery) => {
|
|
50
|
+
const response = await throttleManager.execute(requestPath, requestQuery, () => asApiResponse(require_sdk_gen.listStories({
|
|
48
51
|
client,
|
|
49
52
|
query: requestQuery,
|
|
50
53
|
signal,
|
|
@@ -55,7 +58,8 @@ function createStoriesResource(deps) {
|
|
|
55
58
|
} } : {}
|
|
56
59
|
})));
|
|
57
60
|
if (!inlineRelations || response.data === void 0) return response;
|
|
58
|
-
const
|
|
61
|
+
const storiesData = response.data;
|
|
62
|
+
const resolved = await require_inline_relations.resolveRelationMap(storiesData, requestQuery, {
|
|
59
63
|
client,
|
|
60
64
|
throttleManager
|
|
61
65
|
});
|
|
@@ -64,7 +68,7 @@ function createStoriesResource(deps) {
|
|
|
64
68
|
...response,
|
|
65
69
|
data: {
|
|
66
70
|
...response.data,
|
|
67
|
-
stories: require_inline_relations.inlineStoriesContent(
|
|
71
|
+
stories: require_inline_relations.inlineStoriesContent(storiesData.stories, resolved.relationPaths, resolved.relationMap)
|
|
68
72
|
}
|
|
69
73
|
};
|
|
70
74
|
}, inlineRelations ? { cacheKeyPrefix: "inline" } : void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stories.cjs","names":["get","resolveRelationMap","inlineStoryContent","list","inlineStoriesContent"],"sources":["../../src/resources/stories.ts"],"sourcesContent":["import { get, list } from '../generated/stories/sdk.gen';\nimport type { GetData, GetResponses, ListData, ListResponses } from '../generated/stories/types.gen';\nimport type {\n AssetField,\n MultilinkField,\n PluginField,\n RichtextField,\n StoryCapi,\n StoryContent,\n TableField,\n} from '../generated/stories';\nimport { inlineStoriesContent, inlineStoryContent, resolveRelationMap } from '../utils/inline-relations';\nimport type { ApiResponse, FetchOptions, ResourceDeps } from '../types';\n\ntype InlinedStoryContentField =\n | string\n | number\n | boolean\n | Array<string | AssetField | StoryContent | StoryWithInlinedRelations>\n | AssetField\n | MultilinkField\n | TableField\n | RichtextField\n | PluginField\n | StoryWithInlinedRelations\n | undefined;\n\ninterface InlinedStoryContent {\n _uid: string;\n component: string;\n _editable?: string;\n [key: string]: InlinedStoryContentField;\n}\n\nexport type StoryWithInlinedRelations = Omit<StoryCapi, 'content'> & {\n content: InlinedStoryContent;\n};\n\ntype StoryResult<InlineRelations extends boolean> = InlineRelations extends true\n ? StoryWithInlinedRelations\n : StoryCapi;\n\ntype GetResponse<InlineRelations extends boolean> = Omit<GetResponses[200], 'story'> & {\n story: StoryResult<InlineRelations>;\n};\ntype ListResponse<InlineRelations extends boolean> = Omit<ListResponses[200], 'stories'> & {\n stories: Array<StoryResult<InlineRelations>>;\n};\n\n/** Pre-resolved to avoid TypeScript emitting deep indexed-access chains that trip up DTS bundlers. */\ntype StoryIdentifier = GetData['path']['identifier'];\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\nexport interface StoriesResourceDeps extends ResourceDeps {\n inlineRelations: boolean;\n}\n\nexport function createStoriesResource<InlineRelations extends boolean>(\n deps: StoriesResourceDeps,\n) {\n const { client, requestWithCache, asApiResponse, inlineRelations, throttleManager } = deps;\n\n return {\n get: async <ThrowOnError extends boolean = false>(\n identifier: StoryIdentifier,\n options: { query?: GetData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<GetResponse<InlineRelations>, ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const resolvedQuery = typeof identifier === 'string' && UUID_RE.test(identifier) && !query.find_by\n ? { ...query, find_by: 'uuid' as const }\n : query;\n const requestPath = `/v2/cdn/stories/${identifier}`;\n type Res = ApiResponse<GetResponse<InlineRelations>, ThrowOnError>;\n return requestWithCache<GetResponse<InlineRelations>, ThrowOnError>('GET', requestPath, resolvedQuery, async (requestQuery: Record<string, unknown>): Promise<Res> => {\n const response = await throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse<GetResponse<InlineRelations>, ThrowOnError>(get({\n client,\n path: { identifier },\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n })));\n\n if (!inlineRelations || response.data === undefined) {\n return response;\n }\n\n const resolved = await resolveRelationMap(response.data, requestQuery, { client, throttleManager });\n if (!resolved) {\n return response;\n }\n\n return {\n ...response,\n data: {\n ...response.data,\n story: inlineStoryContent(response.data.story, resolved.relationPaths, resolved.relationMap),\n },\n };\n }, inlineRelations ? { cacheKeyPrefix: 'inline' } : undefined);\n },\n\n list: async <ThrowOnError extends boolean = false>(\n options: { query?: ListData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<ListResponse<InlineRelations>, ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const requestPath = '/v2/cdn/stories';\n type ResAll = ApiResponse<ListResponse<InlineRelations>, ThrowOnError>;\n return requestWithCache<ListResponse<InlineRelations>, ThrowOnError>('GET', requestPath, query, async (requestQuery: Record<string, unknown>): Promise<ResAll> => {\n const response = await throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse<ListResponse<InlineRelations>, ThrowOnError>(list({\n client,\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n })));\n\n if (!inlineRelations || response.data === undefined) {\n return response;\n }\n\n const resolved = await resolveRelationMap(response.data, requestQuery, { client, throttleManager });\n if (!resolved) {\n return response;\n }\n\n return {\n ...response,\n data: {\n ...response.data,\n stories: inlineStoriesContent(response.data.stories, resolved.relationPaths, resolved.relationMap),\n },\n };\n }, inlineRelations ? { cacheKeyPrefix: 'inline' } : undefined);\n },\n };\n}\n"],"mappings":";;;;AAoDA,MAAM,UAAU;AAMhB,SAAgB,sBACd,MACA;CACA,MAAM,EAAE,QAAQ,kBAAkB,eAAe,iBAAiB,oBAAoB;AAEtF,QAAO;EACL,KAAK,OACH,YACA,UAAwH,EAAE,KACrD;GACrE,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;GAC3D,MAAM,gBAAgB,OAAO,eAAe,YAAY,QAAQ,KAAK,WAAW,IAAI,CAAC,MAAM,UACvF;IAAE,GAAG;IAAO,SAAS;IAAiB,GACtC;GACJ,MAAM,cAAc,mBAAmB;AAEvC,UAAO,iBAA6D,OAAO,aAAa,eAAe,OAAO,iBAAwD;IACpK,MAAM,WAAW,MAAM,gBAAgB,QAAQ,aAAa,oBAC1D,cAA0DA,oBAAI;KAC5D;KACA,MAAM,EAAE,YAAY;KACpB,OAAO;KACP;KACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;KACtD,GAAI,eAAe,EAAE,WAAW;MAAE,GAAG,OAAO,WAAW,CAAC;MAAW,GAAG;MAAc,EAAE,GAAG,EAAE;KAC5F,CAAC,CAAC,CAAC;AAEN,QAAI,CAAC,mBAAmB,SAAS,SAAS,OACxC,QAAO;IAGT,MAAM,WAAW,MAAMC,4CAAmB,SAAS,MAAM,cAAc;KAAE;KAAQ;KAAiB,CAAC;AACnG,QAAI,CAAC,SACH,QAAO;AAGT,WAAO;KACL,GAAG;KACH,MAAM;MACJ,GAAG,SAAS;MACZ,OAAOC,4CAAmB,SAAS,KAAK,OAAO,SAAS,eAAe,SAAS,YAAY;MAC7F;KACF;MACA,kBAAkB,EAAE,gBAAgB,UAAU,GAAG,OAAU;;EAGhE,MAAM,OACJ,UAAyH,EAAE,KACrD;GACtE,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;GAC3D,MAAM,cAAc;AAEpB,UAAO,iBAA8D,OAAO,aAAa,OAAO,OAAO,iBAA2D;IAChK,MAAM,WAAW,MAAM,gBAAgB,QAAQ,aAAa,oBAC1D,cAA2DC,qBAAK;KAC9D;KACA,OAAO;KACP;KACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;KACtD,GAAI,eAAe,EAAE,WAAW;MAAE,GAAG,OAAO,WAAW,CAAC;MAAW,GAAG;MAAc,EAAE,GAAG,EAAE;KAC5F,CAAC,CAAC,CAAC;AAEN,QAAI,CAAC,mBAAmB,SAAS,SAAS,OACxC,QAAO;IAGT,MAAM,WAAW,MAAMF,4CAAmB,SAAS,MAAM,cAAc;KAAE;KAAQ;KAAiB,CAAC;AACnG,QAAI,CAAC,SACH,QAAO;AAGT,WAAO;KACL,GAAG;KACH,MAAM;MACJ,GAAG,SAAS;MACZ,SAASG,8CAAqB,SAAS,KAAK,SAAS,SAAS,eAAe,SAAS,YAAY;MACnG;KACF;MACA,kBAAkB,EAAE,gBAAgB,UAAU,GAAG,OAAU;;EAEjE"}
|
|
1
|
+
{"version":3,"file":"stories.cjs","names":["getStoryById","resolveRelationMap","inlineStoryContent","listStories","inlineStoriesContent"],"sources":["../../src/resources/stories.ts"],"sourcesContent":["import { getStoryById, listStories } from '../generated/capi/sdk.gen';\nimport type { GetStoryByIdData, GetStoryByIdResponses, ListStoriesData, ListStoriesResponses } from '../generated/capi/types.gen';\nimport type {\n AssetFieldValue,\n BlockContent as BlokContent,\n MultilinkFieldValue,\n PluginFieldValue,\n RichtextFieldValue,\n TableFieldValue,\n} from '../generated/types/field';\nimport { inlineStoriesContent, inlineStoryContent, resolveRelationMap } from '../utils/inline-relations';\nimport type { ApiResponse, FetchOptions, ResourceDeps } from '../client';\nimport type { Block as Component, RootBlock as RootComponents } from '../generated/types/block';\nimport type { Story } from '../generated/types/story';\n\ntype InlinedStoryContentField =\n | string\n | number\n | boolean\n | Array<string | AssetFieldValue | BlokContent | StoryWithInlinedRelations>\n | AssetFieldValue\n | MultilinkFieldValue\n | TableFieldValue\n | RichtextFieldValue\n | PluginFieldValue\n | StoryWithInlinedRelations\n | undefined;\n\ninterface InlinedStoryContent {\n _uid: string;\n component: string;\n _editable?: string;\n [key: string]: InlinedStoryContentField;\n}\n\nexport type StoryWithInlinedRelations = Omit<Story, 'content'> & {\n content: InlinedStoryContent;\n};\n\n/** Splits `\"comp.field,comp2.field2\"` into a union of `{ component, field }`. */\ntype ParseRelations<T extends string> =\n T extends `${infer Comp}.${infer Field},${infer Rest}`\n ? { component: Comp; field: Field } | ParseRelations<Rest>\n : T extends `${infer Comp}.${infer Field}`\n ? { component: Comp; field: Field }\n : never;\n\n/** Extracts resolved field names for a given component name. */\ntype ResolvedFieldsFor<R extends string, ComponentName extends string> =\n Extract<ParseRelations<R>, { component: ComponentName }>['field'];\n\n/** A resolved relation: a full story typed to the component union. */\ntype ResolvedRelation<TComponents extends Component> =\n { [K in TComponents as K['name']]: Story<K, TComponents> }[TComponents['name']];\n\n/**\n * Given a story type and a set of resolved field names, replaces\n * those fields with `ResolvedRelation<TComponents>` (a full story object).\n */\ntype WithResolvedRelations<\n TStory,\n TComponents extends Component,\n Fields extends string,\n> = TStory extends { content: infer C } ? Omit<TStory, 'content'> & {\n content: {\n [K in keyof C]: K extends Fields ? ResolvedRelation<TComponents> : C[K]\n };\n}\n : TStory;\n\n/**\n * Resolves to a narrowed component-derived story type when `TComponents` is a specific\n * Component union, or falls back to the generated Story / StoryWithInlinedRelations\n * when `TComponents` is the default Component base type (no type argument provided).\n *\n * When `ResolveRelations` is a string literal (e.g. `\"article.author\"`),\n * matched fields are widened from their schema type to `ResolvedRelation<TComponents>`\n * — a full story object typed to the component union.\n *\n * Uses a mapped-type approach instead of a distributive conditional with a\n * separate full-components parameter. This ensures the full `TComponents` union is\n * preserved even when DTS bundlers (like tsdown) inline the type alias —\n * a distributive conditional + default-parameter pattern would collapse\n * both parameters to the distributed single member after inlining.\n *\n * The mapped type `{ [K in TComponents as K[\"name\"]]: Story<K, TComponents> }`\n * iterates each union member as `K` while keeping `TComponents` as the full union\n * for nested blok field resolution. The final indexed access\n * `[TComponents[\"name\"]]` produces the discriminated union of all story types.\n */\ntype StoryResult<\n TComponents extends Component,\n InlineRelations extends boolean,\n ResolveRelationsRaw extends string | undefined = undefined,\n> =\n Component extends TComponents\n ? InlineRelations extends true ? StoryWithInlinedRelations : Story // fallback\n : ResolveRelationsRaw extends string\n ? {\n [K in RootComponents<TComponents> as K['name']]: WithResolvedRelations<\n Story<K, TComponents>,\n TComponents,\n ResolvedFieldsFor<ResolveRelationsRaw, K['name']>\n >\n }[RootComponents<TComponents>['name']]\n : Story<TComponents>;\n\ntype GetResponse<\n TComponents extends Component,\n InlineRelations extends boolean,\n ResolveRelationsRaw extends string | undefined = undefined,\n> = Omit<GetStoryByIdResponses[200], 'story'> & {\n story: StoryResult<TComponents, InlineRelations, ResolveRelationsRaw>;\n};\ntype ListResponse<\n TComponents extends Component,\n InlineRelations extends boolean,\n ResolveRelationsRaw extends string | undefined = undefined,\n> = Omit<ListStoriesResponses[200], 'stories'> & {\n stories: Array<StoryResult<TComponents, InlineRelations, ResolveRelationsRaw>>;\n};\n\n/**\n * Internal relation-resolution shapes. The public response types expose the\n * generic `Story`, but relation inlining needs to read the API's sidecar\n * `rels`/`rel_uuids` fields off the raw payload. These three interfaces model\n * that wire shape so the `response.data` narrowing below stays in one place\n * instead of being scattered as inline casts.\n */\ninterface StoryRelationData {\n rels?: Story[];\n rel_uuids?: string[];\n}\n\ninterface StoryData extends StoryRelationData {\n story: Story;\n}\n\ninterface StoriesData extends StoryRelationData {\n stories: Story[];\n}\n\n/** The story identifier path param (full slug, numeric ID, or UUID), derived from the generated request type. */\ntype StoryIdentifier = GetStoryByIdData['path']['id'];\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\nexport interface StoriesResourceDeps<DefaultThrowOnError extends boolean = false> extends ResourceDeps<DefaultThrowOnError> {\n inlineRelations: boolean;\n}\n\nexport function createStoriesResource<\n TComponents extends Component = Component,\n InlineRelations extends boolean = false,\n DefaultThrowOnError extends boolean = false,\n>(\n deps: StoriesResourceDeps<DefaultThrowOnError>,\n) {\n const { client, requestWithCache, asApiResponse, inlineRelations, throttleManager } = deps;\n\n return {\n get: async <\n ThrowOnError extends boolean = DefaultThrowOnError,\n const ResolveRelationsStr extends string | undefined = undefined,\n >(\n identifier: StoryIdentifier,\n options: { query?: Omit<NonNullable<GetStoryByIdData['query']>, 'resolve_relations'> & { resolve_relations?: ResolveRelationsStr }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<GetResponse<TComponents, InlineRelations, ResolveRelationsStr>, ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const typedQuery = (query ?? {}) as NonNullable<GetStoryByIdData['query']>;\n const resolvedQuery = typeof identifier === 'string' && UUID_RE.test(identifier) && !typedQuery.find_by\n ? { ...typedQuery, find_by: 'uuid' }\n : typedQuery;\n const requestPath = `/v2/cdn/stories/${identifier}`;\n return requestWithCache('GET', requestPath, resolvedQuery, async (requestQuery: Record<string, unknown>) => {\n const response = await throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse(getStoryById({\n client,\n path: { id: identifier },\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n }))) satisfies ApiResponse<GetResponse<TComponents, InlineRelations, ResolveRelationsStr>, ThrowOnError>;\n\n if (!inlineRelations || response.data === undefined) {\n return response;\n }\n\n // Narrow to the internal relation shape to read the API's sidecar\n // `rels`/`rel_uuids`; consumers keep seeing the generic `Story`.\n const storyData = response.data as unknown as StoryData;\n const resolved = await resolveRelationMap(storyData, requestQuery, { client, throttleManager });\n if (!resolved) {\n return response;\n }\n\n return {\n ...response,\n data: {\n ...response.data,\n story: inlineStoryContent(storyData.story, resolved.relationPaths, resolved.relationMap),\n },\n };\n }, inlineRelations ? { cacheKeyPrefix: 'inline' } : undefined);\n },\n\n list: async <\n ThrowOnError extends boolean = DefaultThrowOnError,\n const ResolveRelationsStr extends string | undefined = undefined,\n >(\n options: { query?: Omit<NonNullable<ListStoriesData['query']>, 'resolve_relations'> & { resolve_relations?: ResolveRelationsStr }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<ListResponse<TComponents, InlineRelations, ResolveRelationsStr>, ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const typedQuery = (query ?? {}) as NonNullable<ListStoriesData['query']>;\n const requestPath = '/v2/cdn/stories';\n return requestWithCache('GET', requestPath, typedQuery, async (requestQuery: Record<string, unknown>) => {\n const response = await throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse(listStories({\n client,\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n }))) satisfies ApiResponse<ListResponse<TComponents, InlineRelations, ResolveRelationsStr>, ThrowOnError>;\n\n if (!inlineRelations || response.data === undefined) {\n return response;\n }\n\n // Narrow to the internal relation shape to read the API's sidecar\n // `rels`/`rel_uuids`; consumers keep seeing the generic `Story`.\n const storiesData = response.data as unknown as StoriesData;\n const resolved = await resolveRelationMap(storiesData, requestQuery, { client, throttleManager });\n if (!resolved) {\n return response;\n }\n\n return {\n ...response,\n data: {\n ...response.data,\n stories: inlineStoriesContent(storiesData.stories, resolved.relationPaths, resolved.relationMap),\n },\n };\n }, inlineRelations ? { cacheKeyPrefix: 'inline' } : undefined);\n },\n };\n}\n"],"mappings":";;;;AAiJA,MAAM,UAAU;AAMhB,SAAgB,sBAKd,MACA;CACA,MAAM,EAAE,QAAQ,kBAAkB,eAAe,iBAAiB,oBAAoB;AAEtF,QAAO;EACL,KAAK,OAIH,YACA,UAAuN,EAAE,KAClH;GACvG,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;GAC3D,MAAM,aAAc,SAAS,EAAE;GAC/B,MAAM,gBAAgB,OAAO,eAAe,YAAY,QAAQ,KAAK,WAAW,IAAI,CAAC,WAAW,UAC5F;IAAE,GAAG;IAAY,SAAS;IAAQ,GAClC;GACJ,MAAM,cAAc,mBAAmB;AACvC,UAAO,iBAAiB,OAAO,aAAa,eAAe,OAAO,iBAA0C;IAC1G,MAAM,WAAW,MAAM,gBAAgB,QAAQ,aAAa,oBAC1D,cAAcA,6BAAa;KACzB;KACA,MAAM,EAAE,IAAI,YAAY;KACxB,OAAO;KACP;KACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;KACtD,GAAI,eAAe,EAAE,WAAW;MAAE,GAAG,OAAO,WAAW,CAAC;MAAW,GAAG;MAAc,EAAE,GAAG,EAAE;KAC5F,CAAC,CAAC,CAAC;AAEN,QAAI,CAAC,mBAAmB,SAAS,SAAS,OACxC,QAAO;IAKT,MAAM,YAAY,SAAS;IAC3B,MAAM,WAAW,MAAMC,4CAAmB,WAAW,cAAc;KAAE;KAAQ;KAAiB,CAAC;AAC/F,QAAI,CAAC,SACH,QAAO;AAGT,WAAO;KACL,GAAG;KACH,MAAM;MACJ,GAAG,SAAS;MACZ,OAAOC,4CAAmB,UAAU,OAAO,SAAS,eAAe,SAAS,YAAY;MACzF;KACF;MACA,kBAAkB,EAAE,gBAAgB,UAAU,GAAG,OAAU;;EAGhE,MAAM,OAIJ,UAAsN,EAAE,KAChH;GACxG,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;GAC3D,MAAM,aAAc,SAAS,EAAE;GAC/B,MAAM,cAAc;AACpB,UAAO,iBAAiB,OAAO,aAAa,YAAY,OAAO,iBAA0C;IACvG,MAAM,WAAW,MAAM,gBAAgB,QAAQ,aAAa,oBAC1D,cAAcC,4BAAY;KACxB;KACA,OAAO;KACP;KACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;KACtD,GAAI,eAAe,EAAE,WAAW;MAAE,GAAG,OAAO,WAAW,CAAC;MAAW,GAAG;MAAc,EAAE,GAAG,EAAE;KAC5F,CAAC,CAAC,CAAC;AAEN,QAAI,CAAC,mBAAmB,SAAS,SAAS,OACxC,QAAO;IAKT,MAAM,cAAc,SAAS;IAC7B,MAAM,WAAW,MAAMF,4CAAmB,aAAa,cAAc;KAAE;KAAQ;KAAiB,CAAC;AACjG,QAAI,CAAC,SACH,QAAO;AAGT,WAAO;KACL,GAAG;KACH,MAAM;MACJ,GAAG,SAAS;MACZ,SAASG,8CAAqB,YAAY,SAAS,SAAS,eAAe,SAAS,YAAY;MACjG;KACF;MACA,kBAAkB,EAAE,gBAAgB,UAAU,GAAG,OAAU;;EAEjE"}
|
|
@@ -1,16 +1,94 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GetStoryByIdData, GetStoryByIdResponses, ListStoriesData, ListStoriesResponses } from "../generated/capi/types.gen.cjs";
|
|
2
|
+
import { AssetFieldValue, MultilinkFieldValue, PluginFieldValue, RichtextFieldValue, TableFieldValue } from "../generated/overlay/_internal.gen.cjs";
|
|
3
|
+
import { Block, RootBlock } from "../generated/types/block.cjs";
|
|
4
|
+
import { BlockContent } from "../generated/types/field.cjs";
|
|
5
|
+
import { Story } from "../generated/types/story.cjs";
|
|
6
|
+
import { ApiResponse, FetchOptions, ResourceDeps } from "../client.cjs";
|
|
2
7
|
|
|
3
8
|
//#region src/resources/stories.d.ts
|
|
4
|
-
type InlinedStoryContentField = string | number | boolean | Array<string |
|
|
9
|
+
type InlinedStoryContentField = string | number | boolean | Array<string | AssetFieldValue | BlockContent | StoryWithInlinedRelations> | AssetFieldValue | MultilinkFieldValue | TableFieldValue | RichtextFieldValue | PluginFieldValue | StoryWithInlinedRelations | undefined;
|
|
5
10
|
interface InlinedStoryContent {
|
|
6
11
|
_uid: string;
|
|
7
12
|
component: string;
|
|
8
13
|
_editable?: string;
|
|
9
14
|
[key: string]: InlinedStoryContentField;
|
|
10
15
|
}
|
|
11
|
-
type StoryWithInlinedRelations = Omit<
|
|
16
|
+
type StoryWithInlinedRelations = Omit<Story, 'content'> & {
|
|
12
17
|
content: InlinedStoryContent;
|
|
13
18
|
};
|
|
19
|
+
/** Splits `"comp.field,comp2.field2"` into a union of `{ component, field }`. */
|
|
20
|
+
type ParseRelations<T extends string> = T extends `${infer Comp}.${infer Field},${infer Rest}` ? {
|
|
21
|
+
component: Comp;
|
|
22
|
+
field: Field;
|
|
23
|
+
} | ParseRelations<Rest> : T extends `${infer Comp}.${infer Field}` ? {
|
|
24
|
+
component: Comp;
|
|
25
|
+
field: Field;
|
|
26
|
+
} : never;
|
|
27
|
+
/** Extracts resolved field names for a given component name. */
|
|
28
|
+
type ResolvedFieldsFor<R extends string, ComponentName extends string> = Extract<ParseRelations<R>, {
|
|
29
|
+
component: ComponentName;
|
|
30
|
+
}>['field'];
|
|
31
|
+
/** A resolved relation: a full story typed to the component union. */
|
|
32
|
+
type ResolvedRelation<TComponents extends Block> = { [K in TComponents as K['name']]: Story<K, TComponents> }[TComponents['name']];
|
|
33
|
+
/**
|
|
34
|
+
* Given a story type and a set of resolved field names, replaces
|
|
35
|
+
* those fields with `ResolvedRelation<TComponents>` (a full story object).
|
|
36
|
+
*/
|
|
37
|
+
type WithResolvedRelations<TStory, TComponents extends Block, Fields extends string> = TStory extends {
|
|
38
|
+
content: infer C;
|
|
39
|
+
} ? Omit<TStory, 'content'> & {
|
|
40
|
+
content: { [K in keyof C]: K extends Fields ? ResolvedRelation<TComponents> : C[K] };
|
|
41
|
+
} : TStory;
|
|
42
|
+
/**
|
|
43
|
+
* Resolves to a narrowed component-derived story type when `TComponents` is a specific
|
|
44
|
+
* Component union, or falls back to the generated Story / StoryWithInlinedRelations
|
|
45
|
+
* when `TComponents` is the default Component base type (no type argument provided).
|
|
46
|
+
*
|
|
47
|
+
* When `ResolveRelations` is a string literal (e.g. `"article.author"`),
|
|
48
|
+
* matched fields are widened from their schema type to `ResolvedRelation<TComponents>`
|
|
49
|
+
* — a full story object typed to the component union.
|
|
50
|
+
*
|
|
51
|
+
* Uses a mapped-type approach instead of a distributive conditional with a
|
|
52
|
+
* separate full-components parameter. This ensures the full `TComponents` union is
|
|
53
|
+
* preserved even when DTS bundlers (like tsdown) inline the type alias —
|
|
54
|
+
* a distributive conditional + default-parameter pattern would collapse
|
|
55
|
+
* both parameters to the distributed single member after inlining.
|
|
56
|
+
*
|
|
57
|
+
* The mapped type `{ [K in TComponents as K["name"]]: Story<K, TComponents> }`
|
|
58
|
+
* iterates each union member as `K` while keeping `TComponents` as the full union
|
|
59
|
+
* for nested blok field resolution. The final indexed access
|
|
60
|
+
* `[TComponents["name"]]` produces the discriminated union of all story types.
|
|
61
|
+
*/
|
|
62
|
+
type StoryResult<TComponents extends Block, InlineRelations extends boolean, ResolveRelationsRaw extends string | undefined = undefined> = Block extends TComponents ? InlineRelations extends true ? StoryWithInlinedRelations : Story : ResolveRelationsRaw extends string ? { [K in RootBlock<TComponents> as K['name']]: WithResolvedRelations<Story<K, TComponents>, TComponents, ResolvedFieldsFor<ResolveRelationsRaw, K['name']>> }[RootBlock<TComponents>['name']] : Story<TComponents>;
|
|
63
|
+
type GetResponse<TComponents extends Block, InlineRelations extends boolean, ResolveRelationsRaw extends string | undefined = undefined> = Omit<GetStoryByIdResponses[200], 'story'> & {
|
|
64
|
+
story: StoryResult<TComponents, InlineRelations, ResolveRelationsRaw>;
|
|
65
|
+
};
|
|
66
|
+
type ListResponse<TComponents extends Block, InlineRelations extends boolean, ResolveRelationsRaw extends string | undefined = undefined> = Omit<ListStoriesResponses[200], 'stories'> & {
|
|
67
|
+
stories: Array<StoryResult<TComponents, InlineRelations, ResolveRelationsRaw>>;
|
|
68
|
+
};
|
|
69
|
+
/** The story identifier path param (full slug, numeric ID, or UUID), derived from the generated request type. */
|
|
70
|
+
type StoryIdentifier = GetStoryByIdData['path']['id'];
|
|
71
|
+
interface StoriesResourceDeps<DefaultThrowOnError extends boolean = false> extends ResourceDeps<DefaultThrowOnError> {
|
|
72
|
+
inlineRelations: boolean;
|
|
73
|
+
}
|
|
74
|
+
declare function createStoriesResource<TComponents extends Block = Block, InlineRelations extends boolean = false, DefaultThrowOnError extends boolean = false>(deps: StoriesResourceDeps<DefaultThrowOnError>): {
|
|
75
|
+
get: <ThrowOnError extends boolean = DefaultThrowOnError, const ResolveRelationsStr extends string | undefined = undefined>(identifier: StoryIdentifier, options?: {
|
|
76
|
+
query?: Omit<NonNullable<GetStoryByIdData["query"]>, "resolve_relations"> & {
|
|
77
|
+
resolve_relations?: ResolveRelationsStr;
|
|
78
|
+
};
|
|
79
|
+
signal?: AbortSignal;
|
|
80
|
+
throwOnError?: ThrowOnError;
|
|
81
|
+
fetchOptions?: FetchOptions;
|
|
82
|
+
}) => Promise<ApiResponse<GetResponse<TComponents, InlineRelations, ResolveRelationsStr>, ThrowOnError>>;
|
|
83
|
+
list: <ThrowOnError extends boolean = DefaultThrowOnError, const ResolveRelationsStr extends string | undefined = undefined>(options?: {
|
|
84
|
+
query?: Omit<NonNullable<ListStoriesData["query"]>, "resolve_relations"> & {
|
|
85
|
+
resolve_relations?: ResolveRelationsStr;
|
|
86
|
+
};
|
|
87
|
+
signal?: AbortSignal;
|
|
88
|
+
throwOnError?: ThrowOnError;
|
|
89
|
+
fetchOptions?: FetchOptions;
|
|
90
|
+
}) => Promise<ApiResponse<ListResponse<TComponents, InlineRelations, ResolveRelationsStr>, ThrowOnError>>;
|
|
91
|
+
};
|
|
14
92
|
//#endregion
|
|
15
|
-
export { StoryWithInlinedRelations };
|
|
93
|
+
export { StoryWithInlinedRelations, createStoriesResource };
|
|
16
94
|
//# sourceMappingURL=stories.d.cts.map
|
|
@@ -1,16 +1,94 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GetStoryByIdData, GetStoryByIdResponses, ListStoriesData, ListStoriesResponses } from "../generated/capi/types.gen.mjs";
|
|
2
|
+
import { AssetFieldValue, MultilinkFieldValue, PluginFieldValue, RichtextFieldValue, TableFieldValue } from "../generated/overlay/_internal.gen.mjs";
|
|
3
|
+
import { Block, RootBlock } from "../generated/types/block.mjs";
|
|
4
|
+
import { BlockContent } from "../generated/types/field.mjs";
|
|
5
|
+
import { Story } from "../generated/types/story.mjs";
|
|
6
|
+
import { ApiResponse, FetchOptions, ResourceDeps } from "../client.mjs";
|
|
2
7
|
|
|
3
8
|
//#region src/resources/stories.d.ts
|
|
4
|
-
type InlinedStoryContentField = string | number | boolean | Array<string |
|
|
9
|
+
type InlinedStoryContentField = string | number | boolean | Array<string | AssetFieldValue | BlockContent | StoryWithInlinedRelations> | AssetFieldValue | MultilinkFieldValue | TableFieldValue | RichtextFieldValue | PluginFieldValue | StoryWithInlinedRelations | undefined;
|
|
5
10
|
interface InlinedStoryContent {
|
|
6
11
|
_uid: string;
|
|
7
12
|
component: string;
|
|
8
13
|
_editable?: string;
|
|
9
14
|
[key: string]: InlinedStoryContentField;
|
|
10
15
|
}
|
|
11
|
-
type StoryWithInlinedRelations = Omit<
|
|
16
|
+
type StoryWithInlinedRelations = Omit<Story, 'content'> & {
|
|
12
17
|
content: InlinedStoryContent;
|
|
13
18
|
};
|
|
19
|
+
/** Splits `"comp.field,comp2.field2"` into a union of `{ component, field }`. */
|
|
20
|
+
type ParseRelations<T extends string> = T extends `${infer Comp}.${infer Field},${infer Rest}` ? {
|
|
21
|
+
component: Comp;
|
|
22
|
+
field: Field;
|
|
23
|
+
} | ParseRelations<Rest> : T extends `${infer Comp}.${infer Field}` ? {
|
|
24
|
+
component: Comp;
|
|
25
|
+
field: Field;
|
|
26
|
+
} : never;
|
|
27
|
+
/** Extracts resolved field names for a given component name. */
|
|
28
|
+
type ResolvedFieldsFor<R extends string, ComponentName extends string> = Extract<ParseRelations<R>, {
|
|
29
|
+
component: ComponentName;
|
|
30
|
+
}>['field'];
|
|
31
|
+
/** A resolved relation: a full story typed to the component union. */
|
|
32
|
+
type ResolvedRelation<TComponents extends Block> = { [K in TComponents as K['name']]: Story<K, TComponents> }[TComponents['name']];
|
|
33
|
+
/**
|
|
34
|
+
* Given a story type and a set of resolved field names, replaces
|
|
35
|
+
* those fields with `ResolvedRelation<TComponents>` (a full story object).
|
|
36
|
+
*/
|
|
37
|
+
type WithResolvedRelations<TStory, TComponents extends Block, Fields extends string> = TStory extends {
|
|
38
|
+
content: infer C;
|
|
39
|
+
} ? Omit<TStory, 'content'> & {
|
|
40
|
+
content: { [K in keyof C]: K extends Fields ? ResolvedRelation<TComponents> : C[K] };
|
|
41
|
+
} : TStory;
|
|
42
|
+
/**
|
|
43
|
+
* Resolves to a narrowed component-derived story type when `TComponents` is a specific
|
|
44
|
+
* Component union, or falls back to the generated Story / StoryWithInlinedRelations
|
|
45
|
+
* when `TComponents` is the default Component base type (no type argument provided).
|
|
46
|
+
*
|
|
47
|
+
* When `ResolveRelations` is a string literal (e.g. `"article.author"`),
|
|
48
|
+
* matched fields are widened from their schema type to `ResolvedRelation<TComponents>`
|
|
49
|
+
* — a full story object typed to the component union.
|
|
50
|
+
*
|
|
51
|
+
* Uses a mapped-type approach instead of a distributive conditional with a
|
|
52
|
+
* separate full-components parameter. This ensures the full `TComponents` union is
|
|
53
|
+
* preserved even when DTS bundlers (like tsdown) inline the type alias —
|
|
54
|
+
* a distributive conditional + default-parameter pattern would collapse
|
|
55
|
+
* both parameters to the distributed single member after inlining.
|
|
56
|
+
*
|
|
57
|
+
* The mapped type `{ [K in TComponents as K["name"]]: Story<K, TComponents> }`
|
|
58
|
+
* iterates each union member as `K` while keeping `TComponents` as the full union
|
|
59
|
+
* for nested blok field resolution. The final indexed access
|
|
60
|
+
* `[TComponents["name"]]` produces the discriminated union of all story types.
|
|
61
|
+
*/
|
|
62
|
+
type StoryResult<TComponents extends Block, InlineRelations extends boolean, ResolveRelationsRaw extends string | undefined = undefined> = Block extends TComponents ? InlineRelations extends true ? StoryWithInlinedRelations : Story : ResolveRelationsRaw extends string ? { [K in RootBlock<TComponents> as K['name']]: WithResolvedRelations<Story<K, TComponents>, TComponents, ResolvedFieldsFor<ResolveRelationsRaw, K['name']>> }[RootBlock<TComponents>['name']] : Story<TComponents>;
|
|
63
|
+
type GetResponse<TComponents extends Block, InlineRelations extends boolean, ResolveRelationsRaw extends string | undefined = undefined> = Omit<GetStoryByIdResponses[200], 'story'> & {
|
|
64
|
+
story: StoryResult<TComponents, InlineRelations, ResolveRelationsRaw>;
|
|
65
|
+
};
|
|
66
|
+
type ListResponse<TComponents extends Block, InlineRelations extends boolean, ResolveRelationsRaw extends string | undefined = undefined> = Omit<ListStoriesResponses[200], 'stories'> & {
|
|
67
|
+
stories: Array<StoryResult<TComponents, InlineRelations, ResolveRelationsRaw>>;
|
|
68
|
+
};
|
|
69
|
+
/** The story identifier path param (full slug, numeric ID, or UUID), derived from the generated request type. */
|
|
70
|
+
type StoryIdentifier = GetStoryByIdData['path']['id'];
|
|
71
|
+
interface StoriesResourceDeps<DefaultThrowOnError extends boolean = false> extends ResourceDeps<DefaultThrowOnError> {
|
|
72
|
+
inlineRelations: boolean;
|
|
73
|
+
}
|
|
74
|
+
declare function createStoriesResource<TComponents extends Block = Block, InlineRelations extends boolean = false, DefaultThrowOnError extends boolean = false>(deps: StoriesResourceDeps<DefaultThrowOnError>): {
|
|
75
|
+
get: <ThrowOnError extends boolean = DefaultThrowOnError, const ResolveRelationsStr extends string | undefined = undefined>(identifier: StoryIdentifier, options?: {
|
|
76
|
+
query?: Omit<NonNullable<GetStoryByIdData["query"]>, "resolve_relations"> & {
|
|
77
|
+
resolve_relations?: ResolveRelationsStr;
|
|
78
|
+
};
|
|
79
|
+
signal?: AbortSignal;
|
|
80
|
+
throwOnError?: ThrowOnError;
|
|
81
|
+
fetchOptions?: FetchOptions;
|
|
82
|
+
}) => Promise<ApiResponse<GetResponse<TComponents, InlineRelations, ResolveRelationsStr>, ThrowOnError>>;
|
|
83
|
+
list: <ThrowOnError extends boolean = DefaultThrowOnError, const ResolveRelationsStr extends string | undefined = undefined>(options?: {
|
|
84
|
+
query?: Omit<NonNullable<ListStoriesData["query"]>, "resolve_relations"> & {
|
|
85
|
+
resolve_relations?: ResolveRelationsStr;
|
|
86
|
+
};
|
|
87
|
+
signal?: AbortSignal;
|
|
88
|
+
throwOnError?: ThrowOnError;
|
|
89
|
+
fetchOptions?: FetchOptions;
|
|
90
|
+
}) => Promise<ApiResponse<ListResponse<TComponents, InlineRelations, ResolveRelationsStr>, ThrowOnError>>;
|
|
91
|
+
};
|
|
14
92
|
//#endregion
|
|
15
|
-
export { StoryWithInlinedRelations };
|
|
93
|
+
export { StoryWithInlinedRelations, createStoriesResource };
|
|
16
94
|
//# sourceMappingURL=stories.d.mts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getStoryById, listStories } from "../generated/capi/sdk.gen.mjs";
|
|
2
2
|
import { inlineStoriesContent, inlineStoryContent, resolveRelationMap } from "../utils/inline-relations.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/resources/stories.ts
|
|
@@ -8,15 +8,16 @@ function createStoriesResource(deps) {
|
|
|
8
8
|
return {
|
|
9
9
|
get: async (identifier, options = {}) => {
|
|
10
10
|
const { query = {}, signal, throwOnError, fetchOptions } = options;
|
|
11
|
-
const
|
|
12
|
-
|
|
11
|
+
const typedQuery = query ?? {};
|
|
12
|
+
const resolvedQuery = typeof identifier === "string" && UUID_RE.test(identifier) && !typedQuery.find_by ? {
|
|
13
|
+
...typedQuery,
|
|
13
14
|
find_by: "uuid"
|
|
14
|
-
} :
|
|
15
|
+
} : typedQuery;
|
|
15
16
|
const requestPath = `/v2/cdn/stories/${identifier}`;
|
|
16
17
|
return requestWithCache("GET", requestPath, resolvedQuery, async (requestQuery) => {
|
|
17
|
-
const response = await throttleManager.execute(requestPath, requestQuery, () => asApiResponse(
|
|
18
|
+
const response = await throttleManager.execute(requestPath, requestQuery, () => asApiResponse(getStoryById({
|
|
18
19
|
client,
|
|
19
|
-
path: { identifier },
|
|
20
|
+
path: { id: identifier },
|
|
20
21
|
query: requestQuery,
|
|
21
22
|
signal,
|
|
22
23
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
@@ -26,7 +27,8 @@ function createStoriesResource(deps) {
|
|
|
26
27
|
} } : {}
|
|
27
28
|
})));
|
|
28
29
|
if (!inlineRelations || response.data === void 0) return response;
|
|
29
|
-
const
|
|
30
|
+
const storyData = response.data;
|
|
31
|
+
const resolved = await resolveRelationMap(storyData, requestQuery, {
|
|
30
32
|
client,
|
|
31
33
|
throttleManager
|
|
32
34
|
});
|
|
@@ -35,16 +37,17 @@ function createStoriesResource(deps) {
|
|
|
35
37
|
...response,
|
|
36
38
|
data: {
|
|
37
39
|
...response.data,
|
|
38
|
-
story: inlineStoryContent(
|
|
40
|
+
story: inlineStoryContent(storyData.story, resolved.relationPaths, resolved.relationMap)
|
|
39
41
|
}
|
|
40
42
|
};
|
|
41
43
|
}, inlineRelations ? { cacheKeyPrefix: "inline" } : void 0);
|
|
42
44
|
},
|
|
43
45
|
list: async (options = {}) => {
|
|
44
46
|
const { query = {}, signal, throwOnError, fetchOptions } = options;
|
|
47
|
+
const typedQuery = query ?? {};
|
|
45
48
|
const requestPath = "/v2/cdn/stories";
|
|
46
|
-
return requestWithCache("GET", requestPath,
|
|
47
|
-
const response = await throttleManager.execute(requestPath, requestQuery, () => asApiResponse(
|
|
49
|
+
return requestWithCache("GET", requestPath, typedQuery, async (requestQuery) => {
|
|
50
|
+
const response = await throttleManager.execute(requestPath, requestQuery, () => asApiResponse(listStories({
|
|
48
51
|
client,
|
|
49
52
|
query: requestQuery,
|
|
50
53
|
signal,
|
|
@@ -55,7 +58,8 @@ function createStoriesResource(deps) {
|
|
|
55
58
|
} } : {}
|
|
56
59
|
})));
|
|
57
60
|
if (!inlineRelations || response.data === void 0) return response;
|
|
58
|
-
const
|
|
61
|
+
const storiesData = response.data;
|
|
62
|
+
const resolved = await resolveRelationMap(storiesData, requestQuery, {
|
|
59
63
|
client,
|
|
60
64
|
throttleManager
|
|
61
65
|
});
|
|
@@ -64,7 +68,7 @@ function createStoriesResource(deps) {
|
|
|
64
68
|
...response,
|
|
65
69
|
data: {
|
|
66
70
|
...response.data,
|
|
67
|
-
stories: inlineStoriesContent(
|
|
71
|
+
stories: inlineStoriesContent(storiesData.stories, resolved.relationPaths, resolved.relationMap)
|
|
68
72
|
}
|
|
69
73
|
};
|
|
70
74
|
}, inlineRelations ? { cacheKeyPrefix: "inline" } : void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stories.mjs","names":[],"sources":["../../src/resources/stories.ts"],"sourcesContent":["import { get, list } from '../generated/stories/sdk.gen';\nimport type { GetData, GetResponses, ListData, ListResponses } from '../generated/stories/types.gen';\nimport type {\n AssetField,\n MultilinkField,\n PluginField,\n RichtextField,\n StoryCapi,\n StoryContent,\n TableField,\n} from '../generated/stories';\nimport { inlineStoriesContent, inlineStoryContent, resolveRelationMap } from '../utils/inline-relations';\nimport type { ApiResponse, FetchOptions, ResourceDeps } from '../types';\n\ntype InlinedStoryContentField =\n | string\n | number\n | boolean\n | Array<string | AssetField | StoryContent | StoryWithInlinedRelations>\n | AssetField\n | MultilinkField\n | TableField\n | RichtextField\n | PluginField\n | StoryWithInlinedRelations\n | undefined;\n\ninterface InlinedStoryContent {\n _uid: string;\n component: string;\n _editable?: string;\n [key: string]: InlinedStoryContentField;\n}\n\nexport type StoryWithInlinedRelations = Omit<StoryCapi, 'content'> & {\n content: InlinedStoryContent;\n};\n\ntype StoryResult<InlineRelations extends boolean> = InlineRelations extends true\n ? StoryWithInlinedRelations\n : StoryCapi;\n\ntype GetResponse<InlineRelations extends boolean> = Omit<GetResponses[200], 'story'> & {\n story: StoryResult<InlineRelations>;\n};\ntype ListResponse<InlineRelations extends boolean> = Omit<ListResponses[200], 'stories'> & {\n stories: Array<StoryResult<InlineRelations>>;\n};\n\n/** Pre-resolved to avoid TypeScript emitting deep indexed-access chains that trip up DTS bundlers. */\ntype StoryIdentifier = GetData['path']['identifier'];\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\nexport interface StoriesResourceDeps extends ResourceDeps {\n inlineRelations: boolean;\n}\n\nexport function createStoriesResource<InlineRelations extends boolean>(\n deps: StoriesResourceDeps,\n) {\n const { client, requestWithCache, asApiResponse, inlineRelations, throttleManager } = deps;\n\n return {\n get: async <ThrowOnError extends boolean = false>(\n identifier: StoryIdentifier,\n options: { query?: GetData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<GetResponse<InlineRelations>, ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const resolvedQuery = typeof identifier === 'string' && UUID_RE.test(identifier) && !query.find_by\n ? { ...query, find_by: 'uuid' as const }\n : query;\n const requestPath = `/v2/cdn/stories/${identifier}`;\n type Res = ApiResponse<GetResponse<InlineRelations>, ThrowOnError>;\n return requestWithCache<GetResponse<InlineRelations>, ThrowOnError>('GET', requestPath, resolvedQuery, async (requestQuery: Record<string, unknown>): Promise<Res> => {\n const response = await throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse<GetResponse<InlineRelations>, ThrowOnError>(get({\n client,\n path: { identifier },\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n })));\n\n if (!inlineRelations || response.data === undefined) {\n return response;\n }\n\n const resolved = await resolveRelationMap(response.data, requestQuery, { client, throttleManager });\n if (!resolved) {\n return response;\n }\n\n return {\n ...response,\n data: {\n ...response.data,\n story: inlineStoryContent(response.data.story, resolved.relationPaths, resolved.relationMap),\n },\n };\n }, inlineRelations ? { cacheKeyPrefix: 'inline' } : undefined);\n },\n\n list: async <ThrowOnError extends boolean = false>(\n options: { query?: ListData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<ListResponse<InlineRelations>, ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const requestPath = '/v2/cdn/stories';\n type ResAll = ApiResponse<ListResponse<InlineRelations>, ThrowOnError>;\n return requestWithCache<ListResponse<InlineRelations>, ThrowOnError>('GET', requestPath, query, async (requestQuery: Record<string, unknown>): Promise<ResAll> => {\n const response = await throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse<ListResponse<InlineRelations>, ThrowOnError>(list({\n client,\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n })));\n\n if (!inlineRelations || response.data === undefined) {\n return response;\n }\n\n const resolved = await resolveRelationMap(response.data, requestQuery, { client, throttleManager });\n if (!resolved) {\n return response;\n }\n\n return {\n ...response,\n data: {\n ...response.data,\n stories: inlineStoriesContent(response.data.stories, resolved.relationPaths, resolved.relationMap),\n },\n };\n }, inlineRelations ? { cacheKeyPrefix: 'inline' } : undefined);\n },\n };\n}\n"],"mappings":";;;;AAoDA,MAAM,UAAU;AAMhB,SAAgB,sBACd,MACA;CACA,MAAM,EAAE,QAAQ,kBAAkB,eAAe,iBAAiB,oBAAoB;AAEtF,QAAO;EACL,KAAK,OACH,YACA,UAAwH,EAAE,KACrD;GACrE,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;GAC3D,MAAM,gBAAgB,OAAO,eAAe,YAAY,QAAQ,KAAK,WAAW,IAAI,CAAC,MAAM,UACvF;IAAE,GAAG;IAAO,SAAS;IAAiB,GACtC;GACJ,MAAM,cAAc,mBAAmB;AAEvC,UAAO,iBAA6D,OAAO,aAAa,eAAe,OAAO,iBAAwD;IACpK,MAAM,WAAW,MAAM,gBAAgB,QAAQ,aAAa,oBAC1D,cAA0D,IAAI;KAC5D;KACA,MAAM,EAAE,YAAY;KACpB,OAAO;KACP;KACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;KACtD,GAAI,eAAe,EAAE,WAAW;MAAE,GAAG,OAAO,WAAW,CAAC;MAAW,GAAG;MAAc,EAAE,GAAG,EAAE;KAC5F,CAAC,CAAC,CAAC;AAEN,QAAI,CAAC,mBAAmB,SAAS,SAAS,OACxC,QAAO;IAGT,MAAM,WAAW,MAAM,mBAAmB,SAAS,MAAM,cAAc;KAAE;KAAQ;KAAiB,CAAC;AACnG,QAAI,CAAC,SACH,QAAO;AAGT,WAAO;KACL,GAAG;KACH,MAAM;MACJ,GAAG,SAAS;MACZ,OAAO,mBAAmB,SAAS,KAAK,OAAO,SAAS,eAAe,SAAS,YAAY;MAC7F;KACF;MACA,kBAAkB,EAAE,gBAAgB,UAAU,GAAG,OAAU;;EAGhE,MAAM,OACJ,UAAyH,EAAE,KACrD;GACtE,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;GAC3D,MAAM,cAAc;AAEpB,UAAO,iBAA8D,OAAO,aAAa,OAAO,OAAO,iBAA2D;IAChK,MAAM,WAAW,MAAM,gBAAgB,QAAQ,aAAa,oBAC1D,cAA2D,KAAK;KAC9D;KACA,OAAO;KACP;KACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;KACtD,GAAI,eAAe,EAAE,WAAW;MAAE,GAAG,OAAO,WAAW,CAAC;MAAW,GAAG;MAAc,EAAE,GAAG,EAAE;KAC5F,CAAC,CAAC,CAAC;AAEN,QAAI,CAAC,mBAAmB,SAAS,SAAS,OACxC,QAAO;IAGT,MAAM,WAAW,MAAM,mBAAmB,SAAS,MAAM,cAAc;KAAE;KAAQ;KAAiB,CAAC;AACnG,QAAI,CAAC,SACH,QAAO;AAGT,WAAO;KACL,GAAG;KACH,MAAM;MACJ,GAAG,SAAS;MACZ,SAAS,qBAAqB,SAAS,KAAK,SAAS,SAAS,eAAe,SAAS,YAAY;MACnG;KACF;MACA,kBAAkB,EAAE,gBAAgB,UAAU,GAAG,OAAU;;EAEjE"}
|
|
1
|
+
{"version":3,"file":"stories.mjs","names":[],"sources":["../../src/resources/stories.ts"],"sourcesContent":["import { getStoryById, listStories } from '../generated/capi/sdk.gen';\nimport type { GetStoryByIdData, GetStoryByIdResponses, ListStoriesData, ListStoriesResponses } from '../generated/capi/types.gen';\nimport type {\n AssetFieldValue,\n BlockContent as BlokContent,\n MultilinkFieldValue,\n PluginFieldValue,\n RichtextFieldValue,\n TableFieldValue,\n} from '../generated/types/field';\nimport { inlineStoriesContent, inlineStoryContent, resolveRelationMap } from '../utils/inline-relations';\nimport type { ApiResponse, FetchOptions, ResourceDeps } from '../client';\nimport type { Block as Component, RootBlock as RootComponents } from '../generated/types/block';\nimport type { Story } from '../generated/types/story';\n\ntype InlinedStoryContentField =\n | string\n | number\n | boolean\n | Array<string | AssetFieldValue | BlokContent | StoryWithInlinedRelations>\n | AssetFieldValue\n | MultilinkFieldValue\n | TableFieldValue\n | RichtextFieldValue\n | PluginFieldValue\n | StoryWithInlinedRelations\n | undefined;\n\ninterface InlinedStoryContent {\n _uid: string;\n component: string;\n _editable?: string;\n [key: string]: InlinedStoryContentField;\n}\n\nexport type StoryWithInlinedRelations = Omit<Story, 'content'> & {\n content: InlinedStoryContent;\n};\n\n/** Splits `\"comp.field,comp2.field2\"` into a union of `{ component, field }`. */\ntype ParseRelations<T extends string> =\n T extends `${infer Comp}.${infer Field},${infer Rest}`\n ? { component: Comp; field: Field } | ParseRelations<Rest>\n : T extends `${infer Comp}.${infer Field}`\n ? { component: Comp; field: Field }\n : never;\n\n/** Extracts resolved field names for a given component name. */\ntype ResolvedFieldsFor<R extends string, ComponentName extends string> =\n Extract<ParseRelations<R>, { component: ComponentName }>['field'];\n\n/** A resolved relation: a full story typed to the component union. */\ntype ResolvedRelation<TComponents extends Component> =\n { [K in TComponents as K['name']]: Story<K, TComponents> }[TComponents['name']];\n\n/**\n * Given a story type and a set of resolved field names, replaces\n * those fields with `ResolvedRelation<TComponents>` (a full story object).\n */\ntype WithResolvedRelations<\n TStory,\n TComponents extends Component,\n Fields extends string,\n> = TStory extends { content: infer C } ? Omit<TStory, 'content'> & {\n content: {\n [K in keyof C]: K extends Fields ? ResolvedRelation<TComponents> : C[K]\n };\n}\n : TStory;\n\n/**\n * Resolves to a narrowed component-derived story type when `TComponents` is a specific\n * Component union, or falls back to the generated Story / StoryWithInlinedRelations\n * when `TComponents` is the default Component base type (no type argument provided).\n *\n * When `ResolveRelations` is a string literal (e.g. `\"article.author\"`),\n * matched fields are widened from their schema type to `ResolvedRelation<TComponents>`\n * — a full story object typed to the component union.\n *\n * Uses a mapped-type approach instead of a distributive conditional with a\n * separate full-components parameter. This ensures the full `TComponents` union is\n * preserved even when DTS bundlers (like tsdown) inline the type alias —\n * a distributive conditional + default-parameter pattern would collapse\n * both parameters to the distributed single member after inlining.\n *\n * The mapped type `{ [K in TComponents as K[\"name\"]]: Story<K, TComponents> }`\n * iterates each union member as `K` while keeping `TComponents` as the full union\n * for nested blok field resolution. The final indexed access\n * `[TComponents[\"name\"]]` produces the discriminated union of all story types.\n */\ntype StoryResult<\n TComponents extends Component,\n InlineRelations extends boolean,\n ResolveRelationsRaw extends string | undefined = undefined,\n> =\n Component extends TComponents\n ? InlineRelations extends true ? StoryWithInlinedRelations : Story // fallback\n : ResolveRelationsRaw extends string\n ? {\n [K in RootComponents<TComponents> as K['name']]: WithResolvedRelations<\n Story<K, TComponents>,\n TComponents,\n ResolvedFieldsFor<ResolveRelationsRaw, K['name']>\n >\n }[RootComponents<TComponents>['name']]\n : Story<TComponents>;\n\ntype GetResponse<\n TComponents extends Component,\n InlineRelations extends boolean,\n ResolveRelationsRaw extends string | undefined = undefined,\n> = Omit<GetStoryByIdResponses[200], 'story'> & {\n story: StoryResult<TComponents, InlineRelations, ResolveRelationsRaw>;\n};\ntype ListResponse<\n TComponents extends Component,\n InlineRelations extends boolean,\n ResolveRelationsRaw extends string | undefined = undefined,\n> = Omit<ListStoriesResponses[200], 'stories'> & {\n stories: Array<StoryResult<TComponents, InlineRelations, ResolveRelationsRaw>>;\n};\n\n/**\n * Internal relation-resolution shapes. The public response types expose the\n * generic `Story`, but relation inlining needs to read the API's sidecar\n * `rels`/`rel_uuids` fields off the raw payload. These three interfaces model\n * that wire shape so the `response.data` narrowing below stays in one place\n * instead of being scattered as inline casts.\n */\ninterface StoryRelationData {\n rels?: Story[];\n rel_uuids?: string[];\n}\n\ninterface StoryData extends StoryRelationData {\n story: Story;\n}\n\ninterface StoriesData extends StoryRelationData {\n stories: Story[];\n}\n\n/** The story identifier path param (full slug, numeric ID, or UUID), derived from the generated request type. */\ntype StoryIdentifier = GetStoryByIdData['path']['id'];\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\nexport interface StoriesResourceDeps<DefaultThrowOnError extends boolean = false> extends ResourceDeps<DefaultThrowOnError> {\n inlineRelations: boolean;\n}\n\nexport function createStoriesResource<\n TComponents extends Component = Component,\n InlineRelations extends boolean = false,\n DefaultThrowOnError extends boolean = false,\n>(\n deps: StoriesResourceDeps<DefaultThrowOnError>,\n) {\n const { client, requestWithCache, asApiResponse, inlineRelations, throttleManager } = deps;\n\n return {\n get: async <\n ThrowOnError extends boolean = DefaultThrowOnError,\n const ResolveRelationsStr extends string | undefined = undefined,\n >(\n identifier: StoryIdentifier,\n options: { query?: Omit<NonNullable<GetStoryByIdData['query']>, 'resolve_relations'> & { resolve_relations?: ResolveRelationsStr }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<GetResponse<TComponents, InlineRelations, ResolveRelationsStr>, ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const typedQuery = (query ?? {}) as NonNullable<GetStoryByIdData['query']>;\n const resolvedQuery = typeof identifier === 'string' && UUID_RE.test(identifier) && !typedQuery.find_by\n ? { ...typedQuery, find_by: 'uuid' }\n : typedQuery;\n const requestPath = `/v2/cdn/stories/${identifier}`;\n return requestWithCache('GET', requestPath, resolvedQuery, async (requestQuery: Record<string, unknown>) => {\n const response = await throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse(getStoryById({\n client,\n path: { id: identifier },\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n }))) satisfies ApiResponse<GetResponse<TComponents, InlineRelations, ResolveRelationsStr>, ThrowOnError>;\n\n if (!inlineRelations || response.data === undefined) {\n return response;\n }\n\n // Narrow to the internal relation shape to read the API's sidecar\n // `rels`/`rel_uuids`; consumers keep seeing the generic `Story`.\n const storyData = response.data as unknown as StoryData;\n const resolved = await resolveRelationMap(storyData, requestQuery, { client, throttleManager });\n if (!resolved) {\n return response;\n }\n\n return {\n ...response,\n data: {\n ...response.data,\n story: inlineStoryContent(storyData.story, resolved.relationPaths, resolved.relationMap),\n },\n };\n }, inlineRelations ? { cacheKeyPrefix: 'inline' } : undefined);\n },\n\n list: async <\n ThrowOnError extends boolean = DefaultThrowOnError,\n const ResolveRelationsStr extends string | undefined = undefined,\n >(\n options: { query?: Omit<NonNullable<ListStoriesData['query']>, 'resolve_relations'> & { resolve_relations?: ResolveRelationsStr }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<ListResponse<TComponents, InlineRelations, ResolveRelationsStr>, ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const typedQuery = (query ?? {}) as NonNullable<ListStoriesData['query']>;\n const requestPath = '/v2/cdn/stories';\n return requestWithCache('GET', requestPath, typedQuery, async (requestQuery: Record<string, unknown>) => {\n const response = await throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse(listStories({\n client,\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n }))) satisfies ApiResponse<ListResponse<TComponents, InlineRelations, ResolveRelationsStr>, ThrowOnError>;\n\n if (!inlineRelations || response.data === undefined) {\n return response;\n }\n\n // Narrow to the internal relation shape to read the API's sidecar\n // `rels`/`rel_uuids`; consumers keep seeing the generic `Story`.\n const storiesData = response.data as unknown as StoriesData;\n const resolved = await resolveRelationMap(storiesData, requestQuery, { client, throttleManager });\n if (!resolved) {\n return response;\n }\n\n return {\n ...response,\n data: {\n ...response.data,\n stories: inlineStoriesContent(storiesData.stories, resolved.relationPaths, resolved.relationMap),\n },\n };\n }, inlineRelations ? { cacheKeyPrefix: 'inline' } : undefined);\n },\n };\n}\n"],"mappings":";;;;AAiJA,MAAM,UAAU;AAMhB,SAAgB,sBAKd,MACA;CACA,MAAM,EAAE,QAAQ,kBAAkB,eAAe,iBAAiB,oBAAoB;AAEtF,QAAO;EACL,KAAK,OAIH,YACA,UAAuN,EAAE,KAClH;GACvG,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;GAC3D,MAAM,aAAc,SAAS,EAAE;GAC/B,MAAM,gBAAgB,OAAO,eAAe,YAAY,QAAQ,KAAK,WAAW,IAAI,CAAC,WAAW,UAC5F;IAAE,GAAG;IAAY,SAAS;IAAQ,GAClC;GACJ,MAAM,cAAc,mBAAmB;AACvC,UAAO,iBAAiB,OAAO,aAAa,eAAe,OAAO,iBAA0C;IAC1G,MAAM,WAAW,MAAM,gBAAgB,QAAQ,aAAa,oBAC1D,cAAc,aAAa;KACzB;KACA,MAAM,EAAE,IAAI,YAAY;KACxB,OAAO;KACP;KACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;KACtD,GAAI,eAAe,EAAE,WAAW;MAAE,GAAG,OAAO,WAAW,CAAC;MAAW,GAAG;MAAc,EAAE,GAAG,EAAE;KAC5F,CAAC,CAAC,CAAC;AAEN,QAAI,CAAC,mBAAmB,SAAS,SAAS,OACxC,QAAO;IAKT,MAAM,YAAY,SAAS;IAC3B,MAAM,WAAW,MAAM,mBAAmB,WAAW,cAAc;KAAE;KAAQ;KAAiB,CAAC;AAC/F,QAAI,CAAC,SACH,QAAO;AAGT,WAAO;KACL,GAAG;KACH,MAAM;MACJ,GAAG,SAAS;MACZ,OAAO,mBAAmB,UAAU,OAAO,SAAS,eAAe,SAAS,YAAY;MACzF;KACF;MACA,kBAAkB,EAAE,gBAAgB,UAAU,GAAG,OAAU;;EAGhE,MAAM,OAIJ,UAAsN,EAAE,KAChH;GACxG,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;GAC3D,MAAM,aAAc,SAAS,EAAE;GAC/B,MAAM,cAAc;AACpB,UAAO,iBAAiB,OAAO,aAAa,YAAY,OAAO,iBAA0C;IACvG,MAAM,WAAW,MAAM,gBAAgB,QAAQ,aAAa,oBAC1D,cAAc,YAAY;KACxB;KACA,OAAO;KACP;KACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;KACtD,GAAI,eAAe,EAAE,WAAW;MAAE,GAAG,OAAO,WAAW,CAAC;MAAW,GAAG;MAAc,EAAE,GAAG,EAAE;KAC5F,CAAC,CAAC,CAAC;AAEN,QAAI,CAAC,mBAAmB,SAAS,SAAS,OACxC,QAAO;IAKT,MAAM,cAAc,SAAS;IAC7B,MAAM,WAAW,MAAM,mBAAmB,aAAa,cAAc;KAAE;KAAQ;KAAiB,CAAC;AACjG,QAAI,CAAC,SACH,QAAO;AAGT,WAAO;KACL,GAAG;KACH,MAAM;MACJ,GAAG,SAAS;MACZ,SAAS,qBAAqB,YAAY,SAAS,SAAS,eAAe,SAAS,YAAY;MACjG;KACF;MACA,kBAAkB,EAAE,gBAAgB,UAAU,GAAG,OAAU;;EAEjE"}
|
package/dist/resources/tags.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_sdk_gen = require('../generated/
|
|
1
|
+
const require_sdk_gen = require('../generated/capi/sdk.gen.cjs');
|
|
2
2
|
|
|
3
3
|
//#region src/resources/tags.ts
|
|
4
4
|
function createTagsResource(deps) {
|
|
@@ -7,7 +7,7 @@ function createTagsResource(deps) {
|
|
|
7
7
|
const { query = {}, signal, throwOnError, fetchOptions } = options;
|
|
8
8
|
const requestPath = "/v2/cdn/tags";
|
|
9
9
|
return requestWithCache("GET", requestPath, query, (requestQuery) => {
|
|
10
|
-
return throttleManager.execute(requestPath, requestQuery, () => asApiResponse(require_sdk_gen.
|
|
10
|
+
return throttleManager.execute(requestPath, requestQuery, () => asApiResponse(require_sdk_gen.listTags({
|
|
11
11
|
client,
|
|
12
12
|
query: requestQuery,
|
|
13
13
|
signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.cjs","names":["listTagsApi"],"sources":["../../src/resources/tags.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"tags.cjs","names":["listTagsApi"],"sources":["../../src/resources/tags.ts"],"sourcesContent":["import { listTags as listTagsApi } from '../generated/capi/sdk.gen';\nimport type { ListTagsData, ListTagsResponses } from '../generated/capi/types.gen';\nimport type { ApiResponse, FetchOptions, ResourceDeps } from '../client';\n\nexport function createTagsResource<DefaultThrowOnError extends boolean = false>(deps: ResourceDeps<DefaultThrowOnError>) {\n const { client, requestWithCache, asApiResponse, throttleManager } = deps;\n\n return {\n list: async <ThrowOnError extends boolean = DefaultThrowOnError>(\n options: { query?: ListTagsData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<ListTagsResponses[200], ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const requestPath = '/v2/cdn/tags';\n return requestWithCache<ListTagsResponses[200], ThrowOnError>('GET', requestPath, query, (requestQuery: Record<string, unknown>) => {\n return throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse<ListTagsResponses[200], ThrowOnError>(listTagsApi({\n client,\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n })));\n });\n },\n };\n}\n"],"mappings":";;;AAIA,SAAgB,mBAAgE,MAAyC;CACvH,MAAM,EAAE,QAAQ,kBAAkB,eAAe,oBAAoB;AAErE,QAAO,EACL,MAAM,OACJ,UAA6H,EAAE,KAChE;EAC/D,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;EAC3D,MAAM,cAAc;AACpB,SAAO,iBAAuD,OAAO,aAAa,QAAQ,iBAA0C;AAClI,UAAO,gBAAgB,QAAQ,aAAa,oBAC1C,cAAoDA,yBAAY;IAC9D;IACA,OAAO;IACP;IACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IACtD,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAC5F,CAAC,CAAC,CAAC;IACN;IAEL"}
|
package/dist/resources/tags.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { listTags } from "../generated/capi/sdk.gen.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/resources/tags.ts
|
|
4
4
|
function createTagsResource(deps) {
|
|
@@ -7,7 +7,7 @@ function createTagsResource(deps) {
|
|
|
7
7
|
const { query = {}, signal, throwOnError, fetchOptions } = options;
|
|
8
8
|
const requestPath = "/v2/cdn/tags";
|
|
9
9
|
return requestWithCache("GET", requestPath, query, (requestQuery) => {
|
|
10
|
-
return throttleManager.execute(requestPath, requestQuery, () => asApiResponse(
|
|
10
|
+
return throttleManager.execute(requestPath, requestQuery, () => asApiResponse(listTags({
|
|
11
11
|
client,
|
|
12
12
|
query: requestQuery,
|
|
13
13
|
signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.mjs","names":["listTagsApi"],"sources":["../../src/resources/tags.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"tags.mjs","names":["listTagsApi"],"sources":["../../src/resources/tags.ts"],"sourcesContent":["import { listTags as listTagsApi } from '../generated/capi/sdk.gen';\nimport type { ListTagsData, ListTagsResponses } from '../generated/capi/types.gen';\nimport type { ApiResponse, FetchOptions, ResourceDeps } from '../client';\n\nexport function createTagsResource<DefaultThrowOnError extends boolean = false>(deps: ResourceDeps<DefaultThrowOnError>) {\n const { client, requestWithCache, asApiResponse, throttleManager } = deps;\n\n return {\n list: async <ThrowOnError extends boolean = DefaultThrowOnError>(\n options: { query?: ListTagsData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {},\n ): Promise<ApiResponse<ListTagsResponses[200], ThrowOnError>> => {\n const { query = {}, signal, throwOnError, fetchOptions } = options;\n const requestPath = '/v2/cdn/tags';\n return requestWithCache<ListTagsResponses[200], ThrowOnError>('GET', requestPath, query, (requestQuery: Record<string, unknown>) => {\n return throttleManager.execute(requestPath, requestQuery, () =>\n asApiResponse<ListTagsResponses[200], ThrowOnError>(listTagsApi({\n client,\n query: requestQuery,\n signal,\n ...(throwOnError === undefined ? {} : { throwOnError }),\n ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}),\n })));\n });\n },\n };\n}\n"],"mappings":";;;AAIA,SAAgB,mBAAgE,MAAyC;CACvH,MAAM,EAAE,QAAQ,kBAAkB,eAAe,oBAAoB;AAErE,QAAO,EACL,MAAM,OACJ,UAA6H,EAAE,KAChE;EAC/D,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,cAAc,iBAAiB;EAC3D,MAAM,cAAc;AACpB,SAAO,iBAAuD,OAAO,aAAa,QAAQ,iBAA0C;AAClI,UAAO,gBAAgB,QAAQ,aAAa,oBAC1C,cAAoDA,SAAY;IAC9D;IACA,OAAO;IACP;IACA,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IACtD,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAC5F,CAAC,CAAC,CAAC;IACN;IAEL"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_sdk_gen = require('../generated/
|
|
1
|
+
const require_sdk_gen = require('../generated/capi/sdk.gen.cjs');
|
|
2
2
|
const require_array = require('./array.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/utils/fetch-rel-uuids.ts
|
|
@@ -25,7 +25,7 @@ const fetchMissingRelations = async ({ client, uuids, baseQuery, throttleManager
|
|
|
25
25
|
};
|
|
26
26
|
const chunks = require_array.chunkArray(uuids, UUID_CHUNK_SIZE);
|
|
27
27
|
return (await Promise.all(chunks.map((chunk) => throttleManager.execute("/v2/cdn/stories", queryContext, async () => {
|
|
28
|
-
const response = await require_sdk_gen.
|
|
28
|
+
const response = await require_sdk_gen.listStories({
|
|
29
29
|
client,
|
|
30
30
|
query: {
|
|
31
31
|
...queryContext,
|