@sprucelabs/spruce-cli 14.28.8 → 14.29.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.
Files changed (112) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js +13 -9
  3. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
  4. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.d.ts +1 -1
  5. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js +24 -14
  6. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
  7. package/build/__tests__/behavioral/TestingDataStores.test.js +15 -11
  8. package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
  9. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +3 -1
  10. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  11. package/build/__tests__/behavioral/events/CreatingAListener.test.d.ts +2 -0
  12. package/build/__tests__/behavioral/events/CreatingAListener.test.js +157 -81
  13. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  14. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.d.ts +7 -0
  15. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js +171 -0
  16. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -0
  17. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.d.ts +1 -0
  18. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +53 -21
  19. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  20. package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.d.ts +5 -0
  21. package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.js +137 -0
  22. package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.js.map +1 -0
  23. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.d.ts +3 -0
  24. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js +105 -16
  25. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
  26. package/build/__tests__/behavioral/tests/CreatingATest.test.js +14 -10
  27. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  28. package/build/__tests__/behavioral/views/TestingViewControllers.test.d.ts +1 -0
  29. package/build/__tests__/behavioral/views/TestingViewControllers.test.js +67 -35
  30. package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
  31. package/build/__tests__/implementation/AuthService.test.d.ts +1 -0
  32. package/build/__tests__/implementation/AuthService.test.js +8 -0
  33. package/build/__tests__/implementation/AuthService.test.js.map +1 -1
  34. package/build/__tests__/implementation/EventStore.test.js +3 -1
  35. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  36. package/build/__tests__/implementation/StoreFeature.test.d.ts +4 -0
  37. package/build/__tests__/implementation/StoreFeature.test.js +132 -0
  38. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -0
  39. package/build/features/event/EventFeature.d.ts +2 -2
  40. package/build/features/event/EventFeature.js +53 -13
  41. package/build/features/event/EventFeature.js.map +1 -1
  42. package/build/features/event/actions/ListenAction.d.ts +1 -0
  43. package/build/features/event/actions/ListenAction.js +60 -31
  44. package/build/features/event/actions/ListenAction.js.map +1 -1
  45. package/build/features/event/actions/SyncListenersAction.d.ts +15 -0
  46. package/build/features/event/actions/SyncListenersAction.js +115 -0
  47. package/build/features/event/actions/SyncListenersAction.js.map +1 -0
  48. package/build/features/event/builders/ListenerTemplateItemBuilder.d.ts +8 -0
  49. package/build/features/event/builders/ListenerTemplateItemBuilder.js +65 -0
  50. package/build/features/event/builders/ListenerTemplateItemBuilder.js.map +1 -0
  51. package/build/features/event/stores/EventStore.js +2 -2
  52. package/build/features/event/stores/EventStore.js.map +1 -1
  53. package/build/features/event/stores/ListenerStore.d.ts +9 -0
  54. package/build/features/event/stores/ListenerStore.js +122 -0
  55. package/build/features/event/stores/ListenerStore.js.map +1 -0
  56. package/build/features/event/writers/EventWriter.d.ts +4 -1
  57. package/build/features/event/writers/EventWriter.js +42 -8
  58. package/build/features/event/writers/EventWriter.js.map +1 -1
  59. package/build/features/skill/SkillFeature.js +1 -1
  60. package/build/features/skill/SkillFeature.js.map +1 -1
  61. package/build/features/skill/stores/SkillStore.js +4 -8
  62. package/build/features/skill/stores/SkillStore.js.map +1 -1
  63. package/build/features/store/StoreFeature.d.ts +1 -1
  64. package/build/features/store/StoreFeature.js +6 -6
  65. package/build/features/store/StoreFeature.js.map +1 -1
  66. package/build/services/AuthService.d.ts +4 -1
  67. package/build/services/AuthService.js +15 -4
  68. package/build/services/AuthService.js.map +1 -1
  69. package/build/services/LintService.d.ts +4 -1
  70. package/build/services/LintService.js +123 -94
  71. package/build/services/LintService.js.map +1 -1
  72. package/build/services/ServiceFactory.js +3 -3
  73. package/build/services/ServiceFactory.js.map +1 -1
  74. package/build/stores/StoreFactory.d.ts +2 -0
  75. package/build/stores/StoreFactory.js +4 -1
  76. package/build/stores/StoreFactory.js.map +1 -1
  77. package/build/tests/AbstractCliTest.js +3 -3
  78. package/build/tests/AbstractCliTest.js.map +1 -1
  79. package/build/writers/AbstractWriter.d.ts +0 -3
  80. package/build/writers/AbstractWriter.js +2 -18
  81. package/build/writers/AbstractWriter.js.map +1 -1
  82. package/package.json +11 -9
  83. package/src/__tests__/behavioral/SettingLogTransportsInASkill.test.ts +2 -0
  84. package/src/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.ts +10 -5
  85. package/src/__tests__/behavioral/TestingDataStores.test.ts +2 -0
  86. package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +1 -0
  87. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +28 -9
  88. package/src/__tests__/behavioral/events/KeepingListenersInSync.test.ts +47 -0
  89. package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +6 -0
  90. package/src/__tests__/behavioral/skill/UpgradingWithListeners.test.ts +59 -0
  91. package/src/__tests__/behavioral/stores/KeepingDataStoresInSync.test.ts +31 -2
  92. package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -0
  93. package/src/__tests__/behavioral/views/TestingViewControllers.test.ts +6 -0
  94. package/src/__tests__/implementation/AuthService.test.ts +6 -0
  95. package/src/__tests__/implementation/EventStore.test.ts +1 -0
  96. package/src/__tests__/implementation/StoreFeature.test.ts +40 -0
  97. package/src/features/event/EventFeature.ts +21 -4
  98. package/src/features/event/actions/ListenAction.ts +9 -3
  99. package/src/features/event/actions/SyncListenersAction.ts +38 -0
  100. package/src/features/event/builders/ListenerTemplateItemBuilder.ts +27 -0
  101. package/src/features/event/stores/EventStore.ts +1 -1
  102. package/src/features/event/stores/ListenerStore.ts +32 -0
  103. package/src/features/event/writers/EventWriter.ts +19 -0
  104. package/src/features/skill/SkillFeature.ts +1 -1
  105. package/src/features/skill/stores/SkillStore.ts +4 -3
  106. package/src/features/store/StoreFeature.ts +3 -3
  107. package/src/services/AuthService.ts +15 -5
  108. package/src/services/LintService.ts +19 -2
  109. package/src/services/ServiceFactory.ts +9 -3
  110. package/src/stores/StoreFactory.ts +3 -0
  111. package/src/tests/AbstractCliTest.ts +2 -2
  112. package/src/writers/AbstractWriter.ts +2 -13
@@ -242,15 +242,49 @@ var EventWriter = /*#__PURE__*/function (_AbstractWriter) {
242
242
 
243
243
  return writeListener;
244
244
  }()
245
+ }, {
246
+ key: "writeListenerMap",
247
+ value: function () {
248
+ var _writeListenerMap = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(destinationDir, options) {
249
+ var destination, contents, results;
250
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
251
+ while (1) {
252
+ switch (_context5.prev = _context5.next) {
253
+ case 0:
254
+ destination = _spruceSkillUtils.diskUtil.resolvePath(destinationDir, 'listeners.ts');
255
+ contents = this.templates.listeners({
256
+ listeners: options.listeners
257
+ });
258
+ _context5.next = 4;
259
+ return this.writeFileIfChangedMixinResults(destination, contents, 'An object holding all your data stores for easy import!');
260
+
261
+ case 4:
262
+ results = _context5.sent;
263
+ return _context5.abrupt("return", results);
264
+
265
+ case 6:
266
+ case "end":
267
+ return _context5.stop();
268
+ }
269
+ }
270
+ }, _callee5, this);
271
+ }));
272
+
273
+ function writeListenerMap(_x7, _x8) {
274
+ return _writeListenerMap.apply(this, arguments);
275
+ }
276
+
277
+ return writeListenerMap;
278
+ }()
245
279
  }, {
246
280
  key: "writeEvent",
247
281
  value: function () {
248
- var _writeEvent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(destinationDir, options) {
282
+ var _writeEvent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(destinationDir, options) {
249
283
  var version, nameKebab, nameCamel, nameReadable, _options$isGlobal, isGlobal, templates, files, _i, _templates, file, destination, contents;
250
284
 
251
- return _regenerator["default"].wrap(function _callee5$(_context5) {
285
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
252
286
  while (1) {
253
- switch (_context5.prev = _context5.next) {
287
+ switch (_context6.prev = _context6.next) {
254
288
  case 0:
255
289
  version = options.version, nameKebab = options.nameKebab, nameCamel = options.nameCamel, nameReadable = options.nameReadable, _options$isGlobal = options.isGlobal, isGlobal = _options$isGlobal === void 0 ? false : _options$isGlobal;
256
290
  templates = [{
@@ -315,21 +349,21 @@ var EventWriter = /*#__PURE__*/function (_AbstractWriter) {
315
349
  }));
316
350
  }
317
351
 
318
- _context5.next = 6;
352
+ _context6.next = 6;
319
353
  return this.lint(destinationDir);
320
354
 
321
355
  case 6:
322
- return _context5.abrupt("return", files);
356
+ return _context6.abrupt("return", files);
323
357
 
324
358
  case 7:
325
359
  case "end":
326
- return _context5.stop();
360
+ return _context6.stop();
327
361
  }
328
362
  }
329
- }, _callee5, this);
363
+ }, _callee6, this);
330
364
  }));
