@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stories.mjs","names":["storiesApi.list","storiesApi.get","storiesApi.create","storiesApi.update","storiesApi.delete_","storiesApi.duplicate","storiesApi.publish","storiesApi.versions"],"sources":["../../src/resources/stories.ts"],"sourcesContent":["import * as storiesApi from '../generated/stories/sdk.gen';\nimport type {\n CreateData,\n CreateResponses,\n DeleteResponses,\n DuplicateData,\n DuplicateResponses,\n GetData,\n GetResponses,\n ListData,\n ListResponses,\n PublishData,\n PublishResponses,\n StoryCreateRequest,\n StoryMapi,\n StoryUpdateRequest,\n UpdateData,\n UpdateResponses,\n VersionsData,\n VersionsResponses,\n} from '../generated/stories/types.gen';\nimport type { ApiResponse, FetchOptions, MapiResourceDeps } from '../client';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\nimport type { Block as Component, MapiStory, StoryCreate as MapiStoryCreate, StoryUpdate as MapiStoryUpdate } from '@storyblok/schema';\n\nexport type StoryListQuery = NonNullable<ListData['query']>;\n\n/**\n * Resolves to a component-narrowed story type when `TComponents` is a specific\n * Component union, or falls back to the generated `StoryMapi` when no components\n * are provided (i.e. `TComponents` is the default base `Component` type).\n *\n * Delegates to `MapiStory<TComponents>` single-generic mode which internally\n * handles the `RootComponents` filtering and discriminated union construction.\n */\ntype StoryResult<TComponents extends Component> =\n Component extends TComponents\n ? StoryMapi // fallback: no components provided\n : MapiStory<TComponents>;\n\ntype GetResponse<TComponents extends Component> =\n Omit<GetResponses[200], 'story'> & { story?: StoryResult<TComponents> };\n\ntype ListResponse<TComponents extends Component> =\n Omit<ListResponses[200], 'stories'> & { stories?: Array<StoryResult<TComponents>> };\n\ntype CreateResponse<TComponents extends Component> =\n Omit<CreateResponses[201], 'story'> & { story?: StoryResult<TComponents> };\n\ntype UpdateResponse<TComponents extends Component> =\n Omit<UpdateResponses[200], 'story'> & { story?: StoryResult<TComponents> };\n\ntype DuplicateResponse<TComponents extends Component> =\n Omit<DuplicateResponses[200], 'story'> & { story?: StoryResult<TComponents> };\n\ntype PublishResponse<TComponents extends Component> =\n Omit<PublishResponses[200], 'story'> & { story?: StoryResult<TComponents> };\n\n/**\n * Component-narrowed body for story creation. When `TComponents` is provided,\n * `body.story.content` is typed to the narrowed union of root component content types.\n * Falls back to the generated `StoryCreateRequest` when no components are provided.\n */\ntype CreateBody<TComponents extends Component> =\n Component extends TComponents\n ? CreateData['body']\n : Omit<StoryCreateRequest, 'story'> & {\n story: MapiStoryCreate<TComponents>;\n };\n\n/**\n * Component-narrowed body for story updates. When `TComponents` is provided,\n * `body.story.content` is typed to the narrowed union of root component content types.\n * Falls back to the generated `StoryUpdateRequest` when no components are provided.\n */\ntype UpdateBody<TComponents extends Component> =\n Component extends TComponents\n ? UpdateData['body']\n : Omit<StoryUpdateRequest, 'story'> & {\n story: MapiStoryUpdate<TComponents>;\n };\n\nexport function createStoriesResource<\n TComponents extends Component = Component,\n DefaultThrowOnError extends boolean = false,\n>(deps: MapiResourceDeps<DefaultThrowOnError>) {\n const { client, spaceId, wrapRequest } = deps;\n const getSpaceId = (path?: SpaceIdPathOverride['path']) => resolveSpaceId(spaceId, path);\n\n return {\n list<ThrowOnError extends boolean = DefaultThrowOnError>(options: { query?: ListData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<ListResponse<TComponents>, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<ListResponse<TComponents>, ThrowOnError>(() =>\n storiesApi.list({ client, path: { space_id: resolvedSpaceId }, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n get<ThrowOnError extends boolean = DefaultThrowOnError>(storyId: number | string, options: { query?: GetData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<GetResponse<TComponents>, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<GetResponse<TComponents>, ThrowOnError>(() =>\n storiesApi.get({ client, path: { space_id: resolvedSpaceId, story_id: storyId }, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n create<ThrowOnError extends boolean = DefaultThrowOnError>(options: { body: CreateBody<TComponents>; query?: CreateData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<CreateResponse<TComponents>, ThrowOnError>> {\n const { body, query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<CreateResponse<TComponents>, ThrowOnError>(() =>\n storiesApi.create({ client, path: { space_id: resolvedSpaceId }, body: body as CreateData['body'], query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n update<ThrowOnError extends boolean = DefaultThrowOnError>(\n storyId: number | string,\n options: { body: UpdateBody<TComponents>; query?: UpdateData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride,\n ): Promise<ApiResponse<UpdateResponse<TComponents>, ThrowOnError>> {\n const { body, query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<UpdateResponse<TComponents>, ThrowOnError>(() =>\n storiesApi.update({ client, path: { space_id: resolvedSpaceId, story_id: storyId }, body: body as UpdateData['body'], query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n delete<ThrowOnError extends boolean = DefaultThrowOnError>(storyId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<DeleteResponses[200], ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<DeleteResponses[200], ThrowOnError>(() =>\n storiesApi.delete_({ client, path: { space_id: resolvedSpaceId, story_id: storyId }, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n duplicate<ThrowOnError extends boolean = DefaultThrowOnError>(\n storyId: number | string,\n options: { body: DuplicateData['body']; query?: DuplicateData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride,\n ): Promise<ApiResponse<DuplicateResponse<TComponents>, ThrowOnError>> {\n const { body, query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<DuplicateResponse<TComponents>, ThrowOnError>(() =>\n storiesApi.duplicate({ client, path: { space_id: resolvedSpaceId, story_id: storyId }, body, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n publish<ThrowOnError extends boolean = DefaultThrowOnError>(\n storyId: number | string,\n options: { query?: PublishData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {},\n ): Promise<ApiResponse<PublishResponse<TComponents>, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<PublishResponse<TComponents>, ThrowOnError>(() =>\n storiesApi.publish({ client, path: { space_id: resolvedSpaceId, story_id: storyId }, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n versions<ThrowOnError extends boolean = DefaultThrowOnError>(\n options: { query?: VersionsData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {},\n ): Promise<ApiResponse<VersionsResponses[200], ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<VersionsResponses[200], ThrowOnError>(() =>\n storiesApi.versions({ client, path: { space_id: resolvedSpaceId }, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stories.mjs","names":["mapi.listStories","mapi.getStoryById","mapi.createStory","mapi.updateStory","mapi.deleteStory","mapi.duplicateStory","mapi.publishStory","mapi.listVersions"],"sources":["../../src/resources/stories.ts"],"sourcesContent":["import * as mapi from '../generated/mapi/sdk.gen';\nimport type {\n CreateStoryData,\n CreateStoryResponses,\n DeleteStoryResponses,\n DuplicateStoryData,\n DuplicateStoryResponses,\n GetStoryByIdData,\n GetStoryByIdResponses,\n ListStoriesData,\n ListStoriesResponses,\n ListVersionsData,\n ListVersionsResponses,\n PublishStoryData,\n PublishStoryResponses,\n UpdateStoryData,\n UpdateStoryRequest,\n UpdateStoryResponses,\n} from '../generated/mapi/types.gen';\nimport type { Block as Component } from '../generated/types/block';\nimport type { MapiStory, StoryCreate, StoryUpdate } from '../generated/types/mapi-story';\nimport type { ApiResponse, FetchOptions, MapiResourceDeps } from '../client';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\n\nexport type StoryListQuery = NonNullable<ListStoriesData['query']>;\n\n/**\n * Resolves to a component-narrowed story type when `TComponents` is a specific\n * Component union, or falls back to the generated `MapiStory` when no components\n * are provided (i.e. `TComponents` is the default base `Component` type).\n */\ntype StoryResult<TComponents extends Component> =\n Component extends TComponents\n ? MapiStory\n : MapiStory<TComponents>;\n\ntype GetResponse<TComponents extends Component> =\n Omit<GetStoryByIdResponses[200], 'story'> & { story?: StoryResult<TComponents> };\n\ntype ListResponse<TComponents extends Component> =\n Omit<ListStoriesResponses[200], 'stories'> & { stories?: Array<StoryResult<TComponents>> };\n\ntype CreateResponse<TComponents extends Component> =\n Omit<CreateStoryResponses[201], 'story'> & { story?: StoryResult<TComponents> };\n\ntype UpdateResponse<TComponents extends Component> =\n Omit<UpdateStoryResponses[200], 'story'> & { story?: StoryResult<TComponents> };\n\ntype DuplicateResponse<TComponents extends Component> =\n Omit<DuplicateStoryResponses[200], 'story'> & { story?: StoryResult<TComponents> };\n\ntype PublishResponse<TComponents extends Component> =\n Omit<PublishStoryResponses[200], 'story'> & { story?: StoryResult<TComponents> };\n\ntype CreateBody<TComponents extends Component> =\n Component extends TComponents\n ? CreateStoryData['body']\n : Omit<UpdateStoryRequest, 'story'> & {\n story: StoryCreate<TComponents>;\n };\n\ntype UpdateBody<TComponents extends Component> =\n Component extends TComponents\n ? UpdateStoryData['body']\n : Omit<UpdateStoryRequest, 'story'> & {\n story: StoryUpdate<TComponents>;\n };\n\nexport function createStoriesResource<\n TComponents extends Component = Component,\n DefaultThrowOnError extends boolean = false,\n>(deps: MapiResourceDeps<DefaultThrowOnError>) {\n const { client, spaceId, wrapRequest } = deps;\n const getSpaceId = (path?: SpaceIdPathOverride['path']) => resolveSpaceId(spaceId, path);\n\n return {\n list<ThrowOnError extends boolean = DefaultThrowOnError>(options: { query?: ListStoriesData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<ListResponse<TComponents>, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<ListResponse<TComponents>, ThrowOnError>(() =>\n mapi.listStories({ client, path: { space_id: resolvedSpaceId }, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n get<ThrowOnError extends boolean = DefaultThrowOnError>(storyId: number, options: { query?: GetStoryByIdData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<GetResponse<TComponents>, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<GetResponse<TComponents>, ThrowOnError>(() =>\n mapi.getStoryById({ client, path: { space_id: resolvedSpaceId, id: storyId }, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n create<ThrowOnError extends boolean = DefaultThrowOnError>(options: { body: CreateBody<TComponents>; query?: CreateStoryData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<CreateResponse<TComponents>, ThrowOnError>> {\n const { body, query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<CreateResponse<TComponents>, ThrowOnError>(() =>\n mapi.createStory({ client, path: { space_id: resolvedSpaceId }, body: body as CreateStoryData['body'], query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n update<ThrowOnError extends boolean = DefaultThrowOnError>(\n storyId: number,\n options: { body: UpdateBody<TComponents>; query?: UpdateStoryData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride,\n ): Promise<ApiResponse<UpdateResponse<TComponents>, ThrowOnError>> {\n const { body, query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<UpdateResponse<TComponents>, ThrowOnError>(() =>\n mapi.updateStory({ client, path: { space_id: resolvedSpaceId, id: storyId }, body: body as UpdateStoryData['body'], query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n delete<ThrowOnError extends boolean = DefaultThrowOnError>(storyId: number, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<DeleteStoryResponses[200], ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<DeleteStoryResponses[200], ThrowOnError>(() =>\n mapi.deleteStory({ client, path: { space_id: resolvedSpaceId, id: storyId }, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n duplicate<ThrowOnError extends boolean = DefaultThrowOnError>(\n storyId: number,\n options: { body: DuplicateStoryData['body']; query?: DuplicateStoryData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride,\n ): Promise<ApiResponse<DuplicateResponse<TComponents>, ThrowOnError>> {\n const { body, query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<DuplicateResponse<TComponents>, ThrowOnError>(() =>\n mapi.duplicateStory({ client, path: { space_id: resolvedSpaceId, id: storyId }, body, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n publish<ThrowOnError extends boolean = DefaultThrowOnError>(\n storyId: number,\n options: { query?: PublishStoryData['query']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {},\n ): Promise<ApiResponse<PublishResponse<TComponents>, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<PublishResponse<TComponents>, ThrowOnError>(() =>\n mapi.publishStory({ client, path: { space_id: resolvedSpaceId, id: storyId }, query, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n versions<ThrowOnError extends boolean = DefaultThrowOnError>(\n storyId: number,\n options: { query?: Omit<ListVersionsData['query'], 'model' | 'model_id'>; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {},\n ): Promise<ApiResponse<ListVersionsResponses[200], ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n return wrapRequest<ListVersionsResponses[200], ThrowOnError>(() =>\n mapi.listVersions({ client, path: { space_id: resolvedSpaceId }, query: { ...query, model: 'stories', model_id: storyId }, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n };\n}\n"],"mappings":"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"}
|
package/dist/resources/users.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_sdk_gen = require('../generated/
|
|
1
|
+
const require_sdk_gen = require('../generated/mapi/sdk.gen.cjs');
|
|
2
2
|
|
|
3
3
|
//#region src/resources/users.ts
|
|
4
4
|
function createUsersResource(deps) {
|
|
@@ -6,7 +6,7 @@ function createUsersResource(deps) {
|
|
|
6
6
|
return {
|
|
7
7
|
me(options = {}) {
|
|
8
8
|
const { signal, throwOnError, fetchOptions } = options;
|
|
9
|
-
return wrapRequest(() => require_sdk_gen.
|
|
9
|
+
return wrapRequest(() => require_sdk_gen.getCurrentUser({
|
|
10
10
|
client,
|
|
11
11
|
signal,
|
|
12
12
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
@@ -18,7 +18,7 @@ function createUsersResource(deps) {
|
|
|
18
18
|
},
|
|
19
19
|
updateMe(options) {
|
|
20
20
|
const { body, signal, throwOnError, fetchOptions } = options;
|
|
21
|
-
return wrapRequest(() => require_sdk_gen.
|
|
21
|
+
return wrapRequest(() => require_sdk_gen.updateCurrentUser({
|
|
22
22
|
client,
|
|
23
23
|
body,
|
|
24
24
|
signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.cjs","names":[],"sources":["../../src/resources/users.ts"],"sourcesContent":["import * as
|
|
1
|
+
{"version":3,"file":"users.cjs","names":[],"sources":["../../src/resources/users.ts"],"sourcesContent":["import * as mapi from '../generated/mapi/sdk.gen';\nimport type {\n GetCurrentUserResponses,\n UpdateCurrentUserData,\n UpdateCurrentUserResponses,\n} from '../generated/mapi/types.gen';\nimport type { ApiResponse, FetchOptions, MapiResourceDeps } from '../client';\n\nexport function createUsersResource<DefaultThrowOnError extends boolean = false>(deps: Omit<MapiResourceDeps<DefaultThrowOnError>, 'spaceId'>) {\n const { client, wrapRequest } = deps;\n\n return {\n me<ThrowOnError extends boolean = DefaultThrowOnError>(options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {}): Promise<ApiResponse<GetCurrentUserResponses[200], ThrowOnError>> {\n const { signal, throwOnError, fetchOptions } = options;\n return wrapRequest<GetCurrentUserResponses[200], ThrowOnError>(() =>\n mapi.getCurrentUser({ client, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n updateMe<ThrowOnError extends boolean = DefaultThrowOnError>(options: { body: UpdateCurrentUserData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions }): Promise<ApiResponse<UpdateCurrentUserResponses[200], ThrowOnError>> {\n const { body, signal, throwOnError, fetchOptions } = options;\n return wrapRequest<UpdateCurrentUserResponses[200], ThrowOnError>(() =>\n mapi.updateCurrentUser({ client, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n };\n}\n"],"mappings":";;;AAQA,SAAgB,oBAAiE,MAA8D;CAC7I,MAAM,EAAE,QAAQ,gBAAgB;AAEhC,QAAO;EACL,GAAuD,UAA8F,EAAE,EAAoE;GACzN,MAAM,EAAE,QAAQ,cAAc,iBAAiB;AAC/C,UAAO,iDACe;IAAE;IAAQ;IAAQ,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IAAG,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAAG,CAAC,EAAE,aAAa;;EAEjN,SAA6D,SAAuM;GAClQ,MAAM,EAAE,MAAM,QAAQ,cAAc,iBAAiB;AACrD,UAAO,oDACkB;IAAE;IAAQ;IAAM;IAAQ,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IAAG,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAAG,CAAC,EAAE,aAAa;;EAE3N"}
|
package/dist/resources/users.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getCurrentUser, updateCurrentUser } from "../generated/mapi/sdk.gen.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/resources/users.ts
|
|
4
4
|
function createUsersResource(deps) {
|
|
@@ -6,7 +6,7 @@ function createUsersResource(deps) {
|
|
|
6
6
|
return {
|
|
7
7
|
me(options = {}) {
|
|
8
8
|
const { signal, throwOnError, fetchOptions } = options;
|
|
9
|
-
return wrapRequest(() =>
|
|
9
|
+
return wrapRequest(() => getCurrentUser({
|
|
10
10
|
client,
|
|
11
11
|
signal,
|
|
12
12
|
...throwOnError === void 0 ? {} : { throwOnError },
|
|
@@ -18,7 +18,7 @@ function createUsersResource(deps) {
|
|
|
18
18
|
},
|
|
19
19
|
updateMe(options) {
|
|
20
20
|
const { body, signal, throwOnError, fetchOptions } = options;
|
|
21
|
-
return wrapRequest(() =>
|
|
21
|
+
return wrapRequest(() => updateCurrentUser({
|
|
22
22
|
client,
|
|
23
23
|
body,
|
|
24
24
|
signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.mjs","names":["
|
|
1
|
+
{"version":3,"file":"users.mjs","names":["mapi.getCurrentUser","mapi.updateCurrentUser"],"sources":["../../src/resources/users.ts"],"sourcesContent":["import * as mapi from '../generated/mapi/sdk.gen';\nimport type {\n GetCurrentUserResponses,\n UpdateCurrentUserData,\n UpdateCurrentUserResponses,\n} from '../generated/mapi/types.gen';\nimport type { ApiResponse, FetchOptions, MapiResourceDeps } from '../client';\n\nexport function createUsersResource<DefaultThrowOnError extends boolean = false>(deps: Omit<MapiResourceDeps<DefaultThrowOnError>, 'spaceId'>) {\n const { client, wrapRequest } = deps;\n\n return {\n me<ThrowOnError extends boolean = DefaultThrowOnError>(options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } = {}): Promise<ApiResponse<GetCurrentUserResponses[200], ThrowOnError>> {\n const { signal, throwOnError, fetchOptions } = options;\n return wrapRequest<GetCurrentUserResponses[200], ThrowOnError>(() =>\n mapi.getCurrentUser({ client, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n updateMe<ThrowOnError extends boolean = DefaultThrowOnError>(options: { body: UpdateCurrentUserData['body']; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions }): Promise<ApiResponse<UpdateCurrentUserResponses[200], ThrowOnError>> {\n const { body, signal, throwOnError, fetchOptions } = options;\n return wrapRequest<UpdateCurrentUserResponses[200], ThrowOnError>(() =>\n mapi.updateCurrentUser({ client, body, signal, ...(throwOnError === undefined ? {} : { throwOnError }), ...(fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {}) }), throwOnError);\n },\n };\n}\n"],"mappings":";;;AAQA,SAAgB,oBAAiE,MAA8D;CAC7I,MAAM,EAAE,QAAQ,gBAAgB;AAEhC,QAAO;EACL,GAAuD,UAA8F,EAAE,EAAoE;GACzN,MAAM,EAAE,QAAQ,cAAc,iBAAiB;AAC/C,UAAO,kBACLA,eAAoB;IAAE;IAAQ;IAAQ,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IAAG,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAAG,CAAC,EAAE,aAAa;;EAEjN,SAA6D,SAAuM;GAClQ,MAAM,EAAE,MAAM,QAAQ,cAAc,iBAAiB;AACrD,UAAO,kBACLC,kBAAuB;IAAE;IAAQ;IAAM;IAAQ,GAAI,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;IAAG,GAAI,eAAe,EAAE,WAAW;KAAE,GAAG,OAAO,WAAW,CAAC;KAAW,GAAG;KAAc,EAAE,GAAG,EAAE;IAAG,CAAC,EAAE,aAAa;;EAE3N"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const require_pathSerializer_gen = require('../generated/mapi/core/pathSerializer.gen.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/utils/query-serializer.ts
|
|
4
|
+
/**
|
|
5
|
+
* Query serializer for the Management API client.
|
|
6
|
+
*
|
|
7
|
+
* Behaves identically to the generated default for primitives, primitive
|
|
8
|
+
* arrays, and dates, but additionally serializes **nested objects** (and arrays
|
|
9
|
+
* of objects) into bracket notation — e.g. `filter_query[component][in]=hero`.
|
|
10
|
+
*
|
|
11
|
+
* The generated default serializer throws on this nesting ("Deeply-nested
|
|
12
|
+
* arrays/objects aren't supported. Provide your own `querySerializer()`"), yet
|
|
13
|
+
* MAPI requires `filter_query` as a nested hash and rejects flat strings. This
|
|
14
|
+
* mirrors the bracket serialization used by `storyblok-js-client`.
|
|
15
|
+
*/
|
|
16
|
+
function serialize(name, value, parts) {
|
|
17
|
+
if (value === void 0 || value === null) return;
|
|
18
|
+
if (value instanceof Date) {
|
|
19
|
+
parts.push(`${name}=${value.toISOString()}`);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (Array.isArray(value)) {
|
|
23
|
+
if (value.some((item) => item !== null && typeof item === "object")) {
|
|
24
|
+
for (const item of value) serialize(`${name}[]`, item, parts);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const serialized = require_pathSerializer_gen.serializeArrayParam({
|
|
28
|
+
explode: true,
|
|
29
|
+
name,
|
|
30
|
+
style: "form",
|
|
31
|
+
value
|
|
32
|
+
});
|
|
33
|
+
if (serialized) parts.push(serialized);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (typeof value === "object") {
|
|
37
|
+
for (const [key, child] of Object.entries(value)) serialize(`${name}[${key}]`, child, parts);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const serialized = require_pathSerializer_gen.serializePrimitiveParam({
|
|
41
|
+
name,
|
|
42
|
+
value
|
|
43
|
+
});
|
|
44
|
+
if (serialized) parts.push(serialized);
|
|
45
|
+
}
|
|
46
|
+
const querySerializer = (query) => {
|
|
47
|
+
const parts = [];
|
|
48
|
+
for (const [name, value] of Object.entries(query)) serialize(name, value, parts);
|
|
49
|
+
return parts.join("&");
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
exports.querySerializer = querySerializer;
|
|
54
|
+
//# sourceMappingURL=query-serializer.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-serializer.cjs","names":["serializeArrayParam","serializePrimitiveParam"],"sources":["../../src/utils/query-serializer.ts"],"sourcesContent":["import type { QuerySerializer } from '../generated/mapi/core/bodySerializer.gen';\nimport { serializeArrayParam, serializePrimitiveParam } from '../generated/mapi/core/pathSerializer.gen';\n\n/**\n * Query serializer for the Management API client.\n *\n * Behaves identically to the generated default for primitives, primitive\n * arrays, and dates, but additionally serializes **nested objects** (and arrays\n * of objects) into bracket notation — e.g. `filter_query[component][in]=hero`.\n *\n * The generated default serializer throws on this nesting (\"Deeply-nested\n * arrays/objects aren't supported. Provide your own `querySerializer()`\"), yet\n * MAPI requires `filter_query` as a nested hash and rejects flat strings. This\n * mirrors the bracket serialization used by `storyblok-js-client`.\n */\nfunction serialize(name: string, value: unknown, parts: string[]): void {\n if (value === undefined || value === null) {\n return;\n }\n\n if (value instanceof Date) {\n parts.push(`${name}=${value.toISOString()}`);\n return;\n }\n\n if (Array.isArray(value)) {\n // Arrays containing objects (e.g. `filter_query.__or`) need per-item\n // bracket recursion; the default serializer cannot express them.\n if (value.some(item => item !== null && typeof item === 'object')) {\n for (const item of value) {\n serialize(`${name}[]`, item, parts);\n }\n return;\n }\n // Primitive arrays keep the generated default form (`name=a&name=b`).\n const serialized = serializeArrayParam({ explode: true, name, style: 'form', value });\n if (serialized) {\n parts.push(serialized);\n }\n return;\n }\n\n if (typeof value === 'object') {\n for (const [key, child] of Object.entries(value)) {\n serialize(`${name}[${key}]`, child, parts);\n }\n return;\n }\n\n const serialized = serializePrimitiveParam({ name, value: value as string });\n if (serialized) {\n parts.push(serialized);\n }\n}\n\nexport const querySerializer: QuerySerializer = (query) => {\n const parts: string[] = [];\n for (const [name, value] of Object.entries(query)) {\n serialize(name, value, parts);\n }\n return parts.join('&');\n};\n"],"mappings":";;;;;;;;;;;;;;;AAeA,SAAS,UAAU,MAAc,OAAgB,OAAuB;AACtE,KAAI,UAAU,UAAa,UAAU,KACnC;AAGF,KAAI,iBAAiB,MAAM;AACzB,QAAM,KAAK,GAAG,KAAK,GAAG,MAAM,aAAa,GAAG;AAC5C;;AAGF,KAAI,MAAM,QAAQ,MAAM,EAAE;AAGxB,MAAI,MAAM,MAAK,SAAQ,SAAS,QAAQ,OAAO,SAAS,SAAS,EAAE;AACjE,QAAK,MAAM,QAAQ,MACjB,WAAU,GAAG,KAAK,KAAK,MAAM,MAAM;AAErC;;EAGF,MAAM,aAAaA,+CAAoB;GAAE,SAAS;GAAM;GAAM,OAAO;GAAQ;GAAO,CAAC;AACrF,MAAI,WACF,OAAM,KAAK,WAAW;AAExB;;AAGF,KAAI,OAAO,UAAU,UAAU;AAC7B,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,CAC9C,WAAU,GAAG,KAAK,GAAG,IAAI,IAAI,OAAO,MAAM;AAE5C;;CAGF,MAAM,aAAaC,mDAAwB;EAAE;EAAa;EAAiB,CAAC;AAC5E,KAAI,WACF,OAAM,KAAK,WAAW;;AAI1B,MAAa,mBAAoC,UAAU;CACzD,MAAM,QAAkB,EAAE;AAC1B,MAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,MAAM,CAC/C,WAAU,MAAM,OAAO,MAAM;AAE/B,QAAO,MAAM,KAAK,IAAI"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { serializeArrayParam, serializePrimitiveParam } from "../generated/mapi/core/pathSerializer.gen.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/query-serializer.ts
|
|
4
|
+
/**
|
|
5
|
+
* Query serializer for the Management API client.
|
|
6
|
+
*
|
|
7
|
+
* Behaves identically to the generated default for primitives, primitive
|
|
8
|
+
* arrays, and dates, but additionally serializes **nested objects** (and arrays
|
|
9
|
+
* of objects) into bracket notation — e.g. `filter_query[component][in]=hero`.
|
|
10
|
+
*
|
|
11
|
+
* The generated default serializer throws on this nesting ("Deeply-nested
|
|
12
|
+
* arrays/objects aren't supported. Provide your own `querySerializer()`"), yet
|
|
13
|
+
* MAPI requires `filter_query` as a nested hash and rejects flat strings. This
|
|
14
|
+
* mirrors the bracket serialization used by `storyblok-js-client`.
|
|
15
|
+
*/
|
|
16
|
+
function serialize(name, value, parts) {
|
|
17
|
+
if (value === void 0 || value === null) return;
|
|
18
|
+
if (value instanceof Date) {
|
|
19
|
+
parts.push(`${name}=${value.toISOString()}`);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (Array.isArray(value)) {
|
|
23
|
+
if (value.some((item) => item !== null && typeof item === "object")) {
|
|
24
|
+
for (const item of value) serialize(`${name}[]`, item, parts);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const serialized = serializeArrayParam({
|
|
28
|
+
explode: true,
|
|
29
|
+
name,
|
|
30
|
+
style: "form",
|
|
31
|
+
value
|
|
32
|
+
});
|
|
33
|
+
if (serialized) parts.push(serialized);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (typeof value === "object") {
|
|
37
|
+
for (const [key, child] of Object.entries(value)) serialize(`${name}[${key}]`, child, parts);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const serialized = serializePrimitiveParam({
|
|
41
|
+
name,
|
|
42
|
+
value
|
|
43
|
+
});
|
|
44
|
+
if (serialized) parts.push(serialized);
|
|
45
|
+
}
|
|
46
|
+
const querySerializer = (query) => {
|
|
47
|
+
const parts = [];
|
|
48
|
+
for (const [name, value] of Object.entries(query)) serialize(name, value, parts);
|
|
49
|
+
return parts.join("&");
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
export { querySerializer };
|
|
54
|
+
//# sourceMappingURL=query-serializer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-serializer.mjs","names":[],"sources":["../../src/utils/query-serializer.ts"],"sourcesContent":["import type { QuerySerializer } from '../generated/mapi/core/bodySerializer.gen';\nimport { serializeArrayParam, serializePrimitiveParam } from '../generated/mapi/core/pathSerializer.gen';\n\n/**\n * Query serializer for the Management API client.\n *\n * Behaves identically to the generated default for primitives, primitive\n * arrays, and dates, but additionally serializes **nested objects** (and arrays\n * of objects) into bracket notation — e.g. `filter_query[component][in]=hero`.\n *\n * The generated default serializer throws on this nesting (\"Deeply-nested\n * arrays/objects aren't supported. Provide your own `querySerializer()`\"), yet\n * MAPI requires `filter_query` as a nested hash and rejects flat strings. This\n * mirrors the bracket serialization used by `storyblok-js-client`.\n */\nfunction serialize(name: string, value: unknown, parts: string[]): void {\n if (value === undefined || value === null) {\n return;\n }\n\n if (value instanceof Date) {\n parts.push(`${name}=${value.toISOString()}`);\n return;\n }\n\n if (Array.isArray(value)) {\n // Arrays containing objects (e.g. `filter_query.__or`) need per-item\n // bracket recursion; the default serializer cannot express them.\n if (value.some(item => item !== null && typeof item === 'object')) {\n for (const item of value) {\n serialize(`${name}[]`, item, parts);\n }\n return;\n }\n // Primitive arrays keep the generated default form (`name=a&name=b`).\n const serialized = serializeArrayParam({ explode: true, name, style: 'form', value });\n if (serialized) {\n parts.push(serialized);\n }\n return;\n }\n\n if (typeof value === 'object') {\n for (const [key, child] of Object.entries(value)) {\n serialize(`${name}[${key}]`, child, parts);\n }\n return;\n }\n\n const serialized = serializePrimitiveParam({ name, value: value as string });\n if (serialized) {\n parts.push(serialized);\n }\n}\n\nexport const querySerializer: QuerySerializer = (query) => {\n const parts: string[] = [];\n for (const [name, value] of Object.entries(query)) {\n serialize(name, value, parts);\n }\n return parts.join('&');\n};\n"],"mappings":";;;;;;;;;;;;;;;AAeA,SAAS,UAAU,MAAc,OAAgB,OAAuB;AACtE,KAAI,UAAU,UAAa,UAAU,KACnC;AAGF,KAAI,iBAAiB,MAAM;AACzB,QAAM,KAAK,GAAG,KAAK,GAAG,MAAM,aAAa,GAAG;AAC5C;;AAGF,KAAI,MAAM,QAAQ,MAAM,EAAE;AAGxB,MAAI,MAAM,MAAK,SAAQ,SAAS,QAAQ,OAAO,SAAS,SAAS,EAAE;AACjE,QAAK,MAAM,QAAQ,MACjB,WAAU,GAAG,KAAK,KAAK,MAAM,MAAM;AAErC;;EAGF,MAAM,aAAa,oBAAoB;GAAE,SAAS;GAAM;GAAM,OAAO;GAAQ;GAAO,CAAC;AACrF,MAAI,WACF,OAAM,KAAK,WAAW;AAExB;;AAGF,KAAI,OAAO,UAAU,UAAU;AAC7B,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,CAC9C,WAAU,GAAG,KAAK,GAAG,IAAI,IAAI,OAAO,MAAM;AAE5C;;CAGF,MAAM,aAAa,wBAAwB;EAAE;EAAa;EAAiB,CAAC;AAC5E,KAAI,WACF,OAAM,KAAK,WAAW;;AAI1B,MAAa,mBAAoC,UAAU;CACzD,MAAM,QAAkB,EAAE;AAC1B,MAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,MAAM,CAC/C,WAAU,MAAM,OAAO,MAAM;AAE/B,QAAO,MAAM,KAAK,IAAI"}
|
|
@@ -1,85 +1,26 @@
|
|
|
1
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
let async_sema = require("async-sema");
|
|
1
3
|
|
|
2
4
|
//#region src/utils/rate-limit.ts
|
|
3
|
-
const
|
|
5
|
+
const DEFAULT_REQUESTS_PER_SECOND = 6;
|
|
4
6
|
const MAX_RATE_LIMIT = 1e3;
|
|
5
7
|
/**
|
|
6
|
-
* Concurrency limiter: allows up to `initialLimit` requests to be in-flight
|
|
7
|
-
* at the same time. A slot is freed as soon as the request's promise settles
|
|
8
|
-
* (resolves or rejects), so throughput scales with how quickly requests
|
|
9
|
-
* complete rather than being artificially capped at N per second.
|
|
10
|
-
*/
|
|
11
|
-
function createThrottle(initialLimit) {
|
|
12
|
-
let limit = initialLimit;
|
|
13
|
-
let activeCount = 0;
|
|
14
|
-
const queue = [];
|
|
15
|
-
const tryNext = () => {
|
|
16
|
-
while (queue.length > 0 && activeCount < limit) {
|
|
17
|
-
activeCount++;
|
|
18
|
-
queue.shift()();
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
const execute = (fn) => {
|
|
22
|
-
return new Promise((resolve, reject) => {
|
|
23
|
-
queue.push(() => {
|
|
24
|
-
fn().then((value) => {
|
|
25
|
-
activeCount--;
|
|
26
|
-
tryNext();
|
|
27
|
-
resolve(value);
|
|
28
|
-
}, (error) => {
|
|
29
|
-
activeCount--;
|
|
30
|
-
tryNext();
|
|
31
|
-
reject(error);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
tryNext();
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
const setLimit = (n) => {
|
|
38
|
-
limit = n;
|
|
39
|
-
tryNext();
|
|
40
|
-
};
|
|
41
|
-
return {
|
|
42
|
-
execute,
|
|
43
|
-
setLimit
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Extracts the quota (`q=`) value from the `X-RateLimit-Policy` response header.
|
|
48
|
-
* Returns `undefined` if the header is absent or unparseable.
|
|
49
|
-
*
|
|
50
|
-
* Example header: `"concurrent-requests";q=30`
|
|
51
|
-
*/
|
|
52
|
-
function parseRateLimitPolicyHeader(response) {
|
|
53
|
-
const policy = response.headers.get("x-ratelimit-policy");
|
|
54
|
-
if (!policy) return;
|
|
55
|
-
const match = policy.match(/q=(\d+)/);
|
|
56
|
-
if (!match) return;
|
|
57
|
-
return Math.min(Number.parseInt(match[1], 10), MAX_RATE_LIMIT);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
8
|
* Creates a `ThrottleManager` from the user-supplied `rateLimit` config.
|
|
61
9
|
*
|
|
62
|
-
* - `false`
|
|
63
|
-
* - `number`
|
|
64
|
-
* - `{
|
|
65
|
-
* - `{}` / `undefined` (default)->
|
|
10
|
+
* - `false` -> no throttling (passthrough)
|
|
11
|
+
* - `number` -> N requests per second
|
|
12
|
+
* - `{ requestsPerSecond: n }` -> N requests per second
|
|
13
|
+
* - `{}` / `undefined` (default) -> DEFAULT_REQUESTS_PER_SECOND per second
|
|
66
14
|
*/
|
|
67
15
|
function createThrottleManager(config) {
|
|
68
|
-
if (config === false) return {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
execute: (fn) => throttle.execute(fn),
|
|
77
|
-
adaptToResponse: (response) => {
|
|
78
|
-
if (!adaptToServerHeaders || response === void 0) return;
|
|
79
|
-
const serverLimit = parseRateLimitPolicyHeader(response);
|
|
80
|
-
if (serverLimit !== void 0) throttle.setLimit(Math.min(cappedLimit, serverLimit));
|
|
81
|
-
}
|
|
82
|
-
};
|
|
16
|
+
if (config === false) return { execute: (fn) => fn() };
|
|
17
|
+
const { requestsPerSecond, maxConcurrency } = typeof config === "number" ? { requestsPerSecond: config } : config;
|
|
18
|
+
const rps = requestsPerSecond ?? maxConcurrency ?? DEFAULT_REQUESTS_PER_SECOND;
|
|
19
|
+
const rl = (0, async_sema.RateLimit)(Math.min(rps, MAX_RATE_LIMIT));
|
|
20
|
+
return { execute: async (fn) => {
|
|
21
|
+
await rl();
|
|
22
|
+
return fn();
|
|
23
|
+
} };
|
|
83
24
|
}
|
|
84
25
|
|
|
85
26
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.cjs","names":[],"sources":["../../src/utils/rate-limit.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"rate-limit.cjs","names":[],"sources":["../../src/utils/rate-limit.ts"],"sourcesContent":["import { RateLimit } from 'async-sema';\n\nconst DEFAULT_REQUESTS_PER_SECOND = 6;\nconst MAX_RATE_LIMIT = 1_000;\n\nexport interface RateLimitConfig {\n /**\n * Maximum number of MAPI requests to start per second.\n * Defaults to 6. Capped at 1000.\n */\n requestsPerSecond?: number;\n /**\n * @deprecated Use `requestsPerSecond` instead.\n * @todo(next-major): Remove this field.\n */\n maxConcurrency?: number;\n}\n\nexport interface ThrottleManager {\n execute: <T>(fn: () => Promise<T>) => Promise<T>;\n}\n\n/**\n * Creates a `ThrottleManager` from the user-supplied `rateLimit` config.\n *\n * - `false` -> no throttling (passthrough)\n * - `number` -> N requests per second\n * - `{ requestsPerSecond: n }` -> N requests per second\n * - `{}` / `undefined` (default) -> DEFAULT_REQUESTS_PER_SECOND per second\n */\nexport function createThrottleManager(config: RateLimitConfig | number | false): ThrottleManager {\n if (config === false) {\n return { execute: fn => fn() };\n }\n\n const resolvedConfig: RateLimitConfig = typeof config === 'number' ? { requestsPerSecond: config } : config;\n const { requestsPerSecond, maxConcurrency } = resolvedConfig;\n const rps = requestsPerSecond ?? maxConcurrency ?? DEFAULT_REQUESTS_PER_SECOND;\n const rl = RateLimit(Math.min(rps, MAX_RATE_LIMIT));\n\n return {\n execute: async (fn) => {\n await rl();\n return fn();\n },\n };\n}\n"],"mappings":";;;;AAEA,MAAM,8BAA8B;AACpC,MAAM,iBAAiB;;;;;;;;;AA2BvB,SAAgB,sBAAsB,QAA2D;AAC/F,KAAI,WAAW,MACb,QAAO,EAAE,UAAS,OAAM,IAAI,EAAE;CAIhC,MAAM,EAAE,mBAAmB,mBADa,OAAO,WAAW,WAAW,EAAE,mBAAmB,QAAQ,GAAG;CAErG,MAAM,MAAM,qBAAqB,kBAAkB;CACnD,MAAM,+BAAe,KAAK,IAAI,KAAK,eAAe,CAAC;AAEnD,QAAO,EACL,SAAS,OAAO,OAAO;AACrB,QAAM,IAAI;AACV,SAAO,IAAI;IAEd"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
//#region src/utils/rate-limit.d.ts
|
|
2
2
|
interface RateLimitConfig {
|
|
3
3
|
/**
|
|
4
|
-
* Maximum number of
|
|
4
|
+
* Maximum number of MAPI requests to start per second.
|
|
5
5
|
* Defaults to 6. Capped at 1000.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
requestsPerSecond?: number;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* @default true
|
|
9
|
+
* @deprecated Use `requestsPerSecond` instead.
|
|
10
|
+
* @todo(next-major): Remove this field.
|
|
12
11
|
*/
|
|
13
|
-
|
|
12
|
+
maxConcurrency?: number;
|
|
14
13
|
}
|
|
15
14
|
//#endregion
|
|
16
15
|
export { RateLimitConfig };
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
//#region src/utils/rate-limit.d.ts
|
|
2
2
|
interface RateLimitConfig {
|
|
3
3
|
/**
|
|
4
|
-
* Maximum number of
|
|
4
|
+
* Maximum number of MAPI requests to start per second.
|
|
5
5
|
* Defaults to 6. Capped at 1000.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
requestsPerSecond?: number;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* @default true
|
|
9
|
+
* @deprecated Use `requestsPerSecond` instead.
|
|
10
|
+
* @todo(next-major): Remove this field.
|
|
12
11
|
*/
|
|
13
|
-
|
|
12
|
+
maxConcurrency?: number;
|
|
14
13
|
}
|
|
15
14
|
//#endregion
|
|
16
15
|
export { RateLimitConfig };
|
|
@@ -1,84 +1,25 @@
|
|
|
1
|
+
import { RateLimit } from "async-sema";
|
|
2
|
+
|
|
1
3
|
//#region src/utils/rate-limit.ts
|
|
2
|
-
const
|
|
4
|
+
const DEFAULT_REQUESTS_PER_SECOND = 6;
|
|
3
5
|
const MAX_RATE_LIMIT = 1e3;
|
|
4
6
|
/**
|
|
5
|
-
* Concurrency limiter: allows up to `initialLimit` requests to be in-flight
|
|
6
|
-
* at the same time. A slot is freed as soon as the request's promise settles
|
|
7
|
-
* (resolves or rejects), so throughput scales with how quickly requests
|
|
8
|
-
* complete rather than being artificially capped at N per second.
|
|
9
|
-
*/
|
|
10
|
-
function createThrottle(initialLimit) {
|
|
11
|
-
let limit = initialLimit;
|
|
12
|
-
let activeCount = 0;
|
|
13
|
-
const queue = [];
|
|
14
|
-
const tryNext = () => {
|
|
15
|
-
while (queue.length > 0 && activeCount < limit) {
|
|
16
|
-
activeCount++;
|
|
17
|
-
queue.shift()();
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
const execute = (fn) => {
|
|
21
|
-
return new Promise((resolve, reject) => {
|
|
22
|
-
queue.push(() => {
|
|
23
|
-
fn().then((value) => {
|
|
24
|
-
activeCount--;
|
|
25
|
-
tryNext();
|
|
26
|
-
resolve(value);
|
|
27
|
-
}, (error) => {
|
|
28
|
-
activeCount--;
|
|
29
|
-
tryNext();
|
|
30
|
-
reject(error);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
tryNext();
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
const setLimit = (n) => {
|
|
37
|
-
limit = n;
|
|
38
|
-
tryNext();
|
|
39
|
-
};
|
|
40
|
-
return {
|
|
41
|
-
execute,
|
|
42
|
-
setLimit
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Extracts the quota (`q=`) value from the `X-RateLimit-Policy` response header.
|
|
47
|
-
* Returns `undefined` if the header is absent or unparseable.
|
|
48
|
-
*
|
|
49
|
-
* Example header: `"concurrent-requests";q=30`
|
|
50
|
-
*/
|
|
51
|
-
function parseRateLimitPolicyHeader(response) {
|
|
52
|
-
const policy = response.headers.get("x-ratelimit-policy");
|
|
53
|
-
if (!policy) return;
|
|
54
|
-
const match = policy.match(/q=(\d+)/);
|
|
55
|
-
if (!match) return;
|
|
56
|
-
return Math.min(Number.parseInt(match[1], 10), MAX_RATE_LIMIT);
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
7
|
* Creates a `ThrottleManager` from the user-supplied `rateLimit` config.
|
|
60
8
|
*
|
|
61
|
-
* - `false`
|
|
62
|
-
* - `number`
|
|
63
|
-
* - `{
|
|
64
|
-
* - `{}` / `undefined` (default)->
|
|
9
|
+
* - `false` -> no throttling (passthrough)
|
|
10
|
+
* - `number` -> N requests per second
|
|
11
|
+
* - `{ requestsPerSecond: n }` -> N requests per second
|
|
12
|
+
* - `{}` / `undefined` (default) -> DEFAULT_REQUESTS_PER_SECOND per second
|
|
65
13
|
*/
|
|
66
14
|
function createThrottleManager(config) {
|
|
67
|
-
if (config === false) return {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
execute: (fn) => throttle.execute(fn),
|
|
76
|
-
adaptToResponse: (response) => {
|
|
77
|
-
if (!adaptToServerHeaders || response === void 0) return;
|
|
78
|
-
const serverLimit = parseRateLimitPolicyHeader(response);
|
|
79
|
-
if (serverLimit !== void 0) throttle.setLimit(Math.min(cappedLimit, serverLimit));
|
|
80
|
-
}
|
|
81
|
-
};
|
|
15
|
+
if (config === false) return { execute: (fn) => fn() };
|
|
16
|
+
const { requestsPerSecond, maxConcurrency } = typeof config === "number" ? { requestsPerSecond: config } : config;
|
|
17
|
+
const rps = requestsPerSecond ?? maxConcurrency ?? DEFAULT_REQUESTS_PER_SECOND;
|
|
18
|
+
const rl = RateLimit(Math.min(rps, MAX_RATE_LIMIT));
|
|
19
|
+
return { execute: async (fn) => {
|
|
20
|
+
await rl();
|
|
21
|
+
return fn();
|
|
22
|
+
} };
|
|
82
23
|
}
|
|
83
24
|
|
|
84
25
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.mjs","names":[],"sources":["../../src/utils/rate-limit.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"rate-limit.mjs","names":[],"sources":["../../src/utils/rate-limit.ts"],"sourcesContent":["import { RateLimit } from 'async-sema';\n\nconst DEFAULT_REQUESTS_PER_SECOND = 6;\nconst MAX_RATE_LIMIT = 1_000;\n\nexport interface RateLimitConfig {\n /**\n * Maximum number of MAPI requests to start per second.\n * Defaults to 6. Capped at 1000.\n */\n requestsPerSecond?: number;\n /**\n * @deprecated Use `requestsPerSecond` instead.\n * @todo(next-major): Remove this field.\n */\n maxConcurrency?: number;\n}\n\nexport interface ThrottleManager {\n execute: <T>(fn: () => Promise<T>) => Promise<T>;\n}\n\n/**\n * Creates a `ThrottleManager` from the user-supplied `rateLimit` config.\n *\n * - `false` -> no throttling (passthrough)\n * - `number` -> N requests per second\n * - `{ requestsPerSecond: n }` -> N requests per second\n * - `{}` / `undefined` (default) -> DEFAULT_REQUESTS_PER_SECOND per second\n */\nexport function createThrottleManager(config: RateLimitConfig | number | false): ThrottleManager {\n if (config === false) {\n return { execute: fn => fn() };\n }\n\n const resolvedConfig: RateLimitConfig = typeof config === 'number' ? { requestsPerSecond: config } : config;\n const { requestsPerSecond, maxConcurrency } = resolvedConfig;\n const rps = requestsPerSecond ?? maxConcurrency ?? DEFAULT_REQUESTS_PER_SECOND;\n const rl = RateLimit(Math.min(rps, MAX_RATE_LIMIT));\n\n return {\n execute: async (fn) => {\n await rl();\n return fn();\n },\n };\n}\n"],"mappings":";;;AAEA,MAAM,8BAA8B;AACpC,MAAM,iBAAiB;;;;;;;;;AA2BvB,SAAgB,sBAAsB,QAA2D;AAC/F,KAAI,WAAW,MACb,QAAO,EAAE,UAAS,OAAM,IAAI,EAAE;CAIhC,MAAM,EAAE,mBAAmB,mBADa,OAAO,WAAW,WAAW,EAAE,mBAAmB,QAAQ,GAAG;CAErG,MAAM,MAAM,qBAAqB,kBAAkB;CACnD,MAAM,KAAK,UAAU,KAAK,IAAI,KAAK,eAAe,CAAC;AAEnD,QAAO,EACL,SAAS,OAAO,OAAO;AACrB,QAAM,IAAI;AACV,SAAO,IAAI;IAEd"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storyblok/management-api-client",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.0-alpha.
|
|
4
|
+
"version": "1.0.0-alpha.3",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Storyblok Management API Client",
|
|
7
7
|
"author": "",
|
|
@@ -30,38 +30,39 @@
|
|
|
30
30
|
"access": "public"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
+
"async-sema": "^3.1.1",
|
|
33
34
|
"ky": "^1.14.3",
|
|
34
|
-
"@storyblok/region-helper": "1.4.
|
|
35
|
-
"@storyblok/schema": "1.0.0-alpha.0"
|
|
35
|
+
"@storyblok/region-helper": "1.4.1"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@hey-api/openapi-ts": "^0.92.3",
|
|
39
|
-
"@msw/source": "^0.6.1",
|
|
40
38
|
"@types/node": "^24.1.0",
|
|
41
|
-
"dotenv": "^17.3.1",
|
|
42
39
|
"eslint": "^9.39.2",
|
|
43
|
-
"glob": "^13.0.6",
|
|
44
40
|
"msw": "^2.12.9",
|
|
45
41
|
"pathe": "^2.0.3",
|
|
46
42
|
"tsdown": "^0.20.3",
|
|
47
43
|
"tsx": "^4.20.3",
|
|
48
44
|
"vitest": "^4.1.3",
|
|
49
|
-
"@storyblok/
|
|
50
|
-
"@storyblok/
|
|
45
|
+
"@storyblok/eslint-config": "0.5.1",
|
|
46
|
+
"@storyblok/openapi-codegen": "0.0.1"
|
|
51
47
|
},
|
|
52
48
|
"nx": {
|
|
53
49
|
"targets": {
|
|
54
50
|
"generate": {
|
|
55
|
-
"
|
|
56
|
-
"
|
|
51
|
+
"inputs": [
|
|
52
|
+
"{projectRoot}/scripts/generate.ts",
|
|
53
|
+
"{projectRoot}/package.json",
|
|
54
|
+
"openapiCodegen"
|
|
57
55
|
],
|
|
58
56
|
"outputs": [
|
|
59
57
|
"{projectRoot}/src/generated/**"
|
|
58
|
+
],
|
|
59
|
+
"cache": true,
|
|
60
|
+
"dependsOn": [
|
|
61
|
+
"@storyblok/openapi-codegen:build"
|
|
60
62
|
]
|
|
61
63
|
},
|
|
62
64
|
"build": {
|
|
63
65
|
"dependsOn": [
|
|
64
|
-
"generate",
|
|
65
66
|
"^build"
|
|
66
67
|
],
|
|
67
68
|
"outputs": [
|
|
@@ -75,7 +76,6 @@
|
|
|
75
76
|
"build": "tsdown",
|
|
76
77
|
"test": "vitest run",
|
|
77
78
|
"test:types": "tsc --noEmit --skipLibCheck",
|
|
78
|
-
"test:e2e": "vitest run -c vitest.config.e2e.ts",
|
|
79
79
|
"coverage": "vitest run --coverage",
|
|
80
80
|
"lint": "eslint .",
|
|
81
81
|
"lint:fix": "eslint . --fix"
|