@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 @@
1
+ export {};
@@ -0,0 +1,29 @@
1
+ import { Command } from 'commander';
2
+ const availableCommands = [
3
+ 'bump',
4
+ 'init',
5
+ 'login',
6
+ 'logout',
7
+ 'new',
8
+ 'publish',
9
+ 'validate',
10
+ ];
11
+ const program = new Command();
12
+ program
13
+ .usage(`<${availableCommands.join('|')}>`)
14
+ .name('bb functions')
15
+ .command('bump', 'increase the major/minor version of a specific function')
16
+ .command('init', 'initialize functions project')
17
+ .command('login', 'login using the same credentials as the IDE')
18
+ .command('logout', 'remove all tokens used to authenticate with the APIs')
19
+ .command('new [function-name]', 'Initialize a new function')
20
+ .command('publish', 'publish functions of current working directory')
21
+ .command('validate', 'validate functions of current working directory')
22
+ .on('command:*', ([command]) => {
23
+ if (!availableCommands.includes(command)) {
24
+ console.error('Invalid command: %s\n', command);
25
+ program.outputHelp();
26
+ }
27
+ })
28
+ .parse(process.argv);
29
+ //# sourceMappingURL=bb-functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bb-functions.js","sourceRoot":"","sources":["../src/bb-functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,iBAAiB,GAAuB;IAC5C,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,KAAK;IACL,SAAS;IACT,UAAU;CACX,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;KACzC,IAAI,CAAC,cAAc,CAAC;KACpB,OAAO,CAAC,MAAM,EAAE,yDAAyD,CAAC;KAC1E,OAAO,CAAC,MAAM,EAAE,8BAA8B,CAAC;KAC/C,OAAO,CAAC,OAAO,EAAE,6CAA6C,CAAC;KAC/D,OAAO,CAAC,QAAQ,EAAE,sDAAsD,CAAC;KACzE,OAAO,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;KAC3D,OAAO,CAAC,SAAS,EAAE,gDAAgD,CAAC;KACpE,OAAO,CAAC,UAAU,EAAE,iDAAiD,CAAC;KACtE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAqB,EAAQ,EAAE;IACvD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC;AACH,CAAC,CAAC;KACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/build/bb.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env bun
2
+ export {};
package/build/bb.js ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env bun
2
+ import chalk from 'chalk';
3
+ import { Command } from 'commander';
4
+ import pkg from '../package.json';
5
+ import {} from './types';
6
+ const availableCommands = [
7
+ 'blocks',
8
+ 'components',
9
+ 'functions',
10
+ 'bundle',
11
+ 'help',
12
+ ];
13
+ const program = new Command();
14
+ program
15
+ .description('Betty Blocks CLI')
16
+ .version(pkg.version, '-v, --version')
17
+ .command('components [cmd]', 'manage your component sets')
18
+ .command('blocks [cmd]', 'manage your blocks')
19
+ .command('functions [cmd]', 'manage your custom functions')
20
+ .command('bundle [cmd]', 'manage your vendor bundle')
21
+ .on('command:*', ([command]) => {
22
+ if (!availableCommands.includes(command)) {
23
+ throw new Error(chalk.red(`\nInvalid command: ${command}\n`));
24
+ }
25
+ })
26
+ .parse(process.argv);
27
+ //# sourceMappingURL=bb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bb.js","sourceRoot":"","sources":["../src/bb.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,EAAkB,MAAM,SAAS,CAAC;AAEzC,MAAM,iBAAiB,GAAgB;IACrC,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,MAAM;CACP,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,WAAW,CAAC,kBAAkB,CAAC;KAC/B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC;KACrC,OAAO,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;KACzD,OAAO,CAAC,cAAc,EAAE,oBAAoB,CAAC;KAC7C,OAAO,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;KAC1D,OAAO,CAAC,cAAc,EAAE,2BAA2B,CAAC;KACpD,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAW,EAAQ,EAAE;IAC7C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAoB,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,OAAO,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC,CAAC;KACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface Block {
2
+ dependencies: string[];
3
+ functions: string[];
4
+ includes: string[];
5
+ }
6
+ declare const createPackageJson: (name: string, rootPackageJson: string, dependencies: string[]) => string;
7
+ declare const blockDefinitions: (blocksDir: string) => Promise<string[]>;
8
+ declare const blockDefinitionPath: (blockPath: string, blockName: string) => string;
9
+ declare const newBlockDefinition: (blocksDir: string, blockName: string) => string;
10
+ export { blockDefinitionPath, blockDefinitions, createPackageJson, newBlockDefinition, };
@@ -0,0 +1,62 @@
1
+ import { Glob } from 'bun';
2
+ import fs from 'fs-extra';
3
+ import path from 'path';
4
+ import { pick } from '../utils/pick';
5
+ /* @doc createPackageJson
6
+ Returns an object containing all data needed for the block package json
7
+ */
8
+ const createPackageJson = (name, rootPackageJson, dependencies) => {
9
+ const rootDependencies = pick(fs.readJsonSync(rootPackageJson).dependencies, dependencies);
10
+ const packageJson = JSON.stringify({
11
+ dependencies: rootDependencies,
12
+ name,
13
+ private: 'true',
14
+ version: '1.0.0',
15
+ }, null, 2);
16
+ return packageJson;
17
+ };
18
+ /* @doc functionDirs
19
+ Returns a list of blocks.
20
+ */
21
+ const blockFiles = async (blockDir) => {
22
+ const glob = new Glob('*.json');
23
+ const matches = [];
24
+ for await (const file of glob.scan(path.join(blockDir).replace(/\\/g, '/'))) {
25
+ matches.push(path.join(blockDir, file));
26
+ }
27
+ return matches;
28
+ };
29
+ /* @doc blockDefinitions
30
+ Returns an array containing all block definitions
31
+ inside the given blocksDir.
32
+ */
33
+ const blockDefinitions = async (blocksDir) => {
34
+ const files = await blockFiles(blocksDir);
35
+ return files.map((blocks) => blocks);
36
+ };
37
+ /* @doc blockDefinitionPath
38
+ Expands the block dir with a json file with the given blockname.
39
+ */
40
+ const blockDefinitionPath = (blockPath, blockName) => path.join(blockPath, `${blockName}.json`);
41
+ /* @doc newBlockDefinition
42
+ If block does not exists it will create a new json file with the given blockname.
43
+ */
44
+ const newBlockDefinition = (blocksDir, blockName) => {
45
+ try {
46
+ const existingBlock = fs.existsSync(blockDefinitionPath(blocksDir, blockName));
47
+ if (existingBlock)
48
+ return 'Block already exists';
49
+ fs.mkdirpSync(blocksDir);
50
+ fs.writeJSONSync(blockDefinitionPath(blocksDir, blockName), {
51
+ dependencies: [],
52
+ functions: [],
53
+ includes: [],
54
+ }, { spaces: 2 });
55
+ return `blocks/${blockName}.json created`;
56
+ }
57
+ catch (err) {
58
+ throw new Error(`could not initialize new block ${blocksDir}: ${err}`);
59
+ }
60
+ };
61
+ export { blockDefinitionPath, blockDefinitions, createPackageJson, newBlockDefinition, };
62
+ //# sourceMappingURL=blockDefinitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockDefinitions.js","sourceRoot":"","sources":["../../src/blocks/blockDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAYrC;;EAEE;AACF,MAAM,iBAAiB,GAAG,CACxB,IAAY,EACZ,eAAuB,EACvB,YAAsB,EACd,EAAE;IACV,MAAM,gBAAgB,GAAG,IAAI,CAC1B,EAAE,CAAC,YAAY,CAAC,eAAe,CAAqB,CAAC,YAAY,EAClE,YAAY,CACb,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAChC;QACE,YAAY,EAAE,gBAAgB;QAC9B,IAAI;QACJ,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,OAAO;KACjB,EACD,IAAI,EACJ,CAAC,CACF,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF;;EAEE;AACF,MAAM,UAAU,GAAG,KAAK,EAAE,QAAgB,EAAqB,EAAE;IAC/D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;EAGE;AACF,MAAM,gBAAgB,GAAG,KAAK,EAAE,SAAiB,EAAqB,EAAE;IACtE,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF;;EAEE;AACF,MAAM,mBAAmB,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAU,EAAE,CAC3E,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,OAAO,CAAC,CAAC;AAE5C;;EAEE;AACF,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAU,EAAE;IAC1E,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CACjC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAC1C,CAAC;QAEF,IAAI,aAAa;YAAE,OAAO,sBAAsB,CAAC;QACjD,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACzB,EAAE,CAAC,aAAa,CACd,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,EACzC;YACE,YAAY,EAAE,EAAE;YAChB,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;SACb,EACD,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,CAAC;QACF,OAAO,UAAU,SAAS,eAAe,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kCAAkC,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const publishBlocks: (functions: string[], zip: string) => Promise<void>;
2
+ export default publishBlocks;
@@ -0,0 +1,54 @@
1
+ import chalk from 'chalk';
2
+ import fetch, { fileFromSync, FormData } from 'node-fetch';
3
+ import path from 'path';
4
+ import Config from '../functions/config';
5
+ import { functionDefinitions, stringifyDefinitions, whitelistedFunctions, } from '../functions/functionDefinitions';
6
+ import FusionAuth from '../utils/login';
7
+ const workingDir = process.cwd();
8
+ const uploadBlock = async (blockDefinitionsFile, functionsJson, config) => {
9
+ const fusionAuth = new FusionAuth(config);
10
+ const form = new FormData();
11
+ form.append('name', path.basename(blockDefinitionsFile, '.zip'));
12
+ form.append('functions', functionsJson);
13
+ form.append('file', fileFromSync(blockDefinitionsFile));
14
+ const applicationId = await config.applicationId();
15
+ if (!applicationId) {
16
+ throw new Error("Couldn't publish block(s), Error: application id not found");
17
+ }
18
+ const url = `${config.blockstoreApiUrl}/blocks/publish`;
19
+ return fetch(url, {
20
+ agent: config.agent,
21
+ body: form,
22
+ headers: {
23
+ Accept: 'application/json',
24
+ ApplicationId: applicationId,
25
+ Authorization: `Bearer ${fusionAuth.jwt()}`,
26
+ },
27
+ method: 'POST',
28
+ }).then(async (res) => {
29
+ if (res.status === 401 || res.status === 403) {
30
+ await fusionAuth.ensureLogin();
31
+ return uploadBlock(blockDefinitionsFile, functionsJson, config);
32
+ }
33
+ if (res.status !== 201) {
34
+ const error = await res.text();
35
+ throw new Error(`Couldn't publish block(s), Error: ${res.status}, ${error.match('## Connection details') ? 'Something went wrong' : error}`);
36
+ }
37
+ return true;
38
+ });
39
+ };
40
+ const createAndPublishFiles = async (config, functions, zip) => {
41
+ const functionsDir = path.join(workingDir, 'functions');
42
+ const funcDefinitions = await functionDefinitions(functionsDir);
43
+ const blockFunctions = whitelistedFunctions(funcDefinitions, functions);
44
+ const functionsJson = stringifyDefinitions(blockFunctions);
45
+ await uploadBlock(zip, functionsJson, config);
46
+ };
47
+ const publishBlocks = async (functions, zip) => {
48
+ const config = new Config();
49
+ console.log(chalk.bold(`\nPublishing to ${config.host} (${config.zone})`));
50
+ await createAndPublishFiles(config, functions, zip);
51
+ console.log(chalk.green.underline(`✔ Your blocks are published to the block store.`));
52
+ };
53
+ export default publishBlocks;
54
+ //# sourceMappingURL=publishBlocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishBlocks.js","sourceRoot":"","sources":["../../src/blocks/publishBlocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ declare const releaseBlocks: ({ all, blockIds, }: {
2
+ all?: boolean;
3
+ blockIds: string[];
4
+ }) => Promise<boolean>;
5
+ export default releaseBlocks;
@@ -0,0 +1,78 @@
1
+ import fetch, {} from 'node-fetch';
2
+ import Config from '../functions/config';
3
+ import FusionAuth from '../utils/login';
4
+ const GET_DEV_BLOCKS = '/blocks/my-dev-blocks';
5
+ const POST_RELEASE_BLOCKS = '/blocks/release';
6
+ const sendBlockstoreRequest = async ({ urlPath, method, body, config, fusionAuth, applicationId, }) => {
7
+ const url = `${config.blockstoreApiUrl}${urlPath}`;
8
+ return fetch(url, {
9
+ agent: config.agent,
10
+ body,
11
+ headers: {
12
+ Accept: 'application/json',
13
+ ApplicationId: applicationId,
14
+ Authorization: `Bearer ${fusionAuth.jwt()}`,
15
+ 'content-type': 'application/json',
16
+ },
17
+ method,
18
+ }).then(async (res) => {
19
+ if (res.status === 401 || res.status === 403) {
20
+ await fusionAuth.ensureLogin();
21
+ return sendBlockstoreRequest({
22
+ applicationId,
23
+ body,
24
+ config,
25
+ fusionAuth,
26
+ method,
27
+ urlPath,
28
+ });
29
+ }
30
+ return res;
31
+ });
32
+ };
33
+ const fetchAllDevBlocks = async (config, fusionAuth, applicationId) => sendBlockstoreRequest({
34
+ applicationId,
35
+ body: undefined,
36
+ config,
37
+ fusionAuth,
38
+ method: 'GET',
39
+ urlPath: GET_DEV_BLOCKS,
40
+ });
41
+ const releaseBlocksInBlockstore = async ({ blockIds, config, fusionAuth, applicationId, }) => {
42
+ const response = await sendBlockstoreRequest({
43
+ applicationId,
44
+ body: JSON.stringify({ block_ids: blockIds }),
45
+ config,
46
+ fusionAuth,
47
+ method: 'POST',
48
+ urlPath: POST_RELEASE_BLOCKS,
49
+ });
50
+ if (!response.ok) {
51
+ await response
52
+ .text()
53
+ .then((text) => console.error(`Failed to release blocks in Blockstore: ${text}`));
54
+ return false;
55
+ }
56
+ return true;
57
+ };
58
+ const releaseBlocks = async ({ all, blockIds, }) => {
59
+ const config = new Config();
60
+ const fusionAuth = new FusionAuth(config);
61
+ const applicationId = await config.applicationId();
62
+ if (!applicationId) {
63
+ throw new Error("Couldn't publish block(s), Error: application id not found");
64
+ }
65
+ let blockIdsToBeReleased = blockIds;
66
+ if (all) {
67
+ const res = await fetchAllDevBlocks(config, fusionAuth, applicationId);
68
+ blockIdsToBeReleased = (await res.json());
69
+ }
70
+ return releaseBlocksInBlockstore({
71
+ applicationId,
72
+ blockIds: blockIdsToBeReleased,
73
+ config,
74
+ fusionAuth,
75
+ });
76
+ };
77
+ export default releaseBlocks;
78
+ //# sourceMappingURL=releaseBlocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseBlocks.js","sourceRoot":"","sources":["../../src/blocks/releaseBlocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type BlockBlobUploadResponseExtended } from '../utils/uploadBlob';
2
+ interface UploadProps {
3
+ blobContentType: string;
4
+ bucketName: string;
5
+ fileName: string;
6
+ objects: string;
7
+ }
8
+ export declare const publish: ({ blobContentType, bucketName, fileName, objects, }: UploadProps) => Promise<BlockBlobUploadResponseExtended>;
9
+ export declare const validateBucketName: (name: string) => void;
10
+ export {};
@@ -0,0 +1,40 @@
1
+ import chalk from 'chalk';
2
+ import uploadBlob, {} from '../utils/uploadBlob';
3
+ const upload = async ({ blobContentType, bucketName, fileName, objects, }) => {
4
+ try {
5
+ return await uploadBlob({
6
+ blobContainerName: bucketName,
7
+ blobContent: objects,
8
+ blobContentType,
9
+ blobName: fileName,
10
+ });
11
+ }
12
+ catch (error) {
13
+ const defaultMessage = 'There was an error trying to publish your component set';
14
+ const errorObject = error;
15
+ const { body, message } = errorObject;
16
+ if (!body) {
17
+ throw new Error(chalk.red([defaultMessage, message].join('\n')));
18
+ }
19
+ const { code, message: bodyMessage } = body;
20
+ const extraMessage = code === 'AuthenticationFailed'
21
+ ? 'Make sure your azure blob account and key are correct'
22
+ : bodyMessage;
23
+ throw new Error(chalk.red([defaultMessage, extraMessage].join('\n')));
24
+ }
25
+ };
26
+ export const publish = async ({ blobContentType, bucketName, fileName, objects, }) => {
27
+ console.log(`Publishing ${fileName}.`);
28
+ return upload({
29
+ blobContentType,
30
+ bucketName,
31
+ fileName,
32
+ objects,
33
+ });
34
+ };
35
+ export const validateBucketName = (name) => {
36
+ if (!name || typeof name !== 'string' || !name.length) {
37
+ throw new Error(chalk.red('\n-b or --bucket [name] is required\n'));
38
+ }
39
+ };
40
+ //# sourceMappingURL=bb-components-functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bb-components-functions.js","sourceRoot":"","sources":["../../src/components/bb-components-functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,UAAU,EAAE,EAElB,MAAM,qBAAqB,CAAC;AAS7B,MAAM,MAAM,GAAG,KAAK,EAAE,EACpB,eAAe,EACf,UAAU,EACV,QAAQ,EACR,OAAO,GACK,EAA4C,EAAE;IAC1D,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC;YACtB,iBAAiB,EAAE,UAAU;YAC7B,WAAW,EAAE,OAAO;YACpB,eAAe;YACf,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,cAAc,GAClB,yDAAyD,CAAC;QAE5D,MAAM,WAAW,GAAG,KAGnB,CAAC;QACF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;QAEtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAE5C,MAAM,YAAY,GAChB,IAAI,KAAK,sBAAsB;YAC7B,CAAC,CAAC,uDAAuD;YACzD,CAAC,CAAC,WAAW,CAAC;QAElB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,EAC5B,eAAe,EACf,UAAU,EACV,QAAQ,EACR,OAAO,GACK,EAA4C,EAAE;IAC1D,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC;QACZ,eAAe;QACf,UAAU;QACV,QAAQ;QACR,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAQ,EAAE;IACvD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Node, type ObjectLiteralElementLike } from 'typescript';
2
+ export declare const walkCompilerAstAndFindComments: (node: Node, foundComments: object[]) => void;
3
+ export declare const createLiteralObjectExpression: (params: object[]) => ObjectLiteralElementLike[];
@@ -0,0 +1,78 @@
1
+ import { explainSync } from 'jsdoc-api';
2
+ import { factory, getLeadingCommentRanges, getTrailingCommentRanges, SyntaxKind, } from 'typescript';
3
+ /**
4
+ * Retrieves the JSDoc-style comments associated with a specific AST node.
5
+ *
6
+ * Based on ts.getJSDocCommentRanges() from the compiler.
7
+ * https://github.com/microsoft/TypeScript/blob/v3.0.3/src/compiler/utilities.ts#L924
8
+ */
9
+ const getJSDocCommentRanges = (node, text) => {
10
+ const commentRanges = [];
11
+ const { Parameter, TypeParameter, FunctionExpression, ArrowFunction, ParenthesizedExpression, } = SyntaxKind;
12
+ switch (node.kind) {
13
+ case Parameter:
14
+ case TypeParameter:
15
+ case FunctionExpression:
16
+ case ArrowFunction:
17
+ case ParenthesizedExpression:
18
+ commentRanges.push(...(getTrailingCommentRanges(text, node.pos) ?? []));
19
+ break;
20
+ default:
21
+ break;
22
+ }
23
+ commentRanges.push(...(getLeadingCommentRanges(text, node.pos) ?? []));
24
+ // True if the comment starts with '/**' but not if it is '/**/'
25
+ return commentRanges.filter((comment) => text.charCodeAt(comment.pos + 1) ===
26
+ 0x2a /* ts.CharacterCodes.asterisk */ &&
27
+ text.charCodeAt(comment.pos + 2) ===
28
+ 0x2a /* ts.CharacterCodes.asterisk */ &&
29
+ text.charCodeAt(comment.pos + 3) !== 0x2f /* ts.CharacterCodes.slash */);
30
+ };
31
+ export const walkCompilerAstAndFindComments = (node, foundComments) => {
32
+ // The TypeScript AST doesn't store code comments directly. If you want to find *every* comment,
33
+ // you would need to rescan the SourceFile tokens similar to how tsutils.forEachComment() works:
34
+ // https://github.com/ajafff/tsutils/blob/v3.0.0/util/util.ts#L453
35
+ //
36
+ // However, for this demo we are modeling a tool that discovers declarations and then analyzes their doc comments,
37
+ // so we only care about TSDoc that would conventionally be associated with an interesting AST node.
38
+ const buffer = node.getSourceFile().getFullText(); // don't use getText() here!
39
+ // Only consider nodes that are part of a declaration form. Without this, we could discover
40
+ // the same comment twice (e.g. for a MethodDeclaration and its PublicKeyword).
41
+ // Find "/** */" style comments associated with this node.
42
+ // Note that this reinvokes the compiler's scanner -- the result is not cached.
43
+ const comments = getJSDocCommentRanges(node, buffer);
44
+ comments.forEach((c) => {
45
+ const source = buffer.slice(c.pos, c.end);
46
+ const comment = explainSync({ source });
47
+ const [{ name, params, returns }] = comment;
48
+ const parameters = params.reduce((acc, cur) => ({
49
+ ...acc,
50
+ [cur.name]: cur.type.names,
51
+ }), {});
52
+ const returnType = returns.reduce((acc, curr) => acc.concat(curr.type.names), []);
53
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
54
+ // @ts-ignore
55
+ const hasComment = foundComments.some((f) => Boolean(f[name]));
56
+ if (!hasComment) {
57
+ foundComments.push({ [name]: { parameters, returnType } });
58
+ }
59
+ });
60
+ return node.forEachChild((child) => walkCompilerAstAndFindComments(child, foundComments));
61
+ };
62
+ const createParams = (params) => {
63
+ const { createArrayLiteralExpression, createStringLiteral, createObjectLiteralExpression, createPropertyAssignment, } = factory;
64
+ return Object.entries(params).map(([key, value]) => {
65
+ const result = Array.isArray(value)
66
+ ? createArrayLiteralExpression(value.map((n) => createStringLiteral(n)))
67
+ : createObjectLiteralExpression(createParams(value));
68
+ return createPropertyAssignment(createStringLiteral(key), result);
69
+ });
70
+ };
71
+ export const createLiteralObjectExpression = (params) => {
72
+ const { createStringLiteral, createObjectLiteralExpression, createPropertyAssignment, } = factory;
73
+ return params.map((param) => {
74
+ const [[key, value]] = Object.entries(param);
75
+ return createPropertyAssignment(createStringLiteral(key), createObjectLiteralExpression(createParams(value)));
76
+ });
77
+ };
78
+ //# sourceMappingURL=comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/components/comments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface ComponentCompatibility {
2
+ functions: string[];
3
+ triggers: string[];
4
+ interactions: object;
5
+ }
6
+ declare const _default: (code: string) => ComponentCompatibility;
7
+ export default _default;
@@ -0,0 +1,60 @@
1
+ import { isCallExpression, isIdentifier, isMethodDeclaration, isPropertyAccessExpression, isSourceFile, transpileModule, visitEachChild, visitNode, } from 'typescript';
2
+ import { createLiteralObjectExpression, walkCompilerAstAndFindComments, } from './comments';
3
+ const isComponentCompatibility = (value) => {
4
+ if (typeof value === 'object' && value !== null) {
5
+ const { functions, triggers } = value;
6
+ if (Array.isArray(functions) && Array.isArray(triggers)) {
7
+ return (functions.every((f) => typeof f === 'string') &&
8
+ triggers.every((t) => typeof t === 'string'));
9
+ }
10
+ }
11
+ return false;
12
+ };
13
+ const addCompatibility = (name, collection, node) => {
14
+ if ((isIdentifier(node) && node.getText() === name) ||
15
+ (isPropertyAccessExpression(node) &&
16
+ (node.getText() === `B.${name}` || node.getText() === `.${name}`))) {
17
+ if (isCallExpression(node.parent)) {
18
+ collection.push(node.parent.getChildAt(2).getChildAt(0).getText().replace(/'/g, ''));
19
+ }
20
+ if (isMethodDeclaration(node.parent)) {
21
+ collection.push(node.parent.getChildAt(2).getChildAt(1).getText().replace(/'/g, ''));
22
+ }
23
+ }
24
+ };
25
+ const compatibilityTransformer = () => (context) => {
26
+ const functions = [];
27
+ const triggers = [];
28
+ const comments = [];
29
+ const { createArrayLiteralExpression, createExpressionStatement, createObjectLiteralExpression, createPropertyAssignment, createStringLiteral, updateSourceFile, } = context.factory;
30
+ const visit = (node) => {
31
+ addCompatibility('defineFunction', functions, node);
32
+ addCompatibility('triggerEvent', triggers, node); // TODO: investigate inline triggers
33
+ return visitEachChild(node, visit, context);
34
+ };
35
+ return (node) => {
36
+ visitNode(node, visit);
37
+ walkCompilerAstAndFindComments(node, comments);
38
+ if (isSourceFile(node)) {
39
+ return updateSourceFile(node, [
40
+ createExpressionStatement(createObjectLiteralExpression([
41
+ createPropertyAssignment(createStringLiteral('functions'), createArrayLiteralExpression(functions.map((n) => createStringLiteral(n)))),
42
+ createPropertyAssignment(createStringLiteral('triggers'), createArrayLiteralExpression(triggers.map((n) => createStringLiteral(n)))),
43
+ createPropertyAssignment(createStringLiteral('interactions'), createObjectLiteralExpression(createLiteralObjectExpression(comments))),
44
+ ])),
45
+ ]);
46
+ }
47
+ return node;
48
+ };
49
+ };
50
+ export default (code) => {
51
+ const { outputText } = transpileModule(code, {
52
+ transformers: { before: [compatibilityTransformer()] },
53
+ });
54
+ const component = JSON.parse(outputText.replace(/^[^{]+/, '').replace(/[^}]+$/, ''));
55
+ if (isComponentCompatibility(component)) {
56
+ return component;
57
+ }
58
+ throw new TypeError('object is not a ComponentCompatibility');
59
+ };
60
+ //# sourceMappingURL=compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/components/compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,YAAY,EAMZ,eAAe,EACf,cAAc,EACd,SAAS,GAEV,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AAQpB,MAAM,wBAAwB,GAAG,CAC/B,KAAc,EACmB,EAAE;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAA+B,CAAC;QAEhE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxD,OAAO,CACL,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;gBAC7C,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAC7C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,IAAY,EACZ,UAAoB,EACpB,IAAU,EACJ,EAAE;IACR,IACE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC;QAC/C,CAAC,0BAA0B,CAAC,IAAI,CAAC;YAC/B,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,EACpE,CAAC;QACD,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CACpE,CAAC;QACJ,CAAC;QACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAC5B,GAAmC,EAAE,CACrC,CAAC,OAA8B,EAA2B,EAAE;IAC1D,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,EACJ,4BAA4B,EAC5B,yBAAyB,EACzB,6BAA6B,EAC7B,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,GACjB,GAAG,OAAO,CAAC,OAAO,CAAC;IAEpB,MAAM,KAAK,GAAY,CAAC,IAAU,EAAQ,EAAE;QAC1C,gBAAgB,CAAC,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACpD,gBAAgB,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,oCAAoC;QAEtF,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAO,CAAC,IAAgB,EAAc,EAAE;QACtC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvB,8BAA8B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE/C,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,gBAAgB,CAAC,IAAI,EAAE;gBAC5B,yBAAyB,CACvB,6BAA6B,CAAC;oBAC5B,wBAAwB,CACtB,mBAAmB,CAAC,WAAW,CAAC,EAChC,4BAA4B,CAC1B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAC7C,CACF;oBACD,wBAAwB,CACtB,mBAAmB,CAAC,UAAU,CAAC,EAC/B,4BAA4B,CAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAC5C,CACF;oBACD,wBAAwB,CACtB,mBAAmB,CAAC,cAAc,CAAC,EACnC,6BAA6B,CAC3B,6BAA6B,CAAC,QAAQ,CAAC,CACxC,CACF;iBACF,CAAC,CACH;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC,CAAC;AAEJ,eAAe,CAAC,IAAY,EAA0B,EAAE;IACtD,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE;QAC3C,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,wBAAwB,EAAE,CAAC,EAAE;KACvD,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAC1B,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CACvD,CAAC;IAEF,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;AAChE,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type CustomTransformerFactory, type SourceFile, type TransformerFactory } from 'typescript';
2
+ export declare const transpile: (code: string, before: (TransformerFactory<SourceFile> | CustomTransformerFactory)[]) => string;
3
+ export declare const doTranspile: (code: string) => string;
@@ -0,0 +1,36 @@
1
+ import { flattenDiagnosticMessageText, JsxEmit, ScriptTarget, transpileModule, } from 'typescript';
2
+ const { React } = JsxEmit;
3
+ const { ES5 } = ScriptTarget;
4
+ export const transpile = (code, before) => {
5
+ const { diagnostics, outputText } = transpileModule(code, {
6
+ compilerOptions: {
7
+ allowJs: true,
8
+ checkJs: true,
9
+ downlevelIteration: true,
10
+ jsx: React,
11
+ // Requires tslib
12
+ noEmitHelpers: true,
13
+ target: ES5,
14
+ },
15
+ reportDiagnostics: true,
16
+ transformers: {
17
+ before,
18
+ },
19
+ });
20
+ let messageText = '';
21
+ if (diagnostics) {
22
+ diagnostics.forEach((diagnostic) => {
23
+ if (diagnostic.file) {
24
+ const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start ?? 0);
25
+ messageText += ` ${diagnostic.file.fileName} (${line + 1},${character + 1})`;
26
+ }
27
+ messageText += `: ${flattenDiagnosticMessageText(diagnostic.messageText, '\n')}`;
28
+ });
29
+ }
30
+ if (messageText) {
31
+ throw new Error(messageText);
32
+ }
33
+ return outputText;
34
+ };
35
+ export const doTranspile = (code) => transpile(code, []);
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/transformers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,4BAA4B,EAC5B,OAAO,EACP,YAAY,EAGZ,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;AAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;AAE7B,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,IAAY,EACZ,MAAqE,EAC7D,EAAE;IACV,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE;QACxD,eAAe,EAAE;YACf,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,kBAAkB,EAAE,IAAI;YACxB,GAAG,EAAE,KAAK;YACV,iBAAiB;YACjB,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,GAAG;SACZ;QACD,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE;YACZ,MAAM;SACP;KACF,CAAC,CAAC;IAEH,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACjC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GACvB,UAAU,CAAC,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBACvE,WAAW,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,GAAG,CAAC,IACtD,SAAS,GAAG,CACd,GAAG,CAAC;YACN,CAAC;YACD,WAAW,IAAI,KAAK,4BAA4B,CAC9C,UAAU,CAAC,WAAW,EACtB,IAAI,CACL,EAAE,CAAC;QACN,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './reportDiagnostics';
2
+ export * from './styles';
@@ -0,0 +1,3 @@
1
+ export * from './reportDiagnostics';
2
+ export * from './styles';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components-build/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ import ts from 'typescript';
2
+ export declare const reportDiagnostics: (diagnostics: ts.Diagnostic[]) => void;
@@ -0,0 +1,13 @@
1
+ import ts from 'typescript';
2
+ export 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 += `: ${ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n')}`;
10
+ console.error(`\u001b[31m${message}\u001b[0m`);
11
+ });
12
+ };
13
+ //# sourceMappingURL=reportDiagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reportDiagnostics.js","sourceRoot":"","sources":["../../src/components-build/reportDiagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,WAA4B,EAAQ,EAAE;IACtE,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,EAAE,CAAC,4BAA4B,CAC7C,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"}
@@ -0,0 +1,4 @@
1
+ import type { BuildStyle, BuildStyleDefinition, PrefabComponent, StyleDefinition } from '../types';
2
+ export declare const readStyles: (rootDir: string) => Promise<StyleDefinition[]>;
3
+ export declare const buildStyle: ({ states, basis, ...style }: StyleDefinition) => BuildStyleDefinition;
4
+ export declare const buildReferenceStyle: (style: PrefabComponent["style"] | undefined) => BuildStyle | undefined;