bkper 5.4.1 → 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/lib/agent/extensions/bkper-ai-provider.d.ts.map +1 -1
- package/lib/agent/extensions/bkper-ai-provider.js +2 -2
- package/lib/agent/extensions/bkper-ai-provider.js.map +1 -1
- package/lib/agent/system-prompt.d.ts.map +1 -1
- package/lib/agent/system-prompt.js +5 -4
- package/lib/agent/system-prompt.js.map +1 -1
- package/lib/commands/apps/api.d.ts +36 -0
- package/lib/commands/apps/api.d.ts.map +1 -0
- package/lib/commands/apps/api.js +144 -0
- package/lib/commands/apps/api.js.map +1 -0
- package/lib/commands/apps/index.d.ts +2 -0
- package/lib/commands/apps/index.d.ts.map +1 -1
- package/lib/commands/apps/index.js +2 -0
- package/lib/commands/apps/index.js.map +1 -1
- package/lib/commands/apps/list.d.ts +5 -3
- package/lib/commands/apps/list.d.ts.map +1 -1
- package/lib/commands/apps/list.js +13 -5
- package/lib/commands/apps/list.js.map +1 -1
- package/lib/commands/apps/register.d.ts.map +1 -1
- package/lib/commands/apps/register.js +37 -5
- package/lib/commands/apps/register.js.map +1 -1
- package/lib/docs/ai/decision-models.md +88 -248
- package/lib/docs/api/ai-gateway.md +397 -0
- package/lib/docs/api/managed-agent.md +385 -0
- package/lib/docs/apps/ai.md +39 -6
- package/lib/docs/apps/context-menu.md +97 -0
- package/lib/docs/cli/app-management.md +14 -1
- package/lib/docs/cli/app-usage.md +87 -0
- package/lib/docs/core/core-concepts.md +9 -3
- package/lib/docs/index.md +4 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -234,6 +234,20 @@ bkper balance list -b <bookId> -q 'on:2026-12-31'
|
|
|
234
234
|
|
|
235
235
|
---
|
|
236
236
|
|
|
237
|
+
## Use Apps
|
|
238
|
+
|
|
239
|
+
Apps installed in a Book do work for it. List them, read an app's API spec, and call its API as the signed-in user:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
bkper app list -b <bookId>
|
|
243
|
+
bkper app api spec <appId>
|
|
244
|
+
bkper app api request <appId> /api/v1/<path-from-the-spec>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
→ [Full App Usage reference](https://github.com/bkper/bkper-cli/blob/main/skill/references/cli/app-usage.md)
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
237
251
|
## App Management
|
|
238
252
|
|
|
239
253
|
Build, deploy, and manage Bkper apps. Sync and deploy require clean, committed source stored in Bkper-managed Git (recommended) or in the current branch's external upstream.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bkper-ai-provider.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/bkper-ai-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,YAAY,EACZ,cAAc,EAEjB,MAAM,iCAAiC,CAAC;AAGzC,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAItE,QAAA,MAAM,eAAe,sEAAuE,CAAC;AAG7F,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB,CAAC,EAAE,oBAAoB,CAAC;CACpD;
|
|
1
|
+
{"version":3,"file":"bkper-ai-provider.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/bkper-ai-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,YAAY,EACZ,cAAc,EAEjB,MAAM,iCAAiC,CAAC;AAGzC,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAItE,QAAA,MAAM,eAAe,sEAAuE,CAAC;AAG7F,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB,CAAC,EAAE,oBAAoB,CAAC;CACpD;AAuED,wBAAgB,yBAAyB,CACrC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACtD,MAAM,GAAG,SAAS,CA0BpB;AA8ID,wBAAgB,uBAAuB,CAAC,MAAM,SAAS,oBAAoB,EACvE,MAAM,EAAE,SAAS,MAAM,EAAE,GAC1B,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,8BAA8B,CAC1C,KAAK,EAAE,oBAAoB,GAAG,SAAS,GACxC,oBAAoB,GAAG,SAAS,CAIlC;AAED,wBAAgB,wBAAwB,CACpC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,OAAO,GAAE,OAAO,KAAa,GAC9B,cAAc,CAkBhB;AAED,wBAAgB,uBAAuB,CACnC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAC1C,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACtD,IAAI,CAEN"}
|
|
@@ -77,7 +77,7 @@ function nanoUsdPerTokenToUsdPerMillion(value) {
|
|
|
77
77
|
function toProviderModel(model, defaultModelId) {
|
|
78
78
|
var _a, _b, _c;
|
|
79
79
|
const input = (_b = (_a = model.input_modalities) === null || _a === void 0 ? void 0 : _a.filter((modality) => modality === 'text' || modality === 'image')) !== null && _b !== void 0 ? _b : [];
|
|
80
|
-
return Object.assign(Object.assign({ id: model.id, name: (_c = model.
|
|
80
|
+
return Object.assign(Object.assign({ id: model.id, name: (_c = model.name) !== null && _c !== void 0 ? _c : model.id, reasoning: model.thinking_levels.some(level => level !== 'none'), thinkingLevelMap: getThinkingLevelMap(model.thinking_levels), input, cost: {
|
|
81
81
|
input: nanoUsdPerTokenToUsdPerMillion(model.pricing.inputNanoUsdPerToken),
|
|
82
82
|
output: nanoUsdPerTokenToUsdPerMillion(model.pricing.outputNanoUsdPerToken),
|
|
83
83
|
cacheRead: nanoUsdPerTokenToUsdPerMillion(model.pricing.cachedInputNanoUsdPerToken),
|
|
@@ -91,7 +91,7 @@ function toClassifierModel(model) {
|
|
|
91
91
|
return {
|
|
92
92
|
type: 'classifier',
|
|
93
93
|
id: model.id,
|
|
94
|
-
name: (_a = model.
|
|
94
|
+
name: (_a = model.name) !== null && _a !== void 0 ? _a : model.id,
|
|
95
95
|
api: BKPER_AI_CLASSIFIER_API,
|
|
96
96
|
input: ['text'],
|
|
97
97
|
cost: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bkper-ai-provider.js","sourceRoot":"","sources":["../../../src/agent/extensions/bkper-ai-provider.ts"],"names":[],"mappings":";;;;;;;;;AAKA,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAC5C,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AAEtE,MAAM,yBAAyB,GAAG,mBAAmB,CAAC;AACtD,MAAM,2BAA2B,GAAG,0BAA0B,CAAC;AAC/D,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAU,CAAC;AAC7F,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"bkper-ai-provider.js","sourceRoot":"","sources":["../../../src/agent/extensions/bkper-ai-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAkKA,wBAAgB,yBAAyB,CACrC,aAAa,GAAE,MAAM,EAAsC,GAC5D,MAAM,CAsDR;
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAkKA,wBAAgB,yBAAyB,CACrC,aAAa,GAAE,MAAM,EAAsC,GAC5D,MAAM,CAsDR;AA6BD,eAAO,MAAM,yBAAyB,QAKpC,CAAC"}
|
|
@@ -81,7 +81,7 @@ function getBkperCodemodeGuidelines(codemodeDocsPath) {
|
|
|
81
81
|
return [
|
|
82
82
|
'Use codemode, not shell loops or jq pipelines, to repeat commands across items.',
|
|
83
83
|
`For judgments across many items — rank, score, classify, or filter by sentiment, urgency, relevance, or quality — do not read the items yourself: in one codemode script, load them, run a classifier with models.classify() per item, and return only counts and the selected items. Read ${codemodeDocsPath} first; find classifiers with models.getAvailableOfType("classifier").`,
|
|
84
|
-
|
|
84
|
+
"Book writes in a codemode script need the same confirmation as single commands: resolve targets read-only, show the script and changes, run only after the user confirms, and report each item's result.",
|
|
85
85
|
];
|
|
86
86
|
}
|
|
87
87
|
function buildToolPromptSection(selectedTools) {
|
|
@@ -185,7 +185,7 @@ ${piExamplesPath}
|
|
|
185
185
|
function buildBkperOperatingContext(selectedTools) {
|
|
186
186
|
return `# Bkper Context
|
|
187
187
|
|
|
188
|
-
You are
|
|
188
|
+
You are an agent specialized in Bkper.
|
|
189
189
|
|
|
190
190
|
Protect the zero-sum invariant above all else.
|
|
191
191
|
|
|
@@ -199,12 +199,13 @@ ${buildToolPromptSection(selectedTools)}
|
|
|
199
199
|
- Ask the questions one at a time. Before asking the next question, check whether there is already enough information to start; if so, proceed instead.
|
|
200
200
|
- If a question can be answered by exploring the codebase, explore the codebase instead.
|
|
201
201
|
- Only perform mutating actions (creating/editing files, destructive shell commands, API writes) when the user has explicitly requested that change in the current turn. When exploring, debugging, or unsure, propose the change and wait for confirmation instead of acting.
|
|
202
|
-
- Treat any \`bkper\` CLI command that writes to a Book (transactions, accounts, groups, books, collections, apps, imports, batch ops) as irreversible: show the exact command and wait for explicit user confirmation before running it. Read-only commands (list, get, balances, search, export) need no confirmation.
|
|
202
|
+
- Treat any \`bkper\` CLI command that writes to a Book (transactions, accounts, groups, books, collections, files, apps, event response deletion, imports, batch ops) as irreversible: show the exact command and wait for explicit user confirmation before running it. Read-only commands (list, get, balances, search, export) need no confirmation.
|
|
203
203
|
- For accounting numbers — balances, statements, reconciliations, taxes — never let raw LLM output be final; use or establish a deterministic, auditable route, keep computation separate from commentary, and make assumptions explicit.
|
|
204
204
|
- Think in resources, movements, and balances — not debits and credits.
|
|
205
205
|
- Extend meaning with properties before adding structural complexity.
|
|
206
|
+
- A Book's installed apps are part of how it works: before building your own solution for a Book task, check whether an installed or installable app already does it, and prefer it.
|
|
206
207
|
- Model domain and flows before coding; represent business reality, not technical shortcuts.
|
|
207
|
-
-
|
|
208
|
+
- Do NOT overengineer things and keep things SIMPLE - choose small, boring, SIMPLE solutions, yet following high quality standards.
|
|
208
209
|
`;
|
|
209
210
|
}
|
|
210
211
|
export const BKPER_AGENT_SYSTEM_PROMPT = buildBkperOperatingContext([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calls the HTTP API an installed app publishes on its Bkper host, as the signed-in user.
|
|
3
|
+
*
|
|
4
|
+
* The CLI adds the stored login when it has one. Without one (as in the managed agent's sandbox),
|
|
5
|
+
* it sends no credentials, so an external proxy can add them.
|
|
6
|
+
*/
|
|
7
|
+
export interface AppApiTarget {
|
|
8
|
+
/** Use the app's preview host. */
|
|
9
|
+
preview?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface AppApiRequestOptions extends AppApiTarget {
|
|
12
|
+
/** HTTP method; defaults to GET, or POST when data is sent, like curl. */
|
|
13
|
+
method?: string;
|
|
14
|
+
/** JSON request body. */
|
|
15
|
+
data?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface AppApiDependencies {
|
|
18
|
+
fetch(url: string, init: RequestInit): Promise<Response>;
|
|
19
|
+
getStoredOAuthToken(): Promise<string | undefined>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Returns the OpenAPI spec an app publishes at `/openapi.json`. The spec is public, so no
|
|
23
|
+
* credentials are sent.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getAppApiSpec(appId: string, options?: AppApiTarget, dependencies?: AppApiDependencies): Promise<Record<string, unknown>>;
|
|
26
|
+
/**
|
|
27
|
+
* Sends one request to an app's `/api/` routes and returns the response body as text.
|
|
28
|
+
* Fails with the status and the app's error message on any non-2xx response.
|
|
29
|
+
*/
|
|
30
|
+
export declare function requestAppApi(appId: string, path: string, options?: AppApiRequestOptions, dependencies?: AppApiDependencies): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Formats an app response for stdout: JSON compact, or pretty for a person; other bodies as
|
|
33
|
+
* they are; nothing for an empty body.
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatAppResponse(text: string, pretty: boolean): string | undefined;
|
|
36
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/commands/apps/api.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IACzB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACtD,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzD,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACtD;AAwED;;;GAGG;AACH,wBAAsB,aAAa,CAC/B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,YAAiB,EAC1B,YAAY,GAAE,kBAAwC,GACvD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAalC;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAC/B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,oBAAyB,EAClC,YAAY,GAAE,kBAAwC,GACvD,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKnF"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { getStoredOAuthToken } from '../../auth/local-auth-service.js';
|
|
11
|
+
const defaultDependencies = {
|
|
12
|
+
fetch: (url, init) => fetch(url, init),
|
|
13
|
+
getStoredOAuthToken,
|
|
14
|
+
};
|
|
15
|
+
/** One DNS label, as in `{appId}.bkper.app`. */
|
|
16
|
+
const APP_ID = /^[A-Za-z0-9][A-Za-z0-9-]*$/;
|
|
17
|
+
const API_PATH_PREFIX = '/api/';
|
|
18
|
+
const MAX_ERROR_TEXT = 300;
|
|
19
|
+
function appOrigin(appId, preview = false) {
|
|
20
|
+
if (!APP_ID.test(appId)) {
|
|
21
|
+
throw new Error(`Invalid app ID: ${appId}`);
|
|
22
|
+
}
|
|
23
|
+
return `https://${appId}${preview ? '-preview' : ''}.bkper.app`;
|
|
24
|
+
}
|
|
25
|
+
/** Resolves a spec path on the app's own host, refusing anything outside its /api/ routes. */
|
|
26
|
+
function apiUrl(origin, path) {
|
|
27
|
+
const invalid = new Error(`App API paths must start with ${API_PATH_PREFIX} on the app's own host: ${path}`);
|
|
28
|
+
if (!path.startsWith('/')) {
|
|
29
|
+
throw invalid;
|
|
30
|
+
}
|
|
31
|
+
let url;
|
|
32
|
+
try {
|
|
33
|
+
url = new URL(path, origin);
|
|
34
|
+
}
|
|
35
|
+
catch (_a) {
|
|
36
|
+
throw invalid;
|
|
37
|
+
}
|
|
38
|
+
// URL parsing resolves dot segments, so `/api/../events` is checked as `/events`.
|
|
39
|
+
if (url.origin !== origin || !url.pathname.startsWith(API_PATH_PREFIX)) {
|
|
40
|
+
throw invalid;
|
|
41
|
+
}
|
|
42
|
+
return url.href;
|
|
43
|
+
}
|
|
44
|
+
function parseJson(text) {
|
|
45
|
+
try {
|
|
46
|
+
return JSON.parse(text);
|
|
47
|
+
}
|
|
48
|
+
catch (_a) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function isRecord(value) {
|
|
53
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
54
|
+
}
|
|
55
|
+
/** The app's own error message: `{error: {message}}`, `{error: "..."}` or `{message}`. */
|
|
56
|
+
function errorMessage(response, text) {
|
|
57
|
+
if (response.status >= 300 && response.status < 400) {
|
|
58
|
+
const location = response.headers.get('location');
|
|
59
|
+
return `Redirect${location ? ` to ${location}` : ''} not followed`;
|
|
60
|
+
}
|
|
61
|
+
const body = parseJson(text);
|
|
62
|
+
if (isRecord(body)) {
|
|
63
|
+
const error = body.error;
|
|
64
|
+
if (isRecord(error) && typeof error.message === 'string')
|
|
65
|
+
return error.message;
|
|
66
|
+
if (typeof error === 'string')
|
|
67
|
+
return error;
|
|
68
|
+
if (typeof body.message === 'string')
|
|
69
|
+
return body.message;
|
|
70
|
+
}
|
|
71
|
+
const trimmed = text.trim();
|
|
72
|
+
if (trimmed) {
|
|
73
|
+
return trimmed.length > MAX_ERROR_TEXT ? `${trimmed.slice(0, MAX_ERROR_TEXT)}…` : trimmed;
|
|
74
|
+
}
|
|
75
|
+
return response.statusText;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Returns the OpenAPI spec an app publishes at `/openapi.json`. The spec is public, so no
|
|
79
|
+
* credentials are sent.
|
|
80
|
+
*/
|
|
81
|
+
export function getAppApiSpec(appId_1) {
|
|
82
|
+
return __awaiter(this, arguments, void 0, function* (appId, options = {}, dependencies = defaultDependencies) {
|
|
83
|
+
const url = `${appOrigin(appId, options.preview)}/openapi.json`;
|
|
84
|
+
const response = yield dependencies.fetch(url, {
|
|
85
|
+
headers: { Accept: 'application/json' },
|
|
86
|
+
redirect: 'manual',
|
|
87
|
+
});
|
|
88
|
+
const text = yield response.text();
|
|
89
|
+
// Apps without a spec answer with their web page or a 404.
|
|
90
|
+
const spec = response.ok ? parseJson(text) : undefined;
|
|
91
|
+
if (!isRecord(spec) || typeof spec.openapi !== 'string') {
|
|
92
|
+
throw new Error(`${appId} does not publish an OpenAPI spec`);
|
|
93
|
+
}
|
|
94
|
+
return spec;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Sends one request to an app's `/api/` routes and returns the response body as text.
|
|
99
|
+
* Fails with the status and the app's error message on any non-2xx response.
|
|
100
|
+
*/
|
|
101
|
+
export function requestAppApi(appId_1, path_1) {
|
|
102
|
+
return __awaiter(this, arguments, void 0, function* (appId, path, options = {}, dependencies = defaultDependencies) {
|
|
103
|
+
var _a;
|
|
104
|
+
const url = apiUrl(appOrigin(appId, options.preview), path);
|
|
105
|
+
const data = options.data;
|
|
106
|
+
if (data !== undefined && parseJson(data) === undefined) {
|
|
107
|
+
throw new Error('Request data must be valid JSON');
|
|
108
|
+
}
|
|
109
|
+
const method = ((_a = options.method) !== null && _a !== void 0 ? _a : (data !== undefined ? 'POST' : 'GET')).toUpperCase();
|
|
110
|
+
if (!/^[A-Z]+$/.test(method)) {
|
|
111
|
+
throw new Error(`Invalid HTTP method: ${options.method}`);
|
|
112
|
+
}
|
|
113
|
+
const token = yield dependencies.getStoredOAuthToken();
|
|
114
|
+
const headers = { Accept: 'application/json' };
|
|
115
|
+
if (token)
|
|
116
|
+
headers.Authorization = `Bearer ${token}`;
|
|
117
|
+
if (data !== undefined)
|
|
118
|
+
headers['Content-Type'] = 'application/json';
|
|
119
|
+
const response = yield dependencies.fetch(url, {
|
|
120
|
+
method,
|
|
121
|
+
headers,
|
|
122
|
+
body: data,
|
|
123
|
+
redirect: 'manual',
|
|
124
|
+
});
|
|
125
|
+
const text = yield response.text();
|
|
126
|
+
if (!response.ok) {
|
|
127
|
+
throw new Error(`${response.status} ${errorMessage(response, text)}`);
|
|
128
|
+
}
|
|
129
|
+
return text;
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Formats an app response for stdout: JSON compact, or pretty for a person; other bodies as
|
|
134
|
+
* they are; nothing for an empty body.
|
|
135
|
+
*/
|
|
136
|
+
export function formatAppResponse(text, pretty) {
|
|
137
|
+
if (!text)
|
|
138
|
+
return undefined;
|
|
139
|
+
const body = parseJson(text);
|
|
140
|
+
if (body === undefined)
|
|
141
|
+
return text;
|
|
142
|
+
return pretty ? JSON.stringify(body, null, 2) : JSON.stringify(body);
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/commands/apps/api.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AA0BvE,MAAM,mBAAmB,GAAuB;IAC5C,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;IACtC,mBAAmB;CACtB,CAAC;AAEF,gDAAgD;AAChD,MAAM,MAAM,GAAG,4BAA4B,CAAC;AAC5C,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,SAAS,SAAS,CAAC,KAAa,EAAE,OAAO,GAAG,KAAK;IAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,WAAW,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;AACpE,CAAC;AAED,8FAA8F;AAC9F,SAAS,MAAM,CAAC,MAAc,EAAE,IAAY;IACxC,MAAM,OAAO,GAAG,IAAI,KAAK,CACrB,iCAAiC,eAAe,2BAA2B,IAAI,EAAE,CACpF,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,CAAC;IAClB,CAAC;IACD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACD,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAAC,WAAM,CAAC;QACL,MAAM,OAAO,CAAC;IAClB,CAAC;IACD,kFAAkF;IAClF,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACrE,MAAM,OAAO,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC3B,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,WAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,0FAA0F;AAC1F,SAAS,YAAY,CAAC,QAAkB,EAAE,IAAY;IAClD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClD,OAAO,WAAW,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC;IACvE,CAAC;IACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;QAC/E,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;IAC9D,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9F,CAAC;IACD,OAAO,QAAQ,CAAC,UAAU,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAgB,aAAa;yDAC/B,KAAa,EACb,UAAwB,EAAE,EAC1B,eAAmC,mBAAmB;QAEtD,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE;YAC3C,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,2DAA2D;QAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mCAAmC,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA;AAED;;;GAGG;AACH,MAAM,UAAgB,aAAa;yDAC/B,KAAa,EACb,IAAY,EACZ,UAAgC,EAAE,EAClC,eAAmC,mBAAmB;;QAEtD,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,MAAA,OAAO,CAAC,MAAM,mCAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACvF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,mBAAmB,EAAE,CAAC;QACvD,MAAM,OAAO,GAA2B,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QACvE,IAAI,KAAK;YAAE,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;QACrD,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAErE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE;YAC3C,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,MAAe;IAC3D,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -2,6 +2,8 @@ export type { DeployOptions, DeployResult, Environment, HandlerType, LogEntry, L
|
|
|
2
2
|
export type { DevOptions } from './dev.js';
|
|
3
3
|
export { getApp } from './get.js';
|
|
4
4
|
export { listApps, listAppsFormatted } from './list.js';
|
|
5
|
+
export { formatAppResponse, getAppApiSpec, requestAppApi } from './api.js';
|
|
6
|
+
export type { AppApiDependencies, AppApiRequestOptions, AppApiTarget } from './api.js';
|
|
5
7
|
export { createApp, syncApp, updateApp } from './sync.js';
|
|
6
8
|
export { deployApp, statusApp, undeployApp } from './deploy.js';
|
|
7
9
|
export { prepareManagedDeploySource, syncManagedAppSource } from './source-workflow.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/apps/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACR,aAAa,EACb,YAAY,EACZ,WAAW,EACX,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,EACd,YAAY,EACZ,cAAc,EACd,UAAU,EACV,cAAc,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAO3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGxD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG1D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAC,0BAA0B,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EACH,cAAc,EACd,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,GACxB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACH,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,GAC3B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/apps/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACR,aAAa,EACb,YAAY,EACZ,WAAW,EACX,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,EACd,YAAY,EACZ,cAAc,EACd,UAAU,EACV,cAAc,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAO3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGvF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG1D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAC,0BAA0B,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EACH,cAAc,EACd,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,GACxB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACH,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,GAC3B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
export { getApp } from './get.js';
|
|
9
9
|
// List
|
|
10
10
|
export { listApps, listAppsFormatted } from './list.js';
|
|
11
|
+
// App API
|
|
12
|
+
export { formatAppResponse, getAppApiSpec, requestAppApi } from './api.js';
|
|
11
13
|
// Sync (CRUD)
|
|
12
14
|
export { createApp, syncApp, updateApp } from './sync.js';
|
|
13
15
|
// Deploy
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/apps/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAoBhF,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM;AACN,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAExD,cAAc;AACd,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE1D,SAAS;AACT,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAC,0BAA0B,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAEtF,MAAM;AACN,OAAO,EACH,cAAc,EACd,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,GACxB,MAAM,WAAW,CAAC;AAEnB,MAAM;AACN,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,QAAQ;AACR,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO;AACP,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,0CAA0C;AAC1C,OAAO,EACH,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,GAC3B,MAAM,gBAAgB,CAAC;AAExB,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEtE,oBAAoB;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/apps/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAoBhF,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM;AACN,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAExD,UAAU;AACV,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG3E,cAAc;AACd,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE1D,SAAS;AACT,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAC,0BAA0B,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAEtF,MAAM;AACN,OAAO,EACH,cAAc,EACd,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,GACxB,MAAM,WAAW,CAAC;AAEnB,MAAM;AACN,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,QAAQ;AACR,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO;AACP,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,0CAA0C;AAC1C,OAAO,EACH,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,GAC3B,MAAM,gBAAgB,CAAC;AAExB,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEtE,oBAAoB;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { ListResult } from '../../render/output.js';
|
|
2
2
|
/**
|
|
3
|
-
* Lists
|
|
3
|
+
* Lists the apps the authenticated user has access to, or the apps installed in a book.
|
|
4
4
|
*
|
|
5
|
+
* @param bookId - When given, list the apps installed in this book
|
|
5
6
|
* @returns Array of app data objects
|
|
6
7
|
*/
|
|
7
|
-
export declare function listApps(): Promise<bkper.App[]>;
|
|
8
|
+
export declare function listApps(bookId?: string): Promise<bkper.App[]>;
|
|
8
9
|
/**
|
|
9
10
|
* Lists apps and returns a ListResult ready for rendering.
|
|
11
|
+
* Readmes are omitted from list output; `app get` returns them.
|
|
10
12
|
*/
|
|
11
|
-
export declare function listAppsFormatted(): Promise<ListResult>;
|
|
13
|
+
export declare function listAppsFormatted(bookId?: string): Promise<ListResult>;
|
|
12
14
|
//# sourceMappingURL=list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/apps/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/apps/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAIpE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAE5E"}
|
|
@@ -9,23 +9,31 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { getBkperInstance } from '../../bkper-factory.js';
|
|
11
11
|
/**
|
|
12
|
-
* Lists
|
|
12
|
+
* Lists the apps the authenticated user has access to, or the apps installed in a book.
|
|
13
13
|
*
|
|
14
|
+
* @param bookId - When given, list the apps installed in this book
|
|
14
15
|
* @returns Array of app data objects
|
|
15
16
|
*/
|
|
16
|
-
export function listApps() {
|
|
17
|
+
export function listApps(bookId) {
|
|
17
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18
19
|
const bkper = getBkperInstance();
|
|
19
|
-
const apps = yield bkper.getApps();
|
|
20
|
+
const apps = bookId ? yield (yield bkper.getBook(bookId)).getApps() : yield bkper.getApps();
|
|
20
21
|
return apps.map(app => app.json());
|
|
21
22
|
});
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
25
|
* Lists apps and returns a ListResult ready for rendering.
|
|
26
|
+
* Readmes are omitted from list output; `app get` returns them.
|
|
25
27
|
*/
|
|
26
|
-
export function listAppsFormatted() {
|
|
28
|
+
export function listAppsFormatted(bookId) {
|
|
27
29
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
-
return { items: yield listApps() };
|
|
30
|
+
return { items: (yield listApps(bookId)).map(appToListJson) };
|
|
29
31
|
});
|
|
30
32
|
}
|
|
33
|
+
function appToListJson(app) {
|
|
34
|
+
const json = Object.assign({}, app);
|
|
35
|
+
delete json.readme;
|
|
36
|
+
delete json.readmeMd;
|
|
37
|
+
return json;
|
|
38
|
+
}
|
|
31
39
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/apps/list.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/apps/list.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;;;;GAKG;AACH,MAAM,UAAgB,QAAQ,CAAC,MAAe;;QAC1C,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5F,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;CAAA;AAED;;;GAGG;AACH,MAAM,UAAgB,iBAAiB,CAAC,MAAe;;QACnD,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;IAClE,CAAC;CAAA;AAED,SAAS,aAAa,CAAC,GAAc;IACjC,MAAM,IAAI,qBAAQ,GAAG,CAAE,CAAC;IACxB,OAAO,IAAI,CAAC,MAAM,CAAC;IACnB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACrB,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/commands/apps/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/commands/apps/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6R1D"}
|
|
@@ -9,9 +9,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { withAction } from '../action.js';
|
|
11
11
|
import { setupBkper } from '../../bkper-factory.js';
|
|
12
|
+
import { readStdin } from '../../input/index.js';
|
|
12
13
|
import { renderList, renderItem } from '../../render/index.js';
|
|
14
|
+
import { isInteractiveOutput } from '../../render/output.js';
|
|
13
15
|
import { validateRequiredOptions, throwIfErrors } from '../../utils/validation.js';
|
|
14
|
-
import { getApp, listAppsFormatted, syncApp, deployApp, undeployApp, statusApp, logsApp, initApp, secretsPut, secretsList, secretsDelete, dev, build, installApp, uninstallApp, cloneManagedAppCommand, runGitCredentialHelper, } from './index.js';
|
|
16
|
+
import { getApp, listAppsFormatted, syncApp, deployApp, undeployApp, statusApp, logsApp, initApp, secretsPut, secretsList, secretsDelete, dev, build, installApp, uninstallApp, cloneManagedAppCommand, runGitCredentialHelper, getAppApiSpec, requestAppApi, formatAppResponse, } from './index.js';
|
|
15
17
|
export function registerAppCommands(program) {
|
|
16
18
|
const appCommand = program.command('app').description('Manage Bkper Apps');
|
|
17
19
|
appCommand
|
|
@@ -48,11 +50,12 @@ export function registerAppCommands(program) {
|
|
|
48
50
|
}))());
|
|
49
51
|
appCommand
|
|
50
52
|
.command('list')
|
|
51
|
-
.description('List
|
|
52
|
-
.
|
|
53
|
-
|
|
53
|
+
.description('List apps you have access to, or the apps installed in a book')
|
|
54
|
+
.option('-b, --book <bookId>', 'List the apps installed in this book')
|
|
55
|
+
.action(options => withAction('listing apps', () => __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
const result = yield listAppsFormatted(options.book);
|
|
54
57
|
renderList(result);
|
|
55
|
-
})));
|
|
58
|
+
}))());
|
|
56
59
|
appCommand
|
|
57
60
|
.command('sync')
|
|
58
61
|
.description('Sync App config after verifying committed source is stored')
|
|
@@ -137,6 +140,35 @@ export function registerAppCommands(program) {
|
|
|
137
140
|
.action((name, options) => withAction('deleting secret', () => __awaiter(this, void 0, void 0, function* () {
|
|
138
141
|
yield secretsDelete(name, options);
|
|
139
142
|
}), { skipSetup: true })());
|
|
143
|
+
// App API
|
|
144
|
+
const apiCommand = appCommand
|
|
145
|
+
.command('api')
|
|
146
|
+
.description("Read an app's OpenAPI spec and call its API");
|
|
147
|
+
apiCommand
|
|
148
|
+
.command('spec <appId>')
|
|
149
|
+
.description("Print the app's OpenAPI spec (/openapi.json)")
|
|
150
|
+
.option('-p, --preview', 'Use the preview environment')
|
|
151
|
+
.action((appId, options) => withAction('getting app API spec', () => __awaiter(this, void 0, void 0, function* () {
|
|
152
|
+
renderItem(yield getAppApiSpec(appId, { preview: options.preview }));
|
|
153
|
+
}))());
|
|
154
|
+
apiCommand
|
|
155
|
+
.command('request <appId> <path>')
|
|
156
|
+
.description("Send a request to the app's API, as the signed-in user")
|
|
157
|
+
.option('-X, --method <method>', 'HTTP method (default: GET, or POST when data is sent)')
|
|
158
|
+
.option('-d, --data <json>', 'JSON request body (or pipe it via stdin)')
|
|
159
|
+
.option('-p, --preview', 'Use the preview environment')
|
|
160
|
+
.action((appId, path, options) => withAction('requesting app API', () => __awaiter(this, void 0, void 0, function* () {
|
|
161
|
+
var _a, _b;
|
|
162
|
+
const data = (_b = (_a = options.data) !== null && _a !== void 0 ? _a : (yield readStdin())) !== null && _b !== void 0 ? _b : undefined;
|
|
163
|
+
const body = yield requestAppApi(appId, path, {
|
|
164
|
+
method: options.method,
|
|
165
|
+
data,
|
|
166
|
+
preview: options.preview,
|
|
167
|
+
});
|
|
168
|
+
const output = formatAppResponse(body, isInteractiveOutput());
|
|
169
|
+
if (output !== undefined)
|
|
170
|
+
console.log(output);
|
|
171
|
+
}))());
|
|
140
172
|
// Install/Uninstall
|
|
141
173
|
appCommand
|
|
142
174
|
.command('install <appId>')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/commands/apps/register.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EACH,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,WAAW,EACX,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,EACb,GAAG,EACH,KAAK,EACL,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/commands/apps/register.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EACH,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,WAAW,EACX,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,EACb,GAAG,EACH,KAAK,EACL,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,iBAAiB,GACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAE3E,UAAU;SACL,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CACR,sEAAsE,CACzE;SACA,MAAM,CAAC,CAAC,IAAwB,EAAE,EAAE,CACjC,UAAU,CACN,kBAAkB,EAClB,GAAS,EAAE;QACP,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,EAAE,CACN,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,sBAAsB,CAAC;SAC/B,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,CAAC,KAAa,EAAE,WAA+B,EAAE,EAAE,CACvD,UAAU,CACN,4BAA4B,EAC5B,GAAS,EAAE;QACP,MAAM,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC,CAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,EAAE,CACN,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,oCAAoC,CAAC;SAC7C,WAAW,CAAC,oEAAoE,CAAC;SACjF,MAAM,CAAC,CAAC,KAAa,EAAE,SAA6B,EAAE,EAAE,CACrD,UAAU,CACN,+BAA+B,EAC/B,GAAS,EAAE;QACP,gEAAgE;QAChE,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC;YAC1C,KAAK;YACL,SAAS,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,KAAK;SAChC,CAAC,CAAC;QACH,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC,CAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,EAAE,CACN,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CAAC,CAAC,KAAa,EAAE,EAAE,CACtB,UAAU,CAAC,aAAa,EAAE,GAAS,EAAE;QACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3B,CAAC,CAAA,CAAC,EAAE,CACP,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;SACrE,MAAM,CAAC,OAAO,CAAC,EAAE,CACd,UAAU,CAAC,cAAc,EAAE,GAAS,EAAE;QAClC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,UAAU,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,CAAA,CAAC,EAAE,CACP,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CACH,UAAU,CAAC,aAAa,EAAE,GAAS,EAAE;QACjC,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,CAAC,CAAA,CAAC,CACL,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,eAAe,EAAE,+BAA+B,CAAC;SACxD,MAAM,CAAC,OAAO,CAAC,EAAE,CACd,UAAU,CACN,eAAe,EACf,GAAS,EAAE;QACP,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,EAAE,CACN,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,eAAe,EAAE,iCAAiC,CAAC;SAC1D,MAAM,CAAC,eAAe,EAAE,gEAAgE,CAAC;SACzF,MAAM,CAAC,SAAS,EAAE,mEAAmE,CAAC;SACtF,MAAM,CAAC,OAAO,CAAC,EAAE,CACd,UAAU,CACN,iBAAiB,EACjB,GAAS,EAAE;QACP,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,EAAE,CACN,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,CAAC,KAAyB,EAAE,EAAE,CAClC,UAAU,CACN,oBAAoB,EACpB,GAAS,EAAE;QACP,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,EAAE,CACN,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,gBAAgB,EAAE,wDAAwD,CAAC;SAClF,MAAM,CAAC,gBAAgB,EAAE,wDAAwD,CAAC;SAClF,MAAM,CAAC,YAAY,EAAE,sCAAsC,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SACjG,MAAM,CAAC,eAAe,EAAE,+CAA+C,CAAC;SACxE,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;SACxD,MAAM,CAAC,cAAc,EAAE,4BAA4B,CAAC;SACpD,MAAM,CAAC,iBAAiB,EAAE,mDAAmD,CAAC;SAC9E,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SACjG,MAAM,CAAC,CAAC,KAAyB,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CACpD,UAAU,CACN,kBAAkB,EAClB,GAAS,EAAE;QACP,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,EAAE,CACN,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,CAAC;SACtE,MAAM,CACH,4BAA4B,EAC5B,gDAAgD,EAChD,MAAM,CACT;SACA,MAAM,CAAC,OAAO,CAAC,EAAE,CACd,UAAU,CACN,qBAAqB,EACrB,GAAS,EAAE;QACP,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,CAAC;YACN,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;YAC5C,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SAC/C,CAAC,CAAC;IACP,CAAC,CAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,EAAE,CACN,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CACH,UAAU,CACN,cAAc,EACd,GAAS,EAAE;QACP,MAAM,KAAK,EAAE,CAAC;IAClB,CAAC,CAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CACJ,CAAC;IAEN,sBAAsB;IACtB,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAEvF,cAAc;SACT,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,eAAe,EAAE,4BAA4B,CAAC;SACrD,MAAM,CAAC,CAAC,IAAY,EAAE,OAAO,EAAE,EAAE,CAC9B,UAAU,CACN,gBAAgB,EAChB,GAAS,EAAE;QACP,MAAM,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC,CAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,EAAE,CACN,CAAC;IAEN,cAAc;SACT,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CAAC,eAAe,EAAE,+BAA+B,CAAC;SACxD,MAAM,CAAC,OAAO,CAAC,EAAE,CACd,UAAU,CACN,iBAAiB,EACjB,GAAS,EAAE;QACP,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,EAAE,CACN,CAAC;IAEN,cAAc;SACT,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,iBAAiB,CAAC;SAC9B,MAAM,CAAC,eAAe,EAAE,iCAAiC,CAAC;SAC1D,MAAM,CAAC,CAAC,IAAY,EAAE,OAAO,EAAE,EAAE,CAC9B,UAAU,CACN,iBAAiB,EACjB,GAAS,EAAE;QACP,MAAM,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,CAAA,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,EAAE,CACN,CAAC;IAEN,UAAU;IACV,MAAM,UAAU,GAAG,UAAU;SACxB,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,6CAA6C,CAAC,CAAC;IAEhE,UAAU;SACL,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,CAAC,KAAa,EAAE,OAAO,EAAE,EAAE,CAC/B,UAAU,CAAC,sBAAsB,EAAE,GAAS,EAAE;QAC1C,UAAU,CAAC,MAAM,aAAa,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC,CAAA,CAAC,EAAE,CACP,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,wBAAwB,CAAC;SACjC,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,uBAAuB,EAAE,uDAAuD,CAAC;SACxF,MAAM,CAAC,mBAAmB,EAAE,0CAA0C,CAAC;SACvE,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,CAAC,KAAa,EAAE,IAAY,EAAE,OAAO,EAAE,EAAE,CAC7C,UAAU,CAAC,oBAAoB,EAAE,GAAS,EAAE;;QACxC,MAAM,IAAI,GAAG,MAAA,MAAA,OAAO,CAAC,IAAI,mCAAI,CAAC,MAAM,SAAS,EAAE,CAAC,mCAAI,SAAS,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE;YAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI;YACJ,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC9D,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC,CAAA,CAAC,EAAE,CACP,CAAC;IAEN,oBAAoB;IACpB,UAAU;SACL,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC;SACxC,MAAM,CAAC,CAAC,KAAa,EAAE,OAAO,EAAE,EAAE,CAC/B,UAAU,CAAC,gBAAgB,EAAE,GAAS,EAAE;QACpC,aAAa,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1D,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,CAAC,CAAA,CAAC,EAAE,CACP,CAAC;IAEN,UAAU;SACL,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC;SACxC,MAAM,CAAC,CAAC,KAAa,EAAE,OAAO,EAAE,EAAE,CAC/B,UAAU,CAAC,kBAAkB,EAAE,GAAS,EAAE;QACtC,aAAa,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5D,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,CAAC,CAAA,CAAC,EAAE,CACP,CAAC;AACV,CAAC"}
|