@betty-blocks/cli 25.109.0-beta.1 → 26.0.0-alpha.2

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 (184) 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 +6 -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.js +23 -0
  9. package/build/bb-blocks-new.js.map +1 -0
  10. package/build/bb-blocks-publish.js +98 -0
  11. package/build/bb-blocks-publish.js.map +1 -0
  12. package/build/bb-blocks-release.js +18 -0
  13. package/build/bb-blocks-release.js.map +1 -0
  14. package/build/bb-blocks.js +17 -0
  15. package/build/bb-blocks.js.map +1 -0
  16. package/build/bb-bundle-init.js +33 -0
  17. package/build/bb-bundle-init.js.map +1 -0
  18. package/build/bb-bundle.js +17 -0
  19. package/build/bb-bundle.js.map +1 -0
  20. package/build/bb-components-build.js +416 -0
  21. package/build/bb-components-build.js.map +1 -0
  22. package/build/bb-components-create.js +41 -0
  23. package/build/bb-components-create.js.map +1 -0
  24. package/build/bb-components-generate.js +168 -0
  25. package/build/bb-components-generate.js.map +1 -0
  26. package/build/bb-components-publish-bundle.js +50 -0
  27. package/build/bb-components-publish-bundle.js.map +1 -0
  28. package/build/bb-components-publish.js +57 -0
  29. package/build/bb-components-publish.js.map +1 -0
  30. package/build/bb-components-serve.js +35 -0
  31. package/build/bb-components-serve.js.map +1 -0
  32. package/build/bb-components.js +29 -0
  33. package/build/bb-components.js.map +1 -0
  34. package/build/bb-functions-bump.js +37 -0
  35. package/build/bb-functions-bump.js.map +1 -0
  36. package/build/bb-functions-init.js +31 -0
  37. package/build/bb-functions-init.js.map +1 -0
  38. package/build/bb-functions-login.js +17 -0
  39. package/build/bb-functions-login.js.map +1 -0
  40. package/build/bb-functions-logout.js +10 -0
  41. package/build/bb-functions-logout.js.map +1 -0
  42. package/build/bb-functions-new.js +25 -0
  43. package/build/bb-functions-new.js.map +1 -0
  44. package/build/bb-functions-publish.js +70 -0
  45. package/build/bb-functions-publish.js.map +1 -0
  46. package/build/bb-functions-validate.js +32 -0
  47. package/build/bb-functions-validate.js.map +1 -0
  48. package/build/bb-functions.js +29 -0
  49. package/build/bb-functions.js.map +1 -0
  50. package/build/bb.js +27 -0
  51. package/build/bb.js.map +1 -0
  52. package/build/blocks/blockDefinitions.js +55 -0
  53. package/build/blocks/blockDefinitions.js.map +1 -0
  54. package/build/blocks/publishBlocks.js +54 -0
  55. package/build/blocks/publishBlocks.js.map +1 -0
  56. package/build/blocks/releaseBlocks.js +78 -0
  57. package/build/blocks/releaseBlocks.js.map +1 -0
  58. package/build/components/bb-components-functions.js +40 -0
  59. package/build/components/bb-components-functions.js.map +1 -0
  60. package/build/components/comments.js +78 -0
  61. package/build/components/comments.js.map +1 -0
  62. package/build/components/compatibility.js +60 -0
  63. package/build/components/compatibility.js.map +1 -0
  64. package/build/components/transformers/index.js +36 -0
  65. package/build/components/transformers/index.js.map +1 -0
  66. package/build/components-build/index.js +3 -0
  67. package/build/components-build/index.js.map +1 -0
  68. package/build/components-build/reportDiagnostics.js +13 -0
  69. package/build/components-build/reportDiagnostics.js.map +1 -0
  70. package/build/components-build/styles.js +87 -0
  71. package/build/components-build/styles.js.map +1 -0
  72. package/build/functions/config.js +190 -0
  73. package/build/functions/config.js.map +1 -0
  74. package/build/functions/createWasmDefinitionFiles.js +61 -0
  75. package/build/functions/createWasmDefinitionFiles.js.map +1 -0
  76. package/build/functions/functionDefinitions.js +211 -0
  77. package/build/functions/functionDefinitions.js.map +1 -0
  78. package/build/functions/functionVersionBump.js +59 -0
  79. package/build/functions/functionVersionBump.js.map +1 -0
  80. package/build/functions/publishAppFunctions.js +90 -0
  81. package/build/functions/publishAppFunctions.js.map +1 -0
  82. package/build/functions/publishWasmBlockStoreFunctions.js +99 -0
  83. package/build/functions/publishWasmBlockStoreFunctions.js.map +1 -0
  84. package/build/functions/utils.js +20 -0
  85. package/build/functions/utils.js.map +1 -0
  86. package/build/functions/validations.js +140 -0
  87. package/build/functions/validations.js.map +1 -0
  88. package/build/interactions/compatibility.js +84 -0
  89. package/build/interactions/compatibility.js.map +1 -0
  90. package/build/interactions/diagnostics.js +23 -0
  91. package/build/interactions/diagnostics.js.map +1 -0
  92. package/build/types.js +40 -0
  93. package/build/types.js.map +1 -0
  94. package/build/utils/arguments.js +6 -0
  95. package/build/utils/arguments.js.map +1 -0
  96. package/build/utils/checkPackageVersion.js +10 -0
  97. package/build/utils/checkPackageVersion.js.map +1 -0
  98. package/build/utils/checkUpdateAvailable.js +65 -0
  99. package/build/utils/checkUpdateAvailable.js.map +1 -0
  100. package/build/utils/fusionAuth.js +108 -0
  101. package/build/utils/fusionAuth.js.map +1 -0
  102. package/build/utils/hash.js +3 -0
  103. package/build/utils/hash.js.map +1 -0
  104. package/build/utils/login.js +116 -0
  105. package/build/utils/login.js.map +1 -0
  106. package/build/utils/pick.js +16 -0
  107. package/build/utils/pick.js.map +1 -0
  108. package/build/utils/readFilesByType.js +23 -0
  109. package/build/utils/readFilesByType.js.map +1 -0
  110. package/build/utils/rootDir.js +4 -0
  111. package/build/utils/rootDir.js.map +1 -0
  112. package/build/utils/serveComponentSet.js +52 -0
  113. package/build/utils/serveComponentSet.js.map +1 -0
  114. package/build/utils/transpile.js +25 -0
  115. package/build/utils/transpile.js.map +1 -0
  116. package/build/utils/uploadBlob.js +56 -0
  117. package/build/utils/uploadBlob.js.map +1 -0
  118. package/build/utils/validation.js +74 -0
  119. package/build/utils/validation.js.map +1 -0
  120. package/build/validations/component.js +56 -0
  121. package/build/validations/component.js.map +1 -0
  122. package/build/validations/constants.js +208 -0
  123. package/build/validations/constants.js.map +1 -0
  124. package/build/validations/function-block-validations/index.js +72 -0
  125. package/build/validations/function-block-validations/index.js.map +1 -0
  126. package/build/validations/interaction.js +22 -0
  127. package/build/validations/interaction.js.map +1 -0
  128. package/build/validations/prefab/action.js +99 -0
  129. package/build/validations/prefab/action.js.map +1 -0
  130. package/build/validations/prefab/component.js +290 -0
  131. package/build/validations/prefab/component.js.map +1 -0
  132. package/build/validations/prefab/componentOption.js +176 -0
  133. package/build/validations/prefab/componentOption.js.map +1 -0
  134. package/build/validations/prefab/interaction.js +38 -0
  135. package/build/validations/prefab/interaction.js.map +1 -0
  136. package/build/validations/prefab/linkedOption.js +39 -0
  137. package/build/validations/prefab/linkedOption.js.map +1 -0
  138. package/build/validations/prefab/linkedPartial.js +30 -0
  139. package/build/validations/prefab/linkedPartial.js.map +1 -0
  140. package/build/validations/prefab/variable.js +36 -0
  141. package/build/validations/prefab/variable.js.map +1 -0
  142. package/build/validations/prefab.js +66 -0
  143. package/build/validations/prefab.js.map +1 -0
  144. package/build/validations/styles.js +103 -0
  145. package/build/validations/styles.js.map +1 -0
  146. package/package.json +42 -43
  147. package/assets/app-functions/templates/test/helpers.js +0 -3
  148. package/assets/app-functions/templates/test/say-hello.test.js +0 -4
  149. package/assets/functions/packer/package.json +0 -9
  150. package/assets/functions/packer/webpack.config.js +0 -12
  151. package/assets/functions/templates/functions.json +0 -14
  152. package/assets/functions/templates/package.json +0 -11
  153. package/assets/functions/templates/src/all-users.js +0 -14
  154. package/assets/functions/templates/src/get-json.js +0 -9
  155. package/assets/functions/templates/src/index.js +0 -5
  156. package/assets/functions/templates/src/say-hello.js +0 -13
  157. package/build/src/bb-blocks-new.js +0 -6790
  158. package/build/src/bb-blocks-publish.js +0 -32642
  159. package/build/src/bb-blocks-release.js +0 -15529
  160. package/build/src/bb-blocks.js +0 -2149
  161. package/build/src/bb-bundle-init.js +0 -6036
  162. package/build/src/bb-bundle.js +0 -2636
  163. package/build/src/bb-components-build.js +0 -240486
  164. package/build/src/bb-components-create.js +0 -6047
  165. package/build/src/bb-components-generate.js +0 -6175
  166. package/build/src/bb-components-publish-bundle.js +0 -43348
  167. package/build/src/bb-components-publish.js +0 -43355
  168. package/build/src/bb-components-serve.js +0 -15328
  169. package/build/src/bb-components.js +0 -2157
  170. package/build/src/bb-functions-build.js +0 -4285
  171. package/build/src/bb-functions-bump.js +0 -14583
  172. package/build/src/bb-functions-init.js +0 -4750
  173. package/build/src/bb-functions-login.js +0 -15441
  174. package/build/src/bb-functions-logout.js +0 -15435
  175. package/build/src/bb-functions-new.js +0 -9145
  176. package/build/src/bb-functions-publish.js +0 -86694
  177. package/build/src/bb-functions-validate.js +0 -22161
  178. package/build/src/bb-functions.js +0 -2159
  179. package/build/src/bb.js +0 -2741
  180. package/src/bb.ts +0 -31
  181. /package/assets/app-functions/{templates → js-template}/.app-functions +0 -0
  182. /package/assets/app-functions/{templates → js-template}/functions/say-hello/1.0/function.json +0 -0
  183. /package/assets/app-functions/{templates → js-template}/functions/say-hello/1.0/index.js +0 -0
  184. /package/assets/app-functions/{templates → js-template}/package.json +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishAppFunctions.js","sourceRoot":"","sources":["../../src/functions/publishAppFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
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
+ await fusionAuth.ensureLogin();
90
+ return uploadBlock({ blockName, config, file, functionJson });
91
+ }
92
+ if (res.status !== 201) {
93
+ const error = await res.text();
94
+ throw new Error(`Couldn't publish block(s), Error: ${res.status}, ${error.match('## Connection details') ? 'Something went wrong' : error}`);
95
+ }
96
+ return true;
97
+ });
98
+ };
99
+ //# sourceMappingURL=publishWasmBlockStoreFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishWasmBlockStoreFunctions.js","sourceRoot":"","sources":["../../src/functions/publishWasmBlockStoreFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,EACjD,aAAqB,EACrB,aAAuB,EACR,EAAE;IACjB,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAE5B,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,mBAAmB,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAC/B,aAAqB,EACrB,YAAoB,EACpB,MAAc,EACC,EAAE;IACjB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,4BAA4B,WAAW,eAAe,CAAC,CACrE,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,YAAY,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAEzD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,oCAAoC,WAAW,eAAe,CAC/D,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAE5D,MAAM,WAAW,CAAC;QAChB,SAAS;QACT,MAAM;QACN,IAAI,EAAE,QAAQ;QACd,YAAY;KACb,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,YAAY,EAAE,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,WAAmB,EAAe,EAAE;IAC9D,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,WAAmB,EAAiB,EAAE;IACpE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACjE,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG;YACX,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC;YACpC,IAAI;YACJ,OAAO;SACR,CAAC;QACF,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,UAAmC,EAAU,EAAE;IAC1E,MAAM,iBAAiB,GAAG;QACxB,GAAG,UAAU;QACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;QACjD,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;KAC9C,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC;AASF,MAAM,WAAW,GAAG,KAAK,EAAE,EACzB,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,MAAM,GACW,EAAoB,EAAE;IACvC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAE3C,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;IACnD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAEvC,MAAM,GAAG,GAAG,GAAG,gBAAgB,oCAAoC,CAAC;IAEpE,OAAO,KAAK,CAAC,GAAG,EAAE;QAChB,KAAK;QACL,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,aAAa,EAAE,aAAa;YAC5B,aAAa,EAAE,UAAU,UAAU,CAAC,GAAG,EAAE,EAAE;SAC5C;QACD,MAAM,EAAE,MAAM;KACf,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACpB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC7C,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;YAC/B,OAAO,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,qCAAqC,GAAG,CAAC,MAAM,KAC7C,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAClE,EAAE,CACH,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -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,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, }) {
116
+ const definitions = functionDefinitions(this.functionsDir, true);
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,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,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"}
package/build/types.js ADDED
@@ -0,0 +1,40 @@
1
+ import { ICONS } from './validations/constants';
2
+ export var AllowedStateKeys;
3
+ (function (AllowedStateKeys) {
4
+ AllowedStateKeys["SELECTED"] = "selected";
5
+ AllowedStateKeys["HOVER"] = "hover";
6
+ AllowedStateKeys["FOCUS"] = "focus";
7
+ AllowedStateKeys["DISABLED"] = "disabled";
8
+ AllowedStateKeys["VALID"] = "valid";
9
+ AllowedStateKeys["INVALID"] = "invalid";
10
+ AllowedStateKeys["READONLY"] = "readOnly";
11
+ })(AllowedStateKeys || (AllowedStateKeys = {}));
12
+ export var InteractionOptionType;
13
+ (function (InteractionOptionType) {
14
+ InteractionOptionType["Boolean"] = "Boolean";
15
+ InteractionOptionType["Number"] = "Number";
16
+ InteractionOptionType["String"] = "String";
17
+ InteractionOptionType["Event"] = "Event";
18
+ InteractionOptionType["Void"] = "Void";
19
+ InteractionOptionType["Page"] = "Page";
20
+ InteractionOptionType["Locale"] = "Locale";
21
+ InteractionOptionType["Unknown"] = "Unknown";
22
+ })(InteractionOptionType || (InteractionOptionType = {}));
23
+ // TODO: Add support
24
+ export var InteractionOptionTypeToDo;
25
+ (function (InteractionOptionTypeToDo) {
26
+ InteractionOptionTypeToDo["Color"] = "Color";
27
+ InteractionOptionTypeToDo["Endpoint"] = "Endpoint";
28
+ InteractionOptionTypeToDo["Filter"] = "Filter";
29
+ InteractionOptionTypeToDo["Font"] = "Font";
30
+ InteractionOptionTypeToDo["Properties"] = "Properties";
31
+ InteractionOptionTypeToDo["Property"] = "Property";
32
+ InteractionOptionTypeToDo["Size"] = "Size";
33
+ InteractionOptionTypeToDo["Unit"] = "Unit";
34
+ })(InteractionOptionTypeToDo || (InteractionOptionTypeToDo = {}));
35
+ export var InteractionType;
36
+ (function (InteractionType) {
37
+ InteractionType["Custom"] = "Custom";
38
+ InteractionType["Global"] = "Global";
39
+ })(InteractionType || (InteractionType = {}));
40
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AA6EhD,MAAM,CAAN,IAAY,gBAQX;AARD,WAAY,gBAAgB;IAC1B,yCAAqB,CAAA;IACrB,mCAAe,CAAA;IACf,mCAAe,CAAA;IACf,yCAAqB,CAAA;IACrB,mCAAe,CAAA;IACf,uCAAmB,CAAA;IACnB,yCAAqB,CAAA;AACvB,CAAC,EARW,gBAAgB,KAAhB,gBAAgB,QAQ3B;AAuND,MAAM,CAAN,IAAY,qBASX;AATD,WAAY,qBAAqB;IAC/B,4CAAmB,CAAA;IACnB,0CAAiB,CAAA;IACjB,0CAAiB,CAAA;IACjB,wCAAe,CAAA;IACf,sCAAa,CAAA;IACb,sCAAa,CAAA;IACb,0CAAiB,CAAA;IACjB,4CAAmB,CAAA;AACrB,CAAC,EATW,qBAAqB,KAArB,qBAAqB,QAShC;AAED,oBAAoB;AACpB,MAAM,CAAN,IAAY,yBASX;AATD,WAAY,yBAAyB;IACnC,4CAAe,CAAA;IACf,kDAAqB,CAAA;IACrB,8CAAiB,CAAA;IACjB,0CAAa,CAAA;IACb,sDAAyB,CAAA;IACzB,kDAAqB,CAAA;IACrB,0CAAa,CAAA;IACb,0CAAa,CAAA;AACf,CAAC,EATW,yBAAyB,KAAzB,yBAAyB,QASpC;AA+BD,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B"}
@@ -0,0 +1,6 @@
1
+ export const parseDir = (args) => args.length === 0 ? '.' : args[0];
2
+ export const parsePort = (portRaw, defaultPort) => {
3
+ const port = parseInt(portRaw, 10);
4
+ return Number.isNaN(port) ? defaultPort : port;
5
+ };
6
+ //# sourceMappingURL=arguments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../src/utils/arguments.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAU,EAAE,CACjD,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,OAA2B,EAC3B,WAAmB,EACX,EAAE;IACV,MAAM,IAAI,GAAW,QAAQ,CAAC,OAAiB,EAAE,EAAE,CAAC,CAAC;IAErD,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { exec } from 'child_process';
2
+ import { promisify } from 'util';
3
+ const execPromise = promisify(exec);
4
+ export const checkPackageVersion = async (name) => {
5
+ const { stderr: error } = await execPromise(`npm view ${name} version`);
6
+ if (error) {
7
+ throw new Error(error);
8
+ }
9
+ };
10
+ //# sourceMappingURL=checkPackageVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkPackageVersion.js","sourceRoot":"","sources":["../../src/utils/checkPackageVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;IACvE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IACxE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,65 @@
1
+ import chalk from 'chalk';
2
+ import { exec } from 'child_process';
3
+ import { mkdir, pathExists, readJson, writeJson } from 'fs-extra';
4
+ import { tmpdir } from 'os';
5
+ import { lt } from 'semver';
6
+ import { promisify } from 'util';
7
+ // eslint-disable-next-line
8
+ const { version: versionCLI, name: nameCLI } = require('../../package.json');
9
+ const execPromise = promisify(exec);
10
+ const TEMP_FOLDER = `${tmpdir()}/bettyblocks`;
11
+ const logUpdateAvailable = (localVersion, remoteVersion, name) => {
12
+ if (lt(localVersion, remoteVersion)) {
13
+ console.log(`${name} update available from ${chalk.greenBright(localVersion)} to ${chalk.greenBright(remoteVersion)}`);
14
+ }
15
+ };
16
+ const getRemoteVersionCLI = async () => {
17
+ const { stdout: output, stderr: error } = await execPromise(`npm show @betty-blocks/cli version`);
18
+ const remoteVersionCLI = output.toString().trim();
19
+ if (error) {
20
+ throw new Error(error);
21
+ }
22
+ return remoteVersionCLI;
23
+ };
24
+ const writeToFile = async () => {
25
+ const remoteVersionCLI = await getRemoteVersionCLI();
26
+ await writeJson(`${TEMP_FOLDER}/versions.json`, {
27
+ timestamp: Date.now(),
28
+ versions: {
29
+ remoteVersionCLI,
30
+ },
31
+ });
32
+ };
33
+ const readFile = async () => {
34
+ const folderExist = await pathExists(TEMP_FOLDER);
35
+ let remoteVersion;
36
+ if (!folderExist) {
37
+ await mkdir(TEMP_FOLDER);
38
+ }
39
+ const fileExist = await pathExists(`${TEMP_FOLDER}/versions.json`);
40
+ if (fileExist) {
41
+ const { versions, timestamp } = (await readJson(`${TEMP_FOLDER}/versions.json`));
42
+ if (timestamp + 86400000 < Date.now()) {
43
+ console.log('Checking for new versions..');
44
+ await writeToFile();
45
+ remoteVersion = await readFile();
46
+ console.log('Done');
47
+ }
48
+ remoteVersion = versions;
49
+ }
50
+ else {
51
+ await writeToFile();
52
+ remoteVersion = await readFile();
53
+ }
54
+ return remoteVersion;
55
+ };
56
+ export const checkUpdateAvailableCLI = async () => {
57
+ try {
58
+ const { remoteVersionCLI } = await readFile();
59
+ logUpdateAvailable(versionCLI, remoteVersionCLI, nameCLI);
60
+ }
61
+ catch {
62
+ console.error('Unable to check for a new version');
63
+ }
64
+ };
65
+ //# sourceMappingURL=checkUpdateAvailable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkUpdateAvailable.js","sourceRoot":"","sources":["../../src/utils/checkUpdateAvailable.ts"],"names":[],"mappings":"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"}