@sprucelabs/spruce-cli 18.3.1 → 18.4.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 (66) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +2 -14
  3. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  4. package/build/__tests__/behavioral/permissions/PermissionStore.test.js.map +1 -1
  5. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.d.ts +1 -0
  6. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js +53 -18
  7. package/build/__tests__/behavioral/permissions/SyncingPermissions.test.js.map +1 -1
  8. package/build/__tests__/behavioral/views/WatchingSkillViews.test.js +1 -1
  9. package/build/__tests__/behavioral/views/WatchingSkillViews.test.js.map +1 -1
  10. package/build/__tests__/support/EventFaker.d.ts +1 -1
  11. package/build/__tests__/support/EventFaker.js.map +1 -1
  12. package/build/features/eventContract/EventContractFeature.js +1 -4
  13. package/build/features/eventContract/EventContractFeature.js.map +1 -1
  14. package/build/features/eventContract/actions/PullAction.d.ts +1 -0
  15. package/build/features/eventContract/actions/PullAction.js +49 -8
  16. package/build/features/eventContract/actions/PullAction.js.map +1 -1
  17. package/build/features/permission/PermissionFeature.js +19 -9
  18. package/build/features/permission/PermissionFeature.js.map +1 -1
  19. package/build/features/permission/actions/SyncAction.d.ts +22 -3
  20. package/build/features/permission/actions/SyncAction.js +58 -16
  21. package/build/features/permission/actions/SyncAction.js.map +1 -1
  22. package/build/features/permission/stores/PermissionStore.d.ts +6 -2
  23. package/build/features/permission/stores/PermissionStore.js +25 -21
  24. package/build/features/permission/stores/PermissionStore.js.map +1 -1
  25. package/build/features/view/actions/WatchAction.js +1 -1
  26. package/build/features/view/actions/WatchAction.js.map +1 -1
  27. package/node_modules/@typescript-eslint/parser/README.md +6 -300
  28. package/node_modules/@typescript-eslint/parser/dist/parser.d.ts.map +1 -1
  29. package/node_modules/@typescript-eslint/parser/dist/parser.js +15 -17
  30. package/node_modules/@typescript-eslint/parser/dist/parser.js.map +1 -1
  31. package/node_modules/@typescript-eslint/parser/package.json +5 -5
  32. package/node_modules/@typescript-eslint/scope-manager/README.md +5 -117
  33. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  34. package/node_modules/@typescript-eslint/types/README.md +6 -11
  35. package/node_modules/@typescript-eslint/types/package.json +2 -2
  36. package/node_modules/@typescript-eslint/typescript-estree/README.md +6 -379
  37. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/create-program/{createWatchProgram.d.ts → getWatchProgramsForProjects.d.ts} +3 -4
  38. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/index.d.ts +1 -1
  39. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createProjectProgram.js +3 -3
  40. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createProjectProgram.js.map +1 -1
  41. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/{createWatchProgram.d.ts → getWatchProgramsForProjects.d.ts} +3 -4
  42. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/getWatchProgramsForProjects.d.ts.map +1 -0
  43. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/{createWatchProgram.js → getWatchProgramsForProjects.js} +4 -5
  44. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/getWatchProgramsForProjects.js.map +1 -0
  45. package/node_modules/@typescript-eslint/typescript-estree/dist/index.d.ts +1 -1
  46. package/node_modules/@typescript-eslint/typescript-estree/dist/index.d.ts.map +1 -1
  47. package/node_modules/@typescript-eslint/typescript-estree/dist/index.js +2 -2
  48. package/node_modules/@typescript-eslint/typescript-estree/dist/index.js.map +1 -1
  49. package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/warnAboutTSVersion.js +2 -2
  50. package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
  51. package/node_modules/@typescript-eslint/visitor-keys/README.md +6 -9
  52. package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
  53. package/package.json +3 -3
  54. package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +0 -5
  55. package/src/__tests__/behavioral/permissions/PermissionStore.test.ts +1 -1
  56. package/src/__tests__/behavioral/permissions/SyncingPermissions.test.ts +21 -3
  57. package/src/__tests__/behavioral/views/WatchingSkillViews.test.ts +1 -1
  58. package/src/__tests__/support/EventFaker.ts +1 -2
  59. package/src/features/eventContract/EventContractFeature.ts +1 -6
  60. package/src/features/eventContract/actions/PullAction.ts +21 -3
  61. package/src/features/permission/PermissionFeature.ts +2 -7
  62. package/src/features/permission/actions/SyncAction.ts +42 -5
  63. package/src/features/permission/stores/PermissionStore.ts +25 -11
  64. package/src/features/view/actions/WatchAction.ts +1 -1
  65. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.d.ts.map +0 -1
  66. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createWatchProgram.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [18.4.0](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v18.3.1...v18.4.0) (2022-12-07)
