@bessemer/cornerstone 0.5.109 → 0.5.110
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 +2 -1
- package/dist/array.d.ts.map +1 -1
- package/dist/array.js +11 -0
- package/dist/array.js.map +1 -1
- package/dist/either.d.ts +23 -40
- package/dist/either.d.ts.map +1 -1
- package/dist/either.js +50 -88
- package/dist/either.js.map +1 -1
- package/dist/error/error-event.d.ts.map +1 -1
- package/dist/error/error-event.js +3 -2
- package/dist/error/error-event.js.map +1 -1
- package/dist/error/error.d.ts +10 -0
- package/dist/error/error.d.ts.map +1 -1
- package/dist/error/error.js +21 -2
- package/dist/error/error.js.map +1 -1
- package/dist/generators.d.ts +2 -0
- package/dist/generators.d.ts.map +1 -0
- package/dist/generators.js +14 -0
- package/dist/generators.js.map +1 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts +2 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js.map +1 -1
- package/dist/math.d.ts +2 -0
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +9 -1
- package/dist/math.js.map +1 -1
- package/dist/mime-type.d.ts +4 -3
- package/dist/mime-type.d.ts.map +1 -1
- package/dist/mime-type.js +9 -6
- package/dist/mime-type.js.map +1 -1
- package/dist/net/content-type.d.ts +21 -0
- package/dist/net/content-type.d.ts.map +1 -0
- package/dist/net/content-type.js +120 -0
- package/dist/net/content-type.js.map +1 -0
- package/dist/net/fetch.d.ts +18 -0
- package/dist/net/fetch.d.ts.map +1 -0
- package/dist/net/fetch.js +65 -0
- package/dist/net/fetch.js.map +1 -0
- package/dist/net/http-method.d.ts +18 -0
- package/dist/net/http-method.d.ts.map +1 -0
- package/dist/net/http-method.js +37 -0
- package/dist/net/http-method.js.map +1 -0
- package/dist/net/http-request.d.ts +12 -0
- package/dist/net/http-request.d.ts.map +1 -0
- package/dist/net/http-request.js +1 -0
- package/dist/net/http-request.js.map +1 -0
- package/dist/net/uri-host-name.d.ts +1 -1
- package/dist/net/uri-host-name.d.ts.map +1 -1
- package/dist/net/uri-host-name.js +6 -6
- package/dist/net/uri-host-name.js.map +1 -1
- package/dist/net/uri.d.ts +12 -4
- package/dist/net/uri.d.ts.map +1 -1
- package/dist/net/uri.js +87 -36
- package/dist/net/uri.js.map +1 -1
- package/dist/net/url.d.ts +9 -6
- package/dist/net/url.d.ts.map +1 -1
- package/dist/net/url.js +58 -21
- package/dist/net/url.js.map +1 -1
- package/dist/object/object-diff.d.ts.map +1 -1
- package/dist/object/object-diff.js.map +1 -1
- package/dist/object/type-path.d.ts.map +1 -1
- package/dist/object/type-path.js +12 -14
- package/dist/object/type-path.js.map +1 -1
- package/dist/object.d.ts +2 -0
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +17 -1
- package/dist/object.js.map +1 -1
- package/dist/promise.d.ts +3 -1
- package/dist/promise.d.ts.map +1 -1
- package/dist/promise.js +9 -0
- package/dist/promise.js.map +1 -1
- package/dist/proxy.d.ts +2 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +20 -0
- package/dist/proxy.js.map +1 -0
- package/dist/result.d.ts +18 -20
- package/dist/result.d.ts.map +1 -1
- package/dist/result.js +41 -61
- package/dist/result.js.map +1 -1
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +3 -3
- package/dist/retry.js.map +1 -1
- package/dist/sql/sql-expression-parser.d.ts.map +1 -1
- package/dist/sql/sql-expression-parser.js +5 -5
- package/dist/sql/sql-expression-parser.js.map +1 -1
- package/dist/string.d.ts +1 -0
- package/dist/string.d.ts.map +1 -1
- package/dist/string.js +4 -0
- package/dist/string.js.map +1 -1
- package/dist/temporal/duration.d.ts.map +1 -1
- package/dist/temporal/duration.js +2 -1
- package/dist/temporal/duration.js.map +1 -1
- package/dist/temporal/instant.d.ts.map +1 -1
- package/dist/temporal/instant.js +2 -1
- 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 -1
- 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 -1
- 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 -1
- 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 -1
- package/dist/temporal/zoned-date-time.js.map +1 -1
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -1
- package/dist/zod-util.d.ts +55 -6
- package/dist/zod-util.d.ts.map +1 -1
- package/dist/zod-util.js +99 -11
- package/dist/zod-util.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Dictionary } from '@bessemer/cornerstone/types';
|
|
2
|
+
export type FetchRequest = NonNullable<Parameters<typeof fetch>[1]>;
|
|
3
|
+
export type FetchResponse = Awaited<ReturnType<typeof fetch>>;
|
|
4
|
+
export type FetchPayload = {
|
|
5
|
+
url: string;
|
|
6
|
+
} & FetchRequest;
|
|
7
|
+
export type FetchFunction = (url: string, request: FetchRequest | undefined) => Promise<FetchResponse>;
|
|
8
|
+
export type FetchRequestDto = {
|
|
9
|
+
url: string;
|
|
10
|
+
headers?: Dictionary<string>;
|
|
11
|
+
body?: string;
|
|
12
|
+
} & Pick<FetchRequest, 'method' | 'mode' | 'credentials' | 'cache' | 'redirect' | 'referrer' | 'integrity'>;
|
|
13
|
+
export type FetchResponseDto = {
|
|
14
|
+
url: string;
|
|
15
|
+
};
|
|
16
|
+
export declare const serializeRequest: (request: FetchPayload) => FetchRequestDto;
|
|
17
|
+
export declare const serializeResponse: (response: FetchResponse) => FetchResponseDto;
|
|
18
|
+
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/net/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAMxD,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACnE,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAA;AAC7D,MAAM,MAAM,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAAA;AACzD,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AAEtG,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,GAAG,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC,CAAA;AAE3G,MAAM,MAAM,gBAAgB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9C,eAAO,MAAM,gBAAgB,GAAI,SAAS,YAAY,KAAG,eA0DxD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,UAAU,aAAa,KAAG,gBAE3D,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// src/net/fetch.ts
|
|
2
|
+
import * as Objects from "@bessemer/cornerstone/object";
|
|
3
|
+
import * as Strings from "@bessemer/cornerstone/string";
|
|
4
|
+
import * as ContentTypes from "@bessemer/cornerstone/net/content-type";
|
|
5
|
+
import * as MimeTypes from "@bessemer/cornerstone/mime-type";
|
|
6
|
+
var serializeRequest = (request) => {
|
|
7
|
+
const dto = { url: request.url };
|
|
8
|
+
if (Objects.isPresent(dto.method)) {
|
|
9
|
+
dto.method = request.method;
|
|
10
|
+
}
|
|
11
|
+
if (Objects.isPresent(request.mode)) {
|
|
12
|
+
dto.mode = request.mode;
|
|
13
|
+
}
|
|
14
|
+
if (Objects.isPresent(request.credentials)) {
|
|
15
|
+
dto.credentials = request.credentials;
|
|
16
|
+
}
|
|
17
|
+
if (Objects.isPresent(request.cache)) {
|
|
18
|
+
dto.cache = request.cache;
|
|
19
|
+
}
|
|
20
|
+
if (Objects.isPresent(request.redirect)) {
|
|
21
|
+
dto.redirect = request.redirect;
|
|
22
|
+
}
|
|
23
|
+
if (Objects.isPresent(request.referrer)) {
|
|
24
|
+
dto.referrer = request.referrer;
|
|
25
|
+
}
|
|
26
|
+
if (Objects.isPresent(request.integrity)) {
|
|
27
|
+
dto.integrity = request.integrity;
|
|
28
|
+
}
|
|
29
|
+
if (Objects.isPresent(request.headers)) {
|
|
30
|
+
const headers = {};
|
|
31
|
+
const headersObj = request.headers instanceof Headers ? request.headers : new Headers(request.headers);
|
|
32
|
+
headersObj.forEach((value, key) => {
|
|
33
|
+
headers[key] = value;
|
|
34
|
+
});
|
|
35
|
+
if (!Objects.isEmpty(headers)) {
|
|
36
|
+
dto.headers = headers;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (Objects.isPresent(request.body)) {
|
|
40
|
+
if (Strings.isString(request.body)) {
|
|
41
|
+
dto.body = request.body;
|
|
42
|
+
} else {
|
|
43
|
+
const headersObj = request.headers instanceof Headers ? request.headers : new Headers(request.headers);
|
|
44
|
+
const contentType = headersObj.get("Content-Type");
|
|
45
|
+
if (Objects.isPresent(contentType) && ContentTypes.from(contentType).mimeType === MimeTypes.Json) {
|
|
46
|
+
try {
|
|
47
|
+
dto.body = JSON.stringify(request.body);
|
|
48
|
+
} catch {
|
|
49
|
+
dto.body = Object.prototype.toString.call(request.body);
|
|
50
|
+
}
|
|
51
|
+
} else {
|
|
52
|
+
dto.body = Object.prototype.toString.call(request.body);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return dto;
|
|
57
|
+
};
|
|
58
|
+
var serializeResponse = (response) => {
|
|
59
|
+
return { url: response.url };
|
|
60
|
+
};
|
|
61
|
+
export {
|
|
62
|
+
serializeRequest,
|
|
63
|
+
serializeResponse
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/net/fetch.ts"],"sourcesContent":["import { Dictionary } from '@bessemer/cornerstone/types'\nimport * as Objects from '@bessemer/cornerstone/object'\nimport * as Strings from '@bessemer/cornerstone/string'\nimport * as ContentTypes from '@bessemer/cornerstone/net/content-type'\nimport * as MimeTypes from '@bessemer/cornerstone/mime-type'\n\nexport type FetchRequest = NonNullable<Parameters<typeof fetch>[1]>\nexport type FetchResponse = Awaited<ReturnType<typeof fetch>>\nexport type FetchPayload = { url: string } & FetchRequest\nexport type FetchFunction = (url: string, request: FetchRequest | undefined) => Promise<FetchResponse>\n\nexport type FetchRequestDto = {\n url: string\n headers?: Dictionary<string>\n body?: string\n} & Pick<FetchRequest, 'method' | 'mode' | 'credentials' | 'cache' | 'redirect' | 'referrer' | 'integrity'>\n\nexport type FetchResponseDto = { url: string }\n\nexport const serializeRequest = (request: FetchPayload): FetchRequestDto => {\n const dto: FetchRequestDto = { url: request.url }\n\n if (Objects.isPresent(dto.method)) {\n dto.method = request.method\n }\n if (Objects.isPresent(request.mode)) {\n dto.mode = request.mode\n }\n if (Objects.isPresent(request.credentials)) {\n dto.credentials = request.credentials\n }\n if (Objects.isPresent(request.cache)) {\n dto.cache = request.cache\n }\n if (Objects.isPresent(request.redirect)) {\n dto.redirect = request.redirect\n }\n if (Objects.isPresent(request.referrer)) {\n dto.referrer = request.referrer\n }\n if (Objects.isPresent(request.integrity)) {\n dto.integrity = request.integrity\n }\n\n if (Objects.isPresent(request.headers)) {\n const headers: Dictionary<string> = {}\n const headersObj = request.headers instanceof Headers ? request.headers : new Headers(request.headers)\n headersObj.forEach((value, key) => {\n headers[key] = value\n })\n\n if (!Objects.isEmpty(headers)) {\n dto.headers = headers\n }\n }\n\n if (Objects.isPresent(request.body)) {\n if (Strings.isString(request.body)) {\n dto.body = request.body\n } else {\n const headersObj = request.headers instanceof Headers ? request.headers : new Headers(request.headers)\n const contentType = headersObj.get('Content-Type')\n\n if (Objects.isPresent(contentType) && ContentTypes.from(contentType).mimeType === MimeTypes.Json) {\n try {\n dto.body = JSON.stringify(request.body)\n } catch {\n dto.body = Object.prototype.toString.call(request.body)\n }\n } else {\n // FormData, Blob, ArrayBuffer, etc. are not serializable to JSON\n dto.body = Object.prototype.toString.call(request.body)\n }\n }\n }\n\n return dto\n}\n\nexport const serializeResponse = (response: FetchResponse): FetchResponseDto => {\n return { url: response.url }\n}\n"],"mappings":";AACA,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB,YAAY,kBAAkB;AAC9B,YAAY,eAAe;AAepB,IAAM,mBAAmB,CAAC,YAA2C;AAC1E,QAAM,MAAuB,EAAE,KAAK,QAAQ,IAAI;AAEhD,MAAY,kBAAU,IAAI,MAAM,GAAG;AACjC,QAAI,SAAS,QAAQ;AAAA,EACvB;AACA,MAAY,kBAAU,QAAQ,IAAI,GAAG;AACnC,QAAI,OAAO,QAAQ;AAAA,EACrB;AACA,MAAY,kBAAU,QAAQ,WAAW,GAAG;AAC1C,QAAI,cAAc,QAAQ;AAAA,EAC5B;AACA,MAAY,kBAAU,QAAQ,KAAK,GAAG;AACpC,QAAI,QAAQ,QAAQ;AAAA,EACtB;AACA,MAAY,kBAAU,QAAQ,QAAQ,GAAG;AACvC,QAAI,WAAW,QAAQ;AAAA,EACzB;AACA,MAAY,kBAAU,QAAQ,QAAQ,GAAG;AACvC,QAAI,WAAW,QAAQ;AAAA,EACzB;AACA,MAAY,kBAAU,QAAQ,SAAS,GAAG;AACxC,QAAI,YAAY,QAAQ;AAAA,EAC1B;AAEA,MAAY,kBAAU,QAAQ,OAAO,GAAG;AACtC,UAAM,UAA8B,CAAC;AACrC,UAAM,aAAa,QAAQ,mBAAmB,UAAU,QAAQ,UAAU,IAAI,QAAQ,QAAQ,OAAO;AACrG,eAAW,QAAQ,CAAC,OAAO,QAAQ;AACjC,cAAQ,GAAG,IAAI;AAAA,IACjB,CAAC;AAED,QAAI,CAAS,gBAAQ,OAAO,GAAG;AAC7B,UAAI,UAAU;AAAA,IAChB;AAAA,EACF;AAEA,MAAY,kBAAU,QAAQ,IAAI,GAAG;AACnC,QAAY,iBAAS,QAAQ,IAAI,GAAG;AAClC,UAAI,OAAO,QAAQ;AAAA,IACrB,OAAO;AACL,YAAM,aAAa,QAAQ,mBAAmB,UAAU,QAAQ,UAAU,IAAI,QAAQ,QAAQ,OAAO;AACrG,YAAM,cAAc,WAAW,IAAI,cAAc;AAEjD,UAAY,kBAAU,WAAW,KAAkB,kBAAK,WAAW,EAAE,aAAuB,gBAAM;AAChG,YAAI;AACF,cAAI,OAAO,KAAK,UAAU,QAAQ,IAAI;AAAA,QACxC,QAAQ;AACN,cAAI,OAAO,OAAO,UAAU,SAAS,KAAK,QAAQ,IAAI;AAAA,QACxD;AAAA,MACF,OAAO;AAEL,YAAI,OAAO,OAAO,UAAU,SAAS,KAAK,QAAQ,IAAI;AAAA,MACxD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,oBAAoB,CAAC,aAA8C;AAC9E,SAAO,EAAE,KAAK,SAAS,IAAI;AAC7B;","names":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Result } from '@bessemer/cornerstone/result';
|
|
2
|
+
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
|
3
|
+
import { ValueOf } from 'type-fest';
|
|
4
|
+
export declare const HttpMethod: {
|
|
5
|
+
readonly Get: "get";
|
|
6
|
+
readonly Post: "post";
|
|
7
|
+
readonly Put: "put";
|
|
8
|
+
readonly Patch: "patch";
|
|
9
|
+
readonly Delete: "delete";
|
|
10
|
+
readonly Head: "head";
|
|
11
|
+
readonly Options: "options";
|
|
12
|
+
readonly Trace: "trace";
|
|
13
|
+
readonly Connect: "connect";
|
|
14
|
+
};
|
|
15
|
+
export type HttpMethod = ValueOf<typeof HttpMethod>;
|
|
16
|
+
export declare const parseString: (value: string) => Result<HttpMethod, ErrorEvent>;
|
|
17
|
+
export declare const from: (value: string) => HttpMethod;
|
|
18
|
+
//# sourceMappingURL=http-method.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-method.d.ts","sourceRoot":"","sources":["../../src/net/http-method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAW,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAEhG,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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// src/net/http-method.ts
|
|
2
|
+
import { failure, success } from "@bessemer/cornerstone/result";
|
|
3
|
+
import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
|
|
4
|
+
import { Namespace } from "@bessemer/cornerstone/net/domain-name";
|
|
5
|
+
var HttpMethod = {
|
|
6
|
+
Get: "get",
|
|
7
|
+
Post: "post",
|
|
8
|
+
Put: "put",
|
|
9
|
+
Patch: "patch",
|
|
10
|
+
Delete: "delete",
|
|
11
|
+
Head: "head",
|
|
12
|
+
Options: "options",
|
|
13
|
+
Trace: "trace",
|
|
14
|
+
Connect: "connect"
|
|
15
|
+
};
|
|
16
|
+
var parseString = (value) => {
|
|
17
|
+
const normalizedValue = value.toLowerCase();
|
|
18
|
+
const validMethods = Object.values(HttpMethod);
|
|
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(", ")}`
|
|
24
|
+
})
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
return success(normalizedValue);
|
|
28
|
+
};
|
|
29
|
+
var from = (value) => {
|
|
30
|
+
return unpackResult(parseString(value));
|
|
31
|
+
};
|
|
32
|
+
export {
|
|
33
|
+
HttpMethod,
|
|
34
|
+
from,
|
|
35
|
+
parseString
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=http-method.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/net/http-method.ts"],"sourcesContent":["import { failure, Result, success } from '@bessemer/cornerstone/result'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { Namespace } 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 failure(\n invalidValue(value, {\n namespace: Namespace,\n message: `[${Namespace}]: Invalid HttpMethod in string: [${value}]. Valid methods are: ${validMethods.join(', ')}`,\n })\n )\n }\n\n return success(normalizedValue as HttpMethod)\n}\n\nexport const from = (value: string): HttpMethod => {\n return unpackResult(parseString(value))\n}\n"],"mappings":";AAAA,SAAS,SAAiB,eAAe;AACzC,SAAqB,cAAc,oBAAoB;AACvD,SAAS,iBAAiB;AAGnB,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,WAAO;AAAA,MACL,aAAa,OAAO;AAAA,QAClB,WAAW;AAAA,QACX,SAAS,IAAI,SAAS,qCAAqC,KAAK,yBAAyB,aAAa,KAAK,IAAI,CAAC;AAAA,MAClH,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO,QAAQ,eAA6B;AAC9C;AAEO,IAAM,OAAO,CAAC,UAA8B;AACjD,SAAO,aAAa,YAAY,KAAK,CAAC;AACxC;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { HttpMethod } from '@bessemer/cornerstone/net/http-method';
|
|
2
|
+
import { Url } from '@bessemer/cornerstone/net/url';
|
|
3
|
+
import { Dictionary } from '@bessemer/cornerstone/types';
|
|
4
|
+
export type HttpRequest<TBody = unknown, TPathParameters = Dictionary<unknown>, TQueryParameters = Dictionary<unknown>, THeaders = Dictionary<unknown>> = {
|
|
5
|
+
method: HttpMethod;
|
|
6
|
+
url: Url;
|
|
7
|
+
body: TBody;
|
|
8
|
+
pathParameters: TPathParameters;
|
|
9
|
+
queryParameters: TQueryParameters;
|
|
10
|
+
headers: THeaders;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=http-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-request.d.ts","sourceRoot":"","sources":["../../src/net/http-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAExD,MAAM,MAAM,WAAW,CACrB,KAAK,GAAG,OAAO,EACf,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,EACrC,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,EACtC,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,IAC5B;IACF,MAAM,EAAE,UAAU,CAAA;IAClB,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,KAAK,CAAA;IACX,cAAc,EAAE,eAAe,CAAA;IAC/B,eAAe,EAAE,gBAAgB,CAAA;IACjC,OAAO,EAAE,QAAQ,CAAA;CAClB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=http-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import Zod from 'zod';
|
|
2
|
-
import { Result } from '@bessemer/cornerstone/result';
|
|
3
2
|
import { ErrorEvent } from '@bessemer/cornerstone/error/error-event';
|
|
4
3
|
import { DomainName } from '@bessemer/cornerstone/net/domain-name';
|
|
5
4
|
import { IpV4Address } from '@bessemer/cornerstone/net/ipv4-address';
|
|
6
5
|
import { IpV6Address } from '@bessemer/cornerstone/net/ipv6-address';
|
|
6
|
+
import { Result } from '@bessemer/cornerstone/result';
|
|
7
7
|
export declare const Namespace: import("@bessemer/cornerstone/resource-key").ResourceNamespace<"uri-host-name">;
|
|
8
8
|
export type UriHostName = DomainName | IpV4Address | `[${IpV6Address}]`;
|
|
9
9
|
export declare const parseString: (value: string) => Result<UriHostName, ErrorEvent>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uri-host-name.d.ts","sourceRoot":"","sources":["../../src/net/uri-host-name.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"uri-host-name.d.ts","sourceRoot":"","sources":["../../src/net/uri-host-name.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,UAAU,EAA8B,MAAM,yCAAyC,CAAA;AAEhG,OAAO,EAAE,UAAU,EAAkC,MAAM,uCAAuC,CAAA;AAClG,OAAO,EAAE,WAAW,EAAmC,MAAM,wCAAwC,CAAA;AACrG,OAAO,EAAE,WAAW,EAAmC,MAAM,wCAAwC,CAAA;AAGrG,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAErD,eAAO,MAAM,SAAS,iFAAmC,CAAA;AACzD,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,mEAAiD,CAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// src/net/uri-host-name.ts
|
|
2
2
|
import Zod from "zod";
|
|
3
|
-
import { failure, success } from "@bessemer/cornerstone/result";
|
|
4
3
|
import { createNamespace } from "@bessemer/cornerstone/resource-key";
|
|
5
4
|
import { invalidValue, unpackResult } from "@bessemer/cornerstone/error/error-event";
|
|
6
5
|
import { structuredTransform } from "@bessemer/cornerstone/zod-util";
|
|
@@ -8,23 +7,24 @@ import { parseString as parseDomainName } from "@bessemer/cornerstone/net/domain
|
|
|
8
7
|
import { parseString as parseIpV4Address } from "@bessemer/cornerstone/net/ipv4-address";
|
|
9
8
|
import { parseString as parseIpV6Address } from "@bessemer/cornerstone/net/ipv6-address";
|
|
10
9
|
import * as Strings from "@bessemer/cornerstone/string";
|
|
10
|
+
import * as Results from "@bessemer/cornerstone/result";
|
|
11
11
|
var Namespace = createNamespace("uri-host-name");
|
|
12
12
|
var parseString = (value) => {
|
|
13
13
|
if (value.startsWith("[") && value.endsWith("]")) {
|
|
14
14
|
const ipV6Address = parseIpV6Address(Strings.removeEnd(Strings.removeStart(value, "["), "]"));
|
|
15
|
-
if (
|
|
16
|
-
return success(`[${ipV6Address
|
|
15
|
+
if (Results.isSuccess(ipV6Address)) {
|
|
16
|
+
return Results.success(`[${ipV6Address}]`);
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
const domainName = parseDomainName(value);
|
|
20
|
-
if (
|
|
20
|
+
if (Results.isSuccess(domainName)) {
|
|
21
21
|
return domainName;
|
|
22
22
|
}
|
|
23
23
|
const ipV4Address = parseIpV4Address(value);
|
|
24
|
-
if (
|
|
24
|
+
if (Results.isSuccess(ipV4Address)) {
|
|
25
25
|
return ipV4Address;
|
|
26
26
|
}
|
|
27
|
-
return failure(
|
|
27
|
+
return Results.failure(
|
|
28
28
|
invalidValue(value, {
|
|
29
29
|
namespace: Namespace,
|
|
30
30
|
message: `[${Namespace}]: Invalid characters for UriHostName in string: [${value}]`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/net/uri-host-name.ts"],"sourcesContent":["import Zod from 'zod'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/net/uri-host-name.ts"],"sourcesContent":["import Zod from 'zod'\nimport { createNamespace } from '@bessemer/cornerstone/resource-key'\nimport { ErrorEvent, invalidValue, unpackResult } from '@bessemer/cornerstone/error/error-event'\nimport { structuredTransform } from '@bessemer/cornerstone/zod-util'\nimport { DomainName, parseString as parseDomainName } from '@bessemer/cornerstone/net/domain-name'\nimport { IpV4Address, parseString as parseIpV4Address } from '@bessemer/cornerstone/net/ipv4-address'\nimport { IpV6Address, parseString as parseIpV6Address } 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 = 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 = parseIpV6Address(Strings.removeEnd(Strings.removeStart(value, '['), ']'))\n if (Results.isSuccess(ipV6Address)) {\n return Results.success(`[${ipV6Address}]` as UriHostName)\n }\n }\n\n const domainName = parseDomainName(value)\n if (Results.isSuccess(domainName)) {\n return domainName\n }\n const ipV4Address = parseIpV4Address(value)\n if (Results.isSuccess(ipV4Address)) {\n return ipV4Address\n }\n\n return Results.failure(\n 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 unpackResult(parseString(value))\n}\n\nexport const Schema = structuredTransform(Zod.string(), parseString)\n"],"mappings":";AAAA,OAAO,SAAS;AAChB,SAAS,uBAAuB;AAChC,SAAqB,cAAc,oBAAoB;AACvD,SAAS,2BAA2B;AACpC,SAAqB,eAAe,uBAAuB;AAC3D,SAAsB,eAAe,wBAAwB;AAC7D,SAAsB,eAAe,wBAAwB;AAC7D,YAAY,aAAa;AACzB,YAAY,aAAa;AAGlB,IAAM,YAAY,gBAAgB,eAAe;AAGjD,IAAM,cAAc,CAAC,UAAmD;AAC7E,MAAI,MAAM,WAAW,GAAG,KAAK,MAAM,SAAS,GAAG,GAAG;AAChD,UAAM,cAAc,iBAAyB,kBAAkB,oBAAY,OAAO,GAAG,GAAG,GAAG,CAAC;AAC5F,QAAY,kBAAU,WAAW,GAAG;AAClC,aAAe,gBAAQ,IAAI,WAAW,GAAkB;AAAA,IAC1D;AAAA,EACF;AAEA,QAAM,aAAa,gBAAgB,KAAK;AACxC,MAAY,kBAAU,UAAU,GAAG;AACjC,WAAO;AAAA,EACT;AACA,QAAM,cAAc,iBAAiB,KAAK;AAC1C,MAAY,kBAAU,WAAW,GAAG;AAClC,WAAO;AAAA,EACT;AAEA,SAAe;AAAA,IACb,aAAa,OAAO;AAAA,MAClB,WAAW;AAAA,MACX,SAAS,IAAI,SAAS,qDAAqD,KAAK;AAAA,IAClF,CAAC;AAAA,EACH;AACF;AAEO,IAAM,OAAO,CAAC,UAA+B;AAClD,SAAO,aAAa,YAAY,KAAK,CAAC;AACxC;AAEO,IAAM,SAAS,oBAAoB,IAAI,OAAO,GAAG,WAAW;","names":[]}
|
package/dist/net/uri.d.ts
CHANGED
|
@@ -84,7 +84,12 @@ export type UriLike = Uri | UriLiteral | UriBuilder;
|
|
|
84
84
|
*
|
|
85
85
|
* @category parsing
|
|
86
86
|
*/
|
|
87
|
-
export declare const parseString: (value: string) => Result<Uri, ErrorEvent>;
|
|
87
|
+
export declare const parseString: (value: string, mode?: UriParseMode) => Result<Uri, ErrorEvent>;
|
|
88
|
+
export declare const UriParseMode: {
|
|
89
|
+
readonly Strict: "strict";
|
|
90
|
+
readonly Permissive: "permissive";
|
|
91
|
+
};
|
|
92
|
+
export type UriParseMode = ValueOf<typeof UriParseMode>;
|
|
88
93
|
/**
|
|
89
94
|
* Converts various URI-like inputs into a Uri object. Handles Uri instances,
|
|
90
95
|
* string literals, and builder objects, returning them as-is when already a Uri
|
|
@@ -145,6 +150,7 @@ export declare function toLiteral(likeValue: UriLike | null): UriLiteral | null;
|
|
|
145
150
|
export declare function toLiteral(likeValue: UriLike | undefined): UriLiteral | undefined;
|
|
146
151
|
export declare function toLiteral(likeValue: UriLike | null | undefined): UriLiteral | null | undefined;
|
|
147
152
|
export declare const SchemaLiteral: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<UriLiteral, string>>;
|
|
153
|
+
export declare const empty: () => Uri;
|
|
148
154
|
/**
|
|
149
155
|
* Tests if the provided value is a Uri.
|
|
150
156
|
*
|
|
@@ -166,7 +172,7 @@ export declare const SchemaLiteral: Zod.ZodPipe<Zod.ZodString, Zod.ZodTransform<
|
|
|
166
172
|
*/
|
|
167
173
|
export declare const isUri: (value: unknown) => value is Uri;
|
|
168
174
|
/**
|
|
169
|
-
*
|
|
175
|
+
* Updates an existing URI with partial changes to create a new URI instance.
|
|
170
176
|
* Allows selective updates without replacing the entire URI.
|
|
171
177
|
*
|
|
172
178
|
* **Example**
|
|
@@ -183,7 +189,7 @@ export declare const isUri: (value: unknown) => value is Uri;
|
|
|
183
189
|
* })
|
|
184
190
|
*
|
|
185
191
|
* // Change just the host and add query parameter
|
|
186
|
-
* const updatedUri = Uris.
|
|
192
|
+
* const updatedUri = Uris.update(baseUri, {
|
|
187
193
|
* host: { value: 'api.production.com' }, // Port preserved from original
|
|
188
194
|
* location: {
|
|
189
195
|
* parameters: { version: '2.0' } // Merges with existing parameters
|
|
@@ -197,7 +203,8 @@ export declare const isUri: (value: unknown) => value is Uri;
|
|
|
197
203
|
*
|
|
198
204
|
* @category transformation
|
|
199
205
|
*/
|
|
200
|
-
export declare const
|
|
206
|
+
export declare const update: (element: UriLike, builder: UriBuilder) => Uri;
|
|
207
|
+
export declare const merge: (...uris: Array<UriLike>) => Uri;
|
|
201
208
|
export declare const UriComponentType: {
|
|
202
209
|
readonly Scheme: "Scheme";
|
|
203
210
|
readonly Authentication: "Authentication";
|
|
@@ -243,6 +250,7 @@ export type UriComponentType = ValueOf<typeof UriComponentType>;
|
|
|
243
250
|
* @category serialization
|
|
244
251
|
*/
|
|
245
252
|
export declare const format: (uriLike: UriLike, excludedUriComponents?: Array<UriComponentType>) => UriLiteral;
|
|
253
|
+
export declare const isComplete: (uri: Uri) => boolean;
|
|
246
254
|
export declare const encode: (uriComponent: UriComponent) => string;
|
|
247
255
|
export declare const decode: (uriComponent: UriComponent) => string;
|
|
248
256
|
export {};
|
package/dist/net/uri.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uri.d.ts","sourceRoot":"","sources":["../../src/net/uri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAKrE,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAElE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"uri.d.ts","sourceRoot":"","sources":["../../src/net/uri.ts"],"names":[],"mappings":"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"}
|
package/dist/net/uri.js
CHANGED
|
@@ -4,7 +4,6 @@ import * as Objects from "@bessemer/cornerstone/object";
|
|
|
4
4
|
import * as Arrays from "@bessemer/cornerstone/array";
|
|
5
5
|
import * as ResourceKeys from "@bessemer/cornerstone/resource-key";
|
|
6
6
|
import * as Results from "@bessemer/cornerstone/result";
|
|
7
|
-
import { success as success2 } from "@bessemer/cornerstone/result";
|
|
8
7
|
import * as ErrorEvents from "@bessemer/cornerstone/error/error-event";
|
|
9
8
|
import { structuredTransform } from "@bessemer/cornerstone/zod-util";
|
|
10
9
|
import Zod from "zod";
|
|
@@ -14,17 +13,12 @@ import * as UriHostNames from "@bessemer/cornerstone/net/uri-host-name";
|
|
|
14
13
|
var Namespace = ResourceKeys.createNamespace("uri");
|
|
15
14
|
var UrlNamespace = ResourceKeys.createNamespace("url");
|
|
16
15
|
var EqualBy = Equalitors.deepNatural();
|
|
17
|
-
var parseString3 = (value) => {
|
|
16
|
+
var parseString3 = (value, mode = UriParseMode.Strict) => {
|
|
18
17
|
if (Strings.isBlank(value)) {
|
|
19
|
-
return Results.
|
|
20
|
-
ErrorEvents.required({
|
|
21
|
-
namespace: Namespace,
|
|
22
|
-
message: `[${Namespace}]: Unable to parse Uri from empty string.`
|
|
23
|
-
})
|
|
24
|
-
);
|
|
18
|
+
return Results.success(empty());
|
|
25
19
|
}
|
|
26
20
|
const schemeResult = parseSchemePart(value);
|
|
27
|
-
if (
|
|
21
|
+
if (Results.isFailure(schemeResult)) {
|
|
28
22
|
return Results.failure(
|
|
29
23
|
ErrorEvents.invalidValue(value, {
|
|
30
24
|
namespace: Namespace,
|
|
@@ -33,9 +27,9 @@ var parseString3 = (value) => {
|
|
|
33
27
|
})
|
|
34
28
|
);
|
|
35
29
|
}
|
|
36
|
-
const [scheme, rest1] = schemeResult
|
|
37
|
-
const authorityPartResult = parseAuthorityPart(rest1);
|
|
38
|
-
if (
|
|
30
|
+
const [scheme, rest1] = schemeResult;
|
|
31
|
+
const authorityPartResult = parseAuthorityPart(rest1, mode);
|
|
32
|
+
if (Results.isFailure(authorityPartResult)) {
|
|
39
33
|
return Results.failure(
|
|
40
34
|
ErrorEvents.invalidValue(value, {
|
|
41
35
|
namespace: Namespace,
|
|
@@ -44,7 +38,7 @@ var parseString3 = (value) => {
|
|
|
44
38
|
})
|
|
45
39
|
);
|
|
46
40
|
}
|
|
47
|
-
const [authority, rest2] = authorityPartResult
|
|
41
|
+
const [authority, rest2] = authorityPartResult;
|
|
48
42
|
const location = parseLocation(rest2);
|
|
49
43
|
const structure = {
|
|
50
44
|
_type: Namespace,
|
|
@@ -58,6 +52,12 @@ var parseString3 = (value) => {
|
|
|
58
52
|
href: formatInternal(structure)
|
|
59
53
|
});
|
|
60
54
|
};
|
|
55
|
+
var UriParseMode = {
|
|
56
|
+
// Normal href-style url parsing
|
|
57
|
+
Strict: "strict",
|
|
58
|
+
// Will parse 'www.google.com' as a hostname rather than a path, but loses support for relative urls
|
|
59
|
+
Permissive: "permissive"
|
|
60
|
+
};
|
|
61
61
|
function from2(value) {
|
|
62
62
|
if (Objects.isNil(value)) {
|
|
63
63
|
return value;
|
|
@@ -77,7 +77,21 @@ function toLiteral(likeValue) {
|
|
|
77
77
|
const value = from2(likeValue);
|
|
78
78
|
return format(value);
|
|
79
79
|
}
|
|
80
|
-
var SchemaLiteral = structuredTransform(Zod.string(), (it) => parseString3(it)
|
|
80
|
+
var SchemaLiteral = structuredTransform(Zod.string(), (it) => Results.map(parseString3(it), (it2) => toLiteral(it2)));
|
|
81
|
+
var empty = () => {
|
|
82
|
+
return {
|
|
83
|
+
_type: Namespace,
|
|
84
|
+
href: "",
|
|
85
|
+
scheme: null,
|
|
86
|
+
authentication: null,
|
|
87
|
+
host: null,
|
|
88
|
+
location: {
|
|
89
|
+
path: null,
|
|
90
|
+
query: null,
|
|
91
|
+
fragment: null
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
};
|
|
81
95
|
var isUri = (value) => {
|
|
82
96
|
if (!Objects.isObject(value)) {
|
|
83
97
|
return false;
|
|
@@ -85,13 +99,17 @@ var isUri = (value) => {
|
|
|
85
99
|
const uriValue = value;
|
|
86
100
|
return uriValue._type === Namespace || uriValue._type === UrlNamespace;
|
|
87
101
|
};
|
|
88
|
-
var
|
|
102
|
+
var update = (element, builder) => {
|
|
89
103
|
const uri = from2(element);
|
|
90
104
|
let location;
|
|
91
105
|
if (Strings.isString(builder.location) || Objects.isNull(builder.location)) {
|
|
92
106
|
location = builder.location;
|
|
93
107
|
} else {
|
|
94
|
-
location = {
|
|
108
|
+
location = {
|
|
109
|
+
path: Objects.isUndefined(builder.location?.path) ? uri.location.path : builder.location?.path,
|
|
110
|
+
query: Objects.isUndefined(builder.location?.query) ? uri.location.query : builder.location?.query,
|
|
111
|
+
fragment: Objects.isUndefined(builder.location?.fragment) ? uri.location.fragment : builder.location?.fragment
|
|
112
|
+
};
|
|
95
113
|
}
|
|
96
114
|
const uriBuilder = {
|
|
97
115
|
scheme: Objects.isUndefined(builder.scheme) ? uri.scheme : builder.scheme,
|
|
@@ -101,6 +119,29 @@ var merge = (element, builder) => {
|
|
|
101
119
|
};
|
|
102
120
|
return from2(uriBuilder);
|
|
103
121
|
};
|
|
122
|
+
var merge = (...uris) => {
|
|
123
|
+
if (uris.length === 0) {
|
|
124
|
+
return empty();
|
|
125
|
+
}
|
|
126
|
+
if (uris.length === 1) {
|
|
127
|
+
return from2(uris[0]);
|
|
128
|
+
}
|
|
129
|
+
return uris.reduce((aggregate, next) => {
|
|
130
|
+
const nextUri = from2(next);
|
|
131
|
+
const builder = {
|
|
132
|
+
scheme: nextUri.scheme ?? void 0,
|
|
133
|
+
host: nextUri.host ?? void 0,
|
|
134
|
+
authentication: nextUri.authentication ?? void 0,
|
|
135
|
+
location: {
|
|
136
|
+
path: nextUri.location.path ?? void 0,
|
|
137
|
+
query: nextUri.location.query ?? void 0,
|
|
138
|
+
fragment: nextUri.location.fragment ?? void 0
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
const uri = update(aggregate, builder);
|
|
142
|
+
return uri;
|
|
143
|
+
}, from2(uris[0]));
|
|
144
|
+
};
|
|
104
145
|
var parseSchemePart = (url) => {
|
|
105
146
|
const schemeMatch = Strings.splitFirst(url, /(\/\/|:)/);
|
|
106
147
|
if (Objects.isNil(schemeMatch.selection) || schemeMatch.separator === "//") {
|
|
@@ -110,10 +151,10 @@ var parseSchemePart = (url) => {
|
|
|
110
151
|
return Results.success([null, ":" + schemeMatch.rest]);
|
|
111
152
|
} else {
|
|
112
153
|
const schemeResult = parseScheme(schemeMatch.selection);
|
|
113
|
-
if (
|
|
154
|
+
if (Results.isFailure(schemeResult)) {
|
|
114
155
|
return schemeResult;
|
|
115
156
|
}
|
|
116
|
-
return Results.success([schemeResult
|
|
157
|
+
return Results.success([schemeResult, schemeMatch.rest]);
|
|
117
158
|
}
|
|
118
159
|
};
|
|
119
160
|
var parseScheme = (scheme) => {
|
|
@@ -128,22 +169,25 @@ var parseScheme = (scheme) => {
|
|
|
128
169
|
}
|
|
129
170
|
return Results.success(scheme);
|
|
130
171
|
};
|
|
131
|
-
var parseAuthorityPart = (initialUrl) => {
|
|
132
|
-
if (!initialUrl.startsWith("//")) {
|
|
133
|
-
return
|
|
172
|
+
var parseAuthorityPart = (initialUrl, mode) => {
|
|
173
|
+
if (mode === UriParseMode.Strict && !initialUrl.startsWith("//")) {
|
|
174
|
+
return Results.success([{ host: null, authentication: null }, initialUrl]);
|
|
175
|
+
}
|
|
176
|
+
if (mode === UriParseMode.Permissive && initialUrl.startsWith("/")) {
|
|
177
|
+
return Results.success([{ host: null, authentication: null }, initialUrl]);
|
|
134
178
|
}
|
|
135
179
|
const url = Strings.removeStart(initialUrl, "//");
|
|
136
180
|
const authenticationPartResult = parseAuthenticationPart(url);
|
|
137
|
-
if (
|
|
181
|
+
if (Results.isFailure(authenticationPartResult)) {
|
|
138
182
|
return authenticationPartResult;
|
|
139
183
|
}
|
|
140
|
-
const [authentication, rest1] = authenticationPartResult
|
|
184
|
+
const [authentication, rest1] = authenticationPartResult;
|
|
141
185
|
const hostPartResult = parseHostPart(rest1);
|
|
142
|
-
if (
|
|
186
|
+
if (Results.isFailure(hostPartResult)) {
|
|
143
187
|
return hostPartResult;
|
|
144
188
|
}
|
|
145
|
-
const [host, rest2] = hostPartResult
|
|
146
|
-
return
|
|
189
|
+
const [host, rest2] = hostPartResult;
|
|
190
|
+
return Results.success([{ host, authentication }, rest2]);
|
|
147
191
|
};
|
|
148
192
|
var parseAuthenticationPart = (url) => {
|
|
149
193
|
let targetPart = url;
|
|
@@ -160,10 +204,10 @@ var parseAuthenticationPart = (url) => {
|
|
|
160
204
|
}
|
|
161
205
|
const { rest } = Strings.splitFirst(url, "@");
|
|
162
206
|
const authenticationParseResult = parseAuthentication(authentication);
|
|
163
|
-
if (
|
|
207
|
+
if (Results.isFailure(authenticationParseResult)) {
|
|
164
208
|
return authenticationParseResult;
|
|
165
209
|
}
|
|
166
|
-
return Results.success([authenticationParseResult
|
|
210
|
+
return Results.success([authenticationParseResult, rest]);
|
|
167
211
|
};
|
|
168
212
|
var parseAuthentication = (authentication) => {
|
|
169
213
|
const { selection: principal, rest: authenticationRest } = Strings.splitFirst(authentication, ":");
|
|
@@ -231,17 +275,17 @@ var parseHostPart = (url) => {
|
|
|
231
275
|
return Results.success([null, rest]);
|
|
232
276
|
}
|
|
233
277
|
const parseHostResult = parseHost(host);
|
|
234
|
-
if (
|
|
278
|
+
if (Results.isFailure(parseHostResult)) {
|
|
235
279
|
return parseHostResult;
|
|
236
280
|
}
|
|
237
|
-
return Results.success([parseHostResult
|
|
281
|
+
return Results.success([parseHostResult, rest]);
|
|
238
282
|
};
|
|
239
283
|
var parseHost = (host) => {
|
|
240
284
|
if (host.startsWith("[")) {
|
|
241
285
|
const ipMatch = Strings.splitFirst(Strings.removeStart(host, "["), "]");
|
|
242
286
|
if (Objects.isPresent(ipMatch.selection)) {
|
|
243
287
|
const ipV6Result = IpV6Addresses.parseString(ipMatch.selection);
|
|
244
|
-
if (
|
|
288
|
+
if (Results.isFailure(ipV6Result)) {
|
|
245
289
|
return ipV6Result;
|
|
246
290
|
}
|
|
247
291
|
const portMatch = Strings.splitFirst(ipMatch.rest, ":");
|
|
@@ -258,7 +302,7 @@ var parseHost = (host) => {
|
|
|
258
302
|
let hostMatch = Strings.splitFirst(host, ":");
|
|
259
303
|
if (Objects.isNil(hostMatch.selection)) {
|
|
260
304
|
const hostNameResult2 = UriHostNames.parseString(hostMatch.rest);
|
|
261
|
-
if (
|
|
305
|
+
if (Results.isFailure(hostNameResult2)) {
|
|
262
306
|
return Results.failure(
|
|
263
307
|
ErrorEvents.invalidValue(host, {
|
|
264
308
|
namespace: Namespace,
|
|
@@ -267,7 +311,7 @@ var parseHost = (host) => {
|
|
|
267
311
|
})
|
|
268
312
|
);
|
|
269
313
|
}
|
|
270
|
-
return Results.success({ value: hostNameResult2
|
|
314
|
+
return Results.success({ value: hostNameResult2, port: null });
|
|
271
315
|
}
|
|
272
316
|
if (Strings.isEmpty(hostMatch.selection)) {
|
|
273
317
|
return Results.failure(
|
|
@@ -281,7 +325,7 @@ var parseHost = (host) => {
|
|
|
281
325
|
);
|
|
282
326
|
}
|
|
283
327
|
const hostNameResult = UriHostNames.parseString(hostName);
|
|
284
|
-
if (
|
|
328
|
+
if (Results.isFailure(hostNameResult)) {
|
|
285
329
|
return Results.failure(
|
|
286
330
|
ErrorEvents.invalidValue(host, {
|
|
287
331
|
namespace: Namespace,
|
|
@@ -290,7 +334,7 @@ var parseHost = (host) => {
|
|
|
290
334
|
})
|
|
291
335
|
);
|
|
292
336
|
}
|
|
293
|
-
return Results.success({ value: hostNameResult
|
|
337
|
+
return Results.success({ value: hostNameResult, port: Number(hostMatch.rest) });
|
|
294
338
|
};
|
|
295
339
|
var parseLocation = (url) => {
|
|
296
340
|
const location = { path: null, query: null, fragment: null };
|
|
@@ -380,6 +424,9 @@ var UriComponentType = {
|
|
|
380
424
|
var format = (uriLike, excludedUriComponents = []) => {
|
|
381
425
|
return formatInternal(from2(uriLike), excludedUriComponents);
|
|
382
426
|
};
|
|
427
|
+
var isComplete = (uri) => {
|
|
428
|
+
return Objects.isPresent(uri.scheme) && Objects.isPresent(uri.host);
|
|
429
|
+
};
|
|
383
430
|
var formatInternal = (uri, excludedUriComponents = []) => {
|
|
384
431
|
let urlString = "";
|
|
385
432
|
if (Objects.isPresent(uri.scheme) && !Arrays.contains(excludedUriComponents, UriComponentType.Scheme)) {
|
|
@@ -431,14 +478,18 @@ export {
|
|
|
431
478
|
Namespace,
|
|
432
479
|
SchemaLiteral,
|
|
433
480
|
UriComponentType,
|
|
481
|
+
UriParseMode,
|
|
434
482
|
UrlNamespace,
|
|
435
483
|
decode,
|
|
484
|
+
empty,
|
|
436
485
|
encode,
|
|
437
486
|
format,
|
|
438
487
|
from2 as from,
|
|
488
|
+
isComplete,
|
|
439
489
|
isUri,
|
|
440
490
|
merge,
|
|
441
491
|
parseString3 as parseString,
|
|
442
|
-
toLiteral
|
|
492
|
+
toLiteral,
|
|
493
|
+
update
|
|
443
494
|
};
|
|
444
495
|
//# sourceMappingURL=uri.js.map
|