@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,229 @@
1
+ import AdmZip from 'adm-zip';
2
+ import { Glob } from 'bun';
3
+ import { camel, title } from 'case';
4
+ import fs from 'fs-extra';
5
+ import path from 'path';
6
+ import rootDir from '../utils/rootDir';
7
+ import { createCargoTomlFile, createlibRsFile, createWorldWitFile, } from './createWasmDefinitionFiles';
8
+ /* @doc functionDefinitionPath
9
+ Expands the function dir with `function.json`.
10
+ */
11
+ const functionDefinitionPath = (functionPath) => path.join(functionPath, 'function.json');
12
+ /* @doc functionImplementationPath
13
+ Expands the function dir with `index.js`.
14
+ */
15
+ const jsFunctionImplementationPath = (functionPath) => path.join(functionPath, 'index.js');
16
+ const wasmFunctionImplementationPath = (functionPath) => path.join(functionPath, 'wit', 'world.wit');
17
+ /* @doc isFunctionDefinition
18
+ Checks the given functions dir for a file named function.json.
19
+ Returns true if the file exists.
20
+ */
21
+ const isFunctionDefinition = (functionPath) => fs.pathExistsSync(functionDefinitionPath(functionPath));
22
+ /* @doc isFunctionVersion
23
+ Checks the given functions dir to be a function version.
24
+ Returns true if applies to versioning conventions.
25
+ */
26
+ const isFunctionVersion = (functionPath, functionsDir) => !!path.basename(functionPath).match(/^\d+\.\d+$/) &&
27
+ parseFloat(path.basename(functionPath)) >= 1.0 &&
28
+ path.dirname(path.dirname(functionPath)) === functionsDir;
29
+ /* @doc isFunction
30
+ Checks the given functions dir for a file named index.js.
31
+ Returns true if the file exists.
32
+ */
33
+ const isFunction = (functionPath) => fs.pathExistsSync(jsFunctionImplementationPath(functionPath)) ||
34
+ fs.pathExistsSync(wasmFunctionImplementationPath(functionPath));
35
+ /* @doc functionDirs
36
+ Returns a list of directories inside the given functionsDir that have a function.json and index.js.
37
+ */
38
+ const functionDirs = async (functionsDir, includeNonversioned = false, inputFunctionName) => {
39
+ const glob = new Glob('**/function.json');
40
+ const dirs = [];
41
+ const functionsDirPath = functionsDir.replace(/\\/g, '/');
42
+ if (!fs.existsSync(functionsDirPath)) {
43
+ return [];
44
+ }
45
+ for await (const functionDefinition of glob.scanSync(functionsDirPath)) {
46
+ const dir = path
47
+ .dirname(path.join(functionsDir, functionDefinition))
48
+ .replace(/\//g, path.sep);
49
+ if (inputFunctionName && !dir.includes(inputFunctionName)) {
50
+ continue;
51
+ }
52
+ if (isFunction(dir) &&
53
+ (includeNonversioned || isFunctionVersion(dir, functionsDir))) {
54
+ dirs.push(dir);
55
+ }
56
+ }
57
+ return dirs;
58
+ };
59
+ /* @doc functionDefinition
60
+ Reads the function.json from the given directory.
61
+ Returns the parsed function.json as object.
62
+ */
63
+ const functionDefinition = (functionPath, functionsDir) => {
64
+ let name = '';
65
+ let version = '';
66
+ if (isFunctionVersion(functionPath, functionsDir)) {
67
+ name = camel(path.basename(path.dirname(functionPath)));
68
+ version = path.basename(functionPath);
69
+ }
70
+ else {
71
+ name = camel(path.basename(functionPath));
72
+ }
73
+ const filePath = functionDefinitionPath(functionPath);
74
+ const schema = fs.readJSONSync(filePath);
75
+ try {
76
+ return {
77
+ name,
78
+ path: filePath,
79
+ schema,
80
+ version,
81
+ };
82
+ }
83
+ catch (err) {
84
+ throw new Error(`could not load json from ${filePath}: ${err}`);
85
+ }
86
+ };
87
+ /* @doc functionDefinitions
88
+ Returns an object containing all function.json definitions
89
+ inside the given functionsDir, indexed by function name.
90
+ */
91
+ const functionDefinitions = async (functionsDir, includeNonversioned = false, inputFunctionName) => {
92
+ const functionDirectories = await functionDirs(functionsDir, includeNonversioned, inputFunctionName);
93
+ return functionDirectories.map((functionDir) => functionDefinition(functionDir, functionsDir));
94
+ };
95
+ const stringifyDefinitions = (definitions) => {
96
+ const updatedDefinitions = definitions.map(({ name, version, schema }) => ({
97
+ name,
98
+ version,
99
+ ...schema,
100
+ options: JSON.stringify(schema.options ?? []),
101
+ paths: JSON.stringify(schema.paths ?? {}),
102
+ }));
103
+ return JSON.stringify(updatedDefinitions);
104
+ };
105
+ /* @doc newFunctionDefinition
106
+ Creates a new folder for the given name and fills that folder with a function.json file
107
+ and an index.js.
108
+ */
109
+ const newFunctionDefinition = (functionsDir, functionName, isWasmFunctionProject) => {
110
+ const functionDir = path.join(functionsDir, functionName, '1.0');
111
+ try {
112
+ fs.mkdirpSync(functionDir);
113
+ fs.writeJSONSync(functionDefinitionPath(functionDir), {
114
+ category: 'Misc',
115
+ description: 'Description',
116
+ icon: { color: 'Orange', name: 'ActionsIcon' },
117
+ label: title(functionName),
118
+ options: [],
119
+ yields: 'NONE',
120
+ }, { spaces: 2 });
121
+ if (isWasmFunctionProject) {
122
+ createNewWasmFunction(functionDir, functionName);
123
+ }
124
+ else {
125
+ createNewJsFunction(functionDir, functionName);
126
+ }
127
+ }
128
+ catch (err) {
129
+ throw new Error(`could not initialize new function ${functionDir}: ${err}`);
130
+ }
131
+ };
132
+ const createNewJsFunction = (functionDir, functionName) => {
133
+ const functionDefName = functionName.replace(/-./g, (x) => x.toUpperCase()[1]);
134
+ fs.writeFileSync(path.join(functionDir, 'index.js'), `const ${functionDefName} = async () => {\n\n}\n\nexport default ${functionDefName};`);
135
+ };
136
+ const createNewWasmFunction = (functionDir, functionName) => {
137
+ createlibRsFile(functionDir, functionName);
138
+ createWorldWitFile(functionDir, functionName);
139
+ createCargoTomlFile(functionDir, functionName);
140
+ fs.copySync(path.join(rootDir(), 'assets', 'app-functions', 'wasm-template', 'functions', 'say-hello', '1.0', 'Justfile'), path.join(functionDir, 'Justfile'));
141
+ };
142
+ const toVariableName = ({ name, version }) => `${camel(name)}_${version.replace('.', '_')}`;
143
+ /* @doc importFunctions
144
+ Returns an array of strings, each item being an imported function:
145
+ `import { default as functionName_1_0 } from './function-name/1.0';`;
146
+ */
147
+ const importFunctions = (definitions, functionsPath) => definitions.map((definition) => `import { default as ${toVariableName(definition)} } from '${path
148
+ .dirname(definition.path.replace(functionsPath, `./${path.basename(functionsPath)}`))
149
+ .replace(/\\/g, '/')}';`);
150
+ /* @doc exportFunctions
151
+ Returns a string in which functions will be exported in an object;
152
+ */
153
+ const exportFunctions = (definitions) => {
154
+ const exports = definitions.map((definition) => {
155
+ const { name, version } = definition;
156
+ return ` "${name} ${version}": ${toVariableName(definition)},`;
157
+ });
158
+ return ['const fn = {', ...exports, '};', '', 'export default fn;'];
159
+ };
160
+ /* @doc whitelistedFunctions
161
+ Returns an array containing all functions based on the whitelist.
162
+ */
163
+ const whitelistedFunctions = (definitions, whitelist) => whitelist.map((whitelisted) => {
164
+ const definition = definitions.find((def) => [def.name, def.version].join(' ') === whitelisted);
165
+ if (!definition)
166
+ throw new Error(`Function ${whitelisted} could not be found. Check if function and version exists.`);
167
+ return definition;
168
+ });
169
+ /* @doc generateIndex
170
+ Fetches all functions and re-exports them.
171
+ Returns the result as a Buffer.
172
+ */
173
+ const generateIndex = async (functionsPath, whitelist) => {
174
+ const definitions = await functionDefinitions(functionsPath);
175
+ const functions = whitelist
176
+ ? whitelistedFunctions(definitions, whitelist)
177
+ : definitions;
178
+ const code = [];
179
+ code.push(...importFunctions(functions, functionsPath));
180
+ code.push('');
181
+ code.push(...exportFunctions(functions));
182
+ code.push('');
183
+ return code.join('\n');
184
+ };
185
+ /* @doc zipFunctionDefinitions
186
+ Takes functionsPath as path to a directory with function definitions.
187
+ Scans each directory for a function.json file, and if present adds it
188
+ to the zip file. Generates an index.js and adds it to the zip file.
189
+ Returns path to the zip file.
190
+ */
191
+ const zipFunctionDefinitions = async (functionsPath, includes) => {
192
+ const zip = new AdmZip();
193
+ const tmpDir = '.tmp';
194
+ const zipFilePath = path.join(tmpDir, 'app.zip');
195
+ const cwd = path.dirname(functionsPath);
196
+ fs.ensureDirSync(tmpDir);
197
+ zip.addLocalFile(path.join(path.dirname(functionsPath), 'package.json'));
198
+ zip.addFile('index.js', Buffer.from(await generateIndex(functionsPath)));
199
+ zip.addLocalFolder(functionsPath, functionsPath.replace(cwd, ''));
200
+ (includes ?? []).forEach((include) => {
201
+ zip.addLocalFolder(path.join(cwd, include), include);
202
+ });
203
+ zip.writeZip(zipFilePath);
204
+ return zipFilePath;
205
+ };
206
+ /* @doc getAllWasmFunctionsWithVersions
207
+ Scans the given functionsPath for all functions that contain a wasm implementation.
208
+ Returns an array of strings with function names and versions, e.g. ['my-function/1.0', 'my-function/2.0']
209
+ */
210
+ export const getAllWasmFunctionsWithVersions = (functionsPath) => {
211
+ if (!fs.existsSync(functionsPath)) {
212
+ return [];
213
+ }
214
+ return fs
215
+ .readdirSync(functionsPath, { withFileTypes: true })
216
+ .filter((dirent) => dirent.isDirectory())
217
+ .flatMap((dirent) => {
218
+ const functionDir = path.join(functionsPath, dirent.name);
219
+ if (!fs.existsSync(functionDir)) {
220
+ return [];
221
+ }
222
+ return fs
223
+ .readdirSync(functionDir, { withFileTypes: true })
224
+ .filter((subDirent) => subDirent.isDirectory())
225
+ .map((subDirent) => `${dirent.name}/${subDirent.name}`);
226
+ });
227
+ };
228
+ export { functionDefinition, functionDefinitionPath, functionDefinitions, functionDirs, generateIndex, isFunctionDefinition, isFunctionVersion, newFunctionDefinition, stringifyDefinitions, whitelistedFunctions, zipFunctionDefinitions, };
229
+ //# sourceMappingURL=functionDefinitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functionDefinitions.js","sourceRoot":"","sources":["../../src/functions/functionDefinitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const collectBumpInput: () => Promise<{
2
+ newVersion: string;
3
+ currentVersion: string;
4
+ dirName: string;
5
+ }>;
6
+ interface ReplaceVersionInWitFileProps {
7
+ currentVersion: string;
8
+ dirName: string;
9
+ newVersion: string;
10
+ targetDir: string;
11
+ }
12
+ export declare const replaceVersionInWitFile: ({ currentVersion, dirName, newVersion, targetDir, }: ReplaceVersionInWitFileProps) => void;
13
+ interface ReplaceVersionInCargoTomlFileProps {
14
+ currentVersion: string;
15
+ newVersion: string;
16
+ targetDir: string;
17
+ }
18
+ export declare const replaceVersionInCargoTomlFile: ({ currentVersion, newVersion, targetDir, }: ReplaceVersionInCargoTomlFileProps) => void;
19
+ export {};
@@ -0,0 +1,62 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'path';
3
+ import prompts from 'prompts';
4
+ import { functionDefinitions, } from './functionDefinitions';
5
+ const workingDir = process.cwd();
6
+ const baseFunctionsPath = path.join(workingDir, 'functions');
7
+ export const collectBumpInput = async () => {
8
+ const versionedFunctions = await functionDefinitions(baseFunctionsPath);
9
+ const functions = allFunctions(versionedFunctions);
10
+ const dirName = (await prompts({
11
+ choices: Object.keys(functions).map((name) => ({
12
+ title: functions[name],
13
+ value: name,
14
+ })),
15
+ initial: 0,
16
+ message: 'Which function do you want to bump?',
17
+ name: 'functionName',
18
+ type: 'select',
19
+ })).functionName;
20
+ const [major, minor] = majorAndMinorVersionBump(versionedFunctions, dirName);
21
+ const majorVersion = `${major + 1}.0`;
22
+ const minorVersion = `${major}.${minor + 1}`;
23
+ const { bumpMajor } = (await prompts({
24
+ active: majorVersion,
25
+ inactive: minorVersion,
26
+ initial: false,
27
+ message: `To which version do you want to bump your function?`,
28
+ name: 'bumpMajor',
29
+ type: 'toggle',
30
+ }));
31
+ return {
32
+ currentVersion: `${major}.${minor}`,
33
+ dirName,
34
+ newVersion: bumpMajor ? majorVersion : minorVersion,
35
+ };
36
+ };
37
+ const allFunctions = (versionedFunctions) => versionedFunctions.reduce((acc, { schema: { label }, path: functionPath }) => {
38
+ const name = functionDir(functionPath);
39
+ acc[name] = label;
40
+ return acc;
41
+ }, {});
42
+ const majorAndMinorVersionBump = (versionedFunctions, dirName) => versionedFunctions
43
+ .filter(({ path: functionPath }) => functionDir(functionPath) === dirName)
44
+ .sort(({ version: a }, { version: b }) => parseFloat(a) - parseFloat(b))
45
+ .slice(-1)
46
+ .map(({ version }) => version.split('.').map(Number))
47
+ .flat();
48
+ const functionDir = (functionPath) => path.basename(path.dirname(path.dirname(functionPath)));
49
+ export const replaceVersionInWitFile = ({ currentVersion, dirName, newVersion, targetDir, }) => {
50
+ const witFilePath = path.join(targetDir, 'wit', 'world.wit');
51
+ const witFileContent = fs.readFileSync(witFilePath, 'utf8');
52
+ const lowercasedFunctionName = dirName.toLowerCase();
53
+ const updatedWitFileContent = witFileContent.replace(`${lowercasedFunctionName}@${currentVersion}.0`, `${lowercasedFunctionName}@${newVersion}.0`);
54
+ fs.writeFileSync(witFilePath, updatedWitFileContent, 'utf8');
55
+ };
56
+ export const replaceVersionInCargoTomlFile = ({ currentVersion, newVersion, targetDir, }) => {
57
+ const cargoTomlFilePath = path.join(targetDir, 'Cargo.toml');
58
+ const cargoTomlFileContent = fs.readFileSync(cargoTomlFilePath, 'utf8');
59
+ const updatedCargoTomlFileContent = cargoTomlFileContent.replace(`version = "${currentVersion}.0"`, `version = "${newVersion}.0"`);
60
+ fs.writeFileSync(cargoTomlFilePath, updatedCargoTomlFileContent, 'utf8');
61
+ };
62
+ //# sourceMappingURL=functionVersionBump.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functionVersionBump.js","sourceRoot":"","sources":["../../src/functions/functionVersionBump.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ interface FunctionResult {
2
+ name: string;
3
+ version?: string;
4
+ status: 'ok' | 'error';
5
+ id?: string;
6
+ error?: string;
7
+ }
8
+ interface PublishOptions {
9
+ skipCompile: boolean;
10
+ }
11
+ export declare const logResult: ({ status, name, version, error }: FunctionResult, operation: string) => void;
12
+ declare const publishAppFunctions: ({ skipCompile, }: PublishOptions) => Promise<void>;
13
+ export default publishAppFunctions;
@@ -0,0 +1,90 @@
1
+ import chalk from 'chalk';
2
+ import fetch, { fileFromSync, FormData } from 'node-fetch';
3
+ import path from 'path';
4
+ import FusionAuth from '../utils/login';
5
+ import Config from './config';
6
+ import { functionDefinitions, stringifyDefinitions, zipFunctionDefinitions, } from './functionDefinitions';
7
+ const workingDir = process.cwd();
8
+ export const logResult = ({ status, name, version, error }, operation) => {
9
+ const delimiter = version ? '-' : '';
10
+ if (status === 'ok') {
11
+ console.log(`${chalk.green(`✔`)} ${operation} ${name}${delimiter}${version ?? ''}.`);
12
+ }
13
+ else {
14
+ console.log(`${chalk.red(`✖`)} ${operation} ${name}${delimiter}${version ?? ''} failed. Errors: ${JSON.stringify(error)}.`);
15
+ }
16
+ };
17
+ const uploadAppFunctions = async (functionDefinitionsFile, functionsJson, config) => {
18
+ const fusionAuth = new FusionAuth(config);
19
+ const form = new FormData();
20
+ form.append('functions', functionsJson);
21
+ form.append('options', JSON.stringify({ compile: !config.skipCompile }));
22
+ form.append('file', fileFromSync(functionDefinitionsFile));
23
+ const applicationId = await config.applicationId();
24
+ if (!applicationId) {
25
+ throw new Error("Couldn't publish functions, Error: application id not found");
26
+ }
27
+ const url = `${config.builderApiUrl}/artifacts/actions/${applicationId}/functions`;
28
+ return fetch(url, {
29
+ agent: config.agent,
30
+ body: form,
31
+ headers: {
32
+ Authorization: `Bearer ${fusionAuth.jwt()}`,
33
+ },
34
+ method: 'POST',
35
+ }).then(async (res) => {
36
+ switch (res.status) {
37
+ case 401:
38
+ case 403: {
39
+ await fusionAuth.ensureLogin();
40
+ return uploadAppFunctions(functionDefinitionsFile, functionsJson, config);
41
+ }
42
+ case 201: {
43
+ const { created, updated, deleted, compiled } = (await res.json());
44
+ created.forEach((result) => logResult(result, 'Create:'));
45
+ updated.forEach((result) => logResult(result, 'Update:'));
46
+ deleted.forEach((result) => logResult(result, 'Delete:'));
47
+ if (!config.skipCompile) {
48
+ const compiledStatus = compiled ? 'ok' : 'error';
49
+ logResult({ name: 'triggered', status: compiledStatus }, 'Compilation');
50
+ }
51
+ return {
52
+ message: 'Your functions are published to your application.',
53
+ success: true,
54
+ };
55
+ }
56
+ case 409: {
57
+ const { created, updated, deleted, message } = (await res.json());
58
+ created.forEach((result) => logResult(result, 'Create:'));
59
+ updated.forEach((result) => logResult(result, 'Update:'));
60
+ deleted.forEach((result) => logResult(result, 'Delete:'));
61
+ return {
62
+ message: message ?? '409 Conflict',
63
+ success: false,
64
+ };
65
+ }
66
+ default:
67
+ throw new Error(`Couldn't publish functions, Error: ${res.status},${await res.text()}`);
68
+ }
69
+ });
70
+ };
71
+ const publishFunctions = async (config) => {
72
+ const functionsDir = path.join(workingDir, 'functions');
73
+ const zipFile = await zipFunctionDefinitions(functionsDir, config.includes);
74
+ const functions = await functionDefinitions(functionsDir);
75
+ const functionsJson = stringifyDefinitions(functions);
76
+ const { success, message } = await uploadAppFunctions(zipFile, functionsJson, config);
77
+ if (success) {
78
+ console.log(`\n${chalk.green.underline(`✔ ${message}`)}`);
79
+ }
80
+ else {
81
+ console.log(`\n${chalk.red.underline(`✖ ${message}`)}`);
82
+ }
83
+ };
84
+ const publishAppFunctions = async ({ skipCompile, }) => {
85
+ const config = new Config({ skipCompile });
86
+ console.log(chalk.bold(`\nPublishing to ${config.host} (${config.zone})`));
87
+ await publishFunctions(config);
88
+ };
89
+ export default publishAppFunctions;
90
+ //# sourceMappingURL=publishAppFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishAppFunctions.js","sourceRoot":"","sources":["../../src/functions/publishAppFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const publishWasmBlockStoreFunctions: (functionsPath: string, functionPaths: string[]) => Promise<void>;
@@ -0,0 +1,100 @@
1
+ import { camel } from 'case';
2
+ import chalk from 'chalk';
3
+ import fs from 'fs-extra';
4
+ import fetch, { fileFromSync, FormData } from 'node-fetch';
5
+ import path from 'path';
6
+ import FusionAuth from '../utils/login';
7
+ import Config from './config';
8
+ export const publishWasmBlockStoreFunctions = async (functionsPath, functionPaths) => {
9
+ const config = new Config();
10
+ for (const functionPath of functionPaths) {
11
+ await publishWasmFunction(functionsPath, functionPath, config);
12
+ }
13
+ };
14
+ const publishWasmFunction = async (functionsPath, functionPath, config) => {
15
+ const functionDir = path.join(functionsPath, functionPath);
16
+ const wasmFile = getWasmFileFromDir(functionDir);
17
+ if (!wasmFile) {
18
+ console.log(chalk.yellow(`! No .wasm file found in ${functionDir}, skipping...`));
19
+ return;
20
+ }
21
+ const functionJson = getFunctionJsonFromDir(functionDir);
22
+ if (!functionJson) {
23
+ console.log(chalk.yellow(`! No function.json file found in ${functionDir}, skipping...`));
24
+ return;
25
+ }
26
+ const blockName = path.basename(path.dirname(functionPath));
27
+ await uploadBlock({
28
+ blockName,
29
+ config,
30
+ file: wasmFile,
31
+ functionJson,
32
+ });
33
+ console.log(chalk.green.underline(`✔ Published ${functionPath}`));
34
+ };
35
+ const getWasmFileFromDir = (functionDir) => {
36
+ const files = fs.readdirSync(functionDir);
37
+ for (const file of files) {
38
+ if (file.endsWith('.wasm')) {
39
+ return fileFromSync(path.join(functionDir, file));
40
+ }
41
+ }
42
+ return null;
43
+ };
44
+ const getFunctionJsonFromDir = (functionDir) => {
45
+ const functionJsonPath = path.join(functionDir, 'function.json');
46
+ if (fs.existsSync(functionJsonPath)) {
47
+ const version = path.basename(functionDir);
48
+ const name = camel(path.basename(path.dirname(functionDir)));
49
+ const json = {
50
+ ...fs.readJsonSync(functionJsonPath),
51
+ name,
52
+ version,
53
+ };
54
+ return stringifyDefinition(json);
55
+ }
56
+ return null;
57
+ };
58
+ const stringifyDefinition = (definition) => {
59
+ const updatedDefinition = {
60
+ ...definition,
61
+ options: JSON.stringify(definition.options ?? []),
62
+ paths: JSON.stringify(definition.paths ?? {}),
63
+ };
64
+ return JSON.stringify([updatedDefinition]);
65
+ };
66
+ const uploadBlock = async ({ file, functionJson, blockName, config, }) => {
67
+ const fusionAuth = new FusionAuth(config);
68
+ const { blockstoreApiUrl, agent } = config;
69
+ const applicationId = await config.applicationId();
70
+ if (!applicationId) {
71
+ throw new Error("Couldn't publish block(s), Error: application id not found");
72
+ }
73
+ const form = new FormData();
74
+ form.append('name', blockName);
75
+ form.append('file', file);
76
+ form.append('functions', functionJson);
77
+ const url = `${blockstoreApiUrl}/blocks/publish?type=wasm-function`;
78
+ return fetch(url, {
79
+ agent,
80
+ body: form,
81
+ headers: {
82
+ Accept: 'application/json',
83
+ ApplicationId: applicationId,
84
+ Authorization: `Bearer ${fusionAuth.jwt()}`,
85
+ },
86
+ method: 'POST',
87
+ }).then(async (res) => {
88
+ if ((res.status === 401 || res.status === 403) &&
89
+ applicationId != 'native') {
90
+ await fusionAuth.ensureLogin();
91
+ return uploadBlock({ blockName, config, file, functionJson });
92
+ }
93
+ if (res.status !== 201) {
94
+ const error = await res.text();
95
+ throw new Error(`Couldn't publish block(s), Error: ${res.status}, ${error.match('## Connection details') ? 'Something went wrong' : error}`);
96
+ }
97
+ return true;
98
+ });
99
+ };
100
+ //# sourceMappingURL=publishWasmBlockStoreFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishWasmBlockStoreFunctions.js","sourceRoot":"","sources":["../../src/functions/publishWasmBlockStoreFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import https, { type AgentOptions } from 'https';
2
+ export declare const setHttpsAgent: (agentOptions?: AgentOptions) => https.Agent | undefined;
@@ -0,0 +1,20 @@
1
+ import fs from 'fs-extra';
2
+ import https, {} from 'https';
3
+ import path from 'path';
4
+ export const setHttpsAgent = (agentOptions) => {
5
+ let options;
6
+ if (agentOptions) {
7
+ options = ['ca', 'cert', 'key'].reduce((acc, key) => {
8
+ if (typeof agentOptions[key] === 'string') {
9
+ return {
10
+ ...acc,
11
+ [key]: fs.readFileSync(path.resolve(agentOptions[key])),
12
+ };
13
+ }
14
+ return acc;
15
+ }, agentOptions);
16
+ }
17
+ const agent = agentOptions && options ? new https.Agent(options) : undefined;
18
+ return agent;
19
+ };
20
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/functions/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,EAAE,EAAqB,MAAM,OAAO,CAAC;AACjD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,YAA2B,EACF,EAAE;IAC3B,IAAI,OAAiC,CAAC;IAEtC,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,GAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAW,CAAC,MAAM,CAC/C,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACX,IAAI,OAAO,YAAY,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO;oBACL,GAAG,GAAG;oBACN,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAW,CAAC,CAAC;iBAClE,CAAC;YACJ,CAAC;YAED,OAAO,GAAG,CAAC;QACb,CAAC,EACD,YAAY,CACb,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7E,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const validateFunctions: (isWasmFunctionProject: boolean, baseFunctionsPath: string, inputFunctionName?: string) => Promise<{
2
+ valid: boolean;
3
+ }>;
@@ -0,0 +1,23 @@
1
+ import chalk from 'chalk';
2
+ import Config from './config';
3
+ import { FunctionValidator, logValidationResult } from './validations';
4
+ export const validateFunctions = async (isWasmFunctionProject, baseFunctionsPath, inputFunctionName) => {
5
+ const config = new Config();
6
+ const validator = new FunctionValidator(config, baseFunctionsPath);
7
+ await validator.initSchema();
8
+ console.log(chalk.bold(`Validating functions in ${baseFunctionsPath}`));
9
+ const results = await validator.validateFunctions({
10
+ inputFunctionName,
11
+ isWasmFunctionProject,
12
+ });
13
+ results.forEach(logValidationResult);
14
+ const valid = results.every((result) => result.status === 'ok');
15
+ if (valid) {
16
+ console.log(`\n${chalk.green.underline(`✔ All your functions are valid and ready to be published!`)}`);
17
+ }
18
+ else {
19
+ console.log(`\n${chalk.red.underline(`✖ Certain functions in your project are invalid.`)}`);
20
+ }
21
+ return { valid };
22
+ };
23
+ //# sourceMappingURL=validateFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateFunctions.js","sourceRoot":"","sources":["../../src/functions/validateFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEvE,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,qBAA8B,EAC9B,iBAAyB,EACzB,iBAA0B,EACG,EAAE;IAC/B,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACnE,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;IAE7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAExE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC;QAChD,iBAAiB;QACjB,qBAAqB;KACtB,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAErC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAEhE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,CACxB,2DAA2D,CAC5D,EAAE,CACJ,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,GAAG,CAAC,SAAS,CACtB,kDAAkD,CACnD,EAAE,CACJ,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC"}