@betty-blocks/cli 26.0.0-beta.9 → 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 (255) hide show
  1. package/assets/app-functions/wasm-template/.wasm-functions +0 -0
  2. package/assets/app-functions/wasm-template/functions/say-hello/1.0/Cargo.lock +449 -0
  3. package/assets/app-functions/wasm-template/functions/say-hello/1.0/Cargo.toml +10 -0
  4. package/assets/app-functions/wasm-template/functions/say-hello/1.0/Justfile +12 -0
  5. package/assets/app-functions/wasm-template/functions/say-hello/1.0/function.json +35 -0
  6. package/assets/app-functions/wasm-template/functions/say-hello/1.0/src/lib.rs +19 -0
  7. package/assets/app-functions/wasm-template/functions/say-hello/1.0/wit/world.wit +13 -0
  8. package/build/bb-blocks-new.d.ts +1 -0
  9. package/build/bb-blocks-new.js +26 -0
  10. package/build/bb-blocks-new.js.map +1 -0
  11. package/build/bb-blocks-publish.d.ts +1 -0
  12. package/build/bb-blocks-publish.js +98 -0
  13. package/build/bb-blocks-publish.js.map +1 -0
  14. package/build/bb-blocks-release.d.ts +1 -0
  15. package/build/bb-blocks-release.js +18 -0
  16. package/build/bb-blocks-release.js.map +1 -0
  17. package/build/bb-blocks.d.ts +1 -0
  18. package/build/bb-blocks.js +17 -0
  19. package/build/bb-blocks.js.map +1 -0
  20. package/build/bb-bundle-init.d.ts +1 -0
  21. package/build/bb-bundle-init.js +33 -0
  22. package/build/bb-bundle-init.js.map +1 -0
  23. package/build/bb-bundle.d.ts +1 -0
  24. package/build/bb-bundle.js +17 -0
  25. package/build/bb-bundle.js.map +1 -0
  26. package/build/bb-components-build.d.ts +1 -0
  27. package/build/bb-components-build.js +416 -0
  28. package/build/bb-components-build.js.map +1 -0
  29. package/build/bb-components-create.d.ts +1 -0
  30. package/build/bb-components-create.js +41 -0
  31. package/build/bb-components-create.js.map +1 -0
  32. package/build/bb-components-generate.d.ts +1 -0
  33. package/build/bb-components-generate.js +168 -0
  34. package/build/bb-components-generate.js.map +1 -0
  35. package/build/bb-components-publish-bundle.d.ts +1 -0
  36. package/build/bb-components-publish-bundle.js +50 -0
  37. package/build/bb-components-publish-bundle.js.map +1 -0
  38. package/build/bb-components-publish.d.ts +1 -0
  39. package/build/bb-components-publish.js +57 -0
  40. package/build/bb-components-publish.js.map +1 -0
  41. package/build/bb-components-serve.d.ts +1 -0
  42. package/build/bb-components-serve.js +35 -0
  43. package/build/bb-components-serve.js.map +1 -0
  44. package/build/bb-components.d.ts +1 -0
  45. package/build/bb-components.js +29 -0
  46. package/build/bb-components.js.map +1 -0
  47. package/build/bb-functions-bump.d.ts +1 -0
  48. package/build/bb-functions-bump.js +37 -0
  49. package/build/bb-functions-bump.js.map +1 -0
  50. package/build/bb-functions-init.d.ts +1 -0
  51. package/build/bb-functions-init.js +31 -0
  52. package/build/bb-functions-init.js.map +1 -0
  53. package/build/bb-functions-login.d.ts +1 -0
  54. package/build/bb-functions-login.js +17 -0
  55. package/build/bb-functions-login.js.map +1 -0
  56. package/build/bb-functions-logout.d.ts +1 -0
  57. package/build/bb-functions-logout.js +10 -0
  58. package/build/bb-functions-logout.js.map +1 -0
  59. package/build/bb-functions-new.d.ts +1 -0
  60. package/build/bb-functions-new.js +25 -0
  61. package/build/bb-functions-new.js.map +1 -0
  62. package/build/bb-functions-publish.d.ts +1 -0
  63. package/build/bb-functions-publish.js +52 -0
  64. package/build/bb-functions-publish.js.map +1 -0
  65. package/build/bb-functions-validate.d.ts +1 -0
  66. package/build/bb-functions-validate.js +17 -0
  67. package/build/bb-functions-validate.js.map +1 -0
  68. package/build/bb-functions.d.ts +1 -0
  69. package/build/bb-functions.js +29 -0
  70. package/build/bb-functions.js.map +1 -0
  71. package/build/bb.d.ts +2 -0
  72. package/build/bb.js +27 -0
  73. package/build/bb.js.map +1 -0
  74. package/build/blocks/blockDefinitions.d.ts +10 -0
  75. package/build/blocks/blockDefinitions.js +62 -0
  76. package/build/blocks/blockDefinitions.js.map +1 -0
  77. package/build/blocks/publishBlocks.d.ts +2 -0
  78. package/build/blocks/publishBlocks.js +54 -0
  79. package/build/blocks/publishBlocks.js.map +1 -0
  80. package/build/blocks/releaseBlocks.d.ts +5 -0
  81. package/build/blocks/releaseBlocks.js +78 -0
  82. package/build/blocks/releaseBlocks.js.map +1 -0
  83. package/build/components/bb-components-functions.d.ts +10 -0
  84. package/build/components/bb-components-functions.js +40 -0
  85. package/build/components/bb-components-functions.js.map +1 -0
  86. package/build/components/comments.d.ts +3 -0
  87. package/build/components/comments.js +78 -0
  88. package/build/components/comments.js.map +1 -0
  89. package/build/components/compatibility.d.ts +7 -0
  90. package/build/components/compatibility.js +60 -0
  91. package/build/components/compatibility.js.map +1 -0
  92. package/build/components/transformers/index.d.ts +3 -0
  93. package/build/components/transformers/index.js +36 -0
  94. package/build/components/transformers/index.js.map +1 -0
  95. package/build/components-build/index.d.ts +2 -0
  96. package/build/components-build/index.js +3 -0
  97. package/build/components-build/index.js.map +1 -0
  98. package/build/components-build/reportDiagnostics.d.ts +2 -0
  99. package/build/components-build/reportDiagnostics.js +13 -0
  100. package/build/components-build/reportDiagnostics.js.map +1 -0
  101. package/build/components-build/styles.d.ts +4 -0
  102. package/build/components-build/styles.js +87 -0
  103. package/build/components-build/styles.js.map +1 -0
  104. package/build/functions/config.d.ts +67 -0
  105. package/build/functions/config.js +190 -0
  106. package/build/functions/config.js.map +1 -0
  107. package/build/functions/createWasmDefinitionFiles.d.ts +4 -0
  108. package/build/functions/createWasmDefinitionFiles.js +61 -0
  109. package/build/functions/createWasmDefinitionFiles.js.map +1 -0
  110. package/build/functions/functionDefinitions.d.ts +23 -0
  111. package/build/functions/functionDefinitions.js +229 -0
  112. package/build/functions/functionDefinitions.js.map +1 -0
  113. package/build/functions/functionVersionBump.d.ts +19 -0
  114. package/build/functions/functionVersionBump.js +62 -0
  115. package/build/functions/functionVersionBump.js.map +1 -0
  116. package/build/functions/publishAppFunctions.d.ts +13 -0
  117. package/build/functions/publishAppFunctions.js +90 -0
  118. package/build/functions/publishAppFunctions.js.map +1 -0
  119. package/build/functions/publishWasmBlockStoreFunctions.d.ts +1 -0
  120. package/build/functions/publishWasmBlockStoreFunctions.js +100 -0
  121. package/build/functions/publishWasmBlockStoreFunctions.js.map +1 -0
  122. package/build/functions/utils.d.ts +2 -0
  123. package/build/functions/utils.js +20 -0
  124. package/build/functions/utils.js.map +1 -0
  125. package/build/functions/validateFunctions.d.ts +3 -0
  126. package/build/functions/validateFunctions.js +23 -0
  127. package/build/functions/validateFunctions.js.map +1 -0
  128. package/build/functions/validations.d.ts +31 -0
  129. package/build/functions/validations.js +140 -0
  130. package/build/functions/validations.js.map +1 -0
  131. package/build/interactions/compatibility.d.ts +3 -0
  132. package/build/interactions/compatibility.js +84 -0
  133. package/build/interactions/compatibility.js.map +1 -0
  134. package/build/interactions/diagnostics.d.ts +2 -0
  135. package/build/interactions/diagnostics.js +23 -0
  136. package/build/interactions/diagnostics.js.map +1 -0
  137. package/build/types.d.ts +377 -0
  138. package/build/types.js +40 -0
  139. package/build/types.js.map +1 -0
  140. package/build/utils/arguments.d.ts +2 -0
  141. package/build/utils/arguments.js +6 -0
  142. package/build/utils/arguments.js.map +1 -0
  143. package/build/utils/checkPackageVersion.d.ts +1 -0
  144. package/build/utils/checkPackageVersion.js +10 -0
  145. package/build/utils/checkPackageVersion.js.map +1 -0
  146. package/build/utils/checkUpdateAvailable.d.ts +1 -0
  147. package/build/utils/checkUpdateAvailable.js +65 -0
  148. package/build/utils/checkUpdateAvailable.js.map +1 -0
  149. package/build/utils/fusionAuth.d.ts +21 -0
  150. package/build/utils/fusionAuth.js +108 -0
  151. package/build/utils/fusionAuth.js.map +1 -0
  152. package/build/utils/hash.d.ts +2 -0
  153. package/build/utils/hash.js +3 -0
  154. package/build/utils/hash.js.map +1 -0
  155. package/build/utils/login.d.ts +15 -0
  156. package/build/utils/login.js +116 -0
  157. package/build/utils/login.js.map +1 -0
  158. package/build/utils/pick.d.ts +7 -0
  159. package/build/utils/pick.js +16 -0
  160. package/build/utils/pick.js.map +1 -0
  161. package/build/utils/readFilesByType.d.ts +2 -0
  162. package/build/utils/readFilesByType.js +23 -0
  163. package/build/utils/readFilesByType.js.map +1 -0
  164. package/build/utils/rootDir.d.ts +2 -0
  165. package/build/utils/rootDir.js +4 -0
  166. package/build/utils/rootDir.js.map +1 -0
  167. package/build/utils/serveComponentSet.d.ts +3 -0
  168. package/build/utils/serveComponentSet.js +52 -0
  169. package/build/utils/serveComponentSet.js.map +1 -0
  170. package/build/utils/transpile.d.ts +2 -0
  171. package/build/utils/transpile.js +25 -0
  172. package/build/utils/transpile.js.map +1 -0
  173. package/build/utils/uploadBlob.d.ts +24 -0
  174. package/build/utils/uploadBlob.js +56 -0
  175. package/build/utils/uploadBlob.js.map +1 -0
  176. package/build/utils/validation.d.ts +4 -0
  177. package/build/utils/validation.js +74 -0
  178. package/build/utils/validation.js.map +1 -0
  179. package/build/validations/component.d.ts +3 -0
  180. package/build/validations/component.js +56 -0
  181. package/build/validations/component.js.map +1 -0
  182. package/build/validations/constants.d.ts +16 -0
  183. package/build/validations/constants.js +208 -0
  184. package/build/validations/constants.js.map +1 -0
  185. package/build/validations/function-block-validations/index.d.ts +22 -0
  186. package/build/validations/function-block-validations/index.js +72 -0
  187. package/build/validations/function-block-validations/index.js.map +1 -0
  188. package/build/validations/interaction.d.ts +3 -0
  189. package/build/validations/interaction.js +22 -0
  190. package/build/validations/interaction.js.map +1 -0
  191. package/build/validations/prefab/action.d.ts +2 -0
  192. package/build/validations/prefab/action.js +99 -0
  193. package/build/validations/prefab/action.js.map +1 -0
  194. package/build/validations/prefab/component.d.ts +10 -0
  195. package/build/validations/prefab/component.js +290 -0
  196. package/build/validations/prefab/component.js.map +1 -0
  197. package/build/validations/prefab/componentOption.d.ts +3 -0
  198. package/build/validations/prefab/componentOption.js +176 -0
  199. package/build/validations/prefab/componentOption.js.map +1 -0
  200. package/build/validations/prefab/interaction.d.ts +2 -0
  201. package/build/validations/prefab/interaction.js +38 -0
  202. package/build/validations/prefab/interaction.js.map +1 -0
  203. package/build/validations/prefab/linkedOption.d.ts +3 -0
  204. package/build/validations/prefab/linkedOption.js +39 -0
  205. package/build/validations/prefab/linkedOption.js.map +1 -0
  206. package/build/validations/prefab/linkedPartial.d.ts +3 -0
  207. package/build/validations/prefab/linkedPartial.js +30 -0
  208. package/build/validations/prefab/linkedPartial.js.map +1 -0
  209. package/build/validations/prefab/variable.d.ts +3 -0
  210. package/build/validations/prefab/variable.js +36 -0
  211. package/build/validations/prefab/variable.js.map +1 -0
  212. package/build/validations/prefab.d.ts +17 -0
  213. package/build/validations/prefab.js +66 -0
  214. package/build/validations/prefab.js.map +1 -0
  215. package/build/validations/styles.d.ts +6 -0
  216. package/build/validations/styles.js +103 -0
  217. package/build/validations/styles.js.map +1 -0
  218. package/package.json +38 -40
  219. package/assets/app-functions/templates/test/helpers.js +0 -3
  220. package/assets/app-functions/templates/test/say-hello.test.js +0 -4
  221. package/assets/functions/packer/package.json +0 -9
  222. package/assets/functions/packer/webpack.config.js +0 -12
  223. package/assets/functions/templates/functions.json +0 -14
  224. package/assets/functions/templates/package.json +0 -11
  225. package/assets/functions/templates/src/all-users.js +0 -14
  226. package/assets/functions/templates/src/get-json.js +0 -9
  227. package/assets/functions/templates/src/index.js +0 -5
  228. package/assets/functions/templates/src/say-hello.js +0 -13
  229. package/build/src/bb-blocks-new.js +0 -6789
  230. package/build/src/bb-blocks-publish.js +0 -32641
  231. package/build/src/bb-blocks-release.js +0 -15528
  232. package/build/src/bb-blocks.js +0 -2149
  233. package/build/src/bb-bundle-init.js +0 -6034
  234. package/build/src/bb-bundle.js +0 -2636
  235. package/build/src/bb-components-build.js +0 -240546
  236. package/build/src/bb-components-create.js +0 -6045
  237. package/build/src/bb-components-generate.js +0 -6173
  238. package/build/src/bb-components-publish-bundle.js +0 -43346
  239. package/build/src/bb-components-publish.js +0 -43353
  240. package/build/src/bb-components-serve.js +0 -15326
  241. package/build/src/bb-components.js +0 -2157
  242. package/build/src/bb-functions-build.js +0 -4284
  243. package/build/src/bb-functions-bump.js +0 -14582
  244. package/build/src/bb-functions-init.js +0 -4749
  245. package/build/src/bb-functions-login.js +0 -15440
  246. package/build/src/bb-functions-logout.js +0 -15434
  247. package/build/src/bb-functions-new.js +0 -9144
  248. package/build/src/bb-functions-publish.js +0 -86693
  249. package/build/src/bb-functions-validate.js +0 -22160
  250. package/build/src/bb-functions.js +0 -2159
  251. package/build/src/bb.js +0 -2740
  252. /package/assets/app-functions/{templates → js-template}/.app-functions +0 -0
  253. /package/assets/app-functions/{templates → js-template}/functions/say-hello/1.0/function.json +0 -0
  254. /package/assets/app-functions/{templates → js-template}/functions/say-hello/1.0/index.js +0 -0
  255. /package/assets/app-functions/{templates → js-template}/package.json +0 -0
