@apigames/sdk-core 22.1.10 → 22.1.13

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.
@@ -1,4 +1,4 @@
1
1
  export { default as ResourceContainer, ResourceFilterType } from './resource.container';
2
- export { default as ResourceObject, ResourceObjectClass } from './resource.object';
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';
@@ -3,12 +3,13 @@ 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.ResourceObject = exports.ResourceFilterType = exports.ResourceContainer = void 0;
6
+ exports.SDKConfig = exports.SDKConfiguration = exports.ResourceObjectMode = exports.ResourceObject = exports.ResourceFilterType = 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
9
  Object.defineProperty(exports, "ResourceFilterType", { enumerable: true, get: function () { return resource_container_1.ResourceFilterType; } });
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
+ Object.defineProperty(exports, "ResourceObjectMode", { enumerable: true, get: function () { return resource_object_1.ResourceObjectMode; } });
12
13
  var sdk_config_1 = require("./sdk.config");
13
14
  Object.defineProperty(exports, "SDKConfiguration", { enumerable: true, get: function () { return sdk_config_1.SDKConfiguration; } });
14
15
  Object.defineProperty(exports, "SDKConfig", { enumerable: true, get: function () { return sdk_config_1.SDKConfig; } });
@@ -13,6 +13,7 @@ exports.ResourceFilterType = 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
+ const resource_object_1 = require("./resource.object");
16
17
  const hash = require('object-hash');
17
18
  var ResourceFilterType;
