@sprucelabs/spruce-cli 19.1.2 → 19.1.3

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 (42) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/__tests__/behavioral/events/CreatingAnEvent.test.d.ts +0 -1
  3. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js +24 -59
  4. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
  5. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.d.ts +0 -1
  6. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +33 -83
  7. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  8. package/build/__tests__/behavioral/events/RegisteringEventsOnBoot.test.js +1 -9
  9. package/build/__tests__/behavioral/events/RegisteringEventsOnBoot.test.js.map +1 -1
  10. package/build/__tests__/implementation/EventStore.test.js +1 -1
  11. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  12. package/build/__tests__/implementation/ListenerStore.test.js +3 -4
  13. package/build/__tests__/implementation/ListenerStore.test.js.map +1 -1
  14. package/build/components/FormComponent.js +3 -3
  15. package/build/components/FormComponent.js.map +1 -1
  16. package/build/components/QuizComponent.js +3 -3
  17. package/build/components/QuizComponent.js.map +1 -1
  18. package/build/features/event/writers/EventWriter.js +0 -20
  19. package/build/features/event/writers/EventWriter.js.map +1 -1
  20. package/node_modules/@sprucelabs/globby/README.md +20 -0
  21. package/node_modules/@sprucelabs/globby/build/.spruce/settings.json +11 -0
  22. package/node_modules/@sprucelabs/globby/build/esm/globbyUtil.d.ts +7 -0
  23. package/node_modules/@sprucelabs/globby/build/esm/globbyUtil.js +28 -0
  24. package/node_modules/@sprucelabs/globby/build/esm/index.d.ts +2 -0
  25. package/node_modules/@sprucelabs/globby/build/esm/index.js +2 -0
  26. package/node_modules/@sprucelabs/globby/build/globbyUtil.d.ts +7 -0
  27. package/node_modules/@sprucelabs/globby/build/globbyUtil.js +22 -0
  28. package/node_modules/@sprucelabs/globby/build/index.d.ts +2 -0
  29. package/node_modules/@sprucelabs/globby/build/index.js +7 -0
  30. package/node_modules/@sprucelabs/globby/package.json +93 -0
  31. package/node_modules/@typescript-eslint/parser/package.json +5 -5
  32. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  33. package/node_modules/@typescript-eslint/types/package.json +2 -2
  34. package/node_modules/@typescript-eslint/typescript-estree/package.json +4 -4
  35. package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
  36. package/package.json +3 -3
  37. package/src/__tests__/behavioral/events/CreatingAnEvent.test.ts +0 -28
  38. package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +2 -61
  39. package/src/__tests__/behavioral/events/RegisteringEventsOnBoot.test.ts +0 -9
  40. package/src/__tests__/implementation/EventStore.test.ts +1 -1
  41. package/src/__tests__/implementation/ListenerStore.test.ts +0 -2
  42. package/src/features/event/writers/EventWriter.ts +0 -23
