@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,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"}