@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.
- package/dist/compile/compilerWrapper.d.ts +203 -0
- package/dist/compile/compilerWrapper.d.ts.map +1 -0
- package/dist/compile/compilerWrapper.js +1019 -0
- package/dist/compile/compilerWrapper.js.map +1 -0
- package/dist/compile/findCompiler.d.ts +3 -0
- package/dist/compile/findCompiler.d.ts.map +1 -0
- package/dist/compile/findCompiler.js +102 -0
- package/dist/compile/findCompiler.js.map +1 -0
- package/dist/compile/getBinary.d.ts +3 -0
- package/dist/compile/getBinary.d.ts.map +1 -0
- package/dist/compile/getBinary.js +94 -0
- package/dist/compile/getBinary.js.map +1 -0
- package/dist/debug.d.ts +25 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +110 -0
- package/dist/debug.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +110 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer.d.ts +52 -0
- package/dist/indexer.d.ts.map +1 -0
- package/dist/indexer.js +189 -0
- package/dist/indexer.js.map +1 -0
- package/dist/relinker.d.ts +44 -0
- package/dist/relinker.d.ts.map +1 -0
- package/dist/relinker.js +321 -0
- package/dist/relinker.js.map +1 -0
- package/dist/resolver.d.ts +3 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +280 -0
- package/dist/resolver.js.map +1 -0
- package/dist/scryptParser.d.ts +31 -0
- package/dist/scryptParser.d.ts.map +1 -0
- package/dist/scryptParser.js +372 -0
- package/dist/scryptParser.js.map +1 -0
- package/dist/snippets.d.ts +39 -0
- package/dist/snippets.d.ts.map +1 -0
- package/dist/snippets.js +54 -0
- package/dist/snippets.js.map +1 -0
- package/dist/transpiler.d.ts +314 -0
- package/dist/transpiler.d.ts.map +1 -0
- package/dist/transpiler.js +4239 -0
- package/dist/transpiler.js.map +1 -0
- package/dist/types.d.ts +33 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +31 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +23 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +352 -0
- package/dist/utils.js.map +1 -0
- package/package.json +43 -0
package/dist/resolver.js
ADDED
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildTypeResolver = void 0;
|
|
4
|
+
const scrypt_ts_opcat_1 = require("@opcat-labs/scrypt-ts-opcat");
|
|
5
|
+
// build a resolver witch can only resolve type
|
|
6
|
+
function buildTypeResolver(contract, alias, structs, library, contracts = [], statics = []) {
|
|
7
|
+
const resolvedTypes = {};
|
|
8
|
+
structs.forEach((element) => {
|
|
9
|
+
resolvedTypes[element.name] = {
|
|
10
|
+
info: element,
|
|
11
|
+
generic: hasGeneric(element),
|
|
12
|
+
finalType: element.name,
|
|
13
|
+
symbolType: scrypt_ts_opcat_1.SymbolType.Struct,
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
library.forEach((element) => {
|
|
17
|
+
resolvedTypes[element.name] = {
|
|
18
|
+
info: element,
|
|
19
|
+
generic: hasGeneric(element),
|
|
20
|
+
finalType: element.name,
|
|
21
|
+
symbolType: scrypt_ts_opcat_1.SymbolType.Library,
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
contracts.forEach((element) => {
|
|
25
|
+
resolvedTypes[element.name] = {
|
|
26
|
+
info: element,
|
|
27
|
+
generic: hasGeneric(element),
|
|
28
|
+
finalType: element.name,
|
|
29
|
+
symbolType: scrypt_ts_opcat_1.SymbolType.Contract,
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
// add std type
|
|
33
|
+
resolvedTypes['HashedMap'] = {
|
|
34
|
+
info: {
|
|
35
|
+
name: 'HashedMap',
|
|
36
|
+
params: [
|
|
37
|
+
{
|
|
38
|
+
name: '_data',
|
|
39
|
+
type: 'bytes',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
properties: [
|
|
43
|
+
{
|
|
44
|
+
name: '_data',
|
|
45
|
+
type: 'bytes',
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
genericTypes: ['K', 'V'],
|
|
49
|
+
},
|
|
50
|
+
generic: true,
|
|
51
|
+
finalType: 'HashedMap',
|
|
52
|
+
symbolType: scrypt_ts_opcat_1.SymbolType.Library,
|
|
53
|
+
};
|
|
54
|
+
resolvedTypes['HashedSet'] = {
|
|
55
|
+
info: {
|
|
56
|
+
name: 'HashedSet',
|
|
57
|
+
params: [
|
|
58
|
+
{
|
|
59
|
+
name: '_data',
|
|
60
|
+
type: 'bytes',
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
properties: [
|
|
64
|
+
{
|
|
65
|
+
name: '_data',
|
|
66
|
+
type: 'bytes',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
genericTypes: ['E'],
|
|
70
|
+
},
|
|
71
|
+
generic: true,
|
|
72
|
+
finalType: 'HashedSet',
|
|
73
|
+
symbolType: scrypt_ts_opcat_1.SymbolType.Library,
|
|
74
|
+
};
|
|
75
|
+
resolvedTypes['SortedItem'] = {
|
|
76
|
+
info: {
|
|
77
|
+
name: 'SortedItem',
|
|
78
|
+
params: [
|
|
79
|
+
{
|
|
80
|
+
name: 'item',
|
|
81
|
+
type: 'T',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'idx',
|
|
85
|
+
type: 'int',
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
genericTypes: ['T'],
|
|
89
|
+
},
|
|
90
|
+
generic: true,
|
|
91
|
+
finalType: 'SortedItem',
|
|
92
|
+
symbolType: scrypt_ts_opcat_1.SymbolType.Struct,
|
|
93
|
+
};
|
|
94
|
+
resolvedTypes['PubKeyHash'] = {
|
|
95
|
+
finalType: 'Ripemd160',
|
|
96
|
+
generic: false,
|
|
97
|
+
symbolType: scrypt_ts_opcat_1.SymbolType.ScryptType,
|
|
98
|
+
};
|
|
99
|
+
const resolver = (type) => {
|
|
100
|
+
if (resolvedTypes[type]) {
|
|
101
|
+
return resolvedTypes[type];
|
|
102
|
+
}
|
|
103
|
+
if ((0, scrypt_ts_opcat_1.isScryptType)(type)) {
|
|
104
|
+
return {
|
|
105
|
+
generic: false,
|
|
106
|
+
finalType: type,
|
|
107
|
+
symbolType: scrypt_ts_opcat_1.SymbolType.ScryptType,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return resolveType(type, resolvedTypes, contract, statics, alias, library);
|
|
111
|
+
};
|
|
112
|
+
return resolver;
|
|
113
|
+
}
|
|
114
|
+
exports.buildTypeResolver = buildTypeResolver;
|
|
115
|
+
function resolveAlias(alias, type) {
|
|
116
|
+
const a = alias.find((a) => {
|
|
117
|
+
return a.name === type;
|
|
118
|
+
});
|
|
119
|
+
if (a) {
|
|
120
|
+
return resolveAlias(alias, a.type);
|
|
121
|
+
}
|
|
122
|
+
return type;
|
|
123
|
+
}
|
|
124
|
+
function isArrayType(type) {
|
|
125
|
+
return /^(.+)(\[[\w.]+\])+$/.test(type);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* return eg. int[N][N][4] => ['int', ["N","N","4"]]
|
|
129
|
+
* @param arrayTypeName
|
|
130
|
+
*/
|
|
131
|
+
function arrayTypeAndSizeStr(arrayTypeName) {
|
|
132
|
+
const arraySizes = [];
|
|
133
|
+
if (arrayTypeName.indexOf('>') > -1) {
|
|
134
|
+
const elemTypeName = arrayTypeName.substring(0, arrayTypeName.lastIndexOf('>') + 1);
|
|
135
|
+
const sizeParts = arrayTypeName.substring(arrayTypeName.lastIndexOf('>') + 1);
|
|
136
|
+
[...sizeParts.matchAll(/\[([\w.]+)\]+/g)].map((match) => {
|
|
137
|
+
arraySizes.push(match[1]);
|
|
138
|
+
});
|
|
139
|
+
return [elemTypeName, arraySizes];
|
|
140
|
+
}
|
|
141
|
+
[...arrayTypeName.matchAll(/\[([\w.]+)\]+/g)].map((match) => {
|
|
142
|
+
arraySizes.push(match[1]);
|
|
143
|
+
});
|
|
144
|
+
const group = arrayTypeName.split('[');
|
|
145
|
+
const elemTypeName = group[0];
|
|
146
|
+
return [elemTypeName, arraySizes];
|
|
147
|
+
}
|
|
148
|
+
function toLiteralArrayType(elemTypeName, sizes) {
|
|
149
|
+
return [elemTypeName, sizes.map((size) => `[${size}]`).join('')].join('');
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* check if a type is generic type
|
|
153
|
+
* @param type
|
|
154
|
+
* @returns
|
|
155
|
+
*/
|
|
156
|
+
function isGenericType(type) {
|
|
157
|
+
return /^([\w]+)<([\w,[\]\s<>]+)>$/.test(type);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
*
|
|
161
|
+
* @param type eg. HashedMap<int,int>
|
|
162
|
+
* @param eg. ["HashedMap", ["int", "int"]}] An array generic types returned by @getGenericDeclaration
|
|
163
|
+
* @returns {"K": "int", "V": "int"}
|
|
164
|
+
*/
|
|
165
|
+
function parseGenericType(type) {
|
|
166
|
+
if (isGenericType(type)) {
|
|
167
|
+
const m = type.match(/([\w]+)<([\w,[\]<>\s]+)>$/);
|
|
168
|
+
if (m) {
|
|
169
|
+
const library = m[1];
|
|
170
|
+
const realTypes = [];
|
|
171
|
+
const brackets = [];
|
|
172
|
+
let tmpType = '';
|
|
173
|
+
for (let i = 0; i < m[2].length; i++) {
|
|
174
|
+
const ch = m[2].charAt(i);
|
|
175
|
+
if (ch === '<' || ch === '[') {
|
|
176
|
+
brackets.push(ch);
|
|
177
|
+
}
|
|
178
|
+
else if (ch === '>' || ch === ']') {
|
|
179
|
+
brackets.pop();
|
|
180
|
+
}
|
|
181
|
+
else if (ch === ',') {
|
|
182
|
+
if (brackets.length === 0) {
|
|
183
|
+
realTypes.push(tmpType.trim());
|
|
184
|
+
tmpType = '';
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
tmpType += ch;
|
|
189
|
+
}
|
|
190
|
+
realTypes.push(tmpType.trim());
|
|
191
|
+
return [library, realTypes];
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
throw new Error(`"${type}" is not generic type`);
|
|
195
|
+
}
|
|
196
|
+
function resolveConstStatic(contract, type, statics) {
|
|
197
|
+
if (isArrayType(type)) {
|
|
198
|
+
const [elemTypeName, arraySizes] = arrayTypeAndSizeStr(type);
|
|
199
|
+
const sizes = arraySizes.map((size) => {
|
|
200
|
+
if (/^(\d)+$/.test(size)) {
|
|
201
|
+
return parseInt(size);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
// size as a static const
|
|
205
|
+
const size_ = size.indexOf('.') > 0 ? size : `${contract}.${size}`;
|
|
206
|
+
const value = findConstStatic(statics, size_);
|
|
207
|
+
if (!value) {
|
|
208
|
+
// Unable to solve when the subscript of the array is a function parameter, [CTC](https://scryptdoc.readthedocs.io/en/latest/ctc.html)
|
|
209
|
+
return size;
|
|
210
|
+
}
|
|
211
|
+
return value.value;
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
return toLiteralArrayType(elemTypeName, sizes);
|
|
215
|
+
}
|
|
216
|
+
return type;
|
|
217
|
+
}
|
|
218
|
+
function toGenericType(name, genericTypes) {
|
|
219
|
+
return `${name}<${genericTypes.join(',')}>`;
|
|
220
|
+
}
|
|
221
|
+
function findConstStatic(statics, name) {
|
|
222
|
+
return statics.find((s) => {
|
|
223
|
+
return s.const === true && s.name === name;
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
function resolveType(type, originTypes, contract, statics, alias, librarys) {
|
|
227
|
+
type = resolveAlias(alias, type);
|
|
228
|
+
if (isArrayType(type)) {
|
|
229
|
+
const [elemTypeName, sizes] = arrayTypeAndSizeStr(type);
|
|
230
|
+
const elemTypeInfo = resolveType(elemTypeName, originTypes, contract, statics, alias, librarys);
|
|
231
|
+
if (isArrayType(elemTypeInfo.finalType)) {
|
|
232
|
+
const [elemTypeName_, sizes_] = arrayTypeAndSizeStr(elemTypeInfo.finalType);
|
|
233
|
+
const elemTypeInfo_ = resolveType(elemTypeName_, originTypes, contract, statics, alias, librarys);
|
|
234
|
+
return {
|
|
235
|
+
info: elemTypeInfo.info,
|
|
236
|
+
generic: elemTypeInfo.generic,
|
|
237
|
+
finalType: resolveConstStatic(contract, toLiteralArrayType(elemTypeInfo_.finalType, sizes.concat(sizes_)), statics),
|
|
238
|
+
symbolType: elemTypeInfo.symbolType,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
return {
|
|
242
|
+
info: elemTypeInfo.info,
|
|
243
|
+
generic: elemTypeInfo.generic,
|
|
244
|
+
finalType: resolveConstStatic(contract, toLiteralArrayType(elemTypeInfo.finalType, sizes), statics),
|
|
245
|
+
symbolType: elemTypeInfo.symbolType,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
else if (isGenericType(type)) {
|
|
249
|
+
const [name, genericTypes] = parseGenericType(type);
|
|
250
|
+
const typeInfo = resolveType(name, originTypes, contract, statics, alias, librarys);
|
|
251
|
+
const gts = genericTypes.map((t) => resolveType(t, originTypes, contract, statics, alias, librarys).finalType);
|
|
252
|
+
return {
|
|
253
|
+
info: typeInfo.info,
|
|
254
|
+
generic: true,
|
|
255
|
+
finalType: toGenericType(typeInfo.finalType, gts),
|
|
256
|
+
symbolType: typeInfo.symbolType,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
if (originTypes[type]) {
|
|
260
|
+
return originTypes[type];
|
|
261
|
+
}
|
|
262
|
+
else if ((0, scrypt_ts_opcat_1.isScryptType)(type)) {
|
|
263
|
+
return {
|
|
264
|
+
finalType: type,
|
|
265
|
+
generic: false,
|
|
266
|
+
symbolType: scrypt_ts_opcat_1.SymbolType.ScryptType,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
return {
|
|
271
|
+
finalType: type,
|
|
272
|
+
generic: false,
|
|
273
|
+
symbolType: scrypt_ts_opcat_1.SymbolType.Unknown,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
function hasGeneric(entity) {
|
|
278
|
+
return entity.genericTypes.length > 0;
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type ImportExpression = {
|
|
2
|
+
expression: string;
|
|
3
|
+
importPath: string;
|
|
4
|
+
index: number;
|
|
5
|
+
};
|
|
6
|
+
export type Symbol = {
|
|
7
|
+
value: string;
|
|
8
|
+
index: number;
|
|
9
|
+
};
|
|
10
|
+
export type ExportSymbol = Symbol & {
|
|
11
|
+
type: 'struct' | 'library' | 'contract';
|
|
12
|
+
};
|
|
13
|
+
export declare const buildinSymbols: string[];
|
|
14
|
+
export declare class ScryptFileParser {
|
|
15
|
+
static parseScryptFile(fileContent: string): {
|
|
16
|
+
importExpressions: ImportExpression[];
|
|
17
|
+
exportSymbols: ExportSymbol[];
|
|
18
|
+
usedSymbols: {
|
|
19
|
+
exportedSymbols: Symbol[];
|
|
20
|
+
importedSymbols: Symbol[];
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
static parseUsedSymbols(fileContent: string, exportSymbols: ExportSymbol[]): {
|
|
24
|
+
exportedSymbols: Symbol[];
|
|
25
|
+
importedSymbols: Symbol[];
|
|
26
|
+
};
|
|
27
|
+
static parseImportExpression(fileContent: string): ImportExpression[];
|
|
28
|
+
static parseExportSymbols(fileContent: string): ExportSymbol[];
|
|
29
|
+
static verifyParseResult(filePath: string): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=scryptParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scryptParser.d.ts","sourceRoot":"","sources":["../src/scryptParser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG;IAClC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,cAAc,UA+E1B,CAAC;AAEF,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM;;;;;;;;IAkB1C,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE;;;;IAoM1E,MAAM,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAwBrE,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE;IAqD9D,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM;CAmD1C"}
|