@sendly/cli 3.37.1 → 3.39.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 +268 -0
- package/dist/commands/business-upgrade/resubmit.js +3 -3
- package/dist/commands/business-upgrade/start.js +3 -3
- package/dist/commands/config/list.js +14 -2
- package/dist/commands/config/set.js +16 -3
- package/dist/commands/countries.js +2 -2
- package/dist/commands/credits/index.d.ts +1 -0
- package/dist/commands/credits/index.js +4 -0
- package/dist/commands/doctor.d.ts +12 -0
- package/dist/commands/doctor.js +51 -8
- package/dist/commands/enterprise/upload-verification-document.js +3 -3
- package/dist/commands/enterprise/verification/resubmit.js +2 -2
- package/dist/commands/enterprise/verification/submit.js +2 -2
- package/dist/commands/events/listen.js +3 -3
- package/dist/commands/numbers/buy.js +19 -4
- package/dist/commands/rcs/agents/create.d.ts +44 -0
- package/dist/commands/rcs/agents/create.js +71 -0
- package/dist/commands/rcs/agents/devices/set.d.ts +16 -0
- package/dist/commands/rcs/agents/devices/set.js +77 -0
- package/dist/commands/rcs/agents/get.d.ts +13 -0
- package/dist/commands/rcs/agents/get.js +51 -0
- package/dist/commands/rcs/agents/request-launch.d.ts +16 -0
- package/dist/commands/rcs/agents/request-launch.js +71 -0
- package/dist/commands/rcs/agents/submit.d.ts +14 -0
- package/dist/commands/rcs/agents/submit.js +56 -0
- package/dist/commands/rcs/agents/update.d.ts +48 -0
- package/dist/commands/rcs/agents/update.js +81 -0
- package/dist/commands/rcs/agents.d.ts +10 -0
- package/dist/commands/rcs/agents.js +97 -0
- package/dist/commands/rcs/brands/create.d.ts +30 -0
- package/dist/commands/rcs/brands/create.js +55 -0
- package/dist/commands/rcs/brands/update.d.ts +33 -0
- package/dist/commands/rcs/brands/update.js +62 -0
- package/dist/commands/rcs/capability.d.ts +12 -0
- package/dist/commands/rcs/capability.js +85 -0
- package/dist/commands/rcs/dossier.d.ts +10 -0
- package/dist/commands/rcs/dossier.js +73 -0
- package/dist/commands/rcs/registration.d.ts +10 -0
- package/dist/commands/rcs/registration.js +59 -0
- package/dist/commands/rcs/send.d.ts +21 -0
- package/dist/commands/rcs/send.js +240 -0
- package/dist/commands/send.d.ts +1 -0
- package/dist/commands/send.js +5 -2
- package/dist/commands/sms/batch.d.ts +1 -0
- package/dist/commands/sms/batch.js +11 -1
- package/dist/commands/sms/group.d.ts +1 -0
- package/dist/commands/sms/group.js +5 -2
- package/dist/commands/sms/schedule.d.ts +1 -0
- package/dist/commands/sms/schedule.js +5 -2
- package/dist/commands/sms/send.d.ts +1 -0
- package/dist/commands/sms/send.js +5 -2
- package/dist/commands/whatsapp/connect.d.ts +17 -0
- package/dist/commands/whatsapp/connect.js +166 -0
- package/dist/commands/whatsapp/profile/get.d.ts +13 -0
- package/dist/commands/whatsapp/profile/get.js +67 -0
- package/dist/commands/whatsapp/profile/update.d.ts +20 -0
- package/dist/commands/whatsapp/profile/update.js +109 -0
- package/dist/commands/whatsapp/send.d.ts +17 -0
- package/dist/commands/whatsapp/send.js +151 -0
- package/dist/commands/whatsapp/senders.d.ts +10 -0
- package/dist/commands/whatsapp/senders.js +74 -0
- package/dist/commands/whatsapp/status.d.ts +13 -0
- package/dist/commands/whatsapp/status.js +92 -0
- package/dist/commands/whatsapp/templates/create.d.ts +19 -0
- package/dist/commands/whatsapp/templates/create.js +205 -0
- package/dist/commands/whatsapp/templates/delete.d.ts +14 -0
- package/dist/commands/whatsapp/templates/delete.js +69 -0
- package/dist/commands/whatsapp/templates/list.d.ts +10 -0
- package/dist/commands/whatsapp/templates/list.js +77 -0
- package/dist/commands/whatsapp/templates/update.d.ts +18 -0
- package/dist/commands/whatsapp/templates/update.js +160 -0
- package/dist/commands/whoami.js +32 -6
- package/dist/hooks/command-not-found.js +46 -61
- package/dist/lib/api-client.d.ts +20 -3
- package/dist/lib/api-client.js +96 -17
- package/dist/lib/auth.js +10 -6
- package/dist/lib/base-command.js +13 -2
- package/dist/lib/config.d.ts +50 -1
- package/dist/lib/config.js +144 -7
- package/dist/lib/help.d.ts +10 -0
- package/dist/lib/help.js +23 -0
- package/dist/lib/onboarding.js +3 -3
- package/dist/lib/rcs-registration.d.ts +231 -0
- package/dist/lib/rcs-registration.js +734 -0
- package/oclif.manifest.json +2603 -350
- package/package.json +17 -1
|
@@ -37,6 +37,9 @@ export default class SmsSend extends AuthenticatedCommand {
|
|
|
37
37
|
description: "Media URL to attach (MMS). Can be specified multiple times.",
|
|
38
38
|
multiple: true,
|
|
39
39
|
}),
|
|
40
|
+
"idempotency-key": Flags.string({
|
|
41
|
+
description: "Idempotency key (1-255 printable ASCII characters). Re-running with the same key within 24 hours returns the original result instead of sending again.",
|
|
42
|
+
}),
|
|
40
43
|
};
|
|
41
44
|
async run() {
|
|
42
45
|
const { flags } = await this.parse(SmsSend);
|
|
@@ -111,7 +114,7 @@ export default class SmsSend extends AuthenticatedCommand {
|
|
|
111
114
|
...(text && { text }),
|
|
112
115
|
...(flags.from && { from: flags.from }),
|
|
113
116
|
...(hasMedia && { mediaUrls }),
|
|
114
|
-
});
|
|
117
|
+
}, true, { idempotencyKey: flags["idempotency-key"] });
|
|
115
118
|
spin.stop();
|
|
116
119
|
if (isJsonMode()) {
|
|
117
120
|
json(response);
|
|
@@ -138,4 +141,4 @@ export default class SmsSend extends AuthenticatedCommand {
|
|
|
138
141
|
}
|
|
139
142
|
}
|
|
140
143
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9zbXMvc2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFlBQVksRUFDWixhQUFhLEVBQ2IsSUFBSSxFQUNKLFVBQVUsR0FDWCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQWNoQyxNQUFNLENBQUMsT0FBTyxPQUFPLE9BQVEsU0FBUSxvQkFBb0I7SUFDdkQsTUFBTSxDQUFDLFdBQVcsR0FBRyw0QkFBNEIsQ0FBQztJQUVsRCxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLDhEQUE4RDtRQUM5RCw4RUFBOEU7UUFDOUUsbUZBQW1GO1FBQ25GLHFFQUFxRTtRQUNyRSxnSEFBZ0g7UUFDaEgsd0ZBQXdGO1FBQ3hGLDhJQUE4STtLQUMvSSxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNmLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsc0RBQXNEO1NBQ3BFLENBQUM7UUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSwy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LENBQUM7Z0JBQ3JDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pFLE9BQU8sRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztnQkFDNUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLGNBQWMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQzthQUMvRixDQUFDLENBQUM7WUFFSCxJQUFJLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzlCLEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ2xELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIHNwaW5uZXIsXG4gIGNvbG9ycyxcbiAgZm9ybWF0U3RhdHVzLFxuICBmb3JtYXRDcmVkaXRzLFxuICBqc29uLFxuICBpc0pzb25Nb2RlLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IGlucXVpcmVyIGZyb20gXCJpbnF1aXJlclwiO1xuXG5pbnRlcmZhY2UgU2VuZE1lc3NhZ2VSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGZyb206IHN0cmluZztcbiAgdGV4dDogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgc2VnbWVudHM6IG51bWJlcjtcbiAgY3JlZGl0c1VzZWQ6IG51bWJlcjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIG1lZGlhVXJscz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXNTZW5kIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIlNlbmQgYW4gU01TIG9yIE1NUyBtZXNzYWdlXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJIZWxsbyFcIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBzZW5kIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIkhlbGxvIVwiIC0tZnJvbSBcIlNlbmRseVwiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNlbmQgLS10byArMTU1NTEyMzQ1NjcgLS10ZXh0IFwiSGVsbG8hXCIgLS10eXBlIHRyYW5zYWN0aW9uYWwnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJIZWxsbyFcIiAtLWpzb24nLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJDaGVjayB0aGlzIG91dFwiIC0tbWVkaWEtdXJsIGh0dHBzOi8vZXhhbXBsZS5jb20vaW1hZ2UuanBnJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNlbmQgLS10byArMTU1NTEyMzQ1NjcgLS1tZWRpYS11cmwgaHR0cHM6Ly9leGFtcGxlLmNvbS9pbWFnZS5qcGcnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJUd28gaW1hZ2VzXCIgLS1tZWRpYS11cmwgaHR0cHM6Ly9leGFtcGxlLmNvbS9hLmpwZyAtLW1lZGlhLXVybCBodHRwczovL2V4YW1wbGUuY29tL2IuanBnJyxcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHRvOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJ0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZWNpcGllbnQgcGhvbmUgbnVtYmVyIChFLjE2NCBmb3JtYXQpXCIsXG4gICAgfSksXG4gICAgdGV4dDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwibVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0ZXh0IChvcHRpb25hbCB3aGVuIC0tbWVkaWEtdXJsIGlzIHByb3ZpZGVkKVwiLFxuICAgIH0pLFxuICAgIGZyb206IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImZcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNlbmRlciBJRCBvciBwaG9uZSBudW1iZXJcIixcbiAgICB9KSxcbiAgICB0eXBlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0eXBlOiBtYXJrZXRpbmcgKGRlZmF1bHQpIG9yIHRyYW5zYWN0aW9uYWxcIixcbiAgICAgIG9wdGlvbnM6IFtcIm1hcmtldGluZ1wiLCBcInRyYW5zYWN0aW9uYWxcIl0sXG4gICAgICBkZWZhdWx0OiBcIm1hcmtldGluZ1wiLFxuICAgIH0pLFxuICAgIFwibWVkaWEtdXJsXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJNZWRpYSBVUkwgdG8gYXR0YWNoIChNTVMpLiBDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLlwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoU21zU2VuZCk7XG4gICAgY29uc3QgbWVkaWFVcmxzID0gZmxhZ3NbXCJtZWRpYS11cmxcIl07XG4gICAgY29uc3QgaGFzTWVkaWEgPSBtZWRpYVVybHMgJiYgbWVkaWFVcmxzLmxlbmd0aCA+IDA7XG5cbiAgICBsZXQgdG8gPSBmbGFncy50bztcbiAgICBsZXQgdGV4dCA9IGZsYWdzLnRleHQ7XG5cbiAgICBpZiAoIXRvKSB7XG4gICAgICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgICBjb25zdCBhbnN3ZXJzID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICAgICAgICBuYW1lOiBcInRvXCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBcIlJlY2lwaWVudCBwaG9uZSBudW1iZXIgKEUuMTY0KTpcIixcbiAgICAgICAgICAgIHZhbGlkYXRlOiAoaW5wdXQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm4gXCJQaG9uZSBudW1iZXIgaXMgcmVxdWlyZWRcIjtcbiAgICAgICAgICAgICAgaWYgKCEvXlxcK1sxLTldXFxkezEsMTR9JC8udGVzdChpbnB1dCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJJbnZhbGlkIGZvcm1hdC4gVXNlIEUuMTY0OiArMTU1NTEyMzQ1NjdcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIHRvID0gYW5zd2Vycy50bztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKFwiTWlzc2luZyByZXF1aXJlZCBmbGFnOiAtLXRvXCIsIHtcbiAgICAgICAgICBoaW50OiBcIlVzZSAtLXRvICsxNTU1MTIzNDU2N1wiLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGV4dCAmJiAhaGFzTWVkaWEpIHtcbiAgICAgIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZKSB7XG4gICAgICAgIGNvbnN0IGFuc3dlcnMgPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiaW5wdXRcIixcbiAgICAgICAgICAgIG5hbWU6IFwidGV4dFwiLFxuICAgICAgICAgICAgbWVzc2FnZTogXCJNZXNzYWdlIHRleHQ6XCIsXG4gICAgICAgICAgICB2YWxpZGF0ZTogKGlucHV0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFpbnB1dC50cmltKCkpIHJldHVybiBcIk1lc3NhZ2UgdGV4dCBjYW5ub3QgYmUgZW1wdHlcIjtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgICB0ZXh0ID0gYW5zd2Vycy50ZXh0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3IoXCJFaXRoZXIgLS10ZXh0IG9yIC0tbWVkaWEtdXJsIGlzIHJlcXVpcmVkXCIpO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCEvXlxcK1sxLTldXFxkezEsMTR9JC8udGVzdCh0byEpKSB7XG4gICAgICBlcnJvcihcIkludmFsaWQgcGhvbmUgbnVtYmVyIGZvcm1hdFwiLCB7XG4gICAgICAgIGhpbnQ6IFwiVXNlIEUuMTY0IGZvcm1hdDogKzE1NTUxMjM0NTY3XCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBpZiAodGV4dCAmJiAhdGV4dC50cmltKCkpIHtcbiAgICAgIGVycm9yKFwiTWVzc2FnZSB0ZXh0IGNhbm5vdCBiZSBlbXB0eVwiKTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlTGFiZWwgPSBoYXNNZWRpYSA/IFwiTU1TXCIgOiBcIlNNU1wiO1xuICAgIGNvbnN0IHNwaW4gPSBzcGlubmVyKGBTZW5kaW5nICR7bWVzc2FnZUxhYmVsfSBtZXNzYWdlLi4uYCk7XG4gICAgc3Bpbi5zdGFydCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpQ2xpZW50LnBvc3Q8U2VuZE1lc3NhZ2VSZXNwb25zZT4oXG4gICAgICAgIFwiL2FwaS92MS9tZXNzYWdlc1wiLFxuICAgICAgICB7XG4gICAgICAgICAgdG8sXG4gICAgICAgICAgbWVzc2FnZVR5cGU6IGZsYWdzLnR5cGUsXG4gICAgICAgICAgLi4uKHRleHQgJiYgeyB0ZXh0IH0pLFxuICAgICAgICAgIC4uLihmbGFncy5mcm9tICYmIHsgZnJvbTogZmxhZ3MuZnJvbSB9KSxcbiAgICAgICAgICAuLi4oaGFzTWVkaWEgJiYgeyBtZWRpYVVybHMgfSksXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBzcGluLnN0b3AoKTtcblxuICAgICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgICBqc29uKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzdWNjZXNzKGAke21lc3NhZ2VMYWJlbH0gc2VudGAsIHtcbiAgICAgICAgSUQ6IHJlc3BvbnNlLmlkLFxuICAgICAgICBUbzogcmVzcG9uc2UudG8sXG4gICAgICAgIFR5cGU6IG1lc3NhZ2VMYWJlbCxcbiAgICAgICAgU3RhdHVzOiBmb3JtYXRTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSxcbiAgICAgICAgLi4uKHJlc3BvbnNlLnNlZ21lbnRzICE9IG51bGwgJiYgeyBTZWdtZW50czogcmVzcG9uc2Uuc2VnbWVudHMgfSksXG4gICAgICAgIENyZWRpdHM6IGZvcm1hdENyZWRpdHMocmVzcG9uc2UuY3JlZGl0c1VzZWQpLFxuICAgICAgICAuLi4oaGFzTWVkaWEgJiYgeyBNZWRpYTogYCR7bWVkaWFVcmxzLmxlbmd0aH0gYXR0YWNobWVudCR7bWVkaWFVcmxzLmxlbmd0aCA+IDEgPyBcInNcIiA6IFwiXCJ9YCB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaGFzTWVkaWEgJiYgIWlzSnNvbk1vZGUoKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHVybCBvZiBtZWRpYVVybHMpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICAke2NvbG9ycy5kaW0oXCJNZWRpYTpcIil9ICR7dXJsfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzcGluLnN0b3AoKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9zbXMvc2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFlBQVksRUFDWixhQUFhLEVBQ2IsSUFBSSxFQUNKLFVBQVUsR0FDWCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQWNoQyxNQUFNLENBQUMsT0FBTyxPQUFPLE9BQVEsU0FBUSxvQkFBb0I7SUFDdkQsTUFBTSxDQUFDLFdBQVcsR0FBRyw0QkFBNEIsQ0FBQztJQUVsRCxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLDhEQUE4RDtRQUM5RCw4RUFBOEU7UUFDOUUsbUZBQW1GO1FBQ25GLHFFQUFxRTtRQUNyRSxnSEFBZ0g7UUFDaEgsd0ZBQXdGO1FBQ3hGLDhJQUE4STtLQUMvSSxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNmLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDO1FBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsc0RBQXNEO1NBQ3BFLENBQUM7UUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNqQixJQUFJLEVBQUUsR0FBRztZQUNULFdBQVcsRUFBRSwy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QUFFO2dCQUM5QixFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2YsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNmLElBQUksRUFBRSxZQUFZO2dCQUNsQixNQUFNLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3JDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pFLE9BQU8sRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztnQkFDNUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLGNBQWMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQzthQUMvRixDQUFDLENBQUM7WUFFSCxJQUFJLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzlCLEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ2xELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIHNwaW5uZXIsXG4gIGNvbG9ycyxcbiAgZm9ybWF0U3RhdHVzLFxuICBmb3JtYXRDcmVkaXRzLFxuICBqc29uLFxuICBpc0pzb25Nb2RlLFxufSBmcm9tIFwiLi4vLi4vbGliL291dHB1dC5qc1wiO1xuaW1wb3J0IGlucXVpcmVyIGZyb20gXCJpbnF1aXJlclwiO1xuXG5pbnRlcmZhY2UgU2VuZE1lc3NhZ2VSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGZyb206IHN0cmluZztcbiAgdGV4dDogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgc2VnbWVudHM6IG51bWJlcjtcbiAgY3JlZGl0c1VzZWQ6IG51bWJlcjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIG1lZGlhVXJscz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbXNTZW5kIGV4dGVuZHMgQXV0aGVudGljYXRlZENvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPSBcIlNlbmQgYW4gU01TIG9yIE1NUyBtZXNzYWdlXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJIZWxsbyFcIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHNtcyBzZW5kIC0tdG8gKzE1NTUxMjM0NTY3IC0tdGV4dCBcIkhlbGxvIVwiIC0tZnJvbSBcIlNlbmRseVwiJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNlbmQgLS10byArMTU1NTEyMzQ1NjcgLS10ZXh0IFwiSGVsbG8hXCIgLS10eXBlIHRyYW5zYWN0aW9uYWwnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJIZWxsbyFcIiAtLWpzb24nLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJDaGVjayB0aGlzIG91dFwiIC0tbWVkaWEtdXJsIGh0dHBzOi8vZXhhbXBsZS5jb20vaW1hZ2UuanBnJyxcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gc21zIHNlbmQgLS10byArMTU1NTEyMzQ1NjcgLS1tZWRpYS11cmwgaHR0cHM6Ly9leGFtcGxlLmNvbS9pbWFnZS5qcGcnLFxuICAgICc8JT0gY29uZmlnLmJpbiAlPiBzbXMgc2VuZCAtLXRvICsxNTU1MTIzNDU2NyAtLXRleHQgXCJUd28gaW1hZ2VzXCIgLS1tZWRpYS11cmwgaHR0cHM6Ly9leGFtcGxlLmNvbS9hLmpwZyAtLW1lZGlhLXVybCBodHRwczovL2V4YW1wbGUuY29tL2IuanBnJyxcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIHRvOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogXCJ0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZWNpcGllbnQgcGhvbmUgbnVtYmVyIChFLjE2NCBmb3JtYXQpXCIsXG4gICAgfSksXG4gICAgdGV4dDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6IFwibVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0ZXh0IChvcHRpb25hbCB3aGVuIC0tbWVkaWEtdXJsIGlzIHByb3ZpZGVkKVwiLFxuICAgIH0pLFxuICAgIGZyb206IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcImZcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNlbmRlciBJRCBvciBwaG9uZSBudW1iZXJcIixcbiAgICB9KSxcbiAgICB0eXBlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiTWVzc2FnZSB0eXBlOiBtYXJrZXRpbmcgKGRlZmF1bHQpIG9yIHRyYW5zYWN0aW9uYWxcIixcbiAgICAgIG9wdGlvbnM6IFtcIm1hcmtldGluZ1wiLCBcInRyYW5zYWN0aW9uYWxcIl0sXG4gICAgICBkZWZhdWx0OiBcIm1hcmtldGluZ1wiLFxuICAgIH0pLFxuICAgIFwibWVkaWEtdXJsXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJNZWRpYSBVUkwgdG8gYXR0YWNoIChNTVMpLiBDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLlwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgfSksXG4gICAgXCJpZGVtcG90ZW5jeS1rZXlcIjogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIklkZW1wb3RlbmN5IGtleSAoMS0yNTUgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMpLiBSZS1ydW5uaW5nIHdpdGggdGhlIHNhbWUga2V5IHdpdGhpbiAyNCBob3VycyByZXR1cm5zIHRoZSBvcmlnaW5hbCByZXN1bHQgaW5zdGVhZCBvZiBzZW5kaW5nIGFnYWluLlwiLFxuICAgIH0pLFxuICB9O1xuXG4gIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFNtc1NlbmQpO1xuICAgIGNvbnN0IG1lZGlhVXJscyA9IGZsYWdzW1wibWVkaWEtdXJsXCJdO1xuICAgIGNvbnN0IGhhc01lZGlhID0gbWVkaWFVcmxzICYmIG1lZGlhVXJscy5sZW5ndGggPiAwO1xuXG4gICAgbGV0IHRvID0gZmxhZ3MudG87XG4gICAgbGV0IHRleHQgPSBmbGFncy50ZXh0O1xuXG4gICAgaWYgKCF0bykge1xuICAgICAgaWYgKHByb2Nlc3Muc3RkaW4uaXNUVFkpIHtcbiAgICAgICAgY29uc3QgYW5zd2VycyA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgICAgICAgbmFtZTogXCJ0b1wiLFxuICAgICAgICAgICAgbWVzc2FnZTogXCJSZWNpcGllbnQgcGhvbmUgbnVtYmVyIChFLjE2NCk6XCIsXG4gICAgICAgICAgICB2YWxpZGF0ZTogKGlucHV0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuIFwiUGhvbmUgbnVtYmVyIGlzIHJlcXVpcmVkXCI7XG4gICAgICAgICAgICAgIGlmICghL15cXCtbMS05XVxcZHsxLDE0fSQvLnRlc3QoaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiSW52YWxpZCBmb3JtYXQuIFVzZSBFLjE2NDogKzE1NTUxMjM0NTY3XCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgICB0byA9IGFuc3dlcnMudG87XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgZmxhZzogLS10b1wiLCB7XG4gICAgICAgICAgaGludDogXCJVc2UgLS10byArMTU1NTEyMzQ1NjdcIixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRleHQgJiYgIWhhc01lZGlhKSB7XG4gICAgICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgICAgICBjb25zdCBhbnN3ZXJzID0gYXdhaXQgaW5xdWlyZXIucHJvbXB0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICAgICAgICBuYW1lOiBcInRleHRcIixcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiTWVzc2FnZSB0ZXh0OlwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaW5wdXQudHJpbSgpKSByZXR1cm4gXCJNZXNzYWdlIHRleHQgY2Fubm90IGJlIGVtcHR5XCI7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgdGV4dCA9IGFuc3dlcnMudGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKFwiRWl0aGVyIC0tdGV4dCBvciAtLW1lZGlhLXVybCBpcyByZXF1aXJlZFwiKTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghL15cXCtbMS05XVxcZHsxLDE0fSQvLnRlc3QodG8hKSkge1xuICAgICAgZXJyb3IoXCJJbnZhbGlkIHBob25lIG51bWJlciBmb3JtYXRcIiwge1xuICAgICAgICBoaW50OiBcIlVzZSBFLjE2NCBmb3JtYXQ6ICsxNTU1MTIzNDU2N1wiLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKHRleHQgJiYgIXRleHQudHJpbSgpKSB7XG4gICAgICBlcnJvcihcIk1lc3NhZ2UgdGV4dCBjYW5ub3QgYmUgZW1wdHlcIik7XG4gICAgICB0aGlzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVzc2FnZUxhYmVsID0gaGFzTWVkaWEgPyBcIk1NU1wiIDogXCJTTVNcIjtcbiAgICBjb25zdCBzcGluID0gc3Bpbm5lcihgU2VuZGluZyAke21lc3NhZ2VMYWJlbH0gbWVzc2FnZS4uLmApO1xuICAgIHNwaW4uc3RhcnQoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PFNlbmRNZXNzYWdlUmVzcG9uc2U+KFxuICAgICAgICBcIi9hcGkvdjEvbWVzc2FnZXNcIixcbiAgICAgICAge1xuICAgICAgICAgIHRvLFxuICAgICAgICAgIG1lc3NhZ2VUeXBlOiBmbGFncy50eXBlLFxuICAgICAgICAgIC4uLih0ZXh0ICYmIHsgdGV4dCB9KSxcbiAgICAgICAgICAuLi4oZmxhZ3MuZnJvbSAmJiB7IGZyb206IGZsYWdzLmZyb20gfSksXG4gICAgICAgICAgLi4uKGhhc01lZGlhICYmIHsgbWVkaWFVcmxzIH0pLFxuICAgICAgICB9LFxuICAgICAgICB0cnVlLFxuICAgICAgICB7IGlkZW1wb3RlbmN5S2V5OiBmbGFnc1tcImlkZW1wb3RlbmN5LWtleVwiXSB9LFxuICAgICAgKTtcblxuICAgICAgc3Bpbi5zdG9wKCk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc3VjY2VzcyhgJHttZXNzYWdlTGFiZWx9IHNlbnRgLCB7XG4gICAgICAgIElEOiByZXNwb25zZS5pZCxcbiAgICAgICAgVG86IHJlc3BvbnNlLnRvLFxuICAgICAgICBUeXBlOiBtZXNzYWdlTGFiZWwsXG4gICAgICAgIFN0YXR1czogZm9ybWF0U3RhdHVzKHJlc3BvbnNlLnN0YXR1cyksXG4gICAgICAgIC4uLihyZXNwb25zZS5zZWdtZW50cyAhPSBudWxsICYmIHsgU2VnbWVudHM6IHJlc3BvbnNlLnNlZ21lbnRzIH0pLFxuICAgICAgICBDcmVkaXRzOiBmb3JtYXRDcmVkaXRzKHJlc3BvbnNlLmNyZWRpdHNVc2VkKSxcbiAgICAgICAgLi4uKGhhc01lZGlhICYmIHsgTWVkaWE6IGAke21lZGlhVXJscy5sZW5ndGh9IGF0dGFjaG1lbnQke21lZGlhVXJscy5sZW5ndGggPiAxID8gXCJzXCIgOiBcIlwifWAgfSksXG4gICAgICB9KTtcblxuICAgICAgaWYgKGhhc01lZGlhICYmICFpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAgZm9yIChjb25zdCB1cmwgb2YgbWVkaWFVcmxzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgJHtjb2xvcnMuZGltKFwiTWVkaWE6XCIpfSAke3VybH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3Bpbi5zdG9wKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class WhatsappConnect extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
number: 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
|
+
/**
|
|
12
|
+
* Poll the signup until it goes terminal (active / failed / expired).
|
|
13
|
+
* Mirrors the numbers-buy hosted-action poll: a human is completing a
|
|
14
|
+
* browser step (the Facebook sign-in) while we wait.
|
|
15
|
+
*/
|
|
16
|
+
private pollSignup;
|
|
17
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { Flags } from "@oclif/core";
|
|
4
|
+
import open from "open";
|
|
5
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
6
|
+
import { apiClient, NotFoundError } from "../../lib/api-client.js";
|
|
7
|
+
import { getConfigDir } from "../../lib/config.js";
|
|
8
|
+
import { json, success, warn, error, colors, spinner, isJsonMode, } from "../../lib/output.js";
|
|
9
|
+
import { attachLoginKeypressHandler } from "../../lib/keypress.js";
|
|
10
|
+
const SIGNUP_POLL_INTERVAL = 5000; // 5 seconds
|
|
11
|
+
const SIGNUP_MAX_ATTEMPTS = 240; // ~20 minutes
|
|
12
|
+
function sleep(ms) {
|
|
13
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Remember the most recent signup so `sendly whatsapp status` works with no
|
|
17
|
+
* argument. Best effort — the id is also printed, so losing this is harmless.
|
|
18
|
+
*/
|
|
19
|
+
function rememberSignup(id, phoneNumber) {
|
|
20
|
+
try {
|
|
21
|
+
fs.writeFileSync(path.join(getConfigDir(), "whatsapp-signup.json"), JSON.stringify({ id, phoneNumber, createdAt: new Date().toISOString() }), { mode: 0o600 });
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// non-fatal
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export default class WhatsappConnect extends AuthenticatedCommand {
|
|
28
|
+
static description = "Connect one of your numbers to WhatsApp. Prints a secure link a person must open and sign in with Facebook to finish; the command then waits until the sender is active. One-time $19 connection fee — no monthly fee.";
|
|
29
|
+
static examples = [
|
|
30
|
+
"<%= config.bin %> whatsapp connect --number +15551234567",
|
|
31
|
+
"<%= config.bin %> whatsapp connect --number +15551234567 --json",
|
|
32
|
+
];
|
|
33
|
+
static flags = {
|
|
34
|
+
...AuthenticatedCommand.baseFlags,
|
|
35
|
+
number: Flags.string({
|
|
36
|
+
char: "n",
|
|
37
|
+
description: "Number on your workspace to connect (E.164 format)",
|
|
38
|
+
required: true,
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
async run() {
|
|
42
|
+
const { flags } = await this.parse(WhatsappConnect);
|
|
43
|
+
const startSpinner = spinner("Starting WhatsApp connection...");
|
|
44
|
+
if (!isJsonMode()) {
|
|
45
|
+
startSpinner.start();
|
|
46
|
+
}
|
|
47
|
+
let response;
|
|
48
|
+
try {
|
|
49
|
+
response = await apiClient.post("/api/v1/whatsapp/signup", { phoneNumber: flags.number });
|
|
50
|
+
startSpinner.stop();
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
startSpinner.stop();
|
|
54
|
+
if (err instanceof NotFoundError && err.message === "Resource not found") {
|
|
55
|
+
error("WhatsApp isn't available on your workspace yet.", {
|
|
56
|
+
hint: "WhatsApp is rolling out gradually — contact support@sendly.live for early access.",
|
|
57
|
+
});
|
|
58
|
+
this.exit(1);
|
|
59
|
+
}
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
rememberSignup(response.id, flags.number);
|
|
63
|
+
if (isJsonMode()) {
|
|
64
|
+
// Non-interactive: surface the link so the caller can hand it to a
|
|
65
|
+
// person, then poll with `sendly whatsapp status <id>`.
|
|
66
|
+
json(response);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
console.log();
|
|
70
|
+
console.log(colors.bold("Finish connecting on the web"));
|
|
71
|
+
console.log();
|
|
72
|
+
console.log("Open this link and sign in with Facebook to finish connecting your number to WhatsApp:");
|
|
73
|
+
console.log(colors.bold(colors.primary(` ${response.connectUrl}`)));
|
|
74
|
+
console.log();
|
|
75
|
+
console.log(colors.dim(`Signup id: ${response.id}`));
|
|
76
|
+
console.log();
|
|
77
|
+
try {
|
|
78
|
+
await open(response.connectUrl);
|
|
79
|
+
console.log(colors.dim("Browser opened automatically"));
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
console.log(colors.dim("Please open the URL manually"));
|
|
83
|
+
}
|
|
84
|
+
const keypressCleanup = attachLoginKeypressHandler(response.connectUrl);
|
|
85
|
+
console.log();
|
|
86
|
+
const final = await this.pollSignup(response.id);
|
|
87
|
+
keypressCleanup();
|
|
88
|
+
if (final === "timeout") {
|
|
89
|
+
warn("We stopped waiting. Finish the Facebook sign-in in your browser, then check `sendly whatsapp status`.");
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (final === "gone") {
|
|
93
|
+
warn("This connection attempt is no longer available. Re-run `sendly whatsapp connect` to start over.");
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (final.status === "active") {
|
|
97
|
+
success("WhatsApp sender connected", {
|
|
98
|
+
number: final.phoneNumber,
|
|
99
|
+
"business account": final.businessAccountId ?? "—",
|
|
100
|
+
});
|
|
101
|
+
console.log();
|
|
102
|
+
console.log(colors.dim(`Send with: ${colors.code(`sendly whatsapp send --from ${final.phoneNumber} --to +15551230000 --text "Hello!"`)}`));
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (final.status === "expired") {
|
|
106
|
+
error("The connect link expired before signup finished.", {
|
|
107
|
+
hint: "Run `sendly whatsapp connect` again to get a fresh link.",
|
|
108
|
+
});
|
|
109
|
+
this.exit(1);
|
|
110
|
+
}
|
|
111
|
+
// failed
|
|
112
|
+
error("WhatsApp connection failed.", {
|
|
113
|
+
...(final.failureReasons?.length && {
|
|
114
|
+
reasons: final.failureReasons.join("; "),
|
|
115
|
+
}),
|
|
116
|
+
hint: "Re-run `sendly whatsapp connect` to try again.",
|
|
117
|
+
});
|
|
118
|
+
this.exit(1);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Poll the signup until it goes terminal (active / failed / expired).
|
|
122
|
+
* Mirrors the numbers-buy hosted-action poll: a human is completing a
|
|
123
|
+
* browser step (the Facebook sign-in) while we wait.
|
|
124
|
+
*/
|
|
125
|
+
async pollSignup(id) {
|
|
126
|
+
const spin = spinner("Waiting for you to finish signing in with Facebook...");
|
|
127
|
+
spin.start();
|
|
128
|
+
let attempts = 0;
|
|
129
|
+
while (attempts < SIGNUP_MAX_ATTEMPTS) {
|
|
130
|
+
await sleep(SIGNUP_POLL_INTERVAL);
|
|
131
|
+
attempts++;
|
|
132
|
+
let status;
|
|
133
|
+
try {
|
|
134
|
+
status = await apiClient.get(`/api/v1/whatsapp/signup/${encodeURIComponent(id)}`);
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
if (err instanceof NotFoundError) {
|
|
138
|
+
spin.fail("Connection attempt no longer exists");
|
|
139
|
+
return "gone";
|
|
140
|
+
}
|
|
141
|
+
// Transient error — keep polling.
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
if (status.status === "registering") {
|
|
145
|
+
spin.text =
|
|
146
|
+
"Facebook sign-in complete — activating your number on WhatsApp...";
|
|
147
|
+
}
|
|
148
|
+
if (status.status === "active") {
|
|
149
|
+
spin.succeed("Connected");
|
|
150
|
+
return status;
|
|
151
|
+
}
|
|
152
|
+
if (status.status === "failed") {
|
|
153
|
+
spin.fail("Connection failed");
|
|
154
|
+
return status;
|
|
155
|
+
}
|
|
156
|
+
if (status.status === "expired") {
|
|
157
|
+
spin.fail("Connect link expired");
|
|
158
|
+
return status;
|
|
159
|
+
}
|
|
160
|
+
// initiated / registering — keep polling
|
|
161
|
+
}
|
|
162
|
+
spin.stop();
|
|
163
|
+
return "timeout";
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy93aGF0c2FwcC9jb25uZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUNMLElBQUksRUFDSixPQUFPLEVBRVAsSUFBSSxFQUNKLEtBQUssRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUNQLFVBQVUsR0FDWCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBaUJuRSxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVk7QUFDL0MsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUMsQ0FBQyxjQUFjO0FBRS9DLFNBQVMsS0FBSyxDQUFDLEVBQVU7SUFDdkIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGNBQWMsQ0FBQyxFQUFVLEVBQUUsV0FBbUI7SUFDckQsSUFBSSxDQUFDO1FBQ0gsRUFBRSxDQUFDLGFBQWEsQ0FDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLHNCQUFzQixDQUFD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QUM7b0JBQ2pELE9BQU8sTUFBTSxDQUFDO2dCQUNoQixDQUFDO2dCQUNELGtDQUFrQztnQkFDbEMsU0FBUztZQUNYLENBQUM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssYUFBYSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxJQUFJO29CQUNQLG1FQUFtRSxDQUFDO1lBQ3hFLENBQUM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzFCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDL0IsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUNELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBQ0QseUNBQXlDO1FBQzNDLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IG9wZW4gZnJvbSBcIm9wZW5cIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCwgTm90Rm91bmRFcnJvciB9IGZyb20gXCIuLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnRGlyIH0gZnJvbSBcIi4uLy4uL2xpYi9jb25maWcuanNcIjtcbmltcG9ydCB7XG4gIGpzb24sXG4gIHN1Y2Nlc3MsXG4gIGluZm8sXG4gIHdhcm4sXG4gIGVycm9yLFxuICBjb2xvcnMsXG4gIHNwaW5uZXIsXG4gIGlzSnNvbk1vZGUsXG59IGZyb20gXCIuLi8uLi9saWIvb3V0cHV0LmpzXCI7XG5pbXBvcnQgeyBhdHRhY2hMb2dpbktleXByZXNzSGFuZGxlciB9IGZyb20gXCIuLi8uLi9saWIva2V5cHJlc3MuanNcIjtcblxuaW50ZXJmYWNlIFNpZ251cFN0YXJ0UmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBjb25uZWN0VXJsOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2lnbnVwU3RhdHVzUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgYnVzaW5lc3NBY2NvdW50SWQ6IHN0cmluZyB8IG51bGw7XG4gIGZhaWx1cmVSZWFzb25zOiBzdHJpbmdbXSB8IG51bGw7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuXG5jb25zdCBTSUdOVVBfUE9MTF9JTlRFUlZBTCA9IDUwMDA7IC8vIDUgc2Vjb25kc1xuY29uc3QgU0lHTlVQX01BWF9BVFRFTVBUUyA9IDI0MDsgLy8gfjIwIG1pbnV0ZXNcblxuZnVuY3Rpb24gc2xlZXAobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbn1cblxuLyoqXG4gKiBSZW1lbWJlciB0aGUgbW9zdCByZWNlbnQgc2lnbnVwIHNvIGBzZW5kbHkgd2hhdHNhcHAgc3RhdHVzYCB3b3JrcyB3aXRoIG5vXG4gKiBhcmd1bWVudC4gQmVzdCBlZmZvcnQg4oCUIHRoZSBpZCBpcyBhbHNvIHByaW50ZWQsIHNvIGxvc2luZyB0aGlzIGlzIGhhcm1sZXNzLlxuICovXG5mdW5jdGlvbiByZW1lbWJlclNpZ251cChpZDogc3RyaW5nLCBwaG9uZU51bWJlcjogc3RyaW5nKTogdm9pZCB7XG4gIHRyeSB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgIHBhdGguam9pbihnZXRDb25maWdEaXIoKSwgXCJ3aGF0c2FwcC1zaWdudXAuanNvblwiKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgaWQsIHBob25lTnVtYmVyLCBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9KSxcbiAgICAgIHsgbW9kZTogMG82MDAgfSxcbiAgICApO1xuICB9IGNhdGNoIHtcbiAgICAvLyBub24tZmF0YWxcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXaGF0c2FwcENvbm5lY3QgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJDb25uZWN0IG9uZSBvZiB5b3VyIG51bWJlcnMgdG8gV2hhdHNBcHAuIFByaW50cyBhIHNlY3VyZSBsaW5rIGEgcGVyc29uIG11c3Qgb3BlbiBhbmQgc2lnbiBpbiB3aXRoIEZhY2Vib29rIHRvIGZpbmlzaDsgdGhlIGNvbW1hbmQgdGhlbiB3YWl0cyB1bnRpbCB0aGUgc2VuZGVyIGlzIGFjdGl2ZS4gT25lLXRpbWUgJDE5IGNvbm5lY3Rpb24gZmVlIOKAlCBubyBtb250aGx5IGZlZS5cIjtcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB3aGF0c2FwcCBjb25uZWN0IC0tbnVtYmVyICsxNTU1MTIzNDU2N1wiLFxuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gd2hhdHNhcHAgY29ubmVjdCAtLW51bWJlciArMTU1NTEyMzQ1NjcgLS1qc29uXCIsXG4gIF07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgICBudW1iZXI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiBcIm5cIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk51bWJlciBvbiB5b3VyIHdvcmtzcGFjZSB0byBjb25uZWN0IChFLjE2NCBmb3JtYXQpXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShXaGF0c2FwcENvbm5lY3QpO1xuXG4gICAgY29uc3Qgc3RhcnRTcGlubmVyID0gc3Bpbm5lcihcIlN0YXJ0aW5nIFdoYXRzQXBwIGNvbm5lY3Rpb24uLi5cIik7XG4gICAgaWYgKCFpc0pzb25Nb2RlKCkpIHtcbiAgICAgIHN0YXJ0U3Bpbm5lci5zdGFydCgpO1xuICAgIH1cblxuICAgIGxldCByZXNwb25zZTogU2lnbnVwU3RhcnRSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBhcGlDbGllbnQucG9zdDxTaWdudXBTdGFydFJlc3BvbnNlPihcbiAgICAgICAgXCIvYXBpL3YxL3doYXRzYXBwL3NpZ251cFwiLFxuICAgICAgICB7IHBob25lTnVtYmVyOiBmbGFncy5udW1iZXIgfSxcbiAgICAgICk7XG4gICAgICBzdGFydFNwaW5uZXIuc3RvcCgpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBzdGFydFNwaW5uZXIuc3RvcCgpO1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEZvdW5kRXJyb3IgJiYgZXJyLm1lc3NhZ2UgPT09IFwiUmVzb3VyY2Ugbm90IGZvdW5kXCIpIHtcbiAgICAgICAgZXJyb3IoXCJXaGF0c0FwcCBpc24ndCBhdmFpbGFibGUgb24geW91ciB3b3Jrc3BhY2UgeWV0LlwiLCB7XG4gICAgICAgICAgaGludDogXCJXaGF0c0FwcCBpcyByb2xsaW5nIG91dCBncmFkdWFsbHkg4oCUIGNvbnRhY3Qgc3VwcG9ydEBzZW5kbHkubGl2ZSBmb3IgZWFybHkgYWNjZXNzLlwiLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHJlbWVtYmVyU2lnbnVwKHJlc3BvbnNlLmlkLCBmbGFncy5udW1iZXIpO1xuXG4gICAgaWYgKGlzSnNvbk1vZGUoKSkge1xuICAgICAgLy8gTm9uLWludGVyYWN0aXZlOiBzdXJmYWNlIHRoZSBsaW5rIHNvIHRoZSBjYWxsZXIgY2FuIGhhbmQgaXQgdG8gYVxuICAgICAgLy8gcGVyc29uLCB0aGVuIHBvbGwgd2l0aCBgc2VuZGx5IHdoYXRzYXBwIHN0YXR1cyA8aWQ+YC5cbiAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoXCJGaW5pc2ggY29ubmVjdGluZyBvbiB0aGUgd2ViXCIpKTtcbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgXCJPcGVuIHRoaXMgbGluayBhbmQgc2lnbiBpbiB3aXRoIEZhY2Vib29rIHRvIGZpbmlzaCBjb25uZWN0aW5nIHlvdXIgbnVtYmVyIHRvIFdoYXRzQXBwOlwiLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoY29sb3JzLnByaW1hcnkoYCAgJHtyZXNwb25zZS5jb25uZWN0VXJsfWApKSk7XG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKGBTaWdudXAgaWQ6ICR7cmVzcG9uc2UuaWR9YCkpO1xuICAgIGNvbnNvbGUubG9nKCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgb3BlbihyZXNwb25zZS5jb25uZWN0VXJsKTtcbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJCcm93c2VyIG9wZW5lZCBhdXRvbWF0aWNhbGx5XCIpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGNvbnNvbGUubG9nKGNvbG9ycy5kaW0oXCJQbGVhc2Ugb3BlbiB0aGUgVVJMIG1hbnVhbGx5XCIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlwcmVzc0NsZWFudXAgPSBhdHRhY2hMb2dpbktleXByZXNzSGFuZGxlcihyZXNwb25zZS5jb25uZWN0VXJsKTtcbiAgICBjb25zb2xlLmxvZygpO1xuXG4gICAgY29uc3QgZmluYWwgPSBhd2FpdCB0aGlzLnBvbGxTaWdudXAocmVzcG9uc2UuaWQpO1xuICAgIGtleXByZXNzQ2xlYW51cCgpO1xuXG4gICAgaWYgKGZpbmFsID09PSBcInRpbWVvdXRcIikge1xuICAgICAgd2FybihcbiAgICAgICAgXCJXZSBzdG9wcGVkIHdhaXRpbmcuIEZpbmlzaCB0aGUgRmFjZWJvb2sgc2lnbi1pbiBpbiB5b3VyIGJyb3dzZXIsIHRoZW4gY2hlY2sgYHNlbmRseSB3aGF0c2FwcCBzdGF0dXNgLlwiLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZmluYWwgPT09IFwiZ29uZVwiKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcIlRoaXMgY29ubmVjdGlvbiBhdHRlbXB0IGlzIG5vIGxvbmdlciBhdmFpbGFibGUuIFJlLXJ1biBgc2VuZGx5IHdoYXRzYXBwIGNvbm5lY3RgIHRvIHN0YXJ0IG92ZXIuXCIsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChmaW5hbC5zdGF0dXMgPT09IFwiYWN0aXZlXCIpIHtcbiAgICAgIHN1Y2Nlc3MoXCJXaGF0c0FwcCBzZW5kZXIgY29ubmVjdGVkXCIsIHtcbiAgICAgICAgbnVtYmVyOiBmaW5hbC5waG9uZU51bWJlcixcbiAgICAgICAgXCJidXNpbmVzcyBhY2NvdW50XCI6IGZpbmFsLmJ1c2luZXNzQWNjb3VudElkID8/IFwi4oCUXCIsXG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUubG9nKCk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICBgU2VuZCB3aXRoOiAke2NvbG9ycy5jb2RlKGBzZW5kbHkgd2hhdHNhcHAgc2VuZCAtLWZyb20gJHtmaW5hbC5waG9uZU51bWJlcn0gLS10byArMTU1NTEyMzAwMDAgLS10ZXh0IFwiSGVsbG8hXCJgKX1gLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZmluYWwuc3RhdHVzID09PSBcImV4cGlyZWRcIikge1xuICAgICAgZXJyb3IoXCJUaGUgY29ubmVjdCBsaW5rIGV4cGlyZWQgYmVmb3JlIHNpZ251cCBmaW5pc2hlZC5cIiwge1xuICAgICAgICBoaW50OiBcIlJ1biBgc2VuZGx5IHdoYXRzYXBwIGNvbm5lY3RgIGFnYWluIHRvIGdldCBhIGZyZXNoIGxpbmsuXCIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG5cbiAgICAvLyBmYWlsZWRcbiAgICBlcnJvcihcIldoYXRzQXBwIGNvbm5lY3Rpb24gZmFpbGVkLlwiLCB7XG4gICAgICAuLi4oZmluYWwuZmFpbHVyZVJlYXNvbnM/Lmxlbmd0aCAmJiB7XG4gICAgICAgIHJlYXNvbnM6IGZpbmFsLmZhaWx1cmVSZWFzb25zLmpvaW4oXCI7IFwiKSxcbiAgICAgIH0pLFxuICAgICAgaGludDogXCJSZS1ydW4gYHNlbmRseSB3aGF0c2FwcCBjb25uZWN0YCB0byB0cnkgYWdhaW4uXCIsXG4gICAgfSk7XG4gICAgdGhpcy5leGl0KDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvbGwgdGhlIHNpZ251cCB1bnRpbCBpdCBnb2VzIHRlcm1pbmFsIChhY3RpdmUgLyBmYWlsZWQgLyBleHBpcmVkKS5cbiAgICogTWlycm9ycyB0aGUgbnVtYmVycy1idXkgaG9zdGVkLWFjdGlvbiBwb2xsOiBhIGh1bWFuIGlzIGNvbXBsZXRpbmcgYVxuICAgKiBicm93c2VyIHN0ZXAgKHRoZSBGYWNlYm9vayBzaWduLWluKSB3aGlsZSB3ZSB3YWl0LlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwb2xsU2lnbnVwKFxuICAgIGlkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8U2lnbnVwU3RhdHVzUmVzcG9uc2UgfCBcInRpbWVvdXRcIiB8IFwiZ29uZVwiPiB7XG4gICAgY29uc3Qgc3BpbiA9IHNwaW5uZXIoXCJXYWl0aW5nIGZvciB5b3UgdG8gZmluaXNoIHNpZ25pbmcgaW4gd2l0aCBGYWNlYm9vay4uLlwiKTtcbiAgICBzcGluLnN0YXJ0KCk7XG5cbiAgICBsZXQgYXR0ZW1wdHMgPSAwO1xuICAgIHdoaWxlIChhdHRlbXB0cyA8IFNJR05VUF9NQVhfQVRURU1QVFMpIHtcbiAgICAgIGF3YWl0IHNsZWVwKFNJR05VUF9QT0xMX0lOVEVSVkFMKTtcbiAgICAgIGF0dGVtcHRzKys7XG5cbiAgICAgIGxldCBzdGF0dXM6IFNpZ251cFN0YXR1c1Jlc3BvbnNlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RhdHVzID0gYXdhaXQgYXBpQ2xpZW50LmdldDxTaWdudXBTdGF0dXNSZXNwb25zZT4oXG4gICAgICAgICAgYC9hcGkvdjEvd2hhdHNhcHAvc2lnbnVwLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGlkKX1gLFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgICAgc3Bpbi5mYWlsKFwiQ29ubmVjdGlvbiBhdHRlbXB0IG5vIGxvbmdlciBleGlzdHNcIik7XG4gICAgICAgICAgcmV0dXJuIFwiZ29uZVwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRyYW5zaWVudCBlcnJvciDigJQga2VlcCBwb2xsaW5nLlxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXR1cy5zdGF0dXMgPT09IFwicmVnaXN0ZXJpbmdcIikge1xuICAgICAgICBzcGluLnRleHQgPVxuICAgICAgICAgIFwiRmFjZWJvb2sgc2lnbi1pbiBjb21wbGV0ZSDigJQgYWN0aXZhdGluZyB5b3VyIG51bWJlciBvbiBXaGF0c0FwcC4uLlwiO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdHVzLnN0YXR1cyA9PT0gXCJhY3RpdmVcIikge1xuICAgICAgICBzcGluLnN1Y2NlZWQoXCJDb25uZWN0ZWRcIik7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdHVzLnN0YXR1cyA9PT0gXCJmYWlsZWRcIikge1xuICAgICAgICBzcGluLmZhaWwoXCJDb25uZWN0aW9uIGZhaWxlZFwiKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0dXMuc3RhdHVzID09PSBcImV4cGlyZWRcIikge1xuICAgICAgICBzcGluLmZhaWwoXCJDb25uZWN0IGxpbmsgZXhwaXJlZFwiKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgIH1cbiAgICAgIC8vIGluaXRpYXRlZCAvIHJlZ2lzdGVyaW5nIOKAlCBrZWVwIHBvbGxpbmdcbiAgICB9XG5cbiAgICBzcGluLnN0b3AoKTtcbiAgICByZXR1cm4gXCJ0aW1lb3V0XCI7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
2
|
+
export default class WhatsappProfileGet extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
number: 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
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
3
|
+
import { apiClient, NotFoundError } from "../../../lib/api-client.js";
|
|
4
|
+
import { success, error, json, colors, spinner, isJsonMode, } from "../../../lib/output.js";
|
|
5
|
+
export default class WhatsappProfileGet extends AuthenticatedCommand {
|
|
6
|
+
static description = "Show the WhatsApp business profile customers see for one of your connected numbers";
|
|
7
|
+
static examples = [
|
|
8
|
+
"<%= config.bin %> whatsapp profile get +15551234567",
|
|
9
|
+
"<%= config.bin %> whatsapp profile get +15551234567 --json",
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
number: Args.string({
|
|
13
|
+
description: "WhatsApp-connected sender number (E.164 format)",
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
static flags = {
|
|
18
|
+
...AuthenticatedCommand.baseFlags,
|
|
19
|
+
};
|
|
20
|
+
async run() {
|
|
21
|
+
const { args } = await this.parse(WhatsappProfileGet);
|
|
22
|
+
const profileSpinner = spinner("Fetching WhatsApp profile...");
|
|
23
|
+
if (!isJsonMode()) {
|
|
24
|
+
profileSpinner.start();
|
|
25
|
+
}
|
|
26
|
+
let response;
|
|
27
|
+
try {
|
|
28
|
+
response = await apiClient.get(`/api/v1/whatsapp/senders/${encodeURIComponent(args.number)}/profile`);
|
|
29
|
+
profileSpinner.stop();
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
profileSpinner.stop();
|
|
33
|
+
if (err instanceof NotFoundError &&
|
|
34
|
+
err.message.includes("connected to WhatsApp")) {
|
|
35
|
+
error(err.message, {
|
|
36
|
+
hint: `Connect it first: sendly whatsapp connect --number ${args.number}`,
|
|
37
|
+
});
|
|
38
|
+
this.exit(1);
|
|
39
|
+
}
|
|
40
|
+
if (err instanceof NotFoundError) {
|
|
41
|
+
error("WhatsApp isn't available on your workspace yet.", {
|
|
42
|
+
hint: "WhatsApp is rolling out gradually — contact support@sendly.live for early access.",
|
|
43
|
+
});
|
|
44
|
+
this.exit(1);
|
|
45
|
+
}
|
|
46
|
+
throw err;
|
|
47
|
+
}
|
|
48
|
+
if (isJsonMode()) {
|
|
49
|
+
json(response);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
success("WhatsApp sender profile", {
|
|
53
|
+
Number: response.phoneNumber,
|
|
54
|
+
"Display name": response.displayName ?? colors.dim("—"),
|
|
55
|
+
About: response.about ?? colors.dim("—"),
|
|
56
|
+
Description: response.description ?? colors.dim("—"),
|
|
57
|
+
Category: response.category ?? colors.dim("—"),
|
|
58
|
+
Email: response.email ?? colors.dim("—"),
|
|
59
|
+
Website: response.website ?? colors.dim("—"),
|
|
60
|
+
Address: response.address ?? colors.dim("—"),
|
|
61
|
+
Photo: response.profilePhotoUrl ?? colors.dim("—"),
|
|
62
|
+
});
|
|
63
|
+
console.log();
|
|
64
|
+
console.log(colors.dim(`Update it with: ${colors.code(`sendly whatsapp profile update ${response.phoneNumber} --about "..."`)}`));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3doYXRzYXBwL3Byb2ZpbGUvZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxJQUFJLEVBQ0osTUFBTSxFQUNOLE9BQU8sRUFDUCxVQUFVLEdBQ1gsTUFBTSx3QkFBd0IsQ0FBQztBQWNoQyxNQUFNLENBQUMsT0FBTyxPQUFPLGtCQUFtQixTQUFRLG9CQUFvQjtJQUNsRSxNQUFNLENBQUMsV0FBVyxHQUNoQixvRkFBb0YsQ0FBQztJQUV2RixNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLHFEQUFxRDtRQUNyRCw0REFBNEQ7S0FDN0QsQ0FBQztJQUVGLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNsQixXQUFXLEVBQUUsaURBQWlEO1lBQzlELFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztLQUNILENBQUM7SUFFRixNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTO0tBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV0RCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNsQixjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUVELElBQUksUUFBK0IsQ0FBQztRQUNwQyxJQUFJLENBQUM7WUFDSCxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUM1Qiw0QkFBNEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQ3RFLENBQUM7WUFDRixjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7WUFDbEIsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLElBQ0UsR0FBRyxZQUFZLGFBQWE7Z0JBQzVCLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLEVBQzdDLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUU7b0JBQ2pCLElBQUksRUFBRSxzREFBc0QsSUFBSSxDQUFDLE1BQU0sRUFBRTtpQkFDMUUsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixDQUFDO1lBQ0QsSUFBSSxHQUFHLFlBQVksYUFBYSxFQUFFLENBQUM7Z0JBQ2pDLEtBQUssQ0FBQyxpREFBaUQsRUFBRTtvQkFDdkQsSUFBSSxFQUFFLG1GQUFtRjtpQkFDMUYsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixDQUFDO1lBQ0QsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO1FBRUQsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLHlCQUF5QixFQUFFO1lBQ2pDLE1BQU0sRUFBRSxRQUFRLENBQUMsV0FBVztZQUM1QixjQUFjLEVBQUUsUUFBUSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUN2RCxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUN4QyxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUNwRCxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUM5QyxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUN4QyxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUM1QyxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUM1QyxLQUFLLEVBQUUsUUFBUSxDQUFDLGVBQWUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztTQUNuRCxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQ1IsbUJBQW1CLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLFFBQVEsQ0FBQyxXQUFXLGdCQUFnQixDQUFDLEVBQUUsQ0FDekcsQ0FDRixDQUFDO0lBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MgfSBmcm9tIFwiQG9jbGlmL2NvcmVcIjtcbmltcG9ydCB7IEF1dGhlbnRpY2F0ZWRDb21tYW5kIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9iYXNlLWNvbW1hbmQuanNcIjtcbmltcG9ydCB7IGFwaUNsaWVudCwgTm90Rm91bmRFcnJvciB9IGZyb20gXCIuLi8uLi8uLi9saWIvYXBpLWNsaWVudC5qc1wiO1xuaW1wb3J0IHtcbiAgc3VjY2VzcyxcbiAgZXJyb3IsXG4gIGpzb24sXG4gIGNvbG9ycyxcbiAgc3Bpbm5lcixcbiAgaXNKc29uTW9kZSxcbn0gZnJvbSBcIi4uLy4uLy4uL2xpYi9vdXRwdXQuanNcIjtcblxuaW50ZXJmYWNlIFdoYXRzYXBwU2VuZGVyUHJvZmlsZSB7XG4gIHBob25lTnVtYmVyOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmcgfCBudWxsO1xuICBwcm9maWxlUGhvdG9Vcmw6IHN0cmluZyB8IG51bGw7XG4gIGNhdGVnb3J5OiBzdHJpbmcgfCBudWxsO1xuICBhYm91dDogc3RyaW5nIHwgbnVsbDtcbiAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gIGVtYWlsOiBzdHJpbmcgfCBudWxsO1xuICB3ZWJzaXRlOiBzdHJpbmcgfCBudWxsO1xuICBhZGRyZXNzOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXaGF0c2FwcFByb2ZpbGVHZXQgZXh0ZW5kcyBBdXRoZW50aWNhdGVkQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9XG4gICAgXCJTaG93IHRoZSBXaGF0c0FwcCBidXNpbmVzcyBwcm9maWxlIGN1c3RvbWVycyBzZWUgZm9yIG9uZSBvZiB5b3VyIGNvbm5lY3RlZCBudW1iZXJzXCI7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgIFwiPCU9IGNvbmZpZy5iaW4gJT4gd2hhdHNhcHAgcHJvZmlsZSBnZXQgKzE1NTUxMjM0NTY3XCIsXG4gICAgXCI8JT0gY29uZmlnLmJpbiAlPiB3aGF0c2FwcCBwcm9maWxlIGdldCArMTU1NTEyMzQ1NjcgLS1qc29uXCIsXG4gIF07XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgbnVtYmVyOiBBcmdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJXaGF0c0FwcC1jb25uZWN0ZWQgc2VuZGVyIG51bWJlciAoRS4xNjQgZm9ybWF0KVwiLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSksXG4gIH07XG5cbiAgc3RhdGljIGZsYWdzID0ge1xuICAgIC4uLkF1dGhlbnRpY2F0ZWRDb21tYW5kLmJhc2VGbGFncyxcbiAgfTtcblxuICBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKFdoYXRzYXBwUHJvZmlsZUdldCk7XG5cbiAgICBjb25zdCBwcm9maWxlU3Bpbm5lciA9IHNwaW5uZXIoXCJGZXRjaGluZyBXaGF0c0FwcCBwcm9maWxlLi4uXCIpO1xuICAgIGlmICghaXNKc29uTW9kZSgpKSB7XG4gICAgICBwcm9maWxlU3Bpbm5lci5zdGFydCgpO1xuICAgIH1cblxuICAgIGxldCByZXNwb25zZTogV2hhdHNhcHBTZW5kZXJQcm9maWxlO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5nZXQ8V2hhdHNhcHBTZW5kZXJQcm9maWxlPihcbiAgICAgICAgYC9hcGkvdjEvd2hhdHNhcHAvc2VuZGVycy8ke2VuY29kZVVSSUNvbXBvbmVudChhcmdzLm51bWJlcil9L3Byb2ZpbGVgLFxuICAgICAgKTtcbiAgICAgIHByb2ZpbGVTcGlubmVyLnN0b3AoKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgcHJvZmlsZVNwaW5uZXIuc3RvcCgpO1xuICAgICAgaWYgKFxuICAgICAgICBlcnIgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yICYmXG4gICAgICAgIGVyci5tZXNzYWdlLmluY2x1ZGVzKFwiY29ubmVjdGVkIHRvIFdoYXRzQXBwXCIpXG4gICAgICApIHtcbiAgICAgICAgZXJyb3IoZXJyLm1lc3NhZ2UsIHtcbiAgICAgICAgICBoaW50OiBgQ29ubmVjdCBpdCBmaXJzdDogc2VuZGx5IHdoYXRzYXBwIGNvbm5lY3QgLS1udW1iZXIgJHthcmdzLm51bWJlcn1gLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEZvdW5kRXJyb3IpIHtcbiAgICAgICAgZXJyb3IoXCJXaGF0c0FwcCBpc24ndCBhdmFpbGFibGUgb24geW91ciB3b3Jrc3BhY2UgeWV0LlwiLCB7XG4gICAgICAgICAgaGludDogXCJXaGF0c0FwcCBpcyByb2xsaW5nIG91dCBncmFkdWFsbHkg4oCUIGNvbnRhY3Qgc3VwcG9ydEBzZW5kbHkubGl2ZSBmb3IgZWFybHkgYWNjZXNzLlwiLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGl0KDEpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgIGpzb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoXCJXaGF0c0FwcCBzZW5kZXIgcHJvZmlsZVwiLCB7XG4gICAgICBOdW1iZXI6IHJlc3BvbnNlLnBob25lTnVtYmVyLFxuICAgICAgXCJEaXNwbGF5IG5hbWVcIjogcmVzcG9uc2UuZGlzcGxheU5hbWUgPz8gY29sb3JzLmRpbShcIuKAlFwiKSxcbiAgICAgIEFib3V0OiByZXNwb25zZS5hYm91dCA/PyBjb2xvcnMuZGltKFwi4oCUXCIpLFxuICAgICAgRGVzY3JpcHRpb246IHJlc3BvbnNlLmRlc2NyaXB0aW9uID8/IGNvbG9ycy5kaW0oXCLigJRcIiksXG4gICAgICBDYXRlZ29yeTogcmVzcG9uc2UuY2F0ZWdvcnkgPz8gY29sb3JzLmRpbShcIuKAlFwiKSxcbiAgICAgIEVtYWlsOiByZXNwb25zZS5lbWFpbCA/PyBjb2xvcnMuZGltKFwi4oCUXCIpLFxuICAgICAgV2Vic2l0ZTogcmVzcG9uc2Uud2Vic2l0ZSA/PyBjb2xvcnMuZGltKFwi4oCUXCIpLFxuICAgICAgQWRkcmVzczogcmVzcG9uc2UuYWRkcmVzcyA/PyBjb2xvcnMuZGltKFwi4oCUXCIpLFxuICAgICAgUGhvdG86IHJlc3BvbnNlLnByb2ZpbGVQaG90b1VybCA/PyBjb2xvcnMuZGltKFwi4oCUXCIpLFxuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGNvbG9ycy5kaW0oXG4gICAgICAgIGBVcGRhdGUgaXQgd2l0aDogJHtjb2xvcnMuY29kZShgc2VuZGx5IHdoYXRzYXBwIHByb2ZpbGUgdXBkYXRlICR7cmVzcG9uc2UucGhvbmVOdW1iZXJ9IC0tYWJvdXQgXCIuLi5cImApfWAsXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
2
|
+
export default class WhatsappProfileUpdate extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
number: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
"display-name": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
about: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
description: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
category: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
13
|
+
email: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
14
|
+
website: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
15
|
+
address: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
16
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
17
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
18
|
+
};
|
|
19
|
+
run(): Promise<void>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Args, Flags } from "@oclif/core";
|
|
2
|
+
import { AuthenticatedCommand } from "../../../lib/base-command.js";
|
|
3
|
+
import { apiClient, NotFoundError } from "../../../lib/api-client.js";
|
|
4
|
+
import { success, error, json, colors, spinner, isJsonMode, } from "../../../lib/output.js";
|
|
5
|
+
export default class WhatsappProfileUpdate extends AuthenticatedCommand {
|
|
6
|
+
static description = "Update the WhatsApp business profile customers see for one of your connected numbers";
|
|
7
|
+
static examples = [
|
|
8
|
+
'<%= config.bin %> whatsapp profile update +15551234567 --about "Family-run bakery in Austin"',
|
|
9
|
+
'<%= config.bin %> whatsapp profile update +15551234567 --website https://example.com --email hello@example.com',
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
number: Args.string({
|
|
13
|
+
description: "WhatsApp-connected sender number (E.164 format)",
|
|
14
|
+
required: true,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
static flags = {
|
|
18
|
+
...AuthenticatedCommand.baseFlags,
|
|
19
|
+
"display-name": Flags.string({
|
|
20
|
+
description: "Business name shown to customers",
|
|
21
|
+
}),
|
|
22
|
+
about: Flags.string({
|
|
23
|
+
description: "Short about line (max 139 characters)",
|
|
24
|
+
}),
|
|
25
|
+
description: Flags.string({
|
|
26
|
+
description: "Longer business description (max 512 characters)",
|
|
27
|
+
}),
|
|
28
|
+
category: Flags.string({
|
|
29
|
+
description: "Business category",
|
|
30
|
+
}),
|
|
31
|
+
email: Flags.string({
|
|
32
|
+
description: "Contact email shown on the profile",
|
|
33
|
+
}),
|
|
34
|
+
website: Flags.string({
|
|
35
|
+
description: "Website URL shown on the profile",
|
|
36
|
+
}),
|
|
37
|
+
address: Flags.string({
|
|
38
|
+
description: "Business address shown on the profile",
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
async run() {
|
|
42
|
+
const { args, flags } = await this.parse(WhatsappProfileUpdate);
|
|
43
|
+
if (flags["display-name"] === undefined &&
|
|
44
|
+
flags.about === undefined &&
|
|
45
|
+
flags.description === undefined &&
|
|
46
|
+
flags.category === undefined &&
|
|
47
|
+
flags.email === undefined &&
|
|
48
|
+
flags.website === undefined &&
|
|
49
|
+
flags.address === undefined) {
|
|
50
|
+
error("Nothing to update", {
|
|
51
|
+
hint: "Pass at least one of --display-name, --about, --description, --category, --email, --website, --address",
|
|
52
|
+
});
|
|
53
|
+
this.exit(1);
|
|
54
|
+
}
|
|
55
|
+
const updateSpinner = spinner("Updating WhatsApp profile...");
|
|
56
|
+
if (!isJsonMode()) {
|
|
57
|
+
updateSpinner.start();
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const response = await apiClient.patch(`/api/v1/whatsapp/senders/${encodeURIComponent(args.number)}/profile`, {
|
|
61
|
+
...(flags["display-name"] !== undefined && {
|
|
62
|
+
displayName: flags["display-name"],
|
|
63
|
+
}),
|
|
64
|
+
...(flags.about !== undefined && { about: flags.about }),
|
|
65
|
+
...(flags.description !== undefined && {
|
|
66
|
+
description: flags.description,
|
|
67
|
+
}),
|
|
68
|
+
...(flags.category !== undefined && { category: flags.category }),
|
|
69
|
+
...(flags.email !== undefined && { email: flags.email }),
|
|
70
|
+
...(flags.website !== undefined && { website: flags.website }),
|
|
71
|
+
...(flags.address !== undefined && { address: flags.address }),
|
|
72
|
+
});
|
|
73
|
+
updateSpinner.stop();
|
|
74
|
+
if (isJsonMode()) {
|
|
75
|
+
json(response);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
success("WhatsApp sender profile updated", {
|
|
79
|
+
Number: response.phoneNumber,
|
|
80
|
+
"Display name": response.displayName ?? colors.dim("—"),
|
|
81
|
+
About: response.about ?? colors.dim("—"),
|
|
82
|
+
Description: response.description ?? colors.dim("—"),
|
|
83
|
+
Category: response.category ?? colors.dim("—"),
|
|
84
|
+
Email: response.email ?? colors.dim("—"),
|
|
85
|
+
Website: response.website ?? colors.dim("—"),
|
|
86
|
+
Address: response.address ?? colors.dim("—"),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
updateSpinner.stop();
|
|
91
|
+
if (err instanceof NotFoundError &&
|
|
92
|
+
err.message.includes("connected to WhatsApp")) {
|
|
93
|
+
error(err.message, {
|
|
94
|
+
hint: `Connect it first: sendly whatsapp connect --number ${args.number}`,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
else if (err instanceof NotFoundError) {
|
|
98
|
+
error("WhatsApp isn't available on your workspace yet.", {
|
|
99
|
+
hint: "WhatsApp is rolling out gradually — contact support@sendly.live for early access.",
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
throw err;
|
|
104
|
+
}
|
|
105
|
+
this.exit(1);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3doYXRzYXBwL3Byb2ZpbGUvdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsSUFBSSxFQUNKLE1BQU0sRUFDTixPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0sd0JBQXdCLENBQUM7QUFjaEMsTUFBTSxDQUFDLE9BQU8sT0FBTyxxQkFBc0IsU0FBUSxvQkFBb0I7SUFDckUsTUFBTSxDQUFDLFdBQVcsR0FDaEIsc0ZBQXNGLENBQUM7SUFFekYsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQiw4RkFBOEY7UUFDOUYsZ0hBQWdIO0tBQ2pILENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDbEIsV0FBVyxFQUFFLGlEQUFpRDtZQUM5RCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLEdBQUcsb0JBQW9CLENBQUMsU0FBUztRQUNqQyxjQUFjLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUMzQixXQUFXLEVBQUUsa0NBQWtDO1NBQ2hELENBQUM7UUFDRixLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNsQixXQUFXLEVBQUUsdUNBQXVDO1NBQ3JELENBQUM7UUFDRixXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN4QixXQUFXLEVBQUUsa0RBQWtEO1NB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QUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzLCBGbGFncyB9IGZyb20gXCJAb2NsaWYvY29yZVwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRlZENvbW1hbmQgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2Jhc2UtY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgYXBpQ2xpZW50LCBOb3RGb3VuZEVycm9yIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQge1xuICBzdWNjZXNzLFxuICBlcnJvcixcbiAganNvbixcbiAgY29sb3JzLFxuICBzcGlubmVyLFxuICBpc0pzb25Nb2RlLFxufSBmcm9tIFwiLi4vLi4vLi4vbGliL291dHB1dC5qc1wiO1xuXG5pbnRlcmZhY2UgV2hhdHNhcHBTZW5kZXJQcm9maWxlIHtcbiAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHByb2ZpbGVQaG90b1VybDogc3RyaW5nIHwgbnVsbDtcbiAgY2F0ZWdvcnk6IHN0cmluZyB8IG51bGw7XG4gIGFib3V0OiBzdHJpbmcgfCBudWxsO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgZW1haWw6IHN0cmluZyB8IG51bGw7XG4gIHdlYnNpdGU6IHN0cmluZyB8IG51bGw7XG4gIGFkZHJlc3M6IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdoYXRzYXBwUHJvZmlsZVVwZGF0ZSBleHRlbmRzIEF1dGhlbnRpY2F0ZWRDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICBcIlVwZGF0ZSB0aGUgV2hhdHNBcHAgYnVzaW5lc3MgcHJvZmlsZSBjdXN0b21lcnMgc2VlIGZvciBvbmUgb2YgeW91ciBjb25uZWN0ZWQgbnVtYmVyc1wiO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICAnPCU9IGNvbmZpZy5iaW4gJT4gd2hhdHNhcHAgcHJvZmlsZSB1cGRhdGUgKzE1NTUxMjM0NTY3IC0tYWJvdXQgXCJGYW1pbHktcnVuIGJha2VyeSBpbiBBdXN0aW5cIicsXG4gICAgJzwlPSBjb25maWcuYmluICU+IHdoYXRzYXBwIHByb2ZpbGUgdXBkYXRlICsxNTU1MTIzNDU2NyAtLXdlYnNpdGUgaHR0cHM6Ly9leGFtcGxlLmNvbSAtLWVtYWlsIGhlbGxvQGV4YW1wbGUuY29tJyxcbiAgXTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBudW1iZXI6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIldoYXRzQXBwLWNvbm5lY3RlZCBzZW5kZXIgbnVtYmVyIChFLjE2NCBmb3JtYXQpXCIsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgLi4uQXV0aGVudGljYXRlZENvbW1hbmQuYmFzZUZsYWdzLFxuICAgIFwiZGlzcGxheS1uYW1lXCI6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJCdXNpbmVzcyBuYW1lIHNob3duIHRvIGN1c3RvbWVyc1wiLFxuICAgIH0pLFxuICAgIGFib3V0OiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiU2hvcnQgYWJvdXQgbGluZSAobWF4IDEzOSBjaGFyYWN0ZXJzKVwiLFxuICAgIH0pLFxuICAgIGRlc2NyaXB0aW9uOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiTG9uZ2VyIGJ1c2luZXNzIGRlc2NyaXB0aW9uIChtYXggNTEyIGNoYXJhY3RlcnMpXCIsXG4gICAgfSksXG4gICAgY2F0ZWdvcnk6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJCdXNpbmVzcyBjYXRlZ29yeVwiLFxuICAgIH0pLFxuICAgIGVtYWlsOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246IFwiQ29udGFjdCBlbWFpbCBzaG93biBvbiB0aGUgcHJvZmlsZVwiLFxuICAgIH0pLFxuICAgIHdlYnNpdGU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJXZWJzaXRlIFVSTCBzaG93biBvbiB0aGUgcHJvZmlsZVwiLFxuICAgIH0pLFxuICAgIGFkZHJlc3M6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogXCJCdXNpbmVzcyBhZGRyZXNzIHNob3duIG9uIHRoZSBwcm9maWxlXCIsXG4gICAgfSksXG4gIH07XG5cbiAgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgYXJncywgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoV2hhdHNhcHBQcm9maWxlVXBkYXRlKTtcblxuICAgIGlmIChcbiAgICAgIGZsYWdzW1wiZGlzcGxheS1uYW1lXCJdID09PSB1bmRlZmluZWQgJiZcbiAgICAgIGZsYWdzLmFib3V0ID09PSB1bmRlZmluZWQgJiZcbiAgICAgIGZsYWdzLmRlc2NyaXB0aW9uID09PSB1bmRlZmluZWQgJiZcbiAgICAgIGZsYWdzLmNhdGVnb3J5ID09PSB1bmRlZmluZWQgJiZcbiAgICAgIGZsYWdzLmVtYWlsID09PSB1bmRlZmluZWQgJiZcbiAgICAgIGZsYWdzLndlYnNpdGUgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgZmxhZ3MuYWRkcmVzcyA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBlcnJvcihcIk5vdGhpbmcgdG8gdXBkYXRlXCIsIHtcbiAgICAgICAgaGludDogXCJQYXNzIGF0IGxlYXN0IG9uZSBvZiAtLWRpc3BsYXktbmFtZSwgLS1hYm91dCwgLS1kZXNjcmlwdGlvbiwgLS1jYXRlZ29yeSwgLS1lbWFpbCwgLS13ZWJzaXRlLCAtLWFkZHJlc3NcIixcbiAgICAgIH0pO1xuICAgICAgdGhpcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZVNwaW5uZXIgPSBzcGlubmVyKFwiVXBkYXRpbmcgV2hhdHNBcHAgcHJvZmlsZS4uLlwiKTtcbiAgICBpZiAoIWlzSnNvbk1vZGUoKSkge1xuICAgICAgdXBkYXRlU3Bpbm5lci5zdGFydCgpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaUNsaWVudC5wYXRjaDxXaGF0c2FwcFNlbmRlclByb2ZpbGU+KFxuICAgICAgICBgL2FwaS92MS93aGF0c2FwcC9zZW5kZXJzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3MubnVtYmVyKX0vcHJvZmlsZWAsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi4oZmxhZ3NbXCJkaXNwbGF5LW5hbWVcIl0gIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogZmxhZ3NbXCJkaXNwbGF5LW5hbWVcIl0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLi4uKGZsYWdzLmFib3V0ICE9PSB1bmRlZmluZWQgJiYgeyBhYm91dDogZmxhZ3MuYWJvdXQgfSksXG4gICAgICAgICAgLi4uKGZsYWdzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IGZsYWdzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihmbGFncy5jYXRlZ29yeSAhPT0gdW5kZWZpbmVkICYmIHsgY2F0ZWdvcnk6IGZsYWdzLmNhdGVnb3J5IH0pLFxuICAgICAgICAgIC4uLihmbGFncy5lbWFpbCAhPT0gdW5kZWZpbmVkICYmIHsgZW1haWw6IGZsYWdzLmVtYWlsIH0pLFxuICAgICAgICAgIC4uLihmbGFncy53ZWJzaXRlICE9PSB1bmRlZmluZWQgJiYgeyB3ZWJzaXRlOiBmbGFncy53ZWJzaXRlIH0pLFxuICAgICAgICAgIC4uLihmbGFncy5hZGRyZXNzICE9PSB1bmRlZmluZWQgJiYgeyBhZGRyZXNzOiBmbGFncy5hZGRyZXNzIH0pLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgdXBkYXRlU3Bpbm5lci5zdG9wKCk7XG5cbiAgICAgIGlmIChpc0pzb25Nb2RlKCkpIHtcbiAgICAgICAganNvbihyZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc3VjY2VzcyhcIldoYXRzQXBwIHNlbmRlciBwcm9maWxlIHVwZGF0ZWRcIiwge1xuICAgICAgICBOdW1iZXI6IHJlc3BvbnNlLnBob25lTnVtYmVyLFxuICAgICAgICBcIkRpc3BsYXkgbmFtZVwiOiByZXNwb25zZS5kaXNwbGF5TmFtZSA/PyBjb2xvcnMuZGltKFwi4oCUXCIpLFxuICAgICAgICBBYm91dDogcmVzcG9uc2UuYWJvdXQgPz8gY29sb3JzLmRpbShcIuKAlFwiKSxcbiAgICAgICAgRGVzY3JpcHRpb246IHJlc3BvbnNlLmRlc2NyaXB0aW9uID8/IGNvbG9ycy5kaW0oXCLigJRcIiksXG4gICAgICAgIENhdGVnb3J5OiByZXNwb25zZS5jYXRlZ29yeSA/PyBjb2xvcnMuZGltKFwi4oCUXCIpLFxuICAgICAgICBFbWFpbDogcmVzcG9uc2UuZW1haWwgPz8gY29sb3JzLmRpbShcIuKAlFwiKSxcbiAgICAgICAgV2Vic2l0ZTogcmVzcG9uc2Uud2Vic2l0ZSA/PyBjb2xvcnMuZGltKFwi4oCUXCIpLFxuICAgICAgICBBZGRyZXNzOiByZXNwb25zZS5hZGRyZXNzID8/IGNvbG9ycy5kaW0oXCLigJRcIiksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgdXBkYXRlU3Bpbm5lci5zdG9wKCk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgZXJyIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvciAmJlxuICAgICAgICBlcnIubWVzc2FnZS5pbmNsdWRlcyhcImNvbm5lY3RlZCB0byBXaGF0c0FwcFwiKVxuICAgICAgKSB7XG4gICAgICAgIGVycm9yKGVyci5tZXNzYWdlLCB7XG4gICAgICAgICAgaGludDogYENvbm5lY3QgaXQgZmlyc3Q6IHNlbmRseSB3aGF0c2FwcCBjb25uZWN0IC0tbnVtYmVyICR7YXJncy5udW1iZXJ9YCxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEZvdW5kRXJyb3IpIHtcbiAgICAgICAgZXJyb3IoXCJXaGF0c0FwcCBpc24ndCBhdmFpbGFibGUgb24geW91ciB3b3Jrc3BhY2UgeWV0LlwiLCB7XG4gICAgICAgICAgaGludDogXCJXaGF0c0FwcCBpcyByb2xsaW5nIG91dCBncmFkdWFsbHkg4oCUIGNvbnRhY3Qgc3VwcG9ydEBzZW5kbHkubGl2ZSBmb3IgZWFybHkgYWNjZXNzLlwiLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZXhpdCgxKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from "../../lib/base-command.js";
|
|
2
|
+
export default class WhatsappSend extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
to: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
7
|
+
from: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
text: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
9
|
+
template: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
language: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
var: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
"idempotency-key": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
13
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
14
|
+
quiet: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|