@sprucelabs/spruce-cli 19.1.1 → 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 (145) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +21 -0
  3. package/build/__tests__/behavioral/events/CreatingAnEvent.test.d.ts +0 -1
  4. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js +24 -59
  5. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
  6. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.d.ts +0 -1
  7. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +33 -83
  8. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  9. package/build/__tests__/behavioral/events/RegisteringEventsOnBoot.test.js +1 -9
  10. package/build/__tests__/behavioral/events/RegisteringEventsOnBoot.test.js.map +1 -1
  11. package/build/__tests__/implementation/EventStore.test.js +1 -1
  12. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  13. package/build/__tests__/implementation/ListenerStore.test.js +3 -4
  14. package/build/__tests__/implementation/ListenerStore.test.js.map +1 -1
  15. package/build/components/FormComponent.js +3 -3
  16. package/build/components/FormComponent.js.map +1 -1
  17. package/build/components/QuizComponent.js +3 -3
  18. package/build/components/QuizComponent.js.map +1 -1
  19. package/build/features/event/writers/EventWriter.js +0 -20
  20. package/build/features/event/writers/EventWriter.js.map +1 -1
  21. package/build/index.js +0 -0
  22. package/node_modules/@sprucelabs/globby/README.md +20 -0
  23. package/node_modules/@sprucelabs/globby/build/.spruce/settings.json +11 -0
  24. package/node_modules/@sprucelabs/globby/build/esm/globbyUtil.d.ts +7 -0
  25. package/node_modules/@sprucelabs/globby/build/esm/globbyUtil.js +28 -0
  26. package/node_modules/@sprucelabs/globby/build/esm/index.d.ts +2 -0
  27. package/node_modules/@sprucelabs/globby/build/esm/index.js +2 -0
  28. package/node_modules/@sprucelabs/globby/build/globbyUtil.d.ts +7 -0
  29. package/node_modules/@sprucelabs/globby/build/globbyUtil.js +22 -0
  30. package/node_modules/@sprucelabs/globby/build/index.d.ts +2 -0
  31. package/node_modules/@sprucelabs/globby/build/index.js +7 -0
  32. package/node_modules/@sprucelabs/globby/package.json +93 -0
  33. package/node_modules/@typescript-eslint/parser/_ts3.4/dist/index.d.ts +4 -0
  34. package/node_modules/@typescript-eslint/parser/dist/index.d.ts +4 -0
  35. package/node_modules/@typescript-eslint/parser/dist/index.d.ts.map +1 -1
  36. package/node_modules/@typescript-eslint/parser/dist/index.js +5 -1
  37. package/node_modules/@typescript-eslint/parser/dist/index.js.map +1 -1
  38. package/node_modules/@typescript-eslint/parser/package.json +5 -5
  39. package/node_modules/@typescript-eslint/scope-manager/dist/ScopeManager.js.map +1 -1
  40. package/node_modules/@typescript-eslint/scope-manager/dist/lib/decorators.d.ts +3 -0
  41. package/node_modules/@typescript-eslint/scope-manager/dist/lib/decorators.d.ts.map +1 -0
  42. package/node_modules/@typescript-eslint/scope-manager/dist/lib/decorators.js +21 -0
  43. package/node_modules/@typescript-eslint/scope-manager/dist/lib/decorators.js.map +1 -0
  44. package/node_modules/@typescript-eslint/scope-manager/dist/lib/decorators.legacy.d.ts +3 -0
  45. package/node_modules/@typescript-eslint/scope-manager/dist/lib/decorators.legacy.d.ts.map +1 -0
  46. package/node_modules/@typescript-eslint/scope-manager/dist/lib/decorators.legacy.js +15 -0
  47. package/node_modules/@typescript-eslint/scope-manager/dist/lib/decorators.legacy.js.map +1 -0
  48. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.d.ts.map +1 -1
  49. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.d.ts.map +1 -1
  50. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.js +4 -0
  51. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.iterable.js.map +1 -1
  52. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.js +23 -3
  53. package/node_modules/@typescript-eslint/scope-manager/dist/lib/dom.js.map +1 -1
  54. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.symbol.wellknown.d.ts.map +1 -1
  55. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.symbol.wellknown.js +1 -1
  56. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2015.symbol.wellknown.js.map +1 -1
  57. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.d.ts.map +1 -1
  58. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.js +2 -1
  59. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.js.map +1 -1
  60. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.regexp.d.ts +3 -0
  61. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.regexp.d.ts.map +1 -0
  62. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.regexp.js +15 -0
  63. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2022.regexp.js.map +1 -0
  64. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.array.d.ts +3 -0
  65. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.array.d.ts.map +1 -0
  66. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.array.js +24 -0
  67. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.array.js.map +1 -0
  68. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.d.ts +3 -0
  69. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.d.ts.map +1 -0
  70. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.full.d.ts +3 -0
  71. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.full.d.ts.map +1 -0
  72. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.full.js +14 -0
  73. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.full.js.map +1 -0
  74. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.js +11 -0
  75. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es2023.js.map +1 -0
  76. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es5.d.ts.map +1 -1
  77. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es5.js +3 -105
  78. package/node_modules/@typescript-eslint/scope-manager/dist/lib/es5.js.map +1 -1
  79. package/node_modules/@typescript-eslint/scope-manager/dist/lib/esnext.js +2 -2
  80. package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.d.ts +6 -0
  81. package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.d.ts.map +1 -1
  82. package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.js +12 -0
  83. package/node_modules/@typescript-eslint/scope-manager/dist/lib/index.js.map +1 -1
  84. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.d.ts.map +1 -1
  85. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.js +4 -0
  86. package/node_modules/@typescript-eslint/scope-manager/dist/lib/webworker.js.map +1 -1
  87. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js.map +1 -1
  88. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ExportVisitor.js.map +1 -1
  89. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ImportVisitor.js.map +1 -1
  90. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.js.map +1 -1
  91. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Reference.js.map +1 -1
  92. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js.map +1 -1
  93. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/TypeVisitor.js.map +1 -1
  94. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Visitor.js.map +1 -1
  95. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/VisitorBase.js.map +1 -1
  96. package/node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeBase.js.map +1 -1
  97. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  98. package/node_modules/@typescript-eslint/types/_ts3.4/dist/generated/ast-spec.d.ts +1 -0
  99. package/node_modules/@typescript-eslint/types/_ts3.4/dist/lib.d.ts +1 -1
  100. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts +1 -0
  101. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts.map +1 -1
  102. package/node_modules/@typescript-eslint/types/dist/lib.d.ts +1 -1
  103. package/node_modules/@typescript-eslint/types/dist/lib.d.ts.map +1 -1
  104. package/node_modules/@typescript-eslint/types/package.json +2 -2
  105. package/node_modules/@typescript-eslint/typescript-estree/_ts3.4/dist/version-check.d.ts +1 -1
  106. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.d.ts.map +1 -1
  107. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js +2 -1
  108. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js.map +1 -1
  109. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createDefaultProgram.d.ts.map +1 -1
  110. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createDefaultProgram.js +1 -0
  111. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/createDefaultProgram.js.map +1 -1
  112. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/getWatchProgramsForProjects.d.ts.map +1 -1
  113. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/getWatchProgramsForProjects.js +1 -0
  114. package/node_modules/@typescript-eslint/typescript-estree/dist/create-program/getWatchProgramsForProjects.js.map +1 -1
  115. package/node_modules/@typescript-eslint/typescript-estree/dist/getModifiers.d.ts.map +1 -1
  116. package/node_modules/@typescript-eslint/typescript-estree/dist/getModifiers.js +2 -2
  117. package/node_modules/@typescript-eslint/typescript-estree/dist/getModifiers.js.map +1 -1
  118. package/node_modules/@typescript-eslint/typescript-estree/dist/node-utils.d.ts.map +1 -1
  119. package/node_modules/@typescript-eslint/typescript-estree/dist/node-utils.js +18 -5
  120. package/node_modules/@typescript-eslint/typescript-estree/dist/node-utils.js.map +1 -1
  121. package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/ExpiringCache.js.map +1 -1
  122. package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/warnAboutTSVersion.js +2 -2
  123. package/node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/warnAboutTSVersion.js.map +1 -1
  124. package/node_modules/@typescript-eslint/typescript-estree/dist/parser.js +1 -1
  125. package/node_modules/@typescript-eslint/typescript-estree/dist/parser.js.map +1 -1
  126. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts.map +1 -1
  127. package/node_modules/@typescript-eslint/typescript-estree/dist/version-check.d.ts +1 -1
  128. package/node_modules/@typescript-eslint/typescript-estree/dist/version-check.d.ts.map +1 -1
  129. package/node_modules/@typescript-eslint/typescript-estree/dist/version-check.js +2 -0
  130. package/node_modules/@typescript-eslint/typescript-estree/dist/version-check.js.map +1 -1
  131. package/node_modules/@typescript-eslint/typescript-estree/package.json +4 -4
  132. package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
  133. package/package.json +592 -592
  134. package/src/__tests__/behavioral/events/CreatingAnEvent.test.ts +0 -28
  135. package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +2 -61
  136. package/src/__tests__/behavioral/events/RegisteringEventsOnBoot.test.ts +0 -9
  137. package/src/__tests__/implementation/EventStore.test.ts +1 -1
  138. package/src/__tests__/implementation/ListenerStore.test.ts +0 -2
  139. package/src/features/event/writers/EventWriter.ts +0 -23
  140. package/.DS_Store +0 -0
  141. package/.env +0 -25
  142. package/.eslintcache +0 -1
  143. package/junit.xml +0 -7
  144. package/src/.DS_Store +0 -0
  145. package/yarn-error.log +0 -12174
