@sprucelabs/spruce-cli 14.29.27 → 14.29.31
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 +32 -0
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.d.ts +6 -0
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js +128 -0
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -0
- package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js +3 -3
- package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js +1 -1
- package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
- package/build/__tests__/implementation/PkgService.test.js +2 -2
- package/build/__tests__/implementation/PkgService.test.js.map +1 -1
- package/build/features/event/actions/ListenAction.d.ts +4 -0
- package/build/features/event/actions/ListenAction.js +228 -127
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/writers/EventWriter.d.ts +1 -3
- package/build/features/event/writers/EventWriter.js +20 -14
- package/build/features/event/writers/EventWriter.js.map +1 -1
- package/build/interfaces/SpyInterface.js +1 -1
- package/build/interfaces/SpyInterface.js.map +1 -1
- package/build/templateItemBuilders/EventTemplateItemBuilder.js +2 -1
- package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
- package/package.json +26 -26
- package/src/__tests__/behavioral/ListeningToCoreEvents.test.ts +26 -0
- package/src/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.ts +3 -3
- package/src/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.ts +1 -1
- package/src/__tests__/implementation/PkgService.test.ts +2 -2
- package/src/features/event/actions/ListenAction.ts +111 -58
- package/src/features/event/writers/EventWriter.ts +21 -35
- package/src/interfaces/SpyInterface.ts +3 -1
- package/src/templateItemBuilders/EventTemplateItemBuilder.ts +3 -0
|
@@ -199,26 +199,24 @@ var EventWriter = /*#__PURE__*/function (_AbstractWriter) {
|
|
|
199
199
|
key: "writeListener",
|
|
200
200
|
value: function () {
|
|
201
201
|
var _writeListener = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(destinationDir, options) {
|
|
202
|
-
var
|
|
202
|
+
var schemaTypesLookupDir, fullyQualifiedEventName, event, resolvedDestination, relativeTypesFile, listenerContents, results;
|
|
203
203
|
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
204
204
|
while (1) {
|
|
205
205
|
switch (_context4.prev = _context4.next) {
|
|
206
206
|
case 0:
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
207
|
+
schemaTypesLookupDir = options.schemaTypesLookupDir, fullyQualifiedEventName = options.fullyQualifiedEventName;
|
|
208
|
+
event = _spruceEventUtils.eventNameUtil.split(fullyQualifiedEventName);
|
|
209
|
+
resolvedDestination = _spruceEventUtils.eventDiskUtil.resolveListenerPath(destinationDir, event);
|
|
210
|
+
relativeTypesFile = this.resolveSchemaTypesFile({
|
|
211
|
+
namespace: event.eventNamespace,
|
|
212
|
+
schemaTypesLookupDir: schemaTypesLookupDir,
|
|
213
|
+
resolvedDestination: resolvedDestination
|
|
212
214
|
});
|
|
213
|
-
relativeTypesFile = this.resolveSchemaTypesFile(schemaTypesLookupDir, resolvedDestination);
|
|
214
|
-
contractsFile = _path["default"].join(contractDestinationDir, CONTRACT_FILE_NAME.replace('.ts', ''));
|
|
215
215
|
listenerContents = this.templates.listener(_objectSpread(_objectSpread({}, options), {}, {
|
|
216
|
-
|
|
217
|
-
schemaTypesFile: relativeTypesFile,
|
|
218
|
-
contractsFile: contractsFile
|
|
216
|
+
schemaTypesFile: relativeTypesFile
|
|
219
217
|
}));
|
|
220
218
|
_context4.next = 7;
|
|
221
|
-
return this.writeFileIfChangedMixinResults(resolvedDestination, listenerContents, "Listener for ".concat(
|
|
219
|
+
return this.writeFileIfChangedMixinResults(resolvedDestination, listenerContents, "Listener for ".concat(fullyQualifiedEventName, "."));
|
|
222
220
|
|
|
223
221
|
case 7:
|
|
224
222
|
results = _context4.sent;
|
|
@@ -256,7 +254,7 @@ var EventWriter = /*#__PURE__*/function (_AbstractWriter) {
|
|
|
256
254
|
listeners: options.listeners
|
|
257
255
|
});
|
|
258
256
|
_context5.next = 4;
|
|
259
|
-
return this.writeFileIfChangedMixinResults(destination, contents, '
|
|
257
|
+
return this.writeFileIfChangedMixinResults(destination, contents, 'All your listeners imported to one place for your skill to use when booting!');
|
|
260
258
|
|
|
261
259
|
case 4:
|
|
262
260
|
results = _context5.sent;
|
|
@@ -371,7 +369,15 @@ var EventWriter = /*#__PURE__*/function (_AbstractWriter) {
|
|
|
371
369
|
}()
|
|
372
370
|
}, {
|
|
373
371
|
key: "resolveSchemaTypesFile",
|
|
374
|
-
value: function resolveSchemaTypesFile(
|
|
372
|
+
value: function resolveSchemaTypesFile(options) {
|
|
373
|
+
var schemaTypesLookupDir = options.schemaTypesLookupDir,
|
|
374
|
+
resolvedDestination = options.resolvedDestination,
|
|
375
|
+
namespace = options.namespace;
|
|
376
|
+
|
|
377
|
+
if (!namespace) {
|
|
378
|
+
return '@sprucelabs/mercury-types';
|
|
379
|
+
}
|
|
380
|
+
|
|
375
381
|
var schemaTypesFile = _path["default"].join(schemaTypesLookupDir, _spruceSkillUtils.DEFAULT_SCHEMA_TYPES_FILENAME);
|
|
376
382
|
|
|
377
383
|
var relativeTypesFile = _path["default"].relative(_path["default"].dirname(resolvedDestination), schemaTypesFile);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/event/writers/EventWriter.ts"],"names":["CONTRACT_FILE_NAME","EventWriter","destinationDir","options","eventContractTemplateItems","shouldImportCoreEvents","generated","item","push","writeContract","eventContractTemplateItem","writeCombinedEvents","templateItems","Promise","all","lint","schemaTemplateItems","destinationFile","diskUtil","resolvePath","namespaceCamel","generateEventContractFileName","eventsContractContents","templates","eventContract","writeFileIfChangedMixinResults","Object","keys","eventSignatures","results","cwd","doesHashSprucePathExist","path","resolveHashSprucePath","doesFileExist","contents","combinedEventsContract","eventName","eventNamespace","version","schemaTypesLookupDir","contractDestinationDir","resolvedDestination","eventDiskUtil","resolveListenerPath","relativeTypesFile","resolveSchemaTypesFile","contractsFile","pathUtil","join","replace","listenerContents","listener","nameConst","namesUtil","toConst","schemaTypesFile","destination","listeners","nameKebab","nameCamel","nameReadable","isGlobal","templateMethod","name","action","description","context","files","file","resolveEventPath","fileName","writeFile","DEFAULT_SCHEMA_TYPES_FILENAME","relative","dirname","extname","AbstractWriter"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { SchemaTemplateItem } from '@sprucelabs/schema'\nimport { eventDiskUtil } from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tnamesUtil,\n\tDEFAULT_SCHEMA_TYPES_FILENAME,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tEventContractTemplateItem,\n\tEventListenerOptions,\n\tListenerTemplateItem,\n} from '@sprucelabs/spruce-templates'\nimport { GeneratedFile } from '../../../types/cli.types'\nimport AbstractWriter from '../../../writers/AbstractWriter'\n\nconst CONTRACT_FILE_NAME = `events.contract.ts`\nexport default class EventWriter extends AbstractWriter {\n\tpublic async writeContracts(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tshouldImportCoreEvents?: boolean\n\t\t\tskillEventContractTypesFile: string\n\t\t\teventBuilderFile: string\n\t\t}\n\t) {\n\t\tconst { eventContractTemplateItems, shouldImportCoreEvents = true } =\n\t\t\toptions\n\n\t\tconst generated: Promise<GeneratedFile>[] = []\n\n\t\tfor (const item of eventContractTemplateItems) {\n\t\t\tgenerated.push(\n\t\t\t\tthis.writeContract({\n\t\t\t\t\t...options,\n\t\t\t\t\tdestinationDir,\n\t\t\t\t\teventContractTemplateItem: item,\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\n\t\tgenerated.push(\n\t\t\tthis.writeCombinedEvents({\n\t\t\t\t...options,\n\t\t\t\tshouldImportCoreEvents,\n\t\t\t\tdestinationDir,\n\t\t\t\ttemplateItems: eventContractTemplateItems,\n\t\t\t})\n\t\t)\n\n\t\tconst all = await Promise.all(generated)\n\n\t\tawait this.lint(destinationDir)\n\n\t\treturn all\n\t}\n\n\tprivate async writeContract(options: {\n\t\tdestinationDir: string\n\t\teventContractTemplateItem: EventContractTemplateItem\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\teventBuilderFile: string\n\t}): Promise<GeneratedFile> {\n\t\tconst { destinationDir, eventContractTemplateItem, schemaTemplateItems } =\n\t\t\toptions\n\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\teventContractTemplateItem.namespaceCamel,\n\t\t\tgenerateEventContractFileName(eventContractTemplateItem)\n\t\t)\n\n\t\tconst eventsContractContents = this.templates.eventContract({\n\t\t\t...options,\n\t\t\t...eventContractTemplateItem,\n\t\t\tschemaTemplateItems,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\teventsContractContents,\n\t\t\t`The event contract for ${\n\t\t\t\tObject.keys(eventContractTemplateItem.eventSignatures)[0]\n\t\t\t}`\n\t\t)\n\n\t\treturn results[0]\n\t}\n\n\tpublic hasCombinedContractBeenWritten(cwd: string) {\n\t\tif (diskUtil.doesHashSprucePathExist(cwd)) {\n\t\t\tconst path = diskUtil.resolveHashSprucePath(\n\t\t\t\tcwd,\n\t\t\t\t'events',\n\t\t\t\tCONTRACT_FILE_NAME\n\t\t\t)\n\n\t\t\treturn diskUtil.doesFileExist(path)\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate async writeCombinedEvents(options: {\n\t\tdestinationDir: string\n\t\ttemplateItems: EventContractTemplateItem[]\n\t\tshouldImportCoreEvents?: boolean\n\t\tskillEventContractTypesFile: string\n\t}): Promise<GeneratedFile> {\n\t\tconst { destinationDir } = options\n\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\tCONTRACT_FILE_NAME\n\t\t)\n\n\t\tconst contents = this.templates.combinedEventsContract(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\tcontents,\n\t\t\t'All event contracts combined to a single export.'\n\t\t)\n\n\t\treturn results[0]\n\t}\n\n\tpublic async writeListener(\n\t\tdestinationDir: string,\n\t\toptions: Omit<\n\t\t\tEventListenerOptions,\n\t\t\t'nameConst' | 'schemaTypesFile' | 'contractsFile'\n\t\t> & {\n\t\t\tversion: string\n\t\t\tschemaTypesLookupDir: string\n\t\t\tcontractDestinationDir: string\n\t\t}\n\t) {\n\t\tconst {\n\t\t\teventName,\n\t\t\teventNamespace,\n\t\t\tversion,\n\t\t\tschemaTypesLookupDir,\n\t\t\tcontractDestinationDir,\n\t\t} = options\n\n\t\tconst resolvedDestination = eventDiskUtil.resolveListenerPath(\n\t\t\tdestinationDir,\n\t\t\t{\n\t\t\t\teventName,\n\t\t\t\teventNamespace,\n\t\t\t\tversion,\n\t\t\t}\n\t\t)\n\n\t\tconst relativeTypesFile = this.resolveSchemaTypesFile(\n\t\t\tschemaTypesLookupDir,\n\t\t\tresolvedDestination\n\t\t)\n\n\t\tconst contractsFile = pathUtil.join(\n\t\t\tcontractDestinationDir,\n\t\t\tCONTRACT_FILE_NAME.replace('.ts', '')\n\t\t)\n\n\t\tconst listenerContents = this.templates.listener({\n\t\t\t...options,\n\t\t\tnameConst: namesUtil.toConst(`${eventNamespace}_${eventName}`),\n\t\t\tschemaTypesFile: relativeTypesFile,\n\t\t\tcontractsFile,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\tlistenerContents,\n\t\t\t`Listener for ${eventNamespace}.${eventName}.`\n\t\t)\n\n\t\tawait this.lint(resolvedDestination)\n\n\t\treturn results\n\t}\n\n\tpublic async writeListenerMap(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tlisteners: ListenerTemplateItem[]\n\t\t}\n\t) {\n\t\tconst destination = diskUtil.resolvePath(destinationDir, 'listeners.ts')\n\t\tconst contents = this.templates.listeners({ listeners: options.listeners })\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'An object holding all your data stores for easy import!'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tpublic async writeEvent(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tnameCamel: string\n\t\t\tnameKebab: string\n\t\t\tversion: string\n\t\t\tnameReadable: string\n\t\t\tisGlobal?: boolean\n\t\t}\n\t) {\n\t\tconst {\n\t\t\tversion,\n\t\t\tnameKebab,\n\t\t\tnameCamel,\n\t\t\tnameReadable,\n\t\t\tisGlobal = false,\n\t\t} = options\n\n\t\tconst templates: ({\n\t\t\tcontext?: any\n\t\t\ttemplateMethod:\n\t\t\t\t| 'eventEmitPayload'\n\t\t\t\t| 'eventEmitTarget'\n\t\t\t\t| 'eventResponsePayload'\n\t\t\t\t| 'permissionContractBuilder'\n\t\t\t\t| 'eventOptions'\n\t\t} & Omit<GeneratedFile, 'path'>)[] = [\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventEmitPayload',\n\t\t\t\tname: 'emitPayload.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'The payload that will be sent when you emit this event.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventEmitTarget',\n\t\t\t\tname: 'emitTarget.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'The target that will be sent when you emit this event.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventResponsePayload',\n\t\t\t\tname: 'responsePayload.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription:\n\t\t\t\t\t'The payload that every listener will need to respond with. Delete this file for events that are fire and forget.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'permissionContractBuilder',\n\t\t\t\tname: 'emitPermissions.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'Permissions someone else will need to emit your event.',\n\t\t\t\tcontext: {\n\t\t\t\t\tnameCamel: nameCamel + 'Emit',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'permissionContractBuilder',\n\t\t\t\tname: 'listenPermissions.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription:\n\t\t\t\t\t'Permissions someone else will need to listen to your event.',\n\t\t\t\tcontext: {\n\t\t\t\t\tnameCamel: nameCamel + 'Listen',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventOptions',\n\t\t\t\tname: 'event.options.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'Extra options that can be set for your event',\n\t\t\t\tcontext: {\n\t\t\t\t\tisGlobal,\n\t\t\t\t},\n\t\t\t},\n\t\t]\n\n\t\tconst files: GeneratedFile[] = []\n\n\t\tfor (const file of templates) {\n\t\t\tconst destination = eventDiskUtil.resolveEventPath(destinationDir, {\n\t\t\t\tfileName: file.name as any,\n\t\t\t\teventName: nameKebab,\n\t\t\t\tversion,\n\t\t\t})\n\n\t\t\tconst contents = this.templates[file.templateMethod]({\n\t\t\t\tnameCamel,\n\t\t\t\tnameReadable,\n\t\t\t\tversion,\n\t\t\t\t...file.context,\n\t\t\t})\n\n\t\t\tdiskUtil.writeFile(destination, contents)\n\n\t\t\tfiles.push({\n\t\t\t\t...file,\n\t\t\t\tpath: destination,\n\t\t\t})\n\t\t}\n\n\t\tawait this.lint(destinationDir)\n\n\t\treturn files\n\t}\n\n\tprivate resolveSchemaTypesFile(\n\t\tschemaTypesLookupDir: string,\n\t\tresolvedDestination: string\n\t) {\n\t\tconst schemaTypesFile = pathUtil.join(\n\t\t\tschemaTypesLookupDir,\n\t\t\tDEFAULT_SCHEMA_TYPES_FILENAME\n\t\t)\n\n\t\tlet relativeTypesFile = pathUtil.relative(\n\t\t\tpathUtil.dirname(resolvedDestination),\n\t\t\tschemaTypesFile\n\t\t)\n\n\t\trelativeTypesFile = relativeTypesFile.replace(\n\t\t\tpathUtil.extname(relativeTypesFile),\n\t\t\t''\n\t\t)\n\n\t\treturn relativeTypesFile\n\t}\n}\n\nexport function generateEventContractFileName(options: {\n\tnameCamel: string\n\tversion: string\n}): string {\n\treturn `${options.nameCamel}.${options.version}.contract.ts`\n}\n"],"file":"EventWriter.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/event/writers/EventWriter.ts"],"names":["CONTRACT_FILE_NAME","EventWriter","destinationDir","options","eventContractTemplateItems","shouldImportCoreEvents","generated","item","push","writeContract","eventContractTemplateItem","writeCombinedEvents","templateItems","Promise","all","lint","schemaTemplateItems","destinationFile","diskUtil","resolvePath","namespaceCamel","generateEventContractFileName","eventsContractContents","templates","eventContract","writeFileIfChangedMixinResults","Object","keys","eventSignatures","results","cwd","doesHashSprucePathExist","path","resolveHashSprucePath","doesFileExist","contents","combinedEventsContract","schemaTypesLookupDir","fullyQualifiedEventName","event","eventNameUtil","split","resolvedDestination","eventDiskUtil","resolveListenerPath","relativeTypesFile","resolveSchemaTypesFile","namespace","eventNamespace","listenerContents","listener","schemaTypesFile","destination","listeners","version","nameKebab","nameCamel","nameReadable","isGlobal","templateMethod","name","action","description","context","files","file","resolveEventPath","fileName","eventName","writeFile","pathUtil","join","DEFAULT_SCHEMA_TYPES_FILENAME","relative","dirname","replace","extname","AbstractWriter"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { SchemaTemplateItem } from '@sprucelabs/schema'\nimport { eventDiskUtil, eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tDEFAULT_SCHEMA_TYPES_FILENAME,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tEventContractTemplateItem,\n\tEventListenerOptions,\n\tListenerTemplateItem,\n} from '@sprucelabs/spruce-templates'\nimport { GeneratedFile } from '../../../types/cli.types'\nimport AbstractWriter from '../../../writers/AbstractWriter'\n\nconst CONTRACT_FILE_NAME = `events.contract.ts`\nexport default class EventWriter extends AbstractWriter {\n\tpublic async writeContracts(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tshouldImportCoreEvents?: boolean\n\t\t\tskillEventContractTypesFile: string\n\t\t\teventBuilderFile: string\n\t\t}\n\t) {\n\t\tconst { eventContractTemplateItems, shouldImportCoreEvents = true } =\n\t\t\toptions\n\n\t\tconst generated: Promise<GeneratedFile>[] = []\n\n\t\tfor (const item of eventContractTemplateItems) {\n\t\t\tgenerated.push(\n\t\t\t\tthis.writeContract({\n\t\t\t\t\t...options,\n\t\t\t\t\tdestinationDir,\n\t\t\t\t\teventContractTemplateItem: item,\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\n\t\tgenerated.push(\n\t\t\tthis.writeCombinedEvents({\n\t\t\t\t...options,\n\t\t\t\tshouldImportCoreEvents,\n\t\t\t\tdestinationDir,\n\t\t\t\ttemplateItems: eventContractTemplateItems,\n\t\t\t})\n\t\t)\n\n\t\tconst all = await Promise.all(generated)\n\n\t\tawait this.lint(destinationDir)\n\n\t\treturn all\n\t}\n\n\tprivate async writeContract(options: {\n\t\tdestinationDir: string\n\t\teventContractTemplateItem: EventContractTemplateItem\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\teventBuilderFile: string\n\t}): Promise<GeneratedFile> {\n\t\tconst { destinationDir, eventContractTemplateItem, schemaTemplateItems } =\n\t\t\toptions\n\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\teventContractTemplateItem.namespaceCamel,\n\t\t\tgenerateEventContractFileName(eventContractTemplateItem)\n\t\t)\n\n\t\tconst eventsContractContents = this.templates.eventContract({\n\t\t\t...options,\n\t\t\t...eventContractTemplateItem,\n\t\t\tschemaTemplateItems,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\teventsContractContents,\n\t\t\t`The event contract for ${\n\t\t\t\tObject.keys(eventContractTemplateItem.eventSignatures)[0]\n\t\t\t}`\n\t\t)\n\n\t\treturn results[0]\n\t}\n\n\tpublic hasCombinedContractBeenWritten(cwd: string) {\n\t\tif (diskUtil.doesHashSprucePathExist(cwd)) {\n\t\t\tconst path = diskUtil.resolveHashSprucePath(\n\t\t\t\tcwd,\n\t\t\t\t'events',\n\t\t\t\tCONTRACT_FILE_NAME\n\t\t\t)\n\n\t\t\treturn diskUtil.doesFileExist(path)\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate async writeCombinedEvents(options: {\n\t\tdestinationDir: string\n\t\ttemplateItems: EventContractTemplateItem[]\n\t\tshouldImportCoreEvents?: boolean\n\t\tskillEventContractTypesFile: string\n\t}): Promise<GeneratedFile> {\n\t\tconst { destinationDir } = options\n\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\tCONTRACT_FILE_NAME\n\t\t)\n\n\t\tconst contents = this.templates.combinedEventsContract(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\tcontents,\n\t\t\t'All event contracts combined to a single export.'\n\t\t)\n\n\t\treturn results[0]\n\t}\n\n\tpublic async writeListener(\n\t\tdestinationDir: string,\n\t\toptions: Omit<EventListenerOptions, 'schemaTypesFile'> & {\n\t\t\tschemaTypesLookupDir: string\n\t\t}\n\t) {\n\t\tconst { schemaTypesLookupDir, fullyQualifiedEventName } = options\n\n\t\tconst event = eventNameUtil.split(fullyQualifiedEventName)\n\t\tconst resolvedDestination = eventDiskUtil.resolveListenerPath(\n\t\t\tdestinationDir,\n\t\t\tevent as any\n\t\t)\n\n\t\tconst relativeTypesFile = this.resolveSchemaTypesFile({\n\t\t\tnamespace: event.eventNamespace,\n\t\t\tschemaTypesLookupDir,\n\t\t\tresolvedDestination,\n\t\t})\n\n\t\tconst listenerContents = this.templates.listener({\n\t\t\t...options,\n\t\t\tschemaTypesFile: relativeTypesFile,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\tlistenerContents,\n\t\t\t`Listener for ${fullyQualifiedEventName}.`\n\t\t)\n\n\t\tawait this.lint(resolvedDestination)\n\n\t\treturn results\n\t}\n\n\tpublic async writeListenerMap(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tlisteners: ListenerTemplateItem[]\n\t\t}\n\t) {\n\t\tconst destination = diskUtil.resolvePath(destinationDir, 'listeners.ts')\n\t\tconst contents = this.templates.listeners({ listeners: options.listeners })\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'All your listeners imported to one place for your skill to use when booting!'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tpublic async writeEvent(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tnameCamel: string\n\t\t\tnameKebab: string\n\t\t\tversion: string\n\t\t\tnameReadable: string\n\t\t\tisGlobal?: boolean\n\t\t}\n\t) {\n\t\tconst {\n\t\t\tversion,\n\t\t\tnameKebab,\n\t\t\tnameCamel,\n\t\t\tnameReadable,\n\t\t\tisGlobal = false,\n\t\t} = options\n\n\t\tconst templates: ({\n\t\t\tcontext?: any\n\t\t\ttemplateMethod:\n\t\t\t\t| 'eventEmitPayload'\n\t\t\t\t| 'eventEmitTarget'\n\t\t\t\t| 'eventResponsePayload'\n\t\t\t\t| 'permissionContractBuilder'\n\t\t\t\t| 'eventOptions'\n\t\t} & Omit<GeneratedFile, 'path'>)[] = [\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventEmitPayload',\n\t\t\t\tname: 'emitPayload.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'The payload that will be sent when you emit this event.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventEmitTarget',\n\t\t\t\tname: 'emitTarget.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'The target that will be sent when you emit this event.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventResponsePayload',\n\t\t\t\tname: 'responsePayload.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription:\n\t\t\t\t\t'The payload that every listener will need to respond with. Delete this file for events that are fire and forget.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'permissionContractBuilder',\n\t\t\t\tname: 'emitPermissions.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'Permissions someone else will need to emit your event.',\n\t\t\t\tcontext: {\n\t\t\t\t\tnameCamel: nameCamel + 'Emit',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'permissionContractBuilder',\n\t\t\t\tname: 'listenPermissions.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription:\n\t\t\t\t\t'Permissions someone else will need to listen to your event.',\n\t\t\t\tcontext: {\n\t\t\t\t\tnameCamel: nameCamel + 'Listen',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventOptions',\n\t\t\t\tname: 'event.options.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'Extra options that can be set for your event',\n\t\t\t\tcontext: {\n\t\t\t\t\tisGlobal,\n\t\t\t\t},\n\t\t\t},\n\t\t]\n\n\t\tconst files: GeneratedFile[] = []\n\n\t\tfor (const file of templates) {\n\t\t\tconst destination = eventDiskUtil.resolveEventPath(destinationDir, {\n\t\t\t\tfileName: file.name as any,\n\t\t\t\teventName: nameKebab,\n\t\t\t\tversion,\n\t\t\t})\n\n\t\t\tconst contents = this.templates[file.templateMethod]({\n\t\t\t\tnameCamel,\n\t\t\t\tnameReadable,\n\t\t\t\tversion,\n\t\t\t\t...file.context,\n\t\t\t})\n\n\t\t\tdiskUtil.writeFile(destination, contents)\n\n\t\t\tfiles.push({\n\t\t\t\t...file,\n\t\t\t\tpath: destination,\n\t\t\t})\n\t\t}\n\n\t\tawait this.lint(destinationDir)\n\n\t\treturn files\n\t}\n\n\tprivate resolveSchemaTypesFile(options: {\n\t\tnamespace?: string\n\t\tschemaTypesLookupDir: string\n\t\tresolvedDestination: string\n\t}) {\n\t\tconst { schemaTypesLookupDir, resolvedDestination, namespace } = options\n\n\t\tif (!namespace) {\n\t\t\treturn '@sprucelabs/mercury-types'\n\t\t}\n\n\t\tconst schemaTypesFile = pathUtil.join(\n\t\t\tschemaTypesLookupDir,\n\t\t\tDEFAULT_SCHEMA_TYPES_FILENAME\n\t\t)\n\n\t\tlet relativeTypesFile = pathUtil.relative(\n\t\t\tpathUtil.dirname(resolvedDestination),\n\t\t\tschemaTypesFile\n\t\t)\n\n\t\trelativeTypesFile = relativeTypesFile.replace(\n\t\t\tpathUtil.extname(relativeTypesFile),\n\t\t\t''\n\t\t)\n\n\t\treturn relativeTypesFile\n\t}\n}\n\nexport function generateEventContractFileName(options: {\n\tnameCamel: string\n\tversion: string\n}): string {\n\treturn `${options.nameCamel}.${options.version}.contract.ts`\n}\n"],"file":"EventWriter.js"}
|
|
@@ -359,7 +359,7 @@ var SpyInterface = /*#__PURE__*/function () {
|
|
|
359
359
|
_this2.reset();
|
|
360
360
|
|
|
361
361
|
try {
|
|
362
|
-
_test.assert.fail("Timed out waiting for input: ".concat(definition.label));
|
|
362
|
+
_test.assert.fail("Timed out waiting for input with label: '".concat(definition.label, "'\n\nConsider passing what you need to Action().execute({ something })"));
|
|
363
363
|
} catch (err) {
|
|
364
364
|
reject(err);
|
|
365
365
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/interfaces/SpyInterface.ts"],"names":["SpyInterface","x","y","startTime","Date","getTime","term","shouldRenderTestLogs","TerminalInterface","process","cwd","strs","optionallyRenderLine","join","undefined","env","SHOULD_RENDER_TEST_LOGS","message","effects","trackInvocation","renderWarning","renderHint","command","options","invocations","push","promptResolver","confirmResolver","waitForEnterResolver","clearTimeout","promptTimeout","length","input","resolver","promptDefaultValue","toLowerCase","Error","Promise","resolve","setTimeout","renderSection","obj","renderObject","err","renderError","code","renderCodeSample","results","renderActionSummary","renderHero","dividerEffects","renderHeadline","renderDivider","duration","friendly","durationUtil","msToFriendly","testLog","info","global","activeTest","test","path","messages","renderLines","definition","msg","namesUtil","toPascal","type","label","choices","forEach","choice","value","reject","reset","assert","fail","defaultValue","ttl","checkInterval","loops","lastWriteCount","isWaitingForInput","hasWritten","testUtil","log","question","title","cursorPosition","pos"],"mappings":"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","sourcesContent":["import { FieldDefinitionValueType } from '@sprucelabs/schema'\nimport { namesUtil, testLog } from '@sprucelabs/spruce-skill-utils'\nimport { assert } from '@sprucelabs/test'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport testUtil from '../tests/utilities/test.utility'\nimport { ExecutionResults } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport {\n\tGraphicsTextEffect,\n\tProgressBarOptions,\n\tProgressBarUpdateOptions,\n\tImageDimensions,\n} from '../types/graphicsInterface.types'\nimport durationUtil from '../utilities/duration.utility'\nimport TerminalInterface from './TerminalInterface'\n\nexport default class SpyInterface implements GraphicsInterface {\n\tpublic invocations: { command: string; options?: any }[] = []\n\tprivate cursorPosition = { x: 0, y: 0 }\n\n\tprivate promptResolver?: (\n\t\tinput: FieldDefinitionValueType<FieldDefinitions>\n\t) => void | undefined\n\n\tprivate confirmResolver?: (pass: boolean) => void | undefined\n\tprivate waitForEnterResolver?: () => void | undefined\n\tprivate promptDefaultValue: any\n\tprivate term?: TerminalInterface\n\tprivate startTime: number\n\tprivate promptTimeout?: any\n\n\tpublic constructor() {\n\t\tthis.startTime = new Date().getTime()\n\n\t\tthis.term = this.shouldRenderTestLogs()\n\t\t\t? new TerminalInterface(process.cwd(), true, (...strs: []) => {\n\t\t\t\t\tthis.optionallyRenderLine(strs.join(' '))\n\t\t\t })\n\t\t\t: undefined\n\t}\n\n\tprivate shouldRenderTestLogs() {\n\t\treturn process.env.SHOULD_RENDER_TEST_LOGS === 'true'\n\t}\n\n\tpublic renderWarning(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderWarning', { message, effects })\n\t\tthis.term?.renderWarning(message)\n\t}\n\n\tpublic renderHint(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHint', { message, effects })\n\t\tthis.optionallyRenderLine(`Hint: ${message}`)\n\t\tthis.term?.renderHint(message)\n\t}\n\n\tprivate trackInvocation(command: string, options?: any) {\n\t\t// testUtil.log(command, JSON.stringify(options), '\\n')\n\t\tthis.invocations.push({ command, options })\n\t}\n\n\tpublic isWaitingForInput() {\n\t\treturn !!(\n\t\t\tthis.promptResolver ||\n\t\t\tthis.confirmResolver ||\n\t\t\tthis.waitForEnterResolver\n\t\t)\n\t}\n\n\tpublic reset() {\n\t\tthis.promptResolver = undefined\n\t\tthis.confirmResolver = undefined\n\t\tthis.waitForEnterResolver = undefined\n\t\tclearTimeout(this.promptTimeout)\n\t}\n\n\tpublic getLastInvocation() {\n\t\treturn this.invocations[this.invocations.length - 1]\n\t}\n\n\tpublic async sendInput(input: string | string[]): Promise<void> {\n\t\tthis.trackInvocation('sendInput', input)\n\n\t\tthis.optionallyRenderLine(\n\t\t\t`Sending input: \"${input.length > 0 ? input : 'ENTER'}\"`\n\t\t)\n\n\t\tif (this.waitForEnterResolver) {\n\t\t\tconst resolver = this.waitForEnterResolver\n\t\t\tthis.waitForEnterResolver = undefined\n\n\t\t\tresolver()\n\t\t} else if (this.promptResolver) {\n\t\t\tconst resolver = this.promptResolver\n\t\t\tthis.promptResolver = undefined\n\n\t\t\tresolver(input !== '\\n' && input !== '' ? input : this.promptDefaultValue)\n\t\t} else if (this.confirmResolver) {\n\t\t\tconst resolver = this.confirmResolver\n\t\t\tthis.confirmResolver = undefined\n\n\t\t\tresolver(\n\t\t\t\tinput === '\\n' ||\n\t\t\t\t\tinput.length === 0 ||\n\t\t\t\t\t(typeof input === 'string' && input.toLowerCase() === 'y')\n\t\t\t)\n\t\t} else {\n\t\t\tthrow new Error('Sent input before prompted for input')\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tsetTimeout(resolve, 50)\n\t\t})\n\t}\n\n\tpublic renderSection(options: {\n\t\theadline: string\n\t\tlines?: string[] | string[]\n\t\theadlineEffects?: GraphicsTextEffect[]\n\t\tdividerEffects?: GraphicsTextEffect[]\n\t\tbodyEffects?: GraphicsTextEffect[]\n\t\tobject?: any\n\t}): void {\n\t\tthis.trackInvocation('renderSection', options)\n\t\tthis.term?.renderSection(options)\n\t}\n\n\tpublic renderObject(obj: any): void {\n\t\tthis.trackInvocation('renderObject', obj)\n\t\tthis.term?.renderObject(obj)\n\t}\n\n\tpublic renderError(err: Error): void {\n\t\tthis.trackInvocation('renderError', err)\n\t\tthis.term?.renderError(err)\n\t}\n\n\tpublic renderCodeSample(code: string): void {\n\t\tthis.trackInvocation('renderCodeSample', code)\n\t\tthis.term?.renderCodeSample(code)\n\t}\n\n\tpublic renderActionSummary(results: ExecutionResults): void {\n\t\tthis.trackInvocation('renderCommandSummary', results)\n\t\tthis.term?.renderActionSummary(results)\n\t}\n\n\tpublic renderHero(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHero', { message, effects })\n\t\tthis.term?.renderHero(message, effects)\n\t}\n\n\tpublic renderHeadline(\n\t\tmessage: string,\n\t\teffects: GraphicsTextEffect[],\n\t\tdividerEffects: GraphicsTextEffect[]\n\t): void {\n\t\tthis.trackInvocation('renderHeadline', { message, effects, dividerEffects })\n\t\tthis.term?.renderHeadline(message, effects, dividerEffects)\n\t}\n\n\tpublic renderDivider(effects?: GraphicsTextEffect[] | undefined): void {\n\t\tthis.trackInvocation('renderDivider', effects)\n\t\tthis.term?.renderDivider(effects)\n\t}\n\n\tpublic renderLine(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLine', { message, effects })\n\t\tmessage && message.length > 0 && this.optionallyRenderLine(message)\n\t}\n\n\tprivate optionallyRenderLine(message: string) {\n\t\tif (this.shouldRenderTestLogs()) {\n\t\t\tconst duration = new Date().getTime() - this.startTime\n\t\t\tconst friendly = durationUtil.msToFriendly(duration)\n\n\t\t\ttestLog.info(\n\t\t\t\t`${\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tglobal.activeTest?.test ? global.activeTest?.test + ' :: ' : ''\n\t\t\t\t}${friendly} :: ${message}`\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async renderImage(\n\t\tpath: string,\n\t\toptions?: ImageDimensions\n\t): Promise<void> {\n\t\tthis.trackInvocation('renderImage', { path, options })\n\t}\n\n\tpublic renderLines(\n\t\tmessages: string[],\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLines', { messages, effects })\n\t\tthis.term?.renderLines(messages, effects)\n\t}\n\n\tpublic async prompt<T extends FieldDefinitions>(definition: T) {\n\t\tthis.trackInvocation('prompt', definition)\n\n\t\tif (this.promptResolver) {\n\t\t\tthrow new Error(\n\t\t\t\t'Tried to double prompt. Try this.term?.sendInput() before calling prompt next.'\n\t\t\t)\n\t\t}\n\n\t\tlet msg = `${namesUtil.toPascal(definition.type)} Prompt: ${\n\t\t\tdefinition.label\n\t\t}`\n\n\t\tif (definition.type === 'select') {\n\t\t\tmsg += '\\n\\nChoices:\\n'\n\t\t\tdefinition.options.choices.forEach((choice) => {\n\t\t\t\tmsg += `\\n${choice.value}: ${choice.label}`\n\t\t\t})\n\n\t\t\tmsg += '\\n'\n\t\t}\n\n\t\tthis.optionallyRenderLine(msg)\n\n\t\treturn new Promise<FieldDefinitionValueType<FieldDefinitions>>(\n\t\t\t(resolve, reject) => {\n\t\t\t\tthis.promptResolver = (...args: any[]) => {\n\t\t\t\t\tclearTimeout(this.promptTimeout)\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tresolve(...args)\n\t\t\t\t}\n\t\t\t\tthis.promptTimeout = setTimeout(() => {\n\t\t\t\t\tthis.reset()\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tassert.fail(`Timed out waiting for input: ${definition.label}`)\n\t\t\t\t\t} catch (err: any) {\n\t\t\t\t\t\treject(err)\n\t\t\t\t\t}\n\t\t\t\t}, 10000)\n\t\t\t\tthis.promptDefaultValue = definition.defaultValue\n\t\t\t}\n\t\t)\n\t}\n\n\tpublic startLoading(message?: string | undefined): void {\n\t\tthis.trackInvocation('startLoading', message)\n\t\tthis.optionallyRenderLine(message ? `${message}` : 'Start loading...')\n\t}\n\n\tpublic stopLoading(): void {\n\t\tthis.trackInvocation('stopLoading')\n\t\tthis.optionallyRenderLine('Stop loading...')\n\t}\n\n\tpublic async waitForEnter(message?: string | undefined): Promise<void> {\n\t\tthis.trackInvocation('waitForEnter', message)\n\t\tthis.optionallyRenderLine(\n\t\t\t`${message ? ` ${message}\\n\\n` : ``}Waiting for enter...`\n\t\t)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.waitForEnterResolver = resolve\n\t\t})\n\t}\n\n\tpublic async waitForInput() {\n\t\tconst ttl = 1000 * 60 * 5\n\t\tconst checkInterval = 100\n\t\tlet loops = ttl / checkInterval\n\t\tlet lastWriteCount = this.invocations.length\n\n\t\twhile (!this.isWaitingForInput()) {\n\t\t\tif (loops-- === 0) {\n\t\t\t\tassert.fail(`Waiting for input timed out.`)\n\t\t\t}\n\n\t\t\tconst hasWritten = lastWriteCount != this.invocations.length\n\n\t\t\tif (hasWritten) {\n\t\t\t\tloops = ttl / checkInterval\n\t\t\t\tlastWriteCount = this.invocations.length\n\t\t\t\tif (this.shouldRenderTestLogs()) {\n\t\t\t\t\ttestUtil.log('waitForInput timeout reset because of new output.')\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, checkInterval))\n\t\t}\n\t}\n\n\tpublic confirm(question: string): Promise<boolean> {\n\t\tthis.trackInvocation('confirm', question)\n\t\tthis.optionallyRenderLine(`${question} :: Y/N...`)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.confirmResolver = resolve\n\t\t})\n\t}\n\n\tpublic clear(): void {\n\t\tthis.trackInvocation('clear')\n\t}\n\n\tpublic renderProgressBar(options: ProgressBarOptions): void {\n\t\tthis.trackInvocation('renderProgressBar', options)\n\t\tthis.optionallyRenderLine(\n\t\t\t`Showing progress${options.title ? ` ${options.title}` : ``}`\n\t\t)\n\t}\n\n\tpublic updateProgressBar(options: ProgressBarUpdateOptions): void {\n\t\tthis.trackInvocation('updateProgressBar', options)\n\t}\n\n\tpublic removeProgressBar(): void {\n\t\tthis.trackInvocation('removeProgressBar')\n\t\tthis.optionallyRenderLine(`Hiding progress`)\n\t}\n\n\tpublic async getCursorPosition(): Promise<{ x: number; y: number } | null> {\n\t\tthis.trackInvocation('getCursorPosition')\n\t\treturn this.cursorPosition\n\t}\n\n\tpublic setCursorPosition(pos: { x: number; y: number }) {\n\t\tthis.cursorPosition = pos\n\t}\n\n\tpublic moveCursorTo(x: number, y: number): void {\n\t\tthis.trackInvocation('moveCursorTo', { x, y })\n\t}\n\n\tpublic clearBelowCursor(): void {\n\t\tthis.trackInvocation('clearBelowCursor')\n\t}\n}\n"],"file":"SpyInterface.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/interfaces/SpyInterface.ts"],"names":["SpyInterface","x","y","startTime","Date","getTime","term","shouldRenderTestLogs","TerminalInterface","process","cwd","strs","optionallyRenderLine","join","undefined","env","SHOULD_RENDER_TEST_LOGS","message","effects","trackInvocation","renderWarning","renderHint","command","options","invocations","push","promptResolver","confirmResolver","waitForEnterResolver","clearTimeout","promptTimeout","length","input","resolver","promptDefaultValue","toLowerCase","Error","Promise","resolve","setTimeout","renderSection","obj","renderObject","err","renderError","code","renderCodeSample","results","renderActionSummary","renderHero","dividerEffects","renderHeadline","renderDivider","duration","friendly","durationUtil","msToFriendly","testLog","info","global","activeTest","test","path","messages","renderLines","definition","msg","namesUtil","toPascal","type","label","choices","forEach","choice","value","reject","reset","assert","fail","defaultValue","ttl","checkInterval","loops","lastWriteCount","isWaitingForInput","hasWritten","testUtil","log","question","title","cursorPosition","pos"],"mappings":";;;;;;;;;;;;;;;;;;;AACA;;AACA;;AAEA;;AASA;;AACA;;IAEqBA,Y;AAepB,0BAAqB;AAAA;;AAAA;AAAA,0DAdsC,EActC;AAAA,6DAbI;AAAEC,MAAAA,CAAC,EAAE,CAAL;AAAQC,MAAAA,CAAC,EAAE;AAAX,KAaJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACpB,SAAKC,SAAL,GAAiB,IAAIC,IAAJ,GAAWC,OAAX,EAAjB;AAEA,SAAKC,IAAL,GAAY,KAAKC,oBAAL,KACT,IAAIC,6BAAJ,CAAsBC,OAAO,CAACC,GAAR,EAAtB,EAAqC,IAArC,EAA2C,YAAiB;AAAA,wCAAbC,IAAa;AAAbA,QAAAA,IAAa;AAAA;;AAC5D,MAAA,KAAI,CAACC,oBAAL,CAA0BD,IAAI,CAACE,IAAL,CAAU,GAAV,CAA1B;AACC,KAFD,CADS,GAITC,SAJH;AAKA;;;;WAED,gCAA+B;AAC9B,aAAOL,OAAO,CAACM,GAAR,CAAYC,uBAAZ,KAAwC,MAA/C;AACA;;;WAED,uBACCC,OADD,EAECC,OAFD,EAGQ;AAAA;;AACP,WAAKC,eAAL,CAAqB,eAArB,EAAsC;AAAEF,QAAAA,OAAO,EAAPA,OAAF;AAAWC,QAAAA,OAAO,EAAPA;AAAX,OAAtC;AACA,yBAAKZ,IAAL,0DAAWc,aAAX,CAAyBH,OAAzB;AACA;;;WAED,oBACCA,OADD,EAECC,OAFD,EAGQ;AAAA;;AACP,WAAKC,eAAL,CAAqB,YAArB,EAAmC;AAAEF,QAAAA,OAAO,EAAPA,OAAF;AAAWC,QAAAA,OAAO,EAAPA;AAAX,OAAnC;AACA,WAAKN,oBAAL,iBAAmCK,OAAnC;AACA,0BAAKX,IAAL,4DAAWe,UAAX,CAAsBJ,OAAtB;AACA;;;WAED,yBAAwBK,OAAxB,EAAyCC,OAAzC,EAAwD;AACvD;AACA,WAAKC,WAAL,CAAiBC,IAAjB,CAAsB;AAAEH,QAAAA,OAAO,EAAPA,OAAF;AAAWC,QAAAA,OAAO,EAAPA;AAAX,OAAtB;AACA;;;WAED,6BAA2B;AAC1B,aAAO,CAAC,EACP,KAAKG,cAAL,IACA,KAAKC,eADL,IAEA,KAAKC,oBAHE,CAAR;AAKA;;;WAED,iBAAe;AACd,WAAKF,cAAL,GAAsBZ,SAAtB;AACA,WAAKa,eAAL,GAAuBb,SAAvB;AACA,WAAKc,oBAAL,GAA4Bd,SAA5B;AACAe,MAAAA,YAAY,CAAC,KAAKC,aAAN,CAAZ;AACA;;;WAED,6BAA2B;AAC1B,aAAO,KAAKN,WAAL,CAAiB,KAAKA,WAAL,CAAiBO,MAAjB,GAA0B,CAA3C,CAAP;AACA;;;;qGAED,iBAAuBC,KAAvB;AAAA;;AAAA;AAAA;AAAA;AAAA;AACC,qBAAKb,eAAL,CAAqB,WAArB,EAAkCa,KAAlC;AAEA,qBAAKpB,oBAAL,4BACoBoB,KAAK,CAACD,MAAN,GAAe,CAAf,GAAmBC,KAAnB,GAA2B,OAD/C;;AAHD,qBAOK,KAAKJ,oBAPV;AAAA;AAAA;AAAA;;AAQQK,gBAAAA,QARR,GAQmB,KAAKL,oBARxB;AASE,qBAAKA,oBAAL,GAA4Bd,SAA5B;AAEAmB,gBAAAA,QAAQ;AAXV;AAAA;;AAAA;AAAA,qBAYY,KAAKP,cAZjB;AAAA;AAAA;AAAA;;AAaQO,gBAAAA,SAbR,GAamB,KAAKP,cAbxB;AAcE,qBAAKA,cAAL,GAAsBZ,SAAtB;;AAEAmB,gBAAAA,SAAQ,CAACD,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,EAA5B,GAAiCA,KAAjC,GAAyC,KAAKE,kBAA/C,CAAR;;AAhBF;AAAA;;AAAA;AAAA,qBAiBY,KAAKP,eAjBjB;AAAA;AAAA;AAAA;;AAkBQM,gBAAAA,UAlBR,GAkBmB,KAAKN,eAlBxB;AAmBE,qBAAKA,eAAL,GAAuBb,SAAvB;;AAEAmB,gBAAAA,UAAQ,CACPD,KAAK,KAAK,IAAV,IACCA,KAAK,CAACD,MAAN,KAAiB,CADlB,IAEE,OAAOC,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAACG,WAAN,OAAwB,GAHhD,CAAR;;AArBF;AAAA;;AAAA;AAAA,sBA2BQ,IAAIC,KAAJ,CAAU,sCAAV,CA3BR;;AAAA;AAAA,iDA8BQ,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC/BC,kBAAAA,UAAU,CAACD,OAAD,EAAU,EAAV,CAAV;AACA,iBAFM,CA9BR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAmCA,uBAAqBf,OAArB,EAOS;AAAA;;AACR,WAAKJ,eAAL,CAAqB,eAArB,EAAsCI,OAAtC;AACA,0BAAKjB,IAAL,4DAAWkC,aAAX,CAAyBjB,OAAzB;AACA;;;WAED,sBAAoBkB,GAApB,EAAoC;AAAA;;AACnC,WAAKtB,eAAL,CAAqB,cAArB,EAAqCsB,GAArC;AACA,0BAAKnC,IAAL,4DAAWoC,YAAX,CAAwBD,GAAxB;AACA;;;WAED,qBAAmBE,GAAnB,EAAqC;AAAA;;AACpC,WAAKxB,eAAL,CAAqB,aAArB,EAAoCwB,GAApC;AACA,0BAAKrC,IAAL,4DAAWsC,WAAX,CAAuBD,GAAvB;AACA;;;WAED,0BAAwBE,IAAxB,EAA4C;AAAA;;AAC3C,WAAK1B,eAAL,CAAqB,kBAArB,EAAyC0B,IAAzC;AACA,0BAAKvC,IAAL,4DAAWwC,gBAAX,CAA4BD,IAA5B;AACA;;;WAED,6BAA2BE,OAA3B,EAA4D;AAAA;;AAC3D,WAAK5B,eAAL,CAAqB,sBAArB,EAA6C4B,OAA7C;AACA,0BAAKzC,IAAL,4DAAW0C,mBAAX,CAA+BD,OAA/B;AACA;;;WAED,oBACC9B,OADD,EAECC,OAFD,EAGQ;AAAA;;AACP,WAAKC,eAAL,CAAqB,YAArB,EAAmC;AAAEF,QAAAA,OAAO,EAAPA,OAAF;AAAWC,QAAAA,OAAO,EAAPA;AAAX,OAAnC;AACA,0BAAKZ,IAAL,4DAAW2C,UAAX,CAAsBhC,OAAtB,EAA+BC,OAA/B;AACA;;;WAED,wBACCD,OADD,EAECC,OAFD,EAGCgC,cAHD,EAIQ;AAAA;;AACP,WAAK/B,eAAL,CAAqB,gBAArB,EAAuC;AAAEF,QAAAA,OAAO,EAAPA,OAAF;AAAWC,QAAAA,OAAO,EAAPA,OAAX;AAAoBgC,QAAAA,cAAc,EAAdA;AAApB,OAAvC;AACA,0BAAK5C,IAAL,4DAAW6C,cAAX,CAA0BlC,OAA1B,EAAmCC,OAAnC,EAA4CgC,cAA5C;AACA;;;WAED,uBAAqBhC,OAArB,EAAuE;AAAA;;AACtE,WAAKC,eAAL,CAAqB,eAArB,EAAsCD,OAAtC;AACA,2BAAKZ,IAAL,8DAAW8C,aAAX,CAAyBlC,OAAzB;AACA;;;WAED,oBACCD,OADD,EAECC,OAFD,EAGQ;AACP,WAAKC,eAAL,CAAqB,YAArB,EAAmC;AAAEF,QAAAA,OAAO,EAAPA,OAAF;AAAWC,QAAAA,OAAO,EAAPA;AAAX,OAAnC;AACAD,MAAAA,OAAO,IAAIA,OAAO,CAACc,MAAR,GAAiB,CAA5B,IAAiC,KAAKnB,oBAAL,CAA0BK,OAA1B,CAAjC;AACA;;;WAED,8BAA6BA,OAA7B,EAA8C;AAC7C,UAAI,KAAKV,oBAAL,EAAJ,EAAiC;AAAA;;AAChC,YAAM8C,QAAQ,GAAG,IAAIjD,IAAJ,GAAWC,OAAX,KAAuB,KAAKF,SAA7C;;AACA,YAAMmD,QAAQ,GAAGC,qBAAaC,YAAb,CAA0BH,QAA1B,CAAjB;;AAEAI,kCAAQC,IAAR,YAEE;AACA,8BAAAC,MAAM,CAACC,UAAP,kEAAmBC,IAAnB,GAA0B,wBAAAF,MAAM,CAACC,UAAP,4EAAmBC,IAAnB,IAA0B,MAApD,GAA6D,EAH/D,SAIIP,QAJJ,iBAImBrC,OAJnB;AAMA;AACD;;;;uGAED,kBACC6C,IADD,EAECvC,OAFD;AAAA;AAAA;AAAA;AAAA;AAIC,qBAAKJ,eAAL,CAAqB,aAArB,EAAoC;AAAE2C,kBAAAA,IAAI,EAAJA,IAAF;AAAQvC,kBAAAA,OAAO,EAAPA;AAAR,iBAApC;;AAJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAOA,qBACCwC,QADD,EAEC7C,OAFD,EAGQ;AAAA;;AACP,WAAKC,eAAL,CAAqB,aAArB,EAAoC;AAAE4C,QAAAA,QAAQ,EAARA,QAAF;AAAY7C,QAAAA,OAAO,EAAPA;AAAZ,OAApC;AACA,2BAAKZ,IAAL,8DAAW0D,WAAX,CAAuBD,QAAvB,EAAiC7C,OAAjC;AACA;;;;kGAED,kBAAgD+C,UAAhD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AACC,qBAAK9C,eAAL,CAAqB,QAArB,EAA+B8C,UAA/B;;AADD,qBAGK,KAAKvC,cAHV;AAAA;AAAA;AAAA;;AAAA,sBAIQ,IAAIU,KAAJ,CACL,gFADK,CAJR;;AAAA;AASK8B,gBAAAA,GATL,aAScC,4BAAUC,QAAV,CAAmBH,UAAU,CAACI,IAA9B,CATd,sBAUEJ,UAAU,CAACK,KAVb;;AAaC,oBAAIL,UAAU,CAACI,IAAX,KAAoB,QAAxB,EAAkC;AACjCH,kBAAAA,GAAG,IAAI,gBAAP;AACAD,kBAAAA,UAAU,CAAC1C,OAAX,CAAmBgD,OAAnB,CAA2BC,OAA3B,CAAmC,UAACC,MAAD,EAAY;AAC9CP,oBAAAA,GAAG,gBAASO,MAAM,CAACC,KAAhB,eAA0BD,MAAM,CAACH,KAAjC,CAAH;AACA,mBAFD;AAIAJ,kBAAAA,GAAG,IAAI,IAAP;AACA;;AAED,qBAAKtD,oBAAL,CAA0BsD,GAA1B;AAtBD,kDAwBQ,IAAI7B,OAAJ,CACN,UAACC,OAAD,EAAUqC,MAAV,EAAqB;AACpB,kBAAA,MAAI,CAACjD,cAAL,GAAsB,YAAoB;AACzCG,oBAAAA,YAAY,CAAC,MAAI,CAACC,aAAN,CAAZ,CADyC,CAEzC;;AAAA;AACAQ,oBAAAA,OAAO,MAAP;AACA,mBAJD;;AAKA,kBAAA,MAAI,CAACR,aAAL,GAAqBS,UAAU,CAAC,YAAM;AACrC,oBAAA,MAAI,CAACqC,KAAL;;AAEA,wBAAI;AACHC,mCAAOC,IAAP,oDAC6Cb,UAAU,CAACK,KADxD;AAGA,qBAJD,CAIE,OAAO3B,GAAP,EAAiB;AAClBgC,sBAAAA,MAAM,CAAChC,GAAD,CAAN;AACA;AACD,mBAV8B,EAU5B,KAV4B,CAA/B;AAWA,kBAAA,MAAI,CAACT,kBAAL,GAA0B+B,UAAU,CAACc,YAArC;AACA,iBAnBK,CAxBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WA+CA,sBAAoB9D,OAApB,EAAwD;AACvD,WAAKE,eAAL,CAAqB,cAArB,EAAqCF,OAArC;AACA,WAAKL,oBAAL,CAA0BK,OAAO,aAAMA,OAAN,IAAkB,kBAAnD;AACA;;;WAED,uBAA2B;AAC1B,WAAKE,eAAL,CAAqB,aAArB;AACA,WAAKP,oBAAL,CAA0B,iBAA1B;AACA;;;;wGAED,kBAA0BK,OAA1B;AAAA;;AAAA;AAAA;AAAA;AAAA;AACC,qBAAKE,eAAL,CAAqB,cAArB,EAAqCF,OAArC;AACA,qBAAKL,oBAAL,WACIK,OAAO,cAAOA,OAAP,cADX;AAFD,kDAMQ,IAAIoB,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC/B,kBAAA,MAAI,CAACV,oBAAL,GAA4BU,OAA5B;AACA,iBAFM,CANR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;wGAWA;AAAA;AAAA;AAAA;AAAA;AAAA;AACO0C,gBAAAA,GADP,GACa,OAAO,EAAP,GAAY,CADzB;AAEOC,gBAAAA,aAFP,GAEuB,GAFvB;AAGKC,gBAAAA,KAHL,GAGaF,GAAG,GAAGC,aAHnB;AAIKE,gBAAAA,cAJL,GAIsB,KAAK3D,WAAL,CAAiBO,MAJvC;;AAAA;AAAA,oBAMS,KAAKqD,iBAAL,EANT;AAAA;AAAA;AAAA;;AAOE,oBAAIF,KAAK,OAAO,CAAhB,EAAmB;AAClBL,+BAAOC,IAAP;AACA;;AAEKO,gBAAAA,UAXR,GAWqBF,cAAc,IAAI,KAAK3D,WAAL,CAAiBO,MAXxD;;AAaE,oBAAIsD,UAAJ,EAAgB;AACfH,kBAAAA,KAAK,GAAGF,GAAG,GAAGC,aAAd;AACAE,kBAAAA,cAAc,GAAG,KAAK3D,WAAL,CAAiBO,MAAlC;;AACA,sBAAI,KAAKxB,oBAAL,EAAJ,EAAiC;AAChC+E,sCAASC,GAAT,CAAa,mDAAb;AACA;AACD;;AAnBH;AAAA,uBAoBQ,IAAIlD,OAAJ,CAAY,UAACC,OAAD;AAAA,yBAAaC,UAAU,CAACD,OAAD,EAAU2C,aAAV,CAAvB;AAAA,iBAAZ,CApBR;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAwBA,iBAAeO,QAAf,EAAmD;AAAA;;AAClD,WAAKrE,eAAL,CAAqB,SAArB,EAAgCqE,QAAhC;AACA,WAAK5E,oBAAL,WAA6B4E,QAA7B;AAEA,aAAO,IAAInD,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC/B,QAAA,MAAI,CAACX,eAAL,GAAuBW,OAAvB;AACA,OAFM,CAAP;AAGA;;;WAED,iBAAqB;AACpB,WAAKnB,eAAL,CAAqB,OAArB;AACA;;;WAED,2BAAyBI,OAAzB,EAA4D;AAC3D,WAAKJ,eAAL,CAAqB,mBAArB,EAA0CI,OAA1C;AACA,WAAKX,oBAAL,2BACoBW,OAAO,CAACkE,KAAR,cAAoBlE,OAAO,CAACkE,KAA5B,MADpB;AAGA;;;WAED,2BAAyBlE,OAAzB,EAAkE;AACjE,WAAKJ,eAAL,CAAqB,mBAArB,EAA0CI,OAA1C;AACA;;;WAED,6BAAiC;AAChC,WAAKJ,eAAL,CAAqB,mBAArB;AACA,WAAKP,oBAAL;AACA;;;;6GAED;AAAA;AAAA;AAAA;AAAA;AACC,qBAAKO,eAAL,CAAqB,mBAArB;AADD,kDAEQ,KAAKuE,cAFb;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAKA,2BAAyBC,GAAzB,EAAwD;AACvD,WAAKD,cAAL,GAAsBC,GAAtB;AACA;;;WAED,sBAAoB1F,CAApB,EAA+BC,CAA/B,EAAgD;AAC/C,WAAKiB,eAAL,CAAqB,cAArB,EAAqC;AAAElB,QAAAA,CAAC,EAADA,CAAF;AAAKC,QAAAA,CAAC,EAADA;AAAL,OAArC;AACA;;;WAED,4BAAgC;AAC/B,WAAKiB,eAAL,CAAqB,kBAArB;AACA","sourcesContent":["import { FieldDefinitionValueType } from '@sprucelabs/schema'\nimport { namesUtil, testLog } from '@sprucelabs/spruce-skill-utils'\nimport { assert } from '@sprucelabs/test'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport testUtil from '../tests/utilities/test.utility'\nimport { ExecutionResults } from '../types/cli.types'\nimport { GraphicsInterface } from '../types/cli.types'\nimport {\n\tGraphicsTextEffect,\n\tProgressBarOptions,\n\tProgressBarUpdateOptions,\n\tImageDimensions,\n} from '../types/graphicsInterface.types'\nimport durationUtil from '../utilities/duration.utility'\nimport TerminalInterface from './TerminalInterface'\n\nexport default class SpyInterface implements GraphicsInterface {\n\tpublic invocations: { command: string; options?: any }[] = []\n\tprivate cursorPosition = { x: 0, y: 0 }\n\n\tprivate promptResolver?: (\n\t\tinput: FieldDefinitionValueType<FieldDefinitions>\n\t) => void | undefined\n\n\tprivate confirmResolver?: (pass: boolean) => void | undefined\n\tprivate waitForEnterResolver?: () => void | undefined\n\tprivate promptDefaultValue: any\n\tprivate term?: TerminalInterface\n\tprivate startTime: number\n\tprivate promptTimeout?: any\n\n\tpublic constructor() {\n\t\tthis.startTime = new Date().getTime()\n\n\t\tthis.term = this.shouldRenderTestLogs()\n\t\t\t? new TerminalInterface(process.cwd(), true, (...strs: []) => {\n\t\t\t\t\tthis.optionallyRenderLine(strs.join(' '))\n\t\t\t })\n\t\t\t: undefined\n\t}\n\n\tprivate shouldRenderTestLogs() {\n\t\treturn process.env.SHOULD_RENDER_TEST_LOGS === 'true'\n\t}\n\n\tpublic renderWarning(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderWarning', { message, effects })\n\t\tthis.term?.renderWarning(message)\n\t}\n\n\tpublic renderHint(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHint', { message, effects })\n\t\tthis.optionallyRenderLine(`Hint: ${message}`)\n\t\tthis.term?.renderHint(message)\n\t}\n\n\tprivate trackInvocation(command: string, options?: any) {\n\t\t// testUtil.log(command, JSON.stringify(options), '\\n')\n\t\tthis.invocations.push({ command, options })\n\t}\n\n\tpublic isWaitingForInput() {\n\t\treturn !!(\n\t\t\tthis.promptResolver ||\n\t\t\tthis.confirmResolver ||\n\t\t\tthis.waitForEnterResolver\n\t\t)\n\t}\n\n\tpublic reset() {\n\t\tthis.promptResolver = undefined\n\t\tthis.confirmResolver = undefined\n\t\tthis.waitForEnterResolver = undefined\n\t\tclearTimeout(this.promptTimeout)\n\t}\n\n\tpublic getLastInvocation() {\n\t\treturn this.invocations[this.invocations.length - 1]\n\t}\n\n\tpublic async sendInput(input: string | string[]): Promise<void> {\n\t\tthis.trackInvocation('sendInput', input)\n\n\t\tthis.optionallyRenderLine(\n\t\t\t`Sending input: \"${input.length > 0 ? input : 'ENTER'}\"`\n\t\t)\n\n\t\tif (this.waitForEnterResolver) {\n\t\t\tconst resolver = this.waitForEnterResolver\n\t\t\tthis.waitForEnterResolver = undefined\n\n\t\t\tresolver()\n\t\t} else if (this.promptResolver) {\n\t\t\tconst resolver = this.promptResolver\n\t\t\tthis.promptResolver = undefined\n\n\t\t\tresolver(input !== '\\n' && input !== '' ? input : this.promptDefaultValue)\n\t\t} else if (this.confirmResolver) {\n\t\t\tconst resolver = this.confirmResolver\n\t\t\tthis.confirmResolver = undefined\n\n\t\t\tresolver(\n\t\t\t\tinput === '\\n' ||\n\t\t\t\t\tinput.length === 0 ||\n\t\t\t\t\t(typeof input === 'string' && input.toLowerCase() === 'y')\n\t\t\t)\n\t\t} else {\n\t\t\tthrow new Error('Sent input before prompted for input')\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\tsetTimeout(resolve, 50)\n\t\t})\n\t}\n\n\tpublic renderSection(options: {\n\t\theadline: string\n\t\tlines?: string[] | string[]\n\t\theadlineEffects?: GraphicsTextEffect[]\n\t\tdividerEffects?: GraphicsTextEffect[]\n\t\tbodyEffects?: GraphicsTextEffect[]\n\t\tobject?: any\n\t}): void {\n\t\tthis.trackInvocation('renderSection', options)\n\t\tthis.term?.renderSection(options)\n\t}\n\n\tpublic renderObject(obj: any): void {\n\t\tthis.trackInvocation('renderObject', obj)\n\t\tthis.term?.renderObject(obj)\n\t}\n\n\tpublic renderError(err: Error): void {\n\t\tthis.trackInvocation('renderError', err)\n\t\tthis.term?.renderError(err)\n\t}\n\n\tpublic renderCodeSample(code: string): void {\n\t\tthis.trackInvocation('renderCodeSample', code)\n\t\tthis.term?.renderCodeSample(code)\n\t}\n\n\tpublic renderActionSummary(results: ExecutionResults): void {\n\t\tthis.trackInvocation('renderCommandSummary', results)\n\t\tthis.term?.renderActionSummary(results)\n\t}\n\n\tpublic renderHero(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderHero', { message, effects })\n\t\tthis.term?.renderHero(message, effects)\n\t}\n\n\tpublic renderHeadline(\n\t\tmessage: string,\n\t\teffects: GraphicsTextEffect[],\n\t\tdividerEffects: GraphicsTextEffect[]\n\t): void {\n\t\tthis.trackInvocation('renderHeadline', { message, effects, dividerEffects })\n\t\tthis.term?.renderHeadline(message, effects, dividerEffects)\n\t}\n\n\tpublic renderDivider(effects?: GraphicsTextEffect[] | undefined): void {\n\t\tthis.trackInvocation('renderDivider', effects)\n\t\tthis.term?.renderDivider(effects)\n\t}\n\n\tpublic renderLine(\n\t\tmessage: string,\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLine', { message, effects })\n\t\tmessage && message.length > 0 && this.optionallyRenderLine(message)\n\t}\n\n\tprivate optionallyRenderLine(message: string) {\n\t\tif (this.shouldRenderTestLogs()) {\n\t\t\tconst duration = new Date().getTime() - this.startTime\n\t\t\tconst friendly = durationUtil.msToFriendly(duration)\n\n\t\t\ttestLog.info(\n\t\t\t\t`${\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tglobal.activeTest?.test ? global.activeTest?.test + ' :: ' : ''\n\t\t\t\t}${friendly} :: ${message}`\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async renderImage(\n\t\tpath: string,\n\t\toptions?: ImageDimensions\n\t): Promise<void> {\n\t\tthis.trackInvocation('renderImage', { path, options })\n\t}\n\n\tpublic renderLines(\n\t\tmessages: string[],\n\t\teffects?: GraphicsTextEffect[] | undefined\n\t): void {\n\t\tthis.trackInvocation('renderLines', { messages, effects })\n\t\tthis.term?.renderLines(messages, effects)\n\t}\n\n\tpublic async prompt<T extends FieldDefinitions>(definition: T) {\n\t\tthis.trackInvocation('prompt', definition)\n\n\t\tif (this.promptResolver) {\n\t\t\tthrow new Error(\n\t\t\t\t'Tried to double prompt. Try this.term?.sendInput() before calling prompt next.'\n\t\t\t)\n\t\t}\n\n\t\tlet msg = `${namesUtil.toPascal(definition.type)} Prompt: ${\n\t\t\tdefinition.label\n\t\t}`\n\n\t\tif (definition.type === 'select') {\n\t\t\tmsg += '\\n\\nChoices:\\n'\n\t\t\tdefinition.options.choices.forEach((choice) => {\n\t\t\t\tmsg += `\\n${choice.value}: ${choice.label}`\n\t\t\t})\n\n\t\t\tmsg += '\\n'\n\t\t}\n\n\t\tthis.optionallyRenderLine(msg)\n\n\t\treturn new Promise<FieldDefinitionValueType<FieldDefinitions>>(\n\t\t\t(resolve, reject) => {\n\t\t\t\tthis.promptResolver = (...args: any[]) => {\n\t\t\t\t\tclearTimeout(this.promptTimeout)\n\t\t\t\t\t//@ts-ignore\n\t\t\t\t\tresolve(...args)\n\t\t\t\t}\n\t\t\t\tthis.promptTimeout = setTimeout(() => {\n\t\t\t\t\tthis.reset()\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tassert.fail(\n\t\t\t\t\t\t\t`Timed out waiting for input with label: '${definition.label}'\\n\\nConsider passing what you need to Action().execute({ something })`\n\t\t\t\t\t\t)\n\t\t\t\t\t} catch (err: any) {\n\t\t\t\t\t\treject(err)\n\t\t\t\t\t}\n\t\t\t\t}, 10000)\n\t\t\t\tthis.promptDefaultValue = definition.defaultValue\n\t\t\t}\n\t\t)\n\t}\n\n\tpublic startLoading(message?: string | undefined): void {\n\t\tthis.trackInvocation('startLoading', message)\n\t\tthis.optionallyRenderLine(message ? `${message}` : 'Start loading...')\n\t}\n\n\tpublic stopLoading(): void {\n\t\tthis.trackInvocation('stopLoading')\n\t\tthis.optionallyRenderLine('Stop loading...')\n\t}\n\n\tpublic async waitForEnter(message?: string | undefined): Promise<void> {\n\t\tthis.trackInvocation('waitForEnter', message)\n\t\tthis.optionallyRenderLine(\n\t\t\t`${message ? ` ${message}\\n\\n` : ``}Waiting for enter...`\n\t\t)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.waitForEnterResolver = resolve\n\t\t})\n\t}\n\n\tpublic async waitForInput() {\n\t\tconst ttl = 1000 * 60 * 5\n\t\tconst checkInterval = 100\n\t\tlet loops = ttl / checkInterval\n\t\tlet lastWriteCount = this.invocations.length\n\n\t\twhile (!this.isWaitingForInput()) {\n\t\t\tif (loops-- === 0) {\n\t\t\t\tassert.fail(`Waiting for input timed out.`)\n\t\t\t}\n\n\t\t\tconst hasWritten = lastWriteCount != this.invocations.length\n\n\t\t\tif (hasWritten) {\n\t\t\t\tloops = ttl / checkInterval\n\t\t\t\tlastWriteCount = this.invocations.length\n\t\t\t\tif (this.shouldRenderTestLogs()) {\n\t\t\t\t\ttestUtil.log('waitForInput timeout reset because of new output.')\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, checkInterval))\n\t\t}\n\t}\n\n\tpublic confirm(question: string): Promise<boolean> {\n\t\tthis.trackInvocation('confirm', question)\n\t\tthis.optionallyRenderLine(`${question} :: Y/N...`)\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.confirmResolver = resolve\n\t\t})\n\t}\n\n\tpublic clear(): void {\n\t\tthis.trackInvocation('clear')\n\t}\n\n\tpublic renderProgressBar(options: ProgressBarOptions): void {\n\t\tthis.trackInvocation('renderProgressBar', options)\n\t\tthis.optionallyRenderLine(\n\t\t\t`Showing progress${options.title ? ` ${options.title}` : ``}`\n\t\t)\n\t}\n\n\tpublic updateProgressBar(options: ProgressBarUpdateOptions): void {\n\t\tthis.trackInvocation('updateProgressBar', options)\n\t}\n\n\tpublic removeProgressBar(): void {\n\t\tthis.trackInvocation('removeProgressBar')\n\t\tthis.optionallyRenderLine(`Hiding progress`)\n\t}\n\n\tpublic async getCursorPosition(): Promise<{ x: number; y: number } | null> {\n\t\tthis.trackInvocation('getCursorPosition')\n\t\treturn this.cursorPosition\n\t}\n\n\tpublic setCursorPosition(pos: { x: number; y: number }) {\n\t\tthis.cursorPosition = pos\n\t}\n\n\tpublic moveCursorTo(x: number, y: number): void {\n\t\tthis.trackInvocation('moveCursorTo', { x, y })\n\t}\n\n\tpublic clearBelowCursor(): void {\n\t\tthis.trackInvocation('clearBelowCursor')\n\t}\n}\n"],"file":"SpyInterface.js"}
|
|
@@ -129,7 +129,8 @@ var EventTemplateItemBuilder = /*#__PURE__*/function () {
|
|
|
129
129
|
|
|
130
130
|
throw new _schema.SchemaError({
|
|
131
131
|
code: 'INVALID_PARAMETERS',
|
|
132
|
-
parameters: ['fullyQualifiedEventName']
|
|
132
|
+
parameters: ['fullyQualifiedEventName'],
|
|
133
|
+
friendlyMessages: ["I could not find any events that match ".concat(fullyQualifiedEventName, ".")]
|
|
133
134
|
});
|
|
134
135
|
}
|
|
135
136
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/templateItemBuilders/EventTemplateItemBuilder.ts"],"names":["EventTemplateItemBuilder","options","contracts","localNamespace","eventBuilderFile","eventContractTemplateItems","schemaTemplateItems","contract","buildTemplateItemsForContract","schemaItems","contractItems","push","sort","a","b","nameCamel","fullyQualifiedEventName","namedSignatures","eventContractUtil","getNamedEventSignatures","namedSig","mapEventSigsToSchemaTemplateItems","signatureTemplateItem","buildEventSigTemplateItem","emitPayloadSchemaTemplateItem","emitPayloadSchema","responsePayloadSchemaTemplateItem","responsePayloadSchema","SchemaError","code","parameters","item","buildTemplateItemForEventSignature","eventNamespace","isLocal","namespacePascal","sigToNamespacePascal","namesUtil","toCamel","eventName","namePascal","toPascal","version","namespace","toKebab","MERCURY_API_NAMESPACE","namespaceCamel","imports","filter","i","map","schemaDiskUtil","resolvePath","destination","schema","shouldIncludeFileExtension","importAs","eventSignatures","signature","listenPermissionContract","emitPermissionContract","find","id","schemasByNamespace","mapEventSigsToSchemasByNamepace","schemaTemplateItemBuilder","SchemaTemplateItemBuilder","buildTemplateItems"],"mappings":"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","sourcesContent":["import { EventContract } from '@sprucelabs/mercury-types'\nimport { Schema, SchemaError, SchemaTemplateItem } from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\tNamedEventSignature,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tMERCURY_API_NAMESPACE,\n\tnamesUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tEventContractTemplateItem,\n\tEventSignatureTemplateItem,\n} from '@sprucelabs/spruce-templates'\nimport schemaDiskUtil from '../features/schema/utilities/schemaDisk.utility'\nimport SchemaTemplateItemBuilder from './SchemaTemplateItemBuilder'\n\nexport default class EventTemplateItemBuilder {\n\tpublic buildTemplateItems(options: {\n\t\tcontracts: EventContract[]\n\t\tlocalNamespace?: string\n\t\teventBuilderFile?: string\n\t}): {\n\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t} {\n\t\tconst { contracts, localNamespace, eventBuilderFile } = options\n\n\t\tconst eventContractTemplateItems: EventContractTemplateItem[] = []\n\t\tconst schemaTemplateItems: SchemaTemplateItem[] = []\n\n\t\tfor (const contract of contracts) {\n\t\t\tconst {\n\t\t\t\tschemaTemplateItems: schemaItems,\n\t\t\t\teventContractTemplateItems: contractItems,\n\t\t\t} = this.buildTemplateItemsForContract(\n\t\t\t\tcontract,\n\t\t\t\tlocalNamespace,\n\t\t\t\teventBuilderFile\n\t\t\t)\n\n\t\t\teventContractTemplateItems.push(...contractItems)\n\t\t\tschemaTemplateItems.push(...schemaItems)\n\t\t}\n\n\t\teventContractTemplateItems.sort((a, b) => {\n\t\t\tif (a.nameCamel > b.nameCamel) {\n\t\t\t\treturn 1\n\t\t\t} else if (a.nameCamel < b.nameCamel) {\n\t\t\t\treturn -1\n\t\t\t}\n\n\t\t\treturn 0\n\t\t})\n\n\t\treturn { eventContractTemplateItems, schemaTemplateItems }\n\t}\n\n\tpublic buildEventTemplateItemForName(\n\t\tcontracts: EventContract[],\n\t\tfullyQualifiedEventName: string\n\t): {\n\t\tresponsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t\temitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t} {\n\t\tfor (const contract of contracts) {\n\t\t\tconst namedSignatures =\n\t\t\t\teventContractUtil.getNamedEventSignatures(contract)\n\n\t\t\tfor (const namedSig of namedSignatures) {\n\t\t\t\tif (namedSig.fullyQualifiedEventName === fullyQualifiedEventName) {\n\t\t\t\t\tconst schemaTemplateItems: SchemaTemplateItem[] =\n\t\t\t\t\t\tthis.mapEventSigsToSchemaTemplateItems(namedSignatures)\n\n\t\t\t\t\tconst signatureTemplateItem: EventSignatureTemplateItem =\n\t\t\t\t\t\tthis.buildEventSigTemplateItem(namedSig, schemaTemplateItems)\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\temitPayloadSchemaTemplateItem:\n\t\t\t\t\t\t\tsignatureTemplateItem.emitPayloadSchema,\n\t\t\t\t\t\tresponsePayloadSchemaTemplateItem:\n\t\t\t\t\t\t\tsignatureTemplateItem.responsePayloadSchema,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new SchemaError({\n\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\tparameters: ['fullyQualifiedEventName'],\n\t\t})\n\t}\n\n\tprivate buildTemplateItemsForContract(\n\t\tcontract: EventContract,\n\t\tlocalNamespace?: string,\n\t\teventBuilderFile?: string\n\t): {\n\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t} {\n\t\tconst namedSignatures = eventContractUtil.getNamedEventSignatures(contract)\n\n\t\tconst schemaTemplateItems: SchemaTemplateItem[] =\n\t\t\tthis.mapEventSigsToSchemaTemplateItems(namedSignatures)\n\n\t\tconst eventContractTemplateItems: EventContractTemplateItem[] = []\n\n\t\tfor (const namedSig of namedSignatures) {\n\t\t\tconst item: EventContractTemplateItem =\n\t\t\t\tthis.buildTemplateItemForEventSignature(\n\t\t\t\t\tnamedSig,\n\t\t\t\t\tschemaTemplateItems,\n\t\t\t\t\tnamedSig.eventNamespace === localNamespace,\n\t\t\t\t\teventBuilderFile\n\t\t\t\t)\n\n\t\t\teventContractTemplateItems.push(item)\n\t\t}\n\n\t\treturn {\n\t\t\teventContractTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t}\n\t}\n\n\tprivate buildTemplateItemForEventSignature(\n\t\tnamedSig: NamedEventSignature,\n\t\tschemaTemplateItems: SchemaTemplateItem[],\n\t\tisLocal: boolean,\n\t\teventBuilderFile?: string\n\t) {\n\t\tconst namespacePascal = this.sigToNamespacePascal(namedSig)\n\n\t\tconst signatureTemplateItem: EventSignatureTemplateItem =\n\t\t\tthis.buildEventSigTemplateItem(namedSig, schemaTemplateItems)\n\n\t\tconst item: EventContractTemplateItem = {\n\t\t\tnameCamel: namesUtil.toCamel(namedSig.eventName),\n\t\t\tnamePascal: namesUtil.toPascal(namedSig.eventName),\n\t\t\tversion: namedSig.version ?? '***MISSING***',\n\t\t\tisLocal,\n\t\t\tnamespace: namesUtil.toKebab(\n\t\t\t\tnamedSig.eventNamespace ?? MERCURY_API_NAMESPACE\n\t\t\t),\n\t\t\tnamespaceCamel: namesUtil.toCamel(\n\t\t\t\tnamedSig.eventNamespace ?? MERCURY_API_NAMESPACE\n\t\t\t),\n\t\t\timports: [\n\t\t\t\tsignatureTemplateItem.emitPayloadSchema as SchemaTemplateItem,\n\t\t\t\tsignatureTemplateItem.responsePayloadSchema as SchemaTemplateItem,\n\t\t\t]\n\t\t\t\t.filter((i) => !!i)\n\t\t\t\t.map((item: SchemaTemplateItem) => ({\n\t\t\t\t\tpackage: schemaDiskUtil.resolvePath({\n\t\t\t\t\t\tdestination: '#spruce/schemas',\n\t\t\t\t\t\tschema: item.schema,\n\t\t\t\t\t\tshouldIncludeFileExtension: false,\n\t\t\t\t\t}),\n\t\t\t\t\timportAs: `${item.nameCamel}Schema`,\n\t\t\t\t})),\n\t\t\tnamespacePascal,\n\t\t\teventSignatures: {\n\t\t\t\t[namedSig.fullyQualifiedEventName]: signatureTemplateItem,\n\t\t\t},\n\t\t}\n\n\t\titem.imports.push({\n\t\t\timportAs: '{ buildEventContract }',\n\t\t\tpackage: eventBuilderFile ?? '@sprucelabs/mercury-types',\n\t\t})\n\n\t\tif (\n\t\t\tnamedSig.signature.listenPermissionContract ||\n\t\t\tnamedSig.signature.emitPermissionContract\n\t\t) {\n\t\t\titem.imports.push({\n\t\t\t\timportAs: '{ buildPermissionContract }',\n\t\t\t\tpackage: eventBuilderFile ?? '@sprucelabs/mercury-types',\n\t\t\t})\n\t\t}\n\n\t\treturn item\n\t}\n\n\tprivate buildEventSigTemplateItem(\n\t\tnamedSig: NamedEventSignature,\n\t\tschemaItems: SchemaTemplateItem[]\n\t) {\n\t\tconst { emitPayloadSchema, responsePayloadSchema, ...signature } =\n\t\t\tnamedSig.signature\n\n\t\tconst signatureTemplateItem: EventSignatureTemplateItem = { ...signature }\n\n\t\tif (emitPayloadSchema) {\n\t\t\tsignatureTemplateItem.emitPayloadSchema = schemaItems.find(\n\t\t\t\t(i) => i.id === emitPayloadSchema.id\n\t\t\t)\n\t\t}\n\n\t\tif (responsePayloadSchema) {\n\t\t\tsignatureTemplateItem.responsePayloadSchema = schemaItems.find(\n\t\t\t\t(i) => i.id === responsePayloadSchema.id\n\t\t\t)\n\t\t}\n\t\treturn signatureTemplateItem\n\t}\n\n\tprivate mapEventSigsToSchemaTemplateItems(\n\t\tnamedSignatures: NamedEventSignature[]\n\t) {\n\t\tconst schemasByNamespace: Record<string, Schema[]> =\n\t\t\tthis.mapEventSigsToSchemasByNamepace(namedSignatures)\n\n\t\tconst schemaTemplateItemBuilder = new SchemaTemplateItemBuilder('Cli')\n\t\tconst schemaItems: SchemaTemplateItem[] =\n\t\t\tschemaTemplateItemBuilder.buildTemplateItems(\n\t\t\t\tschemasByNamespace,\n\t\t\t\t'#spruce/events'\n\t\t\t)\n\n\t\treturn schemaItems\n\t}\n\n\tprivate mapEventSigsToSchemasByNamepace(\n\t\tnamedSignatures: NamedEventSignature[]\n\t) {\n\t\tconst schemasByNamespace: Record<string, Schema[]> = {}\n\n\t\tfor (const namedSig of namedSignatures) {\n\t\t\tconst namespacePascal = this.sigToNamespacePascal(namedSig)\n\t\t\tconst { emitPayloadSchema, responsePayloadSchema } = namedSig.signature\n\n\t\t\tif (!schemasByNamespace[namespacePascal]) {\n\t\t\t\tschemasByNamespace[namespacePascal] = []\n\t\t\t}\n\n\t\t\tif (emitPayloadSchema) {\n\t\t\t\tschemasByNamespace[namespacePascal].push({\n\t\t\t\t\tversion: namedSig.version,\n\t\t\t\t\t...emitPayloadSchema,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (responsePayloadSchema) {\n\t\t\t\tschemasByNamespace[namespacePascal].push({\n\t\t\t\t\tversion: namedSig.version,\n\t\t\t\t\t...responsePayloadSchema,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn schemasByNamespace\n\t}\n\n\tprivate sigToNamespacePascal(namedSig: NamedEventSignature) {\n\t\treturn namesUtil.toPascal(namedSig.eventNamespace ?? MERCURY_API_NAMESPACE)\n\t}\n}\n"],"file":"EventTemplateItemBuilder.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/templateItemBuilders/EventTemplateItemBuilder.ts"],"names":["EventTemplateItemBuilder","options","contracts","localNamespace","eventBuilderFile","eventContractTemplateItems","schemaTemplateItems","contract","buildTemplateItemsForContract","schemaItems","contractItems","push","sort","a","b","nameCamel","fullyQualifiedEventName","namedSignatures","eventContractUtil","getNamedEventSignatures","namedSig","mapEventSigsToSchemaTemplateItems","signatureTemplateItem","buildEventSigTemplateItem","emitPayloadSchemaTemplateItem","emitPayloadSchema","responsePayloadSchemaTemplateItem","responsePayloadSchema","SchemaError","code","parameters","friendlyMessages","item","buildTemplateItemForEventSignature","eventNamespace","isLocal","namespacePascal","sigToNamespacePascal","namesUtil","toCamel","eventName","namePascal","toPascal","version","namespace","toKebab","MERCURY_API_NAMESPACE","namespaceCamel","imports","filter","i","map","schemaDiskUtil","resolvePath","destination","schema","shouldIncludeFileExtension","importAs","eventSignatures","signature","listenPermissionContract","emitPermissionContract","find","id","schemasByNamespace","mapEventSigsToSchemasByNamepace","schemaTemplateItemBuilder","SchemaTemplateItemBuilder","buildTemplateItems"],"mappings":"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","sourcesContent":["import { EventContract } from '@sprucelabs/mercury-types'\nimport { Schema, SchemaError, SchemaTemplateItem } from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\tNamedEventSignature,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tMERCURY_API_NAMESPACE,\n\tnamesUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tEventContractTemplateItem,\n\tEventSignatureTemplateItem,\n} from '@sprucelabs/spruce-templates'\nimport schemaDiskUtil from '../features/schema/utilities/schemaDisk.utility'\nimport SchemaTemplateItemBuilder from './SchemaTemplateItemBuilder'\n\nexport default class EventTemplateItemBuilder {\n\tpublic buildTemplateItems(options: {\n\t\tcontracts: EventContract[]\n\t\tlocalNamespace?: string\n\t\teventBuilderFile?: string\n\t}): {\n\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t} {\n\t\tconst { contracts, localNamespace, eventBuilderFile } = options\n\n\t\tconst eventContractTemplateItems: EventContractTemplateItem[] = []\n\t\tconst schemaTemplateItems: SchemaTemplateItem[] = []\n\n\t\tfor (const contract of contracts) {\n\t\t\tconst {\n\t\t\t\tschemaTemplateItems: schemaItems,\n\t\t\t\teventContractTemplateItems: contractItems,\n\t\t\t} = this.buildTemplateItemsForContract(\n\t\t\t\tcontract,\n\t\t\t\tlocalNamespace,\n\t\t\t\teventBuilderFile\n\t\t\t)\n\n\t\t\teventContractTemplateItems.push(...contractItems)\n\t\t\tschemaTemplateItems.push(...schemaItems)\n\t\t}\n\n\t\teventContractTemplateItems.sort((a, b) => {\n\t\t\tif (a.nameCamel > b.nameCamel) {\n\t\t\t\treturn 1\n\t\t\t} else if (a.nameCamel < b.nameCamel) {\n\t\t\t\treturn -1\n\t\t\t}\n\n\t\t\treturn 0\n\t\t})\n\n\t\treturn { eventContractTemplateItems, schemaTemplateItems }\n\t}\n\n\tpublic buildEventTemplateItemForName(\n\t\tcontracts: EventContract[],\n\t\tfullyQualifiedEventName: string\n\t): {\n\t\tresponsePayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t\temitPayloadSchemaTemplateItem: SchemaTemplateItem | undefined\n\t} {\n\t\tfor (const contract of contracts) {\n\t\t\tconst namedSignatures =\n\t\t\t\teventContractUtil.getNamedEventSignatures(contract)\n\n\t\t\tfor (const namedSig of namedSignatures) {\n\t\t\t\tif (namedSig.fullyQualifiedEventName === fullyQualifiedEventName) {\n\t\t\t\t\tconst schemaTemplateItems: SchemaTemplateItem[] =\n\t\t\t\t\t\tthis.mapEventSigsToSchemaTemplateItems(namedSignatures)\n\n\t\t\t\t\tconst signatureTemplateItem: EventSignatureTemplateItem =\n\t\t\t\t\t\tthis.buildEventSigTemplateItem(namedSig, schemaTemplateItems)\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\temitPayloadSchemaTemplateItem:\n\t\t\t\t\t\t\tsignatureTemplateItem.emitPayloadSchema,\n\t\t\t\t\t\tresponsePayloadSchemaTemplateItem:\n\t\t\t\t\t\t\tsignatureTemplateItem.responsePayloadSchema,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new SchemaError({\n\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\tparameters: ['fullyQualifiedEventName'],\n\t\t\tfriendlyMessages: [\n\t\t\t\t`I could not find any events that match ${fullyQualifiedEventName}.`,\n\t\t\t],\n\t\t})\n\t}\n\n\tprivate buildTemplateItemsForContract(\n\t\tcontract: EventContract,\n\t\tlocalNamespace?: string,\n\t\teventBuilderFile?: string\n\t): {\n\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t} {\n\t\tconst namedSignatures = eventContractUtil.getNamedEventSignatures(contract)\n\n\t\tconst schemaTemplateItems: SchemaTemplateItem[] =\n\t\t\tthis.mapEventSigsToSchemaTemplateItems(namedSignatures)\n\n\t\tconst eventContractTemplateItems: EventContractTemplateItem[] = []\n\n\t\tfor (const namedSig of namedSignatures) {\n\t\t\tconst item: EventContractTemplateItem =\n\t\t\t\tthis.buildTemplateItemForEventSignature(\n\t\t\t\t\tnamedSig,\n\t\t\t\t\tschemaTemplateItems,\n\t\t\t\t\tnamedSig.eventNamespace === localNamespace,\n\t\t\t\t\teventBuilderFile\n\t\t\t\t)\n\n\t\t\teventContractTemplateItems.push(item)\n\t\t}\n\n\t\treturn {\n\t\t\teventContractTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t}\n\t}\n\n\tprivate buildTemplateItemForEventSignature(\n\t\tnamedSig: NamedEventSignature,\n\t\tschemaTemplateItems: SchemaTemplateItem[],\n\t\tisLocal: boolean,\n\t\teventBuilderFile?: string\n\t) {\n\t\tconst namespacePascal = this.sigToNamespacePascal(namedSig)\n\n\t\tconst signatureTemplateItem: EventSignatureTemplateItem =\n\t\t\tthis.buildEventSigTemplateItem(namedSig, schemaTemplateItems)\n\n\t\tconst item: EventContractTemplateItem = {\n\t\t\tnameCamel: namesUtil.toCamel(namedSig.eventName),\n\t\t\tnamePascal: namesUtil.toPascal(namedSig.eventName),\n\t\t\tversion: namedSig.version ?? '***MISSING***',\n\t\t\tisLocal,\n\t\t\tnamespace: namesUtil.toKebab(\n\t\t\t\tnamedSig.eventNamespace ?? MERCURY_API_NAMESPACE\n\t\t\t),\n\t\t\tnamespaceCamel: namesUtil.toCamel(\n\t\t\t\tnamedSig.eventNamespace ?? MERCURY_API_NAMESPACE\n\t\t\t),\n\t\t\timports: [\n\t\t\t\tsignatureTemplateItem.emitPayloadSchema as SchemaTemplateItem,\n\t\t\t\tsignatureTemplateItem.responsePayloadSchema as SchemaTemplateItem,\n\t\t\t]\n\t\t\t\t.filter((i) => !!i)\n\t\t\t\t.map((item: SchemaTemplateItem) => ({\n\t\t\t\t\tpackage: schemaDiskUtil.resolvePath({\n\t\t\t\t\t\tdestination: '#spruce/schemas',\n\t\t\t\t\t\tschema: item.schema,\n\t\t\t\t\t\tshouldIncludeFileExtension: false,\n\t\t\t\t\t}),\n\t\t\t\t\timportAs: `${item.nameCamel}Schema`,\n\t\t\t\t})),\n\t\t\tnamespacePascal,\n\t\t\teventSignatures: {\n\t\t\t\t[namedSig.fullyQualifiedEventName]: signatureTemplateItem,\n\t\t\t},\n\t\t}\n\n\t\titem.imports.push({\n\t\t\timportAs: '{ buildEventContract }',\n\t\t\tpackage: eventBuilderFile ?? '@sprucelabs/mercury-types',\n\t\t})\n\n\t\tif (\n\t\t\tnamedSig.signature.listenPermissionContract ||\n\t\t\tnamedSig.signature.emitPermissionContract\n\t\t) {\n\t\t\titem.imports.push({\n\t\t\t\timportAs: '{ buildPermissionContract }',\n\t\t\t\tpackage: eventBuilderFile ?? '@sprucelabs/mercury-types',\n\t\t\t})\n\t\t}\n\n\t\treturn item\n\t}\n\n\tprivate buildEventSigTemplateItem(\n\t\tnamedSig: NamedEventSignature,\n\t\tschemaItems: SchemaTemplateItem[]\n\t) {\n\t\tconst { emitPayloadSchema, responsePayloadSchema, ...signature } =\n\t\t\tnamedSig.signature\n\n\t\tconst signatureTemplateItem: EventSignatureTemplateItem = { ...signature }\n\n\t\tif (emitPayloadSchema) {\n\t\t\tsignatureTemplateItem.emitPayloadSchema = schemaItems.find(\n\t\t\t\t(i) => i.id === emitPayloadSchema.id\n\t\t\t)\n\t\t}\n\n\t\tif (responsePayloadSchema) {\n\t\t\tsignatureTemplateItem.responsePayloadSchema = schemaItems.find(\n\t\t\t\t(i) => i.id === responsePayloadSchema.id\n\t\t\t)\n\t\t}\n\t\treturn signatureTemplateItem\n\t}\n\n\tprivate mapEventSigsToSchemaTemplateItems(\n\t\tnamedSignatures: NamedEventSignature[]\n\t) {\n\t\tconst schemasByNamespace: Record<string, Schema[]> =\n\t\t\tthis.mapEventSigsToSchemasByNamepace(namedSignatures)\n\n\t\tconst schemaTemplateItemBuilder = new SchemaTemplateItemBuilder('Cli')\n\t\tconst schemaItems: SchemaTemplateItem[] =\n\t\t\tschemaTemplateItemBuilder.buildTemplateItems(\n\t\t\t\tschemasByNamespace,\n\t\t\t\t'#spruce/events'\n\t\t\t)\n\n\t\treturn schemaItems\n\t}\n\n\tprivate mapEventSigsToSchemasByNamepace(\n\t\tnamedSignatures: NamedEventSignature[]\n\t) {\n\t\tconst schemasByNamespace: Record<string, Schema[]> = {}\n\n\t\tfor (const namedSig of namedSignatures) {\n\t\t\tconst namespacePascal = this.sigToNamespacePascal(namedSig)\n\t\t\tconst { emitPayloadSchema, responsePayloadSchema } = namedSig.signature\n\n\t\t\tif (!schemasByNamespace[namespacePascal]) {\n\t\t\t\tschemasByNamespace[namespacePascal] = []\n\t\t\t}\n\n\t\t\tif (emitPayloadSchema) {\n\t\t\t\tschemasByNamespace[namespacePascal].push({\n\t\t\t\t\tversion: namedSig.version,\n\t\t\t\t\t...emitPayloadSchema,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (responsePayloadSchema) {\n\t\t\t\tschemasByNamespace[namespacePascal].push({\n\t\t\t\t\tversion: namedSig.version,\n\t\t\t\t\t...responsePayloadSchema,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn schemasByNamespace\n\t}\n\n\tprivate sigToNamespacePascal(namedSig: NamedEventSignature) {\n\t\treturn namesUtil.toPascal(namedSig.eventNamespace ?? MERCURY_API_NAMESPACE)\n\t}\n}\n"],"file":"EventTemplateItemBuilder.js"}
|
package/package.json
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
]
|
|
19
19
|
},
|
|
20
20
|
"license": "MIT",
|
|
21
|
-
"version": "14.29.
|
|
21
|
+
"version": "14.29.31",
|
|
22
22
|
"bin": {
|
|
23
23
|
"spruce": "./build/index.js"
|
|
24
24
|
},
|
|
@@ -72,29 +72,29 @@
|
|
|
72
72
|
"watch.tsc": "tsc -w --sourceMap"
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
|
-
"@babel/cli": "^7.16.
|
|
75
|
+
"@babel/cli": "^7.16.8",
|
|
76
76
|
"@babel/plugin-proposal-decorators": "^7.16.7",
|
|
77
77
|
"@babel/runtime": "^7.16.7",
|
|
78
78
|
"@jest/reporters": "^27.4.6",
|
|
79
79
|
"@sprucelabs/error": "^5.0.370",
|
|
80
|
-
"@sprucelabs/heartwood-view-controllers": "^55.
|
|
80
|
+
"@sprucelabs/heartwood-view-controllers": "^55.10.22",
|
|
81
81
|
"@sprucelabs/jest-json-reporter": "^6.0.305",
|
|
82
|
-
"@sprucelabs/mercury-client": "^19.3.
|
|
83
|
-
"@sprucelabs/mercury-event-emitter": "^19.3.
|
|
84
|
-
"@sprucelabs/mercury-types": "^26.2.
|
|
85
|
-
"@sprucelabs/schema": "^25.6.
|
|
86
|
-
"@sprucelabs/spruce-core-schemas": "^22.7
|
|
87
|
-
"@sprucelabs/spruce-event-plugin": "^
|
|
88
|
-
"@sprucelabs/spruce-event-utils": "^17.1.
|
|
89
|
-
"@sprucelabs/spruce-skill-booter": "^
|
|
90
|
-
"@sprucelabs/spruce-skill-utils": "^22.2.
|
|
91
|
-
"@sprucelabs/spruce-templates": "^14.29.
|
|
92
|
-
"@typescript-eslint/eslint-plugin": "^5.9.
|
|
93
|
-
"@typescript-eslint/parser": "^5.9.
|
|
82
|
+
"@sprucelabs/mercury-client": "^19.3.24",
|
|
83
|
+
"@sprucelabs/mercury-event-emitter": "^19.3.24",
|
|
84
|
+
"@sprucelabs/mercury-types": "^26.2.41",
|
|
85
|
+
"@sprucelabs/schema": "^25.6.42",
|
|
86
|
+
"@sprucelabs/spruce-core-schemas": "^22.8.7",
|
|
87
|
+
"@sprucelabs/spruce-event-plugin": "^22.0.15",
|
|
88
|
+
"@sprucelabs/spruce-event-utils": "^17.1.509",
|
|
89
|
+
"@sprucelabs/spruce-skill-booter": "^22.0.15",
|
|
90
|
+
"@sprucelabs/spruce-skill-utils": "^22.2.167",
|
|
91
|
+
"@sprucelabs/spruce-templates": "^14.29.31",
|
|
92
|
+
"@typescript-eslint/eslint-plugin": "^5.9.1",
|
|
93
|
+
"@typescript-eslint/parser": "^5.9.1",
|
|
94
94
|
"cfonts": "^2.10.0",
|
|
95
95
|
"chalk": "^4.1.2",
|
|
96
96
|
"chokidar": "^3.5.2",
|
|
97
|
-
"cli-table3": "^0.6.
|
|
97
|
+
"cli-table3": "^0.6.1",
|
|
98
98
|
"commander": "^7.2.0",
|
|
99
99
|
"core-js": "^3.20.2",
|
|
100
100
|
"emphasize": "^4.2.0",
|
|
@@ -119,14 +119,14 @@
|
|
|
119
119
|
"uuid": "^8.3.2"
|
|
120
120
|
},
|
|
121
121
|
"devDependencies": {
|
|
122
|
-
"@sprucelabs/data-stores": "^7.2.
|
|
123
|
-
"@sprucelabs/jest-sheets-reporter": "^1.2.
|
|
124
|
-
"@sprucelabs/mercury-core-events": "^1.7.
|
|
122
|
+
"@sprucelabs/data-stores": "^7.2.171",
|
|
123
|
+
"@sprucelabs/jest-sheets-reporter": "^1.2.302",
|
|
124
|
+
"@sprucelabs/mercury-core-events": "^1.7.96",
|
|
125
125
|
"@sprucelabs/resolve-path-aliases": "^1.0.251",
|
|
126
|
-
"@sprucelabs/spruce-conversation-plugin": "^
|
|
127
|
-
"@sprucelabs/spruce-deploy-plugin": "^
|
|
128
|
-
"@sprucelabs/spruce-store-plugin": "^
|
|
129
|
-
"@sprucelabs/spruce-test-fixtures": "^
|
|
126
|
+
"@sprucelabs/spruce-conversation-plugin": "^22.0.15",
|
|
127
|
+
"@sprucelabs/spruce-deploy-plugin": "^22.0.15",
|
|
128
|
+
"@sprucelabs/spruce-store-plugin": "^22.0.15",
|
|
129
|
+
"@sprucelabs/spruce-test-fixtures": "^22.0.15",
|
|
130
130
|
"@sprucelabs/test": "^7.7.271",
|
|
131
131
|
"@sprucelabs/test-utils": "^3.0.372",
|
|
132
132
|
"@types/blessed": "^0.1.19",
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
"@types/fs-extra": "^9.0.13",
|
|
135
135
|
"@types/inflection": "^1.13.0",
|
|
136
136
|
"@types/inquirer": "^8.1.3",
|
|
137
|
-
"@types/jsonwebtoken": "^8.5.
|
|
137
|
+
"@types/jsonwebtoken": "^8.5.7",
|
|
138
138
|
"@types/lodash": "^4.14.178",
|
|
139
139
|
"@types/md5": "^2.3.1",
|
|
140
140
|
"@types/mkdirp": "^1.0.2",
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
"chokidar-cli": "^3.0.0",
|
|
152
152
|
"concurrently": "^7.0.0",
|
|
153
153
|
"conventional-changelog-sprucelabs": "^1.1.2",
|
|
154
|
-
"dotenv": "^
|
|
154
|
+
"dotenv": "^11.0.0",
|
|
155
155
|
"eslint": "^8.6.0",
|
|
156
156
|
"eslint-config-spruce": "^10.11.0",
|
|
157
157
|
"find-process": "^1.4.7",
|
|
@@ -597,5 +597,5 @@
|
|
|
597
597
|
"ora"
|
|
598
598
|
]
|
|
599
599
|
},
|
|
600
|
-
"gitHead": "
|
|
600
|
+
"gitHead": "56c325d2252c981747a3631ffd34636b35771ba0"
|
|
601
601
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { test, assert } from '@sprucelabs/test'
|
|
2
|
+
import AbstractSkillTest from '../../tests/AbstractSkillTest'
|
|
3
|
+
|
|
4
|
+
export default class ListeningToCoreEventsTest extends AbstractSkillTest {
|
|
5
|
+
protected static skillCacheKey = 'events'
|
|
6
|
+
|
|
7
|
+
@test()
|
|
8
|
+
protected static async canListenToDidInstallWithoutErroring() {
|
|
9
|
+
const results = await this.Action('event', 'listen').execute({
|
|
10
|
+
eventName: 'did-install',
|
|
11
|
+
namespace: 'mercury',
|
|
12
|
+
version: 'v2020_12_25',
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
assert.isFalsy(results.errors?.[0])
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@test()
|
|
19
|
+
protected static async canBootASkillWithACoreListener() {
|
|
20
|
+
await this.getSkillFixture().registerCurrentSkill({
|
|
21
|
+
name: 'global listen test',
|
|
22
|
+
})
|
|
23
|
+
const response = await this.Action('skill', 'boot').execute({ local: true })
|
|
24
|
+
assert.isFalsy(response.errors)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -14,7 +14,7 @@ import testUtil from '../../tests/utilities/test.utility'
|
|
|
14
14
|
const LOCAL_NAMESPACE = 'TestingSchemas'
|
|
15
15
|
const REMOTE_NAMESPACE = 'RemoteSchemas'
|
|
16
16
|
|
|
17
|
-
const REMOTE_MODULE = '@sprucelabs/
|
|
17
|
+
const REMOTE_MODULE = '@sprucelabs/calendar-utils'
|
|
18
18
|
const REMOTE_MODULE2 = '@sprucelabs/spruce-templates'
|
|
19
19
|
|
|
20
20
|
export default class SettingUpSchemasForModuleDistributionTest extends AbstractSkillTest {
|
|
@@ -25,7 +25,7 @@ export default class SettingUpSchemasForModuleDistributionTest extends AbstractS
|
|
|
25
25
|
version: 'v2021_09_20',
|
|
26
26
|
namespace: 'TestingSchemas',
|
|
27
27
|
name: 'Schema imported as module',
|
|
28
|
-
moduleToImportFromWhenRemote: '@sprucelabs/
|
|
28
|
+
moduleToImportFromWhenRemote: '@sprucelabs/calendar-utils',
|
|
29
29
|
fields: {
|
|
30
30
|
fieldName1: { label: 'First Field', type: 'text', isRequired: true },
|
|
31
31
|
fieldName2: {
|
|
@@ -497,7 +497,7 @@ export default class SettingUpSchemasForModuleDistributionTest extends AbstractS
|
|
|
497
497
|
|
|
498
498
|
assert.isEqual(
|
|
499
499
|
calendarEventContents.trim(),
|
|
500
|
-
`export { calendarEventSchema as default } from '@sprucelabs/
|
|
500
|
+
`export { calendarEventSchema as default } from '@sprucelabs/calendar-utils'`
|
|
501
501
|
)
|
|
502
502
|
}
|
|
503
503
|
|
|
@@ -187,7 +187,7 @@ export default class CreatingANewSchemaBuilderTest extends AbstractSchemaTest {
|
|
|
187
187
|
await createPromise
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
// should only have 2 options, none of which
|
|
190
|
+
// should only have 2 options, none of which are "new version" since that was created in secondAnswers
|
|
191
191
|
private static async assertAnswersSecondTime(
|
|
192
192
|
action: FeatureAction,
|
|
193
193
|
newVersion: { intValue: number; constValue: string; dirValue: string }
|
|
@@ -66,7 +66,7 @@ export default class PkgServiceTest extends AbstractSkillTest {
|
|
|
66
66
|
protected static async installingSpruceAndOtherModulesDoesntRemoveSpruceModule() {
|
|
67
67
|
const { totalInstalled } = await this.pkg.install([
|
|
68
68
|
'moment',
|
|
69
|
-
'@sprucelabs/
|
|
69
|
+
'@sprucelabs/calendar-utils',
|
|
70
70
|
])
|
|
71
71
|
|
|
72
72
|
assert.isEqual(totalInstalled, 2)
|
|
@@ -74,7 +74,7 @@ export default class PkgServiceTest extends AbstractSkillTest {
|
|
|
74
74
|
const expectedPath = this.resolvePath(
|
|
75
75
|
'node_modules',
|
|
76
76
|
'@sprucelabs',
|
|
77
|
-
'
|
|
77
|
+
'calendar-utils'
|
|
78
78
|
)
|
|
79
79
|
|
|
80
80
|
assert.isTrue(
|