@sprucelabs/spruce-cli 18.3.1 → 19.0.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 (85) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.d.ts +1 -1
  3. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +20 -39
  4. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  5. package/build/__tests__/behavioral/permissions/PermissionStore.test.js.map +1 -1
  6. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.d.ts +1 -0
  7. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js +53 -18
  8. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js.map +1 -1
  9. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.d.ts +2 -0
  10. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js +75 -30
  11. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
  12. package/build/__tests__/behavioral/views/WatchingSkillViews.test.js +1 -1
  13. package/build/__tests__/behavioral/views/WatchingSkillViews.test.js.map +1 -1
  14. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  15. package/build/__tests__/support/EventFaker.d.ts +1 -1
  16. package/build/__tests__/support/EventFaker.js.map +1 -1
  17. package/build/features/event/EventFeature.d.ts +1 -0
  18. package/build/features/event/EventFeature.js +90 -68
  19. package/build/features/event/EventFeature.js.map +1 -1
  20. package/build/features/eventContract/EventContractFeature.js +1 -4
  21. package/build/features/eventContract/EventContractFeature.js.map +1 -1
  22. package/build/features/eventContract/actions/PullAction.d.ts +1 -0
  23. package/build/features/eventContract/actions/PullAction.js +52 -9
  24. package/build/features/eventContract/actions/PullAction.js.map +1 -1
  25. package/build/features/permission/PermissionFeature.js +19 -9
  26. package/build/features/permission/PermissionFeature.js.map +1 -1
  27. package/build/features/permission/actions/SyncAction.d.ts +22 -3
  28. package/build/features/permission/actions/SyncAction.js +58 -16
  29. package/build/features/permission/actions/SyncAction.js.map +1 -1
  30. package/build/features/permission/stores/PermissionStore.d.ts +6 -2
  31. package/build/features/permission/stores/PermissionStore.js +25 -21
  32. package/build/features/permission/stores/PermissionStore.js.map +1 -1
  33. package/build/features/view/actions/WatchAction.js +1 -1
  34. package/build/features/view/actions/WatchAction.js.map +1 -1
  35. package/node_modules/@typescript-eslint/parser/LICENSE +5 -5
  36. package/node_modules/@typescript-eslint/parser/README.md +6 -300
  37. package/node_modules/@typescript-eslint/parser/dist/parser.d.ts.map +1 -1
  38. package/node_modules/@typescript-eslint/parser/dist/parser.js +15 -17
  39. package/node_modules/@typescript-eslint/parser/dist/parser.js.map +1 -1
  40. package/node_modules/@typescript-eslint/parser/package.json +5 -5
  41. package/node_modules/@typescript-eslint/scope-manager/LICENSE +1 -1
  42. package/node_modules/@typescript-eslint/scope-manager/README.md +5 -117
  43. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  44. package/node_modules/@typescript-eslint/types/LICENSE +1 -1
  45. package/node_modules/@typescript-eslint/types/README.md +6 -11
  46. package/node_modules/@typescript-eslint/types/_ts3.4/dist/generated/ast-spec.d.ts +0 -6
  47. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts +0 -6
  48. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts.map +1 -1
  49. package/node_modules/@typescript-eslint/types/package.json +3 -3
  50. package/node_modules/@typescript-eslint/typescript-estree/LICENSE +5 -5
  51. package/node_modules/@typescript-eslint/typescript-estree/README.md +6 -379
  52. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/create-program/{createWatchProgram.d.ts → getWatchProgramsForProjects.d.ts} +3 -4
  53. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/index.d.ts +1 -1
  54. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createProjectProgram.js +3 -3
  55. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createProjectProgram.js.map +1 -1
  56. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/{createWatchProgram.d.ts → getWatchProgramsForProjects.d.ts} +3 -4
  57. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/getWatchProgramsForProjects.d.ts.map +1 -0
  58. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/{createWatchProgram.js → getWatchProgramsForProjects.js} +4 -5
  59. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/getWatchProgramsForProjects.js.map +1 -0
  60. package/node_modules/@typescript-eslint/typescript-estree/dist/index.d.ts +1 -1
  61. package/node_modules/@typescript-eslint/typescript-estree/dist/index.d.ts.map +1 -1
  62. package/node_modules/@typescript-eslint/typescript-estree/dist/index.js +2 -2
  63. package/node_modules/@typescript-eslint/typescript-estree/dist/index.js.map +1 -1
  64. package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/warnAboutTSVersion.js +2 -2
  65. package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
  66. package/node_modules/@typescript-eslint/visitor-keys/LICENSE +1 -1
  67. package/node_modules/@typescript-eslint/visitor-keys/README.md +6 -9
  68. package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
  69. package/package.json +27 -27
  70. package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +6 -18
  71. package/src/__tests__/behavioral/permissions/PermissionStore.test.ts +1 -1
  72. package/src/__tests__/behavioral/permissions/SyncingPermissions.test.ts +21 -3
  73. package/src/__tests__/behavioral/upgrading/UpgradingWithListeners.test.ts +13 -0
  74. package/src/__tests__/behavioral/views/WatchingSkillViews.test.ts +1 -1
  75. package/src/__tests__/implementation/ActionExecuter2.test.ts +0 -2
  76. package/src/__tests__/support/EventFaker.ts +1 -2
  77. package/src/features/event/EventFeature.ts +10 -4
  78. package/src/features/eventContract/EventContractFeature.ts +1 -6
  79. package/src/features/eventContract/actions/PullAction.ts +24 -4
  80. package/src/features/permission/PermissionFeature.ts +2 -7
  81. package/src/features/permission/actions/SyncAction.ts +42 -5
  82. package/src/features/permission/stores/PermissionStore.ts +25 -11
  83. package/src/features/view/actions/WatchAction.ts +1 -1
  84. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.d.ts.map +0 -1
  85. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.js.map +0 -1
