@bessemer/cornerstone 0.5.102 → 0.5.106
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array.d.ts +1 -1
- package/dist/array.d.ts.map +1 -1
- package/dist/array.js.map +1 -1
- package/dist/either.d.ts +43 -12
- package/dist/either.d.ts.map +1 -1
- package/dist/either.js +81 -8
- package/dist/either.js.map +1 -1
- package/dist/json.d.ts +0 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +2 -6
- package/dist/json.js.map +1 -1
- package/dist/net/uri.d.ts.map +1 -1
- package/dist/net/uri.js +3 -3
- package/dist/net/uri.js.map +1 -1
- package/dist/net/url.d.ts.map +1 -1
- package/dist/net/url.js +2 -2
- package/dist/net/url.js.map +1 -1
- package/dist/promise.d.ts +1 -0
- package/dist/promise.d.ts.map +1 -1
- package/dist/promise.js +10 -1
- package/dist/promise.js.map +1 -1
- package/dist/result.d.ts +13 -5
- package/dist/result.d.ts.map +1 -1
- package/dist/result.js +48 -21
- package/dist/result.js.map +1 -1
- package/dist/temporal/duration.d.ts.map +1 -1
- package/dist/temporal/duration.js +2 -2
- package/dist/temporal/duration.js.map +1 -1
- package/dist/temporal/instant.d.ts.map +1 -1
- package/dist/temporal/instant.js +2 -2
- package/dist/temporal/instant.js.map +1 -1
- package/dist/temporal/plain-date-time.d.ts.map +1 -1
- package/dist/temporal/plain-date-time.js +2 -2
- package/dist/temporal/plain-date-time.js.map +1 -1
- package/dist/temporal/plain-date.d.ts.map +1 -1
- package/dist/temporal/plain-date.js +2 -2
- package/dist/temporal/plain-date.js.map +1 -1
- package/dist/temporal/plain-time.d.ts.map +1 -1
- package/dist/temporal/plain-time.js +2 -2
- package/dist/temporal/plain-time.js.map +1 -1
- package/dist/temporal/zoned-date-time.d.ts.map +1 -1
- package/dist/temporal/zoned-date-time.js +2 -2
- package/dist/temporal/zoned-date-time.js.map +1 -1
- package/dist/zod-util.d.ts +0 -1
- package/dist/zod-util.d.ts.map +1 -1
- package/dist/zod-util.js +2 -6
- package/dist/zod-util.js.map +1 -1
- package/package.json +2 -2
package/dist/net/url.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/net/url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,KAAK,IAAI,MAAM,+BAA+B,CAAA;AACrD,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AACtG,OAAO,
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/net/url.ts"],"names":[],"mappings":"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"}
|
package/dist/net/url.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/net/url.ts
|
|
2
2
|
import * as Uris from "@bessemer/cornerstone/net/uri";
|
|
3
|
-
import {
|
|
3
|
+
import { success } from "@bessemer/cornerstone/result";
|
|
4
4
|
import { unpackResult } from "@bessemer/cornerstone/error/error-event";
|
|
5
5
|
import * as Strings from "@bessemer/cornerstone/string";
|
|
6
6
|
import * as Arrays from "@bessemer/cornerstone/array";
|
|
@@ -42,7 +42,7 @@ function toLiteral(likeValue) {
|
|
|
42
42
|
const value = from2(likeValue);
|
|
43
43
|
return format2(value);
|
|
44
44
|
}
|
|
45
|
-
var SchemaLiteral = structuredTransform(Zod.string(), (it) =>
|
|
45
|
+
var SchemaLiteral = structuredTransform(Zod.string(), (it) => parseString2(it).map((it2) => toLiteral(it2)));
|
|
46
46
|
var isUrl = (value) => {
|
|
47
47
|
if (!Objects.isObject(value)) {
|
|
48
48
|
return false;
|
package/dist/net/url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/net/url.ts"],"sourcesContent":["import { Dictionary, NominalType } from '@bessemer/cornerstone/types'\nimport * as Uris from '@bessemer/cornerstone/net/uri'\nimport { Uri, UriBuilder, UriComponent, UriLiteral, UriLocation } from '@bessemer/cornerstone/net/uri'\nimport { mapResult, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Arrays from '@bessemer/cornerstone/array'\nimport { first, isEmpty } from '@bessemer/cornerstone/array'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport Zod from 'zod'\nimport * as Equalitors from '@bessemer/cornerstone/equalitor'\nimport { Equalitor } from '@bessemer/cornerstone/equalitor'\nimport { MergeExclusive } from 'type-fest'\nimport * as Objects from '@bessemer/cornerstone/object'\n\nexport const encode = Uris.encode\n\nexport const decode = Uris.decode\n\nexport type UrlLiteral = NominalType<UriLiteral, typeof Namespace>\n\nexport interface UrlLocation extends UriLocation {\n relative: boolean\n pathSegments: Array<string>\n parameters: Dictionary<string | Array<string>>\n}\n\nexport interface Url extends Uri {\n _type: typeof Namespace\n location: UrlLocation\n href: UrlLiteral\n}\n\nexport const Namespace = Uris.UrlNamespace\nexport const EqualBy: Equalitor<Url> = Equalitors.deepNatural()\n\ntype UrlBuilderPathPart = MergeExclusive<{ path?: string | null }, { pathSegments?: Array<string>; relative?: boolean }>\ntype UrlBuilderQueryPart = MergeExclusive<{ query?: string | null }, { parameters?: Dictionary<string | Array<string>> }>\ntype UrlBuilderLocationPart = UrlBuilderPathPart &\n UrlBuilderQueryPart & {\n fragment?: string | null\n }\n\nexport type UrlBuilder = UriBuilder & {\n location?: UrlBuilderLocationPart | null | undefined\n}\n\nexport type UrlLike = Url | Uri | UriLiteral | UrlLiteral | UrlBuilder\n\nexport const parseString = (value: string): Result<Url, ErrorEvent> => {\n const result = Uris.parseString(value)\n if (!result.isSuccess) {\n return result\n }\n\n return success(fromUri(result.value))\n}\n\nexport function from(value: UrlLike | string): Url\nexport function from(value: UrlLike | string | null): Url | null\nexport function from(value: UrlLike | string | undefined): Url | undefined\nexport function from(value: UrlLike | string | null | undefined): Url | null | undefined\nexport function from(value: UrlLike | string | null | undefined): Url | null | undefined {\n if (Objects.isNil(value)) {\n return value\n }\n if (isUrl(value)) {\n return value\n }\n if (Uris.isUri(value)) {\n return fromUri(value)\n }\n if (Strings.isString(value)) {\n return unpackResult(parseString(value))\n }\n\n return build(value as UrlBuilder)\n}\n\nexport function toLiteral(likeValue: UrlLike): UrlLiteral\nexport function toLiteral(likeValue: UrlLike | null): UrlLiteral | null\nexport function toLiteral(likeValue: UrlLike | undefined): UrlLiteral | undefined\nexport function toLiteral(likeValue: UrlLike | null | undefined): UrlLiteral | null | undefined\nexport function toLiteral(likeValue: UrlLike | null | undefined): UrlLiteral | null | undefined {\n if (Objects.isNil(likeValue)) {\n return likeValue\n }\n\n const value = from(likeValue)\n return format(value) as UrlLiteral\n}\n\nexport const SchemaLiteral = structuredTransform(Zod.string(), (it: string) => mapResult(parseString(it), (it) => toLiteral(it)))\n// JOHN need a schema for the object version...\n// export const SchemaInstance = structuredTransform(Zod.string(), parseString)\n\nexport const isUrl = (value: unknown): value is Url => {\n if (!Objects.isObject(value)) {\n return false\n }\n\n const uriValue = value as any as Url\n return uriValue._type === Namespace\n}\n\nexport const merge = (element: UrlLike, builder: UrlBuilder): Url => {\n const url = from(element)\n\n let location: UrlBuilderLocationPart | null | undefined\n if (Strings.isString(builder.location) || Objects.isNull(builder.location)) {\n location = builder.location\n } else {\n const usePathSegments = !Objects.isUndefined(builder.location?.pathSegments)\n const useParameters = !Objects.isUndefined(builder.location?.parameters)\n\n location = {\n ...(usePathSegments\n ? { pathSegments: builder.location?.pathSegments }\n : { path: Objects.isUndefined(builder.location?.path) ? url.location.path : builder.location.path }),\n ...(useParameters\n ? { parameters: builder.location?.parameters }\n : { query: Objects.isUndefined(builder.location?.query) ? url.location.query : builder.location.query }),\n fragment: Objects.isUndefined(builder.location?.fragment) ? url.location.fragment : builder.location.fragment,\n }\n }\n\n const uriBuilder: UriBuilder = {\n scheme: Objects.isUndefined(builder.scheme) ? url.scheme : builder.scheme,\n host: Objects.isUndefined(builder.host) ? url.host : builder.host,\n authentication: Objects.isUndefined(builder.authentication) ? url.authentication : builder.authentication,\n location,\n }\n\n return from(uriBuilder)\n}\n\nexport const format = Uris.format\n\nconst build = (builder: UrlBuilder): Url => {\n if ((builder.location?.relative ?? false) && Objects.isPresent(builder.host)) {\n throw new Error(`[${Namespace}]: Unable to construct a relative url with a non-null host: ${builder}`)\n }\n\n const uriBuilder = convertUrlBuilderToUriBuilder(builder)\n const uri = Uris.from(uriBuilder)\n return fromUri(uri)\n}\n\nconst convertUrlBuilderToUriBuilder = (builder: UrlBuilder): UriBuilder => {\n if (Objects.isNil(builder.location)) {\n if (Objects.isNil(builder.host)) {\n return {\n ...builder,\n location: { path: '/' },\n }\n }\n\n return builder\n }\n\n const relative = builder.location.relative ?? false\n\n let path = builder.location.path\n if (Objects.isPresent(builder.location.pathSegments)) {\n path = formatPathSegments(builder.location.pathSegments, Objects.isPresent(builder.host), relative)\n }\n\n let query = builder.location.query\n if (Objects.isPresent(builder.location.parameters)) {\n query = formatQueryParameters(builder.location.parameters)\n }\n\n return {\n ...builder,\n location: { path, query, fragment: builder.location.fragment },\n }\n}\n\nconst fromUri = (uri: Uri): Url => {\n let relative: boolean = false\n let pathSegments: Array<string> = []\n const parameters: Dictionary<string | Array<string>> = {}\n\n if (Objects.isPresent(uri.location.path)) {\n if (!uri.location.path.startsWith('/')) {\n relative = true\n }\n\n pathSegments = Strings.removeStart(uri.location.path, '/')\n .split('/')\n .filter((it) => !Strings.isBlank(it))\n .map((urlPathPart) => decode(urlPathPart))\n } else {\n if (Objects.isNil(uri.host)) {\n relative = true\n }\n }\n\n if (Objects.isPresent(uri.location.query)) {\n uri.location.query.split('&').forEach((parameterPair) => {\n let splitParameters = parameterPair.split('=')\n\n if (!Strings.isBlank(first(splitParameters))) {\n let key = decode(splitParameters[0]!)\n let value = ''\n if (splitParameters.length === 2) {\n value = splitParameters[1]!\n }\n if (Objects.isNil(parameters[key])) {\n parameters[key] = decode(value)\n } else if (!Array.isArray(parameters[key])) {\n let paramList = [parameters[key]]\n paramList.push(decode(value))\n parameters[key] = paramList\n } else {\n parameters[key].push(decode(value))\n }\n }\n })\n }\n\n const url: Url = {\n ...uri,\n _type: Namespace,\n location: {\n path: formatPathSegments(pathSegments, Objects.isPresent(uri.host), relative),\n relative,\n pathSegments,\n query: formatQueryParameters(parameters),\n parameters,\n fragment: uri.location.fragment,\n },\n href: uri.href as UrlLiteral,\n }\n\n url.href = format(url) as UrlLiteral\n return url\n}\n\nconst formatPathSegments = (pathSegments: Array<string>, hasHost: boolean, relative: boolean): UriComponent | null => {\n if (Arrays.isEmpty(pathSegments)) {\n if (!hasHost && !relative) {\n return '/'\n } else {\n return null\n }\n }\n\n return (relative ? '' : '/') + pathSegments.map((it) => encode(it)).join('/')\n}\n\nconst formatQueryParameters = (parameters: Dictionary<string | Array<string>>): UriComponent | null => {\n const parameterEntries = Object.entries(parameters)\n if (isEmpty(parameterEntries)) {\n return null\n }\n\n return Object.entries(parameters)\n .flatMap(([key, value]) => {\n if (Array.isArray(value)) {\n return value.map((it) => `${encode(key)}=${encode(it)}`)\n } else {\n return [`${encode(key)}=${encode(value)}`]\n }\n })\n .join('&')\n}\n\n// JOHN I don't know about these two methods...\nexport const getParameter = (url: UrlLike, name: string): string | undefined => {\n const parameter = from(url).location.parameters[name]\n if (Objects.isNil(parameter)) {\n return undefined\n }\n\n if (Array.isArray(parameter)) {\n throw new Error(`Expected a single parameter value but found multiple for parameter: ${name}`)\n }\n\n return parameter\n}\n\nexport const getJsonParameter = <T>(url: UrlLike, name: string): T | undefined => {\n const value = getParameter(url, name)\n return Objects.isPresent(value) ? JSON.parse(value) : undefined\n}\n"],"mappings":"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","names":["isEmpty","encode","decode","parseString","from","format","it"]}
|
|
1
|
+
{"version":3,"sources":["../../src/net/url.ts"],"sourcesContent":["import { Dictionary, NominalType } from '@bessemer/cornerstone/types'\nimport * as Uris from '@bessemer/cornerstone/net/uri'\nimport { Uri, UriBuilder, UriComponent, UriLiteral, UriLocation } from '@bessemer/cornerstone/net/uri'\nimport { Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Arrays from '@bessemer/cornerstone/array'\nimport { first, isEmpty } from '@bessemer/cornerstone/array'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport Zod from 'zod'\nimport * as Equalitors from '@bessemer/cornerstone/equalitor'\nimport { Equalitor } from '@bessemer/cornerstone/equalitor'\nimport { MergeExclusive } from 'type-fest'\nimport * as Objects from '@bessemer/cornerstone/object'\n\nexport const encode = Uris.encode\n\nexport const decode = Uris.decode\n\nexport type UrlLiteral = NominalType<UriLiteral, typeof Namespace>\n\nexport interface UrlLocation extends UriLocation {\n relative: boolean\n pathSegments: Array<string>\n parameters: Dictionary<string | Array<string>>\n}\n\nexport interface Url extends Uri {\n _type: typeof Namespace\n location: UrlLocation\n href: UrlLiteral\n}\n\nexport const Namespace = Uris.UrlNamespace\nexport const EqualBy: Equalitor<Url> = Equalitors.deepNatural()\n\ntype UrlBuilderPathPart = MergeExclusive<{ path?: string | null }, { pathSegments?: Array<string>; relative?: boolean }>\ntype UrlBuilderQueryPart = MergeExclusive<{ query?: string | null }, { parameters?: Dictionary<string | Array<string>> }>\ntype UrlBuilderLocationPart = UrlBuilderPathPart &\n UrlBuilderQueryPart & {\n fragment?: string | null\n }\n\nexport type UrlBuilder = UriBuilder & {\n location?: UrlBuilderLocationPart | null | undefined\n}\n\nexport type UrlLike = Url | Uri | UriLiteral | UrlLiteral | UrlBuilder\n\nexport const parseString = (value: string): Result<Url, ErrorEvent> => {\n const result = Uris.parseString(value)\n if (!result.isSuccess) {\n return result\n }\n\n return success(fromUri(result.value))\n}\n\nexport function from(value: UrlLike | string): Url\nexport function from(value: UrlLike | string | null): Url | null\nexport function from(value: UrlLike | string | undefined): Url | undefined\nexport function from(value: UrlLike | string | null | undefined): Url | null | undefined\nexport function from(value: UrlLike | string | null | undefined): Url | null | undefined {\n if (Objects.isNil(value)) {\n return value\n }\n if (isUrl(value)) {\n return value\n }\n if (Uris.isUri(value)) {\n return fromUri(value)\n }\n if (Strings.isString(value)) {\n return unpackResult(parseString(value))\n }\n\n return build(value as UrlBuilder)\n}\n\nexport function toLiteral(likeValue: UrlLike): UrlLiteral\nexport function toLiteral(likeValue: UrlLike | null): UrlLiteral | null\nexport function toLiteral(likeValue: UrlLike | undefined): UrlLiteral | undefined\nexport function toLiteral(likeValue: UrlLike | null | undefined): UrlLiteral | null | undefined\nexport function toLiteral(likeValue: UrlLike | null | undefined): UrlLiteral | null | undefined {\n if (Objects.isNil(likeValue)) {\n return likeValue\n }\n\n const value = from(likeValue)\n return format(value) as UrlLiteral\n}\n\nexport const SchemaLiteral = structuredTransform(Zod.string(), (it: string) => parseString(it).map((it) => toLiteral(it)))\n// JOHN need a schema for the object version...\n// export const SchemaInstance = structuredTransform(Zod.string(), parseString)\n\nexport const isUrl = (value: unknown): value is Url => {\n if (!Objects.isObject(value)) {\n return false\n }\n\n const uriValue = value as any as Url\n return uriValue._type === Namespace\n}\n\nexport const merge = (element: UrlLike, builder: UrlBuilder): Url => {\n const url = from(element)\n\n let location: UrlBuilderLocationPart | null | undefined\n if (Strings.isString(builder.location) || Objects.isNull(builder.location)) {\n location = builder.location\n } else {\n const usePathSegments = !Objects.isUndefined(builder.location?.pathSegments)\n const useParameters = !Objects.isUndefined(builder.location?.parameters)\n\n location = {\n ...(usePathSegments\n ? { pathSegments: builder.location?.pathSegments }\n : { path: Objects.isUndefined(builder.location?.path) ? url.location.path : builder.location.path }),\n ...(useParameters\n ? { parameters: builder.location?.parameters }\n : { query: Objects.isUndefined(builder.location?.query) ? url.location.query : builder.location.query }),\n fragment: Objects.isUndefined(builder.location?.fragment) ? url.location.fragment : builder.location.fragment,\n }\n }\n\n const uriBuilder: UriBuilder = {\n scheme: Objects.isUndefined(builder.scheme) ? url.scheme : builder.scheme,\n host: Objects.isUndefined(builder.host) ? url.host : builder.host,\n authentication: Objects.isUndefined(builder.authentication) ? url.authentication : builder.authentication,\n location,\n }\n\n return from(uriBuilder)\n}\n\nexport const format = Uris.format\n\nconst build = (builder: UrlBuilder): Url => {\n if ((builder.location?.relative ?? false) && Objects.isPresent(builder.host)) {\n throw new Error(`[${Namespace}]: Unable to construct a relative url with a non-null host: ${builder}`)\n }\n\n const uriBuilder = convertUrlBuilderToUriBuilder(builder)\n const uri = Uris.from(uriBuilder)\n return fromUri(uri)\n}\n\nconst convertUrlBuilderToUriBuilder = (builder: UrlBuilder): UriBuilder => {\n if (Objects.isNil(builder.location)) {\n if (Objects.isNil(builder.host)) {\n return {\n ...builder,\n location: { path: '/' },\n }\n }\n\n return builder\n }\n\n const relative = builder.location.relative ?? false\n\n let path = builder.location.path\n if (Objects.isPresent(builder.location.pathSegments)) {\n path = formatPathSegments(builder.location.pathSegments, Objects.isPresent(builder.host), relative)\n }\n\n let query = builder.location.query\n if (Objects.isPresent(builder.location.parameters)) {\n query = formatQueryParameters(builder.location.parameters)\n }\n\n return {\n ...builder,\n location: { path, query, fragment: builder.location.fragment },\n }\n}\n\nconst fromUri = (uri: Uri): Url => {\n let relative: boolean = false\n let pathSegments: Array<string> = []\n const parameters: Dictionary<string | Array<string>> = {}\n\n if (Objects.isPresent(uri.location.path)) {\n if (!uri.location.path.startsWith('/')) {\n relative = true\n }\n\n pathSegments = Strings.removeStart(uri.location.path, '/')\n .split('/')\n .filter((it) => !Strings.isBlank(it))\n .map((urlPathPart) => decode(urlPathPart))\n } else {\n if (Objects.isNil(uri.host)) {\n relative = true\n }\n }\n\n if (Objects.isPresent(uri.location.query)) {\n uri.location.query.split('&').forEach((parameterPair) => {\n let splitParameters = parameterPair.split('=')\n\n if (!Strings.isBlank(first(splitParameters))) {\n let key = decode(splitParameters[0]!)\n let value = ''\n if (splitParameters.length === 2) {\n value = splitParameters[1]!\n }\n if (Objects.isNil(parameters[key])) {\n parameters[key] = decode(value)\n } else if (!Array.isArray(parameters[key])) {\n let paramList = [parameters[key]]\n paramList.push(decode(value))\n parameters[key] = paramList\n } else {\n parameters[key].push(decode(value))\n }\n }\n })\n }\n\n const url: Url = {\n ...uri,\n _type: Namespace,\n location: {\n path: formatPathSegments(pathSegments, Objects.isPresent(uri.host), relative),\n relative,\n pathSegments,\n query: formatQueryParameters(parameters),\n parameters,\n fragment: uri.location.fragment,\n },\n href: uri.href as UrlLiteral,\n }\n\n url.href = format(url) as UrlLiteral\n return url\n}\n\nconst formatPathSegments = (pathSegments: Array<string>, hasHost: boolean, relative: boolean): UriComponent | null => {\n if (Arrays.isEmpty(pathSegments)) {\n if (!hasHost && !relative) {\n return '/'\n } else {\n return null\n }\n }\n\n return (relative ? '' : '/') + pathSegments.map((it) => encode(it)).join('/')\n}\n\nconst formatQueryParameters = (parameters: Dictionary<string | Array<string>>): UriComponent | null => {\n const parameterEntries = Object.entries(parameters)\n if (isEmpty(parameterEntries)) {\n return null\n }\n\n return Object.entries(parameters)\n .flatMap(([key, value]) => {\n if (Array.isArray(value)) {\n return value.map((it) => `${encode(key)}=${encode(it)}`)\n } else {\n return [`${encode(key)}=${encode(value)}`]\n }\n })\n .join('&')\n}\n\n// JOHN I don't know about these two methods...\nexport const getParameter = (url: UrlLike, name: string): string | undefined => {\n const parameter = from(url).location.parameters[name]\n if (Objects.isNil(parameter)) {\n return undefined\n }\n\n if (Array.isArray(parameter)) {\n throw new Error(`Expected a single parameter value but found multiple for parameter: ${name}`)\n }\n\n return parameter\n}\n\nexport const getJsonParameter = <T>(url: UrlLike, name: string): T | undefined => {\n const value = getParameter(url, name)\n return Objects.isPresent(value) ? JSON.parse(value) : undefined\n}\n"],"mappings":"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","names":["isEmpty","encode","decode","parseString","from","format","it"]}
|
package/dist/promise.d.ts
CHANGED
|
@@ -4,5 +4,6 @@ export type PromiseContext<T> = {
|
|
|
4
4
|
reject: (reason?: any) => void;
|
|
5
5
|
};
|
|
6
6
|
export declare const isPromise: <T>(element: T | Promise<T>) => element is Promise<T>;
|
|
7
|
+
export declare const toPromise: <T>(element: T | Promise<T>) => Promise<T>;
|
|
7
8
|
export declare const create: <T>() => PromiseContext<T>;
|
|
8
9
|
//# sourceMappingURL=promise.d.ts.map
|
package/dist/promise.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../src/promise.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;CAAE,CAAA;AAEpH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,IAAI,OAAO,CAAC,CAAC,CAE1E,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,OAAK,cAAc,CAAC,CAAC,CAS5C,CAAA"}
|
|
1
|
+
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../src/promise.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;CAAE,CAAA;AAEpH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,IAAI,OAAO,CAAC,CAAC,CAE1E,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAQ/D,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,OAAK,cAAc,CAAC,CAAC,CAS5C,CAAA"}
|
package/dist/promise.js
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
var isPromise = (element) => {
|
|
3
3
|
return typeof element.then === "function";
|
|
4
4
|
};
|
|
5
|
+
var toPromise = (element) => {
|
|
6
|
+
if (isPromise(element)) {
|
|
7
|
+
return element;
|
|
8
|
+
}
|
|
9
|
+
const { resolve, promise } = create();
|
|
10
|
+
resolve(element);
|
|
11
|
+
return promise;
|
|
12
|
+
};
|
|
5
13
|
var create = () => {
|
|
6
14
|
let resolveVar;
|
|
7
15
|
let rejectVar;
|
|
@@ -13,6 +21,7 @@ var create = () => {
|
|
|
13
21
|
};
|
|
14
22
|
export {
|
|
15
23
|
create,
|
|
16
|
-
isPromise
|
|
24
|
+
isPromise,
|
|
25
|
+
toPromise
|
|
17
26
|
};
|
|
18
27
|
//# sourceMappingURL=promise.js.map
|
package/dist/promise.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/promise.ts"],"sourcesContent":["export type PromiseContext<T> = { promise: Promise<T>; resolve: (value: T) => void; reject: (reason?: any) => void }\n\nexport const isPromise = <T>(element: T | Promise<T>): element is Promise<T> => {\n return typeof (element as Promise<T>).then === 'function'\n}\n\nexport const create = <T>(): PromiseContext<T> => {\n let resolveVar\n let rejectVar\n const promise = new Promise<T>((resolve, reject) => {\n resolveVar = resolve\n rejectVar = reject\n })\n\n return { promise, resolve: resolveVar!, reject: rejectVar! }\n}\n"],"mappings":";AAEO,IAAM,YAAY,CAAI,YAAmD;AAC9E,SAAO,OAAQ,QAAuB,SAAS;AACjD;AAEO,IAAM,SAAS,MAA4B;AAChD,MAAI;AACJ,MAAI;AACJ,QAAM,UAAU,IAAI,QAAW,CAAC,SAAS,WAAW;AAClD,iBAAa;AACb,gBAAY;AAAA,EACd,CAAC;AAED,SAAO,EAAE,SAAS,SAAS,YAAa,QAAQ,UAAW;AAC7D;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/promise.ts"],"sourcesContent":["export type PromiseContext<T> = { promise: Promise<T>; resolve: (value: T) => void; reject: (reason?: any) => void }\n\nexport const isPromise = <T>(element: T | Promise<T>): element is Promise<T> => {\n return typeof (element as Promise<T>).then === 'function'\n}\n\nexport const toPromise = <T>(element: T | Promise<T>): Promise<T> => {\n if (isPromise(element)) {\n return element\n }\n\n const { resolve, promise } = create<T>()\n resolve(element)\n return promise\n}\n\nexport const create = <T>(): PromiseContext<T> => {\n let resolveVar\n let rejectVar\n const promise = new Promise<T>((resolve, reject) => {\n resolveVar = resolve\n rejectVar = reject\n })\n\n return { promise, resolve: resolveVar!, reject: rejectVar! }\n}\n"],"mappings":";AAEO,IAAM,YAAY,CAAI,YAAmD;AAC9E,SAAO,OAAQ,QAAuB,SAAS;AACjD;AAEO,IAAM,YAAY,CAAI,YAAwC;AACnE,MAAI,UAAU,OAAO,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,SAAS,QAAQ,IAAI,OAAU;AACvC,UAAQ,OAAO;AACf,SAAO;AACT;AAEO,IAAM,SAAS,MAA4B;AAChD,MAAI;AACJ,MAAI;AACJ,QAAM,UAAU,IAAI,QAAW,CAAC,SAAS,WAAW;AAClD,iBAAa;AACb,gBAAY;AAAA,EACd,CAAC;AAED,SAAO,EAAE,SAAS,SAAS,YAAa,QAAQ,UAAW;AAC7D;","names":[]}
|
package/dist/result.d.ts
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import { Left, Right } from '@bessemer/cornerstone/either';
|
|
2
2
|
import { Throwable } from '@bessemer/cornerstone/types';
|
|
3
|
-
export type Success<
|
|
3
|
+
export type Success<SuccessType> = Omit<Right<SuccessType>, 'map' | 'mapLeft'> & {
|
|
4
4
|
isSuccess: true;
|
|
5
|
+
getOrThrow: () => SuccessType;
|
|
6
|
+
map: <T>(mapper: (element: SuccessType) => T) => Success<T>;
|
|
7
|
+
mapLeft: () => Success<SuccessType>;
|
|
8
|
+
[Symbol.iterator](): Generator<Result<SuccessType, never>, SuccessType>;
|
|
5
9
|
};
|
|
6
|
-
export type Failure<
|
|
10
|
+
export type Failure<FailureType = unknown> = Omit<Left<FailureType>, 'map' | 'mapLeft'> & {
|
|
7
11
|
isSuccess: false;
|
|
12
|
+
getOrThrow: () => never;
|
|
13
|
+
map: () => Failure<FailureType>;
|
|
14
|
+
mapLeft: <T>(mapper: (element: FailureType) => T) => Failure<T>;
|
|
15
|
+
[Symbol.iterator](): Generator<Result<never, FailureType>, never>;
|
|
8
16
|
};
|
|
9
|
-
export type Result<
|
|
17
|
+
export type Result<SuccessType, FailureType = unknown> = Failure<FailureType> | Success<SuccessType>;
|
|
10
18
|
export type AsyncResult<T, N = Throwable> = Promise<Result<T, N>>;
|
|
11
19
|
export declare const success: <T>(value: T) => Success<T>;
|
|
12
20
|
export declare function failure(): Failure<never>;
|
|
13
21
|
export declare function failure<N>(failure: N): Failure<N>;
|
|
14
|
-
export declare const getValueOrThrow: <T>(result: Result<T>) => T;
|
|
15
22
|
export declare function tryValue<SOURCE_VALUE>(resolver: () => Promise<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>;
|
|
16
23
|
export declare function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE): Result<SOURCE_VALUE>;
|
|
17
24
|
export declare function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE>): Result<SOURCE_VALUE>;
|
|
18
25
|
export declare function tryResult<SOURCE_VALUE>(resolver: () => AsyncResult<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>;
|
|
19
|
-
export declare function
|
|
26
|
+
export declare function gen<TGen extends () => Generator<Result<any, any>>>(generatorFn: TGen): TGen extends () => Generator<Result<any, infer L>, infer R> ? Result<R, L> : never;
|
|
27
|
+
export declare function gen<TGen extends () => AsyncGenerator<Result<any, any>>>(generatorFn: TGen): Promise<TGen extends () => AsyncGenerator<Result<any, infer L>, infer R> ? Result<R, L> : never>;
|
|
20
28
|
//# sourceMappingURL=result.d.ts.map
|
package/dist/result.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"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"}
|
package/dist/result.js
CHANGED
|
@@ -1,19 +1,53 @@
|
|
|
1
1
|
// src/result.ts
|
|
2
|
-
import
|
|
2
|
+
import { buildGenerator, LeftImpl, RightImpl } from "@bessemer/cornerstone/either";
|
|
3
3
|
import { isPromise } from "@bessemer/cornerstone/promise";
|
|
4
|
+
var SuccessImpl = class extends RightImpl {
|
|
5
|
+
isSuccess = true;
|
|
6
|
+
constructor(value) {
|
|
7
|
+
super(value);
|
|
8
|
+
}
|
|
9
|
+
getOrThrow() {
|
|
10
|
+
return this.value;
|
|
11
|
+
}
|
|
12
|
+
map = (mapper) => {
|
|
13
|
+
return success(mapper(this.value));
|
|
14
|
+
};
|
|
15
|
+
mapLeft = () => {
|
|
16
|
+
return this;
|
|
17
|
+
};
|
|
18
|
+
[Symbol.iterator]() {
|
|
19
|
+
return function* () {
|
|
20
|
+
return this.value;
|
|
21
|
+
}.call(this);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
var FailureImpl = class extends LeftImpl {
|
|
25
|
+
isSuccess = false;
|
|
26
|
+
constructor(value) {
|
|
27
|
+
super(value);
|
|
28
|
+
}
|
|
29
|
+
getOrThrow() {
|
|
30
|
+
throw this.value;
|
|
31
|
+
}
|
|
32
|
+
map = () => {
|
|
33
|
+
return this;
|
|
34
|
+
};
|
|
35
|
+
mapLeft = (mapper) => {
|
|
36
|
+
return failure(mapper(this.value));
|
|
37
|
+
};
|
|
38
|
+
[Symbol.iterator]() {
|
|
39
|
+
return function* () {
|
|
40
|
+
yield this;
|
|
41
|
+
throw new Error("Illegal State");
|
|
42
|
+
}.call(this);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
4
45
|
var success = (value) => {
|
|
5
|
-
return
|
|
46
|
+
return new SuccessImpl(value);
|
|
6
47
|
};
|
|
7
48
|
function failure(failure2) {
|
|
8
|
-
return
|
|
49
|
+
return new FailureImpl(failure2);
|
|
9
50
|
}
|
|
10
|
-
var getValueOrThrow = (result) => {
|
|
11
|
-
if (result.isSuccess) {
|
|
12
|
-
return result.value;
|
|
13
|
-
} else {
|
|
14
|
-
throw result.value;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
51
|
function tryValue(resolver) {
|
|
18
52
|
try {
|
|
19
53
|
let result = resolver();
|
|
@@ -38,20 +72,13 @@ function tryResult(resolver) {
|
|
|
38
72
|
return failure(e);
|
|
39
73
|
}
|
|
40
74
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
...result,
|
|
45
|
-
value: valueMapper(result.value)
|
|
46
|
-
};
|
|
47
|
-
} else {
|
|
48
|
-
return result;
|
|
49
|
-
}
|
|
75
|
+
var generator = buildGenerator((it) => success(it));
|
|
76
|
+
function gen(generatorFn) {
|
|
77
|
+
return generator(generatorFn);
|
|
50
78
|
}
|
|
51
79
|
export {
|
|
52
80
|
failure,
|
|
53
|
-
|
|
54
|
-
mapResult,
|
|
81
|
+
gen,
|
|
55
82
|
success,
|
|
56
83
|
tryResult,
|
|
57
84
|
tryValue
|
package/dist/result.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/result.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../src/result.ts"],"sourcesContent":["import { buildGenerator, Left, LeftImpl, Right, RightImpl } from '@bessemer/cornerstone/either'\nimport { Throwable } from '@bessemer/cornerstone/types'\nimport { isPromise } from '@bessemer/cornerstone/promise'\n\nexport type Success<SuccessType> = Omit<Right<SuccessType>, 'map' | 'mapLeft'> & {\n isSuccess: true\n getOrThrow: () => SuccessType\n map: <T>(mapper: (element: SuccessType) => T) => Success<T>\n mapLeft: () => Success<SuccessType>\n [Symbol.iterator](): Generator<Result<SuccessType, never>, SuccessType>\n}\n\nexport type Failure<FailureType = unknown> = Omit<Left<FailureType>, 'map' | 'mapLeft'> & {\n isSuccess: false\n getOrThrow: () => never\n map: () => Failure<FailureType>\n mapLeft: <T>(mapper: (element: FailureType) => T) => Failure<T>\n [Symbol.iterator](): Generator<Result<never, FailureType>, never>\n}\n\nexport type Result<SuccessType, FailureType = unknown> = Failure<FailureType> | Success<SuccessType>\n\nclass SuccessImpl<SuccessType> extends RightImpl<SuccessType> implements Success<SuccessType> {\n public readonly isSuccess = true\n\n constructor(value: SuccessType) {\n super(value)\n }\n\n getOrThrow(): SuccessType {\n return this.value\n }\n\n override map = <T>(mapper: (element: SuccessType) => T): Success<T> => {\n return success(mapper(this.value))\n }\n\n override mapLeft = (): Success<SuccessType> => {\n return this\n };\n\n override [Symbol.iterator](): Generator<Result<SuccessType, never>, SuccessType> {\n return function* (this: Success<SuccessType>) {\n return this.value\n }.call(this)\n }\n}\n\nclass FailureImpl<FailureType> extends LeftImpl<FailureType> implements Failure<FailureType> {\n public readonly isSuccess = false\n\n constructor(value: FailureType) {\n super(value)\n }\n\n getOrThrow(): never {\n throw this.value\n }\n\n override map = (): Failure<FailureType> => {\n return this\n }\n\n override mapLeft = <T>(mapper: (element: FailureType) => T): Failure<T> => {\n return failure(mapper(this.value))\n };\n\n override [Symbol.iterator](): Generator<Result<never, FailureType>, never> {\n return function* (this: Failure<FailureType>) {\n yield this as any\n throw new Error('Illegal State')\n }.call(this)\n }\n}\n\nexport type AsyncResult<T, N = Throwable> = Promise<Result<T, N>>\n\nexport const success = <T>(value: T): Success<T> => {\n return new SuccessImpl<T>(value)\n}\n\nexport function failure(): Failure<never>\nexport function failure<N>(failure: N): Failure<N>\nexport function failure(failure?: unknown): Failure {\n return new FailureImpl<unknown>(failure)\n}\n\nexport function tryValue<SOURCE_VALUE>(resolver: () => Promise<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>\nexport function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE): Result<SOURCE_VALUE>\nexport function tryValue<SOURCE_VALUE>(resolver: () => SOURCE_VALUE | Promise<SOURCE_VALUE>): Result<SOURCE_VALUE> | Promise<Result<SOURCE_VALUE>> {\n try {\n let result = resolver()\n if (isPromise(result)) {\n return result.then((it) => success(it)).catch((it) => failure(it))\n } else {\n return success(result)\n }\n } catch (e: any) {\n return failure(e)\n }\n}\n\nexport function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE>): Result<SOURCE_VALUE>\nexport function tryResult<SOURCE_VALUE>(resolver: () => AsyncResult<SOURCE_VALUE>): AsyncResult<SOURCE_VALUE>\nexport function tryResult<SOURCE_VALUE>(resolver: () => Result<SOURCE_VALUE> | AsyncResult<SOURCE_VALUE>): ReturnType<typeof resolver> {\n try {\n let result = resolver()\n if (isPromise(result)) {\n return result.catch((it) => failure(it))\n } else {\n return result\n }\n } catch (e: any) {\n return failure(e)\n }\n}\n\nconst generator = buildGenerator((it) => success(it) as Result<any, any>)\n\nexport function gen<TGen extends () => Generator<Result<any, any>>>(\n generatorFn: TGen\n): TGen extends () => Generator<Result<any, infer L>, infer R> ? Result<R, L> : never\nexport function gen<TGen extends () => AsyncGenerator<Result<any, any>>>(\n generatorFn: TGen\n): Promise<TGen extends () => AsyncGenerator<Result<any, infer L>, infer R> ? Result<R, L> : never>\nexport function gen<TGen extends () => Generator<Result<any, any>> | AsyncGenerator<Result<any, any>>>(\n generatorFn: TGen\n): TGen extends () => Generator<Result<any, infer L>, infer R>\n ? Result<R, L>\n : TGen extends () => AsyncGenerator<Result<any, infer L>, infer R>\n ? Promise<Result<R, L>>\n : never {\n return generator(generatorFn)\n}\n"],"mappings":";AAAA,SAAS,gBAAsB,UAAiB,iBAAiB;AAEjE,SAAS,iBAAiB;AAoB1B,IAAM,cAAN,cAAuC,UAAuD;AAAA,EAC5E,YAAY;AAAA,EAE5B,YAAY,OAAoB;AAC9B,UAAM,KAAK;AAAA,EACb;AAAA,EAEA,aAA0B;AACxB,WAAO,KAAK;AAAA,EACd;AAAA,EAES,MAAM,CAAI,WAAoD;AACrE,WAAO,QAAQ,OAAO,KAAK,KAAK,CAAC;AAAA,EACnC;AAAA,EAES,UAAU,MAA4B;AAC7C,WAAO;AAAA,EACT;AAAA,EAEA,CAAU,OAAO,QAAQ,IAAwD;AAC/E,WAAO,aAAuC;AAC5C,aAAO,KAAK;AAAA,IACd,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAEA,IAAM,cAAN,cAAuC,SAAsD;AAAA,EAC3E,YAAY;AAAA,EAE5B,YAAY,OAAoB;AAC9B,UAAM,KAAK;AAAA,EACb;AAAA,EAEA,aAAoB;AAClB,UAAM,KAAK;AAAA,EACb;AAAA,EAES,MAAM,MAA4B;AACzC,WAAO;AAAA,EACT;AAAA,EAES,UAAU,CAAI,WAAoD;AACzE,WAAO,QAAQ,OAAO,KAAK,KAAK,CAAC;AAAA,EACnC;AAAA,EAEA,CAAU,OAAO,QAAQ,IAAkD;AACzE,WAAO,aAAuC;AAC5C,YAAM;AACN,YAAM,IAAI,MAAM,eAAe;AAAA,IACjC,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAIO,IAAM,UAAU,CAAI,UAAyB;AAClD,SAAO,IAAI,YAAe,KAAK;AACjC;AAIO,SAAS,QAAQA,UAA4B;AAClD,SAAO,IAAI,YAAqBA,QAAO;AACzC;AAIO,SAAS,SAAuB,UAA4G;AACjJ,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO,OAAO,KAAK,CAAC,OAAO,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC;AAAA,IACnE,OAAO;AACL,aAAO,QAAQ,MAAM;AAAA,IACvB;AAAA,EACF,SAAS,GAAQ;AACf,WAAO,QAAQ,CAAC;AAAA,EAClB;AACF;AAIO,SAAS,UAAwB,UAA+F;AACrI,MAAI;AACF,QAAI,SAAS,SAAS;AACtB,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO,OAAO,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC;AAAA,IACzC,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF,SAAS,GAAQ;AACf,WAAO,QAAQ,CAAC;AAAA,EAClB;AACF;AAEA,IAAM,YAAY,eAAe,CAAC,OAAO,QAAQ,EAAE,CAAqB;AAQjE,SAAS,IACd,aAKQ;AACR,SAAO,UAAU,WAAW;AAC9B;","names":["failure"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/temporal/duration.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAG7D,OAAO,
|
|
1
|
+
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/temporal/duration.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { Temporal } from "@js-temporal/polyfill";
|
|
|
4
4
|
import { createNamespace } from "@bessemer/cornerstone/resource-key";
|
|
5
5
|
import { fromComparator } from "@bessemer/cornerstone/equalitor";
|
|
6
6
|
import { structuredTransform } from "@bessemer/cornerstone/zod-util";
|
|
7
|
-
import { failure,
|
|
7
|
+
import { failure, success } from "@bessemer/cornerstone/result";
|
|
8
8
|
import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
|
|
9
9
|
import { isError } from "@bessemer/cornerstone/error/error";
|
|
10
10
|
import { TimeUnit } from "@bessemer/cornerstone/temporal/chrono";
|
|
@@ -41,7 +41,7 @@ function toLiteral(value) {
|
|
|
41
41
|
}
|
|
42
42
|
return from(value).toString();
|
|
43
43
|
}
|
|
44
|
-
var SchemaLiteral = structuredTransform(Zod.string(), (it) =>
|
|
44
|
+
var SchemaLiteral = structuredTransform(Zod.string(), (it) => parseString(it).map((it2) => toLiteral(it2)));
|
|
45
45
|
var SchemaInstance = structuredTransform(Zod.string(), parseString);
|
|
46
46
|
var isDuration = (value) => {
|
|
47
47
|
return value instanceof Temporal.Duration;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/temporal/duration.ts"],"sourcesContent":["import Zod from 'zod'\nimport { Temporal } from '@js-temporal/polyfill'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport { failure, mapResult, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { isError } from '@bessemer/cornerstone/error/error'\nimport { TimeUnit } from '@bessemer/cornerstone/temporal/chrono'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { isNil } from '@bessemer/cornerstone/object'\n\nexport type Duration = Temporal.Duration\nexport const Namespace = createNamespace('duration')\nexport type DurationLiteral = NominalType<string, typeof Namespace>\nexport type DurationBuilder = {\n hours?: number\n minutes?: number\n seconds?: number\n milliseconds?: number\n microseconds?: number\n nanoseconds?: number\n}\nexport type DurationLike = Duration | DurationLiteral | DurationBuilder\n\nexport function from(value: DurationLike | string): Duration\nexport function from(value: DurationLike | string | null): Duration | null\nexport function from(value: DurationLike | string | undefined): Duration | undefined\nexport function from(value: DurationLike | string | null | undefined): Duration | null | undefined\nexport function from(value: DurationLike | string | null | undefined): Duration | null | undefined {\n if (isNil(value)) {\n return value\n }\n\n if (value instanceof Temporal.Duration) {\n return value\n }\n if (isString(value)) {\n return unpackResult(parseString(value))\n }\n\n return Temporal.Duration.from(value)\n}\n\nexport const CompareBy: Comparator<Duration> = (first: Duration, second: Duration): number => Temporal.Duration.compare(first, second)\nexport const EqualBy = fromComparator(CompareBy)\n\nexport const parseString = (value: string): Result<Duration, ErrorEvent> => {\n try {\n return success(Temporal.Duration.from(value))\n } catch (e) {\n if (!isError(e)) {\n throw e\n }\n\n return failure(invalidValue(value, { namespace: Namespace, message: e.message }))\n }\n}\n\nexport function toLiteral(value: DurationLike): DurationLiteral\nexport function toLiteral(value: DurationLike | null): DurationLiteral | null\nexport function toLiteral(value: DurationLike | undefined): DurationLiteral | undefined\nexport function toLiteral(value: DurationLike | null | undefined): DurationLiteral | null | undefined\nexport function toLiteral(value: DurationLike | null | undefined): DurationLiteral | null | undefined {\n if (isNil(value)) {\n return value\n }\n\n return from(value).toString() as DurationLiteral\n}\n\nexport const SchemaLiteral = structuredTransform(Zod.string(), (it: string) => mapResult(parseString(it), (it) => toLiteral(it)))\nexport const SchemaInstance = structuredTransform(Zod.string(), parseString)\n\nexport const isDuration = (value: unknown): value is Duration => {\n return value instanceof Temporal.Duration\n}\n\nexport const merge = (element: DurationLike, builder: DurationBuilder): Duration => {\n return from(element).with(builder)\n}\n\nexport const fromMilliseconds = (value: number): Duration => {\n return from({ milliseconds: value })\n}\n\nexport const toMilliseconds = (duration: DurationLike): number => {\n return from(duration).total(TimeUnit.Millisecond)\n}\n\nexport const fromSeconds = (value: number): Duration => {\n return from({ seconds: value })\n}\n\nexport const toSeconds = (duration: DurationLike): number => {\n return from(duration).total(TimeUnit.Second)\n}\n\nexport const fromMinutes = (value: number): Duration => {\n return from({ minutes: value })\n}\n\nexport const toMinutes = (duration: DurationLike): number => {\n return from(duration).total(TimeUnit.Minute)\n}\n\nexport const fromHours = (value: number): Duration => {\n return from({ hours: value })\n}\n\nexport const toHours = (duration: DurationLike): number => {\n return from(duration).total(TimeUnit.Hour)\n}\n\nexport const fromUnit = (value: number, timeUnit: TimeUnit): Duration => {\n switch (timeUnit) {\n case TimeUnit.Nanosecond:\n return from({ nanoseconds: value })\n case TimeUnit.Microsecond:\n return from({ microseconds: value })\n case TimeUnit.Millisecond:\n return from({ milliseconds: value })\n case TimeUnit.Second:\n return from({ seconds: value })\n case TimeUnit.Minute:\n return from({ minutes: value })\n case TimeUnit.Hour:\n return from({ hours: value })\n }\n}\n\nexport const toUnit = (duration: DurationLike, timeUnit: TimeUnit): number => {\n return from(duration).total(timeUnit)\n}\n\nexport const isZero = (duration: DurationLike): boolean => {\n return EqualBy(from(duration), Zero)\n}\n\nexport const round = (element: DurationLike, unit: TimeUnit): Duration => {\n return from(element).round({ smallestUnit: unit })\n}\n\nexport const add = (...durations: Array<DurationLike>): Duration => {\n return durations.map((it) => from(it)).reduce((first, second) => first.add(second), Zero)\n}\n\nexport const subtract = (...durations: Array<DurationLike>): Duration => {\n if (durations.length === 0) {\n return Zero\n }\n\n const instances = durations.map((it) => from(it))\n return instances.slice(1).reduce((result, current) => result.subtract(current), instances[0]!)\n}\n\nexport const negate = (element: DurationLike): Duration => {\n return from(element).negated()\n}\n\nexport function isEqual(element: DurationLike, other: DurationLike): boolean\nexport function isEqual(element: DurationLike | null, other: DurationLike | null): boolean\nexport function isEqual(element: DurationLike | undefined, other: DurationLike | undefined): boolean\nexport function isEqual(element: DurationLike | null | undefined, other: DurationLike | null | undefined): boolean {\n if (isNil(element) || isNil(other)) {\n return element === other\n }\n\n return EqualBy(from(element), from(other))\n}\n\nexport const isLess = (element: DurationLike, other: DurationLike): boolean => {\n return CompareBy(from(element), from(other)) < 0\n}\n\nexport const isGreater = (element: DurationLike, other: DurationLike): boolean => {\n return CompareBy(from(element), from(other)) > 0\n}\n\nexport const Zero = from({ nanoseconds: 0 })\nexport const OneMillisecond = fromMilliseconds(1)\nexport const OneSecond = fromSeconds(1)\nexport const OneMinute = fromMinutes(1)\nexport const OneHour = fromHours(1)\nexport const OneDay = fromHours(24)\n"],"mappings":"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","names":["it"]}
|
|
1
|
+
{"version":3,"sources":["../../src/temporal/duration.ts"],"sourcesContent":["import Zod from 'zod'\nimport { Temporal } from '@js-temporal/polyfill'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport { failure, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { isError } from '@bessemer/cornerstone/error/error'\nimport { TimeUnit } from '@bessemer/cornerstone/temporal/chrono'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { isNil } from '@bessemer/cornerstone/object'\n\nexport type Duration = Temporal.Duration\nexport const Namespace = createNamespace('duration')\nexport type DurationLiteral = NominalType<string, typeof Namespace>\nexport type DurationBuilder = {\n hours?: number\n minutes?: number\n seconds?: number\n milliseconds?: number\n microseconds?: number\n nanoseconds?: number\n}\nexport type DurationLike = Duration | DurationLiteral | DurationBuilder\n\nexport function from(value: DurationLike | string): Duration\nexport function from(value: DurationLike | string | null): Duration | null\nexport function from(value: DurationLike | string | undefined): Duration | undefined\nexport function from(value: DurationLike | string | null | undefined): Duration | null | undefined\nexport function from(value: DurationLike | string | null | undefined): Duration | null | undefined {\n if (isNil(value)) {\n return value\n }\n\n if (value instanceof Temporal.Duration) {\n return value\n }\n if (isString(value)) {\n return unpackResult(parseString(value))\n }\n\n return Temporal.Duration.from(value)\n}\n\nexport const CompareBy: Comparator<Duration> = (first: Duration, second: Duration): number => Temporal.Duration.compare(first, second)\nexport const EqualBy = fromComparator(CompareBy)\n\nexport const parseString = (value: string): Result<Duration, ErrorEvent> => {\n try {\n return success(Temporal.Duration.from(value))\n } catch (e) {\n if (!isError(e)) {\n throw e\n }\n\n return failure(invalidValue(value, { namespace: Namespace, message: e.message }))\n }\n}\n\nexport function toLiteral(value: DurationLike): DurationLiteral\nexport function toLiteral(value: DurationLike | null): DurationLiteral | null\nexport function toLiteral(value: DurationLike | undefined): DurationLiteral | undefined\nexport function toLiteral(value: DurationLike | null | undefined): DurationLiteral | null | undefined\nexport function toLiteral(value: DurationLike | null | undefined): DurationLiteral | null | undefined {\n if (isNil(value)) {\n return value\n }\n\n return from(value).toString() as DurationLiteral\n}\n\nexport const SchemaLiteral = structuredTransform(Zod.string(), (it: string) => parseString(it).map((it) => toLiteral(it)))\nexport const SchemaInstance = structuredTransform(Zod.string(), parseString)\n\nexport const isDuration = (value: unknown): value is Duration => {\n return value instanceof Temporal.Duration\n}\n\nexport const merge = (element: DurationLike, builder: DurationBuilder): Duration => {\n return from(element).with(builder)\n}\n\nexport const fromMilliseconds = (value: number): Duration => {\n return from({ milliseconds: value })\n}\n\nexport const toMilliseconds = (duration: DurationLike): number => {\n return from(duration).total(TimeUnit.Millisecond)\n}\n\nexport const fromSeconds = (value: number): Duration => {\n return from({ seconds: value })\n}\n\nexport const toSeconds = (duration: DurationLike): number => {\n return from(duration).total(TimeUnit.Second)\n}\n\nexport const fromMinutes = (value: number): Duration => {\n return from({ minutes: value })\n}\n\nexport const toMinutes = (duration: DurationLike): number => {\n return from(duration).total(TimeUnit.Minute)\n}\n\nexport const fromHours = (value: number): Duration => {\n return from({ hours: value })\n}\n\nexport const toHours = (duration: DurationLike): number => {\n return from(duration).total(TimeUnit.Hour)\n}\n\nexport const fromUnit = (value: number, timeUnit: TimeUnit): Duration => {\n switch (timeUnit) {\n case TimeUnit.Nanosecond:\n return from({ nanoseconds: value })\n case TimeUnit.Microsecond:\n return from({ microseconds: value })\n case TimeUnit.Millisecond:\n return from({ milliseconds: value })\n case TimeUnit.Second:\n return from({ seconds: value })\n case TimeUnit.Minute:\n return from({ minutes: value })\n case TimeUnit.Hour:\n return from({ hours: value })\n }\n}\n\nexport const toUnit = (duration: DurationLike, timeUnit: TimeUnit): number => {\n return from(duration).total(timeUnit)\n}\n\nexport const isZero = (duration: DurationLike): boolean => {\n return EqualBy(from(duration), Zero)\n}\n\nexport const round = (element: DurationLike, unit: TimeUnit): Duration => {\n return from(element).round({ smallestUnit: unit })\n}\n\nexport const add = (...durations: Array<DurationLike>): Duration => {\n return durations.map((it) => from(it)).reduce((first, second) => first.add(second), Zero)\n}\n\nexport const subtract = (...durations: Array<DurationLike>): Duration => {\n if (durations.length === 0) {\n return Zero\n }\n\n const instances = durations.map((it) => from(it))\n return instances.slice(1).reduce((result, current) => result.subtract(current), instances[0]!)\n}\n\nexport const negate = (element: DurationLike): Duration => {\n return from(element).negated()\n}\n\nexport function isEqual(element: DurationLike, other: DurationLike): boolean\nexport function isEqual(element: DurationLike | null, other: DurationLike | null): boolean\nexport function isEqual(element: DurationLike | undefined, other: DurationLike | undefined): boolean\nexport function isEqual(element: DurationLike | null | undefined, other: DurationLike | null | undefined): boolean {\n if (isNil(element) || isNil(other)) {\n return element === other\n }\n\n return EqualBy(from(element), from(other))\n}\n\nexport const isLess = (element: DurationLike, other: DurationLike): boolean => {\n return CompareBy(from(element), from(other)) < 0\n}\n\nexport const isGreater = (element: DurationLike, other: DurationLike): boolean => {\n return CompareBy(from(element), from(other)) > 0\n}\n\nexport const Zero = from({ nanoseconds: 0 })\nexport const OneMillisecond = fromMilliseconds(1)\nexport const OneSecond = fromSeconds(1)\nexport const OneMinute = fromMinutes(1)\nexport const OneHour = fromHours(1)\nexport const OneDay = fromHours(24)\n"],"mappings":";AAAA,OAAO,SAAS;AAChB,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAGhC,SAAS,sBAAsB;AAC/B,SAAS,2BAA2B;AACpC,SAAS,SAAiB,eAAe;AACzC,SAAqB,cAAc,oBAAoB;AACvD,SAAS,eAAe;AACxB,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AACzB,SAAS,aAAa;AAGf,IAAM,YAAY,gBAAgB,UAAU;AAgB5C,SAAS,KAAK,OAA8E;AACjG,MAAI,MAAM,KAAK,GAAG;AAChB,WAAO;AAAA,EACT;AAEA,MAAI,iBAAiB,SAAS,UAAU;AACtC,WAAO;AAAA,EACT;AACA,MAAI,SAAS,KAAK,GAAG;AACnB,WAAO,aAAa,YAAY,KAAK,CAAC;AAAA,EACxC;AAEA,SAAO,SAAS,SAAS,KAAK,KAAK;AACrC;AAEO,IAAM,YAAkC,CAAC,OAAiB,WAA6B,SAAS,SAAS,QAAQ,OAAO,MAAM;AAC9H,IAAM,UAAU,eAAe,SAAS;AAExC,IAAM,cAAc,CAAC,UAAgD;AAC1E,MAAI;AACF,WAAO,QAAQ,SAAS,SAAS,KAAK,KAAK,CAAC;AAAA,EAC9C,SAAS,GAAG;AACV,QAAI,CAAC,QAAQ,CAAC,GAAG;AACf,YAAM;AAAA,IACR;AAEA,WAAO,QAAQ,aAAa,OAAO,EAAE,WAAW,WAAW,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,EAClF;AACF;AAMO,SAAS,UAAU,OAA4E;AACpG,MAAI,MAAM,KAAK,GAAG;AAChB,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,KAAK,EAAE,SAAS;AAC9B;AAEO,IAAM,gBAAgB,oBAAoB,IAAI,OAAO,GAAG,CAAC,OAAe,YAAY,EAAE,EAAE,IAAI,CAACA,QAAO,UAAUA,GAAE,CAAC,CAAC;AAClH,IAAM,iBAAiB,oBAAoB,IAAI,OAAO,GAAG,WAAW;AAEpE,IAAM,aAAa,CAAC,UAAsC;AAC/D,SAAO,iBAAiB,SAAS;AACnC;AAEO,IAAM,QAAQ,CAAC,SAAuB,YAAuC;AAClF,SAAO,KAAK,OAAO,EAAE,KAAK,OAAO;AACnC;AAEO,IAAM,mBAAmB,CAAC,UAA4B;AAC3D,SAAO,KAAK,EAAE,cAAc,MAAM,CAAC;AACrC;AAEO,IAAM,iBAAiB,CAAC,aAAmC;AAChE,SAAO,KAAK,QAAQ,EAAE,MAAM,SAAS,WAAW;AAClD;AAEO,IAAM,cAAc,CAAC,UAA4B;AACtD,SAAO,KAAK,EAAE,SAAS,MAAM,CAAC;AAChC;AAEO,IAAM,YAAY,CAAC,aAAmC;AAC3D,SAAO,KAAK,QAAQ,EAAE,MAAM,SAAS,MAAM;AAC7C;AAEO,IAAM,cAAc,CAAC,UAA4B;AACtD,SAAO,KAAK,EAAE,SAAS,MAAM,CAAC;AAChC;AAEO,IAAM,YAAY,CAAC,aAAmC;AAC3D,SAAO,KAAK,QAAQ,EAAE,MAAM,SAAS,MAAM;AAC7C;AAEO,IAAM,YAAY,CAAC,UAA4B;AACpD,SAAO,KAAK,EAAE,OAAO,MAAM,CAAC;AAC9B;AAEO,IAAM,UAAU,CAAC,aAAmC;AACzD,SAAO,KAAK,QAAQ,EAAE,MAAM,SAAS,IAAI;AAC3C;AAEO,IAAM,WAAW,CAAC,OAAe,aAAiC;AACvE,UAAQ,UAAU;AAAA,IAChB,KAAK,SAAS;AACZ,aAAO,KAAK,EAAE,aAAa,MAAM,CAAC;AAAA,IACpC,KAAK,SAAS;AACZ,aAAO,KAAK,EAAE,cAAc,MAAM,CAAC;AAAA,IACrC,KAAK,SAAS;AACZ,aAAO,KAAK,EAAE,cAAc,MAAM,CAAC;AAAA,IACrC,KAAK,SAAS;AACZ,aAAO,KAAK,EAAE,SAAS,MAAM,CAAC;AAAA,IAChC,KAAK,SAAS;AACZ,aAAO,KAAK,EAAE,SAAS,MAAM,CAAC;AAAA,IAChC,KAAK,SAAS;AACZ,aAAO,KAAK,EAAE,OAAO,MAAM,CAAC;AAAA,EAChC;AACF;AAEO,IAAM,SAAS,CAAC,UAAwB,aAA+B;AAC5E,SAAO,KAAK,QAAQ,EAAE,MAAM,QAAQ;AACtC;AAEO,IAAM,SAAS,CAAC,aAAoC;AACzD,SAAO,QAAQ,KAAK,QAAQ,GAAG,IAAI;AACrC;AAEO,IAAM,QAAQ,CAAC,SAAuB,SAA6B;AACxE,SAAO,KAAK,OAAO,EAAE,MAAM,EAAE,cAAc,KAAK,CAAC;AACnD;AAEO,IAAM,MAAM,IAAI,cAA6C;AAClE,SAAO,UAAU,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,MAAM,IAAI,MAAM,GAAG,IAAI;AAC1F;AAEO,IAAM,WAAW,IAAI,cAA6C;AACvE,MAAI,UAAU,WAAW,GAAG;AAC1B,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,UAAU,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC;AAChD,SAAO,UAAU,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,YAAY,OAAO,SAAS,OAAO,GAAG,UAAU,CAAC,CAAE;AAC/F;AAEO,IAAM,SAAS,CAAC,YAAoC;AACzD,SAAO,KAAK,OAAO,EAAE,QAAQ;AAC/B;AAKO,SAAS,QAAQ,SAA0C,OAAiD;AACjH,MAAI,MAAM,OAAO,KAAK,MAAM,KAAK,GAAG;AAClC,WAAO,YAAY;AAAA,EACrB;AAEA,SAAO,QAAQ,KAAK,OAAO,GAAG,KAAK,KAAK,CAAC;AAC3C;AAEO,IAAM,SAAS,CAAC,SAAuB,UAAiC;AAC7E,SAAO,UAAU,KAAK,OAAO,GAAG,KAAK,KAAK,CAAC,IAAI;AACjD;AAEO,IAAM,YAAY,CAAC,SAAuB,UAAiC;AAChF,SAAO,UAAU,KAAK,OAAO,GAAG,KAAK,KAAK,CAAC,IAAI;AACjD;AAEO,IAAM,OAAO,KAAK,EAAE,aAAa,EAAE,CAAC;AACpC,IAAM,iBAAiB,iBAAiB,CAAC;AACzC,IAAM,YAAY,YAAY,CAAC;AAC/B,IAAM,YAAY,YAAY,CAAC;AAC/B,IAAM,UAAU,UAAU,CAAC;AAC3B,IAAM,SAAS,UAAU,EAAE;","names":["it"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instant.d.ts","sourceRoot":"","sources":["../../src/temporal/instant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D,OAAO,
|
|
1
|
+
{"version":3,"file":"instant.d.ts","sourceRoot":"","sources":["../../src/temporal/instant.ts"],"names":[],"mappings":"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"}
|
package/dist/temporal/instant.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Temporal } from "@js-temporal/polyfill";
|
|
3
3
|
import { createNamespace } from "@bessemer/cornerstone/resource-key";
|
|
4
4
|
import { fromComparator } from "@bessemer/cornerstone/equalitor";
|
|
5
|
-
import { failure,
|
|
5
|
+
import { failure, success } from "@bessemer/cornerstone/result";
|
|
6
6
|
import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
|
|
7
7
|
import { isError } from "@bessemer/cornerstone/error/error";
|
|
8
8
|
import { structuredTransform } from "@bessemer/cornerstone/zod-util";
|
|
@@ -50,7 +50,7 @@ function toDate(value) {
|
|
|
50
50
|
}
|
|
51
51
|
return new Date(from(value).epochMilliseconds);
|
|
52
52
|
}
|
|
53
|
-
var SchemaLiteral = structuredTransform(Zod.string(), (it) =>
|
|
53
|
+
var SchemaLiteral = structuredTransform(Zod.string(), (it) => parseString(it).map((it2) => toLiteral(it2))).meta({
|
|
54
54
|
type: "string",
|
|
55
55
|
format: "date-time"
|
|
56
56
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/temporal/instant.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { failure,
|
|
1
|
+
{"version":3,"sources":["../../src/temporal/instant.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { failure, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { isError } from '@bessemer/cornerstone/error/error'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport Zod from 'zod'\nimport { Default as DefaultClock } from '@bessemer/cornerstone/temporal/clock'\nimport { Duration, DurationLike, from as fromDuration } from '@bessemer/cornerstone/temporal/duration'\nimport { _isInstant, instantToLiteral, TimeUnit } from '@bessemer/cornerstone/temporal/chrono'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { isNil } from '@bessemer/cornerstone/object'\nimport { Locale } from '@bessemer/cornerstone/intl/locale'\nimport { DateTimeFormatOptions, format as formatPlainDateTime, fromInstant } from '@bessemer/cornerstone/temporal/plain-date-time'\nimport { TimeZoneId } from '@bessemer/cornerstone/temporal/time-zone-id'\n\nexport type Instant = Temporal.Instant\nexport const Namespace = createNamespace('instant')\nexport type InstantLiteral = NominalType<string, typeof Namespace>\nexport type InstantLike = Instant | Date | InstantLiteral\n\nexport function from(value: InstantLike | string): Instant\nexport function from(value: InstantLike | string | null): Instant | null\nexport function from(value: InstantLike | string | undefined): Instant | undefined\nexport function from(value: InstantLike | string | null | undefined): Instant | null | undefined\nexport function from(value: InstantLike | string | null | undefined): Instant | null | undefined {\n if (isNil(value)) {\n return value\n }\n\n if (value instanceof Temporal.Instant) {\n return value\n }\n if (isString(value)) {\n return unpackResult(parseString(value))\n }\n\n return Temporal.Instant.fromEpochMilliseconds(value.getTime())\n}\n\nexport const CompareBy: Comparator<Instant> = (first: Instant, second: Instant): number => Temporal.Instant.compare(first, second)\nexport const EqualBy = fromComparator(CompareBy)\n\nexport const parseString = (value: string): Result<Instant, ErrorEvent> => {\n try {\n return success(Temporal.Instant.from(value))\n } catch (e) {\n if (!isError(e)) {\n throw e\n }\n\n return failure(invalidValue(value, { namespace: Namespace, message: e.message }))\n }\n}\n\nexport function toLiteral(value: InstantLike): InstantLiteral\nexport function toLiteral(value: InstantLike | null): InstantLiteral | null\nexport function toLiteral(value: InstantLike | undefined): InstantLiteral | undefined\nexport function toLiteral(value: InstantLike | null | undefined): InstantLiteral | null | undefined\nexport function toLiteral(value: InstantLike | null | undefined): InstantLiteral | null | undefined {\n if (isNil(value)) {\n return value\n }\n\n return instantToLiteral(from(value))\n}\n\nexport function toDate(value: InstantLike): Date\nexport function toDate(value: InstantLike | null): Date | null\nexport function toDate(value: InstantLike | undefined): Date | undefined\nexport function toDate(value: InstantLike | null | undefined): Date | null | undefined\nexport function toDate(value: InstantLike | null | undefined): Date | null | undefined {\n if (isNil(value)) {\n return value\n }\n\n return new Date(from(value).epochMilliseconds)\n}\n\nexport const SchemaLiteral = structuredTransform(Zod.string(), (it: string) => parseString(it).map((it) => toLiteral(it))).meta({\n type: 'string',\n format: 'date-time',\n})\n\nexport const SchemaInstance = structuredTransform(Zod.string(), parseString).meta({\n type: 'string',\n format: 'date-time',\n})\n\nexport const isInstant = _isInstant\n\nexport const now = (clock = DefaultClock): Instant => {\n return clock.instant()\n}\n\nexport const add = (element: InstantLike, duration: DurationLike): Instant => {\n return from(element).add(fromDuration(duration))\n}\n\nexport const subtract = (element: InstantLike, duration: DurationLike): Instant => {\n return from(element).subtract(fromDuration(duration))\n}\n\nexport const until = (element: InstantLike, other: InstantLike): Duration => {\n return from(element).until(from(other))\n}\n\nexport const round = (element: InstantLike, unit: TimeUnit): Instant => {\n return from(element).round({ smallestUnit: unit })\n}\n\nexport function isEqual(element: InstantLike, other: InstantLike): boolean\nexport function isEqual(element: InstantLike | null, other: InstantLike | null): boolean\nexport function isEqual(element: InstantLike | undefined, other: InstantLike | undefined): boolean\nexport function isEqual(element: InstantLike | null | undefined, other: InstantLike | null | undefined): boolean {\n if (isNil(element) || isNil(other)) {\n return element === other\n }\n\n return EqualBy(from(element), from(other))\n}\n\nexport const isBefore = (element: InstantLike, other: InstantLike): boolean => {\n return CompareBy(from(element), from(other)) < 0\n}\n\nexport const isAfter = (element: InstantLike, other: InstantLike): boolean => {\n return CompareBy(from(element), from(other)) > 0\n}\n\nexport const format = (element: InstantLike, timeZone: TimeZoneId, locale: Locale, options: DateTimeFormatOptions): string => {\n const plainDateTime = fromInstant(from(element), timeZone)\n return formatPlainDateTime(plainDateTime, locale, options)\n}\n"],"mappings":"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","names":["it"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plain-date-time.d.ts","sourceRoot":"","sources":["../../src/temporal/plain-date-time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D,OAAO,
|
|
1
|
+
{"version":3,"file":"plain-date-time.d.ts","sourceRoot":"","sources":["../../src/temporal/plain-date-time.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Temporal } from "@js-temporal/polyfill";
|
|
3
3
|
import { createNamespace } from "@bessemer/cornerstone/resource-key";
|
|
4
4
|
import { fromComparator } from "@bessemer/cornerstone/equalitor";
|
|
5
|
-
import { failure,
|
|
5
|
+
import { failure, success } from "@bessemer/cornerstone/result";
|
|
6
6
|
import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
|
|
7
7
|
import { isError } from "@bessemer/cornerstone/error/error";
|
|
8
8
|
import { structuredTransform } from "@bessemer/cornerstone/zod-util";
|
|
@@ -47,7 +47,7 @@ function toLiteral(likeValue) {
|
|
|
47
47
|
const value = from(likeValue);
|
|
48
48
|
return value.toString();
|
|
49
49
|
}
|
|
50
|
-
var SchemaLiteral = structuredTransform(Zod.string(), (it) =>
|
|
50
|
+
var SchemaLiteral = structuredTransform(Zod.string(), (it) => parseString(it).map((it2) => toLiteral(it2)));
|
|
51
51
|
var SchemaInstance = structuredTransform(Zod.string(), parseString);
|
|
52
52
|
var isPlainDateTime = (value) => {
|
|
53
53
|
return value instanceof Temporal.PlainDateTime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/temporal/plain-date-time.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { failure,
|
|
1
|
+
{"version":3,"sources":["../../src/temporal/plain-date-time.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { NominalType } from '@bessemer/cornerstone/types'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport { fromComparator } from '@bessemer/cornerstone/equalitor'\nimport { failure, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { isError } from '@bessemer/cornerstone/error/error'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport Zod from 'zod'\nimport { Default as DefaultClock } from '@bessemer/cornerstone/temporal/clock'\nimport { Duration, DurationLike, from as _fromDuration } from '@bessemer/cornerstone/temporal/duration'\nimport { from as _fromInstant, InstantLike } from '@bessemer/cornerstone/temporal/instant'\nimport { TimeZoneId } from '@bessemer/cornerstone/temporal/time-zone-id'\nimport { TimeUnit } from '@bessemer/cornerstone/temporal/chrono'\nimport { isString } from '@bessemer/cornerstone/string'\nimport { isNil } from '@bessemer/cornerstone/object'\nimport { PlainTimeBuilder, TimeFormatOptions } from '@bessemer/cornerstone/temporal/plain-time'\nimport { Locale } from '@bessemer/cornerstone/intl/locale'\nimport { DateFormatOptions, PlainDateBuilder } from '@bessemer/cornerstone/temporal/plain-date'\n\nexport type PlainDateTime = Temporal.PlainDateTime\nexport const Namespace = createNamespace('plain-date-time')\nexport type PlainDateTimeLiteral = NominalType<string, typeof Namespace>\nexport type PlainDateTimeBuilder = PlainDateBuilder & PlainTimeBuilder\n\nexport type PlainDateTimeLike = PlainDateTime | PlainDateTimeLiteral | PlainDateTimeBuilder\n\nexport function from(value: PlainDateTimeLike | string): PlainDateTime\nexport function from(value: PlainDateTimeLike | string | null): PlainDateTime | null\nexport function from(value: PlainDateTimeLike | string | undefined): PlainDateTime | undefined\nexport function from(value: PlainDateTimeLike | string | null | undefined): PlainDateTime | null | undefined\nexport function from(value: PlainDateTimeLike | string | null | undefined): PlainDateTime | null | undefined {\n if (isNil(value)) {\n return value\n }\n\n if (value instanceof Temporal.PlainDateTime) {\n return value\n }\n\n if (isString(value)) {\n return unpackResult(parseString(value))\n }\n\n return Temporal.PlainDateTime.from(value)\n}\n\nexport const CompareBy: Comparator<PlainDateTime> = (first: PlainDateTime, second: PlainDateTime): number =>\n Temporal.PlainDateTime.compare(first, second)\nexport const EqualBy = fromComparator(CompareBy)\n\nexport const parseString = (value: string): Result<PlainDateTime, ErrorEvent> => {\n try {\n return success(Temporal.PlainDateTime.from(value))\n } catch (e) {\n if (!isError(e)) {\n throw e\n }\n\n return failure(invalidValue(value, { namespace: Namespace, message: e.message }))\n }\n}\n\nexport const fromInstant = (instant: InstantLike, zone: TimeZoneId): PlainDateTime => {\n return _fromInstant(instant).toZonedDateTimeISO(zone).toPlainDateTime()\n}\n\nexport function toLiteral(likeValue: PlainDateTimeLike): PlainDateTimeLiteral\nexport function toLiteral(likeValue: PlainDateTimeLike | null): PlainDateTimeLiteral | null\nexport function toLiteral(likeValue: PlainDateTimeLike | undefined): PlainDateTimeLiteral | undefined\nexport function toLiteral(likeValue: PlainDateTimeLike | null | undefined): PlainDateTimeLiteral | null | undefined\nexport function toLiteral(likeValue: PlainDateTimeLike | null | undefined): PlainDateTimeLiteral | null | undefined {\n if (isNil(likeValue)) {\n return likeValue\n }\n\n const value = from(likeValue)\n return value.toString() as PlainDateTimeLiteral\n}\n\nexport const SchemaLiteral = structuredTransform(Zod.string(), (it: string) => parseString(it).map((it) => toLiteral(it)))\nexport const SchemaInstance = structuredTransform(Zod.string(), parseString)\n\nexport const isPlainDateTime = (value: unknown): value is PlainDateTime => {\n return value instanceof Temporal.PlainDateTime\n}\n\nexport const now = (zone: TimeZoneId, clock = DefaultClock): PlainDateTime => {\n return fromInstant(clock.instant(), zone)\n}\n\nexport const merge = (element: PlainDateTimeLike, builder: PlainDateTimeBuilder): PlainDateTime => {\n return from(element).with(builder)\n}\n\nexport const add = (element: PlainDateTimeLike, duration: DurationLike): PlainDateTime => {\n return from(element).add(_fromDuration(duration))\n}\n\nexport const subtract = (element: PlainDateTimeLike, duration: DurationLike): PlainDateTime => {\n return from(element).subtract(_fromDuration(duration))\n}\n\nexport const until = (element: PlainDateTimeLike, other: PlainDateTimeLike): Duration => {\n return from(element).until(from(other))\n}\n\nexport const round = (element: PlainDateTimeLike, unit: TimeUnit): PlainDateTime => {\n return from(element).round({ smallestUnit: unit })\n}\n\nexport function isEqual(element: PlainDateTimeLike, other: PlainDateTimeLike): boolean\nexport function isEqual(element: PlainDateTimeLike | null, other: PlainDateTimeLike | null): boolean\nexport function isEqual(element: PlainDateTimeLike | undefined, other: PlainDateTimeLike | undefined): boolean\nexport function isEqual(element: PlainDateTimeLike | null | undefined, other: PlainDateTimeLike | null | undefined): boolean {\n if (isNil(element) || isNil(other)) {\n return element === other\n }\n\n return EqualBy(from(element), from(other))\n}\n\nexport const isBefore = (element: PlainDateTimeLike, other: PlainDateTimeLike): boolean => {\n return CompareBy(from(element), from(other)) < 0\n}\n\nexport const isAfter = (element: PlainDateTimeLike, other: PlainDateTimeLike): boolean => {\n return CompareBy(from(element), from(other)) > 0\n}\n\nexport type DateTimeFormatOptions = DateFormatOptions & TimeFormatOptions\n\nexport const format = (element: PlainDateTimeLike, locale: Locale, options: DateTimeFormatOptions): string => {\n const plainDateTime = from(element)\n\n // Convert PlainDateTime to Date\n const date = new Date(\n plainDateTime.year,\n plainDateTime.month - 1, // Date months are 0-based\n plainDateTime.day,\n plainDateTime.hour,\n plainDateTime.minute,\n plainDateTime.second,\n plainDateTime.millisecond\n )\n\n const formatter = new Intl.DateTimeFormat(locale, options)\n return formatter.format(date)\n}\n"],"mappings":"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","names":["it"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plain-date.d.ts","sourceRoot":"","sources":["../../src/temporal/plain-date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAE7D,OAAO,
|
|
1
|
+
{"version":3,"file":"plain-date.d.ts","sourceRoot":"","sources":["../../src/temporal/plain-date.ts"],"names":[],"mappings":"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"}
|