コード例 #1
0
ファイル: exec.ts プロジェクト: valtech-nyc/brookjs
    .flatMapFirst(state => {
      const argv = ['project', 'new'];

      for (const [key, value] of Object.entries(
        selectNewProjectContext(state)
      )) {
        argv.push(`--${key}`);
        argv.push(value);
      }

      // @TODO(mAAdhaTTah) check if dir exists and confirm overwrite
      // hygen expects to handle interactivity
      return Kefir.stream(emitter => {
        runner(argv, {
          // NOTE: This is relative to dist, where the build result is.
          templates: path.join(__dirname, '..', 'templates'),
          cwd: state.cwd,
          logger: new Logger(emitter),
          createPrompter: () => inquirer,
          exec: (action, body) => {
            const opts = body && body.length > 0 ? { input: body } : {};
            return execa.shell(action, opts);
          },
          debug: false
        })
          .then(result => {
            emitter.value({ type: 'CREATED', payload: { result } });
          })
          .catch(error => {
            emitter.value({ type: 'FAILED', error: true, payload: { error } });
          });
      });
    });
コード例 #2
0
ファイル: webpack.ts プロジェクト: valtech-nyc/brookjs
 return this.compiler().flatMap(compiler =>
   Kefir.stream(emitter => {
     compiler.watch(WebpackService.watch, (err, stats) => {
       if (err) {
         emitter.error(err);
       } else {
         emitter.value(stats);
       }
     });
   })
コード例 #3
0
ファイル: exec.ts プロジェクト: valtech-nyc/brookjs
    .flatMap(state =>
      Kefir.stream(emitter => {
        const command = getMochaCommand(state);

        emitter.value(shellCommand.request(command));

        shelljs.exec(command, { silent: true }, (code, stdout, stderr) => {
          if (code !== 0) {
            emitter.value(shellCommand.failure({ code, stdout, stderr }));
          } else {
            emitter.value(shellCommand.success({ stdout }));
          }

          emitter.end();
        });
      })
コード例 #4
0
			} else {
				emitter.end();
			}
		});
	}
	let stream07: Stream<number, void> = Kefir.fromCallback<number>(callback => setTimeout(() => callback(1), 1000));
	let stream08: Stream<number, void> = Kefir.fromNodeCallback<number, void>(callback => setTimeout(() => callback(null, 1), 1000));
	let stream09: Stream<MouseEvent, void> = Kefir.fromEvents<MouseEvent, void>(document.body, 'click');
	let stream10: Stream<number, void> = Kefir.stream<number, void>(emitter => {
		let count = 0;
		emitter.emit(count);
	
		let intervalId = setInterval(() => {
			count++;
			if (count < 4) {
				emitter.emit(count);
			} else {
				emitter.end();
			}
		}, 1000);
	
		return () => clearInterval(intervalId);
	});
}

// Create a property
{
	let property01: Property<number, void> = Kefir.constant(1);
	let property02: Property<void, number> = Kefir.constantError(1);
	let property03: Property<number, void> = Kefir.fromPromise<number, void>(new Promise<number>(fulfill => fulfill(1)));
}
コード例 #5
0
ファイル: rAF.ts プロジェクト: valtech-nyc/brookjs
  }
);

/**
 * The type emitted by the raf$ stream.
 */
export type RAFAction = ReturnType<typeof rafAction>;

/**
 * Stream of requestAnimationFrame events.
 */
export const raf$: Stream<RAFAction, void> = Kefir.stream(emitter => {
  let loop: number;
  let enabled = true;

  (function schedule() {
    loop = requestAnimationFrame(time => {
      (emitter as any).value(rafAction(time));

      if (enabled) {
        schedule();
      }
    });
  })();

  return () => {
    cancelAnimationFrame(loop);
    enabled = false;
  };
});