@sprucelabs/spruce-templates 25.0.0 → 26.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +7 -7
  3. package/build/addons/eq.addon.js.map +0 -1
  4. package/build/addons/escape.addon.js.map +0 -1
  5. package/build/addons/fieldDefinitionBodyPartial.addon.js.map +0 -1
  6. package/build/addons/fieldDefinitionOptions.addon.js.map +0 -1
  7. package/build/addons/fieldTypeEnum.addon.js.map +0 -1
  8. package/build/addons/fieldValue.addon.js.map +0 -1
  9. package/build/addons/gt.addon.js.map +0 -1
  10. package/build/addons/hasKeys.addon.js.map +0 -1
  11. package/build/addons/hasNoneCoreSchemaTemplateItems.addon.js.map +0 -1
  12. package/build/addons/importRelatedSchemas.addon.js.map +0 -1
  13. package/build/addons/index.js.map +0 -1
  14. package/build/addons/isDefined.addon.js.map +0 -1
  15. package/build/addons/json.addon.js.map +0 -1
  16. package/build/addons/neq.addon.js.map +0 -1
  17. package/build/addons/operators.addon.js.map +0 -1
  18. package/build/addons/pascalCase.addon.js.map +0 -1
  19. package/build/addons/permissionContractBuilder.addon.js.map +0 -1
  20. package/build/addons/schemaBodyPartial.addon.js.map +0 -1
  21. package/build/addons/schemaNamespacePath.addon.js.map +0 -1
  22. package/build/addons/schemaValuesPartial.addon.js.map +0 -1
  23. package/build/addons/valueTypeGenerator.addon.js.map +0 -1
  24. package/build/addons/valueTypeLiteral.addon.js.map +0 -1
  25. package/build/addons/valueTypeMapper.addon.js.map +0 -1
  26. package/build/dist/templates/directories/skill/.nvmrc +0 -1
  27. package/build/dist/templates/directories/skill/README.md +0 -4
  28. package/build/dist/templates/directories/skill/eslint.config.mjs +0 -3
  29. package/build/dist/templates/directories/skill/package.json.hbs +0 -15
  30. package/build/dist/templates/directories/skill/src/errors/SpruceError.ts.hbs +0 -20
  31. package/build/dist/templates/directories/skill/tsconfig.json +0 -39
  32. package/build/dist/templates/directories/vscode/.vscode/launch.json +0 -58
  33. package/build/dist/templates/directories/vscode/.vscode/settings.json +0 -67
  34. package/build/dist/templates/directories/vscode/.vscode/tasks.json +0 -112
  35. package/build/dist/templates/typescript/conversation/conversation.plugin.ts.hbs +0 -1
  36. package/build/dist/templates/typescript/conversation/conversation.topic.ts.hbs +0 -19
  37. package/build/dist/templates/typescript/deploy/deploy.plugin.ts.hbs +0 -1
  38. package/build/dist/templates/typescript/error/SpruceError.ts.hbs +0 -31
  39. package/build/dist/templates/typescript/error/error.plugin.ts.hbs +0 -78
  40. package/build/dist/templates/typescript/error/example.ts.hbs +0 -10
  41. package/build/dist/templates/typescript/error/options.types.ts.hbs +0 -12
  42. package/build/dist/templates/typescript/event/event.contract.ts.hbs +0 -26
  43. package/build/dist/templates/typescript/event/event.options.ts.hbs +0 -11
  44. package/build/dist/templates/typescript/event/events.contract.ts.hbs +0 -24
  45. package/build/dist/templates/typescript/event/listener.ts.hbs +0 -23
  46. package/build/dist/templates/typescript/event/listeners.ts.hbs +0 -15
  47. package/build/dist/templates/typescript/event/payload.builder.ts.hbs +0 -15
  48. package/build/dist/templates/typescript/log/transport.plugin.ts.hbs +0 -14
  49. package/build/dist/templates/typescript/permissions/contract.builder.ts.hbs +0 -36
  50. package/build/dist/templates/typescript/permissions/permission.plugin.ts.hbs +0 -1
  51. package/build/dist/templates/typescript/permissions/permissions.ts.hbs +0 -13
  52. package/build/dist/templates/typescript/permissions/permissions.types.ts.hbs +0 -14
  53. package/build/dist/templates/typescript/polish/polish.ts.hbs +0 -67
  54. package/build/dist/templates/typescript/sandbox/will-boot.listener.ts.hbs +0 -172
  55. package/build/dist/templates/typescript/schema/builder.ts.hbs +0 -24
  56. package/build/dist/templates/typescript/schema/core.schemas.types.ts.hbs +0 -34
  57. package/build/dist/templates/typescript/schema/example.ts.hbs +0 -20
  58. package/build/dist/templates/typescript/schema/fields/fieldClassMap.ts.hbs +0 -16
  59. package/build/dist/templates/typescript/schema/fields/fields.types.ts.hbs +0 -1
  60. package/build/dist/templates/typescript/schema/imported.schema.ts.hbs +0 -1
  61. package/build/dist/templates/typescript/schema/partials/fieldDefinitionBody.ts.hbs +0 -12
  62. package/build/dist/templates/typescript/schema/partials/schemaBody.ts.hbs +0 -20
  63. package/build/dist/templates/typescript/schema/partials/schemaValues.ts.hbs +0 -7
  64. package/build/dist/templates/typescript/schema/schema.plugin.ts.hbs +0 -101
  65. package/build/dist/templates/typescript/schema/schema.ts.hbs +0 -12
  66. package/build/dist/templates/typescript/schema/schemas.types.ts.hbs +0 -44
  67. package/build/dist/templates/typescript/schema/valueTypes.ts.hbs +0 -67
  68. package/build/dist/templates/typescript/store/Store.store.ts.hbs +0 -95
  69. package/build/dist/templates/typescript/store/store.plugin.ts.hbs +0 -1
  70. package/build/dist/templates/typescript/store/stores.ts.hbs +0 -9
  71. package/build/dist/templates/typescript/store/stores.types.ts.hbs +0 -17
  72. package/build/dist/templates/typescript/test/StaticTest.test.ts.hbs +0 -20
  73. package/build/dist/templates/typescript/test/Test.test.ts.hbs +0 -21
  74. package/build/dist/templates/typescript/view/App.ac.ts.hbs +0 -6
  75. package/build/dist/templates/typescript/view/View.svc.ts.hbs +0 -23
  76. package/build/dist/templates/typescript/view/View.vc.ts.hbs +0 -17
  77. package/build/dist/templates/typescript/view/skill.theme.ts.hbs +0 -70
  78. package/build/dist/templates/typescript/view/view.plugin.ts.hbs +0 -1
  79. package/build/dist/templates/typescript/view/viewController.plugin.ts.hbs +0 -3
  80. package/build/dist/templates/typescript/view/views.ts.hbs +0 -93
  81. package/build/esm/addons/eq.addon.d.ts +0 -1
  82. package/build/esm/addons/eq.addon.js +0 -4
  83. package/build/esm/addons/escape.addon.d.ts +0 -1
  84. package/build/esm/addons/escape.addon.js +0 -5
  85. package/build/esm/addons/fieldDefinitionBodyPartial.addon.d.ts +0 -1
  86. package/build/esm/addons/fieldDefinitionBodyPartial.addon.js +0 -8
  87. package/build/esm/addons/fieldDefinitionOptions.addon.d.ts +0 -1
  88. package/build/esm/addons/fieldDefinitionOptions.addon.js +0 -66
  89. package/build/esm/addons/fieldTypeEnum.addon.d.ts +0 -1
  90. package/build/esm/addons/fieldTypeEnum.addon.js +0 -9
  91. package/build/esm/addons/fieldValue.addon.d.ts +0 -1
  92. package/build/esm/addons/fieldValue.addon.js +0 -8
  93. package/build/esm/addons/gt.addon.d.ts +0 -1
  94. package/build/esm/addons/gt.addon.js +0 -4
  95. package/build/esm/addons/hasKeys.addon.d.ts +0 -1
  96. package/build/esm/addons/hasKeys.addon.js +0 -4
  97. package/build/esm/addons/hasNoneCoreSchemaTemplateItems.addon.d.ts +0 -1
  98. package/build/esm/addons/hasNoneCoreSchemaTemplateItems.addon.js +0 -6
  99. package/build/esm/addons/importRelatedSchemas.addon.d.ts +0 -1
  100. package/build/esm/addons/importRelatedSchemas.addon.js +0 -34
  101. package/build/esm/addons/index.d.ts +0 -23
  102. package/build/esm/addons/index.js +0 -23
  103. package/build/esm/addons/isDefined.addon.d.ts +0 -1
  104. package/build/esm/addons/isDefined.addon.js +0 -5
  105. package/build/esm/addons/json.addon.d.ts +0 -1
  106. package/build/esm/addons/json.addon.js +0 -7
  107. package/build/esm/addons/neq.addon.d.ts +0 -1
  108. package/build/esm/addons/neq.addon.js +0 -4
  109. package/build/esm/addons/operators.addon.d.ts +0 -1
  110. package/build/esm/addons/operators.addon.js +0 -15
  111. package/build/esm/addons/pascalCase.addon.d.ts +0 -1
  112. package/build/esm/addons/pascalCase.addon.js +0 -6
  113. package/build/esm/addons/permissionContractBuilder.addon.d.ts +0 -1
  114. package/build/esm/addons/permissionContractBuilder.addon.js +0 -4
  115. package/build/esm/addons/schemaBodyPartial.addon.d.ts +0 -1
  116. package/build/esm/addons/schemaBodyPartial.addon.js +0 -8
  117. package/build/esm/addons/schemaNamespacePath.addon.d.ts +0 -1
  118. package/build/esm/addons/schemaNamespacePath.addon.js +0 -18
  119. package/build/esm/addons/schemaValuesPartial.addon.d.ts +0 -1
  120. package/build/esm/addons/schemaValuesPartial.addon.js +0 -8
  121. package/build/esm/addons/valueTypeGenerator.addon.d.ts +0 -1
  122. package/build/esm/addons/valueTypeGenerator.addon.js +0 -15
  123. package/build/esm/addons/valueTypeLiteral.addon.d.ts +0 -1
  124. package/build/esm/addons/valueTypeLiteral.addon.js +0 -32
  125. package/build/esm/addons/valueTypeMapper.addon.d.ts +0 -1
  126. package/build/esm/addons/valueTypeMapper.addon.js +0 -9
  127. package/build/esm/index.d.ts +0 -141
  128. package/build/esm/index.js +0 -258
  129. package/build/esm/templates/directories/skill/.nvmrc +0 -1
  130. package/build/esm/templates/directories/skill/README.md +0 -4
  131. package/build/esm/templates/directories/skill/eslint.config.mjs +0 -3
  132. package/build/esm/templates/directories/skill/package.json.hbs +0 -15
  133. package/build/esm/templates/directories/skill/src/.spruce/errors/options.types.ts +0 -6
  134. package/build/esm/templates/directories/skill/src/.spruce/features/event.plugin.ts +0 -1
  135. package/build/esm/templates/directories/skill/src/.spruce/skill.ts +0 -8
  136. package/build/esm/templates/directories/skill/src/errors/SpruceError.ts.hbs +0 -20
  137. package/build/esm/templates/directories/skill/src/index.ts +0 -35
  138. package/build/esm/templates/directories/skill/tsconfig.json +0 -39
  139. package/build/esm/templates/directories/vscode/.vscode/launch.json +0 -58
  140. package/build/esm/templates/directories/vscode/.vscode/settings.json +0 -67
  141. package/build/esm/templates/directories/vscode/.vscode/tasks.json +0 -112
  142. package/build/esm/templates/typescript/conversation/conversation.plugin.ts.hbs +0 -1
  143. package/build/esm/templates/typescript/conversation/conversation.topic.ts.hbs +0 -19
  144. package/build/esm/templates/typescript/deploy/deploy.plugin.ts.hbs +0 -1
  145. package/build/esm/templates/typescript/error/SpruceError.ts.hbs +0 -31
  146. package/build/esm/templates/typescript/error/error.plugin.ts.hbs +0 -78
  147. package/build/esm/templates/typescript/error/example.ts.hbs +0 -10
  148. package/build/esm/templates/typescript/error/options.types.ts.hbs +0 -12
  149. package/build/esm/templates/typescript/event/event.contract.ts.hbs +0 -26
  150. package/build/esm/templates/typescript/event/event.options.ts.hbs +0 -11
  151. package/build/esm/templates/typescript/event/events.contract.ts.hbs +0 -24
  152. package/build/esm/templates/typescript/event/listener.ts.hbs +0 -23
  153. package/build/esm/templates/typescript/event/listeners.ts.hbs +0 -15
  154. package/build/esm/templates/typescript/event/payload.builder.ts.hbs +0 -15
  155. package/build/esm/templates/typescript/log/transport.plugin.ts.hbs +0 -14
  156. package/build/esm/templates/typescript/permissions/contract.builder.ts.hbs +0 -36
  157. package/build/esm/templates/typescript/permissions/permission.plugin.ts.hbs +0 -1
  158. package/build/esm/templates/typescript/permissions/permissions.ts.hbs +0 -13
  159. package/build/esm/templates/typescript/permissions/permissions.types.ts.hbs +0 -14
  160. package/build/esm/templates/typescript/polish/polish.ts.hbs +0 -67
  161. package/build/esm/templates/typescript/sandbox/will-boot.listener.ts.hbs +0 -172
  162. package/build/esm/templates/typescript/schema/builder.ts.hbs +0 -24
  163. package/build/esm/templates/typescript/schema/core.schemas.types.ts.hbs +0 -34
  164. package/build/esm/templates/typescript/schema/example.ts.hbs +0 -20
  165. package/build/esm/templates/typescript/schema/fields/fieldClassMap.ts.hbs +0 -16
  166. package/build/esm/templates/typescript/schema/fields/fields.types.ts.hbs +0 -1
  167. package/build/esm/templates/typescript/schema/imported.schema.ts.hbs +0 -1
  168. package/build/esm/templates/typescript/schema/partials/fieldDefinitionBody.ts.hbs +0 -12
  169. package/build/esm/templates/typescript/schema/partials/schemaBody.ts.hbs +0 -20
  170. package/build/esm/templates/typescript/schema/partials/schemaValues.ts.hbs +0 -7
  171. package/build/esm/templates/typescript/schema/schema.plugin.ts.hbs +0 -101
  172. package/build/esm/templates/typescript/schema/schema.ts.hbs +0 -12
  173. package/build/esm/templates/typescript/schema/schemas.types.ts.hbs +0 -44
  174. package/build/esm/templates/typescript/schema/valueTypes.ts.hbs +0 -67
  175. package/build/esm/templates/typescript/store/Store.store.ts.hbs +0 -95
  176. package/build/esm/templates/typescript/store/store.plugin.ts.hbs +0 -1
  177. package/build/esm/templates/typescript/store/stores.ts.hbs +0 -9
  178. package/build/esm/templates/typescript/store/stores.types.ts.hbs +0 -17
  179. package/build/esm/templates/typescript/test/StaticTest.test.ts.hbs +0 -20
  180. package/build/esm/templates/typescript/test/Test.test.ts.hbs +0 -21
  181. package/build/esm/templates/typescript/view/App.ac.ts.hbs +0 -6
  182. package/build/esm/templates/typescript/view/View.svc.ts.hbs +0 -23
  183. package/build/esm/templates/typescript/view/View.vc.ts.hbs +0 -17
  184. package/build/esm/templates/typescript/view/skill.theme.ts.hbs +0 -70
  185. package/build/esm/templates/typescript/view/view.plugin.ts.hbs +0 -1
  186. package/build/esm/templates/typescript/view/viewController.plugin.ts.hbs +0 -3
  187. package/build/esm/templates/typescript/view/views.ts.hbs +0 -93
  188. package/build/esm/types/templates.types.d.ts +0 -122
  189. package/build/esm/types/templates.types.js +0 -5
  190. package/build/esm/utilities/DirectoryTemplateUtility.d.ts +0 -15
  191. package/build/esm/utilities/DirectoryTemplateUtility.js +0 -79
  192. package/build/esm/utilities/KeyGeneratorUtility.d.ts +0 -5
  193. package/build/esm/utilities/KeyGeneratorUtility.js +0 -6
  194. package/build/esm/utilities/importExtractor.utility.d.ts +0 -10
  195. package/build/esm/utilities/importExtractor.utility.js +0 -32
  196. package/build/esm/utilities/templateImporter.utility.d.ts +0 -4
  197. package/build/esm/utilities/templateImporter.utility.js +0 -18
  198. package/build/esm/utilities/templateItem.utility.d.ts +0 -6
  199. package/build/esm/utilities/templateItem.utility.js +0 -25
  200. package/build/index.js.map +0 -1
  201. package/build/types/templates.types.js.map +0 -1
  202. package/build/utilities/DirectoryTemplateUtility.js.map +0 -1
  203. package/build/utilities/KeyGeneratorUtility.js.map +0 -1
  204. package/build/utilities/importExtractor.utility.js.map +0 -1
  205. package/build/utilities/templateImporter.utility.js.map +0 -1
  206. package/build/utilities/templateItem.utility.js.map +0 -1
