UNPKG

4.73 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const tslib_1 = require("tslib");
4const ts_utils_1 = require("@neo-one/ts-utils");
5const typescript_1 = tslib_1.__importDefault(require("typescript"));
6const createContext_1 = require("./createContext");
7exports.scan = async (dir) => {
8 const context = await createContext_1.createContextForDir(dir);
9 const smartContract = ts_utils_1.tsUtils.symbol.getDeclarations(context.libs.SmartContract)[0];
10 if (!typescript_1.default.isClassDeclaration(smartContract)) {
11 throw new Error('Something went wrong!');
12 }
13 return ts_utils_1.tsUtils.class_.getDerivedClasses(context.program, context.languageService, smartContract).reduce((acc, derived) => {
14 if (!ts_utils_1.tsUtils.modifier.isAbstract(derived)) {
15 const file = ts_utils_1.tsUtils.file.getFilePath(ts_utils_1.tsUtils.node.getSourceFile(derived));
16 const name = ts_utils_1.tsUtils.node.getNameOrThrow(derived);
17 const files = acc[file];
18 return Object.assign({}, acc, { [file]: files === undefined ? [name] : files.concat([name]) });
19 }
20 return acc;
21 }, {});
22};
23
24//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjYW4udHMiXSwibmFtZXMiOlsic2NhbiIsImRpciIsImNvbnRleHQiLCJjcmVhdGVDb250ZXh0Rm9yRGlyIiwic21hcnRDb250cmFjdCIsInRzVXRpbHMiLCJzeW1ib2wiLCJnZXREZWNsYXJhdGlvbnMiLCJsaWJzIiwiU21hcnRDb250cmFjdCIsInRzIiwiaXNDbGFzc0RlY2xhcmF0aW9uIiwiRXJyb3IiLCJjbGFzc18iLCJnZXREZXJpdmVkQ2xhc3NlcyIsInByb2dyYW0iLCJsYW5ndWFnZVNlcnZpY2UiLCJyZWR1Y2UiLCJhY2MiLCJkZXJpdmVkIiwibW9kaWZpZXIiLCJpc0Fic3RyYWN0IiwiZmlsZSIsImdldEZpbGVQYXRoIiwibm9kZSIsImdldFNvdXJjZUZpbGUiLCJuYW1lIiwiZ2V0TmFtZU9yVGhyb3ciLCJmaWxlcyIsInVuZGVmaW5lZCIsImNvbmNhdCJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQUE7QUFDQSxvRUFBQTtBQUNBLG1EQUFBO0FBSWFBLFFBQUFBLElBQUksR0FBRyxLQUFBLEVBQU9DLEdBQVAsRUFBQSxFQUFBO0lBQ2xCLE1BQU1DLE9BQU8sR0FBRyxNQUFNQyxtQ0FBbUIsQ0FBQ0YsR0FBRCxDQUF6QyxDQUFBO0lBQ0EsTUFBTUcsYUFBYSxHQUFHQyxrQkFBTyxDQUFDQyxNQUFSLENBQWVDLGVBQWYsQ0FBK0JMLE9BQU8sQ0FBQ00sSUFBUixDQUFhQyxhQUE1QyxDQUFBLENBQTJELENBQTNELENBQXRCLENBQUE7SUFDQSxJQUFJLENBQUNDLG9CQUFFLENBQUNDLGtCQUFILENBQXNCUCxhQUF0QixDQUFMLEVBQTJDO1FBQ3pDLE1BQU0sSUFBSVEsS0FBSixDQUFVLHVCQUFWLENBQU4sQ0FBQTtLQUNEO0lBRUQsT0FBT1Asa0JBQU8sQ0FBQ1EsTUFBUixDQUNKQyxpQkFESSxDQUNjWixPQUFPLENBQUNhLE9BRHRCLEVBQytCYixPQUFPLENBQUNjLGVBRHZDLEVBQ3dEWixhQUR4RCxDQUFBLENBRUphLE1BQU0sQ0FBWSxDQUFDQyxHQUFELEVBQU1DLE9BQU4sRUFBQSxFQUFBO1FBQ2pCLElBQUksQ0FBQ2Qsa0JBQU8sQ0FBQ2UsUUFBUixDQUFpQkMsVUFBakIsQ0FBNEJGLE9BQTVCLENBQUwsRUFBMkM7WUFDekMsTUFBTUcsSUFBSSxHQUFHakIsa0JBQU8sQ0FBQ2lCLElBQVIsQ0FBYUMsV0FBYixDQUF5QmxCLGtCQUFPLENBQUNtQixJQUFSLENBQWFDLGFBQWIsQ0FBMkJOLE9BQTNCLENBQXpCLENBQWIsQ0FBQTtZQUNBLE1BQU1PLElBQUksR0FBR3JCLGtCQUFPLENBQUNtQixJQUFSLENBQWFHLGNBQWIsQ0FBNEJSLE9BQTVCLENBQWIsQ0FBQTtZQUNBLE1BQU1TLEtBQUssR0FBR1YsR0FBRyxDQUFDSSxJQUFELENBQWpCLENBQUE7WUFFQSx5QkFDS0osR0FERSxJQUVMLENBQUNJLElBQUQsQ0FBQSxFQUFRTSxLQUFLLEtBQUtDLFNBQVYsQ0FBQSxDQUFBLENBQXNCLENBQUNILElBQUQsQ0FBdEIsQ0FBQSxDQUFBLENBQStCRSxLQUFLLENBQUNFLE1BQU4sQ0FBYSxDQUFDSixJQUFELENBQWIsQ0FBQSxJQUZ6QztTQUlEO1FBRUQsT0FBT1IsR0FBUCxDQUFBO0lBQ0QsQ0FmSSxFQWVGLEVBZkUsQ0FBUCxDQUFBO0FBZ0JELENBdkJNLENBQUEiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvc2Nhbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRzVXRpbHMgfSBmcm9tICdAbmVvLW9uZS90cy11dGlscyc7XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0Rm9yRGlyIH0gZnJvbSAnLi9jcmVhdGVDb250ZXh0JztcblxuZXhwb3J0IHR5cGUgQ29udHJhY3RzID0geyBbSyBpbiBzdHJpbmddPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+IH07XG5cbmV4cG9ydCBjb25zdCBzY2FuID0gYXN5bmMgKGRpcjogc3RyaW5nKTogUHJvbWlzZTxDb250cmFjdHM+ID0+IHtcbiAgY29uc3QgY29udGV4dCA9IGF3YWl0IGNyZWF0ZUNvbnRleHRGb3JEaXIoZGlyKTtcbiAgY29uc3Qgc21hcnRDb250cmFjdCA9IHRzVXRpbHMuc3ltYm9sLmdldERlY2xhcmF0aW9ucyhjb250ZXh0LmxpYnMuU21hcnRDb250cmFjdClbMF07XG4gIGlmICghdHMuaXNDbGFzc0RlY2xhcmF0aW9uKHNtYXJ0Q29udHJhY3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTb21ldGhpbmcgd2VudCB3cm9uZyEnKTtcbiAgfVxuXG4gIHJldHVybiB0c1V0aWxzLmNsYXNzX1xuICAgIC5nZXREZXJpdmVkQ2xhc3Nlcyhjb250ZXh0LnByb2dyYW0sIGNvbnRleHQubGFuZ3VhZ2VTZXJ2aWNlLCBzbWFydENvbnRyYWN0KVxuICAgIC5yZWR1Y2U8Q29udHJhY3RzPigoYWNjLCBkZXJpdmVkKSA9PiB7XG4gICAgICBpZiAoIXRzVXRpbHMubW9kaWZpZXIuaXNBYnN0cmFjdChkZXJpdmVkKSkge1xuICAgICAgICBjb25zdCBmaWxlID0gdHNVdGlscy5maWxlLmdldEZpbGVQYXRoKHRzVXRpbHMubm9kZS5nZXRTb3VyY2VGaWxlKGRlcml2ZWQpKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IHRzVXRpbHMubm9kZS5nZXROYW1lT3JUaHJvdyhkZXJpdmVkKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhY2NbZmlsZV07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgW2ZpbGVdOiBmaWxlcyA9PT0gdW5kZWZpbmVkID8gW25hbWVdIDogZmlsZXMuY29uY2F0KFtuYW1lXSksXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xufTtcbiJdfQ==