当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript transform.ScriptTransformer类代码示例

本文整理汇总了TypeScript中@jest/transform.ScriptTransformer的典型用法代码示例。如果您正苦于以下问题:TypeScript ScriptTransformer类的具体用法?TypeScript ScriptTransformer怎么用?TypeScript ScriptTransformer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了ScriptTransformer类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: pEachSeries

    await pEachSeries(Array.from(globalModulePaths), async modulePath => {
      if (!modulePath) {
        return;
      }

      const correctConfig = allTests.find(
        t => t.context.config[moduleName] === modulePath,
      );

      const projectConfig = correctConfig
        ? correctConfig.context.config
        : // Fallback to first config
          allTests[0].context.config;

      const transformer = new ScriptTransformer(projectConfig);

      // Load the transformer to avoid a cycle where we need to load a
      // transformer in order to transform it in the require hooks
      transformer.preloadTransformer(modulePath);

      let transforming = false;
      const revertHook = addHook(
        (code, filename) => {
          try {
            transforming = true;
            return (
              transformer.transformSource(filename, code, false).code || code
            );
          } finally {
            transforming = false;
          }
        },
        {
          exts: [extname(modulePath)],
          ignoreNodeModules: false,
          matcher: (...args) => {
            if (transforming) {
              // Don't transform any dependency required by the transformer itself
              return false;
            }
            return transformer.shouldTransform(...args);
          },
        },
      );

      const globalModule = interopRequireDefault(require(modulePath)).default;

      if (typeof globalModule !== 'function') {
        throw new TypeError(
          `${moduleName} file must export a function at ${modulePath}`,
        );
      }

      await globalModule(globalConfig);

      revertHook();
    });
开发者ID:facebook,项目名称:jest,代码行数:57,代码来源:runGlobalHook.ts

示例2: pEachSeries

    await pEachSeries(Array.from(globalModulePaths), async modulePath => {
      if (!modulePath) {
        return;
      }

      const correctConfig = allTests.find(
        t => t.context.config[moduleName] === modulePath,
      );

      const projectConfig = correctConfig
        ? correctConfig.context.config
        : // Fallback to first config
          allTests[0].context.config;

      const transformer = new ScriptTransformer(projectConfig);

      // Load the transformer to avoid a cycle where we need to load a
      // transformer in order to transform it in the require hooks
      transformer.preloadTransformer(modulePath);

      const revertHook = addHook(
        (code, filename) =>
          transformer.transformSource(filename, code, false).code || code,
        {
          exts: [extname(modulePath)],
          matcher: transformer.shouldTransform.bind(transformer),
        },
      );

      const globalModule = _interopRequireDefault(require(modulePath)).default;

      if (typeof globalModule !== 'function') {
        throw new TypeError(
          `${moduleName} file must export a function at ${modulePath}`,
        );
      }

      await globalModule(globalConfig);

      revertHook();
    });
开发者ID:Volune,项目名称:jest,代码行数:41,代码来源:runGlobalHook.ts