18
19
  (function (ResourceFilterType) {
@@ -98,7 +99,7 @@ class ResourceContainer {
98
99
  if ((0, json_1.hasProperty)(resourceData, 'type') && (0, json_1.isString)(resourceData.type)) {
99
100
  if ((0, json_1.hasProperty)(resourceData, 'id') && (0, json_1.isString)(resourceData.id)) {
100
101
  const ResourceClass = (0, __1.SDKConfig)().ResourceClass(resourceData.type);
101
- return new ResourceClass(this).LoadData(resourceData);
102
+ return new ResourceClass(this, resource_object_1.ResourceObjectMode.ExistingDocument).LoadData(resourceData);
102
103
  }
103
104
  throw new __1.SDKException('INVALID-RESOURCE-ID', 'The resource being loaded doesn\'t have the required resource id.');
104
105
  }
@@ -8,7 +8,7 @@ export default class ResourceObject implements IResourceObject {
8
8
  private _id;
9
9
  private _mode;
10
10
  private _uri;
11
- constructor(container: IResourceContainer);
11
+ constructor(container: IResourceContainer, mode: ResourceObjectMode);
12
12
  protected EndpointContentType(): string;
13
13
  protected LoadAttributes(value: any): void;
14
14
  protected LoadRelationships(value: any): void;
@@ -8,19 +8,24 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.ResourceObjectMode = void 0;
13
16
  const json_1 = require("@apigames/json");
14
17
  const __1 = require("..");
18
+ const date_and_time_1 = __importDefault(require("date-and-time"));
15
19
  var ResourceObjectMode;
16
20
  (function (ResourceObjectMode) {
17
21
  ResourceObjectMode[ResourceObjectMode["NewDocument"] = 0] = "NewDocument";
18
22
  ResourceObjectMode[ResourceObjectMode["ExistingDocument"] = 1] = "ExistingDocument";
19
23
  })(ResourceObjectMode = exports.ResourceObjectMode || (exports.ResourceObjectMode = {}));
20
24
  class ResourceObject {
21
- constructor(container) {
25
+ constructor(container, mode) {
22
26
  this._mode = ResourceObjectMode.NewDocument;
23
27
  this._container = container;
28
+ this._mode = mode;
24
29
  }
25
30
  EndpointContentType() {
26
31
  throw new Error('Method or Property not implemented.');
@@ -63,8 +68,15 @@ class ResourceObject {
63
68
  return undefined;
64
69
  if ((0, json_1.isUndefined)(data) && (0, json_1.isUndefined)(shadow))
65
70
  return undefined;
71
+ if ((0, json_1.isUndefined)(shadow))
72
+ return data;
66
73
  if ((0, json_1.isArray)(data))
67
74
  return data;
75
+ if ((0, json_1.isDate)(data)) {
76
+ if (data.getTime() === 0)
77
+ return date_and_time_1.default.format(data, 'YYYY-MM-DD', false);
78
+ return data.toISOString();
79
+ }
68
80
  if ((0, json_1.isObject)(data)) {
69
81
  if ((Object.keys(data).length === 2)
70
82
  && ((0, json_1.hasProperty)(data, 'latitude') && (0, json_1.isNumber)(data.latitude))
@@ -83,7 +95,7 @@ class ResourceObject {
83
95
  if ((0, json_1.isDefined)(shadow) && (0, json_1.isObject)(shadow)) {
84
96
  for (const fieldName in shadow) {
85
97
  if ((0, json_1.hasProperty)(shadow, fieldName)) {
86
- if ((0, json_1.isUndefined)(data[fieldName]))
98
+ if ((0, json_1.isDefinedAndNotNull)(shadow[fieldName]) && (0, json_1.isUndefinedOrNull)(data[fieldName]))
87
99
  payload[fieldName] = null;
88
100
  }
89
101
  }
@@ -101,25 +113,27 @@ class ResourceObject {
101
113
  const payload = {};
102
114
  for (const fieldName in data) {
103
115
  if ((0, json_1.hasProperty)(data, fieldName)) {
104
- if ((0, json_1.isArrayOfStrings)(data[fieldName])) {
105
- payload[fieldName] = {
106
- data: [],
107
- };
108
- for (const key of data[fieldName]) {
109
- payload[fieldName].data.push({
110
- type: this.RelationshipType(fieldName),
111
- id: key,
112
- });
113
- }
114
- }
115
- else if ((0, json_1.isString)(data[fieldName])) {
116
- if ((0, json_1.isUndefined)(shadow) || !(0, json_1.areEqual)(shadow[fieldName], data[fieldName])) {
116
+ if ((0, json_1.isDefinedAndNotNull)(data[fieldName])) {
117
+ if ((0, json_1.isArrayOfStrings)(data[fieldName])) {
117
118
  payload[fieldName] = {
118
- data: {
119
- type: this.RelationshipType(fieldName),
120
- id: data[fieldName],
121
- },
119
+ data: [],
122
120
  };
121
+ for (const key of data[fieldName]) {
122
+ payload[fieldName].data.push({
123
+ type: this.RelationshipType(fieldName),
124
+ id: key,
125
+ });
126
+ }
127
+ }
128
+ else if ((0, json_1.isString)(data[fieldName])) {
129
+ if ((0, json_1.isUndefined)(shadow) || !(0, json_1.areEqual)(shadow[fieldName], data[fieldName])) {
130
+ payload[fieldName] = {
131
+ data: {
132
+ type: this.RelationshipType(fieldName),
133
+ id: data[fieldName],
134
+ },
135
+ };
136
+ }
123
137
  }
124
138
  }
125
139
  }
@@ -127,7 +141,7 @@ class ResourceObject {
127
141
  if ((0, json_1.isDefined)(shadow) && (0, json_1.isObject)(shadow)) {
128
142
  for (const fieldName in shadow) {
129
143
  if ((0, json_1.hasProperty)(shadow, fieldName)) {
130
- if ((0, json_1.isUndefined)(data[fieldName]))
144
+ if ((0, json_1.isDefinedAndNotNull)(shadow[fieldName]) && (0, json_1.isUndefinedOrNull)(data[fieldName]))
131
145
  payload[fieldName] = null;
132
146
  }
133
147
  }
@@ -230,7 +244,7 @@ class ResourceObject {
230
244
  const queryUri = this.uri;
231
245
  const queryHeaders = this.GetHeaders();
232
246
  const queryOptions = {};
233
- const payload = this.GetInsertPayload();
247
+ const payload = this.GetUpdatePayload();
234
248
  yield this._container.restClient.Patch(queryUri, payload, queryHeaders, queryOptions);
235
249
  });
236
250
  }
@@ -243,10 +257,10 @@ class ResourceObject {
243
257
  yield this.UpdateResource();
244
258
  }
245
259
  if ((0, json_1.isDefined)(this.attributes)) {
246
- this.shadowAttributes.LoadData(this.attributes);
260
+ this.shadowAttributes.LoadData(this.attributes, __1.ResourceObjectAttributesLoadType.Replace);
247
261
  }
248
262
  if ((0, json_1.isDefined)(this.relationships)) {
249
- this.shadowRelationships.LoadData(this.relationships);
263
+ this.shadowRelationships.LoadData(this.relationships, __1.ResourceObjectRelationshipsLoadType.Replace);
250
264
  }
251
265
  });
252
266
  }
@@ -1,3 +1,3 @@
1
1
  export { ISDKError, ISDKRequestError, ISDKException, ISDKRequestException, } from './sdk.errors';
2
2
  export { IResourceContainer, ResourceFilterName, ResourceFilterValue, ResourceSortOption, ResourceIncludeOption, } from './resource.container';
3
- export { IResourceObject, IResourceObjectAttributes, IResourceObjectRelationships, GeospatialPoint, ResourceObjectAttributeBase, ResourceObjectRelationshipLinkObject, ResourceObjectRelationship, ResourceObjectRelationships, ResourceObjectRelationshipKey, ResourceObjectRelationshipKeys, ResourceObjectUri, ResourceObjectRelationshipBase, } from './resource.object';
3
+ export { IResourceObject, IResourceObjectAttributes, IResourceObjectRelationships, GeospatialPoint, ResourceObjectAttributeBase, ResourceObjectAttributesLoadType, ResourceObjectRelationshipLinkObject, ResourceObjectRelationship, ResourceObjectRelationships, ResourceObjectRelationshipsLoadType, ResourceObjectRelationshipKey, ResourceObjectRelationshipKeys, ResourceObjectUri, ResourceObjectRelationshipBase, } from './resource.object';
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResourceObjectRelationshipBase = exports.ResourceObjectAttributeBase = exports.GeospatialPoint = void 0;
3
+ exports.ResourceObjectRelationshipBase = exports.ResourceObjectRelationshipsLoadType = exports.ResourceObjectAttributesLoadType = exports.ResourceObjectAttributeBase = exports.GeospatialPoint = void 0;
4
4
  var resource_object_1 = require("./resource.object");
5
5
  Object.defineProperty(exports, "GeospatialPoint", { enumerable: true, get: function () { return resource_object_1.GeospatialPoint; } });
6
6
  Object.defineProperty(exports, "ResourceObjectAttributeBase", { enumerable: true, get: function () { return resource_object_1.ResourceObjectAttributeBase; } });
7
+ Object.defineProperty(exports, "ResourceObjectAttributesLoadType", { enumerable: true, get: function () { return resource_object_1.ResourceObjectAttributesLoadType; } });
8
+ Object.defineProperty(exports, "ResourceObjectRelationshipsLoadType", { enumerable: true, get: function () { return resource_object_1.ResourceObjectRelationshipsLoadType; } });
7
9
  Object.defineProperty(exports, "ResourceObjectRelationshipBase", { enumerable: true, get: function () { return resource_object_1.ResourceObjectRelationshipBase; } });
@@ -1,7 +1,11 @@
1
1
  export declare type ResourceObjectType = string;
2
2
  export declare type ResourceObjectIdentifier = string;
3
+ export declare enum ResourceObjectAttributesLoadType {
4
+ Replace = 0,
5
+ Update = 1
6
+ }
3
7
  export interface IResourceObjectAttributes {
4
- LoadData(data: any): void;
8
+ LoadData(data: any, action: ResourceObjectAttributesLoadType): void;
5
9
  }
6
10
  export declare type ResourceObjectRelationshipLinkObject = {
7
11
  type: ResourceObjectType;
@@ -15,8 +19,12 @@ export declare type ResourceObjectRelationships = {
15
19
  };
16
20
  export declare type ResourceObjectRelationshipKey = string;
17
21
  export declare type ResourceObjectRelationshipKeys = ResourceObjectRelationshipKey[];
22
+ export declare enum ResourceObjectRelationshipsLoadType {
23
+ Replace = 0,
24
+ Update = 1
25
+ }
18
26
  export interface IResourceObjectRelationships {
19
- LoadData(data: any): void;
27
+ LoadData(data: any, action: ResourceObjectRelationshipsLoadType): void;
20
28
  }
21
29
  export declare type ResourceObjectUri = string;
22
30
  export declare class ResourceObjectAttributeBase {
@@ -1,8 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResourceObjectRelationshipBase = exports.GeospatialPoint = exports.ResourceObjectAttributeBase = void 0;
3
+ exports.ResourceObjectRelationshipBase = exports.GeospatialPoint = exports.ResourceObjectAttributeBase = exports.ResourceObjectRelationshipsLoadType = exports.ResourceObjectAttributesLoadType = void 0;
4
4
  const json_1 = require("@apigames/json");
5
5
  const helpers_1 = require("../helpers");
6
+ var ResourceObjectAttributesLoadType;
7
+ (function (ResourceObjectAttributesLoadType) {
8
+ ResourceObjectAttributesLoadType[ResourceObjectAttributesLoadType["Replace"] = 0] = "Replace";
9
+ ResourceObjectAttributesLoadType[ResourceObjectAttributesLoadType["Update"] = 1] = "Update";
10
+ })(ResourceObjectAttributesLoadType = exports.ResourceObjectAttributesLoadType || (exports.ResourceObjectAttributesLoadType = {}));
11
+ var ResourceObjectRelationshipsLoadType;
12
+ (function (ResourceObjectRelationshipsLoadType) {
13
+ ResourceObjectRelationshipsLoadType[ResourceObjectRelationshipsLoadType["Replace"] = 0] = "Replace";
14
+ ResourceObjectRelationshipsLoadType[ResourceObjectRelationshipsLoadType["Update"] = 1] = "Update";
15
+ })(ResourceObjectRelationshipsLoadType = exports.ResourceObjectRelationshipsLoadType || (exports.ResourceObjectRelationshipsLoadType = {}));
6
16
  class ResourceObjectAttributeBase {
7
17
  static LoadDateTime(value) {
8
18
  return (0, helpers_1.LoadDateTime)(value);
package/package.json CHANGED
@@ -13,7 +13,7 @@
13
13
  ],
14
14
  "description": "API Games SDK Core",
15
15
  "license": "MIT",
16
- "version": "22.1.10",
16
+ "version": "22.1.13",
17
17
  "main": "lib/index.js",
18
18
  "types": "lib/index.d.ts",
19
19
  "scripts": {