@thisisagile/easy 17.19.0 → 17.20.1
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-S5I6XCJK.mjs +60 -0
- package/dist/chunk-S5I6XCJK.mjs.map +1 -0
- package/dist/{chunk-ZEZBMEWP.mjs → chunk-WVYZIPWC.mjs} +1 -1
- package/dist/chunk-WVYZIPWC.mjs.map +1 -0
- package/dist/domain/Repo.mjs +1 -1
- package/dist/domain/Typo.d.ts +19 -1
- package/dist/domain/Typo.mjs +47 -1
- package/dist/domain/Typo.mjs.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +58 -14
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +0 -4
- package/dist/index.mjs.map +1 -1
- package/dist/services/MappedRouteGateway.mjs +1 -1
- package/dist/services/RouteGateway.d.ts +15 -15
- package/dist/services/RouteGateway.mjs +1 -1
- package/dist/services/ViewRouteGateway.mjs +1 -1
- package/dist/types/Repository.d.ts +3 -3
- package/dist/types/Repository.mjs +1 -1
- package/dist/types/Uri.d.ts +14 -11
- package/dist/types/Uri.mjs.map +1 -1
- package/package.json +1 -1
- package/src/domain/Typo.ts +58 -2
- package/src/index.ts +0 -1
- package/src/services/RouteGateway.ts +26 -25
- package/src/types/Repository.ts +3 -3
- package/src/types/Uri.ts +12 -11
- package/dist/chunk-3XD77BIN.mjs +0 -57
- package/dist/chunk-3XD77BIN.mjs.map +0 -1
- package/dist/chunk-ZEZBMEWP.mjs.map +0 -1
package/dist/index.mjs
CHANGED
|
@@ -111,8 +111,4 @@ export * from "./utils/Wait";
|
|
|
111
111
|
export * from "./validation/Contraints";
|
|
112
112
|
export * from "./validation/Validate";
|
|
113
113
|
export * from "./validation/When";
|
|
114
|
-
import { IdName } from "./types/IdName";
|
|
115
|
-
export {
|
|
116
|
-
IdName
|
|
117
|
-
};
|
|
118
114
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './data/Condition';\nexport * from './data/InMemoryGateway';\nexport * from './data/Database';\nexport * from './data/DataProvider';\nexport * from './data/Field';\nexport * from './data/Query';\nexport * from './data/QueryProvider';\n\nexport * from './domain/Audit';\nexport * from './domain/Child';\nexport * from './domain/DateTime';\nexport * from './domain/Entity';\nexport * from './domain/Struct';\nexport * from './domain/Repo';\nexport * from './domain/Typo';\n\nexport * from './http/CacheControl';\nexport * from './http/ContentType';\nexport * from './http/HttpHeader';\nexport * from './http/HttpStatus';\nexport * from './http/HttpVerb';\nexport * from './http/Request';\nexport * from './http/RequestOptions';\nexport * from './http/RequestProvider';\nexport * from './http/Response';\nexport * from './http/RestResult';\nexport * from './http/toResponse';\n\nexport * from './process/App';\nexport * from './process/Manage';\nexport * from './process/Scope';\nexport * from './process/Search';\nexport * from './process/UseCase';\n\nexport * from './resources/Req';\n\nexport * from './security/Jwt';\n\nexport * from './services/Api';\nexport * from './services/ApiGateway';\nexport * from './services/AxiosProvider';\nexport * from './services/MappedRouteGateway';\nexport * from './services/RouteGateway';\nexport * from './services/ViewRouteGateway';\n\nexport * from './sql/Clause';\nexport * from './sql/Column';\nexport * from './sql/Delete';\nexport * from './sql/Insert';\nexport * from './sql/Join';\nexport * from './sql/SqlQuery';\nexport * from './sql/Select';\nexport * from './sql/Table';\nexport * from './sql/TableGateway';\nexport * from './sql/Update';\n\nexport * from './types/AnyKey';\nexport * from './types/Array';\nexport * from './types/Builder';\nexport * from './types/Cache';\nexport * from './types/CacheAge';\nexport * from './types/Case';\nexport * from './types/Constructor';\nexport * from './types/Context';\nexport * from './types/Currency';\nexport * from './types/Enum';\nexport * from './types/Environment';\nexport * from './types/ErrorOrigin';\nexport * from './types/Exception';\nexport * from './types/Falsy';\nexport * from './types/Func';\nexport * from './types/Gateway';\nexport * from './types/Get';\nexport * from './types/Id';\nexport * from './types/Identity';\nexport * from './types/IdName';\nexport * from './types/Is';\nexport * from './types/IsA';\nexport * from './types/IsDate';\nexport * from './types/IsEqual';\nexport * from './types/Json';\nexport * from './types/List';\nexport * from './types/Message';\nexport * from './types/Meta';\nexport * from './types/Nullish';\nexport * from './types/Number';\nexport * from './types/Object';\nexport * from './types/PageList';\nexport * from './types/Parser';\nexport * from './types/Primitive';\nexport * from './types/Repository';\nexport * from './types/Result';\nexport * from './types/Results';\nexport * from './types/Sort';\nexport * from './types/Tag';\nexport * from './types/Template';\nexport * from './types/Text';\nexport * from './types/Try';\nexport * from './types/TypeGuard';\nexport * from './types/Types';\nexport * from './types/Uri';\nexport * from './types/Uuid';\nexport * from './types/Validatable';\nexport * from './types/Value';\n\nexport * from './utils/Base64';\nexport * from './utils/Convert';\nexport * from './utils/If';\nexport * from './utils/Loading';\nexport * from './utils/Log';\nexport * from './utils/Mapper';\nexport * from './utils/Promise';\nexport * from './utils/Property';\nexport * from './utils/Seconds';\nexport * from './utils/State';\nexport * from './utils/Sentence';\nexport * from './utils/Traverse';\nexport * from './utils/View';\nexport * from './utils/Wait';\n\nexport * from './validation/Contraints';\nexport * from './validation/Validate';\nexport * from './validation/When';\
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './data/Condition';\nexport * from './data/InMemoryGateway';\nexport * from './data/Database';\nexport * from './data/DataProvider';\nexport * from './data/Field';\nexport * from './data/Query';\nexport * from './data/QueryProvider';\n\nexport * from './domain/Audit';\nexport * from './domain/Child';\nexport * from './domain/DateTime';\nexport * from './domain/Entity';\nexport * from './domain/Struct';\nexport * from './domain/Repo';\nexport * from './domain/Typo';\n\nexport * from './http/CacheControl';\nexport * from './http/ContentType';\nexport * from './http/HttpHeader';\nexport * from './http/HttpStatus';\nexport * from './http/HttpVerb';\nexport * from './http/Request';\nexport * from './http/RequestOptions';\nexport * from './http/RequestProvider';\nexport * from './http/Response';\nexport * from './http/RestResult';\nexport * from './http/toResponse';\n\nexport * from './process/App';\nexport * from './process/Manage';\nexport * from './process/Scope';\nexport * from './process/Search';\nexport * from './process/UseCase';\n\nexport * from './resources/Req';\n\nexport * from './security/Jwt';\n\nexport * from './services/Api';\nexport * from './services/ApiGateway';\nexport * from './services/AxiosProvider';\nexport * from './services/MappedRouteGateway';\nexport * from './services/RouteGateway';\nexport * from './services/ViewRouteGateway';\n\nexport * from './sql/Clause';\nexport * from './sql/Column';\nexport * from './sql/Delete';\nexport * from './sql/Insert';\nexport * from './sql/Join';\nexport * from './sql/SqlQuery';\nexport * from './sql/Select';\nexport * from './sql/Table';\nexport * from './sql/TableGateway';\nexport * from './sql/Update';\n\nexport * from './types/AnyKey';\nexport * from './types/Array';\nexport * from './types/Builder';\nexport * from './types/Cache';\nexport * from './types/CacheAge';\nexport * from './types/Case';\nexport * from './types/Constructor';\nexport * from './types/Context';\nexport * from './types/Currency';\nexport * from './types/Enum';\nexport * from './types/Environment';\nexport * from './types/ErrorOrigin';\nexport * from './types/Exception';\nexport * from './types/Falsy';\nexport * from './types/Func';\nexport * from './types/Gateway';\nexport * from './types/Get';\nexport * from './types/Id';\nexport * from './types/Identity';\nexport * from './types/IdName';\nexport * from './types/Is';\nexport * from './types/IsA';\nexport * from './types/IsDate';\nexport * from './types/IsEqual';\nexport * from './types/Json';\nexport * from './types/List';\nexport * from './types/Message';\nexport * from './types/Meta';\nexport * from './types/Nullish';\nexport * from './types/Number';\nexport * from './types/Object';\nexport * from './types/PageList';\nexport * from './types/Parser';\nexport * from './types/Primitive';\nexport * from './types/Repository';\nexport * from './types/Result';\nexport * from './types/Results';\nexport * from './types/Sort';\nexport * from './types/Tag';\nexport * from './types/Template';\nexport * from './types/Text';\nexport * from './types/Try';\nexport * from './types/TypeGuard';\nexport * from './types/Types';\nexport * from './types/Uri';\nexport * from './types/Uuid';\nexport * from './types/Validatable';\nexport * from './types/Value';\n\nexport * from './utils/Base64';\nexport * from './utils/Convert';\nexport * from './utils/If';\nexport * from './utils/Loading';\nexport * from './utils/Log';\nexport * from './utils/Mapper';\nexport * from './utils/Promise';\nexport * from './utils/Property';\nexport * from './utils/Seconds';\nexport * from './utils/State';\nexport * from './utils/Sentence';\nexport * from './utils/Traverse';\nexport * from './utils/View';\nexport * from './utils/Wait';\n\nexport * from './validation/Contraints';\nexport * from './validation/Validate';\nexport * from './validation/When';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AAEd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { Api
|
|
1
|
+
import { Api } from './Api';
|
|
2
2
|
import { ApiGateway } from './ApiGateway';
|
|
3
3
|
import { Func } from '../types/Func';
|
|
4
|
-
import { Uri } from '../types/Uri';
|
|
4
|
+
import { Uri, UriExpandProps } from '../types/Uri';
|
|
5
5
|
import { PageList } from '../types/PageList';
|
|
6
6
|
import { Json, JsonValue } from '../types/Json';
|
|
7
7
|
import { Id } from '../types/Id';
|
|
8
8
|
import { Optional } from '../types/Types';
|
|
9
9
|
import { List } from '../types/List';
|
|
10
|
-
export declare class RouteGateway extends ApiGateway {
|
|
11
|
-
readonly route: Func<Uri
|
|
12
|
-
readonly routeId: Func<Uri
|
|
10
|
+
export declare class RouteGateway<Props extends UriExpandProps = UriExpandProps> extends ApiGateway {
|
|
11
|
+
readonly route: Func<Uri<Props>>;
|
|
12
|
+
readonly routeId: Func<Uri<Props>>;
|
|
13
13
|
readonly api: Api;
|
|
14
|
-
constructor(route: Func<Uri
|
|
15
|
-
all(options?:
|
|
16
|
-
byId(id: Id
|
|
14
|
+
constructor(route: Func<Uri<Props>>, routeId: Func<Uri<Props>>, api?: Api);
|
|
15
|
+
all(options?: Props): Promise<PageList<Json>>;
|
|
16
|
+
byId(id: Id): Promise<Optional<Json>>;
|
|
17
17
|
byIds(...ids: Id[]): Promise<List<Json>>;
|
|
18
|
-
search(q: JsonValue, options?:
|
|
19
|
-
exists(id: Id
|
|
20
|
-
add(item: Json
|
|
21
|
-
filter(options?:
|
|
22
|
-
update(item: Json
|
|
23
|
-
upsert(item: Json
|
|
24
|
-
remove(id: Id
|
|
18
|
+
search(q: JsonValue, options?: Props): Promise<PageList<Json>>;
|
|
19
|
+
exists(id: Id): Promise<boolean>;
|
|
20
|
+
add(item: Json): Promise<Json>;
|
|
21
|
+
filter(options?: Props): Promise<PageList<Json>>;
|
|
22
|
+
update(item: Json): Promise<Json>;
|
|
23
|
+
upsert(item: Json): Promise<Json>;
|
|
24
|
+
remove(id: Id): Promise<boolean>;
|
|
25
25
|
}
|
|
@@ -12,8 +12,8 @@ export declare class Repository<T, Options = FetchOptions> {
|
|
|
12
12
|
search(q: JsonValue, options?: Options): Promise<PageList<T>>;
|
|
13
13
|
filter(options?: Options): Promise<PageList<T>>;
|
|
14
14
|
exists(id: Id): Promise<boolean>;
|
|
15
|
-
add(t: T | Json): Promise<T>;
|
|
16
|
-
update(id: Id, json: Json): Promise<T>;
|
|
15
|
+
add(t: Partial<T> | Json): Promise<T>;
|
|
16
|
+
update(id: Id, json: Partial<T> | Json): Promise<T>;
|
|
17
17
|
remove(id: Id): Promise<boolean>;
|
|
18
|
-
upsert(id: Id, item: Json): Promise<T>;
|
|
18
|
+
upsert(id: Id, item: Partial<T> | Json): Promise<T>;
|
|
19
19
|
}
|
package/dist/types/Uri.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare const toSegment: (key?: Text, { segment, query, }?: {
|
|
|
13
13
|
}) => Segment;
|
|
14
14
|
export declare const uri: {
|
|
15
15
|
host: (key?: string) => Segment;
|
|
16
|
-
resource: (resource: Uri) => Segment;
|
|
16
|
+
resource: <Props extends UriExpandProps>(resource: Uri<Props>) => Segment;
|
|
17
17
|
segment: (key?: Text) => Segment;
|
|
18
18
|
path: (key: Text) => Segment;
|
|
19
19
|
query: (key: Text) => Segment;
|
|
@@ -23,23 +23,26 @@ type Prop = {
|
|
|
23
23
|
segment: Segment;
|
|
24
24
|
value: any;
|
|
25
25
|
};
|
|
26
|
-
export type Uri = {
|
|
27
|
-
id: (id?: unknown) => Uri
|
|
28
|
-
ids: (ids: OneOrMore<unknown>) => Uri
|
|
29
|
-
query: (q?: unknown) => Uri
|
|
30
|
-
sort: (q?: any) => Uri
|
|
31
|
-
skip: (n?: number) => Uri
|
|
32
|
-
take: (n?: number) => Uri
|
|
26
|
+
export type Uri<Props extends UriExpandProps = UriExpandProps> = {
|
|
27
|
+
id: (id?: unknown) => Uri<Props>;
|
|
28
|
+
ids: (ids: OneOrMore<unknown>) => Uri<Props>;
|
|
29
|
+
query: (q?: unknown) => Uri<Props>;
|
|
30
|
+
sort: (q?: any) => Uri<Props>;
|
|
31
|
+
skip: (n?: number) => Uri<Props>;
|
|
32
|
+
take: (n?: number) => Uri<Props>;
|
|
33
33
|
path: string;
|
|
34
34
|
route: (resource: string) => string;
|
|
35
35
|
isInternal: boolean;
|
|
36
36
|
toString: () => string;
|
|
37
|
+
expand: (props: Partial<Props>) => Uri<Props>;
|
|
37
38
|
};
|
|
38
39
|
export type UriExpandProps = {
|
|
39
|
-
q
|
|
40
|
-
s
|
|
40
|
+
q?: string;
|
|
41
|
+
s?: string;
|
|
42
|
+
skip?: number;
|
|
43
|
+
take?: number;
|
|
41
44
|
};
|
|
42
|
-
export declare class EasyUri<Props = UriExpandProps> implements Uri {
|
|
45
|
+
export declare class EasyUri<Props extends UriExpandProps = UriExpandProps> implements Uri<Props> {
|
|
43
46
|
readonly segments: Segment[];
|
|
44
47
|
static readonly id: Segment;
|
|
45
48
|
static readonly ids: Segment;
|
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: (resource: Uri): 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 = {\n id: (id?: unknown) => Uri
|
|
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 = 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/package.json
CHANGED
package/src/domain/Typo.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { View } from '../utils/View';
|
|
2
2
|
import { FetchOptions, Gateway } from '../types/Gateway';
|
|
3
3
|
import { Repository } from '../types/Repository';
|
|
4
|
-
import { Json, JsonValue } from '../types/Json';
|
|
4
|
+
import { Json, JsonValue, toJson } from '../types/Json';
|
|
5
5
|
import { PageList } from '../types/PageList';
|
|
6
6
|
import { Id, Key } from '../types/Id';
|
|
7
7
|
import { when } from '../validation/When';
|
|
8
8
|
import { Exception } from '../types/Exception';
|
|
9
9
|
import { List } from '../types/List';
|
|
10
|
+
import { RouteGateway } from '../services/RouteGateway';
|
|
11
|
+
import { RouteOptions } from '../services/Api';
|
|
10
12
|
|
|
11
|
-
export class Typo<T, Options =
|
|
13
|
+
export class Typo<T, Options extends RouteOptions = RouteOptions> extends Repository<T, Options> {
|
|
12
14
|
constructor(
|
|
13
15
|
protected view: View<T>,
|
|
14
16
|
private readonly gateway: Gateway<Options>
|
|
@@ -53,3 +55,57 @@ export class Typo<T, Options = FetchOptions> extends Repository<T, Options> {
|
|
|
53
55
|
return this.gateway.exists(id);
|
|
54
56
|
}
|
|
55
57
|
}
|
|
58
|
+
|
|
59
|
+
export class Agent<T, Options extends FetchOptions = FetchOptions> extends Repository<T, Options> {
|
|
60
|
+
constructor(private gateway: RouteGateway) {
|
|
61
|
+
super();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
all(options?: Options): Promise<PageList<T>> {
|
|
65
|
+
return this.gateway.all(options) as Promise<PageList<T>>;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
byId(id: Id): Promise<T> {
|
|
69
|
+
return this.gateway.byId(id) as Promise<T>;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
byIds(...ids: Id[]): Promise<List<T>> {
|
|
73
|
+
return this.gateway.byIds(...ids) as Promise<List<T>>;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
byKey(key: Key, options?: Options): Promise<PageList<T>> {
|
|
77
|
+
return this.gateway.by('key', key, options) as Promise<PageList<T>>;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {
|
|
81
|
+
return this.gateway.by(key.toString(), value, options) as Promise<PageList<T>>;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
search(q: JsonValue, options?: Options): Promise<PageList<T>> {
|
|
85
|
+
return this.gateway.search(q, options) as Promise<PageList<T>>;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
filter(options?: Options): Promise<PageList<T>> {
|
|
89
|
+
return this.gateway.filter(options) as Promise<PageList<T>>;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
exists(id: Id): Promise<boolean> {
|
|
93
|
+
return this.gateway.exists(id);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
add(t: Partial<T>): Promise<T> {
|
|
97
|
+
return this.gateway.add(toJson(t)) as Promise<T>;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
update(id: Id, t: Partial<T>): Promise<T> {
|
|
101
|
+
return this.gateway.update({ ...toJson(t), id }) as Promise<T>;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
upsert(id: Id, t: Partial<T>): Promise<T> {
|
|
105
|
+
return this.gateway.upsert({ ...toJson(t), id }) as Promise<T>;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
remove(id: Id): Promise<boolean> {
|
|
109
|
+
return this.gateway.remove(id);
|
|
110
|
+
}
|
|
111
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Api
|
|
1
|
+
import { Api } from './Api';
|
|
2
2
|
import { ApiGateway } from './ApiGateway';
|
|
3
3
|
import { Func } from '../types/Func';
|
|
4
|
-
import { Uri } from '../types/Uri';
|
|
4
|
+
import { Uri, UriExpandProps } from '../types/Uri';
|
|
5
5
|
import { PageList } from '../types/PageList';
|
|
6
6
|
import { Json, JsonValue } from '../types/Json';
|
|
7
7
|
import { Id } from '../types/Id';
|
|
@@ -9,55 +9,56 @@ import { Optional } from '../types/Types';
|
|
|
9
9
|
import { List } from '../types/List';
|
|
10
10
|
import { toArray } from '../types/Array';
|
|
11
11
|
import { HttpStatus } from '../http/HttpStatus';
|
|
12
|
+
import { isDefined } from '../types/Is';
|
|
12
13
|
|
|
13
|
-
export class RouteGateway extends ApiGateway {
|
|
14
|
+
export class RouteGateway<Props extends UriExpandProps = UriExpandProps> extends ApiGateway {
|
|
14
15
|
constructor(
|
|
15
|
-
readonly route: Func<Uri
|
|
16
|
-
readonly routeId: Func<Uri
|
|
16
|
+
readonly route: Func<Uri<Props>>,
|
|
17
|
+
readonly routeId: Func<Uri<Props>>,
|
|
17
18
|
readonly api: Api = new Api()
|
|
18
19
|
) {
|
|
19
20
|
super(api);
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
all(options?:
|
|
23
|
-
return this.get(this.route(), options);
|
|
23
|
+
all(options?: Props): Promise<PageList<Json>> {
|
|
24
|
+
return this.get(this.route().expand(options ?? {}) as Uri, options);
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
byId(id: Id
|
|
27
|
-
return this.getOne(this.routeId().id(id));
|
|
27
|
+
byId(id: Id): Promise<Optional<Json>> {
|
|
28
|
+
return this.getOne(this.routeId().id(id) as Uri);
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
byIds(...ids: Id[]): Promise<List<Json>> {
|
|
31
|
-
return this.get(this.route().ids(toArray(...ids)));
|
|
32
|
+
return this.get(this.route().ids(toArray(...ids)) as Uri);
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
search(q: JsonValue, options?:
|
|
35
|
-
return this.get(this.route().
|
|
35
|
+
search(q: JsonValue, options?: Props): Promise<PageList<Json>> {
|
|
36
|
+
return this.get(this.route().expand({ ...options, q } as Props) as Uri);
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
exists(id: Id
|
|
39
|
-
return this.
|
|
40
|
-
.then(r => r
|
|
39
|
+
exists(id: Id): Promise<boolean> {
|
|
40
|
+
return this.byId(id)
|
|
41
|
+
.then(r => isDefined(r))
|
|
41
42
|
.catch(r => (HttpStatus.NotFound.equals(r.status) ? false : Promise.reject(r)));
|
|
42
43
|
}
|
|
43
44
|
|
|
44
|
-
add(item: Json
|
|
45
|
-
return this.post(this.route(), item
|
|
45
|
+
add(item: Json): Promise<Json> {
|
|
46
|
+
return this.post(this.route() as Uri, item);
|
|
46
47
|
}
|
|
47
48
|
|
|
48
|
-
filter(options?:
|
|
49
|
-
return this.postSearch(this.route()
|
|
49
|
+
filter(options?: Props): Promise<PageList<Json>> {
|
|
50
|
+
return this.postSearch(this.route().expand(options ?? {}) as Uri);
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
update(item: Json
|
|
53
|
-
return this.patch(this.routeId().id(item.id), item
|
|
53
|
+
update(item: Json): Promise<Json> {
|
|
54
|
+
return this.patch(this.routeId().id(item.id) as Uri, item);
|
|
54
55
|
}
|
|
55
56
|
|
|
56
|
-
upsert(item: Json
|
|
57
|
-
return this.put(this.routeId().id(item.id), item
|
|
57
|
+
upsert(item: Json): Promise<Json> {
|
|
58
|
+
return this.put(this.routeId().id(item.id) as Uri, item);
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
remove(id: Id
|
|
61
|
-
return this.delete(this.routeId().id(id)
|
|
61
|
+
remove(id: Id): Promise<boolean> {
|
|
62
|
+
return this.delete(this.routeId().id(id) as Uri);
|
|
62
63
|
}
|
|
63
64
|
}
|
package/src/types/Repository.ts
CHANGED
|
@@ -39,11 +39,11 @@ export class Repository<T, Options = FetchOptions> {
|
|
|
39
39
|
return reject(Exception.IsNotImplemented);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
add(t: T | Json): Promise<T> {
|
|
42
|
+
add(t: Partial<T> | Json): Promise<T> {
|
|
43
43
|
return reject(Exception.IsNotImplemented);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
update(id: Id, json: Json): Promise<T> {
|
|
46
|
+
update(id: Id, json: Partial<T> | Json): Promise<T> {
|
|
47
47
|
return reject(Exception.IsNotImplemented);
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -51,7 +51,7 @@ export class Repository<T, Options = FetchOptions> {
|
|
|
51
51
|
return reject(Exception.IsNotImplemented);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
upsert(id: Id, item: Json): Promise<T> {
|
|
54
|
+
upsert(id: Id, item: Partial<T> | Json): Promise<T> {
|
|
55
55
|
return reject(Exception.IsNotImplemented);
|
|
56
56
|
}
|
|
57
57
|
}
|
package/src/types/Uri.ts
CHANGED
|
@@ -29,7 +29,7 @@ export const toSegment = (
|
|
|
29
29
|
|
|
30
30
|
export const uri = {
|
|
31
31
|
host: (key?: string): Segment => toSegment(key, { segment: key ?? ctx.env.host ?? '$host' }),
|
|
32
|
-
resource: (resource: Uri): Segment => toSegment(toName(resource, 'Uri'), { segment: toName(resource, 'Uri') }),
|
|
32
|
+
resource: <Props extends UriExpandProps>(resource: Uri<Props>): Segment => toSegment(toName(resource, 'Uri'), { segment: toName(resource, 'Uri') }),
|
|
33
33
|
segment: (key?: Text): Segment => toSegment(key, { segment: key as string }),
|
|
34
34
|
path: (key: Text): Segment => toSegment(key, { segment: `:${key}` }),
|
|
35
35
|
query: (key: Text): Segment =>
|
|
@@ -51,22 +51,23 @@ const toRoute = (...segments: Segment[]): string =>
|
|
|
51
51
|
.mapDefined(s => s.segment)
|
|
52
52
|
.join('/');
|
|
53
53
|
|
|
54
|
-
export type Uri = {
|
|
55
|
-
id: (id?: unknown) => Uri
|
|
56
|
-
ids: (ids: OneOrMore<unknown>) => Uri
|
|
57
|
-
query: (q?: unknown) => Uri
|
|
58
|
-
sort: (q?: any) => Uri
|
|
59
|
-
skip: (n?: number) => Uri
|
|
60
|
-
take: (n?: number) => Uri
|
|
54
|
+
export type Uri<Props extends UriExpandProps = UriExpandProps> = {
|
|
55
|
+
id: (id?: unknown) => Uri<Props>;
|
|
56
|
+
ids: (ids: OneOrMore<unknown>) => Uri<Props>;
|
|
57
|
+
query: (q?: unknown) => Uri<Props>;
|
|
58
|
+
sort: (q?: any) => Uri<Props>;
|
|
59
|
+
skip: (n?: number) => Uri<Props>;
|
|
60
|
+
take: (n?: number) => Uri<Props>;
|
|
61
61
|
path: string;
|
|
62
62
|
route: (resource: string) => string;
|
|
63
63
|
isInternal: boolean;
|
|
64
64
|
toString: () => string;
|
|
65
|
+
expand: (props: Partial<Props>) => Uri<Props>;
|
|
65
66
|
};
|
|
66
67
|
|
|
67
|
-
export type UriExpandProps = { q
|
|
68
|
+
export type UriExpandProps = { q?: string; s?: string; skip?: number; take?: number };
|
|
68
69
|
|
|
69
|
-
export class EasyUri<Props = UriExpandProps> implements Uri {
|
|
70
|
+
export class EasyUri<Props extends UriExpandProps = UriExpandProps> implements Uri<Props> {
|
|
70
71
|
static readonly id = uri.path('id');
|
|
71
72
|
static readonly ids = uri.query('ids');
|
|
72
73
|
static readonly query = uri.query('q');
|
|
@@ -126,7 +127,7 @@ export class EasyUri<Props = UriExpandProps> implements Uri {
|
|
|
126
127
|
take = (items?: number): this => this.set(EasyUri.take, items);
|
|
127
128
|
|
|
128
129
|
expand(props: Partial<Props>): this {
|
|
129
|
-
return entries(props)
|
|
130
|
+
return entries(props as any)
|
|
130
131
|
.filter(([_, v]) => isNotEmpty(v))
|
|
131
132
|
.reduce((u, [k, v]) => (isBoolean(v) ? u.set(uri.boolean(k), v) : u.set(uri.query(k), toArray(v).join(','))), this);
|
|
132
133
|
}
|
package/dist/chunk-3XD77BIN.mjs
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ApiGateway
|
|
3
|
-
} from "./chunk-3MDXTFJG.mjs";
|
|
4
|
-
import {
|
|
5
|
-
Api
|
|
6
|
-
} from "./chunk-RTTVCEWR.mjs";
|
|
7
|
-
import {
|
|
8
|
-
HttpStatus
|
|
9
|
-
} from "./chunk-H27UMLDT.mjs";
|
|
10
|
-
import {
|
|
11
|
-
toArray
|
|
12
|
-
} from "./chunk-CO2AFYVD.mjs";
|
|
13
|
-
|
|
14
|
-
// src/services/RouteGateway.ts
|
|
15
|
-
var RouteGateway = class extends ApiGateway {
|
|
16
|
-
constructor(route, routeId, api = new Api()) {
|
|
17
|
-
super(api);
|
|
18
|
-
this.route = route;
|
|
19
|
-
this.routeId = routeId;
|
|
20
|
-
this.api = api;
|
|
21
|
-
}
|
|
22
|
-
all(options) {
|
|
23
|
-
return this.get(this.route(), options);
|
|
24
|
-
}
|
|
25
|
-
byId(id, options) {
|
|
26
|
-
return this.getOne(this.routeId().id(id));
|
|
27
|
-
}
|
|
28
|
-
byIds(...ids) {
|
|
29
|
-
return this.get(this.route().ids(toArray(...ids)));
|
|
30
|
-
}
|
|
31
|
-
search(q, options) {
|
|
32
|
-
return this.get(this.route().query(q), options);
|
|
33
|
-
}
|
|
34
|
-
exists(id, options) {
|
|
35
|
-
return this.get(this.routeId().id(id)).then((r) => r.length === 1).catch((r) => HttpStatus.NotFound.equals(r.status) ? false : Promise.reject(r));
|
|
36
|
-
}
|
|
37
|
-
add(item, options) {
|
|
38
|
-
return this.post(this.route(), item, options);
|
|
39
|
-
}
|
|
40
|
-
filter(options) {
|
|
41
|
-
return this.postSearch(this.route(), options);
|
|
42
|
-
}
|
|
43
|
-
update(item, options) {
|
|
44
|
-
return this.patch(this.routeId().id(item.id), item, options);
|
|
45
|
-
}
|
|
46
|
-
upsert(item, options) {
|
|
47
|
-
return this.put(this.routeId().id(item.id), item, options);
|
|
48
|
-
}
|
|
49
|
-
remove(id, options) {
|
|
50
|
-
return this.delete(this.routeId().id(id), options);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
export {
|
|
55
|
-
RouteGateway
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=chunk-3XD77BIN.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/services/RouteGateway.ts"],"sourcesContent":["import { Api, RouteOptions } from './Api';\nimport { ApiGateway } from './ApiGateway';\nimport { Func } from '../types/Func';\nimport { Uri } from '../types/Uri';\nimport { PageList } from '../types/PageList';\nimport { Json, JsonValue } from '../types/Json';\nimport { Id } from '../types/Id';\nimport { Optional } from '../types/Types';\nimport { List } from '../types/List';\nimport { toArray } from '../types/Array';\nimport { HttpStatus } from '../http/HttpStatus';\n\nexport class RouteGateway extends ApiGateway {\n constructor(\n readonly route: Func<Uri>,\n readonly routeId: Func<Uri>,\n readonly api: Api = new Api()\n ) {\n super(api);\n }\n\n all(options?: RouteOptions): Promise<PageList<Json>> {\n return this.get(this.route(), options);\n }\n\n byId(id: Id, options?: RouteOptions): Promise<Optional<Json>> {\n return this.getOne(this.routeId().id(id));\n }\n\n byIds(...ids: Id[]): Promise<List<Json>> {\n return this.get(this.route().ids(toArray(...ids)));\n }\n\n search(q: JsonValue, options?: RouteOptions): Promise<PageList<Json>> {\n return this.get(this.route().query(q), options);\n }\n\n exists(id: Id, options?: RouteOptions): Promise<boolean> {\n return this.get(this.routeId().id(id))\n .then(r => r.length === 1)\n .catch(r => (HttpStatus.NotFound.equals(r.status) ? false : Promise.reject(r)));\n }\n\n add(item: Json, options?: RouteOptions): Promise<Json> {\n return this.post(this.route(), item, options);\n }\n\n filter(options?: RouteOptions): Promise<PageList<Json>> {\n return this.postSearch(this.route(), options);\n }\n\n update(item: Json, options?: RouteOptions): Promise<Json> {\n return this.patch(this.routeId().id(item.id), item, options);\n }\n\n upsert(item: Json, options?: RouteOptions): Promise<Json> {\n return this.put(this.routeId().id(item.id), item, options);\n }\n\n remove(id: Id, options?: RouteOptions): Promise<boolean> {\n return this.delete(this.routeId().id(id), options);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAYO,IAAM,eAAN,cAA2B,WAAW;AAAA,EAC3C,YACW,OACA,SACA,MAAW,IAAI,IAAI,GAC5B;AACA,UAAM,GAAG;AAJA;AACA;AACA;AAAA,EAGX;AAAA,EAEA,IAAI,SAAiD;AACnD,WAAO,KAAK,IAAI,KAAK,MAAM,GAAG,OAAO;AAAA,EACvC;AAAA,EAEA,KAAK,IAAQ,SAAiD;AAC5D,WAAO,KAAK,OAAO,KAAK,QAAQ,EAAE,GAAG,EAAE,CAAC;AAAA,EAC1C;AAAA,EAEA,SAAS,KAAgC;AACvC,WAAO,KAAK,IAAI,KAAK,MAAM,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,CAAC;AAAA,EACnD;AAAA,EAEA,OAAO,GAAc,SAAiD;AACpE,WAAO,KAAK,IAAI,KAAK,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;AAAA,EAChD;AAAA,EAEA,OAAO,IAAQ,SAA0C;AACvD,WAAO,KAAK,IAAI,KAAK,QAAQ,EAAE,GAAG,EAAE,CAAC,EAClC,KAAK,OAAK,EAAE,WAAW,CAAC,EACxB,MAAM,OAAM,WAAW,SAAS,OAAO,EAAE,MAAM,IAAI,QAAQ,QAAQ,OAAO,CAAC,CAAE;AAAA,EAClF;AAAA,EAEA,IAAI,MAAY,SAAuC;AACrD,WAAO,KAAK,KAAK,KAAK,MAAM,GAAG,MAAM,OAAO;AAAA,EAC9C;AAAA,EAEA,OAAO,SAAiD;AACtD,WAAO,KAAK,WAAW,KAAK,MAAM,GAAG,OAAO;AAAA,EAC9C;AAAA,EAEA,OAAO,MAAY,SAAuC;AACxD,WAAO,KAAK,MAAM,KAAK,QAAQ,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,OAAO;AAAA,EAC7D;AAAA,EAEA,OAAO,MAAY,SAAuC;AACxD,WAAO,KAAK,IAAI,KAAK,QAAQ,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,OAAO;AAAA,EAC3D;AAAA,EAEA,OAAO,IAAQ,SAA0C;AACvD,WAAO,KAAK,OAAO,KAAK,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO;AAAA,EACnD;AACF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/Repository.ts"],"sourcesContent":["import { FetchOptions } from './Gateway';\nimport { PageList } from './PageList';\nimport { Exception } from './Exception';\nimport { reject } from '../utils/Promise';\nimport { Id, Key } from './Id';\nimport { List } from './List';\nimport { Json, JsonValue } from './Json';\n\nexport class Repository<T, Options = FetchOptions> {\n all(options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n byId(id: Id): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n exists(id: Id): Promise<boolean> {\n return reject(Exception.IsNotImplemented);\n }\n\n add(t: T | Json): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n\n update(id: Id, json: Json): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n\n remove(id: Id): Promise<boolean> {\n return reject(Exception.IsNotImplemented);\n }\n\n upsert(id: Id, item: Json): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n}\n"],"mappings":";;;;;;;;AAQO,IAAM,aAAN,MAA4C;AAAA,EACjD,IAAI,SAAyC;AAC3C,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,KAAK,IAAoB;AACvB,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,SAAS,KAA6B;AACpC,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,MAAM,KAAU,SAAyC;AACvD,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,GAAG,KAAc,OAAkB,SAAyC;AAC1E,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,OAAO,GAAc,SAAyC;AAC5D,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,OAAO,SAAyC;AAC9C,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,OAAO,IAA0B;AAC/B,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,IAAI,GAAyB;AAC3B,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,OAAO,IAAQ,MAAwB;AACrC,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,OAAO,IAA0B;AAC/B,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AAAA,EAEA,OAAO,IAAQ,MAAwB;AACrC,WAAO,OAAO,UAAU,gBAAgB;AAAA,EAC1C;AACF;","names":[]}
|