@dbx-tools/shared-core 0.9.54 → 0.9.60

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/README.md CHANGED
@@ -65,7 +65,7 @@ const instructions = brandUtils.brandContextPrompt(context);
65
65
  typography, links, audience, and voice. Every field has a dbx tools default, so
66
66
  an empty object is a complete context. Use [`@dbx-tools/core`](../../node/core)
67
67
  to discover and read YAML/JSON files, and
68
- [`@dbx-tools/ui-branding`](../../ui/branding) to apply the same context to a UI.
68
+ [`@dbx-tools/ui/branding`](../../ui/appkit) to apply the same context to a UI.
69
69
 
70
70
  ## Async Control
71
71
 
@@ -336,8 +336,8 @@ const internal = cidr ? net.ipInCidr("10.1.2.3", cidr) : false;
336
336
  ```
337
337
 
338
338
  `net.urlBuilder()` is a forgiving URL builder for config and REST helpers.
339
- `net.pathMatch()` compares path prefixes on segment boundaries. IP/CIDR helpers
340
- parse IPv4 and IPv6 into a shared bigint comparison model.
339
+ `urlBuilder(...).pathMatches()` compares path prefixes on segment boundaries.
340
+ IP/CIDR helpers parse IPv4 and IPv6 into a shared bigint comparison model.
341
341
 
342
342
  ## Allow-List Patterns
343
343
 
package/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-core";
6
- export const PACKAGE_VERSION = "0.9.54";
6
+ export const PACKAGE_VERSION = "0.9.60";
7
7
  export * as asyncUtils from "./src/async-utils.ts";
8
8
  export * as bindings from "./src/bindings.ts";
9
9
  export * as brandUtils from "./src/brand-utils.ts";
@@ -30,10 +30,11 @@ export type { ExecutionResult, Executor, ExecutionFailure, RunOptions } from "./
30
30
  export type { MemoizeOptions } from "./src/function-utils.ts";
31
31
  export type { HeaderLike } from "./src/http.ts";
32
32
  export type { LogLevel, Logger } from "./src/log.ts";
33
+ export { MAX_TCP_PORT } from "./src/net.ts";
33
34
  export type { UrlLike, IpVersion, ParsedIp, Cidr, UrlBuilder, ParseEmailsOptions } from "./src/net.ts";
34
35
  export type { Sequence, Container, Collection, OneOrMany, NameLike, NonFunctionKeys, SerializablePrimitive, SerializableValue, ToNumberOptions, ToDateOptions, ToDurationOptions, DeepEqualComparator } from "./src/object.ts";
35
- export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, MAX_TCP_PORT, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema } from "./src/options.ts";
36
- export type { DatabricksEnvironmentNames, DatabricksOptions, OptionSerializationFormat, LakebaseOptions, OptionValueMap, ListenScheme, TcpListenAddress, UnixListenAddress, ListenAddress, ListenAddressOptions, ListenAddressInput } from "./src/options.ts";
36
+ export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema } from "./src/options.ts";
37
+ export type { DatabricksEnvironmentNames, PostgresEnvironmentNames, PostgresOptions, DatabricksOptions, OptionSerializationFormat, LakebaseOptions, OptionValueMap, ListenScheme, TcpListenAddress, UnixListenAddress, ListenAddress, ListenAddressOptions, ListenAddressInput } from "./src/options.ts";
37
38
  export type { PatternOptions } from "./src/pattern.ts";
38
39
  export type { PredicateFunction, TypePredicateFunction, PredicateInput, Predicate } from "./src/predicate.ts";
39
40
  export type { TokenizeOptions, KeyOptions, IdentifierOptions, DedentOptions, Description } from "./src/string-utils.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-core";
2
- export declare const PACKAGE_VERSION = "0.9.54";
2
+ export declare const PACKAGE_VERSION = "0.9.60";
3
3
  export * as asyncUtils from "./src/async-utils.ts";
4
4
  export * as bindings from "./src/bindings.ts";
5
5
  export * as brandUtils from "./src/brand-utils.ts";
@@ -26,10 +26,11 @@ export type { ExecutionResult, Executor, ExecutionFailure, RunOptions } from "./
26
26
  export type { MemoizeOptions } from "./src/function-utils.ts";
27
27
  export type { HeaderLike } from "./src/http.ts";
28
28
  export type { LogLevel, Logger } from "./src/log.ts";
29
+ export { MAX_TCP_PORT } from "./src/net.ts";
29
30
  export type { UrlLike, IpVersion, ParsedIp, Cidr, UrlBuilder, ParseEmailsOptions } from "./src/net.ts";
30
31
  export type { Sequence, Container, Collection, OneOrMany, NameLike, NonFunctionKeys, SerializablePrimitive, SerializableValue, ToNumberOptions, ToDateOptions, ToDurationOptions, DeepEqualComparator } from "./src/object.ts";
31
- export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, MAX_TCP_PORT, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema } from "./src/options.ts";
32
- export type { DatabricksEnvironmentNames, DatabricksOptions, OptionSerializationFormat, LakebaseOptions, OptionValueMap, ListenScheme, TcpListenAddress, UnixListenAddress, ListenAddress, ListenAddressOptions, ListenAddressInput } from "./src/options.ts";
32
+ export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema } from "./src/options.ts";
33
+ export type { DatabricksEnvironmentNames, PostgresEnvironmentNames, PostgresOptions, DatabricksOptions, OptionSerializationFormat, LakebaseOptions, OptionValueMap, ListenScheme, TcpListenAddress, UnixListenAddress, ListenAddress, ListenAddressOptions, ListenAddressInput } from "./src/options.ts";
33
34
  export type { PatternOptions } from "./src/pattern.ts";
34
35
  export type { PredicateFunction, TypePredicateFunction, PredicateInput, Predicate } from "./src/predicate.ts";
35
36
  export type { TokenizeOptions, KeyOptions, IdentifierOptions, DedentOptions, Description } from "./src/string-utils.ts";
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-core";
5
- export const PACKAGE_VERSION = "0.9.54";
5
+ export const PACKAGE_VERSION = "0.9.60";
6
6
  export * as asyncUtils from "./src/async-utils.js";
7
7
  export * as bindings from "./src/bindings.js";
8
8
  export * as brandUtils from "./src/brand-utils.js";
@@ -22,6 +22,7 @@ export * as predicate from "./src/predicate.js";
22
22
  export * as stringUtils from "./src/string-utils.js";
23
23
  export * as token from "./src/token.js";
24
24
  export { DEFAULT_BRAND_ASSETS, BrandAssetSetSchema, BrandColorsSchema, BrandVoiceSchema, BrandContextSchema, defaultBrandContext } from "./src/brand-utils.js";
25
- export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, MAX_TCP_PORT, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema } from "./src/options.js";
25
+ export { MAX_TCP_PORT } from "./src/net.js";
26
+ export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema } from "./src/options.js";
26
27
  export { ACCESS_TOKEN_HEADER, USER_ID_HEADER, USER_EMAIL_HEADER } from "./src/token.js";
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx3QkFBd0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVMvSixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsMEJBQTBCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBS3ZOLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS41NFwiO1xuZXhwb3J0ICogYXMgYXN5bmNVdGlscyBmcm9tIFwiLi9zcmMvYXN5bmMtdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGJpbmRpbmdzIGZyb20gXCIuL3NyYy9iaW5kaW5ncy50c1wiO1xuZXhwb3J0ICogYXMgYnJhbmRVdGlscyBmcm9tIFwiLi9zcmMvYnJhbmQtdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGVudmlyb25tZW50VXRpbHMgZnJvbSBcIi4vc3JjL2Vudmlyb25tZW50LXV0aWxzLnRzXCI7XG5leHBvcnQgKiBhcyBlcnJvclV0aWxzIGZyb20gXCIuL3NyYy9lcnJvci11dGlscy50c1wiO1xuZXhwb3J0ICogYXMgZXhlY3V0aW9uIGZyb20gXCIuL3NyYy9leGVjdXRpb24udHNcIjtcbmV4cG9ydCAqIGFzIGZ1bmN0aW9uVXRpbHMgZnJvbSBcIi4vc3JjL2Z1bmN0aW9uLXV0aWxzLnRzXCI7XG5leHBvcnQgKiBhcyBoYXNoIGZyb20gXCIuL3NyYy9oYXNoLnRzXCI7XG5leHBvcnQgKiBhcyBodHRwIGZyb20gXCIuL3NyYy9odHRwLnRzXCI7XG5leHBvcnQgKiBhcyBqc29uIGZyb20gXCIuL3NyYy9qc29uLnRzXCI7XG5leHBvcnQgKiBhcyBsb2cgZnJvbSBcIi4vc3JjL2xvZy50c1wiO1xuZXhwb3J0ICogYXMgbmV0IGZyb20gXCIuL3NyYy9uZXQudHNcIjtcbmV4cG9ydCAqIGFzIG9iamVjdCBmcm9tIFwiLi9zcmMvb2JqZWN0LnRzXCI7XG5leHBvcnQgKiBhcyBvcHRpb25zIGZyb20gXCIuL3NyYy9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBwYXR0ZXJuIGZyb20gXCIuL3NyYy9wYXR0ZXJuLnRzXCI7XG5leHBvcnQgKiBhcyBwcmVkaWNhdGUgZnJvbSBcIi4vc3JjL3ByZWRpY2F0ZS50c1wiO1xuZXhwb3J0ICogYXMgc3RyaW5nVXRpbHMgZnJvbSBcIi4vc3JjL3N0cmluZy11dGlscy50c1wiO1xuZXhwb3J0ICogYXMgdG9rZW4gZnJvbSBcIi4vc3JjL3Rva2VuLnRzXCI7XG5leHBvcnQgdHlwZSB7IENvbmN1cnJlbnRFcnJvck1vZGUsIE1hcENvbmN1cnJlbnRPcHRpb25zLCBQb2xsQ29udGV4dCwgUG9sbFByb2R1Y2VyLCBQb2xsT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9hc3luYy11dGlscy50c1wiO1xuZXhwb3J0IHsgREVGQVVMVF9CUkFORF9BU1NFVFMsIEJyYW5kQXNzZXRTZXRTY2hlbWEsIEJyYW5kQ29sb3JzU2NoZW1hLCBCcmFuZFZvaWNlU2NoZW1hLCBCcmFuZENvbnRleHRTY2hlbWEsIGRlZmF1bHRCcmFuZENvbnRleHQgfSBmcm9tIFwiLi9zcmMvYnJhbmQtdXRpbHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQnJhbmRDb250ZXh0LCBCcmFuZENvbnRleHRJbnB1dCwgQnJhbmRBc3NldFNldCB9IGZyb20gXCIuL3NyYy9icmFuZC11dGlscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBFcnJvckNvbnRleHQgfSBmcm9tIFwiLi9zcmMvZXJyb3ItdXRpbHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uUmVzdWx0LCBFeGVjdXRvciwgRXhlY3V0aW9uRmFpbHVyZSwgUnVuT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9leGVjdXRpb24udHNcIjtcbmV4cG9ydCB0eXBlIHsgTWVtb2l6ZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvZnVuY3Rpb24tdXRpbHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgSGVhZGVyTGlrZSB9IGZyb20gXCIuL3NyYy9odHRwLnRzXCI7XG5leHBvcnQgdHlwZSB7IExvZ0xldmVsLCBMb2dnZXIgfSBmcm9tIFwiLi9zcmMvbG9nLnRzXCI7XG5leHBvcnQgdHlwZSB7IFVybExpa2UsIElwVmVyc2lvbiwgUGFyc2VkSXAsIENpZHIsIFVybEJ1aWxkZXIsIFBhcnNlRW1haWxzT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9uZXQudHNcIjtcbmV4cG9ydCB0eXBlIHsgU2VxdWVuY2UsIENvbnRhaW5lciwgQ29sbGVjdGlvbiwgT25lT3JNYW55LCBOYW1lTGlrZSwgTm9uRnVuY3Rpb25LZXlzLCBTZXJpYWxpemFibGVQcmltaXRpdmUsIFNlcmlhbGl6YWJsZVZhbHVlLCBUb051bWJlck9wdGlvbnMsIFRvRGF0ZU9wdGlvbnMsIFRvRHVyYXRpb25PcHRpb25zLCBEZWVwRXF1YWxDb21wYXJhdG9yIH0gZnJvbSBcIi4vc3JjL29iamVjdC50c1wiO1xuZXhwb3J0IHsgRGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXNTY2hlbWEsIGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLCBNQVhfVENQX1BPUlQsIHRjcFBvcnRTY2hlbWEsIHRjcFBvcnRPclplcm9TY2hlbWEsIG5vcm1hbGl6ZWRVcmxTY2hlbWEsIERhdGFicmlja3NPcHRpb25zU2NoZW1hLCBMYWtlYmFzZU9wdGlvbnNTY2hlbWEgfSBmcm9tIFwiLi9zcmMvb3B0aW9ucy50c1wiO1xuZXhwb3J0IHR5cGUgeyBEYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcywgRGF0YWJyaWNrc09wdGlvbnMsIE9wdGlvblNlcmlhbGl6YXRpb25Gb3JtYXQsIExha2ViYXNlT3B0aW9ucywgT3B0aW9uVmFsdWVNYXAsIExpc3RlblNjaGVtZSwgVGNwTGlzdGVuQWRkcmVzcywgVW5peExpc3RlbkFkZHJlc3MsIExpc3RlbkFkZHJlc3MsIExpc3RlbkFkZHJlc3NPcHRpb25zLCBMaXN0ZW5BZGRyZXNzSW5wdXQgfSBmcm9tIFwiLi9zcmMvb3B0aW9ucy50c1wiO1xuZXhwb3J0IHR5cGUgeyBQYXR0ZXJuT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9wYXR0ZXJuLnRzXCI7XG5leHBvcnQgdHlwZSB7IFByZWRpY2F0ZUZ1bmN0aW9uLCBUeXBlUHJlZGljYXRlRnVuY3Rpb24sIFByZWRpY2F0ZUlucHV0LCBQcmVkaWNhdGUgfSBmcm9tIFwiLi9zcmMvcHJlZGljYXRlLnRzXCI7XG5leHBvcnQgdHlwZSB7IFRva2VuaXplT3B0aW9ucywgS2V5T3B0aW9ucywgSWRlbnRpZmllck9wdGlvbnMsIERlZGVudE9wdGlvbnMsIERlc2NyaXB0aW9uIH0gZnJvbSBcIi4vc3JjL3N0cmluZy11dGlscy50c1wiO1xuZXhwb3J0IHsgQUNDRVNTX1RPS0VOX0hFQURFUiwgVVNFUl9JRF9IRUFERVIsIFVTRVJfRU1BSUxfSEVBREVSIH0gZnJvbSBcIi4vc3JjL3Rva2VuLnRzXCI7XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx3QkFBd0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU8vSixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzVDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSwwQkFBMEIsRUFBRSw4QkFBOEIsRUFBRSx3QkFBd0IsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUs5UyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuNjBcIjtcbmV4cG9ydCAqIGFzIGFzeW5jVXRpbHMgZnJvbSBcIi4vc3JjL2FzeW5jLXV0aWxzLnRzXCI7XG5leHBvcnQgKiBhcyBiaW5kaW5ncyBmcm9tIFwiLi9zcmMvYmluZGluZ3MudHNcIjtcbmV4cG9ydCAqIGFzIGJyYW5kVXRpbHMgZnJvbSBcIi4vc3JjL2JyYW5kLXV0aWxzLnRzXCI7XG5leHBvcnQgKiBhcyBlbnZpcm9ubWVudFV0aWxzIGZyb20gXCIuL3NyYy9lbnZpcm9ubWVudC11dGlscy50c1wiO1xuZXhwb3J0ICogYXMgZXJyb3JVdGlscyBmcm9tIFwiLi9zcmMvZXJyb3ItdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGV4ZWN1dGlvbiBmcm9tIFwiLi9zcmMvZXhlY3V0aW9uLnRzXCI7XG5leHBvcnQgKiBhcyBmdW5jdGlvblV0aWxzIGZyb20gXCIuL3NyYy9mdW5jdGlvbi11dGlscy50c1wiO1xuZXhwb3J0ICogYXMgaGFzaCBmcm9tIFwiLi9zcmMvaGFzaC50c1wiO1xuZXhwb3J0ICogYXMgaHR0cCBmcm9tIFwiLi9zcmMvaHR0cC50c1wiO1xuZXhwb3J0ICogYXMganNvbiBmcm9tIFwiLi9zcmMvanNvbi50c1wiO1xuZXhwb3J0ICogYXMgbG9nIGZyb20gXCIuL3NyYy9sb2cudHNcIjtcbmV4cG9ydCAqIGFzIG5ldCBmcm9tIFwiLi9zcmMvbmV0LnRzXCI7XG5leHBvcnQgKiBhcyBvYmplY3QgZnJvbSBcIi4vc3JjL29iamVjdC50c1wiO1xuZXhwb3J0ICogYXMgb3B0aW9ucyBmcm9tIFwiLi9zcmMvb3B0aW9ucy50c1wiO1xuZXhwb3J0ICogYXMgcGF0dGVybiBmcm9tIFwiLi9zcmMvcGF0dGVybi50c1wiO1xuZXhwb3J0ICogYXMgcHJlZGljYXRlIGZyb20gXCIuL3NyYy9wcmVkaWNhdGUudHNcIjtcbmV4cG9ydCAqIGFzIHN0cmluZ1V0aWxzIGZyb20gXCIuL3NyYy9zdHJpbmctdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIHRva2VuIGZyb20gXCIuL3NyYy90b2tlbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBDb25jdXJyZW50RXJyb3JNb2RlLCBNYXBDb25jdXJyZW50T3B0aW9ucywgUG9sbENvbnRleHQsIFBvbGxQcm9kdWNlciwgUG9sbE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvYXN5bmMtdXRpbHMudHNcIjtcbmV4cG9ydCB7IERFRkFVTFRfQlJBTkRfQVNTRVRTLCBCcmFuZEFzc2V0U2V0U2NoZW1hLCBCcmFuZENvbG9yc1NjaGVtYSwgQnJhbmRWb2ljZVNjaGVtYSwgQnJhbmRDb250ZXh0U2NoZW1hLCBkZWZhdWx0QnJhbmRDb250ZXh0IH0gZnJvbSBcIi4vc3JjL2JyYW5kLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJyYW5kQ29udGV4dCwgQnJhbmRDb250ZXh0SW5wdXQsIEJyYW5kQXNzZXRTZXQgfSBmcm9tIFwiLi9zcmMvYnJhbmQtdXRpbHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgRXJyb3JDb250ZXh0IH0gZnJvbSBcIi4vc3JjL2Vycm9yLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvblJlc3VsdCwgRXhlY3V0b3IsIEV4ZWN1dGlvbkZhaWx1cmUsIFJ1bk9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvZXhlY3V0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1lbW9pemVPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2Z1bmN0aW9uLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEhlYWRlckxpa2UgfSBmcm9tIFwiLi9zcmMvaHR0cC50c1wiO1xuZXhwb3J0IHR5cGUgeyBMb2dMZXZlbCwgTG9nZ2VyIH0gZnJvbSBcIi4vc3JjL2xvZy50c1wiO1xuZXhwb3J0IHsgTUFYX1RDUF9QT1JUIH0gZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0IHR5cGUgeyBVcmxMaWtlLCBJcFZlcnNpb24sIFBhcnNlZElwLCBDaWRyLCBVcmxCdWlsZGVyLCBQYXJzZUVtYWlsc09wdGlvbnMgfSBmcm9tIFwiLi9zcmMvbmV0LnRzXCI7XG5leHBvcnQgdHlwZSB7IFNlcXVlbmNlLCBDb250YWluZXIsIENvbGxlY3Rpb24sIE9uZU9yTWFueSwgTmFtZUxpa2UsIE5vbkZ1bmN0aW9uS2V5cywgU2VyaWFsaXphYmxlUHJpbWl0aXZlLCBTZXJpYWxpemFibGVWYWx1ZSwgVG9OdW1iZXJPcHRpb25zLCBUb0RhdGVPcHRpb25zLCBUb0R1cmF0aW9uT3B0aW9ucywgRGVlcEVxdWFsQ29tcGFyYXRvciB9IGZyb20gXCIuL3NyYy9vYmplY3QudHNcIjtcbmV4cG9ydCB7IERhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzU2NoZW1hLCBkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcywgUG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzU2NoZW1hLCBwb3N0Z3Jlc0Vudmlyb25tZW50TmFtZXMsIHBvc3RncmVzUm9sZVNjaGVtYSwgUG9zdGdyZXNPcHRpb25zU2NoZW1hLCB0Y3BQb3J0U2NoZW1hLCB0Y3BQb3J0T3JaZXJvU2NoZW1hLCBub3JtYWxpemVkVXJsU2NoZW1hLCBEYXRhYnJpY2tzT3B0aW9uc1NjaGVtYSwgTGFrZWJhc2VPcHRpb25zU2NoZW1hIH0gZnJvbSBcIi4vc3JjL29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgRGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMsIFBvc3RncmVzRW52aXJvbm1lbnROYW1lcywgUG9zdGdyZXNPcHRpb25zLCBEYXRhYnJpY2tzT3B0aW9ucywgT3B0aW9uU2VyaWFsaXphdGlvbkZvcm1hdCwgTGFrZWJhc2VPcHRpb25zLCBPcHRpb25WYWx1ZU1hcCwgTGlzdGVuU2NoZW1lLCBUY3BMaXN0ZW5BZGRyZXNzLCBVbml4TGlzdGVuQWRkcmVzcywgTGlzdGVuQWRkcmVzcywgTGlzdGVuQWRkcmVzc09wdGlvbnMsIExpc3RlbkFkZHJlc3NJbnB1dCB9IGZyb20gXCIuL3NyYy9vcHRpb25zLnRzXCI7XG5leHBvcnQgdHlwZSB7IFBhdHRlcm5PcHRpb25zIH0gZnJvbSBcIi4vc3JjL3BhdHRlcm4udHNcIjtcbmV4cG9ydCB0eXBlIHsgUHJlZGljYXRlRnVuY3Rpb24sIFR5cGVQcmVkaWNhdGVGdW5jdGlvbiwgUHJlZGljYXRlSW5wdXQsIFByZWRpY2F0ZSB9IGZyb20gXCIuL3NyYy9wcmVkaWNhdGUudHNcIjtcbmV4cG9ydCB0eXBlIHsgVG9rZW5pemVPcHRpb25zLCBLZXlPcHRpb25zLCBJZGVudGlmaWVyT3B0aW9ucywgRGVkZW50T3B0aW9ucywgRGVzY3JpcHRpb24gfSBmcm9tIFwiLi9zcmMvc3RyaW5nLXV0aWxzLnRzXCI7XG5leHBvcnQgeyBBQ0NFU1NfVE9LRU5fSEVBREVSLCBVU0VSX0lEX0hFQURFUiwgVVNFUl9FTUFJTF9IRUFERVIgfSBmcm9tIFwiLi9zcmMvdG9rZW4udHNcIjtcbiJdfQ==
@@ -10,14 +10,14 @@ import { z } from "zod";
10
10
  /** Package asset references used when a brand context supplies no custom artwork. */
11
11
  export declare const DEFAULT_BRAND_ASSETS: {
12
12
  readonly icon: {
13
- readonly light: "@dbx-tools/ui-branding/assets/icon-light.svg";
14
- readonly dark: "@dbx-tools/ui-branding/assets/icon-dark.svg";
13
+ readonly light: "@dbx-tools/ui/branding/assets/icon-light.svg";
14
+ readonly dark: "@dbx-tools/ui/branding/assets/icon-dark.svg";
15
15
  };
16
16
  readonly logo: {
17
- readonly light: "@dbx-tools/ui-branding/assets/logo-light.svg";
18
- readonly dark: "@dbx-tools/ui-branding/assets/logo-dark.svg";
17
+ readonly light: "@dbx-tools/ui/branding/assets/logo-light.svg";
18
+ readonly dark: "@dbx-tools/ui/branding/assets/logo-dark.svg";
19
19
  };
20
- readonly favicon: "@dbx-tools/ui-branding/assets/icon-light.svg";
20
+ readonly favicon: "@dbx-tools/ui/branding/assets/icon-light.svg";
21
21
  };
22
22
  /** Validates light and optional dark variants for one visual asset. */
23
23
  export declare const BrandAssetSetSchema: z.ZodObject<{
@@ -12,14 +12,14 @@ const color = z.string().regex(/^#(?:[\da-f]{3}|[\da-f]{6}|[\da-f]{8})$/i, "Expe
12
12
  /** Package asset references used when a brand context supplies no custom artwork. */
13
13
  export const DEFAULT_BRAND_ASSETS = {
14
14
  icon: {
15
- light: "@dbx-tools/ui-branding/assets/icon-light.svg",
16
- dark: "@dbx-tools/ui-branding/assets/icon-dark.svg",
15
+ light: "@dbx-tools/ui/branding/assets/icon-light.svg",
16
+ dark: "@dbx-tools/ui/branding/assets/icon-dark.svg",
17
17
  },
18
18
  logo: {
19
- light: "@dbx-tools/ui-branding/assets/logo-light.svg",
20
- dark: "@dbx-tools/ui-branding/assets/logo-dark.svg",
19
+ light: "@dbx-tools/ui/branding/assets/logo-light.svg",
20
+ dark: "@dbx-tools/ui/branding/assets/logo-dark.svg",
21
21
  },
22
- favicon: "@dbx-tools/ui-branding/assets/icon-light.svg",
22
+ favicon: "@dbx-tools/ui/branding/assets/icon-light.svg",
23
23
  };
24
24
  /** Validates light and optional dark variants for one visual asset. */
25
25
  export const BrandAssetSetSchema = z
@@ -129,4 +129,4 @@ export function brandContextPrompt(context = defaultBrandContext) {
129
129
  JSON.stringify(context, null, 2),
130
130
  ].join("\n");
131
131
  }
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnJhbmQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFFcEcscUZBQXFGO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSw4Q0FBOEM7UUFDckQsSUFBSSxFQUFFLDZDQUE2QztLQUNwRDtJQUNELElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSw4Q0FBOEM7UUFDckQsSUFBSSxFQUFFLDZDQUE2QztLQUNwRDtJQUNELE9BQU8sRUFBRSw4Q0FBOEM7Q0FDL0MsQ0FBQztBQUVYLHVFQUF1RTtBQUN2RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDO0tBQ2pDLE1BQU0sQ0FBQztJQUNOLEtBQUssRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDO0lBQzNELElBQUksRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGlEQUFpRCxDQUFDO0NBQzVGLENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixRQUFRLENBQUMsNkNBQTZDLENBQUMsQ0FBQztBQUUzRCxtRkFBbUY7QUFDbkYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQztLQUMvQixNQUFNLENBQUM7SUFDTixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMs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QixpQkFBaUIsRUFBRSxDQUFDO0FBRXJFLHNGQUFzRjtBQUN0RixNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBNEIsQ0FBQztBQUN2RSxDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxVQUF3QixtQkFBbUI7SUFDNUUsT0FBTztRQUNMLHFCQUFxQixPQUFPLENBQUMsSUFBSSw4REFBOEQ7UUFDL0Ysd0VBQXdFO1FBQ3hFLEVBQUU7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQ2pDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJvd3Nlci1zYWZlIGJyYW5kIGNvbnRyYWN0LCBkZWZhdWx0cywgYW5kIExMTSBzZXJpYWxpemF0aW9uIGhlbHBlcnMuXG4gKlxuICogQXNzZXQgdmFsdWVzIGFyZSBpbnRlbnRpb25hbGx5IHN0cmluZ3M6IHRoZXkgbWF5IGJlIHJlbGF0aXZlIGZpbGUgcGF0aHMsXG4gKiBwYWNrYWdlIGV4cG9ydHMsIGRhdGEgVVJMcywgb3IgbmV0d29yayBVUkxzIGRlcGVuZGluZyBvbiB0aGUgY29uc3VtZXIuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5jb25zdCBub25CbGFua1N0cmluZyA9IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKTtcbmNvbnN0IGNvbG9yID0gei5zdHJpbmcoKS5yZWdleCgvXiMoPzpbXFxkYS1mXXszfXxbXFxkYS1mXXs2fXxbXFxkYS1mXXs4fSkkL2ksIFwiRXhwZWN0ZWQgYSBoZXggY29sb3IuXCIpO1xuXG4vKiogUGFja2FnZSBhc3NldCByZWZlcmVuY2VzIHVzZWQgd2hlbiBhIGJyYW5kIGNvbnRleHQgc3VwcGxpZXMgbm8gY3VzdG9tIGFydHdvcmsuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9CUkFORF9BU1NFVFMgPSB7XG4gIGljb246IHtcbiAgICBsaWdodDogXCJAZGJ4LXRvb2xzL3VpLWJyYW5kaW5nL2Fzc2V0cy9pY29uLWxpZ2h0LnN2Z1wiLFxuICAgIGRhcms6IFwiQGRieC10b29scy91aS1icmFuZGluZy9hc3NldHMvaWNvbi1kYXJrLnN2Z1wiLFxuICB9LFxuICBsb2dvOiB7XG4gICAgbGlnaHQ6IFwiQGRieC10b29scy91aS1icmFuZGluZy9hc3NldHMvbG9nby1saWdodC5zdmdcIixcbiAgICBkYXJrOiBcIkBkYngtdG9vbHMvdWktYnJhbmRpbmcvYXNzZXRzL2xvZ28tZGFyay5zdmdcIixcbiAgfSxcbiAgZmF2aWNvbjogXCJAZGJ4LXRvb2xzL3VpLWJyYW5kaW5nL2Fzc2V0cy9pY29uLWxpZ2h0LnN2Z1wiLFxufSBhcyBjb25zdDtcblxuLyoqIFZhbGlkYXRlcyBsaWdodCBhbmQgb3B0aW9uYWwgZGFyayB2YXJpYW50cyBmb3Igb25lIHZpc3VhbCBhc3NldC4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZEFzc2V0U2V0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBsaWdodDogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJBc3NldCBmb3IgbGlnaHQgc3VyZmFjZXMuXCIpLFxuICAgIGRhcms6IG5vbkJsYW5rU3RyaW5nLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBc3NldCBmb3IgZGFyayBzdXJmYWNlczsgbGlnaHQgaXMgdGhlIGZhbGxiYWNrLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlRoZW1lLWF3YXJlIHJlZmVyZW5jZXMgdG8gb25lIHZpc3VhbCBhc3NldC5cIik7XG5cbi8qKiBTdHJpY3QgYnJhbmQgcGFsZXR0ZSB3aG9zZSBvbWl0dGVkIGNvbG9ycyByZXNvbHZlIHRvIHRoZSBkYnggdG9vbHMgZGVmYXVsdHMuICovXG5leHBvcnQgY29uc3QgQnJhbmRDb2xvcnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHByaW1hcnk6IGNvbG9yLmRlZmF1bHQoXCIjMUIzMTM5XCIpLmRlc2NyaWJlKFwiUHJpbWFyeSBhY3Rpb24gYW5kIGlkZW50aXR5IGNvbG9yLlwiKSxcbiAgICBwcmltYXJ5SG92ZXI6IGNvbG9yLmRlZmF1bHQoXCIjMEU1MzhCXCIpLmRlc2NyaWJlKFwiUHJpbWFyeSBob3ZlciBvciBwcmVzc2VkIGNvbG9yLlwiKSxcbiAgICBhY2NlbnQ6IGNvbG9yLmRlZmF1bHQoXCIjMDBBOTcyXCIpLmRlc2NyaWJlKFwiU2Vjb25kYXJ5IGFjY2VudCBjb2xvci5cIiksXG4gICAgZm9yZWdyb3VuZDogY29sb3IuZGVmYXVsdChcIiMxQjMxMzlcIikuZGVzY3JpYmUoXCJEZWZhdWx0IHRleHQgYW5kIG1hcmsgY29sb3IuXCIpLFxuICAgIGJhY2tncm91bmQ6IGNvbG9yLmRlZmF1bHQoXCIjRkZGRkZGXCIpLmRlc2NyaWJlKFwiRGVmYXVsdCBwYWdlIGJhY2tncm91bmQuXCIpLFxuICAgIHN1cmZhY2U6IGNvbG9yLmRlZmF1bHQoXCIjRjlGN0Y0XCIpLmRlc2NyaWJlKFwiU2Vjb25kYXJ5IHN1cmZhY2UgYmFja2dyb3VuZC5cIiksXG4gICAgbXV0ZWQ6IGNvbG9yLmRlZmF1bHQoXCIjNjE4Nzk0XCIpLmRlc2NyaWJlKFwiTXV0ZWQgdGV4dCBjb2xvci5cIiksXG4gICAgYm9yZGVyOiBjb2xvci5kZWZhdWx0KFwiI0U0RTJERFwiKS5kZXNjcmliZShcIkRlZmF1bHQgYm9yZGVyIGNvbG9yLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5wcmVmYXVsdCh7fSk7XG5cbi8qKiBTdHJpY3QgYXVkaWVuY2UsIHRvbmUsIHByaW5jaXBsZSwgYW5kIGF2b2lkYW5jZSBsaXN0cyB3aXRoIHByYWN0aWNhbCBkZWZhdWx0cy4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZFZvaWNlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBhdWRpZW5jZTogelxuICAgICAgLmFycmF5KG5vbkJsYW5rU3RyaW5nKVxuICAgICAgLmRlZmF1bHQoW1wiRGF0YWJyaWNrcyBkZXZlbG9wZXJzXCIsIFwiYXBwbGljYXRpb24gZW5naW5lZXJzXCIsIFwiQUkgYWdlbnRzXCJdKSxcbiAgICB0b25lOiB6LmFycmF5KG5vbkJsYW5rU3RyaW5nKS5kZWZhdWx0KFtcImRpcmVjdFwiLCBcInByYWN0aWNhbFwiLCBcInRlY2huaWNhbFwiLCBcImFwcHJvYWNoYWJsZVwiXSksXG4gICAgcHJpbmNpcGxlczogelxuICAgICAgLmFycmF5KG5vbkJsYW5rU3RyaW5nKVxuICAgICAgLmRlZmF1bHQoW1xuICAgICAgICBcIkxlYWQgd2l0aCB0aGUgdXNlZnVsIG91dGNvbWUuXCIsXG4gICAgICAgIFwiUHJlZmVyIGNvbmNyZXRlIGV4YW1wbGVzIGFuZCBhY2N1cmF0ZSB0ZWNobmljYWwgbGFuZ3VhZ2UuXCIsXG4gICAgICAgIFwiS2VlcCBwcm9kdWN0IGNsYWltcyBzcGVjaWZpYyBhbmQgZGVmZW5zaWJsZS5cIixcbiAgICAgIF0pLFxuICAgIGF2b2lkOiB6XG4gICAgICAuYXJyYXkobm9uQmxhbmtTdHJpbmcpXG4gICAgICAuZGVmYXVsdChbXCJ1bnN1cHBvcnRlZCBzdXBlcmxhdGl2ZXNcIiwgXCJ2YWd1ZSBBSSBjbGFpbXNcIiwgXCJ1bm5lY2Vzc2FyeSBqYXJnb25cIl0pLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLnByZWZhdWx0KHt9KTtcblxuLyoqXG4gKiBTdHJpY3QgcG9ydGFibGUgYnJhbmQgY29udHJhY3QgdGhhdCBmaWxscyBpZGVudGl0eSwgYXNzZXRzLCBjb2xvcnMsXG4gKiB0eXBvZ3JhcGh5LCB2b2ljZSwgbGlua3MsIGFuZCBleHRlbnNpb24gZGVmYXVsdHMgZHVyaW5nIHBhcnNpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZENvbnRleHRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHNjaGVtYVZlcnNpb246IHoubGl0ZXJhbChcIjFcIikuZGVmYXVsdChcIjFcIiksXG4gICAgbmFtZTogbm9uQmxhbmtTdHJpbmcuZGVmYXVsdChcImRieCB0b29sc1wiKS5kZXNjcmliZShcIkNhbm9uaWNhbCBkaXNwbGF5IG5hbWUuXCIpLFxuICAgIHNob3J0TmFtZTogbm9uQmxhbmtTdHJpbmcuZGVmYXVsdChcImRieFwiKS5kZXNjcmliZShcIkNvbXBhY3QgbmFtZSBmb3IgY29uc3RyYWluZWQgVUkuXCIpLFxuICAgIHRhZ2xpbmU6IG5vbkJsYW5rU3RyaW5nXG4gICAgICAuZGVmYXVsdChcIlByYWN0aWNhbCB0b29scyBmb3IgRGF0YWJyaWNrcyBidWlsZGVycy5cIilcbiAgICAgIC5kZXNjcmliZShcIlNob3J0IHByb2R1Y3QgbGluZSBzdWl0YWJsZSBmb3IgYSBoZWFkZXIgb3IgbWV0YWRhdGEuXCIpLFxuICAgIGRlc2NyaXB0aW9uOiBub25CbGFua1N0cmluZ1xuICAgICAgLmRlZmF1bHQoXG4gICAgICAgIFwiQ29tcGFuaW9uIHBhY2thZ2VzIGZvciBEYXRhYnJpY2tzIGRldmVsb3BlcnMgYnVpbGRpbmcgYXBwcywgYWdlbnRzLCBkYXRhIHdvcmtmbG93cywgYW5kIHJldXNhYmxlIFVJLlwiLFxuICAgICAgKVxuICAgICAgLmRlc2NyaWJlKFwiUGxhaW4tbGFuZ3VhZ2UgcHJvZHVjdCBkZXNjcmlwdGlvbi5cIiksXG4gICAgYXNzZXRzOiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgaWNvbjogQnJhbmRBc3NldFNldFNjaGVtYS5kZWZhdWx0KERFRkFVTFRfQlJBTkRfQVNTRVRTLmljb24pLFxuICAgICAgICBsb2dvOiBCcmFuZEFzc2V0U2V0U2NoZW1hLmRlZmF1bHQoREVGQVVMVF9CUkFORF9BU1NFVFMubG9nbyksXG4gICAgICAgIGZhdmljb246IG5vbkJsYW5rU3RyaW5nLmRlZmF1bHQoREVGQVVMVF9CUkFORF9BU1NFVFMuZmF2aWNvbiksXG4gICAgICB9KVxuICAgICAgLnN0cmljdCgpXG4gICAgICAuZGVmYXVsdChERUZBVUxUX0JSQU5EX0FTU0VUUyksXG4gICAgY29sb3JzOiBCcmFuZENvbG9yc1NjaGVtYSxcbiAgICB0eXBvZ3JhcGh5OiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgc2Fuczogbm9uQmxhbmtTdHJpbmcuZGVmYXVsdChcIidETSBTYW5zJywgdWktc2Fucy1zZXJpZiwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmXCIpLFxuICAgICAgICBtb25vOiBub25CbGFua1N0cmluZy5kZWZhdWx0KFwiJ0RNIE1vbm8nLCB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgbW9ub3NwYWNlXCIpLFxuICAgICAgfSlcbiAgICAgIC5zdHJpY3QoKVxuICAgICAgLnByZWZhdWx0KHt9KSxcbiAgICB2b2ljZTogQnJhbmRWb2ljZVNjaGVtYSxcbiAgICBsaW5rczogelxuICAgICAgLm9iamVjdCh7XG4gICAgICAgIHdlYnNpdGU6IHouc3RyaW5nKCkudXJsKCkub3B0aW9uYWwoKSxcbiAgICAgICAgcmVwb3NpdG9yeTogei5zdHJpbmcoKS51cmwoKS5vcHRpb25hbCgpLFxuICAgICAgICBkb2N1bWVudGF0aW9uOiB6LnN0cmluZygpLnVybCgpLm9wdGlvbmFsKCksXG4gICAgICB9KVxuICAgICAgLnN0cmljdCgpXG4gICAgICAuZGVmYXVsdCh7fSksXG4gICAgZXh0ZW5zaW9uczogelxuICAgICAgLnJlY29yZChub25CbGFua1N0cmluZywgei51bmtub3duKCkpXG4gICAgICAuZGVmYXVsdCh7fSlcbiAgICAgIC5kZXNjcmliZShcIk5hbWVzcGFjZWQgY29uc3VtZXItc3BlY2lmaWMgdmFsdWVzIHRoYXQgZG8gbm90IGJlbG9uZyBpbiB0aGUgcG9ydGFibGUgY29yZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJQb3J0YWJsZSBpZGVudGl0eSwgdmlzdWFsLCBhbmQgdm9pY2UgY29udGV4dCBmb3IgVUksIGxpYnJhcmllcywgYW5kIExMTXMuXCIpO1xuXG4vKiogRnVsbHkgdmFsaWRhdGVkIGJyYW5kIGNvbnRleHQgYWZ0ZXIgZXZlcnkgc2NoZW1hIGRlZmF1bHQgaGFzIGJlZW4gYXBwbGllZC4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kQ29udGV4dCA9IHoub3V0cHV0PHR5cGVvZiBCcmFuZENvbnRleHRTY2hlbWE+O1xuLyoqIElucHV0IGFjY2VwdGVkIGJ5IHtAbGluayBCcmFuZENvbnRleHRTY2hlbWF9LCBiZWZvcmUgZGVmYXVsdHMgYXJlIG1hdGVyaWFsaXplZC4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kQ29udGV4dElucHV0ID0gei5pbnB1dDx0eXBlb2YgQnJhbmRDb250ZXh0U2NoZW1hPjtcbi8qKiBUaGVtZS1hd2FyZSBsaWdodCBhbmQgb3B0aW9uYWwgZGFyayByZWZlcmVuY2VzIGZvciBvbmUgYnJhbmQgYXNzZXQuICovXG5leHBvcnQgdHlwZSBCcmFuZEFzc2V0U2V0ID0gei5vdXRwdXQ8dHlwZW9mIEJyYW5kQXNzZXRTZXRTY2hlbWE+O1xuXG4vKiogVmFsaWRhdGUgaW5wdXQgYW5kIGZpbGwgZXZlcnkgZGJ4IHRvb2xzIGRlZmF1bHQuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCcmFuZENvbnRleHQoaW5wdXQ6IHVua25vd24gPSB7fSk6IEJyYW5kQ29udGV4dCB7XG4gIHJldHVybiBCcmFuZENvbnRleHRTY2hlbWEucGFyc2UoaW5wdXQpO1xufVxuXG4vKiogQ2Fub25pY2FsIGRieCB0b29scyBicmFuZCBjb250ZXh0IHdpdGggYWxsIHNjaGVtYSBkZWZhdWx0cyByZXNvbHZlZC4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0QnJhbmRDb250ZXh0OiBCcmFuZENvbnRleHQgPSBwYXJzZUJyYW5kQ29udGV4dCgpO1xuXG4vKiogSlNPTiBTY2hlbWEgcmVwcmVzZW50YXRpb24gc3VpdGFibGUgZm9yIHN0cnVjdHVyZWQtb3V0cHV0IGFuZCB0b29sIGRlZmluaXRpb25zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyYW5kQ29udGV4dEpzb25TY2hlbWEoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gei50b0pTT05TY2hlbWEoQnJhbmRDb250ZXh0U2NoZW1hKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqIFN0YWJsZSBwcm9tcHQgYmxvY2sgZm9yIGFuIExMTSB0aGF0IG5lZWRzIHRvIHdyaXRlIG9yIGRlc2lnbiBpbiB0aGlzIGJyYW5kLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyYW5kQ29udGV4dFByb21wdChjb250ZXh0OiBCcmFuZENvbnRleHQgPSBkZWZhdWx0QnJhbmRDb250ZXh0KTogc3RyaW5nIHtcbiAgcmV0dXJuIFtcbiAgICBgVXNlIHRoZSBmb2xsb3dpbmcgJHtjb250ZXh0Lm5hbWV9IGJyYW5kIGNvbnRleHQgZm9yIG5hbWVzLCB2aXN1YWwgY2hvaWNlcywgYW5kIHdyaXRpbmcgdm9pY2UuYCxcbiAgICBcIlRyZWF0IGV4cGxpY2l0IHRhc2sgaW5zdHJ1Y3Rpb25zIGFzIGhpZ2hlciBwcmlvcml0eSB0aGFuIHRoaXMgY29udGV4dC5cIixcbiAgICBcIlwiLFxuICAgIEpTT04uc3RyaW5naWZ5KGNvbnRleHQsIG51bGwsIDIpLFxuICBdLmpvaW4oXCJcXG5cIik7XG59XG4iXX0=
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnJhbmQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFFcEcscUZBQXFGO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSw4Q0FBOEM7UUFDckQsSUFBSSxFQUFFLDZDQUE2QztLQUNwRDtJQUNELElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSw4Q0FBOEM7UUFDckQsSUFBSSxFQUFFLDZDQUE2QztLQUNwRDtJQUNELE9BQU8sRUFBRSw4Q0FBOEM7Q0FDL0MsQ0FBQztBQUVYLHVFQUF1RTtBQUN2RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDO0tBQ2pDLE1BQU0sQ0FBQztJQUNOLEtBQUssRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDO0lBQzNELElBQUksRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGlEQUFpRCxDQUFDO0NBQzVGLENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixRQUFRLENBQUMsNkNBQTZDLENBQUMsQ0FBQztBQUUzRCxtRkFBbUY7QUFDbkYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQztLQUMvQixNQUFNLENBQUM7SUFDTixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMs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QixpQkFBaUIsRUFBRSxDQUFDO0FBRXJFLHNGQUFzRjtBQUN0RixNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBNEIsQ0FBQztBQUN2RSxDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxVQUF3QixtQkFBbUI7SUFDNUUsT0FBTztRQUNMLHFCQUFxQixPQUFPLENBQUMsSUFBSSw4REFBOEQ7UUFDL0Ysd0VBQXdFO1FBQ3hFLEVBQUU7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQ2pDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJvd3Nlci1zYWZlIGJyYW5kIGNvbnRyYWN0LCBkZWZhdWx0cywgYW5kIExMTSBzZXJpYWxpemF0aW9uIGhlbHBlcnMuXG4gKlxuICogQXNzZXQgdmFsdWVzIGFyZSBpbnRlbnRpb25hbGx5IHN0cmluZ3M6IHRoZXkgbWF5IGJlIHJlbGF0aXZlIGZpbGUgcGF0aHMsXG4gKiBwYWNrYWdlIGV4cG9ydHMsIGRhdGEgVVJMcywgb3IgbmV0d29yayBVUkxzIGRlcGVuZGluZyBvbiB0aGUgY29uc3VtZXIuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5jb25zdCBub25CbGFua1N0cmluZyA9IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKTtcbmNvbnN0IGNvbG9yID0gei5zdHJpbmcoKS5yZWdleCgvXiMoPzpbXFxkYS1mXXszfXxbXFxkYS1mXXs2fXxbXFxkYS1mXXs4fSkkL2ksIFwiRXhwZWN0ZWQgYSBoZXggY29sb3IuXCIpO1xuXG4vKiogUGFja2FnZSBhc3NldCByZWZlcmVuY2VzIHVzZWQgd2hlbiBhIGJyYW5kIGNvbnRleHQgc3VwcGxpZXMgbm8gY3VzdG9tIGFydHdvcmsuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9CUkFORF9BU1NFVFMgPSB7XG4gIGljb246IHtcbiAgICBsaWdodDogXCJAZGJ4LXRvb2xzL3VpL2JyYW5kaW5nL2Fzc2V0cy9pY29uLWxpZ2h0LnN2Z1wiLFxuICAgIGRhcms6IFwiQGRieC10b29scy91aS9icmFuZGluZy9hc3NldHMvaWNvbi1kYXJrLnN2Z1wiLFxuICB9LFxuICBsb2dvOiB7XG4gICAgbGlnaHQ6IFwiQGRieC10b29scy91aS9icmFuZGluZy9hc3NldHMvbG9nby1saWdodC5zdmdcIixcbiAgICBkYXJrOiBcIkBkYngtdG9vbHMvdWkvYnJhbmRpbmcvYXNzZXRzL2xvZ28tZGFyay5zdmdcIixcbiAgfSxcbiAgZmF2aWNvbjogXCJAZGJ4LXRvb2xzL3VpL2JyYW5kaW5nL2Fzc2V0cy9pY29uLWxpZ2h0LnN2Z1wiLFxufSBhcyBjb25zdDtcblxuLyoqIFZhbGlkYXRlcyBsaWdodCBhbmQgb3B0aW9uYWwgZGFyayB2YXJpYW50cyBmb3Igb25lIHZpc3VhbCBhc3NldC4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZEFzc2V0U2V0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBsaWdodDogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJBc3NldCBmb3IgbGlnaHQgc3VyZmFjZXMuXCIpLFxuICAgIGRhcms6IG5vbkJsYW5rU3RyaW5nLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBc3NldCBmb3IgZGFyayBzdXJmYWNlczsgbGlnaHQgaXMgdGhlIGZhbGxiYWNrLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlRoZW1lLWF3YXJlIHJlZmVyZW5jZXMgdG8gb25lIHZpc3VhbCBhc3NldC5cIik7XG5cbi8qKiBTdHJpY3QgYnJhbmQgcGFsZXR0ZSB3aG9zZSBvbWl0dGVkIGNvbG9ycyByZXNvbHZlIHRvIHRoZSBkYnggdG9vbHMgZGVmYXVsdHMuICovXG5leHBvcnQgY29uc3QgQnJhbmRDb2xvcnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHByaW1hcnk6IGNvbG9yLmRlZmF1bHQoXCIjMUIzMTM5XCIpLmRlc2NyaWJlKFwiUHJpbWFyeSBhY3Rpb24gYW5kIGlkZW50aXR5IGNvbG9yLlwiKSxcbiAgICBwcmltYXJ5SG92ZXI6IGNvbG9yLmRlZmF1bHQoXCIjMEU1MzhCXCIpLmRlc2NyaWJlKFwiUHJpbWFyeSBob3ZlciBvciBwcmVzc2VkIGNvbG9yLlwiKSxcbiAgICBhY2NlbnQ6IGNvbG9yLmRlZmF1bHQoXCIjMDBBOTcyXCIpLmRlc2NyaWJlKFwiU2Vjb25kYXJ5IGFjY2VudCBjb2xvci5cIiksXG4gICAgZm9yZWdyb3VuZDogY29sb3IuZGVmYXVsdChcIiMxQjMxMzlcIikuZGVzY3JpYmUoXCJEZWZhdWx0IHRleHQgYW5kIG1hcmsgY29sb3IuXCIpLFxuICAgIGJhY2tncm91bmQ6IGNvbG9yLmRlZmF1bHQoXCIjRkZGRkZGXCIpLmRlc2NyaWJlKFwiRGVmYXVsdCBwYWdlIGJhY2tncm91bmQuXCIpLFxuICAgIHN1cmZhY2U6IGNvbG9yLmRlZmF1bHQoXCIjRjlGN0Y0XCIpLmRlc2NyaWJlKFwiU2Vjb25kYXJ5IHN1cmZhY2UgYmFja2dyb3VuZC5cIiksXG4gICAgbXV0ZWQ6IGNvbG9yLmRlZmF1bHQoXCIjNjE4Nzk0XCIpLmRlc2NyaWJlKFwiTXV0ZWQgdGV4dCBjb2xvci5cIiksXG4gICAgYm9yZGVyOiBjb2xvci5kZWZhdWx0KFwiI0U0RTJERFwiKS5kZXNjcmliZShcIkRlZmF1bHQgYm9yZGVyIGNvbG9yLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5wcmVmYXVsdCh7fSk7XG5cbi8qKiBTdHJpY3QgYXVkaWVuY2UsIHRvbmUsIHByaW5jaXBsZSwgYW5kIGF2b2lkYW5jZSBsaXN0cyB3aXRoIHByYWN0aWNhbCBkZWZhdWx0cy4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZFZvaWNlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBhdWRpZW5jZTogelxuICAgICAgLmFycmF5KG5vbkJsYW5rU3RyaW5nKVxuICAgICAgLmRlZmF1bHQoW1wiRGF0YWJyaWNrcyBkZXZlbG9wZXJzXCIsIFwiYXBwbGljYXRpb24gZW5naW5lZXJzXCIsIFwiQUkgYWdlbnRzXCJdKSxcbiAgICB0b25lOiB6LmFycmF5KG5vbkJsYW5rU3RyaW5nKS5kZWZhdWx0KFtcImRpcmVjdFwiLCBcInByYWN0aWNhbFwiLCBcInRlY2huaWNhbFwiLCBcImFwcHJvYWNoYWJsZVwiXSksXG4gICAgcHJpbmNpcGxlczogelxuICAgICAgLmFycmF5KG5vbkJsYW5rU3RyaW5nKVxuICAgICAgLmRlZmF1bHQoW1xuICAgICAgICBcIkxlYWQgd2l0aCB0aGUgdXNlZnVsIG91dGNvbWUuXCIsXG4gICAgICAgIFwiUHJlZmVyIGNvbmNyZXRlIGV4YW1wbGVzIGFuZCBhY2N1cmF0ZSB0ZWNobmljYWwgbGFuZ3VhZ2UuXCIsXG4gICAgICAgIFwiS2VlcCBwcm9kdWN0IGNsYWltcyBzcGVjaWZpYyBhbmQgZGVmZW5zaWJsZS5cIixcbiAgICAgIF0pLFxuICAgIGF2b2lkOiB6XG4gICAgICAuYXJyYXkobm9uQmxhbmtTdHJpbmcpXG4gICAgICAuZGVmYXVsdChbXCJ1bnN1cHBvcnRlZCBzdXBlcmxhdGl2ZXNcIiwgXCJ2YWd1ZSBBSSBjbGFpbXNcIiwgXCJ1bm5lY2Vzc2FyeSBqYXJnb25cIl0pLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLnByZWZhdWx0KHt9KTtcblxuLyoqXG4gKiBTdHJpY3QgcG9ydGFibGUgYnJhbmQgY29udHJhY3QgdGhhdCBmaWxscyBpZGVudGl0eSwgYXNzZXRzLCBjb2xvcnMsXG4gKiB0eXBvZ3JhcGh5LCB2b2ljZSwgbGlua3MsIGFuZCBleHRlbnNpb24gZGVmYXVsdHMgZHVyaW5nIHBhcnNpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZENvbnRleHRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHNjaGVtYVZlcnNpb246IHoubGl0ZXJhbChcIjFcIikuZGVmYXVsdChcIjFcIiksXG4gICAgbmFtZTogbm9uQmxhbmtTdHJpbmcuZGVmYXVsdChcImRieCB0b29sc1wiKS5kZXNjcmliZShcIkNhbm9uaWNhbCBkaXNwbGF5IG5hbWUuXCIpLFxuICAgIHNob3J0TmFtZTogbm9uQmxhbmtTdHJpbmcuZGVmYXVsdChcImRieFwiKS5kZXNjcmliZShcIkNvbXBhY3QgbmFtZSBmb3IgY29uc3RyYWluZWQgVUkuXCIpLFxuICAgIHRhZ2xpbmU6IG5vbkJsYW5rU3RyaW5nXG4gICAgICAuZGVmYXVsdChcIlByYWN0aWNhbCB0b29scyBmb3IgRGF0YWJyaWNrcyBidWlsZGVycy5cIilcbiAgICAgIC5kZXNjcmliZShcIlNob3J0IHByb2R1Y3QgbGluZSBzdWl0YWJsZSBmb3IgYSBoZWFkZXIgb3IgbWV0YWRhdGEuXCIpLFxuICAgIGRlc2NyaXB0aW9uOiBub25CbGFua1N0cmluZ1xuICAgICAgLmRlZmF1bHQoXG4gICAgICAgIFwiQ29tcGFuaW9uIHBhY2thZ2VzIGZvciBEYXRhYnJpY2tzIGRldmVsb3BlcnMgYnVpbGRpbmcgYXBwcywgYWdlbnRzLCBkYXRhIHdvcmtmbG93cywgYW5kIHJldXNhYmxlIFVJLlwiLFxuICAgICAgKVxuICAgICAgLmRlc2NyaWJlKFwiUGxhaW4tbGFuZ3VhZ2UgcHJvZHVjdCBkZXNjcmlwdGlvbi5cIiksXG4gICAgYXNzZXRzOiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgaWNvbjogQnJhbmRBc3NldFNldFNjaGVtYS5kZWZhdWx0KERFRkFVTFRfQlJBTkRfQVNTRVRTLmljb24pLFxuICAgICAgICBsb2dvOiBCcmFuZEFzc2V0U2V0U2NoZW1hLmRlZmF1bHQoREVGQVVMVF9CUkFORF9BU1NFVFMubG9nbyksXG4gICAgICAgIGZhdmljb246IG5vbkJsYW5rU3RyaW5nLmRlZmF1bHQoREVGQVVMVF9CUkFORF9BU1NFVFMuZmF2aWNvbiksXG4gICAgICB9KVxuICAgICAgLnN0cmljdCgpXG4gICAgICAuZGVmYXVsdChERUZBVUxUX0JSQU5EX0FTU0VUUyksXG4gICAgY29sb3JzOiBCcmFuZENvbG9yc1NjaGVtYSxcbiAgICB0eXBvZ3JhcGh5OiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgc2Fuczogbm9uQmxhbmtTdHJpbmcuZGVmYXVsdChcIidETSBTYW5zJywgdWktc2Fucy1zZXJpZiwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmXCIpLFxuICAgICAgICBtb25vOiBub25CbGFua1N0cmluZy5kZWZhdWx0KFwiJ0RNIE1vbm8nLCB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgbW9ub3NwYWNlXCIpLFxuICAgICAgfSlcbiAgICAgIC5zdHJpY3QoKVxuICAgICAgLnByZWZhdWx0KHt9KSxcbiAgICB2b2ljZTogQnJhbmRWb2ljZVNjaGVtYSxcbiAgICBsaW5rczogelxuICAgICAgLm9iamVjdCh7XG4gICAgICAgIHdlYnNpdGU6IHouc3RyaW5nKCkudXJsKCkub3B0aW9uYWwoKSxcbiAgICAgICAgcmVwb3NpdG9yeTogei5zdHJpbmcoKS51cmwoKS5vcHRpb25hbCgpLFxuICAgICAgICBkb2N1bWVudGF0aW9uOiB6LnN0cmluZygpLnVybCgpLm9wdGlvbmFsKCksXG4gICAgICB9KVxuICAgICAgLnN0cmljdCgpXG4gICAgICAuZGVmYXVsdCh7fSksXG4gICAgZXh0ZW5zaW9uczogelxuICAgICAgLnJlY29yZChub25CbGFua1N0cmluZywgei51bmtub3duKCkpXG4gICAgICAuZGVmYXVsdCh7fSlcbiAgICAgIC5kZXNjcmliZShcIk5hbWVzcGFjZWQgY29uc3VtZXItc3BlY2lmaWMgdmFsdWVzIHRoYXQgZG8gbm90IGJlbG9uZyBpbiB0aGUgcG9ydGFibGUgY29yZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJQb3J0YWJsZSBpZGVudGl0eSwgdmlzdWFsLCBhbmQgdm9pY2UgY29udGV4dCBmb3IgVUksIGxpYnJhcmllcywgYW5kIExMTXMuXCIpO1xuXG4vKiogRnVsbHkgdmFsaWRhdGVkIGJyYW5kIGNvbnRleHQgYWZ0ZXIgZXZlcnkgc2NoZW1hIGRlZmF1bHQgaGFzIGJlZW4gYXBwbGllZC4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kQ29udGV4dCA9IHoub3V0cHV0PHR5cGVvZiBCcmFuZENvbnRleHRTY2hlbWE+O1xuLyoqIElucHV0IGFjY2VwdGVkIGJ5IHtAbGluayBCcmFuZENvbnRleHRTY2hlbWF9LCBiZWZvcmUgZGVmYXVsdHMgYXJlIG1hdGVyaWFsaXplZC4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kQ29udGV4dElucHV0ID0gei5pbnB1dDx0eXBlb2YgQnJhbmRDb250ZXh0U2NoZW1hPjtcbi8qKiBUaGVtZS1hd2FyZSBsaWdodCBhbmQgb3B0aW9uYWwgZGFyayByZWZlcmVuY2VzIGZvciBvbmUgYnJhbmQgYXNzZXQuICovXG5leHBvcnQgdHlwZSBCcmFuZEFzc2V0U2V0ID0gei5vdXRwdXQ8dHlwZW9mIEJyYW5kQXNzZXRTZXRTY2hlbWE+O1xuXG4vKiogVmFsaWRhdGUgaW5wdXQgYW5kIGZpbGwgZXZlcnkgZGJ4IHRvb2xzIGRlZmF1bHQuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCcmFuZENvbnRleHQoaW5wdXQ6IHVua25vd24gPSB7fSk6IEJyYW5kQ29udGV4dCB7XG4gIHJldHVybiBCcmFuZENvbnRleHRTY2hlbWEucGFyc2UoaW5wdXQpO1xufVxuXG4vKiogQ2Fub25pY2FsIGRieCB0b29scyBicmFuZCBjb250ZXh0IHdpdGggYWxsIHNjaGVtYSBkZWZhdWx0cyByZXNvbHZlZC4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0QnJhbmRDb250ZXh0OiBCcmFuZENvbnRleHQgPSBwYXJzZUJyYW5kQ29udGV4dCgpO1xuXG4vKiogSlNPTiBTY2hlbWEgcmVwcmVzZW50YXRpb24gc3VpdGFibGUgZm9yIHN0cnVjdHVyZWQtb3V0cHV0IGFuZCB0b29sIGRlZmluaXRpb25zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyYW5kQ29udGV4dEpzb25TY2hlbWEoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gei50b0pTT05TY2hlbWEoQnJhbmRDb250ZXh0U2NoZW1hKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqIFN0YWJsZSBwcm9tcHQgYmxvY2sgZm9yIGFuIExMTSB0aGF0IG5lZWRzIHRvIHdyaXRlIG9yIGRlc2lnbiBpbiB0aGlzIGJyYW5kLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyYW5kQ29udGV4dFByb21wdChjb250ZXh0OiBCcmFuZENvbnRleHQgPSBkZWZhdWx0QnJhbmRDb250ZXh0KTogc3RyaW5nIHtcbiAgcmV0dXJuIFtcbiAgICBgVXNlIHRoZSBmb2xsb3dpbmcgJHtjb250ZXh0Lm5hbWV9IGJyYW5kIGNvbnRleHQgZm9yIG5hbWVzLCB2aXN1YWwgY2hvaWNlcywgYW5kIHdyaXRpbmcgdm9pY2UuYCxcbiAgICBcIlRyZWF0IGV4cGxpY2l0IHRhc2sgaW5zdHJ1Y3Rpb25zIGFzIGhpZ2hlciBwcmlvcml0eSB0aGFuIHRoaXMgY29udGV4dC5cIixcbiAgICBcIlwiLFxuICAgIEpTT04uc3RyaW5naWZ5KGNvbnRleHQsIG51bGwsIDIpLFxuICBdLmpvaW4oXCJcXG5cIik7XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
- /** Detect a Databricks App runtime from its required name, host, and port. */
1
+ /** Detect a Databricks App runtime from its required host and App-specific port. */
2
2
  export declare function isDatabricksAppEnv(source?: Record<string, string | undefined>): boolean;
@@ -1,9 +1,9 @@
1
+ import { MAX_TCP_PORT } from "./net.js";
1
2
  import { toBoolean } from "./object.js";
2
- import { MAX_TCP_PORT } from "./options.js";
3
3
  function runtimeEnvironment() {
4
4
  return (globalThis.process?.env ?? {});
5
5
  }
6
- /** Detect a Databricks App runtime from its required name, host, and port. */
6
+ /** Detect a Databricks App runtime from its required host and App-specific port. */
7
7
  export function isDatabricksAppEnv(source = runtimeEnvironment()) {
8
8
  const override = toBoolean(source.DBX_TOOLS_DATABRICKS_APP_ENV);
9
9
  if (override !== undefined)
@@ -11,7 +11,7 @@ export function isDatabricksAppEnv(source = runtimeEnvironment()) {
11
11
  const name = source.DATABRICKS_APP_NAME?.trim();
12
12
  const host = source.DATABRICKS_HOST?.trim();
13
13
  const port = source.DATABRICKS_APP_PORT?.trim();
14
- if (!name || /\$\{[^}]+\}/.test(name) || !host || !port || !/^\d+$/.test(port))
14
+ if ((name && /\$\{[^}]+\}/.test(name)) || !host || !port || !/^\d+$/.test(port))
15
15
  return false;
16
16
  const parsedPort = Number(port);
17
17
  if (!Number.isInteger(parsedPort) || parsedPort < 1 || parsedPort > MAX_TCP_PORT)
@@ -24,4 +24,4 @@ export function isDatabricksAppEnv(source = runtimeEnvironment()) {
24
24
  return false;
25
25
  }
26
26
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW52aXJvbm1lbnQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTVDLFNBQVMsa0JBQWtCO0lBQ3pCLE9BQU8sQ0FFSCxVQUdELENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsOEVBQThFO0FBQzlFLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsU0FBNkMsa0JBQWtCLEVBQUU7SUFFakUsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2hFLElBQUksUUFBUSxLQUFLLFNBQVM7UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDaEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDaEQsSUFBSSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM3RixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxVQUFVLEdBQUcsWUFBWTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQy9GLElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLE9BQU8sSUFBSSxHQUFHLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b0Jvb2xlYW4gfSBmcm9tIFwiLi9vYmplY3QudHNcIjtcbmltcG9ydCB7IE1BWF9UQ1BfUE9SVCB9IGZyb20gXCIuL29wdGlvbnMudHNcIjtcblxuZnVuY3Rpb24gcnVudGltZUVudmlyb25tZW50KCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICByZXR1cm4gKFxuICAgIChcbiAgICAgIGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7XG4gICAgICAgIHByb2Nlc3M/OiB7IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gfTtcbiAgICAgIH1cbiAgICApLnByb2Nlc3M/LmVudiA/PyB7fVxuICApO1xufVxuXG4vKiogRGV0ZWN0IGEgRGF0YWJyaWNrcyBBcHAgcnVudGltZSBmcm9tIGl0cyByZXF1aXJlZCBuYW1lLCBob3N0LCBhbmQgcG9ydC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGFicmlja3NBcHBFbnYoXG4gIHNvdXJjZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA9IHJ1bnRpbWVFbnZpcm9ubWVudCgpLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IG92ZXJyaWRlID0gdG9Cb29sZWFuKHNvdXJjZS5EQlhfVE9PTFNfREFUQUJSSUNLU19BUFBfRU5WKTtcbiAgaWYgKG92ZXJyaWRlICE9PSB1bmRlZmluZWQpIHJldHVybiBvdmVycmlkZTtcbiAgY29uc3QgbmFtZSA9IHNvdXJjZS5EQVRBQlJJQ0tTX0FQUF9OQU1FPy50cmltKCk7XG4gIGNvbnN0IGhvc3QgPSBzb3VyY2UuREFUQUJSSUNLU19IT1NUPy50cmltKCk7XG4gIGNvbnN0IHBvcnQgPSBzb3VyY2UuREFUQUJSSUNLU19BUFBfUE9SVD8udHJpbSgpO1xuICBpZiAoIW5hbWUgfHwgL1xcJFxce1tefV0rXFx9Ly50ZXN0KG5hbWUpIHx8ICFob3N0IHx8ICFwb3J0IHx8ICEvXlxcZCskLy50ZXN0KHBvcnQpKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHBhcnNlZFBvcnQgPSBOdW1iZXIocG9ydCk7XG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihwYXJzZWRQb3J0KSB8fCBwYXJzZWRQb3J0IDwgMSB8fCBwYXJzZWRQb3J0ID4gTUFYX1RDUF9QT1JUKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChob3N0KTtcbiAgICByZXR1cm4gKHVybC5wcm90b2NvbCA9PT0gXCJodHRwOlwiIHx8IHVybC5wcm90b2NvbCA9PT0gXCJodHRwczpcIikgJiYgQm9vbGVhbih1cmwuaG9zdG5hbWUpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW52aXJvbm1lbnQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhDLFNBQVMsa0JBQWtCO0lBQ3pCLE9BQU8sQ0FFSCxVQUdELENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsb0ZBQW9GO0FBQ3BGLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsU0FBNkMsa0JBQWtCLEVBQUU7SUFFakUsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2hFLElBQUksUUFBUSxLQUFLLFNBQVM7UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDaEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDaEQsSUFBSSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzlGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLFVBQVUsR0FBRyxZQUFZO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDL0YsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssT0FBTyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1BWF9UQ1BfUE9SVCB9IGZyb20gXCIuL25ldC50c1wiO1xuaW1wb3J0IHsgdG9Cb29sZWFuIH0gZnJvbSBcIi4vb2JqZWN0LnRzXCI7XG5cbmZ1bmN0aW9uIHJ1bnRpbWVFbnZpcm9ubWVudCgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgcmV0dXJuIChcbiAgICAoXG4gICAgICBnbG9iYWxUaGlzIGFzIHR5cGVvZiBnbG9iYWxUaGlzICYge1xuICAgICAgICBwcm9jZXNzPzogeyBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+IH07XG4gICAgICB9XG4gICAgKS5wcm9jZXNzPy5lbnYgPz8ge31cbiAgKTtcbn1cblxuLyoqIERldGVjdCBhIERhdGFicmlja3MgQXBwIHJ1bnRpbWUgZnJvbSBpdHMgcmVxdWlyZWQgaG9zdCBhbmQgQXBwLXNwZWNpZmljIHBvcnQuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhYnJpY2tzQXBwRW52KFxuICBzb3VyY2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gPSBydW50aW1lRW52aXJvbm1lbnQoKSxcbik6IGJvb2xlYW4ge1xuICBjb25zdCBvdmVycmlkZSA9IHRvQm9vbGVhbihzb3VyY2UuREJYX1RPT0xTX0RBVEFCUklDS1NfQVBQX0VOVik7XG4gIGlmIChvdmVycmlkZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gb3ZlcnJpZGU7XG4gIGNvbnN0IG5hbWUgPSBzb3VyY2UuREFUQUJSSUNLU19BUFBfTkFNRT8udHJpbSgpO1xuICBjb25zdCBob3N0ID0gc291cmNlLkRBVEFCUklDS1NfSE9TVD8udHJpbSgpO1xuICBjb25zdCBwb3J0ID0gc291cmNlLkRBVEFCUklDS1NfQVBQX1BPUlQ/LnRyaW0oKTtcbiAgaWYgKChuYW1lICYmIC9cXCRcXHtbXn1dK1xcfS8udGVzdChuYW1lKSkgfHwgIWhvc3QgfHwgIXBvcnQgfHwgIS9eXFxkKyQvLnRlc3QocG9ydCkpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgcGFyc2VkUG9ydCA9IE51bWJlcihwb3J0KTtcbiAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlZFBvcnQpIHx8IHBhcnNlZFBvcnQgPCAxIHx8IHBhcnNlZFBvcnQgPiBNQVhfVENQX1BPUlQpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGhvc3QpO1xuICAgIHJldHVybiAodXJsLnByb3RvY29sID09PSBcImh0dHA6XCIgfHwgdXJsLnByb3RvY29sID09PSBcImh0dHBzOlwiKSAmJiBCb29sZWFuKHVybC5ob3N0bmFtZSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
package/lib/src/http.d.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  * of those shapes. Dependency-free and browser-safe so it can run in
7
7
  * either a server or a client bundle.
8
8
  *
9
- * URL path matching lives in `./net.browser.ts` (`pathMatch`).
9
+ * URL path matching lives on `net.urlBuilder` (`pathMatches`).
10
10
  *
11
11
  * @module
12
12
  */
package/lib/src/http.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * of those shapes. Dependency-free and browser-safe so it can run in
7
7
  * either a server or a client bundle.
8
8
  *
9
- * URL path matching lives in `./net.browser.ts` (`pathMatch`).
9
+ * URL path matching lives on `net.urlBuilder` (`pathMatches`).
10
10
  *
11
11
  * @module
12
12
  */
@@ -186,4 +186,4 @@ function unwrap(input) {
186
186
  return input.headers;
187
187
  return input;
188
188
  }
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBNEJILG1FQUFtRTtBQUNuRSxpQkFBaUI7QUFDakIsbUVBQW1FO0FBRW5FOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLEtBQW9DLEVBQ3BDLFVBQWtCLEVBQ2xCLFFBQWlDO0lBRWpDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsT0FBTztRQUFFLE9BQU87SUFFckIsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRXhDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdkIsZ0VBQWdFO1FBQ2hFLCtEQUErRDtRQUMvRCwrREFBK0Q7UUFDL0Qsc0RBQXNEO1FBQ3RELElBQUksTUFBTSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQzVCLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRTtnQkFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUQsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLElBQUksS0FBSyxLQUFLLElBQUk7WUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsT0FBTztJQUNULENBQUM7SUFFRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ25ELElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTTtZQUFFLFNBQVM7UUFDNUQsSUFBSSxLQUFLLENBQUMs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cmVhZGVycyBmb3IgSFRUUCByZXF1ZXN0cywgc2hhcmVkIGFjcm9zcyBBcHBLaXRcbiAqIHBsdWdpbnM6IGhlYWRlciBhbmQgY29va2llIGV4dHJhY3Rpb24uIFdvcmtzIHVuaWZvcm1seSBhY3Jvc3NcbiAqIEV4cHJlc3MsIE5vZGUgYEluY29taW5nTWVzc2FnZWAsIFdIQVRXRyBgUmVxdWVzdGAgLyBgUmVzcG9uc2VgIC9cbiAqIGBIZWFkZXJzYCwgSG9ubywgYW5kIGFueSBvYmplY3QgdGhhdCBleHBvc2VzIGEgYGhlYWRlcnNgIGZpZWxkIG9mIG9uZVxuICogb2YgdGhvc2Ugc2hhcGVzLiBEZXBlbmRlbmN5LWZyZWUgYW5kIGJyb3dzZXItc2FmZSBzbyBpdCBjYW4gcnVuIGluXG4gKiBlaXRoZXIgYSBzZXJ2ZXIgb3IgYSBjbGllbnQgYnVuZGxlLlxuICpcbiAqIFVSTCBwYXRoIG1hdGNoaW5nIGxpdmVzIGluIGAuL25ldC5icm93c2VyLnRzYCAoYHBhdGhNYXRjaGApLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFR5cGVzXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBBbnl0aGluZyB0aGF0IGNvbnRhaW5zIEhUVFAgaGVhZGVycy4gQWNjZXB0czpcbiAqXG4gKiAtIEEgV0hBVFdHIGBIZWFkZXJzYCBpbnN0YW5jZSAoZmV0Y2ggLyB1bmRpY2kgLyBIb25vIGBjLnJlcS5yYXcuaGVhZGVyc2ApLlxuICogLSBBIGhlYWRlciByZWNvcmQgKGBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD5gKSxcbiAqICAgTm9kZSAvIEV4cHJlc3Mgc3R5bGUuXG4gKiAtIEFueSBvYmplY3Qgd2l0aCBhIGBoZWFkZXJzYCBmaWVsZCBvZiBvbmUgb2YgdGhlIGFib3ZlLiBUaGlzIGNvdmVyc1xuICogICBFeHByZXNzIGByZXFgLCBOb2RlIGBJbmNvbWluZ01lc3NhZ2VgLCBXSEFUV0cgYFJlcXVlc3RgIC8gYFJlc3BvbnNlYCxcbiAqICAgSG9ubyBgYy5yZXEucmF3YCwgYW5kIHNpbWlsYXIgc2hhcGVzLlxuICovXG5leHBvcnQgdHlwZSBIZWFkZXJMaWtlID0gSGVhZGVycyB8IEhlYWRlclJlY29yZCB8IHsgaGVhZGVyczogSGVhZGVycyB8IEhlYWRlclJlY29yZCB9O1xuXG4vKipcbiAqIFNpbmdsZSBoZWFkZXIgdmFsdWUgYXMgZXhwb3NlZCBieSBOb2RlIGBJbmNvbWluZ01lc3NhZ2UuaGVhZGVyc2AgYW5kXG4gKiBFeHByZXNzIGByZXEuaGVhZGVyc2AgKHN0cmluZyBmb3IgbW9zdCBoZWFkZXJzLCBhcnJheSBmb3IgcmVwZWF0ZWRcbiAqIGhlYWRlcnMgc3VjaCBhcyBgU2V0LUNvb2tpZWApLlxuICovXG50eXBlIEhlYWRlclZhbHVlTGlrZSA9IHN0cmluZ1tdIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4vKiogSGVhZGVyIGJhZyB3aXRoIGNhc2UtaW5zZW5zaXRpdmUga2V5cyAoTm9kZSAvIEV4cHJlc3Mgc3R5bGUpLiAqL1xudHlwZSBIZWFkZXJSZWNvcmQgPSBSZWNvcmQ8c3RyaW5nLCBIZWFkZXJWYWx1ZUxpa2U+O1xuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEhlYWRlciBoZWxwZXJzXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBJbnZva2VzIGBjb25zdW1lcmAgb25jZSBwZXIgdmFsdWUgZm9yIGBoZWFkZXJOYW1lYCwgY2FzZS1pbnNlbnNpdGl2ZS5cbiAqXG4gKiAtICoqUmVjb3JkIGlucHV0OioqIGlmIHRoZSBmaWVsZCBpcyBhbiBhcnJheSAoZS5nLiByZXBlYXRlZCBgU2V0LUNvb2tpZWApLFxuICogICBgY29uc3VtZXJgIHJ1bnMgb25jZSBwZXIgYXJyYXkgaXRlbS5cbiAqIC0gKipgSGVhZGVyc2AgaW5wdXQ6KiogdXNlcyBgZ2V0KG5hbWUpYCAod2hpY2ggc3BlYy1qb2lucyByZXBlYXRzIHdpdGhcbiAqICAgYCwgYCkgZXhjZXB0IGZvciBgU2V0LUNvb2tpZWAsIHdoaWNoIHVzZXMgYGdldFNldENvb2tpZSgpYCBzbyBlYWNoXG4gKiAgIGNvb2tpZSBpcyBkZWxpdmVyZWQgc2VwYXJhdGVseS5cbiAqXG4gKiBAZXhhbXBsZVxuICogZm9yRWFjaEhlYWRlclZhbHVlKHJlcSwgXCJ4LXRyYWNlLWlkXCIsICh2KSA9PiBzcGFucy5wdXNoKHYpKTsgICAgIC8vIEV4cHJlc3NcbiAqIGZvckVhY2hIZWFkZXJWYWx1ZShjLnJlcS5yYXcsIFwic2V0LWNvb2tpZVwiLCAodikgPT4gbG9nKHYpKTsgICAgICAvLyBIb25vXG4gKiBmb3JFYWNoSGVhZGVyVmFsdWUoaGVhZGVyc0luc3RhbmNlLCBcImNvb2tpZVwiLCBwYXJzZSk7ICAgICAgICAgICAgLy8gZmV0Y2hcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvckVhY2hIZWFkZXJWYWx1ZShcbiAgaW5wdXQ6IEhlYWRlckxpa2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBoZWFkZXJOYW1lOiBzdHJpbmcsXG4gIGNvbnN1bWVyOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCxcbik6IHZvaWQge1xuICBjb25zdCBoZWFkZXJzID0gdW53cmFwKGlucHV0KTtcbiAgaWYgKCFoZWFkZXJzKSByZXR1cm47XG5cbiAgY29uc3QgdGFyZ2V0ID0gaGVhZGVyTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChpc0hlYWRlcnMoaGVhZGVycykpIHtcbiAgICAvLyBgSGVhZGVycy5nZXRgIGpvaW5zIHJlcGVhdGVkIHZhbHVlcyB3aXRoIGAsIGAgcGVyIHNwZWMsIHdoaWNoXG4gICAgLy8gbWFuZ2xlcyBgU2V0LUNvb2tpZWAgKGNvb2tpZXMgbGVnaXRpbWF0ZWx5IGNvbnRhaW4gY29tbWFzIGluXG4gICAgLy8gdGhlaXIgYGV4cGlyZXM9YCBhdHRyaWJ1dGUpLiBgZ2V0U2V0Q29va2llYCBpcyB0aGUgZGVkaWNhdGVkXG4gICAgLy8gc3BsaXR0ZXIgYW5kIGlzIHRoZSBvbmx5IHNhZmUgcGF0aCBmb3IgdGhhdCBoZWFkZXIuXG4gICAgaWYgKHRhcmdldCA9PT0gXCJzZXQtY29va2llXCIpIHtcbiAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgaGVhZGVycy5nZXRTZXRDb29raWUoKSkgY29uc3VtZXIodmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGhlYWRlcnMuZ2V0KGhlYWRlck5hbWUpO1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkgY29uc3VtZXIodmFsdWUpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpKSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwga2V5LnRvTG93ZXJDYXNlKCkgIT09IHRhcmdldCkgY29udGludWU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdmFsdWUpIGNvbnN1bWVyKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdW1lcih2YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUGFyc2VzIGBDb29raWVgIGhlYWRlciB2YWx1ZXMgaW50byBhIG5hbWUtdG8tdmFsdWUgbWFwIChVUkktZGVjb2RlZCkuXG4gKlxuICogQWNjZXB0czpcbiAqXG4gKiAtIEEgcmF3IGBDb29raWVgIHN0cmluZyAoYFwiYT0xOyBiPTJcImApLlxuICogLSBBbiBhcnJheSBvZiBzdWNoIHN0cmluZ3MgKGUuZy4gbXVsdGlwbGUgYENvb2tpZWAgaGVhZGVycykuXG4gKiAtIEFueSB7QGxpbmsgSGVhZGVyTGlrZX06IGEgV0hBVFdHIGBIZWFkZXJzYCBpbnN0YW5jZSwgYSBoZWFkZXJcbiAqICAgcmVjb3JkLCBvciBhIHJlcXVlc3QtbGlrZSBvYmplY3Qgd2l0aCBhIGBoZWFkZXJzYCBmaWVsZC5cbiAqXG4gKiBGaXJzdCBvY2N1cnJlbmNlIG9mIGVhY2ggY29va2llIG5hbWUgd2luczsgbGF0ZXIgZHVwbGljYXRlcyBhcmUgaWdub3JlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogcGFyc2VDb29raWVzKFwic2Vzc2lvbj1hYmM7IHRoZW1lPWRhcmtcIik7XG4gKiAvLyB7IHNlc3Npb246IFwiYWJjXCIsIHRoZW1lOiBcImRhcmtcIiB9XG4gKlxuICogcGFyc2VDb29raWVzKHJlcSk7ICAgICAgICAgICAgICAvLyBFeHByZXNzIC8gTm9kZVxuICogcGFyc2VDb29raWVzKGMucmVxLnJhdyk7ICAgICAgICAvLyBIb25vXG4gKiBwYXJzZUNvb2tpZXMocmVxdWVzdCk7ICAgICAgICAgIC8vIGZldGNoIFJlcXVlc3RcbiAqIHBhcnNlQ29va2llcyhyZXF1ZXN0LmhlYWRlcnMpOyAgLy8gV0hBVFdHIEhlYWRlcnMgZGlyZWN0bHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29va2llcyhpbnB1dDogSGVhZGVyTGlrZSB8IEhlYWRlclZhbHVlTGlrZSB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgaWYgKGlucHV0ID09IG51bGwpIHJldHVybiB7fTtcbiAgY29uc3Qgb3V0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHBhcnNlQ29va2llU3RyaW5nKGlucHV0LCBvdXQpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaW5wdXQpIHtcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikgcGFyc2VDb29raWVTdHJpbmcoaXRlbSwgb3V0KTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGZvckVhY2hIZWFkZXJWYWx1ZShpbnB1dCwgXCJjb29raWVcIiwgKHZhbHVlKSA9PiB7XG4gICAgcGFyc2VDb29raWVTdHJpbmcodmFsdWUsIG91dCk7XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIEJ1aWxkIGFuIGBFcnJvcmAgZGVzY3JpYmluZyBhIGZhaWxlZCBgZmV0Y2hgIHJlc3BvbnNlOiBzdGF0dXMgbGluZSxcbiAqIHRoZSBVUkwocykgaW52b2x2ZWQgKHRoZSByZXF1ZXN0ZWQgYHVybGAgYW5kIHRoZSBmaW5hbCBgcmVzcG9uc2UudXJsYFxuICogYWZ0ZXIgcmVkaXJlY3RzLCBkZS1kdXBsaWNhdGVkKSwgYW5kIGEgdHJ1bmNhdGVkIHNuYXBzaG90IG9mIHRoZVxuICogcmVzcG9uc2UgYm9keS4gUmVhZHMgdGhlIGJvZHkgZGVmZW5zaXZlbHkgLSBhIGJvZHkgdGhhdCBjYW4ndCBiZSByZWFkXG4gKiBpcyBzaW1wbHkgb21pdHRlZC4gQ2FsbCBvbmx5IG9uIGEgbm9uLWBva2AgcmVzcG9uc2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVGZXRjaEVycm9yKHJlc3BvbnNlOiBSZXNwb25zZSwgdXJsPzogc3RyaW5nKTogUHJvbWlzZTxFcnJvcj4ge1xuICBsZXQgYm9keSA9IFwiXCI7XG4gIHRyeSB7XG4gICAgYm9keSA9IChhd2FpdCByZXNwb25zZS50ZXh0KCkpLnRyaW0oKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gaWdub3JlXG4gIH1cbiAgaWYgKGJvZHkubGVuZ3RoID4gMV8wMDApIHtcbiAgICBib2R5ID0gYCR7Ym9keS5zbGljZSgwLCAxXzAwMCl94oCmYDtcbiAgfVxuICBjb25zdCB1cmxTdW1tYXJ5ID0gWy4uLm5ldyBTZXQoW3VybCwgcmVzcG9uc2UudXJsXS5maWx0ZXIoQm9vbGVhbikpXS5qb2luKFwiIC0+IFwiKTtcbiAgcmV0dXJuIG5ldyBFcnJvcihcbiAgICBbXG4gICAgICBgUmVxdWVzdCBmYWlsZWQuYCxcbiAgICAgIGAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWAsXG4gICAgICBgJHt1cmxTdW1tYXJ5fWAsXG4gICAgICBib2R5ICYmIGBSZXNwb25zZTpcXG4ke2JvZHl9YCxcbiAgICBdXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAuam9pbihcIlxcblwiKSxcbiAgKTtcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBQcml2YXRlIGhlbHBlcnNcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgZm9yIFdIQVRXRyBgSGVhZGVyc2AuIER1Y2stdHlwZXMgb24gdGhlIHR3byBtZXRob2RzIHRoYXRcbiAqIG1hdHRlciB0byB0aGlzIG1vZHVsZSAoYGdldGAgYW5kIGBnZXRTZXRDb29raWVgKSBzbyBwb2x5ZmlsbGVkXG4gKiBpbXBsZW1lbnRhdGlvbnMgYW5kIEhvbm8ncyBgSG9ub0hlYWRlcnNgIGFyZSBhY2NlcHRlZCB3aXRob3V0XG4gKiBwdWxsaW5nIGBIZWFkZXJzYCBpbiBhcyBhIGhhcmQgZGVwZW5kZW5jeS5cbiAqL1xuZnVuY3Rpb24gaXNIZWFkZXJzKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgSGVhZGVycyB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICB0eXBlb2YgKHZhbHVlIGFzIEhlYWRlcnMpLmdldCA9PT0gXCJmdW5jdGlvblwiICYmXG4gICAgdHlwZW9mICh2YWx1ZSBhcyBIZWFkZXJzKS5nZXRTZXRDb29raWUgPT09IFwiZnVuY3Rpb25cIlxuICApO1xufVxuXG4vKipcbiAqIGBIZWFkZXJSZWNvcmRgIGlzIGFuIGluZGV4IHNpZ25hdHVyZSwgc28gYFwiaGVhZGVyc1wiIGluIGlucHV0YCBjYW5ub3RcbiAqIGRpc2NyaW1pbmF0ZSBpdCBmcm9tIHRoZSB3cmFwcGVkIGB7IGhlYWRlcnMgfWAgc2hhcGUgYXQgdGhlIHR5cGVcbiAqIGxldmVsLiBUaGlzIGd1YXJkIGluc3BlY3RzIHRoZSBydW50aW1lIHZhbHVlIG9mIGBoZWFkZXJzYDogb25seVxuICogb2JqZWN0cyAoYEhlYWRlcnNgIG9yIGEgbmVzdGVkIHJlY29yZCkgcXVhbGlmeSBhcyB0aGUgd3JhcHBlciBzaGFwZSxcbiAqIG5ldmVyIHN0cmF5IHN0cmluZy9hcnJheSB2YWx1ZXMgdGhhdCBoYXBwZW4gdG8gbGl2ZSB1bmRlciBhIGBoZWFkZXJzYFxuICoga2V5IG9uIGEgaGVhZGVyIHJlY29yZC5cbiAqL1xuZnVuY3Rpb24gaXNXcmFwcGVkKFxuICBpbnB1dDogSGVhZGVyUmVjb3JkIHwgeyBoZWFkZXJzOiBIZWFkZXJzIHwgSGVhZGVyUmVjb3JkIH0sXG4pOiBpbnB1dCBpcyB7IGhlYWRlcnM6IEhlYWRlcnMgfCBIZWFkZXJSZWNvcmQgfSB7XG4gIGNvbnN0IGhlYWRlcnMgPSAoaW5wdXQgYXMgeyBoZWFkZXJzPzogdW5rbm93biB9KS5oZWFkZXJzO1xuICByZXR1cm4gaGVhZGVycyAhPSBudWxsICYmIHR5cGVvZiBoZWFkZXJzID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KGhlYWRlcnMpO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgc2luZ2xlIGBDb29raWVgLXN0eWxlIGhlYWRlciBzdHJpbmcgKGBcImE9MTsgYj0yXCJgKSBpbnRvXG4gKiBgb3V0YC4gTmFtZXMgd2l0aG91dCBhIHZhbHVlIGFyZSBza2lwcGVkOyBmaXJzdCBvY2N1cnJlbmNlIHdpbnMgc29cbiAqIGxhdGVyIGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQuIENvb2tpZSB2YWx1ZXMgYXJlIFVSSS1kZWNvZGVkLlxuICovXG5mdW5jdGlvbiBwYXJzZUNvb2tpZVN0cmluZyhpbnB1dDogc3RyaW5nLCBvdXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBwYXJ0IG9mIGlucHV0LnNwbGl0KFwiO1wiKSkge1xuICAgIGNvbnN0IGVxID0gcGFydC5pbmRleE9mKFwiPVwiKTtcbiAgICBpZiAoZXEgPCAwKSBjb250aW51ZTtcbiAgICBjb25zdCBuYW1lID0gcGFydC5zbGljZSgwLCBlcSkudHJpbSgpO1xuICAgIGlmICghbmFtZSB8fCBuYW1lIGluIG91dCkgY29udGludWU7XG4gICAgY29uc3QgcmF3ID0gcGFydC5zbGljZShlcSArIDEpLnRyaW0oKTtcbiAgICBvdXRbbmFtZV0gPSBkZWNvZGVVUklDb21wb25lbnQocmF3KTtcbiAgfVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIHtAbGluayBIZWFkZXJMaWtlfSBpbnB1dCBkb3duIHRvIGVpdGhlciBhIGBIZWFkZXJzYFxuICogaW5zdGFuY2Ugb3IgYSBoZWFkZXIgYFJlY29yZGAuIFJldHVybnMgYG51bGxgIGZvciBtaXNzaW5nIGlucHV0IHNvXG4gKiBjYWxsZXJzIGNhbiBzaG9ydC1jaXJjdWl0IHdpdGhvdXQgYSBzZXBhcmF0ZSBudWxsaXNoIGNoZWNrLlxuICovXG5mdW5jdGlvbiB1bndyYXAoaW5wdXQ6IEhlYWRlckxpa2UgfCBudWxsIHwgdW5kZWZpbmVkKTogSGVhZGVycyB8IEhlYWRlclJlY29yZCB8IG51bGwge1xuICBpZiAoaW5wdXQgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gIGlmIChpc0hlYWRlcnMoaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIGlmIChpc1dyYXBwZWQoaW5wdXQpKSByZXR1cm4gaW5wdXQuaGVhZGVycztcbiAgcmV0dXJuIGlucHV0O1xufVxuIl19
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBNEJILG1FQUFtRTtBQUNuRSxpQkFBaUI7QUFDakIsbUVBQW1FO0FBRW5FOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLEtBQW9DLEVBQ3BDLFVBQWtCLEVBQ2xCLFFBQWlDO0lBRWpDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsT0FBTztRQUFFLE9BQU87SUFFckIsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRXhDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdkIsZ0VBQWdFO1FBQ2hFLCtEQUErRDtRQUMvRCwrREFBK0Q7UUFDL0Qsc0RBQXNEO1FBQ3RELElBQUksTUFBTSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQzVCLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRTtnQkFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUQsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLElBQUksS0FBSyxLQUFLLElBQUk7WUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsT0FBTztJQUNULENBQUM7SUFFRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ25ELElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTTtZQUFFLFNBQVM7UUFDNUQsSUFBSSxLQUFLLENBQUMs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cmVhZGVycyBmb3IgSFRUUCByZXF1ZXN0cywgc2hhcmVkIGFjcm9zcyBBcHBLaXRcbiAqIHBsdWdpbnM6IGhlYWRlciBhbmQgY29va2llIGV4dHJhY3Rpb24uIFdvcmtzIHVuaWZvcm1seSBhY3Jvc3NcbiAqIEV4cHJlc3MsIE5vZGUgYEluY29taW5nTWVzc2FnZWAsIFdIQVRXRyBgUmVxdWVzdGAgLyBgUmVzcG9uc2VgIC9cbiAqIGBIZWFkZXJzYCwgSG9ubywgYW5kIGFueSBvYmplY3QgdGhhdCBleHBvc2VzIGEgYGhlYWRlcnNgIGZpZWxkIG9mIG9uZVxuICogb2YgdGhvc2Ugc2hhcGVzLiBEZXBlbmRlbmN5LWZyZWUgYW5kIGJyb3dzZXItc2FmZSBzbyBpdCBjYW4gcnVuIGluXG4gKiBlaXRoZXIgYSBzZXJ2ZXIgb3IgYSBjbGllbnQgYnVuZGxlLlxuICpcbiAqIFVSTCBwYXRoIG1hdGNoaW5nIGxpdmVzIG9uIGBuZXQudXJsQnVpbGRlcmAgKGBwYXRoTWF0Y2hlc2ApLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFR5cGVzXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBBbnl0aGluZyB0aGF0IGNvbnRhaW5zIEhUVFAgaGVhZGVycy4gQWNjZXB0czpcbiAqXG4gKiAtIEEgV0hBVFdHIGBIZWFkZXJzYCBpbnN0YW5jZSAoZmV0Y2ggLyB1bmRpY2kgLyBIb25vIGBjLnJlcS5yYXcuaGVhZGVyc2ApLlxuICogLSBBIGhlYWRlciByZWNvcmQgKGBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD5gKSxcbiAqICAgTm9kZSAvIEV4cHJlc3Mgc3R5bGUuXG4gKiAtIEFueSBvYmplY3Qgd2l0aCBhIGBoZWFkZXJzYCBmaWVsZCBvZiBvbmUgb2YgdGhlIGFib3ZlLiBUaGlzIGNvdmVyc1xuICogICBFeHByZXNzIGByZXFgLCBOb2RlIGBJbmNvbWluZ01lc3NhZ2VgLCBXSEFUV0cgYFJlcXVlc3RgIC8gYFJlc3BvbnNlYCxcbiAqICAgSG9ubyBgYy5yZXEucmF3YCwgYW5kIHNpbWlsYXIgc2hhcGVzLlxuICovXG5leHBvcnQgdHlwZSBIZWFkZXJMaWtlID0gSGVhZGVycyB8IEhlYWRlclJlY29yZCB8IHsgaGVhZGVyczogSGVhZGVycyB8IEhlYWRlclJlY29yZCB9O1xuXG4vKipcbiAqIFNpbmdsZSBoZWFkZXIgdmFsdWUgYXMgZXhwb3NlZCBieSBOb2RlIGBJbmNvbWluZ01lc3NhZ2UuaGVhZGVyc2AgYW5kXG4gKiBFeHByZXNzIGByZXEuaGVhZGVyc2AgKHN0cmluZyBmb3IgbW9zdCBoZWFkZXJzLCBhcnJheSBmb3IgcmVwZWF0ZWRcbiAqIGhlYWRlcnMgc3VjaCBhcyBgU2V0LUNvb2tpZWApLlxuICovXG50eXBlIEhlYWRlclZhbHVlTGlrZSA9IHN0cmluZ1tdIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4vKiogSGVhZGVyIGJhZyB3aXRoIGNhc2UtaW5zZW5zaXRpdmUga2V5cyAoTm9kZSAvIEV4cHJlc3Mgc3R5bGUpLiAqL1xudHlwZSBIZWFkZXJSZWNvcmQgPSBSZWNvcmQ8c3RyaW5nLCBIZWFkZXJWYWx1ZUxpa2U+O1xuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEhlYWRlciBoZWxwZXJzXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBJbnZva2VzIGBjb25zdW1lcmAgb25jZSBwZXIgdmFsdWUgZm9yIGBoZWFkZXJOYW1lYCwgY2FzZS1pbnNlbnNpdGl2ZS5cbiAqXG4gKiAtICoqUmVjb3JkIGlucHV0OioqIGlmIHRoZSBmaWVsZCBpcyBhbiBhcnJheSAoZS5nLiByZXBlYXRlZCBgU2V0LUNvb2tpZWApLFxuICogICBgY29uc3VtZXJgIHJ1bnMgb25jZSBwZXIgYXJyYXkgaXRlbS5cbiAqIC0gKipgSGVhZGVyc2AgaW5wdXQ6KiogdXNlcyBgZ2V0KG5hbWUpYCAod2hpY2ggc3BlYy1qb2lucyByZXBlYXRzIHdpdGhcbiAqICAgYCwgYCkgZXhjZXB0IGZvciBgU2V0LUNvb2tpZWAsIHdoaWNoIHVzZXMgYGdldFNldENvb2tpZSgpYCBzbyBlYWNoXG4gKiAgIGNvb2tpZSBpcyBkZWxpdmVyZWQgc2VwYXJhdGVseS5cbiAqXG4gKiBAZXhhbXBsZVxuICogZm9yRWFjaEhlYWRlclZhbHVlKHJlcSwgXCJ4LXRyYWNlLWlkXCIsICh2KSA9PiBzcGFucy5wdXNoKHYpKTsgICAgIC8vIEV4cHJlc3NcbiAqIGZvckVhY2hIZWFkZXJWYWx1ZShjLnJlcS5yYXcsIFwic2V0LWNvb2tpZVwiLCAodikgPT4gbG9nKHYpKTsgICAgICAvLyBIb25vXG4gKiBmb3JFYWNoSGVhZGVyVmFsdWUoaGVhZGVyc0luc3RhbmNlLCBcImNvb2tpZVwiLCBwYXJzZSk7ICAgICAgICAgICAgLy8gZmV0Y2hcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvckVhY2hIZWFkZXJWYWx1ZShcbiAgaW5wdXQ6IEhlYWRlckxpa2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBoZWFkZXJOYW1lOiBzdHJpbmcsXG4gIGNvbnN1bWVyOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCxcbik6IHZvaWQge1xuICBjb25zdCBoZWFkZXJzID0gdW53cmFwKGlucHV0KTtcbiAgaWYgKCFoZWFkZXJzKSByZXR1cm47XG5cbiAgY29uc3QgdGFyZ2V0ID0gaGVhZGVyTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChpc0hlYWRlcnMoaGVhZGVycykpIHtcbiAgICAvLyBgSGVhZGVycy5nZXRgIGpvaW5zIHJlcGVhdGVkIHZhbHVlcyB3aXRoIGAsIGAgcGVyIHNwZWMsIHdoaWNoXG4gICAgLy8gbWFuZ2xlcyBgU2V0LUNvb2tpZWAgKGNvb2tpZXMgbGVnaXRpbWF0ZWx5IGNvbnRhaW4gY29tbWFzIGluXG4gICAgLy8gdGhlaXIgYGV4cGlyZXM9YCBhdHRyaWJ1dGUpLiBgZ2V0U2V0Q29va2llYCBpcyB0aGUgZGVkaWNhdGVkXG4gICAgLy8gc3BsaXR0ZXIgYW5kIGlzIHRoZSBvbmx5IHNhZmUgcGF0aCBmb3IgdGhhdCBoZWFkZXIuXG4gICAgaWYgKHRhcmdldCA9PT0gXCJzZXQtY29va2llXCIpIHtcbiAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgaGVhZGVycy5nZXRTZXRDb29raWUoKSkgY29uc3VtZXIodmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGhlYWRlcnMuZ2V0KGhlYWRlck5hbWUpO1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkgY29uc3VtZXIodmFsdWUpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpKSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwga2V5LnRvTG93ZXJDYXNlKCkgIT09IHRhcmdldCkgY29udGludWU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdmFsdWUpIGNvbnN1bWVyKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdW1lcih2YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUGFyc2VzIGBDb29raWVgIGhlYWRlciB2YWx1ZXMgaW50byBhIG5hbWUtdG8tdmFsdWUgbWFwIChVUkktZGVjb2RlZCkuXG4gKlxuICogQWNjZXB0czpcbiAqXG4gKiAtIEEgcmF3IGBDb29raWVgIHN0cmluZyAoYFwiYT0xOyBiPTJcImApLlxuICogLSBBbiBhcnJheSBvZiBzdWNoIHN0cmluZ3MgKGUuZy4gbXVsdGlwbGUgYENvb2tpZWAgaGVhZGVycykuXG4gKiAtIEFueSB7QGxpbmsgSGVhZGVyTGlrZX06IGEgV0hBVFdHIGBIZWFkZXJzYCBpbnN0YW5jZSwgYSBoZWFkZXJcbiAqICAgcmVjb3JkLCBvciBhIHJlcXVlc3QtbGlrZSBvYmplY3Qgd2l0aCBhIGBoZWFkZXJzYCBmaWVsZC5cbiAqXG4gKiBGaXJzdCBvY2N1cnJlbmNlIG9mIGVhY2ggY29va2llIG5hbWUgd2luczsgbGF0ZXIgZHVwbGljYXRlcyBhcmUgaWdub3JlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogcGFyc2VDb29raWVzKFwic2Vzc2lvbj1hYmM7IHRoZW1lPWRhcmtcIik7XG4gKiAvLyB7IHNlc3Npb246IFwiYWJjXCIsIHRoZW1lOiBcImRhcmtcIiB9XG4gKlxuICogcGFyc2VDb29raWVzKHJlcSk7ICAgICAgICAgICAgICAvLyBFeHByZXNzIC8gTm9kZVxuICogcGFyc2VDb29raWVzKGMucmVxLnJhdyk7ICAgICAgICAvLyBIb25vXG4gKiBwYXJzZUNvb2tpZXMocmVxdWVzdCk7ICAgICAgICAgIC8vIGZldGNoIFJlcXVlc3RcbiAqIHBhcnNlQ29va2llcyhyZXF1ZXN0LmhlYWRlcnMpOyAgLy8gV0hBVFdHIEhlYWRlcnMgZGlyZWN0bHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29va2llcyhpbnB1dDogSGVhZGVyTGlrZSB8IEhlYWRlclZhbHVlTGlrZSB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgaWYgKGlucHV0ID09IG51bGwpIHJldHVybiB7fTtcbiAgY29uc3Qgb3V0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHBhcnNlQ29va2llU3RyaW5nKGlucHV0LCBvdXQpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaW5wdXQpIHtcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikgcGFyc2VDb29raWVTdHJpbmcoaXRlbSwgb3V0KTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGZvckVhY2hIZWFkZXJWYWx1ZShpbnB1dCwgXCJjb29raWVcIiwgKHZhbHVlKSA9PiB7XG4gICAgcGFyc2VDb29raWVTdHJpbmcodmFsdWUsIG91dCk7XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIEJ1aWxkIGFuIGBFcnJvcmAgZGVzY3JpYmluZyBhIGZhaWxlZCBgZmV0Y2hgIHJlc3BvbnNlOiBzdGF0dXMgbGluZSxcbiAqIHRoZSBVUkwocykgaW52b2x2ZWQgKHRoZSByZXF1ZXN0ZWQgYHVybGAgYW5kIHRoZSBmaW5hbCBgcmVzcG9uc2UudXJsYFxuICogYWZ0ZXIgcmVkaXJlY3RzLCBkZS1kdXBsaWNhdGVkKSwgYW5kIGEgdHJ1bmNhdGVkIHNuYXBzaG90IG9mIHRoZVxuICogcmVzcG9uc2UgYm9keS4gUmVhZHMgdGhlIGJvZHkgZGVmZW5zaXZlbHkgLSBhIGJvZHkgdGhhdCBjYW4ndCBiZSByZWFkXG4gKiBpcyBzaW1wbHkgb21pdHRlZC4gQ2FsbCBvbmx5IG9uIGEgbm9uLWBva2AgcmVzcG9uc2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVGZXRjaEVycm9yKHJlc3BvbnNlOiBSZXNwb25zZSwgdXJsPzogc3RyaW5nKTogUHJvbWlzZTxFcnJvcj4ge1xuICBsZXQgYm9keSA9IFwiXCI7XG4gIHRyeSB7XG4gICAgYm9keSA9IChhd2FpdCByZXNwb25zZS50ZXh0KCkpLnRyaW0oKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gaWdub3JlXG4gIH1cbiAgaWYgKGJvZHkubGVuZ3RoID4gMV8wMDApIHtcbiAgICBib2R5ID0gYCR7Ym9keS5zbGljZSgwLCAxXzAwMCl94oCmYDtcbiAgfVxuICBjb25zdCB1cmxTdW1tYXJ5ID0gWy4uLm5ldyBTZXQoW3VybCwgcmVzcG9uc2UudXJsXS5maWx0ZXIoQm9vbGVhbikpXS5qb2luKFwiIC0+IFwiKTtcbiAgcmV0dXJuIG5ldyBFcnJvcihcbiAgICBbXG4gICAgICBgUmVxdWVzdCBmYWlsZWQuYCxcbiAgICAgIGAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWAsXG4gICAgICBgJHt1cmxTdW1tYXJ5fWAsXG4gICAgICBib2R5ICYmIGBSZXNwb25zZTpcXG4ke2JvZHl9YCxcbiAgICBdXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAuam9pbihcIlxcblwiKSxcbiAgKTtcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBQcml2YXRlIGhlbHBlcnNcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgZm9yIFdIQVRXRyBgSGVhZGVyc2AuIER1Y2stdHlwZXMgb24gdGhlIHR3byBtZXRob2RzIHRoYXRcbiAqIG1hdHRlciB0byB0aGlzIG1vZHVsZSAoYGdldGAgYW5kIGBnZXRTZXRDb29raWVgKSBzbyBwb2x5ZmlsbGVkXG4gKiBpbXBsZW1lbnRhdGlvbnMgYW5kIEhvbm8ncyBgSG9ub0hlYWRlcnNgIGFyZSBhY2NlcHRlZCB3aXRob3V0XG4gKiBwdWxsaW5nIGBIZWFkZXJzYCBpbiBhcyBhIGhhcmQgZGVwZW5kZW5jeS5cbiAqL1xuZnVuY3Rpb24gaXNIZWFkZXJzKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgSGVhZGVycyB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICB0eXBlb2YgKHZhbHVlIGFzIEhlYWRlcnMpLmdldCA9PT0gXCJmdW5jdGlvblwiICYmXG4gICAgdHlwZW9mICh2YWx1ZSBhcyBIZWFkZXJzKS5nZXRTZXRDb29raWUgPT09IFwiZnVuY3Rpb25cIlxuICApO1xufVxuXG4vKipcbiAqIGBIZWFkZXJSZWNvcmRgIGlzIGFuIGluZGV4IHNpZ25hdHVyZSwgc28gYFwiaGVhZGVyc1wiIGluIGlucHV0YCBjYW5ub3RcbiAqIGRpc2NyaW1pbmF0ZSBpdCBmcm9tIHRoZSB3cmFwcGVkIGB7IGhlYWRlcnMgfWAgc2hhcGUgYXQgdGhlIHR5cGVcbiAqIGxldmVsLiBUaGlzIGd1YXJkIGluc3BlY3RzIHRoZSBydW50aW1lIHZhbHVlIG9mIGBoZWFkZXJzYDogb25seVxuICogb2JqZWN0cyAoYEhlYWRlcnNgIG9yIGEgbmVzdGVkIHJlY29yZCkgcXVhbGlmeSBhcyB0aGUgd3JhcHBlciBzaGFwZSxcbiAqIG5ldmVyIHN0cmF5IHN0cmluZy9hcnJheSB2YWx1ZXMgdGhhdCBoYXBwZW4gdG8gbGl2ZSB1bmRlciBhIGBoZWFkZXJzYFxuICoga2V5IG9uIGEgaGVhZGVyIHJlY29yZC5cbiAqL1xuZnVuY3Rpb24gaXNXcmFwcGVkKFxuICBpbnB1dDogSGVhZGVyUmVjb3JkIHwgeyBoZWFkZXJzOiBIZWFkZXJzIHwgSGVhZGVyUmVjb3JkIH0sXG4pOiBpbnB1dCBpcyB7IGhlYWRlcnM6IEhlYWRlcnMgfCBIZWFkZXJSZWNvcmQgfSB7XG4gIGNvbnN0IGhlYWRlcnMgPSAoaW5wdXQgYXMgeyBoZWFkZXJzPzogdW5rbm93biB9KS5oZWFkZXJzO1xuICByZXR1cm4gaGVhZGVycyAhPSBudWxsICYmIHR5cGVvZiBoZWFkZXJzID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KGhlYWRlcnMpO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgc2luZ2xlIGBDb29raWVgLXN0eWxlIGhlYWRlciBzdHJpbmcgKGBcImE9MTsgYj0yXCJgKSBpbnRvXG4gKiBgb3V0YC4gTmFtZXMgd2l0aG91dCBhIHZhbHVlIGFyZSBza2lwcGVkOyBmaXJzdCBvY2N1cnJlbmNlIHdpbnMgc29cbiAqIGxhdGVyIGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQuIENvb2tpZSB2YWx1ZXMgYXJlIFVSSS1kZWNvZGVkLlxuICovXG5mdW5jdGlvbiBwYXJzZUNvb2tpZVN0cmluZyhpbnB1dDogc3RyaW5nLCBvdXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBwYXJ0IG9mIGlucHV0LnNwbGl0KFwiO1wiKSkge1xuICAgIGNvbnN0IGVxID0gcGFydC5pbmRleE9mKFwiPVwiKTtcbiAgICBpZiAoZXEgPCAwKSBjb250aW51ZTtcbiAgICBjb25zdCBuYW1lID0gcGFydC5zbGljZSgwLCBlcSkudHJpbSgpO1xuICAgIGlmICghbmFtZSB8fCBuYW1lIGluIG91dCkgY29udGludWU7XG4gICAgY29uc3QgcmF3ID0gcGFydC5zbGljZShlcSArIDEpLnRyaW0oKTtcbiAgICBvdXRbbmFtZV0gPSBkZWNvZGVVUklDb21wb25lbnQocmF3KTtcbiAgfVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIHtAbGluayBIZWFkZXJMaWtlfSBpbnB1dCBkb3duIHRvIGVpdGhlciBhIGBIZWFkZXJzYFxuICogaW5zdGFuY2Ugb3IgYSBoZWFkZXIgYFJlY29yZGAuIFJldHVybnMgYG51bGxgIGZvciBtaXNzaW5nIGlucHV0IHNvXG4gKiBjYWxsZXJzIGNhbiBzaG9ydC1jaXJjdWl0IHdpdGhvdXQgYSBzZXBhcmF0ZSBudWxsaXNoIGNoZWNrLlxuICovXG5mdW5jdGlvbiB1bndyYXAoaW5wdXQ6IEhlYWRlckxpa2UgfCBudWxsIHwgdW5kZWZpbmVkKTogSGVhZGVycyB8IEhlYWRlclJlY29yZCB8IG51bGwge1xuICBpZiAoaW5wdXQgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gIGlmIChpc0hlYWRlcnMoaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIGlmIChpc1dyYXBwZWQoaW5wdXQpKSByZXR1cm4gaW5wdXQuaGVhZGVycztcbiAgcmV0dXJuIGlucHV0O1xufVxuIl19
package/lib/src/net.d.ts CHANGED
@@ -16,8 +16,10 @@
16
16
  * @module
17
17
  */
18
18
  import type { NonFunctionKeys } from "./object.ts";
19
+ /** Highest valid TCP port number. */
20
+ export declare const MAX_TCP_PORT = 65535;
19
21
  /**
20
- * Anything {@link urlBuilder} (and {@link pathMatch}) know how to coerce
22
+ * Anything {@link urlBuilder} knows how to coerce
21
23
  * into a URL:
22
24
  *
23
25
  * - A string: a host, a full URL, or a path / query / hash fragment.
@@ -122,18 +124,6 @@ export declare function urlBuilder(): UrlBuilder;
122
124
  * urlBuilder(); // http://localhost/
123
125
  */
124
126
  export declare function urlBuilder(input?: UrlLike): UrlBuilder | undefined;
125
- /**
126
- * Convenience wrapper over {@link UrlBuilder.pathMatches}: coerce
127
- * `input` via {@link urlBuilder} and test its pathname against `path`.
128
- * Returns `false` for input that can't be parsed into a URL.
129
- *
130
- * @example
131
- * pathMatch("/api/cool?q=1", "/api"); // true
132
- * pathMatch("/apicool", "/api"); // false
133
- * pathMatch("https://host/api", "/api"); // true
134
- * pathMatch(request, "/api/v2"); // fetch Request
135
- */
136
- export declare function pathMatch(input: UrlLike, path: string): boolean;
137
127
  /** Options for {@link parseEmails}. */
138
128
  export interface ParseEmailsOptions {
139
129
  /** Lower-case every address (useful for allow-lists / matching). Off by default. */