@@ -1,6 +1,5 @@
1
1
  import { buildSchema, SchemaValues } from '@sprucelabs/schema'
2
2
  import { diskUtil } from '@sprucelabs/spruce-skill-utils'
3
- import actionUtil from '../../../utilities/action.utility'
4
3
  import AbstractAction from '../../AbstractAction'
5
4
  import { FeatureActionResponse } from '../../features.types'
6
5
 
@@ -30,7 +29,9 @@ export default class PullAction extends AbstractAction<PullOptionsSchema> {
30
29
  const filename = 'events.contract.ts'
31
30
  destination = diskUtil.resolvePath(this.cwd, destination, filename)
32
31
 
33
- const { contracts } = await this.Store('event').fetchEventContracts()
32
+ const { contracts } = await this.Store('event').fetchEventContracts({
33
+ namespaces: ['core'],
34
+ })
34
35
  let buildEventContractImport = `import { buildEventContract } from '@sprucelabs/mercury-types'
35
36
  import '${'#spruce'}/permissions/permissions.types'`
36
37
 
@@ -50,10 +51,11 @@ export type CoreEventContract = ${contracts
50
51
 
51
52
  diskUtil.writeFile(destination, contents)
52
53
 
53
- const results = await this.Action('permission', 'sync').execute({})
54
+ const typesFiles = await this.syncPermissions()
54
55
 
55
- return actionUtil.mergeActionResults(results, {
56
+ return {
56
57
  files: [
58
+ ...typesFiles,
57
59
  {
58
60
  name: filename,
59
61
  path: destination,
@@ -61,6 +63,24 @@ export type CoreEventContract = ${contracts
61
63
  description: 'All your Mercury core events ready for testing!',
62
64
  },
63
65
  ],
66
+ }
67
+ }
68
+
69
+ private async syncPermissions() {
70
+ const permissions = this.Store('permission')
71
+
72
+ const coreMap = await permissions.fetchContracts({
73
+ shouldSyncCorePermissions: true,
64
74
  })
75
+
76
+ const heartwoodMap = await permissions.fetchContracts({
77
+ shouldSyncCorePermissions: true,
78
+ })
79
+
80
+ const typesFiles = await this.Writer('permission').writeTypesFile(
81
+ this.cwd,
82
+ { ...coreMap, ...heartwoodMap }
83
+ )
84
+ return typesFiles
65
85
  }
66
86
  }
@@ -41,13 +41,8 @@ export default class PermissionFeature extends AbstractFeature {
41
41
  const isInstalled = await this.features.isInstalled('permission')
42
42
  const isSkillInstalled = await this.features.isInstalled('skill')
43
43
 
44
- if (
45
- isSkillInstalled &&
46
- isInstalled &&
47
- featureCode === 'node' &&
48
- actionCode === 'upgrade'
49
- ) {
50
- const combinedFile = await this.writePlugin()
44
+ if (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {
45
+ const combinedFile = isSkillInstalled ? await this.writePlugin() : []
51
46
  const results = await this.Action('permission', 'sync').execute({})
52
47
 
53
48
  results.files = [...(results.files ?? []), ...combinedFile]
@@ -1,4 +1,4 @@
1
- import { buildSchema } from '@sprucelabs/schema'
1
+ import { buildSchema, SchemaValues } from '@sprucelabs/schema'
2
2
  import AbstractAction from '../../AbstractAction'
3
3
  import { ActionOptions, FeatureActionResponse } from '../../features.types'
4
4
  import PermissionStore from '../stores/PermissionStore'
@@ -18,9 +18,23 @@ export default class SyncAction extends AbstractAction<OptionsSchema> {
18
18
  this.writer = this.Writer('permission')
19
19
  }
20
20
 
21
- public async execute(): Promise<FeatureActionResponse> {
22
- const map = await this.permissions.fetchContracts()
23
- const typesFiles = await this.writer.writeTypesFile(this.cwd, map)
21
+ public async execute(
22
+ options?: SyncPermissionsOptions
23
+ ): Promise<FeatureActionResponse> {
24
+ const { shouldSyncCorePermissions } = this.validateAndNormalizeOptions(
25
+ options ?? {}
26
+ )
27
+
28
+ const permissions = this.permissions
29
+ const writer = this.writer
30
+ const cwd = this.cwd
31
+
32
+ const typesFiles = await writePermissionTypesFile({
33
+ permissions,
34
+ shouldSyncCorePermissions,
35
+ writer,
36
+ cwd,
37
+ })
24
38
 
25
39
  const local = await this.permissions.loadLocalPermissions()
26
40
  const combinedFiles = await this.writer.writeCombinedFile(this.cwd, {
@@ -36,7 +50,30 @@ export default class SyncAction extends AbstractAction<OptionsSchema> {
36
50
 
37
51
  const schema = buildSchema({
38
52
  id: 'syncPermissions',
39
- fields: {},
53
+ fields: {
54
+ shouldSyncCorePermissions: {
55
+ type: 'boolean',
56
+ },
57
+ },
40
58
  })
41
59
 
42
60
  type OptionsSchema = typeof schema
61
+ export type SyncPermissionsOptions = SchemaValues<OptionsSchema>
62
+
63
+ export async function writePermissionTypesFile(options: {
64
+ permissions: PermissionStore
65
+ shouldSyncCorePermissions: boolean | undefined
66
+ namespaces?: string[]
67
+ writer: PermissionWriter
68
+ cwd: string
69
+ }) {
70
+ const { permissions, shouldSyncCorePermissions, writer, cwd, namespaces } =
71
+ options
72
+
73
+ const map = await permissions.fetchContracts({
74
+ namespaces,
75
+ shouldSyncCorePermissions,
76
+ })
77
+ const typesFiles = await writer.writeTypesFile(cwd, map)
78
+ return typesFiles
79
+ }
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  PermissionContract,
3
3
  PermissionContractMap,
4
+ SpruceSchemas,
4
5
  } from '@sprucelabs/mercury-types'
5
6
  import { diskUtil } from '@sprucelabs/spruce-skill-utils'
6
7
  import globby from 'globby'
@@ -33,9 +34,28 @@ export default class PermissionStore extends AbstractStore {
33
34
  return imported
34
35
  }
35
36
 
36
- public async fetchContracts() {
37
+ public async fetchContracts(options?: {
38
+ shouldSyncCorePermissions?: boolean
39
+ namespaces?: string[]
40
+ }) {
41
+ const { shouldSyncCorePermissions, namespaces } = options ?? {}
42
+
43
+ let target: ListPermContractsTargetAndPayload['target']
37
44
  const client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })
38
- const deps = this.Service('dependency').get()
45
+
46
+ if (!shouldSyncCorePermissions) {
47
+ const deps = this.Service('dependency').get()
48
+ target = {
49
+ namespaces: namespaces ?? deps.map((d) => d.namespace),
50
+ }
51
+ }
52
+
53
+ const [{ permissionContracts }] = await client.emitAndFlattenResponses(
54
+ 'list-permission-contracts::v2020_12_25',
55
+ {
56
+ target,
57
+ }
58
+ )
39
59
 
40
60
  const local = await this.loadLocalPermissions()
41
61
  const map: PermissionContractMap = local.reduce<PermissionContractMap>(
@@ -46,15 +66,6 @@ export default class PermissionStore extends AbstractStore {
46
66
  {} as any
47
67
  )
48
68
 
49
- const [{ permissionContracts }] = await client.emitAndFlattenResponses(
50
- 'list-permission-contracts::v2020_12_25',
51
- {
52
- target: {
53
- namespaces: deps.map((d) => d.namespace),
54
- },
55
- }
56
- )
57
-
58
69
  for (const result of permissionContracts) {
59
70
  map[result.contract.id] = result.contract.permissions.map((p) => p.id)
60
71
  }
@@ -68,3 +79,6 @@ export interface ImportedPermission {
68
79
  permissions: string[]
69
80
  path: string
70
81
  }
82
+
83
+ export type ListPermContractsTargetAndPayload =
84
+ SpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsEmitTargetAndPayload
@@ -24,7 +24,7 @@ export default class WatchAction extends AbstractAction<OptionsSchema> {
24
24
  this.resetUi()
25
25
  const commands = this.Service('command')
26
26
  await commands.execute(
27
- 'ENABLED_SKILL_FEATURES=view,event SHOULD_WATCH_VIEWS=true MAXIMUM_LOG_PREFIXES_LENGTH=0 yarn boot',
27
+ 'SHOULD_WATCH_VIEWS=true MAXIMUM_LOG_PREFIXES_LENGTH=0 yarn boot',
28
28
  {
29
29
  onData: (data) => {
30
30
  const line = this.popLastLine(data)
@@ -1 +0,0 @@
1
- {"version":3,"file":"createWatchProgram.d.ts","sourceRoot":"","sources":["../../src/create-program/createWatchProgram.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA6CtD;;;GAGG;AACH,iBAAS,gBAAgB,IAAI,IAAI,CAOhC;AA0ED;;;;GAIG;AACH,iBAAS,sBAAsB,CAAC,aAAa,EAAE,aAAa,GAAG,EAAE,CAAC,OAAO,EAAE,CAuH1E;AAMD,iBAAS,kBAAkB,CACzB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,aAAa,GAC3B,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,cAAc,CAAC,CAuIzC;AAmJD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createWatchProgram.js","sourceRoot":"","sources":["../../src/create-program/createWatchProgram.ts"],"names":[],"mappings":"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"}