331
365
 
332
- function writeEvent(_x7, _x8) {
366
+ function writeEvent(_x9, _x10) {
333
367
  return _writeEvent.apply(this, arguments);
334
368
  }
335
369
 
@@ -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","nameKebab","nameCamel","nameReadable","isGlobal","templateMethod","name","action","description","context","files","file","destination","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} 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 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","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"}
@@ -354,7 +354,7 @@ var SkillFeature = /*#__PURE__*/function (_AbstractFeature) {
354
354
 
355
355
  updater = new _Updater["default"](this, this.emitter);
356
356
  _context6.next = 8;
357
- return updater.updateFiles(upgradeOptions);
357
+ return updater.updateFiles(upgradeOptions !== null && upgradeOptions !== void 0 ? upgradeOptions : {});
358
358
 
359
359
  case 8:
360
360
  files = _context6.sent;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/skill/SkillFeature.ts"],"names":["SkillFeature","options","name","version","isDev","universalDevDependencies","skillFeatureSchema","diskUtil","resolvePath","__dirname","node","yarn","boot","health","universalScripts","universalFileDescriptions","path","description","shouldOverwriteWhenChanged","emitter","on","handleRegisterAbstractTestClasses","bind","handleWillExecute","abstractClasses","label","featureCode","install","files","cwd","resolveDestination","destination","Store","setCurrentSkillsNamespace","doesDirExist","createDir","skillGenerator","Writer","writeSkill","installScripts","setEngines","env","Service","set","scriptUpdater","ScriptUpdater","FromFeature","update","pkg","engines","get","all","value","actionCode","upgradeOptions","featureInstaller","isInstalled","updater","Updater","updateFiles","AbstractFeature"],"mappings":"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","sourcesContent":["import { SchemaValues, validateSchemaValues } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport skillFeatureSchema from '#spruce/schemas/spruceCli/v2020_07_22/skillFeature.schema'\nimport { FileDescription, NpmPackage } from '../../types/cli.types'\nimport ScriptUpdater from '../../updaters/ScriptUpdater'\nimport AbstractFeature, { FeatureOptions } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\nimport universalDevDependencies from '../universalDevDependencies'\nimport universalFileDescriptions from '../universalFileDescriptions'\nimport universalScripts from '../universalScripts'\nimport Updater from './updaters/Updater'\n\ntype SkillFeatureOptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.SkillFeatureSchema\ntype SkillFeatureOptions = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeature\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tskill: SkillFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tskill: SchemaValues<SkillFeatureOptionsSchema>\n\t}\n}\n\ntype UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions\n\nexport default class SkillFeature<\n\tS extends SkillFeatureOptionsSchema = SkillFeatureOptionsSchema\n> extends AbstractFeature<S> {\n\tpublic nameReadable = 'Skill'\n\tpublic code: FeatureCode = 'skill'\n\tpublic description = 'The scaffolding needed to run a Skill'\n\tpublic readonly installOrderWeight = 100\n\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{ name: '@sprucelabs/error' },\n\t\t{ name: '@sprucelabs/spruce-skill-utils' },\n\t\t{ name: '@sprucelabs/spruce-skill-booter' },\n\t\t{ name: '@sprucelabs/spruce-event-utils' },\n\t\t{ name: '@sprucelabs/spruce-event-plugin' },\n\t\t{ name: '@sprucelabs/spruce-core-schemas' },\n\t\t{ name: 'dotenv' },\n\t\t{ name: 'globby', version: '^11.0.4' },\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{ name: 'tsconfig-paths', isDev: true },\n\t\t{ name: 'ts-node', isDev: true },\n\t\t...universalDevDependencies,\n\t]\n\n\tpublic optionsSchema = skillFeatureSchema as S\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\tprivate engines = {\n\t\tnode: '16.x',\n\t\tyarn: '1.x',\n\t}\n\tpublic scripts = {\n\t\tboot: 'node build/index',\n\t\t'boot.local':\n\t\t\t'node -r ts-node/register -r tsconfig-paths/register ./src/index',\n\n\t\thealth: 'yarn boot --health',\n\t\t'health.local': 'yarn boot.local --health',\n\n\t\t...universalScripts,\n\t}\n\n\tpublic readonly fileDescriptions: FileDescription[] = [\n\t\t...universalFileDescriptions,\n\t\t{\n\t\t\tpath: 'src/index.ts',\n\t\t\tdescription: 'The file that \"boots\" the skill.',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t\t{\n\t\t\tpath: 'errors/SpruceError.ts',\n\t\t\tdescription: 'Starting error class that you can edit.',\n\t\t\tshouldOverwriteWhenChanged: false,\n\t\t},\n\t\t{\n\t\t\tpath: '.spruce/skill.ts',\n\t\t\tdescription: 'Used to support booting the skill.',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t\t{\n\t\t\tpath: '.spruce/errors/options.types.ts',\n\t\t\tdescription:\n\t\t\t\t'Holds all possible error codes and options. Will be updated as you create more errors (spruce create.error).',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t\t{\n\t\t\tpath: 'src/.spruce/features/event.plugin.ts',\n\t\t\tdescription:\n\t\t\t\t'Gives your skill event support through local boot events and optionall Mercury (spruce event.listen).',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t]\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t`test.register-abstract-test-classes`,\n\t\t\tthis.handleRegisterAbstractTestClasses.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\t}\n\n\tprivate async handleRegisterAbstractTestClasses() {\n\t\treturn {\n\t\t\tabstractClasses: [\n\t\t\t\t{\n\t\t\t\t\tname: 'AbstractSpruceFixtureTest',\n\t\t\t\t\tlabel: 'AbstractSpruceFixtureTest',\n\t\t\t\t\timport: '@sprucelabs/spruce-test-fixtures',\n\t\t\t\t\tfeatureCode: 'skill',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t}\n\n\tpublic async beforePackageInstall(options: SkillFeatureOptions) {\n\t\tconst { files } = await this.install(options)\n\t\treturn { files, cwd: this.resolveDestination(options) }\n\t}\n\n\tpublic async afterPackageInstall(options: SkillFeatureOptions) {\n\t\tconst destination = this.resolveDestination(options)\n\t\tawait this.Store('skill', { cwd: destination }).setCurrentSkillsNamespace(\n\t\t\toptions.name\n\t\t)\n\t\treturn {}\n\t}\n\n\tprivate async install(options: SkillFeatureOptions) {\n\t\tvalidateSchemaValues(skillFeatureSchema, options)\n\n\t\tconst destination = this.resolveDestination(options)\n\t\tif (!diskUtil.doesDirExist(destination)) {\n\t\t\tdiskUtil.createDir(destination)\n\t\t}\n\n\t\tconst skillGenerator = this.Writer('skill')\n\n\t\tconst files = await skillGenerator.writeSkill(destination, options)\n\n\t\tawait this.installScripts(destination)\n\n\t\tthis.setEngines(destination)\n\n\t\tconst env = this.Service('env', destination)\n\t\tenv.set('SKILL_NAME', options.name)\n\n\t\treturn { files }\n\t}\n\n\tprivate resolveDestination(options: SkillFeatureOptions) {\n\t\treturn diskUtil.resolvePath(this.cwd, options.destination ?? '')\n\t}\n\n\tpublic async installScripts(destination = this.cwd) {\n\t\tconst scriptUpdater = ScriptUpdater.FromFeature(this, {\n\t\t\tcwd: destination,\n\t\t})\n\n\t\tawait scriptUpdater.update()\n\t}\n\n\tpublic setEngines(destination: string) {\n\t\tconst pkg = this.Service('pkg', destination)\n\t\tconst engines = (pkg.get('engines') as Record<string, string>) || {}\n\n\t\tfor (const name in this.engines) {\n\t\t\tconst all = this.engines\n\t\t\tengines[name] = this.engines[name as keyof typeof all]\n\t\t}\n\n\t\tpkg.set({ path: 'engines', value: engines })\n\t}\n\n\tpublic async handleWillExecute(options: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t\toptions?: UpgradeOptions\n\t}) {\n\t\tconst { featureCode, actionCode, options: upgradeOptions } = options\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\tconst updater = new Updater(this, this.emitter)\n\t\t\tconst files = await updater.updateFiles(upgradeOptions as any)\n\t\t\treturn {\n\t\t\t\tfiles,\n\t\t\t}\n\t\t}\n\n\t\treturn {}\n\t}\n}\n"],"file":"SkillFeature.js"}
1
+ {"version":3,"sources":["../../../src/features/skill/SkillFeature.ts"],"names":["SkillFeature","options","name","version","isDev","universalDevDependencies","skillFeatureSchema","diskUtil","resolvePath","__dirname","node","yarn","boot","health","universalScripts","universalFileDescriptions","path","description","shouldOverwriteWhenChanged","emitter","on","handleRegisterAbstractTestClasses","bind","handleWillExecute","abstractClasses","label","featureCode","install","files","cwd","resolveDestination","destination","Store","setCurrentSkillsNamespace","doesDirExist","createDir","skillGenerator","Writer","writeSkill","installScripts","setEngines","env","Service","set","scriptUpdater","ScriptUpdater","FromFeature","update","pkg","engines","get","all","value","actionCode","upgradeOptions","featureInstaller","isInstalled","updater","Updater","updateFiles","AbstractFeature"],"mappings":"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","sourcesContent":["import { SchemaValues, validateSchemaValues } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport skillFeatureSchema from '#spruce/schemas/spruceCli/v2020_07_22/skillFeature.schema'\nimport { FileDescription, NpmPackage } from '../../types/cli.types'\nimport ScriptUpdater from '../../updaters/ScriptUpdater'\nimport AbstractFeature, { FeatureOptions } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\nimport universalDevDependencies from '../universalDevDependencies'\nimport universalFileDescriptions from '../universalFileDescriptions'\nimport universalScripts from '../universalScripts'\nimport Updater from './updaters/Updater'\n\ntype SkillFeatureOptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.SkillFeatureSchema\ntype SkillFeatureOptions = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeature\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tskill: SkillFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tskill: SchemaValues<SkillFeatureOptionsSchema>\n\t}\n}\n\ntype UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions\n\nexport default class SkillFeature<\n\tS extends SkillFeatureOptionsSchema = SkillFeatureOptionsSchema\n> extends AbstractFeature<S> {\n\tpublic nameReadable = 'Skill'\n\tpublic code: FeatureCode = 'skill'\n\tpublic description = 'The scaffolding needed to run a Skill'\n\tpublic readonly installOrderWeight = 100\n\n\tpublic packageDependencies: NpmPackage[] = [\n\t\t{ name: '@sprucelabs/error' },\n\t\t{ name: '@sprucelabs/spruce-skill-utils' },\n\t\t{ name: '@sprucelabs/spruce-skill-booter' },\n\t\t{ name: '@sprucelabs/spruce-event-utils' },\n\t\t{ name: '@sprucelabs/spruce-event-plugin' },\n\t\t{ name: '@sprucelabs/spruce-core-schemas' },\n\t\t{ name: 'dotenv' },\n\t\t{ name: 'globby', version: '^11.0.4' },\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{ name: 'tsconfig-paths', isDev: true },\n\t\t{ name: 'ts-node', isDev: true },\n\t\t...universalDevDependencies,\n\t]\n\n\tpublic optionsSchema = skillFeatureSchema as S\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\tprivate engines = {\n\t\tnode: '16.x',\n\t\tyarn: '1.x',\n\t}\n\tpublic scripts = {\n\t\tboot: 'node build/index',\n\t\t'boot.local':\n\t\t\t'node -r ts-node/register -r tsconfig-paths/register ./src/index',\n\n\t\thealth: 'yarn boot --health',\n\t\t'health.local': 'yarn boot.local --health',\n\n\t\t...universalScripts,\n\t}\n\n\tpublic readonly fileDescriptions: FileDescription[] = [\n\t\t...universalFileDescriptions,\n\t\t{\n\t\t\tpath: 'src/index.ts',\n\t\t\tdescription: 'The file that \"boots\" the skill.',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t\t{\n\t\t\tpath: 'errors/SpruceError.ts',\n\t\t\tdescription: 'Starting error class that you can edit.',\n\t\t\tshouldOverwriteWhenChanged: false,\n\t\t},\n\t\t{\n\t\t\tpath: '.spruce/skill.ts',\n\t\t\tdescription: 'Used to support booting the skill.',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t\t{\n\t\t\tpath: '.spruce/errors/options.types.ts',\n\t\t\tdescription:\n\t\t\t\t'Holds all possible error codes and options. Will be updated as you create more errors (spruce create.error).',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t\t{\n\t\t\tpath: 'src/.spruce/features/event.plugin.ts',\n\t\t\tdescription:\n\t\t\t\t'Gives your skill event support through local boot events and optionall Mercury (spruce event.listen).',\n\t\t\tshouldOverwriteWhenChanged: true,\n\t\t},\n\t]\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t`test.register-abstract-test-classes`,\n\t\t\tthis.handleRegisterAbstractTestClasses.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\t}\n\n\tprivate async handleRegisterAbstractTestClasses() {\n\t\treturn {\n\t\t\tabstractClasses: [\n\t\t\t\t{\n\t\t\t\t\tname: 'AbstractSpruceFixtureTest',\n\t\t\t\t\tlabel: 'AbstractSpruceFixtureTest',\n\t\t\t\t\timport: '@sprucelabs/spruce-test-fixtures',\n\t\t\t\t\tfeatureCode: 'skill',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t}\n\n\tpublic async beforePackageInstall(options: SkillFeatureOptions) {\n\t\tconst { files } = await this.install(options)\n\t\treturn { files, cwd: this.resolveDestination(options) }\n\t}\n\n\tpublic async afterPackageInstall(options: SkillFeatureOptions) {\n\t\tconst destination = this.resolveDestination(options)\n\t\tawait this.Store('skill', { cwd: destination }).setCurrentSkillsNamespace(\n\t\t\toptions.name\n\t\t)\n\t\treturn {}\n\t}\n\n\tprivate async install(options: SkillFeatureOptions) {\n\t\tvalidateSchemaValues(skillFeatureSchema, options)\n\n\t\tconst destination = this.resolveDestination(options)\n\t\tif (!diskUtil.doesDirExist(destination)) {\n\t\t\tdiskUtil.createDir(destination)\n\t\t}\n\n\t\tconst skillGenerator = this.Writer('skill')\n\n\t\tconst files = await skillGenerator.writeSkill(destination, options)\n\n\t\tawait this.installScripts(destination)\n\n\t\tthis.setEngines(destination)\n\n\t\tconst env = this.Service('env', destination)\n\t\tenv.set('SKILL_NAME', options.name)\n\n\t\treturn { files }\n\t}\n\n\tprivate resolveDestination(options: SkillFeatureOptions) {\n\t\treturn diskUtil.resolvePath(this.cwd, options.destination ?? '')\n\t}\n\n\tpublic async installScripts(destination = this.cwd) {\n\t\tconst scriptUpdater = ScriptUpdater.FromFeature(this, {\n\t\t\tcwd: destination,\n\t\t})\n\n\t\tawait scriptUpdater.update()\n\t}\n\n\tpublic setEngines(destination: string) {\n\t\tconst pkg = this.Service('pkg', destination)\n\t\tconst engines = (pkg.get('engines') as Record<string, string>) || {}\n\n\t\tfor (const name in this.engines) {\n\t\t\tconst all = this.engines\n\t\t\tengines[name] = this.engines[name as keyof typeof all]\n\t\t}\n\n\t\tpkg.set({ path: 'engines', value: engines })\n\t}\n\n\tpublic async handleWillExecute(options: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t\toptions?: UpgradeOptions\n\t}) {\n\t\tconst { featureCode, actionCode, options: upgradeOptions } = options\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\tconst updater = new Updater(this, this.emitter)\n\t\t\tconst files = await updater.updateFiles(upgradeOptions ?? {})\n\t\t\treturn {\n\t\t\t\tfiles,\n\t\t\t}\n\t\t}\n\n\t\treturn {}\n\t}\n}\n"],"file":"SkillFeature.js"}
@@ -289,7 +289,7 @@ var SkillStore = /*#__PURE__*/function (_AbstractStore) {
289
289
  key: "setCurrentSkillsNamespace",
290
290
  value: function () {
291
291
  var _setCurrentSkillsNamespace = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(namespace) {
292
- var isRegistered, pkg;
292
+ var isRegistered;
293
293
  return _regenerator["default"].wrap(function _callee5$(_context5) {
294
294
  while (1) {
295
295
  switch (_context5.prev = _context5.next) {
@@ -316,17 +316,13 @@ var SkillStore = /*#__PURE__*/function (_AbstractStore) {
316
316
 
317
317
  throw new _SpruceError["default"]({
318
318
  code: 'GENERIC',
319
- friendlyMessage: "You can't change the namespace of a skill that is registered."
319
+ friendlyMessage: "You can't set the namespace of a skill that is registered."
320
320
  });
321
321
 
322
322
  case 11:
323
- pkg = this.Service('pkg');
324
- pkg.set({
325
- path: 'skill.namespace',
326
- value: _spruceSkillUtils.namesUtil.toKebab(namespace)
327
- });
323
+ this.Service('auth').updateCurrentSkillNamespace(namespace);
328
324
 
329
- case 13:
325
+ case 12:
330
326
  case "end":
331
327
  return _context5.stop();
332
328
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/skill/stores/SkillStore.ts"],"names":["SkillStore","values","options","isRegisteringCurrentSkill","assertInSkill","name","slug","description","connectToApi","client","emit","payload","results","eventResponseUtil","getFirstResponseOrThrow","skill","setCurrentSkillsNamespace","Service","updateCurrentSkill","isInstalled","isMarkedAsInstalled","SpruceError","code","currentSkill","getCurrentSkill","shouldAuthAsCurrentSkill","target","skillId","id","response","namespacePascal","namesUtil","toPascal","isRegistered","apiKey","getNamespaceFromPkg","getEventNamespaceForNotRegistered","getSkillDescriptionFromPkg","loadCurrentSkill","pkg","nameFromPackage","get","Error","fallback","current","namespace","isCurrentSkillRegistered","friendlyMessage","set","path","value","toKebab","undefined","logoutCurrentSkill","fetchAllSkills","shouldOnlyShowMine","query","skills","AbstractStore"],"mappings":"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","sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport { CurrentSkill, RegisteredSkill } from '../../../types/cli.types'\n\nexport interface CreateSkill {\n\tname: string\n\tslug: string\n\tdescription?: string\n}\n\nexport interface RegisterSkillOptions {\n\tisRegisteringCurrentSkill?: boolean\n}\n\nexport default class SkillStore extends AbstractStore {\n\tpublic readonly name = 'skill'\n\tprivate static currentSkill?: CurrentSkill\n\n\tpublic static clearCurrentSkill() {\n\t\tthis.currentSkill = undefined\n\t}\n\n\tpublic async register(\n\t\tvalues: CreateSkill,\n\t\toptions?: RegisterSkillOptions\n\t): Promise<RegisteredSkill> {\n\t\tconst isRegisteringCurrentSkill =\n\t\t\toptions?.isRegisteringCurrentSkill !== false\n\n\t\tisRegisteringCurrentSkill && this.assertInSkill()\n\n\t\tconst { name, slug, description } = values\n\t\tconst client = await this.connectToApi()\n\n\t\tconst results = await client.emit('register-skill::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tname,\n\t\t\t\tslug,\n\t\t\t\tdescription,\n\t\t\t},\n\t\t})\n\n\t\tconst { skill } = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tif (isRegisteringCurrentSkill) {\n\t\t\tawait this.setCurrentSkillsNamespace(skill.slug)\n\t\t\tthis.Service('auth').updateCurrentSkill(skill)\n\t\t}\n\n\t\treturn skill\n\t}\n\n\tprivate assertInSkill() {\n\t\tconst isInstalled = this.Service('settings').isMarkedAsInstalled('skill')\n\n\t\tif (!isInstalled) {\n\t\t\tthrow new SpruceError({ code: 'DIRECTORY_NOT_SKILL' })\n\t\t}\n\t}\n\n\tpublic async loadCurrentSkill(): Promise<CurrentSkill> {\n\t\tif (SkillStore.currentSkill) {\n\t\t\treturn SkillStore.currentSkill\n\t\t}\n\n\t\tthis.assertInSkill()\n\n\t\tconst currentSkill = this.Service('auth').getCurrentSkill()\n\n\t\tif (currentSkill) {\n\t\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\t\t\tconst response = await client.emit('get-skill::v2020_12_25', {\n\t\t\t\ttarget: {\n\t\t\t\t\tskillId: currentSkill.id,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tconst { skill } = eventResponseUtil.getFirstResponseOrThrow(response)\n\n\t\t\tSkillStore.currentSkill = {\n\t\t\t\t...skill,\n\t\t\t\tnamespacePascal: namesUtil.toPascal(skill.slug),\n\t\t\t\tisRegistered: true,\n\t\t\t\tapiKey: currentSkill.apiKey,\n\t\t\t}\n\t\t\treturn SkillStore.currentSkill as CurrentSkill\n\t\t}\n\n\t\treturn {\n\t\t\tname: this.getNamespaceFromPkg(),\n\t\t\tnamespacePascal: this.getEventNamespaceForNotRegistered(),\n\t\t\tdescription: this.getSkillDescriptionFromPkg(),\n\t\t\tisRegistered: false,\n\t\t}\n\t}\n\n\tpublic async isCurrentSkillRegistered() {\n\t\tconst skill = await this.loadCurrentSkill()\n\t\treturn skill.isRegistered\n\t}\n\n\tprivate getNamespaceFromPkg() {\n\t\tconst pkg = this.Service('pkg')\n\t\tconst nameFromPackage = pkg.get('skill.namespace')\n\t\tif (!nameFromPackage) {\n\t\t\tthrow new Error(\n\t\t\t\t'You need need to set skill.namespace in the package.json'\n\t\t\t)\n\t\t}\n\t\treturn nameFromPackage\n\t}\n\n\tpublic async loadCurrentSkillsNamespace() {\n\t\tconst fallback = namesUtil.toPascal(this.getNamespaceFromPkg())\n\n\t\tif (this.Service('auth').getCurrentSkill()) {\n\t\t\tconst current = await this.loadCurrentSkill()\n\t\t\treturn namesUtil.toPascal(current.slug ?? fallback)\n\t\t}\n\n\t\treturn fallback\n\t}\n\n\tpublic async setCurrentSkillsNamespace(namespace: string) {\n\t\tlet isRegistered = false\n\t\ttry {\n\t\t\tisRegistered = await this.isCurrentSkillRegistered()\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch {}\n\n\t\tif (isRegistered) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `You can't change the namespace of a skill that is registered.`,\n\t\t\t})\n\t\t}\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: 'skill.namespace', value: namesUtil.toKebab(namespace) })\n\t}\n\n\tprivate getEventNamespaceForNotRegistered() {\n\t\treturn namesUtil.toPascal(this.getNamespaceFromPkg())\n\t}\n\n\tprivate getSkillDescriptionFromPkg() {\n\t\tconst pkg = this.Service('pkg')\n\t\treturn pkg.get('description')\n\t}\n\n\tpublic async unregisterSkill(skillId: string) {\n\t\tconst client = await this.connectToApi()\n\n\t\tconst response = await client.emit('unregister-skill::v2020_12_25', {\n\t\t\ttarget: {\n\t\t\t\tskillId,\n\t\t\t},\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(response)\n\n\t\tif (SkillStore.currentSkill?.id === skillId) {\n\t\t\tSkillStore.currentSkill = undefined\n\t\t\tthis.Service('auth').logoutCurrentSkill()\n\t\t}\n\t}\n\n\tpublic async fetchMySkills() {\n\t\treturn this.fetchAllSkills({ shouldOnlyShowMine: true })\n\t}\n\n\tpublic async fetchAllSkills(query?: {\n\t\tshouldOnlyShowMine?: boolean\n\t\tnamespaces?: string[]\n\t}) {\n\t\tconst client = await this.connectToApi()\n\n\t\tconst response = await client.emit('list-skills::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\t...query,\n\t\t\t},\n\t\t})\n\n\t\tconst { skills } = eventResponseUtil.getFirstResponseOrThrow(response)\n\n\t\treturn skills\n\t}\n}\n"],"file":"SkillStore.js"}
1
+ {"version":3,"sources":["../../../../src/features/skill/stores/SkillStore.ts"],"names":["SkillStore","values","options","isRegisteringCurrentSkill","assertInSkill","name","slug","description","connectToApi","client","emit","payload","results","eventResponseUtil","getFirstResponseOrThrow","skill","setCurrentSkillsNamespace","Service","updateCurrentSkill","isInstalled","isMarkedAsInstalled","SpruceError","code","currentSkill","getCurrentSkill","shouldAuthAsCurrentSkill","target","skillId","id","response","namespacePascal","namesUtil","toPascal","isRegistered","apiKey","getNamespaceFromPkg","getEventNamespaceForNotRegistered","getSkillDescriptionFromPkg","loadCurrentSkill","pkg","nameFromPackage","get","Error","fallback","current","namespace","isCurrentSkillRegistered","friendlyMessage","updateCurrentSkillNamespace","undefined","logoutCurrentSkill","fetchAllSkills","shouldOnlyShowMine","query","skills","AbstractStore"],"mappings":"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","sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport { namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport { CurrentSkill, RegisteredSkill } from '../../../types/cli.types'\n\nexport interface CreateSkill {\n\tname: string\n\tslug: string\n\tdescription?: string\n}\n\nexport interface RegisterSkillOptions {\n\tisRegisteringCurrentSkill?: boolean\n}\n\nexport default class SkillStore extends AbstractStore {\n\tpublic readonly name = 'skill'\n\tprivate static currentSkill?: CurrentSkill\n\n\tpublic static clearCurrentSkill() {\n\t\tthis.currentSkill = undefined\n\t}\n\n\tpublic async register(\n\t\tvalues: CreateSkill,\n\t\toptions?: RegisterSkillOptions\n\t): Promise<RegisteredSkill> {\n\t\tconst isRegisteringCurrentSkill =\n\t\t\toptions?.isRegisteringCurrentSkill !== false\n\n\t\tisRegisteringCurrentSkill && this.assertInSkill()\n\n\t\tconst { name, slug, description } = values\n\t\tconst client = await this.connectToApi()\n\n\t\tconst results = await client.emit('register-skill::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tname,\n\t\t\t\tslug,\n\t\t\t\tdescription,\n\t\t\t},\n\t\t})\n\n\t\tconst { skill } = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tif (isRegisteringCurrentSkill) {\n\t\t\tawait this.setCurrentSkillsNamespace(skill.slug)\n\t\t\tthis.Service('auth').updateCurrentSkill(skill)\n\t\t}\n\n\t\treturn skill\n\t}\n\n\tprivate assertInSkill() {\n\t\tconst isInstalled = this.Service('settings').isMarkedAsInstalled('skill')\n\n\t\tif (!isInstalled) {\n\t\t\tthrow new SpruceError({ code: 'DIRECTORY_NOT_SKILL' })\n\t\t}\n\t}\n\n\tpublic async loadCurrentSkill(): Promise<CurrentSkill> {\n\t\tif (SkillStore.currentSkill) {\n\t\t\treturn SkillStore.currentSkill\n\t\t}\n\n\t\tthis.assertInSkill()\n\n\t\tconst currentSkill = this.Service('auth').getCurrentSkill()\n\n\t\tif (currentSkill) {\n\t\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\t\tconst response = await client.emit('get-skill::v2020_12_25', {\n\t\t\t\ttarget: {\n\t\t\t\t\tskillId: currentSkill.id,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tconst { skill } = eventResponseUtil.getFirstResponseOrThrow(response)\n\n\t\t\tSkillStore.currentSkill = {\n\t\t\t\t...skill,\n\t\t\t\tnamespacePascal: namesUtil.toPascal(skill.slug),\n\t\t\t\tisRegistered: true,\n\t\t\t\tapiKey: currentSkill.apiKey,\n\t\t\t}\n\n\t\t\treturn SkillStore.currentSkill as CurrentSkill\n\t\t}\n\n\t\treturn {\n\t\t\tname: this.getNamespaceFromPkg(),\n\t\t\tnamespacePascal: this.getEventNamespaceForNotRegistered(),\n\t\t\tdescription: this.getSkillDescriptionFromPkg(),\n\t\t\tisRegistered: false,\n\t\t}\n\t}\n\n\tpublic async isCurrentSkillRegistered() {\n\t\tconst skill = await this.loadCurrentSkill()\n\t\treturn skill.isRegistered\n\t}\n\n\tprivate getNamespaceFromPkg() {\n\t\tconst pkg = this.Service('pkg')\n\t\tconst nameFromPackage = pkg.get('skill.namespace')\n\t\tif (!nameFromPackage) {\n\t\t\tthrow new Error(\n\t\t\t\t'You need need to set skill.namespace in the package.json'\n\t\t\t)\n\t\t}\n\t\treturn nameFromPackage\n\t}\n\n\tpublic async loadCurrentSkillsNamespace() {\n\t\tconst fallback = namesUtil.toPascal(this.getNamespaceFromPkg())\n\n\t\tif (this.Service('auth').getCurrentSkill()) {\n\t\t\tconst current = await this.loadCurrentSkill()\n\t\t\treturn namesUtil.toPascal(current.slug ?? fallback)\n\t\t}\n\n\t\treturn fallback\n\t}\n\n\tpublic async setCurrentSkillsNamespace(namespace: string) {\n\t\tlet isRegistered = false\n\t\ttry {\n\t\t\tisRegistered = await this.isCurrentSkillRegistered()\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch {}\n\n\t\tif (isRegistered) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'GENERIC',\n\t\t\t\tfriendlyMessage: `You can't set the namespace of a skill that is registered.`,\n\t\t\t})\n\t\t}\n\n\t\tthis.Service('auth').updateCurrentSkillNamespace(namespace)\n\t}\n\n\tprivate getEventNamespaceForNotRegistered() {\n\t\treturn namesUtil.toPascal(this.getNamespaceFromPkg())\n\t}\n\n\tprivate getSkillDescriptionFromPkg() {\n\t\tconst pkg = this.Service('pkg')\n\t\treturn pkg.get('description')\n\t}\n\n\tpublic async unregisterSkill(skillId: string) {\n\t\tconst client = await this.connectToApi()\n\n\t\tconst response = await client.emit('unregister-skill::v2020_12_25', {\n\t\t\ttarget: {\n\t\t\t\tskillId,\n\t\t\t},\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(response)\n\n\t\tif (SkillStore.currentSkill?.id === skillId) {\n\t\t\tSkillStore.currentSkill = undefined\n\t\t\tthis.Service('auth').logoutCurrentSkill()\n\t\t}\n\t}\n\n\tpublic async fetchMySkills() {\n\t\treturn this.fetchAllSkills({ shouldOnlyShowMine: true })\n\t}\n\n\tpublic async fetchAllSkills(query?: {\n\t\tshouldOnlyShowMine?: boolean\n\t\tnamespaces?: string[]\n\t}) {\n\t\tconst client = await this.connectToApi()\n\n\t\tconst response = await client.emit('list-skills::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\t...query,\n\t\t\t},\n\t\t})\n\n\t\tconst { skills } = eventResponseUtil.getFirstResponseOrThrow(response)\n\n\t\treturn skills\n\t}\n}\n"],"file":"SkillStore.js"}
@@ -17,7 +17,7 @@ export default class StoreFeature extends AbstractFeature {
17
17
  actionsDir: string;
18
18
  constructor(options: FeatureOptions);
19
19
  private registerAbstractTestClassHandler;
20
- private didExecuterHandler;
20
+ private handleWillExecute;
21
21
  afterPackageInstall(): Promise<{
22
22
  files: import("../../writers/AbstractWriter").WriteResults;
23
23
  }>;
@@ -61,7 +61,7 @@ var StoreFeature = /*#__PURE__*/function (_AbstractFeature) {
61
61
  }]);
62
62
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "actionsDir", _spruceSkillUtils.diskUtil.resolvePath(__dirname, 'actions'));
63
63
  void _this.emitter.on('test.register-abstract-test-classes', _this.registerAbstractTestClassHandler.bind((0, _assertThisInitialized2["default"])(_this)));
64
- void _this.emitter.on('feature.did-execute', _this.didExecuterHandler.bind((0, _assertThisInitialized2["default"])(_this)));
64
+ void _this.emitter.on('feature.will-execute', _this.handleWillExecute.bind((0, _assertThisInitialized2["default"])(_this)));
65
65
  return _this;
66
66
  }
67
67
 
@@ -97,9 +97,9 @@ var StoreFeature = /*#__PURE__*/function (_AbstractFeature) {
97
97
  return registerAbstractTestClassHandler;
98
98
  }()
99
99
  }, {
100
- key: "didExecuterHandler",
100
+ key: "handleWillExecute",
101
101
  value: function () {
102
- var _didExecuterHandler = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(payload) {
102
+ var _handleWillExecute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(payload) {
103
103
  var isInstalled;
104
104
  return _regenerator["default"].wrap(function _callee2$(_context2) {
105
105
  while (1) {
@@ -134,11 +134,11 @@ var StoreFeature = /*#__PURE__*/function (_AbstractFeature) {
134
134
  }, _callee2, this);
135
135
  }));
136
136
 
137
- function didExecuterHandler(_x) {
138
- return _didExecuterHandler.apply(this, arguments);
137
+ function handleWillExecute(_x) {
138
+ return _handleWillExecute.apply(this, arguments);
139
139
  }
140
140
 
141
- return didExecuterHandler;
141
+ return handleWillExecute;
142
142
  }()
143
143
  }, {
144
144
  key: "afterPackageInstall",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/store/StoreFeature.ts"],"names":["StoreFeature","options","code","isRequired","name","isDev","diskUtil","resolvePath","__dirname","emitter","on","registerAbstractTestClassHandler","bind","didExecuterHandler","abstractClasses","label","featureCode","payload","featureInstaller","isInstalled","actionCode","uiUtil","renderMasthead","ui","headline","Action","execute","Writer","writePlugin","cwd","files","AbstractFeature"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;IAYqBA,Y;;;;;AAiBpB,wBAAmBC,OAAnB,EAA4C;AAAA;;AAAA;AAC3C,8BAAMA,OAAN;AAD2C,qGAhBtB,aAgBsB;AAAA,oGAfvB,4CAeuB;AAAA,6FAdjB,OAciB;AAAA,qGAbD,CAC1C;AACCC,MAAAA,IAAI,EAAE,OADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAD0C,CAaC;AAAA,4GAPf,CAC5B;AAAEC,MAAAA,IAAI,EAAE,wCAAR;AAAkDC,MAAAA,KAAK,EAAE;AAAzD,KAD4B,EAE5B;AAAED,MAAAA,IAAI,EAAE,gCAAR;AAA0CC,MAAAA,KAAK,EAAE;AAAjD,KAF4B,CAOe;AAAA,mGAFxBC,2BAASC,WAAT,CAAqBC,SAArB,EAAgC,SAAhC,CAEwB;AAG3C,SAAK,MAAKC,OAAL,CAAaC,EAAb,CACJ,qCADI,EAEJ,MAAKC,gCAAL,CAAsCC,IAAtC,gDAFI,CAAL;AAIA,SAAK,MAAKH,OAAL,CAAaC,EAAb,CACJ,qBADI,EAEJ,MAAKG,kBAAL,CAAwBD,IAAxB,gDAFI,CAAL;AAP2C;AAW3C;;;;;4HAED;AAAA;AAAA;AAAA;AAAA;AAAA,iDACQ;AACNE,kBAAAA,eAAe,EAAE,CAChB;AACCV,oBAAAA,IAAI,EAAE,mBADP;AAECW,oBAAAA,KAAK,EAAE,mBAFR;AAGC,8BAAQ,iCAHT;AAICC,oBAAAA,WAAW,EAAE;AAJd,mBADgB;AADX,iBADR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;8GAaA,kBAAiCC,OAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAI2B,KAAKC,gBAAL,CAAsBC,WAAtB,CAAkC,OAAlC,CAJ3B;;AAAA;AAIOA,gBAAAA,WAJP;;AAAA,sBAOEA,WAAW,IACXF,OAAO,CAACD,WAAR,KAAwB,MADxB,IAEAC,OAAO,CAACG,UAAR,KAAuB,SATzB;AAAA;AAAA;AAAA;;AAWEC,+BAAOC,cAAP,CAAsB;AACrBC,kBAAAA,EAAE,EAAE,KAAKA,EADY;AAErBC,kBAAAA,QAAQ,EAAE;AAFW,iBAAtB;;AAXF,kDAeS,KAAKC,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAfT;;AAAA;AAAA,kDAkBQ,EAlBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;+GAqBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACqB,KAAKC,MAAL,CAAY,OAAZ,EAAqBC,WAArB,CAAiC,KAAKC,GAAtC,CADrB;;AAAA;AACOC,gBAAAA,KADP;AAAA,kDAEQ;AACNA,kBAAAA,KAAK,EAALA;AADM,iBAFR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAhEyCC,4B","sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport uiUtil from '../../utilities/ui.utility'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tstore: StoreFeature\n\t}\n}\n\nexport default class StoreFeature extends AbstractFeature {\n\tpublic nameReadable = 'Data Stores'\n\tpublic description = 'For working with remote places of storage.'\n\tpublic code: FeatureCode = 'store'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'skill',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = [\n\t\t{ name: '@sprucelabs/spruce-store-plugin@latest', isDev: false },\n\t\t{ name: '@sprucelabs/data-stores@latest', isDev: false },\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'test.register-abstract-test-classes',\n\t\t\tthis.registerAbstractTestClassHandler.bind(this)\n\t\t)\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.didExecuterHandler.bind(this)\n\t\t)\n\t}\n\n\tprivate async registerAbstractTestClassHandler() {\n\t\treturn {\n\t\t\tabstractClasses: [\n\t\t\t\t{\n\t\t\t\t\tname: 'AbstractStoreTest',\n\t\t\t\t\tlabel: 'AbstractStoreTest',\n\t\t\t\t\timport: '@sprucelabs/spruce-store-plugin',\n\t\t\t\t\tfeatureCode: 'store',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t}\n\n\tprivate async didExecuterHandler(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('store')\n\n\t\tif (\n\t\t\tisInstalled &&\n\t\t\tpayload.featureCode === 'node' &&\n\t\t\tpayload.actionCode === 'upgrade'\n\t\t) {\n\t\t\tuiUtil.renderMasthead({\n\t\t\t\tui: this.ui,\n\t\t\t\theadline: 'Resyncing data stores...',\n\t\t\t})\n\t\t\treturn this.Action('store', 'sync').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tconst files = await this.Writer('store').writePlugin(this.cwd)\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n}\n"],"file":"StoreFeature.js"}
1
+ {"version":3,"sources":["../../../src/features/store/StoreFeature.ts"],"names":["StoreFeature","options","code","isRequired","name","isDev","diskUtil","resolvePath","__dirname","emitter","on","registerAbstractTestClassHandler","bind","handleWillExecute","abstractClasses","label","featureCode","payload","featureInstaller","isInstalled","actionCode","uiUtil","renderMasthead","ui","headline","Action","execute","Writer","writePlugin","cwd","files","AbstractFeature"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;IAYqBA,Y;;;;;AAiBpB,wBAAmBC,OAAnB,EAA4C;AAAA;;AAAA;AAC3C,8BAAMA,OAAN;AAD2C,qGAhBtB,aAgBsB;AAAA,oGAfvB,4CAeuB;AAAA,6FAdjB,OAciB;AAAA,qGAbD,CAC1C;AACCC,MAAAA,IAAI,EAAE,OADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAD0C,CAaC;AAAA,4GAPf,CAC5B;AAAEC,MAAAA,IAAI,EAAE,wCAAR;AAAkDC,MAAAA,KAAK,EAAE;AAAzD,KAD4B,EAE5B;AAAED,MAAAA,IAAI,EAAE,gCAAR;AAA0CC,MAAAA,KAAK,EAAE;AAAjD,KAF4B,CAOe;AAAA,mGAFxBC,2BAASC,WAAT,CAAqBC,SAArB,EAAgC,SAAhC,CAEwB;AAG3C,SAAK,MAAKC,OAAL,CAAaC,EAAb,CACJ,qCADI,EAEJ,MAAKC,gCAAL,CAAsCC,IAAtC,gDAFI,CAAL;AAIA,SAAK,MAAKH,OAAL,CAAaC,EAAb,CACJ,sBADI,EAEJ,MAAKG,iBAAL,CAAuBD,IAAvB,gDAFI,CAAL;AAP2C;AAW3C;;;;;4HAED;AAAA;AAAA;AAAA;AAAA;AAAA,iDACQ;AACNE,kBAAAA,eAAe,EAAE,CAChB;AACCV,oBAAAA,IAAI,EAAE,mBADP;AAECW,oBAAAA,KAAK,EAAE,mBAFR;AAGC,8BAAQ,iCAHT;AAICC,oBAAAA,WAAW,EAAE;AAJd,mBADgB;AADX,iBADR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;6GAaA,kBAAgCC,OAAhC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAI2B,KAAKC,gBAAL,CAAsBC,WAAtB,CAAkC,OAAlC,CAJ3B;;AAAA;AAIOA,gBAAAA,WAJP;;AAAA,sBAOEA,WAAW,IACXF,OAAO,CAACD,WAAR,KAAwB,MADxB,IAEAC,OAAO,CAACG,UAAR,KAAuB,SATzB;AAAA;AAAA;AAAA;;AAWEC,+BAAOC,cAAP,CAAsB;AACrBC,kBAAAA,EAAE,EAAE,KAAKA,EADY;AAErBC,kBAAAA,QAAQ,EAAE;AAFW,iBAAtB;;AAXF,kDAeS,KAAKC,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAfT;;AAAA;AAAA,kDAkBQ,EAlBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;+GAqBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACqB,KAAKC,MAAL,CAAY,OAAZ,EAAqBC,WAArB,CAAiC,KAAKC,GAAtC,CADrB;;AAAA;AACOC,gBAAAA,KADP;AAAA,kDAEQ;AACNA,kBAAAA,KAAK,EAALA;AADM,iBAFR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAhEyCC,4B","sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport uiUtil from '../../utilities/ui.utility'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tstore: StoreFeature\n\t}\n}\n\nexport default class StoreFeature extends AbstractFeature {\n\tpublic nameReadable = 'Data Stores'\n\tpublic description = 'For working with remote places of storage.'\n\tpublic code: FeatureCode = 'store'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'skill',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = [\n\t\t{ name: '@sprucelabs/spruce-store-plugin@latest', isDev: false },\n\t\t{ name: '@sprucelabs/data-stores@latest', isDev: false },\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'test.register-abstract-test-classes',\n\t\t\tthis.registerAbstractTestClassHandler.bind(this)\n\t\t)\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\t}\n\n\tprivate async registerAbstractTestClassHandler() {\n\t\treturn {\n\t\t\tabstractClasses: [\n\t\t\t\t{\n\t\t\t\t\tname: 'AbstractStoreTest',\n\t\t\t\t\tlabel: 'AbstractStoreTest',\n\t\t\t\t\timport: '@sprucelabs/spruce-store-plugin',\n\t\t\t\t\tfeatureCode: 'store',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('store')\n\n\t\tif (\n\t\t\tisInstalled &&\n\t\t\tpayload.featureCode === 'node' &&\n\t\t\tpayload.actionCode === 'upgrade'\n\t\t) {\n\t\t\tuiUtil.renderMasthead({\n\t\t\t\tui: this.ui,\n\t\t\t\theadline: 'Resyncing data stores...',\n\t\t\t})\n\t\t\treturn this.Action('store', 'sync').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tconst files = await this.Writer('store').writePlugin(this.cwd)\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n}\n"],"file":"StoreFeature.js"}
@@ -1,5 +1,6 @@
1
1
  import { SpruceSchemas } from '@sprucelabs/mercury-types';
2
2
  import { EnvService } from '@sprucelabs/spruce-skill-utils';
3
+ import PkgService from './PkgService';
3
4
  declare type PersonWithToken = SpruceSchemas.SpruceCli.v2020_07_22.PersonWithToken;
4
5
  export interface SkillAuth {
5
6
  id: string;
@@ -9,12 +10,14 @@ export interface SkillAuth {
9
10
  }
10
11
  export default class AuthService {
11
12
  private env;
12
- constructor(envService: EnvService);
13
+ private pkg;
14
+ constructor(envService: EnvService, pkgService: PkgService);
13
15
  getLoggedInPerson(): PersonWithToken | null;
14
16
  setLoggedInPerson(person: PersonWithToken): void;
15
17
  logOutPerson(): void;
16
18
  getCurrentSkill(): SkillAuth | null;
17
19
  logoutCurrentSkill(): void;
18
20
  updateCurrentSkill(skill: SkillAuth): void;
21
+ updateCurrentSkillNamespace(namespace: string): void;
19
22
  }
20
23
  export {};
@@ -15,6 +15,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
15
15
 
16
16
  var _schema = require("@sprucelabs/schema");
17
17
 
18
+ var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
19
+
18
20
  var _personWithToken = _interopRequireDefault(require("../.spruce/schemas/spruceCli/v2020_07_22/personWithToken.schema"));
19
21
 
20
22
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
@@ -24,10 +26,12 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
24
26
  var LOGGED_IN_PERSON_KEY = 'LOGGED_IN_PERSON';
25
27
 
26
28
  var AuthService = /*#__PURE__*/function () {
27
- function AuthService(envService) {
29
+ function AuthService(envService, pkgService) {
28
30
  (0, _classCallCheck2["default"])(this, AuthService);
29
31
  (0, _defineProperty2["default"])(this, "env", void 0);
32
+ (0, _defineProperty2["default"])(this, "pkg", void 0);
30
33
  this.env = envService;
34
+ this.pkg = pkgService;
31
35
  }
32
36
 
33
37
  (0, _createClass2["default"])(AuthService, [{
@@ -61,7 +65,7 @@ var AuthService = /*#__PURE__*/function () {
61
65
  var id = this.env.get('SKILL_ID');
62
66
  var apiKey = this.env.get('SKILL_API_KEY');
63
67
  var name = this.env.get('SKILL_NAME');
64
- var slug = this.env.get('SKILL_SLUG');
68
+ var slug = this.pkg.get('skill.namespace');
65
69
 
66
70
  if (id && apiKey) {
67
71
  return {
@@ -80,7 +84,6 @@ var AuthService = /*#__PURE__*/function () {
80
84
  this.env.unset('SKILL_ID');
81
85
  this.env.unset('SKILL_API_KEY');
82
86
  this.env.unset('SKILL_NAME');
83
- this.env.unset('SKILL_SLUG');
84
87
  }
85
88
  }, {
86
89
  key: "updateCurrentSkill",
@@ -88,7 +91,15 @@ var AuthService = /*#__PURE__*/function () {
88
91
  this.env.set('SKILL_ID', skill.id);
89
92
  this.env.set('SKILL_API_KEY', skill.apiKey);
90
93
  this.env.set('SKILL_NAME', skill.name);
91
- this.env.set('SKILL_SLUG', skill.slug);
94
+ this.updateCurrentSkillNamespace(skill.slug);
95
+ }
96
+ }, {
97
+ key: "updateCurrentSkillNamespace",
98
+ value: function updateCurrentSkillNamespace(namespace) {
99
+ this.pkg.set({
100
+ path: 'skill.namespace',
101
+ value: _spruceSkillUtils.namesUtil.toKebab(namespace)
102
+ });
92
103
  }
93
104
  }]);
94
105
  return AuthService;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/services/AuthService.ts"],"names":["LOGGED_IN_PERSON_KEY","AuthService","envService","env","p","get","JSON","parse","person","normalized","personWithTokenSchema","set","stringify","isLoggedIn","unset","id","apiKey","name","slug","skill"],"mappings":";;;;;;;;;;;;;;;AACA;;AAEA;;;;;;AAWA,IAAMA,oBAAoB,GAAG,kBAA7B;;IAEqBC,W;AAGpB,uBAAmBC,UAAnB,EAA2C;AAAA;AAAA;AAC1C,SAAKC,GAAL,GAAWD,UAAX;AACA;;;;WAED,6BAAmD;AAClD,UAAME,CAAC,GAAG,KAAKD,GAAL,CAASE,GAAT,CAAaL,oBAAb,CAAV;;AACA,UAAI,OAAOI,CAAP,KAAa,QAAjB,EAA2B;AAC1B,eAAOE,IAAI,CAACC,KAAL,CAAWH,CAAX,CAAP;AACA;;AAED,aAAO,IAAP;AACA;;;WAED,2BAAyBI,MAAzB,EAAkD;AACjD,UAAMC,UAAU,GAAG,mCAAsBC,2BAAtB,EAA6CF,MAA7C,CAAnB;AACA,wCAAqBE,2BAArB,EAA4CD,UAA5C;AAEA,WAAKN,GAAL,CAASQ,GAAT,CACCX,oBADD,EAECM,IAAI,CAACM,SAAL,iCACIH,UADJ;AAECI,QAAAA,UAAU,EAAE;AAFb,SAFD;AAOA;;;WAED,wBAAsB;AACrB,WAAKV,GAAL,CAASW,KAAT,CAAed,oBAAf;AACA;;;WAED,2BAA2C;AAC1C,UAAMe,EAAE,GAAG,KAAKZ,GAAL,CAASE,GAAT,CAAa,UAAb,CAAX;AACA,UAAMW,MAAM,GAAG,KAAKb,GAAL,CAASE,GAAT,CAAa,eAAb,CAAf;AACA,UAAMY,IAAI,GAAG,KAAKd,GAAL,CAASE,GAAT,CAAa,YAAb,CAAb;AACA,UAAMa,IAAI,GAAG,KAAKf,GAAL,CAASE,GAAT,CAAa,YAAb,CAAb;;AAEA,UAAIU,EAAE,IAAIC,MAAV,EAAkB;AACjB,eAAO;AACND,UAAAA,EAAE,EAAFA,EADM;AAENC,UAAAA,MAAM,EAANA,MAFM;AAGNC,UAAAA,IAAI,EAAJA,IAHM;AAINC,UAAAA,IAAI,EAAJA;AAJM,SAAP;AAMA;;AAED,aAAO,IAAP;AACA;;;WAED,8BAA4B;AAC3B,WAAKf,GAAL,CAASW,KAAT,CAAe,UAAf;AACA,WAAKX,GAAL,CAASW,KAAT,CAAe,eAAf;AACA,WAAKX,GAAL,CAASW,KAAT,CAAe,YAAf;AACA,WAAKX,GAAL,CAASW,KAAT,CAAe,YAAf;AACA;;;WAED,4BAA0BK,KAA1B,EAA4C;AAC3C,WAAKhB,GAAL,CAASQ,GAAT,CAAa,UAAb,EAAyBQ,KAAK,CAACJ,EAA/B;AACA,WAAKZ,GAAL,CAASQ,GAAT,CAAa,eAAb,EAA8BQ,KAAK,CAACH,MAApC;AACA,WAAKb,GAAL,CAASQ,GAAT,CAAa,YAAb,EAA2BQ,KAAK,CAACF,IAAjC;AACA,WAAKd,GAAL,CAASQ,GAAT,CAAa,YAAb,EAA2BQ,KAAK,CAACD,IAAjC;AACA","sourcesContent":["import { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { normalizeSchemaValues, validateSchemaValues } from '@sprucelabs/schema'\nimport { EnvService } from '@sprucelabs/spruce-skill-utils'\nimport personWithTokenSchema from '#spruce/schemas/spruceCli/v2020_07_22/personWithToken.schema'\n\ntype PersonWithToken = SpruceSchemas.SpruceCli.v2020_07_22.PersonWithToken\n\nexport interface SkillAuth {\n\tid: string\n\tapiKey: string\n\tname: string\n\tslug: string\n}\n\nconst LOGGED_IN_PERSON_KEY = 'LOGGED_IN_PERSON'\n\nexport default class AuthService {\n\tprivate env: EnvService\n\n\tpublic constructor(envService: EnvService) {\n\t\tthis.env = envService\n\t}\n\n\tpublic getLoggedInPerson(): PersonWithToken | null {\n\t\tconst p = this.env.get(LOGGED_IN_PERSON_KEY)\n\t\tif (typeof p === 'string') {\n\t\t\treturn JSON.parse(p)\n\t\t}\n\n\t\treturn null\n\t}\n\n\tpublic setLoggedInPerson(person: PersonWithToken) {\n\t\tconst normalized = normalizeSchemaValues(personWithTokenSchema, person)\n\t\tvalidateSchemaValues(personWithTokenSchema, normalized)\n\n\t\tthis.env.set(\n\t\t\tLOGGED_IN_PERSON_KEY,\n\t\t\tJSON.stringify({\n\t\t\t\t...normalized,\n\t\t\t\tisLoggedIn: true,\n\t\t\t})\n\t\t)\n\t}\n\n\tpublic logOutPerson() {\n\t\tthis.env.unset(LOGGED_IN_PERSON_KEY)\n\t}\n\n\tpublic getCurrentSkill(): SkillAuth | null {\n\t\tconst id = this.env.get('SKILL_ID') as string\n\t\tconst apiKey = this.env.get('SKILL_API_KEY') as string\n\t\tconst name = this.env.get('SKILL_NAME') as string\n\t\tconst slug = this.env.get('SKILL_SLUG') as string\n\n\t\tif (id && apiKey) {\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\tapiKey,\n\t\t\t\tname,\n\t\t\t\tslug,\n\t\t\t}\n\t\t}\n\n\t\treturn null\n\t}\n\n\tpublic logoutCurrentSkill() {\n\t\tthis.env.unset('SKILL_ID')\n\t\tthis.env.unset('SKILL_API_KEY')\n\t\tthis.env.unset('SKILL_NAME')\n\t\tthis.env.unset('SKILL_SLUG')\n\t}\n\n\tpublic updateCurrentSkill(skill: SkillAuth) {\n\t\tthis.env.set('SKILL_ID', skill.id)\n\t\tthis.env.set('SKILL_API_KEY', skill.apiKey)\n\t\tthis.env.set('SKILL_NAME', skill.name)\n\t\tthis.env.set('SKILL_SLUG', skill.slug)\n\t}\n}\n"],"file":"AuthService.js"}
1
+ {"version":3,"sources":["../../src/services/AuthService.ts"],"names":["LOGGED_IN_PERSON_KEY","AuthService","envService","pkgService","env","pkg","p","get","JSON","parse","person","normalized","personWithTokenSchema","set","stringify","isLoggedIn","unset","id","apiKey","name","slug","skill","updateCurrentSkillNamespace","namespace","path","value","namesUtil","toKebab"],"mappings":";;;;;;;;;;;;;;;AACA;;AACA;;AACA;;;;;;AAYA,IAAMA,oBAAoB,GAAG,kBAA7B;;IAEqBC,W;AAIpB,uBAAmBC,UAAnB,EAA2CC,UAA3C,EAAmE;AAAA;AAAA;AAAA;AAClE,SAAKC,GAAL,GAAWF,UAAX;AACA,SAAKG,GAAL,GAAWF,UAAX;AACA;;;;WAED,6BAAmD;AAClD,UAAMG,CAAC,GAAG,KAAKF,GAAL,CAASG,GAAT,CAAaP,oBAAb,CAAV;;AACA,UAAI,OAAOM,CAAP,KAAa,QAAjB,EAA2B;AAC1B,eAAOE,IAAI,CAACC,KAAL,CAAWH,CAAX,CAAP;AACA;;AAED,aAAO,IAAP;AACA;;;WAED,2BAAyBI,MAAzB,EAAkD;AACjD,UAAMC,UAAU,GAAG,mCAAsBC,2BAAtB,EAA6CF,MAA7C,CAAnB;AACA,wCAAqBE,2BAArB,EAA4CD,UAA5C;AAEA,WAAKP,GAAL,CAASS,GAAT,CACCb,oBADD,EAECQ,IAAI,CAACM,SAAL,iCACIH,UADJ;AAECI,QAAAA,UAAU,EAAE;AAFb,SAFD;AAOA;;;WAED,wBAAsB;AACrB,WAAKX,GAAL,CAASY,KAAT,CAAehB,oBAAf;AACA;;;WAED,2BAA2C;AAC1C,UAAMiB,EAAE,GAAG,KAAKb,GAAL,CAASG,GAAT,CAAa,UAAb,CAAX;AACA,UAAMW,MAAM,GAAG,KAAKd,GAAL,CAASG,GAAT,CAAa,eAAb,CAAf;AACA,UAAMY,IAAI,GAAG,KAAKf,GAAL,CAASG,GAAT,CAAa,YAAb,CAAb;AACA,UAAMa,IAAI,GAAG,KAAKf,GAAL,CAASE,GAAT,CAAa,iBAAb,CAAb;;AAEA,UAAIU,EAAE,IAAIC,MAAV,EAAkB;AACjB,eAAO;AACND,UAAAA,EAAE,EAAFA,EADM;AAENC,UAAAA,MAAM,EAANA,MAFM;AAGNC,UAAAA,IAAI,EAAJA,IAHM;AAINC,UAAAA,IAAI,EAAJA;AAJM,SAAP;AAMA;;AAED,aAAO,IAAP;AACA;;;WAED,8BAA4B;AAC3B,WAAKhB,GAAL,CAASY,KAAT,CAAe,UAAf;AACA,WAAKZ,GAAL,CAASY,KAAT,CAAe,eAAf;AACA,WAAKZ,GAAL,CAASY,KAAT,CAAe,YAAf;AACA;;;WAED,4BAA0BK,KAA1B,EAA4C;AAC3C,WAAKjB,GAAL,CAASS,GAAT,CAAa,UAAb,EAAyBQ,KAAK,CAACJ,EAA/B;AACA,WAAKb,GAAL,CAASS,GAAT,CAAa,eAAb,EAA8BQ,KAAK,CAACH,MAApC;AACA,WAAKd,GAAL,CAASS,GAAT,CAAa,YAAb,EAA2BQ,KAAK,CAACF,IAAjC;AAEA,WAAKG,2BAAL,CAAiCD,KAAK,CAACD,IAAvC;AACA;;;WAED,qCAAmCG,SAAnC,EAAsD;AACrD,WAAKlB,GAAL,CAASQ,GAAT,CAAa;AACZW,QAAAA,IAAI,EAAE,iBADM;AAEZC,QAAAA,KAAK,EAAEC,4BAAUC,OAAV,CAAkBJ,SAAlB;AAFK,OAAb;AAIA","sourcesContent":["import { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { normalizeSchemaValues, validateSchemaValues } from '@sprucelabs/schema'\nimport { EnvService, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport personWithTokenSchema from '#spruce/schemas/spruceCli/v2020_07_22/personWithToken.schema'\nimport PkgService from './PkgService'\n\ntype PersonWithToken = SpruceSchemas.SpruceCli.v2020_07_22.PersonWithToken\n\nexport interface SkillAuth {\n\tid: string\n\tapiKey: string\n\tname: string\n\tslug: string\n}\n\nconst LOGGED_IN_PERSON_KEY = 'LOGGED_IN_PERSON'\n\nexport default class AuthService {\n\tprivate env: EnvService\n\tprivate pkg: PkgService\n\n\tpublic constructor(envService: EnvService, pkgService: PkgService) {\n\t\tthis.env = envService\n\t\tthis.pkg = pkgService\n\t}\n\n\tpublic getLoggedInPerson(): PersonWithToken | null {\n\t\tconst p = this.env.get(LOGGED_IN_PERSON_KEY)\n\t\tif (typeof p === 'string') {\n\t\t\treturn JSON.parse(p)\n\t\t}\n\n\t\treturn null\n\t}\n\n\tpublic setLoggedInPerson(person: PersonWithToken) {\n\t\tconst normalized = normalizeSchemaValues(personWithTokenSchema, person)\n\t\tvalidateSchemaValues(personWithTokenSchema, normalized)\n\n\t\tthis.env.set(\n\t\t\tLOGGED_IN_PERSON_KEY,\n\t\t\tJSON.stringify({\n\t\t\t\t...normalized,\n\t\t\t\tisLoggedIn: true,\n\t\t\t})\n\t\t)\n\t}\n\n\tpublic logOutPerson() {\n\t\tthis.env.unset(LOGGED_IN_PERSON_KEY)\n\t}\n\n\tpublic getCurrentSkill(): SkillAuth | null {\n\t\tconst id = this.env.get('SKILL_ID') as string\n\t\tconst apiKey = this.env.get('SKILL_API_KEY') as string\n\t\tconst name = this.env.get('SKILL_NAME') as string\n\t\tconst slug = this.pkg.get('skill.namespace') as string\n\n\t\tif (id && apiKey) {\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\tapiKey,\n\t\t\t\tname,\n\t\t\t\tslug,\n\t\t\t}\n\t\t}\n\n\t\treturn null\n\t}\n\n\tpublic logoutCurrentSkill() {\n\t\tthis.env.unset('SKILL_ID')\n\t\tthis.env.unset('SKILL_API_KEY')\n\t\tthis.env.unset('SKILL_NAME')\n\t}\n\n\tpublic updateCurrentSkill(skill: SkillAuth) {\n\t\tthis.env.set('SKILL_ID', skill.id)\n\t\tthis.env.set('SKILL_API_KEY', skill.apiKey)\n\t\tthis.env.set('SKILL_NAME', skill.name)\n\n\t\tthis.updateCurrentSkillNamespace(skill.slug)\n\t}\n\n\tpublic updateCurrentSkillNamespace(namespace: string) {\n\t\tthis.pkg.set({\n\t\t\tpath: 'skill.namespace',\n\t\t\tvalue: namesUtil.toKebab(namespace),\n\t\t})\n\t}\n}\n"],"file":"AuthService.js"}
@@ -2,6 +2,9 @@ import CommandService from './CommandService';
2
2
  export default class LintService {
3
3
  cwd: string;
4
4
  private command;
5
- constructor(cwd: string, command: CommandService);
5
+ private static isLintingEnabled;
6
+ static disableLinting(): void;
7
+ static enableLinting(): void;
8
+ constructor(cwd: string, commandService: CommandService);
6
9
  fix: (pattern: string) => Promise<string[]>;
7
10
  }