@betty-blocks/cli 26.0.0-beta.17 → 26.0.0-beta.19

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 (153) 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.d.ts +1 -0
  9. package/build/bb-blocks-publish.d.ts +1 -0
  10. package/build/bb-blocks-publish.js +6 -6
  11. package/build/bb-blocks-publish.js.map +1 -1
  12. package/build/bb-blocks-release.d.ts +1 -0
  13. package/build/bb-blocks.d.ts +1 -0
  14. package/build/bb-bundle-init.d.ts +1 -0
  15. package/build/bb-bundle.d.ts +1 -0
  16. package/build/bb-components-build.d.ts +1 -0
  17. package/build/bb-components-create.d.ts +1 -0
  18. package/build/bb-components-generate.d.ts +1 -0
  19. package/build/bb-components-publish-bundle.d.ts +1 -0
  20. package/build/bb-components-publish-bundle.js +1 -1
  21. package/build/bb-components-publish-bundle.js.map +1 -1
  22. package/build/bb-components-publish.d.ts +1 -0
  23. package/build/bb-components-publish.js +1 -1
  24. package/build/bb-components-publish.js.map +1 -1
  25. package/build/bb-components-serve.d.ts +1 -0
  26. package/build/bb-components.d.ts +1 -0
  27. package/build/bb-functions-bump.d.ts +1 -0
  28. package/build/bb-functions-bump.js +15 -42
  29. package/build/bb-functions-bump.js.map +1 -1
  30. package/build/bb-functions-init.d.ts +1 -0
  31. package/build/bb-functions-init.js +17 -39
  32. package/build/bb-functions-init.js.map +1 -1
  33. package/build/bb-functions-login.d.ts +1 -0
  34. package/build/bb-functions-logout.d.ts +1 -0
  35. package/build/bb-functions-new.d.ts +1 -0
  36. package/build/bb-functions-new.js +15 -12
  37. package/build/bb-functions-new.js.map +1 -1
  38. package/build/bb-functions-publish.d.ts +1 -0
  39. package/build/bb-functions-publish.js +34 -29
  40. package/build/bb-functions-publish.js.map +1 -1
  41. package/build/bb-functions-validate.d.ts +1 -0
  42. package/build/bb-functions-validate.js +4 -2
  43. package/build/bb-functions-validate.js.map +1 -1
  44. package/build/bb-functions.d.ts +1 -0
  45. package/build/bb-functions.js +2 -6
  46. package/build/bb-functions.js.map +1 -1
  47. package/build/bb.d.ts +2 -0
  48. package/build/bb.js +1 -1
  49. package/build/blocks/blockDefinitions.d.ts +10 -0
  50. package/build/blocks/blockDefinitions.js +13 -8
  51. package/build/blocks/blockDefinitions.js.map +1 -1
  52. package/build/blocks/publishBlocks.d.ts +2 -0
  53. package/build/blocks/publishBlocks.js +3 -5
  54. package/build/blocks/publishBlocks.js.map +1 -1
  55. package/build/blocks/releaseBlocks.d.ts +5 -0
  56. package/build/components/bb-components-functions.d.ts +10 -0
  57. package/build/{functions → components}/bb-components-functions.js +1 -1
  58. package/build/components/bb-components-functions.js.map +1 -0
  59. package/build/components/comments.d.ts +3 -0
  60. package/build/components/compatibility.d.ts +7 -0
  61. package/build/components/transformers/index.d.ts +3 -0
  62. package/build/components-build/index.d.ts +2 -0
  63. package/build/components-build/reportDiagnostics.d.ts +2 -0
  64. package/build/components-build/styles.d.ts +4 -0
  65. package/build/functions/config.d.ts +67 -0
  66. package/build/functions/createWasmDefinitionFiles.d.ts +4 -0
  67. package/build/functions/createWasmDefinitionFiles.js +61 -0
  68. package/build/functions/createWasmDefinitionFiles.js.map +1 -0
  69. package/build/functions/functionDefinitions.d.ts +23 -0
  70. package/build/functions/functionDefinitions.js +68 -19
  71. package/build/functions/functionDefinitions.js.map +1 -1
  72. package/build/functions/functionVersionBump.d.ts +19 -0
  73. package/build/functions/functionVersionBump.js +62 -0
  74. package/build/functions/functionVersionBump.js.map +1 -0
  75. package/build/functions/publishAppFunctions.d.ts +13 -0
  76. package/build/functions/publishAppFunctions.js +4 -6
  77. package/build/functions/publishAppFunctions.js.map +1 -1
  78. package/build/functions/publishWasmBlockStoreFunctions.d.ts +1 -0
  79. package/build/functions/publishWasmBlockStoreFunctions.js +100 -0
  80. package/build/functions/publishWasmBlockStoreFunctions.js.map +1 -0
  81. package/build/functions/utils.d.ts +2 -0
  82. package/build/functions/validateFunctions.d.ts +3 -0
  83. package/build/functions/validateFunctions.js +20 -0
  84. package/build/functions/validateFunctions.js.map +1 -0
  85. package/build/functions/validations.d.ts +30 -0
  86. package/build/functions/validations.js +40 -7
  87. package/build/functions/validations.js.map +1 -1
  88. package/build/interactions/compatibility.d.ts +3 -0
  89. package/build/interactions/diagnostics.d.ts +2 -0
  90. package/build/types.d.ts +377 -0
  91. package/build/types.js.map +1 -1
  92. package/build/utils/arguments.d.ts +2 -0
  93. package/build/utils/checkPackageVersion.d.ts +1 -0
  94. package/build/utils/checkUpdateAvailable.d.ts +1 -0
  95. package/build/utils/fusionAuth.d.ts +21 -0
  96. package/build/utils/hash.d.ts +2 -0
  97. package/build/utils/login.d.ts +15 -0
  98. package/build/utils/pick.d.ts +7 -0
  99. package/build/utils/readFilesByType.d.ts +2 -0
  100. package/build/utils/rootDir.d.ts +2 -0
  101. package/build/utils/rootDir.js +1 -1
  102. package/build/utils/rootDir.js.map +1 -1
  103. package/build/utils/serveComponentSet.d.ts +3 -0
  104. package/build/utils/transpile.d.ts +2 -0
  105. package/build/utils/uploadBlob.d.ts +24 -0
  106. package/build/utils/validation.d.ts +4 -0
  107. package/build/validations/component.d.ts +3 -0
  108. package/build/validations/constants.d.ts +16 -0
  109. package/build/validations/function-block-validations/index.d.ts +22 -0
  110. package/build/validations/function-block-validations/index.js +3 -1
  111. package/build/validations/function-block-validations/index.js.map +1 -1
  112. package/build/validations/interaction.d.ts +3 -0
  113. package/build/validations/prefab/action.d.ts +2 -0
  114. package/build/validations/prefab/component.d.ts +10 -0
  115. package/build/validations/prefab/componentOption.d.ts +3 -0
  116. package/build/validations/prefab/interaction.d.ts +2 -0
  117. package/build/validations/prefab/linkedOption.d.ts +3 -0
  118. package/build/validations/prefab/linkedPartial.d.ts +3 -0
  119. package/build/validations/prefab/variable.d.ts +3 -0
  120. package/build/validations/prefab.d.ts +17 -0
  121. package/build/validations/styles.d.ts +6 -0
  122. package/package.json +31 -34
  123. package/assets/app-functions/templates/test/helpers.js +0 -3
  124. package/assets/app-functions/templates/test/say-hello.test.js +0 -4
  125. package/assets/functions/packer/package.json +0 -9
  126. package/assets/functions/packer/webpack.config.js +0 -12
  127. package/assets/functions/templates/functions.json +0 -14
  128. package/assets/functions/templates/package.json +0 -11
  129. package/assets/functions/templates/src/all-users.js +0 -14
  130. package/assets/functions/templates/src/get-json.js +0 -9
  131. package/assets/functions/templates/src/index.js +0 -5
  132. package/assets/functions/templates/src/say-hello.js +0 -13
  133. package/build/bb-functions-build.js +0 -56
  134. package/build/bb-functions-build.js.map +0 -1
  135. package/build/functions/acquireAppFunctionsProject.js +0 -14
  136. package/build/functions/acquireAppFunctionsProject.js.map +0 -1
  137. package/build/functions/acquireCustomFunctionsProject.js +0 -15
  138. package/build/functions/acquireCustomFunctionsProject.js.map +0 -1
  139. package/build/functions/bb-components-functions.js.map +0 -1
  140. package/build/functions/icons.js +0 -42
  141. package/build/functions/icons.js.map +0 -1
  142. package/build/functions/publishCustomFunctions.js +0 -95
  143. package/build/functions/publishCustomFunctions.js.map +0 -1
  144. package/build/functions/publishFunctions.js +0 -98
  145. package/build/functions/publishFunctions.js.map +0 -1
  146. package/build/functions/versions.js +0 -48
  147. package/build/functions/versions.js.map +0 -1
  148. package/build/utils/ide.js +0 -145
  149. package/build/utils/ide.js.map +0 -1
  150. /package/assets/app-functions/{templates → js-template}/.app-functions +0 -0
  151. /package/assets/app-functions/{templates → js-template}/functions/say-hello/1.0/function.json +0 -0
  152. /package/assets/app-functions/{templates → js-template}/functions/say-hello/1.0/index.js +0 -0
  153. /package/assets/app-functions/{templates → js-template}/package.json +0 -0
