@codama/renderers-rust 1.2.8 → 2.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.
@@ -1,44 +1,25 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var errors = require('@codama/errors');
6
+ var nodes = require('@codama/nodes');
7
+ var renderersCore = require('@codama/renderers-core');
8
+ var visitorsCore = require('@codama/visitors-core');
9
+ var toml = require('@iarna/toml');
10
+ var semver = require('semver');
11
+ var codecsStrings = require('@solana/codecs-strings');
12
+ var path = require('path');
13
+ require('url');
14
+ var nunjucks = require('nunjucks');
15
+ var child_process = require('child_process');
16
+
17
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
29
18
 
30
- // src/index.ts
31
- var index_exports = {};
32
- __export(index_exports, {
33
- ImportMap: () => ImportMap,
34
- default: () => renderVisitor,
35
- getRenderMapVisitor: () => getRenderMapVisitor,
36
- getTypeManifestVisitor: () => getTypeManifestVisitor,
37
- renderVisitor: () => renderVisitor
38
- });
39
- module.exports = __toCommonJS(index_exports);
19
+ var nunjucks__default = /*#__PURE__*/_interopDefault(nunjucks);
40
20
 
41
21
  // src/ImportMap.ts
22
+ var RUST_CORE_IMPORTS = /* @__PURE__ */ new Set(["std", "crate", "super", "self", "core", "alloc", "clippy"]);
42
23
  var DEFAULT_MODULE_MAP = {
43
24
  generated: "crate::generated",
44
25
  generatedAccounts: "crate::generated::accounts",
@@ -98,6 +79,10 @@ var ImportMap = class _ImportMap {
98
79
  this._aliases.forEach((alias, i) => newImportMap.addAlias(resolveDependency(i), alias));
99
80
  return newImportMap;
100
81
  }
82
+ getExternalDependencies(dependencyMap) {
83
+ const resolvedMap = this.resolveDependencyMap(dependencyMap);
84
+ return new Set([...resolvedMap._imports].map((i) => i.split("::")[0]).filter((i) => !RUST_CORE_IMPORTS.has(i)));
85
+ }
101
86
  toString(dependencies) {
102
87
  const resolvedMap = this.resolveDependencyMap(dependencies);
103
88
  const importStatements = [...resolvedMap.imports].map((i) => {
@@ -108,48 +93,274 @@ var ImportMap = class _ImportMap {
108
93
  return importStatements.join("\n");
109
94
  }
110
95
  };
111
-
112
- // src/getRenderMapVisitor.ts
113
- var import_errors3 = require("@codama/errors");
114
- var import_nodes6 = require("@codama/nodes");
115
- var import_renderers_core = require("@codama/renderers-core");
116
- var import_visitors_core4 = require("@codama/visitors-core");
117
-
118
- // src/getTypeManifestVisitor.ts
119
- var import_errors2 = require("@codama/errors");
120
- var import_nodes5 = require("@codama/nodes");
121
- var import_visitors_core3 = require("@codama/visitors-core");
122
-
123
- // src/utils/codecs.ts
124
- var import_codecs_strings = require("@solana/codecs-strings");
96
+ var DEFAULT_DEPENDENCY_VERSIONS = {
97
+ "anchor-lang": { optional: true, version: "~0.31" },
98
+ borsh: "^0.10",
99
+ kaigan: { features: ["serde"], version: "^0.3" },
100
+ "num-derive": "^0.4",
101
+ "num-traits": "^0.2",
102
+ serde: { features: ["derive"], optional: true, version: "^1.0" },
103
+ "serde-big-array": "^0.5",
104
+ serde_with: { optional: true, version: "^3.0" },
105
+ "solana-account": "~2.2",
106
+ "solana-account-info": "~2.3",
107
+ "solana-client": { optional: true, version: "^2.2" },
108
+ "solana-cpi": "~2.2",
109
+ "solana-decode-error": "~2.3",
110
+ "solana-instruction": "~2.3",
111
+ "solana-program-error": "~2.2",
112
+ "solana-pubkey": { features: ["curve25519", "borsh"], version: "~2.3" },
113
+ "solana-sdk": { optional: true, version: "^2.3" },
114
+ thiserror: "^1.0"
115
+ };
116
+ function syncCargoToml(renderMap, crateFolder, options) {
117
+ const shouldSyncCargoToml = options.syncCargoToml ?? false;
118
+ const cargoTomlPath = renderersCore.joinPath(crateFolder, "Cargo.toml");
119
+ const usedDependencies = getUsedDependencyVersions(
120
+ renderMap,
121
+ options.dependencyMap ?? {},
122
+ options.dependencyVersions ?? {}
123
+ );
124
+ if (!shouldSyncCargoToml) {
125
+ if (renderersCore.fileExists(cargoTomlPath)) {
126
+ checkExistingCargoToml(readCargoToml(cargoTomlPath), usedDependencies);
127
+ }
128
+ return;
129
+ }
130
+ if (renderersCore.fileExists(cargoTomlPath)) {
131
+ const cargoToml = updateExistingCargoToml(readCargoToml(cargoTomlPath), usedDependencies);
132
+ renderersCore.writeFile(cargoTomlPath, toml.stringify(cargoToml) + "\n");
133
+ } else {
134
+ const cargoToml = createNewCargoToml(usedDependencies);
135
+ renderersCore.writeFile(cargoTomlPath, toml.stringify(cargoToml) + "\n");
136
+ }
137
+ }
138
+ function createNewCargoToml(usedDependencies) {
139
+ return updateExistingCargoToml(
140
+ {
141
+ name: "rust-client",
142
+ // eslint-disable-next-line sort-keys-fix/sort-keys-fix
143
+ description: "",
144
+ version: "1.0.0",
145
+ // eslint-disable-next-line sort-keys-fix/sort-keys-fix
146
+ repository: { workspace: true },
147
+ // eslint-disable-next-line sort-keys-fix/sort-keys-fix
148
+ edition: { workspace: true },
149
+ license: { workspace: true },
150
+ // eslint-disable-next-line sort-keys-fix/sort-keys-fix
151
+ features: {
152
+ anchor: ["dep:anchor-lang"],
153
+ "anchor-idl-build": ["anchor", "anchor-lang?/idl-build"],
154
+ fetch: ["dep:solana-client", "dep:solana-sdk"],
155
+ serde: ["dep:serde", "dep:serde_with"]
156
+ },
157
+ // eslint-disable-next-line sort-keys-fix/sort-keys-fix
158
+ dependencies: {}
159
+ },
160
+ usedDependencies
161
+ );
162
+ }
163
+ function updateExistingCargoToml(cargoToml, usedDependencies) {
164
+ const foundUsedDependencies = /* @__PURE__ */ new Set();
165
+ const updatedCargoToml = updateCargoDependencies(cargoToml, (dependencyGroup) => {
166
+ return Object.fromEntries(
167
+ Object.entries(dependencyGroup).map(([dependencyKey, dependency]) => {
168
+ const foundUsedDependency = findCargoDependencyByImportName(
169
+ usedDependencies,
170
+ getCargoDependencyImportName(dependencyKey)
171
+ );
172
+ if (!foundUsedDependency) {
173
+ return [dependencyKey, dependency];
174
+ }
175
+ const [usedDependencyKey, usedDependency] = foundUsedDependency;
176
+ foundUsedDependencies.add(usedDependencyKey);
177
+ const usedDependencyCrateName = getCargoDependencyCrateName(usedDependencyKey, usedDependency);
178
+ if (!shouldUpdateDependency(usedDependencyCrateName, dependency, usedDependency)) {
179
+ return [dependencyKey, dependency];
180
+ }
181
+ const newVersion = getCargoDependencyVersion(usedDependency);
182
+ return [
183
+ dependencyKey,
184
+ typeof dependency === "string" ? newVersion : { ...dependency, version: newVersion }
185
+ ];
186
+ })
187
+ );
188
+ });
189
+ const usedDependenciesToAdd = Object.entries(usedDependencies).filter(
190
+ ([usedDependencyKey]) => !foundUsedDependencies.has(usedDependencyKey)
191
+ );
192
+ for (const [usedDependencyKey, usedDependency] of usedDependenciesToAdd) {
193
+ updatedCargoToml.dependencies = updatedCargoToml.dependencies ?? {};
194
+ updatedCargoToml.dependencies[usedDependencyKey] = usedDependency;
195
+ }
196
+ return updatedCargoToml;
197
+ }
198
+ function checkExistingCargoToml(cargoToml, usedDependencies) {
199
+ const missingDependencies = [];
200
+ const dependenciesToUpdate = [];
201
+ const existingDependencies = {
202
+ ...cargoToml["build-dependencies"],
203
+ ...cargoToml["dev-dependencies"],
204
+ ...cargoToml.dependencies,
205
+ ...cargoToml.workspace?.dependencies,
206
+ ...Object.values(cargoToml.target ?? {}).reduce((acc, target) => {
207
+ return {
208
+ ...acc,
209
+ ...target["build-dependencies"],
210
+ ...target["dev-dependencies"],
211
+ ...target.dependencies
212
+ };
213
+ }, {})
214
+ };
215
+ for (const [usedDependencyKey, usedDependency] of Object.entries(usedDependencies)) {
216
+ const foundExistingDependency = findCargoDependencyByImportName(
217
+ existingDependencies,
218
+ getCargoDependencyImportName(usedDependencyKey)
219
+ );
220
+ if (!foundExistingDependency) {
221
+ missingDependencies.push(usedDependencyKey);
222
+ } else if (shouldUpdateDependency(foundExistingDependency[0], foundExistingDependency[1], usedDependency)) {
223
+ dependenciesToUpdate.push(usedDependencyKey);
224
+ }
225
+ }
226
+ if (missingDependencies.length === 0 && dependenciesToUpdate.length === 0) return;
227
+ const missingList = missingDependencies.map((d) => `- ${d} missing: ${getCargoDependencyVersion(usedDependencies[d])}
228
+ `).join("");
229
+ const outdatedList = dependenciesToUpdate.map(
230
+ (d) => `- ${d} outdated: ${getCargoDependencyVersion(existingDependencies[d])} -> ${getCargoDependencyVersion(usedDependencies[d])}
231
+ `
232
+ ).join("");
233
+ errors.logWarn(
234
+ `The following dependencies in your \`Cargo.toml\` are out-of-date or missing:
235
+ ${missingList}${outdatedList}`
236
+ );
237
+ }
238
+ function getUsedDependencyVersions(renderMap, dependencyMap, dependencyVersions) {
239
+ const usedImportNames = getUsedImportNames(renderMap, dependencyMap);
240
+ const dependencyVersionsWithDefaults = {
241
+ ...DEFAULT_DEPENDENCY_VERSIONS,
242
+ ...dependencyVersions
243
+ };
244
+ const [usedDependencyVersion, missingDependencies] = [...usedImportNames].reduce(
245
+ ([acc, missingDependencies2], usedImportName) => {
246
+ const usedDependency = findCargoDependencyByImportName(dependencyVersionsWithDefaults, usedImportName);
247
+ if (usedDependency) {
248
+ acc[usedDependency[0]] = usedDependency[1];
249
+ } else {
250
+ missingDependencies2.add(usedImportName);
251
+ }
252
+ return [acc, missingDependencies2];
253
+ },
254
+ [{}, /* @__PURE__ */ new Set()]
255
+ );
256
+ if (missingDependencies.size > 0) {
257
+ throw new errors.CodamaError(errors.CODAMA_ERROR__RENDERERS__MISSING_DEPENDENCY_VERSIONS, {
258
+ dependencies: [...missingDependencies],
259
+ message: "Please add these dependencies to the `dependencyVersions` option."
260
+ });
261
+ }
262
+ return usedDependencyVersion;
263
+ }
264
+ function getUsedImportNames(renderMap, dependencyMap) {
265
+ const fragments = [...renderMap.values()];
266
+ const fromImportMap = new ImportMap().mergeWith(...fragments.map(({ imports }) => imports)).getExternalDependencies(dependencyMap);
267
+ const PATH_REGEX = /\b(?:::)?([a-z_][a-z0-9_]*)(?:::[a-zA-Z0-9_]+)+/g;
268
+ const fromContent = fragments.flatMap(({ content }) => {
269
+ return [...content.matchAll(PATH_REGEX)].map((match) => match[1]).filter((crateName) => !RUST_CORE_IMPORTS.has(crateName));
270
+ });
271
+ return /* @__PURE__ */ new Set([...fromImportMap, ...fromContent]);
272
+ }
273
+ function shouldUpdateDependency(dependency, currentDependency, requiredDependency) {
274
+ const currentRange = getCargoDependencyVersion(currentDependency);
275
+ const requiredRange = getCargoDependencyVersion(requiredDependency);
276
+ return !!currentRange && !!requiredRange && shouldUpdateRange(dependency, currentRange, requiredRange);
277
+ }
278
+ function shouldUpdateRange(dependency, currentRange, requiredRange) {
279
+ currentRange = cargoToNpmSemver(currentRange);
280
+ requiredRange = cargoToNpmSemver(requiredRange);
281
+ try {
282
+ if (semver.subset(currentRange, requiredRange)) {
283
+ return false;
284
+ }
285
+ const minRequiredVersion = semver.minVersion(requiredRange);
286
+ const minCurrentVersion = semver.minVersion(currentRange);
287
+ if (!minCurrentVersion || !minRequiredVersion) {
288
+ throw new Error("Could not determine minimum versions.");
289
+ }
290
+ if (semver.lt(minCurrentVersion, minRequiredVersion)) {
291
+ return true;
292
+ }
293
+ return false;
294
+ } catch (error) {
295
+ console.warn(
296
+ `Could not parse the following ranges for dependency "${dependency}": [${currentRange}] and/or [${requiredRange}]. Caused by: ${error.message}`
297
+ );
298
+ return false;
299
+ }
300
+ }
301
+ function updateCargoDependencies(cargoToml, updateFn) {
302
+ const updatedCargoToml = JSON.parse(JSON.stringify(cargoToml));
303
+ const standardSections = ["dependencies", "dev-dependencies", "build-dependencies"];
304
+ for (const section of standardSections) {
305
+ if (updatedCargoToml[section]) {
306
+ updatedCargoToml[section] = updateFn(updatedCargoToml[section]);
307
+ }
308
+ }
309
+ if (updatedCargoToml.target) {
310
+ for (const targetKey of Object.keys(updatedCargoToml.target)) {
311
+ for (const section of standardSections) {
312
+ if (updatedCargoToml.target[targetKey][section]) {
313
+ updatedCargoToml.target[targetKey][section] = updateFn(updatedCargoToml.target[targetKey][section]);
314
+ }
315
+ }
316
+ }
317
+ }
318
+ if (updatedCargoToml.workspace?.dependencies) {
319
+ updatedCargoToml.workspace.dependencies = updateFn(updatedCargoToml.workspace.dependencies);
320
+ }
321
+ return updatedCargoToml;
322
+ }
323
+ function cargoToNpmSemver(cargoVersion) {
324
+ const version = cargoVersion.trim();
325
+ return /^\d+(\.\d+)?(\.\d+)?/.test(version) ? `^${version}` : version;
326
+ }
327
+ function getCargoDependencyVersion(dependency) {
328
+ return typeof dependency === "string" ? dependency : dependency.version;
329
+ }
330
+ function getCargoDependencyCrateName(key, dependency) {
331
+ return typeof dependency !== "string" && dependency.package ? dependency.package : key;
332
+ }
333
+ function getCargoDependencyImportName(key) {
334
+ return key.replace(/-/g, "_");
335
+ }
336
+ function findCargoDependencyByImportName(dependencies, importName) {
337
+ return Object.entries(dependencies).find(([key]) => {
338
+ return getCargoDependencyImportName(key) === importName;
339
+ });
340
+ }
341
+ function readCargoToml(path) {
342
+ return toml.parse(renderersCore.readFile(path));
343
+ }
125
344
  function getBytesFromBytesValueNode(node) {
126
345
  switch (node.encoding) {
127
346
  case "utf8":
128
- return (0, import_codecs_strings.getUtf8Encoder)().encode(node.data);
347
+ return codecsStrings.getUtf8Encoder().encode(node.data);
129
348
  case "base16":
130
- return (0, import_codecs_strings.getBase16Encoder)().encode(node.data);
349
+ return codecsStrings.getBase16Encoder().encode(node.data);
131
350
  case "base58":
132
- return (0, import_codecs_strings.getBase58Encoder)().encode(node.data);
351
+ return codecsStrings.getBase58Encoder().encode(node.data);
133
352
  case "base64":
134
353
  default:
135
- return (0, import_codecs_strings.getBase64Encoder)().encode(node.data);
354
+ return codecsStrings.getBase64Encoder().encode(node.data);
136
355
  }
137
356
  }
138
-
139
- // src/utils/discriminatorConstant.ts
140
- var import_nodes2 = require("@codama/nodes");
141
- var import_visitors_core2 = require("@codama/visitors-core");
142
-
143
- // src/renderValueNodeVisitor.ts
144
- var import_nodes = require("@codama/nodes");
145
- var import_visitors_core = require("@codama/visitors-core");
146
357
  function renderValueNode(value, getImportFrom, useStr = false) {
147
- return (0, import_visitors_core.visit)(value, renderValueNodeVisitor(getImportFrom, useStr));
358
+ return visitorsCore.visit(value, renderValueNodeVisitor(getImportFrom, useStr));
148
359
  }
149
360
  function renderValueNodeVisitor(getImportFrom, useStr = false) {
150
361
  return {
151
362
  visitArrayValue(node) {
152
- const list = node.items.map((v) => (0, import_visitors_core.visit)(v, this));
363
+ const list = node.items.map((v) => visitorsCore.visit(v, this));
153
364
  return {
154
365
  imports: new ImportMap().mergeWith(...list.map((c) => c.imports)),
155
366
  render: `[${list.map((c) => c.render).join(", ")}]`
@@ -163,18 +374,18 @@ function renderValueNodeVisitor(getImportFrom, useStr = false) {
163
374
  },
164
375
  visitBytesValue(node) {
165
376
  const bytes = getBytesFromBytesValueNode(node);
166
- const numbers = Array.from(bytes).map(import_nodes.numberValueNode);
167
- return (0, import_visitors_core.visit)((0, import_nodes.arrayValueNode)(numbers), this);
377
+ const numbers = Array.from(bytes).map(nodes.numberValueNode);
378
+ return visitorsCore.visit(nodes.arrayValueNode(numbers), this);
168
379
  },
169
380
  visitConstantValue(node) {
170
- if ((0, import_nodes.isNode)(node.value, "bytesValueNode")) {
171
- return (0, import_visitors_core.visit)(node.value, this);
381
+ if (nodes.isNode(node.value, "bytesValueNode")) {
382
+ return visitorsCore.visit(node.value, this);
172
383
  }
173
- if ((0, import_nodes.isNode)(node.type, "stringTypeNode") && (0, import_nodes.isNode)(node.value, "stringValueNode")) {
174
- return (0, import_visitors_core.visit)((0, import_nodes.bytesValueNode)(node.type.encoding, node.value.string), this);
384
+ if (nodes.isNode(node.type, "stringTypeNode") && nodes.isNode(node.value, "stringValueNode")) {
385
+ return visitorsCore.visit(nodes.bytesValueNode(node.type.encoding, node.value.string), this);
175
386
  }
176
- if ((0, import_nodes.isNode)(node.type, "numberTypeNode") && (0, import_nodes.isNode)(node.value, "numberValueNode")) {
177
- const numberManifest = (0, import_visitors_core.visit)(node.value, this);
387
+ if (nodes.isNode(node.type, "numberTypeNode") && nodes.isNode(node.value, "numberValueNode")) {
388
+ const numberManifest = visitorsCore.visit(node.value, this);
178
389
  const { format, endian } = node.type;
179
390
  const byteFunction = endian === "le" ? "to_le_bytes" : "to_be_bytes";
180
391
  numberManifest.render = `${numberManifest.render}${format}.${byteFunction}()`;
@@ -184,14 +395,14 @@ function renderValueNodeVisitor(getImportFrom, useStr = false) {
184
395
  },
185
396
  visitEnumValue(node) {
186
397
  const imports = new ImportMap();
187
- const enumName = (0, import_nodes.pascalCase)(node.enum.name);
188
- const variantName = (0, import_nodes.pascalCase)(node.variant);
398
+ const enumName = nodes.pascalCase(node.enum.name);
399
+ const variantName = nodes.pascalCase(node.variant);
189
400
  const importFrom = getImportFrom(node.enum);
190
401
  imports.add(`${importFrom}::${enumName}`);
191
402
  if (!node.value) {
192
403
  return { imports, render: `${enumName}::${variantName}` };
193
404
  }
194
- const enumValue = (0, import_visitors_core.visit)(node.value, this);
405
+ const enumValue = visitorsCore.visit(node.value, this);
195
406
  const fields = enumValue.render;
196
407
  return {
197
408
  imports: imports.mergeWith(enumValue.imports),
@@ -199,15 +410,15 @@ function renderValueNodeVisitor(getImportFrom, useStr = false) {
199
410
  };
200
411
  },
201
412
  visitMapEntryValue(node) {
202
- const mapKey = (0, import_visitors_core.visit)(node.key, this);
203
- const mapValue = (0, import_visitors_core.visit)(node.value, this);
413
+ const mapKey = visitorsCore.visit(node.key, this);
414
+ const mapValue = visitorsCore.visit(node.value, this);
204
415
  return {
205
416
  imports: mapKey.imports.mergeWith(mapValue.imports),
206
417
  render: `[${mapKey.render}, ${mapValue.render}]`
207
418
  };
208
419
  },
209
420
  visitMapValue(node) {
210
- const map = node.entries.map((entry) => (0, import_visitors_core.visit)(entry, this));
421
+ const map = node.entries.map((entry) => visitorsCore.visit(entry, this));
211
422
  const imports = new ImportMap().add("std::collection::HashMap");
212
423
  return {
213
424
  imports: imports.mergeWith(...map.map((c) => c.imports)),
@@ -233,7 +444,7 @@ function renderValueNodeVisitor(getImportFrom, useStr = false) {
233
444
  };
234
445
  },
235
446
  visitSetValue(node) {
236
- const set = node.items.map((v) => (0, import_visitors_core.visit)(v, this));
447
+ const set = node.items.map((v) => visitorsCore.visit(v, this));
237
448
  const imports = new ImportMap().add("std::collection::HashSet");
238
449
  return {
239
450
  imports: imports.mergeWith(...set.map((c) => c.imports)),
@@ -241,7 +452,7 @@ function renderValueNodeVisitor(getImportFrom, useStr = false) {
241
452
  };
242
453
  },
243
454
  visitSomeValue(node) {
244
- const child = (0, import_visitors_core.visit)(node.value, this);
455
+ const child = visitorsCore.visit(node.value, this);
245
456
  return {
246
457
  ...child,
247
458
  render: `Some(${child.render})`
@@ -254,21 +465,21 @@ function renderValueNodeVisitor(getImportFrom, useStr = false) {
254
465
  };
255
466
  },
256
467
  visitStructFieldValue(node) {
257
- const structValue = (0, import_visitors_core.visit)(node.value, this);
468
+ const structValue = visitorsCore.visit(node.value, this);
258
469
  return {
259
470
  imports: structValue.imports,
260
471
  render: `${node.name}: ${structValue.render}`
261
472
  };
262
473
  },
263
474
  visitStructValue(node) {
264
- const struct = node.fields.map((field) => (0, import_visitors_core.visit)(field, this));
475
+ const struct = node.fields.map((field) => visitorsCore.visit(field, this));
265
476
  return {
266
477
  imports: new ImportMap().mergeWith(...struct.map((c) => c.imports)),
267
478
  render: `{ ${struct.map((c) => c.render).join(", ")} }`
268
479
  };
269
480
  },
270
481
  visitTupleValue(node) {
271
- const tuple = node.items.map((v) => (0, import_visitors_core.visit)(v, this));
482
+ const tuple = node.items.map((v) => visitorsCore.visit(v, this));
272
483
  return {
273
484
  imports: new ImportMap().mergeWith(...tuple.map((c) => c.imports)),
274
485
  render: `(${tuple.map((c) => c.render).join(", ")})`
@@ -299,31 +510,28 @@ function getDiscriminatorConstant(discriminatorNode, scope) {
299
510
  }
300
511
  function getConstantDiscriminatorConstant(discriminatorNode, scope) {
301
512
  const { discriminatorNodes, getImportFrom, prefix, typeManifestVisitor } = scope;
302
- const index = discriminatorNodes.filter((0, import_nodes2.isNodeFilter)("constantDiscriminatorNode")).indexOf(discriminatorNode);
513
+ const index = discriminatorNodes.filter(nodes.isNodeFilter("constantDiscriminatorNode")).indexOf(discriminatorNode);
303
514
  const suffix = index <= 0 ? "" : `_${index + 1}`;
304
- const name = (0, import_nodes2.camelCase)(`${prefix}_discriminator${suffix}`);
305
- const typeManifest = (0, import_visitors_core2.visit)(discriminatorNode.constant.type, typeManifestVisitor);
515
+ const name = nodes.camelCase(`${prefix}_discriminator${suffix}`);
516
+ const typeManifest = visitorsCore.visit(discriminatorNode.constant.type, typeManifestVisitor);
306
517
  const value = renderValueNode(discriminatorNode.constant.value, getImportFrom);
307
518
  return getConstant(name, typeManifest, value);
308
519
  }
309
520
  function getFieldDiscriminatorConstant(discriminatorNode, scope) {
310
521
  const { fields, prefix, getImportFrom, typeManifestVisitor } = scope;
311
522
  const field = fields.find((f) => f.name === discriminatorNode.name);
312
- if (!field || !field.defaultValue || !(0, import_nodes2.isNode)(field.defaultValue, import_nodes2.VALUE_NODES)) {
523
+ if (!field || !field.defaultValue || !nodes.isNode(field.defaultValue, nodes.VALUE_NODES)) {
313
524
  return null;
314
525
  }
315
- const name = (0, import_nodes2.camelCase)(`${prefix}_${discriminatorNode.name}`);
316
- const typeManifest = (0, import_visitors_core2.visit)(field.type, typeManifestVisitor);
526
+ const name = nodes.camelCase(`${prefix}_${discriminatorNode.name}`);
527
+ const typeManifest = visitorsCore.visit(field.type, typeManifestVisitor);
317
528
  const value = renderValueNode(field.defaultValue, getImportFrom);
318
529
  return getConstant(name, typeManifest, value);
319
530
  }
320
531
  function getConstant(name, typeManifest, value) {
321
532
  const type = { imports: typeManifest.imports, render: typeManifest.type };
322
- return mergeFragments([type, value], ([t, v]) => `pub const ${(0, import_nodes2.snakeCase)(name).toUpperCase()}: ${t} = ${v};`);
533
+ return mergeFragments([type, value], ([t, v]) => `pub const ${nodes.snakeCase(name).toUpperCase()}: ${t} = ${v};`);
323
534
  }
324
-
325
- // src/utils/linkOverrides.ts
326
- var import_errors = require("@codama/errors");
327
535
  function getImportFromFactory(overrides) {
328
536
  const linkOverrides = {
329
537
  accounts: overrides.accounts ?? {},
@@ -349,7 +557,7 @@ function getImportFromFactory(overrides) {
349
557
  case "resolverValueNode":
350
558
  return linkOverrides.resolvers[node.name] ?? "hooked";
351
559
  default:
352
- throw new import_errors.CodamaError(import_errors.CODAMA_ERROR__UNEXPECTED_NODE_KIND, {
560
+ throw new errors.CodamaError(errors.CODAMA_ERROR__UNEXPECTED_NODE_KIND, {
353
561
  expectedKinds: [
354
562
  "AccountLinkNode",
355
563
  "DefinedTypeLinkNode",
@@ -364,12 +572,6 @@ function getImportFromFactory(overrides) {
364
572
  }
365
573
  };
366
574
  }
367
-
368
- // src/utils/render.ts
369
- var import_node_path = require("path");
370
- var import_node_url = require("url");
371
- var import_nodes3 = require("@codama/nodes");
372
- var import_nunjucks = __toESM(require("nunjucks"));
373
575
  function rustDocblock(docs) {
374
576
  if (docs.length <= 0) return "";
375
577
  const lines = docs.map((doc) => `/// ${doc}`);
@@ -377,14 +579,14 @@ function rustDocblock(docs) {
377
579
  `;
378
580
  }
379
581
  var render = (template, context, options) => {
380
- const dirname = false ? pathDirname(fileURLToPath(import_meta.url)) : __dirname;
381
- const templates = false ? (0, import_node_path.join)(dirname, "..", "..", "public", "templates") : (0, import_node_path.join)(dirname, "templates");
382
- const env = import_nunjucks.default.configure(templates, { autoescape: false, trimBlocks: true, ...options });
383
- env.addFilter("pascalCase", import_nodes3.pascalCase);
384
- env.addFilter("camelCase", import_nodes3.camelCase);
385
- env.addFilter("snakeCase", import_nodes3.snakeCase);
386
- env.addFilter("kebabCase", import_nodes3.kebabCase);
387
- env.addFilter("titleCase", import_nodes3.titleCase);
582
+ const dirname = __dirname;
583
+ const templates = path.join(dirname, "templates");
584
+ const env = nunjucks__default.default.configure(templates, { autoescape: false, trimBlocks: true, ...options });
585
+ env.addFilter("pascalCase", nodes.pascalCase);
586
+ env.addFilter("camelCase", nodes.camelCase);
587
+ env.addFilter("snakeCase", nodes.snakeCase);
588
+ env.addFilter("kebabCase", nodes.kebabCase);
589
+ env.addFilter("titleCase", nodes.titleCase);
388
590
  env.addFilter("rustDocblock", rustDocblock);
389
591
  env.addFilter("hasTrait", (traits, ...traitNames) => {
390
592
  if (typeof traits !== "string") return false;
@@ -392,9 +594,6 @@ var render = (template, context, options) => {
392
594
  });
393
595
  return env.render(template, context);
394
596
  };
395
-
396
- // src/utils/traitOptions.ts
397
- var import_nodes4 = require("@codama/nodes");
398
597
  var DEFAULT_TRAIT_OPTIONS = {
399
598
  baseDefaults: [
400
599
  "borsh::BorshSerialize",
@@ -417,14 +616,14 @@ function getTraitsFromNodeFactory(options = {}) {
417
616
  return (node) => getTraitsFromNode(node, options);
418
617
  }
419
618
  function getTraitsFromNode(node, userOptions = {}) {
420
- (0, import_nodes4.assertIsNode)(node, ["accountNode", "definedTypeNode", "instructionNode"]);
619
+ nodes.assertIsNode(node, ["accountNode", "definedTypeNode", "instructionNode"]);
421
620
  const options = { ...DEFAULT_TRAIT_OPTIONS, ...userOptions };
422
621
  const nodeType = getNodeType(node);
423
622
  if (nodeType === "alias") {
424
623
  return { imports: new ImportMap(), render: "" };
425
624
  }
426
625
  const sanitizedOverrides = Object.fromEntries(
427
- Object.entries(options.overrides).map(([key, value]) => [(0, import_nodes4.camelCase)(key), value])
626
+ Object.entries(options.overrides).map(([key, value]) => [nodes.camelCase(key), value])
428
627
  );
429
628
  const nodeOverrides = sanitizedOverrides[node.name];
430
629
  const allTraits = nodeOverrides === void 0 ? getDefaultTraits(nodeType, options) : nodeOverrides;
@@ -446,10 +645,10 @@ function getTraitsFromNode(node, userOptions = {}) {
446
645
  return { imports, render: traitLines.join("") };
447
646
  }
448
647
  function getNodeType(node) {
449
- if ((0, import_nodes4.isNode)(node, ["accountNode", "instructionNode"])) return "struct";
450
- if ((0, import_nodes4.isNode)(node.type, "structTypeNode")) return "struct";
451
- if ((0, import_nodes4.isNode)(node.type, "enumTypeNode")) {
452
- return (0, import_nodes4.isScalarEnum)(node.type) ? "scalarEnum" : "dataEnum";
648
+ if (nodes.isNode(node, ["accountNode", "instructionNode"])) return "struct";
649
+ if (nodes.isNode(node.type, "structTypeNode")) return "struct";
650
+ if (nodes.isNode(node.type, "enumTypeNode")) {
651
+ return nodes.isScalarEnum(node.type) ? "scalarEnum" : "dataEnum";
453
652
  }
454
653
  return "alias";
455
654
  }
@@ -495,14 +694,14 @@ function extractFullyQualifiedNames(traits, imports) {
495
694
  });
496
695
  }
497
696
  function getSerdeFieldAttribute(serdeWith, node, userOptions = {}) {
498
- (0, import_nodes4.assertIsNode)(node, ["accountNode", "definedTypeNode", "instructionNode"]);
697
+ nodes.assertIsNode(node, ["accountNode", "definedTypeNode", "instructionNode"]);
499
698
  const options = { ...DEFAULT_TRAIT_OPTIONS, ...userOptions };
500
699
  const nodeType = getNodeType(node);
501
700
  if (nodeType === "alias") {
502
701
  return "";
503
702
  }
504
703
  const sanitizedOverrides = Object.fromEntries(
505
- Object.entries(options.overrides).map(([key, value]) => [(0, import_nodes4.camelCase)(key), value])
704
+ Object.entries(options.overrides).map(([key, value]) => [nodes.camelCase(key), value])
506
705
  );
507
706
  const nodeOverrides = sanitizedOverrides[node.name];
508
707
  const allTraits = nodeOverrides === void 0 ? getDefaultTraits(nodeType, options) : nodeOverrides;
@@ -539,20 +738,20 @@ function getTypeManifestVisitor(options) {
539
738
  let inlineStruct = false;
540
739
  let parentSize = null;
541
740
  let parentNode = null;
542
- return (0, import_visitors_core3.pipe)(
543
- (0, import_visitors_core3.mergeVisitor)(
741
+ return visitorsCore.pipe(
742
+ visitorsCore.mergeVisitor(
544
743
  () => ({ imports: new ImportMap(), nestedStructs: [], type: "" }),
545
744
  (_, values) => ({
546
745
  ...mergeManifests(values),
547
746
  type: values.map((v) => v.type).join("\n")
548
747
  }),
549
- { keys: [...import_nodes5.REGISTERED_TYPE_NODE_KINDS, "definedTypeLinkNode", "definedTypeNode", "accountNode"] }
748
+ { keys: [...nodes.REGISTERED_TYPE_NODE_KINDS, "definedTypeLinkNode", "definedTypeNode", "accountNode"] }
550
749
  ),
551
- (v) => (0, import_visitors_core3.extendVisitor)(v, {
750
+ (v) => visitorsCore.extendVisitor(v, {
552
751
  visitAccount(account, { self }) {
553
- parentName = (0, import_nodes5.pascalCase)(account.name);
752
+ parentName = nodes.pascalCase(account.name);
554
753
  parentNode = account;
555
- const manifest = (0, import_visitors_core3.visit)(account.data, self);
754
+ const manifest = visitorsCore.visit(account.data, self);
556
755
  const traits = getTraitsFromNode2(account);
557
756
  manifest.imports.mergeWith(traits.imports);
558
757
  parentName = null;
@@ -563,21 +762,21 @@ function getTypeManifestVisitor(options) {
563
762
  };
564
763
  },
565
764
  visitArrayType(arrayType, { self }) {
566
- const childManifest = (0, import_visitors_core3.visit)(arrayType.item, self);
567
- if ((0, import_nodes5.isNode)(arrayType.count, "fixedCountNode")) {
765
+ const childManifest = visitorsCore.visit(arrayType.item, self);
766
+ if (nodes.isNode(arrayType.count, "fixedCountNode")) {
568
767
  return {
569
768
  ...childManifest,
570
769
  type: `[${childManifest.type}; ${arrayType.count.value}]`
571
770
  };
572
771
  }
573
- if ((0, import_nodes5.isNode)(arrayType.count, "remainderCountNode")) {
772
+ if (nodes.isNode(arrayType.count, "remainderCountNode")) {
574
773
  childManifest.imports.add("kaigan::types::RemainderVec");
575
774
  return {
576
775
  ...childManifest,
577
776
  type: `RemainderVec<${childManifest.type}>`
578
777
  };
579
778
  }
580
- const prefix = (0, import_nodes5.resolveNestedTypeNode)(arrayType.count.prefix);
779
+ const prefix = nodes.resolveNestedTypeNode(arrayType.count.prefix);
581
780
  if (prefix.endian === "le") {
582
781
  switch (prefix.format) {
583
782
  case "u32":
@@ -609,7 +808,7 @@ function getTypeManifestVisitor(options) {
609
808
  throw new Error("Array size not supported by Borsh");
610
809
  },
611
810
  visitBooleanType(booleanType) {
612
- const resolvedSize = (0, import_nodes5.resolveNestedTypeNode)(booleanType.size);
811
+ const resolvedSize = nodes.resolveNestedTypeNode(booleanType.size);
613
812
  if (resolvedSize.format === "u8" && resolvedSize.endian === "le") {
614
813
  return {
615
814
  imports: new ImportMap(),
@@ -620,28 +819,28 @@ function getTypeManifestVisitor(options) {
620
819
  throw new Error("Bool size not supported by Borsh");
621
820
  },
622
821
  visitBytesType(_bytesType, { self }) {
623
- let arraySize = (0, import_nodes5.remainderCountNode)();
822
+ let arraySize = nodes.remainderCountNode();
624
823
  if (typeof parentSize === "number") {
625
- arraySize = (0, import_nodes5.fixedCountNode)(parentSize);
824
+ arraySize = nodes.fixedCountNode(parentSize);
626
825
  } else if (parentSize && typeof parentSize === "object") {
627
- arraySize = (0, import_nodes5.prefixedCountNode)(parentSize);
826
+ arraySize = nodes.prefixedCountNode(parentSize);
628
827
  }
629
- const arrayType = (0, import_nodes5.arrayTypeNode)((0, import_nodes5.numberTypeNode)("u8"), arraySize);
630
- return (0, import_visitors_core3.visit)(arrayType, self);
828
+ const arrayType = nodes.arrayTypeNode(nodes.numberTypeNode("u8"), arraySize);
829
+ return visitorsCore.visit(arrayType, self);
631
830
  },
632
831
  visitDefinedType(definedType, { self }) {
633
- parentName = (0, import_nodes5.pascalCase)(definedType.name);
832
+ parentName = nodes.pascalCase(definedType.name);
634
833
  parentNode = definedType;
635
- const manifest = (0, import_visitors_core3.visit)(definedType.type, self);
834
+ const manifest = visitorsCore.visit(definedType.type, self);
636
835
  const traits = getTraitsFromNode2(definedType);
637
836
  manifest.imports.mergeWith(traits.imports);
638
837
  parentName = null;
639
838
  parentNode = null;
640
- const renderedType = (0, import_nodes5.isNode)(definedType.type, ["enumTypeNode", "structTypeNode"]) ? manifest.type : `pub type ${(0, import_nodes5.pascalCase)(definedType.name)} = ${manifest.type};`;
839
+ const renderedType = nodes.isNode(definedType.type, ["enumTypeNode", "structTypeNode"]) ? manifest.type : `pub type ${nodes.pascalCase(definedType.name)} = ${manifest.type};`;
641
840
  return { ...manifest, type: `${traits.render}${renderedType}` };
642
841
  },
643
842
  visitDefinedTypeLink(node) {
644
- const pascalCaseDefinedType = (0, import_nodes5.pascalCase)(node.name);
843
+ const pascalCaseDefinedType = nodes.pascalCase(node.name);
645
844
  const importFrom = getImportFrom(node);
646
845
  return {
647
846
  imports: new ImportMap().add(`${importFrom}::${pascalCaseDefinedType}`),
@@ -650,7 +849,7 @@ function getTypeManifestVisitor(options) {
650
849
  };
651
850
  },
652
851
  visitEnumEmptyVariantType(enumEmptyVariantType) {
653
- const name = (0, import_nodes5.pascalCase)(enumEmptyVariantType.name);
852
+ const name = nodes.pascalCase(enumEmptyVariantType.name);
654
853
  return {
655
854
  imports: new ImportMap(),
656
855
  nestedStructs: [],
@@ -658,14 +857,14 @@ function getTypeManifestVisitor(options) {
658
857
  };
659
858
  },
660
859
  visitEnumStructVariantType(enumStructVariantType, { self }) {
661
- const name = (0, import_nodes5.pascalCase)(enumStructVariantType.name);
860
+ const name = nodes.pascalCase(enumStructVariantType.name);
662
861
  const originalParentName = parentName;
663
862
  if (!originalParentName) {
664
863
  throw new Error("Enum struct variant type must have a parent name.");
665
864
  }
666
865
  inlineStruct = true;
667
- parentName = (0, import_nodes5.pascalCase)(originalParentName) + name;
668
- const typeManifest = (0, import_visitors_core3.visit)(enumStructVariantType.struct, self);
866
+ parentName = nodes.pascalCase(originalParentName) + name;
867
+ const typeManifest = visitorsCore.visit(enumStructVariantType.struct, self);
669
868
  inlineStruct = false;
670
869
  parentName = originalParentName;
671
870
  return {
@@ -674,13 +873,13 @@ function getTypeManifestVisitor(options) {
674
873
  };
675
874
  },
676
875
  visitEnumTupleVariantType(enumTupleVariantType, { self }) {
677
- const name = (0, import_nodes5.pascalCase)(enumTupleVariantType.name);
876
+ const name = nodes.pascalCase(enumTupleVariantType.name);
678
877
  const originalParentName = parentName;
679
878
  if (!originalParentName) {
680
879
  throw new Error("Enum struct variant type must have a parent name.");
681
880
  }
682
- parentName = (0, import_nodes5.pascalCase)(originalParentName) + name;
683
- const childManifest = (0, import_visitors_core3.visit)(enumTupleVariantType.tuple, self);
881
+ parentName = nodes.pascalCase(originalParentName) + name;
882
+ const childManifest = visitorsCore.visit(enumTupleVariantType.tuple, self);
684
883
  parentName = originalParentName;
685
884
  let derive = "";
686
885
  if (parentNode && childManifest.type === "(Pubkey)") {
@@ -706,25 +905,25 @@ function getTypeManifestVisitor(options) {
706
905
  if (!originalParentName) {
707
906
  throw new Error("Enum type must have a parent name.");
708
907
  }
709
- const variants = enumType.variants.map((variant) => (0, import_visitors_core3.visit)(variant, self));
908
+ const variants = enumType.variants.map((variant) => visitorsCore.visit(variant, self));
710
909
  const variantNames = variants.map((variant) => variant.type).join("\n");
711
910
  const mergedManifest = mergeManifests(variants);
712
911
  return {
713
912
  ...mergedManifest,
714
- type: `pub enum ${(0, import_nodes5.pascalCase)(originalParentName)} {
913
+ type: `pub enum ${nodes.pascalCase(originalParentName)} {
715
914
  ${variantNames}
716
915
  }`
717
916
  };
718
917
  },
719
918
  visitFixedSizeType(fixedSizeType, { self }) {
720
919
  parentSize = fixedSizeType.size;
721
- const manifest = (0, import_visitors_core3.visit)(fixedSizeType.type, self);
920
+ const manifest = visitorsCore.visit(fixedSizeType.type, self);
722
921
  parentSize = null;
723
922
  return manifest;
724
923
  },
725
924
  visitMapType(mapType, { self }) {
726
- const key = (0, import_visitors_core3.visit)(mapType.key, self);
727
- const value = (0, import_visitors_core3.visit)(mapType.value, self);
925
+ const key = visitorsCore.visit(mapType.key, self);
926
+ const value = visitorsCore.visit(mapType.value, self);
728
927
  const mergedManifest = mergeManifests([key, value]);
729
928
  mergedManifest.imports.add("std::collections::HashMap");
730
929
  return {
@@ -750,8 +949,8 @@ ${variantNames}
750
949
  };
751
950
  },
752
951
  visitOptionType(optionType, { self }) {
753
- const childManifest = (0, import_visitors_core3.visit)(optionType.item, self);
754
- const optionPrefix = (0, import_nodes5.resolveNestedTypeNode)(optionType.prefix);
952
+ const childManifest = visitorsCore.visit(optionType.item, self);
953
+ const optionPrefix = nodes.resolveNestedTypeNode(optionType.prefix);
755
954
  if (optionPrefix.format === "u8" && optionPrefix.endian === "le") {
756
955
  return {
757
956
  ...childManifest,
@@ -768,10 +967,10 @@ ${variantNames}
768
967
  };
769
968
  },
770
969
  visitRemainderOptionType(node) {
771
- throw new import_errors2.CodamaError(import_errors2.CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE, { kind: node.kind, node });
970
+ throw new errors.CodamaError(errors.CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE, { kind: node.kind, node });
772
971
  },
773
972
  visitSetType(setType, { self }) {
774
- const childManifest = (0, import_visitors_core3.visit)(setType.item, self);
973
+ const childManifest = visitorsCore.visit(setType.item, self);
775
974
  childManifest.imports.add("std::collections::HashSet");
776
975
  return {
777
976
  ...childManifest,
@@ -779,8 +978,8 @@ ${variantNames}
779
978
  };
780
979
  },
781
980
  visitSizePrefixType(sizePrefixType, { self }) {
782
- parentSize = (0, import_nodes5.resolveNestedTypeNode)(sizePrefixType.prefix);
783
- const manifest = (0, import_visitors_core3.visit)(sizePrefixType.type, self);
981
+ parentSize = nodes.resolveNestedTypeNode(sizePrefixType.prefix);
982
+ const manifest = visitorsCore.visit(sizePrefixType.type, self);
784
983
  parentSize = null;
785
984
  return manifest;
786
985
  },
@@ -799,7 +998,7 @@ ${variantNames}
799
998
  type: `[u8; ${parentSize}]`
800
999
  };
801
1000
  }
802
- if ((0, import_nodes5.isNode)(parentSize, "numberTypeNode") && parentSize.endian === "le") {
1001
+ if (nodes.isNode(parentSize, "numberTypeNode") && parentSize.endian === "le") {
803
1002
  switch (parentSize.format) {
804
1003
  case "u32":
805
1004
  return {
@@ -830,16 +1029,16 @@ ${variantNames}
830
1029
  if (!originalParentName) {
831
1030
  throw new Error("Struct field type must have a parent name.");
832
1031
  }
833
- parentName = (0, import_nodes5.pascalCase)(originalParentName) + (0, import_nodes5.pascalCase)(structFieldType.name);
1032
+ parentName = nodes.pascalCase(originalParentName) + nodes.pascalCase(structFieldType.name);
834
1033
  nestedStruct = true;
835
1034
  inlineStruct = false;
836
- const fieldManifest = (0, import_visitors_core3.visit)(structFieldType.type, self);
1035
+ const fieldManifest = visitorsCore.visit(structFieldType.type, self);
837
1036
  parentName = originalParentName;
838
1037
  inlineStruct = originalInlineStruct;
839
1038
  nestedStruct = originalNestedStruct;
840
- const fieldName = (0, import_nodes5.snakeCase)(structFieldType.name);
841
- const docblock = rustDocblock((0, import_nodes5.parseDocs)(structFieldType.docs));
842
- const resolvedNestedType = (0, import_nodes5.resolveNestedTypeNode)(structFieldType.type);
1039
+ const fieldName = nodes.snakeCase(structFieldType.name);
1040
+ const docblock = rustDocblock(nodes.parseDocs(structFieldType.docs));
1041
+ const resolvedNestedType = nodes.resolveNestedTypeNode(structFieldType.type);
843
1042
  let derive = "";
844
1043
  if (parentNode) {
845
1044
  if (fieldManifest.type === "Pubkey") {
@@ -854,9 +1053,9 @@ ${variantNames}
854
1053
  parentNode,
855
1054
  traitOptions
856
1055
  );
857
- } else if ((0, import_nodes5.isNode)(resolvedNestedType, "arrayTypeNode") && (0, import_nodes5.isNode)(resolvedNestedType.count, "fixedCountNode") && resolvedNestedType.count.value > 32) {
1056
+ } else if (nodes.isNode(resolvedNestedType, "arrayTypeNode") && nodes.isNode(resolvedNestedType.count, "fixedCountNode") && resolvedNestedType.count.value > 32) {
858
1057
  derive = getSerdeFieldAttribute("serde_big_array::BigArray", parentNode, traitOptions);
859
- } else if ((0, import_nodes5.isNode)(resolvedNestedType, ["bytesTypeNode", "stringTypeNode"]) && (0, import_nodes5.isNode)(structFieldType.type, "fixedSizeTypeNode") && structFieldType.type.size > 32) {
1058
+ } else if (nodes.isNode(resolvedNestedType, ["bytesTypeNode", "stringTypeNode"]) && nodes.isNode(structFieldType.type, "fixedSizeTypeNode") && structFieldType.type.size > 32) {
860
1059
  derive = getSerdeFieldAttribute(
861
1060
  "serde_with::As::<serde_with::Bytes>",
862
1061
  parentNode,
@@ -874,23 +1073,23 @@ ${variantNames}
874
1073
  if (!originalParentName) {
875
1074
  throw new Error("Struct type must have a parent name.");
876
1075
  }
877
- const fields = structType.fields.map((field) => (0, import_visitors_core3.visit)(field, self));
1076
+ const fields = structType.fields.map((field) => visitorsCore.visit(field, self));
878
1077
  const fieldTypes = fields.map((field) => field.type).join("\n");
879
1078
  const mergedManifest = mergeManifests(fields);
880
1079
  if (nestedStruct) {
881
1080
  const nestedTraits = getTraitsFromNode2(
882
- (0, import_nodes5.definedTypeNode)({ name: originalParentName, type: structType })
1081
+ nodes.definedTypeNode({ name: originalParentName, type: structType })
883
1082
  );
884
1083
  mergedManifest.imports.mergeWith(nestedTraits.imports);
885
1084
  return {
886
1085
  ...mergedManifest,
887
1086
  nestedStructs: [
888
1087
  ...mergedManifest.nestedStructs,
889
- `${nestedTraits.render}pub struct ${(0, import_nodes5.pascalCase)(originalParentName)} {
1088
+ `${nestedTraits.render}pub struct ${nodes.pascalCase(originalParentName)} {
890
1089
  ${fieldTypes}
891
1090
  }`
892
1091
  ],
893
- type: (0, import_nodes5.pascalCase)(originalParentName)
1092
+ type: nodes.pascalCase(originalParentName)
894
1093
  };
895
1094
  }
896
1095
  if (inlineStruct) {
@@ -900,13 +1099,13 @@ ${fieldTypes}
900
1099
  }
901
1100
  return {
902
1101
  ...mergedManifest,
903
- type: `pub struct ${(0, import_nodes5.pascalCase)(originalParentName)} {
1102
+ type: `pub struct ${nodes.pascalCase(originalParentName)} {
904
1103
  ${fieldTypes}
905
1104
  }`
906
1105
  };
907
1106
  },
908
1107
  visitTupleType(tupleType, { self }) {
909
- const items = tupleType.items.map((item) => (0, import_visitors_core3.visit)(item, self));
1108
+ const items = tupleType.items.map((item) => visitorsCore.visit(item, self));
910
1109
  const mergedManifest = mergeManifests(items);
911
1110
  return {
912
1111
  ...mergedManifest,
@@ -914,7 +1113,7 @@ ${fieldTypes}
914
1113
  };
915
1114
  },
916
1115
  visitZeroableOptionType(node) {
917
- throw new import_errors2.CodamaError(import_errors2.CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE, { kind: node.kind, node });
1116
+ throw new errors.CodamaError(errors.CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE, { kind: node.kind, node });
918
1117
  }
919
1118
  })
920
1119
  );
@@ -928,8 +1127,8 @@ function mergeManifests(manifests) {
928
1127
 
929
1128
  // src/getRenderMapVisitor.ts
930
1129
  function getRenderMapVisitor(options = {}) {
931
- const linkables = new import_visitors_core4.LinkableDictionary();
932
- const stack = new import_visitors_core4.NodeStack();
1130
+ const linkables = new visitorsCore.LinkableDictionary();
1131
+ const stack = new visitorsCore.NodeStack();
933
1132
  let program = null;
934
1133
  const renderParentInstructions = options.renderParentInstructions ?? false;
935
1134
  const dependencyMap = options.dependencyMap ?? {};
@@ -941,14 +1140,14 @@ function getRenderMapVisitor(options = {}) {
941
1140
  traitOptions: options.traitOptions
942
1141
  });
943
1142
  const anchorTraits = options.anchorTraits ?? true;
944
- return (0, import_visitors_core4.pipe)(
945
- (0, import_visitors_core4.staticVisitor)(() => (0, import_renderers_core.createRenderMap)(), {
1143
+ return visitorsCore.pipe(
1144
+ visitorsCore.staticVisitor(() => renderersCore.createRenderMap(), {
946
1145
  keys: ["rootNode", "programNode", "instructionNode", "accountNode", "definedTypeNode"]
947
1146
  }),
948
- (v) => (0, import_visitors_core4.extendVisitor)(v, {
1147
+ (v) => visitorsCore.extendVisitor(v, {
949
1148
  visitAccount(node) {
950
- const typeManifest = (0, import_visitors_core4.visit)(node, typeManifestVisitor);
951
- const fields = (0, import_nodes6.resolveNestedTypeNode)(node.data).fields;
1149
+ const typeManifest = visitorsCore.visit(node, typeManifestVisitor);
1150
+ const fields = nodes.resolveNestedTypeNode(node.data).fields;
952
1151
  const discriminatorConstants = getDiscriminatorConstants({
953
1152
  discriminatorNodes: node.discriminators ?? [],
954
1153
  fields,
@@ -960,58 +1159,57 @@ function getRenderMapVisitor(options = {}) {
960
1159
  const pda = node.pda ? linkables.get([...stack.getPath(), node.pda]) : void 0;
961
1160
  const pdaSeeds = pda?.seeds ?? [];
962
1161
  const seeds = pdaSeeds.map((seed) => {
963
- if ((0, import_nodes6.isNode)(seed, "variablePdaSeedNode")) {
964
- const seedManifest2 = (0, import_visitors_core4.visit)(seed.type, typeManifestVisitor);
1162
+ if (nodes.isNode(seed, "variablePdaSeedNode")) {
1163
+ const seedManifest2 = visitorsCore.visit(seed.type, typeManifestVisitor);
965
1164
  seedsImports.mergeWith(seedManifest2.imports);
966
- const resolvedType2 = (0, import_nodes6.resolveNestedTypeNode)(seed.type);
1165
+ const resolvedType2 = nodes.resolveNestedTypeNode(seed.type);
967
1166
  return { ...seed, resolvedType: resolvedType2, typeManifest: seedManifest2 };
968
1167
  }
969
- if ((0, import_nodes6.isNode)(seed.value, "programIdValueNode")) {
1168
+ if (nodes.isNode(seed.value, "programIdValueNode")) {
970
1169
  return seed;
971
1170
  }
972
- const seedManifest = (0, import_visitors_core4.visit)(seed.type, typeManifestVisitor);
1171
+ const seedManifest = visitorsCore.visit(seed.type, typeManifestVisitor);
973
1172
  const valueManifest = renderValueNode(seed.value, getImportFrom, true);
974
1173
  seedsImports.mergeWith(valueManifest.imports);
975
- const resolvedType = (0, import_nodes6.resolveNestedTypeNode)(seed.type);
1174
+ const resolvedType = nodes.resolveNestedTypeNode(seed.type);
976
1175
  return { ...seed, resolvedType, typeManifest: seedManifest, valueManifest };
977
1176
  });
978
- const hasVariableSeeds = pdaSeeds.filter((0, import_nodes6.isNodeFilter)("variablePdaSeedNode")).length > 0;
979
- const constantSeeds = seeds.filter((0, import_nodes6.isNodeFilter)("constantPdaSeedNode")).filter((seed) => !(0, import_nodes6.isNode)(seed.value, "programIdValueNode"));
980
- const { imports } = typeManifest;
981
- if (hasVariableSeeds) {
982
- imports.mergeWith(seedsImports);
983
- }
984
- return (0, import_renderers_core.createRenderMap)(`accounts/${(0, import_nodes6.snakeCase)(node.name)}.rs`, {
1177
+ const hasVariableSeeds = pdaSeeds.filter(nodes.isNodeFilter("variablePdaSeedNode")).length > 0;
1178
+ const constantSeeds = seeds.filter(nodes.isNodeFilter("constantPdaSeedNode")).filter((seed) => !nodes.isNode(seed.value, "programIdValueNode"));
1179
+ const imports = typeManifest.imports.mergeWith(...hasVariableSeeds ? [seedsImports] : []).mergeWith(discriminatorConstants.imports).remove(`generatedAccounts::${nodes.pascalCase(node.name)}`);
1180
+ return renderersCore.createRenderMap(`accounts/${nodes.snakeCase(node.name)}.rs`, {
985
1181
  content: render("accountsPage.njk", {
986
1182
  account: node,
987
1183
  anchorTraits,
988
1184
  constantSeeds,
989
1185
  discriminatorConstants: discriminatorConstants.render,
990
1186
  hasVariableSeeds,
991
- imports: imports.mergeWith(discriminatorConstants.imports).remove(`generatedAccounts::${(0, import_nodes6.pascalCase)(node.name)}`).toString(dependencyMap),
1187
+ imports: imports.toString(dependencyMap),
992
1188
  pda,
993
1189
  program,
994
1190
  seeds,
995
1191
  typeManifest
996
- })
1192
+ }),
1193
+ imports
997
1194
  });
998
1195
  },
999
1196
  visitDefinedType(node) {
1000
- const typeManifest = (0, import_visitors_core4.visit)(node, typeManifestVisitor);
1001
- const imports = new ImportMap().mergeWithManifest(typeManifest);
1002
- return (0, import_renderers_core.createRenderMap)(`types/${(0, import_nodes6.snakeCase)(node.name)}.rs`, {
1197
+ const typeManifest = visitorsCore.visit(node, typeManifestVisitor);
1198
+ const imports = new ImportMap().mergeWithManifest(typeManifest).remove(`generatedTypes::${nodes.pascalCase(node.name)}`);
1199
+ return renderersCore.createRenderMap(`types/${nodes.snakeCase(node.name)}.rs`, {
1003
1200
  content: render("definedTypesPage.njk", {
1004
1201
  definedType: node,
1005
- imports: imports.remove(`generatedTypes::${(0, import_nodes6.pascalCase)(node.name)}`).toString(dependencyMap),
1202
+ imports: imports.toString(dependencyMap),
1006
1203
  typeManifest
1007
- })
1204
+ }),
1205
+ imports
1008
1206
  });
1009
1207
  },
1010
1208
  visitInstruction(node) {
1011
1209
  const imports = new ImportMap();
1012
1210
  const accountsAndArgsConflicts = getConflictsForInstructionAccountsAndArgs(node);
1013
1211
  if (accountsAndArgsConflicts.length > 0) {
1014
- (0, import_errors3.logWarn)(
1212
+ errors.logWarn(
1015
1213
  `[Rust] Accounts and args of instruction [${node.name}] have the following conflicting attributes [${accountsAndArgsConflicts.join(", ")}]. Thus, the conflicting arguments will be suffixed with "_arg". You may want to rename the conflicting attributes.`
1016
1214
  );
1017
1215
  }
@@ -1030,12 +1228,12 @@ function getRenderMapVisitor(options = {}) {
1030
1228
  getImportFrom,
1031
1229
  getTraitsFromNode: getTraitsFromNode2,
1032
1230
  nestedStruct: true,
1033
- parentName: `${(0, import_nodes6.pascalCase)(node.name)}InstructionData`
1231
+ parentName: `${nodes.pascalCase(node.name)}InstructionData`
1034
1232
  });
1035
- const manifest = (0, import_visitors_core4.visit)(argument.type, argumentVisitor);
1233
+ const manifest = visitorsCore.visit(argument.type, argumentVisitor);
1036
1234
  imports.mergeWith(manifest.imports);
1037
- const innerOptionType = (0, import_nodes6.isNode)(argument.type, "optionTypeNode") ? manifest.type.slice("Option<".length, -1) : null;
1038
- const hasDefaultValue = !!argument.defaultValue && (0, import_nodes6.isNode)(argument.defaultValue, import_nodes6.VALUE_NODES);
1235
+ const innerOptionType = nodes.isNode(argument.type, "optionTypeNode") ? manifest.type.slice("Option<".length, -1) : null;
1236
+ const hasDefaultValue = !!argument.defaultValue && nodes.isNode(argument.defaultValue, nodes.VALUE_NODES);
1039
1237
  let renderValue = null;
1040
1238
  if (hasDefaultValue) {
1041
1239
  const { imports: argImports, render: value } = renderValueNode(
@@ -1057,57 +1255,59 @@ function getRenderMapVisitor(options = {}) {
1057
1255
  value: renderValue
1058
1256
  });
1059
1257
  });
1060
- const struct = (0, import_nodes6.structTypeNodeFromInstructionArgumentNodes)(node.arguments);
1258
+ const struct = nodes.structTypeNodeFromInstructionArgumentNodes(node.arguments);
1061
1259
  const structVisitor = getTypeManifestVisitor({
1062
1260
  getImportFrom,
1063
1261
  getTraitsFromNode: getTraitsFromNode2,
1064
- parentName: `${(0, import_nodes6.pascalCase)(node.name)}InstructionData`
1262
+ parentName: `${nodes.pascalCase(node.name)}InstructionData`
1065
1263
  });
1066
- const typeManifest = (0, import_visitors_core4.visit)(struct, structVisitor);
1264
+ const typeManifest = visitorsCore.visit(struct, structVisitor);
1067
1265
  const dataTraits = getTraitsFromNode2(node);
1068
- imports.mergeWith(dataTraits.imports);
1069
- return (0, import_renderers_core.createRenderMap)(`instructions/${(0, import_nodes6.snakeCase)(node.name)}.rs`, {
1266
+ imports.mergeWith(dataTraits.imports).mergeWith(discriminatorConstants.imports).remove(`generatedInstructions::${nodes.pascalCase(node.name)}`);
1267
+ return renderersCore.createRenderMap(`instructions/${nodes.snakeCase(node.name)}.rs`, {
1070
1268
  content: render("instructionsPage.njk", {
1071
1269
  dataTraits: dataTraits.render,
1072
1270
  discriminatorConstants: discriminatorConstants.render,
1073
1271
  hasArgs,
1074
1272
  hasOptional,
1075
- imports: imports.mergeWith(discriminatorConstants.imports).remove(`generatedInstructions::${(0, import_nodes6.pascalCase)(node.name)}`).toString(dependencyMap),
1273
+ imports: imports.toString(dependencyMap),
1076
1274
  instruction: node,
1077
1275
  instructionArgs,
1078
1276
  program,
1079
1277
  typeManifest
1080
- })
1278
+ }),
1279
+ imports
1081
1280
  });
1082
1281
  },
1083
1282
  visitProgram(node, { self }) {
1084
1283
  program = node;
1085
- let renders = (0, import_renderers_core.mergeRenderMaps)([
1086
- ...node.accounts.map((account) => (0, import_visitors_core4.visit)(account, self)),
1087
- ...node.definedTypes.map((type) => (0, import_visitors_core4.visit)(type, self)),
1088
- ...(0, import_nodes6.getAllInstructionsWithSubs)(node, {
1284
+ let renders = renderersCore.mergeRenderMaps([
1285
+ ...node.accounts.map((account) => visitorsCore.visit(account, self)),
1286
+ ...node.definedTypes.map((type) => visitorsCore.visit(type, self)),
1287
+ ...nodes.getAllInstructionsWithSubs(node, {
1089
1288
  leavesOnly: !renderParentInstructions
1090
- }).map((ix) => (0, import_visitors_core4.visit)(ix, self))
1289
+ }).map((ix) => visitorsCore.visit(ix, self))
1091
1290
  ]);
1092
1291
  if (node.errors.length > 0) {
1093
- renders = (0, import_renderers_core.addToRenderMap)(renders, `errors/${(0, import_nodes6.snakeCase)(node.name)}.rs`, {
1292
+ renders = renderersCore.addToRenderMap(renders, `errors/${nodes.snakeCase(node.name)}.rs`, {
1094
1293
  content: render("errorsPage.njk", {
1095
1294
  errors: node.errors,
1096
1295
  imports: new ImportMap().toString(dependencyMap),
1097
1296
  program: node
1098
- })
1297
+ }),
1298
+ imports: new ImportMap()
1099
1299
  });
1100
1300
  }
1101
1301
  program = null;
1102
1302
  return renders;
1103
1303
  },
1104
1304
  visitRoot(node, { self }) {
1105
- const programsToExport = (0, import_nodes6.getAllPrograms)(node);
1106
- const accountsToExport = (0, import_nodes6.getAllAccounts)(node);
1107
- const instructionsToExport = (0, import_nodes6.getAllInstructionsWithSubs)(node, {
1305
+ const programsToExport = nodes.getAllPrograms(node);
1306
+ const accountsToExport = nodes.getAllAccounts(node);
1307
+ const instructionsToExport = nodes.getAllInstructionsWithSubs(node, {
1108
1308
  leavesOnly: !renderParentInstructions
1109
1309
  });
1110
- const definedTypesToExport = (0, import_nodes6.getAllDefinedTypes)(node);
1310
+ const definedTypesToExport = nodes.getAllDefinedTypes(node);
1111
1311
  const hasAnythingToExport = programsToExport.length > 0 || accountsToExport.length > 0 || instructionsToExport.length > 0 || definedTypesToExport.length > 0;
1112
1312
  const ctx = {
1113
1313
  accountsToExport,
@@ -1117,22 +1317,22 @@ function getRenderMapVisitor(options = {}) {
1117
1317
  programsToExport,
1118
1318
  root: node
1119
1319
  };
1120
- return (0, import_renderers_core.mergeRenderMaps)([
1121
- (0, import_renderers_core.createRenderMap)({
1122
- ["accounts/mod.rs"]: accountsToExport.length > 0 ? { content: render("accountsMod.njk", ctx) } : void 0,
1123
- ["errors/mod.rs"]: programsToExport.length > 0 ? { content: render("errorsMod.njk", ctx) } : void 0,
1124
- ["instructions/mod.rs"]: instructionsToExport.length > 0 ? { content: render("instructionsMod.njk", ctx) } : void 0,
1125
- ["mod.rs"]: { content: render("rootMod.njk", ctx) },
1126
- ["programs.rs"]: programsToExport.length > 0 ? { content: render("programsMod.njk", ctx) } : void 0,
1127
- ["shared.rs"]: accountsToExport.length > 0 ? { content: render("sharedPage.njk", ctx) } : void 0,
1128
- ["types/mod.rs"]: definedTypesToExport.length > 0 ? { content: render("definedTypesMod.njk", ctx) } : void 0
1320
+ return renderersCore.mergeRenderMaps([
1321
+ renderersCore.createRenderMap({
1322
+ ["accounts/mod.rs"]: accountsToExport.length > 0 ? { content: render("accountsMod.njk", ctx), imports: new ImportMap() } : void 0,
1323
+ ["errors/mod.rs"]: programsToExport.length > 0 ? { content: render("errorsMod.njk", ctx), imports: new ImportMap() } : void 0,
1324
+ ["instructions/mod.rs"]: instructionsToExport.length > 0 ? { content: render("instructionsMod.njk", ctx), imports: new ImportMap() } : void 0,
1325
+ ["mod.rs"]: { content: render("rootMod.njk", ctx), imports: new ImportMap() },
1326
+ ["programs.rs"]: programsToExport.length > 0 ? { content: render("programsMod.njk", ctx), imports: new ImportMap() } : void 0,
1327
+ ["shared.rs"]: accountsToExport.length > 0 ? { content: render("sharedPage.njk", ctx), imports: new ImportMap() } : void 0,
1328
+ ["types/mod.rs"]: definedTypesToExport.length > 0 ? { content: render("definedTypesMod.njk", ctx), imports: new ImportMap() } : void 0
1129
1329
  }),
1130
- ...(0, import_nodes6.getAllPrograms)(node).map((p) => (0, import_visitors_core4.visit)(p, self))
1330
+ ...nodes.getAllPrograms(node).map((p) => visitorsCore.visit(p, self))
1131
1331
  ]);
1132
1332
  }
1133
1333
  }),
1134
- (v) => (0, import_visitors_core4.recordNodeStackVisitor)(v, stack),
1135
- (v) => (0, import_visitors_core4.recordLinkablesOnFirstVisitVisitor)(v, linkables)
1334
+ (v) => visitorsCore.recordNodeStackVisitor(v, stack),
1335
+ (v) => visitorsCore.recordLinkablesOnFirstVisitVisitor(v, linkables)
1136
1336
  );
1137
1337
  }
1138
1338
  function getConflictsForInstructionAccountsAndArgs(instruction) {
@@ -1143,51 +1343,43 @@ function getConflictsForInstructionAccountsAndArgs(instruction) {
1143
1343
  const duplicates = allNames.filter((e, i, a) => a.indexOf(e) !== i);
1144
1344
  return [...new Set(duplicates)];
1145
1345
  }
1146
-
1147
- // src/renderVisitor.ts
1148
- var import_errors4 = require("@codama/errors");
1149
- var import_renderers_core2 = require("@codama/renderers-core");
1150
- var import_visitors_core5 = require("@codama/visitors-core");
1151
- var import_child_process = require("child_process");
1152
- function renderVisitor(path, options = {}) {
1153
- return (0, import_visitors_core5.rootNodeVisitor)((root) => {
1346
+ function renderVisitor(crateFolder, options = {}) {
1347
+ return visitorsCore.rootNodeVisitor((root) => {
1348
+ const generatedFolder = renderersCore.joinPath(crateFolder, options.generatedFolder ?? "src/generated");
1154
1349
  if (options.deleteFolderBeforeRendering ?? true) {
1155
- (0, import_renderers_core2.deleteDirectory)(path);
1350
+ renderersCore.deleteDirectory(generatedFolder);
1156
1351
  }
1157
- (0, import_visitors_core5.visit)(root, (0, import_renderers_core2.writeRenderMapVisitor)(getRenderMapVisitor(options), path));
1352
+ const renderMap = visitorsCore.visit(root, getRenderMapVisitor(options));
1353
+ renderersCore.writeRenderMap(renderMap, generatedFolder);
1354
+ syncCargoToml(renderMap, crateFolder, options);
1158
1355
  if (options.formatCode) {
1159
- if (options.crateFolder) {
1160
- const removeFalsy = (arg) => Boolean(arg);
1161
- runFormatter(
1162
- "cargo",
1163
- [options.toolchain, "fmt", "--manifest-path", `${options.crateFolder}/Cargo.toml`].filter(
1164
- removeFalsy
1165
- )
1166
- );
1167
- } else {
1168
- (0, import_errors4.logWarn)("No crate folder specified, skipping formatting.");
1169
- }
1356
+ const removeFalsy = (arg) => Boolean(arg);
1357
+ runFormatter(
1358
+ "cargo",
1359
+ [options.toolchain, "fmt", "--manifest-path", `${crateFolder}/Cargo.toml`].filter(removeFalsy)
1360
+ );
1170
1361
  }
1171
1362
  });
1172
1363
  }
1173
1364
  function runFormatter(cmd, args) {
1174
- const { stdout, stderr, error } = (0, import_child_process.spawnSync)(cmd, args);
1365
+ const { stdout, stderr, error } = child_process.spawnSync(cmd, args);
1175
1366
  if (error?.message?.includes("ENOENT")) {
1176
- (0, import_errors4.logWarn)(`Could not find ${cmd}, skipping formatting.`);
1367
+ errors.logWarn(`Could not find ${cmd}, skipping formatting.`);
1177
1368
  return;
1178
1369
  }
1179
1370
  if (stdout.length > 0) {
1180
- (0, import_errors4.logWarn)(`(cargo-fmt) ${stdout ? stdout?.toString() : error}`);
1371
+ errors.logWarn(`(cargo-fmt) ${stdout ? stdout?.toString() : error}`);
1181
1372
  }
1182
1373
  if (stderr.length > 0) {
1183
- (0, import_errors4.logError)(`(cargo-fmt) ${stderr ? stderr.toString() : error}`);
1374
+ errors.logError(`(cargo-fmt) ${stderr ? stderr.toString() : error}`);
1184
1375
  }
1185
1376
  }
1186
- // Annotate the CommonJS export names for ESM import in node:
1187
- 0 && (module.exports = {
1188
- ImportMap,
1189
- getRenderMapVisitor,
1190
- getTypeManifestVisitor,
1191
- renderVisitor
1192
- });
1377
+
1378
+ exports.ImportMap = ImportMap;
1379
+ exports.RUST_CORE_IMPORTS = RUST_CORE_IMPORTS;
1380
+ exports.default = renderVisitor;
1381
+ exports.getRenderMapVisitor = getRenderMapVisitor;
1382
+ exports.getTypeManifestVisitor = getTypeManifestVisitor;
1383
+ exports.renderVisitor = renderVisitor;
1384
+ //# sourceMappingURL=index.node.cjs.map
1193
1385
  //# sourceMappingURL=index.node.cjs.map