@@ -1,101 +0,0 @@
1
- import fs from 'fs'
2
- import pathUtil from 'path'
3
- import globby from '@sprucelabs/globby'
4
- import { SchemaError } from '@sprucelabs/schema'
5
- import {
6
- SchemaHealthCheckItem,
7
- SkillFeature,
8
- Skill,
9
- diskUtil,
10
- HASH_SPRUCE_DIR_NAME,
11
- BootCallback,
12
- } from '@sprucelabs/spruce-skill-utils'
13
-
14
- class SchemaFeature implements SkillFeature {
15
- private skill: Skill
16
- private _isBooted = false
17
- private bootHandler?: BootCallback
18
-
19
- public constructor(skill: Skill) {
20
- this.skill = skill
21
- }
22
-
23
- public onBoot(cb: BootCallback) {
24
- this.bootHandler = cb
25
- }
26
-
27
- public execute = async () => {
28
- if (process.env.SHOULD_VALIDATE_SCHEMAS_ON_BOOT !== 'false') {
29
- await this.loadSchemas()
30
- }
31
- this._isBooted = true
32
- void this.bootHandler?.()
33
- }
34
-
35
- public checkHealth = async () => {
36
- const schemas = await this.loadSchemas()
37
-
38
- const health: SchemaHealthCheckItem = {
39
- status: 'passed',
40
- schemas,
41
- }
42
-
43
- return health
44
- }
45
-
46
- public async destroy() {
47
- this._isBooted = false
48
- }
49
-
50
- public isInstalled = async () => {
51
- const schemaPath = pathUtil.join(
52
- this.skill.rootDir,
53
- 'node_modules',
54
- '@sprucelabs/schema'
55
- )
56
-
57
- const isSchemaInstalled = fs.existsSync(schemaPath)
58
-
59
- return isSchemaInstalled
60
- }
61
-
62
- public isBooted() {
63
- return this._isBooted
64
- }
65
-
66
- private async loadSchemas() {
67
- const schemaFiles = await globby(
68
- diskUtil.resolvePath(
69
- this.skill.activeDir,
70
- HASH_SPRUCE_DIR_NAME,
71
- 'schemas',
72
- '**/*.schema.[t|j]s'
73
- )
74
- )
75
-
76
- return schemaFiles.map((file) => {
77
- try {
78
- const schema = require(file).default
79
- return {
80
- id: schema.id,
81
- name: schema.name,
82
- version: schema.version,
83
- namespace: schema.namespace ?? '***MISSING***',
84
- description: schema.description,
85
- }
86
- } catch (err: any) {
87
- throw new SchemaError({
88
- //@ts-ignore
89
- code: 'FAILED_LOADING_SCHEMA',
90
- originalError: err,
91
- friendlyMessage: `Error importing schema from: ${file}.`,
92
- })
93
- }
94
- })
95
- }
96
- }
97
-
98
- export default (skill: Skill) => {
99
- const feature = new SchemaFeature(skill)
100
- skill.registerFeature('schema', feature)
101
- }
@@ -1,12 +0,0 @@
1
- {{#if registerBuiltSchemas}}import { SchemaRegistry } from '@sprucelabs/schema'{{/if}}
2
- import { {{globalSchemaNamespace}} } from '{{typesFile}}'
3
-
4
- {{{ importRelatedSchemas schema }}}
5
-
6
- const {{nameCamel}}Schema: {{globalSchemaNamespace}}.{{namespace}}{{#if schema.version}}.{{schema.version}}{{/if}}.{{namePascal}}Schema = {
7
- {{> schemaBody nameCamel=nameCamel namespace=namespace schema=schema renderAs="value" }}
8
- }
9
-
10
- {{#if registerBuiltSchemas}}SchemaRegistry.getInstance().trackSchema({{nameCamel}}Schema){{/if}}
11
-
12
- export default {{nameCamel}}Schema
@@ -1,44 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-namespace */
2
- /* eslint-disable no-redeclare */
3
- /* eslint-disable @typescript-eslint/no-unused-vars */
4
- /* eslint-disable import/order */
5
-
6
- export { SpruceSchemas } from '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schemas.types'
7
-
8
- {{#if (hasNonCoreSchemaTemplateItems schemaTemplateItems)}}
9
- import { default as SchemaEntity } from '@sprucelabs/schema'
10
- {{/if}}
11
-
12
-
13
- {{#if (hasNonCoreSchemaTemplateItems schemaTemplateItems)}}
14
-
15
- {{#each imports}}
16
- import * as {{importAs}} from '{{package}}'
17
- {{/each}}
18
-
19
- {{#each schemaImports}}
20
- {{{this}}}
21
- {{/each}}
22
-
23
- declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schemas.types' {
24
-
25
- {{#each schemaTemplateItems}}
26
-
27
- namespace {{../globalSchemaNamespace}}.{{namespace}}{{#if (isDefined schema.version)}}.{{schema.version}}{{/if}} {
28
-
29
- {{#if schema.description}}/** {{schema.description}} */{{/if}}
30
- interface {{namePascal}}{{{schema.typeSuffix}}} {
31
- {{> schemaValues schema=schema renderAs="type" }}
32
- }
33
-
34
- interface {{namePascal}}Schema extends SpruceSchema.Schema {
35
- {{> schemaBody namespace=namespace schema=schema renderAs="type" }}
36
- }
37
-
38
- interface {{namePascal}}Entity extends SchemaEntity<{{../globalSchemaNamespace}}.{{namespace}}{{#if (isDefined schema.version)}}.{{schema.version}}{{/if}}.{{namePascal}}Schema> {}
39
-
40
- }
41
-
42
- {{/each}}
43
- }
44
- {{/if}}
@@ -1,67 +0,0 @@
1
- import { FieldDefinitions } from '#spruce/schemas/fields/fields.types'
2
-
3
- import fieldClassMap from '#spruce/schemas/fields/fieldClassMap'
4
- import { TemplateRenderAs, FieldTemplateDetailOptions } from '@sprucelabs/schema'
5
-
6
-
7
- {{#each imports}}
8
- // @ts-ignore
9
- import * as {{importAs}} from '{{package}}'
10
- {{/each}}
11
-
12
- const schemaTemplateItems = {{{json schemaTemplateItems}}}
13
- // @ts-ignore
14
- const generateTypeLiteral = (definition: FieldDefinitions, renderAs: TemplateRenderAs, importAs: string) => {
15
- const options: FieldTemplateDetailOptions<FieldDefinitions> = {
16
- language: 'ts',
17
- // @ts-ignore
18
- templateItems: schemaTemplateItems,
19
- globalNamespace: '{{globalSchemaNamespace}}',
20
- definition,
21
- importAs,
22
- renderAs
23
- }
24
-
25
- const FieldClass = fieldClassMap[definition.type]
26
- const details = FieldClass.generateTemplateDetails(
27
- options as any
28
- )
29
-
30
- return details.valueType
31
- }
32
-
33
-
34
- const valueTypes = {
35
- {{#each schemaTemplatesByNamespaceAndName}}
36
- "{{@key}}": {
37
- {{#each this}}
38
- "{{@key}}": {
39
- {{#each this}}
40
- "{{schema.version}}{{#unless schema.version}}{{../../../SCHEMA_VERSION_FALLBACK}}{{/unless}}":{
41
- {{#if schema.dynamicFieldSignature}}
42
- __dynamicFieldSignature: {
43
- valueTypes: {
44
- {{#each ../../../rendersAs}}
45
- {{this}}: {{{ valueTypeGenerator ../schema.dynamicFieldSignature this 'generateTypeLiteral'}}},
46
- {{/each}}
47
- }
48
- },
49
- {{/if}}
50
- {{#each schema.fields}}
51
- "{{@key}}": {
52
- valueTypes: {
53
- {{#each ../../../../rendersAs}}
54
- {{this}}: {{{ valueTypeGenerator ../this this 'generateTypeLiteral'}}},
55
- {{/each}}
56
- }
57
- },
58
- {{/each}}
59
- },
60
- {{/each}}
61
- },
62
- {{/each}}
63
- },
64
- {{/each}}
65
- }
66
-
67
- export default valueTypes
@@ -1,95 +0,0 @@
1
- import { AbstractStore, UniversalStoreOptions, PrepareOptions, PrepareResults } from '@sprucelabs/data-stores'
2
- import { buildSchema, dropFields, makeFieldsOptional, SchemaValues, SchemaFieldNames } from '@sprucelabs/schema'
3
-
4
- export default class {{namePascalPlural}}Store extends AbstractStore<
5
- FullSchema,
6
- CreateSchema,
7
- UpdateSchema,
8
- DatabaseSchema
9
- > {
10
- public name = '{{namePascalPlural}}'
11
- protected collectionName = '{{nameSnakePlural}}'
12
-
13
- protected createSchema = createSchema
14
- protected updateSchema = updateSchema
15
- protected fullSchema = fullSchema
16
- protected databaseSchema = databaseSchema
17
-
18
- public static Store(options: {{namePascal}}StoreOptions & UniversalStoreOptions) {
19
- return new this(options.db)
20
- }
21
-
22
- protected async willCreate(
23
- values: Create{{namePascal}}
24
- ): Promise<Omit<Database{{namePascal}}, 'id'>> {
25
- return values
26
- }
27
-
28
- protected async willUpdate(values: Update{{namePascal}}) {
29
- return values as Partial<Database{{namePascal}}>
30
- }
31
-
32
-
33
- protected async prepareRecord<
34
- IncludePrivateFields extends boolean,
35
- F extends SchemaFieldNames<FullSchema> = SchemaFieldNames<FullSchema>
36
- >(
37
- record: Database{{namePascal}},
38
- _options?: PrepareOptions<IncludePrivateFields, FullSchema, F>
39
- ) {
40
- return record as PrepareResults<FullSchema, IncludePrivateFields>
41
- }
42
-
43
- }
44
-
45
- // The structure of the data you'll be returning from finds
46
- const fullSchema = buildSchema({
47
- id: 'full{{namePascal}}',
48
- fields: {
49
- id: {
50
- type: 'id',
51
- isRequired: true,
52
- }
53
- },
54
- })
55
-
56
- // The values you will accept when creating a record
57
- const createSchema = buildSchema({
58
- id: 'create{{namePascal}}',
59
- fields: {
60
- ...dropFields(fullSchema.fields, ['id'])
61
- },
62
- })
63
-
64
- // The values you will accept when updating a record
65
- const updateSchema = buildSchema({
66
- id: 'update{{namePascal}}',
67
- fields: {
68
- ...makeFieldsOptional(dropFields(fullSchema.fields, ['id']))
69
- },
70
- })
71
-
72
- // The values you will actually save to the databases (in this case, makes id required)
73
- const databaseSchema = buildSchema({
74
- id: 'database{{namePascal}}',
75
- fields: {
76
- ...fullSchema.fields,
77
- id: {
78
- type: 'id',
79
- isRequired: true
80
- }
81
- },
82
- })
83
-
84
- type FullSchema = typeof fullSchema
85
- type CreateSchema = typeof createSchema
86
- type UpdateSchema = typeof updateSchema
87
- type DatabaseSchema = typeof databaseSchema
88
-
89
- // type {{namePascal}} = SchemaValues<FullSchema>
90
- type Create{{namePascal}} = SchemaValues<CreateSchema>
91
- type Update{{namePascal}} = SchemaValues<UpdateSchema>
92
- type Database{{namePascal}} = SchemaValues<DatabaseSchema>
93
- // type Query{{namePascal}} = Partial<{{namePascal}}>
94
-
95
- type {{namePascal}}StoreOptions = UniversalStoreOptions
@@ -1 +0,0 @@
1
- export { plugin as default } from '@sprucelabs/spruce-store-plugin'
@@ -1,9 +0,0 @@
1
- {{#each stores}}
2
- import {{namePascalPlural}}Store from '{{path}}'
3
- {{/each}}
4
-
5
- export default {
6
- {{#each stores}}
7
- {{nameCamelPlural}}: {{namePascalPlural}}Store,
8
- {{/each}}
9
- }
@@ -1,17 +0,0 @@
1
- {{#each stores}}
2
- import {{namePascalPlural}}Store from '{{path}}'
3
- {{/each}}
4
-
5
- declare module '@sprucelabs/data-stores/build/types/stores.types' {
6
- interface StoreMap {
7
- {{#each stores}}
8
- {{nameCamelPlural}}: {{namePascalPlural}}Store
9
- {{/each}}
10
- }
11
-
12
- interface StoreOptionsMap {
13
- {{#each stores}}
14
- {{nameCamelPlural}}: Omit<Parameters<typeof {{namePascalPlural}}Store['Store']>[0], keyof UniversalStoreOptions>
15
- {{/each}}
16
- }
17
- }
@@ -1,20 +0,0 @@
1
- {{#if isTestFixturesInstalled}}import { fake } from '@sprucelabs/spruce-test-fixtures'{{/if}}
2
- import {{#unless (isDefined parentTestClass)}}AbstractSpruceTest, {{/unless}}{ test, assert } from '@sprucelabs/test-utils'
3
- {{#if (isDefined parentTestClass)}}import {{#if parentTestClass.isDefaultExport}}{{parentTestClass.name}}{{else}}{ {{parentTestClass.name}} }{{/if}} from '{{parentTestClass.importPath}}'
4
- {{/if}}
5
-
6
- {{#if isTestFixturesInstalled}}@fake.login(){{/if}}
7
- export default class {{namePascal}}Test extends {{#if (isDefined parentTestClass)}}{{parentTestClass.name}}{{else}}AbstractSpruceTest{{/if}} {
8
- @test()
9
- protected static async canCreate{{namePascal}}() {
10
- const {{nameCamel}} = new {{namePascal}}()
11
- assert.isTruthy({{nameCamel}})
12
- }
13
-
14
- @test()
15
- protected static async yourNextTest() {
16
- assert.isTrue(false)
17
- }
18
- }
19
-
20
- class {{namePascal}} {}
@@ -1,21 +0,0 @@
1
- {{#if isTestFixturesInstalled}}import { fake } from '@sprucelabs/spruce-test-fixtures'{{/if}}
2
- import {{#unless (isDefined parentTestClass)}}AbstractSpruceTest, {{/unless}}{ test, suite, assert } from '@sprucelabs/test-utils'
3
- {{#if (isDefined parentTestClass)}}import {{#if parentTestClass.isDefaultExport}}{{parentTestClass.name}}{{else}}{ {{parentTestClass.name}} }{{/if}} from '{{parentTestClass.importPath}}'
4
- {{/if}}
5
-
6
- {{#if isTestFixturesInstalled}}@fake.login(){{/if}}
7
- @suite()
8
- export default class {{namePascal}}Test extends {{#if (isDefined parentTestClass)}}{{parentTestClass.name}}{{else}}AbstractSpruceTest{{/if}} {
9
- @test()
10
- protected async canCreate{{namePascal}}() {
11
- const {{nameCamel}} = new {{namePascal}}()
12
- assert.isTruthy({{nameCamel}})
13
- }
14
-
15
- @test()
16
- protected async yourNextTest() {
17
- assert.isTrue(false)
18
- }
19
- }
20
-
21
- class {{namePascal}} {}
@@ -1,6 +0,0 @@
1
- import { AbstractAppController, AppControllerLoadOptions } from '@sprucelabs/heartwood-view-controllers'
2
-
3
- export default class {{ namespacePascal }}AppController extends AbstractAppController {
4
- public static id = "{{ id }}"
5
- public async load(_options: AppControllerLoadOptions) {}
6
- }
@@ -1,23 +0,0 @@
1
- import {
2
- AbstractSkillViewController,
3
- ViewControllerOptions,
4
- SkillView,
5
- } from '@sprucelabs/heartwood-view-controllers'
6
-
7
- export default class {{namePascal}}SkillViewController extends AbstractSkillViewController {
8
- public static id = '{{nameKebab}}'
9
-
10
- public constructor(options: ViewControllerOptions) {
11
- super(options)
12
- }
13
-
14
- public render(): SkillView {
15
- return {
16
- layouts: [
17
- {
18
- cards: [],
19
- },
20
- ],
21
- }
22
- }
23
- }
@@ -1,17 +0,0 @@
1
- import {
2
- AbstractViewController,
3
- ViewControllerOptions,
4
- {{viewModel}},
5
- } from '@sprucelabs/heartwood-view-controllers'
6
-
7
- export default class {{namePascal}}ViewController extends AbstractViewController<{{viewModel}}> {
8
- public static id = '{{nameKebab}}'
9
-
10
- public constructor(options: ViewControllerOptions) {
11
- super(options)
12
- }
13
-
14
- public render() {
15
- return {}
16
- }
17
- }
@@ -1,70 +0,0 @@
1
- import { SpruceSchemas } from '@sprucelabs/spruce-core-schemas'
2
- import '#spruce/schemas/schemas.types'
3
-
4
- // The Theme Skill (https://theme.spruce.bot/) is available to help you build your theme!
5
-
6
- const theme: SpruceSchemas.HeartwoodViewControllers.v2021_02_11.ThemeProps = {
7
- /**
8
- ************************************
9
- * Background
10
- ************************************
11
- */
12
- color1: '#ffffff',
13
- color1Inverse: '#0f4c8a',
14
- color1InverseGradient: 'linear-gradient(to left, #24c6dc, #514a9d)',
15
-
16
- /**
17
- ************************************
18
- * Cards
19
- ************************************
20
- */
21
- color2: 'black',
22
- color2Transparent: 'rgba(0,0,0,0.4)',
23
- color2Inverse: 'white',
24
- color2InverseTransparent: 'rgba(255,255,255,0.9)',
25
-
26
- /**
27
- ************************************
28
- * Headers
29
- ************************************
30
- */
31
- color3: 'grey',
32
- color3Inverse: 'transparent',
33
- color3Compliment: 'grey',
34
-
35
- /**
36
- ************************************
37
- * Buttons
38
- ************************************
39
- */
40
- color4: '#3a3a3a',
41
- color4Inverse: '#DCE0E7',
42
- color4Compliment: '#DCE0E4',
43
- color4ComplimentTransparent: 'rgba(0,0,0,0.2)',
44
- color4InverseCompliment: '#c7c7c7',
45
-
46
- /**
47
- ************************************
48
- * Control bar
49
- ************************************
50
- */
51
- controlBarColor1: 'black',
52
- controlBarColor2: 'white',
53
-
54
- /**
55
- ************************************
56
- * Tool belt
57
- ************************************
58
- */
59
- toolBeltColor2: 'white',
60
-
61
- /**
62
- ************************************
63
- * Errors
64
- ************************************
65
- */
66
- errorColor1: '#fff',
67
- errorColor1Inverse: '#FF3326',
68
- }
69
-
70
- export default theme
@@ -1 +0,0 @@
1
- export { plugin as default } from '@sprucelabs/spruce-view-plugin'
@@ -1,3 +0,0 @@
1
- import { ViewControllerPlugin } from '@sprucelabs/heartwood-view-controllers'
2
-
3
- export default class {{namePascal}}ViewPlugin implements ViewControllerPlugin {}
@@ -1,93 +0,0 @@
1
- {{#each svcTemplateItems}}
2
- import {{namePascal}} from '{{path}}'
3
- {{/each}}
4
- {{#each vcTemplateItems}}
5
- import {{namePascal}} from '{{path}}'
6
- {{/each}}
7
- {{#each viewPluginItems}}
8
- import {{namePascal}} from '{{path}}'
9
- {{/each}}
10
- {{#if appTemplateItem}}
11
- import {{appTemplateItem.namePascal}} from '{{appTemplateItem.path}}'
12
- {{/if}}
13
-
14
- import '@sprucelabs/heartwood-view-controllers'
15
-
16
- const vcs = {
17
- {{#each svcTemplateItems}}
18
- {{namePascal}},
19
- {{/each}}
20
- {{#each vcTemplateItems}}
21
- {{namePascal}},
22
- {{/each}}
23
- }
24
-
25
- export const pluginsByName = {
26
- {{#each viewPluginItems}}
27
- {{nameCamel}}: {{namePascal}},
28
- {{/each}}
29
- }
30
-
31
-
32
-
33
- {{#if svcTemplateItems}}
34
- type LoadOptions<Args extends Record<string,any>[]> = Args[0]['args'] extends Record<string, any> ? Args[0]['args'] : Record<never, any>
35
- {{/if}}
36
-
37
- declare module '@sprucelabs/heartwood-view-controllers/build/types/heartwood.types' {
38
- interface SkillViewControllerMap {
39
- {{#each svcTemplateItems}}
40
- '{{../namespaceKebab}}.{{id}}': {{namePascal}}
41
- {{/each}}
42
- }
43
-
44
- interface SkillViewControllerArgsMap {
45
- {{#each svcTemplateItems}}
46
- '{{../namespaceKebab}}.{{id}}': LoadOptions<Parameters<{{namePascal}}['load']>>
47
- {{/each}}
48
- }
49
-
50
- interface ViewControllerMap {
51
- {{#each vcTemplateItems}}
52
- '{{../namespaceKebab}}.{{id}}': {{namePascal}}
53
- {{/each}}
54
- {{#each svcTemplateItems}}
55
- '{{../namespaceKebab}}.{{id}}': {{namePascal}}
56
- {{/each}}
57
- }
58
-
59
- interface ViewControllerOptionsMap {
60
- {{#each vcTemplateItems}}
61
- '{{../namespaceKebab}}.{{id}}': ConstructorParameters<typeof {{namePascal}}>[0]
62
- {{/each}}
63
- }
64
-
65
- interface ViewControllerPlugins {
66
- {{#each viewPluginItems}}
67
- {{nameCamel}}: {{namePascal}}
68
- {{/each}}
69
- }
70
-
71
- interface AppControllerMap {
72
- {{#if appTemplateItem}}
73
- '{{namespaceKebab}}': {{appTemplateItem.namePascal}}
74
- {{/if}}
75
- }
76
- }
77
-
78
-
79
- //@ts-ignore
80
- if(typeof heartwood === 'function') {
81
- {{#if appTemplateItem}}
82
- //@ts-ignore
83
- heartwood({ vcs, pluginsByName, App: {{appTemplateItem.namePascal}} })
84
- {{else}}
85
- //@ts-ignore
86
- heartwood({ vcs, pluginsByName })
87
- {{/if}}
88
- }
89
-
90
- export default vcs
91
-
92
-
93
- export const App = {{#if appTemplateItem}}{{appTemplateItem.namePascal}}{{else}}undefined{{/if}}
@@ -1 +0,0 @@
1
- export {};
@@ -1,4 +0,0 @@
1
- import handlebars from 'handlebars';
2
- handlebars.registerHelper('eq', (num, min) => {
3
- return num === min;
4
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,5 +0,0 @@
1
- import handlebars from 'handlebars';
2
- /* Escape quotes */
3
- handlebars.registerHelper('escape', function (variable) {
4
- return variable && variable.replace && variable.replace(/(['])/g, '\\$1');
5
- });
@@ -1,8 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs-extra';
3
- import handlebars from 'handlebars';
4
- const templatePath = path.join(__dirname, '..', 'templates', 'typescript');
5
- const fieldPartial = fs
6
- .readFileSync(path.join(templatePath, 'schema/partials/fieldDefinitionBody.ts.hbs'))
7
- .toString();
8
- handlebars.registerPartial('fieldDefinitionBody', fieldPartial);
@@ -1 +0,0 @@
1
- export {};