@keboola/api-fixtures 19.0.0 → 22.0.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/AGENTS.md +63 -0
- package/dist/index.cjs +283 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +585 -1
- package/dist/index.d.ts +585 -1
- package/dist/index.js +275 -1
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
package/dist/index.js
CHANGED
|
@@ -1,3 +1,260 @@
|
|
|
1
|
+
// src/clients/apps/deployments.ts
|
|
2
|
+
var APP_ID = "374811";
|
|
3
|
+
var deploymentId = (hash) => `app-${APP_ID}-dpl-${hash}`;
|
|
4
|
+
var archivedDeployment = {
|
|
5
|
+
id: deploymentId("350e2cf5287c5665"),
|
|
6
|
+
number: 1,
|
|
7
|
+
configId: "01kz9kny4n49x3xk0e4k8ynpmq",
|
|
8
|
+
configVersion: "14",
|
|
9
|
+
gitCommitSha: null,
|
|
10
|
+
size: "tiny",
|
|
11
|
+
buildState: "PREBUILT",
|
|
12
|
+
runState: "STOPPED",
|
|
13
|
+
archived: true,
|
|
14
|
+
archivedAt: "2026-08-15T11:03:02+00:00",
|
|
15
|
+
createdAt: "2026-08-10T09:12:44+00:00"
|
|
16
|
+
};
|
|
17
|
+
var liveDeployment = {
|
|
18
|
+
id: deploymentId("7a4c1b9e0d3f2a81"),
|
|
19
|
+
number: 2,
|
|
20
|
+
configId: "01kz9kny4n49x3xk0e4k8ynpmq",
|
|
21
|
+
configVersion: "16",
|
|
22
|
+
gitCommitSha: null,
|
|
23
|
+
size: "small",
|
|
24
|
+
buildState: "PREBUILT",
|
|
25
|
+
runState: "RUNNING",
|
|
26
|
+
archived: false,
|
|
27
|
+
archivedAt: null,
|
|
28
|
+
createdAt: "2026-08-15T11:02:58+00:00"
|
|
29
|
+
};
|
|
30
|
+
var stagedDeployment = {
|
|
31
|
+
id: deploymentId("c5e83f17b204de96"),
|
|
32
|
+
number: 3,
|
|
33
|
+
configId: "01kz9kny4n49x3xk0e4k8ynpmq",
|
|
34
|
+
configVersion: "18",
|
|
35
|
+
gitCommitSha: null,
|
|
36
|
+
size: "small",
|
|
37
|
+
buildState: "PREBUILT",
|
|
38
|
+
runState: "NEVER_RUN",
|
|
39
|
+
archived: false,
|
|
40
|
+
archivedAt: null,
|
|
41
|
+
createdAt: "2026-08-17T08:41:19+00:00"
|
|
42
|
+
};
|
|
43
|
+
var buildFailedDeployment = {
|
|
44
|
+
id: deploymentId("e91d47a8c6b02f35"),
|
|
45
|
+
number: 4,
|
|
46
|
+
configId: "01kz9kny4n49x3xk0e4k8ynpmq",
|
|
47
|
+
configVersion: "19",
|
|
48
|
+
gitCommitSha: null,
|
|
49
|
+
size: "small",
|
|
50
|
+
buildState: "FAILED",
|
|
51
|
+
runState: "NEVER_RUN",
|
|
52
|
+
archived: false,
|
|
53
|
+
archivedAt: null,
|
|
54
|
+
createdAt: "2026-08-17T09:05:33+00:00"
|
|
55
|
+
};
|
|
56
|
+
var runFailedDeployment = {
|
|
57
|
+
id: deploymentId("2b6f0a94e7d51c83"),
|
|
58
|
+
number: 5,
|
|
59
|
+
configId: "01kz9kny4n49x3xk0e4k8ynpmq",
|
|
60
|
+
configVersion: "20",
|
|
61
|
+
gitCommitSha: null,
|
|
62
|
+
size: "small",
|
|
63
|
+
buildState: "PREBUILT",
|
|
64
|
+
runState: "FAILED",
|
|
65
|
+
archived: false,
|
|
66
|
+
archivedAt: null,
|
|
67
|
+
createdAt: "2026-08-17T09:31:07+00:00"
|
|
68
|
+
};
|
|
69
|
+
var deploymentFixtures = {
|
|
70
|
+
archived: archivedDeployment,
|
|
71
|
+
live: liveDeployment,
|
|
72
|
+
staged: stagedDeployment,
|
|
73
|
+
buildFailed: buildFailedDeployment,
|
|
74
|
+
runFailed: runFailedDeployment
|
|
75
|
+
};
|
|
76
|
+
var getDeployment = () => liveDeployment;
|
|
77
|
+
var listDeployments = () => [
|
|
78
|
+
archivedDeployment,
|
|
79
|
+
liveDeployment,
|
|
80
|
+
stagedDeployment,
|
|
81
|
+
buildFailedDeployment,
|
|
82
|
+
runFailedDeployment
|
|
83
|
+
];
|
|
84
|
+
|
|
85
|
+
// src/clients/apps/apps.ts
|
|
86
|
+
var APP_URL = "https://hello-dashboard-374811.hub.canary-orion.keboola.dev";
|
|
87
|
+
var base = {
|
|
88
|
+
id: APP_ID,
|
|
89
|
+
projectId: "14",
|
|
90
|
+
componentId: "keboola.data-apps",
|
|
91
|
+
branchId: "6",
|
|
92
|
+
configId: "01kz9kny4n49x3xk0e4k8ynpmq",
|
|
93
|
+
type: "streamlit",
|
|
94
|
+
mode: "prod",
|
|
95
|
+
url: APP_URL
|
|
96
|
+
};
|
|
97
|
+
var production = (deployment) => ({
|
|
98
|
+
desiredNumber: deployment.number,
|
|
99
|
+
desiredId: deployment.id,
|
|
100
|
+
actualNumber: deployment.number,
|
|
101
|
+
actualId: deployment.id
|
|
102
|
+
});
|
|
103
|
+
var neverDeployedApp = {
|
|
104
|
+
...base,
|
|
105
|
+
configVersion: "1",
|
|
106
|
+
production: { desiredNumber: null, desiredId: null, actualNumber: null, actualId: null },
|
|
107
|
+
undeployedChanges: false,
|
|
108
|
+
state: "NOT_DEPLOYED"
|
|
109
|
+
};
|
|
110
|
+
var legacyV1ServingApp = {
|
|
111
|
+
id: "374811",
|
|
112
|
+
projectId: "14",
|
|
113
|
+
componentId: "keboola.data-apps",
|
|
114
|
+
branchId: "6",
|
|
115
|
+
configId: "01kz9kny4n49x3xk0e4k8ynpmq",
|
|
116
|
+
configVersion: "2",
|
|
117
|
+
type: "streamlit",
|
|
118
|
+
mode: "dev",
|
|
119
|
+
url: APP_URL,
|
|
120
|
+
production: { desiredNumber: null, desiredId: null, actualNumber: null, actualId: null },
|
|
121
|
+
undeployedChanges: false,
|
|
122
|
+
state: "NOT_DEPLOYED"
|
|
123
|
+
};
|
|
124
|
+
var runningApp = {
|
|
125
|
+
...base,
|
|
126
|
+
configVersion: deploymentFixtures.live.configVersion,
|
|
127
|
+
production: production(deploymentFixtures.live),
|
|
128
|
+
undeployedChanges: false,
|
|
129
|
+
state: "RUNNING"
|
|
130
|
+
};
|
|
131
|
+
var appWithUndeployedChanges = {
|
|
132
|
+
...base,
|
|
133
|
+
configVersion: deploymentFixtures.staged.configVersion,
|
|
134
|
+
production: production(deploymentFixtures.live),
|
|
135
|
+
undeployedChanges: true,
|
|
136
|
+
state: "RUNNING"
|
|
137
|
+
};
|
|
138
|
+
var promotingApp = {
|
|
139
|
+
...base,
|
|
140
|
+
configVersion: deploymentFixtures.staged.configVersion,
|
|
141
|
+
production: {
|
|
142
|
+
desiredNumber: deploymentFixtures.staged.number,
|
|
143
|
+
desiredId: deploymentFixtures.staged.id,
|
|
144
|
+
actualNumber: deploymentFixtures.live.number,
|
|
145
|
+
actualId: deploymentFixtures.live.id
|
|
146
|
+
},
|
|
147
|
+
undeployedChanges: true,
|
|
148
|
+
state: "RUNNING"
|
|
149
|
+
};
|
|
150
|
+
var sleepingApp = {
|
|
151
|
+
...base,
|
|
152
|
+
configVersion: deploymentFixtures.live.configVersion,
|
|
153
|
+
production: production(deploymentFixtures.live),
|
|
154
|
+
undeployedChanges: false,
|
|
155
|
+
state: "SLEEPING"
|
|
156
|
+
};
|
|
157
|
+
var suspendedApp = {
|
|
158
|
+
...base,
|
|
159
|
+
configVersion: deploymentFixtures.live.configVersion,
|
|
160
|
+
production: production(deploymentFixtures.live),
|
|
161
|
+
undeployedChanges: false,
|
|
162
|
+
state: "SUSPENDED"
|
|
163
|
+
};
|
|
164
|
+
var appFixtures = {
|
|
165
|
+
neverDeployed: neverDeployedApp,
|
|
166
|
+
legacyV1Serving: legacyV1ServingApp,
|
|
167
|
+
running: runningApp,
|
|
168
|
+
undeployedChanges: appWithUndeployedChanges,
|
|
169
|
+
promoting: promotingApp,
|
|
170
|
+
sleeping: sleepingApp,
|
|
171
|
+
suspended: suspendedApp
|
|
172
|
+
};
|
|
173
|
+
var getApp = () => runningApp;
|
|
174
|
+
var readdress = (app, id) => ({
|
|
175
|
+
...app,
|
|
176
|
+
id,
|
|
177
|
+
url: `https://data-app-${id}.hub.canary-orion.keboola.dev`,
|
|
178
|
+
production: {
|
|
179
|
+
...app.production,
|
|
180
|
+
desiredId: app.production.desiredId?.replace(APP_ID, id) ?? null,
|
|
181
|
+
actualId: app.production.actualId?.replace(APP_ID, id) ?? null
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
var listApps = () => [
|
|
185
|
+
runningApp,
|
|
186
|
+
readdress(appWithUndeployedChanges, "374812"),
|
|
187
|
+
readdress(neverDeployedApp, "374813")
|
|
188
|
+
];
|
|
189
|
+
|
|
190
|
+
// src/clients/apps/runs.ts
|
|
191
|
+
var base2 = {
|
|
192
|
+
appId: APP_ID,
|
|
193
|
+
runtimeSize: "small",
|
|
194
|
+
runtimeBackendType: "streamlit",
|
|
195
|
+
imageVersion: "1.14.2",
|
|
196
|
+
mode: "prod"
|
|
197
|
+
};
|
|
198
|
+
var runningRun = {
|
|
199
|
+
...base2,
|
|
200
|
+
id: "4f2d8c1a-0b76-4e35-9a12-5c8e7d3b0f41",
|
|
201
|
+
deploymentId: deploymentFixtures.live.id,
|
|
202
|
+
configVersion: deploymentFixtures.live.configVersion,
|
|
203
|
+
state: "running",
|
|
204
|
+
createdAt: "2026-08-15T11:02:58+00:00",
|
|
205
|
+
startedAt: "2026-08-15T11:03:41+00:00",
|
|
206
|
+
stoppedAt: null,
|
|
207
|
+
startupLogs: null,
|
|
208
|
+
failureReason: null
|
|
209
|
+
};
|
|
210
|
+
var finishedRun = {
|
|
211
|
+
...base2,
|
|
212
|
+
id: "9c0a7e42-31bd-4f88-b6d5-2ea41f907c3b",
|
|
213
|
+
deploymentId: deploymentFixtures.archived.id,
|
|
214
|
+
configVersion: deploymentFixtures.archived.configVersion,
|
|
215
|
+
state: "finished",
|
|
216
|
+
createdAt: "2026-08-10T09:12:44+00:00",
|
|
217
|
+
startedAt: "2026-08-10T09:13:29+00:00",
|
|
218
|
+
stoppedAt: "2026-08-15T11:03:02+00:00",
|
|
219
|
+
startupLogs: null,
|
|
220
|
+
failureReason: null
|
|
221
|
+
};
|
|
222
|
+
var failedRun = {
|
|
223
|
+
...base2,
|
|
224
|
+
id: "ba53f9d0-7c41-4a2e-8f16-d0b9e254a7c6",
|
|
225
|
+
deploymentId: deploymentFixtures.runFailed.id,
|
|
226
|
+
configVersion: deploymentFixtures.runFailed.configVersion,
|
|
227
|
+
state: "failed",
|
|
228
|
+
createdAt: "2026-08-17T09:31:07+00:00",
|
|
229
|
+
startedAt: null,
|
|
230
|
+
stoppedAt: "2026-08-17T09:33:52+00:00",
|
|
231
|
+
startupLogs: "[INFO] Starting app\n[ERROR] App must have keboola-config/nginx/ directory. Missing: /app/keboola-config/nginx\n",
|
|
232
|
+
failureReason: {
|
|
233
|
+
reason: "StartupProbeFailed",
|
|
234
|
+
message: "App must have keboola-config/nginx/ directory. Missing: /app/keboola-config/nginx"
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
var legacyRun = {
|
|
238
|
+
...base2,
|
|
239
|
+
id: "1d7b4e05-8a92-4c63-b0f7-3e6a5c8192d4",
|
|
240
|
+
deploymentId: null,
|
|
241
|
+
configVersion: "2",
|
|
242
|
+
state: "running",
|
|
243
|
+
createdAt: "2026-08-17T10:02:11+00:00",
|
|
244
|
+
startedAt: "2026-08-17T10:02:51+00:00",
|
|
245
|
+
stoppedAt: null,
|
|
246
|
+
startupLogs: null,
|
|
247
|
+
failureReason: null
|
|
248
|
+
};
|
|
249
|
+
var runFixtures = {
|
|
250
|
+
running: runningRun,
|
|
251
|
+
finished: finishedRun,
|
|
252
|
+
failed: failedRun,
|
|
253
|
+
legacy: legacyRun
|
|
254
|
+
};
|
|
255
|
+
var getAppRun = () => runningRun;
|
|
256
|
+
var listAppRuns = () => [legacyRun, failedRun, runningRun, finishedRun];
|
|
257
|
+
|
|
1
258
|
// src/clients/storage/tables.ts
|
|
2
259
|
var bucket = {
|
|
3
260
|
id: "in.c-main",
|
|
@@ -98,9 +355,26 @@ var fixtures = {
|
|
|
98
355
|
listTables,
|
|
99
356
|
fixtures: tableFixtures
|
|
100
357
|
}
|
|
358
|
+
},
|
|
359
|
+
apps: {
|
|
360
|
+
apps: {
|
|
361
|
+
getApp,
|
|
362
|
+
listApps,
|
|
363
|
+
fixtures: appFixtures
|
|
364
|
+
},
|
|
365
|
+
deployments: {
|
|
366
|
+
getDeployment,
|
|
367
|
+
listDeployments,
|
|
368
|
+
fixtures: deploymentFixtures
|
|
369
|
+
},
|
|
370
|
+
runs: {
|
|
371
|
+
getAppRun,
|
|
372
|
+
listAppRuns,
|
|
373
|
+
fixtures: runFixtures
|
|
374
|
+
}
|
|
101
375
|
}
|
|
102
376
|
};
|
|
103
377
|
|
|
104
|
-
export { fixtures, getTable, listTables, tableFixtures };
|
|
378
|
+
export { appFixtures, deploymentFixtures, fixtures, getApp, getAppRun, getDeployment, getTable, listAppRuns, listApps, listDeployments, listTables, runFixtures, tableFixtures };
|
|
105
379
|
//# sourceMappingURL=index.js.map
|
|
106
380
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/clients/storage/tables.ts","../src/fixtures.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { Table, TableDetail } from '@keboola/api-client/storage/types';\n\nconst bucket = {\n id: 'in.c-main',\n name: 'c-main',\n displayName: 'Main',\n stage: 'in' as const,\n description: 'Main input bucket',\n created: '2024-01-15T10:00:00+0100',\n lastChangeDate: '2024-03-10T08:30:00+0100',\n isMaintenance: false,\n isReadOnly: false,\n isSnowflakeSharedDatabase: false,\n hasExternalSchema: false,\n rowsCount: 150000,\n dataSizeBytes: 52428800,\n uri: 'https://connection.keboola.com/v2/storage/buckets/in.c-main',\n backend: 'snowflake' as const,\n backendPath: [],\n databaseName: null,\n color: null,\n idBranch: 0,\n owner: null,\n sharing: null,\n path: 'in.c-main',\n tables: 'https://connection.keboola.com/v2/storage/buckets/in.c-main/tables',\n updated: '2024-03-10T08:30:00+0100',\n};\n\n// A freshly created table with no imports yet (non-typed, non-alias variant).\nconst freshTable = {\n id: 'in.c-main.users',\n name: 'users',\n displayName: 'Users',\n primaryKey: ['id'],\n metadata: [],\n columns: ['id', 'email', 'name', 'created_at'],\n columnMetadata: {},\n attributes: [],\n bucket,\n isTyped: false as const,\n isAlias: false as const,\n} satisfies TableDetail;\n\n// A recently updated table with a moderate size (non-typed, non-alias variant).\nconst recentlyUpdatedTable = {\n id: 'in.c-main.orders',\n name: 'orders',\n displayName: 'Orders',\n primaryKey: ['order_id'],\n metadata: [\n {\n id: 'mt1',\n key: 'KBC.createdBy.component.id',\n value: 'keboola.python-transformation',\n provider: 'keboola',\n timestamp: '2024-06-01T09:00:00+0200',\n },\n ],\n columns: ['order_id', 'user_id', 'total', 'status', 'created_at', 'updated_at'],\n columnMetadata: {\n order_id: [\n {\n id: 'm1',\n key: 'KBC.datatype.type',\n value: 'INTEGER',\n provider: 'keboola',\n timestamp: '2024-06-01T09:00:00+0200',\n },\n ],\n },\n attributes: [],\n bucket,\n isTyped: false as const,\n isAlias: false as const,\n} satisfies TableDetail;\n\n// A large table with many rows representing high-volume data (non-typed, non-alias variant).\nconst largeTable = {\n id: 'in.c-main.events',\n name: 'events',\n displayName: 'Events',\n primaryKey: [],\n metadata: [],\n columns: ['event_id', 'user_id', 'event_type', 'properties', 'occurred_at'],\n columnMetadata: {},\n attributes: [],\n bucket,\n isTyped: false as const,\n isAlias: false as const,\n} satisfies TableDetail;\n\n/**\n * Returns a single realistic typed TableDetail (fresh, no imports yet).\n *\n * The explicit return type ensures any divergence from the OpenAPI-derived\n * `TableDetail` in `@keboola/api-client` surfaces as a TypeScript error.\n */\nexport const getTable = (): TableDetail => freshTable;\n\n/**\n * Returns three TableDetail objects representing different lifecycle states:\n * 1. Fresh — just created, no data imported.\n * 2. Recently updated — moderate size, recent import.\n * 3. Large — high row count, large byte size.\n */\nexport const listTables = (): TableDetail[] => [freshTable, recentlyUpdatedTable, largeTable];\n\n/**\n * Named fixtures for targeted access in tests.\n */\nexport const tableFixtures = {\n fresh: freshTable,\n recentlyUpdated: recentlyUpdatedTable,\n large: largeTable,\n} satisfies Record<'fresh' | 'recentlyUpdated' | 'large', TableDetail>;\n\nexport type { Table, TableDetail };\n","import { getTable, listTables, tableFixtures } from './clients/storage/tables';\n\nexport const fixtures = {\n storage: {\n tables: {\n getTable,\n listTables,\n fixtures: tableFixtures,\n },\n },\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/clients/apps/deployments.ts","../src/clients/apps/apps.ts","../src/clients/apps/runs.ts","../src/clients/storage/tables.ts","../src/fixtures.ts"],"names":["base"],"mappings":"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","file":"index.js","sourcesContent":["import type { Deployment } from '@keboola/api-client/apps/types';\n\n/**\n * Deployment ids are the deterministic Kubernetes CR name — `app-{appId}-dpl-{hash}` —\n * so they are reproduced in that shape rather than as opaque strings.\n */\nexport const APP_ID = '374811';\n\nconst deploymentId = (hash: string) => `app-${APP_ID}-dpl-${hash}`;\n\n// Retired: the row outlives its CR, so it stays in history with `archived: true`.\nconst archivedDeployment = {\n id: deploymentId('350e2cf5287c5665'),\n number: 1,\n configId: '01kz9kny4n49x3xk0e4k8ynpmq',\n configVersion: '14',\n gitCommitSha: null,\n size: 'tiny' as const,\n buildState: 'PREBUILT' as const,\n runState: 'STOPPED' as const,\n archived: true,\n archivedAt: '2026-08-15T11:03:02+00:00',\n createdAt: '2026-08-10T09:12:44+00:00',\n} satisfies Deployment;\n\n// Serving production — the one `appFixtures.running.production` points at.\nconst liveDeployment = {\n id: deploymentId('7a4c1b9e0d3f2a81'),\n number: 2,\n configId: '01kz9kny4n49x3xk0e4k8ynpmq',\n configVersion: '16',\n gitCommitSha: null,\n size: 'small' as const,\n buildState: 'PREBUILT' as const,\n runState: 'RUNNING' as const,\n archived: false,\n archivedAt: null,\n createdAt: '2026-08-15T11:02:58+00:00',\n} satisfies Deployment;\n\n// Created with `promote: false`: pinned and built, but nothing ever started it.\nconst stagedDeployment = {\n id: deploymentId('c5e83f17b204de96'),\n number: 3,\n configId: '01kz9kny4n49x3xk0e4k8ynpmq',\n configVersion: '18',\n gitCommitSha: null,\n size: 'small' as const,\n buildState: 'PREBUILT' as const,\n runState: 'NEVER_RUN' as const,\n archived: false,\n archivedAt: null,\n createdAt: '2026-08-17T08:41:19+00:00',\n} satisfies Deployment;\n\n// No artifact was produced, so this deployment can never run — a different problem,\n// with a different fix, from a run failure. Not reachable on the platform today\n// (every deployment is `PREBUILT`); the headline table treats it as a contract.\nconst buildFailedDeployment = {\n id: deploymentId('e91d47a8c6b02f35'),\n number: 4,\n configId: '01kz9kny4n49x3xk0e4k8ynpmq',\n configVersion: '19',\n gitCommitSha: null,\n size: 'small' as const,\n buildState: 'FAILED' as const,\n runState: 'NEVER_RUN' as const,\n archived: false,\n archivedAt: null,\n createdAt: '2026-08-17T09:05:33+00:00',\n} satisfies Deployment;\n\n// Built fine, crashed on every run — `getAppRuns` carries the cause.\nconst runFailedDeployment = {\n id: deploymentId('2b6f0a94e7d51c83'),\n number: 5,\n configId: '01kz9kny4n49x3xk0e4k8ynpmq',\n configVersion: '20',\n gitCommitSha: null,\n size: 'small' as const,\n buildState: 'PREBUILT' as const,\n runState: 'FAILED' as const,\n archived: false,\n archivedAt: null,\n createdAt: '2026-08-17T09:31:07+00:00',\n} satisfies Deployment;\n\nexport const deploymentFixtures = {\n archived: archivedDeployment,\n live: liveDeployment,\n staged: stagedDeployment,\n buildFailed: buildFailedDeployment,\n runFailed: runFailedDeployment,\n} satisfies Record<'archived' | 'live' | 'staged' | 'buildFailed' | 'runFailed', Deployment>;\n\nexport const getDeployment = (): Deployment => liveDeployment;\n\n/**\n * One continuous history: #1 retired, #2 serving, #3 staged, #4 failed to build, #5 built but its\n * run failed.\n *\n * All five, because `runFixtures.failed` names #5 as its deployment — a list that left the failed\n * ones out could not be joined to the runs, which is the join a timeline is built from.\n *\n * Returned in ascending `number` order. The endpoint does not specify an order, so consumers must\n * sort for themselves — this order is a fixture convention, not a contract to rely on, and it is\n * ascending on purpose: a consumer that assumes newest-first gets the wrong answer here rather\n * than in production.\n */\nexport const listDeployments = (): Deployment[] => [\n archivedDeployment,\n liveDeployment,\n stagedDeployment,\n buildFailedDeployment,\n runFailedDeployment,\n];\n","import type { App } from '@keboola/api-client/apps/types';\n\nimport { APP_ID, deploymentFixtures } from './deployments';\n\nconst APP_URL = 'https://hello-dashboard-374811.hub.canary-orion.keboola.dev';\n\nconst base = {\n id: APP_ID,\n projectId: '14',\n componentId: 'keboola.data-apps',\n branchId: '6',\n configId: '01kz9kny4n49x3xk0e4k8ynpmq',\n type: 'streamlit' as const,\n mode: 'prod' as const,\n url: APP_URL,\n};\n\nconst production = (deployment: (typeof deploymentFixtures)[keyof typeof deploymentFixtures]) => ({\n desiredNumber: deployment.number,\n desiredId: deployment.id,\n actualNumber: deployment.number,\n actualId: deployment.id,\n});\n\n// Created through `/v2`, nothing deployed yet: the URL is reserved and publicly 404s.\nconst neverDeployedApp = {\n ...base,\n configVersion: '1',\n production: { desiredNumber: null, desiredId: null, actualNumber: null, actualId: null },\n undeployedChanges: false,\n state: 'NOT_DEPLOYED' as const,\n} satisfies App;\n\n/**\n * Transcribed verbatim from canary on 17 Aug 2026 (AJDA-3140, probe P1): an app created and\n * started through `/v1`, serving real traffic (HTTP 200, 8340 B) at the moment this was read,\n * which `/v2` nonetheless reports as `NOT_DEPLOYED` with an empty `production` because it was\n * never adopted into the deployments model.\n *\n * The Builder must never read \"is this app serving\" off `state` alone — here that answer is\n * wrong in the most damaging direction.\n */\nconst legacyV1ServingApp = {\n id: '374811',\n projectId: '14',\n componentId: 'keboola.data-apps',\n branchId: '6',\n configId: '01kz9kny4n49x3xk0e4k8ynpmq',\n configVersion: '2',\n type: 'streamlit' as const,\n mode: 'dev' as const,\n url: APP_URL,\n production: { desiredNumber: null, desiredId: null, actualNumber: null, actualId: null },\n undeployedChanges: false,\n state: 'NOT_DEPLOYED' as const,\n} satisfies App;\n\n// Serving deployment #2, config unchanged since it was deployed.\nconst runningApp = {\n ...base,\n configVersion: deploymentFixtures.live.configVersion,\n production: production(deploymentFixtures.live),\n undeployedChanges: false,\n state: 'RUNNING' as const,\n} satisfies App;\n\n// Still serving #2 (config v16) while the config has moved on to v18.\nconst appWithUndeployedChanges = {\n ...base,\n configVersion: deploymentFixtures.staged.configVersion,\n production: production(deploymentFixtures.live),\n undeployedChanges: true,\n state: 'RUNNING' as const,\n} satisfies App;\n\n/**\n * A blue/green promotion in flight: #3 has been asked for, #2 is still what traffic reaches.\n * `state` stays `RUNNING` throughout — the rollout is only visible as `desiredId !== actualId`.\n */\nconst promotingApp = {\n ...base,\n configVersion: deploymentFixtures.staged.configVersion,\n production: {\n desiredNumber: deploymentFixtures.staged.number,\n desiredId: deploymentFixtures.staged.id,\n actualNumber: deploymentFixtures.live.number,\n actualId: deploymentFixtures.live.id,\n },\n undeployedChanges: true,\n state: 'RUNNING' as const,\n} satisfies App;\n\n// Idle between visits and armed to wake on the next request — normal, not an outage.\nconst sleepingApp = {\n ...base,\n configVersion: deploymentFixtures.live.configVersion,\n production: production(deploymentFixtures.live),\n undeployedChanges: false,\n state: 'SLEEPING' as const,\n} satisfies App;\n\n// Explicitly suspended: a visitor gets a 503 until someone resumes it.\nconst suspendedApp = {\n ...base,\n configVersion: deploymentFixtures.live.configVersion,\n production: production(deploymentFixtures.live),\n undeployedChanges: false,\n state: 'SUSPENDED' as const,\n} satisfies App;\n\nexport const appFixtures = {\n neverDeployed: neverDeployedApp,\n legacyV1Serving: legacyV1ServingApp,\n running: runningApp,\n undeployedChanges: appWithUndeployedChanges,\n promoting: promotingApp,\n sleeping: sleepingApp,\n suspended: suspendedApp,\n} satisfies Record<\n | 'neverDeployed'\n | 'legacyV1Serving'\n | 'running'\n | 'undeployedChanges'\n | 'promoting'\n | 'sleeping'\n | 'suspended',\n App\n>;\n\nexport const getApp = (): App => runningApp;\n\n/**\n * The named fixtures above are all the *same* app in different states, which is what a detail\n * page shows. A listing shows different apps, so each entry past the first is re-addressed —\n * including the deployment ids inside `production`, which embed the app id.\n */\nconst readdress = (app: App, id: string): App => ({\n ...app,\n id,\n url: `https://data-app-${id}.hub.canary-orion.keboola.dev`,\n production: {\n ...app.production,\n desiredId: app.production.desiredId?.replace(APP_ID, id) ?? null,\n actualId: app.production.actualId?.replace(APP_ID, id) ?? null,\n },\n});\n\nexport const listApps = (): App[] => [\n runningApp,\n readdress(appWithUndeployedChanges, '374812'),\n readdress(neverDeployedApp, '374813'),\n];\n","import type { AppRun } from '@keboola/api-client/apps/types';\n\nimport { APP_ID, deploymentFixtures } from './deployments';\n\nconst base = {\n appId: APP_ID,\n runtimeSize: 'small',\n runtimeBackendType: 'streamlit',\n imageVersion: '1.14.2',\n mode: 'prod',\n};\n\nconst runningRun = {\n ...base,\n id: '4f2d8c1a-0b76-4e35-9a12-5c8e7d3b0f41',\n deploymentId: deploymentFixtures.live.id,\n configVersion: deploymentFixtures.live.configVersion,\n state: 'running' as const,\n createdAt: '2026-08-15T11:02:58+00:00',\n startedAt: '2026-08-15T11:03:41+00:00',\n stoppedAt: null,\n startupLogs: null,\n failureReason: null,\n} satisfies AppRun;\n\nconst finishedRun = {\n ...base,\n id: '9c0a7e42-31bd-4f88-b6d5-2ea41f907c3b',\n deploymentId: deploymentFixtures.archived.id,\n configVersion: deploymentFixtures.archived.configVersion,\n state: 'finished' as const,\n createdAt: '2026-08-10T09:12:44+00:00',\n startedAt: '2026-08-10T09:13:29+00:00',\n stoppedAt: '2026-08-15T11:03:02+00:00',\n startupLogs: null,\n failureReason: null,\n} satisfies AppRun;\n\n/**\n * A classified failure transcribed from canary (AJDA-3140, probe P1). `startedAt` is `null`\n * even though a cause was attributed — the container executed but its startup probe never\n * passed, so a classified failure says nothing about how far the run got.\n */\nconst failedRun = {\n ...base,\n id: 'ba53f9d0-7c41-4a2e-8f16-d0b9e254a7c6',\n deploymentId: deploymentFixtures.runFailed.id,\n configVersion: deploymentFixtures.runFailed.configVersion,\n state: 'failed' as const,\n createdAt: '2026-08-17T09:31:07+00:00',\n startedAt: null,\n stoppedAt: '2026-08-17T09:33:52+00:00',\n startupLogs:\n '[INFO] Starting app\\n[ERROR] App must have keboola-config/nginx/ directory. Missing: /app/keboola-config/nginx\\n',\n failureReason: {\n reason: 'StartupProbeFailed',\n message: 'App must have keboola-config/nginx/ directory. Missing: /app/keboola-config/nginx',\n },\n} satisfies AppRun;\n\n/**\n * A run that belongs to the app itself rather than to a deployment — what every run of a\n * `/v1`-created app looks like. `deploymentId: null` is permanent for these, not drift.\n */\nconst legacyRun = {\n ...base,\n id: '1d7b4e05-8a92-4c63-b0f7-3e6a5c8192d4',\n deploymentId: null,\n configVersion: '2',\n state: 'running' as const,\n createdAt: '2026-08-17T10:02:11+00:00',\n startedAt: '2026-08-17T10:02:51+00:00',\n stoppedAt: null,\n startupLogs: null,\n failureReason: null,\n} satisfies AppRun;\n\nexport const runFixtures = {\n running: runningRun,\n finished: finishedRun,\n failed: failedRun,\n legacy: legacyRun,\n} satisfies Record<'running' | 'finished' | 'failed' | 'legacy', AppRun>;\n\nexport const getAppRun = (): AppRun => runningRun;\n\n/**\n * Every run this app has, newest first — the order the endpoint documents, so a consumer that\n * relies on it (`[latest] = runs`) is exercised against data that keeps the promise rather than\n * data that happens to contradict it.\n */\nexport const listAppRuns = (): AppRun[] => [legacyRun, failedRun, runningRun, finishedRun];\n","import type { Table, TableDetail } from '@keboola/api-client/storage/types';\n\nconst bucket = {\n id: 'in.c-main',\n name: 'c-main',\n displayName: 'Main',\n stage: 'in' as const,\n description: 'Main input bucket',\n created: '2024-01-15T10:00:00+0100',\n lastChangeDate: '2024-03-10T08:30:00+0100',\n isMaintenance: false,\n isReadOnly: false,\n isSnowflakeSharedDatabase: false,\n hasExternalSchema: false,\n rowsCount: 150000,\n dataSizeBytes: 52428800,\n uri: 'https://connection.keboola.com/v2/storage/buckets/in.c-main',\n backend: 'snowflake' as const,\n backendPath: [],\n databaseName: null,\n color: null,\n idBranch: 0,\n owner: null,\n sharing: null,\n path: 'in.c-main',\n tables: 'https://connection.keboola.com/v2/storage/buckets/in.c-main/tables',\n updated: '2024-03-10T08:30:00+0100',\n};\n\n// A freshly created table with no imports yet (non-typed, non-alias variant).\nconst freshTable = {\n id: 'in.c-main.users',\n name: 'users',\n displayName: 'Users',\n primaryKey: ['id'],\n metadata: [],\n columns: ['id', 'email', 'name', 'created_at'],\n columnMetadata: {},\n attributes: [],\n bucket,\n isTyped: false as const,\n isAlias: false as const,\n} satisfies TableDetail;\n\n// A recently updated table with a moderate size (non-typed, non-alias variant).\nconst recentlyUpdatedTable = {\n id: 'in.c-main.orders',\n name: 'orders',\n displayName: 'Orders',\n primaryKey: ['order_id'],\n metadata: [\n {\n id: 'mt1',\n key: 'KBC.createdBy.component.id',\n value: 'keboola.python-transformation',\n provider: 'keboola',\n timestamp: '2024-06-01T09:00:00+0200',\n },\n ],\n columns: ['order_id', 'user_id', 'total', 'status', 'created_at', 'updated_at'],\n columnMetadata: {\n order_id: [\n {\n id: 'm1',\n key: 'KBC.datatype.type',\n value: 'INTEGER',\n provider: 'keboola',\n timestamp: '2024-06-01T09:00:00+0200',\n },\n ],\n },\n attributes: [],\n bucket,\n isTyped: false as const,\n isAlias: false as const,\n} satisfies TableDetail;\n\n// A large table with many rows representing high-volume data (non-typed, non-alias variant).\nconst largeTable = {\n id: 'in.c-main.events',\n name: 'events',\n displayName: 'Events',\n primaryKey: [],\n metadata: [],\n columns: ['event_id', 'user_id', 'event_type', 'properties', 'occurred_at'],\n columnMetadata: {},\n attributes: [],\n bucket,\n isTyped: false as const,\n isAlias: false as const,\n} satisfies TableDetail;\n\n/**\n * Returns a single realistic typed TableDetail (fresh, no imports yet).\n *\n * The explicit return type ensures any divergence from the OpenAPI-derived\n * `TableDetail` in `@keboola/api-client` surfaces as a TypeScript error.\n */\nexport const getTable = (): TableDetail => freshTable;\n\n/**\n * Returns three TableDetail objects representing different lifecycle states:\n * 1. Fresh — just created, no data imported.\n * 2. Recently updated — moderate size, recent import.\n * 3. Large — high row count, large byte size.\n */\nexport const listTables = (): TableDetail[] => [freshTable, recentlyUpdatedTable, largeTable];\n\n/**\n * Named fixtures for targeted access in tests.\n */\nexport const tableFixtures = {\n fresh: freshTable,\n recentlyUpdated: recentlyUpdatedTable,\n large: largeTable,\n} satisfies Record<'fresh' | 'recentlyUpdated' | 'large', TableDetail>;\n\nexport type { Table, TableDetail };\n","import { appFixtures, getApp, listApps } from './clients/apps/apps';\nimport { deploymentFixtures, getDeployment, listDeployments } from './clients/apps/deployments';\nimport { getAppRun, listAppRuns, runFixtures } from './clients/apps/runs';\nimport { getTable, listTables, tableFixtures } from './clients/storage/tables';\n\nexport const fixtures = {\n storage: {\n tables: {\n getTable,\n listTables,\n fixtures: tableFixtures,\n },\n },\n apps: {\n apps: {\n getApp,\n listApps,\n fixtures: appFixtures,\n },\n deployments: {\n getDeployment,\n listDeployments,\n fixtures: deploymentFixtures,\n },\n runs: {\n getAppRun,\n listAppRuns,\n fixtures: runFixtures,\n },\n },\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keboola/api-fixtures",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "22.0.0",
|
|
4
4
|
"description": "Typed test fixtures keyed by Keboola API endpoint",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"types": "./dist/index.d.ts",
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
|
-
"README.md"
|
|
12
|
+
"README.md",
|
|
13
|
+
"AGENTS.md"
|
|
13
14
|
],
|
|
14
15
|
"publishConfig": {
|
|
15
16
|
"access": "public"
|
|
@@ -47,7 +48,7 @@
|
|
|
47
48
|
"typescript"
|
|
48
49
|
],
|
|
49
50
|
"peerDependencies": {
|
|
50
|
-
"@keboola/api-client": "^
|
|
51
|
+
"@keboola/api-client": "^27.0.0"
|
|
51
52
|
},
|
|
52
53
|
"devDependencies": {
|
|
53
54
|
"@arethetypeswrong/cli": "^0.18.2",
|
|
@@ -60,8 +61,8 @@
|
|
|
60
61
|
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
|
61
62
|
"vite": "^8.1.5",
|
|
62
63
|
"vitest": "^4.1.10",
|
|
63
|
-
"@keboola/api-client": "^
|
|
64
|
-
"@keboola/oxlint-config": "^
|
|
64
|
+
"@keboola/api-client": "^27.0.0",
|
|
65
|
+
"@keboola/oxlint-config": "^10.0.1",
|
|
65
66
|
"@keboola/tsconfig": "^0.2.0"
|
|
66
67
|
},
|
|
67
68
|
"scripts": {
|