@sendly/cli 3.35.0 → 3.37.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 +204 -1
- package/dist/commands/10dlc/assignments/list.d.ts +10 -0
- package/dist/commands/10dlc/assignments/list.js +67 -0
- package/dist/commands/10dlc/brands/create.d.ts +25 -0
- package/dist/commands/10dlc/brands/create.js +89 -0
- package/dist/commands/10dlc/brands/get.d.ts +13 -0
- package/dist/commands/10dlc/brands/get.js +63 -0
- package/dist/commands/10dlc/brands/list.d.ts +10 -0
- package/dist/commands/10dlc/brands/list.js +63 -0
- package/dist/commands/10dlc/campaigns/assign.d.ts +14 -0
- package/dist/commands/10dlc/campaigns/assign.js +64 -0
- package/dist/commands/10dlc/campaigns/create.d.ts +24 -0
- package/dist/commands/10dlc/campaigns/create.js +118 -0
- package/dist/commands/10dlc/campaigns/get.d.ts +13 -0
- package/dist/commands/10dlc/campaigns/get.js +84 -0
- package/dist/commands/10dlc/campaigns/list.d.ts +10 -0
- package/dist/commands/10dlc/campaigns/list.js +70 -0
- package/dist/commands/10dlc/qualify.d.ts +14 -0
- package/dist/commands/10dlc/qualify.js +56 -0
- package/dist/commands/business-upgrade/cancel.d.ts +12 -0
- package/dist/commands/business-upgrade/cancel.js +47 -0
- package/dist/commands/business-upgrade/disposition.d.ts +13 -0
- package/dist/commands/business-upgrade/disposition.js +44 -0
- package/dist/commands/business-upgrade/preflight.d.ts +16 -0
- package/dist/commands/business-upgrade/preflight.js +82 -0
- package/dist/commands/business-upgrade/resubmit.d.ts +24 -0
- package/dist/commands/business-upgrade/resubmit.js +109 -0
- package/dist/commands/business-upgrade/start.d.ts +38 -0
- package/dist/commands/business-upgrade/start.js +142 -0
- package/dist/commands/business-upgrade/status.d.ts +11 -0
- package/dist/commands/business-upgrade/status.js +38 -0
- package/dist/commands/enterprise/verification/get.d.ts +13 -0
- package/dist/commands/enterprise/verification/get.js +78 -0
- package/dist/commands/enterprise/verification/resubmit.d.ts +41 -0
- package/dist/commands/enterprise/verification/resubmit.js +87 -0
- package/dist/commands/enterprise/verification/submit.d.ts +77 -0
- package/dist/commands/enterprise/verification/submit.js +212 -0
- package/dist/commands/keys/rotate.js +7 -12
- package/dist/commands/links/create.d.ts +24 -0
- package/dist/commands/links/create.js +71 -0
- package/dist/commands/links/disable.d.ts +21 -0
- package/dist/commands/links/disable.js +55 -0
- package/dist/commands/links/list.d.ts +19 -0
- package/dist/commands/links/list.js +85 -0
- package/dist/commands/numbers/buy.d.ts +31 -0
- package/dist/commands/numbers/buy.js +266 -0
- package/dist/commands/numbers/get.d.ts +20 -0
- package/dist/commands/numbers/get.js +52 -0
- package/dist/commands/numbers/list.d.ts +10 -0
- package/dist/commands/numbers/list.js +70 -0
- package/dist/commands/numbers/release.d.ts +23 -0
- package/dist/commands/numbers/release.js +67 -0
- package/dist/commands/numbers/search.d.ts +13 -0
- package/dist/commands/numbers/search.js +78 -0
- package/dist/commands/numbers/update.d.ts +25 -0
- package/dist/commands/numbers/update.js +70 -0
- package/dist/commands/sms/group.d.ts +25 -0
- package/dist/commands/sms/group.js +164 -0
- package/dist/commands/sms/upload-media.d.ts +1 -1
- package/dist/commands/sms/upload-media.js +4 -4
- package/dist/commands/templates/enhance.js +3 -3
- package/dist/commands/upgrade.d.ts +1 -16
- package/dist/commands/upgrade.js +131 -38
- package/dist/lib/auth.js +2 -94
- package/dist/lib/config.js +31 -2
- package/dist/lib/detect-install-path.d.ts +11 -7
- package/dist/lib/detect-install-path.js +25 -9
- package/dist/lib/keypress.d.ts +26 -0
- package/dist/lib/keypress.js +103 -0
- package/oclif.manifest.json +5005 -2698
- package/package.json +22 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { json, success, error, info, isJsonMode } from "../../lib/output.js";
|
|
5
|
+
export default class BusinessUpgradeDisposition extends AuthenticatedCommand {
|
|
6
|
+
static description = "Choose what happens to the old toll-free number after a successful business entity upgrade — either move it to another workspace you own, or release it back to the carrier pool";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> business-upgrade disposition --workspace ws_abc --disposition moved --target-workspace ws_xyz",
|
|
9
|
+
"<%= config.bin %> business-upgrade disposition --workspace ws_abc --disposition released",
|
|
10
|
+
];
|
|
11
|
+
static flags = {
|
|
12
|
+
...AuthenticatedCommand.baseFlags,
|
|
13
|
+
workspace: Flags.string({
|
|
14
|
+
required: true,
|
|
15
|
+
description: "Workspace whose upgrade was just approved",
|
|
16
|
+
}),
|
|
17
|
+
disposition: Flags.string({
|
|
18
|
+
required: true,
|
|
19
|
+
options: ["moved", "released"],
|
|
20
|
+
description: "What to do with the old toll-free number",
|
|
21
|
+
}),
|
|
22
|
+
"target-workspace": Flags.string({
|
|
23
|
+
description: "Required when disposition='moved' — workspace to attach old number to",
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
async run() {
|
|
27
|
+
const { flags } = await this.parse(BusinessUpgradeDisposition);
|
|
28
|
+
if (flags.disposition === "moved" && !flags["target-workspace"]) {
|
|
29
|
+
error("--target-workspace is required when --disposition=moved.");
|
|
30
|
+
this.exit(1);
|
|
31
|
+
}
|
|
32
|
+
const result = await apiClient.post(`/api/v1/workspaces/${encodeURIComponent(flags.workspace)}/upgrade/disposition`, {
|
|
33
|
+
disposition: flags.disposition,
|
|
34
|
+
targetOrgId: flags["target-workspace"],
|
|
35
|
+
});
|
|
36
|
+
if (isJsonMode()) {
|
|
37
|
+
json(result);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
success(result.message);
|
|
41
|
+
info(`Superseded verification: ${result.supersededVerificationId}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvYnVzaW5lc3MtdXBncmFkZS9kaXNwb3NpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdFLE1BQU0sQ0FBQyxPQUFPLE9BQU8sMEJBQTJCLFNBQVEsb0JBQW9CO0lBQzFFLE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLGtMQUFrTCxDQUFDO0lBRXJMLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsaUhBQWlIO1FBQ2pILDBGQUEwRjtLQUMzRixDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN0QixRQUFRLEVBQUUsSUFBSTtZQUNkLFdBQVcsRUFBRSwyQ0FBMkM7U0FDekQsQ0FBQztRQUNGLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQztZQUM5QixXQUFXLEVBQUUsMENBQTBDO1NBQ3hELENBQUM7UUFDRixrQkFBa0IsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQy9CLFdBQVcsRUFBRSx1RUFBdUU7U0FDckYsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUMvRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUNoRSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FNakMsc0JBQXNCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEVBQy9FO1lBQ0UsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUM7U0FDdkMsQ0FDRixDQUFDO1FBQ0YsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNiLE9BQU87UUFDVCxDQUFDO1FBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsNEJBQTRCLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7IGpzb24sIHN1Y2Nlc3MsIGVycm9yLCBpbmZvLCBpc0pzb25Nb2RlIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVzaW5lc3NVcGdyYWRlRGlzcG9zaXRpb24gZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJDaG9vc2Ugd2hhdCBoYXBwZW5zIHRvIHRoZSBvbGQgdG9sbC1mcmVlIG51bWJlciBhZnRlciBhIHN1Y2Nlc3NmdWwgYnVzaW5lc3MgZW50aXR5IHVwZ3JhZGUg4oCUIGVpdGhlciBtb3ZlIGl0IHRvIGFub3RoZXIgd29ya3NwYWNlIHlvdSBvd24sIG9yIHJlbGVhc2UgaXQgYmFjayB0byB0aGUgY2FycmllciBwb29sXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gYnVzaW5lc3MtdXBncmFkZSBkaXNwb3NpdGlvbiAtLXdvcmtzcGFjZSB3c19hYmMgLS1kaXNwb3NpdGlvbiBtb3ZlZCAtLXRhcmdldC13b3Jrc3BhY2Ugd3NfeHl6XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBidXNpbmVzcy11cGdyYWRlIGRpc3Bvc2l0aW9uIC0td29ya3NwYWNlIHdzX2FiYyAtLWRpc3Bvc2l0aW9uIHJlbGVhc2VkXCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICB3b3Jrc3BhY2U6IEZsYWdzLnN0cmluZyh7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIldvcmtzcGFjZSB3aG9zZSB1cGdyYWRlIHdhcyBqdXN0IGFwcHJvdmVkXCIsXG4gICAgfSksXG4gICAgZGlzcG9zaXRpb246IEZsYWdzLnN0cmluZyh7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIG9wdGlvbnM6IFtcIm1vdmVkXCIsIFwicmVsZWFzZWRcIl0sXG4gICAgICBkZXNjcmlwdGlvbjogXCJXaGF0IHRvIGRvIHdpdGggdGhlIG9sZCB0b2xsLWZyZWUgbnVtYmVyXCIsXG4gICAgfSksXG4gICAgXCJ0YXJnZXQtd29ya3NwYWNlXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXF1aXJlZCB3aGVuIGRpc3Bvc2l0aW9uPSdtb3ZlZCcg4oCUIHdvcmtzcGFjZSB0byBhdHRhY2ggb2xkIG51bWJlciB0b1wiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKEJ1c2luZXNzVXBncmFkZURpc3Bvc2l0aW9uKTtcbiAgICBpZiAoZmxhZ3MuZGlzcG9zaXRpb24gPT09IFwibW92ZWRcIiAmJiAhZmxhZ3NbXCJ0YXJnZXQtd29ya3NwYWNlXCJdKSB7XG4gICAgICBlcnJvcihcIi0tdGFyZ2V0LXdvcmtzcGFjZSBpcyByZXF1aXJlZCB3aGVuIC0tZGlzcG9zaXRpb249bW92ZWQuXCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcGlDbGllbnQucG9zdDx7XG4gICAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgICAgZGlzcG9zaXRpb246IHN0cmluZztcbiAgICAgIHN1cGVyc2VkZWRWZXJpZmljYXRpb25JZDogc3RyaW5nO1xuICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIH0+KFxuICAgICAgYC9hcGkvdjEvd29ya3NwYWNlcy8ke2VuY29kZVVSSUNvbXBvbmVudChmbGFncy53b3Jrc3BhY2UpfS91cGdyYWRlL2Rpc3Bvc2l0aW9uYCxcbiAgICAgIHtcbiAgICAgICAgZGlzcG9zaXRpb246IGZsYWdzLmRpc3Bvc2l0aW9uLFxuICAgICAgICB0YXJnZXRPcmdJZDogZmxhZ3NbXCJ0YXJnZXQtd29ya3NwYWNlXCJdLFxuICAgICAgfSxcbiAgICApO1xuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzdWx0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3VjY2VzcyhyZXN1bHQubWVzc2FnZSk7XG4gICAgaW5mbyhgU3VwZXJzZWRlZCB2ZXJpZmljYXRpb246ICR7cmVzdWx0LnN1cGVyc2VkZWRWZXJpZmljYXRpb25JZH1gKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class BusinessUpgradePreflight extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
"business-name": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
brn: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
"brn-type": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
9
|
+
"brn-country": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
"entity-type": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
candidate: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
13
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
4
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
5
|
+
import { json, info, error, isJsonMode, colors } from "../../lib/output.js";
|
|
6
|
+
export default class BusinessUpgradePreflight extends AuthenticatedCommand {
|
|
7
|
+
static description = "Dry-run a business entity upgrade and surface issues + auto-fix suggestions before submitting";
|
|
8
|
+
static examples = [
|
|
9
|
+
'<%= config.bin %> business-upgrade preflight --business-name "Acme LLC" --brn "12-3456789" --brn-type EIN --entity-type PRIVATE_PROFIT',
|
|
10
|
+
"<%= config.bin %> business-upgrade preflight --candidate ./candidate.json --json",
|
|
11
|
+
];
|
|
12
|
+
static flags = {
|
|
13
|
+
...AuthenticatedCommand.baseFlags,
|
|
14
|
+
"business-name": Flags.string({
|
|
15
|
+
description: "Legal business name of the new entity",
|
|
16
|
+
}),
|
|
17
|
+
brn: Flags.string({
|
|
18
|
+
description: "Business registration number (EIN/SSN/etc.)",
|
|
19
|
+
}),
|
|
20
|
+
"brn-type": Flags.string({
|
|
21
|
+
description: "Registration type (EIN, SSN, DUNS, CRA, VAT, LEI, OTHER)",
|
|
22
|
+
}),
|
|
23
|
+
"brn-country": Flags.string({
|
|
24
|
+
description: "Registration issuing country (ISO 3166-1 alpha-2)",
|
|
25
|
+
default: "US",
|
|
26
|
+
}),
|
|
27
|
+
"entity-type": Flags.string({
|
|
28
|
+
description: "Entity type (SOLE_PROPRIETOR, PRIVATE_PROFIT, PUBLIC_PROFIT, NON_PROFIT, GOVERNMENT)",
|
|
29
|
+
default: "PRIVATE_PROFIT",
|
|
30
|
+
}),
|
|
31
|
+
candidate: Flags.string({
|
|
32
|
+
description: "Path to a JSON file with the full candidate payload",
|
|
33
|
+
}),
|
|
34
|
+
};
|
|
35
|
+
async run() {
|
|
36
|
+
const { flags } = await this.parse(BusinessUpgradePreflight);
|
|
37
|
+
let candidate = {};
|
|
38
|
+
if (flags.candidate) {
|
|
39
|
+
candidate = JSON.parse(readFileSync(flags.candidate, "utf8"));
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
candidate = {
|
|
43
|
+
businessName: flags["business-name"],
|
|
44
|
+
brn: flags.brn,
|
|
45
|
+
brnType: flags["brn-type"],
|
|
46
|
+
brnCountry: flags["brn-country"],
|
|
47
|
+
entityType: flags["entity-type"],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (!candidate.businessName || !candidate.brn) {
|
|
51
|
+
error("Provide --business-name and --brn (or pass --candidate <file>).");
|
|
52
|
+
this.exit(1);
|
|
53
|
+
}
|
|
54
|
+
const report = await apiClient.post("/api/v1/verification/preflight", candidate);
|
|
55
|
+
if (isJsonMode()) {
|
|
56
|
+
json(report);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const verdictColor = report.verdict === "blocked"
|
|
60
|
+
? colors.error
|
|
61
|
+
: report.verdict === "warnings"
|
|
62
|
+
? colors.warning
|
|
63
|
+
: colors.success;
|
|
64
|
+
info(`Verdict: ${verdictColor(report.verdict)} (${report.country})`);
|
|
65
|
+
if (report.issues.length === 0) {
|
|
66
|
+
info(colors.success("No issues. Ready to submit."));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
info("");
|
|
70
|
+
for (const issue of report.issues) {
|
|
71
|
+
const sevColor = issue.severity === "blocker"
|
|
72
|
+
? colors.error
|
|
73
|
+
: issue.severity === "warning"
|
|
74
|
+
? colors.warning
|
|
75
|
+
: colors.dim;
|
|
76
|
+
info(`${sevColor(issue.severity.toUpperCase())} ${issue.field} — ${issue.message}`);
|
|
77
|
+
if (issue.suggestion)
|
|
78
|
+
info(` ${colors.dim("→ " + issue.suggestion)}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmxpZ2h0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2J1c2luZXNzLXVwZ3JhZGUvcHJlZmxpZ2h0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQWlCNUUsTUFBTSxDQUFDLE9BQU8sT0FBTyx3QkFBeUIsU0FBUSxvQkFBb0I7SUFDeEUsTUFBTSxDQUFDLFdBQVcsR0FDaEIsK0ZBQStGLENBQUM7SUFFbEcsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQix3SUFBd0k7UUFDeEksa0ZBQWtGO0tBQ25GLENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO1FBQ2pDLGVBQWUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzVCLFdBQVcsRUFBRSx1Q0FBdUM7U0FDckQsQ0FBQztRQUNGLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2hCLFdBQVcsRUFBRSw2Q0FBNkM7U0FDM0QsQ0FBQztRQUNGLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLFdBQVcsRUFBRSwwREFBMEQ7U0FDeEUsQ0FBQztRQUNGLGFBQWEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzFCLFdBQVcsRUFBRSxtREFBbUQ7WUFDaEUsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO1FBQ0YsYUFBYSxF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QUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50IH0gZnJvbSBcIi4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBqc29uLCBpbmZvLCBlcnJvciwgaXNKc29uTW9kZSwgY29sb3JzIH0gZnJvbSBcIi4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIFByZWZsaWdodElzc3VlIHtcbiAgc2V2ZXJpdHk6IFwiYmxvY2tlclwiIHwgXCJ3YXJuaW5nXCIgfCBcImluZm9cIjtcbiAgZmllbGQ6IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHN1Z2dlc3Rpb24/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQcmVmbGlnaHRSZXBvcnQge1xuICB2ZXJkaWN0OiBcInJlYWR5XCIgfCBcIndhcm5pbmdzXCIgfCBcImJsb2NrZWRcIjtcbiAgY291bnRyeTogc3RyaW5nO1xuICBpc3N1ZXM6IFByZWZsaWdodElzc3VlW107XG4gIHByb3Bvc2VkRml4ZXM6IEFycmF5PHsgZmllbGQ6IHN0cmluZzsgcHJvcG9zZWQ6IHVua25vd247IHJlYXNvbjogc3RyaW5nIH0+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdXNpbmVzc1VwZ3JhZGVQcmVmbGlnaHQgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJEcnktcnVuIGEgYnVzaW5lc3MgZW50aXR5IHVwZ3JhZGUgYW5kIHN1cmZhY2UgaXNzdWVzICsgYXV0by1maXggc3VnZ2VzdGlvbnMgYmVmb3JlIHN1Ym1pdHRpbmdcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IGJ1c2luZXNzLXVwZ3JhZGUgcHJlZmxpZ2h0IC0tYnVzaW5lc3MtbmFtZSBcIkFjbWUgTExDXCIgLS1icm4gXCIxMi0zNDU2Nzg5XCIgLS1icm4tdHlwZSBFSU4gLS1lbnRpdHktdHlwZSBQUklWQVRFX1BST0ZJVCcsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBidXNpbmVzcy11cGdyYWRlIHByZWZsaWdodCAtLWNhbmRpZGF0ZSAuL2NhbmRpZGF0ZS5qc29uIC0tanNvblwiLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgXCJidXNpbmVzcy1uYW1lXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJMZWdhbCBidXNpbmVzcyBuYW1lIG9mIHRoZSBuZXcgZW50aXR5XCIsXG4gICAgfSksXG4gICAgYnJuOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQnVzaW5lc3MgcmVnaXN0cmF0aW9uIG51bWJlciAoRUlOL1NTTi9ldGMuKVwiLFxuICAgIH0pLFxuICAgIFwiYnJuLXR5cGVcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJlZ2lzdHJhdGlvbiB0eXBlIChFSU4sIFNTTiwgRFVOUywgQ1JBLCBWQVQsIExFSSwgT1RIRVIpXCIsXG4gICAgfSksXG4gICAgXCJicm4tY291bnRyeVwiOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiUmVnaXN0cmF0aW9uIGlzc3VpbmcgY291bnRyeSAoSVNPIDMxNjYtMSBhbHBoYS0yKVwiLFxuICAgICAgZGVmYXVsdDogXCJVU1wiLFxuICAgIH0pLFxuICAgIFwiZW50aXR5LXR5cGVcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkVudGl0eSB0eXBlIChTT0xFX1BST1BSSUVUT1IsIFBSSVZBVEVfUFJPRklULCBQVUJMSUNfUFJPRklULCBOT05fUFJPRklULCBHT1ZFUk5NRU5UKVwiLFxuICAgICAgZGVmYXVsdDogXCJQUklWQVRFX1BST0ZJVFwiLFxuICAgIH0pLFxuICAgIGNhbmRpZGF0ZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlBhdGggdG8gYSBKU09OIGZpbGUgd2l0aCB0aGUgZnVsbCBjYW5kaWRhdGUgcGF5bG9hZFwiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKEJ1c2luZXNzVXBncmFkZVByZWZsaWdodCk7XG5cbiAgICBsZXQgY2FuZGlkYXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgIGlmIChmbGFncy5jYW5kaWRhdGUpIHtcbiAgICAgIGNhbmRpZGF0ZSA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKGZsYWdzLmNhbmRpZGF0ZSwgXCJ1dGY4XCIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FuZGlkYXRlID0ge1xuICAgICAgICBidXNpbmVzc05hbWU6IGZsYWdzW1wiYnVzaW5lc3MtbmFtZVwiXSxcbiAgICAgICAgYnJuOiBmbGFncy5icm4sXG4gICAgICAgIGJyblR5cGU6IGZsYWdzW1wiYnJuLXR5cGVcIl0sXG4gICAgICAgIGJybkNvdW50cnk6IGZsYWdzW1wiYnJuLWNvdW50cnlcIl0sXG4gICAgICAgIGVudGl0eVR5cGU6IGZsYWdzW1wiZW50aXR5LXR5cGVcIl0sXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoIWNhbmRpZGF0ZS5idXNpbmVzc05hbWUgfHwgIWNhbmRpZGF0ZS5icm4pIHtcbiAgICAgIGVycm9yKFwiUHJvdmlkZSAtLWJ1c2luZXNzLW5hbWUgYW5kIC0tYnJuIChvciBwYXNzIC0tY2FuZGlkYXRlIDxmaWxlPikuXCIpO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcG9ydCA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PFByZWZsaWdodFJlcG9ydD4oXG4gICAgICBcIi9hcGkvdjEvdmVyaWZpY2F0aW9uL3ByZWZsaWdodFwiLFxuICAgICAgY2FuZGlkYXRlLFxuICAgICk7XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKHJlcG9ydCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmVyZGljdENvbG9yID1cbiAgICAgIHJlcG9ydC52ZXJkaWN0ID09PSBcImJsb2NrZWRcIlxuICAgICAgICA/IGNvbG9ycy5lcnJvclxuICAgICAgICA6IHJlcG9ydC52ZXJkaWN0ID09PSBcIndhcm5pbmdzXCJcbiAgICAgICAgICA/IGNvbG9ycy53YXJuaW5nXG4gICAgICAgICAgOiBjb2xvcnMuc3VjY2VzcztcbiAgICBpbmZvKGBWZXJkaWN0OiAke3ZlcmRpY3RDb2xvcihyZXBvcnQudmVyZGljdCl9ICgke3JlcG9ydC5jb3VudHJ5fSlgKTtcbiAgICBpZiAocmVwb3J0Lmlzc3Vlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGluZm8oY29sb3JzLnN1Y2Nlc3MoXCJObyBpc3N1ZXMuIFJlYWR5IHRvIHN1Ym1pdC5cIikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbmZvKFwiXCIpO1xuICAgIGZvciAoY29uc3QgaXNzdWUgb2YgcmVwb3J0Lmlzc3Vlcykge1xuICAgICAgY29uc3Qgc2V2Q29sb3IgPVxuICAgICAgICBpc3N1ZS5zZXZlcml0eSA9PT0gXCJibG9ja2VyXCJcbiAgICAgICAgICA/IGNvbG9ycy5lcnJvclxuICAgICAgICAgIDogaXNzdWUuc2V2ZXJpdHkgPT09IFwid2FybmluZ1wiXG4gICAgICAgICAgICA/IGNvbG9ycy53YXJuaW5nXG4gICAgICAgICAgICA6IGNvbG9ycy5kaW07XG4gICAgICBpbmZvKFxuICAgICAgICBgJHtzZXZDb2xvcihpc3N1ZS5zZXZlcml0eS50b1VwcGVyQ2FzZSgpKX0gJHtpc3N1ZS5maWVsZH0g4oCUICR7aXNzdWUubWVzc2FnZX1gLFxuICAgICAgKTtcbiAgICAgIGlmIChpc3N1ZS5zdWdnZXN0aW9uKSBpbmZvKGAgICR7Y29sb3JzLmRpbShcIuKGkiBcIiArIGlzc3VlLnN1Z2dlc3Rpb24pfWApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class BusinessUpgradeResubmit extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
workspace: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
"business-name": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
brn: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
9
|
+
"brn-type": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
"brn-country": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
"entity-type": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
"monthly-volume": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
13
|
+
"use-case": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
14
|
+
"use-case-summary": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
15
|
+
"sample-messages": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
16
|
+
"opt-in-workflow": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
17
|
+
"privacy-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
18
|
+
"terms-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
19
|
+
"ein-doc": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
20
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
21
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
22
|
+
};
|
|
23
|
+
run(): Promise<void>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import * as fs from "node:fs";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
5
|
+
import { getAuthToken, getConfigValue, getEffectiveValue, } from "../../lib/config.js";
|
|
6
|
+
import { ApiError, AuthenticationError } from "../../lib/api-client.js";
|
|
7
|
+
import { json, success, info, isJsonMode } from "../../lib/output.js";
|
|
8
|
+
const TEXT_FIELDS = {
|
|
9
|
+
"business-name": "businessName",
|
|
10
|
+
brn: "brn",
|
|
11
|
+
"brn-type": "brnType",
|
|
12
|
+
"brn-country": "brnCountry",
|
|
13
|
+
"entity-type": "entityType",
|
|
14
|
+
"monthly-volume": "monthlyVolume",
|
|
15
|
+
"use-case": "useCase",
|
|
16
|
+
"use-case-summary": "useCaseSummary",
|
|
17
|
+
"sample-messages": "sampleMessages",
|
|
18
|
+
"opt-in-workflow": "optInWorkflow",
|
|
19
|
+
"privacy-url": "privacyUrl",
|
|
20
|
+
"terms-url": "termsUrl",
|
|
21
|
+
};
|
|
22
|
+
export default class BusinessUpgradeResubmit extends AuthenticatedCommand {
|
|
23
|
+
static description = "Resubmit a previously rejected (or waiting-for-customer) business entity upgrade with corrected fields and optionally a new EIN document";
|
|
24
|
+
static examples = [
|
|
25
|
+
'<%= config.bin %> business-upgrade resubmit --workspace ws_abc --business-name "Acme Holdings LLC" --ein-doc ./CP-575-v2.pdf',
|
|
26
|
+
];
|
|
27
|
+
static flags = {
|
|
28
|
+
...AuthenticatedCommand.baseFlags,
|
|
29
|
+
workspace: Flags.string({ required: true }),
|
|
30
|
+
"business-name": Flags.string(),
|
|
31
|
+
brn: Flags.string(),
|
|
32
|
+
"brn-type": Flags.string(),
|
|
33
|
+
"brn-country": Flags.string(),
|
|
34
|
+
"entity-type": Flags.string(),
|
|
35
|
+
"monthly-volume": Flags.string(),
|
|
36
|
+
"use-case": Flags.string(),
|
|
37
|
+
"use-case-summary": Flags.string(),
|
|
38
|
+
"sample-messages": Flags.string(),
|
|
39
|
+
"opt-in-workflow": Flags.string(),
|
|
40
|
+
"privacy-url": Flags.string(),
|
|
41
|
+
"terms-url": Flags.string(),
|
|
42
|
+
"ein-doc": Flags.string(),
|
|
43
|
+
};
|
|
44
|
+
async run() {
|
|
45
|
+
const { flags } = await this.parse(BusinessUpgradeResubmit);
|
|
46
|
+
const boundary = `----FormBoundary${Date.now()}${Math.random()
|
|
47
|
+
.toString(36)
|
|
48
|
+
.substring(2)}`;
|
|
49
|
+
const parts = [];
|
|
50
|
+
const appendField = (name, value) => {
|
|
51
|
+
parts.push(Buffer.from(`--${boundary}\r\n` +
|
|
52
|
+
`Content-Disposition: form-data; name="${name}"\r\n\r\n` +
|
|
53
|
+
value +
|
|
54
|
+
"\r\n"));
|
|
55
|
+
};
|
|
56
|
+
for (const [flagKey, wireKey] of Object.entries(TEXT_FIELDS)) {
|
|
57
|
+
const v = flags[flagKey];
|
|
58
|
+
if (typeof v === "string" && v.length > 0)
|
|
59
|
+
appendField(wireKey, v);
|
|
60
|
+
}
|
|
61
|
+
if (flags["ein-doc"]) {
|
|
62
|
+
const filePath = flags["ein-doc"];
|
|
63
|
+
if (!fs.existsSync(filePath)) {
|
|
64
|
+
this.error(`File not found: ${filePath}`);
|
|
65
|
+
}
|
|
66
|
+
const filename = path.basename(filePath);
|
|
67
|
+
const fileBuffer = fs.readFileSync(filePath);
|
|
68
|
+
parts.push(Buffer.from(`--${boundary}\r\n` +
|
|
69
|
+
`Content-Disposition: form-data; name="einDoc"; filename="${filename}"\r\n` +
|
|
70
|
+
`Content-Type: application/pdf\r\n\r\n`));
|
|
71
|
+
parts.push(fileBuffer);
|
|
72
|
+
parts.push(Buffer.from("\r\n"));
|
|
73
|
+
}
|
|
74
|
+
parts.push(Buffer.from(`--${boundary}--\r\n`));
|
|
75
|
+
const body = Buffer.concat(parts);
|
|
76
|
+
const token = getAuthToken();
|
|
77
|
+
if (!token)
|
|
78
|
+
throw new AuthenticationError();
|
|
79
|
+
const baseUrl = getConfigValue("baseUrl") || "https://sendly.live";
|
|
80
|
+
const timeout = getEffectiveValue("timeout");
|
|
81
|
+
const url = `${baseUrl}/api/v1/workspaces/${encodeURIComponent(flags.workspace)}/upgrade/resubmit`;
|
|
82
|
+
const controller = new AbortController();
|
|
83
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
84
|
+
const resp = await fetch(url, {
|
|
85
|
+
method: "POST",
|
|
86
|
+
headers: {
|
|
87
|
+
"Content-Type": `multipart/form-data; boundary=${boundary}`,
|
|
88
|
+
Accept: "application/json",
|
|
89
|
+
Authorization: `Bearer ${token}`,
|
|
90
|
+
},
|
|
91
|
+
body,
|
|
92
|
+
signal: controller.signal,
|
|
93
|
+
});
|
|
94
|
+
clearTimeout(timeoutId);
|
|
95
|
+
const data = (await resp
|
|
96
|
+
.json()
|
|
97
|
+
.catch(() => ({})));
|
|
98
|
+
if (!resp.ok) {
|
|
99
|
+
throw new ApiError(data.error || "resubmit_error", data.message || `HTTP ${resp.status}`, resp.status);
|
|
100
|
+
}
|
|
101
|
+
if (isJsonMode()) {
|
|
102
|
+
json(data);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
success("Resubmitted to carrier.");
|
|
106
|
+
info(data.message);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWJtaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvYnVzaW5lc3MtdXBncmFkZS9yZXN1Ym1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLGlCQUFpQixHQUNsQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsTUFBTSxXQUFXLEdBQTJCO0lBQzFDLGVBQWUsRUFBRSxjQUFjO0lBQy9CLEdBQUcsRUFBRSxLQUFLO0lBQ1YsVUFBVSxFQUFFLFNBQVM7SUFDckIsYUFBYSxFQUFFLFlBQVk7SUFDM0IsYUFBYSxFQUFFLFlBQVk7SUFDM0IsZ0JBQWdCLEVBQUUsZUFBZTtJQUNqQyxVQUFVLEVBQUUsU0FBUztJQUNyQixrQkFBa0IsRUFBRSxnQkFBZ0I7SUFDcEMsaUJBQWlCLEVBQUUsZ0JBQWdCO0lBQ25DLGlCQUFpQixFQUFFLGVBQWU7SUFDbEMsYUFBYSxFQUFFLFlBQVk7SUFDM0IsV0FBVyxFQUFFLFVBQVU7Q0FDeEIsQ0FBQztBQVNGLE1BQU0sQ0FBQyxPQUFPLE9BQU8sdUJBQXdCLFNBQVEsb0JBQW9CO0lBQ3ZFLE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLDBJQUEwSSxDQUFDO0lBRTdJLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsOEhBQThIO0tBQy9ILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO1FBQ2pDLFNBQVMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzNDLGVBQWUsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQy9CLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ25CLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQzFCLGFBQWEsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQzdCLGFBQWEsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQzdCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUU7UUFDaEMsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUU7UUFDMUIsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRTtRQUNsQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ2pDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUU7UUFDakMsYUFBYSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUU7UUFDN0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUU7UUFDM0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUU7S0FDMUIsQ0FBQztJQUVGLEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRTVELE1BQU0sUUFBUSxHQUFHLG1CQUFtQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRTthQUMzRCxRQUFRLENBQUMsRUFBRSxDQUFDO2FBQ1osU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbEIsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ2xELEtBQUssQ0FBQyxJQUFJLENBQ1IsTUFBTSxDQUFDLElBQUksQ0FDVCxLQUFLLFFBQVEsTUFBTTtnQkFDakIseUNBQXlDLElBQUksV0FBVztnQkFDeEQsS0FBSztnQkFDTCxNQUFNLENBQ1QsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBNkIsQ0FBQyxDQUFDO1lBQy9DLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsS0FBSyxDQUFDLElBQUksQ0FDUixNQUFNLENBQUMsSUFBSSxDQUNULEtBQUssUUFBUSxNQUFNO2dCQUNqQiw0REFBNEQsUUFBUSxPQUFPO2dCQUMzRSx1Q0FBdUMsQ0FDMUMsQ0FDRixDQUFDO1lBQ0YsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUs7WUFBRSxNQUFNLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUU1QyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUkscUJBQXFCLENBQUM7UUFDbkUsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsTUFBTSxHQUFHLEdBQUcsR0FBRyxPQUFPLHNCQUFzQixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO1FBRW5HLE1BQU0sVUFBVSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDekMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRSxNQUFNLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDNUIsTUFBTSxFQUFFLE1BQU07WUFDZCxPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLGlDQUFpQyxRQUFRLEVBQUU7Z0JBQzNELE1BQU0sRUFBRSxrQkFBa0I7Z0JBQzFCLGFBQWEsRUFBRSxVQUFVLEtBQUssRUFBRTthQUNqQztZQUNELElBQUk7WUFDSixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhCLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJO2FBQ3JCLElBQUksRUFBRTthQUNOLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQTRCLENBQUM7UUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxRQUFRLENBQ2hCLElBQUksQ0FBQyxLQUFLLElBQUksZ0JBQWdCLEVBQzlCLElBQUksQ0FBQyxPQUFPLElBQUksUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQ3JDLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ1gsT0FBTztRQUNULENBQUM7UUFDRCxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHtcbiAgZ2V0QXV0aFRva2VuLFxuICBnZXRDb25maWdWYWx1ZSxcbiAgZ2V0RWZmZWN0aXZlVmFsdWUsXG59IGZyb20gXCIuLi8uLi9saWIvY29uZmlnLmpzXCI7XG5pbXBvcnQgeyBBcGlFcnJvciwgQXV0aGVudGljYXRpb25FcnJvciB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsganNvbiwgc3VjY2VzcywgaW5mbywgaXNKc29uTW9kZSB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmNvbnN0IFRFWFRfRklFTERTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcImJ1c2luZXNzLW5hbWVcIjogXCJidXNpbmVzc05hbWVcIixcbiAgYnJuOiBcImJyblwiLFxuICBcImJybi10eXBlXCI6IFwiYnJuVHlwZVwiLFxuICBcImJybi1jb3VudHJ5XCI6IFwiYnJuQ291bnRyeVwiLFxuICBcImVudGl0eS10eXBlXCI6IFwiZW50aXR5VHlwZVwiLFxuICBcIm1vbnRobHktdm9sdW1lXCI6IFwibW9udGhseVZvbHVtZVwiLFxuICBcInVzZS1jYXNlXCI6IFwidXNlQ2FzZVwiLFxuICBcInVzZS1jYXNlLXN1bW1hcnlcIjogXCJ1c2VDYXNlU3VtbWFyeVwiLFxuICBcInNhbXBsZS1tZXNzYWdlc1wiOiBcInNhbXBsZU1lc3NhZ2VzXCIsXG4gIFwib3B0LWluLXdvcmtmbG93XCI6IFwib3B0SW5Xb3JrZmxvd1wiLFxuICBcInByaXZhY3ktdXJsXCI6IFwicHJpdmFjeVVybFwiLFxuICBcInRlcm1zLXVybFwiOiBcInRlcm1zVXJsXCIsXG59O1xuXG5pbnRlcmZhY2UgUmVzdWJtaXRVcGdyYWRlUmVzcG9uc2Uge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBwZW5kaW5nVmVyaWZpY2F0aW9uSWQ6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBlcnJvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVzaW5lc3NVcGdyYWRlUmVzdWJtaXQgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJSZXN1Ym1pdCBhIHByZXZpb3VzbHkgcmVqZWN0ZWQgKG9yIHdhaXRpbmctZm9yLWN1c3RvbWVyKSBidXNpbmVzcyBlbnRpdHkgdXBncmFkZSB3aXRoIGNvcnJlY3RlZCBmaWVsZHMgYW5kIG9wdGlvbmFsbHkgYSBuZXcgRUlOIGRvY3VtZW50XCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBidXNpbmVzcy11cGdyYWRlIHJlc3VibWl0IC0td29ya3NwYWNlIHdzX2FiYyAtLWJ1c2luZXNzLW5hbWUgXCJBY21lIEhvbGRpbmdzIExMQ1wiIC0tZWluLWRvYyAuL0NQLTU3NS12Mi5wZGYnLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5BdXRoZW50aWNhdGVkQ29tbWFuZC5iYXNlRmxhZ3MsXG4gICAgd29ya3NwYWNlOiBGbGFncy5zdHJpbmcoeyByZXF1aXJlZDogdHJ1ZSB9KSxcbiAgICBcImJ1c2luZXNzLW5hbWVcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgYnJuOiBGbGFncy5zdHJpbmcoKSxcbiAgICBcImJybi10eXBlXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwiYnJuLWNvdW50cnlcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJlbnRpdHktdHlwZVwiOiBGbGFncy5zdHJpbmcoKSxcbiAgICBcIm1vbnRobHktdm9sdW1lXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwidXNlLWNhc2VcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJ1c2UtY2FzZS1zdW1tYXJ5XCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwic2FtcGxlLW1lc3NhZ2VzXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwib3B0LWluLXdvcmtmbG93XCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwicHJpdmFjeS11cmxcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJ0ZXJtcy11cmxcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJlaW4tZG9jXCI6IEZsYWdzLnN0cmluZygpLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKEJ1c2luZXNzVXBncmFkZVJlc3VibWl0KTtcblxuICAgIGNvbnN0IGJvdW5kYXJ5ID0gYC0tLS1Gb3JtQm91bmRhcnkke0RhdGUubm93KCl9JHtNYXRoLnJhbmRvbSgpXG4gICAgICAudG9TdHJpbmcoMzYpXG4gICAgICAuc3Vic3RyaW5nKDIpfWA7XG4gICAgY29uc3QgcGFydHM6IEJ1ZmZlcltdID0gW107XG4gICAgY29uc3QgYXBwZW5kRmllbGQgPSAobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICBCdWZmZXIuZnJvbShcbiAgICAgICAgICBgLS0ke2JvdW5kYXJ5fVxcclxcbmAgK1xuICAgICAgICAgICAgYENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cIiR7bmFtZX1cIlxcclxcblxcclxcbmAgK1xuICAgICAgICAgICAgdmFsdWUgK1xuICAgICAgICAgICAgXCJcXHJcXG5cIixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgW2ZsYWdLZXksIHdpcmVLZXldIG9mIE9iamVjdC5lbnRyaWVzKFRFWFRfRklFTERTKSkge1xuICAgICAgY29uc3QgdiA9IGZsYWdzW2ZsYWdLZXkgYXMga2V5b2YgdHlwZW9mIGZsYWdzXTtcbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiAmJiB2Lmxlbmd0aCA+IDApIGFwcGVuZEZpZWxkKHdpcmVLZXksIHYpO1xuICAgIH1cblxuICAgIGlmIChmbGFnc1tcImVpbi1kb2NcIl0pIHtcbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gZmxhZ3NbXCJlaW4tZG9jXCJdO1xuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgICAgICB0aGlzLmVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtmaWxlUGF0aH1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlUGF0aCk7XG4gICAgICBjb25zdCBmaWxlQnVmZmVyID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoKTtcbiAgICAgIHBhcnRzLnB1c2goXG4gICAgICAgIEJ1ZmZlci5mcm9tKFxuICAgICAgICAgIGAtLSR7Ym91bmRhcnl9XFxyXFxuYCArXG4gICAgICAgICAgICBgQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVwiZWluRG9jXCI7IGZpbGVuYW1lPVwiJHtmaWxlbmFtZX1cIlxcclxcbmAgK1xuICAgICAgICAgICAgYENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vcGRmXFxyXFxuXFxyXFxuYCxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICBwYXJ0cy5wdXNoKGZpbGVCdWZmZXIpO1xuICAgICAgcGFydHMucHVzaChCdWZmZXIuZnJvbShcIlxcclxcblwiKSk7XG4gICAgfVxuICAgIHBhcnRzLnB1c2goQnVmZmVyLmZyb20oYC0tJHtib3VuZGFyeX0tLVxcclxcbmApKTtcblxuICAgIGNvbnN0IGJvZHkgPSBCdWZmZXIuY29uY2F0KHBhcnRzKTtcbiAgICBjb25zdCB0b2tlbiA9IGdldEF1dGhUb2tlbigpO1xuICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBBdXRoZW50aWNhdGlvbkVycm9yKCk7XG5cbiAgICBjb25zdCBiYXNlVXJsID0gZ2V0Q29uZmlnVmFsdWUoXCJiYXNlVXJsXCIpIHx8IFwiaHR0cHM6Ly9zZW5kbHkubGl2ZVwiO1xuICAgIGNvbnN0IHRpbWVvdXQgPSBnZXRFZmZlY3RpdmVWYWx1ZShcInRpbWVvdXRcIik7XG4gICAgY29uc3QgdXJsID0gYCR7YmFzZVVybH0vYXBpL3YxL3dvcmtzcGFjZXMvJHtlbmNvZGVVUklDb21wb25lbnQoZmxhZ3Mud29ya3NwYWNlKX0vdXBncmFkZS9yZXN1Ym1pdGA7XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLCB0aW1lb3V0KTtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBgbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9JHtib3VuZGFyeX1gLFxuICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCxcbiAgICAgIH0sXG4gICAgICBib2R5LFxuICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcblxuICAgIGNvbnN0IGRhdGEgPSAoYXdhaXQgcmVzcFxuICAgICAgLmpzb24oKVxuICAgICAgLmNhdGNoKCgpID0+ICh7fSkpKSBhcyBSZXN1Ym1pdFVwZ3JhZGVSZXNwb25zZTtcbiAgICBpZiAoIXJlc3Aub2spIHtcbiAgICAgIHRocm93IG5ldyBBcGlFcnJvcihcbiAgICAgICAgZGF0YS5lcnJvciB8fCBcInJlc3VibWl0X2Vycm9yXCIsXG4gICAgICAgIGRhdGEubWVzc2FnZSB8fCBgSFRUUCAke3Jlc3Auc3RhdHVzfWAsXG4gICAgICAgIHJlc3Auc3RhdHVzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaXNKc29uTW9kZSgpKSB7XG4gICAgICBqc29uKGRhdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdWNjZXNzKFwiUmVzdWJtaXR0ZWQgdG8gY2Fycmllci5cIik7XG4gICAgaW5mbyhkYXRhLm1lc3NhZ2UpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class BusinessUpgradeStart extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
workspace: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
"business-name": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
brn: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
9
|
+
"brn-type": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
"brn-country": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
"entity-type": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
"doing-business-as": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
13
|
+
website: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
14
|
+
address1: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
15
|
+
address2: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
16
|
+
city: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
17
|
+
state: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
18
|
+
zip: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
19
|
+
"address-country": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
20
|
+
"contact-first-name": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
21
|
+
"contact-last-name": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
22
|
+
"contact-email": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
23
|
+
"contact-phone": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
24
|
+
"monthly-volume": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
25
|
+
"use-case": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
26
|
+
"use-case-summary": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
27
|
+
"sample-messages": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
28
|
+
"opt-in-workflow": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
29
|
+
"privacy-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
30
|
+
"terms-url": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
31
|
+
"additional-information": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
32
|
+
"age-gated-content": import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
33
|
+
"ein-doc": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
34
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
35
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
36
|
+
};
|
|
37
|
+
run(): Promise<void>;
|
|
38
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import * as fs from "node:fs";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
5
|
+
import { getAuthToken, getConfigValue, getEffectiveValue, } from "../../lib/config.js";
|
|
6
|
+
import { ApiError, AuthenticationError } from "../../lib/api-client.js";
|
|
7
|
+
import { json, info, success, isJsonMode } from "../../lib/output.js";
|
|
8
|
+
const TEXT_FIELDS = {
|
|
9
|
+
"business-name": "businessName",
|
|
10
|
+
brn: "brn",
|
|
11
|
+
"brn-type": "brnType",
|
|
12
|
+
"brn-country": "brnCountry",
|
|
13
|
+
"entity-type": "entityType",
|
|
14
|
+
"doing-business-as": "doingBusinessAs",
|
|
15
|
+
website: "website",
|
|
16
|
+
address1: "address1",
|
|
17
|
+
address2: "address2",
|
|
18
|
+
city: "city",
|
|
19
|
+
state: "state",
|
|
20
|
+
zip: "zip",
|
|
21
|
+
"address-country": "addressCountry",
|
|
22
|
+
"contact-first-name": "contactFirstName",
|
|
23
|
+
"contact-last-name": "contactLastName",
|
|
24
|
+
"contact-email": "contactEmail",
|
|
25
|
+
"contact-phone": "contactPhone",
|
|
26
|
+
"monthly-volume": "monthlyVolume",
|
|
27
|
+
"use-case": "useCase",
|
|
28
|
+
"use-case-summary": "useCaseSummary",
|
|
29
|
+
"sample-messages": "sampleMessages",
|
|
30
|
+
"opt-in-workflow": "optInWorkflow",
|
|
31
|
+
"privacy-url": "privacyUrl",
|
|
32
|
+
"terms-url": "termsUrl",
|
|
33
|
+
"additional-information": "additionalInformation",
|
|
34
|
+
};
|
|
35
|
+
export default class BusinessUpgradeStart extends AuthenticatedCommand {
|
|
36
|
+
static description = "Start a business entity upgrade — auto-provisions a new toll-free number under the new entity and submits to the carrier for review";
|
|
37
|
+
static examples = [
|
|
38
|
+
'<%= config.bin %> business-upgrade start --workspace ws_abc --business-name "Acme Holdings LLC" --brn "12-3456789" --brn-type EIN --entity-type PRIVATE_PROFIT --ein-doc ./CP-575.pdf',
|
|
39
|
+
];
|
|
40
|
+
static flags = {
|
|
41
|
+
...AuthenticatedCommand.baseFlags,
|
|
42
|
+
workspace: Flags.string({
|
|
43
|
+
description: "Workspace ID being upgraded",
|
|
44
|
+
required: true,
|
|
45
|
+
}),
|
|
46
|
+
"business-name": Flags.string({ required: true }),
|
|
47
|
+
brn: Flags.string({ required: true }),
|
|
48
|
+
"brn-type": Flags.string({ required: true, default: "EIN" }),
|
|
49
|
+
"brn-country": Flags.string({ default: "US" }),
|
|
50
|
+
"entity-type": Flags.string({ required: true, default: "PRIVATE_PROFIT" }),
|
|
51
|
+
"doing-business-as": Flags.string(),
|
|
52
|
+
website: Flags.string(),
|
|
53
|
+
address1: Flags.string(),
|
|
54
|
+
address2: Flags.string(),
|
|
55
|
+
city: Flags.string(),
|
|
56
|
+
state: Flags.string(),
|
|
57
|
+
zip: Flags.string(),
|
|
58
|
+
"address-country": Flags.string(),
|
|
59
|
+
"contact-first-name": Flags.string(),
|
|
60
|
+
"contact-last-name": Flags.string(),
|
|
61
|
+
"contact-email": Flags.string(),
|
|
62
|
+
"contact-phone": Flags.string(),
|
|
63
|
+
"monthly-volume": Flags.string(),
|
|
64
|
+
"use-case": Flags.string(),
|
|
65
|
+
"use-case-summary": Flags.string(),
|
|
66
|
+
"sample-messages": Flags.string(),
|
|
67
|
+
"opt-in-workflow": Flags.string(),
|
|
68
|
+
"privacy-url": Flags.string(),
|
|
69
|
+
"terms-url": Flags.string(),
|
|
70
|
+
"additional-information": Flags.string(),
|
|
71
|
+
"age-gated-content": Flags.boolean({ default: false }),
|
|
72
|
+
"ein-doc": Flags.string({
|
|
73
|
+
description: "Path to the IRS letter (CP-575 or 147C) PDF",
|
|
74
|
+
}),
|
|
75
|
+
};
|
|
76
|
+
async run() {
|
|
77
|
+
const { flags } = await this.parse(BusinessUpgradeStart);
|
|
78
|
+
const boundary = `----FormBoundary${Date.now()}${Math.random()
|
|
79
|
+
.toString(36)
|
|
80
|
+
.substring(2)}`;
|
|
81
|
+
const parts = [];
|
|
82
|
+
const appendField = (name, value) => {
|
|
83
|
+
parts.push(Buffer.from(`--${boundary}\r\n` +
|
|
84
|
+
`Content-Disposition: form-data; name="${name}"\r\n\r\n` +
|
|
85
|
+
value +
|
|
86
|
+
"\r\n"));
|
|
87
|
+
};
|
|
88
|
+
for (const [flagKey, wireKey] of Object.entries(TEXT_FIELDS)) {
|
|
89
|
+
const v = flags[flagKey];
|
|
90
|
+
if (typeof v === "string" && v.length > 0)
|
|
91
|
+
appendField(wireKey, v);
|
|
92
|
+
}
|
|
93
|
+
appendField("ageGatedContent", flags["age-gated-content"] ? "true" : "false");
|
|
94
|
+
if (flags["ein-doc"]) {
|
|
95
|
+
const filePath = flags["ein-doc"];
|
|
96
|
+
if (!fs.existsSync(filePath)) {
|
|
97
|
+
this.error(`File not found: ${filePath}`);
|
|
98
|
+
}
|
|
99
|
+
const filename = path.basename(filePath);
|
|
100
|
+
const fileBuffer = fs.readFileSync(filePath);
|
|
101
|
+
parts.push(Buffer.from(`--${boundary}\r\n` +
|
|
102
|
+
`Content-Disposition: form-data; name="einDoc"; filename="${filename}"\r\n` +
|
|
103
|
+
`Content-Type: application/pdf\r\n\r\n`));
|
|
104
|
+
parts.push(fileBuffer);
|
|
105
|
+
parts.push(Buffer.from("\r\n"));
|
|
106
|
+
}
|
|
107
|
+
parts.push(Buffer.from(`--${boundary}--\r\n`));
|
|
108
|
+
const body = Buffer.concat(parts);
|
|
109
|
+
const token = getAuthToken();
|
|
110
|
+
if (!token)
|
|
111
|
+
throw new AuthenticationError();
|
|
112
|
+
const baseUrl = getConfigValue("baseUrl") || "https://sendly.live";
|
|
113
|
+
const timeout = getEffectiveValue("timeout");
|
|
114
|
+
const url = `${baseUrl}/api/v1/workspaces/${encodeURIComponent(flags.workspace)}/upgrade`;
|
|
115
|
+
const controller = new AbortController();
|
|
116
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
117
|
+
const resp = await fetch(url, {
|
|
118
|
+
method: "POST",
|
|
119
|
+
headers: {
|
|
120
|
+
"Content-Type": `multipart/form-data; boundary=${boundary}`,
|
|
121
|
+
Accept: "application/json",
|
|
122
|
+
Authorization: `Bearer ${token}`,
|
|
123
|
+
},
|
|
124
|
+
body,
|
|
125
|
+
signal: controller.signal,
|
|
126
|
+
});
|
|
127
|
+
clearTimeout(timeoutId);
|
|
128
|
+
const data = (await resp.json().catch(() => ({})));
|
|
129
|
+
if (!resp.ok) {
|
|
130
|
+
throw new ApiError(data.error || "upgrade_error", data.message || `HTTP ${resp.status}`, resp.status);
|
|
131
|
+
}
|
|
132
|
+
if (isJsonMode()) {
|
|
133
|
+
json(data);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
success("Upgrade submitted to carrier.");
|
|
137
|
+
info(`Pending verification: ${data.pendingVerificationId}`);
|
|
138
|
+
info(`New toll-free number (reserved): ${data.tollFreeNumber}`);
|
|
139
|
+
info(data.message);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvYnVzaW5lc3MtdXBncmFkZS9zdGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLGlCQUFpQixHQUNsQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFXdEUsTUFBTSxXQUFXLEdBQTJCO0lBQzFDLGVBQWUsRUFBRSxjQUFjO0lBQy9CLEdBQUcsRUFBRSxLQUFLO0lBQ1YsVUFBVSxFQUFFLFNBQVM7SUFDckIsYUFBYSxFQUFFLFlBQVk7SUFDM0IsYUFBYSxFQUFFLFlBQVk7SUFDM0IsbUJBQW1CLEVBQUUsaUJBQWlCO0lBQ3RDLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE9BQU87SUFDZCxHQUFHLEVBQUUsS0FBSztJQUNWLGlCQUFpQixFQUFFLGdCQUFnQjtJQUNuQyxvQkFBb0IsRUFBRSxrQkFBa0I7SUFDeEMsbUJBQW1CLEVBQUUsaUJBQWlCO0lBQ3RDLGVBQWUsRUFBRSxjQUFjO0lBQy9CLGVBQWUsRUFBRSxjQUFjO0lBQy9CLGdCQUFnQixFQUFFLGVBQWU7SUFD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LEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDNUIsTUFBTSxFQUFFLE1BQU07WUFDZCxPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLGlDQUFpQyxRQUFRLEVBQUU7Z0JBQzNELE1BQU0sRUFBRSxrQkFBa0I7Z0JBQzFCLGFBQWEsRUFBRSxVQUFVLEtBQUssRUFBRTthQUNqQztZQUNELElBQUk7WUFDSixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhCLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBeUIsQ0FBQztRQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLFFBQVEsQ0FDaEIsSUFBSSxDQUFDLEtBQUssSUFBSSxlQUFlLEVBQzdCLElBQUksQ0FBQyxPQUFPLElBQUksUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQ3JDLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ1gsT0FBTztRQUNULENBQUM7UUFDRCxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMseUJBQXlCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLG9DQUFvQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHtcbiAgZ2V0QXV0aFRva2VuLFxuICBnZXRDb25maWdWYWx1ZSxcbiAgZ2V0RWZmZWN0aXZlVmFsdWUsXG59IGZyb20gXCIuLi8uLi9saWIvY29uZmlnLmpzXCI7XG5pbXBvcnQgeyBBcGlFcnJvciwgQXV0aGVudGljYXRpb25FcnJvciB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsganNvbiwgaW5mbywgc3VjY2VzcywgaXNKc29uTW9kZSB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBTdGFydFVwZ3JhZGVSZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHBlbmRpbmdWZXJpZmljYXRpb25JZDogc3RyaW5nO1xuICB0ZWxueXhWZXJpZmljYXRpb25JZDogc3RyaW5nO1xuICB0b2xsRnJlZU51bWJlcjogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG5jb25zdCBURVhUX0ZJRUxEUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgXCJidXNpbmVzcy1uYW1lXCI6IFwiYnVzaW5lc3NOYW1lXCIsXG4gIGJybjogXCJicm5cIixcbiAgXCJicm4tdHlwZVwiOiBcImJyblR5cGVcIixcbiAgXCJicm4tY291bnRyeVwiOiBcImJybkNvdW50cnlcIixcbiAgXCJlbnRpdHktdHlwZVwiOiBcImVudGl0eVR5cGVcIixcbiAgXCJkb2luZy1idXNpbmVzcy1hc1wiOiBcImRvaW5nQnVzaW5lc3NBc1wiLFxuICB3ZWJzaXRlOiBcIndlYnNpdGVcIixcbiAgYWRkcmVzczE6IFwiYWRkcmVzczFcIixcbiAgYWRkcmVzczI6IFwiYWRkcmVzczJcIixcbiAgY2l0eTogXCJjaXR5XCIsXG4gIHN0YXRlOiBcInN0YXRlXCIsXG4gIHppcDogXCJ6aXBcIixcbiAgXCJhZGRyZXNzLWNvdW50cnlcIjogXCJhZGRyZXNzQ291bnRyeVwiLFxuICBcImNvbnRhY3QtZmlyc3QtbmFtZVwiOiBcImNvbnRhY3RGaXJzdE5hbWVcIixcbiAgXCJjb250YWN0LWxhc3QtbmFtZVwiOiBcImNvbnRhY3RMYXN0TmFtZVwiLFxuICBcImNvbnRhY3QtZW1haWxcIjogXCJjb250YWN0RW1haWxcIixcbiAgXCJjb250YWN0LXBob25lXCI6IFwiY29udGFjdFBob25lXCIsXG4gIFwibW9udGhseS12b2x1bWVcIjogXCJtb250aGx5Vm9sdW1lXCIsXG4gIFwidXNlLWNhc2VcIjogXCJ1c2VDYXNlXCIsXG4gIFwidXNlLWNhc2Utc3VtbWFyeVwiOiBcInVzZUNhc2VTdW1tYXJ5XCIsXG4gIFwic2FtcGxlLW1lc3NhZ2VzXCI6IFwic2FtcGxlTWVzc2FnZXNcIixcbiAgXCJvcHQtaW4td29ya2Zsb3dcIjogXCJvcHRJbldvcmtmbG93XCIsXG4gIFwicHJpdmFjeS11cmxcIjogXCJwcml2YWN5VXJsXCIsXG4gIFwidGVybXMtdXJsXCI6IFwidGVybXNVcmxcIixcbiAgXCJhZGRpdGlvbmFsLWluZm9ybWF0aW9uXCI6IFwiYWRkaXRpb25hbEluZm9ybWF0aW9uXCIsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdXNpbmVzc1VwZ3JhZGVTdGFydCBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIlN0YXJ0IGEgYnVzaW5lc3MgZW50aXR5IHVwZ3JhZGUg4oCUIGF1dG8tcHJvdmlzaW9ucyBhIG5ldyB0b2xsLWZyZWUgbnVtYmVyIHVuZGVyIHRoZSBuZXcgZW50aXR5IGFuZCBzdWJtaXRzIHRvIHRoZSBjYXJyaWVyIGZvciByZXZpZXdcIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJzwlPSBjb25maWcuYmluICU+IGJ1c2luZXNzLXVwZ3JhZGUgc3RhcnQgLS13b3Jrc3BhY2Ugd3NfYWJjIC0tYnVzaW5lc3MtbmFtZSBcIkFjbWUgSG9sZGluZ3MgTExDXCIgLS1icm4gXCIxMi0zNDU2Nzg5XCIgLS1icm4tdHlwZSBFSU4gLS1lbnRpdHktdHlwZSBQUklWQVRFX1BST0ZJVCAtLWVpbi1kb2MgLi9DUC01NzUucGRmJyxcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHdvcmtzcGFjZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIldvcmtzcGFjZSBJRCBiZWluZyB1cGdyYWRlZFwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gICAgXCJidXNpbmVzcy1uYW1lXCI6IEZsYWdzLnN0cmluZyh7IHJlcXVpcmVkOiB0cnVlIH0pLFxuICAgIGJybjogRmxhZ3Muc3RyaW5nKHsgcmVxdWlyZWQ6IHRydWUgfSksXG4gICAgXCJicm4tdHlwZVwiOiBGbGFncy5zdHJpbmcoeyByZXF1aXJlZDogdHJ1ZSwgZGVmYXVsdDogXCJFSU5cIiB9KSxcbiAgICBcImJybi1jb3VudHJ5XCI6IEZsYWdzLnN0cmluZyh7IGRlZmF1bHQ6IFwiVVNcIiB9KSxcbiAgICBcImVudGl0eS10eXBlXCI6IEZsYWdzLnN0cmluZyh7IHJlcXVpcmVkOiB0cnVlLCBkZWZhdWx0OiBcIlBSSVZBVEVfUFJPRklUXCIgfSksXG4gICAgXCJkb2luZy1idXNpbmVzcy1hc1wiOiBGbGFncy5zdHJpbmcoKSxcbiAgICB3ZWJzaXRlOiBGbGFncy5zdHJpbmcoKSxcbiAgICBhZGRyZXNzMTogRmxhZ3Muc3RyaW5nKCksXG4gICAgYWRkcmVzczI6IEZsYWdzLnN0cmluZygpLFxuICAgIGNpdHk6IEZsYWdzLnN0cmluZygpLFxuICAgIHN0YXRlOiBGbGFncy5zdHJpbmcoKSxcbiAgICB6aXA6IEZsYWdzLnN0cmluZygpLFxuICAgIFwiYWRkcmVzcy1jb3VudHJ5XCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwiY29udGFjdC1maXJzdC1uYW1lXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwiY29udGFjdC1sYXN0LW5hbWVcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJjb250YWN0LWVtYWlsXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwiY29udGFjdC1waG9uZVwiOiBGbGFncy5zdHJpbmcoKSxcbiAgICBcIm1vbnRobHktdm9sdW1lXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwidXNlLWNhc2VcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJ1c2UtY2FzZS1zdW1tYXJ5XCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwic2FtcGxlLW1lc3NhZ2VzXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwib3B0LWluLXdvcmtmbG93XCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwicHJpdmFjeS11cmxcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJ0ZXJtcy11cmxcIjogRmxhZ3Muc3RyaW5nKCksXG4gICAgXCJhZGRpdGlvbmFsLWluZm9ybWF0aW9uXCI6IEZsYWdzLnN0cmluZygpLFxuICAgIFwiYWdlLWdhdGVkLWNvbnRlbnRcIjogRmxhZ3MuYm9vbGVhbih7IGRlZmF1bHQ6IGZhbHNlIH0pLFxuICAgIFwiZWluLWRvY1wiOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiUGF0aCB0byB0aGUgSVJTIGxldHRlciAoQ1AtNTc1IG9yIDE0N0MpIFBERlwiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKEJ1c2luZXNzVXBncmFkZVN0YXJ0KTtcblxuICAgIGNvbnN0IGJvdW5kYXJ5ID0gYC0tLS1Gb3JtQm91bmRhcnkke0RhdGUubm93KCl9JHtNYXRoLnJhbmRvbSgpXG4gICAgICAudG9TdHJpbmcoMzYpXG4gICAgICAuc3Vic3RyaW5nKDIpfWA7XG4gICAgY29uc3QgcGFydHM6IEJ1ZmZlcltdID0gW107XG5cbiAgICBjb25zdCBhcHBlbmRGaWVsZCA9IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIHBhcnRzLnB1c2goXG4gICAgICAgIEJ1ZmZlci5mcm9tKFxuICAgICAgICAgIGAtLSR7Ym91bmRhcnl9XFxyXFxuYCArXG4gICAgICAgICAgICBgQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPVwiJHtuYW1lfVwiXFxyXFxuXFxyXFxuYCArXG4gICAgICAgICAgICB2YWx1ZSArXG4gICAgICAgICAgICBcIlxcclxcblwiLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBbZmxhZ0tleSwgd2lyZUtleV0gb2YgT2JqZWN0LmVudHJpZXMoVEVYVF9GSUVMRFMpKSB7XG4gICAgICBjb25zdCB2ID0gZmxhZ3NbZmxhZ0tleSBhcyBrZXlvZiB0eXBlb2YgZmxhZ3NdO1xuICAgICAgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiICYmIHYubGVuZ3RoID4gMCkgYXBwZW5kRmllbGQod2lyZUtleSwgdik7XG4gICAgfVxuICAgIGFwcGVuZEZpZWxkKFwiYWdlR2F0ZWRDb250ZW50XCIsIGZsYWdzW1wiYWdlLWdhdGVkLWNvbnRlbnRcIl0gPyBcInRydWVcIiA6IFwiZmFsc2VcIik7XG5cbiAgICBpZiAoZmxhZ3NbXCJlaW4tZG9jXCJdKSB7XG4gICAgICBjb25zdCBmaWxlUGF0aCA9IGZsYWdzW1wiZWluLWRvY1wiXTtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgICAgdGhpcy5lcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7ZmlsZVBhdGh9YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBmaWxlbmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZVBhdGgpO1xuICAgICAgY29uc3QgZmlsZUJ1ZmZlciA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCk7XG4gICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICBCdWZmZXIuZnJvbShcbiAgICAgICAgICBgLS0ke2JvdW5kYXJ5fVxcclxcbmAgK1xuICAgICAgICAgICAgYENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cImVpbkRvY1wiOyBmaWxlbmFtZT1cIiR7ZmlsZW5hbWV9XCJcXHJcXG5gICtcbiAgICAgICAgICAgIGBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3BkZlxcclxcblxcclxcbmAsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgcGFydHMucHVzaChmaWxlQnVmZmVyKTtcbiAgICAgIHBhcnRzLnB1c2goQnVmZmVyLmZyb20oXCJcXHJcXG5cIikpO1xuICAgIH1cbiAgICBwYXJ0cy5wdXNoKEJ1ZmZlci5mcm9tKGAtLSR7Ym91bmRhcnl9LS1cXHJcXG5gKSk7XG5cbiAgICBjb25zdCBib2R5ID0gQnVmZmVyLmNvbmNhdChwYXJ0cyk7XG4gICAgY29uc3QgdG9rZW4gPSBnZXRBdXRoVG9rZW4oKTtcbiAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcigpO1xuXG4gICAgY29uc3QgYmFzZVVybCA9IGdldENvbmZpZ1ZhbHVlKFwiYmFzZVVybFwiKSB8fCBcImh0dHBzOi8vc2VuZGx5LmxpdmVcIjtcbiAgICBjb25zdCB0aW1lb3V0ID0gZ2V0RWZmZWN0aXZlVmFsdWUoXCJ0aW1lb3V0XCIpO1xuICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L2FwaS92MS93b3Jrc3BhY2VzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGZsYWdzLndvcmtzcGFjZSl9L3VwZ3JhZGVgO1xuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgdGltZW91dCk7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogYG11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSR7Ym91bmRhcnl9YCxcbiAgICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgICB9LFxuICAgICAgYm9keSxcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG5cbiAgICBjb25zdCBkYXRhID0gKGF3YWl0IHJlc3AuanNvbigpLmNhdGNoKCgpID0+ICh7fSkpKSBhcyBTdGFydFVwZ3JhZGVSZXNwb25zZTtcbiAgICBpZiAoIXJlc3Aub2spIHtcbiAgICAgIHRocm93IG5ldyBBcGlFcnJvcihcbiAgICAgICAgZGF0YS5lcnJvciB8fCBcInVwZ3JhZGVfZXJyb3JcIixcbiAgICAgICAgZGF0YS5tZXNzYWdlIHx8IGBIVFRQICR7cmVzcC5zdGF0dXN9YCxcbiAgICAgICAgcmVzcC5zdGF0dXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24oZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN1Y2Nlc3MoXCJVcGdyYWRlIHN1Ym1pdHRlZCB0byBjYXJyaWVyLlwiKTtcbiAgICBpbmZvKGBQZW5kaW5nIHZlcmlmaWNhdGlvbjogJHtkYXRhLnBlbmRpbmdWZXJpZmljYXRpb25JZH1gKTtcbiAgICBpbmZvKGBOZXcgdG9sbC1mcmVlIG51bWJlciAocmVzZXJ2ZWQpOiAke2RhdGEudG9sbEZyZWVOdW1iZXJ9YCk7XG4gICAgaW5mbyhkYXRhLm1lc3NhZ2UpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class BusinessUpgradeStatus extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
workspace: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
8
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { apiClient } from "../../lib/api-client.js";
|
|
4
|
+
import { json, info, isJsonMode, colors } from "../../lib/output.js";
|
|
5
|
+
export default class BusinessUpgradeStatus extends AuthenticatedCommand {
|
|
6
|
+
static description = "Show the status of any pending business entity upgrade for a workspace";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> business-upgrade status --workspace ws_abc",
|
|
9
|
+
"<%= config.bin %> business-upgrade status --workspace ws_abc --json",
|
|
10
|
+
];
|
|
11
|
+
static flags = {
|
|
12
|
+
...AuthenticatedCommand.baseFlags,
|
|
13
|
+
workspace: Flags.string({
|
|
14
|
+
description: "Workspace ID to check",
|
|
15
|
+
required: true,
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
18
|
+
async run() {
|
|
19
|
+
const { flags } = await this.parse(BusinessUpgradeStatus);
|
|
20
|
+
const data = await apiClient.get(`/api/v1/workspaces/${encodeURIComponent(flags.workspace)}/upgrade/status`);
|
|
21
|
+
if (isJsonMode()) {
|
|
22
|
+
json(data);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (!data.pending) {
|
|
26
|
+
info("No upgrade in flight for this workspace.");
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
info(`${colors.bold(data.pending.businessName)} · status: ${data.pending.status}`);
|
|
30
|
+
if (data.pending.tollFreeNumber)
|
|
31
|
+
info(`Reserved number: ${data.pending.tollFreeNumber}`);
|
|
32
|
+
if (data.pending.rejectionReason) {
|
|
33
|
+
info(colors.warning(`Carrier feedback: ${data.pending.rejectionReason}`));
|
|
34
|
+
}
|
|
35
|
+
info(colors.dim(`Submitted ${data.pending.createdAt}`));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2J1c2luZXNzLXVwZ3JhZGUvc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVlyRSxNQUFNLENBQUMsT0FBTyxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQUNyRSxNQUFNLENBQUMsV0FBVyxHQUFHLHdFQUF3RSxDQUFDO0lBRTlGLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsOERBQThEO1FBQzlELHFFQUFxRTtLQUN0RSxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN0QixXQUFXLEVBQUUsdUJBQXVCO1lBQ3BDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMxRCxNQUFNLElBQUksR0FBRyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQzlCLHNCQUFzQixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUMzRSxDQUFDO1FBQ0YsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQztZQUNqRCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNyRixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYztZQUFFLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSBcIkBvY2xpZi9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGVkQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvYmFzZS1jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi4vLi4vbGliL2FwaS1jbGllbnQuanNcIjtcbmltcG9ydCB7IGpzb24sIGluZm8sIGlzSnNvbk1vZGUsIGNvbG9ycyB9IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5cbmludGVyZmFjZSBQZW5kaW5nUm93IHtcbiAgaWQ6IHN0cmluZztcbiAgYnVzaW5lc3NOYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b2xsRnJlZU51bWJlcjogc3RyaW5nIHwgbnVsbDtcbiAgcmVqZWN0aW9uUmVhc29uOiBzdHJpbmcgfCBudWxsO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1c2luZXNzVXBncmFkZVN0YXR1cyBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID0gXCJTaG93IHRoZSBzdGF0dXMgb2YgYW55IHBlbmRpbmcgYnVzaW5lc3MgZW50aXR5IHVwZ3JhZGUgZm9yIGEgd29ya3NwYWNlXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gYnVzaW5lc3MtdXBncmFkZSBzdGF0dXMgLS13b3Jrc3BhY2Ugd3NfYWJjXCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiBidXNpbmVzcy11cGdyYWRlIHN0YXR1cyAtLXdvcmtzcGFjZSB3c19hYmMgLS1qc29uXCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICB3b3Jrc3BhY2U6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJXb3Jrc3BhY2UgSUQgdG8gY2hlY2tcIixcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKEJ1c2luZXNzVXBncmFkZVN0YXR1cyk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8eyBwZW5kaW5nOiBQZW5kaW5nUm93IHwgbnVsbCB9PihcbiAgICAgIGAvYXBpL3YxL3dvcmtzcGFjZXMvJHtlbmNvZGVVUklDb21wb25lbnQoZmxhZ3Mud29ya3NwYWNlKX0vdXBncmFkZS9zdGF0dXNgLFxuICAgICk7XG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAganNvbihkYXRhKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFkYXRhLnBlbmRpbmcpIHtcbiAgICAgIGluZm8oXCJObyB1cGdyYWRlIGluIGZsaWdodCBmb3IgdGhpcyB3b3Jrc3BhY2UuXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbmZvKGAke2NvbG9ycy5ib2xkKGRhdGEucGVuZGluZy5idXNpbmVzc05hbWUpfSAgwrcgIHN0YXR1czogJHtkYXRhLnBlbmRpbmcuc3RhdHVzfWApO1xuICAgIGlmIChkYXRhLnBlbmRpbmcudG9sbEZyZWVOdW1iZXIpIGluZm8oYFJlc2VydmVkIG51bWJlcjogJHtkYXRhLnBlbmRpbmcudG9sbEZyZWVOdW1iZXJ9YCk7XG4gICAgaWYgKGRhdGEucGVuZGluZy5yZWplY3Rpb25SZWFzb24pIHtcbiAgICAgIGluZm8oY29sb3JzLndhcm5pbmcoYENhcnJpZXIgZmVlZGJhY2s6ICR7ZGF0YS5wZW5kaW5nLnJlamVjdGlvblJlYXNvbn1gKSk7XG4gICAgfVxuICAgIGluZm8oY29sb3JzLmRpbShgU3VibWl0dGVkICR7ZGF0YS5wZW5kaW5nLmNyZWF0ZWRBdH1gKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
2
|
+
export default class EnterpriseVerificationGet extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
workspaceId: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|