@powerhousedao/codegen 0.36.0 → 0.37.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 (144) hide show
  1. package/dist/cli.js +0 -78
  2. package/dist/create-lib/index.js +0 -7
  3. package/dist/index.d.ts +4 -6
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -4
  6. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.d.ts +25 -0
  7. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.d.ts.map +1 -0
  8. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.js +60 -0
  9. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts +24 -0
  10. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts.map +1 -0
  11. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +25 -0
  12. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/index.d.ts +22 -0
  13. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/index.d.ts.map +1 -0
  14. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/index.js +19 -0
  15. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts +21 -0
  16. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts.map +1 -0
  17. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js +13 -0
  18. package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.d.ts +14 -0
  19. package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.d.ts.map +1 -0
  20. package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.js +8 -0
  21. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.d.ts +21 -0
  22. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.d.ts.map +1 -0
  23. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js +13 -0
  24. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.d.ts +20 -0
  25. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.d.ts.map +1 -0
  26. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.js +13 -0
  27. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.d.ts +16 -0
  28. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.d.ts.map +1 -0
  29. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js +9 -0
  30. package/dist/src/codegen/graphql.d.ts +16 -0
  31. package/dist/src/codegen/graphql.d.ts.map +1 -0
  32. package/dist/src/codegen/graphql.js +91 -0
  33. package/dist/src/codegen/hygen.d.ts +23 -0
  34. package/dist/src/codegen/hygen.d.ts.map +1 -0
  35. package/dist/src/codegen/hygen.js +162 -0
  36. package/dist/src/codegen/index.d.ts +13 -0
  37. package/dist/src/codegen/index.d.ts.map +1 -0
  38. package/dist/src/codegen/index.js +123 -0
  39. package/dist/src/codegen/utils.d.ts +4 -0
  40. package/dist/src/codegen/utils.d.ts.map +1 -0
  41. package/dist/src/codegen/utils.js +40 -0
  42. package/dist/src/create-lib/create-project.d.ts +25 -0
  43. package/dist/src/create-lib/create-project.d.ts.map +1 -0
  44. package/dist/src/create-lib/create-project.js +158 -0
  45. package/dist/src/create-lib/index.d.ts +2 -0
  46. package/dist/src/create-lib/index.d.ts.map +1 -0
  47. package/dist/src/create-lib/index.js +1 -0
  48. package/dist/src/utils/cli.d.ts +26 -0
  49. package/dist/src/utils/cli.d.ts.map +1 -0
  50. package/dist/src/utils/cli.js +56 -0
  51. package/dist/src/utils/index.d.ts +4 -0
  52. package/dist/src/utils/index.d.ts.map +1 -0
  53. package/dist/src/utils/index.js +3 -0
  54. package/dist/src/utils/mock.d.ts +4 -0
  55. package/dist/src/utils/mock.d.ts.map +1 -0
  56. package/dist/src/utils/mock.js +4 -0
  57. package/dist/src/utils/package-manager.d.ts +5 -0
  58. package/dist/src/utils/package-manager.d.ts.map +1 -0
  59. package/dist/src/utils/package-manager.js +16 -0
  60. package/dist/tsconfig.tsbuildinfo +1 -0
  61. package/package.json +12 -19
  62. package/dist/cli.d.ts +0 -1
  63. package/dist/cli.js.map +0 -1
  64. package/dist/codegen/.hygen/templates/package.json +0 -3
  65. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/actions.esm.t +0 -16
  66. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/creators.esm.t +0 -8
  67. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/customUtils.esm.t +0 -5
  68. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/documentModel.esm.t +0 -7
  69. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/documentModelTest.esm.t +0 -25
  70. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.esm.t +0 -9
  71. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.js +0 -73
  72. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/index.js.map +0 -1
  73. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/lib.esm.t +0 -9
  74. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/lib.inject_export.esm.t +0 -7
  75. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/object.esm.t +0 -49
  76. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/reducer.esm.t +0 -35
  77. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/rootIndex.esm.t +0 -41
  78. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/schema.esm.t +0 -6
  79. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/types.esm.t +0 -19
  80. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model/utils.esm.t +0 -43
  81. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/actions.esm.t +0 -22
  82. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/creators.esm.t +0 -34
  83. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/customReducers.esm.t +0 -20
  84. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/customTest.esm.t +0 -53
  85. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/error.esm.t +0 -40
  86. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +0 -33
  87. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js.map +0 -1
  88. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/object.esm.t +0 -37
  89. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-module/operations.esm.t +0 -17
  90. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/index.js +0 -25
  91. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/index.js.map +0 -1
  92. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/resolvers.esm.t +0 -62
  93. package/dist/codegen/.hygen/templates/powerhouse/generate-document-model-mutations/schema.esm.t +0 -31
  94. package/dist/codegen/.hygen/templates/powerhouse/generate-editor/editor.esm.t +0 -23
  95. package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.esm.t +0 -22
  96. package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.js +0 -17
  97. package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.js.map +0 -1
  98. package/dist/codegen/.hygen/templates/powerhouse/generate-editor/lib.esm.t +0 -9
  99. package/dist/codegen/.hygen/templates/powerhouse/generate-editor/lib.inject_export.esm.t +0 -7
  100. package/dist/codegen/.hygen/templates/powerhouse/generate-editor/story.esm.t +0 -31
  101. package/dist/codegen/.hygen/templates/powerhouse/generate-import-script/index.esm.t +0 -59
  102. package/dist/codegen/.hygen/templates/powerhouse/generate-import-script/index.js +0 -14
  103. package/dist/codegen/.hygen/templates/powerhouse/generate-import-script/index.js.map +0 -1
  104. package/dist/codegen/.hygen/templates/powerhouse/generate-import-script/utils.esm.t +0 -100
  105. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.esm.t +0 -66
  106. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js +0 -17
  107. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js.map +0 -1
  108. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.esm.t +0 -9
  109. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_export.esm.t +0 -7
  110. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.esm.t +0 -62
  111. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.js +0 -17
  112. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.js.map +0 -1
  113. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/lib.esm.t +0 -9
  114. package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/lib.inject_export.esm.t +0 -8
  115. package/dist/codegen/.hygen/templates/powerhouse/generate-subgraph/index.esm.t +0 -61
  116. package/dist/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js +0 -15
  117. package/dist/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js.map +0 -1
  118. package/dist/codegen/.hygen/templates/powerhouse/generate-subgraph/lib.esm.t +0 -9
  119. package/dist/codegen/.hygen/templates/powerhouse/generate-subgraph/lib.inject_export.esm.t +0 -7
  120. package/dist/codegen/graphql.js +0 -97
  121. package/dist/codegen/graphql.js.map +0 -1
  122. package/dist/codegen/hygen.js +0 -179
  123. package/dist/codegen/hygen.js.map +0 -1
  124. package/dist/codegen/index.js +0 -146
  125. package/dist/codegen/index.js.map +0 -1
  126. package/dist/codegen/utils.js +0 -38
  127. package/dist/codegen/utils.js.map +0 -1
  128. package/dist/create-lib/index.js.map +0 -1
  129. package/dist/create-lib/init.js +0 -182
  130. package/dist/create-lib/init.js.map +0 -1
  131. package/dist/create-lib/utils.js +0 -19
  132. package/dist/create-lib/utils.js.map +0 -1
  133. package/dist/create-lib.d.ts +0 -1
  134. package/dist/graphql.d.ts +0 -18
  135. package/dist/hygen.d.ts +0 -28
  136. package/dist/index-DT1dkT-t.d.ts +0 -15
  137. package/dist/index.js.map +0 -1
  138. package/dist/utils/cli.js +0 -61
  139. package/dist/utils/cli.js.map +0 -1
  140. package/dist/utils/index.js +0 -6
  141. package/dist/utils/index.js.map +0 -1
  142. package/dist/utils/mock.js +0 -9
  143. package/dist/utils/mock.js.map +0 -1
  144. package/dist/utils.d.ts +0 -59
