@thisisagile/easy 18.6.0 → 18.7.0
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/{chunk-34COXZ5A.mjs → chunk-5N6Q7OXJ.mjs} +3 -3
- package/dist/{chunk-ZBVKM7WT.mjs → chunk-63DTRTSC.mjs} +4 -8
- package/dist/{chunk-ZBVKM7WT.mjs.map → chunk-63DTRTSC.mjs.map} +1 -1
- package/dist/{chunk-U3NVU37K.mjs → chunk-6PMTGQVO.mjs} +3 -3
- package/dist/{chunk-ISRJB7Z4.mjs → chunk-6YTIRHPN.mjs} +4 -6
- package/dist/{chunk-ISRJB7Z4.mjs.map → chunk-6YTIRHPN.mjs.map} +1 -1
- package/dist/{chunk-KXNGKB2N.mjs → chunk-7TW4TBFN.mjs} +8 -16
- package/dist/{chunk-KXNGKB2N.mjs.map → chunk-7TW4TBFN.mjs.map} +1 -1
- package/dist/{chunk-GOZMSSH5.mjs → chunk-AYR4US3Z.mjs} +2 -2
- package/dist/{chunk-6MBDCDGA.mjs → chunk-B37NZCNW.mjs} +2 -2
- package/dist/{chunk-H73MZAGT.mjs → chunk-FF3BNZ4H.mjs} +3 -5
- package/dist/{chunk-H73MZAGT.mjs.map → chunk-FF3BNZ4H.mjs.map} +1 -1
- package/dist/{chunk-WWYPWYFC.mjs → chunk-FFD2T6YV.mjs} +2 -2
- package/dist/{chunk-GV6NUD6R.mjs → chunk-FSWASMJZ.mjs} +2 -2
- package/dist/{chunk-TRR2LTWJ.mjs → chunk-GF7JYGJU.mjs} +4 -8
- package/dist/{chunk-TRR2LTWJ.mjs.map → chunk-GF7JYGJU.mjs.map} +1 -1
- package/dist/{chunk-LPT6LW5N.mjs → chunk-GKQMIKIY.mjs} +2 -2
- package/dist/{chunk-C6VQGKDB.mjs → chunk-IESVFCB3.mjs} +3 -3
- package/dist/{chunk-JZCNZKGP.mjs → chunk-IYUYA5OX.mjs} +5 -5
- package/dist/{chunk-SW73SKB2.mjs → chunk-J5PB7ZVO.mjs} +4 -6
- package/dist/{chunk-SW73SKB2.mjs.map → chunk-J5PB7ZVO.mjs.map} +1 -1
- package/dist/{chunk-V6TMXDF7.mjs → chunk-JI7MC5EA.mjs} +2 -2
- package/dist/{chunk-GMFUUU3V.mjs → chunk-JM6NAJQ3.mjs} +4 -6
- package/dist/{chunk-GMFUUU3V.mjs.map → chunk-JM6NAJQ3.mjs.map} +1 -1
- package/dist/{chunk-2SE4U4T2.mjs → chunk-JNZUGKMO.mjs} +2 -2
- package/dist/{chunk-MLYUI7R7.mjs → chunk-KPXOQFEB.mjs} +4 -6
- package/dist/{chunk-MLYUI7R7.mjs.map → chunk-KPXOQFEB.mjs.map} +1 -1
- package/dist/{chunk-FAFNTQIS.mjs → chunk-LHDTOERW.mjs} +3 -5
- package/dist/{chunk-FAFNTQIS.mjs.map → chunk-LHDTOERW.mjs.map} +1 -1
- package/dist/{chunk-CFJJ2C6C.mjs → chunk-M2S4OLVZ.mjs} +2 -2
- package/dist/{chunk-SW5NBVHL.mjs → chunk-O4RWZGFC.mjs} +4 -6
- package/dist/{chunk-SW5NBVHL.mjs.map → chunk-O4RWZGFC.mjs.map} +1 -1
- package/dist/{chunk-ZEIIFJDX.mjs → chunk-QBPSI5NM.mjs} +4 -4
- package/dist/{chunk-HBDIZSIE.mjs → chunk-QLEGIYVU.mjs} +3 -5
- package/dist/{chunk-HBDIZSIE.mjs.map → chunk-QLEGIYVU.mjs.map} +1 -1
- package/dist/{chunk-DUYHH6LC.mjs → chunk-QZPBFVZL.mjs} +2 -2
- package/dist/{chunk-YXLGHJ5Q.mjs → chunk-RBJBAJOK.mjs} +2 -2
- package/dist/{chunk-5C5OHGRW.mjs → chunk-RW4AKBCN.mjs} +3 -3
- package/dist/{chunk-5FD5G442.mjs → chunk-SBT3WGBP.mjs} +7 -7
- package/dist/{chunk-USR4ETA7.mjs → chunk-TNIG6FU2.mjs} +2 -2
- package/dist/{chunk-5BGTUK7G.mjs → chunk-TUO7ZPSP.mjs} +540 -104
- package/dist/chunk-TUO7ZPSP.mjs.map +1 -0
- package/dist/{chunk-UATZAAX2.mjs → chunk-WOUH6UVC.mjs} +3 -5
- package/dist/{chunk-UATZAAX2.mjs.map → chunk-WOUH6UVC.mjs.map} +1 -1
- package/dist/{chunk-5MCJXABA.mjs → chunk-XQJ5LQEQ.mjs} +2 -2
- package/dist/{chunk-5JE4QW4E.mjs → chunk-ZBOGLMG2.mjs} +4 -4
- package/dist/{chunk-UGNNHNYX.mjs → chunk-ZRH6FGUK.mjs} +4 -4
- package/dist/{chunk-LCJEJ3LU.mjs → chunk-ZZ73Z5CU.mjs} +2 -2
- package/dist/data/Condition.mjs +5 -4
- package/dist/data/Database.mjs +4 -5
- package/dist/data/Field.mjs +5 -4
- package/dist/data/Field.mjs.map +1 -1
- package/dist/data/InMemoryGateway.mjs +4 -9
- package/dist/data/InMemoryGateway.mjs.map +1 -1
- package/dist/domain/Audit.mjs +8 -13
- package/dist/domain/Child.mjs +5 -10
- package/dist/domain/Child.mjs.map +1 -1
- package/dist/domain/DateTime.mjs +4 -9
- package/dist/domain/Entity.mjs +8 -13
- package/dist/domain/Entity.mjs.map +1 -1
- package/dist/domain/Repo.mjs +7 -14
- package/dist/domain/Repo.mjs.map +1 -1
- package/dist/domain/Struct.mjs +4 -9
- package/dist/domain/Typo.mjs +4 -9
- package/dist/domain/Typo.mjs.map +1 -1
- package/dist/http/CacheControl.mjs +6 -12
- package/dist/http/CacheControl.mjs.map +1 -1
- package/dist/http/ContentType.mjs +4 -5
- package/dist/http/HttpStatus.mjs +4 -5
- package/dist/http/HttpVerb.mjs +4 -5
- package/dist/http/LocalRequestStore.mjs +2 -7
- package/dist/http/LocalRequestStore.mjs.map +1 -1
- package/dist/http/RequestOptions.mjs +4 -9
- package/dist/http/RestResult.mjs +4 -9
- package/dist/http/toResponse.mjs +5 -10
- package/dist/index.js +528 -523
- package/dist/index.js.map +1 -1
- package/dist/process/App.mjs +3 -8
- package/dist/process/App.mjs.map +1 -1
- package/dist/process/Manage.mjs +4 -9
- package/dist/process/Manage.mjs.map +1 -1
- package/dist/process/Scope.mjs +3 -8
- package/dist/process/Search.mjs +4 -9
- package/dist/process/UseCase.mjs +5 -12
- package/dist/process/UseCase.mjs.map +1 -1
- package/dist/resources/Req.mjs +4 -9
- package/dist/resources/Req.mjs.map +1 -1
- package/dist/services/Api.mjs +12 -17
- package/dist/services/ApiGateway.mjs +15 -20
- package/dist/services/AxiosProvider.mjs +10 -15
- package/dist/services/MappedRouteGateway.mjs +18 -23
- package/dist/services/MappedRouteGateway.mjs.map +1 -1
- package/dist/services/RouteGateway.mjs +16 -21
- package/dist/services/ViewRouteGateway.mjs +18 -24
- package/dist/services/ViewRouteGateway.mjs.map +1 -1
- package/dist/sql/Column.mjs +3 -8
- package/dist/sql/Count.mjs +6 -4
- package/dist/sql/Delete.mjs +5 -3
- package/dist/sql/Insert.mjs +5 -3
- package/dist/sql/Select.mjs +5 -3
- package/dist/sql/SqlQuery.mjs +4 -2
- package/dist/sql/Table.mjs +13 -18
- package/dist/sql/Table.mjs.map +1 -1
- package/dist/sql/TableGateway.mjs +5 -11
- package/dist/sql/TableGateway.mjs.map +1 -1
- package/dist/sql/Update.mjs +5 -3
- package/dist/types/Cache.mjs +3 -3
- package/dist/types/CacheAge.mjs +4 -9
- package/dist/types/Case.mjs +2 -7
- package/dist/types/Context.mjs +2 -7
- package/dist/types/Enum.mjs +3 -4
- package/dist/types/Environment.mjs +3 -4
- package/dist/types/Environment.mjs.map +1 -1
- package/dist/types/Exception.mjs +2 -7
- package/dist/types/Gateway.mjs +3 -8
- package/dist/types/IsEqual.mjs +2 -8
- package/dist/types/Json.mjs +4 -3
- package/dist/types/List.mjs +3 -1
- package/dist/types/Meta.mjs +3 -3
- package/dist/types/Number.mjs +3 -8
- package/dist/types/Object.mjs +3 -2
- package/dist/types/PageList.mjs +3 -8
- package/dist/types/Parser.mjs +2 -7
- package/dist/types/Parser.mjs.map +1 -1
- package/dist/types/Repository.mjs +3 -8
- package/dist/types/Result.mjs +2 -7
- package/dist/types/Results.mjs +2 -7
- package/dist/types/Tag.mjs +3 -3
- package/dist/types/Template.mjs +2 -7
- package/dist/types/ToText.mjs +2 -7
- package/dist/types/Try.mjs +2 -7
- package/dist/types/Uri.mjs +5 -13
- package/dist/types/Uri.mjs.map +1 -1
- package/dist/utils/If.d.ts +2 -0
- package/dist/utils/If.mjs +5 -1
- package/dist/utils/Mapper.mjs +5 -5
- package/dist/utils/Period.mjs +4 -9
- package/dist/utils/Period.mjs.map +1 -1
- package/dist/utils/Promise.mjs +3 -3
- package/dist/utils/Seconds.mjs +4 -2
- package/dist/utils/Sentence.mjs +2 -7
- package/dist/utils/Sentence.mjs.map +1 -1
- package/dist/utils/View.mjs +5 -11
- package/dist/validation/Contraints.mjs +3 -8
- package/dist/validation/Validate.mjs +2 -7
- package/dist/validation/When.mjs +2 -7
- package/package.json +1 -1
- package/src/utils/If.ts +7 -0
- package/dist/chunk-2PL5VUHT.mjs +0 -37
- package/dist/chunk-2PL5VUHT.mjs.map +0 -1
- package/dist/chunk-5BGTUK7G.mjs.map +0 -1
- package/dist/chunk-5FAZA55F.mjs +0 -58
- package/dist/chunk-5FAZA55F.mjs.map +0 -1
- package/dist/chunk-7A3RM67L.mjs +0 -68
- package/dist/chunk-7A3RM67L.mjs.map +0 -1
- package/dist/chunk-AJZIKJEC.mjs +0 -54
- package/dist/chunk-AJZIKJEC.mjs.map +0 -1
- package/dist/chunk-AQXV7L65.mjs +0 -310
- package/dist/chunk-AQXV7L65.mjs.map +0 -1
- package/dist/chunk-DC5HIBQG.mjs +0 -23
- package/dist/chunk-DC5HIBQG.mjs.map +0 -1
- /package/dist/{chunk-34COXZ5A.mjs.map → chunk-5N6Q7OXJ.mjs.map} +0 -0
- /package/dist/{chunk-U3NVU37K.mjs.map → chunk-6PMTGQVO.mjs.map} +0 -0
- /package/dist/{chunk-GOZMSSH5.mjs.map → chunk-AYR4US3Z.mjs.map} +0 -0
- /package/dist/{chunk-6MBDCDGA.mjs.map → chunk-B37NZCNW.mjs.map} +0 -0
- /package/dist/{chunk-WWYPWYFC.mjs.map → chunk-FFD2T6YV.mjs.map} +0 -0
- /package/dist/{chunk-GV6NUD6R.mjs.map → chunk-FSWASMJZ.mjs.map} +0 -0
- /package/dist/{chunk-LPT6LW5N.mjs.map → chunk-GKQMIKIY.mjs.map} +0 -0
- /package/dist/{chunk-C6VQGKDB.mjs.map → chunk-IESVFCB3.mjs.map} +0 -0
- /package/dist/{chunk-JZCNZKGP.mjs.map → chunk-IYUYA5OX.mjs.map} +0 -0
- /package/dist/{chunk-V6TMXDF7.mjs.map → chunk-JI7MC5EA.mjs.map} +0 -0
- /package/dist/{chunk-2SE4U4T2.mjs.map → chunk-JNZUGKMO.mjs.map} +0 -0
- /package/dist/{chunk-CFJJ2C6C.mjs.map → chunk-M2S4OLVZ.mjs.map} +0 -0
- /package/dist/{chunk-ZEIIFJDX.mjs.map → chunk-QBPSI5NM.mjs.map} +0 -0
- /package/dist/{chunk-DUYHH6LC.mjs.map → chunk-QZPBFVZL.mjs.map} +0 -0
- /package/dist/{chunk-YXLGHJ5Q.mjs.map → chunk-RBJBAJOK.mjs.map} +0 -0
- /package/dist/{chunk-5C5OHGRW.mjs.map → chunk-RW4AKBCN.mjs.map} +0 -0
- /package/dist/{chunk-5FD5G442.mjs.map → chunk-SBT3WGBP.mjs.map} +0 -0
- /package/dist/{chunk-USR4ETA7.mjs.map → chunk-TNIG6FU2.mjs.map} +0 -0
- /package/dist/{chunk-5MCJXABA.mjs.map → chunk-XQJ5LQEQ.mjs.map} +0 -0
- /package/dist/{chunk-5JE4QW4E.mjs.map → chunk-ZBOGLMG2.mjs.map} +0 -0
- /package/dist/{chunk-UGNNHNYX.mjs.map → chunk-ZRH6FGUK.mjs.map} +0 -0
- /package/dist/{chunk-LCJEJ3LU.mjs.map → chunk-ZZ73Z5CU.mjs.map} +0 -0
package/dist/types/Uri.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/Uri.ts"],"sourcesContent":["import { isBoolean, isNotEmpty, isTrue } from './Is';\nimport { asString, Text } from './Text';\nimport { toName } from './Constructor';\nimport { ctx } from './Context';\nimport { List, toList } from './List';\nimport { meta } from './Meta';\nimport { tryTo } from './Try';\nimport { Optional } from './Types';\nimport { OneOrMore, toArray } from './Array';\nimport { entries } from './Object';\n\nexport type Segment = Text & { key?: string; segment?: string; query?: (value: unknown) => string };\n\nexport const toSegment = (\n key?: Text,\n {\n segment,\n query,\n }: {\n segment?: string;\n query?: (value: unknown) => string;\n } = {}\n): Segment => ({\n key: key as string,\n segment,\n query,\n toString: () => asString(key),\n});\n\nexport const uri = {\n host: (key?: string): Segment => toSegment(key, { segment: key ?? ctx.env.host ?? '$host' }),\n resource: <Props extends UriExpandProps>(resource: Uri<Props>): Segment => toSegment(toName(resource, 'Uri'), { segment: toName(resource, 'Uri') }),\n segment: (key?: Text): Segment => toSegment(key, { segment: key as string }),\n path: (key: Text): Segment => toSegment(key, { segment: `:${key}` }),\n query: (key: Text): Segment =>\n toSegment(key, {\n query: (value: unknown): string =>\n tryTo(value)\n .is.defined()\n .map(v => encodeURIComponent(asString(v)))\n .map(v => `${key}=${v}`)\n .orElse('') ?? '',\n }),\n boolean: (key: Text): Segment => toSegment(key, { query: (value: unknown): string => (isTrue(value) ? `${key}` : '') }),\n};\n\ntype Prop = { segment: Segment; value: any };\n\nconst toRoute = (...segments: Segment[]): string =>\n toList(segments)\n .mapDefined(s => s.segment)\n .join('/');\n\nexport type Uri<Props extends UriExpandProps = UriExpandProps> = {\n id: (id?: unknown) => Uri<Props>;\n ids: (ids: OneOrMore<unknown>) => Uri<Props>;\n query: (q?: unknown) => Uri<Props>;\n sort: (q?: any) => Uri<Props>;\n skip: (n?: number) => Uri<Props>;\n take: (n?: number) => Uri<Props>;\n path: string;\n route: (resource: string) => string;\n isInternal: boolean;\n toString: () => string;\n expand: (props: Partial<Props>) => Uri<Props>;\n};\n\nexport type UriExpandProps = { q?: string; s?: string; skip?: number; take?: number };\n\nexport class EasyUri<Props extends UriExpandProps = UriExpandProps> implements Uri<Props> {\n static readonly id = uri.path('id');\n static readonly ids = uri.query('ids');\n static readonly query = uri.query('q');\n static readonly sort = uri.query('s');\n static readonly skip = uri.query('skip');\n static readonly take = uri.query('take');\n\n readonly host = uri.host();\n protected resource: Segment = uri.resource(this);\n\n protected state: any = {};\n\n constructor(readonly segments: Segment[] = []) {}\n\n get path(): string {\n return toRoute(uri.segment(''), this.resource, ...this.segments);\n }\n\n get complete(): string {\n return toRoute(this.host, this.resource, ...this.segments);\n }\n\n get isInternal(): boolean {\n return toRoute(this.host) === (ctx.env.host ?? '$host');\n }\n\n protected get props(): List<Prop> {\n return meta(this.state).values<Prop>();\n }\n\n route = (resource: Optional<string> = this.resource.key): string => toRoute(uri.segment(''), uri.segment(resource?.toLowerCase()), ...this.segments);\n\n set = (segment: Segment, value?: unknown): this => {\n tryTo(value)\n .is.defined()\n .accept(value => (this.state[segment.key ?? ''] = { segment, value }));\n return this;\n };\n\n toString(): string {\n return tryTo(() => this.props)\n .map(ps => ps.filter(p => p.segment?.segment))\n .map(ps => ps.reduce((r: string, p: Prop) => r.replace(asString(p.segment.segment), asString(p.value)), this.complete))\n .map(route => ({\n route,\n query: this.props.mapDefined(p => (p.segment?.query ? p.segment?.query(p.value) : undefined))?.join('&'),\n }))\n .map(({ route, query }) => (isNotEmpty(query) ? `${route}?${query}` : route)).value;\n }\n\n id = (id?: unknown): this => this.set(EasyUri.id, id);\n ids = (ids: OneOrMore<unknown>): this => this.set(EasyUri.ids, toArray(ids).join(','));\n query = (q?: unknown): this => this.set(EasyUri.query, q);\n sort = (s?: any): this => this.set(EasyUri.sort, asString(s));\n\n skip = (index?: number): this => this.set(EasyUri.skip, index);\n take = (items?: number): this => this.set(EasyUri.take, items);\n\n expand(props: Partial<Props>): this {\n return entries(props as any)\n .filter(([_, v]) => isNotEmpty(v))\n .reduce((u, [k, v]) => (isBoolean(v) ? u.set(uri.boolean(k), v) : u.set(uri.query(k), toArray(v).join(','))), this);\n }\n}\n\nexport const clipUri = (uri?: EasyUri | string | null): string =>\n tryTo(() => asString(uri))\n .map(uri => uri.replace(/^(https?:\\/\\/)?(www\\.)?/, ''))\n .map(uri => uri.replace(/\\/$/, '')).value;\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/types/Uri.ts"],"sourcesContent":["import { isBoolean, isNotEmpty, isTrue } from './Is';\nimport { asString, Text } from './Text';\nimport { toName } from './Constructor';\nimport { ctx } from './Context';\nimport { List, toList } from './List';\nimport { meta } from './Meta';\nimport { tryTo } from './Try';\nimport { Optional } from './Types';\nimport { OneOrMore, toArray } from './Array';\nimport { entries } from './Object';\n\nexport type Segment = Text & { key?: string; segment?: string; query?: (value: unknown) => string };\n\nexport const toSegment = (\n key?: Text,\n {\n segment,\n query,\n }: {\n segment?: string;\n query?: (value: unknown) => string;\n } = {}\n): Segment => ({\n key: key as string,\n segment,\n query,\n toString: () => asString(key),\n});\n\nexport const uri = {\n host: (key?: string): Segment => toSegment(key, { segment: key ?? ctx.env.host ?? '$host' }),\n resource: <Props extends UriExpandProps>(resource: Uri<Props>): Segment => toSegment(toName(resource, 'Uri'), { segment: toName(resource, 'Uri') }),\n segment: (key?: Text): Segment => toSegment(key, { segment: key as string }),\n path: (key: Text): Segment => toSegment(key, { segment: `:${key}` }),\n query: (key: Text): Segment =>\n toSegment(key, {\n query: (value: unknown): string =>\n tryTo(value)\n .is.defined()\n .map(v => encodeURIComponent(asString(v)))\n .map(v => `${key}=${v}`)\n .orElse('') ?? '',\n }),\n boolean: (key: Text): Segment => toSegment(key, { query: (value: unknown): string => (isTrue(value) ? `${key}` : '') }),\n};\n\ntype Prop = { segment: Segment; value: any };\n\nconst toRoute = (...segments: Segment[]): string =>\n toList(segments)\n .mapDefined(s => s.segment)\n .join('/');\n\nexport type Uri<Props extends UriExpandProps = UriExpandProps> = {\n id: (id?: unknown) => Uri<Props>;\n ids: (ids: OneOrMore<unknown>) => Uri<Props>;\n query: (q?: unknown) => Uri<Props>;\n sort: (q?: any) => Uri<Props>;\n skip: (n?: number) => Uri<Props>;\n take: (n?: number) => Uri<Props>;\n path: string;\n route: (resource: string) => string;\n isInternal: boolean;\n toString: () => string;\n expand: (props: Partial<Props>) => Uri<Props>;\n};\n\nexport type UriExpandProps = { q?: string; s?: string; skip?: number; take?: number };\n\nexport class EasyUri<Props extends UriExpandProps = UriExpandProps> implements Uri<Props> {\n static readonly id = uri.path('id');\n static readonly ids = uri.query('ids');\n static readonly query = uri.query('q');\n static readonly sort = uri.query('s');\n static readonly skip = uri.query('skip');\n static readonly take = uri.query('take');\n\n readonly host = uri.host();\n protected resource: Segment = uri.resource(this);\n\n protected state: any = {};\n\n constructor(readonly segments: Segment[] = []) {}\n\n get path(): string {\n return toRoute(uri.segment(''), this.resource, ...this.segments);\n }\n\n get complete(): string {\n return toRoute(this.host, this.resource, ...this.segments);\n }\n\n get isInternal(): boolean {\n return toRoute(this.host) === (ctx.env.host ?? '$host');\n }\n\n protected get props(): List<Prop> {\n return meta(this.state).values<Prop>();\n }\n\n route = (resource: Optional<string> = this.resource.key): string => toRoute(uri.segment(''), uri.segment(resource?.toLowerCase()), ...this.segments);\n\n set = (segment: Segment, value?: unknown): this => {\n tryTo(value)\n .is.defined()\n .accept(value => (this.state[segment.key ?? ''] = { segment, value }));\n return this;\n };\n\n toString(): string {\n return tryTo(() => this.props)\n .map(ps => ps.filter(p => p.segment?.segment))\n .map(ps => ps.reduce((r: string, p: Prop) => r.replace(asString(p.segment.segment), asString(p.value)), this.complete))\n .map(route => ({\n route,\n query: this.props.mapDefined(p => (p.segment?.query ? p.segment?.query(p.value) : undefined))?.join('&'),\n }))\n .map(({ route, query }) => (isNotEmpty(query) ? `${route}?${query}` : route)).value;\n }\n\n id = (id?: unknown): this => this.set(EasyUri.id, id);\n ids = (ids: OneOrMore<unknown>): this => this.set(EasyUri.ids, toArray(ids).join(','));\n query = (q?: unknown): this => this.set(EasyUri.query, q);\n sort = (s?: any): this => this.set(EasyUri.sort, asString(s));\n\n skip = (index?: number): this => this.set(EasyUri.skip, index);\n take = (items?: number): this => this.set(EasyUri.take, items);\n\n expand(props: Partial<Props>): this {\n return entries(props as any)\n .filter(([_, v]) => isNotEmpty(v))\n .reduce((u, [k, v]) => (isBoolean(v) ? u.set(uri.boolean(k), v) : u.set(uri.query(k), toArray(v).join(','))), this);\n }\n}\n\nexport const clipUri = (uri?: EasyUri | string | null): string =>\n tryTo(() => asString(uri))\n .map(uri => uri.replace(/^(https?:\\/\\/)?(www\\.)?/, ''))\n .map(uri => uri.replace(/\\/$/, '')).value;\n"],"mappings":"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","names":["value","uri"]}
|
package/dist/utils/If.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ export declare function ifDefined<Out, In = unknown>(o: Optional<In>, f: Constru
|
|
|
10
10
|
export declare function ifNotEmpty<Out, In = unknown>(o: In, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;
|
|
11
11
|
export declare function ifNotEmpty<Out, In = unknown>(o: In, f?: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;
|
|
12
12
|
export declare function ifNotEmpty<Out, In = unknown>(o: In, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;
|
|
13
|
+
export declare function ifEqual<Out>(one: unknown, another: unknown, f: Construct<Out>, alt: Construct<Out>): Out;
|
|
14
|
+
export declare function ifEqual<Out>(one: unknown, another: unknown, f: Construct<Out>, alt?: Construct<Out>): Optional<Out>;
|
|
13
15
|
export declare function ifEither<Out, In = unknown>(os: OneOrMore<In>, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;
|
|
14
16
|
export declare function ifEither<Out, In = unknown>(os: OneOrMore<In>, f?: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;
|
|
15
17
|
export declare function ifEither<Out, In = unknown>(os: OneOrMore<In>, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;
|
package/dist/utils/If.mjs
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ifDefined,
|
|
3
3
|
ifEither,
|
|
4
|
+
ifEqual,
|
|
4
5
|
ifFalse,
|
|
5
6
|
ifNotEmpty,
|
|
6
7
|
ifTrue
|
|
7
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-TUO7ZPSP.mjs";
|
|
9
|
+
import "../chunk-GPNPXSOF.mjs";
|
|
8
10
|
import "../chunk-QCPWEAAJ.mjs";
|
|
9
11
|
import "../chunk-SSROJBD5.mjs";
|
|
12
|
+
import "../chunk-AMS2ELWR.mjs";
|
|
10
13
|
import "../chunk-4Q6IHSAU.mjs";
|
|
11
14
|
import "../chunk-SJGQU3OG.mjs";
|
|
12
15
|
import "../chunk-MDIO6K2O.mjs";
|
|
@@ -18,6 +21,7 @@ import "../chunk-4N72FQFX.mjs";
|
|
|
18
21
|
export {
|
|
19
22
|
ifDefined,
|
|
20
23
|
ifEither,
|
|
24
|
+
ifEqual,
|
|
21
25
|
ifFalse,
|
|
22
26
|
ifNotEmpty,
|
|
23
27
|
ifTrue
|
package/dist/utils/Mapper.mjs
CHANGED
|
@@ -2,16 +2,16 @@ import {
|
|
|
2
2
|
Mapper,
|
|
3
3
|
isMapping,
|
|
4
4
|
mappings
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-J5PB7ZVO.mjs";
|
|
6
6
|
import "../chunk-KIC2K3GH.mjs";
|
|
7
7
|
import "../chunk-RUKHONCR.mjs";
|
|
8
8
|
import "../chunk-UAYAS3WM.mjs";
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-AQXV7L65.mjs";
|
|
9
|
+
import "../chunk-WOUH6UVC.mjs";
|
|
10
|
+
import "../chunk-TUO7ZPSP.mjs";
|
|
11
|
+
import "../chunk-GPNPXSOF.mjs";
|
|
13
12
|
import "../chunk-QCPWEAAJ.mjs";
|
|
14
13
|
import "../chunk-SSROJBD5.mjs";
|
|
14
|
+
import "../chunk-AMS2ELWR.mjs";
|
|
15
15
|
import "../chunk-4Q6IHSAU.mjs";
|
|
16
16
|
import "../chunk-SJGQU3OG.mjs";
|
|
17
17
|
import "../chunk-MDIO6K2O.mjs";
|
package/dist/utils/Period.mjs
CHANGED
|
@@ -3,21 +3,16 @@ import {
|
|
|
3
3
|
} from "../chunk-O3UNRTSC.mjs";
|
|
4
4
|
import {
|
|
5
5
|
DateTime
|
|
6
|
-
} from "../chunk-
|
|
7
|
-
import "../chunk-
|
|
6
|
+
} from "../chunk-KPXOQFEB.mjs";
|
|
7
|
+
import "../chunk-M2S4OLVZ.mjs";
|
|
8
8
|
import "../chunk-ADJAEGCT.mjs";
|
|
9
9
|
import {
|
|
10
10
|
choose
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-TUO7ZPSP.mjs";
|
|
12
12
|
import "../chunk-GPNPXSOF.mjs";
|
|
13
|
-
import "../chunk-AJZIKJEC.mjs";
|
|
14
|
-
import "../chunk-AMS2ELWR.mjs";
|
|
15
|
-
import "../chunk-7A3RM67L.mjs";
|
|
16
|
-
import "../chunk-5FAZA55F.mjs";
|
|
17
|
-
import "../chunk-2PL5VUHT.mjs";
|
|
18
|
-
import "../chunk-AQXV7L65.mjs";
|
|
19
13
|
import "../chunk-QCPWEAAJ.mjs";
|
|
20
14
|
import "../chunk-SSROJBD5.mjs";
|
|
15
|
+
import "../chunk-AMS2ELWR.mjs";
|
|
21
16
|
import "../chunk-4Q6IHSAU.mjs";
|
|
22
17
|
import "../chunk-SJGQU3OG.mjs";
|
|
23
18
|
import "../chunk-MDIO6K2O.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/Period.ts"],"sourcesContent":["import { choose } from '../types/Case';\nimport { DateTime } from '../domain/DateTime';\nimport { Period } from '../types/Period';\nimport { utc } from '../types/Timezone';\n\nexport type StartEnd = { start: DateTime; end: DateTime };\n\nexport type StartEndOptions = {\n period?: Period;\n start?: DateTime;\n end?: DateTime;\n zone?: string;\n};\nexport const toStartEnd = ({ period, start, end, zone = utc }: StartEndOptions): StartEnd => {\n const today = DateTime.now.withZone(zone).startOf('day');\n return choose(period)\n .equals('today', { start: today, end: today.endOf('day') })\n .equals('yesterday', { start: today.subtract(1, 'day'), end: today })\n .equals('tomorrow', { start: today.add(1, 'day'), end: today.add(1, 'day').endOf('day') })\n .equals('this-week', { start: today.startOf('week'), end: today.endOf('week') })\n .equals('last-seven-days', { start: today.subtract(6, 'day'), end: today.endOf('day') })\n .equals('last-week', {\n start: today.subtract(1, 'week').startOf('week'),\n end: today.subtract(1, 'week').endOf('week'),\n })\n .equals('last-two-weeks', { start: today.subtract(13, 'day'), end: today.endOf('day') })\n .equals('last-month', {\n start: today.subtract(1, 'month').startOf('month'),\n end: today.subtract(1, 'month').endOf('month'),\n })\n .equals('next-week', { start: today.add(1, 'week').startOf('week'), end: today.add(1, 'week').endOf('week') })\n .equals('this-month', { start: today.startOf('month'), end: today.endOf('month') })\n .equals('three-months-ago', {\n start: today.subtract(3, 'month').startOf('month'),\n end: today.subtract(3, 'month').endOf('month'),\n })\n .equals('two-months-ago', {\n start: today.subtract(2, 'month').startOf('month'),\n end: today.subtract(2, 'month').endOf('month'),\n })\n .equals('last-three-months', { start: today.subtract(3, 'month'), end: today.endOf('day') })\n .equals('next-month', { start: today.add(1, 'month').startOf('month'), end: today.add(1, 'month').endOf('month') })\n .equals('this-year', { start: today.startOf('year'), end: today.endOf('year') })\n .equals('last-year', {\n start: today.subtract(1, 'year').startOf('year'),\n end: today.subtract(1, 'year').endOf('year'),\n })\n .equals('two-years-ago', {\n start: today.subtract(2, 'year').startOf('year'),\n end: today.subtract(2, 'year').endOf('year'),\n })\n .equals('three-years-ago', {\n start: today.subtract(3, 'year').startOf('year'),\n end: today.subtract(3, 'year').endOf('year'),\n })\n .equals('next-year', { start: today.add(1, 'year').startOf('year'), end: today.add(1, 'year').endOf('year') })\n .equals('all-time', { start: new DateTime(0).withZone(zone), end: today.endOf('day') })\n .else({ start: start ?? today, end: end ?? today.endOf('day') });\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/utils/Period.ts"],"sourcesContent":["import { choose } from '../types/Case';\nimport { DateTime } from '../domain/DateTime';\nimport { Period } from '../types/Period';\nimport { utc } from '../types/Timezone';\n\nexport type StartEnd = { start: DateTime; end: DateTime };\n\nexport type StartEndOptions = {\n period?: Period;\n start?: DateTime;\n end?: DateTime;\n zone?: string;\n};\nexport const toStartEnd = ({ period, start, end, zone = utc }: StartEndOptions): StartEnd => {\n const today = DateTime.now.withZone(zone).startOf('day');\n return choose(period)\n .equals('today', { start: today, end: today.endOf('day') })\n .equals('yesterday', { start: today.subtract(1, 'day'), end: today })\n .equals('tomorrow', { start: today.add(1, 'day'), end: today.add(1, 'day').endOf('day') })\n .equals('this-week', { start: today.startOf('week'), end: today.endOf('week') })\n .equals('last-seven-days', { start: today.subtract(6, 'day'), end: today.endOf('day') })\n .equals('last-week', {\n start: today.subtract(1, 'week').startOf('week'),\n end: today.subtract(1, 'week').endOf('week'),\n })\n .equals('last-two-weeks', { start: today.subtract(13, 'day'), end: today.endOf('day') })\n .equals('last-month', {\n start: today.subtract(1, 'month').startOf('month'),\n end: today.subtract(1, 'month').endOf('month'),\n })\n .equals('next-week', { start: today.add(1, 'week').startOf('week'), end: today.add(1, 'week').endOf('week') })\n .equals('this-month', { start: today.startOf('month'), end: today.endOf('month') })\n .equals('three-months-ago', {\n start: today.subtract(3, 'month').startOf('month'),\n end: today.subtract(3, 'month').endOf('month'),\n })\n .equals('two-months-ago', {\n start: today.subtract(2, 'month').startOf('month'),\n end: today.subtract(2, 'month').endOf('month'),\n })\n .equals('last-three-months', { start: today.subtract(3, 'month'), end: today.endOf('day') })\n .equals('next-month', { start: today.add(1, 'month').startOf('month'), end: today.add(1, 'month').endOf('month') })\n .equals('this-year', { start: today.startOf('year'), end: today.endOf('year') })\n .equals('last-year', {\n start: today.subtract(1, 'year').startOf('year'),\n end: today.subtract(1, 'year').endOf('year'),\n })\n .equals('two-years-ago', {\n start: today.subtract(2, 'year').startOf('year'),\n end: today.subtract(2, 'year').endOf('year'),\n })\n .equals('three-years-ago', {\n start: today.subtract(3, 'year').startOf('year'),\n end: today.subtract(3, 'year').endOf('year'),\n })\n .equals('next-year', { start: today.add(1, 'year').startOf('year'), end: today.add(1, 'year').endOf('year') })\n .equals('all-time', { start: new DateTime(0).withZone(zone), end: today.endOf('day') })\n .else({ start: start ?? today, end: end ?? today.endOf('day') });\n};\n"],"mappings":"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","names":[]}
|
package/dist/utils/Promise.mjs
CHANGED
|
@@ -8,11 +8,11 @@ import {
|
|
|
8
8
|
tuple4,
|
|
9
9
|
tuple5,
|
|
10
10
|
tupleO
|
|
11
|
-
} from "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-AQXV7L65.mjs";
|
|
11
|
+
} from "../chunk-TUO7ZPSP.mjs";
|
|
12
|
+
import "../chunk-GPNPXSOF.mjs";
|
|
14
13
|
import "../chunk-QCPWEAAJ.mjs";
|
|
15
14
|
import "../chunk-SSROJBD5.mjs";
|
|
15
|
+
import "../chunk-AMS2ELWR.mjs";
|
|
16
16
|
import "../chunk-4Q6IHSAU.mjs";
|
|
17
17
|
import "../chunk-SJGQU3OG.mjs";
|
|
18
18
|
import "../chunk-MDIO6K2O.mjs";
|
package/dist/utils/Seconds.mjs
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
seconds
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-M2S4OLVZ.mjs";
|
|
4
|
+
import "../chunk-TUO7ZPSP.mjs";
|
|
5
|
+
import "../chunk-GPNPXSOF.mjs";
|
|
5
6
|
import "../chunk-QCPWEAAJ.mjs";
|
|
6
7
|
import "../chunk-SSROJBD5.mjs";
|
|
8
|
+
import "../chunk-AMS2ELWR.mjs";
|
|
7
9
|
import "../chunk-4Q6IHSAU.mjs";
|
|
8
10
|
import "../chunk-SJGQU3OG.mjs";
|
|
9
11
|
import "../chunk-MDIO6K2O.mjs";
|
package/dist/utils/Sentence.mjs
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
text
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-TUO7ZPSP.mjs";
|
|
4
4
|
import "../chunk-GPNPXSOF.mjs";
|
|
5
|
-
import "../chunk-AJZIKJEC.mjs";
|
|
6
|
-
import "../chunk-AMS2ELWR.mjs";
|
|
7
|
-
import "../chunk-7A3RM67L.mjs";
|
|
8
|
-
import "../chunk-5FAZA55F.mjs";
|
|
9
|
-
import "../chunk-2PL5VUHT.mjs";
|
|
10
|
-
import "../chunk-AQXV7L65.mjs";
|
|
11
5
|
import "../chunk-QCPWEAAJ.mjs";
|
|
12
6
|
import "../chunk-SSROJBD5.mjs";
|
|
7
|
+
import "../chunk-AMS2ELWR.mjs";
|
|
13
8
|
import "../chunk-4Q6IHSAU.mjs";
|
|
14
9
|
import "../chunk-SJGQU3OG.mjs";
|
|
15
10
|
import "../chunk-MDIO6K2O.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/Sentence.ts"],"sourcesContent":["import type { Text } from '../types/Text';\nimport { Id } from '../types/Id';\nimport { text } from '../types/ToText';\n\nexport class Sentence implements Text {\n constructor(\n word: Text,\n pre?: Sentence,\n private sentence: Text[] = (pre?.sentence ?? []).concat(word)\n ) {}\n\n toString(): string {\n return text(this.sentence.join(' ')).sentence.toString();\n }\n}\n\nclass Topic extends Sentence {\n it = new Sentence('it', this);\n anything = new Sentence('anything', this);\n id = (id: Id) => new Sentence(`id '${id}'`, this);\n your = (subject?: Text) => new Sentence(`your ${subject ?? 'item'}`, this);\n a = (subject?: Text) => new Sentence(subject ? `a ${subject}` : 'an item', this);\n an = (subject?: Text) => new Sentence(`an ${subject ?? 'item'}`, this);\n any = (subjects?: Text) => new Sentence(`any ${subjects ?? 'items'}`, this);\n}\n\nclass Verb extends Sentence {\n add = new Topic('add', this);\n check = new Topic('check', this);\n fetch = new Topic('fetch', this);\n find = new Topic('find', this);\n like = new Topic('like', this);\n process = new Topic('process', this);\n remove = new Topic('remove', this);\n translate = new Topic('translate', this);\n update = new Topic('update', this);\n validate = new Topic('validate', this);\n}\n\nclass Not extends Verb {}\n\nclass SupportVerb extends Verb {\n not = new Not('not', this);\n}\n\nclass We extends Sentence {\n could = new SupportVerb('could', this);\n did = new SupportVerb('did', this);\n\n added = new Topic('added', this);\n checked = new Topic('checked', this);\n fetched = new Topic('fetched', this);\n found = new Topic('found', this);\n liked = new Topic('liked', this);\n processed = new Topic('processed', this);\n removed = new Topic('removed', this);\n translated = new Topic('translated', this);\n updated = new Topic('updated', this);\n validated = new Topic('validated', this);\n}\n\nexport const we = new We('we');\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/utils/Sentence.ts"],"sourcesContent":["import type { Text } from '../types/Text';\nimport { Id } from '../types/Id';\nimport { text } from '../types/ToText';\n\nexport class Sentence implements Text {\n constructor(\n word: Text,\n pre?: Sentence,\n private sentence: Text[] = (pre?.sentence ?? []).concat(word)\n ) {}\n\n toString(): string {\n return text(this.sentence.join(' ')).sentence.toString();\n }\n}\n\nclass Topic extends Sentence {\n it = new Sentence('it', this);\n anything = new Sentence('anything', this);\n id = (id: Id) => new Sentence(`id '${id}'`, this);\n your = (subject?: Text) => new Sentence(`your ${subject ?? 'item'}`, this);\n a = (subject?: Text) => new Sentence(subject ? `a ${subject}` : 'an item', this);\n an = (subject?: Text) => new Sentence(`an ${subject ?? 'item'}`, this);\n any = (subjects?: Text) => new Sentence(`any ${subjects ?? 'items'}`, this);\n}\n\nclass Verb extends Sentence {\n add = new Topic('add', this);\n check = new Topic('check', this);\n fetch = new Topic('fetch', this);\n find = new Topic('find', this);\n like = new Topic('like', this);\n process = new Topic('process', this);\n remove = new Topic('remove', this);\n translate = new Topic('translate', this);\n update = new Topic('update', this);\n validate = new Topic('validate', this);\n}\n\nclass Not extends Verb {}\n\nclass SupportVerb extends Verb {\n not = new Not('not', this);\n}\n\nclass We extends Sentence {\n could = new SupportVerb('could', this);\n did = new SupportVerb('did', this);\n\n added = new Topic('added', this);\n checked = new Topic('checked', this);\n fetched = new Topic('fetched', this);\n found = new Topic('found', this);\n liked = new Topic('liked', this);\n processed = new Topic('processed', this);\n removed = new Topic('removed', this);\n translated = new Topic('translated', this);\n updated = new Topic('updated', this);\n validated = new Topic('validated', this);\n}\n\nexport const we = new We('we');\n"],"mappings":";;;;;;;;;;;;;;;;;AAIO,IAAM,WAAN,MAA+B;AAAA,EACpC,YACE,MACA,KACQ,YAAoB,KAAK,YAAY,CAAC,GAAG,OAAO,IAAI,GAC5D;AADQ;AAAA,EACP;AAAA,EAEH,WAAmB;AACjB,WAAO,KAAK,KAAK,SAAS,KAAK,GAAG,CAAC,EAAE,SAAS,SAAS;AAAA,EACzD;AACF;AAEA,IAAM,QAAN,cAAoB,SAAS;AAAA,EAC3B,KAAK,IAAI,SAAS,MAAM,IAAI;AAAA,EAC5B,WAAW,IAAI,SAAS,YAAY,IAAI;AAAA,EACxC,KAAK,CAAC,OAAW,IAAI,SAAS,OAAO,EAAE,KAAK,IAAI;AAAA,EAChD,OAAO,CAAC,YAAmB,IAAI,SAAS,QAAQ,WAAW,MAAM,IAAI,IAAI;AAAA,EACzE,IAAI,CAAC,YAAmB,IAAI,SAAS,UAAU,KAAK,OAAO,KAAK,WAAW,IAAI;AAAA,EAC/E,KAAK,CAAC,YAAmB,IAAI,SAAS,MAAM,WAAW,MAAM,IAAI,IAAI;AAAA,EACrE,MAAM,CAAC,aAAoB,IAAI,SAAS,OAAO,YAAY,OAAO,IAAI,IAAI;AAC5E;AAEA,IAAM,OAAN,cAAmB,SAAS;AAAA,EAC1B,MAAM,IAAI,MAAM,OAAO,IAAI;AAAA,EAC3B,QAAQ,IAAI,MAAM,SAAS,IAAI;AAAA,EAC/B,QAAQ,IAAI,MAAM,SAAS,IAAI;AAAA,EAC/B,OAAO,IAAI,MAAM,QAAQ,IAAI;AAAA,EAC7B,OAAO,IAAI,MAAM,QAAQ,IAAI;AAAA,EAC7B,UAAU,IAAI,MAAM,WAAW,IAAI;AAAA,EACnC,SAAS,IAAI,MAAM,UAAU,IAAI;AAAA,EACjC,YAAY,IAAI,MAAM,aAAa,IAAI;AAAA,EACvC,SAAS,IAAI,MAAM,UAAU,IAAI;AAAA,EACjC,WAAW,IAAI,MAAM,YAAY,IAAI;AACvC;AAEA,IAAM,MAAN,cAAkB,KAAK;AAAC;AAExB,IAAM,cAAN,cAA0B,KAAK;AAAA,EAC7B,MAAM,IAAI,IAAI,OAAO,IAAI;AAC3B;AAEA,IAAM,KAAN,cAAiB,SAAS;AAAA,EACxB,QAAQ,IAAI,YAAY,SAAS,IAAI;AAAA,EACrC,MAAM,IAAI,YAAY,OAAO,IAAI;AAAA,EAEjC,QAAQ,IAAI,MAAM,SAAS,IAAI;AAAA,EAC/B,UAAU,IAAI,MAAM,WAAW,IAAI;AAAA,EACnC,UAAU,IAAI,MAAM,WAAW,IAAI;AAAA,EACnC,QAAQ,IAAI,MAAM,SAAS,IAAI;AAAA,EAC/B,QAAQ,IAAI,MAAM,SAAS,IAAI;AAAA,EAC/B,YAAY,IAAI,MAAM,aAAa,IAAI;AAAA,EACvC,UAAU,IAAI,MAAM,WAAW,IAAI;AAAA,EACnC,aAAa,IAAI,MAAM,cAAc,IAAI;AAAA,EACzC,UAAU,IAAI,MAAM,WAAW,IAAI;AAAA,EACnC,YAAY,IAAI,MAAM,aAAa,IAAI;AACzC;AAEO,IAAM,KAAK,IAAI,GAAG,IAAI;","names":[]}
|
package/dist/utils/View.mjs
CHANGED
|
@@ -4,20 +4,14 @@ import {
|
|
|
4
4
|
toViewer,
|
|
5
5
|
view,
|
|
6
6
|
views
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-5BGTUK7G.mjs";
|
|
7
|
+
} from "../chunk-7TW4TBFN.mjs";
|
|
8
|
+
import "../chunk-QLEGIYVU.mjs";
|
|
9
|
+
import "../chunk-WOUH6UVC.mjs";
|
|
10
|
+
import "../chunk-TUO7ZPSP.mjs";
|
|
12
11
|
import "../chunk-GPNPXSOF.mjs";
|
|
13
|
-
import "../chunk-AJZIKJEC.mjs";
|
|
14
|
-
import "../chunk-AMS2ELWR.mjs";
|
|
15
|
-
import "../chunk-7A3RM67L.mjs";
|
|
16
|
-
import "../chunk-5FAZA55F.mjs";
|
|
17
|
-
import "../chunk-2PL5VUHT.mjs";
|
|
18
|
-
import "../chunk-AQXV7L65.mjs";
|
|
19
12
|
import "../chunk-QCPWEAAJ.mjs";
|
|
20
13
|
import "../chunk-SSROJBD5.mjs";
|
|
14
|
+
import "../chunk-AMS2ELWR.mjs";
|
|
21
15
|
import "../chunk-4Q6IHSAU.mjs";
|
|
22
16
|
import "../chunk-SJGQU3OG.mjs";
|
|
23
17
|
import "../chunk-MDIO6K2O.mjs";
|
|
@@ -18,18 +18,13 @@ import {
|
|
|
18
18
|
required,
|
|
19
19
|
rule,
|
|
20
20
|
valid
|
|
21
|
-
} from "../chunk-
|
|
21
|
+
} from "../chunk-GF7JYGJU.mjs";
|
|
22
22
|
import "../chunk-ADJAEGCT.mjs";
|
|
23
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-TUO7ZPSP.mjs";
|
|
24
24
|
import "../chunk-GPNPXSOF.mjs";
|
|
25
|
-
import "../chunk-AJZIKJEC.mjs";
|
|
26
|
-
import "../chunk-AMS2ELWR.mjs";
|
|
27
|
-
import "../chunk-7A3RM67L.mjs";
|
|
28
|
-
import "../chunk-5FAZA55F.mjs";
|
|
29
|
-
import "../chunk-2PL5VUHT.mjs";
|
|
30
|
-
import "../chunk-AQXV7L65.mjs";
|
|
31
25
|
import "../chunk-QCPWEAAJ.mjs";
|
|
32
26
|
import "../chunk-SSROJBD5.mjs";
|
|
27
|
+
import "../chunk-AMS2ELWR.mjs";
|
|
33
28
|
import "../chunk-4Q6IHSAU.mjs";
|
|
34
29
|
import "../chunk-SJGQU3OG.mjs";
|
|
35
30
|
import "../chunk-MDIO6K2O.mjs";
|
|
@@ -3,16 +3,11 @@ import {
|
|
|
3
3
|
isValid,
|
|
4
4
|
validate,
|
|
5
5
|
validateReject
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-TUO7ZPSP.mjs";
|
|
7
7
|
import "../chunk-GPNPXSOF.mjs";
|
|
8
|
-
import "../chunk-AJZIKJEC.mjs";
|
|
9
|
-
import "../chunk-AMS2ELWR.mjs";
|
|
10
|
-
import "../chunk-7A3RM67L.mjs";
|
|
11
|
-
import "../chunk-5FAZA55F.mjs";
|
|
12
|
-
import "../chunk-2PL5VUHT.mjs";
|
|
13
|
-
import "../chunk-AQXV7L65.mjs";
|
|
14
8
|
import "../chunk-QCPWEAAJ.mjs";
|
|
15
9
|
import "../chunk-SSROJBD5.mjs";
|
|
10
|
+
import "../chunk-AMS2ELWR.mjs";
|
|
16
11
|
import "../chunk-4Q6IHSAU.mjs";
|
|
17
12
|
import "../chunk-SJGQU3OG.mjs";
|
|
18
13
|
import "../chunk-MDIO6K2O.mjs";
|
package/dist/validation/When.mjs
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
When,
|
|
3
3
|
when
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-TUO7ZPSP.mjs";
|
|
5
5
|
import "../chunk-GPNPXSOF.mjs";
|
|
6
|
-
import "../chunk-AJZIKJEC.mjs";
|
|
7
|
-
import "../chunk-AMS2ELWR.mjs";
|
|
8
|
-
import "../chunk-7A3RM67L.mjs";
|
|
9
|
-
import "../chunk-5FAZA55F.mjs";
|
|
10
|
-
import "../chunk-2PL5VUHT.mjs";
|
|
11
|
-
import "../chunk-AQXV7L65.mjs";
|
|
12
6
|
import "../chunk-QCPWEAAJ.mjs";
|
|
13
7
|
import "../chunk-SSROJBD5.mjs";
|
|
8
|
+
import "../chunk-AMS2ELWR.mjs";
|
|
14
9
|
import "../chunk-4Q6IHSAU.mjs";
|
|
15
10
|
import "../chunk-SJGQU3OG.mjs";
|
|
16
11
|
import "../chunk-MDIO6K2O.mjs";
|
package/package.json
CHANGED
package/src/utils/If.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { Optional } from '../types/Types';
|
|
|
3
3
|
import { Construct, ofConstruct, use } from '../types/Constructor';
|
|
4
4
|
import { OneOrMore } from '../types/Array';
|
|
5
5
|
import { toList } from '../types/List';
|
|
6
|
+
import { isEqual } from '../types/IsEqual';
|
|
6
7
|
|
|
7
8
|
export function ifTrue<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;
|
|
8
9
|
export function ifTrue<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;
|
|
@@ -29,6 +30,12 @@ export function ifNotEmpty<Out, In = unknown>(o: In, f: Construct<Out, NonNullab
|
|
|
29
30
|
return isNotEmpty(o) ? ofConstruct(f, o) : ofConstruct(alt, o);
|
|
30
31
|
}
|
|
31
32
|
|
|
33
|
+
export function ifEqual<Out>(one: unknown, another: unknown, f: Construct<Out>, alt: Construct<Out>): Out;
|
|
34
|
+
export function ifEqual<Out>(one: unknown, another: unknown, f: Construct<Out>, alt?: Construct<Out>): Optional<Out>;
|
|
35
|
+
export function ifEqual<Out>(one: unknown, another: unknown, f: Construct<Out>, alt?: Construct<Out>): Optional<Out> {
|
|
36
|
+
return isEqual(one, another) ? ofConstruct(f) : ofConstruct(alt);
|
|
37
|
+
}
|
|
38
|
+
|
|
32
39
|
export function ifEither<Out, In = unknown>(os: OneOrMore<In>, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;
|
|
33
40
|
export function ifEither<Out, In = unknown>(os: OneOrMore<In>, f?: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;
|
|
34
41
|
export function ifEither<Out, In = unknown>(os: OneOrMore<In>, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;
|
package/dist/chunk-2PL5VUHT.mjs
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ifDefined,
|
|
3
|
-
toList
|
|
4
|
-
} from "./chunk-AQXV7L65.mjs";
|
|
5
|
-
|
|
6
|
-
// src/types/Object.ts
|
|
7
|
-
function entries(subject) {
|
|
8
|
-
return ifDefined(
|
|
9
|
-
subject,
|
|
10
|
-
() => toList([...Object.entries(subject), ...Object.entries(Object.getPrototypeOf(subject) ?? {})]),
|
|
11
|
-
() => toList()
|
|
12
|
-
);
|
|
13
|
-
}
|
|
14
|
-
function values(subject) {
|
|
15
|
-
return toList([...Object.values(subject), ...Object.values(Object.getPrototypeOf(subject) ?? {})]);
|
|
16
|
-
}
|
|
17
|
-
function keys(subject) {
|
|
18
|
-
return toList([...Object.keys(subject), ...Object.keys(Object.getPrototypeOf(subject) ?? {})]);
|
|
19
|
-
}
|
|
20
|
-
function extractKeys(obj, keys2) {
|
|
21
|
-
return keys2.filter((k) => k in obj).reduce(
|
|
22
|
-
(acc, key) => {
|
|
23
|
-
acc.keys[key] = obj[key];
|
|
24
|
-
delete acc[key];
|
|
25
|
-
return acc;
|
|
26
|
-
},
|
|
27
|
-
{ keys: {}, ...obj }
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export {
|
|
32
|
-
entries,
|
|
33
|
-
values,
|
|
34
|
-
keys,
|
|
35
|
-
extractKeys
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=chunk-2PL5VUHT.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/Object.ts"],"sourcesContent":["import { List, toList } from './List';\nimport { ifDefined } from '../utils/If';\n\nexport type Entry<T = unknown> = [key: string, value: T];\n\nexport function entries<T = unknown>(subject: { [p: string]: T } | ArrayLike<T>): List<Entry<T>> {\n return ifDefined(\n subject,\n () => toList<Entry<T>>([...Object.entries(subject), ...Object.entries(Object.getPrototypeOf(subject) ?? {})] as Entry<T>[]),\n () => toList<Entry<T>>()\n );\n}\n\nexport function values<T = unknown>(subject: { [p: string]: T } | ArrayLike<T>): List<T> {\n return toList([...Object.values<T>(subject), ...Object.values<T>(Object.getPrototypeOf(subject) ?? {})]);\n}\n\nexport function keys<T = unknown>(subject: { [p: string]: T } | ArrayLike<T>): List<string> {\n return toList([...Object.keys(subject), ...Object.keys(Object.getPrototypeOf(subject) ?? {})]);\n}\n\nexport function extractKeys<T extends Record<string | number, unknown>, K extends keyof T>(\n obj: T,\n keys: K[] | readonly (keyof T)[]\n): {\n keys: Pick<T, K>;\n} & Omit<T, K> {\n return keys\n .filter((k): k is K => k in obj)\n .reduce(\n (acc, key) => {\n (acc.keys as T)[key] = obj[key];\n delete acc[key];\n return acc;\n },\n { keys: {} as Pick<T, K>, ...obj }\n );\n}\n"],"mappings":";;;;;;AAKO,SAAS,QAAqB,SAA4D;AAC/F,SAAO;AAAA,IACL;AAAA,IACA,MAAM,OAAiB,CAAC,GAAG,OAAO,QAAQ,OAAO,GAAG,GAAG,OAAO,QAAQ,OAAO,eAAe,OAAO,KAAK,CAAC,CAAC,CAAC,CAAe;AAAA,IAC1H,MAAM,OAAiB;AAAA,EACzB;AACF;AAEO,SAAS,OAAoB,SAAqD;AACvF,SAAO,OAAO,CAAC,GAAG,OAAO,OAAU,OAAO,GAAG,GAAG,OAAO,OAAU,OAAO,eAAe,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AACzG;AAEO,SAAS,KAAkB,SAA0D;AAC1F,SAAO,OAAO,CAAC,GAAG,OAAO,KAAK,OAAO,GAAG,GAAG,OAAO,KAAK,OAAO,eAAe,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/F;AAEO,SAAS,YACd,KACAA,OAGa;AACb,SAAOA,MACJ,OAAO,CAAC,MAAc,KAAK,GAAG,EAC9B;AAAA,IACC,CAAC,KAAK,QAAQ;AACZ,MAAC,IAAI,KAAW,GAAG,IAAI,IAAI,GAAG;AAC9B,aAAO,IAAI,GAAG;AACd,aAAO;AAAA,IACT;AAAA,IACA,EAAE,MAAM,CAAC,GAAiB,GAAG,IAAI;AAAA,EACnC;AACJ;","names":["keys"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/Try.ts","../src/types/Template.ts","../src/types/ToText.ts","../src/types/Context.ts","../src/types/Result.ts","../src/types/Results.ts","../src/types/Case.ts","../src/validation/Validate.ts","../src/types/Exception.ts","../src/validation/When.ts"],"sourcesContent":["import { isDefined, isEmpty, isTrue } from './Is';\nimport { validate } from '../validation/Validate';\nimport { Construct, Constructor, ofConstruct } from './Constructor';\nimport { Validatable } from './Validatable';\nimport { Get, ofGet } from './Get';\nimport { Func } from './Func';\nimport { Optional } from './Types';\n\nexport abstract class Try<T = unknown> implements Validatable {\n is = {\n defined: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isDefined(prop ? prop(v) : v)),\n empty: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isEmpty(prop ? prop(v) : v)),\n valid: (prop?: Func<unknown, T>): Try<T> => this.filter(v => validate(prop ? prop(v) : v).isValid),\n true: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isTrue(prop ? prop(v) : v)),\n false: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isTrue(prop ? prop(v) : v)),\n not: {\n defined: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isDefined(prop ? prop(v) : v)),\n empty: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isEmpty(prop ? prop(v) : v)),\n valid: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !validate(prop ? prop(v) : v).isValid),\n },\n };\n\n if = this.is;\n\n abstract get value(): T;\n\n abstract get error(): Error;\n\n abstract get isValid(): boolean;\n\n static of = <T>(c: Get<T | Try<T>>, ...args: unknown[]): Try<T> => {\n try {\n const out = ofGet(c, ...args);\n return new Success(out instanceof Try ? out.value : out);\n } catch (e) {\n return new Failure(e as Error);\n }\n };\n\n abstract map<U>(f: Func<U | Try<U>, T>): Try<U>;\n\n abstract recover(f: Func<T | Try<T>, Error>): Try<T>;\n\n abstract recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T>;\n\n abstract accept(f: Func<void, T>): Try<T>;\n\n abstract filter(predicate: Func<boolean, T>): Try<T>;\n\n abstract or(value: Get<T>): T;\n\n abstract orElse(value?: Get<T>): Optional<T>;\n\n abstract orThrow(error: Construct<Error>): T;\n}\n\nclass Success<T> extends Try<T> {\n constructor(readonly value: T) {\n super();\n }\n\n get error(): Error {\n throw new Error('No error found');\n }\n\n get isValid(): boolean {\n return true;\n }\n\n map<U>(f: Func<U | Try<U>, T>): Try<U> {\n return tryTo<U>(f, this.value);\n }\n\n recover(f: Func<T | Try<T>, Error>): Try<T> {\n return this;\n }\n\n recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T> {\n return this;\n }\n\n accept(f: Func<void, T>): Try<T> {\n return tryTo(() => {\n f(this.value);\n return this;\n });\n }\n\n filter(predicate: Func<boolean, T>): Try<T> {\n return tryTo(() => {\n if (predicate(this.value)) return this;\n throw new Error(`Applying filter(${predicate.toString()}) failed.`);\n });\n }\n\n or(value: Get<T>): T {\n return this.value;\n }\n\n orElse(value?: Get<T>): Optional<T> {\n return this.value;\n }\n\n orThrow(_error: Construct<Error>): T {\n return this.value;\n }\n}\n\nclass Failure<T> extends Try<T> {\n constructor(readonly error: Error) {\n super();\n }\n\n get value(): T {\n throw this.error;\n }\n\n get isValid(): boolean {\n return false;\n }\n\n map<U>(f: Func<U | Try<U>, T>): Try<U> {\n return new Failure<U>(this.error);\n }\n\n recover<U>(f: Func<U | Try<U>, Error>): Try<U> {\n return tryTo<U>(f, this.error);\n }\n\n recoverFrom<U>(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T> {\n return tryTo(() => (this.error instanceof type ? this.recover(f) : this));\n }\n\n accept(f: Func<void, T>): Try<T> {\n return this;\n }\n\n filter(predicate: Func<boolean, T>): Try<T> {\n return this;\n }\n\n or(value: Get<T>): T {\n return ofGet(value);\n }\n\n orElse(value?: Get<T>): Optional<T> {\n return ofGet(value);\n }\n\n orThrow(error: Construct<Error>): T {\n throw ofConstruct(error);\n }\n}\n\nexport const tryTo = <T>(c: Get<T | Try<T>>, ...args: unknown[]) => Try.of<T>(c, ...args);\n","import { List, toList } from './List';\nimport { asString, Text } from './Text';\nimport { toName } from './Constructor';\nimport { entries } from './Object';\nimport { text, textValue } from './ToText';\nimport { tryTo } from './Try';\n\nexport type TemplateOptions = { typeof?: Text; property?: Text; actual?: Text; subject?: Text };\n\nexport class Template implements Text {\n private knownPrefixes = new Set(['typeof', 'property', 'actual', 'subject']);\n\n constructor(\n private readonly template: string,\n private readonly subject: unknown = {},\n private readonly options: TemplateOptions = {}\n ) {}\n\n toString = (): string => {\n return entries(this.options)\n .reduce((t, [k]) => this.option(t, k), this.object())\n .replace(' ', ' ');\n };\n\n private readonly props = (tmpl: string, key: string, result: List<string> = toList()): string[] => {\n const i1 = tmpl.indexOf(`{${key}`);\n if (i1 < 0) {\n return result;\n }\n const i2 = tmpl.indexOf('}', i1);\n return this.props(tmpl.slice(i2 + 1), key, result.add(tmpl.substring(i1 + 1, i2)));\n };\n\n private readonly object = (): string =>\n tryTo(() => this.template.replace(/\\{this\\./g, '{'))\n .map(t => t.replace(/\\{([^{}]+)}/g, (match, p) => (this.knownPrefixes.has(p.split('.')[0]) ? match : textValue(this.subject, p))))\n .or('');\n\n private readonly option = (tmpl: string, prop: string): string => {\n return this.props(tmpl, prop).reduce((t: string, p) => t.replace(`{${p}}`, textValue(this.options, p)), tmpl);\n };\n}\n\nexport function template(tmpl: Text, subject: unknown, options: TemplateOptions = {}): Text {\n return new Template(asString(tmpl), subject, {\n typeof: toName(subject),\n subject: text(JSON.stringify(subject)),\n ...options,\n });\n}\n","import { asString, capitalize, replaceAll, Text } from './Text';\nimport { toName } from './Constructor';\nimport { Optional } from './Types';\nimport { Get, ofGet } from './Get';\nimport { isEmpty, isNotEmpty } from './Is';\nimport { List, toList } from './List';\nimport { JsonValue } from './Json';\nimport { template } from './Template';\n\nexport class ToText implements Text {\n constructor(readonly subject: string) {}\n\n get cap(): ToText {\n return this.map(s => capitalize(s?.toLowerCase()));\n }\n\n get capFirst(): ToText {\n return this.map(s => capitalize(s));\n }\n\n get title(): ToText {\n return this.map(s =>\n s\n .split(' ')\n .map(w => text(w).cap)\n .join(' ')\n );\n }\n\n get pascal(): ToText {\n return this.title.replace(' ', '');\n }\n\n get lower(): ToText {\n return this.map(s => s.toLowerCase());\n }\n\n get upper(): ToText {\n return this.map(s => s.toUpperCase());\n }\n\n get camel(): ToText {\n return this.title.trim.map(s => `${s.charAt(0).toLowerCase()}${s.slice(1)}`);\n }\n\n get kebab(): ToText {\n return this.lower.replace(' ', '-');\n }\n\n get strictKebab(): ToText {\n return this.map(s => s.replace(/[^a-z\\d]+/gi, ' ').trim()).kebab;\n }\n\n get slug(): ToText {\n return this.map(s =>\n s\n .replace(/ß/g, 'ss')\n .normalize('NFKD')\n .replace(/[\\u0300-\\u036F]/g, '')\n .toLowerCase()\n .replace(/[^a-z\\d]+/g, '-')\n .replace(/(^-)|(-$)/g, '')\n );\n }\n\n get snake(): ToText {\n return this.upper.replace(' ', '_');\n }\n\n get plural(): ToText {\n return this.ifLike('') ?? this.add('s');\n }\n\n get space(): ToText {\n return this.map(s => s.replace(/([a-z0-9])([A-Z])/g, '$1 $2').replace(/[_-]/g, ' '));\n }\n\n get sentence(): ToText {\n return this.isEmpty ? this : this.map(s => `${s.charAt(0).toUpperCase()}${s.slice(1)}.`);\n }\n\n get initials(): ToText {\n return this.map(s =>\n s\n .split(' ')\n .map(w => w[0])\n .join('')\n );\n }\n\n get trim(): ToText {\n return this.map(s => s.replace(/[- ,_#]/g, ''));\n }\n\n get trimSentence(): ToText {\n return this.map(s =>\n s\n .replace(/[\\u200B-\\u200D\\uFEFF]/g, '')\n .replace(/[\\s\\u00A0]+/g, ' ')\n .replace(/\\s+([.,;:!?])/g, '$1')\n .trim()\n );\n }\n\n get isEmpty(): boolean {\n return isEmpty(this.toString());\n }\n\n parse = (subject: unknown, options = {}): ToText => text(template(this.subject, subject, { typeof: toName(subject), ...options }));\n\n is = (...others: unknown[]): boolean => others.some(o => this.toString() === text(o).toString());\n\n equals = this.is;\n\n like = (...others: unknown[]): boolean => others.some(o => this.trim.lower.toString().includes(text(o).trim.lower.toString()));\n\n isLike = (...others: unknown[]): boolean => others.some(o => this.trim.lower.is(text(o).trim.lower));\n\n ifLike = (...others: unknown[]): Optional<this> => (this.isLike(...others) ? this : undefined);\n\n endsWith = (end?: unknown): boolean => this.subject.endsWith(asString(end));\n\n startsWith = (end?: unknown): boolean => this.subject.startsWith(asString(end));\n\n first = (n: number): ToText => this.map(s => s.substring(0, n));\n\n last = (n: number): ToText => this.map(s => s.substring(s.length - n));\n\n map = (func: Get<string, string>): ToText => text(ofGet(func, this.subject));\n\n replace = (search: Text, replace: Text): ToText => this.map(s => replaceAll(s, search, replace));\n\n add = (add?: unknown, separator = ''): ToText => this.map(s => (isNotEmpty(add) ? `${s}${separator}${text(add)}` : s));\n\n with = (separator: string, ...other: unknown[]): ToText =>\n this.map(s =>\n toList(s)\n .add(...other.map(u => text(u).toString()))\n .filter(s => isNotEmpty(s))\n .join(separator)\n );\n\n split = (separator: string = ' '): List<string> => toList(this.subject.split(separator));\n\n toString(): string {\n return this.subject;\n }\n\n toJSON(): JsonValue {\n return this.subject;\n }\n}\n\nexport function text(subject?: unknown, alt = ''): ToText {\n const sub = subject ? asString(subject) : alt;\n return new ToText(sub !== '[object Object]' ? sub : '');\n}\n\nexport function textValue(subject: any, prop: string): string {\n const p = prop.split('.');\n const root = subject?.[p[0]];\n const initial = typeof root === 'object' && root !== null ? root : text(root);\n return (\n p\n .splice(1)\n .reduce((t, s) => (typeof t === 'object' && t !== null ? t : text(t))?.[s], initial)\n ?.toString() ?? ''\n );\n}\n","import { Uuid } from './Uuid';\nimport { Identity } from './Identity';\nimport { Optional } from './Types';\n\nimport { text } from './ToText';\n\nexport interface EnvContext {\n readonly domain: string;\n readonly name: string;\n readonly host: string;\n readonly port: number;\n readonly app: string;\n\n get(key: string, alt?: string): Optional<string>;\n}\n\nexport class DotEnvContext implements EnvContext {\n readonly domain = process.env.DOMAIN ?? 'easy';\n readonly name = process.env.ENVIRONMENT_NAME ?? '';\n readonly host = process.env.HOST ?? '';\n readonly port = Number.parseInt(process.env.PORT ?? '8080');\n readonly app = process.env.APP ?? '';\n\n readonly get = (key: string, alt?: string): Optional<string> => {\n const k = text(key)\n .map(k => k.replace(/([a-z])([A-Z])/g, '$1 $2'))\n .snake.toString();\n return process.env[k] ?? alt;\n };\n}\n\nexport interface RequestContext {\n token?: any;\n identity?: Identity;\n jwt: string;\n correlationId?: Uuid;\n lastError?: string;\n lastErrorStack?: string;\n create: (f: () => void) => void;\n\n get<T>(key: string): T;\n\n set<T>(key: string, value: T): T;\n\n wrap<T>(f: () => Promise<T>): Promise<T>;\n}\n\nexport class BaseRequestContext implements RequestContext {\n private state: any = {};\n\n get token(): any {\n return this.get('token');\n }\n\n set token(token: any) {\n this.set('token', token);\n }\n\n get identity(): Identity {\n return this.token as Identity;\n }\n\n get jwt(): string {\n return this.get('jwt');\n }\n\n set jwt(jwt: string) {\n this.set('jwt', jwt);\n }\n\n get correlationId(): Uuid {\n return this.get('correlationId');\n }\n\n set correlationId(id: Uuid) {\n this.set('correlationId', id);\n }\n\n get lastError(): Optional<string> {\n return this.get('lastError');\n }\n\n set lastError(error: Optional<string>) {\n this.set('lastError', error);\n }\n\n public get<T>(key: string): T {\n return this.state[key] as T;\n }\n\n public set<T>(key: string, value: T): T {\n return (this.state[key] = value);\n }\n\n public readonly create = (f: () => void): void => f();\n\n public readonly wrap = <T>(f: () => Promise<T>): Promise<T> => f();\n}\n\n/**\n * @deprecated Renamed to BaseRequestContext\n */\nexport class BaseContext extends BaseRequestContext {}\n\nexport interface Contexts {\n env?: EnvContext;\n request?: RequestContext;\n other?: any;\n}\n\nexport class Context {\n constructor(protected state: Contexts = {}) {\n this.state = {\n ...{\n env: new DotEnvContext(),\n request: new BaseRequestContext(),\n other: {},\n },\n ...this.state,\n };\n }\n\n get env(): EnvContext {\n return this.state.env as EnvContext;\n }\n\n set env(env: EnvContext) {\n this.state.env = env;\n }\n\n get request(): RequestContext {\n return this.state.request as RequestContext;\n }\n\n set request(request: RequestContext) {\n this.state.request = request;\n }\n\n get other(): any {\n return this.state.other;\n }\n}\n\nexport const ctx = new Context();\n","import { isA } from './IsA';\nimport { Text } from './Text';\nimport { ctx } from './Context';\nimport { TypeGuard } from './TypeGuard';\n\nexport type Result = { message: string; location?: string; domain?: string };\n\nexport const toResult = (message: Text, location?: Text, domain: Text = ctx.env.domain): Result => ({\n message: message.toString(),\n location: location?.toString(),\n domain: domain?.toString(),\n});\n\nexport const isResult: TypeGuard<Result> = (r?: unknown): r is Result => isA<Result>(r, 'message');\n","import { Text } from './Text';\nimport { isResult, Result, toResult } from './Result';\nimport { Validatable } from './Validatable';\nimport { isDefined } from './Is';\nimport { toArray } from './Array';\n\nconst parse = (...rs: (Text | Result)[]): Result[] => toArray(...rs).map(r => (isResult(r) ? r : toResult(r)));\n\nexport class Results implements Validatable {\n public readonly results: Result[];\n\n constructor(...rs: (Text | Result)[]) {\n this.results = parse(...rs);\n }\n\n get length(): number {\n return this.results.length;\n }\n\n get isValid(): boolean {\n return this.results.length === 0;\n }\n\n add = (...rs: (Text | Result)[]): Results => toResults(...this.results, ...parse(...rs));\n}\n\nexport const toResults = (...r: (Text | Result)[]): Results => new Results(...r);\n\nexport const isResults = (r?: unknown): r is Results => isDefined(r) && r instanceof Results;\n","import { Get, ofGet, Predicate } from './Get';\nimport { TypeGuard } from './TypeGuard';\nimport { Func } from './Func';\nimport { isDefined, isEmpty } from './Is';\nimport { validate } from '../validation/Validate';\nimport { tryTo } from './Try';\n\nclass CaseBuilder<V> {\n is = {\n true: <T>(pred: Predicate<V>, out: Get<T, V>): Case<T, V> => this.case(pred, out),\n false: <T>(pred: Predicate<V>, out: Get<T, V>): Case<T, V> => this.case(!ofGet(pred, this.v), out),\n truthy: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!!prop(this.v), out),\n falsy: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!prop(this.v), out),\n defined: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(isDefined(prop(this.v)), out),\n empty: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(isEmpty(prop(this.v)), out),\n valid: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(validate(prop(this.v)).isValid, out),\n in: <T>(prop: Get<Array<V>, V>, out: Get<T, V>): Case<T, V> => this.case(ofGet(prop, this.v).includes(this.v), out),\n type: <T, U = unknown>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> => this.type<T, U>(guard, out),\n not: {\n true: <T>(pred: Predicate<V>, out: Get<T, V>): Case<T, V> => this.case(!ofGet(pred, this.v), out),\n false: <T>(pred: Predicate<V>, out: Get<T, V>): Case<T, V> => this.case(pred, out),\n truthy: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!prop(this.v), out),\n falsy: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!!prop(this.v), out),\n defined: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!isDefined(prop(this.v)), out),\n empty: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!isEmpty(prop(this.v)), out),\n valid: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!validate(prop(this.v)).isValid, out),\n in: <T>(prop: Get<Array<V>, V>, out: Get<T, V>): Case<T, V> => this.case(!ofGet(prop, this.v).includes(this.v), out),\n type: <T, U = unknown>(guard: TypeGuard<U>, out: Get<T, V>): Case<T, V> => this.case(v => !guard(v as unknown), out),\n },\n };\n if = this.is;\n\n constructor(readonly v: V) {}\n\n case<T>(pred: Predicate<V>, out: Get<T, V>): Case<T, V> {\n return new Case<T, V>(this.v).case(pred, out);\n }\n\n type<T, U = unknown>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> {\n return new Case<T, V>(this.v).type<U>(guard, out);\n }\n\n equals<T>(value: V, out: Get<T, V>): Case<T, V> {\n return new Case<T, V>(this.v).equals(value, out);\n }\n}\n\nclass Case<T, V = unknown> {\n is = {\n true: (pred: Predicate<V>, out: Get<T, V>): Case<T, V> => this.case(pred, out),\n false: (pred: Predicate<V>, out: Get<T, V>): Case<T, V> => this.case(!ofGet(pred, this.value), out),\n truthy: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!!prop(this.value), out),\n falsy: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!prop(this.value), out),\n defined: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(isDefined(prop(this.value)), out),\n empty: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(isEmpty(prop(this.value)), out),\n valid: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(validate(prop(this.value)).isValid, out),\n in: (prop: Get<Array<V>, V>, out: Get<T, V>): Case<T, V> => this.case(ofGet(prop, this.value).includes(this.value), out),\n type: <U>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> => this.type<U>(guard, out),\n not: {\n true: (pred: Predicate<V>, out: Get<T, V>): Case<T, V> => this.case(!ofGet(pred, this.value), out),\n false: (pred: Predicate<V>, out: Get<T, V>): Case<T, V> => this.case(pred, out),\n truthy: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!prop(this.value), out),\n falsy: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!!prop(this.value), out),\n defined: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!isDefined(prop(this.value)), out),\n empty: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!isEmpty(prop(this.value)), out),\n valid: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => this.case(!validate(prop(this.value)).isValid, out),\n in: (prop: Get<Array<V>, V>, out: Get<T, V>): Case<T, V> => this.case(!ofGet(prop, this.value).includes(this.value), out),\n type: <U>(guard: TypeGuard<U>, out: Get<T, V>): Case<T, V> => this.case(v => !guard(v as unknown), out),\n },\n };\n if = this.is;\n\n constructor(\n protected value: V,\n protected outcome?: T\n ) {}\n\n case(pred: Predicate<V>, out: Get<T, V>): Case<T, V> {\n return tryTo(pred, this.value)\n .is.true()\n .map(() => ofGet(out, this.value))\n .map(res => new Found(this.value, res) as Case<T, V>)\n .or(this);\n }\n\n type<U>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> {\n return tryTo(guard, this.value)\n .is.true()\n .map(() => out(this.value as unknown as U))\n .map(res => new Found(this.value, res) as Case<T, V>)\n .or(this);\n }\n\n equals(value: V, out: Get<T, V>): Case<T, V> {\n return this.case(this.value === value, out);\n }\n\n else(alt: Get<T, V>): T {\n return ofGet<T, V>(alt, this.value);\n }\n}\n\nclass Found<T, V> extends Case<T, V> {\n constructor(\n protected value: V,\n protected outcome: T\n ) {\n super(value, outcome);\n }\n\n case(pred: Predicate<V>, out: Get<T, V>): this {\n return this;\n }\n\n type<U>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> {\n return this;\n }\n\n equals(value: V, out: Get<T, V>): Case<T, V> {\n return this;\n }\n\n else(alt: Get<T, V>): T {\n return this.outcome;\n }\n}\n\nexport const choose = <V>(value: V) => new CaseBuilder<V>(value);\n","import { Constraint } from './Contraints';\nimport { when } from './When';\nimport type { TemplateOptions } from '../types/Template';\nimport { isResults, Results, toResults } from '../types/Results';\nimport { toName } from '../types/Constructor';\nimport { toResult } from '../types/Result';\nimport { List, toList } from '../types/List';\nimport { meta } from '../types/Meta';\nimport { isArray, isFunction } from '../types/Is';\nimport type { Text } from '../types/Text';\nimport { asString } from '../types/Text';\nimport { choose } from '../types/Case';\nimport { isEnum } from '../types/Enum';\nimport { isValue } from '../types/Value';\nimport { isValidatable } from '../types/Validatable';\nimport { text } from '../types/ToText';\n\nexport type Validator = { property: string | symbol; constraint: Constraint; text: Text; actual?: Text };\n\nexport const asResults = (subject: unknown, template: Text, options: TemplateOptions = {}): Results =>\n toResults(toResult(text(template).parse(subject, options), toName(subject)));\n\nconst validators = (subject: unknown): List<Validator> =>\n meta(subject)\n .keys<List<Validator>>('constraint')\n .reduce((list, vs) => list.add(vs), toList<Validator>());\n\nconst runValidator = (v: Validator, subject?: unknown): Results => {\n try {\n const actual = isFunction((subject as any)[v.property]) ? (subject as any)[v.property]() : (subject as any)[v.property];\n const constraint = v.constraint(actual);\n return isResults(constraint)\n ? constraint\n : !constraint\n ? asResults(subject, v.text, {\n ...v,\n actual,\n })\n : toResults();\n } catch (e) {\n return asResults(subject, asString(e));\n }\n};\n\nconst constraints = (subject?: unknown): Results =>\n validators(subject)\n .map(vs => runValidator(vs, subject))\n .reduce((rs, r) => rs.add(...r.results), toResults());\n\nexport const validate = (subject?: unknown): Results =>\n choose(subject)\n .is.not.defined(\n s => s,\n () => toResults('Subject is not defined.')\n )\n .type(isEnum, e => (e.isValid ? toResults() : asResults(e, 'This is not a valid {typeof}.')))\n .type(isValue, v => (v.isValid ? toResults() : asResults(v, 'This is not a valid {typeof}.')))\n .type(isArray, a => a.map(i => validate(i)).reduce((rs, r) => rs.add(...r.results), toResults()))\n .type(isValidatable, v => constraints(v))\n .else(toResults());\n\nexport const validateReject = <T>(subject: T): Promise<T> => when(subject).not.isValid.reject();\n\nexport const isValid = <T>(t: T): boolean => validate(t).isValid;\n","import { asString, Text } from './Text';\nimport { Enum } from './Enum';\nimport { isDefined } from './Is';\nimport { Id } from './Id';\n\nimport { text } from './ToText';\n\nexport class Exception extends Enum {\n static readonly AlreadyExists = new Exception('Subject already exists');\n static readonly DoesNotExist = new Exception('Does not exist');\n static readonly IsMissingId = new Exception('Subject is missing an id');\n static readonly IsNotImplemented = new Exception('Is not implemented');\n static readonly IsNotValid = new Exception('Is not valid');\n static readonly Unknown = new Exception('Unknown error');\n\n constructor(\n readonly message: string,\n id?: Id,\n readonly reason?: Text\n ) {\n super(message, id ?? text(message).pascal.toString());\n }\n\n static readonly CouldNotExecute = (target: Text): Exception => new Exception(`Could not execute ${target}.`, 'CouldNotExecute');\n\n static readonly CouldNotValidate = (target: Text): Exception => new Exception(`Could not validate ${target}.`, 'CouldNotValidate');\n\n static readonly EnvironmentVariableNotFound = (variable: Text): Exception =>\n new Exception(`Environment variable ${text(variable).upper} could not be found.`, 'EnvironmentVariableNotFound');\n\n because = (reason: Text): Exception => new Exception(this.message, this.id, reason);\n}\n\nexport const isException = (e?: unknown, t?: Text): e is Exception => e instanceof Exception && (isDefined(t) ? e.equals(asString(t)) : true);\nexport const isDoesNotExist = (e?: unknown): e is Exception => e instanceof Exception && Exception.DoesNotExist.equals(e);\n","import { validate } from './Validate';\nimport { Results } from '../types/Results';\nimport { Constructor } from '../types/Constructor';\nimport { Get, ofGet, Predicate } from '../types/Get';\nimport { isDefined, isEmpty, isIn } from '../types/Is';\nimport { toArray } from '../types/Array';\nimport { ErrorOrigin } from '../types/ErrorOrigin';\nimport { reject, resolve } from '../utils/Promise';\nimport { Exception } from '../types/Exception';\n\nexport class When<W> {\n constructor(\n readonly subject: W,\n readonly valid = true,\n private results?: Results\n ) {}\n\n get not(): When<W> {\n return this.clone(!this.valid);\n }\n\n get and(): When<W> {\n return this.clone(this.valid);\n }\n\n get isDefined(): When<W> {\n return this.clone(this.valid === isDefined(this.subject));\n }\n\n get isEmpty(): When<W> {\n return this.clone(this.valid === isEmpty(this.subject));\n }\n\n get isTrue(): When<W> {\n return this.clone(this.valid === !!this.subject);\n }\n\n get isValid(): When<W> {\n this.results = validate(this.subject);\n return this.clone(this.valid === this.results.isValid);\n }\n\n isInstance = <U>(c: Constructor<U>): When<W> => this.clone(this.valid === this.subject instanceof c);\n\n with = (pred: Predicate<W>): When<W> => this.clone(this.valid === ofGet(pred, this.subject));\n\n contains = (property: (w: W) => unknown): When<W> => this.clone(this.valid === isDefined(ofGet(property, this.subject)));\n\n in = (...items: W[]): When<W> => this.clone(this.valid === isIn(this.subject, toArray(...items)));\n\n is = (item: W): When<W> => this.clone(this.valid === (this.subject === item));\n\n reject = (error?: Get<ErrorOrigin, W>): Promise<NonNullable<W>> =>\n !this.valid ? resolve(this.subject as NonNullable<W>) : reject(ofGet(error, this.subject) ?? this.results ?? Exception.Unknown);\n\n recover = (f: (item: W) => W | Promise<W>): Promise<W> => resolve(!this.valid ? this.subject : f(this.subject));\n\n protected clone = (result = true): When<W> => new When(this.subject, result, this.results);\n}\n\nexport const when = <T>(subject: T): When<T> => new When<T>(subject);\n"],"mappings":"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","names":["template","s","k","template"]}
|
package/dist/chunk-5FAZA55F.mjs
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
entries,
|
|
3
|
-
values
|
|
4
|
-
} from "./chunk-2PL5VUHT.mjs";
|
|
5
|
-
import {
|
|
6
|
-
toList
|
|
7
|
-
} from "./chunk-AQXV7L65.mjs";
|
|
8
|
-
import {
|
|
9
|
-
on,
|
|
10
|
-
use
|
|
11
|
-
} from "./chunk-QK5XGRSM.mjs";
|
|
12
|
-
import {
|
|
13
|
-
isDefined
|
|
14
|
-
} from "./chunk-YYWOQNZQ.mjs";
|
|
15
|
-
|
|
16
|
-
// src/types/Meta.ts
|
|
17
|
-
import "reflect-metadata";
|
|
18
|
-
var ClassMeta = class {
|
|
19
|
-
constructor(subject, data = (subject.prototype ?? subject).constructor) {
|
|
20
|
-
this.subject = subject;
|
|
21
|
-
this.data = data;
|
|
22
|
-
}
|
|
23
|
-
get = (key) => Reflect.getMetadata(key, this.data);
|
|
24
|
-
set = (key, value) => {
|
|
25
|
-
Reflect.defineMetadata(key, value, this.data);
|
|
26
|
-
return value;
|
|
27
|
-
};
|
|
28
|
-
entries = () => entries(this.subject);
|
|
29
|
-
parse = (f, options = {}) => {
|
|
30
|
-
const { initial = {}, skipUndefined = false } = options;
|
|
31
|
-
return this.entries().reduce((a, [k, val]) => use(f(val), (v) => isDefined(v) || !skipUndefined ? on(a, (a2) => a2[k] = v) : a), initial);
|
|
32
|
-
};
|
|
33
|
-
properties = (key) => toList([...Object.getOwnPropertyNames(this.subject), ...Object.getOwnPropertyNames(Object.getPrototypeOf(this.subject))]).map((p) => this.property(p)).filter((p) => key ? p.get(key) : p);
|
|
34
|
-
keys = (key) => this.properties().map((p) => p.get(key)).reduce((list, u) => u ? list.add(u) : list, toList());
|
|
35
|
-
values = () => values(this.subject);
|
|
36
|
-
property = (property) => new PropertyMeta(this.subject, property);
|
|
37
|
-
};
|
|
38
|
-
var PropertyMeta = class {
|
|
39
|
-
constructor(subject, property, data = Reflect.getMetadata(property, subject)) {
|
|
40
|
-
this.subject = subject;
|
|
41
|
-
this.property = property;
|
|
42
|
-
this.data = data;
|
|
43
|
-
}
|
|
44
|
-
get value() {
|
|
45
|
-
return this.subject[this.property];
|
|
46
|
-
}
|
|
47
|
-
get = (key) => isDefined(this.data) && isDefined(this.data[key]) ? this.data[key] : void 0;
|
|
48
|
-
set = (key, value) => {
|
|
49
|
-
Reflect.defineMetadata(this.property, { ...this.data, [key]: value }, this.subject);
|
|
50
|
-
return value;
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
var meta = (subject) => new ClassMeta(subject ?? {});
|
|
54
|
-
|
|
55
|
-
export {
|
|
56
|
-
meta
|
|
57
|
-
};
|
|
58
|
-
//# sourceMappingURL=chunk-5FAZA55F.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/Meta.ts"],"sourcesContent":["import 'reflect-metadata';\nimport { List, toList } from './List';\nimport { isDefined } from './Is';\nimport { on, use } from './Constructor';\nimport { Optional } from './Types';\nimport { Entry, entries, values } from './Object';\n\ntype MetaParseOptions = { initial?: any; skipUndefined?: boolean };\n\nclass ClassMeta {\n constructor(\n readonly subject: any,\n private readonly data: any = (subject.prototype ?? subject).constructor\n ) {}\n\n get = <T>(key: string): T => Reflect.getMetadata(key, this.data) as T;\n\n set = <T>(key: string, value: T): T => {\n Reflect.defineMetadata(key, value, this.data);\n return value;\n };\n\n entries = <T = unknown>(): List<Entry<T>> => entries<T>(this.subject);\n\n parse = <Out, Value>(f: (v: Value) => Out, options: MetaParseOptions = {}): Record<string, Out> => {\n const { initial = {}, skipUndefined = false } = options;\n return this.entries<Value>().reduce((a, [k, val]) => use(f(val), v => (isDefined(v) || !skipUndefined ? on(a, a => (a[k] = v)) : a)), initial);\n };\n\n properties = (key?: string): List<PropertyMeta> =>\n toList([...Object.getOwnPropertyNames(this.subject), ...Object.getOwnPropertyNames(Object.getPrototypeOf(this.subject))])\n .map(p => this.property(p))\n .filter(p => (key ? p.get(key) : p));\n\n keys = <T = any>(key: string): List<T> =>\n this.properties()\n .map(p => p.get<T>(key))\n .reduce((list, u) => (u ? list.add(u) : list), toList<T>());\n\n values = <T = unknown>(): List<T> => values<T>(this.subject);\n\n property = (property: string | symbol): PropertyMeta => new PropertyMeta(this.subject, property);\n}\n\nclass PropertyMeta {\n constructor(\n readonly subject: any,\n readonly property: string | symbol,\n private readonly data = Reflect.getMetadata(property, subject)\n ) {}\n\n get value(): any {\n return this.subject[this.property];\n }\n\n get = <T>(key: string): Optional<T> => (isDefined(this.data) && isDefined(this.data[key]) ? (this.data[key] as T) : undefined);\n\n set = <T>(key: string, value: T): T => {\n Reflect.defineMetadata(this.property, { ...this.data, [key]: value }, this.subject);\n return value;\n };\n}\n\nexport const meta = (subject: unknown): ClassMeta => new ClassMeta(subject ?? {});\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO;AASP,IAAM,YAAN,MAAgB;AAAA,EACd,YACW,SACQ,QAAa,QAAQ,aAAa,SAAS,aAC5D;AAFS;AACQ;AAAA,EAChB;AAAA,EAEH,MAAM,CAAI,QAAmB,QAAQ,YAAY,KAAK,KAAK,IAAI;AAAA,EAE/D,MAAM,CAAI,KAAa,UAAgB;AACrC,YAAQ,eAAe,KAAK,OAAO,KAAK,IAAI;AAC5C,WAAO;AAAA,EACT;AAAA,EAEA,UAAU,MAAmC,QAAW,KAAK,OAAO;AAAA,EAEpE,QAAQ,CAAa,GAAsB,UAA4B,CAAC,MAA2B;AACjG,UAAM,EAAE,UAAU,CAAC,GAAG,gBAAgB,MAAM,IAAI;AAChD,WAAO,KAAK,QAAe,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,IAAI,EAAE,GAAG,GAAG,OAAM,UAAU,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAAA,OAAMA,GAAE,CAAC,IAAI,CAAE,IAAI,CAAE,GAAG,OAAO;AAAA,EAC/I;AAAA,EAEA,aAAa,CAAC,QACZ,OAAO,CAAC,GAAG,OAAO,oBAAoB,KAAK,OAAO,GAAG,GAAG,OAAO,oBAAoB,OAAO,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,EACrH,IAAI,OAAK,KAAK,SAAS,CAAC,CAAC,EACzB,OAAO,OAAM,MAAM,EAAE,IAAI,GAAG,IAAI,CAAE;AAAA,EAEvC,OAAO,CAAU,QACf,KAAK,WAAW,EACb,IAAI,OAAK,EAAE,IAAO,GAAG,CAAC,EACtB,OAAO,CAAC,MAAM,MAAO,IAAI,KAAK,IAAI,CAAC,IAAI,MAAO,OAAU,CAAC;AAAA,EAE9D,SAAS,MAA4B,OAAU,KAAK,OAAO;AAAA,EAE3D,WAAW,CAAC,aAA4C,IAAI,aAAa,KAAK,SAAS,QAAQ;AACjG;AAEA,IAAM,eAAN,MAAmB;AAAA,EACjB,YACW,SACA,UACQ,OAAO,QAAQ,YAAY,UAAU,OAAO,GAC7D;AAHS;AACA;AACQ;AAAA,EAChB;AAAA,EAEH,IAAI,QAAa;AACf,WAAO,KAAK,QAAQ,KAAK,QAAQ;AAAA,EACnC;AAAA,EAEA,MAAM,CAAI,QAA8B,UAAU,KAAK,IAAI,KAAK,UAAU,KAAK,KAAK,GAAG,CAAC,IAAK,KAAK,KAAK,GAAG,IAAU;AAAA,EAEpH,MAAM,CAAI,KAAa,UAAgB;AACrC,YAAQ,eAAe,KAAK,UAAU,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,KAAK,OAAO;AAClF,WAAO;AAAA,EACT;AACF;AAEO,IAAM,OAAO,CAAC,YAAgC,IAAI,UAAU,WAAW,CAAC,CAAC;","names":["a"]}
|