@@ -0,0 +1,2 @@
1
+ export * from './reportDiagnostics';
2
+ export * from './styles';
@@ -0,0 +1,2 @@
1
+ import ts from 'typescript';
2
+ export declare const reportDiagnostics: (diagnostics: ts.Diagnostic[]) => void;
@@ -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;
@@ -0,0 +1,67 @@
1
+ import https, { type AgentOptions } from 'https';
2
+ export interface GlobalConfig {
3
+ auth: {
4
+ email: string;
5
+ [key: string]: string | undefined;
6
+ };
7
+ applicationMap: Record<string, string>;
8
+ skipCompile?: boolean;
9
+ }
10
+ export interface LocalConfig {
11
+ schemaUrl: string;
12
+ agentOptions?: AgentOptions;
13
+ functionSchemaPath: string;
14
+ cacheDir: string;
15
+ fusionAuthUrl: string;
16
+ builderApiUrl: string;
17
+ blockstoreApiUrl: string;
18
+ domain: string;
19
+ identifier?: string;
20
+ host?: string;
21
+ zone?: string;
22
+ applicationId?: string;
23
+ skipCompile?: boolean;
24
+ includes?: string[];
25
+ tenantId?: string;
26
+ agent?: https.Agent;
27
+ }
28
+ export interface CustomConfig {
29
+ skipCompile: boolean;
30
+ }
31
+ declare class Config {
32
+ static localConfigPath: string;
33
+ static globalConfigPath: string;
34
+ static writeToGlobalConfig(key: string, value: string | object): void;
35
+ static registerApplicationId(identifier: string, zone: string, applicationId: string): void;
36
+ static readGlobalConfig(): GlobalConfig;
37
+ private static ensureGlobalConfigExists;
38
+ private static writeGlobalConfig;
39
+ private static promptApplicationId;
40
+ private static applicationIdKey;
41
+ private static readConfig;
42
+ private static defaultConfig;
43
+ private config;
44
+ private _identifier?;
45
+ private _zone?;
46
+ private _host?;
47
+ private _applicationId?;
48
+ constructor(config?: CustomConfig);
49
+ get skipCompile(): boolean;
50
+ get agent(): https.Agent | undefined;
51
+ get identifier(): string;
52
+ get zone(): string;
53
+ get buildDir(): string;
54
+ get host(): string;
55
+ get fusionAuthUrl(): string;
56
+ get builderApiUrl(): string;
57
+ get blockstoreApiUrl(): string;
58
+ additionalHeaders(): Record<string, string>;
59
+ applicationId(): Promise<string | undefined>;
60
+ fetchApplicationId(): Promise<string>;
61
+ get schemaUrl(): string;
62
+ get agentOptions(): AgentOptions | undefined;
63
+ get functionSchemaPath(): string;
64
+ private defaultHost;
65
+ get includes(): string[];
66
+ }
67
+ export default Config;
@@ -0,0 +1,4 @@
1
+ declare const createlibRsFile: (functionDir: string, functionName: string) => void;
2
+ declare const createWorldWitFile: (functionDir: string, functionName: string) => void;
3
+ declare const createCargoTomlFile: (functionDir: string, functionName: string) => void;
4
+ export { createCargoTomlFile, createlibRsFile, createWorldWitFile };
@@ -0,0 +1,61 @@
1
+ import { snake } from 'case';
2
+ import fs from 'fs-extra';
3
+ import path from 'path';
4
+ const createlibRsFile = (functionDir, functionName) => {
5
+ const functionDefName = snake(functionName);
6
+ fs.mkdirpSync(path.join(functionDir, 'src'));
7
+ fs.writeFileSync(path.join(functionDir, 'src', 'lib.rs'), `use crate::exports::betty_blocks::${functionDefName}::${functionDefName}::{Guest, Output};
8
+
9
+ wit_bindgen::generate!({ generate_all });
10
+
11
+ struct Component;
12
+
13
+ impl Guest for Component {
14
+ fn ${functionDefName}(name: String) -> Result<Output, String> {
15
+ if name == "oops" {
16
+ Err("Ooops. Something went wrong.".to_string())
17
+ } else {
18
+ Ok(Output {
19
+ greet: format!("Hello, {}", name),
20
+ })
21
+ }
22
+ }
23
+ }
24
+
25
+ export! {Component}
26
+ `);
27
+ };
28
+ const createWorldWitFile = (functionDir, functionName) => {
29
+ const lowercasedFunctionName = functionName.toLowerCase();
30
+ fs.mkdirpSync(path.join(functionDir, 'wit'));
31
+ fs.writeFileSync(path.join(functionDir, 'wit', 'world.wit'), `package betty-blocks:${lowercasedFunctionName}@1.0.0;
32
+
33
+ interface ${lowercasedFunctionName} {
34
+ record output {
35
+ %greet: string
36
+ }
37
+
38
+ ${lowercasedFunctionName}: func(name: string) -> result<output, string>;
39
+ }
40
+
41
+ world main {
42
+ export ${lowercasedFunctionName};
43
+ }
44
+ `);
45
+ };
46
+ const createCargoTomlFile = (functionDir, functionName) => {
47
+ const functionDefName = snake(functionName);
48
+ fs.writeFileSync(path.join(functionDir, 'Cargo.toml'), `[package]
49
+ name = "${functionDefName}"
50
+ version = "1.0.0"
51
+ edition = "2024"
52
+
53
+ [lib]
54
+ crate-type = ["cdylib"]
55
+
56
+ [dependencies]
57
+ wit-bindgen = "0.42.0"
58
+ `);
59
+ };
60
+ export { createCargoTomlFile, createlibRsFile, createWorldWitFile };
61
+ //# sourceMappingURL=createWasmDefinitionFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createWasmDefinitionFiles.js","sourceRoot":"","sources":["../../src/functions/createWasmDefinitionFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,eAAe,GAAG,CAAC,WAAmB,EAAE,YAAoB,EAAQ,EAAE;IAC1E,MAAM,eAAe,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5C,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,EACvC,qCAAqC,eAAe,KAAK,eAAe;;;;;;;SAOnE,eAAe;;;;;;;;;;;;KAYnB,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CACzB,WAAmB,EACnB,YAAoB,EACd,EAAE;IACR,MAAM,sBAAsB,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC1D,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,EAC1C,wBAAwB,sBAAsB;;YAEtC,sBAAsB;;;;;MAK5B,sBAAsB;;;;aAIf,sBAAsB;;KAE9B,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,WAAmB,EACnB,YAAoB,EACd,EAAE;IACR,MAAM,eAAe,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5C,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EACpC;UACM,eAAe;;;;;;;;;KASpB,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,23 @@
1
+ interface Schema {
2
+ label: string;
3
+ [other: string]: unknown;
4
+ }
5
+ export interface FunctionDefinition {
6
+ name: string;
7
+ version: string;
8
+ path: string;
9
+ schema: Schema;
10
+ }
11
+ declare const functionDefinitionPath: (functionPath: string) => string;
12
+ declare const isFunctionDefinition: (functionPath: string) => boolean;
13
+ declare const isFunctionVersion: (functionPath: string, functionsDir: string) => boolean;
14
+ declare const functionDirs: (functionsDir: string, includeNonversioned?: boolean) => Promise<string[]>;
15
+ declare const functionDefinition: (functionPath: string, functionsDir: string) => FunctionDefinition;
16
+ declare const functionDefinitions: (functionsDir: string, includeNonversioned?: boolean) => Promise<FunctionDefinition[]>;
17
+ declare const stringifyDefinitions: (definitions: FunctionDefinition[]) => string;
18
+ declare const newFunctionDefinition: (functionsDir: string, functionName: string, isWasmFunctionProject: boolean) => void;
19
+ declare const whitelistedFunctions: (definitions: FunctionDefinition[], whitelist: string[]) => FunctionDefinition[];
20
+ declare const generateIndex: (functionsPath: string, whitelist?: string[]) => Promise<string>;
21
+ declare const zipFunctionDefinitions: (functionsPath: string, includes?: string[]) => Promise<string>;
22
+ export declare const getAllWasmFunctionsWithVersions: (functionsPath: string) => string[];
23
+ export { functionDefinition, functionDefinitionPath, functionDefinitions, functionDirs, generateIndex, isFunctionDefinition, isFunctionVersion, newFunctionDefinition, stringifyDefinitions, whitelistedFunctions, zipFunctionDefinitions, };
@@ -1,8 +1,9 @@
1
1
  import AdmZip from 'adm-zip';
