@haneullabs/codegen 0.1.0 → 0.8.3

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 (147) hide show
  1. package/CHANGELOG.md +138 -33
  2. package/README.md +40 -38
  3. package/dist/bin/bash-complete.d.mts +6 -0
  4. package/dist/bin/bash-complete.d.mts.map +1 -0
  5. package/dist/bin/bash-complete.mjs +29 -0
  6. package/dist/bin/bash-complete.mjs.map +1 -0
  7. package/dist/bin/cli.d.mts +1 -0
  8. package/dist/bin/cli.mjs +24 -0
  9. package/dist/bin/cli.mjs.map +1 -0
  10. package/dist/cli/cli.mjs +28 -0
  11. package/dist/cli/cli.mjs.map +1 -0
  12. package/dist/cli/commands/generate/command.mjs +90 -0
  13. package/dist/cli/commands/generate/command.mjs.map +1 -0
  14. package/dist/cli/commands/generate/impl.mjs +72 -0
  15. package/dist/cli/commands/generate/impl.mjs.map +1 -0
  16. package/dist/cli/context.mjs +17 -0
  17. package/dist/cli/context.mjs.map +1 -0
  18. package/dist/config.d.mts +105 -0
  19. package/dist/config.d.mts.map +1 -0
  20. package/dist/config.mjs +70 -0
  21. package/dist/config.mjs.map +1 -0
  22. package/dist/file-builder.mjs +66 -0
  23. package/dist/file-builder.mjs.map +1 -0
  24. package/dist/{esm/generate-utils.js → generate-utils.mjs} +95 -27
  25. package/dist/generate-utils.mjs.map +1 -0
  26. package/dist/index.d.mts +21 -0
  27. package/dist/index.d.mts.map +1 -0
  28. package/dist/index.mjs +80 -0
  29. package/dist/index.mjs.map +1 -0
  30. package/dist/move-module-builder.mjs +350 -0
  31. package/dist/move-module-builder.mjs.map +1 -0
  32. package/dist/render-types.mjs +207 -0
  33. package/dist/render-types.mjs.map +1 -0
  34. package/dist/utils.mjs +89 -0
  35. package/dist/utils.mjs.map +1 -0
  36. package/docs/index.md +436 -0
  37. package/docs/llms-index.md +6 -0
  38. package/package.json +29 -28
  39. package/src/bin/bash-complete.ts +18 -7
  40. package/src/bin/cli.ts +3 -9
  41. package/src/cli/commands/generate/command.ts +32 -0
  42. package/src/cli/commands/generate/impl.ts +93 -5
  43. package/src/config.ts +53 -5
  44. package/src/file-builder.ts +15 -1
  45. package/src/generate-utils.ts +88 -18
  46. package/src/index.ts +89 -29
  47. package/src/move-module-builder.ts +181 -76
  48. package/src/render-types.ts +82 -29
  49. package/dist/cjs/bin/bash-complete.d.ts +0 -2
  50. package/dist/cjs/bin/bash-complete.js +0 -51
  51. package/dist/cjs/bin/bash-complete.js.map +0 -7
  52. package/dist/cjs/bin/cli.d.ts +0 -2
  53. package/dist/cjs/bin/cli.js +0 -34
  54. package/dist/cjs/bin/cli.js.map +0 -7
  55. package/dist/cjs/cli/cli.d.ts +0 -1
  56. package/dist/cjs/cli/cli.js +0 -49
  57. package/dist/cjs/cli/cli.js.map +0 -7
  58. package/dist/cjs/cli/commands/generate/command.d.ts +0 -1
  59. package/dist/cjs/cli/commands/generate/command.js +0 -80
  60. package/dist/cjs/cli/commands/generate/command.js.map +0 -7
  61. package/dist/cjs/cli/commands/generate/impl.d.ts +0 -8
  62. package/dist/cjs/cli/commands/generate/impl.js +0 -66
  63. package/dist/cjs/cli/commands/generate/impl.js.map +0 -7
  64. package/dist/cjs/cli/context.d.ts +0 -6
  65. package/dist/cjs/cli/context.js +0 -45
  66. package/dist/cjs/cli/context.js.map +0 -7
  67. package/dist/cjs/config.d.ts +0 -51
  68. package/dist/cjs/config.js +0 -75
  69. package/dist/cjs/config.js.map +0 -7
  70. package/dist/cjs/file-builder.d.ts +0 -13
  71. package/dist/cjs/file-builder.js +0 -83
  72. package/dist/cjs/file-builder.js.map +0 -7
  73. package/dist/cjs/generate-utils.d.ts +0 -1
  74. package/dist/cjs/generate-utils.js +0 -187
  75. package/dist/cjs/generate-utils.js.map +0 -7
  76. package/dist/cjs/index.d.ts +0 -8
  77. package/dist/cjs/index.js +0 -124
  78. package/dist/cjs/index.js.map +0 -7
  79. package/dist/cjs/move-module-builder.d.ts +0 -26
  80. package/dist/cjs/move-module-builder.js +0 -464
  81. package/dist/cjs/move-module-builder.js.map +0 -7
  82. package/dist/cjs/package.json +0 -5
  83. package/dist/cjs/render-types.d.ts +0 -19
  84. package/dist/cjs/render-types.js +0 -313
  85. package/dist/cjs/render-types.js.map +0 -7
  86. package/dist/cjs/summary.d.ts +0 -3
  87. package/dist/cjs/summary.js +0 -218
  88. package/dist/cjs/summary.js.map +0 -7
  89. package/dist/cjs/types/deserialized.d.ts +0 -89
  90. package/dist/cjs/types/deserialized.js +0 -17
  91. package/dist/cjs/types/deserialized.js.map +0 -7
  92. package/dist/cjs/types/summary.d.ts +0 -105
  93. package/dist/cjs/types/summary.js +0 -17
  94. package/dist/cjs/types/summary.js.map +0 -7
  95. package/dist/cjs/utils.d.ts +0 -22
  96. package/dist/cjs/utils.js +0 -164
  97. package/dist/cjs/utils.js.map +0 -7
  98. package/dist/esm/bin/bash-complete.d.ts +0 -2
  99. package/dist/esm/bin/bash-complete.js +0 -31
  100. package/dist/esm/bin/bash-complete.js.map +0 -7
  101. package/dist/esm/bin/cli.d.ts +0 -2
  102. package/dist/esm/bin/cli.js +0 -32
  103. package/dist/esm/bin/cli.js.map +0 -7
  104. package/dist/esm/cli/cli.d.ts +0 -1
  105. package/dist/esm/cli/cli.js +0 -29
  106. package/dist/esm/cli/cli.js.map +0 -7
  107. package/dist/esm/cli/commands/generate/command.d.ts +0 -1
  108. package/dist/esm/cli/commands/generate/command.js +0 -50
  109. package/dist/esm/cli/commands/generate/command.js.map +0 -7
  110. package/dist/esm/cli/commands/generate/impl.d.ts +0 -8
  111. package/dist/esm/cli/commands/generate/impl.js +0 -46
  112. package/dist/esm/cli/commands/generate/impl.js.map +0 -7
  113. package/dist/esm/cli/context.d.ts +0 -6
  114. package/dist/esm/cli/context.js +0 -15
  115. package/dist/esm/cli/context.js.map +0 -7
  116. package/dist/esm/config.d.ts +0 -51
  117. package/dist/esm/config.js +0 -45
  118. package/dist/esm/config.js.map +0 -7
  119. package/dist/esm/file-builder.d.ts +0 -13
  120. package/dist/esm/file-builder.js +0 -63
  121. package/dist/esm/file-builder.js.map +0 -7
  122. package/dist/esm/generate-utils.d.ts +0 -1
  123. package/dist/esm/generate-utils.js.map +0 -7
  124. package/dist/esm/index.d.ts +0 -8
  125. package/dist/esm/index.js +0 -104
  126. package/dist/esm/index.js.map +0 -7
  127. package/dist/esm/move-module-builder.d.ts +0 -26
  128. package/dist/esm/move-module-builder.js +0 -457
  129. package/dist/esm/move-module-builder.js.map +0 -7
  130. package/dist/esm/package.json +0 -5
  131. package/dist/esm/render-types.d.ts +0 -19
  132. package/dist/esm/render-types.js +0 -293
  133. package/dist/esm/render-types.js.map +0 -7
  134. package/dist/esm/summary.d.ts +0 -3
  135. package/dist/esm/summary.js +0 -198
  136. package/dist/esm/summary.js.map +0 -7
  137. package/dist/esm/types/deserialized.d.ts +0 -89
  138. package/dist/esm/types/deserialized.js +0 -1
  139. package/dist/esm/types/deserialized.js.map +0 -7
  140. package/dist/esm/types/summary.d.ts +0 -105
  141. package/dist/esm/types/summary.js +0 -1
  142. package/dist/esm/types/summary.js.map +0 -7
  143. package/dist/esm/utils.d.ts +0 -22
  144. package/dist/esm/utils.js +0 -134
  145. package/dist/esm/utils.js.map +0 -7
  146. package/dist/tsconfig.esm.tsbuildinfo +0 -1
  147. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,90 @@
