@nominalso/vibe-host 0.0.1
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/LICENSE +10 -0
- package/README.md +39 -0
- package/dist/index.cjs +681 -0
- package/dist/index.d.cts +3497 -0
- package/dist/index.d.ts +3497 -0
- package/dist/index.js +657 -0
- package/package.json +80 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,657 @@
|
|
|
1
|
+
// package.json
|
|
2
|
+
var version = "0.0.1";
|
|
3
|
+
|
|
4
|
+
// ../protocol-types/dist/index.js
|
|
5
|
+
var PROTOCOL_ID = "nominal-vibe-bridge";
|
|
6
|
+
var PROTOCOL_VERSION = 1;
|
|
7
|
+
var BRIDGE_KINDS = ["request", "response", "push", "command", "progress"];
|
|
8
|
+
var CORRELATED_KINDS = ["request", "response", "progress"];
|
|
9
|
+
var BRIDGE_KINDS_SET = new Set(BRIDGE_KINDS);
|
|
10
|
+
var CORRELATED_KINDS_SET = new Set(CORRELATED_KINDS);
|
|
11
|
+
function isBridgeMessage(data) {
|
|
12
|
+
if (typeof data !== "object" || data === null) return false;
|
|
13
|
+
const d = data;
|
|
14
|
+
if (d.__protocol !== PROTOCOL_ID) return false;
|
|
15
|
+
if (d.__version !== PROTOCOL_VERSION) return false;
|
|
16
|
+
if (typeof d.kind !== "string" || !BRIDGE_KINDS_SET.has(d.kind)) return false;
|
|
17
|
+
if (typeof d.type !== "string") return false;
|
|
18
|
+
if (CORRELATED_KINDS_SET.has(d.kind) && typeof d.requestId !== "string") return false;
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// ../api-client/dist/index.js
|
|
23
|
+
import {
|
|
24
|
+
createClient,
|
|
25
|
+
createConfig
|
|
26
|
+
} from "@hey-api/client-fetch";
|
|
27
|
+
import { createClient as createClient2, createConfig as createConfig2 } from "@hey-api/client-fetch";
|
|
28
|
+
var client = createClient(createConfig());
|
|
29
|
+
var getAccountsApiAccountingAccountGet = (options) => {
|
|
30
|
+
return (options?.client ?? client).get({
|
|
31
|
+
url: "/api/accounting/account",
|
|
32
|
+
...options
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
var getAccountApiAccountingAccountAccountIdGet = (options) => {
|
|
36
|
+
return (options.client ?? client).get({
|
|
37
|
+
url: "/api/accounting/account/{account_id}",
|
|
38
|
+
...options
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
var getCoaTreeApiAccountingSubsidiarySubsidiaryIdCoaGet = (options) => {
|
|
42
|
+
return (options.client ?? client).get({
|
|
43
|
+
url: "/api/accounting/subsidiary/{subsidiary_id}/coa",
|
|
44
|
+
...options
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
var getCoaFlatApiAccountingSubsidiarySubsidiaryIdCoaAccountGet = (options) => {
|
|
48
|
+
return (options.client ?? client).get({
|
|
49
|
+
url: "/api/accounting/subsidiary/{subsidiary_id}/coa/account",
|
|
50
|
+
...options,
|
|
51
|
+
headers: {
|
|
52
|
+
"Content-Type": "application/json",
|
|
53
|
+
...options?.headers
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
var getSubsidiaryAvailableCurrenciesApiAccountingSubsidiarySubsidiaryIdCoaAvailableCurrenciesGet = (options) => {
|
|
58
|
+
return (options.client ?? client).get({
|
|
59
|
+
url: "/api/accounting/subsidiary/{subsidiary_id}/coa/available-currencies",
|
|
60
|
+
...options
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
var getCoaFlatSimpleApiAccountingSubsidiarySubsidiaryIdCoaAccountSimpleGet = (options) => {
|
|
64
|
+
return (options.client ?? client).get({
|
|
65
|
+
url: "/api/accounting/subsidiary/{subsidiary_id}/coa/account/simple",
|
|
66
|
+
...options,
|
|
67
|
+
headers: {
|
|
68
|
+
"Content-Type": "application/json",
|
|
69
|
+
...options?.headers
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
var getGroupedCoaFlatApiAccountingSubsidiarySubsidiaryIdCoaAccountGroupGet = (options) => {
|
|
74
|
+
return (options.client ?? client).get({
|
|
75
|
+
url: "/api/accounting/subsidiary/{subsidiary_id}/coa/account/group",
|
|
76
|
+
...options
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
var getAccountByIdApiAccountingSubsidiarySubsidiaryIdCoaAccountAccountIdGet = (options) => {
|
|
80
|
+
return (options.client ?? client).get({
|
|
81
|
+
url: "/api/accounting/subsidiary/{subsidiary_id}/coa/account/{account_id}",
|
|
82
|
+
...options
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
var getConversionRateApiAccountingCurrencyCurrencyConversionRatesGet = (options) => {
|
|
86
|
+
return (options.client ?? client).get({
|
|
87
|
+
url: "/api/accounting/currency/{currency}/conversion-rates",
|
|
88
|
+
...options
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
var getSubsidiaryJournalLinesApiAccountingSubsidiarySubsidiaryIdJournalEntryLinesGet = (options) => {
|
|
92
|
+
return (options.client ?? client).get({
|
|
93
|
+
url: "/api/accounting/subsidiary/{subsidiary_id}/journal-entry/lines",
|
|
94
|
+
...options,
|
|
95
|
+
headers: {
|
|
96
|
+
"Content-Type": "application/json",
|
|
97
|
+
...options?.headers
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
var getSubsidiaryJournalApiAccountingSubsidiarySubsidiaryIdJournalEntryGet = (options) => {
|
|
102
|
+
return (options.client ?? client).get({
|
|
103
|
+
url: "/api/accounting/subsidiary/{subsidiary_id}/journal-entry",
|
|
104
|
+
...options,
|
|
105
|
+
headers: {
|
|
106
|
+
"Content-Type": "application/json",
|
|
107
|
+
...options?.headers
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
var getJournalEntryApiAccountingSubsidiarySubsidiaryIdJournalEntryJournalEntryIdGet = (options) => {
|
|
112
|
+
return (options.client ?? client).get({
|
|
113
|
+
url: "/api/accounting/subsidiary/{subsidiary_id}/journal-entry/{journal_entry_id}",
|
|
114
|
+
...options
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
var getDimensionsApiAccountingDimensionGet = (options) => {
|
|
118
|
+
return (options?.client ?? client).get({
|
|
119
|
+
url: "/api/accounting/dimension",
|
|
120
|
+
...options
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
var getAccountDimensionAssignmentsForDimensionApiAccountingDimensionDimensionIdAccountAccountIdGet = (options) => {
|
|
124
|
+
return (options.client ?? client).get({
|
|
125
|
+
url: "/api/accounting/dimension/{dimension_id}/account/{account_id}",
|
|
126
|
+
...options
|
|
127
|
+
});
|
|
128
|
+
};
|
|
129
|
+
var getDimensionValuesApiAccountingDimensionValueGet = (options) => {
|
|
130
|
+
return (options?.client ?? client).get({
|
|
131
|
+
url: "/api/accounting/dimension-value",
|
|
132
|
+
...options
|
|
133
|
+
});
|
|
134
|
+
};
|
|
135
|
+
var getDimensionValuesHierarchicalApiAccountingDimensionValueHierarchicalGet = (options) => {
|
|
136
|
+
return (options?.client ?? client).get({
|
|
137
|
+
url: "/api/accounting/dimension-value/hierarchical",
|
|
138
|
+
...options
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
var getEffectiveExchangeRateApiAccountingConsolidationExchangeRateGet = (options) => {
|
|
142
|
+
return (options?.client ?? client).get({
|
|
143
|
+
url: "/api/accounting/consolidation-exchange-rate",
|
|
144
|
+
...options,
|
|
145
|
+
headers: {
|
|
146
|
+
"Content-Type": "application/json",
|
|
147
|
+
...options?.headers
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
var getPeriodByDateApiAccountingConsolidationExchangeRatePeriodInputDateGet = (options) => {
|
|
152
|
+
return (options.client ?? client).get({
|
|
153
|
+
url: "/api/accounting/consolidation-exchange-rate/period/{input_date}",
|
|
154
|
+
...options
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
var getActivityDefinitionsApiActivityActivityDefinitionGet = (options) => {
|
|
158
|
+
return (options?.client ?? client).get({
|
|
159
|
+
url: "/api/activity/activity-definition",
|
|
160
|
+
...options
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
var getActivityDefinitionByIdApiActivityActivityDefinitionActivityDefinitionIdGet = (options) => {
|
|
164
|
+
return (options.client ?? client).get({
|
|
165
|
+
url: "/api/activity/activity-definition/{activity_definition_id}",
|
|
166
|
+
...options
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
var getPeriodInstancesApiActivityPeriodInstanceGet = (options) => {
|
|
170
|
+
return (options?.client ?? client).get({
|
|
171
|
+
url: "/api/activity/period-instance",
|
|
172
|
+
...options
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
var getPeriodInstanceApiActivityPeriodInstancePeriodInstanceIdGet = (options) => {
|
|
176
|
+
return (options.client ?? client).get({
|
|
177
|
+
url: "/api/activity/period-instance/{period_instance_id}",
|
|
178
|
+
...options
|
|
179
|
+
});
|
|
180
|
+
};
|
|
181
|
+
var getPeriodInstanceBySlugApiActivityPeriodInstanceBySlugPeriodDisplayIdGet = (options) => {
|
|
182
|
+
return (options.client ?? client).get({
|
|
183
|
+
url: "/api/activity/period-instance/by-slug/{period_display_id}",
|
|
184
|
+
...options
|
|
185
|
+
});
|
|
186
|
+
};
|
|
187
|
+
var getPeriodInstanceProgressBreakdownBySlugApiActivityPeriodInstanceBySlugPeriodDisplayIdProgressBreakdownGet = (options) => {
|
|
188
|
+
return (options.client ?? client).get({
|
|
189
|
+
url: "/api/activity/period-instance/by-slug/{period_display_id}/progress-breakdown",
|
|
190
|
+
...options
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
var getAllTasksDefinitionsApiActivityTaskDefinitionGet = (options) => {
|
|
194
|
+
return (options?.client ?? client).get({
|
|
195
|
+
url: "/api/activity/task-definition",
|
|
196
|
+
...options
|
|
197
|
+
});
|
|
198
|
+
};
|
|
199
|
+
var createTaskDefinitionApiActivityTaskDefinitionPost = (options) => {
|
|
200
|
+
return (options.client ?? client).post({
|
|
201
|
+
url: "/api/activity/task-definition",
|
|
202
|
+
...options,
|
|
203
|
+
headers: {
|
|
204
|
+
"Content-Type": "application/json",
|
|
205
|
+
...options?.headers
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
};
|
|
209
|
+
var getAllTasksDefinitionsByFilterApiActivityTaskDefinitionQueryPost = (options) => {
|
|
210
|
+
return (options?.client ?? client).post({
|
|
211
|
+
url: "/api/activity/task-definition/query",
|
|
212
|
+
...options
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
var getTaskDefinitionByIdApiActivityTaskDefinitionTaskDefinitionIdGet = (options) => {
|
|
216
|
+
return (options.client ?? client).get({
|
|
217
|
+
url: "/api/activity/task-definition/{task_definition_id}",
|
|
218
|
+
...options
|
|
219
|
+
});
|
|
220
|
+
};
|
|
221
|
+
var updateTaskDefinitionApiActivityTaskDefinitionTaskDefinitionIdPut = (options) => {
|
|
222
|
+
return (options.client ?? client).put({
|
|
223
|
+
url: "/api/activity/task-definition/{task_definition_id}",
|
|
224
|
+
...options,
|
|
225
|
+
headers: {
|
|
226
|
+
"Content-Type": "application/json",
|
|
227
|
+
...options?.headers
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
var getActivityInstanceApiActivityActivityInstanceActivityInstanceIdGet = (options) => {
|
|
232
|
+
return (options.client ?? client).get({
|
|
233
|
+
url: "/api/activity/activity-instance/{activity_instance_id}",
|
|
234
|
+
...options
|
|
235
|
+
});
|
|
236
|
+
};
|
|
237
|
+
var getTaskInstancesByActivityApiActivityActivityInstanceActivityInstanceIdTaskGet = (options) => {
|
|
238
|
+
return (options.client ?? client).get({
|
|
239
|
+
url: "/api/activity/activity-instance/{activity_instance_id}/task",
|
|
240
|
+
...options,
|
|
241
|
+
headers: {
|
|
242
|
+
"Content-Type": "application/json",
|
|
243
|
+
...options?.headers
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
};
|
|
247
|
+
var getActivityInstancesApiActivityActivityInstanceGet = (options) => {
|
|
248
|
+
return (options?.client ?? client).get({
|
|
249
|
+
url: "/api/activity/activity-instance",
|
|
250
|
+
...options
|
|
251
|
+
});
|
|
252
|
+
};
|
|
253
|
+
var getActivityInstanceByPeriodApiActivityActivityInstanceByPeriodPeriodDisplayIdActivityDefinitionIdGet = (options) => {
|
|
254
|
+
return (options.client ?? client).get({
|
|
255
|
+
url: "/api/activity/activity-instance/by-period/{period_display_id}/{activity_definition_id}",
|
|
256
|
+
...options
|
|
257
|
+
});
|
|
258
|
+
};
|
|
259
|
+
var getTaskInstancesByActivityPeriodApiActivityActivityInstanceByPeriodPeriodDisplayIdActivityDefinitionIdTaskGet = (options) => {
|
|
260
|
+
return (options.client ?? client).get({
|
|
261
|
+
url: "/api/activity/activity-instance/by-period/{period_display_id}/{activity_definition_id}/task",
|
|
262
|
+
...options,
|
|
263
|
+
headers: {
|
|
264
|
+
"Content-Type": "application/json",
|
|
265
|
+
...options?.headers
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
};
|
|
269
|
+
var getAllTaskInstancesApiActivityTaskInstanceGet = (options) => {
|
|
270
|
+
return (options?.client ?? client).get({
|
|
271
|
+
url: "/api/activity/task-instance",
|
|
272
|
+
...options
|
|
273
|
+
});
|
|
274
|
+
};
|
|
275
|
+
var getAllTaskInstancesByFilterApiActivityTaskInstanceQueryPost = (options) => {
|
|
276
|
+
return (options?.client ?? client).post({
|
|
277
|
+
url: "/api/activity/task-instance/query",
|
|
278
|
+
...options,
|
|
279
|
+
headers: {
|
|
280
|
+
"Content-Type": "application/json",
|
|
281
|
+
...options?.headers
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
};
|
|
285
|
+
var getTaskInstanceByIdApiActivityTaskInstanceTaskInstanceIdGet = (options) => {
|
|
286
|
+
return (options.client ?? client).get({
|
|
287
|
+
url: "/api/activity/task-instance/{task_instance_id}",
|
|
288
|
+
...options
|
|
289
|
+
});
|
|
290
|
+
};
|
|
291
|
+
var updateTaskInstanceApiActivityTaskInstanceTaskInstanceIdPut = (options) => {
|
|
292
|
+
return (options.client ?? client).put({
|
|
293
|
+
url: "/api/activity/task-instance/{task_instance_id}",
|
|
294
|
+
...options,
|
|
295
|
+
headers: {
|
|
296
|
+
"Content-Type": "application/json",
|
|
297
|
+
...options?.headers
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
};
|
|
301
|
+
var getEventsApiAuditTrailEventGet = (options) => {
|
|
302
|
+
return (options?.client ?? client).get({
|
|
303
|
+
url: "/api/audit-trail/event",
|
|
304
|
+
...options
|
|
305
|
+
});
|
|
306
|
+
};
|
|
307
|
+
var getEntityEventsApiAuditTrailEventEntityTargetTypeTargetIdPost = (options) => {
|
|
308
|
+
return (options.client ?? client).post({
|
|
309
|
+
url: "/api/audit-trail/event/entity/{target_type}/{target_id}",
|
|
310
|
+
...options,
|
|
311
|
+
headers: {
|
|
312
|
+
"Content-Type": "application/json",
|
|
313
|
+
...options?.headers
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
};
|
|
317
|
+
var getFiscalCalendarsBySubsidiaryApiPeriodManagerFiscalCalendarBySubsidiarySubsidiaryIdGet = (options) => {
|
|
318
|
+
return (options.client ?? client).get({
|
|
319
|
+
url: "/api/period-manager/fiscal-calendar/by-subsidiary/{subsidiary_id}",
|
|
320
|
+
...options
|
|
321
|
+
});
|
|
322
|
+
};
|
|
323
|
+
var getFiscalCalendarByIdApiPeriodManagerFiscalCalendarCalendarIdGet = (options) => {
|
|
324
|
+
return (options.client ?? client).get({
|
|
325
|
+
url: "/api/period-manager/fiscal-calendar/{calendar_id}",
|
|
326
|
+
...options
|
|
327
|
+
});
|
|
328
|
+
};
|
|
329
|
+
var getTenantUsersApiTenancyTenantTenantIdOrNameUsersGet = (options) => {
|
|
330
|
+
return (options.client ?? client).get({
|
|
331
|
+
url: "/api/tenancy/tenant/{tenant_id_or_name}/users",
|
|
332
|
+
...options
|
|
333
|
+
});
|
|
334
|
+
};
|
|
335
|
+
var getAllSubsidiariesApiTenancySubsidiaryGet = (options) => {
|
|
336
|
+
return (options?.client ?? client).get({
|
|
337
|
+
url: "/api/tenancy/subsidiary",
|
|
338
|
+
...options
|
|
339
|
+
});
|
|
340
|
+
};
|
|
341
|
+
var getSubsidiaryApiTenancySubsidiarySubsidiaryIdGet = (options) => {
|
|
342
|
+
return (options.client ?? client).get({
|
|
343
|
+
url: "/api/tenancy/subsidiary/{subsidiary_id}",
|
|
344
|
+
...options
|
|
345
|
+
});
|
|
346
|
+
};
|
|
347
|
+
var getSubsidiaryParentCurrenciesApiTenancySubsidiarySubsidiaryIdParentCurrenciesGet = (options) => {
|
|
348
|
+
return (options.client ?? client).get({
|
|
349
|
+
url: "/api/tenancy/subsidiary/{subsidiary_id}/parent-currencies",
|
|
350
|
+
...options
|
|
351
|
+
});
|
|
352
|
+
};
|
|
353
|
+
function createVibeApiClient({ baseUrl, stripApiPrefix }) {
|
|
354
|
+
const client2 = createClient2(createConfig2({ baseUrl }));
|
|
355
|
+
client2.interceptors.request.use((request) => {
|
|
356
|
+
console.log("[vibe-api-client] request url:", request.url);
|
|
357
|
+
return request;
|
|
358
|
+
});
|
|
359
|
+
if (stripApiPrefix) {
|
|
360
|
+
client2.interceptors.request.use(
|
|
361
|
+
(request) => new Request(request.url.replace(`${baseUrl}/api/`, `${baseUrl}/`), request)
|
|
362
|
+
);
|
|
363
|
+
}
|
|
364
|
+
return client2;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// src/handlerMap.ts
|
|
368
|
+
async function call(fn, payload, client2) {
|
|
369
|
+
const { data } = await fn({ ...payload, client: client2 });
|
|
370
|
+
if (data == null) throw new Error("API returned no data");
|
|
371
|
+
return data;
|
|
372
|
+
}
|
|
373
|
+
function createHandlerMap(options) {
|
|
374
|
+
const client2 = createVibeApiClient(options);
|
|
375
|
+
return {
|
|
376
|
+
// Accounting — chart of accounts
|
|
377
|
+
GET_CHART_OF_ACCOUNTS: (p) => call(getCoaFlatApiAccountingSubsidiarySubsidiaryIdCoaAccountGet, p, client2),
|
|
378
|
+
GET_COA_TREE: (p) => call(getCoaTreeApiAccountingSubsidiarySubsidiaryIdCoaGet, p, client2),
|
|
379
|
+
GET_COA_FLAT_SIMPLE: (p) => call(
|
|
380
|
+
getCoaFlatSimpleApiAccountingSubsidiarySubsidiaryIdCoaAccountSimpleGet,
|
|
381
|
+
p,
|
|
382
|
+
client2
|
|
383
|
+
),
|
|
384
|
+
GET_COA_GROUPED: (p) => call(
|
|
385
|
+
getGroupedCoaFlatApiAccountingSubsidiarySubsidiaryIdCoaAccountGroupGet,
|
|
386
|
+
p,
|
|
387
|
+
client2
|
|
388
|
+
),
|
|
389
|
+
GET_COA_ACCOUNT: (p) => call(
|
|
390
|
+
getAccountByIdApiAccountingSubsidiarySubsidiaryIdCoaAccountAccountIdGet,
|
|
391
|
+
p,
|
|
392
|
+
client2
|
|
393
|
+
),
|
|
394
|
+
GET_SUBSIDIARY_AVAILABLE_CURRENCIES: (p) => call(
|
|
395
|
+
getSubsidiaryAvailableCurrenciesApiAccountingSubsidiarySubsidiaryIdCoaAvailableCurrenciesGet,
|
|
396
|
+
p,
|
|
397
|
+
client2
|
|
398
|
+
),
|
|
399
|
+
GET_ACCOUNTS: (p) => call(getAccountsApiAccountingAccountGet, p, client2),
|
|
400
|
+
GET_ACCOUNT: (p) => call(getAccountApiAccountingAccountAccountIdGet, p, client2),
|
|
401
|
+
// Accounting — exchange rates
|
|
402
|
+
GET_CONVERSION_RATES: (p) => call(getConversionRateApiAccountingCurrencyCurrencyConversionRatesGet, p, client2),
|
|
403
|
+
GET_EFFECTIVE_EXCHANGE_RATE: (p) => call(getEffectiveExchangeRateApiAccountingConsolidationExchangeRateGet, p, client2),
|
|
404
|
+
GET_EXCHANGE_RATE_BY_DATE: (p) => call(
|
|
405
|
+
getPeriodByDateApiAccountingConsolidationExchangeRatePeriodInputDateGet,
|
|
406
|
+
p,
|
|
407
|
+
client2
|
|
408
|
+
),
|
|
409
|
+
// Accounting — dimensions
|
|
410
|
+
GET_DIMENSIONS: (p) => call(getDimensionsApiAccountingDimensionGet, p, client2),
|
|
411
|
+
GET_DIMENSION_VALUES: (p) => call(getDimensionValuesApiAccountingDimensionValueGet, p, client2),
|
|
412
|
+
GET_DIMENSION_VALUES_HIERARCHICAL: (p) => call(
|
|
413
|
+
getDimensionValuesHierarchicalApiAccountingDimensionValueHierarchicalGet,
|
|
414
|
+
p,
|
|
415
|
+
client2
|
|
416
|
+
),
|
|
417
|
+
GET_DIMENSION_ACCOUNT_ASSIGNMENTS: (p) => call(
|
|
418
|
+
getAccountDimensionAssignmentsForDimensionApiAccountingDimensionDimensionIdAccountAccountIdGet,
|
|
419
|
+
p,
|
|
420
|
+
client2
|
|
421
|
+
),
|
|
422
|
+
// Accounting — journal entries
|
|
423
|
+
GET_JOURNAL_ENTRIES: (p) => call(
|
|
424
|
+
getSubsidiaryJournalApiAccountingSubsidiarySubsidiaryIdJournalEntryGet,
|
|
425
|
+
p,
|
|
426
|
+
client2
|
|
427
|
+
),
|
|
428
|
+
GET_JOURNAL_LINES: (p) => call(
|
|
429
|
+
getSubsidiaryJournalLinesApiAccountingSubsidiarySubsidiaryIdJournalEntryLinesGet,
|
|
430
|
+
p,
|
|
431
|
+
client2
|
|
432
|
+
),
|
|
433
|
+
GET_JOURNAL_ENTRY: (p) => call(
|
|
434
|
+
getJournalEntryApiAccountingSubsidiarySubsidiaryIdJournalEntryJournalEntryIdGet,
|
|
435
|
+
p,
|
|
436
|
+
client2
|
|
437
|
+
),
|
|
438
|
+
// Activity — period instances
|
|
439
|
+
GET_PERIODS: (p) => call(getPeriodInstancesApiActivityPeriodInstanceGet, p, client2),
|
|
440
|
+
GET_PERIOD_INSTANCE: (p) => call(getPeriodInstanceApiActivityPeriodInstancePeriodInstanceIdGet, p, client2),
|
|
441
|
+
GET_PERIOD_INSTANCE_BY_SLUG: (p) => call(
|
|
442
|
+
getPeriodInstanceBySlugApiActivityPeriodInstanceBySlugPeriodDisplayIdGet,
|
|
443
|
+
p,
|
|
444
|
+
client2
|
|
445
|
+
),
|
|
446
|
+
GET_PERIOD_PROGRESS_BREAKDOWN: (p) => call(
|
|
447
|
+
getPeriodInstanceProgressBreakdownBySlugApiActivityPeriodInstanceBySlugPeriodDisplayIdProgressBreakdownGet,
|
|
448
|
+
p,
|
|
449
|
+
client2
|
|
450
|
+
),
|
|
451
|
+
// Activity — activity definitions
|
|
452
|
+
GET_ACTIVITY_DEFINITIONS: (p) => call(getActivityDefinitionsApiActivityActivityDefinitionGet, p, client2),
|
|
453
|
+
GET_ACTIVITY_DEFINITION: (p) => call(
|
|
454
|
+
getActivityDefinitionByIdApiActivityActivityDefinitionActivityDefinitionIdGet,
|
|
455
|
+
p,
|
|
456
|
+
client2
|
|
457
|
+
),
|
|
458
|
+
// Activity — activity instances
|
|
459
|
+
GET_ACTIVITY_INSTANCES: (p) => call(getActivityInstancesApiActivityActivityInstanceGet, p, client2),
|
|
460
|
+
GET_ACTIVITY_INSTANCE: (p) => call(getActivityInstanceApiActivityActivityInstanceActivityInstanceIdGet, p, client2),
|
|
461
|
+
GET_ACTIVITY_INSTANCE_BY_PERIOD: (p) => call(
|
|
462
|
+
getActivityInstanceByPeriodApiActivityActivityInstanceByPeriodPeriodDisplayIdActivityDefinitionIdGet,
|
|
463
|
+
p,
|
|
464
|
+
client2
|
|
465
|
+
),
|
|
466
|
+
GET_ACTIVITY_INSTANCE_TASKS: (p) => call(
|
|
467
|
+
getTaskInstancesByActivityApiActivityActivityInstanceActivityInstanceIdTaskGet,
|
|
468
|
+
p,
|
|
469
|
+
client2
|
|
470
|
+
),
|
|
471
|
+
GET_ACTIVITY_PERIOD_TASKS: (p) => call(
|
|
472
|
+
getTaskInstancesByActivityPeriodApiActivityActivityInstanceByPeriodPeriodDisplayIdActivityDefinitionIdTaskGet,
|
|
473
|
+
p,
|
|
474
|
+
client2
|
|
475
|
+
),
|
|
476
|
+
// Activity — task definitions
|
|
477
|
+
GET_TASK_DEFINITIONS: (p) => call(getAllTasksDefinitionsApiActivityTaskDefinitionGet, p, client2),
|
|
478
|
+
GET_TASK_DEFINITION: (p) => call(getTaskDefinitionByIdApiActivityTaskDefinitionTaskDefinitionIdGet, p, client2),
|
|
479
|
+
CREATE_TASK_DEFINITION: (p) => call(createTaskDefinitionApiActivityTaskDefinitionPost, p, client2),
|
|
480
|
+
UPDATE_TASK_DEFINITION: (p) => call(updateTaskDefinitionApiActivityTaskDefinitionTaskDefinitionIdPut, p, client2),
|
|
481
|
+
GET_TASK_DEFINITIONS_BY_FILTER: (p) => call(getAllTasksDefinitionsByFilterApiActivityTaskDefinitionQueryPost, p, client2),
|
|
482
|
+
// Activity — task instances
|
|
483
|
+
GET_TASK_INSTANCES: (p) => call(getAllTaskInstancesApiActivityTaskInstanceGet, p, client2),
|
|
484
|
+
GET_TASK_INSTANCE: (p) => call(getTaskInstanceByIdApiActivityTaskInstanceTaskInstanceIdGet, p, client2),
|
|
485
|
+
POST_TASK_OUTPUT: (p) => call(updateTaskInstanceApiActivityTaskInstanceTaskInstanceIdPut, p, client2),
|
|
486
|
+
GET_TASK_INSTANCES_BY_FILTER: (p) => call(getAllTaskInstancesByFilterApiActivityTaskInstanceQueryPost, p, client2),
|
|
487
|
+
// Audit trail
|
|
488
|
+
GET_AUDIT_EVENTS: (p) => call(getEventsApiAuditTrailEventGet, p, client2),
|
|
489
|
+
GET_ENTITY_AUDIT_EVENTS: (p) => call(getEntityEventsApiAuditTrailEventEntityTargetTypeTargetIdPost, p, client2),
|
|
490
|
+
// Period manager
|
|
491
|
+
GET_FISCAL_CALENDARS: (p) => call(
|
|
492
|
+
getFiscalCalendarsBySubsidiaryApiPeriodManagerFiscalCalendarBySubsidiarySubsidiaryIdGet,
|
|
493
|
+
p,
|
|
494
|
+
client2
|
|
495
|
+
),
|
|
496
|
+
GET_FISCAL_CALENDAR: (p) => call(getFiscalCalendarByIdApiPeriodManagerFiscalCalendarCalendarIdGet, p, client2),
|
|
497
|
+
// Tenancy
|
|
498
|
+
GET_SUBSIDIARIES: (p) => call(getAllSubsidiariesApiTenancySubsidiaryGet, p, client2),
|
|
499
|
+
GET_SUBSIDIARY: (p) => call(getSubsidiaryApiTenancySubsidiarySubsidiaryIdGet, p, client2),
|
|
500
|
+
GET_SUBSIDIARY_PARENT_CURRENCIES: (p) => call(
|
|
501
|
+
getSubsidiaryParentCurrenciesApiTenancySubsidiarySubsidiaryIdParentCurrenciesGet,
|
|
502
|
+
p,
|
|
503
|
+
client2
|
|
504
|
+
),
|
|
505
|
+
GET_TENANT_USERS: (p) => call(getTenantUsersApiTenancyTenantTenantIdOrNameUsersGet, p, client2)
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
// src/uploadHandler.ts
|
|
510
|
+
async function uploadHandler(payload, sendProgress) {
|
|
511
|
+
const attachmentId = crypto.randomUUID();
|
|
512
|
+
for (const progress of [25, 50, 75, 100]) {
|
|
513
|
+
await new Promise((r) => setTimeout(r, 400));
|
|
514
|
+
sendProgress({ attachmentId, progress });
|
|
515
|
+
}
|
|
516
|
+
return { attachmentId, name: payload.fileName };
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
// src/VibeAppHost.ts
|
|
520
|
+
var VibeAppHost = class {
|
|
521
|
+
constructor({ trustedOrigins, getContext, appBasePath, clientConfig }) {
|
|
522
|
+
this.iframeWindow = null;
|
|
523
|
+
this.kindHandlers = {
|
|
524
|
+
request: (msg, source, origin) => this.handleRequest(msg, source, origin),
|
|
525
|
+
command: (msg) => this.dispatchCommand(msg)
|
|
526
|
+
};
|
|
527
|
+
this.commandHandlers = {
|
|
528
|
+
REPORT_SUBROUTE: (payload) => {
|
|
529
|
+
const newPath = payload.subroute === "/" ? this.appBasePath : `${this.appBasePath}${payload.subroute}`;
|
|
530
|
+
const method = payload.replace ? "replaceState" : "pushState";
|
|
531
|
+
window.history[method](null, "", newPath);
|
|
532
|
+
}
|
|
533
|
+
};
|
|
534
|
+
this.trustedOrigins = new Set(trustedOrigins);
|
|
535
|
+
this.getContext = getContext;
|
|
536
|
+
this.appBasePath = appBasePath;
|
|
537
|
+
this.boundHandleMessage = this.handleMessage.bind(this);
|
|
538
|
+
this.boundHandlePopState = this.handlePopState.bind(this);
|
|
539
|
+
this.handlers = this.initializeHandlers(clientConfig || { baseUrl: "", stripApiPrefix: false });
|
|
540
|
+
}
|
|
541
|
+
dispatchCommand(msg) {
|
|
542
|
+
const handler = this.commandHandlers[msg.type];
|
|
543
|
+
handler(msg.payload);
|
|
544
|
+
}
|
|
545
|
+
initializeHandlers(clientConfig) {
|
|
546
|
+
return {
|
|
547
|
+
...createHandlerMap(clientConfig),
|
|
548
|
+
UPLOAD_FILE: uploadHandler
|
|
549
|
+
};
|
|
550
|
+
}
|
|
551
|
+
/**
|
|
552
|
+
* Starts listening for bridge messages and sets up browser back/forward sync.
|
|
553
|
+
* Returns a cleanup function to call on unmount.
|
|
554
|
+
*
|
|
555
|
+
* Pass `iframeWindow` to immediately push context to the iframe. If omitted,
|
|
556
|
+
* the host will respond to GET_CONTEXT polls from the bridge but won't
|
|
557
|
+
* proactively push — call `pushContextTo(iframeWindow)` once the iframe has
|
|
558
|
+
* loaded to trigger the proactive push.
|
|
559
|
+
*/
|
|
560
|
+
mount(iframeWindow) {
|
|
561
|
+
if (iframeWindow) this.iframeWindow = iframeWindow;
|
|
562
|
+
window.addEventListener("message", this.boundHandleMessage);
|
|
563
|
+
window.addEventListener("popstate", this.boundHandlePopState);
|
|
564
|
+
if (iframeWindow) this.pushContext(iframeWindow);
|
|
565
|
+
return () => {
|
|
566
|
+
window.removeEventListener("message", this.boundHandleMessage);
|
|
567
|
+
window.removeEventListener("popstate", this.boundHandlePopState);
|
|
568
|
+
this.iframeWindow = null;
|
|
569
|
+
};
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* Pushes the current context to the iframe and updates the stored iframe
|
|
573
|
+
* window reference. Call this once the iframe has loaded if `mount()` was
|
|
574
|
+
* called without an `iframeWindow`.
|
|
575
|
+
*/
|
|
576
|
+
pushContextTo(iframeWindow) {
|
|
577
|
+
this.iframeWindow = iframeWindow;
|
|
578
|
+
this.pushContext(iframeWindow);
|
|
579
|
+
}
|
|
580
|
+
pushContext(target) {
|
|
581
|
+
const message = {
|
|
582
|
+
__protocol: PROTOCOL_ID,
|
|
583
|
+
__version: PROTOCOL_VERSION,
|
|
584
|
+
kind: "push",
|
|
585
|
+
type: "CONTEXT_PUSH",
|
|
586
|
+
payload: { ...this.getContext(), hostVersion: version }
|
|
587
|
+
};
|
|
588
|
+
for (const origin of this.trustedOrigins) {
|
|
589
|
+
target.postMessage(message, origin);
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
handlePopState() {
|
|
593
|
+
if (!this.iframeWindow) return;
|
|
594
|
+
const currentPath = window.location.pathname;
|
|
595
|
+
if (!currentPath.startsWith(this.appBasePath)) return;
|
|
596
|
+
const subroute = currentPath.slice(this.appBasePath.length) || "/";
|
|
597
|
+
this.pushToIframe("SUBROUTE_PUSH", { subroute });
|
|
598
|
+
}
|
|
599
|
+
pushToIframe(type, payload) {
|
|
600
|
+
if (!this.iframeWindow) return;
|
|
601
|
+
const message = {
|
|
602
|
+
__protocol: PROTOCOL_ID,
|
|
603
|
+
__version: PROTOCOL_VERSION,
|
|
604
|
+
kind: "push",
|
|
605
|
+
type,
|
|
606
|
+
payload
|
|
607
|
+
};
|
|
608
|
+
for (const origin of this.trustedOrigins) {
|
|
609
|
+
this.iframeWindow.postMessage(message, origin);
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
async handleMessage(event) {
|
|
613
|
+
if (!this.trustedOrigins.has(event.origin)) return;
|
|
614
|
+
if (!isBridgeMessage(event.data)) return;
|
|
615
|
+
await this.kindHandlers[event.data.kind]?.(event.data, event.source, event.origin);
|
|
616
|
+
}
|
|
617
|
+
async handleRequest(msg, source, origin) {
|
|
618
|
+
const { requestId, type } = msg;
|
|
619
|
+
if (type === "GET_CONTEXT") {
|
|
620
|
+
const ctx = { ...this.getContext(), hostVersion: version };
|
|
621
|
+
const bridgeVersion = msg.payload?.bridgeVersion ?? "unknown";
|
|
622
|
+
console.log(
|
|
623
|
+
`[vibe-host] Vibe App connected \u2014 bridge: ${bridgeVersion}, host: ${version}, tenant: ${ctx.tenant}, user: ${ctx.user.displayName}`
|
|
624
|
+
);
|
|
625
|
+
this.respond(source, origin, { kind: "response", type, requestId, ok: true, data: ctx });
|
|
626
|
+
return;
|
|
627
|
+
}
|
|
628
|
+
const sendProgress = (payload) => {
|
|
629
|
+
const message = {
|
|
630
|
+
__protocol: PROTOCOL_ID,
|
|
631
|
+
__version: PROTOCOL_VERSION,
|
|
632
|
+
kind: "progress",
|
|
633
|
+
type,
|
|
634
|
+
requestId,
|
|
635
|
+
payload
|
|
636
|
+
};
|
|
637
|
+
source.postMessage(message, origin);
|
|
638
|
+
};
|
|
639
|
+
try {
|
|
640
|
+
const handler = this.handlers[type];
|
|
641
|
+
const data = await handler(msg.payload, sendProgress);
|
|
642
|
+
this.respond(source, origin, { kind: "response", type, requestId, ok: true, data });
|
|
643
|
+
} catch (err) {
|
|
644
|
+
const error = err instanceof Error ? err.message : String(err);
|
|
645
|
+
this.respond(source, origin, { kind: "response", type, requestId, ok: false, error });
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
respond(target, origin, response) {
|
|
649
|
+
target.postMessage(
|
|
650
|
+
{ __protocol: PROTOCOL_ID, __version: PROTOCOL_VERSION, ...response },
|
|
651
|
+
origin
|
|
652
|
+
);
|
|
653
|
+
}
|
|
654
|
+
};
|
|
655
|
+
export {
|
|
656
|
+
VibeAppHost
|
|
657
|
+
};
|