@sprucelabs/spruce-cli 29.0.1 → 29.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/build/__tests__/behavioral/skill/RegisteringAGoSkill.test.d.ts +5 -0
- package/build/__tests__/behavioral/skill/RegisteringAGoSkill.test.js +41 -0
- package/build/__tests__/behavioral/skill/RegisteringAGoSkill.test.js.map +1 -0
- package/build/__tests__/behavioral/skill/UnregisteringASkill.test.d.ts +23 -0
- package/build/__tests__/behavioral/skill/UnregisteringASkill.test.js +143 -0
- package/build/__tests__/behavioral/skill/UnregisteringASkill.test.js.map +1 -0
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js +1 -0
- package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
- package/build/__tests__/behavioral/views/WorkingWithViewsInNodeModule.test.d.ts +10 -0
- package/build/__tests__/behavioral/views/WorkingWithViewsInNodeModule.test.js +78 -0
- package/build/__tests__/behavioral/views/WorkingWithViewsInNodeModule.test.js.map +1 -0
- package/build/__tests__/support/EventFaker.d.ts +7 -2
- package/build/__tests__/support/EventFaker.js +22 -2
- package/build/__tests__/support/EventFaker.js.map +1 -1
- package/build/errors/SpruceError.js +1 -1
- package/build/errors/SpruceError.js.map +1 -1
- package/build/features/FeatureInstaller.d.ts +1 -1
- package/build/features/FeatureInstallerFactory.js +3 -0
- package/build/features/FeatureInstallerFactory.js.map +1 -1
- package/build/features/global/GlobalFeature.d.ts +21 -0
- package/build/features/global/GlobalFeature.js +21 -0
- package/build/features/global/GlobalFeature.js.map +1 -0
- package/build/features/global/actions/UnregisterSkillAction.d.ts +18 -0
- package/build/features/global/actions/UnregisterSkillAction.js +59 -0
- package/build/features/global/actions/UnregisterSkillAction.js.map +1 -0
- package/build/features/permission/PermissionFeature.js +4 -0
- package/build/features/permission/PermissionFeature.js.map +1 -1
- package/build/features/permission/writers/PermissionWriter.js +1 -0
- package/build/features/permission/writers/PermissionWriter.js.map +1 -1
- package/build/features/view/ViewFeature.d.ts +2 -0
- package/build/features/view/ViewFeature.js +9 -1
- package/build/features/view/ViewFeature.js.map +1 -1
- package/build/features/view/writers/ViewWriter.js +1 -0
- package/build/features/view/writers/ViewWriter.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/behavioral/skill/RegisteringAGoSkill.test.ts +29 -0
- package/src/__tests__/behavioral/skill/UnregisteringASkill.test.ts +160 -0
- package/src/__tests__/behavioral/upgrading/UpgradingASkill3.test.ts +1 -0
- package/src/__tests__/behavioral/views/WorkingWithViewsInNodeModule.test.ts +75 -0
- package/src/__tests__/support/EventFaker.ts +48 -4
- package/src/errors/SpruceError.ts +1 -1
- package/src/features/FeatureInstallerFactory.ts +3 -0
- package/src/features/global/GlobalFeature.ts +29 -0
- package/src/features/global/actions/UnregisterSkillAction.ts +67 -0
- package/src/features/permission/PermissionFeature.ts +4 -0
- package/src/features/permission/writers/PermissionWriter.ts +1 -0
- package/src/features/view/ViewFeature.ts +11 -3
- package/src/features/view/writers/ViewWriter.ts +1 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import AbstractAction from '../../AbstractAction';
|
|
2
|
+
import { ActionOptions, FeatureActionResponse } from '../../features.types';
|
|
3
|
+
declare const optionsSchema: {
|
|
4
|
+
id: string;
|
|
5
|
+
description: string;
|
|
6
|
+
fields: {};
|
|
7
|
+
};
|
|
8
|
+
type OptionsSchema = typeof optionsSchema;
|
|
9
|
+
export default class UnregisterSkillAction extends AbstractAction<OptionsSchema> {
|
|
10
|
+
optionsSchema: OptionsSchema;
|
|
11
|
+
commandAliases: string[];
|
|
12
|
+
invocationMessage: string;
|
|
13
|
+
private skills;
|
|
14
|
+
constructor(options: ActionOptions);
|
|
15
|
+
execute(): Promise<FeatureActionResponse>;
|
|
16
|
+
private skillToChoices;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const schema_1 = require("@sprucelabs/schema");
|
|
7
|
+
const SpruceError_1 = __importDefault(require("../../../errors/SpruceError"));
|
|
8
|
+
const AbstractAction_1 = __importDefault(require("../../AbstractAction"));
|
|
9
|
+
const optionsSchema = (0, schema_1.buildSchema)({
|
|
10
|
+
id: 'unregisterSkill',
|
|
11
|
+
description: 'Unregister a skill from your account.',
|
|
12
|
+
fields: {},
|
|
13
|
+
});
|
|
14
|
+
class UnregisterSkillAction extends AbstractAction_1.default {
|
|
15
|
+
optionsSchema = optionsSchema;
|
|
16
|
+
commandAliases = ['unregister.skill'];
|
|
17
|
+
invocationMessage = 'Unregistering skill... 🔧';
|
|
18
|
+
skills;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
super(options);
|
|
21
|
+
this.skills = this.Store('skill');
|
|
22
|
+
}
|
|
23
|
+
async execute() {
|
|
24
|
+
const response = {};
|
|
25
|
+
const skills = await this.skills.fetchMySkills();
|
|
26
|
+
if (skills.length > 0) {
|
|
27
|
+
const skillId = await this.ui.prompt({
|
|
28
|
+
type: 'select',
|
|
29
|
+
isRequired: true,
|
|
30
|
+
options: {
|
|
31
|
+
choices: skills.map((skill) => this.skillToChoices(skill)),
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
const match = skills.find((s) => s.id === skillId);
|
|
35
|
+
const confirm = await this.ui.confirm(`Are you sure you want to unregister the skill "${match?.name}"?`);
|
|
36
|
+
if (confirm) {
|
|
37
|
+
await this.skills.unregisterSkill(skillId);
|
|
38
|
+
response.summaryLines = [`Unregistered ${match?.name}`];
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
response.summaryLines = ['Unregister cancelled.'];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
response.errors = [
|
|
46
|
+
new SpruceError_1.default({ code: 'NO_SKILLS_REGISTERED' }),
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
return response;
|
|
50
|
+
}
|
|
51
|
+
skillToChoices(skill) {
|
|
52
|
+
return {
|
|
53
|
+
value: skill.id,
|
|
54
|
+
label: `${skill.slug}: ${skill.name}`,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.default = UnregisterSkillAction;
|
|
59
|
+
//# sourceMappingURL=UnregisterSkillAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnregisterSkillAction.js","sourceRoot":"","sources":["../../../../src/features/global/actions/UnregisterSkillAction.ts"],"names":[],"mappings":";;;;;AAAA,+CAAgD;AAEhD,8EAAqD;AACrD,0EAAiD;AAIjD,MAAM,aAAa,GAAG,IAAA,oBAAW,EAAC;IAC9B,EAAE,EAAE,iBAAiB;IACrB,WAAW,EAAE,uCAAuC;IACpD,MAAM,EAAE,EAAE;CACb,CAAC,CAAA;AAIF,MAAqB,qBAAsB,SAAQ,wBAA6B;IACrE,aAAa,GAAkB,aAAa,CAAA;IAC5C,cAAc,GAAG,CAAC,kBAAkB,CAAC,CAAA;IACrC,iBAAiB,GAAG,2BAA2B,CAAA;IAC9C,MAAM,CAAY;IAE1B,YAAmB,OAAsB;QACrC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,MAAM,QAAQ,GAA0B,EAAE,CAAA;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAA;QAChD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;gBACjC,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE;oBACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;iBAC7D;aACJ,CAAC,CAAA;YAEF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;YAElD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CACjC,kDAAkD,KAAK,EAAE,IAAI,IAAI,CACpE,CAAA;YAED,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;gBAC1C,QAAQ,CAAC,YAAY,GAAG,CAAC,gBAAgB,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3D,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,YAAY,GAAG,CAAC,uBAAuB,CAAC,CAAA;YACrD,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,MAAM,GAAG;gBACd,IAAI,qBAAW,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;aACpD,CAAA;QACL,CAAC;QAED,OAAO,QAAQ,CAAA;IACnB,CAAC;IAEO,cAAc,CAAC,KAAgB;QACnC,OAAO;YACH,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;SACxC,CAAA;IACL,CAAC;CACJ;AAnDD,wCAmDC"}
|
|
@@ -37,6 +37,10 @@ class PermissionFeature extends AbstractFeature_1.default {
|
|
|
37
37
|
return {};
|
|
38
38
|
}
|
|
39
39
|
async afterPackageInstall() {
|
|
40
|
+
const isInstalled = await this.features.isInstalled('skill');
|
|
41
|
+
if (!isInstalled) {
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
40
44
|
const files = await this.writePlugin();
|
|
41
45
|
const combinedFile = await this.writeTypesFile();
|
|
42
46
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionFeature.js","sourceRoot":"","sources":["../../../src/features/permission/PermissionFeature.ts"],"names":[],"mappings":";;;;;AACA,uEAAqE;AACrE,yEAG2B;AAI3B,MAAqB,iBAAkB,SAAQ,yBAAe;IACnD,IAAI,GAAgB,YAAY,CAAA;IAChC,YAAY,GAAG,YAAY,CAAA;IAC3B,WAAW,GAAG,mCAAmC,CAAA;IACjD,UAAU,GAAG,6BAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACvD,oBAAoB,GAAiB;QACxC;YACI,IAAI,EAAE,6CAA6C;SACtD;KACJ,CAAA;IACO,MAAM,CAAkB;IAEhC,YAAmB,OAAuB;QACtC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAEvC,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE,CAChB,qBAAqB,EACrB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CACzC,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,EAChC,WAAW,EACX,UAAU,GAIb;QACG,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;QACjE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACjE,MAAM,WAAW,GAAG,WAAW,KAAK,MAAM,IAAI,UAAU,KAAK,SAAS,CAAA;QACtE,MAAM,eAAe,GAAG,WAAW,KAAK,OAAO,IAAI,UAAU,KAAK,MAAM,CAAA;QAExE,IAAI,WAAW,IAAI,CAAC,WAAW,IAAI,eAAe,CAAC,EAAE,CAAC;YAClD,MAAM,YAAY,GAAG,gBAAgB;gBACjC,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE;gBAC1B,CAAC,CAAC,EAAE,CAAA;YACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAEnE,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,CAAA;YAC3D,OAAO,OAAO,CAAA;QAClB,CAAC;QAED,OAAO,EAAE,CAAA;IACb,CAAC;IAEM,KAAK,CAAC,mBAAmB;QAC5B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAEhD,OAAO;YACH,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,YAAY,CAAC;SACrC,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,cAAc;QACxB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CACnC,IAAI,CAAC,GAAG,EACR,EAA2B,CAC9B,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,WAAW;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5C,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"PermissionFeature.js","sourceRoot":"","sources":["../../../src/features/permission/PermissionFeature.ts"],"names":[],"mappings":";;;;;AACA,uEAAqE;AACrE,yEAG2B;AAI3B,MAAqB,iBAAkB,SAAQ,yBAAe;IACnD,IAAI,GAAgB,YAAY,CAAA;IAChC,YAAY,GAAG,YAAY,CAAA;IAC3B,WAAW,GAAG,mCAAmC,CAAA;IACjD,UAAU,GAAG,6BAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACvD,oBAAoB,GAAiB;QACxC;YACI,IAAI,EAAE,6CAA6C;SACtD;KACJ,CAAA;IACO,MAAM,CAAkB;IAEhC,YAAmB,OAAuB;QACtC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAEvC,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE,CAChB,qBAAqB,EACrB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CACzC,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,EAChC,WAAW,EACX,UAAU,GAIb;QACG,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;QACjE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACjE,MAAM,WAAW,GAAG,WAAW,KAAK,MAAM,IAAI,UAAU,KAAK,SAAS,CAAA;QACtE,MAAM,eAAe,GAAG,WAAW,KAAK,OAAO,IAAI,UAAU,KAAK,MAAM,CAAA;QAExE,IAAI,WAAW,IAAI,CAAC,WAAW,IAAI,eAAe,CAAC,EAAE,CAAC;YAClD,MAAM,YAAY,GAAG,gBAAgB;gBACjC,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE;gBAC1B,CAAC,CAAC,EAAE,CAAA;YACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAEnE,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,CAAA;YAC3D,OAAO,OAAO,CAAA;QAClB,CAAC;QAED,OAAO,EAAE,CAAA;IACb,CAAC;IAEM,KAAK,CAAC,mBAAmB;QAC5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,EAAE,CAAA;QACb,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAEhD,OAAO;YACH,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,YAAY,CAAC;SACrC,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,cAAc;QACxB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CACnC,IAAI,CAAC,GAAG,EACR,EAA2B,CAC9B,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,WAAW;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5C,CAAC;CACJ;AAtED,oCAsEC"}
|
|
@@ -46,6 +46,7 @@ class PermissionWriter extends AbstractWriter_1.default {
|
|
|
46
46
|
return files;
|
|
47
47
|
}
|
|
48
48
|
writePlugin(cwd) {
|
|
49
|
+
debugger;
|
|
49
50
|
const destination = spruce_skill_utils_1.diskUtil.resolveHashSprucePath(cwd, 'features', 'permission.plugin.ts');
|
|
50
51
|
const pluginContents = this.templates.permissionPlugin();
|
|
51
52
|
const results = this.writeFileIfChangedMixinResults(destination, pluginContents, 'Enable permission support in your skill.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionWriter.js","sourceRoot":"","sources":["../../../../src/features/permission/writers/PermissionWriter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PermissionWriter.js","sourceRoot":"","sources":["../../../../src/features/permission/writers/PermissionWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ export default class ViewFeature extends AbstractFeature {
|
|
|
11
11
|
constructor(options: ActionOptions);
|
|
12
12
|
private handleDidExecuteUpgrade;
|
|
13
13
|
afterPackageInstall(): Promise<{
|
|
14
|
+
files?: undefined;
|
|
15
|
+
} | {
|
|
14
16
|
files: import("../../writers/AbstractWriter").WriteResults;
|
|
15
17
|
}>;
|
|
16
18
|
}
|
|
@@ -61,11 +61,19 @@ class ViewFeature extends AbstractFeature_1.default {
|
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
async handleDidExecuteUpgrade() {
|
|
64
|
-
const
|
|
64
|
+
const isInstalled = await this.features.isInstalled('skill');
|
|
65
|
+
let files = [];
|
|
66
|
+
if (isInstalled) {
|
|
67
|
+
files = await this.Writer('view').writePlugin(this.cwd);
|
|
68
|
+
}
|
|
65
69
|
const results = await this.Action('view', 'sync').execute({});
|
|
66
70
|
return [...files, ...(results?.files ?? [])];
|
|
67
71
|
}
|
|
68
72
|
async afterPackageInstall() {
|
|
73
|
+
const isInstalled = await this.features.isInstalled('skill');
|
|
74
|
+
if (!isInstalled) {
|
|
75
|
+
return {};
|
|
76
|
+
}
|
|
69
77
|
const files = await this.Writer('view').writePlugin(this.cwd);
|
|
70
78
|
this.Service('dependency').add({
|
|
71
79
|
id: '**',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewFeature.js","sourceRoot":"","sources":["../../../src/features/view/ViewFeature.ts"],"names":[],"mappings":";;;;;AAAA,uEAAyD;AAEzD,yEAAuE;AAGvE,MAAqB,WAAY,SAAQ,yBAAe;IAC7C,YAAY,GAAG,OAAO,CAAA;IACtB,WAAW,GAAG,oDAAoD,CAAA;IAClE,IAAI,GAAgB,MAAM,CAAA;IAC1B,UAAU,GAAG,6BAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAE9C,oBAAoB,GAAiB;QACjD;YACI,IAAI,EAAE,+CAA+C;SACxD;QACD;YACI,IAAI,EAAE,uCAAuC;SAChD;KACJ,CAAA;IAEM,YAAY,GAAwB;QACvC;YACI,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI;SACnB;QACD;YACI,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,IAAI;SACnB;QACD;YACI,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,IAAI;SACnB;KACJ,CAAA;IAED,YAAmB,OAAsB;QACrC,KAAK,CAAC,OAAO,CAAC,CAAA;QAEd,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC1D,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;YAC3C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YAE3D,IACI,WAAW;gBACX,WAAW,KAAK,MAAM;gBACtB,UAAU,KAAK,SAAS,EAC1B,CAAC;gBACC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAA;gBAClD,OAAO;oBACH,KAAK;iBACR,CAAA;YACL,CAAC;YACD,OAAO,EAAE,CAAA;QACb,CAAC,CAAC,CAAA;QAEF,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE,CAChB,qCAAqC,EACrC,KAAK,IAAI,EAAE;YACP,OAAO;gBACH,eAAe,EAAE;oBACb;wBACI,IAAI,EAAE,4BAA4B;wBAClC,KAAK,EAAE,4BAA4B;wBACnC,MAAM,EAAE,gCAAgC;wBACxC,WAAW,EAAE,MAAM;qBACtB;iBACJ;aACJ,CAAA;QACL,CAAC,CACJ,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"ViewFeature.js","sourceRoot":"","sources":["../../../src/features/view/ViewFeature.ts"],"names":[],"mappings":";;;;;AAAA,uEAAyD;AAEzD,yEAAuE;AAGvE,MAAqB,WAAY,SAAQ,yBAAe;IAC7C,YAAY,GAAG,OAAO,CAAA;IACtB,WAAW,GAAG,oDAAoD,CAAA;IAClE,IAAI,GAAgB,MAAM,CAAA;IAC1B,UAAU,GAAG,6BAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAE9C,oBAAoB,GAAiB;QACjD;YACI,IAAI,EAAE,+CAA+C;SACxD;QACD;YACI,IAAI,EAAE,uCAAuC;SAChD;KACJ,CAAA;IAEM,YAAY,GAAwB;QACvC;YACI,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI;SACnB;QACD;YACI,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,IAAI;SACnB;QACD;YACI,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,IAAI;SACnB;KACJ,CAAA;IAED,YAAmB,OAAsB;QACrC,KAAK,CAAC,OAAO,CAAC,CAAA;QAEd,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC1D,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;YAC3C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YAE3D,IACI,WAAW;gBACX,WAAW,KAAK,MAAM;gBACtB,UAAU,KAAK,SAAS,EAC1B,CAAC;gBACC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAA;gBAClD,OAAO;oBACH,KAAK;iBACR,CAAA;YACL,CAAC;YACD,OAAO,EAAE,CAAA;QACb,CAAC,CAAC,CAAA;QAEF,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE,CAChB,qCAAqC,EACrC,KAAK,IAAI,EAAE;YACP,OAAO;gBACH,eAAe,EAAE;oBACb;wBACI,IAAI,EAAE,4BAA4B;wBAClC,KAAK,EAAE,4BAA4B;wBACnC,MAAM,EAAE,gCAAgC;wBACxC,WAAW,EAAE,MAAM;qBACtB;iBACJ;aACJ,CAAA;QACL,CAAC,CACJ,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACjC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAC5D,IAAI,KAAK,GAAoB,EAAE,CAAA;QAC/B,IAAI,WAAW,EAAE,CAAC;YACd,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3D,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC7D,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IAEM,KAAK,CAAC,mBAAmB;QAC5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,EAAE,CAAA;QACb,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAE7D,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC;YAC3B,EAAE,EAAE,IAAI;YACR,SAAS,EAAE,WAAW;SACzB,CAAC,CAAA;QAEF,OAAO,EAAE,KAAK,EAAE,CAAA;IACpB,CAAC;CACJ;AA5FD,8BA4FC"}
|
|
@@ -89,6 +89,7 @@ class ViewWriter extends AbstractWriter_1.default {
|
|
|
89
89
|
return this.writeFileIfChangedMixinResults(destination, contents, `Your new view plugin!`);
|
|
90
90
|
}
|
|
91
91
|
writePlugin(cwd) {
|
|
92
|
+
debugger;
|
|
92
93
|
const destination = spruce_skill_utils_1.diskUtil.resolveHashSprucePath(cwd, 'features', 'view.plugin.ts');
|
|
93
94
|
const pluginContents = this.templates.viewPlugin();
|
|
94
95
|
const results = this.writeFileIfChangedMixinResults(destination, pluginContents, 'Supports your skill with rendering views.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewWriter.js","sourceRoot":"","sources":["../../../../src/features/view/writers/ViewWriter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ViewWriter.js","sourceRoot":"","sources":["../../../../src/features/view/writers/ViewWriter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "29.
|
|
7
|
+
"version": "29.1.1",
|
|
8
8
|
"skill": {
|
|
9
9
|
"namespace": "spruce-cli",
|
|
10
10
|
"upgradeIgnoreList": [
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"@sprucelabs/spruce-core-schemas": "^41.3.41",
|
|
86
86
|
"@sprucelabs/spruce-event-utils": "^41.0.160",
|
|
87
87
|
"@sprucelabs/spruce-skill-utils": "^32.1.16",
|
|
88
|
-
"@sprucelabs/spruce-templates": "^29.
|
|
88
|
+
"@sprucelabs/spruce-templates": "^29.1.1",
|
|
89
89
|
"@typescript-eslint/eslint-plugin": "^8.46.2",
|
|
90
90
|
"@typescript-eslint/parser": "^8.46.2",
|
|
91
91
|
"cfonts": "^3.3.1",
|
|
@@ -570,5 +570,5 @@
|
|
|
570
570
|
"conventional-changelog-sprucelabs"
|
|
571
571
|
]
|
|
572
572
|
},
|
|
573
|
-
"gitHead": "
|
|
573
|
+
"gitHead": "845fd4d6d04a29f5f4d0d045e572b9285b5c9ad0"
|
|
574
574
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { MercuryClientFactory } from '@sprucelabs/mercury-client'
|
|
2
|
+
import { test, assert } from '@sprucelabs/test-utils'
|
|
3
|
+
import AbstractCliTest from '../../../tests/AbstractCliTest'
|
|
4
|
+
|
|
5
|
+
export default class RegisteringAGoSkillTest extends AbstractCliTest {
|
|
6
|
+
@test.only()
|
|
7
|
+
protected static async stub() {}
|
|
8
|
+
|
|
9
|
+
@test()
|
|
10
|
+
protected static async canCreateRegisteringAGoSkill() {
|
|
11
|
+
MercuryClientFactory.setIsTestMode(true)
|
|
12
|
+
let wasHit = false
|
|
13
|
+
await this.eventFaker.fakeRegisterSkill(() => {
|
|
14
|
+
wasHit = true
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
await this.go.initGoProject()
|
|
18
|
+
|
|
19
|
+
await this.Action('skill', 'register', {
|
|
20
|
+
shouldAutoHandleDependencies: true,
|
|
21
|
+
}).execute({
|
|
22
|
+
nameReadable: 'My Go Skill',
|
|
23
|
+
nameKebab: 'my-go-skill',
|
|
24
|
+
description: 'A skill built with Go',
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
assert.isTrue(wasHit, 'Register skill event was not hit')
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MercuryClientFactory,
|
|
3
|
+
MercuryTestClient,
|
|
4
|
+
} from '@sprucelabs/mercury-client'
|
|
5
|
+
import { test, assert, generateId } from '@sprucelabs/test-utils'
|
|
6
|
+
import { FeatureActionResponse } from '../../../features/features.types'
|
|
7
|
+
import UnregisterSkillAction from '../../../features/global/actions/UnregisterSkillAction'
|
|
8
|
+
import AbstractCliTest from '../../../tests/AbstractCliTest'
|
|
9
|
+
import {
|
|
10
|
+
ListSkill,
|
|
11
|
+
ListSkillsTargetAndPayload,
|
|
12
|
+
UnregisterSkillTargetAndPayload,
|
|
13
|
+
} from '../../support/EventFaker'
|
|
14
|
+
|
|
15
|
+
export default class UnregisteringASkillTest extends AbstractCliTest {
|
|
16
|
+
private static action: UnregisterSkillAction
|
|
17
|
+
private static lastListSkillsPayload: ListSkillsTargetAndPayload['payload']
|
|
18
|
+
private static fakedSkills: ListSkill[] = []
|
|
19
|
+
private static executePromise: Promise<FeatureActionResponse>
|
|
20
|
+
private static lastUnregisterSkillTarget?: UnregisterSkillTargetAndPayload['target']
|
|
21
|
+
|
|
22
|
+
protected static async beforeEach(): Promise<void> {
|
|
23
|
+
await super.beforeEach()
|
|
24
|
+
MercuryClientFactory.setIsTestMode(true)
|
|
25
|
+
MercuryTestClient.setShouldRequireLocalListeners(true)
|
|
26
|
+
this.action = this.Action('global', 'unregisterSkill')
|
|
27
|
+
|
|
28
|
+
delete this.lastListSkillsPayload
|
|
29
|
+
delete this.lastUnregisterSkillTarget
|
|
30
|
+
|
|
31
|
+
this.fakedSkills = []
|
|
32
|
+
|
|
33
|
+
await this.eventFaker.fakeListSkills(({ payload }) => {
|
|
34
|
+
this.lastListSkillsPayload = payload
|
|
35
|
+
return this.fakedSkills
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
await this.eventFaker.fakeUnregisterSkill(({ target }) => {
|
|
39
|
+
this.lastUnregisterSkillTarget = target
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@test()
|
|
44
|
+
protected static async hasAction() {
|
|
45
|
+
assert.isFunction(this.action.execute, 'Action not found')
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@test()
|
|
49
|
+
protected static async firstThingListsSkills() {
|
|
50
|
+
await this.execute()
|
|
51
|
+
await this.waitUntilFinished()
|
|
52
|
+
|
|
53
|
+
assert.isEqualDeep(this.lastListSkillsPayload, {
|
|
54
|
+
shouldOnlyShowMine: true,
|
|
55
|
+
})
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@test()
|
|
59
|
+
protected static async presentsAnOptionForOnlySkillReturned() {
|
|
60
|
+
this.pushFakedSkill()
|
|
61
|
+
|
|
62
|
+
await this.executeAndWaitForInput()
|
|
63
|
+
this.assertProptsForAllSkills()
|
|
64
|
+
await this.selectSkill(0)
|
|
65
|
+
await this.pressEnter()
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@test()
|
|
69
|
+
protected static async presentsOptionsForMultipleSkills() {
|
|
70
|
+
this.pushFakedSkill()
|
|
71
|
+
this.pushFakedSkill()
|
|
72
|
+
this.pushFakedSkill()
|
|
73
|
+
|
|
74
|
+
await this.executeAndWaitForInput()
|
|
75
|
+
this.assertProptsForAllSkills()
|
|
76
|
+
|
|
77
|
+
await this.selectSkill(1)
|
|
78
|
+
await this.pressEnter()
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@test('can unregister first skill', 0)
|
|
82
|
+
@test('can unregister second skill', 1)
|
|
83
|
+
protected static async passesSelectedSkillToUnregister(idx: number) {
|
|
84
|
+
this.pushFakedSkill()
|
|
85
|
+
this.pushFakedSkill()
|
|
86
|
+
await this.executeAndWaitForInput()
|
|
87
|
+
await this.selectSkill(idx)
|
|
88
|
+
await this.pressEnter()
|
|
89
|
+
await this.waitUntilFinished()
|
|
90
|
+
|
|
91
|
+
assert.isEqualDeep(
|
|
92
|
+
this.lastUnregisterSkillTarget,
|
|
93
|
+
{
|
|
94
|
+
skillId: this.fakedSkills[idx].id,
|
|
95
|
+
},
|
|
96
|
+
'Skill ID not passed to unregister skill'
|
|
97
|
+
)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@test()
|
|
101
|
+
protected static async doesNotUnRegisterIfNotConfirmed() {
|
|
102
|
+
this.pushFakedSkill()
|
|
103
|
+
await this.executeAndWaitForInput()
|
|
104
|
+
await this.selectSkill(0)
|
|
105
|
+
await this.ui.sendInput('n')
|
|
106
|
+
await this.waitUntilFinished()
|
|
107
|
+
assert.isFalsy(
|
|
108
|
+
this.lastUnregisterSkillTarget,
|
|
109
|
+
'Unregister skill was called unexpectedly'
|
|
110
|
+
)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
private static async executeAndWaitForInput() {
|
|
114
|
+
await this.execute()
|
|
115
|
+
await this.waitForInput()
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
private static async selectSkill(idx: number) {
|
|
119
|
+
await this.ui.sendInput(this.fakedSkills[idx].id)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
private static assertProptsForAllSkills() {
|
|
123
|
+
const prompt = this.ui.getLastInvocation()
|
|
124
|
+
assert.isEqualDeep(prompt.options, {
|
|
125
|
+
type: 'select',
|
|
126
|
+
isRequired: true,
|
|
127
|
+
options: {
|
|
128
|
+
choices: this.generateExpectedSkillChoices(),
|
|
129
|
+
},
|
|
130
|
+
})
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
private static async pressEnter() {
|
|
134
|
+
await this.ui.sendInput('\n')
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
private static generateExpectedSkillChoices() {
|
|
138
|
+
return this.fakedSkills.map((skill) => ({
|
|
139
|
+
value: skill.id,
|
|
140
|
+
label: `${skill.slug}: ${skill.name}`,
|
|
141
|
+
}))
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
private static pushFakedSkill() {
|
|
145
|
+
this.fakedSkills.push({
|
|
146
|
+
id: generateId(),
|
|
147
|
+
dateCreated: Date.now(),
|
|
148
|
+
slug: generateId(),
|
|
149
|
+
name: generateId(),
|
|
150
|
+
})
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
private static async waitUntilFinished() {
|
|
154
|
+
await this.executePromise
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
private static async execute() {
|
|
158
|
+
this.executePromise = this.action.execute()
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import globby from '@sprucelabs/globby'
|
|
2
|
+
import { diskUtil } from '@sprucelabs/spruce-skill-utils'
|
|
3
|
+
import { test, assert } from '@sprucelabs/test-utils'
|
|
4
|
+
import CommandServiceImpl from '../../../services/CommandService'
|
|
5
|
+
import AbstractSkillTest from '../../../tests/AbstractSkillTest'
|
|
6
|
+
|
|
7
|
+
export default class WorkingWithViewsInNodeModuleTest extends AbstractSkillTest {
|
|
8
|
+
public static skillCacheKey = 'node'
|
|
9
|
+
|
|
10
|
+
protected static async beforeEach() {
|
|
11
|
+
await super.beforeEach()
|
|
12
|
+
CommandServiceImpl.fakeCommand(new RegExp(/^(?!code\b).*/), {
|
|
13
|
+
code: 0,
|
|
14
|
+
})
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@test()
|
|
18
|
+
protected static async creatingViewDoesNotWritePlugins() {
|
|
19
|
+
const promise = this.Action('view', 'create', {
|
|
20
|
+
shouldAutoHandleDependencies: true,
|
|
21
|
+
}).execute({
|
|
22
|
+
viewType: 'view',
|
|
23
|
+
nameReadable: 'My Test View',
|
|
24
|
+
viewModel: 'Card',
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
await this.waitForInput()
|
|
28
|
+
await this.ui.sendInput('n')
|
|
29
|
+
await this.waitForInput()
|
|
30
|
+
await this.ui.sendInput('y')
|
|
31
|
+
await this.waitForInput()
|
|
32
|
+
await this.ui.sendInput('y')
|
|
33
|
+
await this.waitForInput()
|
|
34
|
+
await this.ui.sendInput('y')
|
|
35
|
+
await this.waitForInput()
|
|
36
|
+
await this.ui.sendInput('')
|
|
37
|
+
await promise
|
|
38
|
+
|
|
39
|
+
await this.assertNoPluginsWritten()
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@test()
|
|
43
|
+
protected static async upgradingDoesNotWritePlugins() {
|
|
44
|
+
await this.upgrade()
|
|
45
|
+
await this.assertNoPluginsWritten()
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@test()
|
|
49
|
+
protected static async upgradeDoesRecreateViewsTs() {
|
|
50
|
+
const file = this.resolvePath('src/.spruce/views/views.ts')
|
|
51
|
+
const contents = diskUtil.readFile(file)
|
|
52
|
+
diskUtil.deleteFile(file)
|
|
53
|
+
|
|
54
|
+
await this.upgrade()
|
|
55
|
+
|
|
56
|
+
const newContents = diskUtil.readFile(file)
|
|
57
|
+
assert.isEqual(newContents, contents, 'views.ts should be rewritten.')
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private static async upgrade() {
|
|
61
|
+
await this.Action('node', 'upgrade').execute({})
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
private static async assertNoPluginsWritten() {
|
|
65
|
+
const matches = await globby('src/.spruce/features/*.plugin.ts', {
|
|
66
|
+
cwd: this.skillDir,
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
assert.isLength(
|
|
70
|
+
matches,
|
|
71
|
+
0,
|
|
72
|
+
`Should not create plugin files ${JSON.stringify(matches, null, 2)}.`
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -1,10 +1,41 @@
|
|
|
1
1
|
import { SpruceSchemas } from '@sprucelabs/mercury-types'
|
|
2
|
-
import { Organization } from '@sprucelabs/spruce-core-schemas'
|
|
2
|
+
import { Organization, Skill } from '@sprucelabs/spruce-core-schemas'
|
|
3
3
|
import { eventFaker } from '@sprucelabs/spruce-test-fixtures'
|
|
4
4
|
import { generateId } from '@sprucelabs/test-utils'
|
|
5
5
|
import { ListPermContractsTargetAndPayload } from '../../features/permission/stores/PermissionStore'
|
|
6
6
|
|
|
7
7
|
export default class EventFaker {
|
|
8
|
+
public async fakeUnregisterSkill(
|
|
9
|
+
cb?: (targetAndPayload: UnregisterSkillTargetAndPayload) => void
|
|
10
|
+
) {
|
|
11
|
+
await eventFaker.on(
|
|
12
|
+
'unregister-skill::v2020_12_25',
|
|
13
|
+
(targetAndPayload) => {
|
|
14
|
+
cb?.(targetAndPayload)
|
|
15
|
+
return {}
|
|
16
|
+
}
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
public async fakeRegisterSkill(
|
|
20
|
+
cb?: (targetAndPayload: RegisterSkillTargetAndPayload) => void | Skill
|
|
21
|
+
) {
|
|
22
|
+
await eventFaker.on(
|
|
23
|
+
'register-skill::v2020_12_25',
|
|
24
|
+
(targetAndPayload) => {
|
|
25
|
+
return {
|
|
26
|
+
skill: cb?.(targetAndPayload) ?? {
|
|
27
|
+
id: generateId(),
|
|
28
|
+
name: generateId(),
|
|
29
|
+
slug: generateId(),
|
|
30
|
+
apiKey: generateId(),
|
|
31
|
+
dateCreated: Date.now(),
|
|
32
|
+
creators: [],
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
8
39
|
public async fakeSyncPermissionContracts() {
|
|
9
40
|
await eventFaker.on('sync-permission-contracts::v2020_12_25', () => {
|
|
10
41
|
return {
|
|
@@ -58,10 +89,14 @@ export default class EventFaker {
|
|
|
58
89
|
}
|
|
59
90
|
}
|
|
60
91
|
|
|
61
|
-
public async fakeListSkills(
|
|
62
|
-
|
|
92
|
+
public async fakeListSkills(
|
|
93
|
+
cb?: (
|
|
94
|
+
targetAndPayload: ListSkillsTargetAndPayload
|
|
95
|
+
) => void | ListSkill[]
|
|
96
|
+
) {
|
|
97
|
+
await eventFaker.on('list-skills::v2020_12_25', (targetAndPayload) => {
|
|
63
98
|
return {
|
|
64
|
-
skills: cb?.() ?? [],
|
|
99
|
+
skills: cb?.(targetAndPayload) ?? [],
|
|
65
100
|
}
|
|
66
101
|
})
|
|
67
102
|
}
|
|
@@ -108,3 +143,12 @@ export default class EventFaker {
|
|
|
108
143
|
export type ListSkill = SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkill
|
|
109
144
|
export type CreateOrganizationTargetAndPayload =
|
|
110
145
|
SpruceSchemas.Mercury.v2020_12_25.CreateOrganizationEmitTargetAndPayload
|
|
146
|
+
|
|
147
|
+
export type RegisterSkillTargetAndPayload =
|
|
148
|
+
SpruceSchemas.Mercury.v2020_12_25.RegisterSkillEmitTargetAndPayload
|
|
149
|
+
|
|
150
|
+
export type ListSkillsTargetAndPayload =
|
|
151
|
+
SpruceSchemas.Mercury.v2020_12_25.ListSkillsEmitTargetAndPayload
|
|
152
|
+
|
|
153
|
+
export type UnregisterSkillTargetAndPayload =
|
|
154
|
+
SpruceSchemas.Mercury.v2020_12_25.UnregisterSkillEmitTargetAndPayload
|
|
@@ -174,7 +174,7 @@ export default class SpruceError extends AbstractSpruceError<ErrorOptions> {
|
|
|
174
174
|
break
|
|
175
175
|
|
|
176
176
|
case 'SKILL_NOT_REGISTERED':
|
|
177
|
-
message = `Dang! I can't continue until you register your skill! Run \`spruce login\` and then \`spruce register
|
|
177
|
+
message = `Dang! I can't continue until you register your skill! Run \`spruce login\` and then \`spruce register\` to get the ball rolling!`
|
|
178
178
|
break
|
|
179
179
|
|
|
180
180
|
case 'NO_ORGANIZATIONS_FOUND':
|
|
@@ -16,6 +16,7 @@ import EventFeature from './event/EventFeature'
|
|
|
16
16
|
import EventContractFeature from './eventContract/EventContractFeature'
|
|
17
17
|
import FeatureInstaller, { FeatureInstallerImpl } from './FeatureInstaller'
|
|
18
18
|
import { FeatureCode } from './features.types'
|
|
19
|
+
import GlobalFeature from './global/GlobalFeature'
|
|
19
20
|
import LogFeature from './log/LogFeature'
|
|
20
21
|
import NodeFeature from './node/NodeFeature'
|
|
21
22
|
import OnboardFeature from './onboard/OnboardFeature'
|
|
@@ -57,6 +58,7 @@ export default class FeatureInstallerFactory {
|
|
|
57
58
|
PolishFeature,
|
|
58
59
|
PermissionFeature,
|
|
59
60
|
AgentFeature,
|
|
61
|
+
GlobalFeature,
|
|
60
62
|
]
|
|
61
63
|
|
|
62
64
|
public static readonly featureCodes: FeatureCode[] = [
|
|
@@ -83,6 +85,7 @@ export default class FeatureInstallerFactory {
|
|
|
83
85
|
'polish',
|
|
84
86
|
'permission',
|
|
85
87
|
'agent',
|
|
88
|
+
'global',
|
|
86
89
|
]
|
|
87
90
|
|
|
88
91
|
public static WithAllFeatures(
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { diskUtil, NpmPackage } from '@sprucelabs/spruce-skill-utils'
|
|
2
|
+
import AbstractFeature, { FeatureDependency } from '../AbstractFeature'
|
|
3
|
+
import { FeatureCode } from '../features.types'
|
|
4
|
+
|
|
5
|
+
export default class GlobalFeature extends AbstractFeature {
|
|
6
|
+
public code: FeatureCode = 'global'
|
|
7
|
+
public nameReadable = 'Global'
|
|
8
|
+
public description =
|
|
9
|
+
'Place for all global actions that affect your Spruce account (outside your profile).'
|
|
10
|
+
public dependencies: FeatureDependency[] = []
|
|
11
|
+
public _packageDependencies: NpmPackage[] = []
|
|
12
|
+
|
|
13
|
+
public actionsDir = diskUtil.resolvePath(__dirname, 'actions')
|
|
14
|
+
public scripts = {}
|
|
15
|
+
|
|
16
|
+
public async isInstalled(): Promise<boolean> {
|
|
17
|
+
return true
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare module '../../features/features.types' {
|
|
22
|
+
interface FeatureMap {
|
|
23
|
+
global: GlobalFeature
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface FeatureOptionsMap {
|
|
27
|
+
global: undefined
|
|
28
|
+
}
|
|
29
|
+
}
|