@reopt-ai/data-contract 0.2.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +11 -4
  2. package/dist/{chunk-IKOEYZVT.js → chunk-2LZBZXBF.js} +9 -3
  3. package/dist/chunk-2LZBZXBF.js.map +1 -0
  4. package/dist/{chunk-LBSBZO7O.cjs → chunk-4B4AY44F.cjs} +33 -7
  5. package/dist/chunk-4B4AY44F.cjs.map +1 -0
  6. package/dist/{chunk-2SJPZP2D.js → chunk-AHXPQQKO.js} +30 -4
  7. package/dist/chunk-AHXPQQKO.js.map +1 -0
  8. package/dist/{chunk-SC7TFGTO.js → chunk-BCGR27G2.js} +130 -14
  9. package/dist/chunk-BCGR27G2.js.map +1 -0
  10. package/dist/{chunk-FRJK7OCQ.js → chunk-MFZEIH5Z.js} +7 -4
  11. package/dist/chunk-MFZEIH5Z.js.map +1 -0
  12. package/dist/{chunk-CSTC3ADG.cjs → chunk-OLSMH4RY.cjs} +9 -3
  13. package/dist/chunk-OLSMH4RY.cjs.map +1 -0
  14. package/dist/{chunk-GCLUMVPA.cjs → chunk-VQ2CD5MG.cjs} +138 -22
  15. package/dist/chunk-VQ2CD5MG.cjs.map +1 -0
  16. package/dist/{chunk-HRKELGGH.cjs → chunk-XI3VP5DN.cjs} +7 -4
  17. package/dist/chunk-XI3VP5DN.cjs.map +1 -0
  18. package/dist/client.cjs +94 -44
  19. package/dist/client.cjs.map +1 -1
  20. package/dist/client.d.cts +8 -4
  21. package/dist/client.d.ts +8 -4
  22. package/dist/client.js +58 -8
  23. package/dist/client.js.map +1 -1
  24. package/dist/control.cjs +14 -4
  25. package/dist/control.cjs.map +1 -1
  26. package/dist/control.d.cts +49 -7
  27. package/dist/control.d.ts +49 -7
  28. package/dist/control.js +15 -5
  29. package/dist/index.cjs +2 -2
  30. package/dist/index.d.cts +15 -4
  31. package/dist/index.d.ts +15 -4
  32. package/dist/index.js +1 -1
  33. package/dist/ingest.cjs +2 -2
  34. package/dist/ingest.d.cts +9 -7
  35. package/dist/ingest.d.ts +9 -7
  36. package/dist/ingest.js +1 -1
  37. package/dist/query.cjs +29 -3
  38. package/dist/query.cjs.map +1 -1
  39. package/dist/query.d.cts +317 -21
  40. package/dist/query.d.ts +317 -21
  41. package/dist/query.js +30 -4
  42. package/dist/report.cjs +85 -0
  43. package/dist/report.cjs.map +1 -0
  44. package/dist/report.d.cts +167 -0
  45. package/dist/report.d.ts +167 -0
  46. package/dist/report.js +85 -0
  47. package/dist/report.js.map +1 -0
  48. package/package.json +7 -2
  49. package/dist/chunk-2SJPZP2D.js.map +0 -1
  50. package/dist/chunk-CSTC3ADG.cjs.map +0 -1
  51. package/dist/chunk-FRJK7OCQ.js.map +0 -1
  52. package/dist/chunk-GCLUMVPA.cjs.map +0 -1
  53. package/dist/chunk-HRKELGGH.cjs.map +0 -1
  54. package/dist/chunk-IKOEYZVT.js.map +0 -1
  55. package/dist/chunk-LBSBZO7O.cjs.map +0 -1
  56. package/dist/chunk-SC7TFGTO.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client.ts"],"sourcesContent":["/**\n * `createDataClient` — typed fetch over the ingest and query planes.\n *\n * Deliberately stateless: no queue, no buffer, no background flush. Batch\n * assembly and cursor management belong to the caller (a forwarder already has\n * a cursor and byte-batching; duplicating that here would give it two).\n *\n * Every response is parsed with the contract schema, so a server that drifts\n * from the contract surfaces as `contract_mismatch` instead of quietly\n * returning something the caller then mis-reads.\n */\nimport {\n CLIENT_ID_HEADER,\n CLIENT_SECRET_HEADER,\n CONTRACT_VERSION,\n DataApiError,\n REQUEST_ID_HEADER,\n type ClientCredentials,\n} from \"./index.js\";\nimport { zIngestResponse, type IngestResponse, type ITrackHandlerPayload } from \"./ingest.js\";\nimport {\n CONTROL_API_PATHS,\n ORG_KEY_HEADER,\n PLATFORM_KEY_HEADER,\n zCreateOrganizationResponse,\n zCreateProjectResponse,\n zDeleteProjectResponse,\n zRotateClientSecretResponse,\n zRotateOrganizationKeyResponse,\n zUpdateOrganizationQuotaResponse,\n type CreateOrganizationInput,\n type CreateOrganizationResponse,\n type CreateProjectInput,\n type CreateProjectResponse,\n type DeleteProjectInput,\n type DeleteProjectResponse,\n type RotateClientSecretResponse,\n type RotateOrganizationKeyResponse,\n type UpdateOrganizationQuotaInput,\n type UpdateOrganizationQuotaResponse,\n} from \"./control.js\";\nimport {\n QUERY_API_PATHS,\n zEventsTimeseriesResponse,\n zFunnelResponse,\n zRetentionResponse,\n type EventsTimeseriesInput,\n type EventsTimeseriesResponse,\n type FunnelInput,\n type FunnelResponse,\n type RetentionInput,\n type RetentionResponse,\n} from \"./query.js\";\n\nconst TRACK_PATH = \"/api/track\";\n\nexport interface DataClientRetryOptions {\n /** Attempts after the first. Only 429 and 5xx are retried. Default 2. */\n maxRetries?: number;\n /** First backoff step; doubles each attempt, with jitter. Default 500ms. */\n baseDelayMs?: number;\n /** Cap on a single backoff step. Default 20s. */\n maxDelayMs?: number;\n /** Prefer the server's `Retry-After` over the computed backoff. Default true. */\n respectRetryAfter?: boolean;\n}\n\nexport interface DataClientOptions extends ClientCredentials {\n /** Origin of the reopt-data deployment, e.g. `https://data.reopt.app`. Trailing slash ignored. */\n baseUrl: string;\n /** Injected so callers can pass a framework-instrumented fetch. Defaults to `globalThis.fetch`. */\n fetch?: typeof globalThis.fetch;\n /** Per-attempt timeout. Default 10s. */\n timeoutMs?: number;\n retry?: DataClientRetryOptions;\n /** Appended to the default `reopt-data-contract/<version>`. */\n userAgent?: string;\n}\n\nexport interface DataRequestInit {\n signal?: AbortSignal;\n}\n\n/**\n * Provisioning credentials are passed per call rather than held on the client,\n * because they are a different authority from the client credential the rest of\n * the surface uses — and because a long-lived object holding the platform key\n * is a wider blast radius than a value the caller reads at the moment it needs\n * it.\n */\nexport interface PlatformAuth {\n platformKey: string;\n}\n\nexport interface OrganizationAuth {\n orgKey: string;\n}\n\nexport interface DataClient {\n ingest: {\n /**\n * `POST /api/track`. Send events as one batch; splitting to stay under\n * the 512KB body cap is the caller's job, since only the caller knows how\n * to resume a partially-sent range.\n */\n track(events: ITrackHandlerPayload[], init?: DataRequestInit): Promise<IngestResponse>;\n };\n query: {\n eventsTimeseries(input: EventsTimeseriesInput, init?: DataRequestInit): Promise<EventsTimeseriesResponse>;\n funnel(input: FunnelInput, init?: DataRequestInit): Promise<FunnelResponse>;\n retention(input: RetentionInput, init?: DataRequestInit): Promise<RetentionResponse>;\n };\n control: {\n /** Idempotent on `externalId`. `orgKey` comes back only on first creation. */\n createOrganization(\n input: CreateOrganizationInput,\n auth: PlatformAuth,\n init?: DataRequestInit\n ): Promise<CreateOrganizationResponse>;\n /** Issues a new key and revokes every previous one. The recovery path for a lost key. */\n rotateOrgKey(\n organizationId: string,\n auth: PlatformAuth,\n init?: DataRequestInit\n ): Promise<RotateOrganizationKeyResponse>;\n updateOrganizationQuota(\n organizationId: string,\n input: UpdateOrganizationQuotaInput,\n auth: PlatformAuth,\n init?: DataRequestInit\n ): Promise<UpdateOrganizationQuotaResponse>;\n /** Idempotent on `externalId`. `clientSecret` comes back only on first creation. */\n createProject(\n input: CreateProjectInput,\n auth: OrganizationAuth,\n init?: DataRequestInit\n ): Promise<CreateProjectResponse>;\n rotateServerClientSecret(\n projectId: string,\n clientId: string,\n auth: OrganizationAuth,\n init?: DataRequestInit\n ): Promise<RotateClientSecretResponse>;\n /** Irreversible. Idempotent: a project that is already gone still answers 202. */\n deleteProject(\n projectId: string,\n input: DeleteProjectInput,\n auth: OrganizationAuth,\n init?: DataRequestInit\n ): Promise<DeleteProjectResponse>;\n };\n}\n\nconst DEFAULTS = {\n timeoutMs: 10_000,\n maxRetries: 2,\n baseDelayMs: 500,\n maxDelayMs: 20_000,\n} as const;\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n return baseUrl.replace(/\\/+$/, \"\");\n}\n\n/** `Retry-After` is either delta-seconds or an HTTP date; both are legal. */\nfunction parseRetryAfter(header: string | null): number | undefined {\n if (!header) return undefined;\n\n const seconds = Number(header);\n if (Number.isFinite(seconds) && seconds >= 0) return Math.round(seconds * 1000);\n\n const at = Date.parse(header);\n if (Number.isFinite(at)) return Math.max(0, at - Date.now());\n\n return undefined;\n}\n\nfunction sleep(ms: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason ?? new Error(\"Aborted\"));\n return;\n }\n const timer = setTimeout(() => {\n signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n const onAbort = () => {\n clearTimeout(timer);\n reject(signal?.reason ?? new Error(\"Aborted\"));\n };\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\nfunction backoffDelay(attempt: number, retry: Required<DataClientRetryOptions>): number {\n const exponential = retry.baseDelayMs * 2 ** attempt;\n const capped = Math.min(exponential, retry.maxDelayMs);\n // Full jitter — a fleet of forwarders that all got 429 should not all come\n // back at the same instant.\n return Math.round(capped * (0.5 + Math.random() * 0.5));\n}\n\n/**\n * Body of a non-2xx response. Both planes share `{ status, code, error, ... }`,\n * so one reader covers them; anything else is reported as `internal_error`\n * with the raw text kept in `details`.\n */\nfunction toApiError(\n status: number,\n rawBody: string,\n retryAfterMs: number | undefined,\n requestId?: string\n): DataApiError {\n let parsed: unknown;\n try {\n parsed = JSON.parse(rawBody);\n } catch {\n return new DataApiError({\n message: `reopt-data responded ${status} with a non-JSON body`,\n status,\n code: status >= 500 ? \"internal_error\" : \"unknown_error\",\n requestId,\n retryAfterMs,\n details: rawBody.slice(0, 2000),\n });\n }\n\n const body = (parsed ?? {}) as Record<string, unknown>;\n const code = typeof body.code === \"string\" ? body.code : status >= 500 ? \"internal_error\" : \"unknown_error\";\n const message =\n (typeof body.message === \"string\" && body.message) ||\n (typeof body.error === \"string\" && body.error) ||\n `reopt-data responded ${status}`;\n\n return new DataApiError({\n message,\n status,\n code,\n requestId: (typeof body.requestId === \"string\" ? body.requestId : undefined) ?? requestId,\n retryAfterMs,\n details: body.errors ?? undefined,\n });\n}\n\nexport function createDataClient(options: DataClientOptions): DataClient {\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const doFetch = options.fetch ?? globalThis.fetch;\n if (typeof doFetch !== \"function\") {\n throw new TypeError(\"createDataClient: no fetch implementation available — pass options.fetch\");\n }\n\n const timeoutMs = options.timeoutMs ?? DEFAULTS.timeoutMs;\n const retry: Required<DataClientRetryOptions> = {\n maxRetries: options.retry?.maxRetries ?? DEFAULTS.maxRetries,\n baseDelayMs: options.retry?.baseDelayMs ?? DEFAULTS.baseDelayMs,\n maxDelayMs: options.retry?.maxDelayMs ?? DEFAULTS.maxDelayMs,\n respectRetryAfter: options.retry?.respectRetryAfter ?? true,\n };\n\n const userAgent = options.userAgent\n ? `reopt-data-contract/${CONTRACT_VERSION} ${options.userAgent}`\n : `reopt-data-contract/${CONTRACT_VERSION}`;\n\n async function requestOnce(\n method: \"POST\" | \"PATCH\" | \"DELETE\",\n path: string,\n body: unknown,\n extraHeaders: Record<string, string>,\n signal?: AbortSignal\n ): Promise<Response> {\n const controller = new AbortController();\n const timer = setTimeout(\n () => controller.abort(new Error(`reopt-data request timed out after ${timeoutMs}ms`)),\n timeoutMs\n );\n const onCallerAbort = () => controller.abort(signal?.reason ?? new Error(\"Aborted\"));\n signal?.addEventListener(\"abort\", onCallerAbort, { once: true });\n\n try {\n return await doFetch(`${baseUrl}${path}`, {\n method,\n headers: {\n \"content-type\": \"application/json\",\n \"user-agent\": userAgent,\n [CLIENT_ID_HEADER]: options.clientId,\n [CLIENT_SECRET_HEADER]: options.clientSecret,\n ...extraHeaders,\n },\n body: JSON.stringify(body),\n signal: controller.signal,\n });\n } finally {\n clearTimeout(timer);\n signal?.removeEventListener(\"abort\", onCallerAbort);\n }\n }\n\n async function send<T>(\n method: \"POST\" | \"PATCH\" | \"DELETE\",\n path: string,\n body: unknown,\n parse: (value: unknown) => T,\n extraHeaders: Record<string, string> = {},\n signal?: AbortSignal\n ): Promise<T> {\n let lastError: DataApiError | undefined;\n\n for (let attempt = 0; attempt <= retry.maxRetries; attempt++) {\n let response: Response;\n try {\n response = await requestOnce(method, path, body, extraHeaders, signal);\n } catch (cause) {\n // A caller-initiated abort is not a transport failure — propagate it.\n if (signal?.aborted) throw cause;\n lastError = new DataApiError({\n message: cause instanceof Error ? cause.message : String(cause),\n status: 0,\n code: \"network_error\",\n details: cause,\n });\n if (attempt < retry.maxRetries) {\n await sleep(backoffDelay(attempt, retry), signal);\n continue;\n }\n throw lastError;\n }\n\n const requestId = response.headers.get(REQUEST_ID_HEADER) ?? undefined;\n const rawBody = await response.text();\n\n if (response.ok) {\n let json: unknown;\n try {\n json = JSON.parse(rawBody);\n } catch (cause) {\n throw new DataApiError({\n message: \"reopt-data returned a 2xx with an unparseable body\",\n status: response.status,\n code: \"contract_mismatch\",\n requestId,\n details: cause,\n });\n }\n\n try {\n return parse(json);\n } catch (cause) {\n throw new DataApiError({\n message: \"reopt-data returned a 2xx that does not match the contract\",\n status: response.status,\n code: \"contract_mismatch\",\n requestId,\n details: cause,\n });\n }\n }\n\n const retryAfterMs = retry.respectRetryAfter ? parseRetryAfter(response.headers.get(\"retry-after\")) : undefined;\n lastError = toApiError(response.status, rawBody, retryAfterMs, requestId);\n\n if (!lastError.retryable || attempt === retry.maxRetries) throw lastError;\n await sleep(retryAfterMs ?? backoffDelay(attempt, retry), signal);\n }\n\n /* c8 ignore next -- the loop either returns or throws */\n throw lastError ?? new DataApiError({ message: \"reopt-data request failed\", status: 0, code: \"network_error\" });\n }\n\n function post<T>(path: string, body: unknown, parse: (value: unknown) => T, signal?: AbortSignal): Promise<T> {\n return send(\"POST\", path, body, parse, {}, signal);\n }\n\n return {\n ingest: {\n track(events, init) {\n return post(TRACK_PATH, events, (value) => zIngestResponse.parse(value), init?.signal);\n },\n },\n query: {\n eventsTimeseries(input, init) {\n return post(\n QUERY_API_PATHS.eventsTimeseries,\n input,\n (value) => zEventsTimeseriesResponse.parse(value),\n init?.signal\n );\n },\n funnel(input, init) {\n return post(QUERY_API_PATHS.funnel, input, (value) => zFunnelResponse.parse(value), init?.signal);\n },\n retention(input, init) {\n return post(QUERY_API_PATHS.retention, input, (value) => zRetentionResponse.parse(value), init?.signal);\n },\n },\n control: {\n createOrganization(input, auth, init) {\n return send(\n \"POST\",\n CONTROL_API_PATHS.organizations,\n input,\n (value) => zCreateOrganizationResponse.parse(value),\n { [PLATFORM_KEY_HEADER]: auth.platformKey },\n init?.signal\n );\n },\n rotateOrgKey(organizationId, auth, init) {\n return send(\n \"POST\",\n CONTROL_API_PATHS.organizationKeys(organizationId),\n {},\n (value) => zRotateOrganizationKeyResponse.parse(value),\n { [PLATFORM_KEY_HEADER]: auth.platformKey },\n init?.signal\n );\n },\n updateOrganizationQuota(organizationId, input, auth, init) {\n return send(\n \"PATCH\",\n CONTROL_API_PATHS.organization(organizationId),\n input,\n (value) => zUpdateOrganizationQuotaResponse.parse(value),\n { [PLATFORM_KEY_HEADER]: auth.platformKey },\n init?.signal\n );\n },\n createProject(input, auth, init) {\n return send(\n \"POST\",\n CONTROL_API_PATHS.projects,\n input,\n (value) => zCreateProjectResponse.parse(value),\n { [ORG_KEY_HEADER]: auth.orgKey },\n init?.signal\n );\n },\n rotateServerClientSecret(projectId, clientId, auth, init) {\n return send(\n \"POST\",\n CONTROL_API_PATHS.clientRotate(projectId, clientId),\n {},\n (value) => zRotateClientSecretResponse.parse(value),\n { [ORG_KEY_HEADER]: auth.orgKey },\n init?.signal\n );\n },\n deleteProject(projectId, input, auth, init) {\n return send(\n \"DELETE\",\n CONTROL_API_PATHS.project(projectId),\n input,\n (value) => zDeleteProjectResponse.parse(value),\n { [ORG_KEY_HEADER]: auth.orgKey },\n init?.signal\n );\n },\n },\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/client.ts"],"sourcesContent":["/**\n * `createDataClient` — typed fetch over the ingest and query planes.\n *\n * Deliberately stateless: no queue, no buffer, no background flush. Batch\n * assembly and cursor management belong to the caller (a forwarder already has\n * a cursor and byte-batching; duplicating that here would give it two).\n *\n * Every response is parsed with the contract schema, so a server that drifts\n * from the contract surfaces as `contract_mismatch` instead of quietly\n * returning something the caller then mis-reads.\n */\nimport {\n CLIENT_ID_HEADER,\n CLIENT_SECRET_HEADER,\n CONTRACT_VERSION,\n CONTRACT_VERSION_HEADER,\n DataApiError,\n REQUEST_ID_HEADER,\n type OptionalClientCredentials,\n} from \"./index.js\";\nimport { zIngestResponse, type IngestResponse, type ITrackHandlerPayload } from \"./ingest.js\";\nimport {\n CONTROL_API_PATHS,\n ORG_KEY_HEADER,\n PLATFORM_KEY_HEADER,\n zCreateOrganizationResponse,\n zCreateProjectResponse,\n zDeleteProjectResponse,\n zRotateClientSecretResponse,\n zRotateOrganizationKeyResponse,\n zUpdateOrganizationQuotaResponse,\n zEventMetaResponse,\n type CreateOrganizationInput,\n type EventMetaResponse,\n type UpsertEventMetaInput,\n type CreateOrganizationResponse,\n type CreateProjectInput,\n type CreateProjectResponse,\n type DeleteProjectInput,\n type DeleteProjectResponse,\n type RotateClientSecretResponse,\n type RotateOrganizationKeyResponse,\n type UpdateOrganizationQuotaInput,\n type UpdateOrganizationQuotaResponse,\n} from \"./control.js\";\nimport {\n QUERY_API_PATHS,\n zEventsTimeseriesResponse,\n zFunnelResponse,\n zRetentionResponse,\n zTrafficOverviewResponse,\n zTrafficSourcesResponse,\n type EventsTimeseriesInput,\n type EventsTimeseriesResponse,\n type FunnelInput,\n type FunnelResponse,\n type RetentionInput,\n type RetentionResponse,\n type TrafficOverviewInput,\n type TrafficOverviewResponse,\n type TrafficSourcesInput,\n type TrafficSourcesResponse,\n} from \"./query.js\";\n\nconst TRACK_PATH = \"/api/track\";\n\nexport interface DataClientRetryOptions {\n /** Attempts after the first. Only 429 and 5xx are retried. Default 2. */\n maxRetries?: number;\n /** First backoff step; doubles each attempt, with jitter. Default 500ms. */\n baseDelayMs?: number;\n /** Cap on a single backoff step. Default 20s. */\n maxDelayMs?: number;\n /** Prefer the server's `Retry-After` over the computed backoff. Default true. */\n respectRetryAfter?: boolean;\n}\n\nexport interface DataClientOptions extends OptionalClientCredentials {\n /** Origin of the reopt-data deployment, e.g. `https://data.reopt.app`. Trailing slash ignored. */\n baseUrl: string;\n /** Injected so callers can pass a framework-instrumented fetch. Defaults to `globalThis.fetch`. */\n fetch?: typeof globalThis.fetch;\n /** Per-attempt timeout. Default 10s. */\n timeoutMs?: number;\n retry?: DataClientRetryOptions;\n /** Appended to the default `reopt-data-contract/<version>`. */\n userAgent?: string;\n}\n\nexport interface DataRequestInit {\n signal?: AbortSignal;\n}\n\n/**\n * Provisioning credentials are passed per call rather than held on the client,\n * because they are a different authority from the client credential the rest of\n * the surface uses — and because a long-lived object holding the platform key\n * is a wider blast radius than a value the caller reads at the moment it needs\n * it.\n */\nexport interface PlatformAuth {\n platformKey: string;\n}\n\nexport interface OrganizationAuth {\n orgKey: string;\n}\n\nexport interface DataClient {\n ingest: {\n /**\n * `POST /api/track`. Send events as one batch; splitting to stay under\n * the 512KB body cap is the caller's job, since only the caller knows how\n * to resume a partially-sent range.\n */\n track(events: ITrackHandlerPayload[], init?: DataRequestInit): Promise<IngestResponse>;\n };\n query: {\n eventsTimeseries(input: EventsTimeseriesInput, init?: DataRequestInit): Promise<EventsTimeseriesResponse>;\n funnel(input: FunnelInput, init?: DataRequestInit): Promise<FunnelResponse>;\n retention(input: RetentionInput, init?: DataRequestInit): Promise<RetentionResponse>;\n trafficOverview(input: TrafficOverviewInput, init?: DataRequestInit): Promise<TrafficOverviewResponse>;\n trafficSources(input: TrafficSourcesInput, init?: DataRequestInit): Promise<TrafficSourcesResponse>;\n };\n control: {\n /** Idempotent on `externalId`. `orgKey` comes back only on first creation. */\n createOrganization(\n input: CreateOrganizationInput,\n auth: PlatformAuth,\n init?: DataRequestInit\n ): Promise<CreateOrganizationResponse>;\n /** Issues a new key and revokes every previous one. The recovery path for a lost key. */\n rotateOrgKey(\n organizationId: string,\n auth: PlatformAuth,\n init?: DataRequestInit\n ): Promise<RotateOrganizationKeyResponse>;\n updateOrganizationQuota(\n organizationId: string,\n input: UpdateOrganizationQuotaInput,\n auth: PlatformAuth,\n init?: DataRequestInit\n ): Promise<UpdateOrganizationQuotaResponse>;\n /** Idempotent on `externalId`. `clientSecret` comes back only on first creation. */\n createProject(\n input: CreateProjectInput,\n auth: OrganizationAuth,\n init?: DataRequestInit\n ): Promise<CreateProjectResponse>;\n rotateServerClientSecret(\n projectId: string,\n clientId: string,\n auth: OrganizationAuth,\n init?: DataRequestInit\n ): Promise<RotateClientSecretResponse>;\n /** Irreversible. Idempotent: a project that is already gone still answers 202. */\n deleteProject(\n projectId: string,\n input: DeleteProjectInput,\n auth: OrganizationAuth,\n init?: DataRequestInit\n ): Promise<DeleteProjectResponse>;\n /** Idempotent: a repeat with the same body changes nothing and answers 200. */\n upsertEventMeta(\n projectId: string,\n name: string,\n input: UpsertEventMetaInput,\n auth: OrganizationAuth,\n init?: DataRequestInit\n ): Promise<EventMetaResponse>;\n };\n}\n\nconst DEFAULTS = {\n timeoutMs: 10_000,\n maxRetries: 2,\n baseDelayMs: 500,\n maxDelayMs: 20_000,\n} as const;\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n return baseUrl.replace(/\\/+$/, \"\");\n}\n\n/** `Retry-After` is either delta-seconds or an HTTP date; both are legal. */\nfunction parseRetryAfter(header: string | null): number | undefined {\n if (!header) return undefined;\n\n const seconds = Number(header);\n if (Number.isFinite(seconds) && seconds >= 0) return Math.round(seconds * 1000);\n\n const at = Date.parse(header);\n if (Number.isFinite(at)) return Math.max(0, at - Date.now());\n\n return undefined;\n}\n\nfunction sleep(ms: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason ?? new Error(\"Aborted\"));\n return;\n }\n const timer = setTimeout(() => {\n signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n const onAbort = () => {\n clearTimeout(timer);\n reject(signal?.reason ?? new Error(\"Aborted\"));\n };\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\nfunction backoffDelay(attempt: number, retry: Required<DataClientRetryOptions>): number {\n const exponential = retry.baseDelayMs * 2 ** attempt;\n const capped = Math.min(exponential, retry.maxDelayMs);\n // Full jitter — a fleet of forwarders that all got 429 should not all come\n // back at the same instant.\n return Math.round(capped * (0.5 + Math.random() * 0.5));\n}\n\n/**\n * Body of a non-2xx response. Both planes share `{ status, code, error, ... }`,\n * so one reader covers them; anything else is reported as `internal_error`\n * with the raw text kept in `details`.\n */\nfunction toApiError(\n status: number,\n rawBody: string,\n retryAfterMs: number | undefined,\n requestId?: string\n): DataApiError {\n let parsed: unknown;\n try {\n parsed = JSON.parse(rawBody);\n } catch {\n return new DataApiError({\n message: `reopt-data responded ${status} with a non-JSON body`,\n status,\n code: status >= 500 ? \"internal_error\" : \"unknown_error\",\n requestId,\n retryAfterMs,\n details: rawBody.slice(0, 2000),\n });\n }\n\n const body = (parsed ?? {}) as Record<string, unknown>;\n const code = typeof body.code === \"string\" ? body.code : status >= 500 ? \"internal_error\" : \"unknown_error\";\n const message =\n (typeof body.message === \"string\" && body.message) ||\n (typeof body.error === \"string\" && body.error) ||\n `reopt-data responded ${status}`;\n\n return new DataApiError({\n message,\n status,\n code,\n requestId: (typeof body.requestId === \"string\" ? body.requestId : undefined) ?? requestId,\n retryAfterMs,\n details: body.errors ?? undefined,\n });\n}\n\nexport function createDataClient(options: DataClientOptions): DataClient {\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const doFetch = options.fetch ?? globalThis.fetch;\n if (typeof doFetch !== \"function\") {\n throw new TypeError(\"createDataClient: no fetch implementation available — pass options.fetch\");\n }\n\n const timeoutMs = options.timeoutMs ?? DEFAULTS.timeoutMs;\n const retry: Required<DataClientRetryOptions> = {\n maxRetries: options.retry?.maxRetries ?? DEFAULTS.maxRetries,\n baseDelayMs: options.retry?.baseDelayMs ?? DEFAULTS.baseDelayMs,\n maxDelayMs: options.retry?.maxDelayMs ?? DEFAULTS.maxDelayMs,\n respectRetryAfter: options.retry?.respectRetryAfter ?? true,\n };\n\n const userAgent = options.userAgent\n ? `reopt-data-contract/${CONTRACT_VERSION} ${options.userAgent}`\n : `reopt-data-contract/${CONTRACT_VERSION}`;\n\n /**\n * Client credentials, or a clear failure. The ingest and query planes cannot\n * run without them; the provisioning plane never uses them.\n */\n function requireClientCredentials(): { clientId: string; clientSecret: string } {\n if (!options.clientId || !options.clientSecret) {\n throw new DataApiError({\n message:\n \"createDataClient was given no client credentials — pass clientId and clientSecret to use the ingest or query planes\",\n status: 0,\n code: \"credentials_missing\",\n });\n }\n return { clientId: options.clientId, clientSecret: options.clientSecret };\n }\n\n async function requestOnce(\n method: \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\",\n path: string,\n body: unknown,\n extraHeaders: Record<string, string>,\n signal?: AbortSignal\n ): Promise<Response> {\n const controller = new AbortController();\n const timer = setTimeout(\n () => controller.abort(new Error(`reopt-data request timed out after ${timeoutMs}ms`)),\n timeoutMs\n );\n const onCallerAbort = () => controller.abort(signal?.reason ?? new Error(\"Aborted\"));\n signal?.addEventListener(\"abort\", onCallerAbort, { once: true });\n\n try {\n return await doFetch(`${baseUrl}${path}`, {\n method,\n headers: {\n \"content-type\": \"application/json\",\n \"user-agent\": userAgent,\n ...(options.clientId && options.clientSecret\n ? { [CLIENT_ID_HEADER]: options.clientId, [CLIENT_SECRET_HEADER]: options.clientSecret }\n : {}),\n ...extraHeaders,\n },\n body: JSON.stringify(body),\n signal: controller.signal,\n });\n } finally {\n clearTimeout(timer);\n signal?.removeEventListener(\"abort\", onCallerAbort);\n }\n }\n\n async function send<T>(\n method: \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\",\n path: string,\n body: unknown,\n parse: (value: unknown) => T,\n extraHeaders: Record<string, string> = {},\n signal?: AbortSignal\n ): Promise<T> {\n let lastError: DataApiError | undefined;\n\n for (let attempt = 0; attempt <= retry.maxRetries; attempt++) {\n let response: Response;\n try {\n response = await requestOnce(method, path, body, extraHeaders, signal);\n } catch (cause) {\n // A caller-initiated abort is not a transport failure — propagate it.\n if (signal?.aborted) throw cause;\n lastError = new DataApiError({\n message: cause instanceof Error ? cause.message : String(cause),\n status: 0,\n code: \"network_error\",\n details: cause,\n });\n if (attempt < retry.maxRetries) {\n await sleep(backoffDelay(attempt, retry), signal);\n continue;\n }\n throw lastError;\n }\n\n const requestId = response.headers.get(REQUEST_ID_HEADER) ?? undefined;\n const serverContractVersion = response.headers.get(CONTRACT_VERSION_HEADER);\n const rawBody = await response.text();\n\n if (serverContractVersion !== CONTRACT_VERSION) {\n throw new DataApiError({\n message: serverContractVersion\n ? `reopt-data contract ${serverContractVersion} does not match client contract ${CONTRACT_VERSION}`\n : \"reopt-data response did not declare its contract version\",\n status: response.status,\n code: \"contract_mismatch\",\n requestId,\n details: { expected: CONTRACT_VERSION, received: serverContractVersion },\n });\n }\n\n if (response.ok) {\n let json: unknown;\n try {\n json = JSON.parse(rawBody);\n } catch (cause) {\n throw new DataApiError({\n message: \"reopt-data returned a 2xx with an unparseable body\",\n status: response.status,\n code: \"contract_mismatch\",\n requestId,\n details: cause,\n });\n }\n\n try {\n return parse(json);\n } catch (cause) {\n throw new DataApiError({\n message: \"reopt-data returned a 2xx that does not match the contract\",\n status: response.status,\n code: \"contract_mismatch\",\n requestId,\n details: cause,\n });\n }\n }\n\n const retryAfterMs = retry.respectRetryAfter ? parseRetryAfter(response.headers.get(\"retry-after\")) : undefined;\n lastError = toApiError(response.status, rawBody, retryAfterMs, requestId);\n\n if (!lastError.retryable || attempt === retry.maxRetries) throw lastError;\n await sleep(retryAfterMs ?? backoffDelay(attempt, retry), signal);\n }\n\n /* c8 ignore next -- the loop either returns or throws */\n throw lastError ?? new DataApiError({ message: \"reopt-data request failed\", status: 0, code: \"network_error\" });\n }\n\n /**\n * The ingest and query planes; both require client credentials.\n *\n * `async` so a missing credential rejects rather than throwing\n * synchronously — an async method that sometimes throws before returning a\n * promise slips past every `.catch()` a caller writes.\n */\n async function post<T>(path: string, body: unknown, parse: (value: unknown) => T, signal?: AbortSignal): Promise<T> {\n requireClientCredentials();\n return send(\"POST\", path, body, parse, {}, signal);\n }\n\n return {\n ingest: {\n track(events, init) {\n return post(TRACK_PATH, events, (value) => zIngestResponse.parse(value), init?.signal);\n },\n },\n query: {\n eventsTimeseries(input, init) {\n return post(\n QUERY_API_PATHS.eventsTimeseries,\n input,\n (value) => zEventsTimeseriesResponse.parse(value),\n init?.signal\n );\n },\n funnel(input, init) {\n return post(QUERY_API_PATHS.funnel, input, (value) => zFunnelResponse.parse(value), init?.signal);\n },\n retention(input, init) {\n return post(QUERY_API_PATHS.retention, input, (value) => zRetentionResponse.parse(value), init?.signal);\n },\n trafficOverview(input, init) {\n return post(\n QUERY_API_PATHS.trafficOverview,\n input,\n (value) => zTrafficOverviewResponse.parse(value),\n init?.signal\n );\n },\n trafficSources(input, init) {\n return post(\n QUERY_API_PATHS.trafficSources,\n input,\n (value) => zTrafficSourcesResponse.parse(value),\n init?.signal\n );\n },\n },\n control: {\n createOrganization(input, auth, init) {\n return send(\n \"POST\",\n CONTROL_API_PATHS.organizations,\n input,\n (value) => zCreateOrganizationResponse.parse(value),\n { [PLATFORM_KEY_HEADER]: auth.platformKey },\n init?.signal\n );\n },\n rotateOrgKey(organizationId, auth, init) {\n return send(\n \"POST\",\n CONTROL_API_PATHS.organizationKeys(organizationId),\n {},\n (value) => zRotateOrganizationKeyResponse.parse(value),\n { [PLATFORM_KEY_HEADER]: auth.platformKey },\n init?.signal\n );\n },\n updateOrganizationQuota(organizationId, input, auth, init) {\n return send(\n \"PATCH\",\n CONTROL_API_PATHS.organization(organizationId),\n input,\n (value) => zUpdateOrganizationQuotaResponse.parse(value),\n { [PLATFORM_KEY_HEADER]: auth.platformKey },\n init?.signal\n );\n },\n createProject(input, auth, init) {\n return send(\n \"POST\",\n CONTROL_API_PATHS.projects,\n input,\n (value) => zCreateProjectResponse.parse(value),\n { [ORG_KEY_HEADER]: auth.orgKey },\n init?.signal\n );\n },\n rotateServerClientSecret(projectId, clientId, auth, init) {\n return send(\n \"POST\",\n CONTROL_API_PATHS.clientRotate(projectId, clientId),\n {},\n (value) => zRotateClientSecretResponse.parse(value),\n { [ORG_KEY_HEADER]: auth.orgKey },\n init?.signal\n );\n },\n deleteProject(projectId, input, auth, init) {\n return send(\n \"DELETE\",\n CONTROL_API_PATHS.project(projectId),\n input,\n (value) => zDeleteProjectResponse.parse(value),\n { [ORG_KEY_HEADER]: auth.orgKey },\n init?.signal\n );\n },\n upsertEventMeta(projectId, name, input, auth, init) {\n return send(\n \"PUT\",\n CONTROL_API_PATHS.projectEvent(projectId, name),\n input,\n (value) => zEventMetaResponse.parse(value),\n { [ORG_KEY_HEADER]: auth.orgKey },\n init?.signal\n );\n },\n },\n };\n}\n"],"mappings":"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","names":[]}