@@ -1 +1 @@
1
- {"version":3,"file":"FormComponent.js","names":["_error","_interopRequireDefault","require","_schema","_lodash","_SpruceError","_graphicsInterface","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","FormBuilderActionType","FormComponent","_SchemaEntity","_inherits2","_super","options","_this","_classCallCheck2","schema","initialValues","_assertThisInitialized2","ui","onWillAskQuestion","handlers","_createClass2","_present","_asyncToGenerator2","_regenerator","mark","_callee","headline","showOverview","_options$fields","fields","valid","action","fieldName","answer","namedFields","_iterator","_step","namedField","_name","_answer","values","cleanValues","_args","wrap","_callee$","_context","prev","undefined","getNamedFields","map","nf","renderHeadline","GraphicsTextEffect","SpruceHeader","renderLine","renderOverview","sent","t0","type","EditField","Done","askQuestion","set","abrupt","t1","finish","validate","t2","renderError","waitForEnter","getValues","shouldCreateEntityInstances","pick","stop","present","_this$getNamedFields$","field","find","Error","concat","schemaId","definition","get","shouldValidate","SpruceError","code","friendlyMessage","defaultValue","prompt","error","renderDivider","Red","Bold","AbstractSpruceError","renderWarning","message","_renderOverview","_callee2","_this2","_options$fields2","actionMap","choices","response","_args2","_callee2$","_context2","indexOf","actionKey","label","isRequired","SchemaEntity","exports"],"sources":["../../src/components/FormComponent.ts"],"sourcesContent":["import AbstractSpruceError from '@sprucelabs/error'\nimport SchemaEntity, {\n\tSchema,\n\tSchemaAllValues,\n\tSchemaPartialValues,\n\tSchemaFieldNames,\n\tSelectChoice,\n\tIFieldDefinition,\n} from '@sprucelabs/schema'\nimport { pick } from 'lodash'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { GraphicsTextEffect } from '../types/graphicsInterface.types'\n\nenum FormBuilderActionType {\n\tDone = 'done',\n\tCancel = 'cancel',\n\tEditField = 'edit_field',\n}\n\ninterface FormActionDone {\n\ttype: FormBuilderActionType.Done\n}\n\ninterface FormActionCancel {\n\ttype: FormBuilderActionType.Cancel\n}\n\ntype FormActionEditField<T extends Schema> = {\n\ttype: FormBuilderActionType.EditField\n\tfieldName: SchemaFieldNames<T>\n}\n\ntype FormAction<T extends Schema> =\n\t| FormActionDone\n\t| FormActionCancel\n\t| FormActionEditField<T>\n\nexport interface FormPresentationOptions<\n\tT extends Schema,\n\tF extends SchemaFieldNames<T> = SchemaFieldNames<T>\n> {\n\theadline?: string\n\tshowOverview?: boolean\n\tfields?: F[]\n}\n\nexport interface FormOptions<T extends Schema> {\n\tui: GraphicsInterface\n\tschema: T\n\tinitialValues?: SchemaPartialValues<T>\n\tonWillAskQuestion?: <K extends SchemaFieldNames<T>>(\n\t\tname: K,\n\t\tfieldDefinition: FieldDefinitions,\n\t\tvalues: SchemaPartialValues<T>\n\t) => FieldDefinitions\n}\n\ninterface Handlers<T extends Schema> {\n\tonWillAskQuestion?: FormOptions<T>['onWillAskQuestion']\n}\n\nexport default class FormComponent<S extends Schema> extends SchemaEntity<S> {\n\tpublic ui: GraphicsInterface\n\tpublic handlers: Handlers<S> = {}\n\n\tpublic constructor(options: FormOptions<S>) {\n\t\t// Setup schema\n\t\tsuper(options.schema, options.initialValues)\n\n\t\tconst { ui } = options\n\n\t\t// Save ui for writing, saving\n\t\tthis.ui = ui\n\n\t\t// Handlers\n\t\tconst { onWillAskQuestion } = options\n\t\tthis.handlers.onWillAskQuestion = onWillAskQuestion\n\t}\n\n\t/** Pass me a schema and i'll give you back an object that conforms to it based on user input */\n\tpublic async present<F extends SchemaFieldNames<S> = SchemaFieldNames<S>>(\n\t\toptions: FormPresentationOptions<S, F> = {}\n\t): Promise<Pick<SchemaAllValues<S>, F>> {\n\t\tconst { ui } = this\n\t\tconst {\n\t\t\theadline,\n\t\t\tshowOverview,\n\t\t\tfields = this.getNamedFields().map((nf) => nf.name),\n\t\t} = options\n\n\t\tlet done = false\n\t\tlet valid = false\n\n\t\tdo {\n\t\t\tif (headline) {\n\t\t\t\tui.renderHeadline(headline, [GraphicsTextEffect.SpruceHeader])\n\t\t\t\tui.renderLine('')\n\t\t\t}\n\n\t\t\tif (showOverview) {\n\t\t\t\t// Overview mode\n\t\t\t\tconst action = await this.renderOverview({ fields })\n\n\t\t\t\tswitch (action.type) {\n\t\t\t\t\tcase FormBuilderActionType.EditField: {\n\t\t\t\t\t\t// Editing a field\n\t\t\t\t\t\tconst fieldName = action.fieldName\n\t\t\t\t\t\tconst answer = await this.askQuestion(fieldName)\n\n\t\t\t\t\t\t// Set the new value\n\t\t\t\t\t\tthis.set(fieldName, answer)\n\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase FormBuilderActionType.Done: {\n\t\t\t\t\t\tdone = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Asking one question at a time\n\t\t\t\tconst namedFields = this.getNamedFields({ fields })\n\n\t\t\t\tfor (const namedField of namedFields) {\n\t\t\t\t\tconst { name } = namedField\n\t\t\t\t\tconst answer = await this.askQuestion(name)\n\n\t\t\t\t\tthis.set(name, answer)\n\t\t\t\t}\n\n\t\t\t\tdone = true\n\t\t\t}\n\n\t\t\tif (done) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.validate({ fields })\n\t\t\t\t\tvalid = true\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthis.renderError(err)\n\n\t\t\t\t\tawait this.ui.waitForEnter()\n\t\t\t\t}\n\t\t\t}\n\t\t} while (!done || !valid)\n\n\t\tconst values = this.getValues({\n\t\t\tfields,\n\t\t\tshouldCreateEntityInstances: false,\n\t\t})\n\t\tconst cleanValues = pick(values, fields) as Pick<SchemaAllValues<S>, F>\n\n\t\treturn cleanValues\n\t}\n\n\t/** Ask a question based on a field */\n\tpublic askQuestion<F extends SchemaFieldNames<S>>(fieldName: F) {\n\t\tconst field = this.getNamedFields().find(\n\t\t\t(nf) => nf.name === fieldName\n\t\t)?.field\n\n\t\tif (!field) {\n\t\t\tthrow new Error(`No field named ${fieldName} on form ${this.schemaId}`)\n\t\t}\n\n\t\tlet definition = { ...field.definition }\n\t\tconst value = this.get(fieldName, {\n\t\t\tshouldValidate: false,\n\t\t\tshouldCreateEntityInstances: false,\n\t\t})\n\t\tif (definition.isArray) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'NOT_IMPLEMENTED',\n\t\t\t\tfriendlyMessage: 'Form builder does not support isArray yet',\n\t\t\t})\n\t\t}\n\n\t\tif (value) {\n\t\t\tdefinition.defaultValue = value as IFieldDefinition['defaultValue']\n\t\t}\n\n\t\tif (this.handlers.onWillAskQuestion) {\n\t\t\tdefinition = this.handlers.onWillAskQuestion(\n\t\t\t\tfieldName,\n\t\t\t\t//@ts-ignore\n\t\t\t\tdefinition,\n\t\t\t\tthis.getValues({\n\t\t\t\t\tshouldValidate: false,\n\t\t\t\t\tshouldCreateEntityInstances: false,\n\t\t\t\t}) as unknown as SchemaPartialValues<S>\n\t\t\t)\n\t\t}\n\n\t\treturn this.ui.prompt(definition)\n\t}\n\n\tpublic renderError(error: Error) {\n\t\tthis.ui.renderDivider()\n\t\tthis.ui.renderHeadline('Please fix the following...', [\n\t\t\tGraphicsTextEffect.Red,\n\t\t\tGraphicsTextEffect.Bold,\n\t\t])\n\n\t\tthis.ui.renderLine('')\n\n\t\tif (error instanceof AbstractSpruceError) {\n\t\t\tthis.ui.renderWarning(error.friendlyMessage())\n\t\t} else {\n\t\t\tthis.ui.renderWarning(`Unexpected error ${error.message}`)\n\t\t}\n\n\t\tthis.ui.renderLine('')\n\t}\n\n\tpublic async renderOverview<F extends SchemaFieldNames<S>>(\n\t\toptions: { fields?: F[] } = {}\n\t): Promise<FormAction<S>> {\n\t\tconst { ui } = this\n\t\tconst { fields = this.getNamedFields().map((nf) => nf.name) } = options\n\n\t\tconst actionMap: Record<string, FormAction<S>> = {}\n\n\t\tconst choices: SelectChoice[] = this.getNamedFields()\n\t\t\t.filter((namedField) => fields.indexOf(namedField.name) > -1)\n\t\t\t.map((namedField) => {\n\t\t\t\tconst { field, name } = namedField\n\n\t\t\t\tconst actionKey = `field:${name}`\n\t\t\t\tconst action: FormActionEditField<S> = {\n\t\t\t\t\ttype: FormBuilderActionType.EditField,\n\t\t\t\t\tfieldName: name,\n\t\t\t\t}\n\n\t\t\t\tactionMap[actionKey] = action\n\n\t\t\t\tconst value = this.get(name, { shouldValidate: false })\n\n\t\t\t\treturn {\n\t\t\t\t\tvalue: actionKey,\n\t\t\t\t\tlabel: `${field.label}: ${value ? value : '***missing***'}`,\n\t\t\t\t}\n\t\t\t})\n\n\t\tactionMap['done'] = {\n\t\t\ttype: FormBuilderActionType.Done,\n\t\t}\n\n\t\tchoices.push({\n\t\t\tvalue: 'done',\n\t\t\tlabel: 'Done',\n\t\t})\n\n\t\tconst response = await ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tisRequired: true,\n\t\t\tlabel: 'Select any field to edit',\n\t\t\toptions: {\n\t\t\t\tchoices,\n\t\t\t},\n\t\t})\n\n\t\tconst action = actionMap[response]\n\t\treturn action\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"FormComponent.js","names":["_error","_interopRequireDefault","require","_schema","_lodash","_SpruceError","_graphicsInterface","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","FormBuilderActionType","FormComponent","_SchemaEntity","_inherits2","_super","options","_this","_classCallCheck2","schema","initialValues","_assertThisInitialized2","ui","onWillAskQuestion","handlers","_createClass2","_present","_asyncToGenerator2","_regenerator","mark","_callee","headline","showOverview","_options$fields","fields","valid","action","fieldName","answer","namedFields","_iterator","_step","namedField","_name","_answer","values","cleanValues","_args","wrap","_callee$","_context","prev","undefined","getNamedFields","map","nf","renderHeadline","GraphicsTextEffect","SpruceHeader","renderLine","renderOverview","sent","t0","type","EditField","Done","askQuestion","set","abrupt","t1","finish","validate","t2","renderError","waitForEnter","getValues","shouldCreateEntityInstances","pick","stop","present","_this$getNamedFields$","field","find","Error","concat","schemaId","definition","get","shouldValidate","SpruceError","code","friendlyMessage","defaultValue","prompt","error","renderDivider","Red","Bold","AbstractSpruceError","renderWarning","message","_renderOverview","_callee2","_this2","_options$fields2","actionMap","choices","response","_args2","_callee2$","_context2","indexOf","actionKey","label","isRequired","SchemaEntity","exports"],"sources":["../../src/components/FormComponent.ts"],"sourcesContent":["import AbstractSpruceError from '@sprucelabs/error'\nimport SchemaEntity, {\n\tSchema,\n\tSchemaAllValues,\n\tSchemaPartialValues,\n\tSchemaFieldNames,\n\tSelectChoice,\n\tIFieldDefinition,\n} from '@sprucelabs/schema'\nimport { pick } from 'lodash'\nimport { FieldDefinitions } from '#spruce/schemas/fields/fields.types'\nimport SpruceError from '../errors/SpruceError'\nimport { GraphicsInterface } from '../types/cli.types'\nimport { GraphicsTextEffect } from '../types/graphicsInterface.types'\n\nenum FormBuilderActionType {\n\tDone = 'done',\n\tCancel = 'cancel',\n\tEditField = 'edit_field',\n}\n\ninterface FormActionDone {\n\ttype: FormBuilderActionType.Done\n}\n\ninterface FormActionCancel {\n\ttype: FormBuilderActionType.Cancel\n}\n\ntype FormActionEditField<T extends Schema> = {\n\ttype: FormBuilderActionType.EditField\n\tfieldName: SchemaFieldNames<T>\n}\n\ntype FormAction<T extends Schema> =\n\t| FormActionDone\n\t| FormActionCancel\n\t| FormActionEditField<T>\n\nexport interface FormPresentationOptions<\n\tT extends Schema,\n\tF extends SchemaFieldNames<T> = SchemaFieldNames<T>\n> {\n\theadline?: string\n\tshowOverview?: boolean\n\tfields?: F[]\n}\n\nexport interface FormOptions<T extends Schema> {\n\tui: GraphicsInterface\n\tschema: T\n\tinitialValues?: SchemaPartialValues<T>\n\tonWillAskQuestion?: <K extends SchemaFieldNames<T>>(\n\t\tname: K,\n\t\tfieldDefinition: FieldDefinitions,\n\t\tvalues: SchemaPartialValues<T>\n\t) => FieldDefinitions\n}\n\ninterface Handlers<T extends Schema> {\n\tonWillAskQuestion?: FormOptions<T>['onWillAskQuestion']\n}\n\nexport default class FormComponent<S extends Schema> extends SchemaEntity<S> {\n\tpublic ui: GraphicsInterface\n\tpublic handlers: Handlers<S> = {}\n\n\tpublic constructor(options: FormOptions<S>) {\n\t\t// Setup schema\n\t\tsuper(options.schema, options.initialValues)\n\n\t\tconst { ui } = options\n\n\t\t// Save ui for writing, saving\n\t\tthis.ui = ui\n\n\t\t// Handlers\n\t\tconst { onWillAskQuestion } = options\n\t\tthis.handlers.onWillAskQuestion = onWillAskQuestion\n\t}\n\n\t/** Pass me a schema and i'll give you back an object that conforms to it based on user input */\n\tpublic async present<F extends SchemaFieldNames<S> = SchemaFieldNames<S>>(\n\t\toptions: FormPresentationOptions<S, F> = {}\n\t): Promise<Pick<SchemaAllValues<S>, F>> {\n\t\tconst { ui } = this\n\t\tconst {\n\t\t\theadline,\n\t\t\tshowOverview,\n\t\t\tfields = this.getNamedFields().map((nf) => nf.name),\n\t\t} = options\n\n\t\tlet done = false\n\t\tlet valid = false\n\n\t\tdo {\n\t\t\tif (headline) {\n\t\t\t\tui.renderHeadline(headline, [GraphicsTextEffect.SpruceHeader])\n\t\t\t\tui.renderLine('')\n\t\t\t}\n\n\t\t\tif (showOverview) {\n\t\t\t\t// Overview mode\n\t\t\t\tconst action = await this.renderOverview({ fields })\n\n\t\t\t\tswitch (action.type) {\n\t\t\t\t\tcase FormBuilderActionType.EditField: {\n\t\t\t\t\t\t// Editing a field\n\t\t\t\t\t\tconst fieldName = action.fieldName\n\t\t\t\t\t\tconst answer = await this.askQuestion(fieldName)\n\n\t\t\t\t\t\t// Set the new value\n\t\t\t\t\t\tthis.set(fieldName, answer)\n\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase FormBuilderActionType.Done: {\n\t\t\t\t\t\tdone = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Asking one question at a time\n\t\t\t\tconst namedFields = this.getNamedFields({ fields })\n\n\t\t\t\tfor (const namedField of namedFields) {\n\t\t\t\t\tconst { name } = namedField\n\t\t\t\t\tconst answer = await this.askQuestion(name)\n\n\t\t\t\t\tthis.set(name, answer)\n\t\t\t\t}\n\n\t\t\t\tdone = true\n\t\t\t}\n\n\t\t\tif (done) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.validate({ fields })\n\t\t\t\t\tvalid = true\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthis.renderError(err)\n\n\t\t\t\t\tawait this.ui.waitForEnter()\n\t\t\t\t}\n\t\t\t}\n\t\t} while (!done || !valid)\n\n\t\tconst values = this.getValues({\n\t\t\tfields,\n\t\t\tshouldCreateEntityInstances: false,\n\t\t})\n\t\tconst cleanValues = pick(values, fields) as Pick<SchemaAllValues<S>, F>\n\n\t\treturn cleanValues\n\t}\n\n\t/** Ask a question based on a field */\n\tpublic askQuestion<F extends SchemaFieldNames<S>>(fieldName: F) {\n\t\tconst field = this.getNamedFields().find(\n\t\t\t(nf) => nf.name === fieldName\n\t\t)?.field\n\n\t\tif (!field) {\n\t\t\tthrow new Error(`No field named ${fieldName} on form ${this.schemaId}`)\n\t\t}\n\n\t\tlet definition = { ...field.definition }\n\t\tconst value = this.get(fieldName, {\n\t\t\tshouldValidate: false,\n\t\t\tshouldCreateEntityInstances: false,\n\t\t})\n\t\tif (definition.isArray) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'NOT_IMPLEMENTED',\n\t\t\t\tfriendlyMessage: 'Form builder does not support isArray yet',\n\t\t\t})\n\t\t}\n\n\t\tif (value) {\n\t\t\tdefinition.defaultValue = value as IFieldDefinition['defaultValue']\n\t\t}\n\n\t\tif (this.handlers.onWillAskQuestion) {\n\t\t\tdefinition = this.handlers.onWillAskQuestion(\n\t\t\t\tfieldName,\n\t\t\t\t//@ts-ignore\n\t\t\t\tdefinition,\n\t\t\t\tthis.getValues({\n\t\t\t\t\tshouldValidate: false,\n\t\t\t\t\tshouldCreateEntityInstances: false,\n\t\t\t\t}) as unknown as SchemaPartialValues<S>\n\t\t\t)\n\t\t}\n\n\t\treturn this.ui.prompt(definition)\n\t}\n\n\tpublic renderError(error: Error) {\n\t\tthis.ui.renderDivider()\n\t\tthis.ui.renderHeadline('Please fix the following...', [\n\t\t\tGraphicsTextEffect.Red,\n\t\t\tGraphicsTextEffect.Bold,\n\t\t])\n\n\t\tthis.ui.renderLine('')\n\n\t\tif (error instanceof AbstractSpruceError) {\n\t\t\tthis.ui.renderWarning(error.friendlyMessage())\n\t\t} else {\n\t\t\tthis.ui.renderWarning(`Unexpected error ${error.message}`)\n\t\t}\n\n\t\tthis.ui.renderLine('')\n\t}\n\n\tpublic async renderOverview<F extends SchemaFieldNames<S>>(\n\t\toptions: { fields?: F[] } = {}\n\t): Promise<FormAction<S>> {\n\t\tconst { ui } = this\n\t\tconst { fields = this.getNamedFields().map((nf) => nf.name) } = options\n\n\t\tconst actionMap: Record<string, FormAction<S>> = {}\n\n\t\tconst choices: SelectChoice[] = this.getNamedFields()\n\t\t\t.filter((namedField) => fields.indexOf(namedField.name) > -1)\n\t\t\t.map((namedField) => {\n\t\t\t\tconst { field, name } = namedField\n\n\t\t\t\tconst actionKey = `field:${name}`\n\t\t\t\tconst action: FormActionEditField<S> = {\n\t\t\t\t\ttype: FormBuilderActionType.EditField,\n\t\t\t\t\tfieldName: name,\n\t\t\t\t}\n\n\t\t\t\tactionMap[actionKey] = action\n\n\t\t\t\tconst value = this.get(name, { shouldValidate: false })\n\n\t\t\t\treturn {\n\t\t\t\t\tvalue: actionKey,\n\t\t\t\t\tlabel: `${field.label}: ${value ? value : '***missing***'}`,\n\t\t\t\t}\n\t\t\t})\n\n\t\tactionMap['done'] = {\n\t\t\ttype: FormBuilderActionType.Done,\n\t\t}\n\n\t\tchoices.push({\n\t\t\tvalue: 'done',\n\t\t\tlabel: 'Done',\n\t\t})\n\n\t\tconst response = await ui.prompt({\n\t\t\ttype: 'select',\n\t\t\tisRequired: true,\n\t\t\tlabel: 'Select any field to edit',\n\t\t\toptions: {\n\t\t\t\tchoices,\n\t\t\t},\n\t\t})\n\n\t\tconst action = actionMap[response]\n\t\treturn action\n\t}\n}\n"],"mappings":"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"}
@@ -17,11 +17,11 @@ var _lodash = require("lodash");
17
17
  var _FormComponent = _interopRequireDefault(require("./FormComponent"));
18
18
  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; }
19
19
  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; }
20
- var AnswerValidity;
21
- (function (AnswerValidity) {
20
+ var AnswerValidity = /*#__PURE__*/function (AnswerValidity) {
22
21
  AnswerValidity["Correct"] = "correct";
23
22
  AnswerValidity["Incorrect"] = "incorrect";
24
- })(AnswerValidity || (AnswerValidity = {}));
23
+ return AnswerValidity;
24
+ }(AnswerValidity || {});
25
25
  var QuizComponent = /*#__PURE__*/function () {
26
26
  function QuizComponent(options) {
27
27
  var _options$randomizeQue;
@@ -1 +1 @@
1
- {"version":3,"file":"QuizComponent.js","names":["_schema","require","_chalk","_interopRequireDefault","_lodash","_FormComponent","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","AnswerValidity","QuizComponent","options","_options$randomizeQue","_classCallCheck2","definition","buildSchemaFromQuestions","questions","originalQuestions","formBuilder","FormComponent","schema","term","ui","randomizeQuestions","_createClass2","value","_present","_asyncToGenerator2","_regenerator","mark","_callee","_this","_options$questions","_options$randomizeQue2","startTime","fields","results","answers","answerValidities","totalQuestions","totalCorrect","questionNames","totalWrong","endTime","_args","wrap","_callee$","_context","prev","next","undefined","getNamedFields","map","nf","name","Date","getTime","shuffle","present","sent","questionName","fieldName","answer","_answer$split","split","_answer$split2","_slicedToArray2","validity","idx","_ref","find","namedField","field","Error","fieldDefinition","type","parseInt","Correct","Incorrect","lastResults","percentCorrect","time","startTimeMs","endTimeMs","totalTimeSec","toFixed","abrupt","stop","_scorecard","_callee2","_this2","headline","_options$results","testResults","_args2","_callee2$","_context2","SchemaError","code","parameters","clear","renderHero","questionFieldName","isCorrect","guessedAnswer","concat","correctAnswer","originalQuestion","objectKey","label","chalk","bgGreenBright","black","bgRedBright","strikethrough","renderObject","renderLine","renderHeadline","waitForEnter","scorecard","question","choices","id","exports"],"sources":["../../src/components/QuizComponent.ts"],"sourcesContent":["import {\n\tSchema,\n\tSchemaFieldsByName,\n\tSchemaFieldNames,\n\tSchemaError,\n} from '@sprucelabs/schema'\nimport chalk from 'chalk'\nimport { shuffle } from 'lodash'\nimport { GraphicsInterface } from '../types/cli.types'\nimport FormComponent, {\n\tFormOptions,\n\tFormPresentationOptions,\n} from './FormComponent'\n\ninterface QuizMultipleChoiceQuestion {\n\ttype: 'select'\n\tquestion: string\n\tanswers: string[]\n}\n\ninterface QuizTextQuestion {\n\ttype: 'text'\n\tquestion: string\n\tanswer: string\n}\n\ninterface QuizQuestions {\n\t[key: string]: QuizMultipleChoiceQuestion | QuizTextQuestion\n}\n\nenum AnswerValidity {\n\tCorrect = 'correct',\n\tIncorrect = 'incorrect',\n}\n\ninterface QuizPresentationOptions<T extends Schema, Q extends QuizQuestions>\n\textends Omit<FormPresentationOptions<T>, 'fields'> {\n\tquestions?: QuizAnswerFieldNames<Q>[]\n\trandomizeQuestions?: boolean\n}\n\ntype QuizAnswerFieldNames<Q extends QuizQuestions> = Extract<keyof Q, string>\n\ntype QuizAnswers<Q extends QuizQuestions> = {\n\t[K in QuizAnswerFieldNames<Q>]: string\n}\n\ntype QuizAnswerValidities<Q extends QuizQuestions> = {\n\t[K in QuizAnswerFieldNames<Q>]: AnswerValidity\n}\n\ntype QuizPresentationResults<Q extends QuizQuestions> = {\n\t/** The answers that were given */\n\tanswers: QuizAnswers<Q>\n\n\t/** The answers right or wrong */\n\tanswerValidities: QuizAnswerValidities<Q>\n\n\t/** The percent of correct answers given */\n\tpercentCorrect: number\n\n\t/** How long it took them to take the quiz in ms */\n\ttime: {\n\t\tstartTimeMs: number\n\t\tendTimeMs: number\n\t\ttotalTimeSec: number\n\t}\n\n\t/** How many were correct */\n\ttotalCorrect: number\n\n\t/** How many were wrong */\n\ttotalWrong: number\n\n\t/** How many questions we ended up taking */\n\ttotalQuestions: number\n}\n\ninterface QuizOptions<T extends Schema, Q extends QuizQuestions>\n\textends Omit<FormOptions<T>, 'schema'> {\n\t/** Should we randomize the questions */\n\trandomizeQuestions?: boolean\n\t/** The questions we are asking */\n\tquestions: Q\n}\n\nexport default class QuizComponent<T extends Schema, Q extends QuizQuestions> {\n\tpublic formBuilder: FormComponent<T>\n\tpublic term: GraphicsInterface\n\tpublic randomizeQuestions = true\n\tpublic originalQuestions: QuizQuestions\n\tpublic lastResults?: QuizPresentationResults<Q>\n\n\tpublic constructor(options: QuizOptions<T, Q>) {\n\t\t// We're going to build a schema from the questions and pass that to the form builder\n\t\tconst definition = this.buildSchemaFromQuestions(options.questions)\n\n\t\t// Track questions for later reference\n\t\tthis.originalQuestions = options.questions\n\n\t\t// Construct new form builder\n\t\tthis.formBuilder = new FormComponent<T>({\n\t\t\t...options,\n\t\t\tschema: definition,\n\t\t})\n\n\t\t// Set state locally\n\t\tthis.term = options.ui\n\t\tthis.randomizeQuestions = options.randomizeQuestions ?? true\n\t}\n\n\t/** Present the quiz */\n\tpublic async present(\n\t\toptions: QuizPresentationOptions<T, Q> = {}\n\t): Promise<QuizPresentationResults<Q>> {\n\t\tconst {\n\t\t\tquestions = this.formBuilder\n\t\t\t\t.getNamedFields()\n\t\t\t\t.map((nf) => nf.name) as QuizAnswerFieldNames<Q>[],\n\t\t\trandomizeQuestions = this.randomizeQuestions,\n\t\t} = options\n\n\t\tconst startTime = new Date().getTime()\n\n\t\t// Pull out answers\n\t\tconst fields = randomizeQuestions ? shuffle(questions) : questions\n\n\t\t// Ask for the answers\n\t\tconst results = await this.formBuilder.present({\n\t\t\t...options,\n\t\t\tfields: fields as SchemaFieldNames<T>[],\n\t\t})\n\n\t\t// Generate stats\n\t\tconst answers: Partial<QuizAnswers<Q>> = {}\n\t\tconst answerValidities: Partial<QuizAnswerValidities<Q>> = {}\n\n\t\tconst totalQuestions = questions.length\n\t\tlet totalCorrect = 0\n\n\t\tconst questionNames = Object.keys(results) as QuizAnswerFieldNames<Q>[]\n\n\t\tquestionNames.forEach((questionName) => {\n\t\t\tconst fieldName = questionName as SchemaFieldNames<T>\n\t\t\tconst answer = (results[fieldName] as string) || ''\n\t\t\tconst [validity, idx] = answer.split('-')\n\n\t\t\t// Get the field to tell type\n\t\t\tconst { field } =\n\t\t\t\tthis.formBuilder\n\t\t\t\t\t.getNamedFields()\n\t\t\t\t\t.find((namedField) => namedField.name === fieldName) || {}\n\n\t\t\tif (!field) {\n\t\t\t\tthrow new Error('Field issue in QuizComponent')\n\t\t\t}\n\n\t\t\tconst fieldDefinition = field.definition\n\n\t\t\tswitch (fieldDefinition.type) {\n\t\t\t\tcase 'select':\n\t\t\t\t\t// Pull the original multiple choice, we can cast it as multiple choice\n\t\t\t\t\t// question with confidence\n\t\t\t\t\tanswers[questionName] = (\n\t\t\t\t\t\tthis.originalQuestions[questionName] as QuizMultipleChoiceQuestion\n\t\t\t\t\t).answers[parseInt(idx)]\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\t// @ts-ignore TODO proper questions to schema should fix this because we only support a few fields\n\t\t\t\t\tanswers[questionName] = results[fieldName]\n\t\t\t}\n\n\t\t\t// Track validity\n\t\t\tif (validity === AnswerValidity.Correct) {\n\t\t\t\ttotalCorrect = totalCorrect + 1\n\t\t\t\tanswerValidities[questionName] = AnswerValidity.Correct\n\t\t\t} else {\n\t\t\t\tanswerValidities[questionName] = AnswerValidity.Incorrect\n\t\t\t}\n\t\t}, 0)\n\n\t\tconst totalWrong = totalQuestions - totalCorrect\n\n\t\t// Track time\n\t\tconst endTime = new Date().getTime()\n\n\t\tthis.lastResults = {\n\t\t\tpercentCorrect: totalCorrect / totalQuestions,\n\t\t\ttotalCorrect,\n\t\t\ttotalWrong,\n\t\t\tanswerValidities: answerValidities as QuizAnswerValidities<Q>,\n\t\t\tanswers: answers as QuizAnswers<Q>,\n\t\t\ttotalQuestions,\n\t\t\ttime: {\n\t\t\t\tstartTimeMs: startTime,\n\t\t\t\tendTimeMs: endTime,\n\t\t\t\ttotalTimeSec: +((endTime - startTime) / 1000).toFixed(1),\n\t\t\t},\n\t\t}\n\n\t\treturn this.lastResults\n\t}\n\n\tpublic async scorecard(\n\t\toptions: {\n\t\t\tresults?: QuizPresentationResults<Q>\n\t\t\theadline?: string\n\t\t} = {}\n\t) {\n\t\tconst { headline, results = this.lastResults } = options\n\t\tconst { term } = this\n\n\t\tif (!results) {\n\t\t\tthrow new SchemaError({\n\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\tparameters: [],\n\t\t\t})\n\t\t}\n\n\t\tterm.clear()\n\t\tterm.renderHero(headline ?? 'Quiz results!')\n\n\t\tconst testResults: Record<string, string> = {}\n\n\t\tthis.formBuilder.getNamedFields().forEach((namedField) => {\n\t\t\tconst { name, field } = namedField\n\t\t\tconst questionFieldName = name as QuizAnswerFieldNames<Q>\n\n\t\t\t// Get results\n\t\t\tconst isCorrect =\n\t\t\t\tresults.answerValidities[questionFieldName] === AnswerValidity.Correct\n\t\t\tconst guessedAnswer = `${results.answers[questionFieldName]}`\n\n\t\t\t// Build the real answer\n\t\t\tlet correctAnswer = ''\n\n\t\t\tconst originalQuestion = this.originalQuestions[questionFieldName]\n\n\t\t\tswitch (originalQuestion.type) {\n\t\t\t\tcase 'select':\n\t\t\t\t\tcorrectAnswer = originalQuestion.answers[0]\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\t// All options just pass through the answer tied to the question during instantiation\n\t\t\t\t\tcorrectAnswer = originalQuestion.answer\n\t\t\t}\n\n\t\t\tconst objectKey = field.label || '**missing'\n\n\t\t\tif (isCorrect) {\n\t\t\t\ttestResults[objectKey] = `${chalk.bgGreenBright.black(\n\t\t\t\t\t'Correct!'\n\t\t\t\t)} ${guessedAnswer} `\n\t\t\t} else {\n\t\t\t\ttestResults[objectKey] = `${chalk.bgRedBright.black(\n\t\t\t\t\t'Wrong!'\n\t\t\t\t)} ${chalk.strikethrough(guessedAnswer)} -> ${correctAnswer}`\n\t\t\t}\n\t\t})\n\n\t\tterm.renderObject(testResults)\n\n\t\tterm.renderLine(`# questions: ${results.totalQuestions}`)\n\t\tterm.renderLine(`# correct: ${results.totalCorrect}`)\n\n\t\tterm.renderHeadline(\n\t\t\t`Your score: ${(results.percentCorrect * 100).toFixed(1)}%`\n\t\t)\n\n\t\tawait term.waitForEnter()\n\t}\n\n\t/** Takes questions and builds a schema */\n\tprivate buildSchemaFromQuestions(questions: QuizQuestions): T {\n\t\t// TODO change SchemaFields to something based on schema generated from questions\n\t\tconst fields: SchemaFieldsByName = {}\n\n\t\tObject.keys(questions).forEach((fieldName) => {\n\t\t\tconst question = questions[fieldName]\n\n\t\t\tswitch (question.type) {\n\t\t\t\tcase 'select':\n\t\t\t\t\tfields[fieldName] = {\n\t\t\t\t\t\ttype: question.type,\n\t\t\t\t\t\tlabel: question.question,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tchoices: shuffle(\n\t\t\t\t\t\t\t\tquestion.answers.map((question, idx) => ({\n\t\t\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\t\t\tidx === 0\n\t\t\t\t\t\t\t\t\t\t\t? `${AnswerValidity.Correct}-${idx}`\n\t\t\t\t\t\t\t\t\t\t\t: `${AnswerValidity.Incorrect}-${idx}`,\n\t\t\t\t\t\t\t\t\tlabel: question,\n\t\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tfields[fieldName] = {\n\t\t\t\t\t\ttype: question.type,\n\t\t\t\t\t\tlabel: question.question,\n\t\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\t//@ts-ignore TODO better mapping of questions to schema definition\n\t\tconst definition: T = {\n\t\t\tid: 'quizGenerated',\n\t\t\tname: 'Generated quiz',\n\t\t\tfields,\n\t\t}\n\n\t\treturn definition\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"QuizComponent.js","names":["_schema","require","_chalk","_interopRequireDefault","_lodash","_FormComponent","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","AnswerValidity","QuizComponent","options","_options$randomizeQue","_classCallCheck2","definition","buildSchemaFromQuestions","questions","originalQuestions","formBuilder","FormComponent","schema","term","ui","randomizeQuestions","_createClass2","value","_present","_asyncToGenerator2","_regenerator","mark","_callee","_this","_options$questions","_options$randomizeQue2","startTime","fields","results","answers","answerValidities","totalQuestions","totalCorrect","questionNames","totalWrong","endTime","_args","wrap","_callee$","_context","prev","next","undefined","getNamedFields","map","nf","name","Date","getTime","shuffle","present","sent","questionName","fieldName","answer","_answer$split","split","_answer$split2","_slicedToArray2","validity","idx","_ref","find","namedField","field","Error","fieldDefinition","type","parseInt","Correct","Incorrect","lastResults","percentCorrect","time","startTimeMs","endTimeMs","totalTimeSec","toFixed","abrupt","stop","_scorecard","_callee2","_this2","headline","_options$results","testResults","_args2","_callee2$","_context2","SchemaError","code","parameters","clear","renderHero","questionFieldName","isCorrect","guessedAnswer","concat","correctAnswer","originalQuestion","objectKey","label","chalk","bgGreenBright","black","bgRedBright","strikethrough","renderObject","renderLine","renderHeadline","waitForEnter","scorecard","question","choices","id","exports"],"sources":["../../src/components/QuizComponent.ts"],"sourcesContent":["import {\n\tSchema,\n\tSchemaFieldsByName,\n\tSchemaFieldNames,\n\tSchemaError,\n} from '@sprucelabs/schema'\nimport chalk from 'chalk'\nimport { shuffle } from 'lodash'\nimport { GraphicsInterface } from '../types/cli.types'\nimport FormComponent, {\n\tFormOptions,\n\tFormPresentationOptions,\n} from './FormComponent'\n\ninterface QuizMultipleChoiceQuestion {\n\ttype: 'select'\n\tquestion: string\n\tanswers: string[]\n}\n\ninterface QuizTextQuestion {\n\ttype: 'text'\n\tquestion: string\n\tanswer: string\n}\n\ninterface QuizQuestions {\n\t[key: string]: QuizMultipleChoiceQuestion | QuizTextQuestion\n}\n\nenum AnswerValidity {\n\tCorrect = 'correct',\n\tIncorrect = 'incorrect',\n}\n\ninterface QuizPresentationOptions<T extends Schema, Q extends QuizQuestions>\n\textends Omit<FormPresentationOptions<T>, 'fields'> {\n\tquestions?: QuizAnswerFieldNames<Q>[]\n\trandomizeQuestions?: boolean\n}\n\ntype QuizAnswerFieldNames<Q extends QuizQuestions> = Extract<keyof Q, string>\n\ntype QuizAnswers<Q extends QuizQuestions> = {\n\t[K in QuizAnswerFieldNames<Q>]: string\n}\n\ntype QuizAnswerValidities<Q extends QuizQuestions> = {\n\t[K in QuizAnswerFieldNames<Q>]: AnswerValidity\n}\n\ntype QuizPresentationResults<Q extends QuizQuestions> = {\n\t/** The answers that were given */\n\tanswers: QuizAnswers<Q>\n\n\t/** The answers right or wrong */\n\tanswerValidities: QuizAnswerValidities<Q>\n\n\t/** The percent of correct answers given */\n\tpercentCorrect: number\n\n\t/** How long it took them to take the quiz in ms */\n\ttime: {\n\t\tstartTimeMs: number\n\t\tendTimeMs: number\n\t\ttotalTimeSec: number\n\t}\n\n\t/** How many were correct */\n\ttotalCorrect: number\n\n\t/** How many were wrong */\n\ttotalWrong: number\n\n\t/** How many questions we ended up taking */\n\ttotalQuestions: number\n}\n\ninterface QuizOptions<T extends Schema, Q extends QuizQuestions>\n\textends Omit<FormOptions<T>, 'schema'> {\n\t/** Should we randomize the questions */\n\trandomizeQuestions?: boolean\n\t/** The questions we are asking */\n\tquestions: Q\n}\n\nexport default class QuizComponent<T extends Schema, Q extends QuizQuestions> {\n\tpublic formBuilder: FormComponent<T>\n\tpublic term: GraphicsInterface\n\tpublic randomizeQuestions = true\n\tpublic originalQuestions: QuizQuestions\n\tpublic lastResults?: QuizPresentationResults<Q>\n\n\tpublic constructor(options: QuizOptions<T, Q>) {\n\t\t// We're going to build a schema from the questions and pass that to the form builder\n\t\tconst definition = this.buildSchemaFromQuestions(options.questions)\n\n\t\t// Track questions for later reference\n\t\tthis.originalQuestions = options.questions\n\n\t\t// Construct new form builder\n\t\tthis.formBuilder = new FormComponent<T>({\n\t\t\t...options,\n\t\t\tschema: definition,\n\t\t})\n\n\t\t// Set state locally\n\t\tthis.term = options.ui\n\t\tthis.randomizeQuestions = options.randomizeQuestions ?? true\n\t}\n\n\t/** Present the quiz */\n\tpublic async present(\n\t\toptions: QuizPresentationOptions<T, Q> = {}\n\t): Promise<QuizPresentationResults<Q>> {\n\t\tconst {\n\t\t\tquestions = this.formBuilder\n\t\t\t\t.getNamedFields()\n\t\t\t\t.map((nf) => nf.name) as QuizAnswerFieldNames<Q>[],\n\t\t\trandomizeQuestions = this.randomizeQuestions,\n\t\t} = options\n\n\t\tconst startTime = new Date().getTime()\n\n\t\t// Pull out answers\n\t\tconst fields = randomizeQuestions ? shuffle(questions) : questions\n\n\t\t// Ask for the answers\n\t\tconst results = await this.formBuilder.present({\n\t\t\t...options,\n\t\t\tfields: fields as SchemaFieldNames<T>[],\n\t\t})\n\n\t\t// Generate stats\n\t\tconst answers: Partial<QuizAnswers<Q>> = {}\n\t\tconst answerValidities: Partial<QuizAnswerValidities<Q>> = {}\n\n\t\tconst totalQuestions = questions.length\n\t\tlet totalCorrect = 0\n\n\t\tconst questionNames = Object.keys(results) as QuizAnswerFieldNames<Q>[]\n\n\t\tquestionNames.forEach((questionName) => {\n\t\t\tconst fieldName = questionName as SchemaFieldNames<T>\n\t\t\tconst answer = (results[fieldName] as string) || ''\n\t\t\tconst [validity, idx] = answer.split('-')\n\n\t\t\t// Get the field to tell type\n\t\t\tconst { field } =\n\t\t\t\tthis.formBuilder\n\t\t\t\t\t.getNamedFields()\n\t\t\t\t\t.find((namedField) => namedField.name === fieldName) || {}\n\n\t\t\tif (!field) {\n\t\t\t\tthrow new Error('Field issue in QuizComponent')\n\t\t\t}\n\n\t\t\tconst fieldDefinition = field.definition\n\n\t\t\tswitch (fieldDefinition.type) {\n\t\t\t\tcase 'select':\n\t\t\t\t\t// Pull the original multiple choice, we can cast it as multiple choice\n\t\t\t\t\t// question with confidence\n\t\t\t\t\tanswers[questionName] = (\n\t\t\t\t\t\tthis.originalQuestions[questionName] as QuizMultipleChoiceQuestion\n\t\t\t\t\t).answers[parseInt(idx)]\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\t// @ts-ignore TODO proper questions to schema should fix this because we only support a few fields\n\t\t\t\t\tanswers[questionName] = results[fieldName]\n\t\t\t}\n\n\t\t\t// Track validity\n\t\t\tif (validity === AnswerValidity.Correct) {\n\t\t\t\ttotalCorrect = totalCorrect + 1\n\t\t\t\tanswerValidities[questionName] = AnswerValidity.Correct\n\t\t\t} else {\n\t\t\t\tanswerValidities[questionName] = AnswerValidity.Incorrect\n\t\t\t}\n\t\t}, 0)\n\n\t\tconst totalWrong = totalQuestions - totalCorrect\n\n\t\t// Track time\n\t\tconst endTime = new Date().getTime()\n\n\t\tthis.lastResults = {\n\t\t\tpercentCorrect: totalCorrect / totalQuestions,\n\t\t\ttotalCorrect,\n\t\t\ttotalWrong,\n\t\t\tanswerValidities: answerValidities as QuizAnswerValidities<Q>,\n\t\t\tanswers: answers as QuizAnswers<Q>,\n\t\t\ttotalQuestions,\n\t\t\ttime: {\n\t\t\t\tstartTimeMs: startTime,\n\t\t\t\tendTimeMs: endTime,\n\t\t\t\ttotalTimeSec: +((endTime - startTime) / 1000).toFixed(1),\n\t\t\t},\n\t\t}\n\n\t\treturn this.lastResults\n\t}\n\n\tpublic async scorecard(\n\t\toptions: {\n\t\t\tresults?: QuizPresentationResults<Q>\n\t\t\theadline?: string\n\t\t} = {}\n\t) {\n\t\tconst { headline, results = this.lastResults } = options\n\t\tconst { term } = this\n\n\t\tif (!results) {\n\t\t\tthrow new SchemaError({\n\t\t\t\tcode: 'INVALID_PARAMETERS',\n\t\t\t\tparameters: [],\n\t\t\t})\n\t\t}\n\n\t\tterm.clear()\n\t\tterm.renderHero(headline ?? 'Quiz results!')\n\n\t\tconst testResults: Record<string, string> = {}\n\n\t\tthis.formBuilder.getNamedFields().forEach((namedField) => {\n\t\t\tconst { name, field } = namedField\n\t\t\tconst questionFieldName = name as QuizAnswerFieldNames<Q>\n\n\t\t\t// Get results\n\t\t\tconst isCorrect =\n\t\t\t\tresults.answerValidities[questionFieldName] === AnswerValidity.Correct\n\t\t\tconst guessedAnswer = `${results.answers[questionFieldName]}`\n\n\t\t\t// Build the real answer\n\t\t\tlet correctAnswer = ''\n\n\t\t\tconst originalQuestion = this.originalQuestions[questionFieldName]\n\n\t\t\tswitch (originalQuestion.type) {\n\t\t\t\tcase 'select':\n\t\t\t\t\tcorrectAnswer = originalQuestion.answers[0]\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\t// All options just pass through the answer tied to the question during instantiation\n\t\t\t\t\tcorrectAnswer = originalQuestion.answer\n\t\t\t}\n\n\t\t\tconst objectKey = field.label || '**missing'\n\n\t\t\tif (isCorrect) {\n\t\t\t\ttestResults[objectKey] = `${chalk.bgGreenBright.black(\n\t\t\t\t\t'Correct!'\n\t\t\t\t)} ${guessedAnswer} `\n\t\t\t} else {\n\t\t\t\ttestResults[objectKey] = `${chalk.bgRedBright.black(\n\t\t\t\t\t'Wrong!'\n\t\t\t\t)} ${chalk.strikethrough(guessedAnswer)} -> ${correctAnswer}`\n\t\t\t}\n\t\t})\n\n\t\tterm.renderObject(testResults)\n\n\t\tterm.renderLine(`# questions: ${results.totalQuestions}`)\n\t\tterm.renderLine(`# correct: ${results.totalCorrect}`)\n\n\t\tterm.renderHeadline(\n\t\t\t`Your score: ${(results.percentCorrect * 100).toFixed(1)}%`\n\t\t)\n\n\t\tawait term.waitForEnter()\n\t}\n\n\t/** Takes questions and builds a schema */\n\tprivate buildSchemaFromQuestions(questions: QuizQuestions): T {\n\t\t// TODO change SchemaFields to something based on schema generated from questions\n\t\tconst fields: SchemaFieldsByName = {}\n\n\t\tObject.keys(questions).forEach((fieldName) => {\n\t\t\tconst question = questions[fieldName]\n\n\t\t\tswitch (question.type) {\n\t\t\t\tcase 'select':\n\t\t\t\t\tfields[fieldName] = {\n\t\t\t\t\t\ttype: question.type,\n\t\t\t\t\t\tlabel: question.question,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tchoices: shuffle(\n\t\t\t\t\t\t\t\tquestion.answers.map((question, idx) => ({\n\t\t\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\t\t\tidx === 0\n\t\t\t\t\t\t\t\t\t\t\t? `${AnswerValidity.Correct}-${idx}`\n\t\t\t\t\t\t\t\t\t\t\t: `${AnswerValidity.Incorrect}-${idx}`,\n\t\t\t\t\t\t\t\t\tlabel: question,\n\t\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tfields[fieldName] = {\n\t\t\t\t\t\ttype: question.type,\n\t\t\t\t\t\tlabel: question.question,\n\t\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\t//@ts-ignore TODO better mapping of questions to schema definition\n\t\tconst definition: T = {\n\t\t\tid: 'quizGenerated',\n\t\t\tname: 'Generated quiz',\n\t\t\tfields,\n\t\t}\n\n\t\treturn definition\n\t}\n}\n"],"mappings":"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"}
@@ -236,26 +236,6 @@ var EventWriter = /*#__PURE__*/function (_AbstractWriter) {
236
236
  name: 'responsePayload.builder.ts',
237
237
  action: 'generated',
238
238
  description: 'The payload that every listener will need to respond with. Delete this file for events that are fire and forget.'
239
- }, {
240
- templateMethod: 'permissionContractBuilder',
241
- name: 'emitPermissions.builder.ts',
242
- action: 'generated',
243
- description: 'Permissions someone else will need to emit your event.',
244
- context: {
245
- nameCamel: nameCamel + 'Emit',
246
- nameKebab: nameKebab,
247
- description: ''
248
- }
249
- }, {
250
- templateMethod: 'permissionContractBuilder',
251
- name: 'listenPermissions.builder.ts',
252
- action: 'generated',
253
- description: 'Permissions someone else will need to listen to your event.',
254
- context: {
255
- nameCamel: nameCamel + 'Listen',
256
- nameKebab: nameKebab,
257
- description: ''
258
- }
259
239
  }, {
260
240
  templateMethod: 'eventOptions',
261
241
  name: 'event.options.ts',
@@ -1 +1 @@
1
- {"version":3,"file":"EventWriter.js","names":["_path","_interopRequireDefault","require","_spruceEventUtils","_spruceSkillUtils","_AbstractWriter2","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","CONTRACT_FILE_NAME","EventWriter","_AbstractWriter","_inherits2","_super","_classCallCheck2","_createClass2","_writeContracts","_asyncToGenerator2","_regenerator","mark","_callee","destinationDir","options","eventContractTemplateItems","_options$shouldImport","shouldImportCoreEvents","generated","_iterator","_step","item","all","wrap","_callee$","_context","prev","writeContract","eventContractTemplateItem","writeCombinedEvents","templateItems","Promise","sent","lint","abrupt","stop","writeContracts","_x","_x2","_writeContract","_callee2","schemaTemplateItems","destinationFile","eventsContractContents","results","_callee2$","_context2","diskUtil","resolvePath","namespaceCamel","generateEventContractFileName","templates","eventContract","writeFileIfChangedMixinResults","concat","eventSignatures","_x3","hasCombinedContractBeenWritten","cwd","doesHashSprucePathExist","path","resolveHashSprucePath","doesFileExist","_writeCombinedEvents","_callee3","contents","_callee3$","_context3","combinedEventsContract","_x4","_writeListener","_callee4","schemaTypesLookupDir","fullyQualifiedEventName","event","resolvedDestination","relativeTypesFile","listenerContents","_callee4$","_context4","eventNameUtil","split","eventDiskUtil","resolveListenerPath","resolveSchemaTypesFile","namespace","eventNamespace","listener","schemaTypesFile","writeListener","_x5","_x6","_writeListenerMap","_callee5","destination","_callee5$","_context5","listeners","writeListenerMap","_x7","_x8","_writeEvent","_callee6","version","nameKebab","nameCamel","nameReadable","_options$isGlobal","isGlobal","files","_i","_templates","file","_callee6$","_context6","templateMethod","action","description","context","resolveEventPath","fileName","eventName","writeFile","writeEvent","_x9","_x10","pathUtil","join","DEFAULT_SCHEMA_TYPES_FILENAME","resolveRelativePath","dirname","replace","extname","AbstractWriter","exports"],"sources":["../../../../src/features/event/writers/EventWriter.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { SchemaTemplateItem } from '@sprucelabs/schema'\nimport { eventDiskUtil, eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tDEFAULT_SCHEMA_TYPES_FILENAME,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tEventContractTemplateItem,\n\tEventListenerOptions,\n\tListenerTemplateItem,\n} from '@sprucelabs/spruce-templates'\nimport { GeneratedFile } from '../../../types/cli.types'\nimport AbstractWriter from '../../../writers/AbstractWriter'\n\nconst CONTRACT_FILE_NAME = `events.contract.ts`\nexport default class EventWriter extends AbstractWriter {\n\tpublic async writeContracts(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tshouldImportCoreEvents?: boolean\n\t\t\tskillEventContractTypesFile: string\n\t\t\teventBuilderFile: string\n\t\t}\n\t) {\n\t\tconst { eventContractTemplateItems, shouldImportCoreEvents = true } =\n\t\t\toptions\n\n\t\tconst generated: Promise<GeneratedFile>[] = []\n\n\t\tfor (const item of eventContractTemplateItems) {\n\t\t\tgenerated.push(\n\t\t\t\tthis.writeContract({\n\t\t\t\t\t...options,\n\t\t\t\t\tdestinationDir,\n\t\t\t\t\teventContractTemplateItem: item,\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\n\t\tgenerated.push(\n\t\t\tthis.writeCombinedEvents({\n\t\t\t\t...options,\n\t\t\t\tshouldImportCoreEvents,\n\t\t\t\tdestinationDir,\n\t\t\t\ttemplateItems: eventContractTemplateItems,\n\t\t\t})\n\t\t)\n\n\t\tconst all = await Promise.all(generated)\n\n\t\tawait this.lint(destinationDir)\n\n\t\treturn all\n\t}\n\n\tprivate async writeContract(options: {\n\t\tdestinationDir: string\n\t\teventContractTemplateItem: EventContractTemplateItem\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\teventBuilderFile: string\n\t}): Promise<GeneratedFile> {\n\t\tconst { destinationDir, eventContractTemplateItem, schemaTemplateItems } =\n\t\t\toptions\n\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\teventContractTemplateItem.namespaceCamel,\n\t\t\tgenerateEventContractFileName(eventContractTemplateItem)\n\t\t)\n\n\t\tconst eventsContractContents = this.templates.eventContract({\n\t\t\t...options,\n\t\t\t...eventContractTemplateItem,\n\t\t\tschemaTemplateItems,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\teventsContractContents,\n\t\t\t`The event contract for ${\n\t\t\t\tObject.keys(eventContractTemplateItem.eventSignatures)[0]\n\t\t\t}`\n\t\t)\n\n\t\treturn results[0]\n\t}\n\n\tpublic hasCombinedContractBeenWritten(cwd: string) {\n\t\tif (diskUtil.doesHashSprucePathExist(cwd)) {\n\t\t\tconst path = diskUtil.resolveHashSprucePath(\n\t\t\t\tcwd,\n\t\t\t\t'events',\n\t\t\t\tCONTRACT_FILE_NAME\n\t\t\t)\n\n\t\t\treturn diskUtil.doesFileExist(path)\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate async writeCombinedEvents(options: {\n\t\tdestinationDir: string\n\t\ttemplateItems: EventContractTemplateItem[]\n\t\tshouldImportCoreEvents?: boolean\n\t\tskillEventContractTypesFile: string\n\t}): Promise<GeneratedFile> {\n\t\tconst { destinationDir } = options\n\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\tCONTRACT_FILE_NAME\n\t\t)\n\n\t\tconst contents = this.templates.combinedEventsContract(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\tcontents,\n\t\t\t'All event contracts combined to a single export.'\n\t\t)\n\n\t\treturn results[0]\n\t}\n\n\tpublic async writeListener(\n\t\tdestinationDir: string,\n\t\toptions: Omit<EventListenerOptions, 'schemaTypesFile'> & {\n\t\t\tschemaTypesLookupDir: string\n\t\t}\n\t) {\n\t\tconst { schemaTypesLookupDir, fullyQualifiedEventName } = options\n\n\t\tconst event = eventNameUtil.split(fullyQualifiedEventName)\n\t\tconst resolvedDestination = eventDiskUtil.resolveListenerPath(\n\t\t\tdestinationDir,\n\t\t\tevent as any\n\t\t)\n\n\t\tconst relativeTypesFile = this.resolveSchemaTypesFile({\n\t\t\tnamespace: event.eventNamespace,\n\t\t\tschemaTypesLookupDir,\n\t\t\tresolvedDestination,\n\t\t})\n\n\t\tconst listenerContents = this.templates.listener({\n\t\t\t...options,\n\t\t\tschemaTypesFile: relativeTypesFile,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\tlistenerContents,\n\t\t\t`Listener for ${fullyQualifiedEventName}.`\n\t\t)\n\n\t\tawait this.lint(resolvedDestination)\n\n\t\treturn results\n\t}\n\n\tpublic async writeListenerMap(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tlisteners: ListenerTemplateItem[]\n\t\t}\n\t) {\n\t\tconst destination = diskUtil.resolvePath(destinationDir, 'listeners.ts')\n\t\tconst contents = this.templates.listeners({ listeners: options.listeners })\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'All your listeners imported to one place for your skill to use when booting!'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tpublic async writeEvent(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tnameCamel: string\n\t\t\tnameKebab: string\n\t\t\tversion: string\n\t\t\tnameReadable: string\n\t\t\tisGlobal?: boolean\n\t\t}\n\t) {\n\t\tconst {\n\t\t\tversion,\n\t\t\tnameKebab,\n\t\t\tnameCamel,\n\t\t\tnameReadable,\n\t\t\tisGlobal = false,\n\t\t} = options\n\n\t\tconst templates: ({\n\t\t\tcontext?: any\n\t\t\ttemplateMethod:\n\t\t\t\t| 'eventEmitPayload'\n\t\t\t\t| 'eventEmitTarget'\n\t\t\t\t| 'eventResponsePayload'\n\t\t\t\t| 'permissionContractBuilder'\n\t\t\t\t| 'eventOptions'\n\t\t} & Omit<GeneratedFile, 'path'>)[] = [\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventEmitPayload',\n\t\t\t\tname: 'emitPayload.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'The payload that will be sent when you emit this event.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventEmitTarget',\n\t\t\t\tname: 'emitTarget.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'The target that will be sent when you emit this event.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventResponsePayload',\n\t\t\t\tname: 'responsePayload.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription:\n\t\t\t\t\t'The payload that every listener will need to respond with. Delete this file for events that are fire and forget.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'permissionContractBuilder',\n\t\t\t\tname: 'emitPermissions.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'Permissions someone else will need to emit your event.',\n\t\t\t\tcontext: {\n\t\t\t\t\tnameCamel: nameCamel + 'Emit',\n\t\t\t\t\tnameKebab,\n\t\t\t\t\tdescription: '',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'permissionContractBuilder',\n\t\t\t\tname: 'listenPermissions.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription:\n\t\t\t\t\t'Permissions someone else will need to listen to your event.',\n\t\t\t\tcontext: {\n\t\t\t\t\tnameCamel: nameCamel + 'Listen',\n\t\t\t\t\tnameKebab,\n\t\t\t\t\tdescription: '',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventOptions',\n\t\t\t\tname: 'event.options.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'Extra options that can be set for your event',\n\t\t\t\tcontext: {\n\t\t\t\t\tisGlobal,\n\t\t\t\t},\n\t\t\t},\n\t\t]\n\n\t\tconst files: GeneratedFile[] = []\n\n\t\tfor (const file of templates) {\n\t\t\tconst destination = eventDiskUtil.resolveEventPath(destinationDir, {\n\t\t\t\tfileName: file.name as any,\n\t\t\t\teventName: nameKebab,\n\t\t\t\tversion,\n\t\t\t})\n\n\t\t\tconst contents = this.templates[file.templateMethod]({\n\t\t\t\tnameCamel,\n\t\t\t\tnameReadable,\n\t\t\t\tversion,\n\t\t\t\t...file.context,\n\t\t\t})\n\n\t\t\tdiskUtil.writeFile(destination, contents)\n\n\t\t\tfiles.push({\n\t\t\t\t...file,\n\t\t\t\tpath: destination,\n\t\t\t})\n\t\t}\n\n\t\tawait this.lint(destinationDir)\n\n\t\treturn files\n\t}\n\n\tprivate resolveSchemaTypesFile(options: {\n\t\tnamespace?: string\n\t\tschemaTypesLookupDir: string\n\t\tresolvedDestination: string\n\t}) {\n\t\tconst { schemaTypesLookupDir, resolvedDestination, namespace } = options\n\n\t\tif (!namespace) {\n\t\t\treturn '@sprucelabs/mercury-types'\n\t\t}\n\n\t\tconst schemaTypesFile = pathUtil.join(\n\t\t\tschemaTypesLookupDir,\n\t\t\tDEFAULT_SCHEMA_TYPES_FILENAME\n\t\t)\n\n\t\tlet relativeTypesFile = diskUtil.resolveRelativePath(\n\t\t\tpathUtil.dirname(resolvedDestination),\n\t\t\tschemaTypesFile\n\t\t)\n\n\t\trelativeTypesFile = relativeTypesFile.replace(\n\t\t\tpathUtil.extname(relativeTypesFile),\n\t\t\t''\n\t\t)\n\n\t\treturn relativeTypesFile\n\t}\n}\n\nexport function generateEventContractFileName(options: {\n\tnameCamel: string\n\tversion: string\n}): string {\n\treturn `${options.nameCamel}.${options.version}.contract.ts`\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EventWriter.js","names":["_path","_interopRequireDefault","require","_spruceEventUtils","_spruceSkillUtils","_AbstractWriter2","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","CONTRACT_FILE_NAME","EventWriter","_AbstractWriter","_inherits2","_super","_classCallCheck2","_createClass2","_writeContracts","_asyncToGenerator2","_regenerator","mark","_callee","destinationDir","options","eventContractTemplateItems","_options$shouldImport","shouldImportCoreEvents","generated","_iterator","_step","item","all","wrap","_callee$","_context","prev","writeContract","eventContractTemplateItem","writeCombinedEvents","templateItems","Promise","sent","lint","abrupt","stop","writeContracts","_x","_x2","_writeContract","_callee2","schemaTemplateItems","destinationFile","eventsContractContents","results","_callee2$","_context2","diskUtil","resolvePath","namespaceCamel","generateEventContractFileName","templates","eventContract","writeFileIfChangedMixinResults","concat","eventSignatures","_x3","hasCombinedContractBeenWritten","cwd","doesHashSprucePathExist","path","resolveHashSprucePath","doesFileExist","_writeCombinedEvents","_callee3","contents","_callee3$","_context3","combinedEventsContract","_x4","_writeListener","_callee4","schemaTypesLookupDir","fullyQualifiedEventName","event","resolvedDestination","relativeTypesFile","listenerContents","_callee4$","_context4","eventNameUtil","split","eventDiskUtil","resolveListenerPath","resolveSchemaTypesFile","namespace","eventNamespace","listener","schemaTypesFile","writeListener","_x5","_x6","_writeListenerMap","_callee5","destination","_callee5$","_context5","listeners","writeListenerMap","_x7","_x8","_writeEvent","_callee6","version","nameKebab","nameCamel","nameReadable","_options$isGlobal","isGlobal","files","_i","_templates","file","_callee6$","_context6","templateMethod","action","description","context","resolveEventPath","fileName","eventName","writeFile","writeEvent","_x9","_x10","pathUtil","join","DEFAULT_SCHEMA_TYPES_FILENAME","resolveRelativePath","dirname","replace","extname","AbstractWriter","exports"],"sources":["../../../../src/features/event/writers/EventWriter.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { SchemaTemplateItem } from '@sprucelabs/schema'\nimport { eventDiskUtil, eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tDEFAULT_SCHEMA_TYPES_FILENAME,\n} from '@sprucelabs/spruce-skill-utils'\nimport {\n\tEventContractTemplateItem,\n\tEventListenerOptions,\n\tListenerTemplateItem,\n} from '@sprucelabs/spruce-templates'\nimport { GeneratedFile } from '../../../types/cli.types'\nimport AbstractWriter from '../../../writers/AbstractWriter'\n\nconst CONTRACT_FILE_NAME = `events.contract.ts`\nexport default class EventWriter extends AbstractWriter {\n\tpublic async writeContracts(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\teventContractTemplateItems: EventContractTemplateItem[]\n\t\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\t\tshouldImportCoreEvents?: boolean\n\t\t\tskillEventContractTypesFile: string\n\t\t\teventBuilderFile: string\n\t\t}\n\t) {\n\t\tconst { eventContractTemplateItems, shouldImportCoreEvents = true } =\n\t\t\toptions\n\n\t\tconst generated: Promise<GeneratedFile>[] = []\n\n\t\tfor (const item of eventContractTemplateItems) {\n\t\t\tgenerated.push(\n\t\t\t\tthis.writeContract({\n\t\t\t\t\t...options,\n\t\t\t\t\tdestinationDir,\n\t\t\t\t\teventContractTemplateItem: item,\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\n\t\tgenerated.push(\n\t\t\tthis.writeCombinedEvents({\n\t\t\t\t...options,\n\t\t\t\tshouldImportCoreEvents,\n\t\t\t\tdestinationDir,\n\t\t\t\ttemplateItems: eventContractTemplateItems,\n\t\t\t})\n\t\t)\n\n\t\tconst all = await Promise.all(generated)\n\n\t\tawait this.lint(destinationDir)\n\n\t\treturn all\n\t}\n\n\tprivate async writeContract(options: {\n\t\tdestinationDir: string\n\t\teventContractTemplateItem: EventContractTemplateItem\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t\teventBuilderFile: string\n\t}): Promise<GeneratedFile> {\n\t\tconst { destinationDir, eventContractTemplateItem, schemaTemplateItems } =\n\t\t\toptions\n\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\teventContractTemplateItem.namespaceCamel,\n\t\t\tgenerateEventContractFileName(eventContractTemplateItem)\n\t\t)\n\n\t\tconst eventsContractContents = this.templates.eventContract({\n\t\t\t...options,\n\t\t\t...eventContractTemplateItem,\n\t\t\tschemaTemplateItems,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\teventsContractContents,\n\t\t\t`The event contract for ${\n\t\t\t\tObject.keys(eventContractTemplateItem.eventSignatures)[0]\n\t\t\t}`\n\t\t)\n\n\t\treturn results[0]\n\t}\n\n\tpublic hasCombinedContractBeenWritten(cwd: string) {\n\t\tif (diskUtil.doesHashSprucePathExist(cwd)) {\n\t\t\tconst path = diskUtil.resolveHashSprucePath(\n\t\t\t\tcwd,\n\t\t\t\t'events',\n\t\t\t\tCONTRACT_FILE_NAME\n\t\t\t)\n\n\t\t\treturn diskUtil.doesFileExist(path)\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate async writeCombinedEvents(options: {\n\t\tdestinationDir: string\n\t\ttemplateItems: EventContractTemplateItem[]\n\t\tshouldImportCoreEvents?: boolean\n\t\tskillEventContractTypesFile: string\n\t}): Promise<GeneratedFile> {\n\t\tconst { destinationDir } = options\n\n\t\tconst destinationFile = diskUtil.resolvePath(\n\t\t\tdestinationDir,\n\t\t\tCONTRACT_FILE_NAME\n\t\t)\n\n\t\tconst contents = this.templates.combinedEventsContract(options)\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestinationFile,\n\t\t\tcontents,\n\t\t\t'All event contracts combined to a single export.'\n\t\t)\n\n\t\treturn results[0]\n\t}\n\n\tpublic async writeListener(\n\t\tdestinationDir: string,\n\t\toptions: Omit<EventListenerOptions, 'schemaTypesFile'> & {\n\t\t\tschemaTypesLookupDir: string\n\t\t}\n\t) {\n\t\tconst { schemaTypesLookupDir, fullyQualifiedEventName } = options\n\n\t\tconst event = eventNameUtil.split(fullyQualifiedEventName)\n\t\tconst resolvedDestination = eventDiskUtil.resolveListenerPath(\n\t\t\tdestinationDir,\n\t\t\tevent as any\n\t\t)\n\n\t\tconst relativeTypesFile = this.resolveSchemaTypesFile({\n\t\t\tnamespace: event.eventNamespace,\n\t\t\tschemaTypesLookupDir,\n\t\t\tresolvedDestination,\n\t\t})\n\n\t\tconst listenerContents = this.templates.listener({\n\t\t\t...options,\n\t\t\tschemaTypesFile: relativeTypesFile,\n\t\t})\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tresolvedDestination,\n\t\t\tlistenerContents,\n\t\t\t`Listener for ${fullyQualifiedEventName}.`\n\t\t)\n\n\t\tawait this.lint(resolvedDestination)\n\n\t\treturn results\n\t}\n\n\tpublic async writeListenerMap(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tlisteners: ListenerTemplateItem[]\n\t\t}\n\t) {\n\t\tconst destination = diskUtil.resolvePath(destinationDir, 'listeners.ts')\n\t\tconst contents = this.templates.listeners({ listeners: options.listeners })\n\n\t\tconst results = await this.writeFileIfChangedMixinResults(\n\t\t\tdestination,\n\t\t\tcontents,\n\t\t\t'All your listeners imported to one place for your skill to use when booting!'\n\t\t)\n\n\t\treturn results\n\t}\n\n\tpublic async writeEvent(\n\t\tdestinationDir: string,\n\t\toptions: {\n\t\t\tnameCamel: string\n\t\t\tnameKebab: string\n\t\t\tversion: string\n\t\t\tnameReadable: string\n\t\t\tisGlobal?: boolean\n\t\t}\n\t) {\n\t\tconst {\n\t\t\tversion,\n\t\t\tnameKebab,\n\t\t\tnameCamel,\n\t\t\tnameReadable,\n\t\t\tisGlobal = false,\n\t\t} = options\n\n\t\tconst templates: ({\n\t\t\tcontext?: any\n\t\t\ttemplateMethod:\n\t\t\t\t| 'eventEmitPayload'\n\t\t\t\t| 'eventEmitTarget'\n\t\t\t\t| 'eventResponsePayload'\n\t\t\t\t| 'permissionContractBuilder'\n\t\t\t\t| 'eventOptions'\n\t\t} & Omit<GeneratedFile, 'path'>)[] = [\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventEmitPayload',\n\t\t\t\tname: 'emitPayload.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'The payload that will be sent when you emit this event.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventEmitTarget',\n\t\t\t\tname: 'emitTarget.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'The target that will be sent when you emit this event.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventResponsePayload',\n\t\t\t\tname: 'responsePayload.builder.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription:\n\t\t\t\t\t'The payload that every listener will need to respond with. Delete this file for events that are fire and forget.',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttemplateMethod: 'eventOptions',\n\t\t\t\tname: 'event.options.ts',\n\t\t\t\taction: 'generated',\n\t\t\t\tdescription: 'Extra options that can be set for your event',\n\t\t\t\tcontext: {\n\t\t\t\t\tisGlobal,\n\t\t\t\t},\n\t\t\t},\n\t\t]\n\n\t\tconst files: GeneratedFile[] = []\n\n\t\tfor (const file of templates) {\n\t\t\tconst destination = eventDiskUtil.resolveEventPath(destinationDir, {\n\t\t\t\tfileName: file.name as any,\n\t\t\t\teventName: nameKebab,\n\t\t\t\tversion,\n\t\t\t})\n\n\t\t\tconst contents = this.templates[file.templateMethod]({\n\t\t\t\tnameCamel,\n\t\t\t\tnameReadable,\n\t\t\t\tversion,\n\t\t\t\t...file.context,\n\t\t\t})\n\n\t\t\tdiskUtil.writeFile(destination, contents)\n\n\t\t\tfiles.push({\n\t\t\t\t...file,\n\t\t\t\tpath: destination,\n\t\t\t})\n\t\t}\n\n\t\tawait this.lint(destinationDir)\n\n\t\treturn files\n\t}\n\n\tprivate resolveSchemaTypesFile(options: {\n\t\tnamespace?: string\n\t\tschemaTypesLookupDir: string\n\t\tresolvedDestination: string\n\t}) {\n\t\tconst { schemaTypesLookupDir, resolvedDestination, namespace } = options\n\n\t\tif (!namespace) {\n\t\t\treturn '@sprucelabs/mercury-types'\n\t\t}\n\n\t\tconst schemaTypesFile = pathUtil.join(\n\t\t\tschemaTypesLookupDir,\n\t\t\tDEFAULT_SCHEMA_TYPES_FILENAME\n\t\t)\n\n\t\tlet relativeTypesFile = diskUtil.resolveRelativePath(\n\t\t\tpathUtil.dirname(resolvedDestination),\n\t\t\tschemaTypesFile\n\t\t)\n\n\t\trelativeTypesFile = relativeTypesFile.replace(\n\t\t\tpathUtil.extname(relativeTypesFile),\n\t\t\t''\n\t\t)\n\n\t\treturn relativeTypesFile\n\t}\n}\n\nexport function generateEventContractFileName(options: {\n\tnameCamel: string\n\tversion: string\n}): string {\n\treturn `${options.nameCamel}.${options.version}.contract.ts`\n}\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ <img src="https://raw.githubusercontent.com/sprucelabsai/globby/master/docs/images/hero.jpg">
2
+
3
+ <h1 align="center">
4
+ Spruce XP Documentation
5
+ </h1>
6
+ <h3 align="center">Spruce XP is an Experience Platform built to create unforgettable experiences and long-lasting relationships.
7
+ </h3>
8
+ <p align="center">
9
+ <img align="center" width="80%" src="https://raw.githubusercontent.com/sprucelabsai/globby/master/docs/images/bullets.jpg">
10
+ </p>
11
+ <img src="https://raw.githubusercontent.com/sprucelabsai/globby/master/docs/images/spacer.png">
12
+ <br />
13
+ <p align="center">
14
+ <img align="center" width="80%" src="https://raw.githubusercontent.com/sprucelabsai/globby/master/docs/images/sprucebot-message.png">
15
+ </p>
16
+
17
+ <br />
18
+ <p align="center">
19
+ <a href="https://developer.spruce.ai/"><img width="250" src="https://raw.githubusercontent.com/sprucelabsai/globby/master/docs/images/read-full-docs.png" /></a>
20
+ </p>
@@ -0,0 +1,11 @@
1
+ {
2
+ "scriptUpdater": {
3
+ "skipped": []
4
+ },
5
+ "skipped": [
6
+ "skill"
7
+ ],
8
+ "installed": [
9
+ "test"
10
+ ]
11
+ }
@@ -0,0 +1,7 @@
1
+ import { default as globbyNamespace } from 'globby';
2
+ declare const globby: {
3
+ (patterns: string | string[], options?: Partial<globbyNamespace.GlobbyOptions>): Promise<string[]>;
4
+ sep: "\\" | "/";
5
+ sync(patterns: string | string[], options?: Partial<globbyNamespace.GlobbyOptions>): string[];
6
+ };
7
+ export default globby;
@@ -0,0 +1,28 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import path from 'path';
11
+ import coreGlobby from 'globby';
12
+ const globby = function globby(patterns, options) {
13
+ return __awaiter(this, void 0, void 0, function* () {
14
+ const pats = normalizePaths(patterns);
15
+ return coreGlobby(pats, options);
16
+ });
17
+ };
18
+ globby.sep = path.sep;
19
+ globby.sync = function (patterns, options) {
20
+ const pats = normalizePaths(patterns);
21
+ return coreGlobby.sync(pats, options);
22
+ };
23
+ function normalizePaths(patterns) {
24
+ const normalized = Array.isArray(patterns) ? patterns : [patterns];
25
+ const pats = normalized.map((n) => n.split(globby.sep).join(path.posix.sep));
26
+ return pats;
27
+ }
28
+ export default globby;
@@ -0,0 +1,2 @@
1
+ import globby from './globbyUtil';
2
+ export default globby;
@@ -0,0 +1,2 @@
1
+ import globby from './globbyUtil.js';
2
+ export default globby;
@@ -0,0 +1,7 @@
1
+ import { default as globbyNamespace } from 'globby';
2
+ declare const globby: {
3
+ (patterns: string | string[], options?: Partial<globbyNamespace.GlobbyOptions>): Promise<string[]>;
4
+ sep: "\\" | "/";
5
+ sync(patterns: string | string[], options?: Partial<globbyNamespace.GlobbyOptions>): string[];
6
+ };
7
+ export default globby;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const globby_1 = __importDefault(require("globby"));
8
+ const globby = async function globby(patterns, options) {
9
+ const pats = normalizePaths(patterns);
10
+ return (0, globby_1.default)(pats, options);
11
+ };
12
+ globby.sep = path_1.default.sep;
13
+ globby.sync = function (patterns, options) {
14
+ const pats = normalizePaths(patterns);
15
+ return globby_1.default.sync(pats, options);
16
+ };
17
+ function normalizePaths(patterns) {
18
+ const normalized = Array.isArray(patterns) ? patterns : [patterns];
19
+ const pats = normalized.map((n) => n.split(globby.sep).join(path_1.default.posix.sep));
20
+ return pats;
21
+ }
22
+ exports.default = globby;
@@ -0,0 +1,2 @@
1
+ import globby from './globbyUtil';
2
+ export default globby;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const globbyUtil_1 = __importDefault(require("./globbyUtil"));
7
+ exports.default = globbyUtil_1.default;
@@ -0,0 +1,93 @@
1
+ {
2
+ "name": "@sprucelabs/globby",
3
+ "version": "0.0.5",
4
+ "skill": {
5
+ "namespace": "globby",
6
+ "upgradeIgnoreList": [
7
+ "globby"
8
+ ]
9
+ },
10
+ "files": [
11
+ "build"
12
+ ],
13
+ "main": "./build/index.js",
14
+ "types": "./build/index.d.ts",
15
+ "module": "./build/esm/index.js",
16
+ "sideEffects": false,
17
+ "keywords": [
18
+ "node",
19
+ "components",
20
+ "sprucebot",
21
+ "sprucelabs"
22
+ ],
23
+ "scripts": {
24
+ "build.ci": "yarn build.tsc && yarn build.resolve-paths && yarn lint",
25
+ "build.copy-files": "mkdir -p build && rsync -avzq --exclude='*.ts' ./src/ ./build/",
26
+ "build.dev": "yarn build.tsc --sourceMap ; yarn resolve-paths.lint",
27
+ "build.dist": "tsc --project tsconfig.dist.json && yarn build.resolve-paths && mv build esm && yarn build.esm-postbuild && yarn build.tsc && yarn build.resolve-paths && mv esm build/ && yarn clean.dist",
28
+ "build.esm-postbuild": "esm-postbuild --target esm --patterns '**/*.js'",
29
+ "build.resolve-paths": "resolve-path-aliases --target build --patterns '**/*.js,**/*.d.ts'",
30
+ "build.tsc": "yarn build.copy-files && tsc",
31
+ "clean": "yarn clean.build",
32
+ "clean.all": "yarn clean.dependencies && yarn clean.build",
33
+ "clean.build": "rm -rf build/",
34
+ "clean.dist": "rm -rf build/__tests__ build/esm/__tests__",
35
+ "clean.dependencies": "rm -rf node_modules/ package-lock.json yarn.lock",
36
+ "fix.lint": "eslint --fix --cache '**/*.ts'",
37
+ "lint": "eslint --cache '**/*.ts'",
38
+ "lint.tsc": "tsc -p . --noEmit",
39
+ "post.watch.build": "yarn build.copy-files && yarn build.resolve-paths",
40
+ "rebuild": "yarn clean.all && yarn && yarn build.dev",
41
+ "release": "semantic-release",
42
+ "resolve-paths.lint": "yarn build.resolve-paths ; yarn lint",
43
+ "test": "jest",
44
+ "update.dependencies": "yarn clean.dependencies && yarn",
45
+ "watch.build.dev": "tsc-watch --sourceMap --onCompilationComplete 'yarn post.watch.build'",
46
+ "watch.lint": "concurrently 'yarn lint' \"chokidar 'src/**/*' -c 'yarn lint.tsc'\"",
47
+ "watch.rebuild": "yarn clean.all && yarn && yarn watch.build.dev",
48
+ "watch.tsc": "tsc -w"
49
+ },
50
+ "dependencies": {
51
+ "@sprucelabs/spruce-skill-utils": "^28.1.97",
52
+ "globby": "^11.0.4"
53
+ },
54
+ "devDependencies": {
55
+ "@sprucelabs/esm-postbuild": "^3.0.3",
56
+ "@sprucelabs/jest-json-reporter": "^7.0.3",
57
+ "@sprucelabs/resolve-path-aliases": "^1.1.192",
58
+ "@sprucelabs/semantic-release": "^4.0.8",
59
+ "@sprucelabs/spruce-test-fixtures": "^56.0.17",
60
+ "@sprucelabs/test": "^7.7.424",
61
+ "@sprucelabs/test-utils": "^3.4.14",
62
+ "@types/node": "^18.15.0",
63
+ "chokidar-cli": "^3.0.0",
64
+ "concurrently": "^7.6.0",
65
+ "eslint": "^8.35.0",
66
+ "eslint-config-spruce": "^10.12.0",
67
+ "jest": "^29.5.0",
68
+ "jest-circus": "^29.5.0",
69
+ "prettier": "^2.8.4",
70
+ "ts-node": "^10.9.1",
71
+ "tsc-watch": "^6.0.0",
72
+ "typescript": "^4.9.5"
73
+ },
74
+ "description": "A cross-platform globby wrapper",
75
+ "jest": {
76
+ "testRunner": "jest-circus/runner",
77
+ "maxWorkers": 4,
78
+ "testTimeout": 120000,
79
+ "testEnvironment": "node",
80
+ "testPathIgnorePatterns": [
81
+ "<rootDir>/tmp/",
82
+ "<rootDir>/src/",
83
+ "<rootDir>/node_modules/",
84
+ "<rootDir>/build/__tests__/testDirsAndFiles/"
85
+ ],
86
+ "testMatch": [
87
+ "**/__tests__/**/*.test.js?(x)"
88
+ ],
89
+ "moduleNameMapper": {
90
+ "^#spruce/(.*)$": "<rootDir>/build/.spruce/$1"
91
+ }
92
+ }
93
+ }