@apigames/sdk-core 22.1.9 → 22.1.12

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) {
@@ -80,6 +81,7 @@ class ResourceContainer {
80
81
  else {
81
82
  this._data = obj;
82
83
  }
84
+ this._countQueryHash = undefined;
83
85
  }
84
86
  RemoveResourceFromMemoryStructure(resource) {
85
87
  if (this.isResourceList(this.data)) {
@@ -91,12 +93,13 @@ class ResourceContainer {
91
93
  else if (this.isResourceObject(this.data) && this.data.id === resource.id) {
92
94
  this._data = undefined;
93
95
  }
96
+ this._countQueryHash = undefined;
94
97
  }
95
98
  LoadResourceData(resourceData) {
96
99
  if ((0, json_1.hasProperty)(resourceData, 'type') && (0, json_1.isString)(resourceData.type)) {
97
100
  if ((0, json_1.hasProperty)(resourceData, 'id') && (0, json_1.isString)(resourceData.id)) {
98
101
  const ResourceClass = (0, __1.SDKConfig)().ResourceClass(resourceData.type);
99
- return new ResourceClass(this).LoadData(resourceData);
102
+ return new ResourceClass(this, resource_object_1.ResourceObjectMode.ExistingDocument).LoadData(resourceData);
100
103
  }
101
104
  throw new __1.SDKException('INVALID-RESOURCE-ID', 'The resource being loaded doesn\'t have the required resource id.');
102
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;
@@ -18,9 +18,10 @@ var ResourceObjectMode;
18
18
  ResourceObjectMode[ResourceObjectMode["ExistingDocument"] = 1] = "ExistingDocument";
19
19
  })(ResourceObjectMode = exports.ResourceObjectMode || (exports.ResourceObjectMode = {}));
20
20
  class ResourceObject {
21
- constructor(container) {
21
+ constructor(container, mode) {
22
22
  this._mode = ResourceObjectMode.NewDocument;
23
23
  this._container = container;
24
+ this._mode = mode;
24
25
  }
25
26
  EndpointContentType() {
26
27
  throw new Error('Method or Property not implemented.');
@@ -63,6 +64,8 @@ class ResourceObject {
63
64
  return undefined;
64
65
  if ((0, json_1.isUndefined)(data) && (0, json_1.isUndefined)(shadow))
65
66
  return undefined;
67
+ if ((0, json_1.isUndefined)(shadow))
68
+ return data;
66
69
  if ((0, json_1.isArray)(data))
67
70
  return data;
68
71
  if ((0, json_1.isObject)(data)) {
@@ -83,7 +86,7 @@ class ResourceObject {
83
86
  if ((0, json_1.isDefined)(shadow) && (0, json_1.isObject)(shadow)) {
84
87
  for (const fieldName in shadow) {
85
88
  if ((0, json_1.hasProperty)(shadow, fieldName)) {
86
- if ((0, json_1.isUndefined)(data[fieldName]))
89
+ if ((0, json_1.isDefinedAndNotNull)(shadow[fieldName]) && (0, json_1.isUndefinedOrNull)(data[fieldName]))
87
90
  payload[fieldName] = null;
88
91
  }
89
92
  }
@@ -101,25 +104,27 @@ class ResourceObject {
101
104
  const payload = {};
102
105
  for (const fieldName in data) {
103
106
  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])) {
107
+ if ((0, json_1.isDefinedAndNotNull)(data[fieldName])) {
108
+ if ((0, json_1.isArrayOfStrings)(data[fieldName])) {
117
109
  payload[fieldName] = {
118
- data: {
119
- type: this.RelationshipType(fieldName),
120
- id: data[fieldName],
121
- },
110
+ data: [],
122
111
  };
112
+ for (const key of data[fieldName]) {
113
+ payload[fieldName].data.push({
114
+ type: this.RelationshipType(fieldName),
115
+ id: key,
116
+ });
117
+ }
118
+ }
119
+ else if ((0, json_1.isString)(data[fieldName])) {
120
+ if ((0, json_1.isUndefined)(shadow) || !(0, json_1.areEqual)(shadow[fieldName], data[fieldName])) {
121
+ payload[fieldName] = {
122
+ data: {
123
+ type: this.RelationshipType(fieldName),
124
+ id: data[fieldName],
125
+ },
126
+ };
127
+ }
123
128
  }
124
129
  }
125
130
  }
@@ -127,7 +132,7 @@ class ResourceObject {
127
132
  if ((0, json_1.isDefined)(shadow) && (0, json_1.isObject)(shadow)) {
128
133
  for (const fieldName in shadow) {
129
134
  if ((0, json_1.hasProperty)(shadow, fieldName)) {
130
- if ((0, json_1.isUndefined)(data[fieldName]))
135
+ if ((0, json_1.isDefinedAndNotNull)(shadow[fieldName]) && (0, json_1.isUndefinedOrNull)(data[fieldName]))
131
136
  payload[fieldName] = null;
132
137
  }
133
138
  }
@@ -230,7 +235,7 @@ class ResourceObject {
230
235
  const queryUri = this.uri;
231
236
  const queryHeaders = this.GetHeaders();
232
237
  const queryOptions = {};
233
- const payload = this.GetInsertPayload();
238
+ const payload = this.GetUpdatePayload();
234
239
  yield this._container.restClient.Patch(queryUri, payload, queryHeaders, queryOptions);
235
240
  });
236
241
  }
@@ -242,6 +247,12 @@ class ResourceObject {
242
247
  else {
243
248
  yield this.UpdateResource();
244
249
  }
250
+ if ((0, json_1.isDefined)(this.attributes)) {
251
+ this.shadowAttributes.LoadData(this.attributes, __1.ResourceObjectAttributesLoadType.Replace);
252
+ }
253
+ if ((0, json_1.isDefined)(this.relationships)) {
254
+ this.shadowRelationships.LoadData(this.relationships, __1.ResourceObjectRelationshipsLoadType.Replace);
255
+ }
245
256
  });
246
257
  }
247
258
  get type() {
@@ -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.9",
16
+ "version": "22.1.12",
17
17
  "main": "lib/index.js",
18
18
  "types": "lib/index.d.ts",
19
19
  "scripts": {