@opcat-labs/scrypt-ts-transpiler-opcat 1.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.
Files changed (53) hide show
  1. package/dist/compile/compilerWrapper.d.ts +203 -0
  2. package/dist/compile/compilerWrapper.d.ts.map +1 -0
  3. package/dist/compile/compilerWrapper.js +1019 -0
  4. package/dist/compile/compilerWrapper.js.map +1 -0
  5. package/dist/compile/findCompiler.d.ts +3 -0
  6. package/dist/compile/findCompiler.d.ts.map +1 -0
  7. package/dist/compile/findCompiler.js +102 -0
  8. package/dist/compile/findCompiler.js.map +1 -0
  9. package/dist/compile/getBinary.d.ts +3 -0
  10. package/dist/compile/getBinary.d.ts.map +1 -0
  11. package/dist/compile/getBinary.js +94 -0
  12. package/dist/compile/getBinary.js.map +1 -0
  13. package/dist/debug.d.ts +25 -0
  14. package/dist/debug.d.ts.map +1 -0
  15. package/dist/debug.js +110 -0
  16. package/dist/debug.js.map +1 -0
  17. package/dist/index.d.ts +12 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +110 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/indexer.d.ts +52 -0
  22. package/dist/indexer.d.ts.map +1 -0
  23. package/dist/indexer.js +189 -0
  24. package/dist/indexer.js.map +1 -0
  25. package/dist/relinker.d.ts +44 -0
  26. package/dist/relinker.d.ts.map +1 -0
  27. package/dist/relinker.js +321 -0
  28. package/dist/relinker.js.map +1 -0
  29. package/dist/resolver.d.ts +3 -0
  30. package/dist/resolver.d.ts.map +1 -0
  31. package/dist/resolver.js +280 -0
  32. package/dist/resolver.js.map +1 -0
  33. package/dist/scryptParser.d.ts +31 -0
  34. package/dist/scryptParser.d.ts.map +1 -0
  35. package/dist/scryptParser.js +372 -0
  36. package/dist/scryptParser.js.map +1 -0
  37. package/dist/snippets.d.ts +39 -0
  38. package/dist/snippets.d.ts.map +1 -0
  39. package/dist/snippets.js +54 -0
  40. package/dist/snippets.js.map +1 -0
  41. package/dist/transpiler.d.ts +314 -0
  42. package/dist/transpiler.d.ts.map +1 -0
  43. package/dist/transpiler.js +4239 -0
  44. package/dist/transpiler.js.map +1 -0
  45. package/dist/types.d.ts +33 -0
  46. package/dist/types.d.ts.map +1 -0
  47. package/dist/types.js +31 -0
  48. package/dist/types.js.map +1 -0
  49. package/dist/utils.d.ts +23 -0
  50. package/dist/utils.d.ts.map +1 -0
  51. package/dist/utils.js +352 -0
  52. package/dist/utils.js.map +1 -0
  53. package/package.json +43 -0
