@sprucelabs/spruce-cli 29.0.0 → 29.1.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/CHANGELOG.md +19 -0
- package/build/__tests__/behavioral/events/DifferentEventOptions.test.d.ts +16 -0
- package/build/__tests__/behavioral/events/DifferentEventOptions.test.js +105 -0
- package/build/__tests__/behavioral/events/DifferentEventOptions.test.js.map +1 -0
- package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
- 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__/support/EventFaker.d.ts +10 -2
- package/build/__tests__/support/EventFaker.js +49 -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/skill/stores/SkillStore.d.ts +1 -0
- package/build/features/skill/stores/SkillStore.js +3 -0
- package/build/features/skill/stores/SkillStore.js.map +1 -1
- package/build/widgets/terminalKit/TkTextWidget.js +3 -2
- package/build/widgets/terminalKit/TkTextWidget.js.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/behavioral/events/DifferentEventOptions.test.ts +134 -0
- package/src/__tests__/behavioral/events/KeepingEventsInSync.test.ts +0 -1
- package/src/__tests__/behavioral/skill/RegisteringAGoSkill.test.ts +29 -0
- package/src/__tests__/behavioral/skill/UnregisteringASkill.test.ts +160 -0
- package/src/__tests__/support/EventFaker.ts +75 -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/skill/stores/SkillStore.ts +4 -0
- package/src/widgets/terminalKit/TkTextWidget.ts +3 -2
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NpmPackage } from '@sprucelabs/spruce-skill-utils';
|
|
2
|
+
import AbstractFeature, { FeatureDependency } from '../AbstractFeature';
|
|
3
|
+
import { FeatureCode } from '../features.types';
|
|
4
|
+
export default class GlobalFeature extends AbstractFeature {
|
|
5
|
+
code: FeatureCode;
|
|
6
|
+
nameReadable: string;
|
|
7
|
+
description: string;
|
|
8
|
+
dependencies: FeatureDependency[];
|
|
9
|
+
_packageDependencies: NpmPackage[];
|
|
10
|
+
actionsDir: string;
|
|
11
|
+
scripts: {};
|
|
12
|
+
isInstalled(): Promise<boolean>;
|
|
13
|
+
}
|
|
14
|
+
declare module '../../features/features.types' {
|
|
15
|
+
interface FeatureMap {
|
|
16
|
+
global: GlobalFeature;
|
|
17
|
+
}
|
|
18
|
+
interface FeatureOptionsMap {
|
|
19
|
+
global: undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
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 spruce_skill_utils_1 = require("@sprucelabs/spruce-skill-utils");
|
|
7
|
+
const AbstractFeature_1 = __importDefault(require("../AbstractFeature"));
|
|
8
|
+
class GlobalFeature extends AbstractFeature_1.default {
|
|
9
|
+
code = 'global';
|
|
10
|
+
nameReadable = 'Global';
|
|
11
|
+
description = 'Place for all global actions that affect your Spruce account (outside your profile).';
|
|
12
|
+
dependencies = [];
|
|
13
|
+
_packageDependencies = [];
|
|
14
|
+
actionsDir = spruce_skill_utils_1.diskUtil.resolvePath(__dirname, 'actions');
|
|
15
|
+
scripts = {};
|
|
16
|
+
async isInstalled() {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.default = GlobalFeature;
|
|
21
|
+
//# sourceMappingURL=GlobalFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobalFeature.js","sourceRoot":"","sources":["../../../src/features/global/GlobalFeature.ts"],"names":[],"mappings":";;;;;AAAA,uEAAqE;AACrE,yEAAuE;AAGvE,MAAqB,aAAc,SAAQ,yBAAe;IAC/C,IAAI,GAAgB,QAAQ,CAAA;IAC5B,YAAY,GAAG,QAAQ,CAAA;IACvB,WAAW,GACd,sFAAsF,CAAA;IACnF,YAAY,GAAwB,EAAE,CAAA;IACtC,oBAAoB,GAAiB,EAAE,CAAA;IAEvC,UAAU,GAAG,6BAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACvD,OAAO,GAAG,EAAE,CAAA;IAEZ,KAAK,CAAC,WAAW;QACpB,OAAO,IAAI,CAAA;IACf,CAAC;CACJ;AAdD,gCAcC"}
|
|
@@ -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"}
|
|
@@ -22,6 +22,7 @@ export default class SkillStoreImpl extends AbstractStore implements SkillStore
|
|
|
22
22
|
private getSkillDescriptionFromPkg;
|
|
23
23
|
unregisterSkill(skillId?: string): Promise<void>;
|
|
24
24
|
fetchMySkills(): Promise<Pick<import("@sprucelabs/schema").SchemaStaticValues<SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillSchema, false, import("@sprucelabs/schema").SchemaOptionalFieldNames<SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillSchema>, import("@sprucelabs/schema").StaticSchemaAllValues<SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillSchema, false>>, "id" | "name" | "description" | "slug" | "isPublished" | "canBeInstalled" | "dateCreated" | "dateDeleted">[]>;
|
|
25
|
+
static setCurrentSkill(skill: CurrentSkill): void;
|
|
25
26
|
fetchAllSkills(query?: {
|
|
26
27
|
shouldOnlyShowMine?: boolean;
|
|
27
28
|
namespaces?: string[];
|
|
@@ -184,6 +184,9 @@ class SkillStoreImpl extends AbstractStore_1.default {
|
|
|
184
184
|
async fetchMySkills() {
|
|
185
185
|
return this.fetchAllSkills({ shouldOnlyShowMine: true });
|
|
186
186
|
}
|
|
187
|
+
static setCurrentSkill(skill) {
|
|
188
|
+
this.currentSkill = skill;
|
|
189
|
+
}
|
|
187
190
|
async fetchAllSkills(query) {
|
|
188
191
|
const client = await this.connectToApi();
|
|
189
192
|
const [{ skills }] = await client.emitAndFlattenResponses('list-skills::v2020_12_25', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkillStore.js","sourceRoot":"","sources":["../../../../src/features/skill/stores/SkillStore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SkillStore.js","sourceRoot":"","sources":["../../../../src/features/skill/stores/SkillStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,9 +115,10 @@ class TkTextWidget extends TkBaseWidget_1.default {
|
|
|
115
115
|
if (segment.length !== 1) {
|
|
116
116
|
return segment;
|
|
117
117
|
}
|
|
118
|
-
if (
|
|
118
|
+
if (segment.trim().length > 0) {
|
|
119
119
|
// Terminal-kit drops single-character chunks when parsing ANSI
|
|
120
|
-
// sequences, so pad with a zero-width space to keep
|
|
120
|
+
// sequences, so pad with a zero-width space to keep visible
|
|
121
|
+
// single characters (digits, braces, etc.) from disappearing.
|
|
121
122
|
return `${segment}`;
|
|
122
123
|
}
|
|
123
124
|
return segment;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TkTextWidget.js","sourceRoot":"","sources":["../../../src/widgets/terminalKit/TkTextWidget.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TkTextWidget.js","sourceRoot":"","sources":["../../../src/widgets/terminalKit/TkTextWidget.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.0",
|
|
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.0",
|
|
89
89
|
"@typescript-eslint/eslint-plugin": "^8.46.2",
|
|
90
90
|
"@typescript-eslint/parser": "^8.46.2",
|
|
91
91
|
"cfonts": "^3.3.1",
|
|
@@ -534,7 +534,7 @@
|
|
|
534
534
|
]
|
|
535
535
|
},
|
|
536
536
|
"jest": {
|
|
537
|
-
"maxWorkers":
|
|
537
|
+
"maxWorkers": 2,
|
|
538
538
|
"testTimeout": 600000,
|
|
539
539
|
"testEnvironment": "node",
|
|
540
540
|
"testPathIgnorePatterns": [
|
|
@@ -570,5 +570,5 @@
|
|
|
570
570
|
"conventional-changelog-sprucelabs"
|
|
571
571
|
]
|
|
572
572
|
},
|
|
573
|
-
"gitHead": "
|
|
573
|
+
"gitHead": "e113fa698f7bbcfb68fe2c42391dc7894bb2fcee"
|
|
574
574
|
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { SpruceSchemas } from '@sprucelabs/mercury-types'
|
|
2
|
+
import { diskUtil } from '@sprucelabs/spruce-skill-utils'
|
|
3
|
+
import { test, assert, generateId } from '@sprucelabs/test-utils'
|
|
4
|
+
import AbstractSkillTest from '../../../tests/AbstractSkillTest'
|
|
5
|
+
import testUtil from '../../../tests/utilities/test.utility'
|
|
6
|
+
import { RegisteredSkill } from '../../../types/cli.types'
|
|
7
|
+
|
|
8
|
+
export default class EventsWithFeedTemplatesTest extends AbstractSkillTest {
|
|
9
|
+
protected static skillCacheKey = 'events'
|
|
10
|
+
private static eventOptionsFile: string
|
|
11
|
+
private static skill: RegisteredSkill
|
|
12
|
+
|
|
13
|
+
@test()
|
|
14
|
+
protected static async feedIsPassedToRegistration() {
|
|
15
|
+
this.skill = await this.registerSkill()
|
|
16
|
+
|
|
17
|
+
await this.createEvent()
|
|
18
|
+
|
|
19
|
+
const feedTemplate: FeedOptions = {
|
|
20
|
+
template: generateId(),
|
|
21
|
+
}
|
|
22
|
+
this.dropIntoEventOptions(`feed: ${JSON.stringify(feedTemplate)},`)
|
|
23
|
+
|
|
24
|
+
const signature = await this.syncAndFetchSignature()
|
|
25
|
+
|
|
26
|
+
assert.isEqualDeep(
|
|
27
|
+
signature.feed,
|
|
28
|
+
feedTemplate,
|
|
29
|
+
'Feed template should match.'
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@test()
|
|
34
|
+
protected static async canHandleBackticksInAiInstructions() {
|
|
35
|
+
const aiInstructions = 'Here `there` be dragons'
|
|
36
|
+
this.dropIntoEventOptions(`aiInstructions: '${aiInstructions}',`)
|
|
37
|
+
|
|
38
|
+
const signature = await this.syncAndFetchSignature()
|
|
39
|
+
|
|
40
|
+
assert.isEqual(
|
|
41
|
+
signature.aiInstructions,
|
|
42
|
+
aiInstructions,
|
|
43
|
+
'AI instructions should match.'
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@test()
|
|
48
|
+
protected static async canHandleBackticksInDescription() {
|
|
49
|
+
const description = 'This event `describes` something'
|
|
50
|
+
this.dropIntoEventOptions(`description: '${description}',`)
|
|
51
|
+
|
|
52
|
+
const signature = await this.syncAndFetchSignature()
|
|
53
|
+
|
|
54
|
+
assert.isEqual(
|
|
55
|
+
signature.description,
|
|
56
|
+
description,
|
|
57
|
+
'Description should match.'
|
|
58
|
+
)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
private static async syncAndFetchSignature() {
|
|
62
|
+
await this.syncEvents()
|
|
63
|
+
await this.lintBuildAndBoot()
|
|
64
|
+
const signature = await this.fetchCreatedEventSignature()
|
|
65
|
+
return signature
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private static dropIntoEventOptions(dropIn: string) {
|
|
69
|
+
const contents = diskUtil.readFile(this.eventOptionsFile)
|
|
70
|
+
const updated = contents.replace(
|
|
71
|
+
'isGlobal: false,',
|
|
72
|
+
`isGlobal: false, ${dropIn}`
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
diskUtil.writeFile(this.eventOptionsFile, updated)
|
|
76
|
+
return updated
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
private static async fetchCreatedEventSignature() {
|
|
80
|
+
const client = await this.connectToApi({
|
|
81
|
+
shouldAuthAsCurrentSkill: true,
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
const [{ contracts }] = await client.emitAndFlattenResponses(
|
|
85
|
+
'get-event-contracts::v2020_12_25',
|
|
86
|
+
{
|
|
87
|
+
target: {
|
|
88
|
+
namespaces: [this.skill.slug],
|
|
89
|
+
},
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
const first = contracts[0]
|
|
93
|
+
const { eventSignatures } = first
|
|
94
|
+
const fqen = Object.keys(eventSignatures)[0]
|
|
95
|
+
const signature = eventSignatures[fqen]
|
|
96
|
+
return signature
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
private static async lintBuildAndBoot() {
|
|
100
|
+
await this.Service('command').execute('yarn fix.lint')
|
|
101
|
+
await this.Service('command').execute('yarn build.dev')
|
|
102
|
+
const boot = await this.Action('skill', 'boot').execute({})
|
|
103
|
+
assert.isFalsy(boot.errors, 'Should not have boot errors.')
|
|
104
|
+
boot.meta?.kill()
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
private static async createEvent() {
|
|
108
|
+
const results = await this.Action('event', 'create').execute({
|
|
109
|
+
nameReadable: 'a new event',
|
|
110
|
+
nameKebab: 'my-new-event',
|
|
111
|
+
nameCamel: 'myNewEvent',
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
assert.isFalsy(results.errors, 'Should not have errors.')
|
|
115
|
+
|
|
116
|
+
this.eventOptionsFile = testUtil.assertFileByNameInGeneratedFiles(
|
|
117
|
+
'event.options.ts',
|
|
118
|
+
results.files
|
|
119
|
+
)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
private static async registerSkill() {
|
|
123
|
+
return await this.getSkillFixture().registerCurrentSkill({
|
|
124
|
+
name: 'current skill',
|
|
125
|
+
})
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
private static async syncEvents() {
|
|
129
|
+
const syncResults = await this.Action('event', 'sync').execute({})
|
|
130
|
+
assert.isFalsy(syncResults.errors, 'Should not have sync errors.')
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
type FeedOptions = SpruceSchemas.Mercury.v2020_12_25.FeedOptions
|
|
@@ -198,7 +198,6 @@ export function buildPermissionContract(..._: any[]):any { return _[0] }
|
|
|
198
198
|
|
|
199
199
|
private static async assertGlobalEventsAreTyped(eventName: string) {
|
|
200
200
|
const contents = diskUtil.readFile(this.eventContractPath)
|
|
201
|
-
|
|
202
201
|
assert.doesInclude(contents, `'${eventName}':`)
|
|
203
202
|
}
|
|
204
203
|
|
|
@@ -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
|
+
}
|