@bessemer/cornerstone 0.5.113 → 0.5.115
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.map +1 -1
- package/dist/array.js +28 -28
- package/dist/array.js.map +1 -1
- package/dist/aspect-ratio.d.ts +3 -3
- package/dist/aspect-ratio.d.ts.map +1 -1
- package/dist/aspect-ratio.js +13 -12
- package/dist/aspect-ratio.js.map +1 -1
- package/dist/assertion.d.ts.map +1 -1
- package/dist/assertion.js +5 -5
- package/dist/assertion.js.map +1 -1
- package/dist/async-value.js +2 -2
- package/dist/async-value.js.map +1 -1
- package/dist/async.d.ts.map +1 -1
- package/dist/async.js +2 -2
- package/dist/async.js.map +1 -1
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +11 -12
- package/dist/cache.js.map +1 -1
- package/dist/combinable.js +5 -5
- package/dist/combinable.js.map +1 -1
- package/dist/comparator.js +8 -8
- package/dist/comparator.js.map +1 -1
- package/dist/data-size.d.ts +2 -1
- package/dist/data-size.d.ts.map +1 -1
- package/dist/data-size.js +3 -3
- package/dist/data-size.js.map +1 -1
- package/dist/either.js +5 -5
- package/dist/either.js.map +1 -1
- package/dist/equalitor.d.ts.map +1 -1
- package/dist/equalitor.js +2 -2
- package/dist/equalitor.js.map +1 -1
- package/dist/error/error-cause.d.ts.map +1 -1
- package/dist/error/error-cause.js +14 -14
- package/dist/error/error-cause.js.map +1 -1
- package/dist/error/error-code.js +2 -2
- package/dist/error/error-code.js.map +1 -1
- package/dist/error/error-event.d.ts +3 -2
- package/dist/error/error-event.d.ts.map +1 -1
- package/dist/error/error-event.js +28 -28
- package/dist/error/error-event.js.map +1 -1
- package/dist/error/error-type.d.ts +2 -1
- package/dist/error/error-type.d.ts.map +1 -1
- package/dist/error/error-type.js +2 -2
- package/dist/error/error-type.js.map +1 -1
- package/dist/error/error.js +5 -5
- package/dist/error/error.js.map +1 -1
- package/dist/expression/array-expression.js +3 -3
- package/dist/expression/array-expression.js.map +1 -1
- package/dist/expression/core-expression.d.ts.map +1 -1
- package/dist/expression/core-expression.js +19 -19
- package/dist/expression/core-expression.js.map +1 -1
- package/dist/expression/expression-evaluator.js +2 -2
- package/dist/expression/expression-evaluator.js.map +1 -1
- package/dist/expression/expression-mapper.js +4 -4
- package/dist/expression/expression-mapper.js.map +1 -1
- package/dist/expression/internal.js +3 -3
- package/dist/expression/internal.js.map +1 -1
- package/dist/expression/numeric-expression.js +13 -13
- package/dist/expression/numeric-expression.js.map +1 -1
- package/dist/expression/string-expression.js +4 -4
- package/dist/expression/string-expression.js.map +1 -1
- package/dist/expression.d.ts +17 -1
- package/dist/expression.d.ts.map +1 -1
- package/dist/expression.js.map +1 -1
- package/dist/glob.d.ts +3 -3
- package/dist/glob.d.ts.map +1 -1
- package/dist/glob.js +11 -12
- package/dist/glob.js.map +1 -1
- package/dist/global-variable.d.ts.map +1 -1
- package/dist/global-variable.js +5 -5
- package/dist/global-variable.js.map +1 -1
- package/dist/hex-code.d.ts +3 -3
- package/dist/hex-code.d.ts.map +1 -1
- package/dist/hex-code.js +11 -10
- package/dist/hex-code.js.map +1 -1
- package/dist/index.d.ts +311 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/intl/country-code.d.ts +3 -3
- package/dist/intl/country-code.d.ts.map +1 -1
- package/dist/intl/country-code.js +9 -10
- package/dist/intl/country-code.js.map +1 -1
- package/dist/intl/country-subdivision-code.d.ts +3 -3
- package/dist/intl/country-subdivision-code.d.ts.map +1 -1
- package/dist/intl/country-subdivision-code.js +13 -11
- package/dist/intl/country-subdivision-code.js.map +1 -1
- package/dist/intl/currency-code.d.ts +3 -3
- package/dist/intl/currency-code.d.ts.map +1 -1
- package/dist/intl/currency-code.js +9 -10
- package/dist/intl/currency-code.js.map +1 -1
- package/dist/intl/language-code.d.ts +3 -3
- package/dist/intl/language-code.d.ts.map +1 -1
- package/dist/intl/language-code.js +9 -10
- package/dist/intl/language-code.js.map +1 -1
- package/dist/intl/locale.d.ts +3 -3
- package/dist/intl/locale.d.ts.map +1 -1
- package/dist/intl/locale.js +18 -19
- package/dist/intl/locale.js.map +1 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +2 -2
- package/dist/json.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +12 -12
- package/dist/logger.js.map +1 -1
- package/dist/map.d.ts +306 -0
- package/dist/map.d.ts.map +1 -1
- package/dist/map.js +8 -8
- package/dist/map.js.map +1 -1
- package/dist/mime-type.d.ts +3 -3
- package/dist/mime-type.d.ts.map +1 -1
- package/dist/mime-type.js +9 -10
- package/dist/mime-type.js.map +1 -1
- package/dist/misc.js +4 -4
- package/dist/misc.js.map +1 -1
- package/dist/monetary-amount.d.ts +3 -2
- package/dist/monetary-amount.d.ts.map +1 -1
- package/dist/monetary-amount.js +16 -16
- package/dist/monetary-amount.js.map +1 -1
- package/dist/net/content-type.d.ts +2 -1
- package/dist/net/content-type.d.ts.map +1 -1
- package/dist/net/content-type.js +2 -2
- package/dist/net/content-type.js.map +1 -1
- package/dist/net/domain-name.d.ts +3 -3
- package/dist/net/domain-name.d.ts.map +1 -1
- package/dist/net/domain-name.js +10 -11
- package/dist/net/domain-name.js.map +1 -1
- package/dist/net/http-method.d.ts.map +1 -1
- package/dist/net/http-method.js +9 -9
- package/dist/net/http-method.js.map +1 -1
- package/dist/net/ipv4-address.d.ts +3 -3
- package/dist/net/ipv4-address.d.ts.map +1 -1
- package/dist/net/ipv4-address.js +10 -11
- package/dist/net/ipv4-address.js.map +1 -1
- package/dist/net/ipv6-address.d.ts +3 -3
- package/dist/net/ipv6-address.d.ts.map +1 -1
- package/dist/net/ipv6-address.js +10 -11
- package/dist/net/ipv6-address.js.map +1 -1
- package/dist/net/uri-host-name.d.ts +3 -3
- package/dist/net/uri-host-name.d.ts.map +1 -1
- package/dist/net/uri-host-name.js +15 -16
- package/dist/net/uri-host-name.js.map +1 -1
- package/dist/net/uri.d.ts +1 -2
- package/dist/net/uri.d.ts.map +1 -1
- package/dist/net/uri.js +5 -3
- package/dist/net/uri.js.map +1 -1
- package/dist/net/url.d.ts.map +1 -1
- package/dist/net/url.js +6 -7
- package/dist/net/url.js.map +1 -1
- package/dist/object/object-path.d.ts.map +1 -1
- package/dist/object/object-path.js +23 -28
- package/dist/object/object-path.js.map +1 -1
- package/dist/object/type-path.js +19 -19
- package/dist/object/type-path.js.map +1 -1
- package/dist/patch.js +4 -4
- package/dist/patch.js.map +1 -1
- package/dist/promise.js +2 -2
- package/dist/promise.js.map +1 -1
- package/dist/property.d.ts.map +1 -1
- package/dist/property.js +7 -7
- package/dist/property.js.map +1 -1
- package/dist/proxy.js +2 -2
- package/dist/proxy.js.map +1 -1
- package/dist/range.js +2 -2
- package/dist/range.js.map +1 -1
- package/dist/reference.d.ts +2 -1
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js +13 -13
- package/dist/reference.js.map +1 -1
- package/dist/resource-key.js +2 -2
- package/dist/resource-key.js.map +1 -1
- package/dist/result.js +5 -5
- package/dist/result.js.map +1 -1
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +12 -12
- package/dist/retry.js.map +1 -1
- package/dist/rich-text.js +2 -2
- package/dist/rich-text.js.map +1 -1
- package/dist/signature.d.ts.map +1 -1
- package/dist/signature.js +9 -9
- package/dist/signature.js.map +1 -1
- package/dist/sql/sql-expression-parser.js +2 -2
- package/dist/sql/sql-expression-parser.js.map +1 -1
- package/dist/sql.d.ts +5 -1
- package/dist/sql.d.ts.map +1 -1
- package/dist/sql.js.map +1 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +9 -9
- package/dist/store.js.map +1 -1
- package/dist/string.js +4 -4
- package/dist/string.js.map +1 -1
- package/dist/tag.d.ts.map +1 -1
- package/dist/tag.js +10 -10
- package/dist/tag.js.map +1 -1
- package/dist/temporal/clock.d.ts +13 -13
- package/dist/temporal/clock.d.ts.map +1 -1
- package/dist/temporal/clock.js +10 -10
- package/dist/temporal/clock.js.map +1 -1
- package/dist/temporal/duration.d.ts +15 -9
- package/dist/temporal/duration.d.ts.map +1 -1
- package/dist/temporal/duration.js +30 -31
- package/dist/temporal/duration.js.map +1 -1
- package/dist/temporal/instant.d.ts +18 -15
- package/dist/temporal/instant.d.ts.map +1 -1
- package/dist/temporal/instant.js +42 -43
- package/dist/temporal/instant.js.map +1 -1
- package/dist/temporal/plain-date-time.d.ts +16 -13
- package/dist/temporal/plain-date-time.d.ts.map +1 -1
- package/dist/temporal/plain-date-time.js +36 -38
- package/dist/temporal/plain-date-time.js.map +1 -1
- package/dist/temporal/plain-date.d.ts +16 -13
- package/dist/temporal/plain-date.d.ts.map +1 -1
- package/dist/temporal/plain-date.js +35 -37
- package/dist/temporal/plain-date.js.map +1 -1
- package/dist/temporal/plain-month-day.d.ts +37 -0
- package/dist/temporal/plain-month-day.d.ts.map +1 -0
- package/dist/temporal/plain-month-day.js +84 -0
- package/dist/temporal/plain-month-day.js.map +1 -0
- package/dist/temporal/plain-time.d.ts +19 -17
- package/dist/temporal/plain-time.d.ts.map +1 -1
- package/dist/temporal/plain-time.js +43 -42
- package/dist/temporal/plain-time.js.map +1 -1
- package/dist/temporal/plain-year-month.d.ts +57 -0
- package/dist/temporal/plain-year-month.d.ts.map +1 -0
- package/dist/temporal/plain-year-month.js +109 -0
- package/dist/temporal/plain-year-month.js.map +1 -0
- package/dist/temporal/time-zone-id.d.ts +5 -4
- package/dist/temporal/time-zone-id.d.ts.map +1 -1
- package/dist/temporal/time-zone-id.js +11 -11
- package/dist/temporal/time-zone-id.js.map +1 -1
- package/dist/temporal/time-zone-offset.d.ts +12 -11
- package/dist/temporal/time-zone-offset.d.ts.map +1 -1
- package/dist/temporal/time-zone-offset.js +42 -50
- package/dist/temporal/time-zone-offset.js.map +1 -1
- package/dist/temporal/zoned-date-time.d.ts +16 -13
- package/dist/temporal/zoned-date-time.d.ts.map +1 -1
- package/dist/temporal/zoned-date-time.js +35 -36
- package/dist/temporal/zoned-date-time.js.map +1 -1
- package/dist/uuid/ulid.d.ts +3 -3
- package/dist/uuid/ulid.d.ts.map +1 -1
- package/dist/uuid/ulid.js +9 -10
- package/dist/uuid/ulid.js.map +1 -1
- package/dist/uuid/uuid-v4.d.ts +3 -3
- package/dist/uuid/uuid-v4.d.ts.map +1 -1
- package/dist/uuid/uuid-v4.js +13 -14
- package/dist/uuid/uuid-v4.js.map +1 -1
- package/dist/uuid/uuid-v7.d.ts +1 -2
- package/dist/uuid/uuid-v7.d.ts.map +1 -1
- package/dist/uuid/uuid-v7.js +1 -2
- package/dist/uuid/uuid-v7.js.map +1 -1
- package/dist/zod-util.d.ts +4 -3
- package/dist/zod-util.d.ts.map +1 -1
- package/dist/zod-util.js +21 -11
- package/dist/zod-util.js.map +1 -1
- package/package.json +6 -4
package/dist/monetary-amount.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
// src/monetary-amount.ts
|
|
2
|
-
import
|
|
2
|
+
import * as CurrencyCodes from "@bessemer/cornerstone/intl/currency-code";
|
|
3
3
|
import Zod from "zod";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
var
|
|
4
|
+
import * as Objects from "@bessemer/cornerstone/object";
|
|
5
|
+
import * as Maths from "@bessemer/cornerstone/math";
|
|
6
|
+
import * as Comparators from "@bessemer/cornerstone/comparator";
|
|
7
|
+
import * as Equalitors from "@bessemer/cornerstone/equalitor";
|
|
8
|
+
import * as Assertions from "@bessemer/cornerstone/assertion";
|
|
9
|
+
var Schema2 = Zod.object({
|
|
10
10
|
amount: Zod.number().int(),
|
|
11
|
-
currency:
|
|
11
|
+
currency: CurrencyCodes.Schema
|
|
12
12
|
});
|
|
13
13
|
var CompareBy = (first, second) => {
|
|
14
|
-
return apply(first, second, natural());
|
|
14
|
+
return apply(first, second, Comparators.natural());
|
|
15
15
|
};
|
|
16
|
-
var EqualBy = fromComparator(CompareBy);
|
|
16
|
+
var EqualBy = Equalitors.fromComparator(CompareBy);
|
|
17
17
|
var of = (amount, currency) => {
|
|
18
|
-
assert(Number.isInteger(amount));
|
|
18
|
+
Assertions.assert(Number.isInteger(amount));
|
|
19
19
|
return { amount, currency };
|
|
20
20
|
};
|
|
21
21
|
var zero = (currency) => {
|
|
@@ -31,10 +31,10 @@ var operate = (first, second, operator) => {
|
|
|
31
31
|
return of(apply(first, second, operator), first.currency);
|
|
32
32
|
};
|
|
33
33
|
var equal = (first, second) => {
|
|
34
|
-
if (isNil(first) && isNil(second)) {
|
|
34
|
+
if (Objects.isNil(first) && Objects.isNil(second)) {
|
|
35
35
|
return true;
|
|
36
36
|
}
|
|
37
|
-
if (isNil(first) || isNil(second)) {
|
|
37
|
+
if (Objects.isNil(first) || Objects.isNil(second)) {
|
|
38
38
|
return false;
|
|
39
39
|
}
|
|
40
40
|
return apply(first, second, (first2, second2) => first2 === second2);
|
|
@@ -46,10 +46,10 @@ var subtract = (first, second) => {
|
|
|
46
46
|
return operate(first, second, (first2, second2) => first2 - second2);
|
|
47
47
|
};
|
|
48
48
|
var multiply = (money, value) => {
|
|
49
|
-
return of(roundHalfEven(money.amount * value, 0), money.currency);
|
|
49
|
+
return of(Maths.roundHalfEven(money.amount * value, 0), money.currency);
|
|
50
50
|
};
|
|
51
51
|
var divide = (money, value) => {
|
|
52
|
-
return of(roundHalfEven(money.amount / value, 0), money.currency);
|
|
52
|
+
return of(Maths.roundHalfEven(money.amount / value, 0), money.currency);
|
|
53
53
|
};
|
|
54
54
|
function sumAll(monetaryAmounts, currency) {
|
|
55
55
|
const resolvedCurrency = currency ?? monetaryAmounts[0].currency;
|
|
@@ -92,7 +92,7 @@ var format = (amount, alpha2Code, options) => {
|
|
|
92
92
|
export {
|
|
93
93
|
CompareBy,
|
|
94
94
|
EqualBy,
|
|
95
|
-
Schema,
|
|
95
|
+
Schema2 as Schema,
|
|
96
96
|
apply,
|
|
97
97
|
divide,
|
|
98
98
|
equal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/monetary-amount.ts"],"sourcesContent":["import { CurrencyCode
|
|
1
|
+
{"version":3,"sources":["../src/monetary-amount.ts"],"sourcesContent":["import { CurrencyCode } from '@bessemer/cornerstone/intl/currency-code'\nimport * as CurrencyCodes from '@bessemer/cornerstone/intl/currency-code'\nimport Zod from 'zod'\nimport * as Objects from '@bessemer/cornerstone/object'\nimport * as Maths from '@bessemer/cornerstone/math'\nimport { Comparator } from '@bessemer/cornerstone/comparator'\nimport * as Comparators from '@bessemer/cornerstone/comparator'\nimport * as Equalitors from '@bessemer/cornerstone/equalitor'\nimport * as Assertions from '@bessemer/cornerstone/assertion'\n\nexport type MonetaryAmount = {\n amount: number\n currency: CurrencyCode\n}\n\nexport const Schema = Zod.object({\n amount: Zod.number().int(),\n currency: CurrencyCodes.Schema,\n})\n\nexport const CompareBy: Comparator<MonetaryAmount> = (first: MonetaryAmount, second: MonetaryAmount): number => {\n return apply(first, second, Comparators.natural())\n}\n\nexport const EqualBy = Equalitors.fromComparator(CompareBy)\n\nexport const of = (amount: number, currency: CurrencyCode): MonetaryAmount => {\n Assertions.assert(Number.isInteger(amount))\n return { amount, currency }\n}\n\nexport const zero = (currency: CurrencyCode): MonetaryAmount => {\n return { amount: 0, currency }\n}\n\nexport const apply = <T>(first: MonetaryAmount, second: MonetaryAmount, operator: (first: number, second: number) => T): T => {\n if (first.currency !== second.currency) {\n throw new Error(`Currency mismatch in operation on MonetaryAmount: ${first.currency}, ${second.currency}`)\n }\n\n return operator(first.amount, second.amount)\n}\n\nexport const operate = (first: MonetaryAmount, second: MonetaryAmount, operator: (first: number, second: number) => number): MonetaryAmount => {\n return of(apply(first, second, operator), first.currency)\n}\n\n/** Determines whether two MonetaryAmounts are considered equivalent */\nexport const equal = (first?: MonetaryAmount | null, second?: MonetaryAmount | null): boolean => {\n if (Objects.isNil(first) && Objects.isNil(second)) {\n return true\n }\n if (Objects.isNil(first) || Objects.isNil(second)) {\n return false\n }\n\n return apply(first, second, (first, second) => first === second)\n}\n\nexport const sum = (first: MonetaryAmount, second?: MonetaryAmount | null): MonetaryAmount => {\n return operate(first, second ?? zero(first.currency), (first, second) => first + second)\n}\n\nexport const subtract = (first: MonetaryAmount, second: MonetaryAmount): MonetaryAmount => {\n return operate(first, second, (first, second) => first - second)\n}\n\nexport const multiply = (money: MonetaryAmount, value: number): MonetaryAmount => {\n return of(Maths.roundHalfEven(money.amount * value, 0), money.currency)\n}\n\nexport const divide = (money: MonetaryAmount, value: number): MonetaryAmount => {\n return of(Maths.roundHalfEven(money.amount / value, 0), money.currency)\n}\n\nexport function sumAll(monetaryAmounts: readonly [MonetaryAmount, ...MonetaryAmount[]]): MonetaryAmount\nexport function sumAll(monetaryAmounts: readonly MonetaryAmount[], currency: CurrencyCode): MonetaryAmount\nexport function sumAll(monetaryAmounts: readonly MonetaryAmount[], currency?: CurrencyCode): MonetaryAmount {\n const resolvedCurrency = currency ?? monetaryAmounts[0]!.currency\n return monetaryAmounts.reduce<MonetaryAmount>((first, second) => sum(second, first), zero(resolvedCurrency))\n}\n\nexport const negate = (monetaryAmount: MonetaryAmount): MonetaryAmount => {\n // Avoid creating a negative 0, which is a real thing!\n if (isZero(monetaryAmount)) {\n return monetaryAmount\n }\n\n return of(-monetaryAmount.amount, monetaryAmount.currency)\n}\n\nexport const isZero = (monetaryAmount: MonetaryAmount): boolean => {\n return monetaryAmount.amount === 0\n}\n\nexport const greaterThan = (first: MonetaryAmount, second: MonetaryAmount): boolean => {\n return apply(first, second, (first, second) => first > second)\n}\n\nexport const lessThan = (first: MonetaryAmount, second: MonetaryAmount): boolean => {\n return apply(first, second, (first, second) => first < second)\n}\n\nexport const greaterThanOrEqual = (first: MonetaryAmount, second: MonetaryAmount): boolean => {\n return apply(first, second, (first, second) => first >= second)\n}\n\nexport const lessThanOrEqual = (first: MonetaryAmount, second: MonetaryAmount): boolean => {\n return apply(first, second, (first, second) => first <= second)\n}\n\nexport type MonetaryAmountFormatOptions = {\n hideCents?: boolean\n}\n\nexport const format = (amount: MonetaryAmount, alpha2Code: string, options?: MonetaryAmountFormatOptions): string => {\n const hideCents = options?.hideCents ?? false\n const isWholeNumber = amount.amount % 100 === 0\n\n const formatCurrency = new Intl.NumberFormat(alpha2Code, {\n style: 'currency',\n currency: amount.currency,\n ...(hideCents\n ? {\n minimumFractionDigits: isWholeNumber ? 0 : 2,\n maximumFractionDigits: 2,\n }\n : {}),\n })\n\n return formatCurrency.format(amount.amount / 100)\n}\n"],"mappings":"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","names":["Schema","first","second"]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Result } from '@bessemer/cornerstone/result';
|
|
2
2
|
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
|
3
|
+
import * as ResourceKeys from '@bessemer/cornerstone/resource-key';
|
|
3
4
|
import { Dictionary, NominalType } from '@bessemer/cornerstone/types';
|
|
4
5
|
import { MimeLiteral } from '@bessemer/cornerstone/mime-type';
|
|
5
|
-
export declare const Namespace:
|
|
6
|
+
export declare const Namespace: ResourceKeys.ResourceNamespace<"content-type">;
|
|
6
7
|
export type ContentType = {
|
|
7
8
|
mimeType: MimeLiteral;
|
|
8
9
|
parameters: Dictionary<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-type.d.ts","sourceRoot":"","sources":["../../src/net/content-type.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAA;
|
|
1
|
+
{"version":3,"file":"content-type.d.ts","sourceRoot":"","sources":["../../src/net/content-type.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAA;AACpE,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAI7D,eAAO,MAAM,SAAS,gDAA+C,CAAA;AACrE,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AACnF,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAEtE,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,kBAAkB,GAAG,WAAW,CAAA;AAE5E,wBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,WAAW,CAAA;AAClE,wBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAAA;AAChF,wBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;AAC1F,wBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CAAA;AAaxG,wBAAgB,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,kBAAkB,CAAA;AACzE,wBAAgB,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAAA;AACvF,wBAAgB,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAAA;AACjG,wBAAgB,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAA;AA2B/G,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,WAAW,EAAE,UAAU,CAgGzE,CAAA"}
|
package/dist/net/content-type.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// src/net/content-type.ts
|
|
2
2
|
import * as Results from "@bessemer/cornerstone/result";
|
|
3
3
|
import * as ErrorEvents from "@bessemer/cornerstone/error/error-event";
|
|
4
|
-
import
|
|
4
|
+
import * as ResourceKeys from "@bessemer/cornerstone/resource-key";
|
|
5
5
|
import * as MimeTypes from "@bessemer/cornerstone/mime-type";
|
|
6
6
|
import * as Strings from "@bessemer/cornerstone/string";
|
|
7
7
|
import * as Objects from "@bessemer/cornerstone/object";
|
|
8
|
-
var Namespace = createNamespace("content-type");
|
|
8
|
+
var Namespace = ResourceKeys.createNamespace("content-type");
|
|
9
9
|
function from(value) {
|
|
10
10
|
if (Objects.isNil(value)) {
|
|
11
11
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/net/content-type.ts"],"sourcesContent":["import * as Results from '@bessemer/cornerstone/result'\nimport { Result } from '@bessemer/cornerstone/result'\nimport * as ErrorEvents from '@bessemer/cornerstone/error/error-event'\nimport { ErrorEvent } from '@bessemer/cornerstone/error/error-event'\nimport
|
|
1
|
+
{"version":3,"sources":["../../src/net/content-type.ts"],"sourcesContent":["import * as Results from '@bessemer/cornerstone/result'\nimport { Result } from '@bessemer/cornerstone/result'\nimport * as ErrorEvents from '@bessemer/cornerstone/error/error-event'\nimport { ErrorEvent } from '@bessemer/cornerstone/error/error-event'\nimport * as ResourceKeys from '@bessemer/cornerstone/resource-key'\nimport { Dictionary, NominalType } from '@bessemer/cornerstone/types'\nimport * as MimeTypes from '@bessemer/cornerstone/mime-type'\nimport { MimeLiteral } from '@bessemer/cornerstone/mime-type'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Objects from '@bessemer/cornerstone/object'\n\nexport const Namespace = ResourceKeys.createNamespace('content-type')\nexport type ContentType = { mimeType: MimeLiteral; parameters: Dictionary<string> }\nexport type ContentTypeLiteral = NominalType<string, typeof Namespace>\n\nexport type ContentTypeLike = ContentType | ContentTypeLiteral | MimeLiteral\n\nexport function from(value: ContentTypeLike | string): ContentType\nexport function from(value: ContentTypeLike | string | null): ContentType | null\nexport function from(value: ContentTypeLike | string | undefined): ContentType | undefined\nexport function from(value: ContentTypeLike | string | null | undefined): ContentType | null | undefined\nexport function from(value: ContentTypeLike | string | null | undefined): ContentType | null | undefined {\n if (Objects.isNil(value)) {\n return value\n }\n\n if (Strings.isString(value)) {\n return ErrorEvents.unpackResult(parseString(value))\n }\n\n return value\n}\n\nexport function toLiteral(likeValue: ContentTypeLike): ContentTypeLiteral\nexport function toLiteral(likeValue: ContentTypeLike | null): ContentTypeLiteral | null\nexport function toLiteral(likeValue: ContentTypeLike | undefined): ContentTypeLiteral | undefined\nexport function toLiteral(likeValue: ContentTypeLike | null | undefined): ContentTypeLiteral | null | undefined\nexport function toLiteral(likeValue: ContentTypeLike | null | undefined): ContentTypeLiteral | null | undefined {\n if (Objects.isNil(likeValue)) {\n return likeValue\n }\n\n const value = from(likeValue)\n\n if (Objects.isEmpty(value.parameters)) {\n return value.mimeType as ContentTypeLiteral\n }\n\n const params = Object.entries(value.parameters).map(([key, val]) => {\n // Quote the value if it contains special characters or spaces\n const needsQuoting = /[ ()<>@,;:\\\\/[\\]?=]/.test(val) || Strings.isEmpty(val)\n const quotedValue = needsQuoting ? `\"${val}\"` : val\n return `${key}=${quotedValue}`\n })\n\n return `${value.mimeType};${params.join(';')}` as ContentTypeLiteral\n}\n\n// RFC 2045 token: 1*<any (US-ASCII) CHAR except SPACE, CTLs, or tspecials>\n// tspecials: ()<>@,;:\\\"/[]?=\nconst TokenKeyRegex = /^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]+$/\n\n// JOHN some of the error messages here should be looked at\nexport const parseString = (value: string): Result<ContentType, ErrorEvent> => {\n const tokens = value.split(';')\n const mimeTypeString = tokens[0]!\n const mimeType = MimeTypes.parseString(mimeTypeString)\n\n if (Results.isFailure(mimeType)) {\n return mimeType\n }\n\n if (tokens.length === 1) {\n return Results.success({ mimeType, parameters: {} })\n }\n\n const parameters: Dictionary<string> = {}\n\n for (const token of tokens.slice(1)) {\n const keyPart = Strings.splitFirst(token, '=')\n\n if (Objects.isNil(keyPart.selection)) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter format: [${token}]. Parameters must be in key=value format.`,\n })\n )\n }\n\n const tokenKey = keyPart.selection.trim()\n if (!TokenKeyRegex.test(tokenKey)) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter format: [${token}]. Parameters must be in key=value format.`,\n })\n )\n }\n\n let tokenValue = keyPart.rest.trim()\n if (Strings.isEmpty(tokenValue)) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: value cant be blank.`,\n })\n )\n }\n\n // Validate token value\n if (tokenValue.startsWith('\"')) {\n // Quoted value: must end with quote and have properly escaped internal quotes\n if (!tokenValue.endsWith('\"')) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: quoted value must end with a quote.`,\n })\n )\n }\n\n // Check for unescaped quotes inside\n const innerValue = tokenValue.slice(1, -1)\n for (let i = 0; i < innerValue.length; i++) {\n if (innerValue[i] === '\"' && (i === 0 || innerValue[i - 1] !== '\\\\')) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: unescaped quote found inside quoted value.`,\n })\n )\n }\n }\n\n tokenValue = Strings.removeStart(Strings.removeEnd(tokenValue, '\"'), '\"').replaceAll('\\\\\"', '\"')\n } else if (tokenValue.includes('\"')) {\n // Unquoted value: cannot contain quotes at all\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: unquoted value cannot contain quotes.`,\n })\n )\n }\n\n if (Objects.isPresent(parameters[tokenKey])) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid Content-Type parameter value for [${tokenKey}]: duplicate parameter key found.`,\n })\n )\n }\n\n parameters[tokenKey] = tokenValue\n }\n\n return Results.success({ mimeType, parameters })\n}\n"],"mappings":"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","names":["parseString"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import Zod from 'zod';
|
|
2
1
|
import { NominalType } from '@bessemer/cornerstone/types';
|
|
3
2
|
import { Result } from '@bessemer/cornerstone/result';
|
|
3
|
+
import * as ResourceKeys from '@bessemer/cornerstone/resource-key';
|
|
4
4
|
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
|
5
|
-
export declare const Namespace:
|
|
5
|
+
export declare const Namespace: ResourceKeys.ResourceNamespace<"domain-name">;
|
|
6
6
|
export type DomainName = NominalType<string, typeof Namespace>;
|
|
7
7
|
export declare const parseString: (value: string) => Result<DomainName, ErrorEvent>;
|
|
8
8
|
export declare const from: (value: string) => DomainName;
|
|
9
|
-
export declare const Schema:
|
|
9
|
+
export declare const Schema: import("zod").ZodPipe<import("zod").ZodType<DomainName, DomainName, import("zod/v4/core").$ZodTypeInternals<DomainName, DomainName>>, import("zod").ZodTransform<DomainName, DomainName>>;
|
|
10
10
|
//# sourceMappingURL=domain-name.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-name.d.ts","sourceRoot":"","sources":["../../src/net/domain-name.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"domain-name.d.ts","sourceRoot":"","sources":["../../src/net/domain-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AACrD,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAA;AAGpE,eAAO,MAAM,SAAS,+CAA8C,CAAA;AACpE,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAK9D,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,UAAU,EAAE,UAAU,CAWxE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,KAAG,UAEpC,CAAA;AAED,eAAO,MAAM,MAAM,2LAAyE,CAAA"}
|
package/dist/net/domain-name.js
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
// src/net/domain-name.ts
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
var Namespace = createNamespace("domain-name");
|
|
2
|
+
import * as Results from "@bessemer/cornerstone/result";
|
|
3
|
+
import * as ResourceKeys from "@bessemer/cornerstone/resource-key";
|
|
4
|
+
import * as ErrorEvents from "@bessemer/cornerstone/error/error-event";
|
|
5
|
+
import * as ZodUtil from "@bessemer/cornerstone/zod-util";
|
|
6
|
+
var Namespace = ResourceKeys.createNamespace("domain-name");
|
|
8
7
|
var regex = /^[a-zA-Z0-9\u00a1-\uffff](?:[a-zA-Z0-9\u00a1-\uffff-]{0,61}[a-zA-Z0-9\u00a1-\uffff])?(?:\.[a-zA-Z0-9\u00a1-\uffff](?:[a-zA-Z0-9\u00a1-\uffff-]{0,61}[a-zA-Z0-9\u00a1-\uffff])?)*$/;
|
|
9
8
|
var parseString = (value) => {
|
|
10
9
|
if (!regex.test(value)) {
|
|
11
|
-
return failure(
|
|
12
|
-
invalidValue(value, {
|
|
10
|
+
return Results.failure(
|
|
11
|
+
ErrorEvents.invalidValue(value, {
|
|
13
12
|
namespace: Namespace,
|
|
14
13
|
message: `[${Namespace}]: Invalid characters for DomainName in string: [${value}]`
|
|
15
14
|
})
|
|
16
15
|
);
|
|
17
16
|
}
|
|
18
|
-
return success(value);
|
|
17
|
+
return Results.success(value);
|
|
19
18
|
};
|
|
20
19
|
var from = (value) => {
|
|
21
|
-
return unpackResult(parseString(value));
|
|
20
|
+
return ErrorEvents.unpackResult(parseString(value));
|
|
22
21
|
};
|
|
23
|
-
var Schema = structuredTransform(
|
|
22
|
+
var Schema = ZodUtil.structuredTransform(ZodUtil.string(), parseString);
|
|
24
23
|
export {
|
|
25
24
|
Namespace,
|
|
26
25
|
Schema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/net/domain-name.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../src/net/domain-name.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport * as Results from '@bessemer/cornerstone/result'\nimport { Result } from '@bessemer/cornerstone/result'\nimport * as ResourceKeys from '@bessemer/cornerstone/resource-key'\nimport * as ErrorEvents from '@bessemer/cornerstone/error/error-event'\nimport { ErrorEvent } from '@bessemer/cornerstone/error/error-event'\nimport * as ZodUtil from '@bessemer/cornerstone/zod-util'\n\nexport const Namespace = ResourceKeys.createNamespace('domain-name')\nexport type DomainName = NominalType<string, typeof Namespace>\n\nconst regex =\n /^[a-zA-Z0-9\\u00a1-\\uffff](?:[a-zA-Z0-9\\u00a1-\\uffff-]{0,61}[a-zA-Z0-9\\u00a1-\\uffff])?(?:\\.[a-zA-Z0-9\\u00a1-\\uffff](?:[a-zA-Z0-9\\u00a1-\\uffff-]{0,61}[a-zA-Z0-9\\u00a1-\\uffff])?)*$/\n\nexport const parseString = (value: string): Result<DomainName, ErrorEvent> => {\n if (!regex.test(value)) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid characters for DomainName in string: [${value}]`,\n })\n )\n }\n\n return Results.success(value as DomainName)\n}\n\nexport const from = (value: string): DomainName => {\n return ErrorEvents.unpackResult(parseString(value))\n}\n\nexport const Schema = ZodUtil.structuredTransform<DomainName>(ZodUtil.string(), parseString)\n"],"mappings":";AACA,YAAY,aAAa;AAEzB,YAAY,kBAAkB;AAC9B,YAAY,iBAAiB;AAE7B,YAAY,aAAa;AAElB,IAAM,YAAyB,6BAAgB,aAAa;AAGnE,IAAM,QACJ;AAEK,IAAM,cAAc,CAAC,UAAkD;AAC5E,MAAI,CAAC,MAAM,KAAK,KAAK,GAAG;AACtB,WAAe;AAAA,MACD,yBAAa,OAAO;AAAA,QAC9B,WAAW;AAAA,QACX,SAAS,IAAI,SAAS,oDAAoD,KAAK;AAAA,MACjF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAe,gBAAQ,KAAmB;AAC5C;AAEO,IAAM,OAAO,CAAC,UAA8B;AACjD,SAAmB,yBAAa,YAAY,KAAK,CAAC;AACpD;AAEO,IAAM,SAAiB,4BAAwC,eAAO,GAAG,WAAW;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-method.d.ts","sourceRoot":"","sources":["../../src/net/http-method.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-method.d.ts","sourceRoot":"","sources":["../../src/net/http-method.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAA;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,eAAO,MAAM,UAAU;;;;;;;;;;CAUb,CAAA;AACV,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,UAAU,CAAC,CAAA;AAEnD,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,UAAU,EAAE,UAAU,CAcxE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,KAAG,UAEpC,CAAA"}
|
package/dist/net/http-method.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// src/net/http-method.ts
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
2
|
+
import * as Results from "@bessemer/cornerstone/result";
|
|
3
|
+
import * as ErrorEvents from "@bessemer/cornerstone/error/error-event";
|
|
4
|
+
import * as DomainNames from "@bessemer/cornerstone/net/domain-name";
|
|
5
5
|
var HttpMethod = {
|
|
6
6
|
Get: "get",
|
|
7
7
|
Post: "post",
|
|
@@ -17,17 +17,17 @@ var parseString = (value) => {
|
|
|
17
17
|
const normalizedValue = value.toLowerCase();
|
|
18
18
|
const validMethods = Object.values(HttpMethod);
|
|
19
19
|
if (!validMethods.includes(normalizedValue)) {
|
|
20
|
-
return failure(
|
|
21
|
-
invalidValue(value, {
|
|
22
|
-
namespace: Namespace,
|
|
23
|
-
message: `[${Namespace}]: Invalid HttpMethod in string: [${value}]. Valid methods are: ${validMethods.join(", ")}`
|
|
20
|
+
return Results.failure(
|
|
21
|
+
ErrorEvents.invalidValue(value, {
|
|
22
|
+
namespace: DomainNames.Namespace,
|
|
23
|
+
message: `[${DomainNames.Namespace}]: Invalid HttpMethod in string: [${value}]. Valid methods are: ${validMethods.join(", ")}`
|
|
24
24
|
})
|
|
25
25
|
);
|
|
26
26
|
}
|
|
27
|
-
return success(normalizedValue);
|
|
27
|
+
return Results.success(normalizedValue);
|
|
28
28
|
};
|
|
29
29
|
var from = (value) => {
|
|
30
|
-
return unpackResult(parseString(value));
|
|
30
|
+
return ErrorEvents.unpackResult(parseString(value));
|
|
31
31
|
};
|
|
32
32
|
export {
|
|
33
33
|
HttpMethod,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/net/http-method.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../src/net/http-method.ts"],"sourcesContent":["import * as Results from '@bessemer/cornerstone/result'\nimport { Result } from '@bessemer/cornerstone/result'\nimport * as ErrorEvents from '@bessemer/cornerstone/error/error-event'\nimport { ErrorEvent } from '@bessemer/cornerstone/error/error-event'\nimport * as DomainNames from '@bessemer/cornerstone/net/domain-name'\nimport { ValueOf } from 'type-fest'\n\nexport const HttpMethod = {\n Get: 'get',\n Post: 'post',\n Put: 'put',\n Patch: 'patch',\n Delete: 'delete',\n Head: 'head',\n Options: 'options',\n Trace: 'trace',\n Connect: 'connect',\n} as const\nexport type HttpMethod = ValueOf<typeof HttpMethod>\n\nexport const parseString = (value: string): Result<HttpMethod, ErrorEvent> => {\n const normalizedValue = value.toLowerCase()\n const validMethods = Object.values(HttpMethod)\n\n if (!validMethods.includes(normalizedValue as HttpMethod)) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: DomainNames.Namespace,\n message: `[${DomainNames.Namespace}]: Invalid HttpMethod in string: [${value}]. Valid methods are: ${validMethods.join(', ')}`,\n })\n )\n }\n\n return Results.success(normalizedValue as HttpMethod)\n}\n\nexport const from = (value: string): HttpMethod => {\n return ErrorEvents.unpackResult(parseString(value))\n}\n"],"mappings":";AAAA,YAAY,aAAa;AAEzB,YAAY,iBAAiB;AAE7B,YAAY,iBAAiB;AAGtB,IAAM,aAAa;AAAA,EACxB,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AACX;AAGO,IAAM,cAAc,CAAC,UAAkD;AAC5E,QAAM,kBAAkB,MAAM,YAAY;AAC1C,QAAM,eAAe,OAAO,OAAO,UAAU;AAE7C,MAAI,CAAC,aAAa,SAAS,eAA6B,GAAG;AACzD,WAAe;AAAA,MACD,yBAAa,OAAO;AAAA,QAC9B,WAAuB;AAAA,QACvB,SAAS,IAAgB,qBAAS,qCAAqC,KAAK,yBAAyB,aAAa,KAAK,IAAI,CAAC;AAAA,MAC9H,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAe,gBAAQ,eAA6B;AACtD;AAEO,IAAM,OAAO,CAAC,UAA8B;AACjD,SAAmB,yBAAa,YAAY,KAAK,CAAC;AACpD;","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import Zod from 'zod';
|
|
2
1
|
import { NominalType } from '@bessemer/cornerstone/types';
|
|
3
2
|
import { Result } from '@bessemer/cornerstone/result';
|
|
3
|
+
import * as ResourceKeys from '@bessemer/cornerstone/resource-key';
|
|
4
4
|
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
|
5
|
-
export declare const Namespace:
|
|
5
|
+
export declare const Namespace: ResourceKeys.ResourceNamespace<"ipv4-address">;
|
|
6
6
|
export type IpV4Address = NominalType<string, typeof Namespace>;
|
|
7
7
|
export declare const parseString: (value: string) => Result<IpV4Address, ErrorEvent>;
|
|
8
8
|
export declare const from: (value: string) => IpV4Address;
|
|
9
|
-
export declare const Schema:
|
|
9
|
+
export declare const Schema: import("zod").ZodPipe<import("zod").ZodType<IpV4Address, IpV4Address, import("zod/v4/core").$ZodTypeInternals<IpV4Address, IpV4Address>>, import("zod").ZodTransform<IpV4Address, IpV4Address>>;
|
|
10
10
|
//# sourceMappingURL=ipv4-address.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipv4-address.d.ts","sourceRoot":"","sources":["../../src/net/ipv4-address.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ipv4-address.d.ts","sourceRoot":"","sources":["../../src/net/ipv4-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AACrD,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAA;AAGpE,eAAO,MAAM,SAAS,gDAA+C,CAAA;AACrE,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAI/D,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,WAAW,EAAE,UAAU,CAWzE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,KAAG,WAEpC,CAAA;AAED,eAAO,MAAM,MAAM,iMAA0E,CAAA"}
|
package/dist/net/ipv4-address.js
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
// src/net/ipv4-address.ts
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
var Namespace = createNamespace("ipv4-address");
|
|
2
|
+
import * as Results from "@bessemer/cornerstone/result";
|
|
3
|
+
import * as ResourceKeys from "@bessemer/cornerstone/resource-key";
|
|
4
|
+
import * as ErrorEvents from "@bessemer/cornerstone/error/error-event";
|
|
5
|
+
import * as ZodUtil from "@bessemer/cornerstone/zod-util";
|
|
6
|
+
var Namespace = ResourceKeys.createNamespace("ipv4-address");
|
|
8
7
|
var regex = /^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/;
|
|
9
8
|
var parseString = (value) => {
|
|
10
9
|
if (!regex.test(value)) {
|
|
11
|
-
return failure(
|
|
12
|
-
invalidValue(value, {
|
|
10
|
+
return Results.failure(
|
|
11
|
+
ErrorEvents.invalidValue(value, {
|
|
13
12
|
namespace: Namespace,
|
|
14
13
|
message: `[${Namespace}]: Invalid characters for IpV4Address in string: [${value}]`
|
|
15
14
|
})
|
|
16
15
|
);
|
|
17
16
|
}
|
|
18
|
-
return success(value);
|
|
17
|
+
return Results.success(value);
|
|
19
18
|
};
|
|
20
19
|
var from = (value) => {
|
|
21
|
-
return unpackResult(parseString(value));
|
|
20
|
+
return ErrorEvents.unpackResult(parseString(value));
|
|
22
21
|
};
|
|
23
|
-
var Schema = structuredTransform(
|
|
22
|
+
var Schema = ZodUtil.structuredTransform(ZodUtil.string(), parseString);
|
|
24
23
|
export {
|
|
25
24
|
Namespace,
|
|
26
25
|
Schema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/net/ipv4-address.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../src/net/ipv4-address.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport * as Results from '@bessemer/cornerstone/result'\nimport { Result } from '@bessemer/cornerstone/result'\nimport * as ResourceKeys from '@bessemer/cornerstone/resource-key'\nimport * as ErrorEvents from '@bessemer/cornerstone/error/error-event'\nimport { ErrorEvent } from '@bessemer/cornerstone/error/error-event'\nimport * as ZodUtil from '@bessemer/cornerstone/zod-util'\n\nexport const Namespace = ResourceKeys.createNamespace('ipv4-address')\nexport type IpV4Address = NominalType<string, typeof Namespace>\n\nconst regex = /^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$/\n\nexport const parseString = (value: string): Result<IpV4Address, ErrorEvent> => {\n if (!regex.test(value)) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid characters for IpV4Address in string: [${value}]`,\n })\n )\n }\n\n return Results.success(value as IpV4Address)\n}\n\nexport const from = (value: string): IpV4Address => {\n return ErrorEvents.unpackResult(parseString(value))\n}\n\nexport const Schema = ZodUtil.structuredTransform<IpV4Address>(ZodUtil.string(), parseString)\n"],"mappings":";AACA,YAAY,aAAa;AAEzB,YAAY,kBAAkB;AAC9B,YAAY,iBAAiB;AAE7B,YAAY,aAAa;AAElB,IAAM,YAAyB,6BAAgB,cAAc;AAGpE,IAAM,QAAQ;AAEP,IAAM,cAAc,CAAC,UAAmD;AAC7E,MAAI,CAAC,MAAM,KAAK,KAAK,GAAG;AACtB,WAAe;AAAA,MACD,yBAAa,OAAO;AAAA,QAC9B,WAAW;AAAA,QACX,SAAS,IAAI,SAAS,qDAAqD,KAAK;AAAA,MAClF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAe,gBAAQ,KAAoB;AAC7C;AAEO,IAAM,OAAO,CAAC,UAA+B;AAClD,SAAmB,yBAAa,YAAY,KAAK,CAAC;AACpD;AAEO,IAAM,SAAiB,4BAAyC,eAAO,GAAG,WAAW;","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import Zod from 'zod';
|
|
2
1
|
import { NominalType } from '@bessemer/cornerstone/types';
|
|
3
2
|
import { Result } from '@bessemer/cornerstone/result';
|
|
3
|
+
import * as ResourceKeys from '@bessemer/cornerstone/resource-key';
|
|
4
4
|
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
|
5
|
-
export declare const Namespace:
|
|
5
|
+
export declare const Namespace: ResourceKeys.ResourceNamespace<"ipv6-address">;
|
|
6
6
|
export type IpV6Address = NominalType<string, typeof Namespace>;
|
|
7
7
|
export declare const parseString: (value: string) => Result<IpV6Address, ErrorEvent>;
|
|
8
8
|
export declare const from: (value: string) => IpV6Address;
|
|
9
|
-
export declare const Schema:
|
|
9
|
+
export declare const Schema: import("zod").ZodPipe<import("zod").ZodType<IpV6Address, IpV6Address, import("zod/v4/core").$ZodTypeInternals<IpV6Address, IpV6Address>>, import("zod").ZodTransform<IpV6Address, IpV6Address>>;
|
|
10
10
|
//# sourceMappingURL=ipv6-address.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipv6-address.d.ts","sourceRoot":"","sources":["../../src/net/ipv6-address.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ipv6-address.d.ts","sourceRoot":"","sources":["../../src/net/ipv6-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AACrD,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAA;AAGpE,eAAO,MAAM,SAAS,gDAA+C,CAAA;AACrE,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;AAK/D,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,WAAW,EAAE,UAAU,CAWzE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,KAAG,WAEpC,CAAA;AAED,eAAO,MAAM,MAAM,iMAA0E,CAAA"}
|
package/dist/net/ipv6-address.js
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
// src/net/ipv6-address.ts
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
var Namespace = createNamespace("ipv6-address");
|
|
2
|
+
import * as Results from "@bessemer/cornerstone/result";
|
|
3
|
+
import * as ResourceKeys from "@bessemer/cornerstone/resource-key";
|
|
4
|
+
import * as ErrorEvents from "@bessemer/cornerstone/error/error-event";
|
|
5
|
+
import * as ZodUtil from "@bessemer/cornerstone/zod-util";
|
|
6
|
+
var Namespace = ResourceKeys.createNamespace("ipv6-address");
|
|
8
7
|
var regex = /^(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|[a-fA-F\d]{1,4}:(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|:(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:))(?:%[0-9a-zA-Z]+)?$/;
|
|
9
8
|
var parseString = (value) => {
|
|
10
9
|
if (!regex.test(value)) {
|
|
11
|
-
return failure(
|
|
12
|
-
invalidValue(value, {
|
|
10
|
+
return Results.failure(
|
|
11
|
+
ErrorEvents.invalidValue(value, {
|
|
13
12
|
namespace: Namespace,
|
|
14
13
|
message: `[${Namespace}]: Invalid characters for IpV6Address in string: [${value}]`
|
|
15
14
|
})
|
|
16
15
|
);
|
|
17
16
|
}
|
|
18
|
-
return success(value);
|
|
17
|
+
return Results.success(value);
|
|
19
18
|
};
|
|
20
19
|
var from = (value) => {
|
|
21
|
-
return unpackResult(parseString(value));
|
|
20
|
+
return ErrorEvents.unpackResult(parseString(value));
|
|
22
21
|
};
|
|
23
|
-
var Schema = structuredTransform(
|
|
22
|
+
var Schema = ZodUtil.structuredTransform(ZodUtil.string(), parseString);
|
|
24
23
|
export {
|
|
25
24
|
Namespace,
|
|
26
25
|
Schema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/net/ipv6-address.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../src/net/ipv6-address.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport * as Results from '@bessemer/cornerstone/result'\nimport { Result } from '@bessemer/cornerstone/result'\nimport * as ResourceKeys from '@bessemer/cornerstone/resource-key'\nimport * as ErrorEvents from '@bessemer/cornerstone/error/error-event'\nimport { ErrorEvent } from '@bessemer/cornerstone/error/error-event'\nimport * as ZodUtil from '@bessemer/cornerstone/zod-util'\n\nexport const Namespace = ResourceKeys.createNamespace('ipv6-address')\nexport type IpV6Address = NominalType<string, typeof Namespace>\n\nconst regex =\n /^(?:(?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)|(?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)|(?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)|(?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)|[a-fA-F\\d]{1,4}:(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)|:(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:))(?:%[0-9a-zA-Z]+)?$/\n\nexport const parseString = (value: string): Result<IpV6Address, ErrorEvent> => {\n if (!regex.test(value)) {\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid characters for IpV6Address in string: [${value}]`,\n })\n )\n }\n\n return Results.success(value as IpV6Address)\n}\n\nexport const from = (value: string): IpV6Address => {\n return ErrorEvents.unpackResult(parseString(value))\n}\n\nexport const Schema = ZodUtil.structuredTransform<IpV6Address>(ZodUtil.string(), parseString)\n"],"mappings":";AACA,YAAY,aAAa;AAEzB,YAAY,kBAAkB;AAC9B,YAAY,iBAAiB;AAE7B,YAAY,aAAa;AAElB,IAAM,YAAyB,6BAAgB,cAAc;AAGpE,IAAM,QACJ;AAEK,IAAM,cAAc,CAAC,UAAmD;AAC7E,MAAI,CAAC,MAAM,KAAK,KAAK,GAAG;AACtB,WAAe;AAAA,MACD,yBAAa,OAAO;AAAA,QAC9B,WAAW;AAAA,QACX,SAAS,IAAI,SAAS,qDAAqD,KAAK;AAAA,MAClF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAe,gBAAQ,KAAoB;AAC7C;AAEO,IAAM,OAAO,CAAC,UAA+B;AAClD,SAAmB,yBAAa,YAAY,KAAK,CAAC;AACpD;AAEO,IAAM,SAAiB,4BAAyC,eAAO,GAAG,WAAW;","names":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as ResourceKeys from '@bessemer/cornerstone/resource-key';
|
|
2
2
|
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
|
3
3
|
import { DomainName } from '@bessemer/cornerstone/net/domain-name';
|
|
4
4
|
import { IpV4Address } from '@bessemer/cornerstone/net/ipv4-address';
|
|
5
5
|
import { IpV6Address } from '@bessemer/cornerstone/net/ipv6-address';
|
|
6
6
|
import { Result } from '@bessemer/cornerstone/result';
|
|
7
|
-
export declare const Namespace:
|
|
7
|
+
export declare const Namespace: ResourceKeys.ResourceNamespace<"uri-host-name">;
|
|
8
8
|
export type UriHostName = DomainName | IpV4Address | `[${IpV6Address}]`;
|
|
9
9
|
export declare const parseString: (value: string) => Result<UriHostName, ErrorEvent>;
|
|
10
10
|
export declare const from: (value: string) => UriHostName;
|
|
11
|
-
export declare const Schema:
|
|
11
|
+
export declare const Schema: import("zod").ZodPipe<import("zod").ZodType<UriHostName, UriHostName, import("zod/v4/core").$ZodTypeInternals<UriHostName, UriHostName>>, import("zod").ZodTransform<UriHostName, UriHostName>>;
|
|
12
12
|
//# sourceMappingURL=uri-host-name.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uri-host-name.d.ts","sourceRoot":"","sources":["../../src/net/uri-host-name.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"uri-host-name.d.ts","sourceRoot":"","sources":["../../src/net/uri-host-name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAA;AAGpE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AAGpE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAErD,eAAO,MAAM,SAAS,iDAAgD,CAAA;AACtE,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,WAAW,GAAG,CAAA;AAEvE,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,WAAW,EAAE,UAAU,CAuBzE,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,KAAG,WAEpC,CAAA;AAED,eAAO,MAAM,MAAM,iMAA0E,CAAA"}
|
|
@@ -1,44 +1,43 @@
|
|
|
1
1
|
// src/net/uri-host-name.ts
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { parseString as parseIpV6Address } from "@bessemer/cornerstone/net/ipv6-address";
|
|
2
|
+
import * as ResourceKeys from "@bessemer/cornerstone/resource-key";
|
|
3
|
+
import * as ErrorEvents from "@bessemer/cornerstone/error/error-event";
|
|
4
|
+
import * as ZodUtil from "@bessemer/cornerstone/zod-util";
|
|
5
|
+
import * as DomainNames from "@bessemer/cornerstone/net/domain-name";
|
|
6
|
+
import * as IpV4Addresses from "@bessemer/cornerstone/net/ipv4-address";
|
|
7
|
+
import * as IpV6Addresses from "@bessemer/cornerstone/net/ipv6-address";
|
|
9
8
|
import * as Strings from "@bessemer/cornerstone/string";
|
|
10
9
|
import * as Results from "@bessemer/cornerstone/result";
|
|
11
|
-
var Namespace = createNamespace("uri-host-name");
|
|
12
|
-
var
|
|
10
|
+
var Namespace = ResourceKeys.createNamespace("uri-host-name");
|
|
11
|
+
var parseString4 = (value) => {
|
|
13
12
|
if (value.startsWith("[") && value.endsWith("]")) {
|
|
14
|
-
const ipV6Address =
|
|
13
|
+
const ipV6Address = IpV6Addresses.parseString(Strings.removeEnd(Strings.removeStart(value, "["), "]"));
|
|
15
14
|
if (Results.isSuccess(ipV6Address)) {
|
|
16
15
|
return Results.success(`[${ipV6Address}]`);
|
|
17
16
|
}
|
|
18
17
|
}
|
|
19
|
-
const domainName =
|
|
18
|
+
const domainName = DomainNames.parseString(value);
|
|
20
19
|
if (Results.isSuccess(domainName)) {
|
|
21
20
|
return domainName;
|
|
22
21
|
}
|
|
23
|
-
const ipV4Address =
|
|
22
|
+
const ipV4Address = IpV4Addresses.parseString(value);
|
|
24
23
|
if (Results.isSuccess(ipV4Address)) {
|
|
25
24
|
return ipV4Address;
|
|
26
25
|
}
|
|
27
26
|
return Results.failure(
|
|
28
|
-
invalidValue(value, {
|
|
27
|
+
ErrorEvents.invalidValue(value, {
|
|
29
28
|
namespace: Namespace,
|
|
30
29
|
message: `[${Namespace}]: Invalid characters for UriHostName in string: [${value}]`
|
|
31
30
|
})
|
|
32
31
|
);
|
|
33
32
|
};
|
|
34
33
|
var from = (value) => {
|
|
35
|
-
return unpackResult(
|
|
34
|
+
return ErrorEvents.unpackResult(parseString4(value));
|
|
36
35
|
};
|
|
37
|
-
var Schema = structuredTransform(
|
|
36
|
+
var Schema = ZodUtil.structuredTransform(ZodUtil.string(), parseString4);
|
|
38
37
|
export {
|
|
39
38
|
Namespace,
|
|
40
39
|
Schema,
|
|
41
40
|
from,
|
|
42
|
-
parseString
|
|
41
|
+
parseString4 as parseString
|
|
43
42
|
};
|
|
44
43
|
//# sourceMappingURL=uri-host-name.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/net/uri-host-name.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../src/net/uri-host-name.ts"],"sourcesContent":["import * as ResourceKeys from '@bessemer/cornerstone/resource-key'\nimport * as ErrorEvents from '@bessemer/cornerstone/error/error-event'\nimport { ErrorEvent } from '@bessemer/cornerstone/error/error-event'\nimport * as ZodUtil from '@bessemer/cornerstone/zod-util'\nimport * as DomainNames from '@bessemer/cornerstone/net/domain-name'\nimport { DomainName } from '@bessemer/cornerstone/net/domain-name'\nimport * as IpV4Addresses from '@bessemer/cornerstone/net/ipv4-address'\nimport { IpV4Address } from '@bessemer/cornerstone/net/ipv4-address'\nimport * as IpV6Addresses from '@bessemer/cornerstone/net/ipv6-address'\nimport { IpV6Address } from '@bessemer/cornerstone/net/ipv6-address'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as Results from '@bessemer/cornerstone/result'\nimport { Result } from '@bessemer/cornerstone/result'\n\nexport const Namespace = ResourceKeys.createNamespace('uri-host-name')\nexport type UriHostName = DomainName | IpV4Address | `[${IpV6Address}]`\n\nexport const parseString = (value: string): Result<UriHostName, ErrorEvent> => {\n if (value.startsWith('[') && value.endsWith(']')) {\n const ipV6Address = IpV6Addresses.parseString(Strings.removeEnd(Strings.removeStart(value, '['), ']'))\n if (Results.isSuccess(ipV6Address)) {\n return Results.success(`[${ipV6Address}]` as UriHostName)\n }\n }\n\n const domainName = DomainNames.parseString(value)\n if (Results.isSuccess(domainName)) {\n return domainName\n }\n const ipV4Address = IpV4Addresses.parseString(value)\n if (Results.isSuccess(ipV4Address)) {\n return ipV4Address\n }\n\n return Results.failure(\n ErrorEvents.invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid characters for UriHostName in string: [${value}]`,\n })\n )\n}\n\nexport const from = (value: string): UriHostName => {\n return ErrorEvents.unpackResult(parseString(value))\n}\n\nexport const Schema = ZodUtil.structuredTransform<UriHostName>(ZodUtil.string(), parseString)\n"],"mappings":";AAAA,YAAY,kBAAkB;AAC9B,YAAY,iBAAiB;AAE7B,YAAY,aAAa;AACzB,YAAY,iBAAiB;AAE7B,YAAY,mBAAmB;AAE/B,YAAY,mBAAmB;AAE/B,YAAY,aAAa;AACzB,YAAY,aAAa;AAGlB,IAAM,YAAyB,6BAAgB,eAAe;AAG9D,IAAMA,eAAc,CAAC,UAAmD;AAC7E,MAAI,MAAM,WAAW,GAAG,KAAK,MAAM,SAAS,GAAG,GAAG;AAChD,UAAM,cAA4B,0BAAoB,kBAAkB,oBAAY,OAAO,GAAG,GAAG,GAAG,CAAC;AACrG,QAAY,kBAAU,WAAW,GAAG;AAClC,aAAe,gBAAQ,IAAI,WAAW,GAAkB;AAAA,IAC1D;AAAA,EACF;AAEA,QAAM,aAAyB,wBAAY,KAAK;AAChD,MAAY,kBAAU,UAAU,GAAG;AACjC,WAAO;AAAA,EACT;AACA,QAAM,cAA4B,0BAAY,KAAK;AACnD,MAAY,kBAAU,WAAW,GAAG;AAClC,WAAO;AAAA,EACT;AAEA,SAAe;AAAA,IACD,yBAAa,OAAO;AAAA,MAC9B,WAAW;AAAA,MACX,SAAS,IAAI,SAAS,qDAAqD,KAAK;AAAA,IAClF,CAAC;AAAA,EACH;AACF;AAEO,IAAM,OAAO,CAAC,UAA+B;AAClD,SAAmB,yBAAaA,aAAY,KAAK,CAAC;AACpD;AAEO,IAAM,SAAiB,4BAAyC,eAAO,GAAGA,YAAW;","names":["parseString"]}
|