Best JavaScript code snippet using ts-auto-mock
parser.js
Source:parser.js
1const {2 getDeclarationFromNode,3 getTypeDeclaration4} = require('./declarations');5const {getDeepDeclarations, typeDeclarationToTemplate} = require('./assembly');6const {declarationByType} = require('./utils');7const getTypesNames = (path, files) => (8 files[path]9 .filter(({type}) => type !== 'EmptyStatement')10 .filter(declarationByType('TypeAlias', 'ExportNamedDeclaration', 'DeclareFunction', 'DeclareClass', 'InterfaceDeclaration', 'DeclareInterface'))11 .map((node) => node.type === 'TypeAlias' || !node.declaration ? node : node.declaration)12 .map(getDeclarationFromNode)13 .map(({name, parametersCount}) => ({name, parametersCount}))14);15const getModules = (path, files) => files[path]16 .filter(declarationByType('DeclareModule'))17 .map((module) => ({18 path,19 name: module.id.value,20 typesIds: module.body.body21 .filter(({type}) => type !== 'EmptyStatement')22 .map((node) => getTypeIdFromNode(node.type === 'DeclareExportDeclaration' ? node : node.declaration || node))23 }));24const getTypeIdFromNode = (node) => {25 const {name, parametersCount} = getDeclarationFromNode(node);26 return {name, parametersCount};27};28const getModulesFiles = (files) => Object.entries(files)29 .filter(([path, file]) => file)30 .map(([path, file]) => [path, file.filter(({type}) => type === 'DeclareModule')])31 .filter(([path, file]) => file.length)32 .reduce((acc, [path, file]) => Object.assign(acc, file33 .filter(({type}) => type !== 'EmptyStatement')34 .filter((declaration) => declaration.type === 'DeclareModule')35 .reduce((modules, declaration) => Object.assign(36 modules,37 {38 [`${declaration.id.value}:${path}`]: declaration.body.body.map((node) => node.declaration || node)39 }40 ), {})41 ), {});42const getCommonFiles = (files) => Object.entries(files)43 .filter(([path, file]) => file)44 .map(([path, file]) => [path, file.filter(({type}) => type !== 'DeclareModule')])45 .reduce((acc, [path, file]) => Object.assign(acc,46 acc,47 {48 [path]: file49 .filter(({type}) => type !== 'EmptyStatement')50 }51 ), {});52const parse = (paths, files) => {53 const declarations = paths.map((path) => ({54 path,55 typesIds: getTypesNames(path, files),56 modules: getModules(path, files)57 })58 );59 const preparedFiles = Object.assign(getModulesFiles(files), getCommonFiles(files));60 const typesInPaths = declarations.filter(({typesIds}) => typesIds.length);61 const modulesInPaths = declarations.filter(({modules}) => modules.length);62 const allTypes = [63 ...typesInPaths64 .reduce((acc, {typesIds, path}) => [...acc, ...typesIds.map((typeId) => ({typeId, path}))], []),65 ...modulesInPaths66 .reduce((acc, file) => [67 ...acc,68 ...file.modules.reduce((types, {path, name, typesIds}) => [69 ...types,70 ...typesIds.map((typeId) => ({71 typeId,72 path: `${name}:${path}`73 }))74 ], [])75 ], [])76 ];77 const getDeclarationsForTypes = (typesIds, path) => typesIds.map((typeId) => {78 const typeDeclaration = getTypeDeclaration(79 typeId,80 path,81 preparedFiles82 );83 return typeDeclarationToTemplate(typeDeclaration, preparedFiles)84 });85 return {86 types: typesInPaths.reduce((acc, {typesIds, path}) => Object.assign(acc,87 {88 [path]: getDeclarationsForTypes(typesIds, path)89 }90 ), {}),91 modules: modulesInPaths.reduce((acc, {modules, name, path}) => Object.assign(92 acc,93 {94 [path]: modules.reduce((acc, {name, typesIds}) => Object.assign(95 acc,96 {97 [name]: getDeclarationsForTypes(typesIds, `${name}:${path}`)98 }99 ), {})100 }101 ), {}),102 declarations: allTypes.reduce((acc, {typeId, path}) => getDeepDeclarations(typeId, path, preparedFiles, acc), {})103 }104};...
declarations.js
Source:declarations.js
1const {2 declarationByType,3 specifierByLocalName4} = require('./utils');5const getDeclarationFromNode = (node) => {6 let declaration;7 let name;8 if (node.type === 'TypeAlias') {9 declaration = node;10 name = (declaration && declaration.right.type.id) || declaration.id.name;11 } else if (node.type === 'DeclareFunction') {12 declaration = node.id.typeAnnotation.typeAnnotation;13 name = node.id.name;14 } else if (node.type === 'TypeofTypeAnnotation') {15 declaration = node.argument;16 name = declaration.id.name;17 } else if (node.type === 'ImportDeclaration') {18 return {19 name: null,20 parametersCount: 0,21 declaration: null22 }23 } else if (node.type === 'DeclareModuleExports' || node.type === 'DeclareExportDeclaration') {24 name = 'default';25 declaration = node;26 } else {27 declaration = node.declaration || node;28 name = declaration && declaration.id ? (29 declaration.id.name30 ) : (31 declaration && declaration.right.type.id.name32 );33 }34 const parametersCount = declaration.typeParameters ?35 declaration.typeParameters.params.length : 0;36 return {name, parametersCount, declaration};37};38const declarationByTypeId = (typeId) => (node) => {39 const nodeId = getDeclarationFromNode(node);40 return typeId.name === nodeId.name41 && typeId.parametersCount === nodeId.parametersCount;42};43const getTypeDeclaration = (typeId, path, files) => {44 const fileASTNodeArray = files[path];45 if (!fileASTNodeArray) {46 return {47 path: '',48 key: null,49 id: typeId,50 declaration: null51 }52 }53 const localType = fileASTNodeArray.find(declarationByTypeId(typeId));54 if (!localType) {55 const imports = fileASTNodeArray.filter(declarationByType('ImportDeclaration'));56 const matchedImport = imports57 .find(({specifiers}) => specifiers58 .some(specifierByLocalName(typeId.name)));59 if (matchedImport) {60 const specifier = matchedImport.specifiers.find(specifierByLocalName(typeId.name));61 if (specifier) {62 return getTypeDeclaration(63 {64 name: specifier.imported.name,65 parametersCount: typeId.parametersCount66 },67 matchedImport.source.value,68 files69 );70 }71 }72 } else {73 const {name, declaration, parametersCount = typeId.parametersCount} = getDeclarationFromNode(localType);74 const key = `${name}:${parametersCount}:${path}`;75 return {76 path,77 key,78 id: {79 name: name || typeId.name,80 parametersCount81 },82 declaration83 };84 }85};86module.exports = {87 getDeclarationFromNode,88 getTypeDeclaration...
exports.ts
Source:exports.ts
1import * as ts from 'typescript';2import { getDeclarationFromNode, getParameterName, isDefaultExport } from '../helpers';3import { DeclVisitorContext } from '../types';4export function includeExports(context: DeclVisitorContext, key: string, symbol: ts.Symbol) {5 const defs = {};6 if (symbol) {7 context.checker.getExportsOfModule(symbol).forEach((exp) => {8 const decl = exp.valueDeclaration || exp.declarations?.[0];9 if (!decl) {10 // skip - not really defined11 } else if (ts.isExportSpecifier(decl)) {12 const name = decl.name?.text;13 if (name) {14 defs[name] = getDeclarationFromNode(context.checker, decl);15 }16 } else if (ts.isExportAssignment(decl)) {17 defs['default'] = getDeclarationFromNode(context.checker, decl);18 } else if (ts.isVariableDeclaration(decl)) {19 defs[getParameterName(decl.name)] = decl;20 } else if (21 ts.isFunctionDeclaration(decl) ||22 ts.isInterfaceDeclaration(decl) ||23 ts.isClassDeclaration(decl) ||24 ts.isTypeAliasDeclaration(decl) ||25 ts.isEnumDeclaration(decl)26 ) {27 const name = isDefaultExport(decl) ? 'default' : decl.name?.text;28 if (name) {29 defs[name] = decl;30 }31 } else if (ts.isMethodDeclaration(decl) || ts.isPropertyDeclaration(decl) || ts.isModuleDeclaration(decl)) {32 // skip - mostly from ambient modules33 } else if (ts.isImportEqualsDeclaration(decl)) {34 //skip - automatically "introduced"35 } else if (ts.isNamespaceExport(decl)) {36 defs[decl.name.text] = decl;37 } else {38 context.log.warn(`Skipping import of unknown node (kind: ${decl.kind}).`);39 }40 });41 }42 context.availableImports[key] = defs;...
Using AI Code Generation
1import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';2import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';3import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';4import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';5import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';6import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';
Using AI Code Generation
1import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';2import { GetMock } from 'ts-auto-mock/mock';3import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';4import { GetMock } from 'ts-auto-mock/mock';5import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';6import { GetMock } from 'ts-auto-mock/mock';7import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';8import { GetMock } from 'ts-auto-mock/mock';9import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';10import { GetMock } from 'ts-auto-mock/mock';11import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';12import { GetMock } from 'ts-auto-mock/mock';13import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';14import { GetMock } from 'ts-auto-mock/mock';15import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';16import { GetMock } from 'ts-auto-mock/mock';17import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';18import { GetMock } from 'ts-auto-mock/mock';19import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';20import { GetMock } from 'ts-auto-mock/mock';21import { GetDeclarationFromNode } from 'ts-auto-mock/declaration';22import { GetMock } from 'ts-auto-mock/mock';23import { GetDeclarationFromNode } from 'ts-auto-mock/
Using AI Code Generation
1import * as ts from 'typescript';2import { GetDeclarationFromNode } from 'ts-auto-mock';3const sourceFile = ts.createSourceFile(4 'export interface Test1 { a: number; b: string; }',5);6const declaration = GetDeclarationFromNode(sourceFile);7console.log(declaration);8import * as ts from 'typescript';9import { GetDeclarationFromNode } from 'ts-auto-mock';10const sourceFile = ts.createSourceFile(11 'export interface Test2 { a: number; b: string; }',12);13const declaration = GetDeclarationFromNode(sourceFile);14console.log(declaration);15import * as ts from 'typescript';16import { GetDeclarationFromNode } from 'ts-auto-mock';17const sourceFile = ts.createSourceFile(18 'export interface Test3 { a: number; b: string; }',19);20const declaration = GetDeclarationFromNode(sourceFile);21console.log(declaration);22import * as ts from 'typescript';23import { GetDeclarationFromNode } from 'ts-auto-mock';24const sourceFile = ts.createSourceFile(25 'export interface Test4 { a: number; b: string; }',26);27const declaration = GetDeclarationFromNode(sourceFile);28console.log(declaration);29import * as ts from 'typescript';30import
Using AI Code Generation
1import { GetDeclarationFromNode } from "ts-auto-mock/extension";2const sourceFile = ts.createSourceFile(3 `interface Test {4 name: string;5 age: number;6 }`,7);8const interfaceDeclaration = GetDeclarationFromNode(sourceFile, 'Test');9import { GetDeclarationFromNode } from "ts-auto-mock/extension";10const sourceFile = ts.createSourceFile(11 `interface Test {12 name: string;13 age: number;14 }`,15);16const interfaceDeclaration = GetDeclarationFromNode(sourceFile, 'Test');17import { GetDeclarationFromNode } from "ts-auto-mock/extension";18const sourceFile = ts.createSourceFile(19 `interface Test {20 name: string;21 age: number;22 }`,23);24const interfaceDeclaration = GetDeclarationFromNode(sourceFile, 'Test');25import { GetDeclarationFromNode } from "ts-auto-mock/extension";26const sourceFile = ts.createSourceFile(27 `interface Test {28 name: string;29 age: number;30 }`,31);32const interfaceDeclaration = GetDeclarationFromNode(sourceFile, 'Test');
Using AI Code Generation
1import { GetDeclarationFromNode } from 'ts-auto-mock/extension';2const node = ts.createSourceFile(3 import {MyClass} from './test2';4 const test: MyClass = {5 }6);7const declaration = GetDeclarationFromNode(node, node.getChildAt(1).getChildAt(1));8console.log(declaration);9import { GetDeclarationFromNode } from 'ts-auto-mock/extension';10const node = ts.createSourceFile(11 export interface MyClass {12 test: string;13 }14);15const declaration = GetDeclarationFromNode(node, node.getChildAt(0).getChildAt(1));16console.log(declaration);17ts-mock-imports version: 1.3.1018{19 "compilerOptions": {20 "paths": {21 }22 },23}24{25 "compilerOptions": {
Using AI Code Generation
1import { GetDeclarationFromNode } from 'ts-auto-mock';2import { Test1 } from './test2';3const declaration = GetDeclarationFromNode(Test1);4import { GetDeclarationFromNode } from 'ts-auto-mock';5import { Test2 } from './test3';6const declaration = GetDeclarationFromNode(Test2);7import { GetDeclarationFromNode } from 'ts-auto-mock';8import { Test3 } from './test1';9const declaration = GetDeclarationFromNode(Test3);10import { GetDeclarationFromNode } from 'ts-auto-mock';11import { Test1 } from './test2';12const declaration = GetDeclarationFromNode(Test1);13import { GetDeclarationFromNode } from 'ts-auto-mock';14import { Test2 } from './test3';15const declaration = GetDeclarationFromNode(Test2
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!