package/package.json CHANGED
@@ -1,24 +1,17 @@
1
1
  {
2
2
  "name": "@powerhousedao/codegen",
3
- "version": "0.36.0",
3
+ "version": "0.37.0",
4
4
  "license": "AGPL-3.0-only",
5
5
  "private": false,
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
6
  "type": "module",
9
- "bin": {
10
- "powerhouse": "./dist/cli.js",
11
- "create-document-model-lib": "./dist/create-lib/index.js"
12
- },
13
7
  "files": [
14
8
  "/dist"
15
9
  ],
16
- "exports": {
17
- ".": "./dist/index.js",
18
- "./graphql": "./dist/codegen/graphql.js",
19
- "./hygen": "./dist/codegen/hygen.js",
20
- "./create-lib": "./dist/create-lib/index.js",
21
- "./utils": "./dist/utils/index.js"
10
+ "exports": "./dist/index.js",
11
+ "imports": {
12
+ "#utils/*": "./dist/src/utils/*.js",
13
+ "#codegen/*": "./dist/src/codegen/*.js",
14
+ "#create-lib/*": "./dist/src/create-lib/*.js"
22
15
  },
23
16
  "dependencies": {
24
17
  "@acaldas/graphql-codegen-typescript-validation-schema": "^0.12.3",
@@ -33,24 +26,24 @@
33
26
  "execa": "^8.0.1",
34
27
  "hygen": "^6.2.11",
35
28
  "prettier": "^3.4.2",
36
- "@powerhousedao/config": "1.17.0",
37
- "document-model": "2.20.0"
29
+ "@powerhousedao/config": "1.18.0",
30
+ "document-model": "2.21.0"
38
31
  },
39
32
  "devDependencies": {
40
33
  "copyfiles": "^2.4.1",
41
34
  "esbuild-fix-imports-plugin": "^1.0.7",
42
35
  "graphql": "^16.8.1",
43
36
  "husky": "^8.0.3",
44
- "@powerhousedao/scalars": "1.23.0"
37
+ "@powerhousedao/scalars": "1.25.0",
38
+ "@powerhousedao/codegen": "0.37.0"
45
39
  },
46
40
  "scripts": {
47
- "check-types": "tsc --build",
48
- "postlint": "npm run check-types",
41
+ "build:tsc": "tsc --build",
49
42
  "lint": "eslint .",
50
43
  "lint:nx": "eslint . --fix --quiet",
51
44
  "clean": "rimraf dist/",
52
45
  "copy-files": "copyfiles -u 1 src/codegen/.hygen/templates/**/*.esm.t dist/",
53
- "build": "tsup",
46
+ "build": "tsc --build",
54
47
  "build:create-lib": "tsc --project src/create-lib/tsconfig.json",
55
48
  "publish:create-lib": "npm publish --cwd ./src/create-lib/",
56
49
  "start": "tsx src/cli.ts",
package/dist/cli.d.ts DELETED
@@ -1 +0,0 @@
1
- #! /usr/bin/env node
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli.ts"],"names":[],"mappings":"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","file":"cli.js","sourcesContent":["#! /usr/bin/env node\nimport { getConfig } from \"@powerhousedao/config/powerhouse\";\nimport {\n generate,\n generateEditor,\n generateFromFile,\n generateProcessor,\n generateSubgraph,\n} from \"./codegen/index\";\nimport { parseArgs, parseConfig, promptDirectories } from \"./utils/index\";\n\nfunction parseCommand(argv: string[]) {\n const args = parseArgs(argv, {\n \"--editor\": String,\n \"--subgraph\": String,\n \"-e\": \"--editor\",\n \"--processor\": String,\n \"--document-types\": String,\n \"--processor-type\": String,\n \"--file\": String,\n });\n\n const editorName = args[\"--editor\"];\n const processorName = args[\"--processor\"];\n const processorType = args[\"--processor-type\"];\n const subgraphName = args[\"--subgraph\"];\n const file = args[\"--file\"];\n\n return {\n processor: !!processorName,\n processorName,\n processorType,\n editor: !!editorName,\n editorName,\n documentTypes: args[\"--document-types\"],\n arg: args._,\n subgraph: !!subgraphName,\n subgraphName: subgraphName ?? \"example\",\n file,\n };\n}\n\nasync function main() {\n const argv = process.argv.slice(2);\n const baseConfig = getConfig();\n const argsConfig = parseConfig(argv);\n const config = { ...baseConfig, ...argsConfig };\n if (config.interactive) {\n const result = await promptDirectories(config);\n Object.assign(config, result);\n }\n\n const command = parseCommand(argv);\n\n if (command.editor) {\n if (!command.editorName) {\n throw new Error(\"Editor name is required (--editor or -e)\");\n }\n await generateEditor(\n command.editorName,\n command.documentTypes?.split(/[|,;]/g) ?? [],\n config,\n );\n } else if (command.processor) {\n if (!command.processorName) {\n throw new Error(\"processor name is required (--processor)\");\n }\n\n const type = !command.processorType\n ? \"analytics\"\n : (command.processorType as \"analytics\" | \"operational\");\n\n await generateProcessor(\n command.processorName,\n type,\n command.documentTypes?.split(/[|,;]/g) ?? [],\n config,\n );\n } else if (command.subgraph) {\n if (!command.subgraphName) {\n throw new Error(\"Subgraph name is required (--subgraph)\");\n }\n await generateSubgraph(command.subgraphName, command.file || null, config);\n } else if (command.file || command.arg.length === 2) {\n await generateFromFile(command.file || command.arg[1], config);\n } else {\n await generate(config);\n }\n}\n\nmain().catch((e: unknown) => {\n throw e;\n});\n"]}
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
@@ -1,16 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/actions.ts"
3
- force: true
4
- ---
5
- <% modules.forEach(module => { _%>
6
- import { <%= h.changeCase.pascal(documentType) %><%= h.changeCase.pascal(module.name) %>Action } from './<%= module.name %>/actions';
7
- <% }); _%>
8
-
9
- <% modules.forEach(module => { _%>
10
- export * from './<%= module.name %>/actions';
11
- <% }); _%>
12
-
13
- export type <%= h.changeCase.pascal(documentType) %>Action =
14
- <% modules.forEach(module => { _%>
15
- | <%= h.changeCase.pascal(documentType) %><%= h.changeCase.pascal(module.name) %>Action
16
- <% }); _%>;
@@ -1,8 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/creators.ts"
3
- force: true
4
- ---
5
-
6
- <% modules.forEach(module => { _%>
7
- export * from './<%= module.name %>/creators';
8
- <% }); _%>
@@ -1,5 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/src/utils.ts"
3
- unless_exists: true
4
- ---
5
- export {};
@@ -1,7 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/document-model.ts"
3
- force: true
4
- ---
5
- import type { DocumentModelState } from "document-model/document-model";
6
-
7
- export const documentModel: DocumentModelState = <%- documentModel %>;
@@ -1,25 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/src/tests/document-model.test.ts"
3
- unless_exists: true
4
- ---
5
- /**
6
- * This is a scaffold file meant for customization:
7
- * - change it by adding new tests or modifying the existing ones
8
- */
9
-
10
- import utils, { initialGlobalState, initialLocalState } from '../../gen/utils';
11
-
12
- describe('<%= h.changeCase.title(documentType) %> Document Model', () => {
13
- it('should create a new <%= h.changeCase.title(documentType) %> document', () => {
14
- const document = utils.createDocument();
15
-
16
- expect(document).toBeDefined();
17
- expect(document.documentType).toBe('<%- documentTypeId %>');
18
- });
19
-
20
- it('should create a new <%= h.changeCase.title(documentType) %> document with a valid initial state', () => {
21
- const document = utils.createDocument();
22
- expect(document.state.global).toStrictEqual(initialGlobalState);
23
- expect(document.state.local).toStrictEqual(initialLocalState);
24
- });
25
- });
@@ -1,9 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/index.ts"
3
- force: true
4
- ---
5
- export * from './actions';
6
- export * from './document-model';
7
- export * from './object';
8
- export * from './types';
9
- export * as actions from './creators';
@@ -1,73 +0,0 @@
1
- 'use strict';
2
-
3
- var changeCase = require('change-case');
4
-
5
- function documentModelToString(documentModel) {
6
- return JSON.stringify(
7
- {
8
- ...documentModel,
9
- specifications: documentModel.specifications.map((s) => ({
10
- ...s,
11
- state: Object.keys(s.state).reduce((values, scope) => {
12
- const state = s.state[scope];
13
- return {
14
- ...values,
15
- [scope]: {
16
- ...state,
17
- // initial value has to be stringified twice
18
- // as it is expected to be a string
19
- initialValue: JSON.stringify(state.initialValue)
20
- }
21
- };
22
- }, {})
23
- }))
24
- },
25
- null,
26
- 4
27
- );
28
- }
29
- var generate_document_model_default = {
30
- params: ({ args }) => {
31
- const documentModel = JSON.parse(args.documentModel);
32
- const latestSpec = documentModel.specifications[documentModel.specifications.length - 1];
33
- return {
34
- rootDir: args.rootDir,
35
- documentModel: documentModelToString(documentModel),
36
- documentTypeId: documentModel.id,
37
- documentType: documentModel.name,
38
- extension: documentModel.extension,
39
- modules: latestSpec.modules.map((m) => ({
40
- ...m,
41
- name: changeCase.paramCase(m.name)
42
- })),
43
- fileExtension: documentModel.extension,
44
- hasLocalSchema: latestSpec.state.local.schema !== "",
45
- ...getInitialStates(latestSpec.state)
46
- };
47
- }
48
- };
49
- function getInitialStates(scopeState) {
50
- const { global, local } = scopeState;
51
- const scopes = { global, local };
52
- Object.entries(scopes).forEach(([scope, state]) => {
53
- if (!isEmptyStateSchema(state.schema) && state.initialValue === "") {
54
- throw new Error(
55
- `${scope.charAt(0).toLocaleUpperCase() + scope.slice(1)} scope has a defined schema but is missing an initial value.`
56
- );
57
- }
58
- });
59
- return {
60
- initialGlobalState: handleEmptyState(global.initialValue),
61
- initialLocalState: handleEmptyState(local.initialValue)
62
- };
63
- }
64
- function isEmptyStateSchema(schema) {
65
- return schema === "" || !schema.includes("{");
66
- }
67
- function handleEmptyState(state) {
68
- return state === "" ? "{}" : state;
69
- }
70
-
71
- module.exports = generate_document_model_default;
72
- //# sourceMappingURL=index.js.map
73
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../src/codegen/.hygen/templates/powerhouse/generate-document-model/index.ts"],"names":["paramCase"],"mappings":"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","file":"index.js","sourcesContent":["import { paramCase } from \"change-case\";\nimport { DocumentModelState, ScopeState } from \"document-model/document-model\";\n\nfunction documentModelToString(documentModel: DocumentModelState) {\n return JSON.stringify(\n {\n ...documentModel,\n specifications: documentModel.specifications.map((s) => ({\n ...s,\n state: Object.keys(s.state).reduce((values, scope) => {\n const state = s.state[scope as keyof typeof s.state];\n return {\n ...values,\n [scope]: {\n ...state,\n // initial value has to be stringified twice\n // as it is expected to be a string\n initialValue: JSON.stringify(state.initialValue),\n },\n };\n }, {}),\n })),\n },\n null,\n 4,\n );\n}\n\nexport type Args = {\n documentModel: string;\n rootDir: string;\n};\n\nexport default {\n params: ({ args }: { args: Args }) => {\n const documentModel = JSON.parse(args.documentModel) as DocumentModelState;\n const latestSpec =\n documentModel.specifications[documentModel.specifications.length - 1];\n\n return {\n rootDir: args.rootDir,\n documentModel: documentModelToString(documentModel),\n documentTypeId: documentModel.id,\n documentType: documentModel.name,\n extension: documentModel.extension,\n modules: latestSpec.modules.map((m) => ({\n ...m,\n name: paramCase(m.name),\n })),\n fileExtension: documentModel.extension,\n hasLocalSchema: latestSpec.state.local.schema !== \"\",\n ...getInitialStates(latestSpec.state),\n };\n },\n};\n\nfunction getInitialStates(scopeState: ScopeState) {\n const { global, local } = scopeState;\n const scopes = { global, local };\n\n Object.entries(scopes).forEach(([scope, state]) => {\n if (!isEmptyStateSchema(state.schema) && state.initialValue === \"\") {\n throw new Error(\n `${\n scope.charAt(0).toLocaleUpperCase() + scope.slice(1)\n } scope has a defined schema but is missing an initial value.`,\n );\n }\n });\n\n return {\n initialGlobalState: handleEmptyState(global.initialValue),\n initialLocalState: handleEmptyState(local.initialValue),\n };\n}\n\nfunction isEmptyStateSchema(schema: string) {\n return schema === \"\" || !schema.includes(\"{\");\n}\n\nfunction handleEmptyState(state: string) {\n return state === \"\" ? \"{}\" : state;\n}\n"]}
@@ -1,9 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/index.ts"
3
- unless_exists: true
4
- ---
5
- /**
6
- * This is a scaffold file meant for customization.
7
- * Delete the file and run the code generator again to have it reset
8
- */
9
-
@@ -1,7 +0,0 @@
1
- ---
2
- inject: true
3
- append: true
4
- to: "<%= rootDir %>/index.ts"
5
- skip_if: "<%= h.changeCase.pascal(documentType) %>"
6
- ---
7
- export { module as <%= h.changeCase.pascal(documentType) %> } from './<%= h.changeCase.param(documentType) %>';
@@ -1,49 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/object.ts"
3
- force: true
4
- ---
5
- import { BaseDocument, ExtendedState, PartialState, applyMixins, SignalDispatch } from 'document-model/document';
6
- import { <%= h.changeCase.pascal(documentType) %>State, <%= h.changeCase.pascal(documentType) %>LocalState } from './types';
7
- import { <%= h.changeCase.pascal(documentType) %>Action } from './actions';
8
- import { reducer } from './reducer';
9
- import utils from './utils';
10
- <% modules.forEach(module => { _%>
11
- import <%= h.changeCase.pascal(documentType) %>_<%= h.changeCase.pascal(module.name) %> from './<%= module.name %>/object';
12
- <% }); _%>
13
-
14
- <% modules.forEach(module => { _%>
15
- export * from './<%= module.name %>/object';
16
- <% }); _%>
17
-
18
- // eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
19
- interface <%= h.changeCase.pascal(documentType) %> extends
20
- <%= modules.map(m => ' ' + h.changeCase.pascal(documentType) + '_' + h.changeCase.pascal(m.name)).join(',\n') %> {}
21
-
22
- // eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
23
- class <%= h.changeCase.pascal(documentType) %> extends BaseDocument<<%= h.changeCase.pascal(documentType) %>State, <%= h.changeCase.pascal(documentType) %>Action, <%= h.changeCase.pascal(documentType) %>LocalState> {
24
- static fileExtension = '<%= extension %>';
25
-
26
- constructor(initialState?: Partial<ExtendedState<PartialState<<%= h.changeCase.pascal(documentType) %>State>, PartialState<<%= h.changeCase.pascal(documentType) %>LocalState>>>, dispatch?: SignalDispatch) {
27
- super(reducer, utils.createDocument(initialState), dispatch);
28
- }
29
-
30
- public saveToFile(path: string, name?: string) {
31
- return super.saveToFile(path, <%= h.changeCase.pascal(documentType) %>.fileExtension, name);
32
- }
33
-
34
- public loadFromFile(path: string) {
35
- return super.loadFromFile(path);
36
- }
37
-
38
- static async fromFile(path: string) {
39
- const document = new this();
40
- await document.loadFromFile(path);
41
- return document;
42
- }
43
- }
44
-
45
- applyMixins(<%= h.changeCase.pascal(documentType) %>, [
46
- <%= modules.map(m => ' ' + h.changeCase.pascal(documentType) + '_' + h.changeCase.pascal(m.name)).join(',\n') %>
47
- ]);
48
-
49
- export { <%= h.changeCase.pascal(documentType) %> };
@@ -1,35 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/reducer.ts"
3
- force: true
4
- ---
5
- import { ImmutableStateReducer, utils } from "document-model/document";
6
- import { <%= h.changeCase.pascal(documentType) %>State, <%= h.changeCase.pascal(documentType) %>LocalState, z } from './types';
7
- import { <%= h.changeCase.pascal(documentType) %>Action } from './actions';
8
-
9
- <% modules.forEach(m => { _%>
10
- import { reducer as <%= h.changeCase.pascal(m.name) %>Reducer } from '../src/reducers/<%= h.changeCase.param(m.name) %>';
11
- <%_ }); %>
12
-
13
- const stateReducer: ImmutableStateReducer<<%= h.changeCase.pascal(documentType) %>State, <%= h.changeCase.pascal(documentType) %>Action, <%= h.changeCase.pascal(documentType) %>LocalState> =
14
- (state, action, dispatch) => {
15
- if (utils.isBaseAction(action)) {
16
- return state;
17
- }
18
-
19
- switch (action.type) {
20
- <%-
21
- modules.map(m => m.operations.map(o =>
22
- ' case "' + h.changeCase.constant(o.name) + '":\n' +
23
- ' ' + (o.schema !== null ?
24
- 'z.' + h.changeCase.pascalCase(o.name) + 'InputSchema().parse(action.input);\n' :
25
- 'if (Object.keys(action.input).length > 0) throw new Error("Expected empty input for action ' + h.changeCase.constant(o.name) + '");\n') +
26
- ' ' + h.changeCase.pascal(m.name) + 'Reducer.' + h.changeCase.camel(o.name) + 'Operation(state[action.scope], action, dispatch);\n' +
27
- ' break;\n'
28
- ).join('\n')).join('\n')
29
- %>
30
- default:
31
- return state;
32
- }
33
- }
34
-
35
- export const reducer = utils.createReducer<<%= h.changeCase.pascal(documentType) %>State, <%= h.changeCase.pascal(documentType) %>Action, <%= h.changeCase.pascal(documentType) %>LocalState>(stateReducer);
@@ -1,41 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/index.ts"
3
- force: true
4
- ---
5
- /**
6
- * This is a scaffold file meant for customization.
7
- * Delete the file and run the code generator again to have it reset
8
- */
9
-
10
- import { actions as BaseActions, DocumentModel } from 'document-model/document';
11
- import { actions as <%= h.changeCase.pascal(documentType) %>Actions, <%= h.changeCase.pascal(documentType) %> } from './gen';
12
- import { reducer } from './gen/reducer';
13
- import { documentModel } from './gen/document-model';
14
- import genUtils from './gen/utils';
15
- import * as customUtils from './src/utils';
16
- import {
17
- <%= h.changeCase.pascal(documentType) %>State,
18
- <%= h.changeCase.pascal(documentType) %>Action,
19
- <%= h.changeCase.pascal(documentType) %>LocalState,
20
- } from './gen/types';
21
-
22
- const Document = <%= h.changeCase.pascal(documentType) %>;
23
- const utils = { ...genUtils, ...customUtils };
24
- const actions = { ...BaseActions, ...<%= h.changeCase.pascal(documentType) %>Actions };
25
-
26
- export const module: DocumentModel<
27
- <%= h.changeCase.pascal(documentType) %>State,
28
- <%= h.changeCase.pascal(documentType) %>Action,
29
- <%= h.changeCase.pascal(documentType) %>LocalState
30
- > = {
31
- Document,
32
- reducer,
33
- actions,
34
- utils,
35
- documentModel,
36
- };
37
-
38
- export { <%= h.changeCase.pascal(documentType) %>, Document, reducer, actions, utils, documentModel };
39
-
40
- export * from './gen/types';
41
- export * from './src/utils';
@@ -1,6 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/schema/index.ts"
3
- force: true
4
- ---
5
- export * from "./types";
6
- export * as z from "./zod";
@@ -1,19 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/types.ts"
3
- force: true
4
- ---
5
- import type { Document, ExtendedState } from 'document-model/document';
6
- import type { <%= h.changeCase.pascal(documentType) %>State } from './schema/types';
7
- <% if(hasLocalSchema) { -%>
8
- import type { <%= h.changeCase.pascal(documentType) %>LocalState } from './schema/types';
9
- <%} -%>
10
- import type { <%= h.changeCase.pascal(documentType) %>Action } from './actions';
11
-
12
- export { z } from './schema';
13
- export type * from './schema/types';
14
- <% if(!hasLocalSchema) { -%>
15
- type <%= h.changeCase.pascal(documentType) %>LocalState = Record<PropertyKey, never>;
16
- <%} -%>
17
- export type Extended<%= h.changeCase.pascal(documentType) %>State = ExtendedState<<%= h.changeCase.pascal(documentType) %>State, <%= h.changeCase.pascal(documentType) %>LocalState>;
18
- export type <%= h.changeCase.pascal(documentType) %>Document = Document<<%= h.changeCase.pascal(documentType) %>State, <%= h.changeCase.pascal(documentType) %>Action, <%= h.changeCase.pascal(documentType) %>LocalState>;
19
- export { <%= h.changeCase.pascal(documentType) %>State, <%= h.changeCase.pascal(documentType) %>LocalState, <%= h.changeCase.pascal(documentType) %>Action };
@@ -1,43 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/utils.ts"
3
- force: true
4
- ---
5
- import { DocumentModelUtils, utils as base } from 'document-model/document';
6
- import { <%= h.changeCase.pascal(documentType) %>Action, <%= h.changeCase.pascal(documentType) %>State, <%= h.changeCase.pascal(documentType) %>LocalState } from './types';
7
- import { reducer } from './reducer';
8
-
9
- export const initialGlobalState: <%= h.changeCase.pascal(documentType) %>State = <%- initialGlobalState %>;
10
- export const initialLocalState: <%= h.changeCase.pascal(documentType) %>LocalState = <%- initialLocalState %>;
11
-
12
- const utils: DocumentModelUtils<<%= h.changeCase.pascal(documentType) %>State, <%= h.changeCase.pascal(documentType) %>Action, <%= h.changeCase.pascal(documentType) %>LocalState> = {
13
- fileExtension: '<%- fileExtension %>',
14
- createState(state) {
15
- return { global: { ...initialGlobalState, ...state?.global }, local: { ...initialLocalState, ...state?.local } };
16
- },
17
- createExtendedState(extendedState) {
18
- return base.createExtendedState(
19
- { ...extendedState, documentType: '<%- documentTypeId %>' },
20
- utils.createState
21
- );
22
- },
23
- createDocument(state) {
24
- return base.createDocument(
25
- utils.createExtendedState(state),
26
- utils.createState
27
- );
28
- },
29
- saveToFile(document, path, name) {
30
- return base.saveToFile(document, path, '<%- fileExtension %>', name);
31
- },
32
- saveToFileHandle(document, input) {
33
- return base.saveToFileHandle(document, input);
34
- },
35
- loadFromFile(path) {
36
- return base.loadFromFile(path, reducer);
37
- },
38
- loadFromInput(input) {
39
- return base.loadFromInput(input, reducer);
40
- },
41
- };
42
-
43
- export default utils;
@@ -1,22 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/<%= module %>/actions.ts"
3
- force: true
4
- ---
5
- import { Action<% if (actions.find(a => a.hasAttachment)) {%>, ActionWithAttachment<%}%> } from 'document-model/document';
6
- import {
7
- <% actions.filter(a => a.hasInput).forEach(action => { _%>
8
- <%= h.changeCase.pascal(action.name) %>Input,
9
- <% }); _%>
10
- } from '../types';
11
-
12
- <% actions.filter(a => a.hasInput).forEach(actionType => { _%>
13
- export type <%= h.changeCase.pascal(actionType.name) %>Action = Action<%if(actionType.hasAttachment){ %>WithAttachment<% } %><'<%= h.changeCase.constantCase(actionType.name) %>', <%= h.changeCase.pascal(actionType.name) %>Input, '<%= actionType.scope %>'>;
14
- <% }); _%>
15
- <% actions.filter(a => !a.hasInput).forEach(actionType => { _%>
16
- export type <%= h.changeCase.pascal(actionType.name) %>Action = Action<'<%= h.changeCase.constantCase(actionType.name) %>', never, '<%= actionType.scope %>'>;
17
- <% }); _%>
18
-
19
- export type <%= h.changeCase.pascal(documentType) %><%= h.changeCase.pascal(module) %>Action =
20
- <% actions.forEach(actionType => { _%>
21
- | <%= h.changeCase.pascal(actionType.name) %>Action
22
- <% }); _%>;
@@ -1,34 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/<%= module %>/creators.ts"
3
- force: true
4
- ---
5
- import { utils<% if (actions.find(a => a.hasAttachment)) {%>, AttachmentInput<%}%> } from 'document-model/document';
6
- import { z,
7
- <% actions.filter(a => a.hasInput).forEach(action => { _%>
8
- <%= h.changeCase.pascal(action.name) %>Input,
9
- <% }); _%>
10
- } from '../types';
11
- import {
12
- <% actions.forEach(action => { _%>
13
- <%= h.changeCase.pascal(action.name) %>Action,
14
- <% }); _%>
15
- } from './actions';
16
-
17
- const { createAction } = utils;
18
-
19
- <% actions.filter(a => a.hasInput).forEach(action => { _%>
20
- export const <%= h.changeCase.camel(action.name) %> = (input: <%= h.changeCase.pascal(action.name) %>Input<%if(action.hasAttachment){ %>, attachments: AttachmentInput[] <% } %>) =>
21
- createAction<<%= h.changeCase.pascal(action.name) %>Action>(
22
- '<%= h.changeCase.constantCase(action.name) %>',
23
- {...input},
24
- <%if(action.hasAttachment){ %>attachments<% } else { %>undefined<% } %>,
25
- z.<%= h.changeCase.pascalCase(action.name) %>InputSchema,
26
- '<%= action.scope %>'
27
- );
28
-
29
- <% }); _%>
30
-
31
- <% actions.filter(a => !a.hasInput).forEach(action => { _%>
32
- export const <%= h.changeCase.camel(action.name) %> = () =>
33
- createAction<<%= h.changeCase.pascal(action.name) %>Action>('<%= h.changeCase.constantCase(action.name) %>');
34
- <% }); _%>
@@ -1,20 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/src/reducers/<%= module %>.ts"
3
- unless_exists: true
4
- ---
5
- /**
6
- * This is a scaffold file meant for customization:
7
- * - modify it by implementing the reducer functions
8
- * - delete the file and run the code generator again to have it reset
9
- */
10
-
11
- import { <%= h.changeCase.pascal(documentType) %><%= h.changeCase.pascal(module) %>Operations } from '../../gen/<%= module %>/operations';
12
-
13
- export const reducer: <%= h.changeCase.pascal(documentType) %><%= h.changeCase.pascal(module) %>Operations = {
14
- <% actions.forEach(action => { _%>
15
- <%= h.changeCase.camel(action.name) %>Operation(state, action, dispatch) {
16
- // TODO: Implement "<%= h.changeCase.camel(action.name) %>Operation" reducer
17
- throw new Error('Reducer "<%= h.changeCase.camel(action.name) %>Operation" not yet implemented');
18
- },
19
- <% }); _%>
20
- }
@@ -1,53 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/src/tests/<%= module %>.test.ts"
3
- unless_exists: true
4
- ---
5
- /**
6
- * This is a scaffold file meant for customization:
7
- * - change it by adding new tests or modifying the existing ones
8
- */
9
-
10
- import { generateMock } from '@powerhousedao/codegen';
11
- import { utils as documentModelUtils } from 'document-model/document';
12
-
13
- import utils from '../../gen/utils';
14
- import {
15
- z,
16
- <% actions.forEach(action => { _%>
17
- <%= h.changeCase.pascal(action.name) %>Input,
18
- <% }); _%>
19
- } from '../../gen/schema';
20
- import { reducer } from '../../gen/reducer';
21
- import * as creators from '../../gen/<%= module %>/creators';
22
- import { <%= h.changeCase.pascal(documentType) %>Document } from '../../gen/types';
23
-
24
- describe('<%= h.changeCase.pascal(module) %> Operations', () => {
25
- let document: <%= h.changeCase.pascal(documentType) %>Document;
26
-
27
- beforeEach(() => {
28
- document = utils.createDocument();
29
- });
30
-
31
- <% actions.forEach(action => { _%>
32
- it('should handle <%= h.changeCase.camel(action.name) %> operation', () => {
33
- // generate a random id
34
- // const id = documentModelUtils.hashKey();
35
-
36
- const input: <%= h.changeCase.pascal(action.name) %>Input = generateMock(
37
- z.<%= h.changeCase.pascal(action.name) %>InputSchema(),
38
- );
39
-
40
- const updatedDocument = reducer(
41
- document,
42
- creators.<%= h.changeCase.camel(action.name) %>(input),
43
- );
44
-
45
- expect(updatedDocument.operations.<%= action.scope %>).toHaveLength(1);
46
- expect(updatedDocument.operations.<%= action.scope %>[0].type).toBe(
47
- '<%= h.changeCase.constant(action.name) %>',
48
- );
49
- expect(updatedDocument.operations.<%= action.scope %>[0].input).toStrictEqual(input);
50
- expect(updatedDocument.operations.<%= action.scope %>[0].index).toEqual(0);
51
- });
52
- <% }); _%>
53
- });
@@ -1,40 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/<%= module %>/error.ts"
3
- force: true
4
- ---
5
- <% if (actions.some(action => action.errors?.length > 0)) { _%>
6
- export type ErrorCode =
7
- <% actions.forEach((action, actionIndex) => { _%>
8
- <% action.errors.forEach((error, errorIndex) => { _%>
9
- | '<%= h.changeCase.pascal(error.name) %>'<% if (actionIndex === actions.length - 1 && errorIndex === action.errors.length - 1) { %>;<% } %>
10
- <% }); _%>
11
- <% }); _%>
12
-
13
- export interface ReducerError {
14
- errorCode: ErrorCode;
15
- }
16
-
17
- <% actions.forEach(action => { _%>
18
- <% action.errors.forEach(error => { _%>
19
- export class <%= h.changeCase.pascal(error.name) %> extends Error implements ReducerError {
20
- errorCode = '<%= h.changeCase.pascal(error.name) %>' as ErrorCode;
21
- constructor(message = '<%= h.changeCase.pascal(error.name) %>') {
22
- super(message);
23
- }
24
- }
25
-
26
- <% }); _%>
27
- <% }); _%>
28
-
29
- <% } _%>
30
- export const errors = {
31
- <% actions.forEach(action => { _%>
32
- <% if(action.errors?.length > 0){ -%>
33
- <%= h.changeCase.pascal(action.name) %>: {
34
- <% action.errors.forEach(error => { _%>
35
- <%= h.changeCase.pascal(error.name) %>,
36
- <% }); _%>
37
- },
38
- <% } -%>
39
- <% }); _%>
40
- };