@@ -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":";;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAMA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAEA,IAAAI,cAAA,GAAAF,sBAAA,CAAAF,OAAA;AAGwB,SAAAK,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,aAAAP,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAkB,yBAAA,GAAAlB,MAAA,CAAAmB,gBAAA,CAAAT,MAAA,EAAAV,MAAA,CAAAkB,yBAAA,CAAAJ,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAoB,cAAA,CAAAV,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAAA,IAkBnBW,cAAc;AAAA,WAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;AAAA,GAAdA,cAAc,KAAdA,cAAc;AAAA,IAwDEC,aAAa;EAOjC,SAAAA,cAAmBC,OAA0B,EAAE;IAAA,IAAAC,qBAAA;IAAA,IAAAC,gBAAA,mBAAAH,aAAA;IAAA,IAAAL,gBAAA;IAAA,IAAAA,gBAAA;IAAA,IAAAA,gBAAA,yCAJnB,IAAI;IAAA,IAAAA,gBAAA;IAAA,IAAAA,gBAAA;IAK/B;IACA,IAAMS,UAAU,GAAG,IAAI,CAACC,wBAAwB,CAACJ,OAAO,CAACK,SAAS,CAAC;;IAEnE;IACA,IAAI,CAACC,iBAAiB,GAAGN,OAAO,CAACK,SAAS;;IAE1C;IACA,IAAI,CAACE,WAAW,GAAG,IAAIC,yBAAa,CAAAtB,aAAA,CAAAA,aAAA,KAChCc,OAAO;MACVS,MAAM,EAAEN;IAAU,GACjB;;IAEF;IACA,IAAI,CAACO,IAAI,GAAGV,OAAO,CAACW,EAAE;IACtB,IAAI,CAACC,kBAAkB,IAAAX,qBAAA,GAAGD,OAAO,CAACY,kBAAkB,cAAAX,qBAAA,cAAAA,qBAAA,GAAI,IAAI;EAC7D;;EAEA;EAAA,IAAAY,aAAA,aAAAd,aAAA;IAAAN,GAAA;IAAAqB,KAAA;MAAA,IAAAC,QAAA,OAAAC,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CACA,SAAAC,QAAA;QAAA,IAAAC,KAAA;QAAA,IAAApB,OAAA;UAAAqB,kBAAA;UAAAhB,SAAA;UAAAiB,sBAAA;UAAAV,kBAAA;UAAAW,SAAA;UAAAC,MAAA;UAAAC,OAAA;UAAAC,OAAA;UAAAC,gBAAA;UAAAC,cAAA;UAAAC,YAAA;UAAAC,aAAA;UAAAC,UAAA;UAAAC,OAAA;UAAAC,KAAA,GAAA5C,SAAA;QAAA,OAAA4B,YAAA,YAAAiB,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cACCtC,OAAsC,GAAAiC,KAAA,CAAA3C,MAAA,QAAA2C,KAAA,QAAAM,SAAA,GAAAN,KAAA,MAAG,CAAC,CAAC;cAAAZ,kBAAA,GAOvCrB,OAAO,CAJVK,SAAS,EAATA,SAAS,GAAAgB,kBAAA,cAAG,IAAI,CAACd,WAAW,CAC1BiC,cAAc,EAAE,CAChBC,GAAG,CAAC,UAACC,EAAE;gBAAA,OAAKA,EAAE,CAACC,IAAI;cAAA,EAAC,GAAAtB,kBAAA,EAAAC,sBAAA,GAEnBtB,OAAO,CADVY,kBAAkB,EAAlBA,kBAAkB,GAAAU,sBAAA,cAAG,IAAI,CAACV,kBAAkB,GAAAU,sBAAA;cAGvCC,SAAS,GAAG,IAAIqB,IAAI,EAAE,CAACC,OAAO,EAAE,EAEtC;cACMrB,MAAM,GAAGZ,kBAAkB,GAAG,IAAAkC,eAAO,EAACzC,SAAS,CAAC,GAAGA,SAAS,EAElE;cAAA+B,QAAA,CAAAE,IAAA;cAAA,OACsB,IAAI,CAAC/B,WAAW,CAACwC,OAAO,CAAA7D,aAAA,CAAAA,aAAA,KAC1Cc,OAAO;gBACVwB,MAAM,EAAEA;cAA+B,GACtC;YAAA;cAHIC,OAAO,GAAAW,QAAA,CAAAY,IAAA;cAKb;cACMtB,OAAgC,GAAG,CAAC,CAAC;cACrCC,gBAAkD,GAAG,CAAC,CAAC;cAEvDC,cAAc,GAAGvB,SAAS,CAACf,MAAM;cACnCuC,YAAY,GAAG,CAAC;cAEdC,aAAa,GAAGrD,MAAM,CAACD,IAAI,CAACiD,OAAO,CAAC;cAE1CK,aAAa,CAACtC,OAAO,CAAC,UAACyD,YAAY,EAAK;gBACvC,IAAMC,SAAS,GAAGD,YAAmC;gBACrD,IAAME,MAAM,GAAI1B,OAAO,CAACyB,SAAS,CAAC,IAAe,EAAE;gBACnD,IAAAE,aAAA,GAAwBD,MAAM,CAACE,KAAK,CAAC,GAAG,CAAC;kBAAAC,cAAA,OAAAC,eAAA,aAAAH,aAAA;kBAAlCI,QAAQ,GAAAF,cAAA;kBAAEG,GAAG,GAAAH,cAAA;;gBAEpB;gBACA,IAAAI,IAAA,GACCtC,KAAI,CAACb,WAAW,CACdiC,cAAc,EAAE,CAChBmB,IAAI,CAAC,UAACC,UAAU;oBAAA,OAAKA,UAAU,CAACjB,IAAI,KAAKO,SAAS;kBAAA,EAAC,IAAI,CAAC,CAAC;kBAHpDW,KAAK,GAAAH,IAAA,CAALG,KAAK;gBAKb,IAAI,CAACA,KAAK,EAAE;kBACX,MAAM,IAAIC,KAAK,CAAC,8BAA8B,CAAC;gBAChD;gBAEA,IAAMC,eAAe,GAAGF,KAAK,CAAC1D,UAAU;gBAExC,QAAQ4D,eAAe,CAACC,IAAI;kBAC3B,KAAK,QAAQ;oBACZ;oBACA;oBACAtC,OAAO,CAACuB,YAAY,CAAC,GACpB7B,KAAI,CAACd,iBAAiB,CAAC2C,YAAY,CAAC,CACnCvB,OAAO,CAACuC,QAAQ,CAACR,GAAG,CAAC,CAAC;oBACxB;kBACD;oBACC;oBACA/B,OAAO,CAACuB,YAAY,CAAC,GAAGxB,OAAO,CAACyB,SAAS,CAAC;gBAAA;;gBAG5C;gBACA,IAAIM,QAAQ,KAAK1D,cAAc,CAACoE,OAAO,EAAE;kBACxCrC,YAAY,GAAGA,YAAY,GAAG,CAAC;kBAC/BF,gBAAgB,CAACsB,YAAY,CAAC,GAAGnD,cAAc,CAACoE,OAAO;gBACxD,CAAC,MAAM;kBACNvC,gBAAgB,CAACsB,YAAY,CAAC,GAAGnD,cAAc,CAACqE,SAAS;gBAC1D;cACD,CAAC,EAAE,CAAC,CAAC;cAECpC,UAAU,GAAGH,cAAc,GAAGC,YAAY,EAEhD;cACMG,OAAO,GAAG,IAAIY,IAAI,EAAE,CAACC,OAAO,EAAE;cAEpC,IAAI,CAACuB,WAAW,GAAG;gBAClBC,cAAc,EAAExC,YAAY,GAAGD,cAAc;gBAC7CC,YAAY,EAAZA,YAAY;gBACZE,UAAU,EAAVA,UAAU;gBACVJ,gBAAgB,EAAEA,gBAA2C;gBAC7DD,OAAO,EAAEA,OAAyB;gBAClCE,cAAc,EAAdA,cAAc;gBACd0C,IAAI,EAAE;kBACLC,WAAW,EAAEhD,SAAS;kBACtBiD,SAAS,EAAExC,OAAO;kBAClByC,YAAY,EAAE,CAAC,CAAC,CAACzC,OAAO,GAAGT,SAAS,IAAI,IAAI,EAAEmD,OAAO,CAAC,CAAC;gBACxD;cACD,CAAC;cAAA,OAAAtC,QAAA,CAAAuC,MAAA,WAEM,IAAI,CAACP,WAAW;YAAA;YAAA;cAAA,OAAAhC,QAAA,CAAAwC,IAAA;UAAA;QAAA,GAAAzD,OAAA;MAAA,CACvB;MAAA,SAAA4B,QAAA;QAAA,OAAAhC,QAAA,CAAA9B,KAAA,OAAAI,SAAA;MAAA;MAAA,OAAA0D,OAAA;IAAA;EAAA;IAAAtD,GAAA;IAAAqB,KAAA;MAAA,IAAA+D,UAAA,OAAA7D,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAED,SAAA4D,SAAA;QAAA,IAAAC,MAAA;QAAA,IAAA/E,OAAA;UAAAgF,QAAA;UAAAC,gBAAA;UAAAxD,OAAA;UAAAf,IAAA;UAAAwE,WAAA;UAAAC,MAAA,GAAA9F,SAAA;QAAA,OAAA4B,YAAA,YAAAiB,IAAA,UAAAkD,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAhD,IAAA,GAAAgD,SAAA,CAAA/C,IAAA;YAAA;cACCtC,OAGC,GAAAmF,MAAA,CAAA7F,MAAA,QAAA6F,MAAA,QAAA5C,SAAA,GAAA4C,MAAA,MAAG,CAAC,CAAC;cAEEH,QAAQ,GAAiChF,OAAO,CAAhDgF,QAAQ,EAAAC,gBAAA,GAAiCjF,OAAO,CAAtCyB,OAAO,EAAPA,OAAO,GAAAwD,gBAAA,cAAG,IAAI,CAACb,WAAW,GAAAa,gBAAA;cACpCvE,IAAI,GAAK,IAAI,CAAbA,IAAI;cAAA,IAEPe,OAAO;gBAAA4D,SAAA,CAAA/C,IAAA;gBAAA;cAAA;cAAA,MACL,IAAIgD,mBAAW,CAAC;gBACrBC,IAAI,EAAE,oBAAoB;gBAC1BC,UAAU,EAAE;cACb,CAAC,CAAC;YAAA;cAGH9E,IAAI,CAAC+E,KAAK,EAAE;cACZ/E,IAAI,CAACgF,UAAU,CAACV,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,eAAe,CAAC;cAEtCE,WAAmC,GAAG,CAAC,CAAC;cAE9C,IAAI,CAAC3E,WAAW,CAACiC,cAAc,EAAE,CAAChD,OAAO,CAAC,UAACoE,UAAU,EAAK;gBACzD,IAAQjB,IAAI,GAAYiB,UAAU,CAA1BjB,IAAI;kBAAEkB,KAAK,GAAKD,UAAU,CAApBC,KAAK;gBACnB,IAAM8B,iBAAiB,GAAGhD,IAA+B;;gBAEzD;gBACA,IAAMiD,SAAS,GACdnE,OAAO,CAACE,gBAAgB,CAACgE,iBAAiB,CAAC,KAAK7F,cAAc,CAACoE,OAAO;gBACvE,IAAM2B,aAAa,MAAAC,MAAA,CAAMrE,OAAO,CAACC,OAAO,CAACiE,iBAAiB,CAAC,CAAE;;gBAE7D;gBACA,IAAII,aAAa,GAAG,EAAE;gBAEtB,IAAMC,gBAAgB,GAAGjB,MAAI,CAACzE,iBAAiB,CAACqF,iBAAiB,CAAC;gBAElE,QAAQK,gBAAgB,CAAChC,IAAI;kBAC5B,KAAK,QAAQ;oBACZ+B,aAAa,GAAGC,gBAAgB,CAACtE,OAAO,CAAC,CAAC,CAAC;oBAC3C;kBACD;oBACC;oBACAqE,aAAa,GAAGC,gBAAgB,CAAC7C,MAAM;gBAAA;gBAGzC,IAAM8C,SAAS,GAAGpC,KAAK,CAACqC,KAAK,IAAI,WAAW;gBAE5C,IAAIN,SAAS,EAAE;kBACdV,WAAW,CAACe,SAAS,CAAC,MAAAH,MAAA,CAAMK,iBAAK,CAACC,aAAa,CAACC,KAAK,CACpD,UAAU,CACV,OAAAP,MAAA,CAAID,aAAa,MAAG;gBACtB,CAAC,MAAM;kBACNX,WAAW,CAACe,SAAS,CAAC,MAAAH,MAAA,CAAMK,iBAAK,CAACG,WAAW,CAACD,KAAK,CAClD,QAAQ,CACR,QAAAP,MAAA,CAAKK,iBAAK,CAACI,aAAa,CAACV,aAAa,CAAC,UAAAC,MAAA,CAAOC,aAAa,CAAE;gBAC/D;cACD,CAAC,CAAC;cAEFrF,IAAI,CAAC8F,YAAY,CAACtB,WAAW,CAAC;cAE9BxE,IAAI,CAAC+F,UAAU,iBAAAX,MAAA,CAAiBrE,OAAO,CAACG,cAAc,EAAG;cACzDlB,IAAI,CAAC+F,UAAU,eAAAX,MAAA,CAAerE,OAAO,CAACI,YAAY,EAAG;cAErDnB,IAAI,CAACgG,cAAc,gBAAAZ,MAAA,CACH,CAACrE,OAAO,CAAC4C,cAAc,GAAG,GAAG,EAAEK,OAAO,CAAC,CAAC,CAAC,OACxD;cAAAW,SAAA,CAAA/C,IAAA;cAAA,OAEK5B,IAAI,CAACiG,YAAY,EAAE;YAAA;YAAA;cAAA,OAAAtB,SAAA,CAAAT,IAAA;UAAA;QAAA,GAAAE,QAAA;MAAA,CACzB;MAAA,SAAA8B,UAAA;QAAA,OAAA/B,UAAA,CAAA5F,KAAA,OAAAI,SAAA;MAAA;MAAA,OAAAuH,SAAA;IAAA,IAED;EAAA;IAAAnH,GAAA;IAAAqB,KAAA,EACA,SAAAV,yBAAiCC,SAAwB,EAAK;MAC7D;MACA,IAAMmB,MAA0B,GAAG,CAAC,CAAC;MAErC/C,MAAM,CAACD,IAAI,CAAC6B,SAAS,CAAC,CAACb,OAAO,CAAC,UAAC0D,SAAS,EAAK;QAC7C,IAAM2D,QAAQ,GAAGxG,SAAS,CAAC6C,SAAS,CAAC;QAErC,QAAQ2D,QAAQ,CAAC7C,IAAI;UACpB,KAAK,QAAQ;YACZxC,MAAM,CAAC0B,SAAS,CAAC,GAAG;cACnBc,IAAI,EAAE6C,QAAQ,CAAC7C,IAAI;cACnBkC,KAAK,EAAEW,QAAQ,CAACA,QAAQ;cACxB7G,OAAO,EAAE;gBACR8G,OAAO,EAAE,IAAAhE,eAAO,EACf+D,QAAQ,CAACnF,OAAO,CAACe,GAAG,CAAC,UAACoE,QAAQ,EAAEpD,GAAG;kBAAA,OAAM;oBACxC3C,KAAK,EACJ2C,GAAG,KAAK,CAAC,MAAAqC,MAAA,CACHhG,cAAc,CAACoE,OAAO,OAAA4B,MAAA,CAAIrC,GAAG,OAAAqC,MAAA,CAC7BhG,cAAc,CAACqE,SAAS,OAAA2B,MAAA,CAAIrC,GAAG,CAAE;oBACxCyC,KAAK,EAAEW;kBACR,CAAC;gBAAA,CAAC,CAAC;cAEL;YACD,CAAC;YACD;UACD;YACCrF,MAAM,CAAC0B,SAAS,CAAC,GAAG;cACnBc,IAAI,EAAE6C,QAAQ,CAAC7C,IAAI;cACnBkC,KAAK,EAAEW,QAAQ,CAACA;YACjB,CAAC;QAAA;MAEJ,CAAC,CAAC;;MAEF;MACA,IAAM1G,UAAa,GAAG;QACrB4G,EAAE,EAAE,eAAe;QACnBpE,IAAI,EAAE,gBAAgB;QACtBnB,MAAM,EAANA;MACD,CAAC;MAED,OAAOrB,UAAU;IAClB;EAAC;EAAA,OAAAJ,aAAA;AAAA;AAAAiH,OAAA,cAAAjH,aAAA"}
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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"}
package/build/index.js CHANGED
File without changes
@@ -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
+ }
@@ -1,4 +1,8 @@
1
1
  export { parse, parseForESLint, ParserOptions } from './parser';
2
2
  export { ParserServices, clearCaches, createProgram, } from '@typescript-eslint/typescript-estree';
3
3
  export declare const version: string;
4
+ export declare const meta: {
5
+ name: string;
6
+ version: string;
7
+ };
4
8
  //# sourceMappingURL=index.d.ts.map