@@ -0,0 +1,52 @@
1
+ import { Artifact, SmartContract } from '@opcat-labs/scrypt-ts-opcat';
2
+ import { Range } from './types';
3
+ /**
4
+ * @ignore
5
+ */
6
+ export type Symbol = string & {
7
+ __type: 'sCryptSymbol';
8
+ };
9
+ export type FilePath = string;
10
+ export type Content = {
11
+ scryptBase: string;
12
+ bindings: {
13
+ symbol: Symbol;
14
+ path: FilePath;
15
+ stateType?: Symbol;
16
+ md5: string;
17
+ }[];
18
+ };
19
+ export declare const INDEX_FILE_NAME = "scrypt.index.json";
20
+ /**
21
+ * @ignore
22
+ */
23
+ export declare class Indexer {
24
+ filePath: string;
25
+ scryptBasePath: string;
26
+ symbolInfos: Map<Symbol, {
27
+ md5: string;
28
+ path: FilePath;
29
+ stateType?: Symbol;
30
+ }>;
31
+ static readonly TEMPLATE_FILE_NAME = ".templates";
32
+ constructor(filePath?: FilePath);
33
+ setScryptBasePath(scryptBasePath: string): void;
34
+ clean(): void;
35
+ load(): void;
36
+ getRelativePath(symbol: Symbol): FilePath | undefined;
37
+ getMd5(symbol: Symbol): FilePath | undefined;
38
+ updateMd5(symbol: Symbol, md5: string): void;
39
+ getFullPath(symbol: Symbol): FilePath | undefined;
40
+ getPackageFilePath(packageName: string, symbol: Symbol): FilePath | undefined;
41
+ static queryIndexFile(fromPath: FilePath, toPath?: FilePath): FilePath | undefined;
42
+ query(symbol: Symbol, includeBase?: boolean): FilePath | undefined;
43
+ save(): this;
44
+ addSymbols(symbolsWithRange: {
45
+ name: Symbol;
46
+ srcRange: Range;
47
+ stateType?: Symbol;
48
+ }[], symbolPath: FilePath): void;
49
+ static create(tsconfigDir: string, scryptOutDir: string): Indexer;
50
+ }
51
+ export declare function readArtifact(cls: typeof SmartContract): Artifact;
52
+ //# sourceMappingURL=indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC;AACzD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC9B,MAAM,MAAM,OAAO,GAAG;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACjF,CAAC;AAEF,eAAO,MAAM,eAAe,sBAAsB,CAAC;AAEnD;;GAEG;AACH,qBAAa,OAAO;IAElB,QAAQ,EAAE,MAAM,CAAC;IAEjB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,GAAG,CACd,MAAM,EACN;QACE,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,QAAQ,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CACF,CAAa;IAEd,gBAAuB,kBAAkB,gBAAgB;gBAE7C,QAAQ,CAAC,EAAE,QAAQ;IAO/B,iBAAiB,CAAC,cAAc,EAAE,MAAM;IAIxC,KAAK;IAIL,IAAI;IAwBJ,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQrD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQ5C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IASrC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQjD,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQ5E,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS;IA0BlF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,QAAQ,GAAG,SAAS;IAKhE,IAAI,IAAI,IAAI;IAYZ,UAAU,CACR,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,EACzE,UAAU,EAAE,QAAQ;IA6BtB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;CAQlE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,aAAa,GAAG,QAAQ,CAoBhE"}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.readArtifact = exports.Indexer = exports.INDEX_FILE_NAME = void 0;
27
+ const fs_1 = require("fs");
28
+ const path_1 = __importStar(require("path"));
29
+ const utils_1 = require("./utils");
30
+ exports.INDEX_FILE_NAME = 'scrypt.index.json';
31
+ /**
32
+ * @ignore
33
+ */
34
+ class Indexer {
35
+ constructor(filePath) {
36
+ this.symbolInfos = new Map();
37
+ // find indexer file of the contract
38
+ const indexFile = filePath || (0, path_1.join)(process.cwd(), exports.INDEX_FILE_NAME);
39
+ this.filePath = indexFile;
40
+ this.load();
41
+ }
42
+ setScryptBasePath(scryptBasePath) {
43
+ this.scryptBasePath = scryptBasePath;
44
+ }
45
+ clean() {
46
+ this.symbolInfos.clear();
47
+ }
48
+ load() {
49
+ if (!(0, fs_1.existsSync)(this.filePath)) {
50
+ return;
51
+ }
52
+ const content = JSON.parse((0, fs_1.readFileSync)(this.filePath).toString());
53
+ if (!content.scryptBase) {
54
+ throw new Error(`missing \`scryptBase\` in index file ${this.filePath}`);
55
+ }
56
+ this.scryptBasePath = content.scryptBase;
57
+ if (!content.bindings) {
58
+ throw new Error(`missing \`bindings\` in index file ${this.filePath}`);
59
+ }
60
+ content.bindings.forEach((binding) => {
61
+ if (binding.symbol && binding.path) {
62
+ this.symbolInfos.set(binding.symbol, {
63
+ path: binding.path,
64
+ md5: binding.md5,
65
+ stateType: binding.stateType,
66
+ });
67
+ }
68
+ });
69
+ }
70
+ getRelativePath(symbol) {
71
+ if (this.symbolInfos.has(symbol)) {
72
+ return this.symbolInfos.get(symbol).path;
73
+ }
74
+ return undefined;
75
+ }
76
+ getMd5(symbol) {
77
+ if (this.symbolInfos.has(symbol)) {
78
+ return this.symbolInfos.get(symbol).md5;
79
+ }
80
+ return undefined;
81
+ }
82
+ updateMd5(symbol, md5) {
83
+ const infos = this.symbolInfos.get(symbol);
84
+ if (infos) {
85
+ this.symbolInfos.set(symbol, {
86
+ ...infos,
87
+ md5,
88
+ });
89
+ }
90
+ }
91
+ getFullPath(symbol) {
92
+ const relativePath = this.getRelativePath(symbol);
93
+ if (!relativePath) {
94
+ return undefined;
95
+ }
96
+ return (0, path_1.join)((0, path_1.dirname)(this.filePath), this.scryptBasePath, relativePath);
97
+ }
98
+ getPackageFilePath(packageName, symbol) {
99
+ const relativePath = this.getRelativePath(symbol);
100
+ if (!relativePath) {
101
+ return undefined;
102
+ }
103
+ return path_1.default.join(`${packageName}/${this.scryptBasePath}`, `${relativePath}`);
104
+ }
105
+ static queryIndexFile(fromPath, toPath) {
106
+ let searchDir = fromPath;
107
+ toPath = toPath === undefined ? process.cwd() : toPath;
108
+ const isSamePath = (pathA, pathB) => {
109
+ return (0, path_1.resolve)(pathA).toLowerCase() == (0, path_1.resolve)(pathB).toLowerCase();
110
+ };
111
+ while (true) {
112
+ const indexFile = (0, path_1.join)(searchDir, exports.INDEX_FILE_NAME);
113
+ if ((0, fs_1.existsSync)(indexFile)) {
114
+ return indexFile;
115
+ }
116
+ const parentDir = (0, path_1.join)(searchDir, '..');
117
+ if (isSamePath(searchDir, toPath) || isSamePath(searchDir, parentDir)) {
118
+ break;
119
+ }
120
+ searchDir = parentDir;
121
+ }
122
+ const indexFile = (0, path_1.join)(toPath, exports.INDEX_FILE_NAME);
123
+ if ((0, fs_1.existsSync)(indexFile)) {
124
+ return indexFile;
125
+ }
126
+ return undefined;
127
+ }
128
+ query(symbol, includeBase = false) {
129
+ const sInfo = this.symbolInfos.get(symbol);
130
+ return sInfo && includeBase ? (0, path_1.join)(this.scryptBasePath, sInfo.path) : sInfo.path;
131
+ }
132
+ save() {
133
+ const content = {
134
+ scryptBase: (0, utils_1.toPosixPath)(this.scryptBasePath),
135
+ bindings: Array.from(this.symbolInfos.keys()).map((symbol) => {
136
+ const infos = this.symbolInfos.get(symbol);
137
+ return { symbol, ...(0, utils_1.filterUndefinedFields)(infos) };
138
+ }),
139
+ };
140
+ (0, fs_1.writeFileSync)(this.filePath, JSON.stringify(content, null, 1));
141
+ return this;
142
+ }
143
+ addSymbols(symbolsWithRange, symbolPath) {
144
+ symbolsWithRange.forEach((symbolWithRange) => {
145
+ const infos = this.symbolInfos.get(symbolWithRange.name);
146
+ if (infos && infos.path !== symbolPath) {
147
+ const srcFileName = symbolWithRange.srcRange.fileName;
148
+ const startLine = symbolWithRange.srcRange.start.line + 1;
149
+ const startCol = symbolWithRange.srcRange.start.character + 1;
150
+ const endLine = symbolWithRange.srcRange.end.line + 1;
151
+ const endCol = symbolWithRange.srcRange.end.character + 1;
152
+ console.log(`scrypt-ts ERROR - ${srcFileName}:${startLine}:${startCol}:${endLine}:${endCol} - symbol \`${symbolWithRange.name}\` already has been defined in \`${infos.path.replace('.scrypt', '.ts')}\` in ${this.filePath}\n`);
153
+ }
154
+ else {
155
+ this.symbolInfos.set(symbolWithRange.name, {
156
+ ...infos,
157
+ stateType: symbolWithRange.stateType,
158
+ path: symbolPath,
159
+ });
160
+ }
161
+ });
162
+ this.save();
163
+ }
164
+ static create(tsconfigDir, scryptOutDir) {
165
+ const filePath = (0, path_1.join)(tsconfigDir, exports.INDEX_FILE_NAME);
166
+ const scryptBasePath = (0, path_1.relative)(tsconfigDir, scryptOutDir);
167
+ const indexer = new Indexer(filePath);
168
+ indexer.setScryptBasePath(scryptBasePath);
169
+ indexer.clean();
170
+ return indexer.save();
171
+ }
172
+ }
173
+ exports.Indexer = Indexer;
174
+ Indexer.TEMPLATE_FILE_NAME = '.templates';
175
+ function readArtifact(cls) {
176
+ // find scrypt file path in the indexer
177
+ const indexer = new Indexer();
178
+ const scryptFile = indexer.getFullPath(cls.name);
179
+ if (!scryptFile) {
180
+ throw new Error(`Cannot find the bundled artifact file for contract \`${this.name}\`, run \`npx scrypt-cli-btc compile\` to generate it.`);
181
+ }
182
+ const artifactFile = (0, utils_1.alterFileExt)(scryptFile, 'json');
183
+ if (!(0, fs_1.existsSync)(scryptFile)) {
184
+ throw new Error(`Cannot find the bundled artifact file for contract \`${this.name}\`, run \`npx scrypt-cli-btc compile\` to generate it.`);
185
+ }
186
+ return JSON.parse((0, fs_1.readFileSync)(artifactFile).toString());
187
+ }
188
+ exports.readArtifact = readArtifact;
189
+ //# sourceMappingURL=indexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { ImportExpression, ExportSymbol } from './scryptParser';
2
+ export declare const TEMPLATE_FOLDER_NAME = ".templates";
3
+ export declare const TPL_FILE_EXTENSION = ".tpl";
4
+ export declare const RENAME_SYMBOL_SEP = "__rs__";
5
+ type ScryptFile = {
6
+ importExpressions: ImportExpression[];
7
+ exportSymbols: ExportSymbol[];
8
+ originFilePath: string;
9
+ relinkedFilePath: string;
10
+ packageName: string;
11
+ packageVersion: string;
12
+ };
13
+ type ScryptFileMap = Map<string, ScryptFile>;
14
+ export declare class Relinker {
15
+ readonly projectRoot: string;
16
+ readonly scryptBasePath: string;
17
+ fileMap: ScryptFileMap;
18
+ constructor(projectRoot: string, scryptBasePath: string);
19
+ static getUnRenamedSymbol(symbol: string): string;
20
+ static getRenamedSymbol(symbol: string, packageName: string, packageVersion: string): string;
21
+ static getFilePackageInfo(filePath: string): {
22
+ packageDir: string;
23
+ packageName: string;
24
+ packageVersion: string;
25
+ };
26
+ get currentProjectArtifactDir(): string;
27
+ relink(currentScryptFilePath: string): void;
28
+ relinkDeps(parentFile: string, importExpressions: ImportExpression[]): void;
29
+ findImportedSymobleSource(symbol: string, currentScryptFilePath: string, importExpressions: ImportExpression[]): ScryptFile;
30
+ /**
31
+ * get the relinked file path by the absolute scrypt.tpl file path;
32
+ * @param absoluteScryptFilePath absolute scrypt.tpl file path
33
+ * @returns relinked file path
34
+ */
35
+ getRelinkedFilePath(absoluteScryptFilePath: string): string;
36
+ /**
37
+ * remove the .tpl extension from the file path;
38
+ * @param filePath file path
39
+ * @returns
40
+ */
41
+ removeTplExt(filePath: string): string;
42
+ }
43
+ export {};
44
+ //# sourceMappingURL=relinker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relinker.d.ts","sourceRoot":"","sources":["../src/relinker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AAGlF,eAAO,MAAM,oBAAoB,eAAe,CAAC;AACjD,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,KAAK,UAAU,GAAG;IAChB,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,aAAa,EAAE,YAAY,EAAE,CAAC;IAE9B,cAAc,EAAE,MAAM,CAAC;IAEvB,gBAAgB,EAAE,MAAM,CAAC;IAEzB,WAAW,EAAE,MAAM,CAAC;IAEpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,KAAK,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAE7C,qBAAa,QAAQ;aAID,WAAW,EAAE,MAAM;aACnB,cAAc,EAAE,MAAM;IAJjC,OAAO,EAAE,aAAa,CAAC;gBAGZ,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM;IAKxC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAOjD,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IASnF,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM;;;;;IAI1C,IAAI,yBAAyB,WAE5B;IAED,MAAM,CAAC,qBAAqB,EAAE,MAAM;IAiGpC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE;IAYpE,yBAAyB,CACvB,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,MAAM,EAC7B,iBAAiB,EAAE,gBAAgB,EAAE;IAevC;;;;OAIG;IACH,mBAAmB,CAAC,sBAAsB,EAAE,MAAM;IAuBlD;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM;CAM9B"}
@@ -0,0 +1,321 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Relinker = exports.RENAME_SYMBOL_SEP = exports.TPL_FILE_EXTENSION = exports.TEMPLATE_FOLDER_NAME = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const mlly_1 = require("mlly");
10
+ const scryptParser_1 = require("./scryptParser");
11
+ const utils_1 = require("./utils");
12
+ exports.TEMPLATE_FOLDER_NAME = '.templates';
13
+ exports.TPL_FILE_EXTENSION = '.tpl';
14
+ exports.RENAME_SYMBOL_SEP = '__rs__';
15
+ class Relinker {
16
+ constructor(projectRoot, scryptBasePath) {
17
+ this.projectRoot = projectRoot;
18
+ this.scryptBasePath = scryptBasePath;
19
+ this.fileMap = new Map();
20
+ }
21
+ static getUnRenamedSymbol(symbol) {
22
+ const parts = symbol.split(exports.RENAME_SYMBOL_SEP);
23
+ if (parts.length === 1) {
24
+ return parts[0];
25
+ }
26
+ return parts[parts.length - 1];
27
+ }
28
+ static getRenamedSymbol(symbol, packageName, packageVersion) {
29
+ return Utils.getRenamedSymbol(symbol, {
30
+ packageName,
31
+ packageVersion,
32
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
+ });
34
+ }
35
+ /// get the package info by a file in that package
36
+ static getFilePackageInfo(filePath) {
37
+ return Utils.getFilePackageInfo(filePath);
38
+ }
39
+ get currentProjectArtifactDir() {
40
+ return path_1.default.resolve(this.projectRoot, this.scryptBasePath, '..');
41
+ }
42
+ relink(currentScryptFilePath) {
43
+ const relinkedFilePath = this.getRelinkedFilePath(currentScryptFilePath);
44
+ console.log(`relink ${currentScryptFilePath} to ${relinkedFilePath}`);
45
+ // parse import expressions in the .scrypt.tpl file;
46
+ const fileContent = fs_1.default.readFileSync(currentScryptFilePath, 'utf-8');
47
+ const { importExpressions, exportSymbols, usedSymbols } = scryptParser_1.ScryptFileParser.parseScryptFile(fileContent);
48
+ // relink the dependencies first;
49
+ if (importExpressions.length > 0) {
50
+ this.relinkDeps(currentScryptFilePath, importExpressions);
51
+ }
52
+ // generate a new .scrypt file content;
53
+ let relinkedFileContent = '';
54
+ // replace import paths;
55
+ importExpressions.sort((a, b) => a.index - b.index);
56
+ let lastIndex = 0;
57
+ for (const importExpression of importExpressions) {
58
+ const newImportPath = importExpression.importPath;
59
+ const absolutePath = Utils.toAbsolutePath(newImportPath, currentScryptFilePath);
60
+ const dep = this.fileMap.get(absolutePath);
61
+ if (!dep) {
62
+ throw new Error(`Dependency ${absolutePath} not found`);
63
+ }
64
+ relinkedFileContent += fileContent.slice(lastIndex, importExpression.index);
65
+ const rewritePath = Utils.convertToPosixPath(path_1.default.relative(path_1.default.dirname(relinkedFilePath), dep.relinkedFilePath));
66
+ relinkedFileContent += importExpression.expression.replace(importExpression.importPath, rewritePath);
67
+ lastIndex = importExpression.index + importExpression.expression.length;
68
+ }
69
+ relinkedFileContent += '\n\n';
70
+ // rename symbols
71
+ let renamedSymbols = [
72
+ ...exportSymbols,
73
+ ...usedSymbols.exportedSymbols,
74
+ ...usedSymbols.importedSymbols,
75
+ ];
76
+ renamedSymbols.sort((a, b) => a.index - b.index);
77
+ renamedSymbols = renamedSymbols.filter((0, utils_1.removeDuplicateFilter)((a, b) => a.index === b.index));
78
+ const packageInfo = Utils.getFilePackageInfo(currentScryptFilePath);
79
+ const currentParsedFile = {
80
+ importExpressions,
81
+ exportSymbols,
82
+ originFilePath: currentScryptFilePath,
83
+ relinkedFilePath: this.getRelinkedFilePath(currentScryptFilePath),
84
+ packageName: packageInfo.packageName,
85
+ packageVersion: packageInfo.packageVersion,
86
+ };
87
+ for (const symbol of renamedSymbols) {
88
+ if ((0, utils_1.arrayIncludes)(exportSymbols, symbol, (a, b) => a.value === b.value)) {
89
+ // rename exported symbol
90
+ relinkedFileContent += fileContent.slice(lastIndex, symbol.index);
91
+ const renamedSymbol = Utils.getRenamedSymbol(symbol.value, currentParsedFile);
92
+ relinkedFileContent += renamedSymbol;
93
+ lastIndex = symbol.index + symbol.value.length;
94
+ }
95
+ else {
96
+ // rename imported symbol
97
+ relinkedFileContent += fileContent.slice(lastIndex, symbol.index);
98
+ const sourceFile = this.findImportedSymobleSource(symbol.value, currentScryptFilePath, currentParsedFile.importExpressions);
99
+ if (!sourceFile) {
100
+ throw new Error(`Imported symbol ${symbol.value} not found in all imported files`);
101
+ }
102
+ const renamedSymbol = Utils.getRenamedSymbol(symbol.value, sourceFile);
103
+ relinkedFileContent += renamedSymbol;
104
+ lastIndex = symbol.index + symbol.value.length;
105
+ }
106
+ }
107
+ relinkedFileContent += fileContent.slice(lastIndex);
108
+ // write to the artifacts directory;
109
+ Utils.writeFile(relinkedFilePath, relinkedFileContent);
110
+ this.fileMap.set(currentScryptFilePath, {
111
+ importExpressions,
112
+ exportSymbols,
113
+ originFilePath: currentScryptFilePath,
114
+ relinkedFilePath,
115
+ packageName: packageInfo.packageName,
116
+ packageVersion: packageInfo.packageVersion,
117
+ });
118
+ }
119
+ relinkDeps(parentFile, importExpressions) {
120
+ // for each import expression, do relink;
121
+ for (const importExpression of importExpressions) {
122
+ const importPath = importExpression.importPath;
123
+ const absolutePath = Utils.toAbsolutePath(importPath, parentFile);
124
+ if (this.fileMap.has(absolutePath)) {
125
+ continue;
126
+ }
127
+ this.relink(absolutePath);
128
+ }
129
+ }
130
+ findImportedSymobleSource(symbol, currentScryptFilePath, importExpressions) {
131
+ for (const importExpression of importExpressions) {
132
+ const absolutePath = Utils.toAbsolutePath(importExpression.importPath, currentScryptFilePath);
133
+ const dep = this.fileMap.get(absolutePath);
134
+ if (!dep) {
135
+ throw new Error(`Dependency ${absolutePath} not found`);
136
+ }
137
+ if ((0, utils_1.arrayIncludes)(dep.exportSymbols, symbol, (a, b) => a.value === b)) {
138
+ return dep;
139
+ }
140
+ }
141
+ return null;
142
+ }
143
+ /**
144
+ * get the relinked file path by the absolute scrypt.tpl file path;
145
+ * @param absoluteScryptFilePath absolute scrypt.tpl file path
146
+ * @returns relinked file path
147
+ */
148
+ getRelinkedFilePath(absoluteScryptFilePath) {
149
+ // file struct:
150
+ const currentProjectTemplateDir = path_1.default.resolve(this.projectRoot, this.scryptBasePath);
151
+ const currentProjectArtifactDir = path_1.default.resolve(this.projectRoot, this.scryptBasePath, '..');
152
+ // file is under the current project template directory, the relinked file is under the current project artifacts directory;
153
+ if (absoluteScryptFilePath.startsWith(currentProjectTemplateDir)) {
154
+ return path_1.default.resolve(currentProjectArtifactDir, path_1.default.relative(currentProjectTemplateDir, this.removeTplExt(absoluteScryptFilePath)));
155
+ }
156
+ // file is under node_modules, the relinked file is under the currentProject/artifacts/.node_modules/packageName/.../relinkedFile;
157
+ // use `.node_modules` instead of `node_modules` to avoid module resolution error;
158
+ let relativePath = path_1.default.relative(this.projectRoot, absoluteScryptFilePath);
159
+ relativePath = Utils.removeLeadingDot(Utils.removeFolder(relativePath, exports.TEMPLATE_FOLDER_NAME));
160
+ relativePath = this.removeTplExt(relativePath);
161
+ relativePath = relativePath.replace('node_modules', '.node_modules');
162
+ return path_1.default.resolve(this.projectRoot, this.currentProjectArtifactDir, relativePath);
163
+ }
164
+ /**
165
+ * remove the .tpl extension from the file path;
166
+ * @param filePath file path
167
+ * @returns
168
+ */
169
+ removeTplExt(filePath) {
170
+ if (filePath.endsWith(exports.TPL_FILE_EXTENSION)) {
171
+ return filePath.substring(0, filePath.length - exports.TPL_FILE_EXTENSION.length);
172
+ }
173
+ return filePath;
174
+ }
175
+ }
176
+ exports.Relinker = Relinker;
177
+ class Utils {
178
+ /**
179
+ * get the package info from the absolute file path;
180
+ * search the package.json file in the current directory and its parent directories;
181
+ * @param absoluteFilePath
182
+ * @returns
183
+ */
184
+ static getFilePackageInfo(absoluteFilePath) {
185
+ let dir = path_1.default.resolve(absoluteFilePath, '..');
186
+ while (true) {
187
+ if (fs_1.default.existsSync(path_1.default.resolve(dir, './package.json'))) {
188
+ const packageJson = JSON.parse(fs_1.default.readFileSync(path_1.default.resolve(dir, './package.json'), 'utf-8'));
189
+ return {
190
+ packageDir: dir,
191
+ packageName: packageJson.name,
192
+ packageVersion: packageJson.version,
193
+ };
194
+ }
195
+ const parentDir = path_1.default.resolve(dir, '..');
196
+ if (parentDir === dir) {
197
+ throw new Error(`Package info not found for ${absoluteFilePath}`);
198
+ }
199
+ dir = parentDir;
200
+ }
201
+ }
202
+ /**
203
+ * get the renamed symbol;
204
+ * @param symbol original symbol
205
+ * @param parsedFile parsed file
206
+ * @returns renamed symbol
207
+ */
208
+ static getRenamedSymbol(symbol, parsedFile) {
209
+ return `${parsedFile.packageName.replace(/\W/g, '_')}_${parsedFile.packageVersion.replace(/\W/g, '_')}${exports.RENAME_SYMBOL_SEP}${symbol}`;
210
+ }
211
+ /**
212
+ * convert the import relative path to the absolute path;
213
+ * @param importPath
214
+ * @param baseFileAbsolutePath
215
+ * @returns
216
+ */
217
+ static toAbsolutePath(importPath, baseFileAbsolutePath) {
218
+ // relative path
219
+ if (importPath.startsWith('.')) {
220
+ return path_1.default.resolve(baseFileAbsolutePath, '..', importPath);
221
+ }
222
+ // npm package
223
+ const { pkgName, file } = this.parseNpmPkgFile(importPath);
224
+ const pkgRoot = this.findPackageRoot(pkgName, baseFileAbsolutePath);
225
+ return path_1.default.resolve(pkgRoot, file);
226
+ }
227
+ /**
228
+ * find the package root by the package name and the parent file that contains the import expression;
229
+ * @param pkgName package name
230
+ * @param baseFilePath parent file that contains the import expression
231
+ * @returns package root, that contains the package.json file
232
+ */
233
+ static findPackageRoot(pkgName, baseFilePath) {
234
+ let mainFile;
235
+ try {
236
+ mainFile = (0, mlly_1.resolvePathSync)(pkgName, { url: baseFilePath });
237
+ }
238
+ catch (error) {
239
+ error.message = `findPackageRoot failed: ` + error.message;
240
+ throw error;
241
+ }
242
+ let dir = path_1.default.dirname(mainFile);
243
+ while (true) {
244
+ if (fs_1.default.existsSync(path_1.default.resolve(dir, 'package.json'))) {
245
+ return dir;
246
+ }
247
+ const parentDir = path_1.default.resolve(dir, '..');
248
+ if (parentDir === dir) {
249
+ throw new Error(`Package root not found for ${pkgName}`);
250
+ }
251
+ dir = parentDir;
252
+ }
253
+ }
254
+ /**
255
+ * parse the npm package file path by a import path;
256
+ * @param filePath import path
257
+ * @returns package name and the rest relative file path
258
+ */
259
+ static parseNpmPkgFile(filePath) {
260
+ const parts = filePath.split('/');
261
+ let pkgName = parts[0];
262
+ if (pkgName.startsWith('@')) {
263
+ pkgName = pkgName + '/' + parts[1];
264
+ }
265
+ let file = filePath.substring(pkgName.length);
266
+ if (file.startsWith('/')) {
267
+ file = '.' + file;
268
+ }
269
+ return {
270
+ pkgName,
271
+ file,
272
+ };
273
+ }
274
+ /**
275
+ * write the content to the file; create the directory if not exists;
276
+ * @param filePath
277
+ * @param content
278
+ */
279
+ static writeFile(filePath, content) {
280
+ const dirPath = path_1.default.dirname(filePath);
281
+ if (!fs_1.default.existsSync(dirPath)) {
282
+ fs_1.default.mkdirSync(dirPath, { recursive: true });
283
+ }
284
+ fs_1.default.writeFileSync(filePath, content);
285
+ }
286
+ /**
287
+ * remove the leading dot from the relative file path;
288
+ * for example: ../../node_modules/xxx/yyy.zz -> node_modules/xxx/yyy.zz
289
+ * @param relativeFilePath relative file path
290
+ * @returns
291
+ */
292
+ static removeLeadingDot(relativeFilePath) {
293
+ const normalized = path_1.default.normalize(relativeFilePath);
294
+ const parts = normalized.split(path_1.default.sep).filter((part) => part != '..');
295
+ return path_1.default.join(...parts);
296
+ }
297
+ /**
298
+ * remove the folder from the file path;
299
+ *
300
+ * for example: (filePath = node_modules/xxx/yyy.zz, folderName = xxx) -> node_modules/yyy.zz
301
+ *
302
+ * @param filePath file path
303
+ * @param folderName folder name
304
+ * @returns
305
+ */
306
+ static removeFolder(filePath, folderName) {
307
+ const normalized = path_1.default.normalize(filePath);
308
+ const parts = normalized.split(path_1.default.sep).filter((part) => part !== folderName);
309
+ return path_1.default.join(...parts);
310
+ }
311
+ /**
312
+ * convert the file path to the posix path;
313
+ * for example: xxx\yyy.zz -> xxx/yyy.zz
314
+ * @param filePath file path
315
+ * @returns
316
+ */
317
+ static convertToPosixPath(filePath) {
318
+ return filePath.replaceAll(path_1.default.sep, path_1.default.posix.sep);
319
+ }
320
+ }
321
+ //# sourceMappingURL=relinker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relinker.js","sourceRoot":"","sources":["../src/relinker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { AliasEntity, ContractEntity, LibraryEntity, StaticEntity, StructEntity, TypeResolver } from '@opcat-labs/scrypt-ts-opcat';
2
+ export declare function buildTypeResolver(contract: string, alias: AliasEntity[], structs: StructEntity[], library: LibraryEntity[], contracts?: ContractEntity[], statics?: StaticEntity[]): TypeResolver;
3
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,cAAc,EAEd,aAAa,EACb,YAAY,EACZ,YAAY,EAGZ,YAAY,EACb,MAAM,6BAA6B,CAAC;AAGrC,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,EAAE,EACpB,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,aAAa,EAAE,EACxB,SAAS,GAAE,cAAc,EAAO,EAChC,OAAO,GAAE,YAAY,EAAO,GAC3B,YAAY,CAqHd"}