@sprucelabs/spruce-cli 14.22.9 → 14.24.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 (192) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.d.ts +10 -0
  3. package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.js +24 -0
  4. package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.js.map +1 -0
  5. package/build/.spruce/events/events.contract.d.ts +346 -36
  6. package/build/.spruce/events/events.contract.js +9 -1
  7. package/build/.spruce/events/events.contract.js.map +1 -1
  8. package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.d.ts +20 -2
  9. package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.js +23 -5
  10. package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.js.map +1 -1
  11. package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.d.ts +20 -2
  12. package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.js +23 -5
  13. package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.js.map +1 -1
  14. package/build/.spruce/events/forms/createForm.v2021_07_02.contract.d.ts +20 -2
  15. package/build/.spruce/events/forms/createForm.v2021_07_02.contract.js +23 -5
  16. package/build/.spruce/events/forms/createForm.v2021_07_02.contract.js.map +1 -1
  17. package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.d.ts +20 -2
  18. package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.js +23 -5
  19. package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.js.map +1 -1
  20. package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.d.ts +15 -0
  21. package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.js +17 -2
  22. package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.js.map +1 -1
  23. package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.d.ts +20 -3
  24. package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.js +23 -6
  25. package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.js.map +1 -1
  26. package/build/.spruce/events/forms/listForms.v2021_07_02.contract.d.ts +38 -4
  27. package/build/.spruce/events/forms/listForms.v2021_07_02.contract.js +45 -11
  28. package/build/.spruce/events/forms/listForms.v2021_07_02.contract.js.map +1 -1
  29. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.d.ts +15 -0
  30. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js +17 -2
  31. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js.map +1 -1
  32. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.d.ts +21 -4
  33. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js +24 -7
  34. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js.map +1 -1
  35. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.d.ts +21 -1
  36. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js +26 -6
  37. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js.map +1 -1
  38. package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.d.ts +38 -0
  39. package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.js +48 -0
  40. package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.js.map +1 -0
  41. package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.d.ts +38 -0
  42. package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.js +48 -0
  43. package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.js.map +1 -0
  44. package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.d.ts +38 -0
  45. package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.js +48 -0
  46. package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.js.map +1 -0
  47. package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.d.ts +3 -0
  48. package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.js +28 -0
  49. package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.js.map +1 -0
  50. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.d.ts +3 -0
  51. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.js +36 -0
  52. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.js.map +1 -0
  53. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.d.ts +3 -0
  54. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.js +28 -0
  55. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.js.map +1 -0
  56. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.d.ts +3 -0
  57. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.js +56 -0
  58. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.js.map +1 -0
  59. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js +0 -10
  60. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  61. package/build/.spruce/schemas/schemas.types.d.ts +678 -604
  62. package/build/.spruce/schemas/schemas.types.js.map +1 -1
  63. package/build/__tests__/behavioral/AddingADependency.test.d.ts +9 -0
  64. package/build/__tests__/behavioral/AddingADependency.test.js +273 -0
  65. package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -0
  66. package/build/__tests__/behavioral/CreatingADataStore.test.js.map +1 -1
  67. package/build/__tests__/behavioral/ManagingDependencies.test.d.ts +9 -0
  68. package/build/__tests__/behavioral/ManagingDependencies.test.js +279 -0
  69. package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -0
  70. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.d.ts +8 -0
  71. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js +209 -0
  72. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -0
  73. package/build/__tests__/behavioral/events/CreatingAListener.test.js +9 -5
  74. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  75. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js +14 -7
  76. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
  77. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +43 -12
  78. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  79. package/build/__tests__/behavioral/views/CreatingATheme.test.js +8 -2
  80. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  81. package/build/__tests__/behavioral/views/SettingUpViews.test.d.ts +1 -0
  82. package/build/__tests__/behavioral/views/SettingUpViews.test.js +48 -3
  83. package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
  84. package/build/__tests__/implementation/EventStore.test.js +4 -3
  85. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  86. package/build/__tests__/implementation/EventTemplateItemBuilder.test.d.ts +1 -0
  87. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js +21 -3
  88. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
  89. package/build/errors/SpruceError.js +2 -2
  90. package/build/errors/SpruceError.js.map +1 -1
  91. package/build/features/FeatureInstaller.d.ts +1 -1
  92. package/build/features/FeatureInstallerFactory.js +4 -2
  93. package/build/features/FeatureInstallerFactory.js.map +1 -1
  94. package/build/features/dependencies/DependencyFeature.d.ts +16 -0
  95. package/build/features/dependencies/DependencyFeature.js +92 -0
  96. package/build/features/dependencies/DependencyFeature.js.map +1 -0
  97. package/build/features/dependencies/actions/AddAction.d.ts +33 -0
  98. package/build/features/dependencies/actions/AddAction.js +154 -0
  99. package/build/features/dependencies/actions/AddAction.js.map +1 -0
  100. package/build/features/dependencies/actions/ManageAction.d.ts +19 -0
  101. package/build/features/dependencies/actions/ManageAction.js +161 -0
  102. package/build/features/dependencies/actions/ManageAction.js.map +1 -0
  103. package/build/features/event/EventFeature.js +2 -1
  104. package/build/features/event/EventFeature.js.map +1 -1
  105. package/build/features/event/builders/EventContractBuilder.d.ts +3 -0
  106. package/build/features/event/builders/EventContractBuilder.js +12 -8
  107. package/build/features/event/builders/EventContractBuilder.js.map +1 -1
  108. package/build/features/event/stores/EventStore.d.ts +2 -1
  109. package/build/features/event/stores/EventStore.js +33 -25
  110. package/build/features/event/stores/EventStore.js.map +1 -1
  111. package/build/features/schema/actions/SyncAction.js +4 -2
  112. package/build/features/schema/actions/SyncAction.js.map +1 -1
  113. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  114. package/build/features/skill/stores/SkillStore.d.ts +4 -0
  115. package/build/features/skill/stores/SkillStore.js +39 -15
  116. package/build/features/skill/stores/SkillStore.js.map +1 -1
  117. package/build/features/view/ViewFeature.js +5 -1
  118. package/build/features/view/ViewFeature.js.map +1 -1
  119. package/build/interfaces/SpyInterface.d.ts +2 -1
  120. package/build/interfaces/SpyInterface.js +67 -7
  121. package/build/interfaces/SpyInterface.js.map +1 -1
  122. package/build/services/DependencyService.d.ts +13 -0
  123. package/build/services/DependencyService.js +49 -0
  124. package/build/services/DependencyService.js.map +1 -0
  125. package/build/services/ServiceFactory.d.ts +2 -0
  126. package/build/services/ServiceFactory.js +5 -0
  127. package/build/services/ServiceFactory.js.map +1 -1
  128. package/build/templateItemBuilders/EventTemplateItemBuilder.js +9 -0
  129. package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
  130. package/build/tests/AbstractCliTest.js +2 -36
  131. package/build/tests/AbstractCliTest.js.map +1 -1
  132. package/build/tests/fixtures/SkillFixture.d.ts +2 -0
  133. package/build/tests/fixtures/SkillFixture.js +8 -8
  134. package/build/tests/fixtures/SkillFixture.js.map +1 -1
  135. package/build/utilities/action.utility.js +1 -5
  136. package/build/utilities/action.utility.js.map +1 -1
  137. package/package.json +27 -27
  138. package/src/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.ts +15 -0
  139. package/src/.spruce/events/events.contract.ts +32 -8
  140. package/src/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.ts +20 -2
  141. package/src/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.ts +20 -2
  142. package/src/.spruce/events/forms/createForm.v2021_07_02.contract.ts +20 -2
  143. package/src/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.ts +20 -2
  144. package/src/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.ts +15 -0
  145. package/src/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.ts +20 -3
  146. package/src/.spruce/events/forms/listForms.v2021_07_02.contract.ts +38 -4
  147. package/src/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.ts +15 -0
  148. package/src/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.ts +21 -4
  149. package/src/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.ts +21 -1
  150. package/src/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.ts +45 -0
  151. package/src/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.ts +45 -0
  152. package/src/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.ts +45 -0
  153. package/src/.spruce/schemas/appointments/v2021_06_23/appointments.schema.ts +22 -0
  154. package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.ts +24 -0
  155. package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.ts +22 -0
  156. package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.ts +36 -0
  157. package/src/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.ts +0 -6
  158. package/src/.spruce/schemas/schemas.types.ts +815 -720
  159. package/src/__tests__/behavioral/AddingADependency.test.ts +98 -0
  160. package/src/__tests__/behavioral/CreatingADataStore.test.ts +2 -0
  161. package/src/__tests__/behavioral/ManagingDependencies.test.ts +115 -0
  162. package/src/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.ts +70 -0
  163. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +5 -0
  164. package/src/__tests__/behavioral/events/KeepingEventsInSync.test.ts +6 -0
  165. package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +27 -0
  166. package/src/__tests__/behavioral/views/CreatingATheme.test.ts +4 -0
  167. package/src/__tests__/behavioral/views/SettingUpViews.test.ts +23 -0
  168. package/src/__tests__/implementation/EventStore.test.ts +5 -2
  169. package/src/__tests__/implementation/EventTemplateItemBuilder.test.ts +20 -1
  170. package/src/errors/SpruceError.ts +1 -1
  171. package/src/features/FeatureInstallerFactory.ts +3 -0
  172. package/src/features/dependencies/DependencyFeature.ts +27 -0
  173. package/src/features/dependencies/actions/AddAction.ts +63 -0
  174. package/src/features/dependencies/actions/ManageAction.ts +84 -0
  175. package/src/features/event/EventFeature.ts +1 -0
  176. package/src/features/event/builders/EventContractBuilder.ts +9 -2
  177. package/src/features/event/stores/EventStore.ts +20 -11
  178. package/src/features/schema/actions/SyncAction.ts +6 -3
  179. package/src/features/skill/actions/RebuildAction.ts +2 -0
  180. package/src/features/skill/stores/SkillStore.ts +8 -1
  181. package/src/features/view/ViewFeature.ts +5 -0
  182. package/src/interfaces/SpyInterface.ts +29 -2
  183. package/src/services/DependencyService.ts +27 -0
  184. package/src/services/ServiceFactory.ts +6 -0
  185. package/src/templateItemBuilders/EventTemplateItemBuilder.ts +10 -0
  186. package/src/tests/AbstractCliTest.ts +1 -21
  187. package/src/tests/fixtures/SkillFixture.ts +6 -2
  188. package/src/utilities/action.utility.ts +1 -6
  189. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.d.ts +0 -3
  190. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.js +0 -28
  191. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.js.map +0 -1
  192. package/src/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.ts +0 -22
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/schema/actions/SyncAction.ts"],"names":["SyncAction","syncSchemasActionSchema","Writer","Store","options","normalizedOptions","validateAndNormalizeOptions","isInCoreSchemasModule","Service","get","schemaTypesDestinationDirOrFile","fieldTypesDestinationDir","schemaLookupDir","addonsLookupDir","shouldEnableVersioning","globalSchemaNamespace","shouldFetchRemoteSchemas","shouldGenerateCoreSchemaTypes","shouldFetchLocalSchemas","generateFieldTypes","generateStandaloneTypesFile","deleteDestinationDirIfNoSchemas","shouldFetchCoreSchemas","registerBuiltSchemas","syncingMessage","deleteOrphanedSchemas","moduleToImportFromWhenRemote","shouldInstallMissingDependencies","ui","startLoading","loadCurrentSkillsNamespace","localNamespace","shouldImportCoreSchemas","CORE_NAMESPACE","schemaDiskUtil","resolveTypeFilePaths","cwd","resolvedFieldTypesDestination","resolvedSchemaTypesDestinationDirOrFile","resolvedSchemaTypesDestination","generateFieldTemplateItems","shouldGenerateFieldTypes","fieldTemplateItems","fieldErrors","generateFieldFiles","schemaErrors","typeResults","generateSchemaTemplateItems","templateResults","push","schemaTemplateItems","length","diskUtil","deleteDir","optionallyInstallRemoteModules","generateValueTypes","resolvedDestination","undefined","valueTypes","schemaWriter","writeSchemasAndTypes","typesTemplate","p","deleteEmptyDirs","isDir","pathUtil","dirname","stopLoading","errors","actionUtil","mergeActionResults","coreSyncResults","files","meta","forceInstall","modules","map","item","importFrom","filter","i","notInstalled","pkg","m","isInstalled","indexOf","renderSection","headline","lines","confirm","SpruceError","code","friendlyMessage","install","schemaStore","fetchSchemas","localSchemaLookupDir","didUpdateHandler","message","schemasByNamespace","hashSpruceDestination","replace","resolveHashSprucePath","total","totalNamespaces","Object","keys","namespace","schemaTemplateItemBuilder","SchemaTemplateItemBuilder","buildTemplateItems","action","Action","execute","results","builder","ValueTypeBuilder","AbstractAction"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { SchemaTemplateItem, FieldTemplateItem } from '@sprucelabs/schema'\nimport { CORE_NAMESPACE, diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { ValueTypes } from '@sprucelabs/spruce-templates'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport syncSchemasActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncSchemasOptions.schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport SchemaTemplateItemBuilder from '../../../templateItemBuilders/SchemaTemplateItemBuilder'\nimport { GeneratedFile } from '../../../types/cli.types'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\nimport schemaDiskUtil from '../utilities/schemaDisk.utility'\nimport ValueTypeBuilder from '../ValueTypeBuilder'\n\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.SyncSchemasOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.SyncSchemasOptions\nexport default class SyncAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = syncSchemasActionSchema\n\tpublic commandAliases = ['sync.schemas']\n\tpublic invocationMessage = 'Building schemas and generating types... 📃'\n\n\tprivate readonly schemaWriter = this.Writer('schema')\n\tprivate readonly schemaStore = this.Store('schema')\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\t\tconst isInCoreSchemasModule =\n\t\t\tthis.Service('pkg').get('name') === '@sprucelabs/spruce-core-schemas'\n\n\t\tlet {\n\t\t\tschemaTypesDestinationDirOrFile,\n\t\t\tfieldTypesDestinationDir,\n\t\t\tschemaLookupDir,\n\t\t\taddonsLookupDir,\n\t\t\tshouldEnableVersioning,\n\t\t\tglobalSchemaNamespace,\n\t\t\tshouldFetchRemoteSchemas,\n\t\t\tshouldGenerateCoreSchemaTypes = isInCoreSchemasModule,\n\t\t\tshouldFetchLocalSchemas,\n\t\t\tgenerateFieldTypes,\n\t\t\tgenerateStandaloneTypesFile,\n\t\t\tdeleteDestinationDirIfNoSchemas,\n\t\t\tshouldFetchCoreSchemas,\n\t\t\tregisterBuiltSchemas,\n\t\t\tsyncingMessage,\n\t\t\tdeleteOrphanedSchemas,\n\t\t\tmoduleToImportFromWhenRemote,\n\t\t\tshouldInstallMissingDependencies,\n\t\t} = normalizedOptions\n\n\t\tthis.ui.startLoading('Loading details about your skill... 🧐')\n\n\t\tlet localNamespace = await this.Store('skill').loadCurrentSkillsNamespace()\n\t\tlet shouldImportCoreSchemas = true\n\n\t\tif (shouldGenerateCoreSchemaTypes) {\n\t\t\tshouldFetchRemoteSchemas = false\n\t\t\tshouldFetchLocalSchemas = true\n\t\t\tshouldFetchCoreSchemas = false\n\t\t\tregisterBuiltSchemas = true\n\t\t\tgenerateStandaloneTypesFile = true\n\t\t\tshouldImportCoreSchemas = false\n\t\t\tlocalNamespace = CORE_NAMESPACE\n\t\t}\n\n\t\tlet coreSyncResults: FeatureActionResponse | undefined\n\n\t\tconst {\n\t\t\tresolvedFieldTypesDestination,\n\t\t\tresolvedSchemaTypesDestinationDirOrFile,\n\t\t\tresolvedSchemaTypesDestination,\n\t\t} = schemaDiskUtil.resolveTypeFilePaths({\n\t\t\tcwd: this.cwd,\n\t\t\tgenerateStandaloneTypesFile,\n\t\t\tschemaTypesDestinationDirOrFile,\n\t\t\tfieldTypesDestinationDir,\n\t\t})\n\n\t\tthis.ui.startLoading('Generating field types...')\n\n\t\tconst { fieldTemplateItems, fieldErrors, generateFieldFiles } =\n\t\t\tawait this.generateFieldTemplateItems({\n\t\t\t\taddonsLookupDir,\n\t\t\t\tshouldGenerateFieldTypes: generateFieldTypes,\n\t\t\t\tresolvedFieldTypesDestination,\n\t\t\t})\n\n\t\tthis.ui.startLoading(syncingMessage)\n\n\t\tconst schemaErrors: SpruceError[] = []\n\t\tlet schemaTemplateItems: SchemaTemplateItem[] | undefined\n\t\tlet typeResults: GeneratedFile[] = []\n\n\t\ttry {\n\t\t\tconst templateResults = await this.generateSchemaTemplateItems({\n\t\t\t\tschemaLookupDir,\n\t\t\t\tshouldFetchLocalSchemas,\n\t\t\t\tmoduleToImportFromWhenRemote,\n\t\t\t\tresolvedSchemaTypesDestinationDirOrFile,\n\t\t\t\tshouldEnableVersioning,\n\t\t\t\tshouldFetchRemoteSchemas,\n\t\t\t\tshouldFetchCoreSchemas,\n\t\t\t\tlocalNamespace,\n\t\t\t})\n\n\t\t\tschemaErrors.push(...templateResults.schemaErrors)\n\t\t\tschemaTemplateItems = templateResults.schemaTemplateItems\n\t\t} catch (err: any) {\n\t\t\tschemaErrors.push(err)\n\t\t}\n\n\t\tif (schemaErrors.length === 0 && schemaTemplateItems) {\n\t\t\tif (deleteDestinationDirIfNoSchemas && schemaTemplateItems.length === 0) {\n\t\t\t\tdiskUtil.deleteDir(resolvedSchemaTypesDestinationDirOrFile)\n\t\t\t\treturn {}\n\t\t\t}\n\n\t\t\tif (deleteOrphanedSchemas) {\n\t\t\t\tthis.ui.startLoading('Identifying orphaned schemas...')\n\n\t\t\t\tawait schemaDiskUtil.deleteOrphanedSchemas(\n\t\t\t\t\tresolvedSchemaTypesDestinationDirOrFile,\n\t\t\t\t\tschemaTemplateItems\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tawait this.optionallyInstallRemoteModules(\n\t\t\t\tschemaTemplateItems,\n\t\t\t\tshouldInstallMissingDependencies\n\t\t\t)\n\n\t\t\tlet valueTypes: ValueTypes | undefined\n\n\t\t\ttry {\n\t\t\t\tvalueTypes = await this.generateValueTypes({\n\t\t\t\t\tresolvedDestination: resolvedFieldTypesDestination,\n\t\t\t\t\tfieldTemplateItems,\n\t\t\t\t\tschemaTemplateItems,\n\t\t\t\t\tglobalSchemaNamespace: globalSchemaNamespace ?? undefined,\n\t\t\t\t})\n\t\t\t} catch (err: any) {\n\t\t\t\tschemaErrors.push(err)\n\t\t\t}\n\n\t\t\tif (valueTypes) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.ui.startLoading('Determining what changed... ⚡️')\n\n\t\t\t\t\ttypeResults = await this.schemaWriter.writeSchemasAndTypes(\n\t\t\t\t\t\tresolvedSchemaTypesDestination,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tregisterBuiltSchemas,\n\t\t\t\t\t\t\tfieldTemplateItems,\n\t\t\t\t\t\t\tschemaTemplateItems,\n\t\t\t\t\t\t\tshouldImportCoreSchemas,\n\t\t\t\t\t\t\tvalueTypes,\n\t\t\t\t\t\t\tglobalSchemaNamespace: globalSchemaNamespace ?? undefined,\n\t\t\t\t\t\t\ttypesTemplate: generateStandaloneTypesFile\n\t\t\t\t\t\t\t\t? 'schema/core.schemas.types.ts.hbs'\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tschemaErrors.push(err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst p = resolvedSchemaTypesDestination\n\t\tdiskUtil.deleteEmptyDirs(diskUtil.isDir(p) ? p : pathUtil.dirname(p))\n\n\t\tthis.ui.stopLoading()\n\n\t\tconst errors = [...schemaErrors, ...fieldErrors]\n\n\t\treturn actionUtil.mergeActionResults(coreSyncResults || {}, {\n\t\t\tfiles: [...typeResults, ...generateFieldFiles],\n\t\t\terrors: errors.length > 0 ? errors : undefined,\n\t\t\tmeta: {\n\t\t\t\tschemaTemplateItems,\n\t\t\t\tfieldTemplateItems,\n\t\t\t},\n\t\t})\n\t}\n\n\tprivate async optionallyInstallRemoteModules(\n\t\tschemaTemplateItems: SchemaTemplateItem[],\n\t\tforceInstall?: boolean\n\t) {\n\t\tconst modules = schemaTemplateItems\n\t\t\t.map((item) => item.importFrom)\n\t\t\t.filter((i) => !!i) as string[]\n\t\tconst notInstalled: string[] = []\n\n\t\tconst pkg = this.Service('pkg')\n\t\tfor (const m of modules) {\n\t\t\tif (!pkg.isInstalled(m) && notInstalled.indexOf(m) === -1) {\n\t\t\t\tnotInstalled.push(m)\n\t\t\t}\n\t\t}\n\n\t\tif (notInstalled.length > 0) {\n\t\t\tif (!forceInstall) {\n\t\t\t\tthis.ui.stopLoading()\n\n\t\t\t\tthis.ui.renderSection({\n\t\t\t\t\theadline: `Missing ${notInstalled.length} module${\n\t\t\t\t\t\tnotInstalled.length === 1 ? '' : 's'\n\t\t\t\t\t}`,\n\t\t\t\t\tlines: [\n\t\t\t\t\t\t`Looks like I need to install the following modules to continue to sync schemas:`,\n\t\t\t\t\t\t'',\n\t\t\t\t\t\t...notInstalled,\n\t\t\t\t\t],\n\t\t\t\t})\n\n\t\t\t\tconst confirm = await this.ui.confirm('Should we do that now?')\n\n\t\t\t\tif (!confirm) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'ACTION_CANCELLED',\n\t\t\t\t\t\tfriendlyMessage: `I can't sync schemas because of the missing modules.`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.ui.startLoading(\n\t\t\t\t`Installing ${notInstalled.length} missing module${\n\t\t\t\t\tnotInstalled.length === 1 ? '' : 's...'\n\t\t\t\t}`\n\t\t\t)\n\n\t\t\tconst pkg = this.Service('pkg')\n\t\t\tawait pkg.install(notInstalled)\n\n\t\t\tthis.ui.stopLoading()\n\t\t}\n\t}\n\n\tprivate async generateSchemaTemplateItems(options: {\n\t\tschemaLookupDir: string | undefined\n\t\tlocalNamespace: string\n\t\tresolvedSchemaTypesDestinationDirOrFile: string\n\t\tshouldFetchLocalSchemas: boolean\n\t\tmoduleToImportFromWhenRemote?: string\n\t\tshouldEnableVersioning: boolean\n\t\tshouldFetchRemoteSchemas: boolean\n\t\tshouldFetchCoreSchemas: boolean\n\t}) {\n\t\tconst {\n\t\t\tschemaLookupDir,\n\t\t\tresolvedSchemaTypesDestinationDirOrFile,\n\t\t\tshouldEnableVersioning,\n\t\t\tshouldFetchRemoteSchemas,\n\t\t\tshouldFetchCoreSchemas,\n\t\t\tshouldFetchLocalSchemas,\n\t\t\tlocalNamespace,\n\t\t\tmoduleToImportFromWhenRemote,\n\t\t} = options\n\n\t\tthis.ui.startLoading('Loading builders...')\n\n\t\tconst { schemasByNamespace, errors: schemaErrors } =\n\t\t\tawait this.schemaStore.fetchSchemas({\n\t\t\t\tlocalSchemaLookupDir: schemaLookupDir,\n\t\t\t\tshouldFetchLocalSchemas,\n\t\t\t\tshouldFetchRemoteSchemas,\n\t\t\t\tshouldEnableVersioning,\n\t\t\t\tmoduleToImportFromWhenRemote,\n\t\t\t\tlocalNamespace,\n\t\t\t\tshouldFetchCoreSchemas,\n\t\t\t\tdidUpdateHandler: (message) => {\n\t\t\t\t\tthis.ui.startLoading(message)\n\t\t\t\t},\n\t\t\t})\n\n\t\tconst hashSpruceDestination =\n\t\t\tresolvedSchemaTypesDestinationDirOrFile.replace(\n\t\t\t\tdiskUtil.resolveHashSprucePath(this.cwd),\n\t\t\t\t'#spruce'\n\t\t\t)\n\n\t\tlet total = 0\n\t\tlet totalNamespaces = 0\n\t\tfor (const namespace of Object.keys(schemasByNamespace)) {\n\t\t\ttotalNamespaces++\n\t\t\ttotal += schemasByNamespace[namespace].length\n\t\t}\n\n\t\tthis.ui.startLoading(\n\t\t\t`Building ${total} schemas from ${totalNamespaces} namespaces.`\n\t\t)\n\n\t\tconst schemaTemplateItemBuilder = new SchemaTemplateItemBuilder(\n\t\t\tlocalNamespace\n\t\t)\n\n\t\tconst schemaTemplateItems: SchemaTemplateItem[] =\n\t\t\tschemaTemplateItemBuilder.buildTemplateItems(\n\t\t\t\tschemasByNamespace,\n\t\t\t\thashSpruceDestination\n\t\t\t)\n\n\t\treturn { schemaTemplateItems, schemaErrors }\n\t}\n\n\tprivate async generateFieldTemplateItems(options: {\n\t\taddonsLookupDir: string\n\t\tshouldGenerateFieldTypes: boolean\n\t\tresolvedFieldTypesDestination: string\n\t}) {\n\t\tconst {\n\t\t\taddonsLookupDir,\n\t\t\tshouldGenerateFieldTypes: generateFieldTypes,\n\t\t\tresolvedFieldTypesDestination,\n\t\t} = options\n\n\t\tconst action = this.Action('schema', 'syncFields')\n\t\tconst results = await action.execute({\n\t\t\tfieldTypesDestinationDir: resolvedFieldTypesDestination,\n\t\t\taddonsLookupDir,\n\t\t\tgenerateFieldTypes,\n\t\t})\n\n\t\treturn {\n\t\t\tgenerateFieldFiles: results.files ?? [],\n\t\t\tfieldTemplateItems: results.meta?.fieldTemplateItems ?? [],\n\t\t\tfieldErrors: results.errors ?? [],\n\t\t}\n\t}\n\n\tprivate async generateValueTypes(options: {\n\t\tresolvedDestination: string\n\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\tglobalSchemaNamespace?: string\n\t}) {\n\t\tthis.ui.startLoading('Generating value types...')\n\n\t\tconst builder = new ValueTypeBuilder(\n\t\t\tthis.schemaWriter,\n\t\t\tthis.Service('import')\n\t\t)\n\n\t\treturn builder.generateValueTypes(options)\n\t}\n}\n"],"file":"SyncAction.js"}
1
+ {"version":3,"sources":["../../../../src/features/schema/actions/SyncAction.ts"],"names":["SyncAction","syncSchemasActionSchema","Writer","Store","options","normalizedOptions","validateAndNormalizeOptions","isInCoreSchemasModule","Service","get","schemaTypesDestinationDirOrFile","fieldTypesDestinationDir","schemaLookupDir","addonsLookupDir","shouldEnableVersioning","globalSchemaNamespace","shouldFetchRemoteSchemas","shouldGenerateCoreSchemaTypes","shouldFetchLocalSchemas","generateFieldTypes","generateStandaloneTypesFile","deleteDestinationDirIfNoSchemas","shouldFetchCoreSchemas","registerBuiltSchemas","syncingMessage","deleteOrphanedSchemas","moduleToImportFromWhenRemote","shouldInstallMissingDependencies","ui","startLoading","loadCurrentSkillsNamespace","localNamespace","shouldImportCoreSchemas","CORE_NAMESPACE","schemaDiskUtil","resolveTypeFilePaths","cwd","resolvedFieldTypesDestination","resolvedSchemaTypesDestinationDirOrFile","resolvedSchemaTypesDestination","generateFieldTemplateItems","shouldGenerateFieldTypes","fieldTemplateItems","fieldErrors","generateFieldFiles","schemaErrors","typeResults","generateSchemaTemplateItems","templateResults","push","schemaTemplateItems","length","diskUtil","deleteDir","optionallyInstallRemoteModules","generateValueTypes","resolvedDestination","undefined","valueTypes","schemaWriter","writeSchemasAndTypes","typesTemplate","p","deleteEmptyDirs","isDir","pathUtil","dirname","stopLoading","errors","actionUtil","mergeActionResults","coreSyncResults","files","meta","forceInstall","modules","map","item","importFrom","filter","i","notInstalled","pkg","m","isInstalled","indexOf","renderSection","headline","lines","confirm","SpruceError","code","friendlyMessage","install","schemaStore","fetchSchemas","localSchemaLookupDir","didUpdateHandler","message","schemasByNamespace","hashSpruceDestination","replace","resolveHashSprucePath","total","totalNamespaces","Object","keys","namespace","schemaTemplateItemBuilder","SchemaTemplateItemBuilder","buildTemplateItems","action","Action","execute","results","builder","ValueTypeBuilder","AbstractAction"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { SchemaTemplateItem, FieldTemplateItem } from '@sprucelabs/schema'\nimport { CORE_NAMESPACE, diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { ValueTypes } from '@sprucelabs/spruce-templates'\nimport uniq from 'lodash/uniq'\nimport { SpruceSchemas } from '#spruce/schemas/schemas.types'\nimport syncSchemasActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncSchemasOptions.schema'\nimport SpruceError from '../../../errors/SpruceError'\nimport SchemaTemplateItemBuilder from '../../../templateItemBuilders/SchemaTemplateItemBuilder'\nimport { GeneratedFile } from '../../../types/cli.types'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\nimport schemaDiskUtil from '../utilities/schemaDisk.utility'\nimport ValueTypeBuilder from '../ValueTypeBuilder'\n\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.SyncSchemasOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.SyncSchemasOptions\nexport default class SyncAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = syncSchemasActionSchema\n\tpublic commandAliases = ['sync.schemas']\n\tpublic invocationMessage = 'Building schemas and generating types... 📃'\n\n\tprivate readonly schemaWriter = this.Writer('schema')\n\tprivate readonly schemaStore = this.Store('schema')\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = this.validateAndNormalizeOptions(options)\n\t\tconst isInCoreSchemasModule =\n\t\t\tthis.Service('pkg').get('name') === '@sprucelabs/spruce-core-schemas'\n\n\t\tlet {\n\t\t\tschemaTypesDestinationDirOrFile,\n\t\t\tfieldTypesDestinationDir,\n\t\t\tschemaLookupDir,\n\t\t\taddonsLookupDir,\n\t\t\tshouldEnableVersioning,\n\t\t\tglobalSchemaNamespace,\n\t\t\tshouldFetchRemoteSchemas,\n\t\t\tshouldGenerateCoreSchemaTypes = isInCoreSchemasModule,\n\t\t\tshouldFetchLocalSchemas,\n\t\t\tgenerateFieldTypes,\n\t\t\tgenerateStandaloneTypesFile,\n\t\t\tdeleteDestinationDirIfNoSchemas,\n\t\t\tshouldFetchCoreSchemas,\n\t\t\tregisterBuiltSchemas,\n\t\t\tsyncingMessage,\n\t\t\tdeleteOrphanedSchemas,\n\t\t\tmoduleToImportFromWhenRemote,\n\t\t\tshouldInstallMissingDependencies,\n\t\t} = normalizedOptions\n\n\t\tthis.ui.startLoading('Loading details about your skill... 🧐')\n\n\t\tlet localNamespace = await this.Store('skill').loadCurrentSkillsNamespace()\n\t\tlet shouldImportCoreSchemas = true\n\n\t\tif (shouldGenerateCoreSchemaTypes) {\n\t\t\tshouldFetchRemoteSchemas = false\n\t\t\tshouldFetchLocalSchemas = true\n\t\t\tshouldFetchCoreSchemas = false\n\t\t\tregisterBuiltSchemas = true\n\t\t\tgenerateStandaloneTypesFile = true\n\t\t\tshouldImportCoreSchemas = false\n\t\t\tlocalNamespace = CORE_NAMESPACE\n\t\t}\n\n\t\tlet coreSyncResults: FeatureActionResponse | undefined\n\n\t\tconst {\n\t\t\tresolvedFieldTypesDestination,\n\t\t\tresolvedSchemaTypesDestinationDirOrFile,\n\t\t\tresolvedSchemaTypesDestination,\n\t\t} = schemaDiskUtil.resolveTypeFilePaths({\n\t\t\tcwd: this.cwd,\n\t\t\tgenerateStandaloneTypesFile,\n\t\t\tschemaTypesDestinationDirOrFile,\n\t\t\tfieldTypesDestinationDir,\n\t\t})\n\n\t\tthis.ui.startLoading('Generating field types...')\n\n\t\tconst { fieldTemplateItems, fieldErrors, generateFieldFiles } =\n\t\t\tawait this.generateFieldTemplateItems({\n\t\t\t\taddonsLookupDir,\n\t\t\t\tshouldGenerateFieldTypes: generateFieldTypes,\n\t\t\t\tresolvedFieldTypesDestination,\n\t\t\t})\n\n\t\tthis.ui.startLoading(syncingMessage)\n\n\t\tconst schemaErrors: SpruceError[] = []\n\t\tlet schemaTemplateItems: SchemaTemplateItem[] | undefined\n\t\tlet typeResults: GeneratedFile[] = []\n\n\t\ttry {\n\t\t\tconst templateResults = await this.generateSchemaTemplateItems({\n\t\t\t\tschemaLookupDir,\n\t\t\t\tshouldFetchLocalSchemas,\n\t\t\t\tmoduleToImportFromWhenRemote,\n\t\t\t\tresolvedSchemaTypesDestinationDirOrFile,\n\t\t\t\tshouldEnableVersioning,\n\t\t\t\tshouldFetchRemoteSchemas,\n\t\t\t\tshouldFetchCoreSchemas,\n\t\t\t\tlocalNamespace,\n\t\t\t})\n\n\t\t\tschemaErrors.push(...templateResults.schemaErrors)\n\t\t\tschemaTemplateItems = templateResults.schemaTemplateItems\n\t\t} catch (err: any) {\n\t\t\tschemaErrors.push(err)\n\t\t}\n\n\t\tif (schemaErrors.length === 0 && schemaTemplateItems) {\n\t\t\tif (deleteDestinationDirIfNoSchemas && schemaTemplateItems.length === 0) {\n\t\t\t\tdiskUtil.deleteDir(resolvedSchemaTypesDestinationDirOrFile)\n\t\t\t\treturn {}\n\t\t\t}\n\n\t\t\tif (deleteOrphanedSchemas) {\n\t\t\t\tthis.ui.startLoading('Identifying orphaned schemas...')\n\n\t\t\t\tawait schemaDiskUtil.deleteOrphanedSchemas(\n\t\t\t\t\tresolvedSchemaTypesDestinationDirOrFile,\n\t\t\t\t\tschemaTemplateItems\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tawait this.optionallyInstallRemoteModules(\n\t\t\t\tschemaTemplateItems,\n\t\t\t\tshouldInstallMissingDependencies\n\t\t\t)\n\n\t\t\tlet valueTypes: ValueTypes | undefined\n\n\t\t\ttry {\n\t\t\t\tvalueTypes = await this.generateValueTypes({\n\t\t\t\t\tresolvedDestination: resolvedFieldTypesDestination,\n\t\t\t\t\tfieldTemplateItems,\n\t\t\t\t\tschemaTemplateItems,\n\t\t\t\t\tglobalSchemaNamespace: globalSchemaNamespace ?? undefined,\n\t\t\t\t})\n\t\t\t} catch (err: any) {\n\t\t\t\tschemaErrors.push(err)\n\t\t\t}\n\n\t\t\tif (valueTypes) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.ui.startLoading('Determining what changed... ⚡️')\n\n\t\t\t\t\ttypeResults = await this.schemaWriter.writeSchemasAndTypes(\n\t\t\t\t\t\tresolvedSchemaTypesDestination,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tregisterBuiltSchemas,\n\t\t\t\t\t\t\tfieldTemplateItems,\n\t\t\t\t\t\t\tschemaTemplateItems,\n\t\t\t\t\t\t\tshouldImportCoreSchemas,\n\t\t\t\t\t\t\tvalueTypes,\n\t\t\t\t\t\t\tglobalSchemaNamespace: globalSchemaNamespace ?? undefined,\n\t\t\t\t\t\t\ttypesTemplate: generateStandaloneTypesFile\n\t\t\t\t\t\t\t\t? 'schema/core.schemas.types.ts.hbs'\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tschemaErrors.push(err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst p = resolvedSchemaTypesDestination\n\t\tdiskUtil.deleteEmptyDirs(diskUtil.isDir(p) ? p : pathUtil.dirname(p))\n\n\t\tthis.ui.stopLoading()\n\n\t\tconst errors = [...schemaErrors, ...fieldErrors]\n\n\t\treturn actionUtil.mergeActionResults(coreSyncResults || {}, {\n\t\t\tfiles: [...typeResults, ...generateFieldFiles],\n\t\t\terrors: errors.length > 0 ? errors : undefined,\n\t\t\tmeta: {\n\t\t\t\tschemaTemplateItems,\n\t\t\t\tfieldTemplateItems,\n\t\t\t},\n\t\t})\n\t}\n\n\tprivate async optionallyInstallRemoteModules(\n\t\tschemaTemplateItems: SchemaTemplateItem[],\n\t\tforceInstall?: boolean\n\t) {\n\t\tconst modules = uniq(\n\t\t\tschemaTemplateItems.map((item) => item.importFrom).filter((i) => !!i)\n\t\t) as string[]\n\n\t\tconst notInstalled: string[] = []\n\n\t\tconst pkg = this.Service('pkg')\n\n\t\tfor (const m of modules) {\n\t\t\tif (!pkg.isInstalled(m) && notInstalled.indexOf(m) === -1) {\n\t\t\t\tnotInstalled.push(m)\n\t\t\t}\n\t\t}\n\n\t\tif (notInstalled.length > 0) {\n\t\t\tif (!forceInstall) {\n\t\t\t\tthis.ui.stopLoading()\n\n\t\t\t\tthis.ui.renderSection({\n\t\t\t\t\theadline: `Missing ${notInstalled.length} module${\n\t\t\t\t\t\tnotInstalled.length === 1 ? '' : 's'\n\t\t\t\t\t}`,\n\t\t\t\t\tlines: [\n\t\t\t\t\t\t`Looks like I need to install the following modules to continue to sync schemas:`,\n\t\t\t\t\t\t'',\n\t\t\t\t\t\t...notInstalled,\n\t\t\t\t\t],\n\t\t\t\t})\n\n\t\t\t\tconst confirm = await this.ui.confirm('Should we do that now?')\n\n\t\t\t\tif (!confirm) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'ACTION_CANCELLED',\n\t\t\t\t\t\tfriendlyMessage: `I can't sync schemas because of the missing modules.`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.ui.startLoading(\n\t\t\t\t`Installing ${notInstalled.length} missing module${\n\t\t\t\t\tnotInstalled.length === 1 ? '' : 's...'\n\t\t\t\t}`\n\t\t\t)\n\n\t\t\tconst pkg = this.Service('pkg')\n\t\t\tawait pkg.install(notInstalled)\n\n\t\t\tthis.ui.stopLoading()\n\t\t}\n\t}\n\n\tprivate async generateSchemaTemplateItems(options: {\n\t\tschemaLookupDir: string | undefined\n\t\tlocalNamespace: string\n\t\tresolvedSchemaTypesDestinationDirOrFile: string\n\t\tshouldFetchLocalSchemas: boolean\n\t\tmoduleToImportFromWhenRemote?: string\n\t\tshouldEnableVersioning: boolean\n\t\tshouldFetchRemoteSchemas: boolean\n\t\tshouldFetchCoreSchemas: boolean\n\t}) {\n\t\tconst {\n\t\t\tschemaLookupDir,\n\t\t\tresolvedSchemaTypesDestinationDirOrFile,\n\t\t\tshouldEnableVersioning,\n\t\t\tshouldFetchRemoteSchemas,\n\t\t\tshouldFetchCoreSchemas,\n\t\t\tshouldFetchLocalSchemas,\n\t\t\tlocalNamespace,\n\t\t\tmoduleToImportFromWhenRemote,\n\t\t} = options\n\n\t\tthis.ui.startLoading('Loading builders...')\n\n\t\tconst { schemasByNamespace, errors: schemaErrors } =\n\t\t\tawait this.schemaStore.fetchSchemas({\n\t\t\t\tlocalSchemaLookupDir: schemaLookupDir,\n\t\t\t\tshouldFetchLocalSchemas,\n\t\t\t\tshouldFetchRemoteSchemas,\n\t\t\t\tshouldEnableVersioning,\n\t\t\t\tmoduleToImportFromWhenRemote,\n\t\t\t\tlocalNamespace,\n\t\t\t\tshouldFetchCoreSchemas,\n\t\t\t\tdidUpdateHandler: (message) => {\n\t\t\t\t\tthis.ui.startLoading(message)\n\t\t\t\t},\n\t\t\t})\n\n\t\tconst hashSpruceDestination =\n\t\t\tresolvedSchemaTypesDestinationDirOrFile.replace(\n\t\t\t\tdiskUtil.resolveHashSprucePath(this.cwd),\n\t\t\t\t'#spruce'\n\t\t\t)\n\n\t\tlet total = 0\n\t\tlet totalNamespaces = 0\n\t\tfor (const namespace of Object.keys(schemasByNamespace)) {\n\t\t\ttotalNamespaces++\n\t\t\ttotal += schemasByNamespace[namespace].length\n\t\t}\n\n\t\tthis.ui.startLoading(\n\t\t\t`Building ${total} schemas from ${totalNamespaces} namespaces.`\n\t\t)\n\n\t\tconst schemaTemplateItemBuilder = new SchemaTemplateItemBuilder(\n\t\t\tlocalNamespace\n\t\t)\n\n\t\tconst schemaTemplateItems: SchemaTemplateItem[] =\n\t\t\tschemaTemplateItemBuilder.buildTemplateItems(\n\t\t\t\tschemasByNamespace,\n\t\t\t\thashSpruceDestination\n\t\t\t)\n\n\t\treturn { schemaTemplateItems, schemaErrors }\n\t}\n\n\tprivate async generateFieldTemplateItems(options: {\n\t\taddonsLookupDir: string\n\t\tshouldGenerateFieldTypes: boolean\n\t\tresolvedFieldTypesDestination: string\n\t}) {\n\t\tconst {\n\t\t\taddonsLookupDir,\n\t\t\tshouldGenerateFieldTypes: generateFieldTypes,\n\t\t\tresolvedFieldTypesDestination,\n\t\t} = options\n\n\t\tconst action = this.Action('schema', 'syncFields')\n\t\tconst results = await action.execute({\n\t\t\tfieldTypesDestinationDir: resolvedFieldTypesDestination,\n\t\t\taddonsLookupDir,\n\t\t\tgenerateFieldTypes,\n\t\t})\n\n\t\treturn {\n\t\t\tgenerateFieldFiles: results.files ?? [],\n\t\t\tfieldTemplateItems: results.meta?.fieldTemplateItems ?? [],\n\t\t\tfieldErrors: results.errors ?? [],\n\t\t}\n\t}\n\n\tprivate async generateValueTypes(options: {\n\t\tresolvedDestination: string\n\t\tfieldTemplateItems: FieldTemplateItem[]\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\tglobalSchemaNamespace?: string\n\t}) {\n\t\tthis.ui.startLoading('Generating value types...')\n\n\t\tconst builder = new ValueTypeBuilder(\n\t\t\tthis.schemaWriter,\n\t\t\tthis.Service('import')\n\t\t)\n\n\t\treturn builder.generateValueTypes(options)\n\t}\n}\n"],"file":"SyncAction.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/skill/actions/RebuildAction.ts"],"names":["optionsSchema","id","description","fields","shouldPlayGames","type","label","defaultValue","RebuildAction","options","validateAndNormalizeOptions","command","Service","InFlightEntertainment","start","ui","startLoading","execute","onData","data","writeStatus","resetUi","errors","summaryLines","stop","stopLoading","AbstractAction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAGA,IAAMA,aAAa,GAAG,yBAAY;AACjCC,EAAAA,EAAE,EAAE,gBAD6B;AAEjCC,EAAAA,WAAW,EACV,iEAHgC;AAIjCC,EAAAA,MAAM,EAAE;AACPC,IAAAA,eAAe,EAAE;AAChBC,MAAAA,IAAI,EAAE,SADU;AAEhBC,MAAAA,KAAK,EAAE,YAFS;AAGhBC,MAAAA,YAAY,EAAE;AAHE;AADV;AAJyB,CAAZ,CAAtB;;IAgBqBC,a;;;;;;;;;;;;;;;sGACkBR,a;uGACd,CAAC,SAAD,C;0GACG,6B;;;;;;;mGAE3B,iBAAqBS,OAArB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,wCAC6B,KAAKC,2BAAL,CAAiCD,OAAjC,CAD7B,EACSL,eADT,yBACSA,eADT;AAEOO,gBAAAA,OAFP,GAEiB,KAAKC,OAAL,CAAa,SAAb,CAFjB;AAAA;;AAKE,oBAAIR,eAAJ,EAAqB;AACpBS,oDAAsBC,KAAtB,CAA4B,CAC3B,iCAD2B,EAE3B,8CAF2B,CAA5B;AAIA,iBALD,MAKO;AACN,uBAAKC,EAAL,CAAQC,YAAR,CAAqB,gBAArB;AACA;;AAZH;AAAA,uBAaQL,OAAO,CAACM,OAAR,CAAgB,cAAhB,EAAgC;AACrCC,kBAAAA,MAAM,EAAE,gBAACC,IAAD,EAAkB;AACzBN,4JAAuBO,WAAvB,CAAmCD,IAAnC;AACA;AAHoC,iBAAhC,CAbR;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAmBE,qBAAKE,OAAL;AAnBF,iDAoBS;AACNC,kBAAAA,MAAM,EAAE;AADF,iBApBT;;AAAA;AAyBC,qBAAKD,OAAL;AAzBD,iDA2BQ;AACNE,kBAAAA,YAAY,EAAE,CACb,0BADa,EAEb,4BAFa,EAGb,0BAHa,EAIb,oBAJa;AADR,iBA3BR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAqCA,mBAAkB;AACjBV,wCAAsBW,IAAtB;;AACA,WAAKT,EAAL,CAAQU,WAAR;AACA;;;EA7CyCC,2B","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport InFlightEntertainment from '../../../InFlightEntertainment'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'rebuildOptions',\n\tdescription:\n\t\t'Clear the build and node_modules folder and start from the top.',\n\tfields: {\n\t\tshouldPlayGames: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Play games',\n\t\t\tdefaultValue: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class RebuildAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['rebuild']\n\tpublic invocationMessage = 'Rebuilding your skill... ⚡️'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst { shouldPlayGames } = this.validateAndNormalizeOptions(options)\n\t\tconst command = this.Service('command')\n\n\t\ttry {\n\t\t\tif (shouldPlayGames) {\n\t\t\t\tInFlightEntertainment.start([\n\t\t\t\t\t'Rebuild sequence initialized...',\n\t\t\t\t\t'The only option is setting a new high score!',\n\t\t\t\t])\n\t\t\t} else {\n\t\t\t\tthis.ui.startLoading('Rebuilding....')\n\t\t\t}\n\t\t\tawait command.execute('yarn rebuild', {\n\t\t\t\tonData: (data: string) => {\n\t\t\t\t\tInFlightEntertainment?.writeStatus(data)\n\t\t\t\t},\n\t\t\t})\n\t\t} catch (err) {\n\t\t\tthis.resetUi()\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\n\t\tthis.resetUi()\n\n\t\treturn {\n\t\t\tsummaryLines: [\n\t\t\t\t'☑️ node_modules cleared.',\n\t\t\t\t'☑️ node_modules installed.',\n\t\t\t\t'☑️ Build folder cleared.',\n\t\t\t\t'☑️ Build complete.',\n\t\t\t],\n\t\t}\n\t}\n\n\tprivate resetUi() {\n\t\tInFlightEntertainment.stop()\n\t\tthis.ui.stopLoading()\n\t}\n}\n"],"file":"RebuildAction.js"}
1
+ {"version":3,"sources":["../../../../src/features/skill/actions/RebuildAction.ts"],"names":["optionsSchema","id","description","fields","shouldPlayGames","type","label","defaultValue","RebuildAction","options","validateAndNormalizeOptions","command","Service","InFlightEntertainment","start","ui","startLoading","execute","onData","data","writeStatus","resetUi","errors","summaryLines","stop","stopLoading","AbstractAction"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAGA,IAAMA,aAAa,GAAG,yBAAY;AACjCC,EAAAA,EAAE,EAAE,gBAD6B;AAEjCC,EAAAA,WAAW,EACV,iEAHgC;AAIjCC,EAAAA,MAAM,EAAE;AACPC,IAAAA,eAAe,EAAE;AAChBC,MAAAA,IAAI,EAAE,SADU;AAEhBC,MAAAA,KAAK,EAAE,YAFS;AAGhBC,MAAAA,YAAY,EAAE;AAHE;AADV;AAJyB,CAAZ,CAAtB;;IAgBqBC,a;;;;;;;;;;;;;;;sGACkBR,a;uGACd,CAAC,SAAD,C;0GACG,6B;;;;;;;mGAE3B,iBAAqBS,OAArB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,wCAC6B,KAAKC,2BAAL,CAAiCD,OAAjC,CAD7B,EACSL,eADT,yBACSA,eADT;AAEOO,gBAAAA,OAFP,GAEiB,KAAKC,OAAL,CAAa,SAAb,CAFjB;AAAA;;AAKE,oBAAIR,eAAJ,EAAqB;AACpBS,oDAAsBC,KAAtB,CAA4B,CAC3B,iCAD2B,EAE3B,8CAF2B,CAA5B;AAIA,iBALD,MAKO;AACN,uBAAKC,EAAL,CAAQC,YAAR,CAAqB,gBAArB;AACA;;AAZH;AAAA,uBAcQL,OAAO,CAACM,OAAR,CAAgB,cAAhB,EAAgC;AACrCC,kBAAAA,MAAM,EAAE,gBAACC,IAAD,EAAkB;AACzBN,4JAAuBO,WAAvB,CAAmCD,IAAnC;AACA;AAHoC,iBAAhC,CAdR;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAoBE,qBAAKE,OAAL;AApBF,iDAsBS;AACNC,kBAAAA,MAAM,EAAE;AADF,iBAtBT;;AAAA;AA2BC,qBAAKD,OAAL;AA3BD,iDA6BQ;AACNE,kBAAAA,YAAY,EAAE,CACb,0BADa,EAEb,4BAFa,EAGb,0BAHa,EAIb,oBAJa;AADR,iBA7BR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAuCA,mBAAkB;AACjBV,wCAAsBW,IAAtB;;AACA,WAAKT,EAAL,CAAQU,WAAR;AACA;;;EA/CyCC,2B","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport InFlightEntertainment from '../../../InFlightEntertainment'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'rebuildOptions',\n\tdescription:\n\t\t'Clear the build and node_modules folder and start from the top.',\n\tfields: {\n\t\tshouldPlayGames: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Play games',\n\t\t\tdefaultValue: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class RebuildAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['rebuild']\n\tpublic invocationMessage = 'Rebuilding your skill... ⚡️'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst { shouldPlayGames } = this.validateAndNormalizeOptions(options)\n\t\tconst command = this.Service('command')\n\n\t\ttry {\n\t\t\tif (shouldPlayGames) {\n\t\t\t\tInFlightEntertainment.start([\n\t\t\t\t\t'Rebuild sequence initialized...',\n\t\t\t\t\t'The only option is setting a new high score!',\n\t\t\t\t])\n\t\t\t} else {\n\t\t\t\tthis.ui.startLoading('Rebuilding....')\n\t\t\t}\n\n\t\t\tawait command.execute('yarn rebuild', {\n\t\t\t\tonData: (data: string) => {\n\t\t\t\t\tInFlightEntertainment?.writeStatus(data)\n\t\t\t\t},\n\t\t\t})\n\t\t} catch (err) {\n\t\t\tthis.resetUi()\n\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\n\t\tthis.resetUi()\n\n\t\treturn {\n\t\t\tsummaryLines: [\n\t\t\t\t'☑️ node_modules cleared.',\n\t\t\t\t'☑️ node_modules installed.',\n\t\t\t\t'☑️ Build folder cleared.',\n\t\t\t\t'☑️ Build complete.',\n\t\t\t],\n\t\t}\n\t}\n\n\tprivate resetUi() {\n\t\tInFlightEntertainment.stop()\n\t\tthis.ui.stopLoading()\n\t}\n}\n"],"file":"RebuildAction.js"}
@@ -23,4 +23,8 @@ export default class SkillStore extends AbstractStore {
23
23
  private getSkillDescriptionFromPkg;
24
24
  unregisterSkill(skillId: string): Promise<void>;
25
25
  fetchMySkills(): Promise<import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/mercury-types").SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillsResponsePayloadSchema, false, import("@sprucelabs/schema").SchemaOptionalFieldNames<import("@sprucelabs/mercury-types").SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillsResponsePayloadSchema>, import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/mercury-types").SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillsResponsePayloadSchema, false>>[]>;
26
+ fetchAllSkills(query?: {
27
+ showMineOnly?: boolean;
28
+ namespaces?: string[];
29
+ }): Promise<import("@sprucelabs/schema").SchemaStaticValues<import("@sprucelabs/mercury-types").SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillsResponsePayloadSchema, false, import("@sprucelabs/schema").SchemaOptionalFieldNames<import("@sprucelabs/mercury-types").SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillsResponsePayloadSchema>, import("@sprucelabs/schema").StaticSchemaAllValues<import("@sprucelabs/mercury-types").SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillsResponsePayloadSchema, false>>[]>;
26
30
  }
@@ -402,42 +402,66 @@ var SkillStore = /*#__PURE__*/function (_AbstractStore) {
402
402
  key: "fetchMySkills",
403
403
  value: function () {
404
404
  var _fetchMySkills = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
405
- var client, response, _eventResponseUtil$ge3, skills;
406
-
407
405
  return _regenerator["default"].wrap(function _callee7$(_context7) {
408
406
  while (1) {
409
407
  switch (_context7.prev = _context7.next) {
410
408
  case 0:
411
- _context7.next = 2;
409
+ return _context7.abrupt("return", this.fetchAllSkills({
410
+ showMineOnly: true
411
+ }));
412
+
413
+ case 1:
414
+ case "end":
415
+ return _context7.stop();
416
+ }
417
+ }
418
+ }, _callee7, this);
419
+ }));
420
+
421
+ function fetchMySkills() {
422
+ return _fetchMySkills.apply(this, arguments);
423
+ }
424
+
425
+ return fetchMySkills;
426
+ }()
427
+ }, {
428
+ key: "fetchAllSkills",
429
+ value: function () {
430
+ var _fetchAllSkills = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(query) {
431
+ var client, response, _eventResponseUtil$ge3, skills;
432
+
433
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
434
+ while (1) {
435
+ switch (_context8.prev = _context8.next) {
436
+ case 0:
437
+ _context8.next = 2;
412
438
  return this.connectToApi();
413
439
 
414
440
  case 2:
415
- client = _context7.sent;
416
- _context7.next = 5;
441
+ client = _context8.sent;
442
+ _context8.next = 5;
417
443
  return client.emit('list-skills::v2020_12_25', {
418
- payload: {
419
- showMineOnly: true
420
- }
444
+ payload: _objectSpread({}, query)
421
445
  });
422
446
 
423
447
  case 5:
424
- response = _context7.sent;
448
+ response = _context8.sent;
425
449
  _eventResponseUtil$ge3 = _spruceEventUtils.eventResponseUtil.getFirstResponseOrThrow(response), skills = _eventResponseUtil$ge3.skills;
426
- return _context7.abrupt("return", skills);
450
+ return _context8.abrupt("return", skills);
427
451
 
428
452
  case 8:
429
453
  case "end":
430
- return _context7.stop();
454
+ return _context8.stop();
431
455
  }
432
456
  }
433
- }, _callee7, this);
457
+ }, _callee8, this);
434
458
  }));
435
459
 
436
- function fetchMySkills() {
437
- return _fetchMySkills.apply(this, arguments);
460
+ function fetchAllSkills(_x5) {
461
+ return _fetchAllSkills.apply(this, arguments);
438
462
  }
439
463
 
440
- return fetchMySkills;
464
+ return fetchAllSkills;
441
465
  }()
442
466
  }], [{
443
467
  key: "clearCurrentSkill",
@@ -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","showMineOnly","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\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\tshowMineOnly: true,\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","set","path","value","toKebab","undefined","logoutCurrentSkill","fetchAllSkills","showMineOnly","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({ showMineOnly: true })\n\t}\n\n\tpublic async fetchAllSkills(query?: {\n\t\tshowMineOnly?: 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"}
@@ -143,11 +143,15 @@ var ViewFeature = /*#__PURE__*/function (_AbstractFeature) {
143
143
 
144
144
  case 2:
145
145
  files = _context3.sent;
146
+ this.Service('dependency').add({
147
+ id: '**',
148
+ namespace: 'heartwood'
149
+ });
146
150
  return _context3.abrupt("return", {
147
151
  files: files
148
152
  });
149
153
 
150
- case 4:
154
+ case 5:
151
155
  case "end":
152
156
  return _context3.stop();
153
157
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/view/ViewFeature.ts"],"names":["ViewFeature","options","diskUtil","resolvePath","__dirname","name","code","isRequired","emitter","on","payload","featureCode","actionCode","featureInstaller","isInstalled","Writer","writePlugin","cwd","files","abstractClasses","label","AbstractFeature"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IAaqBA,W;;;;;AA8BpB,uBAAmBC,OAAnB,EAA2C;AAAA;;AAAA;AAC1C,8BAAMA,OAAN;AAD0C,qGA7BrB,OA6BqB;AAAA,oGA5BtB,oDA4BsB;AAAA,6FA3BhB,MA2BgB;AAAA,mGA1BvBC,2BAASC,WAAT,CAAqBC,SAArB,EAAgC,SAAhC,CA0BuB;AAAA,4GAxBS,CACnD;AACCC,MAAAA,IAAI,EAAE;AADP,KADmD,EAInD;AACCA,MAAAA,IAAI,EAAE;AADP,KAJmD,CAwBT;AAAA,qGAfA,CAC1C;AACCC,MAAAA,IAAI,EAAE,OADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAD0C,EAK1C;AACCD,MAAAA,IAAI,EAAE,QADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAL0C,EAS1C;AACCD,MAAAA,IAAI,EAAE,OADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAT0C,CAeA;AAG1C,SAAK,MAAKC,OAAL,CAAaC,EAAb,CAAgB,qBAAhB;AAAA,+FAAuC,iBAAOC,OAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AACnCC,gBAAAA,WADmC,GACPD,OADO,CACnCC,WADmC,EACtBC,UADsB,GACPF,OADO,CACtBE,UADsB;AAAA;AAAA,uBAEjB,MAAKC,gBAAL,CAAsBC,WAAtB,CAAkC,MAAlC,CAFiB;;AAAA;AAErCA,gBAAAA,WAFqC;;AAAA,sBAIvCA,WAAW,IAAIH,WAAW,KAAK,MAA/B,IAAyCC,UAAU,KAAK,SAJjB;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAKtB,MAAKG,MAAL,CAAY,MAAZ,EAAoBC,WAApB,CAAgC,MAAKC,GAArC,CALsB;;AAAA;AAKpCC,gBAAAA,KALoC;AAAA,iDAMnC;AACNA,kBAAAA,KAAK,EAALA;AADM,iBANmC;;AAAA;AAAA,iDAUpC,EAVoC;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAvC;;AAAA;AAAA;AAAA;AAAA,QAAL;AAaA,SAAK,MAAKV,OAAL,CAAaC,EAAb,CAAgB,qCAAhB,6FAAuD;AAAA;AAAA;AAAA;AAAA;AAAA,gDACpD;AACNU,gBAAAA,eAAe,EAAE,CAChB;AACCd,kBAAAA,IAAI,EAAE,4BADP;AAECe,kBAAAA,KAAK,EAAE,4BAFR;AAGC,4BAAQ,gCAHT;AAICT,kBAAAA,WAAW,EAAE;AAJd,iBADgB;AADX,eADoD;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAvD,GAAL;AAhB0C;AA4B1C;;;;;+GAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACqB,KAAKI,MAAL,CAAY,MAAZ,EAAoBC,WAApB,CAAgC,KAAKC,GAArC,CADrB;;AAAA;AACOC,gBAAAA,KADP;AAAA,kDAGQ;AAAEA,kBAAAA,KAAK,EAALA;AAAF,iBAHR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EA5DwCG,4B","sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { NpmPackage } from '../../types/cli.types'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { ActionOptions, FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tview: ViewFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tview: undefined\n\t}\n}\n\nexport default class ViewFeature extends AbstractFeature {\n\tpublic nameReadable = 'views'\n\tpublic description = 'Views: Create views using the Heartwood framework.'\n\tpublic code: FeatureCode = 'view'\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/heartwood-view-controllers@latest',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-view-plugin@latest',\n\t\t},\n\t]\n\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'skill',\n\t\t\tisRequired: true,\n\t\t},\n\t\t{\n\t\t\tcode: 'schema',\n\t\t\tisRequired: true,\n\t\t},\n\t\t{\n\t\t\tcode: 'event',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.did-execute', async (payload) => {\n\t\t\tconst { featureCode, actionCode } = payload\n\t\t\tconst isInstalled = await this.featureInstaller.isInstalled('view')\n\n\t\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\t\tconst files = await this.Writer('view').writePlugin(this.cwd)\n\t\t\t\treturn {\n\t\t\t\t\tfiles,\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid this.emitter.on('test.register-abstract-test-classes', async () => {\n\t\t\treturn {\n\t\t\t\tabstractClasses: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'AbstractViewControllerTest',\n\t\t\t\t\t\tlabel: 'AbstractViewControllerTest',\n\t\t\t\t\t\timport: '@sprucelabs/spruce-view-plugin',\n\t\t\t\t\t\tfeatureCode: 'view',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tconst files = await this.Writer('view').writePlugin(this.cwd)\n\n\t\treturn { files }\n\t}\n}\n"],"file":"ViewFeature.js"}
1
+ {"version":3,"sources":["../../../src/features/view/ViewFeature.ts"],"names":["ViewFeature","options","diskUtil","resolvePath","__dirname","name","code","isRequired","emitter","on","payload","featureCode","actionCode","featureInstaller","isInstalled","Writer","writePlugin","cwd","files","abstractClasses","label","Service","add","id","namespace","AbstractFeature"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;IAaqBA,W;;;;;AA8BpB,uBAAmBC,OAAnB,EAA2C;AAAA;;AAAA;AAC1C,8BAAMA,OAAN;AAD0C,qGA7BrB,OA6BqB;AAAA,oGA5BtB,oDA4BsB;AAAA,6FA3BhB,MA2BgB;AAAA,mGA1BvBC,2BAASC,WAAT,CAAqBC,SAArB,EAAgC,SAAhC,CA0BuB;AAAA,4GAxBS,CACnD;AACCC,MAAAA,IAAI,EAAE;AADP,KADmD,EAInD;AACCA,MAAAA,IAAI,EAAE;AADP,KAJmD,CAwBT;AAAA,qGAfA,CAC1C;AACCC,MAAAA,IAAI,EAAE,OADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAD0C,EAK1C;AACCD,MAAAA,IAAI,EAAE,QADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAL0C,EAS1C;AACCD,MAAAA,IAAI,EAAE,OADP;AAECC,MAAAA,UAAU,EAAE;AAFb,KAT0C,CAeA;AAG1C,SAAK,MAAKC,OAAL,CAAaC,EAAb,CAAgB,qBAAhB;AAAA,+FAAuC,iBAAOC,OAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AACnCC,gBAAAA,WADmC,GACPD,OADO,CACnCC,WADmC,EACtBC,UADsB,GACPF,OADO,CACtBE,UADsB;AAAA;AAAA,uBAEjB,MAAKC,gBAAL,CAAsBC,WAAtB,CAAkC,MAAlC,CAFiB;;AAAA;AAErCA,gBAAAA,WAFqC;;AAAA,sBAIvCA,WAAW,IAAIH,WAAW,KAAK,MAA/B,IAAyCC,UAAU,KAAK,SAJjB;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAKtB,MAAKG,MAAL,CAAY,MAAZ,EAAoBC,WAApB,CAAgC,MAAKC,GAArC,CALsB;;AAAA;AAKpCC,gBAAAA,KALoC;AAAA,iDAMnC;AACNA,kBAAAA,KAAK,EAALA;AADM,iBANmC;;AAAA;AAAA,iDAUpC,EAVoC;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAvC;;AAAA;AAAA;AAAA;AAAA,QAAL;AAaA,SAAK,MAAKV,OAAL,CAAaC,EAAb,CAAgB,qCAAhB,6FAAuD;AAAA;AAAA;AAAA;AAAA;AAAA,gDACpD;AACNU,gBAAAA,eAAe,EAAE,CAChB;AACCd,kBAAAA,IAAI,EAAE,4BADP;AAECe,kBAAAA,KAAK,EAAE,4BAFR;AAGC,4BAAQ,gCAHT;AAICT,kBAAAA,WAAW,EAAE;AAJd,iBADgB;AADX,eADoD;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAvD,GAAL;AAhB0C;AA4B1C;;;;;+GAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACqB,KAAKI,MAAL,CAAY,MAAZ,EAAoBC,WAApB,CAAgC,KAAKC,GAArC,CADrB;;AAAA;AACOC,gBAAAA,KADP;AAGC,qBAAKG,OAAL,CAAa,YAAb,EAA2BC,GAA3B,CAA+B;AAC9BC,kBAAAA,EAAE,EAAE,IAD0B;AAE9BC,kBAAAA,SAAS,EAAE;AAFmB,iBAA/B;AAHD,kDAQQ;AAAEN,kBAAAA,KAAK,EAALA;AAAF,iBARR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EA5DwCO,4B","sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { NpmPackage } from '../../types/cli.types'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { ActionOptions, FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tview: ViewFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tview: undefined\n\t}\n}\n\nexport default class ViewFeature extends AbstractFeature {\n\tpublic nameReadable = 'views'\n\tpublic description = 'Views: Create views using the Heartwood framework.'\n\tpublic code: FeatureCode = 'view'\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly packageDependencies: NpmPackage[] = [\n\t\t{\n\t\t\tname: '@sprucelabs/heartwood-view-controllers@latest',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-view-plugin@latest',\n\t\t},\n\t]\n\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'skill',\n\t\t\tisRequired: true,\n\t\t},\n\t\t{\n\t\t\tcode: 'schema',\n\t\t\tisRequired: true,\n\t\t},\n\t\t{\n\t\t\tcode: 'event',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.did-execute', async (payload) => {\n\t\t\tconst { featureCode, actionCode } = payload\n\t\t\tconst isInstalled = await this.featureInstaller.isInstalled('view')\n\n\t\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\t\tconst files = await this.Writer('view').writePlugin(this.cwd)\n\t\t\t\treturn {\n\t\t\t\t\tfiles,\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid this.emitter.on('test.register-abstract-test-classes', async () => {\n\t\t\treturn {\n\t\t\t\tabstractClasses: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'AbstractViewControllerTest',\n\t\t\t\t\t\tlabel: 'AbstractViewControllerTest',\n\t\t\t\t\t\timport: '@sprucelabs/spruce-view-plugin',\n\t\t\t\t\t\tfeatureCode: 'view',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tconst files = await this.Writer('view').writePlugin(this.cwd)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: '**',\n\t\t\tnamespace: 'heartwood',\n\t\t})\n\n\t\treturn { files }\n\t}\n}\n"],"file":"ViewFeature.js"}
@@ -26,7 +26,7 @@ export default class SpyInterface implements GraphicsInterface {
26
26
  command: string;
27
27
  options?: any;
28
28
  };
29
- sendInput(input: string): Promise<void>;
29
+ sendInput(input: string | string[]): Promise<void>;
30
30
  renderSection(options: {
31
31
  headline: string;
32
32
  lines?: string[] | string[];
@@ -50,6 +50,7 @@ export default class SpyInterface implements GraphicsInterface {
50
50
  startLoading(message?: string | undefined): void;
51
51
  stopLoading(): void;
52
52
  waitForEnter(message?: string | undefined): Promise<void>;
53
+ waitForInput(): Promise<void>;
53
54
  confirm(question: string): Promise<boolean>;
54
55
  clear(): void;
55
56
  renderProgressBar(options: ProgressBarOptions): void;
@@ -21,6 +21,8 @@ var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
21
21
 
22
22
  var _test = require("@sprucelabs/test");
23
23
 
24
+ var _test2 = _interopRequireDefault(require("../tests/utilities/test.utility"));
25
+
24
26
  var _duration = _interopRequireDefault(require("../utilities/duration.utility"));
25
27
 
26
28
  var _TerminalInterface = _interopRequireDefault(require("./TerminalInterface"));
@@ -154,7 +156,7 @@ var SpyInterface = /*#__PURE__*/function () {
154
156
  _resolver2 = this.confirmResolver;
155
157
  this.confirmResolver = undefined;
156
158
 
157
- _resolver2(input === '\n' || input.length === 0 || input.toLowerCase() === 'y');
159
+ _resolver2(input === '\n' || input.length === 0 || typeof input === 'string' && input.toLowerCase() === 'y');
158
160
 
159
161
  _context.next = 21;
160
162
  break;
@@ -421,6 +423,64 @@ var SpyInterface = /*#__PURE__*/function () {
421
423
 
422
424
  return waitForEnter;
423
425
  }()
426
+ }, {
427
+ key: "waitForInput",
428
+ value: function () {
429
+ var _waitForInput = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
430
+ var ttl, checkInterval, loops, lastWriteCount, hasWritten;
431
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
432
+ while (1) {
433
+ switch (_context5.prev = _context5.next) {
434
+ case 0:
435
+ ttl = 1000 * 60 * 5;
436
+ checkInterval = 100;
437
+ loops = ttl / checkInterval;
438
+ lastWriteCount = this.invocations.length;
439
+
440
+ case 4:
441
+ if (this.isWaitingForInput()) {
442
+ _context5.next = 12;
443
+ break;
444
+ }
445
+
446
+ if (loops-- === 0) {
447
+ _test.assert.fail("Waiting for input timed out.");
448
+ }
449
+
450
+ hasWritten = lastWriteCount != this.invocations.length;
451
+
452
+ if (hasWritten) {
453
+ loops = ttl / checkInterval;
454
+ lastWriteCount = this.invocations.length;
455
+
456
+ if (this.shouldRenderTestLogs()) {
457
+ _test2["default"].log('waitForInput timeout reset because of new output.');
458
+ }
459
+ }
460
+
461
+ _context5.next = 10;
462
+ return new Promise(function (resolve) {
463
+ return setTimeout(resolve, checkInterval);
464
+ });
465
+
466
+ case 10:
467
+ _context5.next = 4;
468
+ break;
469
+
470
+ case 12:
471
+ case "end":
472
+ return _context5.stop();
473
+ }
474
+ }
475
+ }, _callee5, this);
476
+ }));
477
+
478
+ function waitForInput() {
479
+ return _waitForInput.apply(this, arguments);
480
+ }
481
+
482
+ return waitForInput;
483
+ }()
424
484
  }, {
425
485
  key: "confirm",
426
486
  value: function confirm(question) {
@@ -457,20 +517,20 @@ var SpyInterface = /*#__PURE__*/function () {
457
517
  }, {
458
518
  key: "getCursorPosition",
459
519
  value: function () {
460
- var _getCursorPosition = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
461
- return _regenerator["default"].wrap(function _callee5$(_context5) {
520
+ var _getCursorPosition = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
521
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
462
522
  while (1) {
463
- switch (_context5.prev = _context5.next) {
523
+ switch (_context6.prev = _context6.next) {
464
524
  case 0:
465
525
  this.trackInvocation('getCursorPosition');
466
- return _context5.abrupt("return", this.cursorPosition);
526
+ return _context6.abrupt("return", this.cursorPosition);
467
527
 
468
528
  case 2:
469
529
  case "end":
470
- return _context5.stop();
530
+ return _context6.stop();
471
531
  }
472
532
  }
473
- }, _callee5, this);
533
+ }, _callee6, this);
474
534
  }));
475
535
 
476
536
  function getCursorPosition() {
@@ -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","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 { 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 lastInvocation() {\n\t\treturn this.invocations[this.invocations.length - 1]\n\t}\n\n\tpublic async sendInput(input: 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' || input.length === 0 || 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 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":"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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 lastInvocation() {\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"}
@@ -0,0 +1,13 @@
1
+ import { SettingsService } from '@sprucelabs/spruce-skill-utils';
2
+ interface Dependency {
3
+ id: string;
4
+ namespace: string;
5
+ }
6
+ export default class DependencyService {
7
+ private settings;
8
+ constructor(settings: SettingsService);
9
+ set(dependencies: Dependency[]): void;
10
+ add(dependency: Dependency): void;
11
+ get(): Dependency[];
12
+ }
13
+ export {};
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var DependencyService = /*#__PURE__*/function () {
17
+ function DependencyService(settings) {
18
+ (0, _classCallCheck2["default"])(this, DependencyService);
19
+ (0, _defineProperty2["default"])(this, "settings", void 0);
20
+ this.settings = settings;
21
+ }
22
+
23
+ (0, _createClass2["default"])(DependencyService, [{
24
+ key: "set",
25
+ value: function set(dependencies) {
26
+ this.settings.set('dependencies', dependencies);
27
+ }
28
+ }, {
29
+ key: "add",
30
+ value: function add(dependency) {
31
+ var _this$settings$get;
32
+
33
+ var dependencies = (_this$settings$get = this.settings.get('dependencies')) !== null && _this$settings$get !== void 0 ? _this$settings$get : [];
34
+ dependencies.push(dependency);
35
+ this.settings.set('dependencies', dependencies);
36
+ }
37
+ }, {
38
+ key: "get",
39
+ value: function get() {
40
+ var _this$settings$get2;
41
+
42
+ return (_this$settings$get2 = this.settings.get('dependencies')) !== null && _this$settings$get2 !== void 0 ? _this$settings$get2 : [];
43
+ }
44
+ }]);
45
+ return DependencyService;
46
+ }();
47
+
48
+ exports["default"] = DependencyService;
49
+ //# sourceMappingURL=DependencyService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/DependencyService.ts"],"names":["DependencyService","settings","dependencies","set","dependency","get","push"],"mappings":";;;;;;;;;;;;;;;IAOqBA,iB;AAEpB,6BAAmBC,QAAnB,EAA8C;AAAA;AAAA;AAC7C,SAAKA,QAAL,GAAgBA,QAAhB;AACA;;;;WAED,aAAWC,YAAX,EAAuC;AACtC,WAAKD,QAAL,CAAcE,GAAd,CAAkB,cAAlB,EAAkCD,YAAlC;AACA;;;WAED,aAAWE,UAAX,EAAmC;AAAA;;AAClC,UAAMF,YAAY,yBAAG,KAAKD,QAAL,CAAcI,GAAd,CAAkB,cAAlB,CAAH,mEAAwC,EAA1D;AACAH,MAAAA,YAAY,CAACI,IAAb,CAAkBF,UAAlB;AACA,WAAKH,QAAL,CAAcE,GAAd,CAAkB,cAAlB,EAAkCD,YAAlC;AACA;;;WAED,eAA2B;AAAA;;AAC1B,oCAAO,KAAKD,QAAL,CAAcI,GAAd,CAAkB,cAAlB,CAAP,qEAA4C,EAA5C;AACA","sourcesContent":["import { SettingsService } from '@sprucelabs/spruce-skill-utils'\n\ninterface Dependency {\n\tid: string\n\tnamespace: string\n}\n\nexport default class DependencyService {\n\tprivate settings: SettingsService<string>\n\tpublic constructor(settings: SettingsService) {\n\t\tthis.settings = settings\n\t}\n\n\tpublic set(dependencies: Dependency[]) {\n\t\tthis.settings.set('dependencies', dependencies)\n\t}\n\n\tpublic add(dependency: Dependency) {\n\t\tconst dependencies = this.settings.get('dependencies') ?? []\n\t\tdependencies.push(dependency)\n\t\tthis.settings.set('dependencies', dependencies)\n\t}\n\n\tpublic get(): Dependency[] {\n\t\treturn this.settings.get('dependencies') ?? []\n\t}\n}\n"],"file":"DependencyService.js"}