package/dist/control.cjs CHANGED
@@ -18,14 +18,14 @@
18
18
 
19
19
 
20
20
 
21
- var _chunkLBSBZO7Ocjs = require('./chunk-LBSBZO7O.cjs');
22
- require('./chunk-GCLUMVPA.cjs');
23
- require('./chunk-CSTC3ADG.cjs');
24
21
 
25
22
 
26
23
 
27
24
 
28
25
 
26
+ var _chunk4B4AY44Fcjs = require('./chunk-4B4AY44F.cjs');
27
+ require('./chunk-VQ2CD5MG.cjs');
28
+ require('./chunk-OLSMH4RY.cjs');
29
29
 
30
30
 
31
31
 
@@ -41,5 +41,15 @@ require('./chunk-CSTC3ADG.cjs');
41
41
 
42
42
 
43
43
 
44
- exports.CONTROL_API_PATHS = _chunkLBSBZO7Ocjs.CONTROL_API_PATHS; exports.CONTROL_ERROR_CODES = _chunkLBSBZO7Ocjs.CONTROL_ERROR_CODES; exports.ORG_KEY_HEADER = _chunkLBSBZO7Ocjs.ORG_KEY_HEADER; exports.PLATFORM_KEY_HEADER = _chunkLBSBZO7Ocjs.PLATFORM_KEY_HEADER; exports.zControlError = _chunkLBSBZO7Ocjs.zControlError; exports.zControlErrorCode = _chunkLBSBZO7Ocjs.zControlErrorCode; exports.zCreateOrganizationInput = _chunkLBSBZO7Ocjs.zCreateOrganizationInput; exports.zCreateOrganizationResponse = _chunkLBSBZO7Ocjs.zCreateOrganizationResponse; exports.zCreateProjectInput = _chunkLBSBZO7Ocjs.zCreateProjectInput; exports.zCreateProjectResponse = _chunkLBSBZO7Ocjs.zCreateProjectResponse; exports.zDeleteProjectInput = _chunkLBSBZO7Ocjs.zDeleteProjectInput; exports.zDeleteProjectResponse = _chunkLBSBZO7Ocjs.zDeleteProjectResponse; exports.zExternalId = _chunkLBSBZO7Ocjs.zExternalId; exports.zOrganization = _chunkLBSBZO7Ocjs.zOrganization; exports.zProject = _chunkLBSBZO7Ocjs.zProject; exports.zRotateClientSecretResponse = _chunkLBSBZO7Ocjs.zRotateClientSecretResponse; exports.zRotateOrganizationKeyResponse = _chunkLBSBZO7Ocjs.zRotateOrganizationKeyResponse; exports.zUpdateOrganizationQuotaInput = _chunkLBSBZO7Ocjs.zUpdateOrganizationQuotaInput; exports.zUpdateOrganizationQuotaResponse = _chunkLBSBZO7Ocjs.zUpdateOrganizationQuotaResponse;
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+ exports.CONTROL_API_PATHS = _chunk4B4AY44Fcjs.CONTROL_API_PATHS; exports.CONTROL_ERROR_CODES = _chunk4B4AY44Fcjs.CONTROL_ERROR_CODES; exports.EVENT_META_STATUSES = _chunk4B4AY44Fcjs.EVENT_META_STATUSES; exports.ORG_KEY_HEADER = _chunk4B4AY44Fcjs.ORG_KEY_HEADER; exports.PLATFORM_KEY_HEADER = _chunk4B4AY44Fcjs.PLATFORM_KEY_HEADER; exports.zControlError = _chunk4B4AY44Fcjs.zControlError; exports.zControlErrorCode = _chunk4B4AY44Fcjs.zControlErrorCode; exports.zCreateOrganizationInput = _chunk4B4AY44Fcjs.zCreateOrganizationInput; exports.zCreateOrganizationResponse = _chunk4B4AY44Fcjs.zCreateOrganizationResponse; exports.zCreateProjectInput = _chunk4B4AY44Fcjs.zCreateProjectInput; exports.zCreateProjectResponse = _chunk4B4AY44Fcjs.zCreateProjectResponse; exports.zDeleteProjectInput = _chunk4B4AY44Fcjs.zDeleteProjectInput; exports.zDeleteProjectResponse = _chunk4B4AY44Fcjs.zDeleteProjectResponse; exports.zEventMetaResponse = _chunk4B4AY44Fcjs.zEventMetaResponse; exports.zEventMetaStatus = _chunk4B4AY44Fcjs.zEventMetaStatus; exports.zEventName = _chunk4B4AY44Fcjs.zEventName; exports.zExternalId = _chunk4B4AY44Fcjs.zExternalId; exports.zOrganization = _chunk4B4AY44Fcjs.zOrganization; exports.zProject = _chunk4B4AY44Fcjs.zProject; exports.zRotateClientSecretResponse = _chunk4B4AY44Fcjs.zRotateClientSecretResponse; exports.zRotateOrganizationKeyResponse = _chunk4B4AY44Fcjs.zRotateOrganizationKeyResponse; exports.zUpdateOrganizationQuotaInput = _chunk4B4AY44Fcjs.zUpdateOrganizationQuotaInput; exports.zUpdateOrganizationQuotaResponse = _chunk4B4AY44Fcjs.zUpdateOrganizationQuotaResponse; exports.zUpsertEventMetaInput = _chunk4B4AY44Fcjs.zUpsertEventMetaInput;
45
55
  //# sourceMappingURL=control.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/eric/reopt-ai/reopt-data/packages/data-contract/dist/control.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,w0CAAC","file":"/Users/eric/reopt-ai/reopt-data/packages/data-contract/dist/control.cjs"}