示例3: _execModule

  private _execModule(
    localModule: InitialModule,
    options: InternalModuleOptions | undefined,
    moduleRegistry: ModuleRegistry,
    from: Config.Path | null,
  ) {
    // If the environment was disposed, prevent this module from being executed.
    if (!this._environment.global) {
      return;
    }

    const isInternalModule = !!(options && options.isInternalModule);
    const filename = localModule.filename;
    const lastExecutingModulePath = this._currentlyExecutingModulePath;
    this._currentlyExecutingModulePath = filename;
    const origCurrExecutingManualMock = this._isCurrentlyExecutingManualMock;
    this._isCurrentlyExecutingManualMock = filename;

    const dirname = path.dirname(filename);
    localModule.children = [];

    Object.defineProperty(localModule, 'parent', {
      enumerable: true,
      get() {
        const key = from || '';
        return moduleRegistry[key] || null;
      },
    });

    localModule.paths = this._resolver.getModulePaths(dirname);
    Object.defineProperty(localModule, 'require', {
      value: this._createRequireImplementation(localModule, options),
    });
    const extraGlobals = this._config.extraGlobals || [];
    const transformedFile = this._scriptTransformer.transform(
      filename,
      {
        changedFiles: this._coverageOptions.changedFiles,
        collectCoverage: this._coverageOptions.collectCoverage,
        collectCoverageFrom: this._coverageOptions.collectCoverageFrom,
        collectCoverageOnlyFrom: this._coverageOptions.collectCoverageOnlyFrom,
        extraGlobals,
        isInternalModule,
      },
      this._cacheFS[filename],
    );

    if (transformedFile.sourceMapPath) {
      this._sourceMapRegistry[filename] = transformedFile.sourceMapPath;
      if (transformedFile.mapCoverage) {
        this._needsCoverageMapped.add(filename);
      }
    }

    const runScript = this._environment.runScript(transformedFile.script);

    if (runScript === null) {
      this._logFormattedReferenceError(
        'You are trying to `import` a file after the Jest environment has been torn down.',
      );
      process.exitCode = 1;
      return;
    }

    const wrapper = runScript[ScriptTransformer.EVAL_RESULT_VARIABLE];
    const moduleArguments = new Set([
      localModule, // module object
      localModule.exports, // module exports
      localModule.require, // require implementation
      dirname, // __dirname
      filename, // __filename
      this._environment.global, // global object
      this._createJestObjectFor(
        filename,
        localModule.require as LocalModuleRequire,
      ), // jest object
      ...extraGlobals.map(globalVariable => {
        if (this._environment.global[globalVariable]) {
          return this._environment.global[globalVariable];
        }

        throw new Error(
          `You have requested '${globalVariable}' as a global variable, but it was not present. Please check your config or your global environment.`,
        );
      }),
    ]);
    wrapper.call(localModule.exports, ...Array.from(moduleArguments));

    this._isCurrentlyExecutingManualMock = origCurrExecutingManualMock;
    this._currentlyExecutingModulePath = lastExecutingModulePath;
  }
开发者ID:Volune,项目名称:jest,代码行数:91,代码来源:index.ts

示例4: _loadModule

  private _loadModule(
    localModule: InitialModule,
    from: Config.Path,
    moduleName: string | undefined,
    modulePath: Config.Path,
    options: InternalModuleOptions | undefined,
    moduleRegistry: ModuleRegistry,
  ) {
    if (path.extname(modulePath) === '.json') {
      const text = stripBOM(fs.readFileSync(modulePath, 'utf8'));

      const transformedFile = this._scriptTransformer.transformJson(
        modulePath,
        this._getFullTransformationOptions(options),
        text,
      );

      localModule.exports = this._environment.global.JSON.parse(
        transformedFile,
      );
    } else if (path.extname(modulePath) === '.node') {
      localModule.exports = require(modulePath);
    } else {
      // Only include the fromPath if a moduleName is given. Else treat as root.
      const fromPath = moduleName ? from : null;
      this._execModule(localModule, options, moduleRegistry, fromPath);
    }
    localModule.loaded = true;
  }
开发者ID:facebook,项目名称:jest,代码行数:29,代码来源:index.ts

示例5:

 matcher: (...args) => {
   if (transforming) {
     // Don't transform any dependency required by the transformer itself
     return false;
   }
   return transformer.shouldTransform(...args);
 },
开发者ID:facebook,项目名称:jest,代码行数:7,代码来源:runGlobalHook.ts

示例6: return

 (code, filename) => {
   try {
     transforming = true;
     return (
       transformer.transformSource(filename, code, false).code || code
     );
   } finally {
     transforming = false;
   }
 },
开发者ID:facebook,项目名称:jest,代码行数:10,代码来源:runGlobalHook.ts

示例7:

 (code, filename) =>
   transformer.transformSource(filename, code, false).code || code,
开发者ID:Volune,项目名称:jest,代码行数:2,代码来源:runGlobalHook.ts


注:本文中的@jest/transform.ScriptTransformer类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。