How to use the fp-ts/lib/function.flow function in fp-ts

To help you get started, we’ve selected a few fp-ts examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github SamHH / bukubrow-webext / src / modules / comms / browser.ts View on Github external
export const saveStagedBookmarksAsNewGroupToLocalStorage = (newStagedBookmarks: NonEmptyArray): TaskEither => {
	const stagedBookmarksGroups = pipe(
		getStagedBookmarksGroupsFromLocalStorage,
		TE.map(O.getOrElse((): Array => [])),
	);

	const newGroup = pipe(
		stagedBookmarksGroups,
		TE.map(flow(
			flow(A.map(group => group.id), createUuid, runIO),
			(id): StagedBookmarksGroup => ({
				id,
				time: new Date().getTime(),
				// Assign each bookmark a generated ID, and ensure they don't clash with
				// one another
				bookmarks: newStagedBookmarks.reduce>((acc, bm) => [...acc, {
					...bm,
					id: createUuid(acc.map(b => b.id))(),
				}], []),
			}),
		)),
	);

	return pipe(
		sequenceTTE(stagedBookmarksGroups, newGroup),
github devexperts / remote-data-ts / src / __tests__ / remote-data.spec.ts View on Github external
describe('composition', () => {
					const double = (a: number): number => a * 2;
					const quad = flow(
						double,
						double,
					);
					it('initial', () => {
						expect(remoteData.map(initial, quad)).toBe(
							pipe(
								initial,
								RD.map(double),
								RD.map(double),
							),
						);
					});
					it('pending', () => {
						expect(remoteData.map(pending, quad)).toBe(
							pipe(
								pending,
github gcanti / elm-ts / src / Http.ts View on Github external
function xhr<a>(req: Request</a><a>): Observable&gt; {
  return ajax(toXHRRequest(req)).pipe(
    map(
      flow(
        toResponse(req),
        decodeWith(req.expect)
      )
    ),
    catchError((e: any): Observable&gt; =&gt; of(E.left(toHttpError(e))))
  )
}
</a>
github marblejs / marble / packages / messaging / src / server / messaging.server.listener.ts View on Github external
msg$,
      )),
      map(([data, msg]) =&gt; ({ ...msg, data } as TransportMessage)),
    );

    const processEffects: ProcessOperator = flow(
      publish(msg$ =&gt; zip(
        combinedEffects(msg$.pipe(map(m =&gt; m.data)), ctx).pipe(
          catchError(toUnhandledErrorEvent),
        ),
        msg$,
      )),
      map(([data, msg]) =&gt; ({ ...msg, data } as TransportMessage)),
    );

    const processOutput: ProcessOperator = flow(
      publish(msg$ =&gt; zip(
        outputLogger$(msg$.pipe(map(m =&gt; ({ event: m.data, initiator: m }))), ctx).pipe(
          catchError(toUnhandledErrorEvent),
        ),
        msg$,
      )),
      map(([data, msg]) =&gt; ({ ...msg, data } as TransportMessage)),
      publish(msg$ =&gt; zip(
        output$(msg$.pipe(map(m =&gt; ({ event: m.data, initiator: m }))), ctx).pipe(
          catchError(toUnhandledErrorEvent),
        ),
        msg$,
      )),
      map(([data, msg]) =&gt; ({ ...msg, data } as TransportMessage)),
    );
github rzeigler / waveguide / src / waver.ts View on Github external
export function bimap(io: WaveR, leftMap: FunctionN&lt;[E1], E2&gt;, rightMap: FunctionN&lt;[A], B&gt;): WaveR {
  return foldExit(io,
    (cause) =&gt; cause._tag === exit.ExitTag.Raise ? raiseError(leftMap(cause.error)) : completed(cause),
    flow(rightMap, pure)
  );
}
github rzeigler / waveguide / src / wave.ts View on Github external
export function mapError(io: Wave, f: FunctionN&lt;[E1], E2&gt;): Wave {
  return chainError(io, flow(f, raiseError));
}
github poetapp / frost-api / src / scripts / migrate-encryption.ts View on Github external
Vault.config(vaultConfiguration)
    await Vault.mountAuthTune()
  } catch (e) {
    logger.fatal(e, 'Error with Vault')
    return
  }

  const encryptWithKey = encrypt(configuration.privateKeyEncryptionKey)
  const decryptWithKey = decrypt(configuration.privateKeyEncryptionKey)

  const decryptBackwardsCompatible = (plaintext: string) =&gt;
    plaintext.startsWith('vault')
      ? Vault.decrypt(plaintext)
      : decryptWithKey(plaintext)

  const encryptApiToken = flow(tokenObjectToToken, encryptWithKey, tokenToTokenObject)

  const decryptApiTokens = async (tokens: ReadonlyArray): Promise&gt; =&gt;
    Promise.all(tokens.map(tokenObjectToToken).map(decryptBackwardsCompatible)).then(tokensToTokenObjects)

  const mongoClient = await MongoClient.connect(configuration.mongodbUrl)
  const dbConnection = await mongoClient.db()
  const accountCollection = dbConnection.collection('accounts')

  const accounts = await accountCollection.find({}).toArray()

  logger.info(
    { count: accounts.length, emails: accounts.map(_ =&gt; _.email) },
    'Loaded all accounts.',
  )

  const decryptedAccounts = await Promise.all(accounts.map(async account =&gt; {
github mikearnaldi / matechs-effect / packages / effect / src / effect.ts View on Github external
const mapLeft_: EffectMonad["mapLeft"] = (io, f) =>
  chainError_(io, flow(f, raiseError));
github mikearnaldi / matechs-effect / packages / effect / src / stream / sink.ts View on Github external
export function map(
  sink: Sink,
  f: FunctionN&lt;[B], C&gt;
): Sink {
  return {
    ...sink,
    extract: flow(sink.extract, T.map(f))
  };
}
github rzeigler / waveguide / src / wave.ts View on Github external
export function map(base: Wave, f: FunctionN&lt;[A], B&gt;): Wave {
  return chain(base, flow(f, pure));
}