@sprucelabs/spruce-cli 14.24.2 → 14.24.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js +24 -28
- package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.d.ts +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +10 -14
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill.test.d.ts +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill.test.js +23 -12
- package/build/__tests__/behavioral/skill/UpgradingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill2.test.d.ts +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill2.test.js +20 -10
- package/build/__tests__/behavioral/skill/UpgradingASkill2.test.js.map +1 -1
- package/build/features/error/ErrorFeature.js.map +1 -1
- package/build/features/error/writers/ErrorWriter.js +29 -6
- package/build/features/error/writers/ErrorWriter.js.map +1 -1
- package/build/features/event/EventFeature.d.ts +3 -1
- package/build/features/event/EventFeature.js +46 -29
- package/build/features/event/EventFeature.js.map +1 -1
- package/build/features/event/stores/EventStore.d.ts +2 -1
- package/build/features/event/stores/EventStore.js +33 -22
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/node/NodeFeature.d.ts +2 -1
- package/build/features/node/NodeFeature.js +86 -34
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/node/actions/UpgradeAction.js +9 -21
- package/build/features/node/actions/UpgradeAction.js.map +1 -1
- package/build/features/test/actions/TestAction.js +1 -1
- package/build/features/test/actions/TestAction.js.map +1 -1
- package/build/interfaces/TerminalInterface.js +7 -7
- package/build/interfaces/TerminalInterface.js.map +1 -1
- package/package.json +31 -30
- package/src/__tests__/behavioral/RegisteringEventsOnBoot.test.ts +20 -23
- package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +2 -5
- package/src/__tests__/behavioral/skill/UpgradingASkill.test.ts +30 -7
- package/src/__tests__/behavioral/skill/UpgradingASkill2.test.ts +10 -1
- package/src/features/error/ErrorFeature.ts +2 -0
- package/src/features/error/writers/ErrorWriter.ts +3 -1
- package/src/features/event/EventFeature.ts +32 -14
- package/src/features/event/stores/EventStore.ts +12 -4
- package/src/features/node/NodeFeature.ts +34 -1
- package/src/features/node/actions/UpgradeAction.ts +2 -11
- package/src/features/test/actions/TestAction.ts +4 -1
- package/src/interfaces/TerminalInterface.ts +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/features/event/EventFeature.ts"],"names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","payload","featureCode","actionCode","featureInstaller","isInstalled","Action","execute","settings","Service","clearListenerCache","appendRemoteToResultsOrPrompt","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","results","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","dependencyService","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"mappings":"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","sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\treturn {}\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\treturn this.Action('event', 'sync').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tif (\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' ||\n\t\t\t\tfeatureCode === 'eventContract' ||\n\t\t\t\tactionCode === 'login') &&\n\t\t\tactionCode !== 'setRemote'\n\t\t) {\n\t\t\treturn this.appendRemoteToResultsOrPrompt()\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t\tdependencyService: this.Service('dependency'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n"],"file":"EventFeature.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/features/event/EventFeature.ts"],"names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","payload","featureCode","actionCode","initiatingAction","EventStore","clearCache","combined","combineCodes","featureInstaller","isInstalled","settings","Service","clearListenerCache","appendRemoteToResultsOrPrompt","results","Action","execute","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","dependencyService","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"mappings":"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","sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\nimport EventStore from './stores/EventStore'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\tprivate initiatingAction?: string\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tif (!this.initiatingAction) {\n\t\t\tEventStore.clearCache()\n\t\t\tconst combined = this.combineCodes(featureCode, actionCode)\n\t\t\tthis.initiatingAction = combined\n\t\t}\n\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tif (\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' ||\n\t\t\t\tfeatureCode === 'eventContract' ||\n\t\t\t\tactionCode === 'login') &&\n\t\t\tactionCode !== 'setRemote'\n\t\t) {\n\t\t\treturn this.appendRemoteToResultsOrPrompt()\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tlet results = {}\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\tresults = this.Action('event', 'sync').execute({})\n\t\t}\n\n\t\tif (this.initiatingAction === this.combineCodes(featureCode, actionCode)) {\n\t\t\tEventStore.clearCache()\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate combineCodes(featureCode: string, actionCode: string) {\n\t\treturn `${featureCode}.${actionCode}`\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t\tdependencyService: this.Service('dependency'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n"],"file":"EventFeature.js"}
|
|
@@ -9,12 +9,13 @@ export interface EventStoreFetchEventContractsResponse {
|
|
|
9
9
|
export default class EventStore extends AbstractStore {
|
|
10
10
|
name: string;
|
|
11
11
|
protected static contractCache: Record<string, any>;
|
|
12
|
+
private static localEventCache?;
|
|
13
|
+
static clearCache(): void;
|
|
12
14
|
fetchEventContracts(options?: {
|
|
13
15
|
localNamespace?: string;
|
|
14
16
|
namespaces?: string[];
|
|
15
17
|
didUpdateHandler?: InternalUpdateHandler;
|
|
16
18
|
}): Promise<EventStoreFetchEventContractsResponse>;
|
|
17
|
-
static clearCache(): void;
|
|
18
19
|
private fetchRemoteContracts;
|
|
19
20
|
private filterOutLocalEventsFromRemoteContractsMutating;
|
|
20
21
|
loadLocalContract(localNamespace: string, didUpdateHandler?: InternalUpdateHandler): Promise<EventContract | null>;
|
|
@@ -267,16 +267,24 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
267
267
|
while (1) {
|
|
268
268
|
switch (_context4.prev = _context4.next) {
|
|
269
269
|
case 0:
|
|
270
|
-
|
|
271
|
-
|
|
270
|
+
if (!EventStore.localEventCache) {
|
|
271
|
+
_context4.next = 2;
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
return _context4.abrupt("return", EventStore.localEventCache);
|
|
272
276
|
|
|
273
277
|
case 2:
|
|
278
|
+
_context4.next = 4;
|
|
279
|
+
return (0, _globby["default"])(_spruceSkillUtils.diskUtil.resolvePath(this.cwd, 'src', 'events', '**/*.(builder|options).ts'));
|
|
280
|
+
|
|
281
|
+
case 4:
|
|
274
282
|
localMatches = _context4.sent;
|
|
275
283
|
ns = _spruceSkillUtils.namesUtil.toKebab(localNamespace);
|
|
276
284
|
eventSignatures = {};
|
|
277
285
|
filesByFqenAndEventKey = [];
|
|
278
286
|
didUpdateHandler === null || didUpdateHandler === void 0 ? void 0 : didUpdateHandler("Importing ".concat(localMatches.length, " local event signature files..."));
|
|
279
|
-
_context4.next =
|
|
287
|
+
_context4.next = 11;
|
|
280
288
|
return Promise.all(localMatches.map( /*#__PURE__*/function () {
|
|
281
289
|
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(match) {
|
|
282
290
|
var fqen, eventKey, _eventDiskUtil$splitP, eventName, version, filename, map, _fqen, _eventKey;
|
|
@@ -332,21 +340,21 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
332
340
|
};
|
|
333
341
|
}()));
|
|
334
342
|
|
|
335
|
-
case
|
|
343
|
+
case 11:
|
|
336
344
|
matches = filesByFqenAndEventKey.map(function (o) {
|
|
337
345
|
return o.match;
|
|
338
346
|
});
|
|
339
|
-
_context4.next =
|
|
347
|
+
_context4.next = 14;
|
|
340
348
|
return this.Service('import').bulkImport(matches);
|
|
341
349
|
|
|
342
|
-
case
|
|
350
|
+
case 14:
|
|
343
351
|
importsInOrder = _context4.sent;
|
|
344
352
|
importsByName = {};
|
|
345
353
|
idx = 0;
|
|
346
354
|
|
|
347
|
-
case
|
|
355
|
+
case 17:
|
|
348
356
|
if (!(idx < filesByFqenAndEventKey.length)) {
|
|
349
|
-
_context4.next =
|
|
357
|
+
_context4.next = 33;
|
|
350
358
|
break;
|
|
351
359
|
}
|
|
352
360
|
|
|
@@ -354,18 +362,18 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
354
362
|
_filesByFqenAndEventK = filesByFqenAndEventKey[idx], fqen = _filesByFqenAndEventK.fqen, eventKey = _filesByFqenAndEventK.eventKey, isSchema = _filesByFqenAndEventK.isSchema;
|
|
355
363
|
|
|
356
364
|
if (!isSchema) {
|
|
357
|
-
_context4.next =
|
|
365
|
+
_context4.next = 28;
|
|
358
366
|
break;
|
|
359
367
|
}
|
|
360
368
|
|
|
361
|
-
_context4.prev =
|
|
369
|
+
_context4.prev = 21;
|
|
362
370
|
(0, _schema.validateSchema)(imported);
|
|
363
|
-
_context4.next =
|
|
371
|
+
_context4.next = 28;
|
|
364
372
|
break;
|
|
365
373
|
|
|
366
|
-
case
|
|
367
|
-
_context4.prev =
|
|
368
|
-
_context4.t0 = _context4["catch"](
|
|
374
|
+
case 25:
|
|
375
|
+
_context4.prev = 25;
|
|
376
|
+
_context4.t0 = _context4["catch"](21);
|
|
369
377
|
throw new _SpruceError["default"]({
|
|
370
378
|
code: 'INVALID_EVENT_CONTRACT',
|
|
371
379
|
fullyQualifiedEventName: fqen,
|
|
@@ -373,7 +381,7 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
373
381
|
originalError: _context4.t0
|
|
374
382
|
});
|
|
375
383
|
|
|
376
|
-
case
|
|
384
|
+
case 28:
|
|
377
385
|
if (!importsByName[fqen]) {
|
|
378
386
|
importsByName[fqen] = {};
|
|
379
387
|
} //@ts-ignore
|
|
@@ -381,12 +389,12 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
381
389
|
|
|
382
390
|
importsByName[fqen][eventKey] = imported;
|
|
383
391
|
|
|
384
|
-
case
|
|
392
|
+
case 30:
|
|
385
393
|
idx++;
|
|
386
|
-
_context4.next =
|
|
394
|
+
_context4.next = 17;
|
|
387
395
|
break;
|
|
388
396
|
|
|
389
|
-
case
|
|
397
|
+
case 33:
|
|
390
398
|
Object.keys(importsByName).forEach(function (fqen) {
|
|
391
399
|
var imported = importsByName[fqen];
|
|
392
400
|
|
|
@@ -407,7 +415,7 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
407
415
|
didUpdateHandler === null || didUpdateHandler === void 0 ? void 0 : didUpdateHandler("Loaded ".concat(Object.keys(eventSignatures).length, " local event signatures..."));
|
|
408
416
|
|
|
409
417
|
if (!(Object.keys(eventSignatures).length > 0)) {
|
|
410
|
-
_context4.next =
|
|
418
|
+
_context4.next = 40;
|
|
411
419
|
break;
|
|
412
420
|
}
|
|
413
421
|
|
|
@@ -415,17 +423,18 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
415
423
|
eventSignatures: eventSignatures
|
|
416
424
|
});
|
|
417
425
|
(0, _mercuryTypes.validateEventContract)(cleaned);
|
|
426
|
+
EventStore.localEventCache = cleaned;
|
|
418
427
|
return _context4.abrupt("return", cleaned);
|
|
419
428
|
|
|
420
|
-
case
|
|
429
|
+
case 40:
|
|
421
430
|
return _context4.abrupt("return", null);
|
|
422
431
|
|
|
423
|
-
case
|
|
432
|
+
case 41:
|
|
424
433
|
case "end":
|
|
425
434
|
return _context4.stop();
|
|
426
435
|
}
|
|
427
436
|
}
|
|
428
|
-
}, _callee4, this, [[
|
|
437
|
+
}, _callee4, this, [[21, 25]]);
|
|
429
438
|
}));
|
|
430
439
|
|
|
431
440
|
function loadLocalContract(_x3, _x4) {
|
|
@@ -524,6 +533,7 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
524
533
|
}], [{
|
|
525
534
|
key: "clearCache",
|
|
526
535
|
value: function clearCache() {
|
|
536
|
+
EventStore.localEventCache = undefined;
|
|
527
537
|
EventStore.contractCache = {};
|
|
528
538
|
}
|
|
529
539
|
}]);
|
|
@@ -532,4 +542,5 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
|
|
|
532
542
|
|
|
533
543
|
exports["default"] = EventStore;
|
|
534
544
|
(0, _defineProperty2["default"])(EventStore, "contractCache", {});
|
|
545
|
+
(0, _defineProperty2["default"])(EventStore, "localEventCache", void 0);
|
|
535
546
|
//# sourceMappingURL=EventStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/event/stores/EventStore.ts"],"names":["eventFileNamesImportKeyMap","key","isSchema","EventStore","options","localNamespace","didUpdateHandler","namespaces","fetchRemoteContracts","contracts","loadLocalContract","localContract","filterOutLocalEventsFromRemoteContractsMutating","push","errors","join","contractCache","connectToApi","shouldAuthAsCurrentSkill","client","emit","target","results","eventResponseUtil","getFirstResponseOrThrow","remoteContracts","ns","namesUtil","toKebab","contract","sigs","eventContractUtil","getNamedEventSignatures","sig","eventNamespace","eventSignatures","fullyQualifiedEventName","diskUtil","resolvePath","cwd","localMatches","filesByFqenAndEventKey","length","Promise","all","map","match","eventDiskUtil","splitPathToEvent","eventName","version","fqen","eventNameUtil","filename","pathUtil","basename","eventKey","SpruceError","code","brokenProperty","originalError","matches","o","Service","bulkImport","importsInOrder","importsByName","idx","imported","Object","keys","forEach","split","emitPayloadSchema","payloadSchema","emitPayload","targetSchema","emitTarget","responsePayloadSchema","responsePayload","emitPermissionContract","emitPermissions","listenPermissionContract","listenPermissions","cleaned","eventContractCleanerUtil","cleanPayloadsAndPermissions","payload","eventContract","AbstractStore"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport {\n\tEventContract,\n\tEventSignature,\n\tPermissionContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { Schema, validateSchema } from '@sprucelabs/schema'\nimport {\n\teventResponseUtil,\n\teventDiskUtil,\n\teventNameUtil,\n\tbuildEmitTargetAndPayloadSchema,\n\teventContractUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { cloneDeep } from 'lodash'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport { InternalUpdateHandler } from '../../../types/cli.types'\nimport { eventContractCleanerUtil } from '../../../utilities/eventContractCleaner.utility'\n\nexport interface EventStoreFetchEventContractsResponse {\n\terrors: SpruceError[]\n\tcontracts: EventContract[]\n}\n\ntype Options = Omit<\n\tEventSignature,\n\t| 'responsePayloadSchema'\n\t| 'emitPayloadSchema'\n\t| 'listenPermissionContract'\n\t| 'emitPermissionContract'\n>\n\ninterface EventImport {\n\toptions?: Options\n\temitPayload?: Schema\n\temitTarget?: Schema\n\tresponsePayload?: Schema\n\temitPermissions?: PermissionContract\n\tlistenPermissions?: PermissionContract\n}\n\nconst eventFileNamesImportKeyMap = {\n\t'event.options.ts': { key: 'options', isSchema: false },\n\t'emitPayload.builder.ts': { key: 'emitPayload', isSchema: true },\n\t'emitTarget.builder.ts': { key: 'emitTarget', isSchema: true },\n\t'responsePayload.builder.ts': { key: 'responsePayload', isSchema: true },\n\t'emitPermissions.builder.ts': { key: 'emitPermissions', isSchema: false },\n\t'listenPermissions.builder.ts': { key: 'listenPermissions', isSchema: false },\n}\n\nexport default class EventStore extends AbstractStore {\n\tpublic name = 'event'\n\tprotected static contractCache: Record<string, any> = {}\n\n\tpublic async fetchEventContracts(options?: {\n\t\tlocalNamespace?: string\n\t\tnamespaces?: string[]\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t}): Promise<EventStoreFetchEventContractsResponse> {\n\t\tconst { localNamespace, didUpdateHandler, namespaces } = options ?? {}\n\n\t\tdidUpdateHandler?.('Pulling remote contracts...')\n\n\t\tconst contracts = await this.fetchRemoteContracts(namespaces)\n\n\t\tconst localContract =\n\t\t\tlocalNamespace &&\n\t\t\t(await this.loadLocalContract(localNamespace, didUpdateHandler))\n\n\t\tif (localNamespace) {\n\t\t\tthis.filterOutLocalEventsFromRemoteContractsMutating(\n\t\t\t\tcontracts,\n\t\t\t\tlocalNamespace\n\t\t\t)\n\t\t}\n\n\t\tif (localContract) {\n\t\t\tcontracts.push(localContract)\n\t\t}\n\n\t\treturn {\n\t\t\tcontracts,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static clearCache() {\n\t\tEventStore.contractCache = {}\n\t}\n\n\tprivate async fetchRemoteContracts(namespaces?: string[]) {\n\t\tconst key = namespaces?.join('|') ?? '_'\n\n\t\tif (!EventStore.contractCache[key]) {\n\t\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\t\tconst results = await client.emit('get-event-contracts::v2020_12_25', {\n\t\t\t\ttarget: {\n\t\t\t\t\tnamespaces,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tconst { contracts } = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\t\tEventStore.contractCache[key] = contracts\n\t\t}\n\n\t\treturn cloneDeep(EventStore.contractCache[key])\n\t}\n\n\tprivate filterOutLocalEventsFromRemoteContractsMutating(\n\t\tremoteContracts: EventContract[],\n\t\tlocalNamespace: string\n\t) {\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\n\t\tfor (const contract of remoteContracts) {\n\t\t\tconst sigs = eventContractUtil.getNamedEventSignatures(contract)\n\t\t\tfor (const sig of sigs) {\n\t\t\t\tif (sig.eventNamespace === ns) {\n\t\t\t\t\tdelete contract.eventSignatures[sig.fullyQualifiedEventName]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async loadLocalContract(\n\t\tlocalNamespace: string,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<EventContract | null> {\n\t\tconst localMatches = await globby(\n\t\t\tdiskUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\t'src',\n\t\t\t\t'events',\n\t\t\t\t'**/*.(builder|options).ts'\n\t\t\t)\n\t\t)\n\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\t\tconst eventSignatures: Record<string, EventSignature> = {}\n\t\tconst filesByFqenAndEventKey: {\n\t\t\tfqen: string\n\t\t\tisSchema: boolean\n\t\t\tmatch: string\n\t\t\teventKey: string\n\t\t}[] = []\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Importing ${localMatches.length} local event signature files...`\n\t\t)\n\n\t\tawait Promise.all(\n\t\t\tlocalMatches.map(async (match) => {\n\t\t\t\tlet fqen: string | undefined\n\t\t\t\tlet eventKey: keyof EventImport | undefined\n\n\t\t\t\ttry {\n\t\t\t\t\tconst { eventName, version } = eventDiskUtil.splitPathToEvent(match)\n\t\t\t\t\tfqen = eventNameUtil.join({\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\tversion,\n\t\t\t\t\t\teventNamespace: ns,\n\t\t\t\t\t})\n\n\t\t\t\t\tconst filename = pathUtil.basename(\n\t\t\t\t\t\tmatch\n\t\t\t\t\t) as keyof typeof eventFileNamesImportKeyMap\n\n\t\t\t\t\tconst map = eventFileNamesImportKeyMap[filename]\n\n\t\t\t\t\tif (map) {\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\teventKey = map.key\n\n\t\t\t\t\t\tfilesByFqenAndEventKey.push({\n\t\t\t\t\t\t\tfqen,\n\t\t\t\t\t\t\tisSchema: map.isSchema,\n\t\t\t\t\t\t\tmatch,\n\t\t\t\t\t\t\teventKey: eventKey as string,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen ?? 'Bad event name',\n\t\t\t\t\t\tbrokenProperty: eventKey ?? '*** major failure ***',\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\n\t\tconst matches = filesByFqenAndEventKey.map((o) => o.match)\n\t\tconst importsInOrder = (await this.Service('import').bulkImport(\n\t\t\tmatches\n\t\t)) as Record<string, any>[]\n\t\tconst importsByName: Record<string, EventImport> = {}\n\n\t\tfor (let idx = 0; idx < filesByFqenAndEventKey.length; idx++) {\n\t\t\tconst imported = importsInOrder[idx]\n\t\t\tconst { fqen, eventKey, isSchema } = filesByFqenAndEventKey[idx]\n\n\t\t\tif (isSchema) {\n\t\t\t\ttry {\n\t\t\t\t\tvalidateSchema(imported)\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen,\n\t\t\t\t\t\tbrokenProperty: eventKey,\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!importsByName[fqen]) {\n\t\t\t\timportsByName[fqen] = {}\n\t\t\t}\n\n\t\t\t//@ts-ignore\n\t\t\timportsByName[fqen][eventKey] = imported\n\t\t}\n\n\t\tObject.keys(importsByName).forEach((fqen) => {\n\t\t\tconst imported = importsByName[fqen]\n\t\t\tconst { eventName } = eventNameUtil.split(fqen)\n\t\t\teventSignatures[fqen] = {\n\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\teventName,\n\t\t\t\t\tpayloadSchema: imported.emitPayload,\n\t\t\t\t\ttargetSchema: imported.emitTarget,\n\t\t\t\t}),\n\t\t\t\tresponsePayloadSchema: imported.responsePayload,\n\t\t\t\temitPermissionContract: imported.emitPermissions,\n\t\t\t\tlistenPermissionContract: imported.listenPermissions,\n\t\t\t\t...imported.options,\n\t\t\t}\n\t\t})\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Loaded ${Object.keys(eventSignatures).length} local event signatures...`\n\t\t)\n\n\t\tif (Object.keys(eventSignatures).length > 0) {\n\t\t\tconst cleaned = eventContractCleanerUtil.cleanPayloadsAndPermissions({\n\t\t\t\teventSignatures,\n\t\t\t})\n\n\t\t\tvalidateEventContract(cleaned)\n\n\t\t\treturn cleaned\n\t\t}\n\n\t\treturn null\n\t}\n\n\tpublic async registerEventContract(options: {\n\t\teventContract: EventContract\n\t}) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('register-events::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tcontract: options.eventContract,\n\t\t\t},\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = {}\n\n\t\treturn results\n\t}\n\n\tpublic async unRegisterEvents(\n\t\toptions: SpruceSchemas.Mercury.v2020_12_25.UnregisterEventsEmitPayload\n\t) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('unregister-events::v2020_12_25', {\n\t\t\tpayload: options,\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = {}\n\t}\n}\n"],"file":"EventStore.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/event/stores/EventStore.ts"],"names":["eventFileNamesImportKeyMap","key","isSchema","EventStore","options","localNamespace","didUpdateHandler","namespaces","fetchRemoteContracts","contracts","loadLocalContract","localContract","filterOutLocalEventsFromRemoteContractsMutating","push","errors","join","contractCache","connectToApi","shouldAuthAsCurrentSkill","client","emit","target","results","eventResponseUtil","getFirstResponseOrThrow","remoteContracts","ns","namesUtil","toKebab","contract","sigs","eventContractUtil","getNamedEventSignatures","sig","eventNamespace","eventSignatures","fullyQualifiedEventName","localEventCache","diskUtil","resolvePath","cwd","localMatches","filesByFqenAndEventKey","length","Promise","all","map","match","eventDiskUtil","splitPathToEvent","eventName","version","fqen","eventNameUtil","filename","pathUtil","basename","eventKey","SpruceError","code","brokenProperty","originalError","matches","o","Service","bulkImport","importsInOrder","importsByName","idx","imported","Object","keys","forEach","split","emitPayloadSchema","payloadSchema","emitPayload","targetSchema","emitTarget","responsePayloadSchema","responsePayload","emitPermissionContract","emitPermissions","listenPermissionContract","listenPermissions","cleaned","eventContractCleanerUtil","cleanPayloadsAndPermissions","payload","eventContract","undefined","AbstractStore"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport {\n\tEventContract,\n\tEventSignature,\n\tPermissionContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { Schema, validateSchema } from '@sprucelabs/schema'\nimport {\n\teventResponseUtil,\n\teventDiskUtil,\n\teventNameUtil,\n\tbuildEmitTargetAndPayloadSchema,\n\teventContractUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { cloneDeep } from 'lodash'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport { InternalUpdateHandler } from '../../../types/cli.types'\nimport { eventContractCleanerUtil } from '../../../utilities/eventContractCleaner.utility'\n\nexport interface EventStoreFetchEventContractsResponse {\n\terrors: SpruceError[]\n\tcontracts: EventContract[]\n}\n\ntype Options = Omit<\n\tEventSignature,\n\t| 'responsePayloadSchema'\n\t| 'emitPayloadSchema'\n\t| 'listenPermissionContract'\n\t| 'emitPermissionContract'\n>\n\ninterface EventImport {\n\toptions?: Options\n\temitPayload?: Schema\n\temitTarget?: Schema\n\tresponsePayload?: Schema\n\temitPermissions?: PermissionContract\n\tlistenPermissions?: PermissionContract\n}\n\nconst eventFileNamesImportKeyMap = {\n\t'event.options.ts': { key: 'options', isSchema: false },\n\t'emitPayload.builder.ts': { key: 'emitPayload', isSchema: true },\n\t'emitTarget.builder.ts': { key: 'emitTarget', isSchema: true },\n\t'responsePayload.builder.ts': { key: 'responsePayload', isSchema: true },\n\t'emitPermissions.builder.ts': { key: 'emitPermissions', isSchema: false },\n\t'listenPermissions.builder.ts': { key: 'listenPermissions', isSchema: false },\n}\n\nexport default class EventStore extends AbstractStore {\n\tpublic name = 'event'\n\tprotected static contractCache: Record<string, any> = {}\n\tprivate static localEventCache?: SpruceSchemas.Mercury.v2020_12_25.EventContract\n\n\tpublic static clearCache() {\n\t\tEventStore.localEventCache = undefined\n\t\tEventStore.contractCache = {}\n\t}\n\n\tpublic async fetchEventContracts(options?: {\n\t\tlocalNamespace?: string\n\t\tnamespaces?: string[]\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t}): Promise<EventStoreFetchEventContractsResponse> {\n\t\tconst { localNamespace, didUpdateHandler, namespaces } = options ?? {}\n\n\t\tdidUpdateHandler?.('Pulling remote contracts...')\n\n\t\tconst contracts = await this.fetchRemoteContracts(namespaces)\n\n\t\tconst localContract =\n\t\t\tlocalNamespace &&\n\t\t\t(await this.loadLocalContract(localNamespace, didUpdateHandler))\n\n\t\tif (localNamespace) {\n\t\t\tthis.filterOutLocalEventsFromRemoteContractsMutating(\n\t\t\t\tcontracts,\n\t\t\t\tlocalNamespace\n\t\t\t)\n\t\t}\n\n\t\tif (localContract) {\n\t\t\tcontracts.push(localContract)\n\t\t}\n\n\t\treturn {\n\t\t\tcontracts,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tprivate async fetchRemoteContracts(namespaces?: string[]) {\n\t\tconst key = namespaces?.join('|') ?? '_'\n\n\t\tif (!EventStore.contractCache[key]) {\n\t\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\t\tconst results = await client.emit('get-event-contracts::v2020_12_25', {\n\t\t\t\ttarget: {\n\t\t\t\t\tnamespaces,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tconst { contracts } = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\t\tEventStore.contractCache[key] = contracts\n\t\t}\n\n\t\treturn cloneDeep(EventStore.contractCache[key])\n\t}\n\n\tprivate filterOutLocalEventsFromRemoteContractsMutating(\n\t\tremoteContracts: EventContract[],\n\t\tlocalNamespace: string\n\t) {\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\n\t\tfor (const contract of remoteContracts) {\n\t\t\tconst sigs = eventContractUtil.getNamedEventSignatures(contract)\n\t\t\tfor (const sig of sigs) {\n\t\t\t\tif (sig.eventNamespace === ns) {\n\t\t\t\t\tdelete contract.eventSignatures[sig.fullyQualifiedEventName]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async loadLocalContract(\n\t\tlocalNamespace: string,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<EventContract | null> {\n\t\tif (EventStore.localEventCache) {\n\t\t\treturn EventStore.localEventCache\n\t\t}\n\n\t\tconst localMatches = await globby(\n\t\t\tdiskUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\t'src',\n\t\t\t\t'events',\n\t\t\t\t'**/*.(builder|options).ts'\n\t\t\t)\n\t\t)\n\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\t\tconst eventSignatures: Record<string, EventSignature> = {}\n\t\tconst filesByFqenAndEventKey: {\n\t\t\tfqen: string\n\t\t\tisSchema: boolean\n\t\t\tmatch: string\n\t\t\teventKey: string\n\t\t}[] = []\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Importing ${localMatches.length} local event signature files...`\n\t\t)\n\n\t\tawait Promise.all(\n\t\t\tlocalMatches.map(async (match) => {\n\t\t\t\tlet fqen: string | undefined\n\t\t\t\tlet eventKey: keyof EventImport | undefined\n\n\t\t\t\ttry {\n\t\t\t\t\tconst { eventName, version } = eventDiskUtil.splitPathToEvent(match)\n\t\t\t\t\tfqen = eventNameUtil.join({\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\tversion,\n\t\t\t\t\t\teventNamespace: ns,\n\t\t\t\t\t})\n\n\t\t\t\t\tconst filename = pathUtil.basename(\n\t\t\t\t\t\tmatch\n\t\t\t\t\t) as keyof typeof eventFileNamesImportKeyMap\n\n\t\t\t\t\tconst map = eventFileNamesImportKeyMap[filename]\n\n\t\t\t\t\tif (map) {\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\teventKey = map.key\n\n\t\t\t\t\t\tfilesByFqenAndEventKey.push({\n\t\t\t\t\t\t\tfqen,\n\t\t\t\t\t\t\tisSchema: map.isSchema,\n\t\t\t\t\t\t\tmatch,\n\t\t\t\t\t\t\teventKey: eventKey as string,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen ?? 'Bad event name',\n\t\t\t\t\t\tbrokenProperty: eventKey ?? '*** major failure ***',\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\n\t\tconst matches = filesByFqenAndEventKey.map((o) => o.match)\n\t\tconst importsInOrder = (await this.Service('import').bulkImport(\n\t\t\tmatches\n\t\t)) as Record<string, any>[]\n\t\tconst importsByName: Record<string, EventImport> = {}\n\n\t\tfor (let idx = 0; idx < filesByFqenAndEventKey.length; idx++) {\n\t\t\tconst imported = importsInOrder[idx]\n\t\t\tconst { fqen, eventKey, isSchema } = filesByFqenAndEventKey[idx]\n\n\t\t\tif (isSchema) {\n\t\t\t\ttry {\n\t\t\t\t\tvalidateSchema(imported)\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen,\n\t\t\t\t\t\tbrokenProperty: eventKey,\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!importsByName[fqen]) {\n\t\t\t\timportsByName[fqen] = {}\n\t\t\t}\n\n\t\t\t//@ts-ignore\n\t\t\timportsByName[fqen][eventKey] = imported\n\t\t}\n\n\t\tObject.keys(importsByName).forEach((fqen) => {\n\t\t\tconst imported = importsByName[fqen]\n\t\t\tconst { eventName } = eventNameUtil.split(fqen)\n\t\t\teventSignatures[fqen] = {\n\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\teventName,\n\t\t\t\t\tpayloadSchema: imported.emitPayload,\n\t\t\t\t\ttargetSchema: imported.emitTarget,\n\t\t\t\t}),\n\t\t\t\tresponsePayloadSchema: imported.responsePayload,\n\t\t\t\temitPermissionContract: imported.emitPermissions,\n\t\t\t\tlistenPermissionContract: imported.listenPermissions,\n\t\t\t\t...imported.options,\n\t\t\t}\n\t\t})\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Loaded ${Object.keys(eventSignatures).length} local event signatures...`\n\t\t)\n\n\t\tif (Object.keys(eventSignatures).length > 0) {\n\t\t\tconst cleaned = eventContractCleanerUtil.cleanPayloadsAndPermissions({\n\t\t\t\teventSignatures,\n\t\t\t})\n\n\t\t\tvalidateEventContract(cleaned)\n\n\t\t\tEventStore.localEventCache = cleaned\n\n\t\t\treturn cleaned\n\t\t}\n\n\t\treturn null\n\t}\n\n\tpublic async registerEventContract(options: {\n\t\teventContract: EventContract\n\t}) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('register-events::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tcontract: options.eventContract,\n\t\t\t},\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = {}\n\n\t\treturn results\n\t}\n\n\tpublic async unRegisterEvents(\n\t\toptions: SpruceSchemas.Mercury.v2020_12_25.UnregisterEventsEmitPayload\n\t) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('unregister-events::v2020_12_25', {\n\t\t\tpayload: options,\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = {}\n\t}\n}\n"],"file":"EventStore.js"}
|
|
@@ -2,7 +2,7 @@ import { Schema, SchemaValues } from '@sprucelabs/schema';
|
|
|
2
2
|
import { SpruceSchemas } from '@sprucelabs/spruce-core-schemas';
|
|
3
3
|
import { FileDescription } from '../../types/cli.types';
|
|
4
4
|
import AbstractFeature, { FeatureDependency } from '../AbstractFeature';
|
|
5
|
-
import { FeatureCode } from '../features.types';
|
|
5
|
+
import { ActionOptions, FeatureCode } from '../features.types';
|
|
6
6
|
declare type OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptionsSchema;
|
|
7
7
|
declare type Options = SpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptions;
|
|
8
8
|
declare module '../../features/features.types' {
|
|
@@ -48,6 +48,7 @@ export default class NodeFeature<S extends OptionsSchema = OptionsSchema> extend
|
|
|
48
48
|
};
|
|
49
49
|
readonly fileDescriptions: FileDescription[];
|
|
50
50
|
actionsDir: string;
|
|
51
|
+
constructor(options: ActionOptions);
|
|
51
52
|
beforePackageInstall(options: Options): Promise<{
|
|
52
53
|
files: SpruceSchemas.SpruceCli.v2020_07_22.GeneratedFile[];
|
|
53
54
|
cwd: string;
|
|
@@ -54,16 +54,11 @@ var NodeFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
54
54
|
|
|
55
55
|
var _super = _createSuper(NodeFeature);
|
|
56
56
|
|
|
57
|
-
function NodeFeature() {
|
|
57
|
+
function NodeFeature(options) {
|
|
58
58
|
var _this;
|
|
59
59
|
|
|
60
60
|
(0, _classCallCheck2["default"])(this, NodeFeature);
|
|
61
|
-
|
|
62
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
63
|
-
args[_key] = arguments[_key];
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
61
|
+
_this = _super.call(this, options);
|
|
67
62
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "code", 'node');
|
|
68
63
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "nameReadable", 'nodejs support');
|
|
69
64
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "description", '');
|
|
@@ -87,17 +82,74 @@ var NodeFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
87
82
|
}
|
|
88
83
|
}, _callee);
|
|
89
84
|
})));
|
|
85
|
+
void _this.emitter.on('feature.did-execute', /*#__PURE__*/function () {
|
|
86
|
+
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(payload) {
|
|
87
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
88
|
+
while (1) {
|
|
89
|
+
switch (_context2.prev = _context2.next) {
|
|
90
|
+
case 0:
|
|
91
|
+
if (!(payload.featureCode === 'node' && payload.actionCode === 'upgrade')) {
|
|
92
|
+
_context2.next = 17;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
_context2.prev = 1;
|
|
97
|
+
|
|
98
|
+
_this.ui.startLoading('Cleaning build...');
|
|
99
|
+
|
|
100
|
+
_context2.next = 5;
|
|
101
|
+
return _this.Service('command').execute('yarn clean.build');
|
|
102
|
+
|
|
103
|
+
case 5:
|
|
104
|
+
_this.ui.startLoading('Applying lint rules to all files...');
|
|
105
|
+
|
|
106
|
+
_context2.next = 8;
|
|
107
|
+
return _this.Service('command').execute('yarn fix.lint');
|
|
108
|
+
|
|
109
|
+
case 8:
|
|
110
|
+
_this.ui.startLoading('Rebuilding...');
|
|
111
|
+
|
|
112
|
+
_context2.next = 11;
|
|
113
|
+
return _this.Service('command').execute('yarn build.dev');
|
|
114
|
+
|
|
115
|
+
case 11:
|
|
116
|
+
return _context2.abrupt("return", {
|
|
117
|
+
summaryLines: ['Build folder cleared.', 'Lint rules applied.', 'Rebuild Complete']
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
case 14:
|
|
121
|
+
_context2.prev = 14;
|
|
122
|
+
_context2.t0 = _context2["catch"](1);
|
|
123
|
+
return _context2.abrupt("return", {
|
|
124
|
+
errors: [_context2.t0]
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
case 17:
|
|
128
|
+
return _context2.abrupt("return", {});
|
|
129
|
+
|
|
130
|
+
case 18:
|
|
131
|
+
case "end":
|
|
132
|
+
return _context2.stop();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}, _callee2, null, [[1, 14]]);
|
|
136
|
+
}));
|
|
137
|
+
|
|
138
|
+
return function (_x) {
|
|
139
|
+
return _ref2.apply(this, arguments);
|
|
140
|
+
};
|
|
141
|
+
}());
|
|
90
142
|
return _this;
|
|
91
143
|
}
|
|
92
144
|
|
|
93
145
|
(0, _createClass2["default"])(NodeFeature, [{
|
|
94
146
|
key: "beforePackageInstall",
|
|
95
147
|
value: function () {
|
|
96
|
-
var _beforePackageInstall = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
148
|
+
var _beforePackageInstall = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(options) {
|
|
97
149
|
var destination, files, nodeWriter, written;
|
|
98
|
-
return _regenerator["default"].wrap(function
|
|
150
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
99
151
|
while (1) {
|
|
100
|
-
switch (
|
|
152
|
+
switch (_context3.prev = _context3.next) {
|
|
101
153
|
case 0:
|
|
102
154
|
destination = this.resolveDestination(options);
|
|
103
155
|
|
|
@@ -110,35 +162,35 @@ var NodeFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
110
162
|
path: _spruceSkillUtils.diskUtil.resolvePath(destination, 'package.json'),
|
|
111
163
|
action: 'generated'
|
|
112
164
|
}];
|
|
113
|
-
|
|
165
|
+
_context3.next = 5;
|
|
114
166
|
return this.Service('command', destination).execute('yarn init -y');
|
|
115
167
|
|
|
116
168
|
case 5:
|
|
117
169
|
nodeWriter = this.Writer('node');
|
|
118
|
-
|
|
170
|
+
_context3.next = 8;
|
|
119
171
|
return nodeWriter.writeNodeModule(destination);
|
|
120
172
|
|
|
121
173
|
case 8:
|
|
122
|
-
written =
|
|
174
|
+
written = _context3.sent;
|
|
123
175
|
files.push.apply(files, (0, _toConsumableArray2["default"])(written));
|
|
124
|
-
|
|
176
|
+
_context3.next = 12;
|
|
125
177
|
return this.installScripts(destination);
|
|
126
178
|
|
|
127
179
|
case 12:
|
|
128
|
-
return
|
|
180
|
+
return _context3.abrupt("return", {
|
|
129
181
|
files: files,
|
|
130
182
|
cwd: destination
|
|
131
183
|
});
|
|
132
184
|
|
|
133
185
|
case 13:
|
|
134
186
|
case "end":
|
|
135
|
-
return
|
|
187
|
+
return _context3.stop();
|
|
136
188
|
}
|
|
137
189
|
}
|
|
138
|
-
},
|
|
190
|
+
}, _callee3, this);
|
|
139
191
|
}));
|
|
140
192
|
|
|
141
|
-
function beforePackageInstall(
|
|
193
|
+
function beforePackageInstall(_x2) {
|
|
142
194
|
return _beforePackageInstall.apply(this, arguments);
|
|
143
195
|
}
|
|
144
196
|
|
|
@@ -154,11 +206,11 @@ var NodeFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
154
206
|
}, {
|
|
155
207
|
key: "afterPackageInstall",
|
|
156
208
|
value: function () {
|
|
157
|
-
var _afterPackageInstall = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
209
|
+
var _afterPackageInstall = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(options) {
|
|
158
210
|
var cwd, pkg;
|
|
159
|
-
return _regenerator["default"].wrap(function
|
|
211
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
160
212
|
while (1) {
|
|
161
|
-
switch (
|
|
213
|
+
switch (_context4.prev = _context4.next) {
|
|
162
214
|
case 0:
|
|
163
215
|
cwd = this.resolveDestination(options);
|
|
164
216
|
pkg = this.Service('pkg', cwd);
|
|
@@ -176,23 +228,23 @@ var NodeFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
176
228
|
});
|
|
177
229
|
pkg.unset('main');
|
|
178
230
|
pkg.unset('license');
|
|
179
|
-
|
|
231
|
+
_context4.next = 9;
|
|
180
232
|
return this.Store('skill', {
|
|
181
233
|
cwd: cwd
|
|
182
234
|
}).setCurrentSkillsNamespace(options.name);
|
|
183
235
|
|
|
184
236
|
case 9:
|
|
185
|
-
return
|
|
237
|
+
return _context4.abrupt("return", {});
|
|
186
238
|
|
|
187
239
|
case 10:
|
|
188
240
|
case "end":
|
|
189
|
-
return
|
|
241
|
+
return _context4.stop();
|
|
190
242
|
}
|
|
191
243
|
}
|
|
192
|
-
},
|
|
244
|
+
}, _callee4, this);
|
|
193
245
|
}));
|
|
194
246
|
|
|
195
|
-
function afterPackageInstall(
|
|
247
|
+
function afterPackageInstall(_x3) {
|
|
196
248
|
return _afterPackageInstall.apply(this, arguments);
|
|
197
249
|
}
|
|
198
250
|
|
|
@@ -201,27 +253,27 @@ var NodeFeature = /*#__PURE__*/function (_AbstractFeature) {
|
|
|
201
253
|
}, {
|
|
202
254
|
key: "installScripts",
|
|
203
255
|
value: function () {
|
|
204
|
-
var _installScripts = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
256
|
+
var _installScripts = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
205
257
|
var destination,
|
|
206
258
|
scriptUpdater,
|
|
207
|
-
|
|
208
|
-
return _regenerator["default"].wrap(function
|
|
259
|
+
_args5 = arguments;
|
|
260
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
209
261
|
while (1) {
|
|
210
|
-
switch (
|
|
262
|
+
switch (_context5.prev = _context5.next) {
|
|
211
263
|
case 0:
|
|
212
|
-
destination =
|
|
264
|
+
destination = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : this.cwd;
|
|
213
265
|
scriptUpdater = _ScriptUpdater["default"].FromFeature(this, {
|
|
214
266
|
cwd: destination
|
|
215
267
|
});
|
|
216
|
-
|
|
268
|
+
_context5.next = 4;
|
|
217
269
|
return scriptUpdater.update();
|
|
218
270
|
|
|
219
271
|
case 4:
|
|
220
272
|
case "end":
|
|
221
|
-
return
|
|
273
|
+
return _context5.stop();
|
|
222
274
|
}
|
|
223
275
|
}
|
|
224
|
-
},
|
|
276
|
+
}, _callee5, this);
|
|
225
277
|
}));
|
|
226
278
|
|
|
227
279
|
function installScripts() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/features/node/NodeFeature.ts"],"names":["NodeFeature","nodeFeatureOptionsSchema","universalDevDependencies","universalScripts","universalFileDescriptions","diskUtil","resolvePath","__dirname","doesFileExist","cwd","
|
|
1
|
+
{"version":3,"sources":["../../../src/features/node/NodeFeature.ts"],"names":["NodeFeature","options","nodeFeatureOptionsSchema","universalDevDependencies","universalScripts","universalFileDescriptions","diskUtil","resolvePath","__dirname","doesFileExist","cwd","emitter","on","payload","featureCode","actionCode","ui","startLoading","Service","execute","summaryLines","errors","destination","resolveDestination","doesDirExist","createDir","files","name","path","action","nodeWriter","Writer","writeNodeModule","written","push","installScripts","pkg","set","value","namesUtil","toKebab","description","unset","Store","setCurrentSkillsNamespace","scriptUpdater","ScriptUpdater","FromFeature","update","AbstractFeature"],"mappings":"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","sourcesContent":["import { Schema, SchemaValues } from '@sprucelabs/schema'\nimport { SpruceSchemas } from '@sprucelabs/spruce-core-schemas'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport nodeFeatureOptionsSchema from '#spruce/schemas/spruceCli/v2020_07_22/nodeFeatureOptions.schema'\nimport { FileDescription, GeneratedFile } from '../../types/cli.types'\nimport ScriptUpdater from '../../updaters/ScriptUpdater'\nimport AbstractFeature, { FeatureDependency } from '../AbstractFeature'\nimport { ActionOptions, FeatureCode } from '../features.types'\nimport universalDevDependencies from '../universalDevDependencies'\nimport universalFileDescriptions from '../universalFileDescriptions'\nimport universalScripts from '../universalScripts'\n\ntype OptionsSchema =\n\tSpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptions\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tnode: NodeFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tnode: SchemaValues<OptionsSchema>\n\t}\n}\n\nexport default class NodeFeature<\n\tS extends OptionsSchema = OptionsSchema\n> extends AbstractFeature<S> {\n\tpublic code: FeatureCode = 'node'\n\tpublic nameReadable = 'nodejs support'\n\tpublic description = ''\n\tpublic dependencies: FeatureDependency[] = []\n\tpublic optionsSchema = nodeFeatureOptionsSchema as S\n\tpublic packageDependencies = [...universalDevDependencies]\n\n\tpublic scripts = {\n\t\t...universalScripts,\n\t}\n\n\tpublic readonly fileDescriptions: FileDescription[] = [\n\t\t...universalFileDescriptions,\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic constructor(options: ActionOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on('feature.did-execute', async (payload) => {\n\t\t\tif (payload.featureCode === 'node' && payload.actionCode === 'upgrade') {\n\t\t\t\ttry {\n\t\t\t\t\tthis.ui.startLoading('Cleaning build...')\n\t\t\t\t\tawait this.Service('command').execute('yarn clean.build')\n\n\t\t\t\t\tthis.ui.startLoading('Applying lint rules to all files...')\n\t\t\t\t\tawait this.Service('command').execute('yarn fix.lint')\n\n\t\t\t\t\tthis.ui.startLoading('Rebuilding...')\n\t\t\t\t\tawait this.Service('command').execute('yarn build.dev')\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsummaryLines: [\n\t\t\t\t\t\t\t'Build folder cleared.',\n\t\t\t\t\t\t\t'Lint rules applied.',\n\t\t\t\t\t\t\t'Rebuild Complete',\n\t\t\t\t\t\t],\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\terrors: [err],\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\t}\n\n\tpublic async beforePackageInstall(options: Options) {\n\t\tconst destination = this.resolveDestination(options)\n\n\t\tif (!diskUtil.doesDirExist(destination)) {\n\t\t\tdiskUtil.createDir(destination)\n\t\t}\n\n\t\tconst files: GeneratedFile[] = [\n\t\t\t{\n\t\t\t\tname: 'package.json',\n\t\t\t\tpath: diskUtil.resolvePath(destination, 'package.json'),\n\t\t\t\taction: 'generated',\n\t\t\t},\n\t\t]\n\n\t\tawait this.Service('command', destination).execute('yarn init -y')\n\n\t\tconst nodeWriter = this.Writer('node')\n\t\tconst written = await nodeWriter.writeNodeModule(destination)\n\n\t\tfiles.push(...written)\n\n\t\tawait this.installScripts(destination)\n\n\t\treturn { files, cwd: destination }\n\t}\n\n\tprivate resolveDestination(options: Options) {\n\t\treturn diskUtil.resolvePath(this.cwd, options.destination ?? '')\n\t}\n\n\tpublic async afterPackageInstall(\n\t\toptions: S extends Schema ? SchemaValues<S> : undefined\n\t) {\n\t\tconst cwd = this.resolveDestination(options)\n\t\tconst pkg = this.Service('pkg', cwd)\n\n\t\tpkg.set({ path: 'name', value: namesUtil.toKebab(options.name) })\n\t\tpkg.set({ path: 'description', value: options.description })\n\t\tpkg.set({ path: 'version', value: '0.0.1' })\n\n\t\tpkg.unset('main')\n\t\tpkg.unset('license')\n\n\t\tawait this.Store('skill', { cwd }).setCurrentSkillsNamespace(options.name)\n\n\t\treturn {}\n\t}\n\n\tprivate async installScripts(destination = this.cwd) {\n\t\tconst scriptUpdater = ScriptUpdater.FromFeature(this, {\n\t\t\tcwd: destination,\n\t\t})\n\n\t\tawait scriptUpdater.update()\n\t}\n\n\tpublic isInstalled = async (): Promise<boolean> => {\n\t\treturn diskUtil.doesFileExist(\n\t\t\tdiskUtil.resolvePath(this.cwd, 'package.json')\n\t\t)\n\t}\n}\n"],"file":"NodeFeature.js"}
|