@reopt-ai/data-contract 0.6.2 → 0.7.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.
- package/dist/client.cjs +228 -321
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +57 -71
- package/dist/client.d.cts.map +1 -0
- package/dist/client.d.ts +57 -71
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +228 -322
- package/dist/client.js.map +1 -1
- package/dist/control.cjs +158 -54
- package/dist/control.cjs.map +1 -1
- package/dist/control.d.cts +124 -140
- package/dist/control.d.cts.map +1 -0
- package/dist/control.d.ts +124 -140
- package/dist/control.d.ts.map +1 -0
- package/dist/control.js +134 -54
- package/dist/control.js.map +1 -1
- package/dist/events-BUIeU60t.d.cts +142 -0
- package/dist/events-BUIeU60t.d.cts.map +1 -0
- package/dist/events-BUIeU60t.d.ts +142 -0
- package/dist/events-BUIeU60t.d.ts.map +1 -0
- package/dist/events.cjs +110 -15
- package/dist/events.cjs.map +1 -1
- package/dist/events.d.cts +2 -59
- package/dist/events.d.ts +2 -59
- package/dist/events.js +101 -15
- package/dist/events.js.map +1 -1
- package/dist/identity.cjs +150 -55
- package/dist/identity.cjs.map +1 -1
- package/dist/identity.d.cts +21 -20
- package/dist/identity.d.cts.map +1 -0
- package/dist/identity.d.ts +21 -20
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +126 -56
- package/dist/identity.js.map +1 -1
- package/dist/index.cjs +46 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +37 -54
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +37 -54
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -25
- package/dist/index.js.map +1 -1
- package/dist/ingest.cjs +152 -57
- package/dist/ingest.cjs.map +1 -1
- package/dist/ingest.d.cts +185 -196
- package/dist/ingest.d.cts.map +1 -0
- package/dist/ingest.d.ts +185 -196
- package/dist/ingest.d.ts.map +1 -0
- package/dist/ingest.js +126 -57
- package/dist/ingest.js.map +1 -1
- package/dist/query.cjs +284 -84
- package/dist/query.cjs.map +1 -1
- package/dist/query.d.cts +458 -471
- package/dist/query.d.cts.map +1 -0
- package/dist/query.d.ts +458 -471
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +245 -84
- package/dist/query.js.map +1 -1
- package/dist/report.cjs +104 -74
- package/dist/report.cjs.map +1 -1
- package/dist/report.d.cts +182 -136
- package/dist/report.d.cts.map +1 -0
- package/dist/report.d.ts +182 -136
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +93 -74
- package/dist/report.js.map +1 -1
- package/dist/version-B_0qb1_K.cjs +53 -0
- package/dist/version-B_0qb1_K.cjs.map +1 -0
- package/dist/version-C09Cyf4R.js +12 -0
- package/dist/version-C09Cyf4R.js.map +1 -0
- package/dist/{version-BANKB6Og.d.ts → version-CGujUGWd.d.cts} +5 -3
- package/dist/version-CGujUGWd.d.cts.map +1 -0
- package/dist/{version-BANKB6Og.d.cts → version-CGujUGWd.d.ts} +5 -3
- package/dist/version-CGujUGWd.d.ts.map +1 -0
- package/package.json +69 -28
- package/dist/chunk-33BCA2LH.js +0 -53
- package/dist/chunk-33BCA2LH.js.map +0 -1
- package/dist/chunk-3EEANNYN.cjs +0 -62
- package/dist/chunk-3EEANNYN.cjs.map +0 -1
- package/dist/chunk-AOS53KAV.cjs +0 -19
- package/dist/chunk-AOS53KAV.cjs.map +0 -1
- package/dist/chunk-BA52YA7N.cjs +0 -179
- package/dist/chunk-BA52YA7N.cjs.map +0 -1
- package/dist/chunk-DUJSYMYY.js +0 -179
- package/dist/chunk-DUJSYMYY.js.map +0 -1
- package/dist/chunk-FMOKJTQD.js +0 -160
- package/dist/chunk-FMOKJTQD.js.map +0 -1
- package/dist/chunk-FP2X3PRK.js +0 -62
- package/dist/chunk-FP2X3PRK.js.map +0 -1
- package/dist/chunk-FQSCQSMP.cjs +0 -160
- package/dist/chunk-FQSCQSMP.cjs.map +0 -1
- package/dist/chunk-FUGY5ANJ.cjs +0 -361
- package/dist/chunk-FUGY5ANJ.cjs.map +0 -1
- package/dist/chunk-IY4MXH35.js +0 -204
- package/dist/chunk-IY4MXH35.js.map +0 -1
- package/dist/chunk-L3WJGIKD.js +0 -361
- package/dist/chunk-L3WJGIKD.js.map +0 -1
- package/dist/chunk-LA5F5KR6.cjs +0 -204
- package/dist/chunk-LA5F5KR6.cjs.map +0 -1
- package/dist/chunk-YSAEOYPD.cjs +0 -53
- package/dist/chunk-YSAEOYPD.cjs.map +0 -1
- package/dist/chunk-ZCKVMUIQ.js +0 -19
- package/dist/chunk-ZCKVMUIQ.js.map +0 -1
package/dist/chunk-LA5F5KR6.cjs
DELETED
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
-
|
|
3
|
-
var _chunkFUGY5ANJcjs = require('./chunk-FUGY5ANJ.cjs');
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var _chunkYSAEOYPDcjs = require('./chunk-YSAEOYPD.cjs');
|
|
7
|
-
|
|
8
|
-
// src/control.ts
|
|
9
|
-
var _zod = require('zod');
|
|
10
|
-
var PLATFORM_KEY_HEADER = "reopt-platform-key";
|
|
11
|
-
var ORG_KEY_HEADER = "reopt-org-key";
|
|
12
|
-
var zExternalId = _zod.z.string().min(1).max(191);
|
|
13
|
-
var zCreateOrganizationInput = _zod.z.object({
|
|
14
|
-
externalId: zExternalId,
|
|
15
|
-
name: _zod.z.string().min(1).max(200),
|
|
16
|
-
slug: _zod.z.string().min(1).max(100).regex(/^[a-z0-9-]+$/, "lowercase letters, digits and hyphens only").optional(),
|
|
17
|
-
monthlyEventQuota: _zod.z.number().int().nonnegative().optional(),
|
|
18
|
-
monthlyCreditQuota: _zod.z.number().int().nonnegative().optional()
|
|
19
|
-
});
|
|
20
|
-
var zOrganization = _zod.z.object({
|
|
21
|
-
id: _zod.z.string(),
|
|
22
|
-
externalId: zExternalId,
|
|
23
|
-
name: _zod.z.string(),
|
|
24
|
-
slug: _zod.z.string(),
|
|
25
|
-
monthlyEventQuota: _zod.z.number().int(),
|
|
26
|
-
monthlyCreditQuota: _zod.z.number().int()
|
|
27
|
-
});
|
|
28
|
-
var zCreateOrganizationResponse = _zod.z.object({
|
|
29
|
-
/** `false` when this externalId already had an organization. */
|
|
30
|
-
created: _zod.z.boolean(),
|
|
31
|
-
organization: zOrganization,
|
|
32
|
-
/**
|
|
33
|
-
* Plaintext, returned here and nowhere else.
|
|
34
|
-
*
|
|
35
|
-
* Absent when `created` is `false`: re-issuing on every retry would let a
|
|
36
|
-
* retry quietly multiply live credentials. A caller that lost the key rotates
|
|
37
|
-
* instead — see `POST /api/v1/organizations/{id}/keys`.
|
|
38
|
-
*/
|
|
39
|
-
orgKey: _zod.z.string().optional()
|
|
40
|
-
});
|
|
41
|
-
var zRotateOrganizationKeyResponse = _zod.z.object({
|
|
42
|
-
organizationId: _zod.z.string(),
|
|
43
|
-
keyPrefix: _zod.z.string(),
|
|
44
|
-
/** Plaintext, returned once. Every previously issued key is revoked immediately. */
|
|
45
|
-
orgKey: _zod.z.string()
|
|
46
|
-
});
|
|
47
|
-
var zUpdateOrganizationQuotaInput = _zod.z.object({
|
|
48
|
-
monthlyEventQuota: _zod.z.number().int().nonnegative().optional(),
|
|
49
|
-
monthlyCreditQuota: _zod.z.number().int().nonnegative().optional()
|
|
50
|
-
}).refine((value) => value.monthlyEventQuota !== void 0 || value.monthlyCreditQuota !== void 0, {
|
|
51
|
-
message: "at least one quota must be given"
|
|
52
|
-
});
|
|
53
|
-
var zUpdateOrganizationQuotaResponse = _zod.z.object({ organization: zOrganization });
|
|
54
|
-
var zCreateProjectInput = _zod.z.object({
|
|
55
|
-
externalId: zExternalId,
|
|
56
|
-
name: _zod.z.string().min(1).max(200),
|
|
57
|
-
domain: _zod.z.string().max(253).optional(),
|
|
58
|
-
/** Becomes the project's default for every query that omits one. */
|
|
59
|
-
timezone: _chunkFUGY5ANJcjs.zTimezone.optional(),
|
|
60
|
-
retentionDays: _zod.z.number().int().min(1).max(3650).optional()
|
|
61
|
-
});
|
|
62
|
-
var zProject = _zod.z.object({
|
|
63
|
-
id: _zod.z.string(),
|
|
64
|
-
externalId: zExternalId,
|
|
65
|
-
organizationId: _zod.z.string(),
|
|
66
|
-
name: _zod.z.string(),
|
|
67
|
-
/** The applied value — `"UTC"` when none was given. */
|
|
68
|
-
timezone: _zod.z.string(),
|
|
69
|
-
retentionDays: _zod.z.number().int().nullable()
|
|
70
|
-
});
|
|
71
|
-
var zCreateProjectResponse = _zod.z.object({
|
|
72
|
-
created: _zod.z.boolean(),
|
|
73
|
-
project: zProject,
|
|
74
|
-
/**
|
|
75
|
-
* Two credentials, not one. A key embedded in a browser bundle must not also
|
|
76
|
-
* be able to read the project's analytics, so the browser write key and the
|
|
77
|
-
* server secret are separate rows with different reach.
|
|
78
|
-
*/
|
|
79
|
-
clients: _zod.z.object({
|
|
80
|
-
browser: _zod.z.object({
|
|
81
|
-
id: _zod.z.string(),
|
|
82
|
-
/** Public by design, and recoverable — it ships in page source anyway. */
|
|
83
|
-
writeKey: _zod.z.string(),
|
|
84
|
-
scopes: _zod.z.array(_zod.z.string())
|
|
85
|
-
}),
|
|
86
|
-
server: _zod.z.object({
|
|
87
|
-
id: _zod.z.string(),
|
|
88
|
-
/** Plaintext, returned once. Absent when `created` is `false`. */
|
|
89
|
-
clientSecret: _zod.z.string().optional(),
|
|
90
|
-
scopes: _zod.z.array(_zod.z.string())
|
|
91
|
-
})
|
|
92
|
-
})
|
|
93
|
-
});
|
|
94
|
-
var zRotateClientSecretResponse = _zod.z.object({
|
|
95
|
-
projectId: _zod.z.string(),
|
|
96
|
-
clientId: _zod.z.string(),
|
|
97
|
-
/** Plaintext, returned once. The previous secret stops working immediately. */
|
|
98
|
-
clientSecret: _zod.z.string()
|
|
99
|
-
});
|
|
100
|
-
var zDeleteProjectInput = _zod.z.object({
|
|
101
|
-
/**
|
|
102
|
-
* A field in the body rather than `?purge=true`. This deletes the project's
|
|
103
|
-
* Postgres rows and every analytics row behind it, with no undo — and a query
|
|
104
|
-
* parameter is far too easy to fire from shell history or a mis-copied URL.
|
|
105
|
-
*/
|
|
106
|
-
purge: _zod.z.literal(true),
|
|
107
|
-
/** Checked against the project on record; a mismatch is refused. */
|
|
108
|
-
externalId: zExternalId
|
|
109
|
-
});
|
|
110
|
-
var zDeleteProjectResponse = _zod.z.object({
|
|
111
|
-
projectId: _zod.z.string(),
|
|
112
|
-
/** Idempotent, but it still says which of the two happened. */
|
|
113
|
-
purge: _zod.z.enum(["queued", "already-absent"]),
|
|
114
|
-
/** When the purge was marked. Absent for `already-absent`. */
|
|
115
|
-
purgingAt: _chunkYSAEOYPDcjs.zInstant.optional()
|
|
116
|
-
});
|
|
117
|
-
var EVENT_META_STATUSES = ["active", "deprecated", "archived", "internal"];
|
|
118
|
-
var zEventMetaStatus = _zod.z.enum(EVENT_META_STATUSES);
|
|
119
|
-
var zEventName = _zod.z.string().min(1).max(200);
|
|
120
|
-
var zUpsertEventMetaInput = _zod.z.object({
|
|
121
|
-
conversion: _zod.z.boolean().optional(),
|
|
122
|
-
/** `internal` events are left out of every metric unless a query opts in. */
|
|
123
|
-
status: zEventMetaStatus.optional(),
|
|
124
|
-
/** Property keys the hourly rollups break this event down by. */
|
|
125
|
-
rollupProperties: _zod.z.array(_zod.z.string().min(1).max(200)).max(20).optional()
|
|
126
|
-
}).strict();
|
|
127
|
-
var zEventMetaResponse = _zod.z.object({
|
|
128
|
-
projectId: _zod.z.string(),
|
|
129
|
-
name: _zod.z.string(),
|
|
130
|
-
conversion: _zod.z.boolean(),
|
|
131
|
-
status: zEventMetaStatus,
|
|
132
|
-
rollupProperties: _zod.z.array(_zod.z.string()),
|
|
133
|
-
/** Fields this call actually changed; empty on a repeat. */
|
|
134
|
-
changed: _zod.z.array(_zod.z.string()),
|
|
135
|
-
updatedAt: _chunkYSAEOYPDcjs.zInstant
|
|
136
|
-
});
|
|
137
|
-
var CONTROL_ERROR_CODES = [
|
|
138
|
-
/** 401 — missing or invalid platform key / organization key. */
|
|
139
|
-
"unauthorized",
|
|
140
|
-
/** 403 — the organization key belongs to a different organization. */
|
|
141
|
-
"organization_scope_mismatch",
|
|
142
|
-
/**
|
|
143
|
-
* 409 — this externalId exists with a materially different configuration.
|
|
144
|
-
* Only fields whose change alters results are compared (see the docs); a
|
|
145
|
-
* renamed brand is not a conflict.
|
|
146
|
-
*/
|
|
147
|
-
"external_id_conflict",
|
|
148
|
-
/** 409 — the externalId in a delete body does not match the project's. */
|
|
149
|
-
"project_external_id_mismatch",
|
|
150
|
-
/** 404 — no such organization or project, on an endpoint that is not idempotent. */
|
|
151
|
-
"not_found",
|
|
152
|
-
/** 400 — input failed the schema. */
|
|
153
|
-
"validation_failed",
|
|
154
|
-
/** 429 — per-credential rate limit. */
|
|
155
|
-
"rate_limited",
|
|
156
|
-
/** 500 — unexpected server failure. */
|
|
157
|
-
"internal_error"
|
|
158
|
-
];
|
|
159
|
-
var zControlErrorCode = _zod.z.enum(CONTROL_ERROR_CODES);
|
|
160
|
-
var zControlError = _zod.z.object({
|
|
161
|
-
status: _zod.z.number().int(),
|
|
162
|
-
code: zControlErrorCode,
|
|
163
|
-
error: _zod.z.string(),
|
|
164
|
-
message: _zod.z.string().optional(),
|
|
165
|
-
errors: _zod.z.unknown().optional(),
|
|
166
|
-
requestId: _zod.z.string().optional()
|
|
167
|
-
});
|
|
168
|
-
var CONTROL_API_PATHS = {
|
|
169
|
-
organizations: "/api/v1/organizations",
|
|
170
|
-
organization: (id) => `/api/v1/organizations/${encodeURIComponent(id)}`,
|
|
171
|
-
organizationKeys: (id) => `/api/v1/organizations/${encodeURIComponent(id)}/keys`,
|
|
172
|
-
projects: "/api/v1/projects",
|
|
173
|
-
project: (id) => `/api/v1/projects/${encodeURIComponent(id)}`,
|
|
174
|
-
clientRotate: (projectId, clientId) => `/api/v1/projects/${encodeURIComponent(projectId)}/clients/${encodeURIComponent(clientId)}/rotate`,
|
|
175
|
-
projectEvent: (projectId, name) => `/api/v1/projects/${encodeURIComponent(projectId)}/events/${encodeURIComponent(name)}`
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
exports.PLATFORM_KEY_HEADER = PLATFORM_KEY_HEADER; exports.ORG_KEY_HEADER = ORG_KEY_HEADER; exports.zExternalId = zExternalId; exports.zCreateOrganizationInput = zCreateOrganizationInput; exports.zOrganization = zOrganization; exports.zCreateOrganizationResponse = zCreateOrganizationResponse; exports.zRotateOrganizationKeyResponse = zRotateOrganizationKeyResponse; exports.zUpdateOrganizationQuotaInput = zUpdateOrganizationQuotaInput; exports.zUpdateOrganizationQuotaResponse = zUpdateOrganizationQuotaResponse; exports.zCreateProjectInput = zCreateProjectInput; exports.zProject = zProject; exports.zCreateProjectResponse = zCreateProjectResponse; exports.zRotateClientSecretResponse = zRotateClientSecretResponse; exports.zDeleteProjectInput = zDeleteProjectInput; exports.zDeleteProjectResponse = zDeleteProjectResponse; exports.EVENT_META_STATUSES = EVENT_META_STATUSES; exports.zEventMetaStatus = zEventMetaStatus; exports.zEventName = zEventName; exports.zUpsertEventMetaInput = zUpsertEventMetaInput; exports.zEventMetaResponse = zEventMetaResponse; exports.CONTROL_ERROR_CODES = CONTROL_ERROR_CODES; exports.zControlErrorCode = zControlErrorCode; exports.zControlError = zControlError; exports.CONTROL_API_PATHS = CONTROL_API_PATHS;
|
|
204
|
-
//# sourceMappingURL=chunk-LA5F5KR6.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/eric/reopt-ai/reopt-data/packages/data-contract/dist/chunk-LA5F5KR6.cjs","../src/control.ts"],"names":[],"mappings":"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","file":"/Users/eric/reopt-ai/reopt-data/packages/data-contract/dist/chunk-LA5F5KR6.cjs","sourcesContent":[null,"/**\n * `POST /api/v1/organizations` · `/api/v1/projects` and friends — the\n * provisioning contract.\n *\n * A project-scoped client credential cannot authenticate the creation of the\n * project it is scoped to, and an organization key cannot authenticate the\n * creation of its own organization. So provisioning runs on two credentials\n * above the client one: a platform key that creates organizations and writes\n * quotas, and an organization key that creates and deletes projects inside one\n * organization.\n *\n * Quota writes sit with the platform key on purpose. Organization keys are held\n * one-per-workspace by the caller and so have a wide exposure surface; a leaked\n * one that could raise its own limits would turn a credential leak into an\n * unbounded bill.\n */\nimport { z } from \"zod\";\nimport { zInstant } from \"./index.js\";\nimport { zTimezone } from \"./query.js\";\n\nexport const PLATFORM_KEY_HEADER = \"reopt-platform-key\";\nexport const ORG_KEY_HEADER = \"reopt-org-key\";\n\n/**\n * The caller's own id for the thing being provisioned.\n *\n * Preferred over an `Idempotency-Key` header because this domain has a real\n * natural key — the caller already has a stable id for the workspace or brand —\n * and a header would make the caller store a second one just to retry safely.\n */\nexport const zExternalId = z.string().min(1).max(191);\n\n// ─── Organizations ──────────────────────────────────────────────────────────\n\nexport const zCreateOrganizationInput = z.object({\n externalId: zExternalId,\n name: z.string().min(1).max(200),\n slug: z\n .string()\n .min(1)\n .max(100)\n .regex(/^[a-z0-9-]+$/, \"lowercase letters, digits and hyphens only\")\n .optional(),\n monthlyEventQuota: z.number().int().nonnegative().optional(),\n monthlyCreditQuota: z.number().int().nonnegative().optional(),\n});\nexport type CreateOrganizationInput = z.input<typeof zCreateOrganizationInput>;\n\nexport const zOrganization = z.object({\n id: z.string(),\n externalId: zExternalId,\n name: z.string(),\n slug: z.string(),\n monthlyEventQuota: z.number().int(),\n monthlyCreditQuota: z.number().int(),\n});\n\nexport const zCreateOrganizationResponse = z.object({\n /** `false` when this externalId already had an organization. */\n created: z.boolean(),\n organization: zOrganization,\n /**\n * Plaintext, returned here and nowhere else.\n *\n * Absent when `created` is `false`: re-issuing on every retry would let a\n * retry quietly multiply live credentials. A caller that lost the key rotates\n * instead — see `POST /api/v1/organizations/{id}/keys`.\n */\n orgKey: z.string().optional(),\n});\nexport type CreateOrganizationResponse = z.infer<typeof zCreateOrganizationResponse>;\n\nexport const zRotateOrganizationKeyResponse = z.object({\n organizationId: z.string(),\n keyPrefix: z.string(),\n /** Plaintext, returned once. Every previously issued key is revoked immediately. */\n orgKey: z.string(),\n});\nexport type RotateOrganizationKeyResponse = z.infer<typeof zRotateOrganizationKeyResponse>;\n\nexport const zUpdateOrganizationQuotaInput = z\n .object({\n monthlyEventQuota: z.number().int().nonnegative().optional(),\n monthlyCreditQuota: z.number().int().nonnegative().optional(),\n })\n .refine((value) => value.monthlyEventQuota !== undefined || value.monthlyCreditQuota !== undefined, {\n message: \"at least one quota must be given\",\n });\nexport type UpdateOrganizationQuotaInput = z.input<typeof zUpdateOrganizationQuotaInput>;\n\nexport const zUpdateOrganizationQuotaResponse = z.object({ organization: zOrganization });\nexport type UpdateOrganizationQuotaResponse = z.infer<typeof zUpdateOrganizationQuotaResponse>;\n\n// ─── Projects ───────────────────────────────────────────────────────────────\n\nexport const zCreateProjectInput = z.object({\n externalId: zExternalId,\n name: z.string().min(1).max(200),\n domain: z.string().max(253).optional(),\n /** Becomes the project's default for every query that omits one. */\n timezone: zTimezone.optional(),\n retentionDays: z.number().int().min(1).max(3650).optional(),\n});\nexport type CreateProjectInput = z.input<typeof zCreateProjectInput>;\n\nexport const zProject = z.object({\n id: z.string(),\n externalId: zExternalId,\n organizationId: z.string(),\n name: z.string(),\n /** The applied value — `\"UTC\"` when none was given. */\n timezone: z.string(),\n retentionDays: z.number().int().nullable(),\n});\n\nexport const zCreateProjectResponse = z.object({\n created: z.boolean(),\n project: zProject,\n /**\n * Two credentials, not one. A key embedded in a browser bundle must not also\n * be able to read the project's analytics, so the browser write key and the\n * server secret are separate rows with different reach.\n */\n clients: z.object({\n browser: z.object({\n id: z.string(),\n /** Public by design, and recoverable — it ships in page source anyway. */\n writeKey: z.string(),\n scopes: z.array(z.string()),\n }),\n server: z.object({\n id: z.string(),\n /** Plaintext, returned once. Absent when `created` is `false`. */\n clientSecret: z.string().optional(),\n scopes: z.array(z.string()),\n }),\n }),\n});\nexport type CreateProjectResponse = z.infer<typeof zCreateProjectResponse>;\n\nexport const zRotateClientSecretResponse = z.object({\n projectId: z.string(),\n clientId: z.string(),\n /** Plaintext, returned once. The previous secret stops working immediately. */\n clientSecret: z.string(),\n});\nexport type RotateClientSecretResponse = z.infer<typeof zRotateClientSecretResponse>;\n\nexport const zDeleteProjectInput = z.object({\n /**\n * A field in the body rather than `?purge=true`. This deletes the project's\n * Postgres rows and every analytics row behind it, with no undo — and a query\n * parameter is far too easy to fire from shell history or a mis-copied URL.\n */\n purge: z.literal(true),\n /** Checked against the project on record; a mismatch is refused. */\n externalId: zExternalId,\n});\nexport type DeleteProjectInput = z.input<typeof zDeleteProjectInput>;\n\nexport const zDeleteProjectResponse = z.object({\n projectId: z.string(),\n /** Idempotent, but it still says which of the two happened. */\n purge: z.enum([\"queued\", \"already-absent\"]),\n /** When the purge was marked. Absent for `already-absent`. */\n purgingAt: zInstant.optional(),\n});\nexport type DeleteProjectResponse = z.infer<typeof zDeleteProjectResponse>;\n\n// ─── Errors ─────────────────────────────────────────────────────────────────\n\n// ─── Event metadata ─────────────────────────────────────────────────────────\n\n/**\n * `PUT /api/v1/projects/{projectId}/events/{name}` — catalogue settings for\n * one event name. Provisioning calls it to mark `form.submitted` a conversion\n * and an operational probe `internal`; the call is idempotent so a retried\n * provisioning run is harmless.\n */\nexport const EVENT_META_STATUSES = [\"active\", \"deprecated\", \"archived\", \"internal\"] as const;\nexport const zEventMetaStatus = z.enum(EVENT_META_STATUSES);\nexport type EventMetaStatus = z.infer<typeof zEventMetaStatus>;\n\nexport const zEventName = z.string().min(1).max(200);\n\nexport const zUpsertEventMetaInput = z\n .object({\n conversion: z.boolean().optional(),\n /** `internal` events are left out of every metric unless a query opts in. */\n status: zEventMetaStatus.optional(),\n /** Property keys the hourly rollups break this event down by. */\n rollupProperties: z.array(z.string().min(1).max(200)).max(20).optional(),\n })\n .strict();\nexport type UpsertEventMetaInput = z.infer<typeof zUpsertEventMetaInput>;\n\nexport const zEventMetaResponse = z.object({\n projectId: z.string(),\n name: z.string(),\n conversion: z.boolean(),\n status: zEventMetaStatus,\n rollupProperties: z.array(z.string()),\n /** Fields this call actually changed; empty on a repeat. */\n changed: z.array(z.string()),\n updatedAt: zInstant,\n});\nexport type EventMetaResponse = z.infer<typeof zEventMetaResponse>;\n\nexport const CONTROL_ERROR_CODES = [\n /** 401 — missing or invalid platform key / organization key. */\n \"unauthorized\",\n /** 403 — the organization key belongs to a different organization. */\n \"organization_scope_mismatch\",\n /**\n * 409 — this externalId exists with a materially different configuration.\n * Only fields whose change alters results are compared (see the docs); a\n * renamed brand is not a conflict.\n */\n \"external_id_conflict\",\n /** 409 — the externalId in a delete body does not match the project's. */\n \"project_external_id_mismatch\",\n /** 404 — no such organization or project, on an endpoint that is not idempotent. */\n \"not_found\",\n /** 400 — input failed the schema. */\n \"validation_failed\",\n /** 429 — per-credential rate limit. */\n \"rate_limited\",\n /** 500 — unexpected server failure. */\n \"internal_error\",\n] as const;\nexport const zControlErrorCode = z.enum(CONTROL_ERROR_CODES);\nexport type ControlErrorCode = z.infer<typeof zControlErrorCode>;\n\nexport const zControlError = z.object({\n status: z.number().int(),\n code: zControlErrorCode,\n error: z.string(),\n message: z.string().optional(),\n errors: z.unknown().optional(),\n requestId: z.string().optional(),\n});\nexport type ControlError = z.infer<typeof zControlError>;\n\n/** Paths, so the client and the route handlers cannot drift apart. */\nexport const CONTROL_API_PATHS = {\n organizations: \"/api/v1/organizations\",\n organization: (id: string) => `/api/v1/organizations/${encodeURIComponent(id)}`,\n organizationKeys: (id: string) => `/api/v1/organizations/${encodeURIComponent(id)}/keys`,\n projects: \"/api/v1/projects\",\n project: (id: string) => `/api/v1/projects/${encodeURIComponent(id)}`,\n clientRotate: (projectId: string, clientId: string) =>\n `/api/v1/projects/${encodeURIComponent(projectId)}/clients/${encodeURIComponent(clientId)}/rotate`,\n projectEvent: (projectId: string, name: string) =>\n `/api/v1/projects/${encodeURIComponent(projectId)}/events/${encodeURIComponent(name)}`,\n} as const;\n"]}
|
package/dist/chunk-YSAEOYPD.cjs
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _class;// src/index.ts
|
|
2
|
-
var _zod = require('zod');
|
|
3
|
-
var zDate = _zod.z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "expected YYYY-MM-DD").refine(isRealCalendarDate, "date does not exist");
|
|
4
|
-
function isRealCalendarDate(value) {
|
|
5
|
-
if (!/^\d{4}-\d{2}-\d{2}$/.test(value)) return false;
|
|
6
|
-
const [year, month, day] = value.split("-").map(Number);
|
|
7
|
-
const instant = new Date(Date.UTC(year, month - 1, day));
|
|
8
|
-
return instant.getUTCFullYear() === year && instant.getUTCMonth() === month - 1 && instant.getUTCDate() === day;
|
|
9
|
-
}
|
|
10
|
-
var zInstant = _zod.z.string().min(20);
|
|
11
|
-
var DataApiError = (_class = class _DataApiError extends Error {
|
|
12
|
-
/**
|
|
13
|
-
* Brand for {@link DataApiError.is}. A bundler that inlines this module into
|
|
14
|
-
* more than one entry point produces two distinct classes, and `instanceof`
|
|
15
|
-
* silently stops matching — the brand survives that, and realm boundaries.
|
|
16
|
-
*/
|
|
17
|
-
__init() {this.isDataApiError = true}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
/** Parsed from `Retry-After`, in milliseconds. Only set on 429. */
|
|
22
|
-
|
|
23
|
-
/** zod issues for `validation_failed`, or the raw body when unparseable. */
|
|
24
|
-
|
|
25
|
-
constructor(init) {
|
|
26
|
-
super(init.message);_class.prototype.__init.call(this);;
|
|
27
|
-
this.name = "DataApiError";
|
|
28
|
-
this.status = init.status;
|
|
29
|
-
this.code = init.code;
|
|
30
|
-
this.requestId = init.requestId;
|
|
31
|
-
this.retryAfterMs = init.retryAfterMs;
|
|
32
|
-
this.details = init.details;
|
|
33
|
-
}
|
|
34
|
-
/** 429 and 5xx are worth retrying; 4xx are the caller's fault and are not. */
|
|
35
|
-
get retryable() {
|
|
36
|
-
return this.status === 429 || this.status >= 500;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Prefer this over `instanceof` in a `catch`. It holds even when the class
|
|
40
|
-
* has been duplicated — across CJS entry points, across bundler chunks, or
|
|
41
|
-
* across realms — where `instanceof` quietly returns false.
|
|
42
|
-
*/
|
|
43
|
-
static is(value) {
|
|
44
|
-
return value instanceof _DataApiError || typeof value === "object" && value !== null && value.isDataApiError === true;
|
|
45
|
-
}
|
|
46
|
-
}, _class);
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
exports.zDate = zDate; exports.zInstant = zInstant; exports.DataApiError = DataApiError;
|
|
53
|
-
//# sourceMappingURL=chunk-YSAEOYPD.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/eric/reopt-ai/reopt-data/packages/data-contract/dist/chunk-YSAEOYPD.cjs","../src/index.ts"],"names":[],"mappings":"AAAA;ACiBA,0BAAkB;AAgBX,IAAM,MAAA,EAAQ,MAAA,CAClB,MAAA,CAAO,CAAA,CACP,KAAA,CAAM,qBAAA,EAAuB,qBAAqB,CAAA,CAClD,MAAA,CAAO,kBAAA,EAAoB,qBAAqB,CAAA;AAEnD,SAAS,kBAAA,CAAmB,KAAA,EAAwB;AAClD,EAAA,GAAA,CAAI,CAAC,qBAAA,CAAsB,IAAA,CAAK,KAAK,CAAA,EAAG,OAAO,KAAA;AAC/C,EAAA,MAAM,CAAC,IAAA,EAAM,KAAA,EAAO,GAAG,EAAA,EAAI,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACtD,EAAA,MAAM,QAAA,EAAU,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,IAAA,EAAO,MAAA,EAAS,CAAA,EAAG,GAAI,CAAC,CAAA;AAC1D,EAAA,OAAO,OAAA,CAAQ,cAAA,CAAe,EAAA,IAAM,KAAA,GAAQ,OAAA,CAAQ,WAAA,CAAY,EAAA,IAAM,MAAA,EAAS,EAAA,GAAK,OAAA,CAAQ,UAAA,CAAW,EAAA,IAAM,GAAA;AAC/G;AAGO,IAAM,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA;AA4BlC,IAAM,aAAA,YAAN,MAAM,cAAA,QAAqB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAM7B,eAAA,EAAiB,KAAA;AAAA,EAEjB;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA,EAET,WAAA,CAAY,IAAA,EAOT;AACD,IAAA,KAAA,CAAM,IAAA,CAAK,OAAO,qCAAA;AAClB,IAAA,IAAA,CAAK,KAAA,EAAO,cAAA;AACZ,IAAA,IAAA,CAAK,OAAA,EAAS,IAAA,CAAK,MAAA;AACnB,IAAA,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,IAAA;AACjB,IAAA,IAAA,CAAK,UAAA,EAAY,IAAA,CAAK,SAAA;AACtB,IAAA,IAAA,CAAK,aAAA,EAAe,IAAA,CAAK,YAAA;AACzB,IAAA,IAAA,CAAK,QAAA,EAAU,IAAA,CAAK,OAAA;AAAA,EACtB;AAAA;AAAA,EAGA,IAAI,SAAA,CAAA,EAAqB;AACvB,IAAA,OAAO,IAAA,CAAK,OAAA,IAAW,IAAA,GAAO,IAAA,CAAK,OAAA,GAAU,GAAA;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,EAAA,CAAG,KAAA,EAAuC;AAC/C,IAAA,OACE,MAAA,WAAiB,cAAA,GAChB,OAAO,MAAA,IAAU,SAAA,GAAY,MAAA,IAAU,KAAA,GAAS,KAAA,CAAuC,eAAA,IAAmB,IAAA;AAAA,EAE/G;AACF,UAAA;AD7EA;AACA;AACE;AACA;AACA;AACF,wFAAC","file":"/Users/eric/reopt-ai/reopt-data/packages/data-contract/dist/chunk-YSAEOYPD.cjs","sourcesContent":[null,"/**\n * `@reopt-ai/data-contract` — the wire contract between reopt-data and its\n * server-credential consumers (RFC-0023).\n *\n * Subpaths:\n * `@reopt-ai/data-contract` this module — version, shared primitives, errors\n * `@reopt-ai/data-contract/ingest` POST /api/track request + response schemas\n * `@reopt-ai/data-contract/query` POST /api/v1/query/* request + response schemas\n * `@reopt-ai/data-contract/control` provisioning request + response schemas\n * `@reopt-ai/data-contract/client` createDataClient() — typed fetch over all\n * `@reopt-ai/data-contract/events` event names + property keys (no zod)\n * `@reopt-ai/data-contract/identity` cookie/header names and encodings shared by\n * the SDKs, the Next.js proxy and ingest\n *\n * Only `/client` touches `fetch`; everything else is pure zod. The single\n * runtime dependency is zod, deliberately — consumers bundle this.\n */\nimport { z } from \"zod\";\n\nexport {\n CONTRACT_VERSION,\n CONTRACT_VERSION_HEADER,\n CLIENT_ID_HEADER,\n CLIENT_SECRET_HEADER,\n WRITE_KEY_HEADER,\n DEVICE_ID_HEADER,\n REQUEST_ID_HEADER,\n} from \"./version.js\";\n\n/**\n * A real calendar date. The query's resolved IANA zone decides which instants\n * its inclusive day covers.\n */\nexport const zDate = z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"expected YYYY-MM-DD\")\n .refine(isRealCalendarDate, \"date does not exist\");\n\nfunction isRealCalendarDate(value: string): boolean {\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) return false;\n const [year, month, day] = value.split(\"-\").map(Number);\n const instant = new Date(Date.UTC(year!, month! - 1, day!));\n return instant.getUTCFullYear() === year && instant.getUTCMonth() === month! - 1 && instant.getUTCDate() === day;\n}\n\n/** ISO-8601 instant, as produced by `Date#toISOString()`. */\nexport const zInstant = z.string().min(20);\n\n/**\n * Client credentials. The same pair authenticates both planes; what a given\n * client may reach is decided server-side by `Client.scopes`\n * (`\"ingest\"` / `\"query\"` / `\"provision\"`).\n */\nexport interface ClientCredentials {\n clientId: string;\n clientSecret: string;\n}\n\n/**\n * Credentials are optional on the client itself because the provisioning\n * surface does not use them — it authenticates per call with a platform or\n * organization key. A caller that only provisions should not have to invent an\n * empty client id to satisfy a constructor.\n *\n * Reaching ingest or query without them fails with `credentials_missing`\n * rather than sending an unauthenticated request and reporting the 401 as a\n * server problem.\n */\nexport type OptionalClientCredentials = Partial<ClientCredentials>;\n\n/**\n * Every non-2xx response from either plane, plus the two failures the client\n * itself raises (`contract_mismatch`, `network_error`).\n */\nexport class DataApiError extends Error {\n /**\n * Brand for {@link DataApiError.is}. A bundler that inlines this module into\n * more than one entry point produces two distinct classes, and `instanceof`\n * silently stops matching — the brand survives that, and realm boundaries.\n */\n readonly isDataApiError = true as const;\n\n readonly status: number;\n readonly code: string;\n readonly requestId?: string;\n /** Parsed from `Retry-After`, in milliseconds. Only set on 429. */\n readonly retryAfterMs?: number;\n /** zod issues for `validation_failed`, or the raw body when unparseable. */\n readonly details?: unknown;\n\n constructor(init: {\n message: string;\n status: number;\n code: string;\n requestId?: string;\n retryAfterMs?: number;\n details?: unknown;\n }) {\n super(init.message);\n this.name = \"DataApiError\";\n this.status = init.status;\n this.code = init.code;\n this.requestId = init.requestId;\n this.retryAfterMs = init.retryAfterMs;\n this.details = init.details;\n }\n\n /** 429 and 5xx are worth retrying; 4xx are the caller's fault and are not. */\n get retryable(): boolean {\n return this.status === 429 || this.status >= 500;\n }\n\n /**\n * Prefer this over `instanceof` in a `catch`. It holds even when the class\n * has been duplicated — across CJS entry points, across bundler chunks, or\n * across realms — where `instanceof` quietly returns false.\n */\n static is(value: unknown): value is DataApiError {\n return (\n value instanceof DataApiError ||\n (typeof value === \"object\" && value !== null && (value as { isDataApiError?: unknown }).isDataApiError === true)\n );\n }\n}\n"]}
|
package/dist/chunk-ZCKVMUIQ.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// src/version.ts
|
|
2
|
-
var CONTRACT_VERSION = "0.6.2";
|
|
3
|
-
var CONTRACT_VERSION_HEADER = "x-reopt-contract-version";
|
|
4
|
-
var CLIENT_ID_HEADER = "reopt-client-id";
|
|
5
|
-
var CLIENT_SECRET_HEADER = "reopt-client-secret";
|
|
6
|
-
var WRITE_KEY_HEADER = "reopt-write-key";
|
|
7
|
-
var DEVICE_ID_HEADER = "reopt-device-id";
|
|
8
|
-
var REQUEST_ID_HEADER = "x-request-id";
|
|
9
|
-
|
|
10
|
-
export {
|
|
11
|
-
CONTRACT_VERSION,
|
|
12
|
-
CONTRACT_VERSION_HEADER,
|
|
13
|
-
CLIENT_ID_HEADER,
|
|
14
|
-
CLIENT_SECRET_HEADER,
|
|
15
|
-
WRITE_KEY_HEADER,
|
|
16
|
-
DEVICE_ID_HEADER,
|
|
17
|
-
REQUEST_ID_HEADER
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=chunk-ZCKVMUIQ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/version.ts"],"sourcesContent":["/**\n * Wire version and header names — the part of the contract every party\n * needs and none of them should pay zod for. Both `.` and `./identity`\n * re-export these; browser bundles import them through `./identity` so the\n * schema modules stay out of the client graph.\n */\n\n/**\n * Contract version. Bumped on any breaking change to a schema in this package.\n * The server echoes the version it was built against in `x-reopt-contract-version`;\n * `createDataClient` surfaces a mismatch rather than guessing.\n *\n * Must equal the package version (`package-identity.test.ts` enforces it), so\n * every publish is a wire bump: consumers that check for exact equality —\n * every SDK — must upgrade in lockstep with the server.\n */\nexport const CONTRACT_VERSION = \"0.6.2\";\n\n/** Response header carrying the server's contract version. */\nexport const CONTRACT_VERSION_HEADER = \"x-reopt-contract-version\";\n\n/** Request header names shared by the ingest and query planes. */\nexport const CLIENT_ID_HEADER = \"reopt-client-id\";\nexport const CLIENT_SECRET_HEADER = \"reopt-client-secret\";\nexport const WRITE_KEY_HEADER = \"reopt-write-key\";\nexport const DEVICE_ID_HEADER = \"reopt-device-id\";\nexport const REQUEST_ID_HEADER = \"x-request-id\";\n"],"mappings":";AAgBO,IAAM,mBAAmB;AAGzB,IAAM,0BAA0B;AAGhC,IAAM,mBAAmB;AACzB,IAAM,uBAAuB;AAC7B,IAAM,mBAAmB;AACzB,IAAM,mBAAmB;AACzB,IAAM,oBAAoB;","names":[]}
|