codama-renderers-dart 0.5.5 → 0.5.6
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/LICENSE +21 -0
- package/dist/index.browser.cjs +64 -7
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +64 -7
- package/dist/index.browser.js.map +1 -1
- package/dist/index.node.cjs +64 -7
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +64 -7
- package/dist/index.node.js.map +1 -1
- package/dist/index.react-native.js +64 -7
- package/dist/index.react-native.js.map +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/utils/discriminators.d.ts.map +1 -1
- package/dist/types/utils/importMap.d.ts.map +1 -1
- package/dist/types/utils/options.d.ts +29 -0
- package/dist/types/utils/options.d.ts.map +1 -1
- package/dist/types/utils/wellKnownAddresses.d.ts.map +1 -1
- package/dist/types/visitors/getRenderMapVisitor.d.ts.map +1 -1
- package/dist/types/visitors/getTypeManifestVisitor.d.ts +3 -1
- package/dist/types/visitors/getTypeManifestVisitor.d.ts.map +1 -1
- package/dist/types/visitors/renderVisitor.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/utils/discriminators.ts +8 -1
- package/src/utils/options.ts +30 -0
- package/src/utils/wellKnownAddresses.ts +2 -1
- package/src/visitors/getRenderMapVisitor.ts +1 -0
- package/src/visitors/getTypeManifestVisitor.ts +25 -1
- package/src/visitors/renderVisitor.ts +67 -3
package/dist/index.node.js
CHANGED
|
@@ -382,7 +382,8 @@ var WELL_KNOWN_ADDRESSES = /* @__PURE__ */ new Map([
|
|
|
382
382
|
["TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", "tokenProgramAddress"],
|
|
383
383
|
["TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", "token2022ProgramAddress"],
|
|
384
384
|
["ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL", "associatedTokenProgramAddress"],
|
|
385
|
-
["
|
|
385
|
+
["Memo4c2pN8afCj432Lb7RMVKi9PbQnnW7ewFFaV3oAH", "memoProgramAddress"],
|
|
386
|
+
["MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", "memoLegacyProgramAddressV3"],
|
|
386
387
|
["Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo", "memoLegacyProgramAddress"],
|
|
387
388
|
// Metaplex programs
|
|
388
389
|
["metaqbxxU9qX8rZXkmUJ7haCrXXz2W1PSUq1Rn3E1od", "tokenMetadataProgramAddress"],
|
|
@@ -501,7 +502,8 @@ function getDiscriminatorValidationFragment(node, scope) {
|
|
|
501
502
|
`Discriminator size must be a non-negative safe integer, got ${discriminator.size}.`
|
|
502
503
|
);
|
|
503
504
|
}
|
|
504
|
-
|
|
505
|
+
const comparison = node.kind === "accountNode" ? "<" : "!=";
|
|
506
|
+
return fragment`if (bytes.length - offset ${fragmentFromString(comparison)} ${fragmentFromString(String(discriminator.size))}) {
|
|
505
507
|
throw ${use("SolanaError", "solanaErrors")}(
|
|
506
508
|
${use("SolanaErrorCode", "solanaErrors")}.codecsInvalidByteLength,
|
|
507
509
|
{
|
|
@@ -615,7 +617,12 @@ function emptyTypeManifest() {
|
|
|
615
617
|
|
|
616
618
|
// src/visitors/getTypeManifestVisitor.ts
|
|
617
619
|
function getTypeManifestVisitor(input) {
|
|
618
|
-
const {
|
|
620
|
+
const {
|
|
621
|
+
nameApi,
|
|
622
|
+
linkables,
|
|
623
|
+
nonScalarEnums = [],
|
|
624
|
+
linkOverrides = {}
|
|
625
|
+
} = input;
|
|
619
626
|
const baseVisitor = staticVisitor(
|
|
620
627
|
(node) => {
|
|
621
628
|
throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {
|
|
@@ -1096,6 +1103,17 @@ function getTypeManifestVisitor(input) {
|
|
|
1096
1103
|
},
|
|
1097
1104
|
visitDefinedTypeLink(node, { self }) {
|
|
1098
1105
|
const name = node.name;
|
|
1106
|
+
const override = linkOverrides[name];
|
|
1107
|
+
if (override != null) {
|
|
1108
|
+
const moduleKey2 = `linkOverride:${override.path}`;
|
|
1109
|
+
return {
|
|
1110
|
+
type: use(override.type, moduleKey2),
|
|
1111
|
+
encoder: use(override.encoder, moduleKey2),
|
|
1112
|
+
decoder: use(override.decoder, moduleKey2),
|
|
1113
|
+
value: emptyTypeManifest().value,
|
|
1114
|
+
isEnum: false
|
|
1115
|
+
};
|
|
1116
|
+
}
|
|
1099
1117
|
const typeName = nameApi.dataType(name);
|
|
1100
1118
|
const isNonScalar = nonScalarEnums.includes(node.name);
|
|
1101
1119
|
const moduleKey = `definedType:${snakeCase(name)}`;
|
|
@@ -2715,7 +2733,9 @@ function getRenderMapVisitor(options = {}) {
|
|
|
2715
2733
|
const linkables = new LinkableDictionary();
|
|
2716
2734
|
const typeManifestVisitor = getTypeManifestVisitor({
|
|
2717
2735
|
nameApi,
|
|
2718
|
-
linkables
|
|
2736
|
+
linkables,
|
|
2737
|
+
linkOverrides: options.linkOverrides
|
|
2738
|
+
});
|
|
2719
2739
|
const scope = {
|
|
2720
2740
|
nameApi,
|
|
2721
2741
|
typeManifestVisitor};
|
|
@@ -2894,13 +2914,14 @@ function renderVisitor(outputDir, options = {}) {
|
|
|
2894
2914
|
deleteFolderBeforeRendering = true,
|
|
2895
2915
|
formatCode = false,
|
|
2896
2916
|
nameApi,
|
|
2897
|
-
dependencyMap
|
|
2917
|
+
dependencyMap,
|
|
2918
|
+
linkOverrides
|
|
2898
2919
|
} = options;
|
|
2899
2920
|
return rootNodeVisitor((root) => {
|
|
2900
2921
|
const normalizedRoot = normalizeRootNode(root);
|
|
2901
2922
|
const renderMap = visit(
|
|
2902
2923
|
normalizedRoot,
|
|
2903
|
-
getRenderMapVisitor({ nameApi, dependencyMap })
|
|
2924
|
+
getRenderMapVisitor({ nameApi, dependencyMap, linkOverrides })
|
|
2904
2925
|
);
|
|
2905
2926
|
const typePathMap = {};
|
|
2906
2927
|
for (const renderPath of renderMap.keys()) {
|
|
@@ -2925,7 +2946,14 @@ function renderVisitor(outputDir, options = {}) {
|
|
|
2925
2946
|
}
|
|
2926
2947
|
internalMap[key] = rel;
|
|
2927
2948
|
}
|
|
2928
|
-
const content = resolveFragmentContent(
|
|
2949
|
+
const content = resolveFragmentContent(
|
|
2950
|
+
frag,
|
|
2951
|
+
{
|
|
2952
|
+
...dependencyMap ?? {},
|
|
2953
|
+
...linkOverrideImports(outputDir, filePath, options.linkOverrides ?? {})
|
|
2954
|
+
},
|
|
2955
|
+
internalMap
|
|
2956
|
+
);
|
|
2929
2957
|
files.push([fullPath, content]);
|
|
2930
2958
|
}
|
|
2931
2959
|
if (deleteFolderBeforeRendering && existsSync(outputDir)) {
|
|
@@ -2940,6 +2968,35 @@ function renderVisitor(outputDir, options = {}) {
|
|
|
2940
2968
|
}
|
|
2941
2969
|
});
|
|
2942
2970
|
}
|
|
2971
|
+
function linkOverrideImports(outputDir, generatedFilePath, overrides) {
|
|
2972
|
+
const resolved = {};
|
|
2973
|
+
if (Object.keys(overrides).length === 0) return resolved;
|
|
2974
|
+
const libRoot = findLibRoot(outputDir);
|
|
2975
|
+
if (libRoot == null) {
|
|
2976
|
+
throw new Error(
|
|
2977
|
+
`Cannot resolve linkOverrides because the render output directory "${outputDir}" has no "lib" ancestor.`
|
|
2978
|
+
);
|
|
2979
|
+
}
|
|
2980
|
+
const generatedAbsolute = posix.join(
|
|
2981
|
+
posix.resolve(outputDir),
|
|
2982
|
+
generatedFilePath
|
|
2983
|
+
);
|
|
2984
|
+
for (const override of Object.values(overrides)) {
|
|
2985
|
+
const overrideAbsolute = posix.join(libRoot, override.path);
|
|
2986
|
+
let rel = posix.relative(posix.dirname(generatedAbsolute), overrideAbsolute);
|
|
2987
|
+
if (!rel.startsWith(".")) {
|
|
2988
|
+
rel = `./${rel}`;
|
|
2989
|
+
}
|
|
2990
|
+
resolved[`linkOverride:${override.path}`] = rel;
|
|
2991
|
+
}
|
|
2992
|
+
return resolved;
|
|
2993
|
+
}
|
|
2994
|
+
function findLibRoot(outputDir) {
|
|
2995
|
+
const segments = posix.resolve(outputDir).split("/");
|
|
2996
|
+
const libIndex = segments.lastIndexOf("lib");
|
|
2997
|
+
if (libIndex < 0) return null;
|
|
2998
|
+
return segments.slice(0, libIndex + 1).join("/");
|
|
2999
|
+
}
|
|
2943
3000
|
function resolveFragmentContent(frag, dependencyMap, internalMap = {}) {
|
|
2944
3001
|
const { content, imports } = frag;
|
|
2945
3002
|
const importStr = imports.toString({
|