1
+ {"version":3,"sources":["/Users/eric/reopt-ai/reopt-data/packages/data-contract/dist/control.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,2oDAAC","file":"/Users/eric/reopt-ai/reopt-data/packages/data-contract/dist/control.cjs"}
@@ -138,29 +138,70 @@ declare const zDeleteProjectResponse: z.ZodObject<{
138
138
  purgingAt: z.ZodOptional<z.ZodString>;
139
139
  }, z.core.$strip>;
140
140
  type DeleteProjectResponse = z.infer<typeof zDeleteProjectResponse>;
141
+ /**
142
+ * `PUT /api/v1/projects/{projectId}/events/{name}` — catalogue settings for
143
+ * one event name. Provisioning calls it to mark `form.submitted` a conversion
144
+ * and an operational probe `internal`; the call is idempotent so a retried
145
+ * provisioning run is harmless.
146
+ */
147
+ declare const EVENT_META_STATUSES: readonly ["active", "deprecated", "archived", "internal"];
148
+ declare const zEventMetaStatus: z.ZodEnum<{
149
+ active: "active";
150
+ deprecated: "deprecated";
151
+ archived: "archived";
152
+ internal: "internal";
153
+ }>;
154
+ type EventMetaStatus = z.infer<typeof zEventMetaStatus>;
155
+ declare const zEventName: z.ZodString;
156
+ declare const zUpsertEventMetaInput: z.ZodObject<{
157
+ conversion: z.ZodOptional<z.ZodBoolean>;
158
+ status: z.ZodOptional<z.ZodEnum<{
159
+ active: "active";
160
+ deprecated: "deprecated";
161
+ archived: "archived";
162
+ internal: "internal";
163
+ }>>;
164
+ rollupProperties: z.ZodOptional<z.ZodArray<z.ZodString>>;
165
+ }, z.core.$strict>;
166
+ type UpsertEventMetaInput = z.infer<typeof zUpsertEventMetaInput>;
167
+ declare const zEventMetaResponse: z.ZodObject<{
168
+ projectId: z.ZodString;
169
+ name: z.ZodString;
170
+ conversion: z.ZodBoolean;
171
+ status: z.ZodEnum<{
172
+ active: "active";
173
+ deprecated: "deprecated";
174
+ archived: "archived";
175
+ internal: "internal";
176
+ }>;
177
+ rollupProperties: z.ZodArray<z.ZodString>;
178
+ changed: z.ZodArray<z.ZodString>;
179
+ updatedAt: z.ZodString;
180
+ }, z.core.$strip>;
181
+ type EventMetaResponse = z.infer<typeof zEventMetaResponse>;
141
182
  declare const CONTROL_ERROR_CODES: readonly ["unauthorized", "organization_scope_mismatch", "external_id_conflict", "project_external_id_mismatch", "not_found", "validation_failed", "rate_limited", "internal_error"];
142
183
  declare const zControlErrorCode: z.ZodEnum<{
143
- validation_failed: "validation_failed";
144
184
  unauthorized: "unauthorized";
145
- rate_limited: "rate_limited";
146
- internal_error: "internal_error";
147
185
  organization_scope_mismatch: "organization_scope_mismatch";
148
186
  external_id_conflict: "external_id_conflict";
149
187
  project_external_id_mismatch: "project_external_id_mismatch";
150
188
  not_found: "not_found";
189
+ validation_failed: "validation_failed";
190
+ rate_limited: "rate_limited";
191
+ internal_error: "internal_error";
151
192
  }>;
152
193
  type ControlErrorCode = z.infer<typeof zControlErrorCode>;
153
194
  declare const zControlError: z.ZodObject<{
154
195
  status: z.ZodNumber;
155
196
  code: z.ZodEnum<{
156
- validation_failed: "validation_failed";
157
197
  unauthorized: "unauthorized";
158
- rate_limited: "rate_limited";
159
- internal_error: "internal_error";
160
198
  organization_scope_mismatch: "organization_scope_mismatch";
161
199
  external_id_conflict: "external_id_conflict";
162
200
  project_external_id_mismatch: "project_external_id_mismatch";
163
201
  not_found: "not_found";
202
+ validation_failed: "validation_failed";
203
+ rate_limited: "rate_limited";
204
+ internal_error: "internal_error";
164
205
  }>;
165
206
  error: z.ZodString;
166
207
  message: z.ZodOptional<z.ZodString>;
@@ -176,6 +217,7 @@ declare const CONTROL_API_PATHS: {
176
217
  readonly projects: "/api/v1/projects";
177
218
  readonly project: (id: string) => string;
178
219
  readonly clientRotate: (projectId: string, clientId: string) => string;
220
+ readonly projectEvent: (projectId: string, name: string) => string;
179
221
  };
180
222
 
181
- export { CONTROL_API_PATHS, CONTROL_ERROR_CODES, type ControlError, type ControlErrorCode, type CreateOrganizationInput, type CreateOrganizationResponse, type CreateProjectInput, type CreateProjectResponse, type DeleteProjectInput, type DeleteProjectResponse, ORG_KEY_HEADER, PLATFORM_KEY_HEADER, type RotateClientSecretResponse, type RotateOrganizationKeyResponse, type UpdateOrganizationQuotaInput, type UpdateOrganizationQuotaResponse, zControlError, zControlErrorCode, zCreateOrganizationInput, zCreateOrganizationResponse, zCreateProjectInput, zCreateProjectResponse, zDeleteProjectInput, zDeleteProjectResponse, zExternalId, zOrganization, zProject, zRotateClientSecretResponse, zRotateOrganizationKeyResponse, zUpdateOrganizationQuotaInput, zUpdateOrganizationQuotaResponse };
223
+ export { CONTROL_API_PATHS, CONTROL_ERROR_CODES, type ControlError, type ControlErrorCode, type CreateOrganizationInput, type CreateOrganizationResponse, type CreateProjectInput, type CreateProjectResponse, type DeleteProjectInput, type DeleteProjectResponse, EVENT_META_STATUSES, type EventMetaResponse, type EventMetaStatus, ORG_KEY_HEADER, PLATFORM_KEY_HEADER, type RotateClientSecretResponse, type RotateOrganizationKeyResponse, type UpdateOrganizationQuotaInput, type UpdateOrganizationQuotaResponse, type UpsertEventMetaInput, zControlError, zControlErrorCode, zCreateOrganizationInput, zCreateOrganizationResponse, zCreateProjectInput, zCreateProjectResponse, zDeleteProjectInput, zDeleteProjectResponse, zEventMetaResponse, zEventMetaStatus, zEventName, zExternalId, zOrganization, zProject, zRotateClientSecretResponse, zRotateOrganizationKeyResponse, zUpdateOrganizationQuotaInput, zUpdateOrganizationQuotaResponse, zUpsertEventMetaInput };
package/dist/control.d.ts CHANGED
@@ -138,29 +138,70 @@ declare const zDeleteProjectResponse: z.ZodObject<{
138
138
  purgingAt: z.ZodOptional<z.ZodString>;
139
139
  }, z.core.$strip>;
140
140
  type DeleteProjectResponse = z.infer<typeof zDeleteProjectResponse>;
141
+ /**
142
+ * `PUT /api/v1/projects/{projectId}/events/{name}` — catalogue settings for
143
+ * one event name. Provisioning calls it to mark `form.submitted` a conversion
144
+ * and an operational probe `internal`; the call is idempotent so a retried
145
+ * provisioning run is harmless.
146
+ */
147
+ declare const EVENT_META_STATUSES: readonly ["active", "deprecated", "archived", "internal"];
148
+ declare const zEventMetaStatus: z.ZodEnum<{
149
+ active: "active";
150
+ deprecated: "deprecated";
151
+ archived: "archived";
152
+ internal: "internal";
153
+ }>;
154
+ type EventMetaStatus = z.infer<typeof zEventMetaStatus>;
155
+ declare const zEventName: z.ZodString;
156
+ declare const zUpsertEventMetaInput: z.ZodObject<{
157
+ conversion: z.ZodOptional<z.ZodBoolean>;
158
+ status: z.ZodOptional<z.ZodEnum<{
159
+ active: "active";
160
+ deprecated: "deprecated";
161
+ archived: "archived";
162
+ internal: "internal";
163
+ }>>;
164
+ rollupProperties: z.ZodOptional<z.ZodArray<z.ZodString>>;
165
+ }, z.core.$strict>;
166
+ type UpsertEventMetaInput = z.infer<typeof zUpsertEventMetaInput>;
167
+ declare const zEventMetaResponse: z.ZodObject<{
168
+ projectId: z.ZodString;
169
+ name: z.ZodString;
170
+ conversion: z.ZodBoolean;
171
+ status: z.ZodEnum<{
172
+ active: "active";
173
+ deprecated: "deprecated";
174
+ archived: "archived";
175
+ internal: "internal";
176
+ }>;
177
+ rollupProperties: z.ZodArray<z.ZodString>;
178
+ changed: z.ZodArray<z.ZodString>;
179
+ updatedAt: z.ZodString;
180
+ }, z.core.$strip>;
181
+ type EventMetaResponse = z.infer<typeof zEventMetaResponse>;
141
182
  declare const CONTROL_ERROR_CODES: readonly ["unauthorized", "organization_scope_mismatch", "external_id_conflict", "project_external_id_mismatch", "not_found", "validation_failed", "rate_limited", "internal_error"];
142
183
  declare const zControlErrorCode: z.ZodEnum<{
143
- validation_failed: "validation_failed";
144
184
  unauthorized: "unauthorized";
145
- rate_limited: "rate_limited";
146
- internal_error: "internal_error";
147
185
  organization_scope_mismatch: "organization_scope_mismatch";
148
186
  external_id_conflict: "external_id_conflict";
149
187
  project_external_id_mismatch: "project_external_id_mismatch";
150
188
  not_found: "not_found";
189
+ validation_failed: "validation_failed";
190
+ rate_limited: "rate_limited";
191
+ internal_error: "internal_error";
151
192
  }>;
152
193
  type ControlErrorCode = z.infer<typeof zControlErrorCode>;
153
194
  declare const zControlError: z.ZodObject<{
154
195
  status: z.ZodNumber;
155
196
  code: z.ZodEnum<{
156
- validation_failed: "validation_failed";
157
197
  unauthorized: "unauthorized";
158
- rate_limited: "rate_limited";
159
- internal_error: "internal_error";
160
198
  organization_scope_mismatch: "organization_scope_mismatch";
161
199
  external_id_conflict: "external_id_conflict";
162
200
  project_external_id_mismatch: "project_external_id_mismatch";
163
201
  not_found: "not_found";
202
+ validation_failed: "validation_failed";
203
+ rate_limited: "rate_limited";
204
+ internal_error: "internal_error";
164
205
  }>;
165
206
  error: z.ZodString;
166
207
  message: z.ZodOptional<z.ZodString>;
@@ -176,6 +217,7 @@ declare const CONTROL_API_PATHS: {
176
217
  readonly projects: "/api/v1/projects";
177
218
  readonly project: (id: string) => string;
178
219
  readonly clientRotate: (projectId: string, clientId: string) => string;
220
+ readonly projectEvent: (projectId: string, name: string) => string;
179
221
  };
180
222
 
181
- export { CONTROL_API_PATHS, CONTROL_ERROR_CODES, type ControlError, type ControlErrorCode, type CreateOrganizationInput, type CreateOrganizationResponse, type CreateProjectInput, type CreateProjectResponse, type DeleteProjectInput, type DeleteProjectResponse, ORG_KEY_HEADER, PLATFORM_KEY_HEADER, type RotateClientSecretResponse, type RotateOrganizationKeyResponse, type UpdateOrganizationQuotaInput, type UpdateOrganizationQuotaResponse, zControlError, zControlErrorCode, zCreateOrganizationInput, zCreateOrganizationResponse, zCreateProjectInput, zCreateProjectResponse, zDeleteProjectInput, zDeleteProjectResponse, zExternalId, zOrganization, zProject, zRotateClientSecretResponse, zRotateOrganizationKeyResponse, zUpdateOrganizationQuotaInput, zUpdateOrganizationQuotaResponse };
223
+ export { CONTROL_API_PATHS, CONTROL_ERROR_CODES, type ControlError, type ControlErrorCode, type CreateOrganizationInput, type CreateOrganizationResponse, type CreateProjectInput, type CreateProjectResponse, type DeleteProjectInput, type DeleteProjectResponse, EVENT_META_STATUSES, type EventMetaResponse, type EventMetaStatus, ORG_KEY_HEADER, PLATFORM_KEY_HEADER, type RotateClientSecretResponse, type RotateOrganizationKeyResponse, type UpdateOrganizationQuotaInput, type UpdateOrganizationQuotaResponse, type UpsertEventMetaInput, zControlError, zControlErrorCode, zCreateOrganizationInput, zCreateOrganizationResponse, zCreateProjectInput, zCreateProjectResponse, zDeleteProjectInput, zDeleteProjectResponse, zEventMetaResponse, zEventMetaStatus, zEventName, zExternalId, zOrganization, zProject, zRotateClientSecretResponse, zRotateOrganizationKeyResponse, zUpdateOrganizationQuotaInput, zUpdateOrganizationQuotaResponse, zUpsertEventMetaInput };
package/dist/control.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  CONTROL_API_PATHS,
3
3
  CONTROL_ERROR_CODES,
4
+ EVENT_META_STATUSES,
4
5
  ORG_KEY_HEADER,
5
6
  PLATFORM_KEY_HEADER,
6
7
  zControlError,
@@ -11,19 +12,24 @@ import {
11
12
  zCreateProjectResponse,
12
13
  zDeleteProjectInput,
13
14
  zDeleteProjectResponse,
15
+ zEventMetaResponse,
16
+ zEventMetaStatus,
17
+ zEventName,
14
18
  zExternalId,
15
19
  zOrganization,
16
20
  zProject,
17
21
  zRotateClientSecretResponse,
18
22
  zRotateOrganizationKeyResponse,
19
23
  zUpdateOrganizationQuotaInput,
20
- zUpdateOrganizationQuotaResponse
21
- } from "./chunk-2SJPZP2D.js";
22
- import "./chunk-SC7TFGTO.js";
23
- import "./chunk-IKOEYZVT.js";
24
+ zUpdateOrganizationQuotaResponse,
25
+ zUpsertEventMetaInput
26
+ } from "./chunk-AHXPQQKO.js";
27
+ import "./chunk-BCGR27G2.js";
28
+ import "./chunk-2LZBZXBF.js";
24
29
  export {
25
30
  CONTROL_API_PATHS,
26
31
  CONTROL_ERROR_CODES,
32
+ EVENT_META_STATUSES,
27
33
  ORG_KEY_HEADER,
28
34
  PLATFORM_KEY_HEADER,
29
35
  zControlError,
@@ -34,12 +40,16 @@ export {
34
40
  zCreateProjectResponse,
35
41
  zDeleteProjectInput,
36
42
  zDeleteProjectResponse,
43
+ zEventMetaResponse,
44
+ zEventMetaStatus,
45
+ zEventName,
37
46
  zExternalId,
38
47
  zOrganization,
39
48
  zProject,
40
49
  zRotateClientSecretResponse,
41
50
  zRotateOrganizationKeyResponse,
42
51
  zUpdateOrganizationQuotaInput,
43
- zUpdateOrganizationQuotaResponse
52
+ zUpdateOrganizationQuotaResponse,
53
+ zUpsertEventMetaInput
44
54
  };
45
55
  //# sourceMappingURL=control.js.map
package/dist/index.cjs CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
 
11
11
 
12
- var _chunkCSTC3ADGcjs = require('./chunk-CSTC3ADG.cjs');
12
+ var _chunkOLSMH4RYcjs = require('./chunk-OLSMH4RY.cjs');
13
13
 
14
14
 
15
15
 
@@ -21,5 +21,5 @@ var _chunkCSTC3ADGcjs = require('./chunk-CSTC3ADG.cjs');
21
21
 
22
22
 
23
23
 
24
- exports.CLIENT_ID_HEADER = _chunkCSTC3ADGcjs.CLIENT_ID_HEADER; exports.CLIENT_SECRET_HEADER = _chunkCSTC3ADGcjs.CLIENT_SECRET_HEADER; exports.CONTRACT_VERSION = _chunkCSTC3ADGcjs.CONTRACT_VERSION; exports.CONTRACT_VERSION_HEADER = _chunkCSTC3ADGcjs.CONTRACT_VERSION_HEADER; exports.DEVICE_ID_HEADER = _chunkCSTC3ADGcjs.DEVICE_ID_HEADER; exports.DataApiError = _chunkCSTC3ADGcjs.DataApiError; exports.REQUEST_ID_HEADER = _chunkCSTC3ADGcjs.REQUEST_ID_HEADER; exports.WRITE_KEY_HEADER = _chunkCSTC3ADGcjs.WRITE_KEY_HEADER; exports.zDate = _chunkCSTC3ADGcjs.zDate; exports.zInstant = _chunkCSTC3ADGcjs.zInstant;
24
+ exports.CLIENT_ID_HEADER = _chunkOLSMH4RYcjs.CLIENT_ID_HEADER; exports.CLIENT_SECRET_HEADER = _chunkOLSMH4RYcjs.CLIENT_SECRET_HEADER; exports.CONTRACT_VERSION = _chunkOLSMH4RYcjs.CONTRACT_VERSION; exports.CONTRACT_VERSION_HEADER = _chunkOLSMH4RYcjs.CONTRACT_VERSION_HEADER; exports.DEVICE_ID_HEADER = _chunkOLSMH4RYcjs.DEVICE_ID_HEADER; exports.DataApiError = _chunkOLSMH4RYcjs.DataApiError; exports.REQUEST_ID_HEADER = _chunkOLSMH4RYcjs.REQUEST_ID_HEADER; exports.WRITE_KEY_HEADER = _chunkOLSMH4RYcjs.WRITE_KEY_HEADER; exports.zDate = _chunkOLSMH4RYcjs.zDate; exports.zInstant = _chunkOLSMH4RYcjs.zInstant;
25
25
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.cts CHANGED
@@ -20,7 +20,7 @@ import { z } from 'zod';
20
20
  * The server echoes the version it was built against in `x-reopt-contract-version`;
21
21
  * `createDataClient` surfaces a mismatch rather than guessing.
22
22
  */
23
- declare const CONTRACT_VERSION = "0.2.0";
23
+ declare const CONTRACT_VERSION = "0.5.0";
24
24
  /** Response header carrying the server's contract version. */
25
25
  declare const CONTRACT_VERSION_HEADER = "x-reopt-contract-version";
26
26
  /** Request header names shared by the ingest and query planes. */
@@ -30,8 +30,8 @@ declare const WRITE_KEY_HEADER = "reopt-write-key";
30
30
  declare const DEVICE_ID_HEADER = "reopt-device-id";
31
31
  declare const REQUEST_ID_HEADER = "x-request-id";
32
32
  /**
33
- * A UTC calendar date. Windows are inclusive on both ends and are widened
34
- * server-side to `startDate T00:00:00Z` .. `endDate T23:59:59Z`.
33
+ * A real calendar date. The query's resolved IANA zone decides which instants
34
+ * its inclusive day covers.
35
35
  */
36
36
  declare const zDate: z.ZodString;
37
37
  /** ISO-8601 instant, as produced by `Date#toISOString()`. */
@@ -45,6 +45,17 @@ interface ClientCredentials {
45
45
  clientId: string;
46
46
  clientSecret: string;
47
47
  }
48
+ /**
49
+ * Credentials are optional on the client itself because the provisioning
50
+ * surface does not use them — it authenticates per call with a platform or
51
+ * organization key. A caller that only provisions should not have to invent an
52
+ * empty client id to satisfy a constructor.
53
+ *
54
+ * Reaching ingest or query without them fails with `credentials_missing`
55
+ * rather than sending an unauthenticated request and reporting the 401 as a
56
+ * server problem.
57
+ */
58
+ type OptionalClientCredentials = Partial<ClientCredentials>;
48
59
  /**
49
60
  * Every non-2xx response from either plane, plus the two failures the client
50
61
  * itself raises (`contract_mismatch`, `network_error`).
@@ -81,4 +92,4 @@ declare class DataApiError extends Error {
81
92
  static is(value: unknown): value is DataApiError;
82
93
  }
83
94
 
84
- export { CLIENT_ID_HEADER, CLIENT_SECRET_HEADER, CONTRACT_VERSION, CONTRACT_VERSION_HEADER, type ClientCredentials, DEVICE_ID_HEADER, DataApiError, REQUEST_ID_HEADER, WRITE_KEY_HEADER, zDate, zInstant };
95
+ export { CLIENT_ID_HEADER, CLIENT_SECRET_HEADER, CONTRACT_VERSION, CONTRACT_VERSION_HEADER, type ClientCredentials, DEVICE_ID_HEADER, DataApiError, type OptionalClientCredentials, REQUEST_ID_HEADER, WRITE_KEY_HEADER, zDate, zInstant };
package/dist/index.d.ts CHANGED
@@ -20,7 +20,7 @@ import { z } from 'zod';
20
20
  * The server echoes the version it was built against in `x-reopt-contract-version`;
21
21
  * `createDataClient` surfaces a mismatch rather than guessing.
22
22
  */
23
- declare const CONTRACT_VERSION = "0.2.0";
23
+ declare const CONTRACT_VERSION = "0.5.0";
24
24
  /** Response header carrying the server's contract version. */
25
25
  declare const CONTRACT_VERSION_HEADER = "x-reopt-contract-version";
26
26
  /** Request header names shared by the ingest and query planes. */
@@ -30,8 +30,8 @@ declare const WRITE_KEY_HEADER = "reopt-write-key";
30
30
  declare const DEVICE_ID_HEADER = "reopt-device-id";
31
31
  declare const REQUEST_ID_HEADER = "x-request-id";
32
32
  /**
33
- * A UTC calendar date. Windows are inclusive on both ends and are widened
34
- * server-side to `startDate T00:00:00Z` .. `endDate T23:59:59Z`.
33
+ * A real calendar date. The query's resolved IANA zone decides which instants
34
+ * its inclusive day covers.
35
35
  */
36
36
  declare const zDate: z.ZodString;
37
37
  /** ISO-8601 instant, as produced by `Date#toISOString()`. */
@@ -45,6 +45,17 @@ interface ClientCredentials {
45
45
  clientId: string;
46
46
  clientSecret: string;
47
47
  }
48
+ /**
49
+ * Credentials are optional on the client itself because the provisioning
50
+ * surface does not use them — it authenticates per call with a platform or
51
+ * organization key. A caller that only provisions should not have to invent an
52
+ * empty client id to satisfy a constructor.
53
+ *
54
+ * Reaching ingest or query without them fails with `credentials_missing`
55
+ * rather than sending an unauthenticated request and reporting the 401 as a
56
+ * server problem.
57
+ */
58
+ type OptionalClientCredentials = Partial<ClientCredentials>;
48
59
  /**
49
60
  * Every non-2xx response from either plane, plus the two failures the client
50
61
  * itself raises (`contract_mismatch`, `network_error`).
@@ -81,4 +92,4 @@ declare class DataApiError extends Error {
81
92
  static is(value: unknown): value is DataApiError;
82
93
  }
83
94
 
84
- export { CLIENT_ID_HEADER, CLIENT_SECRET_HEADER, CONTRACT_VERSION, CONTRACT_VERSION_HEADER, type ClientCredentials, DEVICE_ID_HEADER, DataApiError, REQUEST_ID_HEADER, WRITE_KEY_HEADER, zDate, zInstant };
95
+ export { CLIENT_ID_HEADER, CLIENT_SECRET_HEADER, CONTRACT_VERSION, CONTRACT_VERSION_HEADER, type ClientCredentials, DEVICE_ID_HEADER, DataApiError, type OptionalClientCredentials, REQUEST_ID_HEADER, WRITE_KEY_HEADER, zDate, zInstant };
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  WRITE_KEY_HEADER,
10
10
  zDate,
11
11
  zInstant
12
- } from "./chunk-IKOEYZVT.js";
12
+ } from "./chunk-2LZBZXBF.js";
13
13
  export {
14
14
  CLIENT_ID_HEADER,
15
15
  CLIENT_SECRET_HEADER,
package/dist/ingest.cjs CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- var _chunkHRKELGGHcjs = require('./chunk-HRKELGGH.cjs');
21
+ var _chunkXI3VP5DNcjs = require('./chunk-XI3VP5DN.cjs');
22
22
 
23
23
 
24
24
 
@@ -39,5 +39,5 @@ var _chunkHRKELGGHcjs = require('./chunk-HRKELGGH.cjs');
39
39
 
40
40
 
41
41
 
42
- exports.INGEST_ERROR_CODES = _chunkHRKELGGHcjs.INGEST_ERROR_CODES; exports.INGEST_MODES = _chunkHRKELGGHcjs.INGEST_MODES; exports.INGEST_REJECTION_REASONS = _chunkHRKELGGHcjs.INGEST_REJECTION_REASONS; exports.MAX_TRACK_PAYLOAD_BYTES = _chunkHRKELGGHcjs.MAX_TRACK_PAYLOAD_BYTES; exports.RESERVED_EVENT_NAMES = _chunkHRKELGGHcjs.RESERVED_EVENT_NAMES; exports.reconcileIngestResponse = _chunkHRKELGGHcjs.reconcileIngestResponse; exports.zDecrementPayload = _chunkHRKELGGHcjs.zDecrementPayload; exports.zIdentifyPayload = _chunkHRKELGGHcjs.zIdentifyPayload; exports.zIncrementPayload = _chunkHRKELGGHcjs.zIncrementPayload; exports.zIngestAcceptedResponse = _chunkHRKELGGHcjs.zIngestAcceptedResponse; exports.zIngestError = _chunkHRKELGGHcjs.zIngestError; exports.zIngestErrorCode = _chunkHRKELGGHcjs.zIngestErrorCode; exports.zIngestMode = _chunkHRKELGGHcjs.zIngestMode; exports.zIngestOkResponse = _chunkHRKELGGHcjs.zIngestOkResponse; exports.zIngestRejection = _chunkHRKELGGHcjs.zIngestRejection; exports.zIngestRejectionReason = _chunkHRKELGGHcjs.zIngestRejectionReason; exports.zIngestResponse = _chunkHRKELGGHcjs.zIngestResponse; exports.zTrackHandlerPayload = _chunkHRKELGGHcjs.zTrackHandlerPayload; exports.zTrackPayload = _chunkHRKELGGHcjs.zTrackPayload;
42
+ exports.INGEST_ERROR_CODES = _chunkXI3VP5DNcjs.INGEST_ERROR_CODES; exports.INGEST_MODES = _chunkXI3VP5DNcjs.INGEST_MODES; exports.INGEST_REJECTION_REASONS = _chunkXI3VP5DNcjs.INGEST_REJECTION_REASONS; exports.MAX_TRACK_PAYLOAD_BYTES = _chunkXI3VP5DNcjs.MAX_TRACK_PAYLOAD_BYTES; exports.RESERVED_EVENT_NAMES = _chunkXI3VP5DNcjs.RESERVED_EVENT_NAMES; exports.reconcileIngestResponse = _chunkXI3VP5DNcjs.reconcileIngestResponse; exports.zDecrementPayload = _chunkXI3VP5DNcjs.zDecrementPayload; exports.zIdentifyPayload = _chunkXI3VP5DNcjs.zIdentifyPayload; exports.zIncrementPayload = _chunkXI3VP5DNcjs.zIncrementPayload; exports.zIngestAcceptedResponse = _chunkXI3VP5DNcjs.zIngestAcceptedResponse; exports.zIngestError = _chunkXI3VP5DNcjs.zIngestError; exports.zIngestErrorCode = _chunkXI3VP5DNcjs.zIngestErrorCode; exports.zIngestMode = _chunkXI3VP5DNcjs.zIngestMode; exports.zIngestOkResponse = _chunkXI3VP5DNcjs.zIngestOkResponse; exports.zIngestRejection = _chunkXI3VP5DNcjs.zIngestRejection; exports.zIngestRejectionReason = _chunkXI3VP5DNcjs.zIngestRejectionReason; exports.zIngestResponse = _chunkXI3VP5DNcjs.zIngestResponse; exports.zTrackHandlerPayload = _chunkXI3VP5DNcjs.zTrackHandlerPayload; exports.zTrackPayload = _chunkXI3VP5DNcjs.zTrackPayload;
43
43
  //# sourceMappingURL=ingest.cjs.map
package/dist/ingest.d.cts CHANGED
@@ -232,33 +232,35 @@ declare function reconcileIngestResponse(response: IngestResponse, sentCount: nu
232
232
  * Stable machine-readable codes. Branch on these, never on `error`/`message`,
233
233
  * which are prose and may be reworded.
234
234
  */
235
- declare const INGEST_ERROR_CODES: readonly ["unauthorized", "invalid_json", "payload_too_large", "empty_batch", "alias_unsupported", "project_without_organization", "validation_failed", "rate_limited", "quota_exceeded", "internal_error"];
235
+ declare const INGEST_ERROR_CODES: readonly ["unauthorized", "invalid_json", "payload_too_large", "empty_batch", "alias_unsupported", "project_without_organization", "validation_failed", "rate_limited", "quota_exceeded", "project_purging", "internal_error"];
236
236
  declare const zIngestErrorCode: z.ZodEnum<{
237
- validation_failed: "validation_failed";
238
237
  unauthorized: "unauthorized";
238
+ validation_failed: "validation_failed";
239
+ rate_limited: "rate_limited";
240
+ internal_error: "internal_error";
239
241
  invalid_json: "invalid_json";
240
242
  payload_too_large: "payload_too_large";
241
243
  empty_batch: "empty_batch";
242
244
  alias_unsupported: "alias_unsupported";
243
245
  project_without_organization: "project_without_organization";
244
- rate_limited: "rate_limited";
245
246
  quota_exceeded: "quota_exceeded";
246
- internal_error: "internal_error";
247
+ project_purging: "project_purging";
247
248
  }>;
248
249
  type IngestErrorCode = z.infer<typeof zIngestErrorCode>;
249
250
  declare const zIngestError: z.ZodObject<{
250
251
  status: z.ZodNumber;
251
252
  code: z.ZodEnum<{
252
- validation_failed: "validation_failed";
253
253
  unauthorized: "unauthorized";
254
+ validation_failed: "validation_failed";
255
+ rate_limited: "rate_limited";
256
+ internal_error: "internal_error";
254
257
  invalid_json: "invalid_json";
255
258
  payload_too_large: "payload_too_large";
256
259
  empty_batch: "empty_batch";
257
260
  alias_unsupported: "alias_unsupported";
258
261
  project_without_organization: "project_without_organization";
259
- rate_limited: "rate_limited";
260
262
  quota_exceeded: "quota_exceeded";
261
- internal_error: "internal_error";
263
+ project_purging: "project_purging";
262
264
  }>;
263
265
  error: z.ZodString;
264
266
  message: z.ZodOptional<z.ZodString>;
package/dist/ingest.d.ts CHANGED
@@ -232,33 +232,35 @@ declare function reconcileIngestResponse(response: IngestResponse, sentCount: nu
232
232
  * Stable machine-readable codes. Branch on these, never on `error`/`message`,
233
233
  * which are prose and may be reworded.
234
234
  */
235
- declare const INGEST_ERROR_CODES: readonly ["unauthorized", "invalid_json", "payload_too_large", "empty_batch", "alias_unsupported", "project_without_organization", "validation_failed", "rate_limited", "quota_exceeded", "internal_error"];
235
+ declare const INGEST_ERROR_CODES: readonly ["unauthorized", "invalid_json", "payload_too_large", "empty_batch", "alias_unsupported", "project_without_organization", "validation_failed", "rate_limited", "quota_exceeded", "project_purging", "internal_error"];
236
236
  declare const zIngestErrorCode: z.ZodEnum<{
237
- validation_failed: "validation_failed";
238
237
  unauthorized: "unauthorized";
238
+ validation_failed: "validation_failed";
239
+ rate_limited: "rate_limited";
240
+ internal_error: "internal_error";
239
241
  invalid_json: "invalid_json";
240
242
  payload_too_large: "payload_too_large";
241
243
  empty_batch: "empty_batch";
242
244
  alias_unsupported: "alias_unsupported";
243
245
  project_without_organization: "project_without_organization";
244
- rate_limited: "rate_limited";
245
246
  quota_exceeded: "quota_exceeded";
246
- internal_error: "internal_error";
247
+ project_purging: "project_purging";
247
248
  }>;
248
249
  type IngestErrorCode = z.infer<typeof zIngestErrorCode>;
249
250
  declare const zIngestError: z.ZodObject<{
250
251
  status: z.ZodNumber;
251
252
  code: z.ZodEnum<{
252
- validation_failed: "validation_failed";
253
253
  unauthorized: "unauthorized";
254
+ validation_failed: "validation_failed";
255
+ rate_limited: "rate_limited";
256
+ internal_error: "internal_error";
254
257
  invalid_json: "invalid_json";
255
258
  payload_too_large: "payload_too_large";
256
259
  empty_batch: "empty_batch";
257
260
  alias_unsupported: "alias_unsupported";
258
261
  project_without_organization: "project_without_organization";
259
- rate_limited: "rate_limited";
260
262
  quota_exceeded: "quota_exceeded";
261
- internal_error: "internal_error";
263
+ project_purging: "project_purging";
262
264
  }>;
263
265
  error: z.ZodString;
264
266
  message: z.ZodOptional<z.ZodString>;
package/dist/ingest.js CHANGED
@@ -18,7 +18,7 @@ import {
18
18
  zIngestResponse,
19
19
  zTrackHandlerPayload,
20
20
  zTrackPayload
21
- } from "./chunk-FRJK7OCQ.js";
21
+ } from "./chunk-MFZEIH5Z.js";
22
22
  export {
23
23
  INGEST_ERROR_CODES,
24
24
  INGEST_MODES,