UNPKG

10.3 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const operators_1 = require("rxjs/operators");
4const CRUDBase_1 = require("./CRUDBase");
5class CRUDResourceBase extends CRUDBase_1.CRUDBase {
6 constructor({ name, names, resourceType, help, aliases, extraArgs, options, autocomplete, hidden, }) {
7 const commandBase = `${name} ${resourceType.name} <name>`;
8 const command = extraArgs === undefined ? commandBase : `${commandBase} ${extraArgs.join(' ')}`;
9 super({
10 name,
11 names,
12 command,
13 resourceType,
14 help,
15 aliases,
16 options,
17 autocomplete,
18 hidden,
19 });
20 }
21 async getCLIName({ baseName }) {
22 return Promise.resolve(baseName);
23 }
24 async getCLIAutocomplete(options) {
25 const { cli } = options;
26 try {
27 const resourceOptions = await this.getCLIAutocompleteResourceOptions(options);
28 const resources = await cli.client
29 .getResources$({
30 plugin: this.resourceType.plugin.name,
31 resourceType: this.resourceType.name,
32 options: resourceOptions,
33 })
34 .pipe(operators_1.take(1))
35 .toPromise()
36 .then((results) => results.map((result) => result.baseName));
37 return [...new Set(resources.concat(this.autocomplete))];
38 }
39 catch (error) {
40 this.resourceType.plugin.monitor.logError({
41 name: 'neo_crud_get_cli_autocomplete_error',
42 message: 'Failed to fetch cli autocomplete.',
43 error,
44 });
45 return this.autocomplete;
46 }
47 }
48 // Extract options that will be passed to ResourceType#filterResources.
49 async getCLIAutocompleteResourceOptions({ cli }) {
50 return this.getCLIResourceOptions({ cli, args: {}, options: {} });
51 }
52 // Function to execute before the command. Useful if you want to do things
53 // like call other commands, e.g. `activate <name>` before activating another
54 // name.
55 async preExecCLI(_options) {
56 return Promise.resolve();
57 }
58 // Function to execute after the command is complete. Useful if you want to do
59 // things like call other commands, e.g. `activate <name>` after starting
60 // <name>
61 async postExecCLI(_options) {
62 return Promise.resolve();
63 }
64}
65exports.CRUDResourceBase = CRUDResourceBase;
66
67//# sourceMappingURL=data:application/json;charset=utf8;base64,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RSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFoRkQsNENBZ0ZDIiwiZmlsZSI6Im5lby1vbmUtc2VydmVyLXBsdWdpbi9zcmMvQ1JVRFJlc291cmNlQmFzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDTElPcHRpb24sIENSVURCYXNlLCBOYW1lc0luIH0gZnJvbSAnLi9DUlVEQmFzZSc7XG5pbXBvcnQgeyBSZXNvdXJjZVR5cGUgfSBmcm9tICcuL1Jlc291cmNlVHlwZSc7XG5pbXBvcnQgeyBCYXNlUmVzb3VyY2UsIEJhc2VSZXNvdXJjZU9wdGlvbnMsIEludGVyYWN0aXZlQ0xJIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY0NMSU9wdGlvbnM8UmVzb3VyY2VPcHRpb25zIGV4dGVuZHMgQmFzZVJlc291cmNlT3B0aW9ucz4ge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsaTogSW50ZXJhY3RpdmVDTEk7XG4gIHJlYWRvbmx5IG9wdGlvbnM6IFJlc291cmNlT3B0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRDTElBdXRvY29tcGxldGVPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpOiBJbnRlcmFjdGl2ZUNMSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDUlVEUmVzb3VyY2VPcHRpb25zPFJlc291cmNlIGV4dGVuZHMgQmFzZVJlc291cmNlLCBSZXNvdXJjZU9wdGlvbnMgZXh0ZW5kcyBCYXNlUmVzb3VyY2VPcHRpb25zPiB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZXM/OiBOYW1lc0luO1xuICByZWFkb25seSByZXNvdXJjZVR5cGU6IFJlc291cmNlVHlwZTxSZXNvdXJjZSwgUmVzb3VyY2VPcHRpb25zPjtcbiAgcmVhZG9ubHkgaGVscDogc3RyaW5nO1xuICByZWFkb25seSBhbGlhc2VzPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xuICByZWFkb25seSBleHRyYUFyZ3M/OiBSZWFkb25seUFycmF5PHN0cmluZz47XG4gIHJlYWRvbmx5IG9wdGlvbnM/OiBSZWFkb25seUFycmF5PENMSU9wdGlvbj47XG4gIHJlYWRvbmx5IGF1dG9jb21wbGV0ZT86IFJlYWRvbmx5QXJyYXk8c3RyaW5nPjtcbiAgcmVhZG9ubHkgaGlkZGVuPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRDTElOYW1lT3B0aW9uczxSZXNvdXJjZU9wdGlvbnMgZXh0ZW5kcyBCYXNlUmVzb3VyY2VPcHRpb25zPiB7XG4gIHJlYWRvbmx5IGJhc2VOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsaTogSW50ZXJhY3RpdmVDTEk7XG4gIHJlYWRvbmx5IG9wdGlvbnM6IFJlc291cmNlT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIENSVURSZXNvdXJjZUJhc2U8XG4gIFJlc291cmNlIGV4dGVuZHMgQmFzZVJlc291cmNlID0gQmFzZVJlc291cmNlLFxuICBSZXNvdXJjZU9wdGlvbnMgZXh0ZW5kcyBCYXNlUmVzb3VyY2VPcHRpb25zID0gQmFzZVJlc291cmNlT3B0aW9uc1xuPiBleHRlbmRzIENSVURCYXNlPFJlc291cmNlLCBSZXNvdXJjZU9wdGlvbnM+IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHtcbiAgICBuYW1lLFxuICAgIG5hbWVzLFxuICAgIHJlc291cmNlVHlwZSxcbiAgICBoZWxwLFxuICAgIGFsaWFzZXMsXG4gICAgZXh0cmFBcmdzLFxuICAgIG9wdGlvbnMsXG4gICAgYXV0b2NvbXBsZXRlLFxuICAgIGhpZGRlbixcbiAgfTogQ1JVRFJlc291cmNlT3B0aW9uczxSZXNvdXJjZSwgUmVzb3VyY2VPcHRpb25zPikge1xuICAgIGNvbnN0IGNvbW1hbmRCYXNlID0gYCR7bmFtZX0gJHtyZXNvdXJjZVR5cGUubmFtZX0gPG5hbWU+YDtcbiAgICBjb25zdCBjb21tYW5kID0gZXh0cmFBcmdzID09PSB1bmRlZmluZWQgPyBjb21tYW5kQmFzZSA6IGAke2NvbW1hbmRCYXNlfSAke2V4dHJhQXJncy5qb2luKCcgJyl9YDtcblxuICAgIHN1cGVyKHtcbiAgICAgIG5hbWUsXG4gICAgICBuYW1lcyxcbiAgICAgIGNvbW1hbmQsXG4gICAgICByZXNvdXJjZVR5cGUsXG4gICAgICBoZWxwLFxuICAgICAgYWxpYXNlcyxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBhdXRvY29tcGxldGUsXG4gICAgICBoaWRkZW4sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q0xJTmFtZSh7IGJhc2VOYW1lIH06IEdldENMSU5hbWVPcHRpb25zPFJlc291cmNlT3B0aW9ucz4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoYmFzZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENMSUF1dG9jb21wbGV0ZShvcHRpb25zOiBHZXRDTElBdXRvY29tcGxldGVPcHRpb25zKTogUHJvbWlzZTxSZWFkb25seUFycmF5PHN0cmluZz4+IHtcbiAgICBjb25zdCB7IGNsaSB9ID0gb3B0aW9ucztcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzb3VyY2VPcHRpb25zID0gYXdhaXQgdGhpcy5nZXRDTElBdXRvY29tcGxldGVSZXNvdXJjZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgIGNvbnN0IHJlc291cmNlcyA9IGF3YWl0IGNsaS5jbGllbnRcbiAgICAgICAgLmdldFJlc291cmNlcyQoe1xuICAgICAgICAgIHBsdWdpbjogdGhpcy5yZXNvdXJjZVR5cGUucGx1Z2luLm5hbWUsXG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiB0aGlzLnJlc291cmNlVHlwZS5uYW1lLFxuICAgICAgICAgIG9wdGlvbnM6IHJlc291cmNlT3B0aW9ucyxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgIC50aGVuKChyZXN1bHRzKSA9PiByZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuYmFzZU5hbWUpKTtcblxuICAgICAgcmV0dXJuIFsuLi5uZXcgU2V0KHJlc291cmNlcy5jb25jYXQodGhpcy5hdXRvY29tcGxldGUpKV07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VUeXBlLnBsdWdpbi5tb25pdG9yLmxvZ0Vycm9yKHtcbiAgICAgICAgbmFtZTogJ25lb19jcnVkX2dldF9jbGlfYXV0b2NvbXBsZXRlX2Vycm9yJyxcbiAgICAgICAgbWVzc2FnZTogJ0ZhaWxlZCB0byBmZXRjaCBjbGkgYXV0b2NvbXBsZXRlLicsXG4gICAgICAgIGVycm9yLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZTtcbiAgICB9XG4gIH1cblxuICAvLyBFeHRyYWN0IG9wdGlvbnMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byBSZXNvdXJjZVR5cGUjZmlsdGVyUmVzb3VyY2VzLlxuICBwdWJsaWMgYXN5bmMgZ2V0Q0xJQXV0b2NvbXBsZXRlUmVzb3VyY2VPcHRpb25zKHsgY2xpIH06IEdldENMSUF1dG9jb21wbGV0ZU9wdGlvbnMpOiBQcm9taXNlPFJlc291cmNlT3B0aW9ucz4ge1xuICAgIHJldHVybiB0aGlzLmdldENMSVJlc291cmNlT3B0aW9ucyh7IGNsaSwgYXJnczoge30sIG9wdGlvbnM6IHt9IH0pO1xuICB9XG5cbiAgLy8gRnVuY3Rpb24gdG8gZXhlY3V0ZSBiZWZvcmUgdGhlIGNvbW1hbmQuIFVzZWZ1bCBpZiB5b3Ugd2FudCB0byBkbyB0aGluZ3NcbiAgLy8gbGlrZSBjYWxsIG90aGVyIGNvbW1hbmRzLCBlLmcuIGBhY3RpdmF0ZSA8bmFtZT5gIGJlZm9yZSBhY3RpdmF0aW5nIGFub3RoZXJcbiAgLy8gbmFtZS5cbiAgcHVibGljIGFzeW5jIHByZUV4ZWNDTEkoX29wdGlvbnM6IEV4ZWNDTElPcHRpb25zPFJlc291cmNlT3B0aW9ucz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICAvLyBGdW5jdGlvbiB0byBleGVjdXRlIGFmdGVyIHRoZSBjb21tYW5kIGlzIGNvbXBsZXRlLiBVc2VmdWwgaWYgeW91IHdhbnQgdG8gZG9cbiAgLy8gdGhpbmdzIGxpa2UgY2FsbCBvdGhlciBjb21tYW5kcywgZS5nLiBgYWN0aXZhdGUgPG5hbWU+YCBhZnRlciBzdGFydGluZ1xuICAvLyA8bmFtZT5cbiAgcHVibGljIGFzeW5jIHBvc3RFeGVjQ0xJKF9vcHRpb25zOiBFeGVjQ0xJT3B0aW9uczxSZXNvdXJjZU9wdGlvbnM+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG59XG4iXX0=