@storyblok/management-api-client 1.0.0-alpha.1 → 1.0.0-alpha.3
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 +9 -9
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +217 -203
- package/dist/client.d.mts +217 -203
- package/dist/client.mjs +9 -9
- package/dist/client.mjs.map +1 -1
- package/dist/generated/mapi/_internal.gen.d.cts +371 -0
- package/dist/generated/mapi/_internal.gen.d.mts +371 -0
- package/dist/generated/{shared → mapi}/client/client.gen.cjs +1 -1
- package/dist/generated/mapi/client/client.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/client/client.gen.mjs +1 -1
- package/dist/generated/mapi/client/client.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/client/types.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/client/types.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/client/utils.gen.cjs +1 -1
- package/dist/generated/mapi/client/utils.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/client/utils.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/client/utils.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/client/utils.gen.mjs +1 -1
- package/dist/generated/mapi/client/utils.gen.mjs.map +1 -0
- package/dist/generated/mapi/client.gen.cjs +10 -0
- package/dist/generated/mapi/client.gen.cjs.map +1 -0
- package/dist/generated/mapi/client.gen.mjs +10 -0
- package/dist/generated/mapi/client.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/auth.gen.cjs +1 -1
- package/dist/generated/mapi/core/auth.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/auth.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/core/auth.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/core/auth.gen.mjs +1 -1
- package/dist/generated/mapi/core/auth.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/bodySerializer.gen.cjs +1 -1
- package/dist/generated/mapi/core/bodySerializer.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/bodySerializer.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/core/bodySerializer.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/core/bodySerializer.gen.mjs +1 -1
- package/dist/generated/mapi/core/bodySerializer.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/params.gen.cjs +1 -1
- package/dist/generated/mapi/core/params.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/params.gen.mjs +1 -1
- package/dist/generated/mapi/core/params.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/pathSerializer.gen.cjs +1 -1
- package/dist/generated/mapi/core/pathSerializer.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/pathSerializer.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/core/pathSerializer.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/core/pathSerializer.gen.mjs +1 -1
- package/dist/generated/mapi/core/pathSerializer.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.cjs +1 -1
- package/dist/generated/mapi/core/serverSentEvents.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.mjs +1 -1
- package/dist/generated/mapi/core/serverSentEvents.gen.mjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/types.gen.d.cts +1 -1
- package/dist/generated/{shared → mapi}/core/types.gen.d.mts +1 -1
- package/dist/generated/{shared → mapi}/core/utils.gen.cjs +1 -1
- package/dist/generated/mapi/core/utils.gen.cjs.map +1 -0
- package/dist/generated/{shared → mapi}/core/utils.gen.mjs +1 -1
- package/dist/generated/mapi/core/utils.gen.mjs.map +1 -0
- package/dist/generated/mapi/sdk.gen.cjs +1477 -0
- package/dist/generated/mapi/sdk.gen.cjs.map +1 -0
- package/dist/generated/mapi/sdk.gen.mjs +1399 -0
- package/dist/generated/mapi/sdk.gen.mjs.map +1 -0
- package/dist/generated/mapi/types-aliased.gen.d.cts +1598 -0
- package/dist/generated/mapi/types-aliased.gen.d.mts +1598 -0
- package/dist/generated/mapi/types.gen.d.cts +5075 -0
- package/dist/generated/mapi/types.gen.d.mts +5075 -0
- package/dist/generated/{components/types.gen.d.cts → overlay/_internal.gen.d.cts} +281 -457
- package/dist/generated/{components/types.gen.d.mts → overlay/_internal.gen.d.mts} +281 -457
- 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 +49 -0
- package/dist/generated/types/block.d.mts +49 -0
- package/dist/generated/types/field.d.cts +87 -0
- package/dist/generated/types/field.d.mts +87 -0
- package/dist/generated/types/mapi-story.d.cts +29 -0
- package/dist/generated/types/mapi-story.d.mts +29 -0
- package/dist/index.d.cts +8 -4
- package/dist/index.d.mts +8 -4
- package/dist/resources/asset-folders.cjs +9 -9
- package/dist/resources/asset-folders.cjs.map +1 -1
- package/dist/resources/asset-folders.mjs +9 -9
- package/dist/resources/asset-folders.mjs.map +1 -1
- package/dist/resources/assets.cjs +64 -46
- package/dist/resources/assets.cjs.map +1 -1
- package/dist/resources/assets.d.cts +23 -28
- package/dist/resources/assets.d.mts +23 -28
- package/dist/resources/assets.mjs +64 -46
- package/dist/resources/assets.mjs.map +1 -1
- package/dist/resources/component-folders.cjs +9 -9
- package/dist/resources/component-folders.cjs.map +1 -1
- package/dist/resources/component-folders.mjs +9 -9
- package/dist/resources/component-folders.mjs.map +1 -1
- package/dist/resources/components.cjs +28 -20
- package/dist/resources/components.cjs.map +1 -1
- package/dist/resources/components.d.cts +76 -0
- package/dist/resources/components.d.mts +76 -0
- package/dist/resources/components.mjs +28 -20
- package/dist/resources/components.mjs.map +1 -1
- package/dist/resources/datasource-entries.cjs +28 -34
- package/dist/resources/datasource-entries.cjs.map +1 -1
- package/dist/resources/datasource-entries.mjs +29 -35
- package/dist/resources/datasource-entries.mjs.map +1 -1
- package/dist/resources/datasources.cjs +27 -9
- package/dist/resources/datasources.cjs.map +1 -1
- package/dist/resources/datasources.mjs +27 -9
- package/dist/resources/datasources.mjs.map +1 -1
- package/dist/resources/experiments.cjs +299 -0
- package/dist/resources/experiments.cjs.map +1 -0
- package/dist/resources/experiments.mjs +299 -0
- package/dist/resources/experiments.mjs.map +1 -0
- package/dist/resources/internal-tags.cjs +7 -7
- package/dist/resources/internal-tags.cjs.map +1 -1
- package/dist/resources/internal-tags.mjs +7 -7
- package/dist/resources/internal-tags.mjs.map +1 -1
- package/dist/resources/presets.cjs +9 -9
- package/dist/resources/presets.cjs.map +1 -1
- package/dist/resources/presets.mjs +9 -9
- package/dist/resources/presets.mjs.map +1 -1
- package/dist/resources/shared.cjs +15 -0
- package/dist/resources/shared.cjs.map +1 -1
- package/dist/resources/shared.mjs +15 -1
- package/dist/resources/shared.mjs.map +1 -1
- package/dist/resources/spaces.cjs +8 -7
- package/dist/resources/spaces.cjs.map +1 -1
- package/dist/resources/spaces.d.cts +8 -0
- package/dist/resources/spaces.d.mts +7 -0
- package/dist/resources/spaces.mjs +8 -7
- package/dist/resources/spaces.mjs.map +1 -1
- package/dist/resources/stories.cjs +20 -16
- package/dist/resources/stories.cjs.map +1 -1
- package/dist/resources/stories.d.cts +30 -42
- package/dist/resources/stories.d.mts +30 -42
- package/dist/resources/stories.mjs +20 -16
- package/dist/resources/stories.mjs.map +1 -1
- package/dist/resources/users.cjs +3 -3
- package/dist/resources/users.cjs.map +1 -1
- package/dist/resources/users.mjs +3 -3
- package/dist/resources/users.mjs.map +1 -1
- package/dist/utils/query-serializer.cjs +54 -0
- package/dist/utils/query-serializer.cjs.map +1 -0
- package/dist/utils/query-serializer.mjs +54 -0
- package/dist/utils/query-serializer.mjs.map +1 -0
- package/dist/utils/rate-limit.cjs +15 -74
- package/dist/utils/rate-limit.cjs.map +1 -1
- package/dist/utils/rate-limit.d.cts +5 -6
- package/dist/utils/rate-limit.d.mts +5 -6
- package/dist/utils/rate-limit.mjs +15 -74
- package/dist/utils/rate-limit.mjs.map +1 -1
- package/package.json +13 -13
- package/playground/integration-tests/README.md +24 -0
- package/playground/integration-tests/eslint.config.js +5 -0
- package/playground/integration-tests/node_modules/.bin/eslint +16 -0
- package/playground/integration-tests/node_modules/.bin/tsc +16 -0
- package/playground/integration-tests/node_modules/.bin/tsserver +16 -0
- package/playground/integration-tests/node_modules/.bin/vitest +16 -0
- package/playground/integration-tests/package.json +24 -0
- package/{test → playground/integration-tests/test}/setup.e2e.ts +2 -2
- package/{test → playground/integration-tests/test}/specs/mapi-round-trip.spec.e2e.ts +31 -41
- package/playground/integration-tests/test/types/components.test-d.ts +74 -0
- package/playground/integration-tests/test/types/resources.test-d.ts +212 -0
- package/playground/integration-tests/test/types/stories.test-d.ts +273 -0
- package/{vitest.config.e2e.ts → playground/integration-tests/vitest.config.e2e.ts} +1 -2
- package/playground/integration-tests/vitest.config.ts +13 -0
- package/test/GUIDE.md +4 -4
- package/vitest.config.ts +2 -0
- package/dist/generated/asset_folders/client.gen.cjs +0 -10
- package/dist/generated/asset_folders/client.gen.cjs.map +0 -1
- package/dist/generated/asset_folders/client.gen.mjs +0 -10
- package/dist/generated/asset_folders/client.gen.mjs.map +0 -1
- package/dist/generated/asset_folders/sdk.gen.cjs +0 -99
- package/dist/generated/asset_folders/sdk.gen.cjs.map +0 -1
- package/dist/generated/asset_folders/sdk.gen.mjs +0 -95
- package/dist/generated/asset_folders/sdk.gen.mjs.map +0 -1
- package/dist/generated/asset_folders/types.gen.d.cts +0 -130
- package/dist/generated/asset_folders/types.gen.d.mts +0 -130
- package/dist/generated/assets/client.gen.cjs +0 -10
- package/dist/generated/assets/client.gen.cjs.map +0 -1
- package/dist/generated/assets/client.gen.mjs +0 -10
- package/dist/generated/assets/client.gen.mjs.map +0 -1
- package/dist/generated/assets/sdk.gen.cjs +0 -179
- package/dist/generated/assets/sdk.gen.cjs.map +0 -1
- package/dist/generated/assets/sdk.gen.mjs +0 -171
- package/dist/generated/assets/sdk.gen.mjs.map +0 -1
- package/dist/generated/assets/types.gen.d.cts +0 -343
- package/dist/generated/assets/types.gen.d.mts +0 -343
- package/dist/generated/component_folders/client.gen.cjs +0 -10
- package/dist/generated/component_folders/client.gen.cjs.map +0 -1
- package/dist/generated/component_folders/client.gen.mjs +0 -10
- package/dist/generated/component_folders/client.gen.mjs.map +0 -1
- package/dist/generated/component_folders/sdk.gen.cjs +0 -99
- package/dist/generated/component_folders/sdk.gen.cjs.map +0 -1
- package/dist/generated/component_folders/sdk.gen.mjs +0 -95
- package/dist/generated/component_folders/sdk.gen.mjs.map +0 -1
- package/dist/generated/component_folders/types.gen.d.cts +0 -102
- package/dist/generated/component_folders/types.gen.d.mts +0 -102
- package/dist/generated/components/client.gen.cjs +0 -10
- package/dist/generated/components/client.gen.cjs.map +0 -1
- package/dist/generated/components/client.gen.mjs +0 -10
- package/dist/generated/components/client.gen.mjs.map +0 -1
- package/dist/generated/components/sdk.gen.cjs +0 -171
- package/dist/generated/components/sdk.gen.cjs.map +0 -1
- package/dist/generated/components/sdk.gen.mjs +0 -163
- package/dist/generated/components/sdk.gen.mjs.map +0 -1
- 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 -89
- package/dist/generated/datasource_entries/sdk.gen.cjs.map +0 -1
- package/dist/generated/datasource_entries/sdk.gen.mjs +0 -85
- package/dist/generated/datasource_entries/sdk.gen.mjs.map +0 -1
- package/dist/generated/datasource_entries/types.gen.d.cts +0 -130
- package/dist/generated/datasource_entries/types.gen.d.mts +0 -130
- 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 -89
- package/dist/generated/datasources/sdk.gen.cjs.map +0 -1
- package/dist/generated/datasources/sdk.gen.mjs +0 -85
- package/dist/generated/datasources/sdk.gen.mjs.map +0 -1
- package/dist/generated/datasources/types.gen.d.cts +0 -165
- package/dist/generated/datasources/types.gen.d.mts +0 -165
- package/dist/generated/internal_tags/client.gen.cjs +0 -10
- package/dist/generated/internal_tags/client.gen.cjs.map +0 -1
- package/dist/generated/internal_tags/client.gen.mjs +0 -10
- package/dist/generated/internal_tags/client.gen.mjs.map +0 -1
- package/dist/generated/internal_tags/sdk.gen.cjs +0 -74
- package/dist/generated/internal_tags/sdk.gen.cjs.map +0 -1
- package/dist/generated/internal_tags/sdk.gen.mjs +0 -71
- package/dist/generated/internal_tags/sdk.gen.mjs.map +0 -1
- package/dist/generated/internal_tags/types.gen.d.cts +0 -102
- package/dist/generated/internal_tags/types.gen.d.mts +0 -102
- package/dist/generated/presets/client.gen.cjs +0 -10
- package/dist/generated/presets/client.gen.cjs.map +0 -1
- package/dist/generated/presets/client.gen.mjs +0 -10
- package/dist/generated/presets/client.gen.mjs.map +0 -1
- package/dist/generated/presets/sdk.gen.cjs +0 -99
- package/dist/generated/presets/sdk.gen.cjs.map +0 -1
- package/dist/generated/presets/sdk.gen.mjs +0 -95
- package/dist/generated/presets/sdk.gen.mjs.map +0 -1
- package/dist/generated/presets/types.gen.d.cts +0 -171
- package/dist/generated/presets/types.gen.d.mts +0 -171
- 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 -99
- package/dist/generated/spaces/sdk.gen.cjs.map +0 -1
- package/dist/generated/spaces/sdk.gen.mjs +0 -95
- package/dist/generated/spaces/sdk.gen.mjs.map +0 -1
- package/dist/generated/spaces/types.gen.d.cts +0 -504
- package/dist/generated/spaces/types.gen.d.mts +0 -504
- 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 -138
- package/dist/generated/stories/sdk.gen.cjs.map +0 -1
- package/dist/generated/stories/sdk.gen.mjs +0 -131
- package/dist/generated/stories/sdk.gen.mjs.map +0 -1
- package/dist/generated/stories/types.gen.d.cts +0 -1314
- package/dist/generated/stories/types.gen.d.mts +0 -1314
- package/dist/generated/users/client.gen.cjs +0 -10
- package/dist/generated/users/client.gen.cjs.map +0 -1
- package/dist/generated/users/client.gen.mjs +0 -10
- package/dist/generated/users/client.gen.mjs.map +0 -1
- package/dist/generated/users/sdk.gen.cjs +0 -44
- package/dist/generated/users/sdk.gen.cjs.map +0 -1
- package/dist/generated/users/sdk.gen.mjs +0 -43
- package/dist/generated/users/sdk.gen.mjs.map +0 -1
- package/dist/generated/users/types.gen.d.cts +0 -249
- package/dist/generated/users/types.gen.d.mts +0 -249
- /package/dist/generated/{shared → mapi}/client/client.gen.d.mts +0 -0
- /package/dist/generated/{shared → mapi}/client/index.cjs +0 -0
- /package/dist/generated/{shared → mapi}/client/index.d.mts +0 -0
- /package/dist/generated/{shared → mapi}/client/index.mjs +0 -0
package/dist/client.mjs
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { createConfig } from "./generated/
|
|
2
|
-
import { createClient } from "./generated/
|
|
3
|
-
import "./generated/
|
|
1
|
+
import { createConfig } from "./generated/mapi/client/utils.gen.mjs";
|
|
2
|
+
import { createClient } from "./generated/mapi/client/client.gen.mjs";
|
|
3
|
+
import "./generated/mapi/client/index.mjs";
|
|
4
4
|
import { ClientError } from "./error.mjs";
|
|
5
5
|
import { createThrottleManager } from "./utils/rate-limit.mjs";
|
|
6
|
+
import { querySerializer } from "./utils/query-serializer.mjs";
|
|
6
7
|
import { createAssetFoldersResource } from "./resources/asset-folders.mjs";
|
|
7
8
|
import { createAssetsResource } from "./resources/assets.mjs";
|
|
8
9
|
import { createComponentFoldersResource } from "./resources/component-folders.mjs";
|
|
9
10
|
import { createComponentsResource } from "./resources/components.mjs";
|
|
10
11
|
import { createDatasourceEntriesResource } from "./resources/datasource-entries.mjs";
|
|
11
12
|
import { createDatasourcesResource } from "./resources/datasources.mjs";
|
|
13
|
+
import { createExperimentsResource } from "./resources/experiments.mjs";
|
|
12
14
|
import { createInternalTagsResource } from "./resources/internal-tags.mjs";
|
|
13
15
|
import { createPresetsResource } from "./resources/presets.mjs";
|
|
14
16
|
import { createSpacesResource } from "./resources/spaces.mjs";
|
|
@@ -45,6 +47,7 @@ const createManagementApiClientBase = (config) => {
|
|
|
45
47
|
...authHeader ? { Authorization: authHeader } : {},
|
|
46
48
|
...headers
|
|
47
49
|
},
|
|
50
|
+
querySerializer,
|
|
48
51
|
throwOnError,
|
|
49
52
|
kyOptions: {
|
|
50
53
|
throwHttpErrors: true,
|
|
@@ -58,11 +61,7 @@ const createManagementApiClientBase = (config) => {
|
|
|
58
61
|
data: error
|
|
59
62
|
}));
|
|
60
63
|
function wrapRequest(fn, _throwOnError) {
|
|
61
|
-
return throttleManager.execute(
|
|
62
|
-
const result = await fn();
|
|
63
|
-
throttleManager.adaptToResponse(result.response);
|
|
64
|
-
return result;
|
|
65
|
-
});
|
|
64
|
+
return throttleManager.execute(() => fn());
|
|
66
65
|
}
|
|
67
66
|
const deps = {
|
|
68
67
|
client,
|
|
@@ -154,9 +153,9 @@ function buildResources(deps, client) {
|
|
|
154
153
|
assetFolders: createAssetFoldersResource(deps),
|
|
155
154
|
assets: createAssetsResource(deps),
|
|
156
155
|
componentFolders: createComponentFoldersResource(deps),
|
|
157
|
-
components: createComponentsResource(deps),
|
|
158
156
|
datasourceEntries: createDatasourceEntriesResource(deps),
|
|
159
157
|
datasources: createDatasourcesResource(deps),
|
|
158
|
+
experiments: createExperimentsResource(deps),
|
|
160
159
|
delete: httpDelete,
|
|
161
160
|
get: httpGet,
|
|
162
161
|
patch: httpPatch,
|
|
@@ -176,6 +175,7 @@ const createManagementApiClient = (config) => {
|
|
|
176
175
|
const { deps, resources } = createManagementApiClientBase(config);
|
|
177
176
|
const self = {
|
|
178
177
|
...resources,
|
|
178
|
+
components: createComponentsResource(deps),
|
|
179
179
|
stories: createStoriesResource(deps),
|
|
180
180
|
withTypes() {
|
|
181
181
|
return self;
|
package/dist/client.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.mjs","names":[],"sources":["../src/client.ts"],"sourcesContent":["import type { Client, ResolvedRequestOptions, RetryOptions } from './generated/shared/client';\nimport type { Middleware } from './generated/shared/client/utils.gen';\nimport { createClient, createConfig } from './generated/shared/client';\nimport { getManagementBaseUrl } from '@storyblok/region-helper';\nimport type { Region } from '@storyblok/region-helper';\nimport type { Block as Component } from '@storyblok/schema';\nimport { ClientError } from './error';\nimport type { RateLimitConfig } from './utils/rate-limit';\nimport { createThrottleManager } from './utils/rate-limit';\nimport { createAssetFoldersResource } from './resources/asset-folders';\nimport { createAssetsResource } from './resources/assets';\nimport { createComponentFoldersResource } from './resources/component-folders';\nimport { createComponentsResource } from './resources/components';\nimport { createDatasourceEntriesResource } from './resources/datasource-entries';\nimport { createDatasourcesResource } from './resources/datasources';\nimport { createInternalTagsResource } from './resources/internal-tags';\nimport { createPresetsResource } from './resources/presets';\nimport { createSpacesResource } from './resources/spaces';\nimport { createStoriesResource } from './resources/stories';\nimport { createUsersResource } from './resources/users';\n\n// ---------------------------------------------------------------------------\n// Client types (co-located with runtime)\n// ---------------------------------------------------------------------------\n\nexport type ApiResponse<T, ThrowOnError extends boolean = false> =\n ThrowOnError extends true\n ? { data: T; error?: never; response: Response; request: Request }\n : | { data: T; error: undefined; response: Response; request: Request }\n | { data: undefined; error: ClientError; response: Response; request: Request };\n\nexport interface RequestConfigOverrides {\n throwOnError?: boolean;\n}\n\n/**\n * Arbitrary options forwarded to the underlying `fetch()` call.\n *\n * Standard `RequestInit` properties (`cache`, `credentials`, `mode`, …) and\n * non-standard, vendor-specific properties (Next.js `next`, Cloudflare `cf`, …)\n * are both supported.\n *\n * @example\n * ```ts\n * client.stories.get(123, {\n * fetchOptions: {\n * cache: 'no-store',\n * next: { revalidate: 60 },\n * },\n * })\n * ```\n */\nexport type FetchOptions = Record<string, unknown>;\n\nexport interface HttpRequestOptions {\n query?: Record<string, unknown>;\n body?: unknown;\n headers?: Record<string, string>;\n signal?: AbortSignal;\n throwOnError?: RequestConfigOverrides['throwOnError'];\n fetchOptions?: FetchOptions;\n}\n\n/**\n * Dependencies injected into every resource factory.\n */\nexport interface MapiResourceDeps<DefaultThrowOnError extends boolean = false> {\n client: Client;\n spaceId?: number;\n wrapRequest: <TData, ThrowOnError extends boolean = DefaultThrowOnError>(fn: () => Promise<unknown>, throwOnError?: ThrowOnError) => Promise<ApiResponse<TData, ThrowOnError>>;\n}\n\ntype TokenConfig =\n | {\n /** Personal access token for authentication. */\n personalAccessToken: string;\n oauthToken?: never;\n }\n | {\n personalAccessToken?: never;\n /** OAuth bearer token for authentication. */\n oauthToken: string;\n }\n | {\n personalAccessToken?: undefined;\n oauthToken?: undefined;\n };\n\nexport type ManagementApiClientConfig<\n ThrowOnError extends boolean = false,\n> = TokenConfig & {\n /**\n * The Storyblok space ID. Used as the default for space-scoped endpoints.\n * You can also override it per request via `path.space_id`.\n */\n spaceId?: number;\n /**\n * Storyblok region. Determines the base URL.\n * @default 'eu'\n */\n region?: Region;\n /**\n * Override the base URL entirely (e.g. for testing).\n */\n baseUrl?: string;\n /**\n * Additional request headers.\n */\n headers?: Record<string, string>;\n /**\n * Throw on HTTP errors instead of returning them.\n * @default false\n */\n throwOnError?: ThrowOnError;\n /**\n * Retry configuration for failed requests.\n */\n retry?: RetryOptions;\n /**\n * Request timeout in milliseconds.\n * @default 30_000\n */\n timeout?: number;\n /**\n * Preventive rate limiting to avoid hitting the Storyblok Management API rate limits.\n *\n * - `undefined` (default): single bucket at maxConcurrency: 6.\n * - `number`: fixed max concurrent requests per second.\n * - `{ maxConcurrency?: number; adaptToServerHeaders?: boolean }`: full config.\n * - `false`: disable rate limiting entirely.\n */\n rateLimit?: RateLimitConfig | number | false;\n};\n\n// ---------------------------------------------------------------------------\n// Client factory\n// ---------------------------------------------------------------------------\n\nfunction getAuthorizationHeader(config: ManagementApiClientConfig<boolean>): string | undefined {\n if (config.personalAccessToken) {\n return config.personalAccessToken;\n }\n if (config.oauthToken) {\n return config.oauthToken.startsWith('Bearer ')\n ? config.oauthToken\n : `Bearer ${config.oauthToken}`;\n }\n return undefined;\n}\n\nconst createManagementApiClientBase = <DefaultThrowOnError extends boolean = false>(\n config: ManagementApiClientConfig<DefaultThrowOnError>,\n): {\n deps: MapiResourceDeps<DefaultThrowOnError>;\n resources: Omit<ReturnType<typeof buildResources<DefaultThrowOnError>>, never>;\n} => {\n const {\n spaceId,\n region = 'eu',\n baseUrl,\n headers = {},\n throwOnError = false,\n retry = {\n limit: 12,\n backoffLimit: 20_000,\n methods: ['get', 'post', 'put', 'delete', 'patch', 'head', 'options', 'trace'],\n statusCodes: [429],\n },\n timeout = 30_000,\n rateLimit,\n } = config;\n\n const throttleManager = createThrottleManager(rateLimit ?? {});\n const authHeader = getAuthorizationHeader(config);\n\n const client: Client = createClient(\n createConfig({\n baseUrl: baseUrl || getManagementBaseUrl(region),\n headers: {\n ...(authHeader ? { Authorization: authHeader } : {}),\n ...headers,\n },\n throwOnError,\n kyOptions: {\n throwHttpErrors: true,\n timeout,\n retry,\n },\n }),\n );\n\n client.interceptors.error.use(\n (error: unknown, response: Response) =>\n new ClientError(response?.statusText || 'API request failed', {\n status: response?.status ?? 0,\n statusText: response?.statusText ?? '',\n data: error,\n }),\n );\n\n function wrapRequest<TData, CurrentThrowOnError extends boolean = DefaultThrowOnError>(\n fn: () => Promise<unknown>,\n _throwOnError?: CurrentThrowOnError,\n ): Promise<ApiResponse<TData, CurrentThrowOnError>> {\n return throttleManager.execute(async () => {\n const result = await fn() as ApiResponse<TData, CurrentThrowOnError>;\n throttleManager.adaptToResponse((result as { response: Response }).response);\n return result;\n }) as Promise<ApiResponse<TData, CurrentThrowOnError>>;\n }\n\n const deps: MapiResourceDeps<DefaultThrowOnError> = { client, spaceId, wrapRequest };\n return { deps, resources: buildResources(deps, client) };\n};\n\nfunction buildResources<DefaultThrowOnError extends boolean = false>(\n deps: MapiResourceDeps<DefaultThrowOnError>,\n client: Client,\n) {\n /**\n * Escape hatch: send a GET request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpGet = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.get({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a POST request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPost = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.post({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PUT request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPut = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.put({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PATCH request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPatch = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.patch({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a DELETE request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpDelete = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.delete({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n return {\n assetFolders: createAssetFoldersResource(deps),\n assets: createAssetsResource(deps),\n componentFolders: createComponentFoldersResource(deps),\n components: createComponentsResource(deps),\n datasourceEntries: createDatasourceEntriesResource(deps),\n datasources: createDatasourcesResource(deps),\n delete: httpDelete,\n get: httpGet,\n patch: httpPatch,\n interceptors: client.interceptors as Middleware<Request, Response, unknown, ResolvedRequestOptions>,\n internalTags: createInternalTagsResource(deps),\n post: httpPost,\n presets: createPresetsResource(deps),\n put: httpPut,\n spaces: createSpacesResource(deps),\n users: createUsersResource<DefaultThrowOnError>({ client, wrapRequest: deps.wrapRequest }),\n };\n}\n\ntype StoryblokTypesConfig = { components: Component } | { blocks: Component };\n\ntype ResolveComponents<T extends StoryblokTypesConfig> =\n T extends { components: infer C extends Component } ? C\n : T extends { blocks: infer B extends Component } ? B\n : never;\n\n/**\n * The return type of `createManagementApiClient`, parameterised by `TComponents` so that\n * `.stories` methods can narrow story content types without touching the runtime object.\n */\nexport type ManagementApiClient<\n TComponents extends Component = Component,\n DefaultThrowOnError extends boolean = false,\n> = ReturnType<typeof buildResources<DefaultThrowOnError>> & {\n stories: ReturnType<typeof createStoriesResource<TComponents, DefaultThrowOnError>>;\n /**\n * Returns the same client instance cast to a version that narrows story content\n * to the provided component types. No runtime cost — type parameter is erased.\n *\n * Accepts either `{ components: ... }` or `{ blocks: ... }` — the latter matches the\n * `Schema` type produced by `@storyblok/schema`'s `InferSchema`.\n *\n * @example\n * ```ts\n * import type { Schema } from './schema';\n *\n * const client = createManagementApiClient({ personalAccessToken: '...' })\n * .withTypes<Schema>();\n * ```\n */\n withTypes: <T extends StoryblokTypesConfig>() => ManagementApiClient<ResolveComponents<T>, DefaultThrowOnError>;\n};\n\nexport const createManagementApiClient = <\n DefaultThrowOnError extends boolean = false,\n>(\n config: ManagementApiClientConfig<DefaultThrowOnError>,\n): ManagementApiClient<Component, DefaultThrowOnError> => {\n const { deps, resources } = createManagementApiClientBase(config);\n const self: ManagementApiClient<Component, DefaultThrowOnError> = {\n ...resources,\n stories: createStoriesResource<Component, DefaultThrowOnError>(deps),\n withTypes<T extends StoryblokTypesConfig>() {\n return self as unknown as ManagementApiClient<ResolveComponents<T>, DefaultThrowOnError>;\n },\n };\n return self;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.mjs","names":[],"sources":["../src/client.ts"],"sourcesContent":["import type { Client, ResolvedRequestOptions, RetryOptions } from './generated/mapi/client';\nimport type { Middleware } from './generated/mapi/client/utils.gen';\nimport { createClient, createConfig } from './generated/mapi/client';\nimport { getManagementBaseUrl } from '@storyblok/region-helper';\nimport type { Region } from '@storyblok/region-helper';\nimport type { Block } from './generated/types/block';\nimport { ClientError } from './error';\nimport type { RateLimitConfig } from './utils/rate-limit';\nimport { createThrottleManager } from './utils/rate-limit';\nimport { querySerializer } from './utils/query-serializer';\nimport { createAssetFoldersResource } from './resources/asset-folders';\nimport { createAssetsResource } from './resources/assets';\nimport { createComponentFoldersResource } from './resources/component-folders';\nimport { createComponentsResource } from './resources/components';\nimport { createDatasourceEntriesResource } from './resources/datasource-entries';\nimport { createDatasourcesResource } from './resources/datasources';\nimport { createExperimentsResource } from './resources/experiments';\nimport { createInternalTagsResource } from './resources/internal-tags';\nimport { createPresetsResource } from './resources/presets';\nimport { createSpacesResource } from './resources/spaces';\nimport { createStoriesResource } from './resources/stories';\nimport { createUsersResource } from './resources/users';\n\n// ---------------------------------------------------------------------------\n// Client types (co-located with runtime)\n// ---------------------------------------------------------------------------\n\nexport type ApiResponse<T, ThrowOnError extends boolean = false> =\n ThrowOnError extends true\n ? { data: T; error?: never; response: Response; request: Request }\n : | { data: T; error: undefined; response: Response; request: Request }\n | { data: undefined; error: ClientError; response: Response; request: Request };\n\nexport interface RequestConfigOverrides {\n throwOnError?: boolean;\n}\n\n/**\n * Arbitrary options forwarded to the underlying `fetch()` call.\n *\n * Standard `RequestInit` properties (`cache`, `credentials`, `mode`, …) and\n * non-standard, vendor-specific properties (Next.js `next`, Cloudflare `cf`, …)\n * are both supported.\n *\n * @example\n * ```ts\n * client.stories.get(123, {\n * fetchOptions: {\n * cache: 'no-store',\n * next: { revalidate: 60 },\n * },\n * })\n * ```\n */\nexport type FetchOptions = Record<string, unknown>;\n\nexport interface HttpRequestOptions {\n query?: Record<string, unknown>;\n body?: unknown;\n headers?: Record<string, string>;\n signal?: AbortSignal;\n throwOnError?: RequestConfigOverrides['throwOnError'];\n fetchOptions?: FetchOptions;\n}\n\n/**\n * Dependencies injected into every resource factory.\n */\nexport interface MapiResourceDeps<DefaultThrowOnError extends boolean = false> {\n client: Client;\n spaceId?: number;\n wrapRequest: <TData, ThrowOnError extends boolean = DefaultThrowOnError>(fn: () => Promise<unknown>, throwOnError?: ThrowOnError) => Promise<ApiResponse<TData, ThrowOnError>>;\n}\n\ntype TokenConfig =\n | {\n /** Personal access token for authentication. */\n personalAccessToken: string;\n oauthToken?: never;\n }\n | {\n personalAccessToken?: never;\n /** OAuth bearer token for authentication. */\n oauthToken: string;\n }\n | {\n personalAccessToken?: undefined;\n oauthToken?: undefined;\n };\n\nexport type ManagementApiClientConfig<\n ThrowOnError extends boolean = false,\n> = TokenConfig & {\n /**\n * The Storyblok space ID. Used as the default for space-scoped endpoints.\n * You can also override it per request via `path.space_id`.\n */\n spaceId?: number;\n /**\n * Storyblok region. Determines the base URL.\n * @default 'eu'\n */\n region?: Region;\n /**\n * Override the base URL entirely (e.g. for testing).\n */\n baseUrl?: string;\n /**\n * Additional request headers.\n */\n headers?: Record<string, string>;\n /**\n * Throw on HTTP errors instead of returning them.\n * @default false\n */\n throwOnError?: ThrowOnError;\n /**\n * Retry configuration for failed requests.\n */\n retry?: RetryOptions;\n /**\n * Request timeout in milliseconds.\n * @default 30_000\n */\n timeout?: number;\n /**\n * Preventive rate limiting to avoid hitting the Storyblok Management API rate limits.\n *\n * - `undefined` (default): single bucket at maxConcurrency: 6.\n * - `number`: fixed max concurrent requests per second.\n * - `{ maxConcurrency?: number; adaptToServerHeaders?: boolean }`: full config.\n * - `false`: disable rate limiting entirely.\n */\n rateLimit?: RateLimitConfig | number | false;\n};\n\n// ---------------------------------------------------------------------------\n// Client factory\n// ---------------------------------------------------------------------------\n\nfunction getAuthorizationHeader(config: ManagementApiClientConfig<boolean>): string | undefined {\n if (config.personalAccessToken) {\n return config.personalAccessToken;\n }\n if (config.oauthToken) {\n return config.oauthToken.startsWith('Bearer ')\n ? config.oauthToken\n : `Bearer ${config.oauthToken}`;\n }\n return undefined;\n}\n\nconst createManagementApiClientBase = <DefaultThrowOnError extends boolean = false>(\n config: ManagementApiClientConfig<DefaultThrowOnError>,\n): {\n deps: MapiResourceDeps<DefaultThrowOnError>;\n resources: Omit<ReturnType<typeof buildResources<DefaultThrowOnError>>, never>;\n} => {\n const {\n spaceId,\n region = 'eu',\n baseUrl,\n headers = {},\n throwOnError = false,\n retry = {\n limit: 12,\n backoffLimit: 20_000,\n methods: ['get', 'post', 'put', 'delete', 'patch', 'head', 'options', 'trace'],\n statusCodes: [429],\n },\n timeout = 30_000,\n rateLimit,\n } = config;\n\n const throttleManager = createThrottleManager(rateLimit ?? {});\n const authHeader = getAuthorizationHeader(config);\n\n const client: Client = createClient(\n createConfig({\n baseUrl: baseUrl || getManagementBaseUrl(region),\n headers: {\n ...(authHeader ? { Authorization: authHeader } : {}),\n ...headers,\n },\n // Default serializer throws on nested objects; MAPI needs `filter_query`\n // serialized as a nested hash (`filter_query[field][op]=value`).\n querySerializer,\n throwOnError,\n kyOptions: {\n throwHttpErrors: true,\n timeout,\n retry,\n },\n }),\n );\n\n client.interceptors.error.use(\n (error: unknown, response: Response) =>\n new ClientError(response?.statusText || 'API request failed', {\n status: response?.status ?? 0,\n statusText: response?.statusText ?? '',\n data: error,\n }),\n );\n\n function wrapRequest<TData, CurrentThrowOnError extends boolean = DefaultThrowOnError>(\n fn: () => Promise<unknown>,\n _throwOnError?: CurrentThrowOnError,\n ): Promise<ApiResponse<TData, CurrentThrowOnError>> {\n return throttleManager.execute(\n () => fn() as Promise<ApiResponse<TData, CurrentThrowOnError>>,\n );\n }\n\n const deps: MapiResourceDeps<DefaultThrowOnError> = { client, spaceId, wrapRequest };\n return { deps, resources: buildResources(deps, client) };\n};\n\nfunction buildResources<DefaultThrowOnError extends boolean = false>(\n deps: MapiResourceDeps<DefaultThrowOnError>,\n client: Client,\n) {\n /**\n * Escape hatch: send a GET request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpGet = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.get({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a POST request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPost = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.post({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PUT request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPut = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.put({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a PATCH request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpPatch = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.patch({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n /**\n * Escape hatch: send a DELETE request to any MAPI endpoint not yet wrapped\n * in a dedicated resource method.\n */\n const httpDelete = <TData = unknown>(\n path: string,\n options: HttpRequestOptions = {},\n ): Promise<ApiResponse<TData, DefaultThrowOnError>> => {\n const { fetchOptions, ...rest } = options;\n return deps.wrapRequest<TData>(() =>\n client.delete({ url: path, ...rest, ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }),\n );\n };\n\n return {\n assetFolders: createAssetFoldersResource(deps),\n assets: createAssetsResource(deps),\n componentFolders: createComponentFoldersResource(deps),\n datasourceEntries: createDatasourceEntriesResource(deps),\n datasources: createDatasourcesResource(deps),\n experiments: createExperimentsResource(deps),\n delete: httpDelete,\n get: httpGet,\n patch: httpPatch,\n interceptors: client.interceptors as Middleware<Request, Response, unknown, ResolvedRequestOptions>,\n internalTags: createInternalTagsResource(deps),\n post: httpPost,\n presets: createPresetsResource(deps),\n put: httpPut,\n spaces: createSpacesResource(deps),\n users: createUsersResource<DefaultThrowOnError>({ client, wrapRequest: deps.wrapRequest }),\n };\n}\n\ntype StoryblokTypesConfig = { components: Block } | { blocks: Block };\n\ntype ResolveComponents<T extends StoryblokTypesConfig> =\n T extends { components: infer C extends Block } ? C\n : T extends { blocks: infer B extends Block } ? B\n : never;\n\n/**\n * The return type of `createManagementApiClient`, parameterised by `TBlocks` so that\n * `.stories` methods can narrow story content types without touching the runtime object.\n * Component *definitions* (`.components`) are wire-shaped and not narrowed by `TBlocks`.\n */\nexport type ManagementApiClient<\n TBlocks extends Block = Block,\n DefaultThrowOnError extends boolean = false,\n> = ReturnType<typeof buildResources<DefaultThrowOnError>> & {\n components: ReturnType<typeof createComponentsResource<DefaultThrowOnError>>;\n stories: ReturnType<typeof createStoriesResource<TBlocks, DefaultThrowOnError>>;\n /**\n * Returns the same client instance cast to a version that narrows story content\n * to the provided component types. No runtime cost — type parameter is erased.\n *\n * Accepts either `{ components: ... }` or `{ blocks: ... }` — the latter matches the\n * `Schema` type produced by `@storyblok/schema`'s `InferSchema`.\n *\n * @example\n * ```ts\n * import type { Schema } from './schema';\n *\n * const client = createManagementApiClient({ personalAccessToken: '...' })\n * .withTypes<Schema>();\n * ```\n */\n withTypes: <T extends StoryblokTypesConfig>() => ManagementApiClient<ResolveComponents<T>, DefaultThrowOnError>;\n};\n\nexport const createManagementApiClient = <\n DefaultThrowOnError extends boolean = false,\n>(\n config: ManagementApiClientConfig<DefaultThrowOnError>,\n): ManagementApiClient<Block, DefaultThrowOnError> => {\n const { deps, resources } = createManagementApiClientBase(config);\n const self: ManagementApiClient<Block, DefaultThrowOnError> = {\n ...resources,\n components: createComponentsResource<DefaultThrowOnError>(deps),\n stories: createStoriesResource<Block, DefaultThrowOnError>(deps),\n withTypes<T extends StoryblokTypesConfig>() {\n return self as unknown as ManagementApiClient<ResolveComponents<T>, DefaultThrowOnError>;\n },\n };\n return self;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA4IA,SAAS,uBAAuB,QAAgE;AAC9F,KAAI,OAAO,oBACT,QAAO,OAAO;AAEhB,KAAI,OAAO,WACT,QAAO,OAAO,WAAW,WAAW,UAAU,GAC1C,OAAO,aACP,UAAU,OAAO;;AAKzB,MAAM,iCACJ,WAIG;CACH,MAAM,EACJ,SACA,SAAS,MACT,SACA,UAAU,EAAE,EACZ,eAAe,OACf,QAAQ;EACN,OAAO;EACP,cAAc;EACd,SAAS;GAAC;GAAO;GAAQ;GAAO;GAAU;GAAS;GAAQ;GAAW;GAAQ;EAC9E,aAAa,CAAC,IAAI;EACnB,EACD,UAAU,KACV,cACE;CAEJ,MAAM,kBAAkB,sBAAsB,aAAa,EAAE,CAAC;CAC9D,MAAM,aAAa,uBAAuB,OAAO;CAEjD,MAAM,SAAiB,aACrB,aAAa;EACX,SAAS,WAAW,qBAAqB,OAAO;EAChD,SAAS;GACP,GAAI,aAAa,EAAE,eAAe,YAAY,GAAG,EAAE;GACnD,GAAG;GACJ;EAGD;EACA;EACA,WAAW;GACT,iBAAiB;GACjB;GACA;GACD;EACF,CAAC,CACH;AAED,QAAO,aAAa,MAAM,KACvB,OAAgB,aACf,IAAI,YAAY,UAAU,cAAc,sBAAsB;EAC5D,QAAQ,UAAU,UAAU;EAC5B,YAAY,UAAU,cAAc;EACpC,MAAM;EACP,CAAC,CACL;CAED,SAAS,YACP,IACA,eACkD;AAClD,SAAO,gBAAgB,cACf,IAAI,CACX;;CAGH,MAAM,OAA8C;EAAE;EAAQ;EAAS;EAAa;AACpF,QAAO;EAAE;EAAM,WAAW,eAAe,MAAM,OAAO;EAAE;;AAG1D,SAAS,eACP,MACA,QACA;;;;;CAKA,MAAM,WACJ,MACA,UAA8B,EAAE,KACqB;EACrD,MAAM,EAAE,cAAc,GAAG,SAAS;AAClC,SAAO,KAAK,kBACV,OAAO,IAAI;GAAE,KAAK;GAAM,GAAG;GAAM,GAAI,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAAG,CAAC,CACjI;;;;;;CAOH,MAAM,YACJ,MACA,UAA8B,EAAE,KACqB;EACrD,MAAM,EAAE,cAAc,GAAG,SAAS;AAClC,SAAO,KAAK,kBACV,OAAO,KAAK;GAAE,KAAK;GAAM,GAAG;GAAM,GAAI,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAAG,CAAC,CAClI;;;;;;CAOH,MAAM,WACJ,MACA,UAA8B,EAAE,KACqB;EACrD,MAAM,EAAE,cAAc,GAAG,SAAS;AAClC,SAAO,KAAK,kBACV,OAAO,IAAI;GAAE,KAAK;GAAM,GAAG;GAAM,GAAI,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAAG,CAAC,CACjI;;;;;;CAOH,MAAM,aACJ,MACA,UAA8B,EAAE,KACqB;EACrD,MAAM,EAAE,cAAc,GAAG,SAAS;AAClC,SAAO,KAAK,kBACV,OAAO,MAAM;GAAE,KAAK;GAAM,GAAG;GAAM,GAAI,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAAG,CAAC,CACnI;;;;;;CAOH,MAAM,cACJ,MACA,UAA8B,EAAE,KACqB;EACrD,MAAM,EAAE,cAAc,GAAG,SAAS;AAClC,SAAO,KAAK,kBACV,OAAO,OAAO;GAAE,KAAK;GAAM,GAAG;GAAM,GAAI,eAAe,EAAE,WAAW;IAAE,GAAG,OAAO,WAAW,CAAC;IAAW,GAAG;IAAc,EAAE,GAAG,EAAE;GAAG,CAAC,CACpI;;AAGH,QAAO;EACL,cAAc,2BAA2B,KAAK;EAC9C,QAAQ,qBAAqB,KAAK;EAClC,kBAAkB,+BAA+B,KAAK;EACtD,mBAAmB,gCAAgC,KAAK;EACxD,aAAa,0BAA0B,KAAK;EAC5C,aAAa,0BAA0B,KAAK;EAC5C,QAAQ;EACR,KAAK;EACL,OAAO;EACP,cAAc,OAAO;EACrB,cAAc,2BAA2B,KAAK;EAC9C,MAAM;EACN,SAAS,sBAAsB,KAAK;EACpC,KAAK;EACL,QAAQ,qBAAqB,KAAK;EAClC,OAAO,oBAAyC;GAAE;GAAQ,aAAa,KAAK;GAAa,CAAC;EAC3F;;AAuCH,MAAa,6BAGX,WACoD;CACpD,MAAM,EAAE,MAAM,cAAc,8BAA8B,OAAO;CACjE,MAAM,OAAwD;EAC5D,GAAG;EACH,YAAY,yBAA8C,KAAK;EAC/D,SAAS,sBAAkD,KAAK;EAChE,YAA4C;AAC1C,UAAO;;EAEV;AACD,QAAO"}
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
//#region src/generated/mapi/_internal.gen.d.ts
|
|
2
|
+
type MapiStory = {
|
|
3
|
+
name: string;
|
|
4
|
+
/**
|
|
5
|
+
* ID of parent space if this is a child space.
|
|
6
|
+
*/
|
|
7
|
+
parent_id: number | null;
|
|
8
|
+
group_id: string;
|
|
9
|
+
alternates: Array<Alternate>;
|
|
10
|
+
/**
|
|
11
|
+
* Creation timestamp (format is ISO 8601 standard in UTC).
|
|
12
|
+
*/
|
|
13
|
+
readonly created_at: string;
|
|
14
|
+
deleted_at: string | null;
|
|
15
|
+
sort_by_date: string | null;
|
|
16
|
+
tag_list: Array<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Latest update timestamp (format is ISO 8601 standard in UTC).
|
|
19
|
+
*/
|
|
20
|
+
updated_at: string;
|
|
21
|
+
/**
|
|
22
|
+
* Latest publication timestamp (format is ISO 8601 standard in UTC).
|
|
23
|
+
*/
|
|
24
|
+
published_at: string | null;
|
|
25
|
+
readonly id: number;
|
|
26
|
+
/**
|
|
27
|
+
* Unique UUID identifier for the discussion.
|
|
28
|
+
*/
|
|
29
|
+
readonly uuid: string;
|
|
30
|
+
/**
|
|
31
|
+
* true if the instance constitutes a folder.
|
|
32
|
+
*/
|
|
33
|
+
is_folder: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Dynamic component data rendered by Storyblok, structure varies by component
|
|
36
|
+
*/
|
|
37
|
+
content: {
|
|
38
|
+
_uid?: string;
|
|
39
|
+
component?: string;
|
|
40
|
+
[key: string]: unknown | string | undefined;
|
|
41
|
+
};
|
|
42
|
+
published: boolean | null;
|
|
43
|
+
/**
|
|
44
|
+
* URL-friendly identifier for the app category.
|
|
45
|
+
*/
|
|
46
|
+
slug: string;
|
|
47
|
+
path: string | null;
|
|
48
|
+
full_slug: string;
|
|
49
|
+
/**
|
|
50
|
+
* The default root
|
|
51
|
+
*/
|
|
52
|
+
default_root: string | null;
|
|
53
|
+
disble_fe_editor: boolean;
|
|
54
|
+
disable_fe_editor: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Parent story object (for nested stories).
|
|
57
|
+
*/
|
|
58
|
+
parent: {
|
|
59
|
+
id?: number;
|
|
60
|
+
uuid?: string;
|
|
61
|
+
name?: string;
|
|
62
|
+
slug?: string;
|
|
63
|
+
disble_fe_editor?: boolean;
|
|
64
|
+
} | null;
|
|
65
|
+
/**
|
|
66
|
+
* true if the story is defined as the startpage for its parent folder.
|
|
67
|
+
*/
|
|
68
|
+
is_startpage: boolean;
|
|
69
|
+
unpublished_changes: boolean | null;
|
|
70
|
+
/**
|
|
71
|
+
* Custom metadata for the story
|
|
72
|
+
*/
|
|
73
|
+
meta_data: {
|
|
74
|
+
[key: string]: unknown;
|
|
75
|
+
} | null;
|
|
76
|
+
/**
|
|
77
|
+
* Base version ID(common ancestor) for the story, used for three-way merge operations)
|
|
78
|
+
*/
|
|
79
|
+
base_version_id?: number | null;
|
|
80
|
+
/**
|
|
81
|
+
* Main version ID, current version in main
|
|
82
|
+
*/
|
|
83
|
+
main_version_id?: number | null;
|
|
84
|
+
/**
|
|
85
|
+
* Current version ID, current version in release or main
|
|
86
|
+
*/
|
|
87
|
+
current_version_id?: number | null;
|
|
88
|
+
imported_at: string | null;
|
|
89
|
+
/**
|
|
90
|
+
* Preview token for the story.
|
|
91
|
+
*/
|
|
92
|
+
preview_token: {
|
|
93
|
+
token: string;
|
|
94
|
+
timestamp: string;
|
|
95
|
+
};
|
|
96
|
+
pinned: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* List of breadcrumbs for the story.
|
|
99
|
+
*/
|
|
100
|
+
breadcrumbs: Array<Breadcrumb>;
|
|
101
|
+
publish_at: string | null;
|
|
102
|
+
expire_at: string | null;
|
|
103
|
+
first_published_at: string | null;
|
|
104
|
+
last_author: {
|
|
105
|
+
id?: number;
|
|
106
|
+
userid: string;
|
|
107
|
+
friendly_name: string;
|
|
108
|
+
avatar?: string;
|
|
109
|
+
} | null;
|
|
110
|
+
last_author_id: number | null;
|
|
111
|
+
/**
|
|
112
|
+
* List of user IDs this story belongs to (read-only, set automatically via workflow or workflow stage changes)
|
|
113
|
+
*/
|
|
114
|
+
user_ids: Array<number>;
|
|
115
|
+
/**
|
|
116
|
+
* Space role IDs (read-only, set automatically via workflow or workflow stage changes)
|
|
117
|
+
*/
|
|
118
|
+
space_role_ids: Array<number>;
|
|
119
|
+
/**
|
|
120
|
+
* List of translated slugs for the story
|
|
121
|
+
*/
|
|
122
|
+
translated_slugs: Array<StoryTranslatedSlug>;
|
|
123
|
+
/**
|
|
124
|
+
* List of translated versions of this story
|
|
125
|
+
*/
|
|
126
|
+
translated_stories: Array<{
|
|
127
|
+
/**
|
|
128
|
+
* First published time for this translation
|
|
129
|
+
*/
|
|
130
|
+
first_published_at: string;
|
|
131
|
+
/**
|
|
132
|
+
* published time
|
|
133
|
+
*/
|
|
134
|
+
published_at: string;
|
|
135
|
+
/**
|
|
136
|
+
* Language code for this translation
|
|
137
|
+
*/
|
|
138
|
+
lang: string;
|
|
139
|
+
/**
|
|
140
|
+
* Whether this translation has unpublished changes
|
|
141
|
+
*/
|
|
142
|
+
unpublished_changes: boolean;
|
|
143
|
+
}>;
|
|
144
|
+
/**
|
|
145
|
+
* List of localized paths for the story.
|
|
146
|
+
*/
|
|
147
|
+
localized_paths: Array<StoryLocalizedPath>;
|
|
148
|
+
/**
|
|
149
|
+
* Numeric representation of the story's position in the folder.
|
|
150
|
+
*/
|
|
151
|
+
position: number;
|
|
152
|
+
can_not_view: boolean | null;
|
|
153
|
+
is_scheduled: boolean | null;
|
|
154
|
+
scheduled_dates: string | null;
|
|
155
|
+
/**
|
|
156
|
+
* List of ideas associated with this story.
|
|
157
|
+
*/
|
|
158
|
+
ideas: Array<{
|
|
159
|
+
/**
|
|
160
|
+
* Idea ID
|
|
161
|
+
*/
|
|
162
|
+
id: string;
|
|
163
|
+
/**
|
|
164
|
+
* Idea name
|
|
165
|
+
*/
|
|
166
|
+
name: string;
|
|
167
|
+
/**
|
|
168
|
+
* Author ID
|
|
169
|
+
*/
|
|
170
|
+
author_id: number;
|
|
171
|
+
/**
|
|
172
|
+
* Whether idea is private
|
|
173
|
+
*/
|
|
174
|
+
is_private: boolean;
|
|
175
|
+
}>;
|
|
176
|
+
/**
|
|
177
|
+
* Workflow stage information (only included when show_stage is true)
|
|
178
|
+
*/
|
|
179
|
+
stage?: Stage | null;
|
|
180
|
+
/**
|
|
181
|
+
* List of user IDs
|
|
182
|
+
*/
|
|
183
|
+
favourite_for_user_ids: Array<number>;
|
|
184
|
+
/**
|
|
185
|
+
* Variant type (null for regular stories, 'experiment' for A/B test variants).
|
|
186
|
+
*/
|
|
187
|
+
variant_type?: string | null;
|
|
188
|
+
/**
|
|
189
|
+
* IDs of experiments this story participates in (only included on show, not index).
|
|
190
|
+
*/
|
|
191
|
+
experiment_ids?: Array<number>;
|
|
192
|
+
};
|
|
193
|
+
type StoryCreate = {
|
|
194
|
+
name?: string;
|
|
195
|
+
disble_fe_editor?: boolean;
|
|
196
|
+
disable_fe_editor?: boolean;
|
|
197
|
+
/**
|
|
198
|
+
* The default root
|
|
199
|
+
*/
|
|
200
|
+
default_root?: string | null;
|
|
201
|
+
is_folder?: boolean;
|
|
202
|
+
group_id?: string;
|
|
203
|
+
path?: string | null;
|
|
204
|
+
slug?: string;
|
|
205
|
+
is_startpage?: boolean;
|
|
206
|
+
/**
|
|
207
|
+
* ID of the parent folder. Can be null or 0 for root-level stories.
|
|
208
|
+
*/
|
|
209
|
+
parent_id?: number | null;
|
|
210
|
+
sort_by_date?: string | null;
|
|
211
|
+
meta_data?: {
|
|
212
|
+
[key: string]: unknown;
|
|
213
|
+
} | null;
|
|
214
|
+
publish_at?: string | null;
|
|
215
|
+
expire_at?: string | null;
|
|
216
|
+
first_published_at?: string | null;
|
|
217
|
+
pinned?: boolean;
|
|
218
|
+
position?: number;
|
|
219
|
+
tag_list?: Array<string>;
|
|
220
|
+
base_version_id?: number | null;
|
|
221
|
+
/**
|
|
222
|
+
* Array of translated slug attributes for creating or updating translated slugs.
|
|
223
|
+
*/
|
|
224
|
+
translated_slugs_attributes?: Array<{
|
|
225
|
+
/**
|
|
226
|
+
* ID of the translated slug (required for updates, omit for new records)
|
|
227
|
+
*/
|
|
228
|
+
id?: number;
|
|
229
|
+
/**
|
|
230
|
+
* The slug for this translated slug (required)
|
|
231
|
+
*/
|
|
232
|
+
slug?: string;
|
|
233
|
+
/**
|
|
234
|
+
* The name for this translated slug
|
|
235
|
+
*/
|
|
236
|
+
name?: string | null;
|
|
237
|
+
/**
|
|
238
|
+
* The language code for this translation
|
|
239
|
+
*/
|
|
240
|
+
lang?: string;
|
|
241
|
+
/**
|
|
242
|
+
* Set to true to mark this translated slug for deletion when the story is saved
|
|
243
|
+
*/
|
|
244
|
+
_destroy?: boolean | null;
|
|
245
|
+
}> | null;
|
|
246
|
+
/**
|
|
247
|
+
* Dynamic component data rendered by Storyblok, structure varies by component
|
|
248
|
+
*/
|
|
249
|
+
content?: {
|
|
250
|
+
[key: string]: unknown;
|
|
251
|
+
};
|
|
252
|
+
};
|
|
253
|
+
type StoryUpdate = StoryCreate;
|
|
254
|
+
type Alternate = {
|
|
255
|
+
id: number;
|
|
256
|
+
name: string;
|
|
257
|
+
/**
|
|
258
|
+
* URL-friendly identifier for the app category.
|
|
259
|
+
*/
|
|
260
|
+
slug: string;
|
|
261
|
+
published: boolean | null;
|
|
262
|
+
full_slug: string;
|
|
263
|
+
/**
|
|
264
|
+
* true if the instance constitutes a folder.
|
|
265
|
+
*/
|
|
266
|
+
is_folder: boolean;
|
|
267
|
+
/**
|
|
268
|
+
* ID of parent space if this is a child space.
|
|
269
|
+
*/
|
|
270
|
+
parent_id: number;
|
|
271
|
+
};
|
|
272
|
+
type Breadcrumb = {
|
|
273
|
+
/**
|
|
274
|
+
* Breadcrumb ID
|
|
275
|
+
*/
|
|
276
|
+
id: number;
|
|
277
|
+
/**
|
|
278
|
+
* Name of the breadcrumb
|
|
279
|
+
*/
|
|
280
|
+
name: string;
|
|
281
|
+
/**
|
|
282
|
+
* ID of parent space if this is a child space.
|
|
283
|
+
*/
|
|
284
|
+
parent_id: number | null;
|
|
285
|
+
/**
|
|
286
|
+
* Disable frontend editor (legacy typo field). Deprecated: use disable_fe_editor instead of disble_fe_editor.
|
|
287
|
+
*/
|
|
288
|
+
disble_fe_editor: boolean;
|
|
289
|
+
/**
|
|
290
|
+
* Disable frontend editor
|
|
291
|
+
*/
|
|
292
|
+
disable_fe_editor: boolean;
|
|
293
|
+
/**
|
|
294
|
+
* Path of the breadcrumb
|
|
295
|
+
*/
|
|
296
|
+
path: string | null;
|
|
297
|
+
/**
|
|
298
|
+
* URL-friendly identifier for the app category.
|
|
299
|
+
*/
|
|
300
|
+
slug: string;
|
|
301
|
+
/**
|
|
302
|
+
* List of translated slugs for the breadcrumb
|
|
303
|
+
*/
|
|
304
|
+
translated_slugs: Array<StoryTranslatedSlug>;
|
|
305
|
+
};
|
|
306
|
+
type StoryTranslatedSlug = {
|
|
307
|
+
/**
|
|
308
|
+
* id
|
|
309
|
+
*/
|
|
310
|
+
id: number;
|
|
311
|
+
/**
|
|
312
|
+
* The name for this translated slug
|
|
313
|
+
*/
|
|
314
|
+
name: string | null;
|
|
315
|
+
/**
|
|
316
|
+
* URL-friendly identifier for the app category.
|
|
317
|
+
*/
|
|
318
|
+
slug: string;
|
|
319
|
+
/**
|
|
320
|
+
* The language code for this translation.
|
|
321
|
+
*/
|
|
322
|
+
lang: string;
|
|
323
|
+
published: boolean | null;
|
|
324
|
+
};
|
|
325
|
+
type StoryLocalizedPath = {
|
|
326
|
+
/**
|
|
327
|
+
* The localized path
|
|
328
|
+
*/
|
|
329
|
+
path: string;
|
|
330
|
+
/**
|
|
331
|
+
* The translated name
|
|
332
|
+
*/
|
|
333
|
+
name: string | null;
|
|
334
|
+
/**
|
|
335
|
+
* The language code for this translation.
|
|
336
|
+
*/
|
|
337
|
+
lang: string;
|
|
338
|
+
/**
|
|
339
|
+
* Published status or date
|
|
340
|
+
*/
|
|
341
|
+
published: boolean | string | null;
|
|
342
|
+
/**
|
|
343
|
+
* The translated slug (only present when folders are used).
|
|
344
|
+
*/
|
|
345
|
+
translated_slug?: string;
|
|
346
|
+
};
|
|
347
|
+
type Stage = {
|
|
348
|
+
/**
|
|
349
|
+
* The workflow ID
|
|
350
|
+
*/
|
|
351
|
+
workflow_id: number | null;
|
|
352
|
+
/**
|
|
353
|
+
* The workflow stage ID
|
|
354
|
+
*/
|
|
355
|
+
workflow_stage_id: number;
|
|
356
|
+
/**
|
|
357
|
+
* The story ID
|
|
358
|
+
*/
|
|
359
|
+
story_id: number;
|
|
360
|
+
/**
|
|
361
|
+
* The due date for this workflow stage
|
|
362
|
+
*/
|
|
363
|
+
due_date: string | null;
|
|
364
|
+
/**
|
|
365
|
+
* Creation timestamp (format is ISO 8601 standard in UTC).
|
|
366
|
+
*/
|
|
367
|
+
created_at: string;
|
|
368
|
+
};
|
|
369
|
+
//#endregion
|
|
370
|
+
export { MapiStory, StoryCreate, StoryUpdate };
|
|
371
|
+
//# sourceMappingURL=_internal.gen.d.cts.map
|