How to use the fp-ts/lib/Option.chain 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 / components / bookmark-form.tsx View on Github external
evt.preventDefault();

		if (!bookmarkInput.title || !bookmarkInput.url) return;

		const bookmark = {
			...bookmarkInput,
			id: O.toUndefined(bookmarkInput.id),
			flags: 0,
		};

		props.onSubmit(bookmark);
	};

	const isEditing = pipe(
		props.bookmark,
		O.chain(bm => O.fromNullable(bm.id)),
		O.isSome,
	);

	return (
		
			<header>
				
					{isEditing ? 'Edit bookmark' : 'Add a bookmark'}
				
			</header>
github SamHH / bukubrow-webext / src / modules / context.ts View on Github external
case ContextMenuEntry.SendAllTabs: return pipe(
			getAllTabs,
			T.map(flow(O.map(sufficientTabsExact), O.chain(NEA.fromArray))),
		);

		case ContextMenuEntry.SendActiveWindowTabs: return pipe(
			getActiveWindowTabs,
			T.map(flow(O.map(sufficientTabsExact), O.chain(NEA.fromArray))),
		);

		case ContextMenuEntry.SendActiveTab: return pipe(
			getActiveTab,
			T.map(flow(
				O.chain(tab => OT.fromNullable(tab.title, tab.url)),
				O.map(([title, url]) => [{ title, url }]),
				O.chain(NEA.fromArray),
			)),
		);

		case ContextMenuEntry.SendLink: return pipe(
			u,
			O.map(url => [{ url, title: url }]),
			O.chain(NEA.fromArray),
			TO.fromOption,
		);

		default: return TO.none;
	}
};
github stoplightio / prism / packages / http / src / mocker / callback / callbacks.ts View on Github external
function assembleBody(request?: IHttpOperationRequest): O.Option&lt;{ body: string; mediaType: string }&gt; {
  return pipe(
    O.fromNullable(request),
    O.mapNullable(request =&gt; request.body),
    O.mapNullable(body =&gt; body.contents),
    O.chain(head),
    O.chain(param =&gt;
      pipe(
        param,
        generateHttpParam,
        O.map(body =&gt; ({ body, mediaType: param.mediaType }))
      )
    ),
    O.chain(({ body, mediaType }) =&gt;
      pipe(
        E.stringifyJSON(body, () =&gt; undefined),
        E.map(body =&gt; ({ body, mediaType })),
        O.fromEither
      )
    )
  );
}
github stoplightio / prism / packages / http / src / mocker / index.ts View on Github external
const specs = pipe(
    O.fromNullable(resource.request),
    O.mapNullable(request =&gt; request.body),
    O.mapNullable(body =&gt; body.contents),
    O.getOrElse(() =&gt; [] as IMediaTypeContent[])
  );

  const encodedUriParams = splitUriParams(request.body as string);

  if (specs.length &lt; 1) {
    return Object.assign(request, { body: encodedUriParams });
  }

  const content = pipe(
    O.fromNullable(mediaType),
    O.chain(mediaType =&gt; findContentByMediaTypeOrFirst(specs, mediaType)),
    O.map(({ content }) =&gt; content),
    O.getOrElse(() =&gt; specs[0] || {})
  );

  const encodings = get(content, 'encodings', []);

  if (!content.schema) return Object.assign(request, { body: encodedUriParams });

  return Object.assign(request, {
    body: deserializeFormBody(content.schema, encodings, decodeUriEntities(encodedUriParams)),
  });
}
github stoplightio / prism / packages / http / src / utils / runtimeExpression.ts View on Github external
function tryRequestQuery() {
    return pipe(
      isPart(1, 'query'),
      O.chain(() => lookup(2, parts)),
      O.chain(part =>
        pipe(
          O.fromNullable(request.url.query),
          O.mapNullable(query => query[part])
        )
      )
    );
  }
github stoplightio / prism / packages / http / src / validator / validators / body.ts View on Github external
public validate(target: any, specs: IMediaTypeContent[], mediaType?: string) {
    const findContentByMediaType = pipe(
      O.fromNullable(mediaType),
      O.chain(mt => findContentByMediaTypeOrFirst(specs, mt)),
      O.alt(() => O.some({ content: specs[0] || {}, mediaType: 'random' })),
      O.chain(({ mediaType, content }) =>
        pipe(
          O.fromNullable(content.schema),
          O.map(schema => ({ schema, mediaType, content }))
        )
      )
    );

    return pipe(
      findContentByMediaType,
      O.fold(
        () => E.right(target),
        ({ content, mediaType: mt, schema }) =>
          pipe(
            mt,
            O.fromPredicate(mediaType => mediaType === 'application/x-www-form-urlencoded'),
            O.fold(
github ryu1kn / vscode-text-marker / src / lib / text-location-registry.ts View on Github external
private findDecorationIdAndRanges(editorId: string, range: FlatRange): O.Option&lt;[string, FlatRange[]]&gt; {
        return pipe(
            this.recordMap.get(editorId),
            O.chain(decorationMap =&gt; findFirst(([_decorationId, ranges]) =&gt; ranges.some(this.isPointingRange(range)))([...decorationMap.entries()]))
        );
    }
github stoplightio / prism / packages / http / src / mocker / callback / callbacks.ts View on Github external
function assembleBody(request?: IHttpOperationRequest): O.Option&lt;{ body: string; mediaType: string }&gt; {
  return pipe(
    O.fromNullable(request),
    O.mapNullable(request =&gt; request.body),
    O.mapNullable(body =&gt; body.contents),
    O.chain(head),
    O.chain(param =&gt;
      pipe(
        param,
        generateHttpParam,
        O.map(body =&gt; ({ body, mediaType: param.mediaType }))
      )
    ),
    O.chain(({ body, mediaType }) =&gt;
      pipe(
        E.stringifyJSON(body, () =&gt; undefined),
        E.map(body =&gt; ({ body, mediaType })),
        O.fromEither
      )
    )
  );
}
github stoplightio / prism / packages / http / src / mocker / callback / callbacks.ts View on Github external
function assembleBody(request?: IHttpOperationRequest): O.Option&lt;{ body: string; mediaType: string }&gt; {
  return pipe(
    O.fromNullable(request),
    O.mapNullable(request =&gt; request.body),
    O.mapNullable(body =&gt; body.contents),
    O.chain(head),
    O.chain(param =&gt;
      pipe(
        param,
        generateHttpParam,
        O.map(body =&gt; ({ body, mediaType: param.mediaType }))
      )
    ),
    O.chain(({ body, mediaType }) =&gt;
      pipe(
        E.stringifyJSON(body, () =&gt; undefined),
        E.map(body =&gt; ({ body, mediaType })),
        O.fromEither
      )
    )
  );
}