From e088eb07622a360604c32bd44ffaaa755a0d9e6a Mon Sep 17 00:00:00 2001 From: Alexandre Marques Date: Fri, 13 Nov 2026 11:03:47 +0000 Subject: [PATCH] fix(sdk): keep per-API imports from pulling every API's docs into a bundle Importing one client, e.g. @epilot/sdk/pricing, made bundlers emit a lazy chunk for the docs and OpenAPI spec of every API (about 160 chunks, 5 MiB). client.help() and client.openapi() looked their files up by name through a glob import that lived in the chunk every per-API entry shares. Each @epilot/sdk/ entry now passes loaders with literal paths to its own two files. The by-name lookup stays for the root SDK only. help() and openapi() behave as before. Co-Authored-By: Claude Fable 5.2 --- .changeset/sdk-per-api-lazy-docs.md | 9 +++++ .../__tests__/dist-integration.test.ts | 34 +++++++++++++++++- packages/epilot-sdk-v2/src/api-docs.ts | 35 +++++++++++++++++++ .../epilot-sdk-v2/src/apis/access-token.ts | 12 +++++-- .../src/apis/address-suggestions.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/address.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/ai-agents.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/app.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/audit-logs.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/automation.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/billing.ts | 12 +++++-- .../src/apis/blueprint-manifest.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/calendar.ts | 11 ++++-- packages/epilot-sdk-v2/src/apis/chat.ts | 11 ++++-- .../src/apis/configuration-hub.ts | 11 ++++-- packages/epilot-sdk-v2/src/apis/consent.ts | 12 +++++-- .../epilot-sdk-v2/src/apis/customer-portal.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/dashboard.ts | 12 +++++-- .../epilot-sdk-v2/src/apis/data-governance.ts | 12 +++++-- .../epilot-sdk-v2/src/apis/deduplication.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/design.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/document.ts | 12 +++++-- .../epilot-sdk-v2/src/apis/email-settings.ts | 12 +++++-- .../epilot-sdk-v2/src/apis/email-template.ts | 12 +++++-- .../epilot-sdk-v2/src/apis/entity-mapping.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/entity-ui.ts | 11 ++++-- packages/epilot-sdk-v2/src/apis/entity.ts | 12 +++++-- .../epilot-sdk-v2/src/apis/environments.ts | 12 +++++-- .../epilot-sdk-v2/src/apis/event-catalog.ts | 12 +++++-- .../epilot-sdk-v2/src/apis/external-values.ts | 11 ++++-- packages/epilot-sdk-v2/src/apis/file.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/iban.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/identity.ts | 11 ++++-- .../src/apis/integration-toolkit.ts | 11 ++++-- packages/epilot-sdk-v2/src/apis/journey.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/kanban.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/message.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/metering.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/notes.ts | 12 +++++-- .../epilot-sdk-v2/src/apis/notification.ts | 12 +++++-- .../epilot-sdk-v2/src/apis/organization.ts | 12 +++++-- .../src/apis/partner-directory.ts | 12 +++++-- .../epilot-sdk-v2/src/apis/permissions.ts | 12 +++++-- .../src/apis/phone-integration.ts | 11 ++++-- .../epilot-sdk-v2/src/apis/pricing-tier.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/pricing.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/purpose.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/query.ts | 11 ++++-- packages/epilot-sdk-v2/src/apis/sandbox.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/sharing.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/snapshot.ts | 11 ++++-- packages/epilot-sdk-v2/src/apis/submission.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/target.ts | 11 ++++-- packages/epilot-sdk-v2/src/apis/targeting.ts | 12 +++++-- .../src/apis/template-variables.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/user.ts | 12 +++++-- .../src/apis/validation-rules.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/webhooks.ts | 12 +++++-- .../src/apis/workflow-definition.ts | 12 +++++-- packages/epilot-sdk-v2/src/apis/workflow.ts | 12 +++++-- packages/epilot-sdk-v2/src/client-factory.ts | 13 ++++--- packages/epilot-sdk-v2/src/help.ts | 6 ++-- packages/epilot-sdk-v2/src/openapi.ts | 6 ++-- packages/epilot-sdk-v2/src/registry.ts | 11 +++++- packages/epilot-sdk-v2/src/sdk.ts | 4 +-- scripts/generate-sdk-v2.ts | 14 ++++++-- 66 files changed, 674 insertions(+), 131 deletions(-) create mode 100644 .changeset/sdk-per-api-lazy-docs.md create mode 100644 packages/epilot-sdk-v2/src/api-docs.ts diff --git a/.changeset/sdk-per-api-lazy-docs.md b/.changeset/sdk-per-api-lazy-docs.md new file mode 100644 index 000000000..ad9177afa --- /dev/null +++ b/.changeset/sdk-per-api-lazy-docs.md @@ -0,0 +1,9 @@ +--- +'@epilot/sdk': patch +--- + +Stop per-API imports from pulling every API's docs into a bundle + +Importing one client, e.g. `@epilot/sdk/pricing`, made bundlers emit a lazy chunk for the docs and OpenAPI spec of every API in the SDK (about 160 chunks, 5 MiB), because `client.help()` and `client.openapi()` looked their files up by name. Each `@epilot/sdk/` entry now references only its own two files. + +`help()` and `openapi()` behave as before, on clients and on the root `epilot` SDK. diff --git a/packages/epilot-sdk-v2/__tests__/dist-integration.test.ts b/packages/epilot-sdk-v2/__tests__/dist-integration.test.ts index 5f21465d5..0cef9ff44 100644 --- a/packages/epilot-sdk-v2/__tests__/dist-integration.test.ts +++ b/packages/epilot-sdk-v2/__tests__/dist-integration.test.ts @@ -5,7 +5,7 @@ * and make real API calls intercepted by msw. */ import { readdirSync, readFileSync, existsSync } from 'node:fs'; -import { resolve } from 'node:path'; +import { dirname, resolve } from 'node:path'; import { describe, it, expect, beforeAll, afterAll, afterEach } from 'vitest'; import { http, HttpResponse } from 'msw'; @@ -214,6 +214,38 @@ describe('lazy loading', () => { expect(content.length).toBeLessThan(50_000); }); + // A bundler emits a chunk for every import() an entry can reach, whether or not it ever runs. + it('a per-API entry reaches lazy chunks for its own docs only', () => { + const staticImports = (file: string): string[] => + [...readFileSync(file, 'utf-8').matchAll(/from "(\.{1,2}\/[^"]+)"/g)].map((m) => resolve(dirname(file), m[1])); + + const reachable = (file: string, seen = new Set()): Set => { + if (seen.has(file)) return seen; + seen.add(file); + for (const imported of staticImports(file)) reachable(imported, seen); + + return seen; + }; + + const lazyImports = (entry: string): string[] => + [...reachable(entry)].flatMap((file) => readFileSync(file, 'utf-8').match(/import\("[^"]+"\)/g) ?? []); + + const entries = readdirSync(APIS_DIR).filter((f) => f.endsWith('.js') && !f.startsWith('_')); + + for (const entry of entries) { + // its help() doc and, where one is checked in, its full OpenAPI spec + expect(lazyImports(resolve(APIS_DIR, entry)).length, entry).toBeLessThanOrEqual(2); + } + }); + + it('a per-API entry still serves help() and openapi()', async () => { + const { getClient } = await import('../dist/apis/entity.js'); + const client = getClient(); + + expect(await client.help()).toContain('# Entity API'); + expect((await client.openapi()).info.title).toBe('Entity API'); + }); + it('dist file structure is complete', () => { expect(existsSync(resolve(DIST_DIR, 'index.js'))).toBe(true); expect(existsSync(resolve(DIST_DIR, 'index.cjs'))).toBe(true); diff --git a/packages/epilot-sdk-v2/src/api-docs.ts b/packages/epilot-sdk-v2/src/api-docs.ts new file mode 100644 index 000000000..7b0b97b85 --- /dev/null +++ b/packages/epilot-sdk-v2/src/api-docs.ts @@ -0,0 +1,35 @@ +import type { Document } from 'openapi-client-axios'; + +/** What a client's help() and openapi() resolve to. */ +export type ApiDocs = { + help: () => Promise; + openapi: () => Promise; +}; + +const unwrapDefault = (mod: unknown): T => ((mod as { default?: T }).default ?? mod) as T; + +/** + * Builds a client's docs from loaders that import exactly that API's files. + * + * Each `@epilot/sdk/` entry passes literal import() paths, so a bundler emits lazy chunks + * for the APIs an app imports. Looking docs up by name instead (see help.ts and openapi.ts) + * makes it emit a chunk for every API in the SDK. + */ +export const lazyApiDocs = (params: { + apiName: string; + help: () => Promise; + openapi?: () => Promise; +}): ApiDocs => { + const { apiName, help, openapi } = params; + + return { + help: async () => unwrapDefault(await help()), + openapi: async () => { + if (!openapi) { + throw new Error(`No OpenAPI specification bundled for "${apiName}"`); + } + + return unwrapDefault(await openapi()); + }, + }; +}; diff --git a/packages/epilot-sdk-v2/src/apis/access-token.ts b/packages/epilot-sdk-v2/src/apis/access-token.ts index eed0c0260..70dd78f43 100644 --- a/packages/epilot-sdk-v2/src/apis/access-token.ts +++ b/packages/epilot-sdk-v2/src/apis/access-token.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'accessToken', + help: () => import('../docs/access-token.json'), + openapi: () => import('../definitions/access-token.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'accessToken' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'accessToken' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'accessToken', }); diff --git a/packages/epilot-sdk-v2/src/apis/address-suggestions.ts b/packages/epilot-sdk-v2/src/apis/address-suggestions.ts index 0108027b6..4fe0a0562 100644 --- a/packages/epilot-sdk-v2/src/apis/address-suggestions.ts +++ b/packages/epilot-sdk-v2/src/apis/address-suggestions.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'addressSuggestions', + help: () => import('../docs/address-suggestions.json'), + openapi: () => import('../definitions/address-suggestions.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'addressSuggestions' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'addressSuggestions' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'addressSuggestions', }); diff --git a/packages/epilot-sdk-v2/src/apis/address.ts b/packages/epilot-sdk-v2/src/apis/address.ts index 82b734c34..79c48d952 100644 --- a/packages/epilot-sdk-v2/src/apis/address.ts +++ b/packages/epilot-sdk-v2/src/apis/address.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'address', + help: () => import('../docs/address.json'), + openapi: () => import('../definitions/address.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'address' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'address' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'address', }); diff --git a/packages/epilot-sdk-v2/src/apis/ai-agents.ts b/packages/epilot-sdk-v2/src/apis/ai-agents.ts index c30e90862..a3d1b4c6e 100644 --- a/packages/epilot-sdk-v2/src/apis/ai-agents.ts +++ b/packages/epilot-sdk-v2/src/apis/ai-agents.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'aiAgents', + help: () => import('../docs/ai-agents.json'), + openapi: () => import('../definitions/ai-agents.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'aiAgents' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'aiAgents' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'aiAgents', }); diff --git a/packages/epilot-sdk-v2/src/apis/app.ts b/packages/epilot-sdk-v2/src/apis/app.ts index 6409a9dcd..c6ecf2e6f 100644 --- a/packages/epilot-sdk-v2/src/apis/app.ts +++ b/packages/epilot-sdk-v2/src/apis/app.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'app', + help: () => import('../docs/app.json'), + openapi: () => import('../definitions/app.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'app' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'app' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'app', }); diff --git a/packages/epilot-sdk-v2/src/apis/audit-logs.ts b/packages/epilot-sdk-v2/src/apis/audit-logs.ts index ae11c2193..02169a786 100644 --- a/packages/epilot-sdk-v2/src/apis/audit-logs.ts +++ b/packages/epilot-sdk-v2/src/apis/audit-logs.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'auditLogs', + help: () => import('../docs/audit-logs.json'), + openapi: () => import('../definitions/audit-logs.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'auditLogs' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'auditLogs' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'auditLogs', }); diff --git a/packages/epilot-sdk-v2/src/apis/automation.ts b/packages/epilot-sdk-v2/src/apis/automation.ts index e32568e95..cb478848b 100644 --- a/packages/epilot-sdk-v2/src/apis/automation.ts +++ b/packages/epilot-sdk-v2/src/apis/automation.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'automation', + help: () => import('../docs/automation.json'), + openapi: () => import('../definitions/automation.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'automation' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'automation' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'automation', }); diff --git a/packages/epilot-sdk-v2/src/apis/billing.ts b/packages/epilot-sdk-v2/src/apis/billing.ts index 880aa98a3..3dd733477 100644 --- a/packages/epilot-sdk-v2/src/apis/billing.ts +++ b/packages/epilot-sdk-v2/src/apis/billing.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'billing', + help: () => import('../docs/billing.json'), + openapi: () => import('../definitions/billing.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'billing' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'billing' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'billing', }); diff --git a/packages/epilot-sdk-v2/src/apis/blueprint-manifest.ts b/packages/epilot-sdk-v2/src/apis/blueprint-manifest.ts index 94531de08..433d26bad 100644 --- a/packages/epilot-sdk-v2/src/apis/blueprint-manifest.ts +++ b/packages/epilot-sdk-v2/src/apis/blueprint-manifest.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'blueprintManifest', + help: () => import('../docs/blueprint-manifest.json'), + openapi: () => import('../definitions/blueprint-manifest.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'blueprintManifest' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'blueprintManifest' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'blueprintManifest', }); diff --git a/packages/epilot-sdk-v2/src/apis/calendar.ts b/packages/epilot-sdk-v2/src/apis/calendar.ts index e50592c08..d0d8757ed 100644 --- a/packages/epilot-sdk-v2/src/apis/calendar.ts +++ b/packages/epilot-sdk-v2/src/apis/calendar.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,25 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'calendar', + help: () => import('../docs/calendar.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'calendar' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'calendar' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'calendar', }); diff --git a/packages/epilot-sdk-v2/src/apis/chat.ts b/packages/epilot-sdk-v2/src/apis/chat.ts index b29edb44f..efc85a380 100644 --- a/packages/epilot-sdk-v2/src/apis/chat.ts +++ b/packages/epilot-sdk-v2/src/apis/chat.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,25 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'chat', + help: () => import('../docs/chat.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'chat' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'chat' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'chat', }); diff --git a/packages/epilot-sdk-v2/src/apis/configuration-hub.ts b/packages/epilot-sdk-v2/src/apis/configuration-hub.ts index e91ad31d1..5fd585fa0 100644 --- a/packages/epilot-sdk-v2/src/apis/configuration-hub.ts +++ b/packages/epilot-sdk-v2/src/apis/configuration-hub.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,25 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'configurationHub', + help: () => import('../docs/configuration-hub.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'configurationHub' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'configurationHub' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'configurationHub', }); diff --git a/packages/epilot-sdk-v2/src/apis/consent.ts b/packages/epilot-sdk-v2/src/apis/consent.ts index e6e2f40b3..03c8fcaae 100644 --- a/packages/epilot-sdk-v2/src/apis/consent.ts +++ b/packages/epilot-sdk-v2/src/apis/consent.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'consent', + help: () => import('../docs/consent.json'), + openapi: () => import('../definitions/consent.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'consent' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'consent' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'consent', }); diff --git a/packages/epilot-sdk-v2/src/apis/customer-portal.ts b/packages/epilot-sdk-v2/src/apis/customer-portal.ts index 13134f62d..b65079aa3 100644 --- a/packages/epilot-sdk-v2/src/apis/customer-portal.ts +++ b/packages/epilot-sdk-v2/src/apis/customer-portal.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'customerPortal', + help: () => import('../docs/customer-portal.json'), + openapi: () => import('../definitions/customer-portal.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'customerPortal' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'customerPortal' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'customerPortal', }); diff --git a/packages/epilot-sdk-v2/src/apis/dashboard.ts b/packages/epilot-sdk-v2/src/apis/dashboard.ts index 24680dcd4..58531d519 100644 --- a/packages/epilot-sdk-v2/src/apis/dashboard.ts +++ b/packages/epilot-sdk-v2/src/apis/dashboard.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'dashboard', + help: () => import('../docs/dashboard.json'), + openapi: () => import('../definitions/dashboard.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'dashboard' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'dashboard' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'dashboard', }); diff --git a/packages/epilot-sdk-v2/src/apis/data-governance.ts b/packages/epilot-sdk-v2/src/apis/data-governance.ts index 63a04b9b5..c4e32cf03 100644 --- a/packages/epilot-sdk-v2/src/apis/data-governance.ts +++ b/packages/epilot-sdk-v2/src/apis/data-governance.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'dataGovernance', + help: () => import('../docs/data-governance.json'), + openapi: () => import('../definitions/data-governance.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'dataGovernance' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'dataGovernance' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'dataGovernance', }); diff --git a/packages/epilot-sdk-v2/src/apis/deduplication.ts b/packages/epilot-sdk-v2/src/apis/deduplication.ts index 933b1c758..664100579 100644 --- a/packages/epilot-sdk-v2/src/apis/deduplication.ts +++ b/packages/epilot-sdk-v2/src/apis/deduplication.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'deduplication', + help: () => import('../docs/deduplication.json'), + openapi: () => import('../definitions/deduplication.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'deduplication' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'deduplication' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'deduplication', }); diff --git a/packages/epilot-sdk-v2/src/apis/design.ts b/packages/epilot-sdk-v2/src/apis/design.ts index 3576aebea..421366a46 100644 --- a/packages/epilot-sdk-v2/src/apis/design.ts +++ b/packages/epilot-sdk-v2/src/apis/design.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'design', + help: () => import('../docs/design.json'), + openapi: () => import('../definitions/design.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'design' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'design' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'design', }); diff --git a/packages/epilot-sdk-v2/src/apis/document.ts b/packages/epilot-sdk-v2/src/apis/document.ts index 9910b4070..7dbf19250 100644 --- a/packages/epilot-sdk-v2/src/apis/document.ts +++ b/packages/epilot-sdk-v2/src/apis/document.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'document', + help: () => import('../docs/document.json'), + openapi: () => import('../definitions/document.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'document' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'document' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'document', }); diff --git a/packages/epilot-sdk-v2/src/apis/email-settings.ts b/packages/epilot-sdk-v2/src/apis/email-settings.ts index 33708ebae..3c4c09dae 100644 --- a/packages/epilot-sdk-v2/src/apis/email-settings.ts +++ b/packages/epilot-sdk-v2/src/apis/email-settings.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'emailSettings', + help: () => import('../docs/email-settings.json'), + openapi: () => import('../definitions/email-settings.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'emailSettings' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'emailSettings' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'emailSettings', }); diff --git a/packages/epilot-sdk-v2/src/apis/email-template.ts b/packages/epilot-sdk-v2/src/apis/email-template.ts index a35ff8ed6..c6ae42971 100644 --- a/packages/epilot-sdk-v2/src/apis/email-template.ts +++ b/packages/epilot-sdk-v2/src/apis/email-template.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'emailTemplate', + help: () => import('../docs/email-template.json'), + openapi: () => import('../definitions/email-template.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'emailTemplate' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'emailTemplate' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'emailTemplate', }); diff --git a/packages/epilot-sdk-v2/src/apis/entity-mapping.ts b/packages/epilot-sdk-v2/src/apis/entity-mapping.ts index 9dd2e57ec..8a43b28f7 100644 --- a/packages/epilot-sdk-v2/src/apis/entity-mapping.ts +++ b/packages/epilot-sdk-v2/src/apis/entity-mapping.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'entityMapping', + help: () => import('../docs/entity-mapping.json'), + openapi: () => import('../definitions/entity-mapping.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'entityMapping' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'entityMapping' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'entityMapping', }); diff --git a/packages/epilot-sdk-v2/src/apis/entity-ui.ts b/packages/epilot-sdk-v2/src/apis/entity-ui.ts index 8782191b1..9fc5f56a5 100644 --- a/packages/epilot-sdk-v2/src/apis/entity-ui.ts +++ b/packages/epilot-sdk-v2/src/apis/entity-ui.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,25 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'entityUi', + help: () => import('../docs/entity-ui.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'entityUi' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'entityUi' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'entityUi', }); diff --git a/packages/epilot-sdk-v2/src/apis/entity.ts b/packages/epilot-sdk-v2/src/apis/entity.ts index 1842b36f8..5549b1244 100644 --- a/packages/epilot-sdk-v2/src/apis/entity.ts +++ b/packages/epilot-sdk-v2/src/apis/entity.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -25,19 +26,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'entity', + help: () => import('../docs/entity.json'), + openapi: () => import('../definitions/entity.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'entity' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'entity' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'entity', }); diff --git a/packages/epilot-sdk-v2/src/apis/environments.ts b/packages/epilot-sdk-v2/src/apis/environments.ts index 0dfec8965..855fbb334 100644 --- a/packages/epilot-sdk-v2/src/apis/environments.ts +++ b/packages/epilot-sdk-v2/src/apis/environments.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'environments', + help: () => import('../docs/environments.json'), + openapi: () => import('../definitions/environments.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'environments' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'environments' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'environments', }); diff --git a/packages/epilot-sdk-v2/src/apis/event-catalog.ts b/packages/epilot-sdk-v2/src/apis/event-catalog.ts index 45f0ecf09..2ba999dc3 100644 --- a/packages/epilot-sdk-v2/src/apis/event-catalog.ts +++ b/packages/epilot-sdk-v2/src/apis/event-catalog.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'eventCatalog', + help: () => import('../docs/event-catalog.json'), + openapi: () => import('../definitions/event-catalog.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'eventCatalog' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'eventCatalog' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'eventCatalog', }); diff --git a/packages/epilot-sdk-v2/src/apis/external-values.ts b/packages/epilot-sdk-v2/src/apis/external-values.ts index 4927549fa..d752be20d 100644 --- a/packages/epilot-sdk-v2/src/apis/external-values.ts +++ b/packages/epilot-sdk-v2/src/apis/external-values.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,25 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'externalValues', + help: () => import('../docs/external-values.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'externalValues' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'externalValues' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'externalValues', }); diff --git a/packages/epilot-sdk-v2/src/apis/file.ts b/packages/epilot-sdk-v2/src/apis/file.ts index 9b27d283a..66a91c828 100644 --- a/packages/epilot-sdk-v2/src/apis/file.ts +++ b/packages/epilot-sdk-v2/src/apis/file.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'file', + help: () => import('../docs/file.json'), + openapi: () => import('../definitions/file.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'file' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'file' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'file', }); diff --git a/packages/epilot-sdk-v2/src/apis/iban.ts b/packages/epilot-sdk-v2/src/apis/iban.ts index acbe1fe14..34afc403f 100644 --- a/packages/epilot-sdk-v2/src/apis/iban.ts +++ b/packages/epilot-sdk-v2/src/apis/iban.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'iban', + help: () => import('../docs/iban.json'), + openapi: () => import('../definitions/iban.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'iban' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'iban' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'iban', }); diff --git a/packages/epilot-sdk-v2/src/apis/identity.ts b/packages/epilot-sdk-v2/src/apis/identity.ts index 829d2e620..af815aee4 100644 --- a/packages/epilot-sdk-v2/src/apis/identity.ts +++ b/packages/epilot-sdk-v2/src/apis/identity.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,25 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'identity', + help: () => import('../docs/identity.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'identity' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'identity' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'identity', }); diff --git a/packages/epilot-sdk-v2/src/apis/integration-toolkit.ts b/packages/epilot-sdk-v2/src/apis/integration-toolkit.ts index c81c6034b..4da378ced 100644 --- a/packages/epilot-sdk-v2/src/apis/integration-toolkit.ts +++ b/packages/epilot-sdk-v2/src/apis/integration-toolkit.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -25,19 +26,25 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'integrationToolkit', + help: () => import('../docs/integration-toolkit.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'integrationToolkit' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'integrationToolkit' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'integrationToolkit', }); diff --git a/packages/epilot-sdk-v2/src/apis/journey.ts b/packages/epilot-sdk-v2/src/apis/journey.ts index f14a79812..933cdb532 100644 --- a/packages/epilot-sdk-v2/src/apis/journey.ts +++ b/packages/epilot-sdk-v2/src/apis/journey.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'journey', + help: () => import('../docs/journey.json'), + openapi: () => import('../definitions/journey.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'journey' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'journey' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'journey', }); diff --git a/packages/epilot-sdk-v2/src/apis/kanban.ts b/packages/epilot-sdk-v2/src/apis/kanban.ts index 93eecb4a4..2e2d72d4a 100644 --- a/packages/epilot-sdk-v2/src/apis/kanban.ts +++ b/packages/epilot-sdk-v2/src/apis/kanban.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'kanban', + help: () => import('../docs/kanban.json'), + openapi: () => import('../definitions/kanban.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'kanban' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'kanban' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'kanban', }); diff --git a/packages/epilot-sdk-v2/src/apis/message.ts b/packages/epilot-sdk-v2/src/apis/message.ts index 692db85be..895b3d6e2 100644 --- a/packages/epilot-sdk-v2/src/apis/message.ts +++ b/packages/epilot-sdk-v2/src/apis/message.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'message', + help: () => import('../docs/message.json'), + openapi: () => import('../definitions/message.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'message' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'message' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'message', }); diff --git a/packages/epilot-sdk-v2/src/apis/metering.ts b/packages/epilot-sdk-v2/src/apis/metering.ts index 7295730c7..3100c856f 100644 --- a/packages/epilot-sdk-v2/src/apis/metering.ts +++ b/packages/epilot-sdk-v2/src/apis/metering.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'metering', + help: () => import('../docs/metering.json'), + openapi: () => import('../definitions/metering.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'metering' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'metering' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'metering', }); diff --git a/packages/epilot-sdk-v2/src/apis/notes.ts b/packages/epilot-sdk-v2/src/apis/notes.ts index 204db4cd1..7fc1d292e 100644 --- a/packages/epilot-sdk-v2/src/apis/notes.ts +++ b/packages/epilot-sdk-v2/src/apis/notes.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'notes', + help: () => import('../docs/notes.json'), + openapi: () => import('../definitions/notes.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'notes' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'notes' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'notes', }); diff --git a/packages/epilot-sdk-v2/src/apis/notification.ts b/packages/epilot-sdk-v2/src/apis/notification.ts index 7eee2a3e3..93e68e144 100644 --- a/packages/epilot-sdk-v2/src/apis/notification.ts +++ b/packages/epilot-sdk-v2/src/apis/notification.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'notification', + help: () => import('../docs/notification.json'), + openapi: () => import('../definitions/notification.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'notification' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'notification' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'notification', }); diff --git a/packages/epilot-sdk-v2/src/apis/organization.ts b/packages/epilot-sdk-v2/src/apis/organization.ts index d159f6570..8745f35db 100644 --- a/packages/epilot-sdk-v2/src/apis/organization.ts +++ b/packages/epilot-sdk-v2/src/apis/organization.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'organization', + help: () => import('../docs/organization.json'), + openapi: () => import('../definitions/organization.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'organization' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'organization' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'organization', }); diff --git a/packages/epilot-sdk-v2/src/apis/partner-directory.ts b/packages/epilot-sdk-v2/src/apis/partner-directory.ts index 7b81ec1b3..8da17502c 100644 --- a/packages/epilot-sdk-v2/src/apis/partner-directory.ts +++ b/packages/epilot-sdk-v2/src/apis/partner-directory.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'partnerDirectory', + help: () => import('../docs/partner-directory.json'), + openapi: () => import('../definitions/partner-directory.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'partnerDirectory' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'partnerDirectory' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'partnerDirectory', }); diff --git a/packages/epilot-sdk-v2/src/apis/permissions.ts b/packages/epilot-sdk-v2/src/apis/permissions.ts index 5c7f37816..647bf08aa 100644 --- a/packages/epilot-sdk-v2/src/apis/permissions.ts +++ b/packages/epilot-sdk-v2/src/apis/permissions.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'permissions', + help: () => import('../docs/permissions.json'), + openapi: () => import('../definitions/permissions.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'permissions' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'permissions' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'permissions', }); diff --git a/packages/epilot-sdk-v2/src/apis/phone-integration.ts b/packages/epilot-sdk-v2/src/apis/phone-integration.ts index 441cc1b85..3a2f6e1a4 100644 --- a/packages/epilot-sdk-v2/src/apis/phone-integration.ts +++ b/packages/epilot-sdk-v2/src/apis/phone-integration.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,25 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'phoneIntegration', + help: () => import('../docs/phone-integration.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'phoneIntegration' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'phoneIntegration' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'phoneIntegration', }); diff --git a/packages/epilot-sdk-v2/src/apis/pricing-tier.ts b/packages/epilot-sdk-v2/src/apis/pricing-tier.ts index 9082b03f5..09ef2366e 100644 --- a/packages/epilot-sdk-v2/src/apis/pricing-tier.ts +++ b/packages/epilot-sdk-v2/src/apis/pricing-tier.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'pricingTier', + help: () => import('../docs/pricing-tier.json'), + openapi: () => import('../definitions/pricing-tier.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'pricingTier' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'pricingTier' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'pricingTier', }); diff --git a/packages/epilot-sdk-v2/src/apis/pricing.ts b/packages/epilot-sdk-v2/src/apis/pricing.ts index a0c17fd55..6059aa442 100644 --- a/packages/epilot-sdk-v2/src/apis/pricing.ts +++ b/packages/epilot-sdk-v2/src/apis/pricing.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -26,19 +27,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'pricing', + help: () => import('../docs/pricing.json'), + openapi: () => import('../definitions/pricing.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'pricing' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'pricing' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'pricing', }); diff --git a/packages/epilot-sdk-v2/src/apis/purpose.ts b/packages/epilot-sdk-v2/src/apis/purpose.ts index 295e06208..b6fd207ef 100644 --- a/packages/epilot-sdk-v2/src/apis/purpose.ts +++ b/packages/epilot-sdk-v2/src/apis/purpose.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'purpose', + help: () => import('../docs/purpose.json'), + openapi: () => import('../definitions/purpose.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'purpose' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'purpose' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'purpose', }); diff --git a/packages/epilot-sdk-v2/src/apis/query.ts b/packages/epilot-sdk-v2/src/apis/query.ts index 5ec819dd6..8b3c771af 100644 --- a/packages/epilot-sdk-v2/src/apis/query.ts +++ b/packages/epilot-sdk-v2/src/apis/query.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,25 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'query', + help: () => import('../docs/query.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'query' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'query' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'query', }); diff --git a/packages/epilot-sdk-v2/src/apis/sandbox.ts b/packages/epilot-sdk-v2/src/apis/sandbox.ts index ce340b458..35af91bfa 100644 --- a/packages/epilot-sdk-v2/src/apis/sandbox.ts +++ b/packages/epilot-sdk-v2/src/apis/sandbox.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'sandbox', + help: () => import('../docs/sandbox.json'), + openapi: () => import('../definitions/sandbox.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'sandbox' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'sandbox' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'sandbox', }); diff --git a/packages/epilot-sdk-v2/src/apis/sharing.ts b/packages/epilot-sdk-v2/src/apis/sharing.ts index bf9670c06..1feb4081c 100644 --- a/packages/epilot-sdk-v2/src/apis/sharing.ts +++ b/packages/epilot-sdk-v2/src/apis/sharing.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'sharing', + help: () => import('../docs/sharing.json'), + openapi: () => import('../definitions/sharing.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'sharing' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'sharing' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'sharing', }); diff --git a/packages/epilot-sdk-v2/src/apis/snapshot.ts b/packages/epilot-sdk-v2/src/apis/snapshot.ts index d4911352a..f9b3b7602 100644 --- a/packages/epilot-sdk-v2/src/apis/snapshot.ts +++ b/packages/epilot-sdk-v2/src/apis/snapshot.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,25 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'snapshot', + help: () => import('../docs/snapshot.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'snapshot' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'snapshot' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'snapshot', }); diff --git a/packages/epilot-sdk-v2/src/apis/submission.ts b/packages/epilot-sdk-v2/src/apis/submission.ts index 901bbaa4b..d3650346d 100644 --- a/packages/epilot-sdk-v2/src/apis/submission.ts +++ b/packages/epilot-sdk-v2/src/apis/submission.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'submission', + help: () => import('../docs/submission.json'), + openapi: () => import('../definitions/submission.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'submission' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'submission' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'submission', }); diff --git a/packages/epilot-sdk-v2/src/apis/target.ts b/packages/epilot-sdk-v2/src/apis/target.ts index 1b4056d6a..5ae6edb24 100644 --- a/packages/epilot-sdk-v2/src/apis/target.ts +++ b/packages/epilot-sdk-v2/src/apis/target.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,25 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'target', + help: () => import('../docs/target.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'target' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'target' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'target', }); diff --git a/packages/epilot-sdk-v2/src/apis/targeting.ts b/packages/epilot-sdk-v2/src/apis/targeting.ts index 58f618d68..9e6179cea 100644 --- a/packages/epilot-sdk-v2/src/apis/targeting.ts +++ b/packages/epilot-sdk-v2/src/apis/targeting.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'targeting', + help: () => import('../docs/targeting.json'), + openapi: () => import('../definitions/targeting.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'targeting' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'targeting' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'targeting', }); diff --git a/packages/epilot-sdk-v2/src/apis/template-variables.ts b/packages/epilot-sdk-v2/src/apis/template-variables.ts index ddb2b676d..13e5ec1fd 100644 --- a/packages/epilot-sdk-v2/src/apis/template-variables.ts +++ b/packages/epilot-sdk-v2/src/apis/template-variables.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'templateVariables', + help: () => import('../docs/template-variables.json'), + openapi: () => import('../definitions/template-variables.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'templateVariables' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'templateVariables' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'templateVariables', }); diff --git a/packages/epilot-sdk-v2/src/apis/user.ts b/packages/epilot-sdk-v2/src/apis/user.ts index 26d917655..8ba5a1665 100644 --- a/packages/epilot-sdk-v2/src/apis/user.ts +++ b/packages/epilot-sdk-v2/src/apis/user.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'user', + help: () => import('../docs/user.json'), + openapi: () => import('../definitions/user.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'user' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'user' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'user', }); diff --git a/packages/epilot-sdk-v2/src/apis/validation-rules.ts b/packages/epilot-sdk-v2/src/apis/validation-rules.ts index 9386d55a4..92d45ceb1 100644 --- a/packages/epilot-sdk-v2/src/apis/validation-rules.ts +++ b/packages/epilot-sdk-v2/src/apis/validation-rules.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'validationRules', + help: () => import('../docs/validation-rules.json'), + openapi: () => import('../definitions/validation-rules.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'validationRules' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'validationRules' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'validationRules', }); diff --git a/packages/epilot-sdk-v2/src/apis/webhooks.ts b/packages/epilot-sdk-v2/src/apis/webhooks.ts index 3fb6a1afe..9ee4added 100644 --- a/packages/epilot-sdk-v2/src/apis/webhooks.ts +++ b/packages/epilot-sdk-v2/src/apis/webhooks.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'webhooks', + help: () => import('../docs/webhooks.json'), + openapi: () => import('../definitions/webhooks.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'webhooks' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'webhooks' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'webhooks', }); diff --git a/packages/epilot-sdk-v2/src/apis/workflow-definition.ts b/packages/epilot-sdk-v2/src/apis/workflow-definition.ts index 6f53b5df9..233df5021 100644 --- a/packages/epilot-sdk-v2/src/apis/workflow-definition.ts +++ b/packages/epilot-sdk-v2/src/apis/workflow-definition.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'workflowDefinition', + help: () => import('../docs/workflow-definition.json'), + openapi: () => import('../definitions/workflow-definition.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'workflowDefinition' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'workflowDefinition' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'workflowDefinition', }); diff --git a/packages/epilot-sdk-v2/src/apis/workflow.ts b/packages/epilot-sdk-v2/src/apis/workflow.ts index e4eb2f0c0..bbf6c6114 100644 --- a/packages/epilot-sdk-v2/src/apis/workflow.ts +++ b/packages/epilot-sdk-v2/src/apis/workflow.ts @@ -1,5 +1,6 @@ import type { Document } from 'openapi-client-axios'; +import { lazyApiDocs } from '../api-docs'; import { createApiClient } from '../client-factory'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; @@ -24,19 +25,26 @@ const loadDefinition = (): Document => { return _definition; }; +// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API. +const docs = lazyApiDocs({ + apiName: 'workflow', + help: () => import('../docs/workflow.json'), + openapi: () => import('../definitions/workflow.json'), +}); + let _instance: Client | null = null; const resolve = (): Client => { if (!_instance) { const def = loadDefinition(); - _instance = createApiClient({ definition: def, apiName: 'workflow' }); + _instance = createApiClient({ definition: def, docs }); } return _instance; }; const _handle: ApiHandle = createApiHandle({ resolveClient: resolve, - createClient: () => createApiClient({ definition: loadDefinition(), apiName: 'workflow' }), + createClient: () => createApiClient({ definition: loadDefinition(), docs }), apiName: 'workflow', }); diff --git a/packages/epilot-sdk-v2/src/client-factory.ts b/packages/epilot-sdk-v2/src/client-factory.ts index d84e221c6..e015339ee 100644 --- a/packages/epilot-sdk-v2/src/client-factory.ts +++ b/packages/epilot-sdk-v2/src/client-factory.ts @@ -2,9 +2,8 @@ import type { AxiosInstance } from 'axios'; import type { Document } from 'openapi-client-axios'; import _OpenAPIClientAxios from 'openapi-client-axios'; +import type { ApiDocs } from './api-docs'; import { authorize, type TokenArg } from './authorize'; -import { help as helpFn } from './help'; -import { openapi as openapiFn } from './openapi'; // Handle CJS/ESM interop — when bundled as CJS, the default export may be nested under .default const OpenAPIClientAxios = ( @@ -17,9 +16,9 @@ export const createApiClient = (params: definition: Document; token?: TokenArg | null; headers?: Record; - apiName?: string; + docs?: ApiDocs; }): T => { - const { definition, token, headers, apiName } = params; + const { definition, token, headers, docs } = params; const api = new OpenAPIClientAxios({ definition, quick: true }); const client = api.initSync(); @@ -34,9 +33,9 @@ export const createApiClient = (params: authorize(client, token); } - if (apiName) { - (client as Record).help = () => helpFn(apiName); - (client as Record).openapi = () => openapiFn(apiName); + if (docs) { + (client as Record).help = docs.help; + (client as Record).openapi = docs.openapi; } return client; diff --git a/packages/epilot-sdk-v2/src/help.ts b/packages/epilot-sdk-v2/src/help.ts index 946c648b4..26aa7c4fd 100644 --- a/packages/epilot-sdk-v2/src/help.ts +++ b/packages/epilot-sdk-v2/src/help.ts @@ -1,6 +1,8 @@ /** - * Lazy-loaded help system — returns markdown docs for SDK APIs. - * Each doc is loaded via dynamic import() so only the requested doc affects bundle size. + * Lazy-loaded help system — returns markdown docs for SDK APIs, looked up by name. + * + * The import() below is a glob, so a bundler emits one lazy chunk per doc. Only the root entry + * may reach this module; `@epilot/sdk/` entries pass their own docs via lazyApiDocs(). */ const kebabCase = (str: string) => str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); diff --git a/packages/epilot-sdk-v2/src/openapi.ts b/packages/epilot-sdk-v2/src/openapi.ts index 1384687de..d5c59c535 100644 --- a/packages/epilot-sdk-v2/src/openapi.ts +++ b/packages/epilot-sdk-v2/src/openapi.ts @@ -1,6 +1,8 @@ /** - * Lazy-loaded OpenAPI spec — returns the full OpenAPI JSON document for an API. - * Each spec is loaded via dynamic import() so only the requested spec affects bundle size. + * Lazy-loaded OpenAPI spec — returns the full OpenAPI JSON document for an API, looked up by name. + * + * The import() below is a glob, so a bundler emits one lazy chunk per spec. Only the root entry + * may reach this module; `@epilot/sdk/` entries pass their own spec via lazyApiDocs(). */ import type { Document } from 'openapi-client-axios'; diff --git a/packages/epilot-sdk-v2/src/registry.ts b/packages/epilot-sdk-v2/src/registry.ts index 395ecff9c..2137c71af 100644 --- a/packages/epilot-sdk-v2/src/registry.ts +++ b/packages/epilot-sdk-v2/src/registry.ts @@ -1,13 +1,22 @@ import type { AxiosInstance } from 'axios'; import type { Document } from 'openapi-client-axios'; +import type { ApiDocs } from './api-docs'; import { createApiClient } from './client-factory'; +import { help } from './help'; import { applyLargeResponseInterceptor } from './large-response'; +import { openapi } from './openapi'; import { applyRetryInterceptor } from './retry'; import type { ApiEntry, SDKState } from './types'; export const createRegistry = () => new Map(); +/** Docs looked up by API name, for clients the root SDK creates from its registry. */ +export const docsByName = (name: string): ApiDocs => ({ + help: () => help(name), + openapi: () => openapi(name), +}); + /** * Loads the definition once and returns the same object on every later call. * @@ -51,7 +60,7 @@ export const resolveClient = (params: { definition, token: state.token, headers: state.globalHeaders, - apiName: name, + docs: docsByName(name), }); // Apply large response interceptor for S3-backed payloads diff --git a/packages/epilot-sdk-v2/src/sdk.ts b/packages/epilot-sdk-v2/src/sdk.ts index d78478b94..f8d7c53b2 100644 --- a/packages/epilot-sdk-v2/src/sdk.ts +++ b/packages/epilot-sdk-v2/src/sdk.ts @@ -8,7 +8,7 @@ import { help } from './help'; import { openapi } from './openapi'; import { loadOverrides } from './overrides'; import { createApiHandle } from './proxy'; -import { createRegistry, resetAllClients, resolveClient } from './registry'; +import { createRegistry, docsByName, resetAllClients, resolveClient } from './registry'; import type { LargeResponseConfig } from './large-response'; import type { RetryConfig } from './retry'; import type { ApiHandle, ExtensionEntry, HeadersConfig, SDKState } from './types'; @@ -68,7 +68,7 @@ export const createSDK = (): EpilotSDK => { return createApiHandle({ resolveClient: () => resolveClient({ registry, name, state }), - createClient: () => createApiClient({ definition: entry.loader(), apiName: name }), + createClient: () => createApiClient({ definition: entry.loader(), docs: docsByName(name) }), apiName: name, }); }; diff --git a/scripts/generate-sdk-v2.ts b/scripts/generate-sdk-v2.ts index 05229a5a1..3b5f30aa6 100644 --- a/scripts/generate-sdk-v2.ts +++ b/scripts/generate-sdk-v2.ts @@ -376,10 +376,13 @@ const mockJsonExample = (schema: Schema): string | null => { const generateApiFile = (client: ClientInfo): string => { const clientType = client.hasTypes ? 'Client' : 'AxiosInstance'; + // openapi() serves the full spec checked into src/definitions; not every API has one + const hasFullDefinition = existsSync(resolve(DEFS_DIR, `${client.kebabName}.json`)); const lines = [ `import type { Document } from 'openapi-client-axios'`, ``, + `import { lazyApiDocs } from '../api-docs'`, `import { createApiClient } from '../client-factory'`, `import { expand } from '../compact'`, `import type { CompactDefinition } from '../compact'`, @@ -421,19 +424,26 @@ const generateApiFile = (client: ClientInfo): string => { ` return _definition`, `}`, ``, + `// Literal paths: a bundler emits lazy chunks for this API's docs only, not for every API.`, + `const docs = lazyApiDocs({`, + ` apiName: '${client.apiName}',`, + ` help: () => import('../docs/${client.kebabName}.json'),`, + ...(hasFullDefinition ? [` openapi: () => import('../definitions/${client.kebabName}.json'),`] : []), + `})`, + ``, `let _instance: ${clientType} | null = null`, ``, `const resolve = (): ${clientType} => {`, ` if (!_instance) {`, ` const def = loadDefinition()`, - ` _instance = createApiClient<${clientType}>({ definition: def, apiName: '${client.apiName}' })`, + ` _instance = createApiClient<${clientType}>({ definition: def, docs })`, ` }`, ` return _instance`, `}`, ``, `const _handle: ApiHandle<${clientType}> = createApiHandle({`, ` resolveClient: resolve,`, - ` createClient: () => createApiClient<${clientType}>({ definition: loadDefinition(), apiName: '${client.apiName}' }),`, + ` createClient: () => createApiClient<${clientType}>({ definition: loadDefinition(), docs }),`, ` apiName: '${client.apiName}',`, `})`, ``,