Best JavaScript code snippet using stryker-parent
watch.ts
Source:watch.ts
1import { Context, getContext } from './context';2import { createInternalRefsStream } from './helpers';3import { isBasicLifecycleContext, onAfterContentChecked, onAfterViewChecked, onDestroy } from './lifecycle';4import { computed, InternalRef, Ref, scheduleRefsUpdates } from './state';5export interface WatcherContext extends Context {6 watchAsyncQueue?: {7 content: (() => void)[];8 view: (() => void)[];9 };10}11type WatcherValue<T = any> = Ref<T> | ((...args: any[]) => T);12type WatcherCleanup = (callback: () => void) => void;13type WatcherCallback<T = any> = (newValue: T, oldValue: T, onCleanup: WatcherCleanup) => void;14type FlushMode = 'content' | 'view' | 'sync';15interface WatcherOption {16 lazy: boolean;17 mode: FlushMode;18}19type WatcherStop = () => void;20type Cleanup = () => void;21export function watch<T>(22 source: WatcherValue<T>,23 callback: WatcherCallback<T>,24 options?: Partial<WatcherOption>25): WatcherStop;26export function watch<V>(27 values: [WatcherValue<V>],28 callback: WatcherCallback<[V]>,29 options?: Partial<WatcherOption>30): WatcherStop;31export function watch<V, V2>(32 values: [WatcherValue<V>, WatcherValue<V2>],33 callback: WatcherCallback<[V, V2]>,34 options?: Partial<WatcherOption>35): WatcherStop;36export function watch<V, V2, V3>(37 values: [WatcherValue<V>, WatcherValue<V2>, WatcherValue<V3>],38 callback: WatcherCallback<[V, V2, V3]>,39 options?: Partial<WatcherOption>40): WatcherStop;41export function watch<V, V2, V3, V4>(42 values: [WatcherValue<V>, WatcherValue<V2>, WatcherValue<V3>, WatcherValue<V4>],43 callback: WatcherCallback<[V, V2, V3, V4]>,44 options?: Partial<WatcherOption>45): WatcherStop;46export function watch<V, V2, V3, V4, V5>(47 values: [WatcherValue<V>, WatcherValue<V2>, WatcherValue<V3>, WatcherValue<V4>, WatcherValue<V5>],48 callback: WatcherCallback<[V, V2, V3, V4, V5]>,49 options?: Partial<WatcherOption>50): WatcherStop;51export function watch<V, V2, V3, V4, V5, V6>(52 values: [WatcherValue<V>, WatcherValue<V2>, WatcherValue<V3>, WatcherValue<V4>, WatcherValue<V5>, WatcherValue<V6>],53 callback: WatcherCallback<[V, V2, V3, V4, V5, V6]>,54 options?: Partial<WatcherOption>55): WatcherStop;56export function watch<T>(57 source: WatcherValue<T> | WatcherValue<T>[],58 cb?: WatcherCallback<T>,59 options?: Partial<WatcherOption>60): WatcherStop {61 const { lazy, mode }: WatcherOption = {62 ...{63 lazy: false,64 mode: 'content',65 },66 ...options,67 };68 const context = getContext<WatcherContext>();69 const basicLifecycleContext = isBasicLifecycleContext(context);70 if (!basicLifecycleContext && !context.watchAsyncQueue) {71 context.watchAsyncQueue = {72 content: [],73 view: [],74 };75 onAfterContentChecked(() => {76 flushQue(context.watchAsyncQueue.content);77 });78 onAfterViewChecked(() => {79 flushQue(context.watchAsyncQueue.view);80 });81 }82 let cleanup: Cleanup;83 const registerCleanup = (fn: Cleanup) => {84 cleanup = () => {85 cleanup = null;86 try {87 fn();88 } catch (error) {89 console.error('onCleanup()', error);90 }91 };92 };93 const isArray = Array.isArray(source);94 let sources = (isArray ? source : [source]) as WatcherValue[];95 const internalRefs = sources.map((source) => {96 if (typeof source === 'function') {97 return computed(source) as InternalRef;98 }99 return source as InternalRef;100 });101 let scheduled: (() => void) | null = null;102 const applyCb = (n, o) => {103 // cleanup before rerun104 cleanup && cleanup();105 if (isArray) {106 cb(n, o, registerCleanup);107 } else {108 cb(n[0], o[0], registerCleanup);109 }110 };111 const _callback =112 mode === 'sync' || basicLifecycleContext113 ? applyCb114 : (n, o) => {115 const scheduledAlready = !!scheduled;116 scheduled = () => {117 scheduled = null;118 applyCb(n, o);119 };120 if (scheduledAlready) return;121 queJob(context, () => scheduled(), mode);122 };123 // for immediate first run only124 let shiftCallback = (n, o) => {125 shiftCallback = _callback;126 applyCb(n, o);127 };128 return scheduleWatch(internalRefs, lazy ? _callback : (n, o) => shiftCallback(n, o), {129 lazy,130 cleanup: () => cleanup && cleanup(),131 });132}133function scheduleWatch(134 internalRefs: InternalRef[],135 cb: (...args: any[]) => any,136 { lazy, cleanup }: { cleanup: () => void; lazy: boolean }137): WatcherStop {138 let oldValues = new Array(internalRefs.length);139 const getNewValues = () => internalRefs.map((internalRef) => internalRef.__value);140 let newValues = getNewValues();141 const callback = (n, o) => {142 oldValues = newValues;143 cb(n, o);144 };145 const subscription = createInternalRefsStream(internalRefs).subscribe(() => {146 newValues = getNewValues();147 const hasUpdate = newValues.some((newVal, index) => {148 const oldVal = oldValues[index];149 return newVal !== oldVal;150 });151 if (hasUpdate) {152 callback(newValues, oldValues);153 }154 });155 if (!lazy) {156 callback(newValues, oldValues);157 }158 const watchStop = () => {159 subscription.unsubscribe();160 cleanup();161 };162 onDestroy(watchStop);163 return watchStop;164}165function queJob(context, cb: () => void, mode: FlushMode) {166 context.watchAsyncQueue[mode].push(cb);167}168function flushQue(que: (() => void)[]) {169 while (que.length) {170 const cb = que.shift();171 scheduleRefsUpdates(cb);172 }...
WatchManager.test.ts
Source:WatchManager.test.ts
1import {npath, toFilename} from '@yarnpkg/fslib';2import {WatchManager} from '../sources/WatchManager';3describe(`WatchManager`, () => {4 const manager = new WatchManager();5 it(`should trigger callback when dir entries added`, () => {6 const dirPath = npath.toPortablePath(`/abc`);7 const dirList = new Set([`file1.ts`, `file2.ts`].map(x => toFilename(x)));8 const callback = jest.fn();9 const watcherCallback = jest.fn();10 const watcher = manager.registerWatcher(dirPath, dirList, callback);11 watcher.on(`rename`, watcherCallback);12 manager.notifyWatchers(() => ({13 dirList: new Set([`file1.ts`, `file5.ts`, `file2.ts`, `file3.ts`].map(x => toFilename(x))),14 realPath: dirPath,15 resolvedPath: dirPath,16 }));17 expect(callback).toBeCalledTimes(2);18 expect(callback).toBeCalledWith(`rename`, `file3.ts`);19 expect(callback).toBeCalledWith(`rename`, `file5.ts`);20 expect(watcherCallback).toBeCalledTimes(2);21 expect(watcherCallback).toBeCalledWith(`file3.ts`);22 expect(watcherCallback).toBeCalledWith(`file5.ts`);23 });24 it(`should trigger callback when dir entries removed`, () => {25 const manager = new WatchManager();26 const dirPath = npath.toPortablePath(`/abc`);27 const dirList = new Set([`file1.ts`, `file2.ts`, `file3.ts`, `file4.ts`].map(x => toFilename(x)));28 const callback = jest.fn();29 const watcherCallback = jest.fn();30 const watcher = manager.registerWatcher(dirPath, dirList, callback);31 watcher.on(`rename`, watcherCallback);32 manager.notifyWatchers(() => ({33 dirList: new Set([`file1.ts`, `file4.ts`].map(x => toFilename(x))),34 resolvedPath: dirPath,35 realPath: dirPath,36 }));37 expect(callback).toBeCalledTimes(2);38 expect(callback).toBeCalledWith(`rename`, `file2.ts`);39 expect(callback).toBeCalledWith(`rename`, `file3.ts`);40 expect(watcherCallback).toBeCalledTimes(2);41 expect(watcherCallback).toBeCalledWith(`file2.ts`);42 expect(watcherCallback).toBeCalledWith(`file3.ts`);43 });44 it(`should not trigger closed callback`, () => {45 const dirPath = npath.toPortablePath(`/abc`);46 const dirList = new Set([`file1.ts`].map(x => toFilename(x)));47 const callback = jest.fn();48 const watcherCallback = jest.fn();49 const watcher = manager.registerWatcher(dirPath, dirList, callback);50 watcher.on(`rename`, watcherCallback);51 watcher.close();52 manager.notifyWatchers(() => ({53 dirList: new Set([`file1.ts`, `file2.ts`].map(x => toFilename(x))),54 resolvedPath: dirPath,55 realPath: dirPath,56 }));57 expect(callback).toBeCalledTimes(0);58 expect(watcherCallback).toBeCalledTimes(0);59 });...
index.ts
Source:index.ts
1import { Logger } from '../utils/logger';2/**3 * çå¬åè°å½æ°4 */5export6type WatcherCallBack<T> = (data: T) => void;7/**8 * çå¬è
æ½è±¡ç±»9 */10export11abstract class Watcher<T> {12 private callback_map = new Map<WatcherCallBack<T>, void>();13 /**14 * 订é
æ´æ°15 * @param callback åè°å½æ°16 */17 public Subscribe(callback: WatcherCallBack<T>) {18 this.callback_map.set(callback);19 }20 /**21 * åæ¶è®¢é
22 * @param callback åè°å½æ°23 */24 public Unsubscribe(callback: WatcherCallBack<T>) {25 this.callback_map.delete(callback);26 }27 /**28 * æ´æ°æ°æ®æ¹æ³29 * @param data æ°æ®30 */31 protected update(data: T) {32 Array.from(this.callback_map.keys())33 .forEach((callback) => {34 callback(data);35 });36 }37 protected logger = new Logger();38 /**39 * è¿è¡çå¬è
40 */41 public abstract Start(): void;42 /**43 * å
³éçå¬è
44 */45 public abstract Stop(): void;...
Using AI Code Generation
1const watcherCallback = require('stryker-parent').watcherCallback;2const watcherCallback = require('stryker-parent').watcherCallback;3const watcherCallback = require('stryker-parent').watcherCallback;4const watcherCallback = require('stryker-parent').watcherCallback;5const watcherCallback = require('stryker-parent').watcherCallback;6const watcherCallback = require('stryker-parent').watcherCallback;7const watcherCallback = require('stryker-parent').watcherCallback;8const watcherCallback = require('stryker-parent').watcherCallback;9const watcherCallback = require('stryker-parent').watcherCallback;10const watcherCallback = require('stryker-parent').watcherCallback;11const watcherCallback = require('stryker-parent').watcherCallback;12const watcherCallback = require('stryker-parent').watcherCallback;13const watcherCallback = require('stryker-parent').watcherCallback;14const watcherCallback = require('stryker-parent').watcherCallback;15const watcherCallback = require('stryker-parent').watcherCallback;16const watcherCallback = require('stryker-parent').watcherCallback;17const watcherCallback = require('stryker-parent').watcherCallback;
Using AI Code Generation
1var strykerParent = require('stryker-parent');2strykerParent.watcherCallback('test.js');3module.exports = function(config) {4 config.set({5 mochaOptions: {6 }7 });8};
Using AI Code Generation
1const {watcherCallback} = require('stryker-parent');2watcherCallback('file1.js', 'file2.js');3const {watcherCallback} = require('stryker-parent');4watcherCallback(['file1.js', 'file2.js']);5const {watcherCallback} = require('stryker-parent');6watcherCallback('file1.js');7watcherCallback('file2.js');8const {watcherCallback} = require('stryker-parent');9watcherCallback('file1.js');10watcherCallback(['file2.js', 'file3.js']);11const {watcherCallback} = require('stryker-parent');12watcherCallback(['file1.js', 'file2.js']);13watcherCallback(['file3.js', 'file4.js']);14const {watcherCallback} = require('stryker-parent');15watcherCallback('file1.js');16watcherCallback('file2.js');17watcherCallback('file3.js');18watcherCallback('file4.js');19const {watcherCallback} = require('stryker-parent');20watcherCallback(['file1.js', 'file2.js']);21watcherCallback(['file3.js', 'file4.js']);22watcherCallback(['file5.js', 'file6.js']);23watcherCallback(['file7.js', 'file8.js']);24const {watcherCallback} = require('stryker-parent');25watcherCallback(['file1.js', 'file2.js']);26watcherCallback('file3.js');27watcherCallback('file4.js');28watcherCallback('file5.js');29watcherCallback('file6.js');
Using AI Code Generation
1var parent = require('stryker-parent');2parent.watcherCallback('file1.js', 'file2.js');3var childProcess = require('child_process');4exports.watcherCallback = function(file1, file2){5 childProcess.fork('./stryker-child', [file1, file2]);6}7var file1 = process.argv[2];8var file2 = process.argv[3];9console.log(file1);10console.log(file2);
Using AI Code Generation
1var watcherCallback = require('stryker-parent').watcherCallback;2watcherCallback('file1.js', 'changed', function () {3 console.log('file1.js changed');4});5var watcherCallback = require('stryker-parent').watcherCallback;6watcherCallback('file1.js', 'changed', function () {7 console.log('file1.js changed');8});9var watcherCallback = require('stryker-parent').watcherCallback;10watcherCallback('file1.js', 'changed', function () {11 console.log('file1.js changed');12});
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!!