2
+ import { Glob } from 'bun';
2
3
  import { camel, title } from 'case';
3
4
  import fs from 'fs-extra';
4
- import glob from 'glob';
5
5
  import path from 'path';
6
+ import { createCargoTomlFile, createlibRsFile, createWorldWitFile, } from './createWasmDefinitionFiles';
6
7
  /* @doc functionDefinitionPath
7
8
  Expands the function dir with `function.json`.
8
9
  */
@@ -10,7 +11,8 @@ const functionDefinitionPath = (functionPath) => path.join(functionPath, 'functi
10
11
  /* @doc functionImplementationPath
11
12
  Expands the function dir with `index.js`.
12
13
  */
13
- const functionImplementationPath = (functionPath) => path.join(functionPath, 'index.js');
14
+ const jsFunctionImplementationPath = (functionPath) => path.join(functionPath, 'index.js');
15
+ const wasmFunctionImplementationPath = (functionPath) => path.join(functionPath, 'wit', 'world.wit');
14
16
  /* @doc isFunctionDefinition
15
17
  Checks the given functions dir for a file named function.json.
16
18
  Returns true if the file exists.
@@ -27,20 +29,29 @@ const isFunctionVersion = (functionPath, functionsDir) => !!path.basename(functi
27
29
  Checks the given functions dir for a file named index.js.
28
30
  Returns true if the file exists.
29
31
  */
30
- const isFunction = (functionPath) => fs.pathExistsSync(functionImplementationPath(functionPath));
32
+ const isFunction = (functionPath) => fs.pathExistsSync(jsFunctionImplementationPath(functionPath)) ||
33
+ fs.pathExistsSync(wasmFunctionImplementationPath(functionPath));
31
34
  /* @doc functionDirs
32
35
  Returns a list of directories inside the given functionsDir that have a function.json and index.js.
33
36
  */
34
- const functionDirs = (functionsDir, includeNonversioned = false) => glob
35
- .sync(path.join(functionsDir, '**', 'function.json').replace(/\\/g, '/'))
36
- .reduce((dirs, functionDefinition) => {
37
- const dir = path.dirname(functionDefinition).replace(/\//g, path.sep);
38
- if (isFunction(dir) &&
39
- (includeNonversioned || isFunctionVersion(dir, functionsDir))) {
40
- dirs.push(dir);
37
+ const functionDirs = async (functionsDir, includeNonversioned = false) => {
38
+ const glob = new Glob('**/function.json');
39
+ const dirs = [];
40
+ const functionsDirPath = functionsDir.replace(/\\/g, '/');
41
+ if (!fs.existsSync(functionsDirPath)) {
42
+ return [];
43
+ }
44
+ for await (const functionDefinition of glob.scanSync(functionsDirPath)) {
45
+ const dir = path
46
+ .dirname(path.join(functionsDir, functionDefinition))
47
+ .replace(/\//g, path.sep);
48
+ if (isFunction(dir) &&
49
+ (includeNonversioned || isFunctionVersion(dir, functionsDir))) {
50
+ dirs.push(dir);
51
+ }
41
52
  }
42
53
  return dirs;
43
- }, []);
54
+ };
44
55
  /* @doc functionDefinition
45
56
  Reads the function.json from the given directory.
46
57
  Returns the parsed function.json as object.
@@ -73,7 +84,10 @@ const functionDefinition = (functionPath, functionsDir) => {
73
84
  Returns an object containing all function.json definitions
74
85
  inside the given functionsDir, indexed by function name.
75
86
  */
76
- const functionDefinitions = (functionsDir, includeNonversioned = false) => functionDirs(functionsDir, includeNonversioned).map((functionDir) => functionDefinition(functionDir, functionsDir));
87
+ const functionDefinitions = async (functionsDir, includeNonversioned = false) => {
88
+ const functionDirectories = await functionDirs(functionsDir, includeNonversioned);
89
+ return functionDirectories.map((functionDir) => functionDefinition(functionDir, functionsDir));
90
+ };
77
91
  const stringifyDefinitions = (definitions) => {
78
92
  const updatedDefinitions = definitions.map(({ name, version, schema }) => ({
79
93
  name,
@@ -88,8 +102,7 @@ const stringifyDefinitions = (definitions) => {
88
102
  Creates a new folder for the given name and fills that folder with a function.json file
89
103
  and an index.js.
90
104
  */
91
- const newFunctionDefinition = (functionsDir, functionName) => {
92
- const functionDefName = functionName.replace(/-./g, (x) => x.toUpperCase()[1]);
105
+ const newFunctionDefinition = (functionsDir, functionName, isWasmFunctionProject) => {
93
106
  const functionDir = path.join(functionsDir, functionName, '1.0');
94
107
  try {
95
108
  fs.mkdirpSync(functionDir);
@@ -101,12 +114,26 @@ const newFunctionDefinition = (functionsDir, functionName) => {
101
114
  options: [],
102
115
  yields: 'NONE',
103
116
  }, { spaces: 2 });
104
- fs.writeFileSync(path.join(functionDir, 'index.js'), `const ${functionDefName} = async () => {\n\n}\n\nexport default ${functionDefName};`);
117
+ if (isWasmFunctionProject) {
118
+ createNewWasmFunction(functionDir, functionName);
119
+ }
120
+ else {
121
+ createNewJsFunction(functionDir, functionName);
122
+ }
105
123
  }
106
124
  catch (err) {
107
125
  throw new Error(`could not initialize new function ${functionDir}: ${err}`);
108
126
  }
109
127
  };
128
+ const createNewJsFunction = (functionDir, functionName) => {
129
+ const functionDefName = functionName.replace(/-./g, (x) => x.toUpperCase()[1]);
130
+ fs.writeFileSync(path.join(functionDir, 'index.js'), `const ${functionDefName} = async () => {\n\n}\n\nexport default ${functionDefName};`);
131
+ };
132
+ const createNewWasmFunction = (functionDir, functionName) => {
133
+ createlibRsFile(functionDir, functionName);
134
+ createWorldWitFile(functionDir, functionName);
135
+ createCargoTomlFile(functionDir, functionName);
136
+ };
110
137
  const toVariableName = ({ name, version }) => `${camel(name)}_${version.replace('.', '_')}`;
111
138
  /* @doc importFunctions
112
139
  Returns an array of strings, each item being an imported function:
@@ -138,8 +165,8 @@ const whitelistedFunctions = (definitions, whitelist) => whitelist.map((whitelis
138
165
  Fetches all functions and re-exports them.
139
166
  Returns the result as a Buffer.
140
167
  */
141
- const generateIndex = (functionsPath, whitelist) => {
142
- const definitions = functionDefinitions(functionsPath);
168
+ const generateIndex = async (functionsPath, whitelist) => {
169
+ const definitions = await functionDefinitions(functionsPath);
143
170
  const functions = whitelist
144
171
  ? whitelistedFunctions(definitions, whitelist)
145
172
  : definitions;
@@ -156,14 +183,14 @@ const generateIndex = (functionsPath, whitelist) => {
156
183
  to the zip file. Generates an index.js and adds it to the zip file.
157
184
  Returns path to the zip file.
158
185
  */
159
- const zipFunctionDefinitions = (functionsPath, includes) => {
186
+ const zipFunctionDefinitions = async (functionsPath, includes) => {
160
187
  const zip = new AdmZip();
161
188
  const tmpDir = '.tmp';
162
189
  const zipFilePath = path.join(tmpDir, 'app.zip');
163
190
  const cwd = path.dirname(functionsPath);
164
191
  fs.ensureDirSync(tmpDir);
165
192
  zip.addLocalFile(path.join(path.dirname(functionsPath), 'package.json'));
166
- zip.addFile('index.js', Buffer.from(generateIndex(functionsPath)));
193
+ zip.addFile('index.js', Buffer.from(await generateIndex(functionsPath)));
167
194
  zip.addLocalFolder(functionsPath, functionsPath.replace(cwd, ''));
168
195
  (includes ?? []).forEach((include) => {
169
196
  zip.addLocalFolder(path.join(cwd, include), include);
@@ -171,5 +198,27 @@ const zipFunctionDefinitions = (functionsPath, includes) => {
171
198
  zip.writeZip(zipFilePath);
172
199
  return zipFilePath;
173
200
  };
201
+ /* @doc getAllWasmFunctionsWithVersions
202
+ Scans the given functionsPath for all functions that contain a wasm implementation.
203
+ Returns an array of strings with function names and versions, e.g. ['my-function/1.0', 'my-function/2.0']
204
+ */
205
+ export const getAllWasmFunctionsWithVersions = (functionsPath) => {
206
+ if (!fs.existsSync(functionsPath)) {
207
+ return [];
208
+ }
209
+ return fs
210
+ .readdirSync(functionsPath, { withFileTypes: true })
211
+ .filter((dirent) => dirent.isDirectory())
212
+ .flatMap((dirent) => {
213
+ const functionDir = path.join(functionsPath, dirent.name);
214
+ if (!fs.existsSync(functionDir)) {
215
+ return [];
216
+ }
217
+ return fs
218
+ .readdirSync(functionDir, { withFileTypes: true })
219
+ .filter((subDirent) => subDirent.isDirectory())
220
+ .map((subDirent) => `${dirent.name}/${subDirent.name}`);
221
+ });
222
+ };
174
223
  export { functionDefinition, functionDefinitionPath, functionDefinitions, functionDirs, generateIndex, isFunctionDefinition, isFunctionVersion, newFunctionDefinition, stringifyDefinitions, whitelistedFunctions, zipFunctionDefinitions, };
175
224
  //# sourceMappingURL=functionDefinitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"functionDefinitions.js","sourceRoot":"","sources":["../../src/functions/functionDefinitions.ts"],"names":[],"mappings":"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"}
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;
@@ -1,7 +1,5 @@
1
1
  import chalk from 'chalk';
2
- import FormData from 'form-data';
3
- import fs from 'fs-extra';
4
- import fetch from 'node-fetch';
2
+ import fetch, { fileFromSync, FormData } from 'node-fetch';
5
3
  import path from 'path';
6
4
  import FusionAuth from '../utils/login';
7
5
  import Config from './config';
@@ -21,7 +19,7 @@ const uploadAppFunctions = async (functionDefinitionsFile, functionsJson, config
21
19
  const form = new FormData();
22
20
  form.append('functions', functionsJson);
23
21
  form.append('options', JSON.stringify({ compile: !config.skipCompile }));
24
- form.append('file', fs.createReadStream(functionDefinitionsFile));
22
+ form.append('file', fileFromSync(functionDefinitionsFile));
25
23
  const applicationId = await config.applicationId();
26
24
  if (!applicationId) {
27
25
  throw new Error("Couldn't publish functions, Error: application id not found");
@@ -72,8 +70,8 @@ const uploadAppFunctions = async (functionDefinitionsFile, functionsJson, config
72
70
  };
73
71
  const publishFunctions = async (config) => {
74
72
  const functionsDir = path.join(workingDir, 'functions');
75
- const zipFile = zipFunctionDefinitions(functionsDir, config.includes);
76
- const functions = functionDefinitions(functionsDir);
73
+ const zipFile = await zipFunctionDefinitions(functionsDir, config.includes);
74
+ const functions = await functionDefinitions(functionsDir);
77
75
  const functionsJson = stringifyDefinitions(functions);
78
76
  const { success, message } = await uploadAppFunctions(zipFile, functionsJson, config);
79
77
  if (success) {
@@ -1 +1 @@
1
- {"version":3,"file":"publishAppFunctions.js","sourceRoot":"","sources":["../../src/functions/publishAppFunctions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publishAppFunctions.js","sourceRoot":"","sources":["../../src/functions/publishAppFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,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;AAC9B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAsBjC,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAkB,EAChD,SAAiB,EACX,EAAE;IACR,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CACT,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,IAAI,GAAG,SAAS,GAAG,OAAO,IAAI,EAAE,GAAG,CACxE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,IAAI,GAAG,SAAS,GAChD,OAAO,IAAI,EACb,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAC7C,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,EAC9B,uBAA+B,EAC/B,aAAqB,EACrB,MAAc,EACkC,EAAE;IAClD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAE3D,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;IACnD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,aAAa,sBAAsB,aAAa,YAAY,CAAC;IACnF,OAAO,KAAK,CAAC,GAAG,EAAE;QAChB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,UAAU,CAAC,GAAG,EAAE,EAAE;SAC5C;QACD,MAAM,EAAE,MAAM;KACf,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC/B,OAAO,kBAAkB,CACvB,uBAAuB,EACvB,aAAa,EACb,MAAM,CACP,CAAC;YACJ,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAC3C,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoB,CAAC;gBAExC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC1D,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC1D,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBAE1D,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBACxB,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;oBACjD,SAAS,CACP,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,EAC7C,aAAa,CACd,CAAC;gBACJ,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,mDAAmD;oBAC5D,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAC1C,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoB,CAAC;gBAExC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC1D,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC1D,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBAE1D,OAAO;oBACL,OAAO,EAAE,OAAO,IAAI,cAAc;oBAClC,OAAO,EAAE,KAAK;iBACf,CAAC;YACJ,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CACb,sCACE,GAAG,CAAC,MACN,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CACvB,CAAC;QACN,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE5E,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEtD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CACnD,OAAO,EACP,aAAa,EACb,MAAM,CACP,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAAE,EACjC,WAAW,GACI,EAAiB,EAAE;IAClC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAE3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAC3E,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -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