7
+
8
+ ### Features
9
+
10
+ - can now pull core permissions ([9fc1838](https://github.com/sprucelabsai/spruce-cli-workspace/commit/9fc1838))
11
+
6
12
  ## [18.3.1](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v18.3.0...v18.3.1) (2022-12-02)
7
13
 
8
14
  **Note:** Version bump only for package @sprucelabs/spruce-cli
@@ -274,27 +274,15 @@ var GeneratingMercuryEventContractTest = (_dec = (0, _testUtils.test)(), _dec2 =
274
274
  shouldAutoHandleDependencies: true
275
275
  }).execute({});
276
276
  _context8.next = 6;
277
- return this.waitForInput();
278
- case 6:
279
- _context8.next = 8;
280
- return this.ui.sendInput('Y');
281
- case 8:
282
- _context8.next = 10;
283
- return this.waitForInput();
284
- case 10:
285
- _context8.next = 12;
286
- return this.ui.sendInput('\n');
287
- case 12:
288
- _context8.next = 14;
289
277
  return promise;
290
- case 14:
278
+ case 6:
291
279
  results = _context8.sent;
292
280
  match = _test["default"].assertFileByNameInGeneratedFiles('events.contract.ts', results.files);
293
281
  contents = _spruceSkillUtils.diskUtil.readFile(match);
294
282
  _testUtils.assert.doesInclude(contents, 'export default eventContracts');
295
283
  _testUtils.assert.doesInclude(contents, 'as const');
296
284
  _testUtils.assert.doesInclude(contents, 'export type CoreEventContract = typeof eventContracts[0] & typeof eventContracts[1]');
297
- case 20:
285
+ case 12:
298
286
  case "end":
299
287
  return _context8.stop();
300
288
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PullingMercuryEventContract.test.js","names":["GeneratingMercuryEventContractTest","test","Cli","cli","diskUtil","writeFile","resolvePath","assert","isTruthy","getFeature","isFunction","Action","execute","FeatureFixture","installCachedFeatures","results","isFalsy","errors","match","testUtil","assertFileByNameInGeneratedFiles","files","isEqual","doesInclude","name","action","contents","readFile","destination","expected","installSkillAndPullContracts","contracts","isArray","isObject","eventSignatures","getSkillFixture","registerCurrentSkill","skill","Store","events","registerEventContract","eventContract","isGlobal","fqen","eventNameUtil","join","eventName","eventNamespace","slug","version","isAbove","length","promise","shouldAutoHandleDependencies","waitForInput","ui","sendInput","pullContracts","Service","importDefault","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts"],"sourcesContent":["import { EventContract } from '@sprucelabs/mercury-types'\nimport { eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport { CliInterface } from '../../../cli'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class GeneratingMercuryEventContractTest extends AbstractCliTest {\n\tprivate static cli: CliInterface\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.cli = await this.Cli()\n\t\tdiskUtil.writeFile(this.resolvePath('package.json'), '{}')\n\t}\n\n\t@test()\n\tprotected static async hasEventContractFeature() {\n\t\tassert.isTruthy(this.cli.getFeature('eventContract'))\n\t}\n\n\t@test()\n\tprotected static async hasPullFeature() {\n\t\tassert.isFunction(this.Action('eventContract', 'pull').execute)\n\t}\n\n\t@test()\n\tprotected static async generatesContractAtCwd() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.isEqual(match, this.resolvePath('events.contract.ts'))\n\n\t\tassert.doesInclude(results.files ?? [], {\n\t\t\tname: 'events.contract.ts',\n\t\t\taction: 'generated',\n\t\t})\n\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t\"import { buildEventContract } from '@sprucelabs/mercury-types'\"\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesAtDestination() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\t\tconst results = await this.Action('eventContract', 'pull').execute({\n\t\t\tdestination: './src/tests',\n\t\t})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\t\tconst expected = this.resolvePath('src/tests/events.contract.ts')\n\n\t\tassert.isEqual(expected, match)\n\t}\n\n\t@test()\n\tprotected static async savesContractLocallyAndImportsAsDefault() {\n\t\tconst contracts = await this.installSkillAndPullContracts()\n\n\t\tassert.isArray(contracts)\n\t\tassert.isObject(contracts[0].eventSignatures)\n\t\tassert.isObject(contracts[0].eventSignatures[`did-message::v2020_12_25`])\n\t}\n\n\t@test()\n\tprotected static async pullsGlobalContracts() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'heartwood test',\n\t\t})\n\n\t\tconst events = await this.Store('event')\n\t\tawait events.registerEventContract({\n\t\t\teventContract: {\n\t\t\t\teventSignatures: {\n\t\t\t\t\t'test-event::v2020_01_01': {\n\t\t\t\t\t\tisGlobal: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tconst fqen = eventNameUtil.join({\n\t\t\teventName: 'test-event',\n\t\t\teventNamespace: skill.slug,\n\t\t\tversion: 'v2020_01_01',\n\t\t})\n\n\t\tconst contracts = await this.installSkillAndPullContracts()\n\n\t\tassert.isAbove(contracts.length, 1)\n\t\tassert.isObject(contracts[1].eventSignatures)\n\t\tassert.isObject(contracts[1].eventSignatures[fqen])\n\t}\n\n\t@test()\n\tprotected static async contractHasTypes() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('node')\n\n\t\tconst promise = this.Action('eventContract', 'pull', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t}).execute({})\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('Y')\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tconst results = await promise\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(contents, 'export default eventContracts')\n\t\tassert.doesInclude(contents, 'as const')\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export type CoreEventContract = typeof eventContracts[0] & typeof eventContracts[1]'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatingASecondTimeReportsAnUpdate() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('events')\n\t\tawait this.Action('eventContract', 'pull').execute({})\n\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(results.files ?? [], {\n\t\t\tname: 'events.contract.ts',\n\t\t\taction: 'updated',\n\t\t})\n\t}\n\n\tprivate static async installSkillAndPullContracts() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('events')\n\t\treturn await this.pullContracts()\n\t}\n\n\tprivate static async pullContracts() {\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contracts = await this.Service('import').importDefault(match)\n\t\treturn contracts as EventContract[]\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PullingMercuryEventContract.test.js","names":["GeneratingMercuryEventContractTest","test","Cli","cli","diskUtil","writeFile","resolvePath","assert","isTruthy","getFeature","isFunction","Action","execute","FeatureFixture","installCachedFeatures","results","isFalsy","errors","match","testUtil","assertFileByNameInGeneratedFiles","files","isEqual","doesInclude","name","action","contents","readFile","destination","expected","installSkillAndPullContracts","contracts","isArray","isObject","eventSignatures","getSkillFixture","registerCurrentSkill","skill","Store","events","registerEventContract","eventContract","isGlobal","fqen","eventNameUtil","join","eventName","eventNamespace","slug","version","isAbove","length","promise","shouldAutoHandleDependencies","pullContracts","Service","importDefault","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts"],"sourcesContent":["import { EventContract } from '@sprucelabs/mercury-types'\nimport { eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport { CliInterface } from '../../../cli'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class GeneratingMercuryEventContractTest extends AbstractCliTest {\n\tprivate static cli: CliInterface\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.cli = await this.Cli()\n\t\tdiskUtil.writeFile(this.resolvePath('package.json'), '{}')\n\t}\n\n\t@test()\n\tprotected static async hasEventContractFeature() {\n\t\tassert.isTruthy(this.cli.getFeature('eventContract'))\n\t}\n\n\t@test()\n\tprotected static async hasPullFeature() {\n\t\tassert.isFunction(this.Action('eventContract', 'pull').execute)\n\t}\n\n\t@test()\n\tprotected static async generatesContractAtCwd() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.isEqual(match, this.resolvePath('events.contract.ts'))\n\n\t\tassert.doesInclude(results.files ?? [], {\n\t\t\tname: 'events.contract.ts',\n\t\t\taction: 'generated',\n\t\t})\n\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t\"import { buildEventContract } from '@sprucelabs/mercury-types'\"\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesAtDestination() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\t\tconst results = await this.Action('eventContract', 'pull').execute({\n\t\t\tdestination: './src/tests',\n\t\t})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\t\tconst expected = this.resolvePath('src/tests/events.contract.ts')\n\n\t\tassert.isEqual(expected, match)\n\t}\n\n\t@test()\n\tprotected static async savesContractLocallyAndImportsAsDefault() {\n\t\tconst contracts = await this.installSkillAndPullContracts()\n\n\t\tassert.isArray(contracts)\n\t\tassert.isObject(contracts[0].eventSignatures)\n\t\tassert.isObject(contracts[0].eventSignatures[`did-message::v2020_12_25`])\n\t}\n\n\t@test()\n\tprotected static async pullsGlobalContracts() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'heartwood test',\n\t\t})\n\n\t\tconst events = await this.Store('event')\n\t\tawait events.registerEventContract({\n\t\t\teventContract: {\n\t\t\t\teventSignatures: {\n\t\t\t\t\t'test-event::v2020_01_01': {\n\t\t\t\t\t\tisGlobal: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tconst fqen = eventNameUtil.join({\n\t\t\teventName: 'test-event',\n\t\t\teventNamespace: skill.slug,\n\t\t\tversion: 'v2020_01_01',\n\t\t})\n\n\t\tconst contracts = await this.installSkillAndPullContracts()\n\n\t\tassert.isAbove(contracts.length, 1)\n\t\tassert.isObject(contracts[1].eventSignatures)\n\t\tassert.isObject(contracts[1].eventSignatures[fqen])\n\t}\n\n\t@test()\n\tprotected static async contractHasTypes() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('node')\n\n\t\tconst promise = this.Action('eventContract', 'pull', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t}).execute({})\n\n\t\tconst results = await promise\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(contents, 'export default eventContracts')\n\t\tassert.doesInclude(contents, 'as const')\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export type CoreEventContract = typeof eventContracts[0] & typeof eventContracts[1]'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatingASecondTimeReportsAnUpdate() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('events')\n\t\tawait this.Action('eventContract', 'pull').execute({})\n\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(results.files ?? [], {\n\t\t\tname: 'events.contract.ts',\n\t\t\taction: 'updated',\n\t\t})\n\t}\n\n\tprivate static async installSkillAndPullContracts() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('events')\n\t\treturn await this.pullContracts()\n\t}\n\n\tprivate static async pullContracts() {\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contracts = await this.Service('import').importDefault(match)\n\t\treturn contracts as EventContract[]\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionStore.test.js","names":["PermissionStoreTest","test","Service","getSkillNamespace","namespace","contractName1","generateShortAlphaId","fqid1","contractName2","contractId","fqid2","buildPermissionContractId","MercuryClientFactory","setIsTestMode","permissions","Store","eventFaker","fakeListPermissionContracts","loadLocalPermissions","assert","isEqualDeep","createPermissionContract","assertLocalPermissionsEqual","id","path","resolvePath","perm1Id","perm2Id","updateFirstContractBuilder","addRandomDependency","target","passedTarget","fetchContracts","namespaces","perm","generatePermValues","perm2","perm3","generateContractRowValues","contract","contract2","contractId2","map","old","connectToApi","bind","options","passedOptions","shouldAuthAsCurrentSkill","file","diskUtil","writeFile","generateContractBuilder","generateId","name","permissionId","defaults","dep","add","expected","perms","sort","sortPermissionContracts","AbstractPermissionsTest"],"sources":["../../../../src/__tests__/behavioral/permissions/PermissionStore.test.ts"],"sourcesContent":["import { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert, generateId } from '@sprucelabs/test-utils'\nimport PermissionStore, {\n\tImportedPermission,\n} from '../../../features/permission/stores/PermissionStore'\nimport { ApiClientFactoryOptions } from '../../../types/apiClient.types'\nimport { ListPermContractsTargetAndPayload } from '../../support/EventFaker'\nimport AbstractPermissionsTest from './support/AbstractPermissionsTest'\nimport generateShortAlphaId from './support/generateShortAlphaId'\nimport { sortPermissionContracts } from './support/sortPermissionContracts'\n\nexport default class PermissionStoreTest extends AbstractPermissionsTest {\n\tprivate static permissions: PermissionStore\n\tprivate static contractName1: string\n\tprivate static contractName2: string\n\tprivate static fqid1: string\n\tprivate static fqid2: string\n\tprivate static namespace: string\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tconst namespace = await this.Service('pkg').getSkillNamespace()\n\t\tthis.namespace = namespace\n\n\t\tthis.contractName1 = generateShortAlphaId()\n\t\tthis.fqid1 = `${namespace}.${this.contractName1}`\n\n\t\tthis.contractName2 = generateShortAlphaId()\n\t\tconst contractId = this.contractName2\n\t\tthis.fqid2 = buildPermissionContractId(contractId, namespace)\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tMercuryClientFactory.setIsTestMode(true)\n\t\tthis.permissions = this.Store('permission')\n\t\tawait this.eventFaker.fakeListPermissionContracts(() => {})\n\t}\n\n\t@test()\n\tprotected static async loadsNoLocalByDefault() {\n\t\tconst permissions = await this.loadLocalPermissions()\n\t\tassert.isEqualDeep(permissions, [])\n\t}\n\n\t@test()\n\tprotected static async loadsOneContract() {\n\t\tawait this.createPermissionContract(this.contractName1)\n\t\tawait this.assertLocalPermissionsEqual([\n\t\t\t{\n\t\t\t\tid: this.fqid1,\n\t\t\t\tpermissions: ['can-high-five'],\n\t\t\t\tpath: this.resolvePath(\n\t\t\t\t\t`src/permissions/${this.contractName1}.permissions.ts`\n\t\t\t\t),\n\t\t\t},\n\t\t])\n\t}\n\n\t@test()\n\tprotected static async loadsSecondContract() {\n\t\tawait this.createPermissionContract(this.contractName2)\n\n\t\tawait this.assertLocalPermissionsEqual([\n\t\t\t{\n\t\t\t\tid: this.fqid2,\n\t\t\t\tpermissions: ['can-high-five'],\n\t\t\t\tpath: this.resolvePath(\n\t\t\t\t\t`src/permissions/${this.contractName2}.permissions.ts`\n\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: this.fqid1,\n\t\t\t\tpermissions: ['can-high-five'],\n\t\t\t\tpath: this.resolvePath(\n\t\t\t\t\t`src/permissions/${this.contractName1}.permissions.ts`\n\t\t\t\t),\n\t\t\t},\n\t\t])\n\t}\n\n\t@test()\n\tprotected static async mixesInAllPermissions() {\n\t\tconst contractId = 'oeu-aoeuao'\n\t\tconst perm1Id = 'what-the'\n\t\tconst perm2Id = 'go-dogs'\n\n\t\tthis.updateFirstContractBuilder(contractId, perm1Id, perm2Id)\n\n\t\tawait this.assertLocalPermissionsEqual([\n\t\t\t{\n\t\t\t\tid: this.fqid2,\n\t\t\t\tpermissions: ['can-high-five'],\n\t\t\t\tpath: this.resolvePath(\n\t\t\t\t\t`src/permissions/${this.contractName2}.permissions.ts`\n\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: buildPermissionContractId(contractId, this.namespace),\n\t\t\t\tpermissions: [perm1Id, perm2Id],\n\t\t\t\tpath: this.resolvePath(\n\t\t\t\t\t`src/permissions/${this.contractName1}.permissions.ts`\n\t\t\t\t),\n\t\t\t},\n\t\t])\n\t}\n\n\t@test()\n\tprotected static async passesThroughDependentSkills() {\n\t\tconst namespace = this.addRandomDependency()\n\n\t\tlet passedTarget: ListPermContractsTargetAndPayload['target']\n\n\t\tawait this.eventFaker.fakeListPermissionContracts(({ target }) => {\n\t\t\tpassedTarget = target\n\t\t})\n\n\t\tawait this.fetchContracts()\n\n\t\tassert.isEqualDeep(passedTarget, {\n\t\t\tnamespaces: [namespace],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async returnsDependencyMapFromRemoteContracts() {\n\t\tconst perm = this.generatePermValues()\n\t\tconst perm2 = this.generatePermValues()\n\t\tconst perm3 = this.generatePermValues()\n\n\t\tconst { contract, contractId } = this.generateContractRowValues([\n\t\t\tperm,\n\t\t\tperm2,\n\t\t])\n\n\t\tconst { contract: contract2, contractId: contractId2 } =\n\t\t\tthis.generateContractRowValues([perm3])\n\n\t\tawait this.eventFaker.fakeListPermissionContracts(() => {\n\t\t\treturn [contract, contract2]\n\t\t})\n\n\t\tconst map = await this.fetchContracts()\n\t\t//@ts-ignore\n\t\tassert.isEqualDeep(map, {\n\t\t\t[contractId]: [perm.id, perm2.id],\n\t\t\t[contractId2]: [perm3.id],\n\t\t\t[this.fqid2]: ['can-high-five'],\n\t\t\t[buildPermissionContractId('oeu-aoeuao', this.namespace)]: [\n\t\t\t\t'what-the',\n\t\t\t\t'go-dogs',\n\t\t\t],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async connectsAsSkill() {\n\t\tlet passedOptions: ApiClientFactoryOptions | undefined\n\n\t\t//@ts-ignore\n\t\tconst old = this.permissions.connectToApi.bind(this.permissions)\n\t\t//@ts-ignore\n\t\tthis.permissions.connectToApi = (options) => {\n\t\t\tpassedOptions = options\n\t\t\treturn old(passedOptions)\n\t\t}\n\n\t\tawait this.fetchContracts()\n\t\tassert.isEqualDeep(passedOptions, { shouldAuthAsCurrentSkill: true })\n\t}\n\n\tprivate static updateFirstContractBuilder(\n\t\tcontractId: string,\n\t\tperm1Id: string,\n\t\tperm2Id: string\n\t) {\n\t\tconst file = this.resolvePath(\n\t\t\t'src',\n\t\t\t'permissions',\n\t\t\t`${this.contractName1}.permissions.ts`\n\t\t)\n\t\tdiskUtil.writeFile(\n\t\t\tfile,\n\t\t\tgenerateContractBuilder(contractId, perm1Id, perm2Id)\n\t\t)\n\t}\n\n\tprivate static generateContractRowValues(\n\t\tpermissions: SpruceSchemas.Mercury.v2020_12_25.Permission[]\n\t) {\n\t\tconst contractId = generateId()\n\t\tconst contract = {\n\t\t\tid: generateId(),\n\t\t\tcontract: {\n\t\t\t\tid: contractId,\n\t\t\t\tname: generateId(),\n\t\t\t\tpermissions,\n\t\t\t},\n\t\t}\n\t\treturn { contract, contractId }\n\t}\n\n\tprivate static generatePermValues() {\n\t\tconst permissionId = generateId()\n\t\tconst perm = {\n\t\t\tid: permissionId,\n\t\t\tname: generateId(),\n\t\t\tdefaults: {},\n\t\t}\n\t\treturn perm\n\t}\n\n\tprivate static addRandomDependency() {\n\t\tconst dep = this.Service('dependency')\n\t\tconst namespace = generateId()\n\t\tdep.add({\n\t\t\tid: generateId(),\n\t\t\tnamespace,\n\t\t})\n\t\treturn namespace\n\t}\n\n\tprivate static async fetchContracts() {\n\t\treturn this.permissions.fetchContracts()\n\t}\n\n\tprivate static async assertLocalPermissionsEqual(\n\t\texpected: ImportedPermission[]\n\t) {\n\t\tconst perms = await this.loadLocalPermissions()\n\n\t\tperms.sort(sortPermissionContracts)\n\t\texpected.sort(sortPermissionContracts)\n\n\t\tassert.isEqualDeep(perms, expected)\n\t}\n\n\tprivate static async loadLocalPermissions() {\n\t\t//@ts-ignore\n\t\treturn await this.permissions.loadLocalPermissions()\n\t}\n}\n\nfunction buildPermissionContractId(\n\tcontractId: string,\n\tnamespace?: string\n): string {\n\treturn `${namespace}.${contractId}`\n}\n\nfunction generateContractBuilder(\n\tcontractId = 'oeu-aoeuao',\n\tperm1Id = 'what-the',\n\tperm2Id = 'go-dogs'\n) {\n\treturn `import {\n buildPermissionContract\n} from '@sprucelabs/mercury-types'\n\nconst debeePermissions = buildPermissionContract({\n id: '${contractId}',\n name: 'debee',\n description: '',\n requireAllPermissions: false,\n permissions: [\n {\n id: '${perm1Id}',\n name: 'Can give high five',\n description: 'Will this person be allowed to high five?',\n defaults: {\n skill: false,\n },\n requireAllStatuses: false,\n },\n {\n id: '${perm2Id}',\n name: 'Can give high five',\n description: 'Will this person be allowed to high five?',\n defaults: {\n skill: false,\n },\n requireAllStatuses: false,\n }\n ]\n})\n\nexport default debeePermissions\n`\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PermissionStore.test.js","names":["PermissionStoreTest","test","Service","getSkillNamespace","namespace","contractName1","generateShortAlphaId","fqid1","contractName2","contractId","fqid2","buildPermissionContractId","MercuryClientFactory","setIsTestMode","permissions","Store","eventFaker","fakeListPermissionContracts","loadLocalPermissions","assert","isEqualDeep","createPermissionContract","assertLocalPermissionsEqual","id","path","resolvePath","perm1Id","perm2Id","updateFirstContractBuilder","addRandomDependency","target","passedTarget","fetchContracts","namespaces","perm","generatePermValues","perm2","perm3","generateContractRowValues","contract","contract2","contractId2","map","old","connectToApi","bind","options","passedOptions","shouldAuthAsCurrentSkill","file","diskUtil","writeFile","generateContractBuilder","generateId","name","permissionId","defaults","dep","add","expected","perms","sort","sortPermissionContracts","AbstractPermissionsTest"],"sources":["../../../../src/__tests__/behavioral/permissions/PermissionStore.test.ts"],"sourcesContent":["import { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert, generateId } from '@sprucelabs/test-utils'\nimport PermissionStore, {\n\tImportedPermission,\n\tListPermContractsTargetAndPayload,\n} from '../../../features/permission/stores/PermissionStore'\nimport { ApiClientFactoryOptions } from '../../../types/apiClient.types'\nimport AbstractPermissionsTest from './support/AbstractPermissionsTest'\nimport generateShortAlphaId from './support/generateShortAlphaId'\nimport { sortPermissionContracts } from './support/sortPermissionContracts'\n\nexport default class PermissionStoreTest extends AbstractPermissionsTest {\n\tprivate static permissions: PermissionStore\n\tprivate static contractName1: string\n\tprivate static contractName2: string\n\tprivate static fqid1: string\n\tprivate static fqid2: string\n\tprivate static namespace: string\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tconst namespace = await this.Service('pkg').getSkillNamespace()\n\t\tthis.namespace = namespace\n\n\t\tthis.contractName1 = generateShortAlphaId()\n\t\tthis.fqid1 = `${namespace}.${this.contractName1}`\n\n\t\tthis.contractName2 = generateShortAlphaId()\n\t\tconst contractId = this.contractName2\n\t\tthis.fqid2 = buildPermissionContractId(contractId, namespace)\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tMercuryClientFactory.setIsTestMode(true)\n\t\tthis.permissions = this.Store('permission')\n\t\tawait this.eventFaker.fakeListPermissionContracts(() => {})\n\t}\n\n\t@test()\n\tprotected static async loadsNoLocalByDefault() {\n\t\tconst permissions = await this.loadLocalPermissions()\n\t\tassert.isEqualDeep(permissions, [])\n\t}\n\n\t@test()\n\tprotected static async loadsOneContract() {\n\t\tawait this.createPermissionContract(this.contractName1)\n\t\tawait this.assertLocalPermissionsEqual([\n\t\t\t{\n\t\t\t\tid: this.fqid1,\n\t\t\t\tpermissions: ['can-high-five'],\n\t\t\t\tpath: this.resolvePath(\n\t\t\t\t\t`src/permissions/${this.contractName1}.permissions.ts`\n\t\t\t\t),\n\t\t\t},\n\t\t])\n\t}\n\n\t@test()\n\tprotected static async loadsSecondContract() {\n\t\tawait this.createPermissionContract(this.contractName2)\n\n\t\tawait this.assertLocalPermissionsEqual([\n\t\t\t{\n\t\t\t\tid: this.fqid2,\n\t\t\t\tpermissions: ['can-high-five'],\n\t\t\t\tpath: this.resolvePath(\n\t\t\t\t\t`src/permissions/${this.contractName2}.permissions.ts`\n\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: this.fqid1,\n\t\t\t\tpermissions: ['can-high-five'],\n\t\t\t\tpath: this.resolvePath(\n\t\t\t\t\t`src/permissions/${this.contractName1}.permissions.ts`\n\t\t\t\t),\n\t\t\t},\n\t\t])\n\t}\n\n\t@test()\n\tprotected static async mixesInAllPermissions() {\n\t\tconst contractId = 'oeu-aoeuao'\n\t\tconst perm1Id = 'what-the'\n\t\tconst perm2Id = 'go-dogs'\n\n\t\tthis.updateFirstContractBuilder(contractId, perm1Id, perm2Id)\n\n\t\tawait this.assertLocalPermissionsEqual([\n\t\t\t{\n\t\t\t\tid: this.fqid2,\n\t\t\t\tpermissions: ['can-high-five'],\n\t\t\t\tpath: this.resolvePath(\n\t\t\t\t\t`src/permissions/${this.contractName2}.permissions.ts`\n\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: buildPermissionContractId(contractId, this.namespace),\n\t\t\t\tpermissions: [perm1Id, perm2Id],\n\t\t\t\tpath: this.resolvePath(\n\t\t\t\t\t`src/permissions/${this.contractName1}.permissions.ts`\n\t\t\t\t),\n\t\t\t},\n\t\t])\n\t}\n\n\t@test()\n\tprotected static async passesThroughDependentSkills() {\n\t\tconst namespace = this.addRandomDependency()\n\n\t\tlet passedTarget: ListPermContractsTargetAndPayload['target']\n\n\t\tawait this.eventFaker.fakeListPermissionContracts(({ target }) => {\n\t\t\tpassedTarget = target\n\t\t})\n\n\t\tawait this.fetchContracts()\n\n\t\tassert.isEqualDeep(passedTarget, {\n\t\t\tnamespaces: [namespace],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async returnsDependencyMapFromRemoteContracts() {\n\t\tconst perm = this.generatePermValues()\n\t\tconst perm2 = this.generatePermValues()\n\t\tconst perm3 = this.generatePermValues()\n\n\t\tconst { contract, contractId } = this.generateContractRowValues([\n\t\t\tperm,\n\t\t\tperm2,\n\t\t])\n\n\t\tconst { contract: contract2, contractId: contractId2 } =\n\t\t\tthis.generateContractRowValues([perm3])\n\n\t\tawait this.eventFaker.fakeListPermissionContracts(() => {\n\t\t\treturn [contract, contract2]\n\t\t})\n\n\t\tconst map = await this.fetchContracts()\n\t\t//@ts-ignore\n\t\tassert.isEqualDeep(map, {\n\t\t\t[contractId]: [perm.id, perm2.id],\n\t\t\t[contractId2]: [perm3.id],\n\t\t\t[this.fqid2]: ['can-high-five'],\n\t\t\t[buildPermissionContractId('oeu-aoeuao', this.namespace)]: [\n\t\t\t\t'what-the',\n\t\t\t\t'go-dogs',\n\t\t\t],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async connectsAsSkill() {\n\t\tlet passedOptions: ApiClientFactoryOptions | undefined\n\n\t\t//@ts-ignore\n\t\tconst old = this.permissions.connectToApi.bind(this.permissions)\n\t\t//@ts-ignore\n\t\tthis.permissions.connectToApi = (options) => {\n\t\t\tpassedOptions = options\n\t\t\treturn old(passedOptions)\n\t\t}\n\n\t\tawait this.fetchContracts()\n\t\tassert.isEqualDeep(passedOptions, { shouldAuthAsCurrentSkill: true })\n\t}\n\n\tprivate static updateFirstContractBuilder(\n\t\tcontractId: string,\n\t\tperm1Id: string,\n\t\tperm2Id: string\n\t) {\n\t\tconst file = this.resolvePath(\n\t\t\t'src',\n\t\t\t'permissions',\n\t\t\t`${this.contractName1}.permissions.ts`\n\t\t)\n\t\tdiskUtil.writeFile(\n\t\t\tfile,\n\t\t\tgenerateContractBuilder(contractId, perm1Id, perm2Id)\n\t\t)\n\t}\n\n\tprivate static generateContractRowValues(\n\t\tpermissions: SpruceSchemas.Mercury.v2020_12_25.Permission[]\n\t) {\n\t\tconst contractId = generateId()\n\t\tconst contract = {\n\t\t\tid: generateId(),\n\t\t\tcontract: {\n\t\t\t\tid: contractId,\n\t\t\t\tname: generateId(),\n\t\t\t\tpermissions,\n\t\t\t},\n\t\t}\n\t\treturn { contract, contractId }\n\t}\n\n\tprivate static generatePermValues() {\n\t\tconst permissionId = generateId()\n\t\tconst perm = {\n\t\t\tid: permissionId,\n\t\t\tname: generateId(),\n\t\t\tdefaults: {},\n\t\t}\n\t\treturn perm\n\t}\n\n\tprivate static addRandomDependency() {\n\t\tconst dep = this.Service('dependency')\n\t\tconst namespace = generateId()\n\t\tdep.add({\n\t\t\tid: generateId(),\n\t\t\tnamespace,\n\t\t})\n\t\treturn namespace\n\t}\n\n\tprivate static async fetchContracts() {\n\t\treturn this.permissions.fetchContracts()\n\t}\n\n\tprivate static async assertLocalPermissionsEqual(\n\t\texpected: ImportedPermission[]\n\t) {\n\t\tconst perms = await this.loadLocalPermissions()\n\n\t\tperms.sort(sortPermissionContracts)\n\t\texpected.sort(sortPermissionContracts)\n\n\t\tassert.isEqualDeep(perms, expected)\n\t}\n\n\tprivate static async loadLocalPermissions() {\n\t\t//@ts-ignore\n\t\treturn await this.permissions.loadLocalPermissions()\n\t}\n}\n\nfunction buildPermissionContractId(\n\tcontractId: string,\n\tnamespace?: string\n): string {\n\treturn `${namespace}.${contractId}`\n}\n\nfunction generateContractBuilder(\n\tcontractId = 'oeu-aoeuao',\n\tperm1Id = 'what-the',\n\tperm2Id = 'go-dogs'\n) {\n\treturn `import {\n buildPermissionContract\n} from '@sprucelabs/mercury-types'\n\nconst debeePermissions = buildPermissionContract({\n id: '${contractId}',\n name: 'debee',\n description: '',\n requireAllPermissions: false,\n permissions: [\n {\n id: '${perm1Id}',\n name: 'Can give high five',\n description: 'Will this person be allowed to high five?',\n defaults: {\n skill: false,\n },\n requireAllStatuses: false,\n },\n {\n id: '${perm2Id}',\n name: 'Can give high five',\n description: 'Will this person be allowed to high five?',\n defaults: {\n skill: false,\n },\n requireAllStatuses: false,\n }\n ]\n})\n\nexport default debeePermissions\n`\n}\n"],"mappings":"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"}
@@ -11,6 +11,7 @@ export default class SyncingPermissionsTest extends AbstractPermissionsTest {
11
11
  protected static doesNotSyncIfNotInstalled(): Promise<void>;
12
12
  protected static generatesCombinedFile(): Promise<void>;
13
13
  protected static combinedFileImportsAllPermissions(): Promise<void>;
14
+ protected static canSyncCorePermissions(): Promise<void>;
14
15
  private static getCombinedPath;
15
16
  private static beginTrackingExecute;
16
17
  private static sync;
@@ -24,10 +24,10 @@ var _test = _interopRequireDefault(require("../../../tests/utilities/test.utilit
24
24
  var _AbstractPermissionsTest = _interopRequireDefault(require("./support/AbstractPermissionsTest"));
25
25
  var _generateShortAlphaId = _interopRequireDefault(require("./support/generateShortAlphaId"));
26
26
  var _sortPermissionContracts = require("./support/sortPermissionContracts");
27
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2;
27
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2;
28
28
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
29
29
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
30
- var SyncingPermissionsTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test)(), _dec3 = (0, _testUtils.test)(), _dec4 = (0, _testUtils.test)(), _dec5 = (0, _testUtils.test)(), _dec6 = (0, _testUtils.test)(), (_class = (_class2 = /*#__PURE__*/function (_AbstractPermissionsT) {
30
+ var SyncingPermissionsTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.test)(), _dec3 = (0, _testUtils.test)(), _dec4 = (0, _testUtils.test)(), _dec5 = (0, _testUtils.test)(), _dec6 = (0, _testUtils.test)(), _dec7 = (0, _testUtils.test)(), (_class = (_class2 = /*#__PURE__*/function (_AbstractPermissionsT) {
31
31
  (0, _inherits2["default"])(SyncingPermissionsTest, _AbstractPermissionsT);
32
32
  var _super2 = _createSuper(SyncingPermissionsTest);
33
33
  function SyncingPermissionsTest() {
@@ -285,6 +285,41 @@ var SyncingPermissionsTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
285
285
  }
286
286
  return combinedFileImportsAllPermissions;
287
287
  }()
288
+ }, {
289
+ key: "canSyncCorePermissions",
290
+ value: function () {
291
+ var _canSyncCorePermissions = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
292
+ var wasHit, passedTarget;
293
+ return _regenerator["default"].wrap(function _callee11$(_context11) {
294
+ while (1) {
295
+ switch (_context11.prev = _context11.next) {
296
+ case 0:
297
+ wasHit = false;
298
+ _context11.next = 3;
299
+ return this.eventFaker.fakeListPermissionContracts(function (targetAndPayload) {
300
+ passedTarget = targetAndPayload.target;
301
+ wasHit = true;
302
+ });
303
+ case 3:
304
+ _context11.next = 5;
305
+ return this.sync({
306
+ shouldSyncCorePermissions: true
307
+ });
308
+ case 5:
309
+ _testUtils.assert.isTrue(wasHit);
310
+ _testUtils.assert.isUndefined(passedTarget);
311
+ case 7:
312
+ case "end":
313
+ return _context11.stop();
314
+ }
315
+ }
316
+ }, _callee11, this);
317
+ }));
318
+ function canSyncCorePermissions() {
319
+ return _canSyncCorePermissions.apply(this, arguments);
320
+ }
321
+ return canSyncCorePermissions;
322
+ }()
288
323
  }, {
289
324
  key: "getCombinedPath",
290
325
  value: function getCombinedPath() {
@@ -298,23 +333,23 @@ var SyncingPermissionsTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
298
333
  }, {
299
334
  key: "sync",
300
335
  value: function () {
301
- var _sync = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
302
- return _regenerator["default"].wrap(function _callee11$(_context11) {
336
+ var _sync = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12(options) {
337
+ return _regenerator["default"].wrap(function _callee12$(_context12) {
303
338
  while (1) {
304
- switch (_context11.prev = _context11.next) {
339
+ switch (_context12.prev = _context12.next) {
305
340
  case 0:
306
- _context11.next = 2;
307
- return this.syncAction.execute();
341
+ _context12.next = 2;
342
+ return this.syncAction.execute(options);
308
343
  case 2:
309
- return _context11.abrupt("return", _context11.sent);
344
+ return _context12.abrupt("return", _context12.sent);
310
345
  case 3:
311
346
  case "end":
312
- return _context11.stop();
347
+ return _context12.stop();
313
348
  }
314
349
  }
315
- }, _callee11, this);
350
+ }, _callee12, this);
316
351
  }));
317
- function sync() {
352
+ function sync(_x2) {
318
353
  return _sync.apply(this, arguments);
319
354
  }
320
355
  return sync;
@@ -322,12 +357,12 @@ var SyncingPermissionsTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
322
357
  }, {
323
358
  key: "emitDidExecuteUpgrade",
324
359
  value: function () {
325
- var _emitDidExecuteUpgrade = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12() {
326
- return _regenerator["default"].wrap(function _callee12$(_context12) {
360
+ var _emitDidExecuteUpgrade = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13() {
361
+ return _regenerator["default"].wrap(function _callee13$(_context13) {
327
362
  while (1) {
328
- switch (_context12.prev = _context12.next) {
363
+ switch (_context13.prev = _context13.next) {
329
364
  case 0:
330
- _context12.next = 2;
365
+ _context13.next = 2;
331
366
  return this.emitter.emitAndFlattenResponses('feature.did-execute', {
332
367
  actionCode: 'upgrade',
333
368
  featureCode: 'node',
@@ -335,10 +370,10 @@ var SyncingPermissionsTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
335
370
  });
336
371
  case 2:
337
372
  case "end":
338
- return _context12.stop();
373
+ return _context13.stop();
339
374
  }
340
375
  }
341
- }, _callee12, this);
376
+ }, _callee13, this);
342
377
  }));
343
378
  function emitDidExecuteUpgrade() {
344
379
  return _emitDidExecuteUpgrade.apply(this, arguments);
@@ -347,7 +382,7 @@ var SyncingPermissionsTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
347
382
  }()
348
383
  }]);
349
384
  return SyncingPermissionsTest;
350
- }(_AbstractPermissionsTest["default"]), (0, _defineProperty2["default"])(_class2, "syncAction", void 0), (0, _defineProperty2["default"])(_class2, "contractId1", void 0), (0, _defineProperty2["default"])(_class2, "contractId2", void 0), _class2), ((0, _applyDecoratedDescriptor2["default"])(_class, "generatesExpectedTypesFile", [_dec], Object.getOwnPropertyDescriptor(_class, "generatesExpectedTypesFile"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "syncsNewPermissionsWhenMade", [_dec2], Object.getOwnPropertyDescriptor(_class, "syncsNewPermissionsWhenMade"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "upgradingSyncsPermissions", [_dec3], Object.getOwnPropertyDescriptor(_class, "upgradingSyncsPermissions"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "doesNotSyncIfNotInstalled", [_dec4], Object.getOwnPropertyDescriptor(_class, "doesNotSyncIfNotInstalled"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "generatesCombinedFile", [_dec5], Object.getOwnPropertyDescriptor(_class, "generatesCombinedFile"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "combinedFileImportsAllPermissions", [_dec6], Object.getOwnPropertyDescriptor(_class, "combinedFileImportsAllPermissions"), _class)), _class));
385
+ }(_AbstractPermissionsTest["default"]), (0, _defineProperty2["default"])(_class2, "syncAction", void 0), (0, _defineProperty2["default"])(_class2, "contractId1", void 0), (0, _defineProperty2["default"])(_class2, "contractId2", void 0), _class2), ((0, _applyDecoratedDescriptor2["default"])(_class, "generatesExpectedTypesFile", [_dec], Object.getOwnPropertyDescriptor(_class, "generatesExpectedTypesFile"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "syncsNewPermissionsWhenMade", [_dec2], Object.getOwnPropertyDescriptor(_class, "syncsNewPermissionsWhenMade"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "upgradingSyncsPermissions", [_dec3], Object.getOwnPropertyDescriptor(_class, "upgradingSyncsPermissions"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "doesNotSyncIfNotInstalled", [_dec4], Object.getOwnPropertyDescriptor(_class, "doesNotSyncIfNotInstalled"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "generatesCombinedFile", [_dec5], Object.getOwnPropertyDescriptor(_class, "generatesCombinedFile"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "combinedFileImportsAllPermissions", [_dec6], Object.getOwnPropertyDescriptor(_class, "combinedFileImportsAllPermissions"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canSyncCorePermissions", [_dec7], Object.getOwnPropertyDescriptor(_class, "canSyncCorePermissions"), _class)), _class));
351
386
  exports["default"] = SyncingPermissionsTest;
352
387
  var ExecuteTrackingAction = /*#__PURE__*/function (_SyncAction) {
353
388
  (0, _inherits2["default"])(ExecuteTrackingAction, _SyncAction);
@@ -1 +1 @@
1
- {"version":3,"file":"SyncingPermissions.test.js","names":["SyncingPermissionsTest","test","contractId1","generateShortAlphaId","contractId2","syncAction","Action","MercuryClientFactory","setIsTestMode","ExecuteTrackingAction","wasExecuteInvoked","eventFaker","fakeListPermissionContracts","sync","results","expected","resolveHashSprucePath","testUtil","assertFileByPathInGeneratedFiles","files","createPermissionContract","writeTestFileAndAssertValid","beginTrackingExecute","emitDidExecuteUpgrade","assert","isTrue","featureInstaller","isInstalled","code","isFalse","diskUtil","doesFileExist","getCombinedPath","Service","importDefault","imported","isEqualDeep","sort","sortPermissionContracts","id","name","description","requireAllPermissions","permissions","defaults","skill","requireAllStatuses","ActionFactory","setActionClass","execute","emitter","emitAndFlattenResponses","actionCode","featureCode","AbstractPermissionsTest","SyncAction"],"sources":["../../../../src/__tests__/behavioral/permissions/SyncingPermissions.test.ts"],"sourcesContent":["import { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { assert, test } from '@sprucelabs/test-utils'\nimport ActionFactory from '../../../features/ActionFactory'\nimport SyncAction from '../../../features/permission/actions/SyncAction'\nimport testUtil from '../../../tests/utilities/test.utility'\nimport AbstractPermissionsTest from './support/AbstractPermissionsTest'\nimport generateShortAlphaId from './support/generateShortAlphaId'\nimport { sortPermissionContracts } from './support/sortPermissionContracts'\n\nexport default class SyncingPermissionsTest extends AbstractPermissionsTest {\n\tprivate static syncAction: SyncAction\n\tprivate static contractId1: string\n\tprivate static contractId2: string\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tthis.contractId1 = generateShortAlphaId()\n\t\tthis.contractId2 = generateShortAlphaId()\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.syncAction = this.Action('permission', 'sync')\n\t\tMercuryClientFactory.setIsTestMode(true)\n\t\tExecuteTrackingAction.wasExecuteInvoked = false\n\t\tawait this.eventFaker.fakeListPermissionContracts()\n\t}\n\n\t@test()\n\tprotected static async generatesExpectedTypesFile() {\n\t\tconst results = await this.sync()\n\n\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t`permissions/permissions.types.ts`\n\t\t)\n\n\t\ttestUtil.assertFileByPathInGeneratedFiles(expected, results.files)\n\t}\n\n\t@test()\n\tprotected static async syncsNewPermissionsWhenMade() {\n\t\tawait this.createPermissionContract(this.contractId1)\n\t\tawait this.writeTestFileAndAssertValid(\n\t\t\t`testing-permissions.${this.contractId1}`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async upgradingSyncsPermissions() {\n\t\tthis.beginTrackingExecute()\n\t\tawait this.emitDidExecuteUpgrade()\n\t\tassert.isTrue(ExecuteTrackingAction.wasExecuteInvoked)\n\t}\n\n\t@test()\n\tprotected static async doesNotSyncIfNotInstalled() {\n\t\tthis.beginTrackingExecute()\n\t\tthis.featureInstaller.isInstalled = async (code) => code === 'node'\n\n\t\tawait this.emitDidExecuteUpgrade()\n\t\tassert.isFalse(ExecuteTrackingAction.wasExecuteInvoked)\n\t}\n\n\t@test()\n\tprotected static async generatesCombinedFile() {\n\t\tassert.isTrue(diskUtil.doesFileExist(this.getCombinedPath()))\n\t}\n\n\t@test()\n\tprotected static async combinedFileImportsAllPermissions() {\n\t\tawait this.createPermissionContract(this.contractId2)\n\n\t\tconst imported = await this.Service('import').importDefault(\n\t\t\tthis.getCombinedPath()\n\t\t)\n\n\t\tassert.isEqualDeep(\n\t\t\timported.sort(sortPermissionContracts),\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\tid: this.contractId1,\n\t\t\t\t\tname: this.contractId1,\n\t\t\t\t\tdescription: '',\n\t\t\t\t\trequireAllPermissions: false,\n\t\t\t\t\tpermissions: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'can-high-five',\n\t\t\t\t\t\t\tname: 'Can give high five',\n\t\t\t\t\t\t\tdescription: 'Will this person be allowed to high five?',\n\t\t\t\t\t\t\tdefaults: { skill: false },\n\t\t\t\t\t\t\trequireAllStatuses: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: this.contractId2,\n\t\t\t\t\tname: this.contractId2,\n\t\t\t\t\tdescription: '',\n\t\t\t\t\trequireAllPermissions: false,\n\t\t\t\t\tpermissions: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'can-high-five',\n\t\t\t\t\t\t\tname: 'Can give high five',\n\t\t\t\t\t\t\tdescription: 'Will this person be allowed to high five?',\n\t\t\t\t\t\t\tdefaults: { skill: false },\n\t\t\t\t\t\t\trequireAllStatuses: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t].sort(sortPermissionContracts)\n\t\t)\n\t}\n\n\tprivate static getCombinedPath() {\n\t\treturn this.resolveHashSprucePath('permissions', 'permissions.ts')\n\t}\n\n\tprivate static beginTrackingExecute() {\n\t\tActionFactory.setActionClass('permission', 'sync', ExecuteTrackingAction)\n\t}\n\n\tprivate static async sync() {\n\t\treturn await this.syncAction.execute()\n\t}\n\n\tprivate static async emitDidExecuteUpgrade() {\n\t\tawait this.emitter.emitAndFlattenResponses('feature.did-execute', {\n\t\t\tactionCode: 'upgrade',\n\t\t\tfeatureCode: 'node',\n\t\t\tresults: {},\n\t\t})\n\t}\n}\n\nclass ExecuteTrackingAction extends SyncAction {\n\tpublic static wasExecuteInvoked = false\n\tpublic async execute() {\n\t\tExecuteTrackingAction.wasExecuteInvoked = true\n\t\treturn {}\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SyncingPermissions.test.js","names":["SyncingPermissionsTest","test","contractId1","generateShortAlphaId","contractId2","syncAction","Action","MercuryClientFactory","setIsTestMode","ExecuteTrackingAction","wasExecuteInvoked","eventFaker","fakeListPermissionContracts","sync","results","expected","resolveHashSprucePath","testUtil","assertFileByPathInGeneratedFiles","files","createPermissionContract","writeTestFileAndAssertValid","beginTrackingExecute","emitDidExecuteUpgrade","assert","isTrue","featureInstaller","isInstalled","code","isFalse","diskUtil","doesFileExist","getCombinedPath","Service","importDefault","imported","isEqualDeep","sort","sortPermissionContracts","id","name","description","requireAllPermissions","permissions","defaults","skill","requireAllStatuses","wasHit","targetAndPayload","passedTarget","target","shouldSyncCorePermissions","isUndefined","ActionFactory","setActionClass","options","execute","emitter","emitAndFlattenResponses","actionCode","featureCode","AbstractPermissionsTest","SyncAction"],"sources":["../../../../src/__tests__/behavioral/permissions/SyncingPermissions.test.ts"],"sourcesContent":["import { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { assert, test } from '@sprucelabs/test-utils'\nimport ActionFactory from '../../../features/ActionFactory'\nimport SyncAction, {\n\tSyncPermissionsOptions,\n} from '../../../features/permission/actions/SyncAction'\nimport { ListPermContractsTargetAndPayload } from '../../../features/permission/stores/PermissionStore'\nimport testUtil from '../../../tests/utilities/test.utility'\nimport AbstractPermissionsTest from './support/AbstractPermissionsTest'\nimport generateShortAlphaId from './support/generateShortAlphaId'\nimport { sortPermissionContracts } from './support/sortPermissionContracts'\n\nexport default class SyncingPermissionsTest extends AbstractPermissionsTest {\n\tprivate static syncAction: SyncAction\n\tprivate static contractId1: string\n\tprivate static contractId2: string\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tthis.contractId1 = generateShortAlphaId()\n\t\tthis.contractId2 = generateShortAlphaId()\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.syncAction = this.Action('permission', 'sync')\n\t\tMercuryClientFactory.setIsTestMode(true)\n\t\tExecuteTrackingAction.wasExecuteInvoked = false\n\t\tawait this.eventFaker.fakeListPermissionContracts()\n\t}\n\n\t@test()\n\tprotected static async generatesExpectedTypesFile() {\n\t\tconst results = await this.sync()\n\n\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t`permissions/permissions.types.ts`\n\t\t)\n\n\t\ttestUtil.assertFileByPathInGeneratedFiles(expected, results.files)\n\t}\n\n\t@test()\n\tprotected static async syncsNewPermissionsWhenMade() {\n\t\tawait this.createPermissionContract(this.contractId1)\n\t\tawait this.writeTestFileAndAssertValid(\n\t\t\t`testing-permissions.${this.contractId1}`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async upgradingSyncsPermissions() {\n\t\tthis.beginTrackingExecute()\n\t\tawait this.emitDidExecuteUpgrade()\n\t\tassert.isTrue(ExecuteTrackingAction.wasExecuteInvoked)\n\t}\n\n\t@test()\n\tprotected static async doesNotSyncIfNotInstalled() {\n\t\tthis.beginTrackingExecute()\n\t\tthis.featureInstaller.isInstalled = async (code) => code === 'node'\n\n\t\tawait this.emitDidExecuteUpgrade()\n\t\tassert.isFalse(ExecuteTrackingAction.wasExecuteInvoked)\n\t}\n\n\t@test()\n\tprotected static async generatesCombinedFile() {\n\t\tassert.isTrue(diskUtil.doesFileExist(this.getCombinedPath()))\n\t}\n\n\t@test()\n\tprotected static async combinedFileImportsAllPermissions() {\n\t\tawait this.createPermissionContract(this.contractId2)\n\n\t\tconst imported = await this.Service('import').importDefault(\n\t\t\tthis.getCombinedPath()\n\t\t)\n\n\t\tassert.isEqualDeep(\n\t\t\timported.sort(sortPermissionContracts),\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\tid: this.contractId1,\n\t\t\t\t\tname: this.contractId1,\n\t\t\t\t\tdescription: '',\n\t\t\t\t\trequireAllPermissions: false,\n\t\t\t\t\tpermissions: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'can-high-five',\n\t\t\t\t\t\t\tname: 'Can give high five',\n\t\t\t\t\t\t\tdescription: 'Will this person be allowed to high five?',\n\t\t\t\t\t\t\tdefaults: { skill: false },\n\t\t\t\t\t\t\trequireAllStatuses: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: this.contractId2,\n\t\t\t\t\tname: this.contractId2,\n\t\t\t\t\tdescription: '',\n\t\t\t\t\trequireAllPermissions: false,\n\t\t\t\t\tpermissions: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'can-high-five',\n\t\t\t\t\t\t\tname: 'Can give high five',\n\t\t\t\t\t\t\tdescription: 'Will this person be allowed to high five?',\n\t\t\t\t\t\t\tdefaults: { skill: false },\n\t\t\t\t\t\t\trequireAllStatuses: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t].sort(sortPermissionContracts)\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async canSyncCorePermissions() {\n\t\tlet wasHit = false\n\t\tlet passedTarget: ListPermContractsTargetAndPayload['target']\n\n\t\tawait this.eventFaker.fakeListPermissionContracts((targetAndPayload) => {\n\t\t\tpassedTarget = targetAndPayload.target\n\t\t\twasHit = true\n\t\t})\n\n\t\tawait this.sync({ shouldSyncCorePermissions: true })\n\t\tassert.isTrue(wasHit)\n\t\tassert.isUndefined(passedTarget)\n\t}\n\n\tprivate static getCombinedPath() {\n\t\treturn this.resolveHashSprucePath('permissions', 'permissions.ts')\n\t}\n\n\tprivate static beginTrackingExecute() {\n\t\tActionFactory.setActionClass('permission', 'sync', ExecuteTrackingAction)\n\t}\n\n\tprivate static async sync(options?: SyncPermissionsOptions) {\n\t\treturn await this.syncAction.execute(options)\n\t}\n\n\tprivate static async emitDidExecuteUpgrade() {\n\t\tawait this.emitter.emitAndFlattenResponses('feature.did-execute', {\n\t\t\tactionCode: 'upgrade',\n\t\t\tfeatureCode: 'node',\n\t\t\tresults: {},\n\t\t})\n\t}\n}\n\nclass ExecuteTrackingAction extends SyncAction {\n\tpublic static wasExecuteInvoked = false\n\tpublic async execute() {\n\t\tExecuteTrackingAction.wasExecuteInvoked = true\n\t\treturn {}\n\t}\n}\n"],"mappings":"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"}
@@ -83,7 +83,7 @@ var WatchingSkillViewsTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
83
83
  switch (_context3.prev = _context3.next) {
84
84
  case 0:
85
85
  wasHit = false;
86
- _CommandService["default"].fakeCommand('ENABLED_SKILL_FEATURES=view,event SHOULD_WATCH_VIEWS=true MAXIMUM_LOG_PREFIXES_LENGTH=0 yarn boot', {
86
+ _CommandService["default"].fakeCommand('SHOULD_WATCH_VIEWS=true MAXIMUM_LOG_PREFIXES_LENGTH=0 yarn boot', {
87
87
  code: 200,
88
88
  callback: function callback() {
89
89
  wasHit = true;
@@ -1 +1 @@
1
- {"version":3,"file":"WatchingSkillViews.test.js","names":["WatchingSkillViewsTest","test","action","Action","assert","isFunction","execute","wasHit","CommandService","fakeCommand","code","callback","wait","isTrue","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/WatchingSkillViews.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport WatchAction from '../../../features/view/actions/WatchAction'\nimport CommandService from '../../../services/CommandService'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\n\nexport default class WatchingSkillViewsTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprotected static oldBootExecute: any\n\tprivate static action: WatchAction\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.action = this.Action('view', 'watch')\n\t}\n\n\t@test()\n\tprotected static async hasWatchSkillViewsEvent() {\n\t\tassert.isFunction(this.action.execute)\n\t}\n\n\t@test()\n\tprotected static async shouldCallBoot() {\n\t\tlet wasHit = false\n\t\tCommandService.fakeCommand(\n\t\t\t'ENABLED_SKILL_FEATURES=view,event SHOULD_WATCH_VIEWS=true MAXIMUM_LOG_PREFIXES_LENGTH=0 yarn boot',\n\t\t\t{\n\t\t\t\tcode: 200,\n\t\t\t\tcallback: () => {\n\t\t\t\t\twasHit = true\n\t\t\t\t},\n\t\t\t}\n\t\t)\n\n\t\tvoid this.action.execute()\n\n\t\tawait this.wait(10)\n\n\t\tassert.isTrue(wasHit)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAEA;AACA;AAAgE;AAAA;AAAA;AAAA,IAE3CA,sBAAsB,WAUzC,IAAAC,eAAI,GAAE,UAKN,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,gGAVP;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;cAAA;gBAEC,IAAI,CAACC,MAAM,GAAG,IAAI,CAACC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC1C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,6GAED;QAAA;UAAA;YAAA;cAAA;gBAECC,iBAAM,CAACC,UAAU,CAAC,IAAI,CAACH,MAAM,CAACI,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACtC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,oGAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEKC,MAAM,GAAG,KAAK;gBAClBC,0BAAc,CAACC,WAAW,CACzB,mGAAmG,EACnG;kBACCC,IAAI,EAAE,GAAG;kBACTC,QAAQ,EAAE,oBAAM;oBACfJ,MAAM,GAAG,IAAI;kBACd;gBACD,CAAC,CACD;gBAED,KAAK,IAAI,CAACL,MAAM,CAACI,OAAO,EAAE;gBAAA;gBAAA,OAEpB,IAAI,CAACM,IAAI,CAAC,EAAE,CAAC;cAAA;gBAEnBR,iBAAM,CAACS,MAAM,CAACN,MAAM,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACrB;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAjCkDO,8BAAiB,8DACnC,OAAO;AAAA"}
1
+ {"version":3,"file":"WatchingSkillViews.test.js","names":["WatchingSkillViewsTest","test","action","Action","assert","isFunction","execute","wasHit","CommandService","fakeCommand","code","callback","wait","isTrue","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/WatchingSkillViews.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport WatchAction from '../../../features/view/actions/WatchAction'\nimport CommandService from '../../../services/CommandService'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\n\nexport default class WatchingSkillViewsTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprotected static oldBootExecute: any\n\tprivate static action: WatchAction\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.action = this.Action('view', 'watch')\n\t}\n\n\t@test()\n\tprotected static async hasWatchSkillViewsEvent() {\n\t\tassert.isFunction(this.action.execute)\n\t}\n\n\t@test()\n\tprotected static async shouldCallBoot() {\n\t\tlet wasHit = false\n\t\tCommandService.fakeCommand(\n\t\t\t'SHOULD_WATCH_VIEWS=true MAXIMUM_LOG_PREFIXES_LENGTH=0 yarn boot',\n\t\t\t{\n\t\t\t\tcode: 200,\n\t\t\t\tcallback: () => {\n\t\t\t\t\twasHit = true\n\t\t\t\t},\n\t\t\t}\n\t\t)\n\n\t\tvoid this.action.execute()\n\n\t\tawait this.wait(10)\n\n\t\tassert.isTrue(wasHit)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAEA;AACA;AAAgE;AAAA;AAAA;AAAA,IAE3CA,sBAAsB,WAUzC,IAAAC,eAAI,GAAE,UAKN,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,gGAVP;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;cAAA;gBAEC,IAAI,CAACC,MAAM,GAAG,IAAI,CAACC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC1C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,6GAED;QAAA;UAAA;YAAA;cAAA;gBAECC,iBAAM,CAACC,UAAU,CAAC,IAAI,CAACH,MAAM,CAACI,OAAO,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACtC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,oGAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEKC,MAAM,GAAG,KAAK;gBAClBC,0BAAc,CAACC,WAAW,CACzB,iEAAiE,EACjE;kBACCC,IAAI,EAAE,GAAG;kBACTC,QAAQ,EAAE,oBAAM;oBACfJ,MAAM,GAAG,IAAI;kBACd;gBACD,CAAC,CACD;gBAED,KAAK,IAAI,CAACL,MAAM,CAACI,OAAO,EAAE;gBAAA;gBAAA,OAEpB,IAAI,CAACM,IAAI,CAAC,EAAE,CAAC;cAAA;gBAEnBR,iBAAM,CAACS,MAAM,CAACN,MAAM,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACrB;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAjCkDO,8BAAiB,8DACnC,OAAO;AAAA"}
@@ -1,5 +1,5 @@
1
1
  import { SpruceSchemas } from '@sprucelabs/mercury-types';
2
- export declare type ListPermContractsTargetAndPayload = SpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsEmitTargetAndPayload;
2
+ import { ListPermContractsTargetAndPayload } from '../../features/permission/stores/PermissionStore';
3
3
  export default class EventFaker {
4
4
  fakeListPermissionContracts(cb?: (targetAndPayload: ListPermContractsTargetAndPayload) => void | SpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsResponsePayload['permissionContracts']): Promise<void>;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EventFaker.js","names":["EventFaker","cb","eventFaker","on","targetAndPayload","permissionContracts"],"sources":["../../../src/__tests__/support/EventFaker.ts"],"sourcesContent":["import { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { eventFaker } from '@sprucelabs/spruce-test-fixtures'\n\nexport type ListPermContractsTargetAndPayload =\n\tSpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsEmitTargetAndPayload\nexport default class EventFaker {\n\tpublic async fakeListPermissionContracts(\n\t\tcb?: (\n\t\t\ttargetAndPayload: ListPermContractsTargetAndPayload\n\t\t) =>\n\t\t\t| void\n\t\t\t| SpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsResponsePayload['permissionContracts']\n\t) {\n\t\tawait eventFaker.on(\n\t\t\t'list-permission-contracts::v2020_12_25',\n\t\t\t(targetAndPayload) => {\n\t\t\t\treturn {\n\t\t\t\t\tpermissionContracts: cb?.(targetAndPayload) ?? [],\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t}\n}\n"],"mappings":";;;;;;;;;;;AACA;AAA6D,IAIxCA,UAAU;EAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,iHAC9B,iBACCC,EAIkG;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAE5FC,8BAAU,CAACC,EAAE,CAClB,wCAAwC,EACxC,UAACC,gBAAgB,EAAK;kBAAA;kBACrB,OAAO;oBACNC,mBAAmB,SAAEJ,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAGG,gBAAgB,CAAC,qCAAI;kBAChD,CAAC;gBACF,CAAC,CACD;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA;AAAA"}
1
+ {"version":3,"file":"EventFaker.js","names":["EventFaker","cb","eventFaker","on","targetAndPayload","permissionContracts"],"sources":["../../../src/__tests__/support/EventFaker.ts"],"sourcesContent":["import { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { eventFaker } from '@sprucelabs/spruce-test-fixtures'\nimport { ListPermContractsTargetAndPayload } from '../../features/permission/stores/PermissionStore'\n\nexport default class EventFaker {\n\tpublic async fakeListPermissionContracts(\n\t\tcb?: (\n\t\t\ttargetAndPayload: ListPermContractsTargetAndPayload\n\t\t) =>\n\t\t\t| void\n\t\t\t| SpruceSchemas.Mercury.v2020_12_25.ListPermissionContractsResponsePayload['permissionContracts']\n\t) {\n\t\tawait eventFaker.on(\n\t\t\t'list-permission-contracts::v2020_12_25',\n\t\t\t(targetAndPayload) => {\n\t\t\t\treturn {\n\t\t\t\t\tpermissionContracts: cb?.(targetAndPayload) ?? [],\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t}\n}\n"],"mappings":";;;;;;;;;;;AACA;AAA6D,IAGxCA,UAAU;EAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,iHAC9B,iBACCC,EAIkG;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAE5FC,8BAAU,CAACC,EAAE,CAClB,wCAAwC,EACxC,UAACC,gBAAgB,EAAK;kBAAA;kBACrB,OAAO;oBACNC,mBAAmB,SAAEJ,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAGG,gBAAgB,CAAC,qCAAI;kBAChD,CAAC;gBACF,CAAC,CACD;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA;AAAA"}
@@ -31,10 +31,7 @@ var EventContractFeature = /*#__PURE__*/function (_AbstractFeature) {
31
31
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "code", 'eventContract');
32
32
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "nameReadable", 'Event Contract');
33
33
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "description", 'Pull core Mercury events down and write to single, portable, dependency-free, strongly typed contract.');
34
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dependencies", [{
35
- code: 'permission',
36
- isRequired: true
37
- }]);
34
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dependencies", []);
38
35
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "packageDependencies", []);
39
36
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "actionsDir", _spruceSkillUtils.diskUtil.resolvePath(__dirname, 'actions'));
40
37
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "fileDescriptions", []);
@@ -1 +1 @@
1
- {"version":3,"file":"EventContractFeature.js","names":["EventContractFeature","code","isRequired","diskUtil","resolvePath","__dirname","AbstractFeature"],"sources":["../../../src/features/eventContract/EventContractFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { FileDescription } from '../../types/cli.types'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\teventContract: EventContractFeature\n\t}\n}\n\nexport default class EventContractFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'eventContract'\n\tpublic nameReadable = 'Event Contract'\n\tpublic description =\n\t\t'Pull core Mercury events down and write to single, portable, dependency-free, strongly typed contract.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{\n\t\t\tcode: 'permission',\n\t\t\tisRequired: true,\n\t\t},\n\t]\n\tpublic packageDependencies = []\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\n\tpublic isInstalled = async () => true\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAEA;AAAuE;AAAA;AAAA,IASlDA,oBAAoB;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,yFACb,eAAe;IAAA,iGACpB,gBAAgB;IAAA,gGAErC,wGAAwG;IAAA,iGAC9D,CAC1C;MACCC,IAAI,EAAE,YAAY;MAClBC,UAAU,EAAE;IACb,CAAC,CACD;IAAA,wGAC4B,EAAE;IAAA,+FAEXC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA,qGACR,EAAE;IAAA,2LAEnC;MAAA;QAAA;UAAA;YAAA;cAAA,iCAAY,IAAI;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;IAAA;EAAA;EAAA;AAAA,EAhBYC,4BAAe;AAAA"}
1
+ {"version":3,"file":"EventContractFeature.js","names":["EventContractFeature","diskUtil","resolvePath","__dirname","AbstractFeature"],"sources":["../../../src/features/eventContract/EventContractFeature.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { FileDescription } from '../../types/cli.types'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { FeatureCode } from '../features.types'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\teventContract: EventContractFeature\n\t}\n}\n\nexport default class EventContractFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'eventContract'\n\tpublic nameReadable = 'Event Contract'\n\tpublic description =\n\t\t'Pull core Mercury events down and write to single, portable, dependency-free, strongly typed contract.'\n\tpublic dependencies: FeatureDependency[] = []\n\tpublic packageDependencies = []\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\n\tpublic isInstalled = async () => true\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAEA;AAAuE;AAAA;AAAA,IASlDA,oBAAoB;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,yFACb,eAAe;IAAA,iGACpB,gBAAgB;IAAA,gGAErC,wGAAwG;IAAA,iGAC9D,EAAE;IAAA,wGAChB,EAAE;IAAA,+FAEXC,0BAAQ,CAACC,WAAW,CAACC,SAAS,EAAE,SAAS,CAAC;IAAA,qGACR,EAAE;IAAA,2LAEnC;MAAA;QAAA;UAAA;YAAA;cAAA,iCAAY,IAAI;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;IAAA;EAAA;EAAA;AAAA,EAXYC,4BAAe;AAAA"}
@@ -29,5 +29,6 @@ export default class PullAction extends AbstractAction<PullOptionsSchema> {
29
29
  };
30
30
  invocationMessage: string;
31
31
  execute(options: Options): Promise<FeatureActionResponse>;
32
+ private syncPermissions;
32
33
  }
33
34
  export {};
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports["default"] = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -16,8 +17,9 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
16
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
18
  var _schema = require("@sprucelabs/schema");
18
19
  var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
19
- var _action = _interopRequireDefault(require("../../../utilities/action.utility"));
20
20
  var _AbstractAction2 = _interopRequireDefault(require("../../AbstractAction"));
21
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
23
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
22
24
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
23
25
  var pullOptionsSchema = (0, _schema.buildSchema)({
@@ -50,7 +52,7 @@ var PullAction = /*#__PURE__*/function (_AbstractAction) {
50
52
  key: "execute",
51
53
  value: function () {
52
54
  var _execute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(options) {
53
- var _this$validateAndNorm, _this$validateAndNorm2, destination, filename, _yield$this$Store$fet, contracts, buildEventContractImport, contents, action, results;
55
+ var _this$validateAndNorm, _this$validateAndNorm2, destination, filename, _yield$this$Store$fet, contracts, buildEventContractImport, contents, action, typesFiles;
54
56
  return _regenerator["default"].wrap(function _callee$(_context) {
55
57
  while (1) {
56
58
  switch (_context.prev = _context.next) {
@@ -72,17 +74,17 @@ var PullAction = /*#__PURE__*/function (_AbstractAction) {
72
74
  action = _spruceSkillUtils.diskUtil.doesFileExist(destination) ? 'updated' : 'generated';
73
75
  _spruceSkillUtils.diskUtil.writeFile(destination, contents);
74
76
  _context.next = 13;
75
- return this.Action('permission', 'sync').execute({});
77
+ return this.syncPermissions();
76
78
  case 13:
77
- results = _context.sent;
78
- return _context.abrupt("return", _action["default"].mergeActionResults(results, {
79
- files: [{
79
+ typesFiles = _context.sent;
80
+ return _context.abrupt("return", {
81
+ files: [].concat((0, _toConsumableArray2["default"])(typesFiles), [{
80
82
  name: filename,
81
83
  path: destination,
82
84
  action: action,
83
85
  description: 'All your Mercury core events ready for testing!'
84
- }]
85
- }));
86
+ }])
87
+ });
86
88
  case 15:
87
89
  case "end":
88
90
  return _context.stop();
@@ -95,6 +97,45 @@ var PullAction = /*#__PURE__*/function (_AbstractAction) {
95
97
  }
96
98
  return execute;
97
99
  }()
100
+ }, {
101
+ key: "syncPermissions",
102
+ value: function () {
103
+ var _syncPermissions = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
104
+ var permissions, coreMap, heartwoodMap, typesFiles;
105
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
106
+ while (1) {
107
+ switch (_context2.prev = _context2.next) {
108
+ case 0:
109
+ permissions = this.Store('permission');
110
+ _context2.next = 3;
111
+ return permissions.fetchContracts({
112
+ shouldSyncCorePermissions: true
113
+ });
114
+ case 3:
115
+ coreMap = _context2.sent;
116
+ _context2.next = 6;
117
+ return permissions.fetchContracts({
118
+ namespaces: ['heartwood']
119
+ });
120
+ case 6:
121
+ heartwoodMap = _context2.sent;
122
+ _context2.next = 9;
123
+ return this.Writer('permission').writeTypesFile(this.cwd, _objectSpread(_objectSpread({}, coreMap), heartwoodMap));
124
+ case 9:
125
+ typesFiles = _context2.sent;
126
+ return _context2.abrupt("return", typesFiles);
127
+ case 11:
128
+ case "end":
129
+ return _context2.stop();
130
+ }
131
+ }
132
+ }, _callee2, this);
133
+ }));
134
+ function syncPermissions() {
135
+ return _syncPermissions.apply(this, arguments);
136
+ }
137
+ return syncPermissions;
138
+ }()
98
139
  }]);
99
140
  return PullAction;
100
141
  }(_AbstractAction2["default"]);
@@ -1 +1 @@
1
- {"version":3,"file":"PullAction.js","names":["pullOptionsSchema","buildSchema","id","description","fields","destination","type","label","hint","PullAction","options","validateAndNormalizeOptions","filename","diskUtil","resolvePath","cwd","Store","fetchEventContracts","contracts","buildEventContractImport","contents","map","c","JSON","stringify","join","_","idx","action","doesFileExist","writeFile","Action","execute","results","actionUtil","mergeActionResults","files","name","path","AbstractAction"],"sources":["../../../../src/features/eventContract/actions/PullAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst pullOptionsSchema = buildSchema({\n\tid: 'pullActionSchema',\n\tdescription:\n\t\t'Pulls the event contracts from Mercury down to a single file for easy distribution.',\n\tfields: {\n\t\tdestination: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Destination',\n\t\t\thint: 'File is always named `events.contract.ts`.',\n\t\t},\n\t},\n})\ntype PullOptionsSchema = typeof pullOptionsSchema\ntype Options = SchemaValues<PullOptionsSchema>\n\nexport default class PullAction extends AbstractAction<PullOptionsSchema> {\n\tpublic commandAliases = ['pull.event.contracts']\n\tpublic optionsSchema = pullOptionsSchema\n\tpublic invocationMessage = 'Pulling combined event contract... 🜒'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tlet { destination = '.' } = this.validateAndNormalizeOptions(options)\n\n\t\tconst filename = 'events.contract.ts'\n\t\tdestination = diskUtil.resolvePath(this.cwd, destination, filename)\n\n\t\tconst { contracts } = await this.Store('event').fetchEventContracts()\n\t\tlet buildEventContractImport = `import { buildEventContract } from '@sprucelabs/mercury-types'\nimport '${'#spruce'}/permissions/permissions.types'`\n\n\t\tconst contents = `${buildEventContractImport}\nconst eventContracts = [${contracts\n\t\t\t.map((c) => `buildEventContract(${JSON.stringify(c, null, 2)})`)\n\t\t\t.join(',\\n')}] as const\n\n\nexport default eventContracts\nexport type CoreEventContract = ${contracts\n\t\t\t.map((_, idx) => `typeof eventContracts[${idx}]`)\n\t\t\t.join(' & ')}\n`\n\n\t\tconst action = diskUtil.doesFileExist(destination) ? 'updated' : 'generated'\n\n\t\tdiskUtil.writeFile(destination, contents)\n\n\t\tconst results = await this.Action('permission', 'sync').execute({})\n\n\t\treturn actionUtil.mergeActionResults(results, {\n\t\t\tfiles: [\n\t\t\t\t{\n\t\t\t\t\tname: filename,\n\t\t\t\t\tpath: destination,\n\t\t\t\t\taction,\n\t\t\t\t\tdescription: 'All your Mercury core events ready for testing!',\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AAAiD;AAAA;AAGjD,IAAMA,iBAAiB,GAAG,IAAAC,mBAAW,EAAC;EACrCC,EAAE,EAAE,kBAAkB;EACtBC,WAAW,EACV,qFAAqF;EACtFC,MAAM,EAAE;IACPC,WAAW,EAAE;MACZC,IAAI,EAAE,MAAM;MACZC,KAAK,EAAE,aAAa;MACpBC,IAAI,EAAE;IACP;EACD;AACD,CAAC,CAAC;AAAA,IAImBC,UAAU;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,mGACN,CAAC,sBAAsB,CAAC;IAAA,kGACzBT,iBAAiB;IAAA,sGACb,uCAAuC;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,6FAElE,iBAAqBU,OAAgB;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA,wBACR,IAAI,CAACC,2BAA2B,CAACD,OAAO,CAAC,iDAA/DL,WAAW,EAAXA,WAAW,uCAAG,GAAG;gBAEjBO,QAAQ,GAAG,oBAAoB;gBACrCP,WAAW,GAAGQ,0BAAQ,CAACC,WAAW,CAAC,IAAI,CAACC,GAAG,EAAEV,WAAW,EAAEO,QAAQ,CAAC;gBAAA;gBAAA,OAEvC,IAAI,CAACI,KAAK,CAAC,OAAO,CAAC,CAACC,mBAAmB,EAAE;cAAA;gBAAA;gBAA7DC,SAAS,yBAATA,SAAS;gBACbC,wBAAwB,qFACpB,SAAS;gBAEXC,QAAQ,aAAMD,wBAAwB,uCACpBD,SAAS,CAC/BG,GAAG,CAAC,UAACC,CAAC;kBAAA,oCAA2BC,IAAI,CAACC,SAAS,CAACF,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAAA,CAAG,CAAC,CAC/DG,IAAI,CAAC,KAAK,CAAC,4FAImBP,SAAS,CACvCG,GAAG,CAAC,UAACK,CAAC,EAAEC,GAAG;kBAAA,uCAA8BA,GAAG;gBAAA,CAAG,CAAC,CAChDF,IAAI,CAAC,KAAK,CAAC;gBAGPG,MAAM,GAAGf,0BAAQ,CAACgB,aAAa,CAACxB,WAAW,CAAC,GAAG,SAAS,GAAG,WAAW;gBAE5EQ,0BAAQ,CAACiB,SAAS,CAACzB,WAAW,EAAEe,QAAQ,CAAC;gBAAA;gBAAA,OAEnB,IAAI,CAACW,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;gBAA7DC,OAAO;gBAAA,iCAENC,kBAAU,CAACC,kBAAkB,CAACF,OAAO,EAAE;kBAC7CG,KAAK,EAAE,CACN;oBACCC,IAAI,EAAEzB,QAAQ;oBACd0B,IAAI,EAAEjC,WAAW;oBACjBuB,MAAM,EAANA,MAAM;oBACNzB,WAAW,EAAE;kBACd,CAAC;gBAEH,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EA3CsCoC,2BAAc;AAAA"}
1
+ {"version":3,"file":"PullAction.js","names":["pullOptionsSchema","buildSchema","id","description","fields","destination","type","label","hint","PullAction","options","validateAndNormalizeOptions","filename","diskUtil","resolvePath","cwd","Store","fetchEventContracts","contracts","buildEventContractImport","contents","map","c","JSON","stringify","join","_","idx","action","doesFileExist","writeFile","syncPermissions","typesFiles","files","name","path","permissions","fetchContracts","shouldSyncCorePermissions","coreMap","namespaces","heartwoodMap","Writer","writeTypesFile","AbstractAction"],"sources":["../../../../src/features/eventContract/actions/PullAction.ts"],"sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst pullOptionsSchema = buildSchema({\n\tid: 'pullActionSchema',\n\tdescription:\n\t\t'Pulls the event contracts from Mercury down to a single file for easy distribution.',\n\tfields: {\n\t\tdestination: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Destination',\n\t\t\thint: 'File is always named `events.contract.ts`.',\n\t\t},\n\t},\n})\ntype PullOptionsSchema = typeof pullOptionsSchema\ntype Options = SchemaValues<PullOptionsSchema>\n\nexport default class PullAction extends AbstractAction<PullOptionsSchema> {\n\tpublic commandAliases = ['pull.event.contracts']\n\tpublic optionsSchema = pullOptionsSchema\n\tpublic invocationMessage = 'Pulling combined event contract... 🜒'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tlet { destination = '.' } = this.validateAndNormalizeOptions(options)\n\n\t\tconst filename = 'events.contract.ts'\n\t\tdestination = diskUtil.resolvePath(this.cwd, destination, filename)\n\n\t\tconst { contracts } = await this.Store('event').fetchEventContracts()\n\t\tlet buildEventContractImport = `import { buildEventContract } from '@sprucelabs/mercury-types'\nimport '${'#spruce'}/permissions/permissions.types'`\n\n\t\tconst contents = `${buildEventContractImport}\nconst eventContracts = [${contracts\n\t\t\t.map((c) => `buildEventContract(${JSON.stringify(c, null, 2)})`)\n\t\t\t.join(',\\n')}] as const\n\n\nexport default eventContracts\nexport type CoreEventContract = ${contracts\n\t\t\t.map((_, idx) => `typeof eventContracts[${idx}]`)\n\t\t\t.join(' & ')}\n`\n\n\t\tconst action = diskUtil.doesFileExist(destination) ? 'updated' : 'generated'\n\n\t\tdiskUtil.writeFile(destination, contents)\n\n\t\tconst typesFiles = await this.syncPermissions()\n\n\t\treturn {\n\t\t\tfiles: [\n\t\t\t\t...typesFiles,\n\t\t\t\t{\n\t\t\t\t\tname: filename,\n\t\t\t\t\tpath: destination,\n\t\t\t\t\taction,\n\t\t\t\t\tdescription: 'All your Mercury core events ready for testing!',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t}\n\n\tprivate async syncPermissions() {\n\t\tconst permissions = this.Store('permission')\n\n\t\tconst coreMap = await permissions.fetchContracts({\n\t\t\tshouldSyncCorePermissions: true,\n\t\t})\n\n\t\tconst heartwoodMap = await permissions.fetchContracts({\n\t\t\tnamespaces: ['heartwood'],\n\t\t})\n\n\t\tconst typesFiles = await this.Writer('permission').writeTypesFile(\n\t\t\tthis.cwd,\n\t\t\t{ ...coreMap, ...heartwoodMap }\n\t\t)\n\t\treturn typesFiles\n\t}\n}\n"],"mappings":"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"}