@@ -0,0 +1,31 @@
1
+ import { ValidationError, Validator } from 'jsonschema';
2
+ import Config from './config';
3
+ import { type FunctionDefinition } from './functionDefinitions';
4
+ export interface Schema {
5
+ $id: string;
6
+ }
7
+ export interface ValidationResult {
8
+ path: string;
9
+ status: string;
10
+ functionName?: string;
11
+ errors: ValidationError[] | Error[];
12
+ }
13
+ declare const functionValidator: (config: Config) => Promise<Validator>;
14
+ declare const validateSchema: (functionJson: FunctionDefinition, validator: Validator) => ValidationResult;
15
+ interface ValidateFunctionsProps {
16
+ functionName?: string;
17
+ blockFunctions?: FunctionDefinition[];
18
+ isWasmFunctionProject?: boolean;
19
+ inputFunctionName?: string;
20
+ }
21
+ declare class FunctionValidator {
22
+ private schemaValidator;
23
+ private config;
24
+ private functionsDir;
25
+ constructor(config: Config, functionsDir: string);
26
+ initSchema(): Promise<void>;
27
+ validateFunction(definition: FunctionDefinition, isWasmFunctionProject: boolean): ValidationResult;
28
+ validateFunctions({ functionName, blockFunctions, isWasmFunctionProject, inputFunctionName, }: ValidateFunctionsProps): Promise<ValidationResult[]>;
29
+ }
30
+ declare const logValidationResult: ({ path: functionPath, status, functionName, errors, }: ValidationResult) => void;
31
+ export { FunctionValidator, functionValidator, logValidationResult, validateSchema, };
@@ -0,0 +1,140 @@
1
+ import chalk from 'chalk';
2
+ import fs from 'fs-extra';
3
+ import { ValidationError, Validator, ValidatorResult } from 'jsonschema';
4
+ import fetch from 'node-fetch';
5
+ import path from 'path';
6
+ import Config from './config';
7
+ import { functionDefinitions, isFunctionVersion, } from './functionDefinitions';
8
+ const fetchRemoteSchema = async (schemaUrl, config) => {
9
+ const res = await fetch(schemaUrl, { agent: config.agent });
10
+ const json = await res.json();
11
+ return json;
12
+ };
13
+ const importNextSchema = async (validator, schemaId, config) => {
14
+ const schemaJSON = await fetchRemoteSchema(schemaId, config);
15
+ validator.addSchema(schemaJSON, schemaId);
16
+ const nextSchemaId = validator.unresolvedRefs.shift();
17
+ if (!nextSchemaId) {
18
+ return validator;
19
+ }
20
+ return importNextSchema(validator, nextSchemaId, config);
21
+ };
22
+ const importSchema = async (validator, config) => {
23
+ const functionSchemaUrl = config.schemaUrl + config.functionSchemaPath;
24
+ return importNextSchema(validator, functionSchemaUrl, config);
25
+ };
26
+ const functionValidator = async (config) => {
27
+ const validator = new Validator();
28
+ return importSchema(validator, config);
29
+ };
30
+ const validateFunctionDefinition = (validator, definition) => {
31
+ const functionSchemaId = Object.keys(validator.schemas).find((k) => k.match(/function\.json$/));
32
+ if (!functionSchemaId) {
33
+ throw new Error(`Cannot find Function schema Id, ${functionSchemaId}`);
34
+ }
35
+ const functionSchema = validator.schemas[functionSchemaId];
36
+ return validator.validate(definition, functionSchema);
37
+ };
38
+ const forceVersion = ({ path: functionPath }, functionsDir) => {
39
+ if (!isFunctionVersion(path.dirname(functionPath), functionsDir)) {
40
+ throw new Error(`${path.dirname(functionPath)} does not apply as a valid version directory`);
41
+ }
42
+ };
43
+ const validateSchema = (functionJson, validator) => {
44
+ const { name, version, path: definitionPath, schema } = functionJson;
45
+ const { errors } = validateFunctionDefinition(validator, schema);
46
+ const status = errors.length ? 'error' : 'ok';
47
+ return {
48
+ errors,
49
+ functionName: `${name}-${version}`,
50
+ path: definitionPath,
51
+ status,
52
+ };
53
+ };
54
+ const validateWasmProjectStructure = (functionDir) => {
55
+ const functionFiles = fs.readdirSync(functionDir, {
56
+ withFileTypes: true,
57
+ });
58
+ const hasWasmFile = functionFiles.some((file) => file.name.endsWith('.wasm'));
59
+ const errors = [];
60
+ if (!hasWasmFile) {
61
+ errors.push(new Error(`Missing .wasm file in ${functionDir}`));
62
+ }
63
+ return {
64
+ errors,
65
+ status: errors.length ? 'error' : 'ok',
66
+ };
67
+ };
68
+ const mergeValidationResults = (schemaResult, wasmResult = null) => {
69
+ if (!wasmResult) {
70
+ return schemaResult;
71
+ }
72
+ const mergedErrors = [...schemaResult.errors, ...wasmResult.errors];
73
+ const status = mergedErrors.length ? 'error' : 'ok';
74
+ return {
75
+ ...schemaResult,
76
+ errors: mergedErrors,
77
+ status,
78
+ };
79
+ };
80
+ class FunctionValidator {
81
+ schemaValidator;
82
+ config;
83
+ functionsDir;
84
+ constructor(config, functionsDir) {
85
+ this.config = config;
86
+ this.schemaValidator = new Validator();
87
+ this.functionsDir = functionsDir;
88
+ }
89
+ async initSchema() {
90
+ await importSchema(this.schemaValidator, this.config);
91
+ }
92
+ validateFunction(definition, isWasmFunctionProject) {
93
+ const functionPath = definition.path;
94
+ const functionName = functionPath;
95
+ try {
96
+ forceVersion(definition, this.functionsDir);
97
+ const validatedSchema = validateSchema(definition, this.schemaValidator);
98
+ let validatedWasmStructure = null;
99
+ if (isWasmFunctionProject) {
100
+ const functionDir = path.dirname(functionPath);
101
+ validatedWasmStructure = validateWasmProjectStructure(functionDir);
102
+ }
103
+ return mergeValidationResults(validatedSchema, validatedWasmStructure);
104
+ }
105
+ catch (error) {
106
+ const message = error instanceof Error ? error.message : String(error);
107
+ return {
108
+ errors: [new Error(message)],
109
+ functionName,
110
+ path: functionPath,
111
+ status: 'error',
112
+ };
113
+ }
114
+ }
115
+ async validateFunctions({ functionName, blockFunctions, isWasmFunctionProject = false, inputFunctionName, }) {
116
+ const definitions = await functionDefinitions(this.functionsDir, true, inputFunctionName);
117
+ const functions = blockFunctions ?? definitions;
118
+ const validations = [];
119
+ functions.forEach((definition) => {
120
+ const preleadingPath = path.join(this.functionsDir, functionName ?? '', path.sep);
121
+ if (definition.path.indexOf(preleadingPath) === 0) {
122
+ validations.push(this.validateFunction(definition, isWasmFunctionProject));
123
+ }
124
+ });
125
+ return Promise.all(validations);
126
+ }
127
+ }
128
+ const logValidationResult = ({ path: functionPath, status, functionName, errors, }) => {
129
+ if (status === 'ok') {
130
+ const mark = chalk.green(`✔`);
131
+ console.log(`${mark} Validate: ${functionName}`);
132
+ }
133
+ else {
134
+ const msg = chalk.red(`${errors.join('\n\t')}`);
135
+ const mark = chalk.red(`✖`);
136
+ console.log(`${mark} Validate: ${functionName ?? functionPath}\n\t${msg}`);
137
+ }
138
+ };
139
+ export { FunctionValidator, functionValidator, logValidationResult, validateSchema, };
140
+ //# sourceMappingURL=validations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validations.js","sourceRoot":"","sources":["../../src/functions/validations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type Interaction } from '../types';
2
+ declare const _default: (filename: string) => Interaction;
3
+ export default _default;
@@ -0,0 +1,84 @@
1
+ import Case from 'case';
2
+ import path from 'path';
3
+ import * as ts from 'typescript';
4
+ import {} from '../types';
5
+ const allowedTypes = [
6
+ 'Event',
7
+ 'Locale',
8
+ 'Page',
9
+ 'PageVariable',
10
+ 'PageVariableId',
11
+ 'boolean',
12
+ 'number',
13
+ 'string',
14
+ 'unknown',
15
+ 'void',
16
+ ];
17
+ export default (filename) => {
18
+ if (!filename)
19
+ throw new Error(`unable to determine interaction name from ${filename}`);
20
+ const program = ts.createProgram([filename], {});
21
+ const typeChecker = program.getTypeChecker();
22
+ const sourceFile = program.getSourceFile(filename);
23
+ if (!sourceFile)
24
+ throw new Error('no source file');
25
+ const interactionName = Case.camel(path.basename(filename).replace(/.ts/, ''));
26
+ const interaction = {};
27
+ // Loop through the root AST nodes of the file
28
+ ts.forEachChild(sourceFile, (node) => {
29
+ if (ts.isFunctionDeclaration(node)) {
30
+ // name
31
+ const functionName = node.name ? node.name.text : '';
32
+ if (functionName !== interactionName) {
33
+ throw new RangeError('file contains multiple statements');
34
+ }
35
+ interaction.name = functionName;
36
+ interaction.parameters = {};
37
+ // return type
38
+ const typeNode = node.type;
39
+ if (!typeNode) {
40
+ throw new Error(`You forgot to declare a type for ${interactionName}`);
41
+ }
42
+ const returnType = typeChecker.typeToString(typeChecker.getTypeFromTypeNode(typeNode));
43
+ interaction.type = Case.pascal(returnType);
44
+ if (node.parameters.length > 1) {
45
+ throw new Error(`Only one parameter is allowed for ${interactionName}`);
46
+ }
47
+ const [firstParameter] = node.parameters;
48
+ if (firstParameter) {
49
+ if (!firstParameter.type) {
50
+ throw new Error(`You forgot to add a type to the parameter "${firstParameter.name.getText()}" for ${interactionName}`);
51
+ }
52
+ const t = typeChecker.getTypeFromTypeNode(firstParameter.type);
53
+ const parameters = JSON.parse(typeChecker
54
+ .typeToString(t)
55
+ .replace(/;(?!.*;)/g, '')
56
+ .replace(/;/g, ',')
57
+ .replace(/(\w+)/g, '"$1"'));
58
+ Object.entries(parameters).forEach(([paramName, paramType]) => {
59
+ if (!allowedTypes.includes(paramType)) {
60
+ throw new TypeError(`unsupported type for: ${paramName}`);
61
+ }
62
+ parameters[paramName] = Case.pascal(paramType);
63
+ });
64
+ interaction.parameters = parameters;
65
+ }
66
+ // function body
67
+ const functionBody = node.getText(sourceFile);
68
+ if (!functionBody) {
69
+ throw new Error(`You forgot to add code to your interaction for ${interactionName}`);
70
+ }
71
+ interaction.function = ts.transpileModule(node.getText(), {}).outputText;
72
+ }
73
+ });
74
+ if (!interaction.function) {
75
+ throw new RangeError(`
76
+ expected expression of the kind
77
+ function ${interactionName}({ event, argument }: { event: Event, argument: ArgumentType }): ReturnType {
78
+ // body
79
+ }
80
+ `);
81
+ }
82
+ return interaction;
83
+ };
84
+ //# sourceMappingURL=compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/interactions/compatibility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const _default: (filePath: string) => void;
2
+ export default _default;
@@ -0,0 +1,23 @@
1
+ import { createProgram, flattenDiagnosticMessageText, getDefaultCompilerOptions, getPreEmitDiagnostics, } from 'typescript';
2
+ const reportDiagnostics = (diagnostics) => {
3
+ diagnostics.forEach((diagnostic) => {
4
+ let message = 'Error';
5
+ if (diagnostic.file) {
6
+ const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start ?? 0);
7
+ message += ` ${diagnostic.file.fileName} (${line + 1},${character + 1})`;
8
+ }
9
+ message += `: ${flattenDiagnosticMessageText(diagnostic.messageText, '\n')}`;
10
+ console.error(`\u001b[31m${message}\u001b[0m`);
11
+ });
12
+ };
13
+ export default (filePath) => {
14
+ const config = getDefaultCompilerOptions();
15
+ config.strict = true;
16
+ const program = createProgram([filePath], config);
17
+ const diagnostics = [...getPreEmitDiagnostics(program)];
18
+ if (diagnostics.length > 0) {
19
+ reportDiagnostics(diagnostics);
20
+ process.exit(1);
21
+ }
22
+ };
23
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/interactions/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,4BAA4B,EAC5B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,iBAAiB,GAAG,CAAC,WAAyB,EAAQ,EAAE;IAC5D,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACjC,IAAI,OAAO,GAAG,OAAO,CAAC;QACtB,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,6BAA6B,CACvE,UAAU,CAAC,KAAK,IAAI,CAAC,CACtB,CAAC;YACF,OAAO,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC;QAC3E,CAAC;QACD,OAAO,IAAI,KAAK,4BAA4B,CAC1C,UAAU,CAAC,WAAW,EACtB,IAAI,CACL,EAAE,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,aAAa,OAAO,WAAW,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,CAAC,QAAgB,EAAQ,EAAE;IACxC,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;IAE3C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IAErB,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IAExD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,377 @@
1
+ import { ICONS } from './validations/constants';
2
+ export type Category = DefaultCategory | string;
3
+ export type CommandBB = 'blocks' | 'components' | 'functions' | 'interactions' | 'bundle' | 'help';
4
+ export type CommandComponents = 'create' | 'build' | 'serve' | 'publish' | 'help' | 'generate' | 'publish-bundle';
5
+ export type CommandFunctions = 'bump' | 'init' | 'login' | 'logout' | 'new' | 'publish' | 'validate';
6
+ export type CommandBlocks = 'publish' | 'release' | 'new';
7
+ export type CommandBundle = 'init';
8
+ export type DefaultCategory = 'CONTENT' | 'DATA' | 'FORM' | 'LAYOUT' | 'NAVIGATION' | 'TABLE';
9
+ interface RefOrValue {
10
+ type: 'THEME_COLOR' | 'STATIC';
11
+ value: string;
12
+ }
13
+ export interface StyleDefinitionCssObject {
14
+ backgroundColor?: RefOrValue;
15
+ borderColor?: RefOrValue;
16
+ borderRadius?: string[];
17
+ borderStyle?: string;
18
+ borderWidth?: string[];
19
+ boxShadow?: string;
20
+ color?: RefOrValue;
21
+ fontFamily?: string;
22
+ fontSize?: string;
23
+ fontStyle?: string;
24
+ fontWeight?: string;
25
+ letterSpacing?: string;
26
+ lineHeight?: string;
27
+ padding?: string[];
28
+ textDecoration?: string;
29
+ textTransform?: string;
30
+ }
31
+ export interface StyleDefinitionState {
32
+ name: StyleStateKeys;
33
+ content: StyleDefinitionCssObject;
34
+ }
35
+ export interface StyleDefinition {
36
+ type: string;
37
+ name: string;
38
+ basis: StyleDefinitionCssObject;
39
+ states: StyleDefinitionState[];
40
+ }
41
+ export declare enum AllowedStateKeys {
42
+ SELECTED = "selected",
43
+ HOVER = "hover",
44
+ FOCUS = "focus",
45
+ DISABLED = "disabled",
46
+ VALID = "valid",
47
+ INVALID = "invalid",
48
+ READONLY = "readOnly"
49
+ }
50
+ export type StyleStateKeys = 'selected' | 'hover' | 'focus' | 'disabled' | 'valid' | 'invalid' | 'readOnly';
51
+ type StyleDefinitionContentBase = Record<StyleStateKeys | 'basis', StyleDefinitionCssObject>;
52
+ export type StyleDefinitionContent = Partial<StyleDefinitionContentBase> & Pick<StyleDefinitionContentBase, 'basis'>;
53
+ export type BuildStyleDefinitionContentOverwrites = Partial<StyleDefinitionContentBase>;
54
+ export type StyleDefinitionContentKeys = Partial<Record<StyleStateKeys, string[]>> & {
55
+ basis: string[];
56
+ };
57
+ export interface StyleDefinitionContentOverwrites extends Omit<StyleDefinitionState, 'name'> {
58
+ name: string;
59
+ }
60
+ export interface OverwriteStyleDefinitionState extends Omit<StyleDefinitionState, 'name'> {
61
+ name: string;
62
+ }
63
+ export interface BuildStyleDefinition extends Omit<StyleDefinition, 'states' | 'basis'> {
64
+ content: StyleDefinitionContent;
65
+ }
66
+ export type GroupedStyles = Record<string, Record<string, StyleDefinition>>;
67
+ export interface Component {
68
+ allowedTypes: string[];
69
+ jsx: string;
70
+ name: string;
71
+ orientation: Orientation;
72
+ styles: string;
73
+ styleType: string;
74
+ type: string;
75
+ }
76
+ export type PrefabReference = PrefabComponent | PrefabPartial | PrefabWrapper;
77
+ export type BuildStyleOverwrite = {
78
+ backgroundColor?: {
79
+ value: string;
80
+ type: string;
81
+ };
82
+ borderColor?: {
83
+ value: string;
84
+ type: string;
85
+ };
86
+ borderRadius?: string | string[];
87
+ borderStyle?: string;
88
+ borderWidth?: string | string[];
89
+ boxShadow?: string;
90
+ color?: {
91
+ value: string;
92
+ type: string;
93
+ };
94
+ fontFamily?: string;
95
+ fontSize?: string;
96
+ fontStyle?: string;
97
+ fontWeight?: string;
98
+ letterSpacing?: string;
99
+ lineHeight?: string;
100
+ padding?: string | string[];
101
+ textDecoration?: string;
102
+ textTransform?: string;
103
+ } | BuildStyleDefinitionContentOverwrites;
104
+ export interface BuildStyle {
105
+ name?: string;
106
+ overwrite?: BuildStyleOverwrite;
107
+ }
108
+ export interface BuildPrefabComponent extends Omit<PrefabComponent, 'style' | 'descendants'> {
109
+ hash: string;
110
+ style?: BuildStyle;
111
+ descendants: BuildPrefabReference[];
112
+ }
113
+ export interface BuildPrefabWrapper extends Omit<PrefabWrapper, 'descendants'> {
114
+ descendants: BuildPrefabReference[];
115
+ }
116
+ export type BuildPrefabReference = BuildPrefabComponent | PrefabPartial | BuildPrefabWrapper;
117
+ export interface PrefabPartial {
118
+ type: 'PARTIAL';
119
+ partialId: string;
120
+ }
121
+ export interface PrefabWrapper {
122
+ type: 'WRAPPER';
123
+ descendants: PrefabReference[];
124
+ optionCategories?: PrefabComponentOptionCategory[];
125
+ options: PrefabComponentOption[];
126
+ }
127
+ type PrefabComponentStyleOverwrite = {
128
+ backgroundColor?: {
129
+ value: string;
130
+ type: string;
131
+ };
132
+ borderColor?: {
133
+ value: string;
134
+ type: string;
135
+ };
136
+ borderRadius?: string | string[];
137
+ borderStyle?: string;
138
+ borderWidth?: string | string[];
139
+ boxShadow?: string;
140
+ color?: {
141
+ value: string;
142
+ type: string;
143
+ };
144
+ fontFamily?: string;
145
+ fontSize?: string;
146
+ fontStyle?: string;
147
+ fontWeight?: string;
148
+ letterSpacing?: string;
149
+ lineHeight?: string;
150
+ padding?: string | string[];
151
+ textDecoration?: string;
152
+ textTransform?: string;
153
+ } | StyleDefinitionContentOverwrites[];
154
+ export interface PrefabComponent {
155
+ type?: 'COMPONENT';
156
+ actions?: PrefabAction[];
157
+ name: string;
158
+ style?: {
159
+ name?: string;
160
+ overwrite?: PrefabComponentStyleOverwrite;
161
+ };
162
+ descendants: PrefabReference[];
163
+ optionCategories?: PrefabComponentOptionCategory[];
164
+ options: PrefabComponentOption[];
165
+ ref?: {
166
+ id: string;
167
+ };
168
+ }
169
+ export type ComponentStyleMap = Record<PrefabComponent['name'], {
170
+ styleType: Component['styleType'];
171
+ }>;
172
+ export type Icon = (typeof ICONS)[number];
173
+ export type ValueConfig = Record<string, unknown>;
174
+ export interface PrefabComponentOptionBase {
175
+ label: string;
176
+ key: string;
177
+ type: string;
178
+ configuration?: unknown;
179
+ optionRef?: {
180
+ id?: string;
181
+ sourceId?: string;
182
+ inherit?: string | (OptionRefInheritObject | string)[] | OptionRefInheritObject;
183
+ };
184
+ }
185
+ export interface ValueDefault {
186
+ value: string | string[] | ValueConfig;
187
+ ref?: {
188
+ id?: string;
189
+ };
190
+ }
191
+ export interface ValueRef {
192
+ ref: {
193
+ id?: string;
194
+ value: string;
195
+ };
196
+ }
197
+ export interface PrefabComponentOptionCategory {
198
+ label: string;
199
+ extended?: boolean;
200
+ members: string[];
201
+ condition?: {
202
+ type: string;
203
+ option: string;
204
+ comparator: string;
205
+ value: string | boolean | number;
206
+ };
207
+ }
208
+ export type PrefabComponentOption = PrefabComponentOptionBase & (ValueDefault | ValueRef);
209
+ export type Orientation = 'VERTICAL' | 'HORIZONTAL';
210
+ export declare enum InteractionOptionType {
211
+ Boolean = "Boolean",
212
+ Number = "Number",
213
+ String = "String",
214
+ Event = "Event",
215
+ Void = "Void",
216
+ Page = "Page",
217
+ Locale = "Locale",
218
+ Unknown = "Unknown"
219
+ }
220
+ export declare enum InteractionOptionTypeToDo {
221
+ Color = "Color",
222
+ Endpoint = "Endpoint",
223
+ Filter = "Filter",
224
+ Font = "Font",
225
+ Properties = "Properties",
226
+ Property = "Property",
227
+ Size = "Size",
228
+ Unit = "Unit"
229
+ }
230
+ export interface InteractionCompatibility {
231
+ name: string;
232
+ parameters: Record<string, InteractionOptionType>;
233
+ type: InteractionOptionType;
234
+ }
235
+ export interface Interaction extends InteractionCompatibility {
236
+ function: string;
237
+ }
238
+ export interface Prefab {
239
+ actions?: PrefabAction[];
240
+ beforeCreate?: string;
241
+ category: Category;
242
+ name: string;
243
+ keywords?: string[];
244
+ icon: Icon;
245
+ interactions?: PrefabInteraction[];
246
+ structure: PrefabReference[];
247
+ variables?: PrefabVariable[];
248
+ type?: string;
249
+ description?: string;
250
+ reconfigure?: {
251
+ children: PrefabComponent[];
252
+ };
253
+ }
254
+ export interface BuildPrefab extends Omit<Prefab, 'structure'> {
255
+ structure: BuildPrefabReference[];
256
+ }
257
+ export declare enum InteractionType {
258
+ Custom = "Custom",
259
+ Global = "Global"
260
+ }
261
+ export interface BasePrefabInteraction<T extends InteractionType> {
262
+ name: string;
263
+ ref: {
264
+ sourceComponentId: string;
265
+ targetComponentId?: string;
266
+ };
267
+ targetOptionName: string;
268
+ sourceEvent: string;
269
+ type: T;
270
+ }
271
+ export interface ParameterOptionWithId {
272
+ parameter: string;
273
+ id: string[];
274
+ }
275
+ export interface ParameterOptionWithPath {
276
+ path: string[];
277
+ parameter: string;
278
+ }
279
+ export interface ParameterOptionWithComponentRef {
280
+ name: string;
281
+ parameter: string;
282
+ ref: {
283
+ componentId: string;
284
+ };
285
+ }
286
+ export type PrefabInteractionParameter = ParameterOptionWithId | ParameterOptionWithPath | ParameterOptionWithComponentRef;
287
+ export type PrefabInteraction = BasePrefabInteraction<InteractionType.Custom> | (BasePrefabInteraction<InteractionType.Global> & {
288
+ parameters: PrefabInteractionParameter[];
289
+ });
290
+ export interface Versions {
291
+ remoteVersionCLI: string;
292
+ remoteVersionPreview: string;
293
+ }
294
+ export interface ServeOptions {
295
+ rootDir: string;
296
+ host: string;
297
+ port: number;
298
+ ssl: boolean;
299
+ sslCert: string;
300
+ sslKey: string;
301
+ transpile?: boolean;
302
+ }
303
+ export interface PrefabAction {
304
+ name: string;
305
+ ref: {
306
+ id: string;
307
+ endpointId?: string;
308
+ };
309
+ options?: {
310
+ ref: {
311
+ result: string;
312
+ };
313
+ };
314
+ useNewRuntime: boolean;
315
+ events?: PrefabActionStep[];
316
+ }
317
+ export interface PrefabActionAssign {
318
+ leftHandSide: string;
319
+ ref: {
320
+ path: string[];
321
+ };
322
+ }
323
+ export interface PrefabActionUpdateStepOption {
324
+ ref: {
325
+ object: string;
326
+ customModel?: string;
327
+ };
328
+ assign: PrefabActionAssign[];
329
+ }
330
+ export interface PrefabActionCreateStepOption {
331
+ modelId: string;
332
+ assign: PrefabActionAssign[];
333
+ ref: {
334
+ customModel: string;
335
+ };
336
+ }
337
+ export interface PrefabActionDeleteStepOption {
338
+ ref: {
339
+ object: string;
340
+ customModel: string;
341
+ };
342
+ }
343
+ export interface AuthenticateUserStepOption {
344
+ authenticationProfileId: string;
345
+ ref: {
346
+ username: string;
347
+ password: string;
348
+ jwtAs: string;
349
+ };
350
+ }
351
+ export interface PrefabActionStep {
352
+ kind: string;
353
+ options?: PrefabActionUpdateStepOption | PrefabActionCreateStepOption | PrefabActionDeleteStepOption | AuthenticateUserStepOption;
354
+ }
355
+ export type PrefabVariableKind = 'construct' | 'object' | 'string';
356
+ export interface PrefabVariable {
357
+ kind: PrefabVariableKind;
358
+ name: string;
359
+ ref: {
360
+ actionId?: string;
361
+ endpointId?: string;
362
+ id: string;
363
+ };
364
+ options?: unknown;
365
+ }
366
+ export interface ComponentDependency {
367
+ label: string;
368
+ package: string;
369
+ imports: string[];
370
+ }
371
+ export interface OptionRefInheritObject {
372
+ id: string;
373
+ type: 'PROPERTY' | 'PROPERTY_LABEL';
374
+ name?: string;
375
+ useKey?: string;
376
+ }
377
+ export {};