@codama/renderers-js 1.5.4 → 1.6.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.
- package/dist/index.browser.cjs +55 -19
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.mjs +55 -20
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.node.cjs +54 -18
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +55 -20
- package/dist/index.node.mjs.map +1 -1
- package/dist/index.react-native.mjs +55 -20
- package/dist/index.react-native.mjs.map +1 -1
- package/dist/types/fragments/programInstructions.d.ts.map +1 -1
- package/dist/types/utils/formatCode.d.ts +4 -4
- package/dist/types/utils/formatCode.d.ts.map +1 -1
- package/dist/types/utils/nameTransformers.d.ts +1 -1
- package/dist/types/utils/nameTransformers.d.ts.map +1 -1
- package/dist/types/utils/packageJson.d.ts +3 -2
- package/dist/types/utils/packageJson.d.ts.map +1 -1
- package/dist/types/visitors/renderVisitor.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/index.browser.cjs
CHANGED
|
@@ -6,9 +6,11 @@ var nodes = require('@codama/nodes');
|
|
|
6
6
|
var renderersCore = require('@codama/renderers-core');
|
|
7
7
|
var visitorsCore = require('@codama/visitors-core');
|
|
8
8
|
var codecsStrings = require('@solana/codecs-strings');
|
|
9
|
-
|
|
9
|
+
require('prettier');
|
|
10
|
+
var babelPlugin = require('prettier/plugins/babel');
|
|
10
11
|
var estreePlugin = require('prettier/plugins/estree');
|
|
11
12
|
var typeScriptPlugin = require('prettier/plugins/typescript');
|
|
13
|
+
var standalone = require('prettier/standalone');
|
|
12
14
|
var errors = require('@codama/errors');
|
|
13
15
|
var semver = require('semver');
|
|
14
16
|
|
|
@@ -30,6 +32,7 @@ function _interopNamespace(e) {
|
|
|
30
32
|
return Object.freeze(n);
|
|
31
33
|
}
|
|
32
34
|
|
|
35
|
+
var babelPlugin__namespace = /*#__PURE__*/_interopNamespace(babelPlugin);
|
|
33
36
|
var estreePlugin__namespace = /*#__PURE__*/_interopNamespace(estreePlugin);
|
|
34
37
|
var typeScriptPlugin__namespace = /*#__PURE__*/_interopNamespace(typeScriptPlugin);
|
|
35
38
|
|
|
@@ -213,6 +216,7 @@ var DEFAULT_NAME_TRANSFORMERS = {
|
|
|
213
216
|
programInstructionsEnum: (name) => `${nodes.pascalCase(name)}Instruction`,
|
|
214
217
|
programInstructionsEnumVariant: (name) => `${nodes.pascalCase(name)}`,
|
|
215
218
|
programInstructionsIdentifierFunction: (name) => `identify${nodes.pascalCase(name)}Instruction`,
|
|
219
|
+
programInstructionsParseFunction: (name) => `parse${nodes.pascalCase(name)}Instruction`,
|
|
216
220
|
programInstructionsParsedUnionType: (name) => `Parsed${nodes.pascalCase(name)}Instruction`,
|
|
217
221
|
programIsErrorFunction: (name) => `is${nodes.pascalCase(name)}Error`,
|
|
218
222
|
resolverFunction: (name) => `${nodes.camelCase(name)}`
|
|
@@ -409,25 +413,17 @@ var getDefinedTypeNodesToExtract = (nodes$1, parsedCustomDataOptions) => nodes$1
|
|
|
409
413
|
];
|
|
410
414
|
});
|
|
411
415
|
var DEFAULT_PRETTIER_OPTIONS = {
|
|
412
|
-
|
|
413
|
-
parser: "typescript",
|
|
414
|
-
plugins: [estreePlugin__namespace, typeScriptPlugin__namespace],
|
|
415
|
-
printWidth: 80,
|
|
416
|
-
semi: true,
|
|
417
|
-
singleQuote: true,
|
|
418
|
-
tabWidth: 2,
|
|
419
|
-
trailingComma: "es5",
|
|
420
|
-
useTabs: false
|
|
416
|
+
plugins: [estreePlugin__namespace, typeScriptPlugin__namespace, babelPlugin__namespace]
|
|
421
417
|
};
|
|
422
|
-
async function
|
|
418
|
+
async function getCodeFormatter(options) {
|
|
423
419
|
const shouldFormatCode = options.formatCode ?? true;
|
|
424
|
-
if (!shouldFormatCode) return
|
|
420
|
+
if (!shouldFormatCode) return (code) => Promise.resolve(code);
|
|
425
421
|
const prettierOptions = {
|
|
426
422
|
...DEFAULT_PRETTIER_OPTIONS,
|
|
427
423
|
...await resolvePrettierOptions(options.packageFolder),
|
|
428
424
|
...options.prettierOptions
|
|
429
425
|
};
|
|
430
|
-
return
|
|
426
|
+
return (code, filepath) => standalone.format(code, { ...prettierOptions, filepath });
|
|
431
427
|
}
|
|
432
428
|
async function resolvePrettierOptions(packageFolder) {
|
|
433
429
|
{
|
|
@@ -491,7 +487,7 @@ var DEFAULT_DEPENDENCY_VERSIONS = {
|
|
|
491
487
|
"@solana/rpc-types": "^5.0.0",
|
|
492
488
|
"@solana/signers": "^5.0.0"
|
|
493
489
|
};
|
|
494
|
-
function syncPackageJson(renderMap, options) {
|
|
490
|
+
async function syncPackageJson(renderMap, formatCode, options) {
|
|
495
491
|
const shouldSyncPackageJson = options.syncPackageJson ?? false;
|
|
496
492
|
const packageFolder = options.packageFolder;
|
|
497
493
|
if (!packageFolder) {
|
|
@@ -515,10 +511,10 @@ function syncPackageJson(renderMap, options) {
|
|
|
515
511
|
}
|
|
516
512
|
if (renderersCore.fileExists(packageJsonPath)) {
|
|
517
513
|
const packageJson = updateExistingPackageJson(renderersCore.readJson(packageJsonPath), usedDependencies);
|
|
518
|
-
|
|
514
|
+
await writePackageJson(packageJson, packageJsonPath, formatCode);
|
|
519
515
|
} else {
|
|
520
516
|
const packageJson = createNewPackageJson(usedDependencies);
|
|
521
|
-
|
|
517
|
+
await writePackageJson(packageJson, packageJsonPath, formatCode);
|
|
522
518
|
}
|
|
523
519
|
}
|
|
524
520
|
function createNewPackageJson(dependencyVersions) {
|
|
@@ -646,6 +642,11 @@ function updateDependency(dependencyGroup, dependency, requiredRange) {
|
|
|
646
642
|
if (!shouldUpdateRange(dependency, currentRange, requiredRange)) return;
|
|
647
643
|
dependencyGroup[dependency] = requiredRange;
|
|
648
644
|
}
|
|
645
|
+
async function writePackageJson(packageJson, packageJsonPath, formatCode) {
|
|
646
|
+
const packageJsonContent = JSON.stringify(packageJson, null, 2) + "\n";
|
|
647
|
+
const formattedContent = await formatCode(packageJsonContent, packageJsonPath);
|
|
648
|
+
renderersCore.writeFile(packageJsonPath, formattedContent);
|
|
649
|
+
}
|
|
649
650
|
|
|
650
651
|
// src/fragments/accountFetchHelpers.ts
|
|
651
652
|
function getAccountFetchHelpersFragment(scope) {
|
|
@@ -2113,7 +2114,8 @@ function getProgramInstructionsFragment(scope) {
|
|
|
2113
2114
|
[
|
|
2114
2115
|
getProgramInstructionsEnumFragment(scopeWithInstructions),
|
|
2115
2116
|
getProgramInstructionsIdentifierFunctionFragment(scopeWithInstructions),
|
|
2116
|
-
getProgramInstructionsParsedUnionTypeFragment(scopeWithInstructions)
|
|
2117
|
+
getProgramInstructionsParsedUnionTypeFragment(scopeWithInstructions),
|
|
2118
|
+
getProgramInstructionsParseFunctionFragment(scopeWithInstructions)
|
|
2117
2119
|
],
|
|
2118
2120
|
(c) => c.join("\n\n")
|
|
2119
2121
|
);
|
|
@@ -2182,6 +2184,39 @@ function getProgramInstructionsParsedUnionTypeFragment(scope) {
|
|
|
2182
2184
|
(c) => c.join("\n")
|
|
2183
2185
|
);
|
|
2184
2186
|
}
|
|
2187
|
+
function getProgramInstructionsParseFunctionFragment(scope) {
|
|
2188
|
+
const { programNode, nameApi, allInstructions } = scope;
|
|
2189
|
+
const instructionsWithDiscriminators = allInstructions.filter(
|
|
2190
|
+
(instruction) => (instruction.discriminators ?? []).length > 0
|
|
2191
|
+
);
|
|
2192
|
+
if (instructionsWithDiscriminators.length === 0) return;
|
|
2193
|
+
const programInstructionsEnum = nameApi.programInstructionsEnum(programNode.name);
|
|
2194
|
+
const programInstructionsIdentifierFunction = nameApi.programInstructionsIdentifierFunction(programNode.name);
|
|
2195
|
+
const programInstructionsParsedUnionType = nameApi.programInstructionsParsedUnionType(programNode.name);
|
|
2196
|
+
const parseFunction = nameApi.programInstructionsParseFunction(programNode.name);
|
|
2197
|
+
const switchCases = mergeFragments(
|
|
2198
|
+
allInstructions.map((instruction) => {
|
|
2199
|
+
const enumVariant = nameApi.programInstructionsEnumVariant(instruction.name);
|
|
2200
|
+
const parseFunction2 = use(nameApi.instructionParseFunction(instruction.name), "generatedInstructions");
|
|
2201
|
+
const assertIsInstructionWithAccounts = use("assertIsInstructionWithAccounts", "solanaInstructions");
|
|
2202
|
+
const hasAccounts = instruction.accounts.length > 0;
|
|
2203
|
+
const assertionsCode = hasAccounts ? fragment`${assertIsInstructionWithAccounts}(instruction);\n` : fragment``;
|
|
2204
|
+
return fragment`case ${programInstructionsEnum}.${enumVariant}: { ${assertionsCode}return { instructionType: ${programInstructionsEnum}.${enumVariant}, ...${parseFunction2}(instruction) }; }`;
|
|
2205
|
+
}),
|
|
2206
|
+
(c) => c.join("\n")
|
|
2207
|
+
);
|
|
2208
|
+
return fragment`
|
|
2209
|
+
export function ${parseFunction}<TProgram extends string>(
|
|
2210
|
+
instruction: ${use("type Instruction", "solanaInstructions")}<TProgram>
|
|
2211
|
+
& ${use("type InstructionWithData", "solanaInstructions")}<${use("type ReadonlyUint8Array", "solanaCodecsCore")}>
|
|
2212
|
+
): ${programInstructionsParsedUnionType}<TProgram> {
|
|
2213
|
+
const instructionType = ${programInstructionsIdentifierFunction}(instruction);
|
|
2214
|
+
switch (instructionType) {
|
|
2215
|
+
${switchCases}
|
|
2216
|
+
default: throw new Error("Unrecognized instruction type: " + instructionType);
|
|
2217
|
+
}
|
|
2218
|
+
}`;
|
|
2219
|
+
}
|
|
2185
2220
|
|
|
2186
2221
|
// src/fragments/programPage.ts
|
|
2187
2222
|
function getProgramPageFragment(scope) {
|
|
@@ -3227,8 +3262,9 @@ function renderVisitor(path, options = {}) {
|
|
|
3227
3262
|
renderersCore.deleteDirectory(path);
|
|
3228
3263
|
}
|
|
3229
3264
|
let renderMap = visitorsCore.visit(root, getRenderMapVisitor(options));
|
|
3230
|
-
|
|
3231
|
-
|
|
3265
|
+
const formatCode = await getCodeFormatter(options);
|
|
3266
|
+
renderMap = await renderersCore.mapRenderMapContentAsync(renderMap, formatCode);
|
|
3267
|
+
await syncPackageJson(renderMap, formatCode, options);
|
|
3232
3268
|
renderersCore.writeRenderMap(renderMap, path);
|
|
3233
3269
|
});
|
|
3234
3270
|
}
|