1
+ import { buildCommand } from "@stricli/core";
2
+
3
+ //#region src/cli/commands/generate/command.ts
4
+ const generateCommand = buildCommand({
5
+ loader: async () => (await import("./impl.mjs")).default,
6
+ parameters: {
7
+ positional: {
8
+ kind: "array",
9
+ parameter: {
10
+ parse: String,
11
+ brief: "package name, mvr name, or path to a move package"
12
+ }
13
+ },
14
+ flags: {
15
+ outputDir: {
16
+ kind: "parsed",
17
+ parse: String,
18
+ brief: "Output directory",
19
+ optional: true
20
+ },
21
+ noPrune: {
22
+ kind: "parsed",
23
+ parse: Boolean,
24
+ optional: true,
25
+ brief: "generate all types and functions in dependencies"
26
+ },
27
+ noSummaries: {
28
+ kind: "parsed",
29
+ parse: Boolean,
30
+ optional: true,
31
+ brief: "Do not generate summaries for packages"
32
+ },
33
+ network: {
34
+ kind: "enum",
35
+ values: ["mainnet", "testnet"],
36
+ optional: true,
37
+ brief: "Network to generate for (default: testnet)"
38
+ },
39
+ importExtension: {
40
+ kind: "enum",
41
+ values: [
42
+ ".js",
43
+ ".ts",
44
+ "none"
45
+ ],
46
+ optional: true,
47
+ brief: "File extension for import statements (default: .js)"
48
+ },
49
+ modules: {
50
+ kind: "parsed",
51
+ parse: String,
52
+ optional: true,
53
+ variadic: ",",
54
+ brief: "Only generate from these modules (comma-separated)"
55
+ },
56
+ noTypes: {
57
+ kind: "parsed",
58
+ parse: Boolean,
59
+ optional: true,
60
+ brief: "Skip type generation"
61
+ },
62
+ noFunctions: {
63
+ kind: "parsed",
64
+ parse: Boolean,
65
+ optional: true,
66
+ brief: "Skip function generation"
67
+ },
68
+ private: {
69
+ kind: "enum",
70
+ values: [
71
+ "none",
72
+ "entry",
73
+ "all"
74
+ ],
75
+ optional: true,
76
+ brief: "Which private functions to generate (default: entry)"
77
+ }
78
+ },
79
+ aliases: {
80
+ o: "outputDir",
81
+ n: "network",
82
+ m: "modules"
83
+ }
84
+ },
85
+ docs: { brief: "Generate BCS and moveCall helpers from you Move code" }
86
+ });
87
+
88
+ //#endregion
89
+ export { generateCommand };
90
+ //# sourceMappingURL=command.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.mjs","names":[],"sources":["../../../../src/cli/commands/generate/command.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { buildCommand } from '@stricli/core';\n\nexport const generateCommand = buildCommand({\n\tloader: async () => (await import('./impl.js')).default,\n\tparameters: {\n\t\tpositional: {\n\t\t\tkind: 'array',\n\t\t\tparameter: {\n\t\t\t\tparse: String,\n\t\t\t\tbrief: 'package name, mvr name, or path to a move package',\n\t\t\t},\n\t\t},\n\t\tflags: {\n\t\t\toutputDir: {\n\t\t\t\tkind: 'parsed',\n\t\t\t\tparse: String,\n\t\t\t\tbrief: 'Output directory',\n\t\t\t\toptional: true,\n\t\t\t},\n\t\t\tnoPrune: {\n\t\t\t\tkind: 'parsed',\n\t\t\t\tparse: Boolean,\n\t\t\t\toptional: true,\n\t\t\t\tbrief: 'generate all types and functions in dependencies',\n\t\t\t},\n\t\t\tnoSummaries: {\n\t\t\t\tkind: 'parsed',\n\t\t\t\tparse: Boolean,\n\t\t\t\toptional: true,\n\t\t\t\tbrief: 'Do not generate summaries for packages',\n\t\t\t},\n\t\t\tnetwork: {\n\t\t\t\tkind: 'enum',\n\t\t\t\tvalues: ['mainnet', 'testnet'],\n\t\t\t\toptional: true,\n\t\t\t\tbrief: 'Network to generate for (default: testnet)',\n\t\t\t},\n\t\t\timportExtension: {\n\t\t\t\tkind: 'enum',\n\t\t\t\tvalues: ['.js', '.ts', 'none'],\n\t\t\t\toptional: true,\n\t\t\t\tbrief: 'File extension for import statements (default: .js)',\n\t\t\t},\n\t\t\tmodules: {\n\t\t\t\tkind: 'parsed',\n\t\t\t\tparse: String,\n\t\t\t\toptional: true,\n\t\t\t\tvariadic: ',',\n\t\t\t\tbrief: 'Only generate from these modules (comma-separated)',\n\t\t\t},\n\t\t\tnoTypes: {\n\t\t\t\tkind: 'parsed',\n\t\t\t\tparse: Boolean,\n\t\t\t\toptional: true,\n\t\t\t\tbrief: 'Skip type generation',\n\t\t\t},\n\t\t\tnoFunctions: {\n\t\t\t\tkind: 'parsed',\n\t\t\t\tparse: Boolean,\n\t\t\t\toptional: true,\n\t\t\t\tbrief: 'Skip function generation',\n\t\t\t},\n\t\t\tprivate: {\n\t\t\t\tkind: 'enum',\n\t\t\t\tvalues: ['none', 'entry', 'all'],\n\t\t\t\toptional: true,\n\t\t\t\tbrief: 'Which private functions to generate (default: entry)',\n\t\t\t},\n\t\t},\n\t\taliases: {\n\t\t\to: 'outputDir',\n\t\t\tn: 'network',\n\t\t\tm: 'modules',\n\t\t},\n\t},\n\tdocs: {\n\t\tbrief: 'Generate BCS and moveCall helpers from you Move code',\n\t},\n});\n"],"mappings":";;;AAKA,MAAa,kBAAkB,aAAa;CAC3C,QAAQ,aAAa,MAAM,OAAO,eAAc;CAChD,YAAY;EACX,YAAY;GACX,MAAM;GACN,WAAW;IACV,OAAO;IACP,OAAO;IACP;GACD;EACD,OAAO;GACN,WAAW;IACV,MAAM;IACN,OAAO;IACP,OAAO;IACP,UAAU;IACV;GACD,SAAS;IACR,MAAM;IACN,OAAO;IACP,UAAU;IACV,OAAO;IACP;GACD,aAAa;IACZ,MAAM;IACN,OAAO;IACP,UAAU;IACV,OAAO;IACP;GACD,SAAS;IACR,MAAM;IACN,QAAQ,CAAC,WAAW,UAAU;IAC9B,UAAU;IACV,OAAO;IACP;GACD,iBAAiB;IAChB,MAAM;IACN,QAAQ;KAAC;KAAO;KAAO;KAAO;IAC9B,UAAU;IACV,OAAO;IACP;GACD,SAAS;IACR,MAAM;IACN,OAAO;IACP,UAAU;IACV,UAAU;IACV,OAAO;IACP;GACD,SAAS;IACR,MAAM;IACN,OAAO;IACP,UAAU;IACV,OAAO;IACP;GACD,aAAa;IACZ,MAAM;IACN,OAAO;IACP,UAAU;IACV,OAAO;IACP;GACD,SAAS;IACR,MAAM;IACN,QAAQ;KAAC;KAAQ;KAAS;KAAM;IAChC,UAAU;IACV,OAAO;IACP;GACD;EACD,SAAS;GACR,GAAG;GACH,GAAG;GACH,GAAG;GACH;EACD;CACD,MAAM,EACL,OAAO,wDACP;CACD,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { generateFromPackageSummary } from "../../../index.mjs";
2
+ import { loadConfig } from "../../../config.mjs";
3
+ import { join } from "node:path";
4
+ import { isValidHaneulObjectId, isValidNamedPackage } from "@haneullabs/haneul/utils";
5
+ import { existsSync, mkdtempSync } from "node:fs";
6
+ import { tmpdir } from "node:os";
7
+ import { execSync } from "node:child_process";
8
+
9
+ //#region src/cli/commands/generate/impl.ts
10
+ async function generate(flags, ...packages) {
11
+ const config = await loadConfig();
12
+ const normalizedPackages = packages.length > 0 ? packages.map((p) => {
13
+ const trimmed = p.trim();
14
+ if (isValidHaneulObjectId(trimmed) || isValidNamedPackage(trimmed)) return {
15
+ network: flags.network ?? "testnet",
16
+ packageName: isValidHaneulObjectId(trimmed) ? trimmed : trimmed.split("/")[1],
17
+ package: trimmed,
18
+ packageId: isValidHaneulObjectId(trimmed) ? trimmed : void 0
19
+ };
20
+ else return {
21
+ package: "@local-pkg/" + trimmed,
22
+ packageName: trimmed,
23
+ path: trimmed
24
+ };
25
+ }) : config.packages;
26
+ const generateSummaries = flags.noSummaries === void 0 ? config.generateSummaries : !flags.noSummaries;
27
+ const cliPrivate = flags.private !== void 0 ? flags.private === "all" ? true : flags.private === "none" ? false : "entry" : void 0;
28
+ const cliGenerate = flags.modules !== void 0 || flags.noTypes !== void 0 || flags.noFunctions !== void 0 || flags.private !== void 0 ? {
29
+ ...flags.modules !== void 0 && { modules: flags.modules },
30
+ ...flags.noTypes !== void 0 && { types: !flags.noTypes },
31
+ ...flags.noFunctions !== void 0 || flags.private !== void 0 ? { functions: flags.noFunctions ? false : cliPrivate !== void 0 ? { private: cliPrivate } : true } : {}
32
+ } : void 0;
33
+ for (const pkg of normalizedPackages) {
34
+ if ("packageId" in pkg && pkg.packageId || "network" in pkg && !("path" in pkg)) {
35
+ const packageId = "packageId" in pkg ? pkg.packageId : pkg.package;
36
+ const tempDir = mkdtempSync(join(tmpdir(), "haneul-codegen-"));
37
+ console.log(`Generating summary for on-chain package ${packageId} to ${tempDir}`);
38
+ execSync(`haneul move summary --package-id ${packageId} --output-directory ${tempDir}`, { stdio: "inherit" });
39
+ pkg.path = tempDir;
40
+ } else if (generateSummaries && pkg.path) {
41
+ if (!existsSync(pkg.path)) throw new Error(`Package path does not exist: ${pkg.path}`);
42
+ execSync("haneul move summary", {
43
+ cwd: pkg.path,
44
+ stdio: "inherit"
45
+ });
46
+ }
47
+ const importExtension = flags.importExtension === void 0 ? config.importExtension : flags.importExtension === "none" ? "" : flags.importExtension;
48
+ const pkgWithOverrides = cliGenerate ? {
49
+ ...pkg,
50
+ generate: {
51
+ ..."generate" in pkg ? pkg.generate : {},
52
+ ...cliGenerate
53
+ }
54
+ } : pkg;
55
+ const globalGenerate = config.privateMethods && !config.generate?.functions ? {
56
+ ...config.generate,
57
+ functions: { private: config.privateMethods === "all" ? true : config.privateMethods === "none" ? false : "entry" }
58
+ } : config.generate;
59
+ await generateFromPackageSummary({
60
+ package: pkgWithOverrides,
61
+ prune: flags.noPrune === void 0 ? config.prune : !flags.noPrune,
62
+ outputDir: flags.outputDir ?? config.output,
63
+ globalGenerate,
64
+ importExtension,
65
+ includePhantomTypeParameters: config.includePhantomTypeParameters
66
+ });
67
+ }
68
+ }
69
+
70
+ //#endregion
71
+ export { generate as default };
72
+ //# sourceMappingURL=impl.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impl.mjs","names":[],"sources":["../../../../src/cli/commands/generate/impl.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { LocalContext } from '../../context.js';\nimport { generateFromPackageSummary } from '../../../index.js';\nimport { loadConfig, type GenerateBase, type PackageGenerate } from '../../../config.js';\nimport { isValidNamedPackage, isValidHaneulObjectId } from '@haneullabs/haneul/utils';\nimport { execSync } from 'node:child_process';\nimport { existsSync, mkdtempSync } from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { join } from 'node:path';\n\nexport interface SubdirCommandFlags {\n\toutputDir?: string;\n\tnoPrune?: boolean;\n\tnoSummaries?: boolean;\n\tnetwork?: 'mainnet' | 'testnet';\n\timportExtension?: '.js' | '.ts' | 'none';\n\tmodules?: string[];\n\tnoTypes?: boolean;\n\tnoFunctions?: boolean;\n\tprivate?: 'none' | 'entry' | 'all';\n}\n\nexport default async function generate(\n\tthis: LocalContext,\n\tflags: SubdirCommandFlags,\n\t...packages: string[]\n): Promise<void> {\n\tconst config = await loadConfig();\n\n\tconst normalizedPackages =\n\t\tpackages.length > 0\n\t\t\t? packages.map((p) => {\n\t\t\t\t\tconst trimmed = p.trim();\n\t\t\t\t\tif (isValidHaneulObjectId(trimmed) || isValidNamedPackage(trimmed)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tnetwork: flags.network ?? 'testnet',\n\t\t\t\t\t\t\tpackageName: isValidHaneulObjectId(trimmed) ? trimmed : trimmed.split('/')[1],\n\t\t\t\t\t\t\tpackage: trimmed,\n\t\t\t\t\t\t\tpackageId: isValidHaneulObjectId(trimmed) ? trimmed : undefined,\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpackage: '@local-pkg/' + trimmed,\n\t\t\t\t\t\t\tpackageName: trimmed,\n\t\t\t\t\t\t\tpath: trimmed,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t: config.packages;\n\n\tconst generateSummaries =\n\t\tflags.noSummaries === undefined ? config.generateSummaries : !flags.noSummaries;\n\n\tconst cliPrivate =\n\t\tflags.private !== undefined\n\t\t\t? flags.private === 'all'\n\t\t\t\t? true\n\t\t\t\t: flags.private === 'none'\n\t\t\t\t\t? false\n\t\t\t\t\t: 'entry'\n\t\t\t: undefined;\n\n\tconst cliGenerate: PackageGenerate | undefined =\n\t\tflags.modules !== undefined ||\n\t\tflags.noTypes !== undefined ||\n\t\tflags.noFunctions !== undefined ||\n\t\tflags.private !== undefined\n\t\t\t? {\n\t\t\t\t\t...(flags.modules !== undefined && { modules: flags.modules }),\n\t\t\t\t\t...(flags.noTypes !== undefined && { types: !flags.noTypes as boolean }),\n\t\t\t\t\t...(flags.noFunctions !== undefined || flags.private !== undefined\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tfunctions: flags.noFunctions\n\t\t\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t\t\t: cliPrivate !== undefined\n\t\t\t\t\t\t\t\t\t\t? { private: cliPrivate }\n\t\t\t\t\t\t\t\t\t\t: true,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t}\n\t\t\t: undefined;\n\n\tfor (const pkg of normalizedPackages) {\n\t\t// Detect on-chain packages: they have 'network' field and no 'path'\n\t\tconst isOnChainPackage =\n\t\t\t('packageId' in pkg && pkg.packageId) || ('network' in pkg && !('path' in pkg));\n\n\t\t// Generate summaries for on-chain packages using --package-id\n\t\tif (isOnChainPackage) {\n\t\t\tconst packageId = 'packageId' in pkg ? pkg.packageId : pkg.package;\n\t\t\tconst tempDir = mkdtempSync(join(tmpdir(), 'haneul-codegen-'));\n\t\t\tconsole.log(`Generating summary for on-chain package ${packageId} to ${tempDir}`);\n\n\t\t\texecSync(`haneul move summary --package-id ${packageId} --output-directory ${tempDir}`, {\n\t\t\t\tstdio: 'inherit',\n\t\t\t});\n\n\t\t\t// Set the path to use the generated summary directory\n\t\t\t(pkg as { path?: string }).path = tempDir;\n\t\t} else if (generateSummaries && pkg.path) {\n\t\t\tif (!existsSync(pkg.path)) {\n\t\t\t\tthrow new Error(`Package path does not exist: ${pkg.path}`);\n\t\t\t}\n\n\t\t\texecSync('haneul move summary', {\n\t\t\t\tcwd: pkg.path,\n\t\t\t\tstdio: 'inherit',\n\t\t\t});\n\t\t}\n\t\tconst importExtension =\n\t\t\tflags.importExtension === undefined\n\t\t\t\t? config.importExtension\n\t\t\t\t: flags.importExtension === 'none'\n\t\t\t\t\t? ''\n\t\t\t\t\t: flags.importExtension;\n\n\t\tconst pkgWithOverrides = cliGenerate\n\t\t\t? {\n\t\t\t\t\t...pkg,\n\t\t\t\t\tgenerate: {\n\t\t\t\t\t\t...('generate' in pkg ? pkg.generate : {}),\n\t\t\t\t\t\t...cliGenerate,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: pkg;\n\n\t\t// Fold deprecated privateMethods into globalGenerate\n\t\tconst globalGenerate: GenerateBase | undefined =\n\t\t\tconfig.privateMethods && !config.generate?.functions\n\t\t\t\t? {\n\t\t\t\t\t\t...config.generate,\n\t\t\t\t\t\tfunctions: {\n\t\t\t\t\t\t\tprivate:\n\t\t\t\t\t\t\t\tconfig.privateMethods === 'all'\n\t\t\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t\t\t: config.privateMethods === 'none'\n\t\t\t\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t\t\t\t: 'entry',\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: config.generate;\n\n\t\tawait generateFromPackageSummary({\n\t\t\tpackage: pkgWithOverrides,\n\t\t\tprune: flags.noPrune === undefined ? config.prune : !flags.noPrune,\n\t\t\toutputDir: flags.outputDir ?? config.output,\n\t\t\tglobalGenerate,\n\t\t\timportExtension,\n\t\t\tincludePhantomTypeParameters: config.includePhantomTypeParameters,\n\t\t});\n\t}\n}\n"],"mappings":";;;;;;;;;AAwBA,eAA8B,SAE7B,OACA,GAAG,UACa;CAChB,MAAM,SAAS,MAAM,YAAY;CAEjC,MAAM,qBACL,SAAS,SAAS,IACf,SAAS,KAAK,MAAM;EACpB,MAAM,UAAU,EAAE,MAAM;AACxB,MAAI,sBAAsB,QAAQ,IAAI,oBAAoB,QAAQ,CACjE,QAAO;GACN,SAAS,MAAM,WAAW;GAC1B,aAAa,sBAAsB,QAAQ,GAAG,UAAU,QAAQ,MAAM,IAAI,CAAC;GAC3E,SAAS;GACT,WAAW,sBAAsB,QAAQ,GAAG,UAAU;GACtD;MAED,QAAO;GACN,SAAS,gBAAgB;GACzB,aAAa;GACb,MAAM;GACN;GAED,GACD,OAAO;CAEX,MAAM,oBACL,MAAM,gBAAgB,SAAY,OAAO,oBAAoB,CAAC,MAAM;CAErE,MAAM,aACL,MAAM,YAAY,SACf,MAAM,YAAY,QACjB,OACA,MAAM,YAAY,SACjB,QACA,UACF;CAEJ,MAAM,cACL,MAAM,YAAY,UAClB,MAAM,YAAY,UAClB,MAAM,gBAAgB,UACtB,MAAM,YAAY,SACf;EACA,GAAI,MAAM,YAAY,UAAa,EAAE,SAAS,MAAM,SAAS;EAC7D,GAAI,MAAM,YAAY,UAAa,EAAE,OAAO,CAAC,MAAM,SAAoB;EACvE,GAAI,MAAM,gBAAgB,UAAa,MAAM,YAAY,SACtD,EACA,WAAW,MAAM,cACd,QACA,eAAe,SACd,EAAE,SAAS,YAAY,GACvB,MACJ,GACA,EAAE;EACL,GACA;AAEJ,MAAK,MAAM,OAAO,oBAAoB;AAMrC,MAHE,eAAe,OAAO,IAAI,aAAe,aAAa,OAAO,EAAE,UAAU,MAGrD;GACrB,MAAM,YAAY,eAAe,MAAM,IAAI,YAAY,IAAI;GAC3D,MAAM,UAAU,YAAY,KAAK,QAAQ,EAAE,kBAAkB,CAAC;AAC9D,WAAQ,IAAI,2CAA2C,UAAU,MAAM,UAAU;AAEjF,YAAS,oCAAoC,UAAU,sBAAsB,WAAW,EACvF,OAAO,WACP,CAAC;AAGF,GAAC,IAA0B,OAAO;aACxB,qBAAqB,IAAI,MAAM;AACzC,OAAI,CAAC,WAAW,IAAI,KAAK,CACxB,OAAM,IAAI,MAAM,gCAAgC,IAAI,OAAO;AAG5D,YAAS,uBAAuB;IAC/B,KAAK,IAAI;IACT,OAAO;IACP,CAAC;;EAEH,MAAM,kBACL,MAAM,oBAAoB,SACvB,OAAO,kBACP,MAAM,oBAAoB,SACzB,KACA,MAAM;EAEX,MAAM,mBAAmB,cACtB;GACA,GAAG;GACH,UAAU;IACT,GAAI,cAAc,MAAM,IAAI,WAAW,EAAE;IACzC,GAAG;IACH;GACD,GACA;EAGH,MAAM,iBACL,OAAO,kBAAkB,CAAC,OAAO,UAAU,YACxC;GACA,GAAG,OAAO;GACV,WAAW,EACV,SACC,OAAO,mBAAmB,QACvB,OACA,OAAO,mBAAmB,SACzB,QACA,SACL;GACD,GACA,OAAO;AAEX,QAAM,2BAA2B;GAChC,SAAS;GACT,OAAO,MAAM,YAAY,SAAY,OAAO,QAAQ,CAAC,MAAM;GAC3D,WAAW,MAAM,aAAa,OAAO;GACrC;GACA;GACA,8BAA8B,OAAO;GACrC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import path from "node:path";
2
+ import fs from "node:fs";
3
+ import os from "node:os";
4
+
5
+ //#region src/cli/context.ts
6
+ function buildContext(process) {
7
+ return {
8
+ process,
9
+ os,
10
+ fs,
11
+ path
12
+ };
13
+ }
14
+
15
+ //#endregion
16
+ export { buildContext };
17
+ //# sourceMappingURL=context.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.mjs","names":[],"sources":["../../src/cli/context.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { CommandContext } from '@stricli/core';\nimport type { StricliAutoCompleteContext } from '@stricli/auto-complete';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\n\nexport interface LocalContext extends CommandContext, StricliAutoCompleteContext {\n\treadonly process: NodeJS.Process;\n}\n\nexport function buildContext(process: NodeJS.Process): LocalContext {\n\treturn {\n\t\tprocess,\n\t\tos,\n\t\tfs,\n\t\tpath,\n\t};\n}\n"],"mappings":";;;;;AAaA,SAAgB,aAAa,SAAuC;AACnE,QAAO;EACN;EACA;EACA;EACA;EACA"}
@@ -0,0 +1,105 @@
1
+ import * as z from "zod/v4";
2
+
3
+ //#region src/config.d.ts
4
+ declare const globalGenerateSchema: z.ZodObject<{
5
+ functions: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
6
+ private: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"entry">]>>;
7
+ }, z.core.$strip>]>>;
8
+ types: z.ZodOptional<z.ZodBoolean>;
9
+ }, z.core.$strip>;
10
+ declare const packageConfigSchema: z.ZodUnion<readonly [z.ZodObject<{
11
+ package: z.ZodString;
12
+ packageName: z.ZodString;
13
+ path: z.ZodOptional<z.ZodNever>;
14
+ network: z.ZodEnum<{
15
+ mainnet: "mainnet";
16
+ testnet: "testnet";
17
+ }>;
18
+ generate: z.ZodOptional<z.ZodObject<{
19
+ functions: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
20
+ private: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"entry">]>>;
21
+ }, z.core.$strip>]>>;
22
+ types: z.ZodOptional<z.ZodBoolean>;
23
+ modules: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodLiteral<true>, z.ZodObject<{
24
+ functions: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>, z.ZodObject<{
25
+ private: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"entry">]>>;
26
+ }, z.core.$strip>]>>;
27
+ types: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>]>>;
28
+ }, z.core.$strip>]>>]>>;
29
+ }, z.core.$strip>>;
30
+ }, z.core.$strip>, z.ZodObject<{
31
+ path: z.ZodString;
32
+ package: z.ZodString;
33
+ packageName: z.ZodOptional<z.ZodString>;
34
+ generate: z.ZodOptional<z.ZodObject<{
35
+ functions: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
36
+ private: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"entry">]>>;
37
+ }, z.core.$strip>]>>;
38
+ types: z.ZodOptional<z.ZodBoolean>;
39
+ modules: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodLiteral<true>, z.ZodObject<{
40
+ functions: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>, z.ZodObject<{
41
+ private: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"entry">]>>;
42
+ }, z.core.$strip>]>>;
43
+ types: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>]>>;
44
+ }, z.core.$strip>]>>]>>;
45
+ }, z.core.$strip>>;
46
+ }, z.core.$strip>]>;
47
+ declare const importExtensionSchema: z.ZodUnion<readonly [z.ZodLiteral<".js">, z.ZodLiteral<".ts">, z.ZodLiteral<"">]>;
48
+ type ImportExtension = z.infer<typeof importExtensionSchema>;
49
+ type GenerateBase = z.infer<typeof globalGenerateSchema>;
50
+ declare const configSchema: z.ZodObject<{
51
+ output: z.ZodString;
52
+ prune: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
53
+ generateSummaries: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
54
+ packages: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
55
+ package: z.ZodString;
56
+ packageName: z.ZodString;
57
+ path: z.ZodOptional<z.ZodNever>;
58
+ network: z.ZodEnum<{
59
+ mainnet: "mainnet";
60
+ testnet: "testnet";
61
+ }>;
62
+ generate: z.ZodOptional<z.ZodObject<{
63
+ functions: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
64
+ private: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"entry">]>>;
65
+ }, z.core.$strip>]>>;
66
+ types: z.ZodOptional<z.ZodBoolean>;
67
+ modules: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodLiteral<true>, z.ZodObject<{
68
+ functions: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>, z.ZodObject<{
69
+ private: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"entry">]>>;
70
+ }, z.core.$strip>]>>;
71
+ types: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>]>>;
72
+ }, z.core.$strip>]>>]>>;
73
+ }, z.core.$strip>>;
74
+ }, z.core.$strip>, z.ZodObject<{
75
+ path: z.ZodString;
76
+ package: z.ZodString;
77
+ packageName: z.ZodOptional<z.ZodString>;
78
+ generate: z.ZodOptional<z.ZodObject<{
79
+ functions: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
80
+ private: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"entry">]>>;
81
+ }, z.core.$strip>]>>;
82
+ types: z.ZodOptional<z.ZodBoolean>;
83
+ modules: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodLiteral<true>, z.ZodObject<{
84
+ functions: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>, z.ZodObject<{
85
+ private: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"entry">]>>;
86
+ }, z.core.$strip>]>>;
87
+ types: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>]>>;
88
+ }, z.core.$strip>]>>]>>;
89
+ }, z.core.$strip>>;
90
+ }, z.core.$strip>]>>;
91
+ generate: z.ZodOptional<z.ZodObject<{
92
+ functions: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
93
+ private: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"entry">]>>;
94
+ }, z.core.$strip>]>>;
95
+ types: z.ZodOptional<z.ZodBoolean>;
96
+ }, z.core.$strip>>;
97
+ privateMethods: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"none">, z.ZodLiteral<"entry">, z.ZodLiteral<"all">]>>;
98
+ importExtension: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<".js">, z.ZodLiteral<".ts">, z.ZodLiteral<"">]>>>;
99
+ includePhantomTypeParameters: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
100
+ }, z.core.$strip>;
101
+ type PackageConfig = z.infer<typeof packageConfigSchema>;
102
+ type HaneulCodegenConfig = z.input<typeof configSchema>;
103
+ //#endregion
104
+ export { GenerateBase, HaneulCodegenConfig, ImportExtension, PackageConfig };
105
+ //# sourceMappingURL=config.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.mts","names":[],"sources":["../src/config.ts"],"mappings":";;;cAwBa,oBAAA,EAAoB,CAAA,CAAA,SAAA;;;;;;cAoCpB,mBAAA,EAAmB,CAAA,CAAA,QAAA,WAAA,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEnB,qBAAA,EAAqB,CAAA,CAAA,QAAA,WAAA,CAAA,CAAA,UAAA,SAAA,CAAA,CAAA,UAAA,SAAA,CAAA,CAAA,UAAA;AAAA,KACtB,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KAEjC,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,cAK7B,YAAA,EAAY,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAYb,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,KAC/B,mBAAA,GAAsB,CAAA,CAAE,KAAA,QAAa,YAAA"}
@@ -0,0 +1,70 @@
1
+ import { isValidHaneulObjectId, isValidNamedPackage } from "@haneullabs/haneul/utils";
2
+ import { cosmiconfig } from "cosmiconfig";
3
+ import * as z from "zod/v4";
4
+
5
+ //#region src/config.ts
6
+ const globalFunctionsOptionSchema = z.union([z.boolean(), z.object({ private: z.union([z.boolean(), z.literal("entry")]).optional() })]);
7
+ const functionsOptionSchema = z.union([
8
+ z.boolean(),
9
+ z.array(z.string()),
10
+ z.object({ private: z.union([z.boolean(), z.literal("entry")]).optional() })
11
+ ]);
12
+ const typesOptionSchema = z.union([z.boolean(), z.array(z.string())]);
13
+ const globalGenerateSchema = z.object({
14
+ functions: globalFunctionsOptionSchema.optional(),
15
+ types: z.boolean().optional()
16
+ });
17
+ const moduleGenerateSchema = z.object({
18
+ functions: functionsOptionSchema.optional(),
19
+ types: typesOptionSchema.optional()
20
+ });
21
+ const packageGenerateSchema = globalGenerateSchema.extend({ modules: z.union([z.array(z.string()), z.record(z.string(), z.union([z.literal(true), moduleGenerateSchema]))]).optional() });
22
+ const onChainPackageSchema = z.object({
23
+ package: z.string().refine((name) => isValidNamedPackage(name) || isValidHaneulObjectId(name), { message: "Invalid package name or package ID" }),
24
+ packageName: z.string(),
25
+ path: z.never().optional(),
26
+ network: z.enum(["mainnet", "testnet"]),
27
+ generate: packageGenerateSchema.optional()
28
+ });
29
+ const localPackageSchema = z.object({
30
+ path: z.string(),
31
+ package: z.string(),
32
+ packageName: z.string().optional(),
33
+ generate: packageGenerateSchema.optional()
34
+ });
35
+ const packageConfigSchema = z.union([onChainPackageSchema, localPackageSchema]);
36
+ const importExtensionSchema = z.union([
37
+ z.literal(".js"),
38
+ z.literal(".ts"),
39
+ z.literal("")
40
+ ]);
41
+ const configSchema = z.object({
42
+ output: z.string(),
43
+ prune: z.boolean().optional().default(true),
44
+ generateSummaries: z.boolean().optional().default(true),
45
+ packages: z.array(packageConfigSchema),
46
+ generate: globalGenerateSchema.optional(),
47
+ privateMethods: z.union([
48
+ z.literal("none"),
49
+ z.literal("entry"),
50
+ z.literal("all")
51
+ ]).optional(),
52
+ importExtension: importExtensionSchema.optional().default(".js"),
53
+ includePhantomTypeParameters: z.boolean().optional().default(false)
54
+ });
55
+ async function loadConfig() {
56
+ const config = await cosmiconfig("haneul-codegen").search();
57
+ if (!config) return {
58
+ output: "./generated",
59
+ packages: [],
60
+ prune: true,
61
+ generateSummaries: true,
62
+ importExtension: ".js",
63
+ includePhantomTypeParameters: false
64
+ };
65
+ return configSchema.parse(config.config);
66
+ }
67
+
68
+ //#endregion
69
+ export { loadConfig };
70
+ //# sourceMappingURL=config.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.mjs","names":[],"sources":["../src/config.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { isValidNamedPackage, isValidHaneulObjectId } from '@haneullabs/haneul/utils';\nimport { cosmiconfig } from 'cosmiconfig';\nimport * as z from 'zod/v4';\n\nexport const globalFunctionsOptionSchema = z.union([\n\tz.boolean(),\n\tz.object({\n\t\tprivate: z.union([z.boolean(), z.literal('entry')]).optional(),\n\t}),\n]);\n\nexport const functionsOptionSchema = z.union([\n\tz.boolean(),\n\tz.array(z.string()),\n\tz.object({\n\t\tprivate: z.union([z.boolean(), z.literal('entry')]).optional(),\n\t}),\n]);\n\nexport const typesOptionSchema = z.union([z.boolean(), z.array(z.string())]);\n\nexport const globalGenerateSchema = z.object({\n\tfunctions: globalFunctionsOptionSchema.optional(),\n\ttypes: z.boolean().optional(),\n});\n\nexport const moduleGenerateSchema = z.object({\n\tfunctions: functionsOptionSchema.optional(),\n\ttypes: typesOptionSchema.optional(),\n});\n\nexport const packageGenerateSchema = globalGenerateSchema.extend({\n\tmodules: z\n\t\t.union([\n\t\t\tz.array(z.string()),\n\t\t\tz.record(z.string(), z.union([z.literal(true), moduleGenerateSchema])),\n\t\t])\n\t\t.optional(),\n});\n\nexport const onChainPackageSchema = z.object({\n\tpackage: z.string().refine((name) => isValidNamedPackage(name) || isValidHaneulObjectId(name), {\n\t\tmessage: 'Invalid package name or package ID',\n\t}),\n\tpackageName: z.string(),\n\tpath: z.never().optional(),\n\tnetwork: z.enum(['mainnet', 'testnet']),\n\tgenerate: packageGenerateSchema.optional(),\n});\n\nexport const localPackageSchema = z.object({\n\tpath: z.string(),\n\tpackage: z.string(),\n\tpackageName: z.string().optional(),\n\tgenerate: packageGenerateSchema.optional(),\n});\n\nexport const packageConfigSchema = z.union([onChainPackageSchema, localPackageSchema]);\n\nexport const importExtensionSchema = z.union([z.literal('.js'), z.literal('.ts'), z.literal('')]);\nexport type ImportExtension = z.infer<typeof importExtensionSchema>;\n\nexport type GenerateBase = z.infer<typeof globalGenerateSchema>;\nexport type PackageGenerate = z.infer<typeof packageGenerateSchema>;\nexport type FunctionsOption = z.infer<typeof functionsOptionSchema>;\nexport type TypesOption = z.infer<typeof typesOptionSchema>;\n\nexport const configSchema = z.object({\n\toutput: z.string(),\n\tprune: z.boolean().optional().default(true),\n\tgenerateSummaries: z.boolean().optional().default(true),\n\tpackages: z.array(packageConfigSchema),\n\tgenerate: globalGenerateSchema.optional(),\n\t/** @deprecated Use `generate: { functions: { private: 'entry' } }` instead */\n\tprivateMethods: z.union([z.literal('none'), z.literal('entry'), z.literal('all')]).optional(),\n\timportExtension: importExtensionSchema.optional().default('.js'),\n\tincludePhantomTypeParameters: z.boolean().optional().default(false),\n});\n\nexport type PackageConfig = z.infer<typeof packageConfigSchema>;\nexport type HaneulCodegenConfig = z.input<typeof configSchema>;\nexport type ParsedHaneulCodegenConfig = z.infer<typeof configSchema>;\n\nexport async function loadConfig(): Promise<ParsedHaneulCodegenConfig> {\n\tconst config = await cosmiconfig('haneul-codegen').search();\n\n\tif (!config) {\n\t\treturn {\n\t\t\toutput: './generated',\n\t\t\tpackages: [],\n\t\t\tprune: true,\n\t\t\tgenerateSummaries: true,\n\t\t\timportExtension: '.js',\n\t\t\tincludePhantomTypeParameters: false,\n\t\t};\n\t}\n\n\treturn configSchema.parse(config.config);\n}\n"],"mappings":";;;;;AAOA,MAAa,8BAA8B,EAAE,MAAM,CAClD,EAAE,SAAS,EACX,EAAE,OAAO,EACR,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,QAAQ,CAAC,CAAC,CAAC,UAAU,EAC9D,CAAC,CACF,CAAC;AAEF,MAAa,wBAAwB,EAAE,MAAM;CAC5C,EAAE,SAAS;CACX,EAAE,MAAM,EAAE,QAAQ,CAAC;CACnB,EAAE,OAAO,EACR,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,QAAQ,CAAC,CAAC,CAAC,UAAU,EAC9D,CAAC;CACF,CAAC;AAEF,MAAa,oBAAoB,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE5E,MAAa,uBAAuB,EAAE,OAAO;CAC5C,WAAW,4BAA4B,UAAU;CACjD,OAAO,EAAE,SAAS,CAAC,UAAU;CAC7B,CAAC;AAEF,MAAa,uBAAuB,EAAE,OAAO;CAC5C,WAAW,sBAAsB,UAAU;CAC3C,OAAO,kBAAkB,UAAU;CACnC,CAAC;AAEF,MAAa,wBAAwB,qBAAqB,OAAO,EAChE,SAAS,EACP,MAAM,CACN,EAAE,MAAM,EAAE,QAAQ,CAAC,EACnB,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,EAAE,QAAQ,KAAK,EAAE,qBAAqB,CAAC,CAAC,CACtE,CAAC,CACD,UAAU,EACZ,CAAC;AAEF,MAAa,uBAAuB,EAAE,OAAO;CAC5C,SAAS,EAAE,QAAQ,CAAC,QAAQ,SAAS,oBAAoB,KAAK,IAAI,sBAAsB,KAAK,EAAE,EAC9F,SAAS,sCACT,CAAC;CACF,aAAa,EAAE,QAAQ;CACvB,MAAM,EAAE,OAAO,CAAC,UAAU;CAC1B,SAAS,EAAE,KAAK,CAAC,WAAW,UAAU,CAAC;CACvC,UAAU,sBAAsB,UAAU;CAC1C,CAAC;AAEF,MAAa,qBAAqB,EAAE,OAAO;CAC1C,MAAM,EAAE,QAAQ;CAChB,SAAS,EAAE,QAAQ;CACnB,aAAa,EAAE,QAAQ,CAAC,UAAU;CAClC,UAAU,sBAAsB,UAAU;CAC1C,CAAC;AAEF,MAAa,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,mBAAmB,CAAC;AAEtF,MAAa,wBAAwB,EAAE,MAAM;CAAC,EAAE,QAAQ,MAAM;CAAE,EAAE,QAAQ,MAAM;CAAE,EAAE,QAAQ,GAAG;CAAC,CAAC;AAQjG,MAAa,eAAe,EAAE,OAAO;CACpC,QAAQ,EAAE,QAAQ;CAClB,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,KAAK;CAC3C,mBAAmB,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,KAAK;CACvD,UAAU,EAAE,MAAM,oBAAoB;CACtC,UAAU,qBAAqB,UAAU;CAEzC,gBAAgB,EAAE,MAAM;EAAC,EAAE,QAAQ,OAAO;EAAE,EAAE,QAAQ,QAAQ;EAAE,EAAE,QAAQ,MAAM;EAAC,CAAC,CAAC,UAAU;CAC7F,iBAAiB,sBAAsB,UAAU,CAAC,QAAQ,MAAM;CAChE,8BAA8B,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,MAAM;CACnE,CAAC;AAMF,eAAsB,aAAiD;CACtE,MAAM,SAAS,MAAM,YAAY,iBAAiB,CAAC,QAAQ;AAE3D,KAAI,CAAC,OACJ,QAAO;EACN,QAAQ;EACR,UAAU,EAAE;EACZ,OAAO;EACP,mBAAmB;EACnB,iBAAiB;EACjB,8BAA8B;EAC9B;AAGF,QAAO,aAAa,MAAM,OAAO,OAAO"}
@@ -0,0 +1,66 @@
1
+ import { getSafeName } from "./render-types.mjs";
2
+ import { parseTS, printNodes } from "./utils.mjs";
3
+ import { relative, resolve } from "path";
4
+
5
+ //#region src/file-builder.ts
6
+ var FileBuilder = class {
7
+ constructor() {
8
+ this.statements = [];
9
+ this.exports = [];
10
+ this.imports = /* @__PURE__ */ new Map();
11
+ this.starImports = /* @__PURE__ */ new Map();
12
+ this.reservedNames = /* @__PURE__ */ new Set();
13
+ }
14
+ addImport(module, name) {
15
+ if (!this.imports.has(module)) this.imports.set(module, /* @__PURE__ */ new Set());
16
+ const isTypeImport = name.startsWith("type ");
17
+ const baseName = isTypeImport ? name.slice(5) : name;
18
+ if (this.reservedNames.has(baseName)) {
19
+ const alias = this.getUnusedName(baseName);
20
+ const aliasedImport = isTypeImport ? `type ${baseName} as ${alias}` : `${baseName} as ${alias}`;
21
+ this.imports.get(module).add(aliasedImport);
22
+ return alias;
23
+ }
24
+ this.imports.get(module).add(name);
25
+ return baseName;
26
+ }
27
+ addStarImport(module, name) {
28
+ const importName = this.getUnusedName(name);
29
+ this.starImports.set(importName, module);
30
+ return importName;
31
+ }
32
+ getUnusedName(name) {
33
+ let deConflictedName = getSafeName(name);
34
+ let i = 1;
35
+ while (this.reservedNames.has(deConflictedName)) {
36
+ deConflictedName = `${name}_${i}`;
37
+ i++;
38
+ }
39
+ this.reservedNames.add(deConflictedName);
40
+ return deConflictedName;
41
+ }
42
+ async getHeader() {
43
+ return [
44
+ "/**************************************************************",
45
+ " * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *",
46
+ " **************************************************************/",
47
+ ""
48
+ ].join("\n");
49
+ }
50
+ async toString(modDir, filePath) {
51
+ const importStatements = [...this.imports.entries()].flatMap(([module, names]) => parseTS`import { ${[...names].join(", ")} } from '${modulePath(module)}'`);
52
+ const starImportStatements = [...this.starImports.entries()].flatMap(([name, module]) => parseTS`import * as ${name} from '${modulePath(module)}'`);
53
+ return `${await this.getHeader()}${printNodes(...importStatements, ...starImportStatements, ...this.statements)}`;
54
+ function modulePath(mod) {
55
+ if (!mod.startsWith("~root/")) return mod;
56
+ const sourcePath = resolve(modDir, filePath);
57
+ const destPath = resolve(modDir, mod.replace("~root/", "./"));
58
+ const relativePath = relative(sourcePath.split("/").slice(0, -1).join("/"), destPath);
59
+ return relativePath.startsWith(".") ? relativePath : `./${relativePath}`;
60
+ }
61
+ }
62
+ };
63
+
64
+ //#endregion
65
+ export { FileBuilder };
66
+ //# sourceMappingURL=file-builder.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-builder.mjs","names":[],"sources":["../src/file-builder.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type ts from 'typescript';\nimport { parseTS, printNodes } from './utils.js';\nimport { relative, resolve } from 'path';\nimport { getSafeName } from './render-types.js';\n\nexport class FileBuilder {\n\tstatements: ts.Statement[] = [];\n\texports: string[] = [];\n\timports: Map<string, Set<string>> = new Map();\n\tstarImports: Map<string, string> = new Map();\n\tprotected reservedNames: Set<string> = new Set();\n\n\taddImport(module: string, name: string): string {\n\t\tif (!this.imports.has(module)) {\n\t\t\tthis.imports.set(module, new Set());\n\t\t}\n\n\t\tconst isTypeImport = name.startsWith('type ');\n\t\tconst baseName = isTypeImport ? name.slice(5) : name;\n\n\t\tif (this.reservedNames.has(baseName)) {\n\t\t\tconst alias = this.getUnusedName(baseName);\n\t\t\tconst aliasedImport = isTypeImport\n\t\t\t\t? `type ${baseName} as ${alias}`\n\t\t\t\t: `${baseName} as ${alias}`;\n\t\t\tthis.imports.get(module)!.add(aliasedImport);\n\t\t\treturn alias;\n\t\t}\n\n\t\tthis.imports.get(module)!.add(name);\n\t\treturn baseName;\n\t}\n\n\taddStarImport(module: string, name: string) {\n\t\tconst importName = this.getUnusedName(name);\n\t\tthis.starImports.set(importName, module);\n\t\treturn importName;\n\t}\n\n\tgetUnusedName(name: string) {\n\t\tlet deConflictedName = getSafeName(name);\n\n\t\tlet i = 1;\n\t\twhile (this.reservedNames.has(deConflictedName)) {\n\t\t\tdeConflictedName = `${name}_${i}`;\n\t\t\ti++;\n\t\t}\n\n\t\tthis.reservedNames.add(deConflictedName);\n\t\treturn deConflictedName;\n\t}\n\n\tasync getHeader() {\n\t\treturn [\n\t\t\t'/**************************************************************',\n\t\t\t' * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *',\n\t\t\t' **************************************************************/',\n\t\t\t'',\n\t\t].join('\\n');\n\t}\n\n\tasync toString(modDir: string, filePath: string) {\n\t\tconst importStatements = [...this.imports.entries()].flatMap(\n\t\t\t([module, names]) =>\n\t\t\t\tparseTS`import { ${[...names].join(', ')} } from '${modulePath(module)}'`,\n\t\t);\n\t\tconst starImportStatements = [...this.starImports.entries()].flatMap(\n\t\t\t([name, module]) => parseTS`import * as ${name} from '${modulePath(module)}'`,\n\t\t);\n\n\t\treturn `${await this.getHeader()}${printNodes(...importStatements, ...starImportStatements, ...this.statements)}`;\n\n\t\tfunction modulePath(mod: string) {\n\t\t\tif (!mod.startsWith('~root/')) {\n\t\t\t\treturn mod;\n\t\t\t}\n\n\t\t\tconst sourcePath = resolve(modDir, filePath);\n\t\t\tconst destPath = resolve(modDir, mod.replace('~root/', './'));\n\t\t\tconst sourceDirectory = sourcePath.split('/').slice(0, -1).join('/');\n\t\t\tconst relativePath = relative(sourceDirectory, destPath);\n\t\t\treturn relativePath.startsWith('.') ? relativePath : `./${relativePath}`;\n\t\t}\n\t}\n}\n"],"mappings":";;;;;AAQA,IAAa,cAAb,MAAyB;;oBACK,EAAE;iBACX,EAAE;iCACc,IAAI,KAAK;qCACV,IAAI,KAAK;uCACL,IAAI,KAAK;;CAEhD,UAAU,QAAgB,MAAsB;AAC/C,MAAI,CAAC,KAAK,QAAQ,IAAI,OAAO,CAC5B,MAAK,QAAQ,IAAI,wBAAQ,IAAI,KAAK,CAAC;EAGpC,MAAM,eAAe,KAAK,WAAW,QAAQ;EAC7C,MAAM,WAAW,eAAe,KAAK,MAAM,EAAE,GAAG;AAEhD,MAAI,KAAK,cAAc,IAAI,SAAS,EAAE;GACrC,MAAM,QAAQ,KAAK,cAAc,SAAS;GAC1C,MAAM,gBAAgB,eACnB,QAAQ,SAAS,MAAM,UACvB,GAAG,SAAS,MAAM;AACrB,QAAK,QAAQ,IAAI,OAAO,CAAE,IAAI,cAAc;AAC5C,UAAO;;AAGR,OAAK,QAAQ,IAAI,OAAO,CAAE,IAAI,KAAK;AACnC,SAAO;;CAGR,cAAc,QAAgB,MAAc;EAC3C,MAAM,aAAa,KAAK,cAAc,KAAK;AAC3C,OAAK,YAAY,IAAI,YAAY,OAAO;AACxC,SAAO;;CAGR,cAAc,MAAc;EAC3B,IAAI,mBAAmB,YAAY,KAAK;EAExC,IAAI,IAAI;AACR,SAAO,KAAK,cAAc,IAAI,iBAAiB,EAAE;AAChD,sBAAmB,GAAG,KAAK,GAAG;AAC9B;;AAGD,OAAK,cAAc,IAAI,iBAAiB;AACxC,SAAO;;CAGR,MAAM,YAAY;AACjB,SAAO;GACN;GACA;GACA;GACA;GACA,CAAC,KAAK,KAAK;;CAGb,MAAM,SAAS,QAAgB,UAAkB;EAChD,MAAM,mBAAmB,CAAC,GAAG,KAAK,QAAQ,SAAS,CAAC,CAAC,SACnD,CAAC,QAAQ,WACT,OAAO,YAAY,CAAC,GAAG,MAAM,CAAC,KAAK,KAAK,CAAC,WAAW,WAAW,OAAO,CAAC,GACxE;EACD,MAAM,uBAAuB,CAAC,GAAG,KAAK,YAAY,SAAS,CAAC,CAAC,SAC3D,CAAC,MAAM,YAAY,OAAO,eAAe,KAAK,SAAS,WAAW,OAAO,CAAC,GAC3E;AAED,SAAO,GAAG,MAAM,KAAK,WAAW,GAAG,WAAW,GAAG,kBAAkB,GAAG,sBAAsB,GAAG,KAAK,WAAW;EAE/G,SAAS,WAAW,KAAa;AAChC,OAAI,CAAC,IAAI,WAAW,SAAS,CAC5B,QAAO;GAGR,MAAM,aAAa,QAAQ,QAAQ,SAAS;GAC5C,MAAM,WAAW,QAAQ,QAAQ,IAAI,QAAQ,UAAU,KAAK,CAAC;GAE7D,MAAM,eAAe,SADG,WAAW,MAAM,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EACrB,SAAS;AACxD,UAAO,aAAa,WAAW,IAAI,GAAG,eAAe,KAAK"}