archunit
Version:
ArchUnit TypeScript is an architecture testing library, to specify and assert architecture rules in your TypeScript app
48 lines • 2.31 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.determineImportKinds = void 0;
const typescript_1 = __importDefault(require("typescript"));
const import_kinds_1 = require("./import-kinds");
/**
*
*
* | `ImportKind` | Example | Explanation |
* | ------------- | ---------------------------------------------- | -------------------------------------------------------------- |
* | `VALUE` | `import { something } from './module';` | A runtime import (default behavior if not `type`). |
* | `TYPE` | `import type { SomeType } from './types';` | A compile-time-only import (used for TypeScript types). |
* | `DEFAULT` | `import React from 'react';` | A default import—grabs the default export from the module. |
* | `NAMED` | `import { useState, useEffect } from 'react';` | Named imports—specific exported bindings. |
* | `NAMESPACE` | `import * as React from 'react';` | Namespace import—imports the entire module as an object. |
* | `SIDE_EFFECT` | `import './setupGlobals';` | Side-effect-only import—executes the module but binds nothing. |
*
*/
const determineImportKinds = (x) => {
const clause = x.importClause;
if (!clause) {
return [];
}
const kinds = [];
if (clause.isTypeOnly) {
kinds.push(import_kinds_1.ImportKind.TYPE);
}
else {
kinds.push(import_kinds_1.ImportKind.VALUE);
}
if (clause.name) {
kinds.push(import_kinds_1.ImportKind.DEFAULT);
}
if (clause.namedBindings) {
if (typescript_1.default.isNamespaceImport(clause.namedBindings)) {
kinds.push(import_kinds_1.ImportKind.NAMESPACE);
}
else if (typescript_1.default.isNamedImports(clause.namedBindings)) {
kinds.push(import_kinds_1.ImportKind.NAMED);
}
}
return kinds;
};
exports.determineImportKinds = determineImportKinds;
//# sourceMappingURL=import-kinds-helper.js.map
;