@apigames/sdk-core 22.1.16 → 22.1.19
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/lib/classes/index.d.ts +1 -1
- package/lib/classes/index.js +2 -2
- package/lib/classes/resource.container.d.ts +7 -5
- package/lib/classes/resource.container.js +29 -14
- package/lib/classes/resource.object.js +7 -7
- package/lib/interfaces/index.d.ts +1 -2
- package/lib/interfaces/index.js +8 -7
- package/lib/interfaces/resource.interfaces.d.ts +91 -0
- package/lib/interfaces/{resource.object.js → resource.interfaces.js} +21 -3
- package/lib/type-guards/index.d.ts +3 -0
- package/lib/type-guards/index.js +16 -1
- package/package.json +1 -1
- package/lib/interfaces/resource.container.d.ts +0 -23
- package/lib/interfaces/resource.container.js +0 -2
- package/lib/interfaces/resource.object.d.ts +0 -54
package/lib/classes/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as ResourceContainer,
|
|
1
|
+
export { default as ResourceContainer, ResourceQueryFilterType } from './resource.container';
|
|
2
2
|
export { default as ResourceObject, ResourceObjectClass, ResourceObjectMode } from './resource.object';
|
|
3
3
|
export { ResourcePathParams } from './resource.path.params';
|
|
4
4
|
export { SDKConfiguration, SDKConfig } from './sdk.config';
|
package/lib/classes/index.js
CHANGED
|
@@ -3,10 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SDKConfig = exports.SDKConfiguration = exports.ResourceObjectMode = exports.ResourceObject = exports.
|
|
6
|
+
exports.SDKConfig = exports.SDKConfiguration = exports.ResourceObjectMode = exports.ResourceObject = exports.ResourceQueryFilterType = exports.ResourceContainer = void 0;
|
|
7
7
|
var resource_container_1 = require("./resource.container");
|
|
8
8
|
Object.defineProperty(exports, "ResourceContainer", { enumerable: true, get: function () { return __importDefault(resource_container_1).default; } });
|
|
9
|
-
Object.defineProperty(exports, "
|
|
9
|
+
Object.defineProperty(exports, "ResourceQueryFilterType", { enumerable: true, get: function () { return resource_container_1.ResourceQueryFilterType; } });
|
|
10
10
|
var resource_object_1 = require("./resource.object");
|
|
11
11
|
Object.defineProperty(exports, "ResourceObject", { enumerable: true, get: function () { return __importDefault(resource_object_1).default; } });
|
|
12
12
|
Object.defineProperty(exports, "ResourceObjectMode", { enumerable: true, get: function () { return resource_object_1.ResourceObjectMode; } });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IRestClient, RestClientResponse } from '@apigames/rest-client';
|
|
2
|
-
import { IResourceContainer, IResourceObject,
|
|
3
|
-
export declare enum
|
|
2
|
+
import { IResourceContainer, IResourceObject, ResourceContainerIncludedResourceTypes, ResourcePathParams, ResourceQueryFilterName, ResourceQueryFilterValue, ResourceQueryIncludeOption, ResourceQuerySortOption } from '..';
|
|
3
|
+
export declare enum ResourceQueryFilterType {
|
|
4
4
|
Equal = "equal",
|
|
5
5
|
NotEqual = "!equal",
|
|
6
6
|
From = "from",
|
|
@@ -14,11 +14,13 @@ export default class ResourceContainer implements IResourceContainer {
|
|
|
14
14
|
private _count;
|
|
15
15
|
private _countQueryHash;
|
|
16
16
|
protected _data: IResourceObject | IResourceObject[];
|
|
17
|
+
protected _includes: ResourceContainerIncludedResourceTypes;
|
|
17
18
|
private _queryParams;
|
|
18
19
|
private readonly _restClient;
|
|
19
20
|
protected pathParams: ResourcePathParams;
|
|
20
21
|
constructor(restClient?: IRestClient);
|
|
21
22
|
get data(): IResourceObject | IResourceObject[];
|
|
23
|
+
get includes(): ResourceContainerIncludedResourceTypes;
|
|
22
24
|
get restClient(): IRestClient;
|
|
23
25
|
get uri(): string;
|
|
24
26
|
isResourceObject(value: any): value is IResourceObject;
|
|
@@ -39,9 +41,9 @@ export default class ResourceContainer implements IResourceContainer {
|
|
|
39
41
|
private GetHeaders;
|
|
40
42
|
private GetQueryParams;
|
|
41
43
|
IncludedObject(type: string, id: string): IResourceObject;
|
|
42
|
-
Filter(filter:
|
|
43
|
-
Sort(option:
|
|
44
|
-
Include(include:
|
|
44
|
+
Filter(filter: ResourceQueryFilterName, selector: ResourceQueryFilterType, value: ResourceQueryFilterValue): IResourceContainer;
|
|
45
|
+
Sort(option: ResourceQuerySortOption): IResourceContainer;
|
|
46
|
+
Include(include: ResourceQueryIncludeOption): IResourceContainer;
|
|
45
47
|
PageOffset(pageOffset: number, pageSize: number): IResourceContainer;
|
|
46
48
|
PageNumber(pageNumber: number, pageSize: number): IResourceContainer;
|
|
47
49
|
}
|
|
@@ -9,26 +9,27 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.ResourceQueryFilterType = void 0;
|
|
13
13
|
const json_1 = require("@apigames/json");
|
|
14
14
|
const rest_client_1 = require("@apigames/rest-client");
|
|
15
15
|
const __1 = require("..");
|
|
16
16
|
const resource_object_1 = require("./resource.object");
|
|
17
17
|
const hash = require('object-hash');
|
|
18
|
-
var
|
|
19
|
-
(function (
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
})(
|
|
18
|
+
var ResourceQueryFilterType;
|
|
19
|
+
(function (ResourceQueryFilterType) {
|
|
20
|
+
ResourceQueryFilterType["Equal"] = "equal";
|
|
21
|
+
ResourceQueryFilterType["NotEqual"] = "!equal";
|
|
22
|
+
ResourceQueryFilterType["From"] = "from";
|
|
23
|
+
ResourceQueryFilterType["To"] = "to";
|
|
24
|
+
ResourceQueryFilterType["AutoComplete"] = "autocomplete";
|
|
25
|
+
ResourceQueryFilterType["TextSearch"] = "text";
|
|
26
|
+
ResourceQueryFilterType["NearLocation"] = "near";
|
|
27
|
+
ResourceQueryFilterType["Exists"] = "exists";
|
|
28
|
+
})(ResourceQueryFilterType = exports.ResourceQueryFilterType || (exports.ResourceQueryFilterType = {}));
|
|
29
29
|
class ResourceContainer {
|
|
30
30
|
constructor(restClient) {
|
|
31
31
|
this._data = undefined;
|
|
32
|
+
this._includes = {};
|
|
32
33
|
this._restClient = (0, json_1.isDefined)(restClient) ? restClient : new rest_client_1.RestClient();
|
|
33
34
|
this.pathParams = {};
|
|
34
35
|
this._queryParams = {
|
|
@@ -41,6 +42,9 @@ class ResourceContainer {
|
|
|
41
42
|
get data() {
|
|
42
43
|
throw new Error('Method or Property not implemented.');
|
|
43
44
|
}
|
|
45
|
+
get includes() {
|
|
46
|
+
return this._includes;
|
|
47
|
+
}
|
|
44
48
|
get restClient() {
|
|
45
49
|
return this._restClient;
|
|
46
50
|
}
|
|
@@ -67,6 +71,7 @@ class ResourceContainer {
|
|
|
67
71
|
}
|
|
68
72
|
ClearData() {
|
|
69
73
|
this._data = undefined;
|
|
74
|
+
this._includes = {};
|
|
70
75
|
}
|
|
71
76
|
AddResourceToMemoryStructure(obj) {
|
|
72
77
|
if ((0, json_1.isDefined)(this.data)) {
|
|
@@ -110,14 +115,24 @@ class ResourceContainer {
|
|
|
110
115
|
if ((0, json_1.hasProperty)(response.data, 'data')) {
|
|
111
116
|
if ((0, json_1.isArray)(response.data.data)) {
|
|
112
117
|
this._data = [];
|
|
113
|
-
for (const
|
|
114
|
-
this.AddResourceToMemoryStructure(this.LoadResourceData(
|
|
118
|
+
for (const resourceData of response.data.data) {
|
|
119
|
+
this.AddResourceToMemoryStructure(this.LoadResourceData(resourceData));
|
|
115
120
|
}
|
|
116
121
|
}
|
|
117
122
|
else if ((0, json_1.isObject)(response.data.data)) {
|
|
118
123
|
this.AddResourceToMemoryStructure(this.LoadResourceData(response.data.data));
|
|
119
124
|
}
|
|
120
125
|
}
|
|
126
|
+
if ((0, json_1.hasProperty)(response.data, 'included')) {
|
|
127
|
+
if ((0, json_1.isArray)(response.data.included)) {
|
|
128
|
+
for (const resourceData of response.data.included) {
|
|
129
|
+
const resourceObject = this.LoadResourceData(resourceData);
|
|
130
|
+
if ((0, json_1.isUndefined)(this._includes[resourceObject.type]))
|
|
131
|
+
this._includes[resourceObject.type] = {};
|
|
132
|
+
this._includes[resourceObject.type][resourceObject.id] = resourceObject;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
121
136
|
}
|
|
122
137
|
Add() {
|
|
123
138
|
throw new Error('Method or Property not implemented.');
|
|
@@ -107,23 +107,23 @@ class ResourceObject {
|
|
|
107
107
|
for (const fieldName in data) {
|
|
108
108
|
if ((0, json_1.hasProperty)(data, fieldName)) {
|
|
109
109
|
if ((0, json_1.isDefinedAndNotNull)(data[fieldName])) {
|
|
110
|
-
if ((0,
|
|
110
|
+
if ((0, __1.isResourceObjectRelationships)(data[fieldName])) {
|
|
111
111
|
payload[fieldName] = {
|
|
112
112
|
data: [],
|
|
113
113
|
};
|
|
114
|
-
for (const
|
|
114
|
+
for (const relationship of data[fieldName]) {
|
|
115
115
|
payload[fieldName].data.push({
|
|
116
|
-
type:
|
|
117
|
-
id:
|
|
116
|
+
type: relationship.type,
|
|
117
|
+
id: relationship.id,
|
|
118
118
|
});
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
-
else if ((0,
|
|
121
|
+
else if ((0, __1.isResourceObjectRelationship)(data[fieldName])) {
|
|
122
122
|
if ((0, json_1.isUndefined)(shadow) || !(0, json_1.areEqual)(shadow[fieldName], data[fieldName])) {
|
|
123
123
|
payload[fieldName] = {
|
|
124
124
|
data: {
|
|
125
|
-
type:
|
|
126
|
-
id: data[fieldName],
|
|
125
|
+
type: data[fieldName].type,
|
|
126
|
+
id: data[fieldName].id,
|
|
127
127
|
},
|
|
128
128
|
};
|
|
129
129
|
}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
export { ISDKError, ISDKRequestError, ISDKException, ISDKRequestException, } from './sdk.errors';
|
|
2
|
-
export { IResourceContainer,
|
|
3
|
-
export { IResourceObject, IResourceObjectAttributes, IResourceObjectRelationships, GeospatialPoint, ResourceObjectAttributeBase, ResourceObjectAttributesLoadType, ResourceObjectRelationshipLinkObject, ResourceObjectRelationship, ResourceObjectRelationships, ResourceObjectRelationshipsLoadType, ResourceObjectRelationshipKey, ResourceObjectRelationshipKeys, ResourceObjectUri, ResourceObjectRelationshipBase, } from './resource.object';
|
|
2
|
+
export { IResourceContainer, ResourceContainerIncludedResourceTypes, ResourceQueryFilterName, ResourceQueryFilterValue, ResourceQuerySortOption, ResourceQueryIncludeOption, IResourceObject, IResourceObjectAttributes, IResourceObjectRelationships, GeospatialPoint, ResourceObjectAttributeBase, ResourceObjectAttributesLoadType, ResourceObjectRelationshipLinkObject, ResourceObjectRelationshipLink, ResourceObjectRelationshipsLinks, ResourceObjectRelationshipsLoadType, ResourceObjectRelationship, ResourceObjectRelationships, ResourceObjectUri, ResourceObjectRelationshipBase, } from './resource.interfaces';
|
package/lib/interfaces/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ResourceObjectRelationshipBase = exports.ResourceObjectRelationshipsLoadType = exports.ResourceObjectAttributesLoadType = exports.ResourceObjectAttributeBase = exports.GeospatialPoint = void 0;
|
|
4
|
-
var
|
|
5
|
-
Object.defineProperty(exports, "GeospatialPoint", { enumerable: true, get: function () { return
|
|
6
|
-
Object.defineProperty(exports, "ResourceObjectAttributeBase", { enumerable: true, get: function () { return
|
|
7
|
-
Object.defineProperty(exports, "ResourceObjectAttributesLoadType", { enumerable: true, get: function () { return
|
|
8
|
-
Object.defineProperty(exports, "ResourceObjectRelationshipsLoadType", { enumerable: true, get: function () { return
|
|
9
|
-
Object.defineProperty(exports, "
|
|
3
|
+
exports.ResourceObjectRelationshipBase = exports.ResourceObjectRelationship = exports.ResourceObjectRelationshipsLoadType = exports.ResourceObjectAttributesLoadType = exports.ResourceObjectAttributeBase = exports.GeospatialPoint = void 0;
|
|
4
|
+
var resource_interfaces_1 = require("./resource.interfaces");
|
|
5
|
+
Object.defineProperty(exports, "GeospatialPoint", { enumerable: true, get: function () { return resource_interfaces_1.GeospatialPoint; } });
|
|
6
|
+
Object.defineProperty(exports, "ResourceObjectAttributeBase", { enumerable: true, get: function () { return resource_interfaces_1.ResourceObjectAttributeBase; } });
|
|
7
|
+
Object.defineProperty(exports, "ResourceObjectAttributesLoadType", { enumerable: true, get: function () { return resource_interfaces_1.ResourceObjectAttributesLoadType; } });
|
|
8
|
+
Object.defineProperty(exports, "ResourceObjectRelationshipsLoadType", { enumerable: true, get: function () { return resource_interfaces_1.ResourceObjectRelationshipsLoadType; } });
|
|
9
|
+
Object.defineProperty(exports, "ResourceObjectRelationship", { enumerable: true, get: function () { return resource_interfaces_1.ResourceObjectRelationship; } });
|
|
10
|
+
Object.defineProperty(exports, "ResourceObjectRelationshipBase", { enumerable: true, get: function () { return resource_interfaces_1.ResourceObjectRelationshipBase; } });
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { IRestClient } from '@apigames/rest-client';
|
|
2
|
+
import { ResourceQueryFilterType } from '../classes';
|
|
3
|
+
export declare type ResourceObjectType = string;
|
|
4
|
+
export declare type ResourceObjectIdentifier = string;
|
|
5
|
+
export declare enum ResourceObjectAttributesLoadType {
|
|
6
|
+
Replace = 0,
|
|
7
|
+
Update = 1
|
|
8
|
+
}
|
|
9
|
+
export interface IResourceObjectAttributes {
|
|
10
|
+
LoadData(data: any, action: ResourceObjectAttributesLoadType): void;
|
|
11
|
+
}
|
|
12
|
+
export declare type ResourceObjectRelationshipLinkObject = {
|
|
13
|
+
type: ResourceObjectType;
|
|
14
|
+
id: ResourceObjectIdentifier;
|
|
15
|
+
};
|
|
16
|
+
export declare type ResourceObjectRelationshipLink = {
|
|
17
|
+
data: ResourceObjectRelationshipLinkObject;
|
|
18
|
+
};
|
|
19
|
+
export declare type ResourceObjectRelationshipsLinks = {
|
|
20
|
+
data: ResourceObjectRelationshipLinkObject[];
|
|
21
|
+
};
|
|
22
|
+
export declare type ResourceContainerIncludedResources = {
|
|
23
|
+
[id: string]: IResourceObject;
|
|
24
|
+
};
|
|
25
|
+
export declare type ResourceContainerIncludedResourceTypes = {
|
|
26
|
+
[type: string]: ResourceContainerIncludedResources;
|
|
27
|
+
};
|
|
28
|
+
export declare class ResourceObjectRelationship {
|
|
29
|
+
private _includes;
|
|
30
|
+
type: ResourceObjectType;
|
|
31
|
+
id: ResourceObjectIdentifier;
|
|
32
|
+
constructor(includes: ResourceContainerIncludedResourceTypes, type: ResourceObjectType, id?: ResourceObjectIdentifier);
|
|
33
|
+
get target(): IResourceObject;
|
|
34
|
+
}
|
|
35
|
+
export declare type ResourceObjectRelationships = ResourceObjectRelationship[];
|
|
36
|
+
export declare enum ResourceObjectRelationshipsLoadType {
|
|
37
|
+
Replace = 0,
|
|
38
|
+
Update = 1
|
|
39
|
+
}
|
|
40
|
+
export interface IResourceObjectRelationships {
|
|
41
|
+
LoadData(data: any, action: ResourceObjectRelationshipsLoadType): void;
|
|
42
|
+
}
|
|
43
|
+
export declare type ResourceObjectUri = string;
|
|
44
|
+
export declare class ResourceObjectAttributeBase {
|
|
45
|
+
protected static LoadDateTime(value: string): Date;
|
|
46
|
+
protected static LoadGeospatialPoint(value: any): GeospatialPoint;
|
|
47
|
+
}
|
|
48
|
+
export declare class GeospatialPoint extends ResourceObjectAttributeBase implements IResourceObjectAttributes {
|
|
49
|
+
longitude: number;
|
|
50
|
+
latitude: number;
|
|
51
|
+
LoadData(data: any): void;
|
|
52
|
+
}
|
|
53
|
+
export declare class ResourceObjectRelationshipBase {
|
|
54
|
+
private _includes;
|
|
55
|
+
constructor(includes: ResourceContainerIncludedResourceTypes);
|
|
56
|
+
protected LoadRelationshipData(expectedType: string, value: any): ResourceObjectRelationship;
|
|
57
|
+
static RelationshipType(relationshipName: string): string;
|
|
58
|
+
}
|
|
59
|
+
export interface IResourceObject {
|
|
60
|
+
type: ResourceObjectType;
|
|
61
|
+
id?: ResourceObjectIdentifier;
|
|
62
|
+
attributes: IResourceObjectAttributes;
|
|
63
|
+
relationships: IResourceObjectRelationships;
|
|
64
|
+
uri: ResourceObjectUri;
|
|
65
|
+
LoadData(value: any): IResourceObject;
|
|
66
|
+
Delete(): Promise<void>;
|
|
67
|
+
Save(): Promise<void>;
|
|
68
|
+
UpdateAttributes(value: any): void;
|
|
69
|
+
UpdateRelationships(value: any): void;
|
|
70
|
+
}
|
|
71
|
+
export declare type ResourceQueryFilterName = string;
|
|
72
|
+
export declare type ResourceQueryFilterValue = string;
|
|
73
|
+
export declare type ResourceQuerySortOption = string;
|
|
74
|
+
export declare type ResourceQueryIncludeOption = string;
|
|
75
|
+
export interface IResourceContainer {
|
|
76
|
+
data: IResourceObject | IResourceObject[];
|
|
77
|
+
includes: ResourceContainerIncludedResourceTypes;
|
|
78
|
+
restClient: IRestClient;
|
|
79
|
+
uri: string;
|
|
80
|
+
Filter(filter: ResourceQueryFilterName, selector: ResourceQueryFilterType, value: ResourceQueryFilterValue): IResourceContainer;
|
|
81
|
+
Sort(option: ResourceQuerySortOption): IResourceContainer;
|
|
82
|
+
Include(include: ResourceQueryIncludeOption): IResourceContainer;
|
|
83
|
+
PageOffset(pageOffset: number, pageSize: number): IResourceContainer;
|
|
84
|
+
PageNumber(pageNumber: number, pageSize: number): IResourceContainer;
|
|
85
|
+
Add(): IResourceObject;
|
|
86
|
+
Count(): Promise<number>;
|
|
87
|
+
Delete(resource: IResourceObject): Promise<void>;
|
|
88
|
+
Find(): Promise<void>;
|
|
89
|
+
Get(id: string): Promise<void>;
|
|
90
|
+
IncludedObject(type: ResourceObjectType, id: ResourceObjectIdentifier): IResourceObject;
|
|
91
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ResourceObjectRelationshipBase = exports.GeospatialPoint = exports.ResourceObjectAttributeBase = exports.ResourceObjectRelationshipsLoadType = exports.ResourceObjectAttributesLoadType = void 0;
|
|
3
|
+
exports.ResourceObjectRelationshipBase = exports.GeospatialPoint = exports.ResourceObjectAttributeBase = exports.ResourceObjectRelationshipsLoadType = exports.ResourceObjectRelationship = exports.ResourceObjectAttributesLoadType = void 0;
|
|
4
4
|
const json_1 = require("@apigames/json");
|
|
5
5
|
const helpers_1 = require("../helpers");
|
|
6
6
|
var ResourceObjectAttributesLoadType;
|
|
@@ -8,6 +8,21 @@ var ResourceObjectAttributesLoadType;
|
|
|
8
8
|
ResourceObjectAttributesLoadType[ResourceObjectAttributesLoadType["Replace"] = 0] = "Replace";
|
|
9
9
|
ResourceObjectAttributesLoadType[ResourceObjectAttributesLoadType["Update"] = 1] = "Update";
|
|
10
10
|
})(ResourceObjectAttributesLoadType = exports.ResourceObjectAttributesLoadType || (exports.ResourceObjectAttributesLoadType = {}));
|
|
11
|
+
class ResourceObjectRelationship {
|
|
12
|
+
constructor(includes, type, id) {
|
|
13
|
+
this._includes = includes;
|
|
14
|
+
this.type = type;
|
|
15
|
+
if (id)
|
|
16
|
+
this.id = id;
|
|
17
|
+
}
|
|
18
|
+
get target() {
|
|
19
|
+
if ((0, json_1.isDefined)(this.type) && (0, json_1.isDefined)(this.id) && (0, json_1.isDefined)(this._includes[this.type][this.id])) {
|
|
20
|
+
return this._includes[this.type][this.id];
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.ResourceObjectRelationship = ResourceObjectRelationship;
|
|
11
26
|
var ResourceObjectRelationshipsLoadType;
|
|
12
27
|
(function (ResourceObjectRelationshipsLoadType) {
|
|
13
28
|
ResourceObjectRelationshipsLoadType[ResourceObjectRelationshipsLoadType["Replace"] = 0] = "Replace";
|
|
@@ -30,12 +45,15 @@ class GeospatialPoint extends ResourceObjectAttributeBase {
|
|
|
30
45
|
}
|
|
31
46
|
exports.GeospatialPoint = GeospatialPoint;
|
|
32
47
|
class ResourceObjectRelationshipBase {
|
|
33
|
-
|
|
48
|
+
constructor(includes) {
|
|
49
|
+
this._includes = includes;
|
|
50
|
+
}
|
|
51
|
+
LoadRelationshipData(expectedType, value) {
|
|
34
52
|
if ((0, json_1.isDefined)(value) && ((0, json_1.hasProperty)(value, 'data') && (0, json_1.isObject)(value.data)
|
|
35
53
|
&& (0, json_1.hasProperty)(value.data, 'type') && (0, json_1.isString)(value.data.type)
|
|
36
54
|
&& (value.data.type === expectedType)
|
|
37
55
|
&& (0, json_1.hasProperty)(value.data, 'id') && (0, json_1.isString)(value.data.id)))
|
|
38
|
-
return value.data.id;
|
|
56
|
+
return new ResourceObjectRelationship(this._includes, value.data.type, value.data.id);
|
|
39
57
|
return undefined;
|
|
40
58
|
}
|
|
41
59
|
static RelationshipType(relationshipName) {
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import { ResourceContainer, ResourceObject } from '../classes';
|
|
2
|
+
import { ResourceObjectRelationship, ResourceObjectRelationships } from '../interfaces';
|
|
2
3
|
export declare function isResourceContainer(value: any): value is ResourceContainer;
|
|
3
4
|
export declare function isResourceObject(value: any): value is ResourceObject;
|
|
5
|
+
export declare function isResourceObjectRelationship(value: any): value is ResourceObjectRelationship;
|
|
6
|
+
export declare function isResourceObjectRelationships(value: any): value is ResourceObjectRelationships;
|
package/lib/type-guards/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isResourceObject = exports.isResourceContainer = void 0;
|
|
3
|
+
exports.isResourceObjectRelationships = exports.isResourceObjectRelationship = exports.isResourceObject = exports.isResourceContainer = void 0;
|
|
4
4
|
const json_1 = require("@apigames/json");
|
|
5
5
|
const classes_1 = require("../classes");
|
|
6
|
+
const interfaces_1 = require("../interfaces");
|
|
6
7
|
function isResourceContainer(value) {
|
|
7
8
|
return (0, json_1.isDefinedAndNotNull)(value) && (value instanceof classes_1.ResourceContainer);
|
|
8
9
|
}
|
|
@@ -13,3 +14,17 @@ function isResourceObject(value) {
|
|
|
13
14
|
&& (typeof value.type === 'string');
|
|
14
15
|
}
|
|
15
16
|
exports.isResourceObject = isResourceObject;
|
|
17
|
+
function isResourceObjectRelationship(value) {
|
|
18
|
+
return (0, json_1.isDefinedAndNotNull)(value) && (value instanceof interfaces_1.ResourceObjectRelationship);
|
|
19
|
+
}
|
|
20
|
+
exports.isResourceObjectRelationship = isResourceObjectRelationship;
|
|
21
|
+
function isResourceObjectRelationships(value) {
|
|
22
|
+
if ((0, json_1.isArray)(value)) {
|
|
23
|
+
let allValid = true;
|
|
24
|
+
for (const relationship of value)
|
|
25
|
+
allValid = allValid && isResourceObjectRelationship(relationship);
|
|
26
|
+
return allValid;
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
exports.isResourceObjectRelationships = isResourceObjectRelationships;
|
package/package.json
CHANGED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { IRestClient } from '@apigames/rest-client';
|
|
2
|
-
import { IResourceObject, ResourceObjectIdentifier, ResourceObjectType } from './resource.object';
|
|
3
|
-
import { ResourceFilterType } from '../classes/resource.container';
|
|
4
|
-
export declare type ResourceFilterName = string;
|
|
5
|
-
export declare type ResourceFilterValue = string;
|
|
6
|
-
export declare type ResourceSortOption = string;
|
|
7
|
-
export declare type ResourceIncludeOption = string;
|
|
8
|
-
export interface IResourceContainer {
|
|
9
|
-
data: IResourceObject | IResourceObject[];
|
|
10
|
-
restClient: IRestClient;
|
|
11
|
-
uri: string;
|
|
12
|
-
Filter(filter: ResourceFilterName, selector: ResourceFilterType, value: ResourceFilterValue): IResourceContainer;
|
|
13
|
-
Sort(option: ResourceSortOption): IResourceContainer;
|
|
14
|
-
Include(include: ResourceIncludeOption): IResourceContainer;
|
|
15
|
-
PageOffset(pageOffset: number, pageSize: number): IResourceContainer;
|
|
16
|
-
PageNumber(pageNumber: number, pageSize: number): IResourceContainer;
|
|
17
|
-
Add(): IResourceObject;
|
|
18
|
-
Count(): Promise<number>;
|
|
19
|
-
Delete(resource: IResourceObject): Promise<void>;
|
|
20
|
-
Find(): Promise<void>;
|
|
21
|
-
Get(id: string): Promise<void>;
|
|
22
|
-
IncludedObject(type: ResourceObjectType, id: ResourceObjectIdentifier): IResourceObject;
|
|
23
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
export declare type ResourceObjectType = string;
|
|
2
|
-
export declare type ResourceObjectIdentifier = string;
|
|
3
|
-
export declare enum ResourceObjectAttributesLoadType {
|
|
4
|
-
Replace = 0,
|
|
5
|
-
Update = 1
|
|
6
|
-
}
|
|
7
|
-
export interface IResourceObjectAttributes {
|
|
8
|
-
LoadData(data: any, action: ResourceObjectAttributesLoadType): void;
|
|
9
|
-
}
|
|
10
|
-
export declare type ResourceObjectRelationshipLinkObject = {
|
|
11
|
-
type: ResourceObjectType;
|
|
12
|
-
id: ResourceObjectIdentifier;
|
|
13
|
-
};
|
|
14
|
-
export declare type ResourceObjectRelationship = {
|
|
15
|
-
data: ResourceObjectRelationshipLinkObject;
|
|
16
|
-
};
|
|
17
|
-
export declare type ResourceObjectRelationships = {
|
|
18
|
-
data: ResourceObjectRelationshipLinkObject[];
|
|
19
|
-
};
|
|
20
|
-
export declare type ResourceObjectRelationshipKey = string;
|
|
21
|
-
export declare type ResourceObjectRelationshipKeys = ResourceObjectRelationshipKey[];
|
|
22
|
-
export declare enum ResourceObjectRelationshipsLoadType {
|
|
23
|
-
Replace = 0,
|
|
24
|
-
Update = 1
|
|
25
|
-
}
|
|
26
|
-
export interface IResourceObjectRelationships {
|
|
27
|
-
LoadData(data: any, action: ResourceObjectRelationshipsLoadType): void;
|
|
28
|
-
}
|
|
29
|
-
export declare type ResourceObjectUri = string;
|
|
30
|
-
export declare class ResourceObjectAttributeBase {
|
|
31
|
-
protected static LoadDateTime(value: string): Date;
|
|
32
|
-
protected static LoadGeospatialPoint(value: any): GeospatialPoint;
|
|
33
|
-
}
|
|
34
|
-
export declare class GeospatialPoint extends ResourceObjectAttributeBase implements IResourceObjectAttributes {
|
|
35
|
-
longitude: number;
|
|
36
|
-
latitude: number;
|
|
37
|
-
LoadData(data: any): void;
|
|
38
|
-
}
|
|
39
|
-
export declare class ResourceObjectRelationshipBase {
|
|
40
|
-
protected static LoadRelationshipKey(expectedType: string, value: any): ResourceObjectRelationshipKey;
|
|
41
|
-
static RelationshipType(relationshipName: string): string;
|
|
42
|
-
}
|
|
43
|
-
export interface IResourceObject {
|
|
44
|
-
type: ResourceObjectType;
|
|
45
|
-
id?: ResourceObjectIdentifier;
|
|
46
|
-
attributes: IResourceObjectAttributes;
|
|
47
|
-
relationships: IResourceObjectRelationships;
|
|
48
|
-
uri: ResourceObjectUri;
|
|
49
|
-
LoadData(value: any): IResourceObject;
|
|
50
|
-
Delete(): Promise<void>;
|
|
51
|
-
Save(): Promise<void>;
|
|
52
|
-
UpdateAttributes(value: any): void;
|
|
53
|
-
UpdateRelationships(value: any): void;
|
|
54
|
-
}
|