merchi_sdk_js 0.0.2 → 0.0.4

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.
Files changed (88) hide show
  1. package/package.json +4 -3
  2. package/dist/address.js +0 -109
  3. package/dist/assignment.js +0 -175
  4. package/dist/automatic_payment_relationship.js +0 -72
  5. package/dist/backup.js +0 -32
  6. package/dist/bank.js +0 -25
  7. package/dist/cart.js +0 -133
  8. package/dist/cart_item.js +0 -71
  9. package/dist/cart_shipment_group.js +0 -23
  10. package/dist/cart_shipment_quote.js +0 -26
  11. package/dist/category.js +0 -68
  12. package/dist/company.js +0 -248
  13. package/dist/company_invitation.js +0 -70
  14. package/dist/component.js +0 -107
  15. package/dist/component_tag.js +0 -60
  16. package/dist/component_version.js +0 -21
  17. package/dist/country_tax.js +0 -93
  18. package/dist/dictionary.js +0 -130
  19. package/dist/discount.js +0 -22
  20. package/dist/discount_group.js +0 -18
  21. package/dist/domain.js +0 -245
  22. package/dist/domain_invitation.js +0 -17
  23. package/dist/domain_tag.js +0 -87
  24. package/dist/domain_types.js +0 -22
  25. package/dist/draft.js +0 -97
  26. package/dist/draft_comment.js +0 -45
  27. package/dist/draft_template.js +0 -39
  28. package/dist/email_address.js +0 -34
  29. package/dist/email_counter.js +0 -47
  30. package/dist/enrolled_domain.js +0 -88
  31. package/dist/exchange_rate.js +0 -66
  32. package/dist/field_types.js +0 -19
  33. package/dist/helpers.js +0 -86
  34. package/dist/internal_tag.js +0 -98
  35. package/dist/inventory.js +0 -100
  36. package/dist/inventory_unit_variation.js +0 -19
  37. package/dist/invoice.js +0 -225
  38. package/dist/invoice_types.js +0 -11
  39. package/dist/item.js +0 -25
  40. package/dist/job.js +0 -536
  41. package/dist/job_comment.js +0 -45
  42. package/dist/job_status.js +0 -47
  43. package/dist/matching_inventory.js +0 -21
  44. package/dist/md5.js +0 -149
  45. package/dist/menu.js +0 -37
  46. package/dist/menu_item.js +0 -24
  47. package/dist/merchi.js +0 -1004
  48. package/dist/merchi_file.js +0 -165
  49. package/dist/model.js +0 -753
  50. package/dist/notification.js +0 -151
  51. package/dist/notification_types.js +0 -199
  52. package/dist/output.cjs.js +0 -31317
  53. package/dist/output.esm.js +0 -31312
  54. package/dist/page.js +0 -41
  55. package/dist/payment.js +0 -32
  56. package/dist/payment_device.js +0 -21
  57. package/dist/payment_types.js +0 -20
  58. package/dist/phone_number.js +0 -37
  59. package/dist/product.js +0 -288
  60. package/dist/product_types.js +0 -32
  61. package/dist/production_comment.js +0 -44
  62. package/dist/quote.js +0 -91
  63. package/dist/quote_item.js +0 -59
  64. package/dist/roles.js +0 -29
  65. package/dist/seo_domain_page.js +0 -42
  66. package/dist/session.js +0 -103
  67. package/dist/set.js +0 -29
  68. package/dist/shipment.js +0 -181
  69. package/dist/shipment_item.js +0 -17
  70. package/dist/shipment_item_fulfillment.js +0 -17
  71. package/dist/shipment_method.js +0 -81
  72. package/dist/shipment_method_variation.js +0 -38
  73. package/dist/subscription_plan.js +0 -75
  74. package/dist/supply_domain.js +0 -65
  75. package/dist/system_role.js +0 -12
  76. package/dist/theme.js +0 -180
  77. package/dist/theme_css_setting.js +0 -61
  78. package/dist/theme_status.js +0 -11
  79. package/dist/user.js +0 -409
  80. package/dist/user_company.js +0 -19
  81. package/dist/user_types.js +0 -23
  82. package/dist/uuid.js +0 -12
  83. package/dist/variation.js +0 -233
  84. package/dist/variation_field.js +0 -233
  85. package/dist/variation_fields_option.js +0 -41
  86. package/dist/variation_option.js +0 -62
  87. package/dist/variations_group.js +0 -43
  88. package/dist/white_label_accessibilities.js +0 -11
package/dist/model.js DELETED
@@ -1,753 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.Request = Request;
7
- exports.addPropertyTo = addPropertyTo;
8
- exports.create = create;
9
- exports.deleteOne = deleteOne;
10
- exports.enumerateFiles = enumerateFiles;
11
- exports.forEachProperty = forEachProperty;
12
- exports.fromJson = fromJson;
13
- exports.fromJsonList = fromJsonList;
14
- exports.getList = getList;
15
- exports.getOne = getOne;
16
- exports.patchOne = patchOne;
17
- exports.recoverOne = recoverOne;
18
- exports.serialise = serialise;
19
- var _helpers = require("./helpers.js");
20
- var _dictionary = require("./dictionary.js");
21
- var _set = require("./set.js");
22
- var _axios = _interopRequireDefault(require("axios"));
23
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
24
- function Request() {
25
- var server = (0, _helpers.getGlobal)().merchiBackendUri,
26
- version = 'v6',
27
- method = 'GET',
28
- resource = '/',
29
- query = new _dictionary.Dictionary(),
30
- data = new _dictionary.Dictionary(),
31
- files = new _dictionary.Dictionary(),
32
- responseHandler = _helpers.id,
33
- errorHandler = _helpers.id,
34
- contentType = null,
35
- username = null,
36
- password = null;
37
- this.server = function (value) {
38
- if ((0, _helpers.isUndefined)(value)) {
39
- return server;
40
- }
41
- server = value;
42
- return this;
43
- };
44
- this.version = function (value) {
45
- if ((0, _helpers.isUndefined)(value)) {
46
- return version;
47
- }
48
- version = value;
49
- return this;
50
- };
51
- this.method = function (value) {
52
- if ((0, _helpers.isUndefined)(value)) {
53
- return method;
54
- }
55
- method = value;
56
- return this;
57
- };
58
- this.resource = function (value) {
59
- if ((0, _helpers.isUndefined)(value)) {
60
- return resource;
61
- }
62
- resource = value;
63
- return this;
64
- };
65
- this.query = function () {
66
- return query;
67
- };
68
- this.data = function () {
69
- return data;
70
- };
71
- this.files = function (value) {
72
- if ((0, _helpers.isUndefined)(value)) {
73
- return files;
74
- }
75
- files = value;
76
- return this;
77
- };
78
- this.responseHandler = function (value) {
79
- if ((0, _helpers.isUndefined)(value)) {
80
- return responseHandler;
81
- }
82
- responseHandler = value;
83
- return this;
84
- };
85
- this.errorHandler = function (value) {
86
- if ((0, _helpers.isUndefined)(value)) {
87
- return errorHandler;
88
- }
89
- errorHandler = value;
90
- return this;
91
- };
92
- this.contentType = function (value) {
93
- if ((0, _helpers.isUndefined)(value)) {
94
- return contentType;
95
- }
96
- contentType = value;
97
- return this;
98
- };
99
- this.username = function (value) {
100
- if ((0, _helpers.isUndefined)(value)) {
101
- return username;
102
- }
103
- username = value;
104
- return this;
105
- };
106
- this.password = function (value) {
107
- if ((0, _helpers.isUndefined)(value)) {
108
- return password;
109
- }
110
- password = value;
111
- return this;
112
- };
113
- this.p2pSupported = function () {
114
- return false;
115
- };
116
- this.url = function () {
117
- return this.server() + this.path();
118
- };
119
- this.path = function () {
120
- var url = this.version();
121
- url += this.resource();
122
- if (Boolean((0, _helpers.getGlobal)().currentSession) && Boolean((0, _helpers.getGlobal)().currentSession.token())) {
123
- this.query().add('session_token', (0, _helpers.getGlobal)().currentSession.token());
124
- }
125
- if (this.query().count() > 0) {
126
- url += '?' + this.query().toUriEncoding();
127
- }
128
- return url;
129
- };
130
- this.send = function () {
131
- var self = this,
132
- allData,
133
- params;
134
- allData = self.data();
135
- allData.merge(self.files());
136
- params = {
137
- 'url': self.url(),
138
- 'data': allData.toFormData(),
139
- 'method': self.method()
140
- };
141
- if (self.username() !== null) {
142
- params.auth = {
143
- username: self.username(),
144
- password: self.password()
145
- };
146
- }
147
- if (self.contentType() !== null) {
148
- params.headers = {
149
- 'Content-Type': self.contentType()
150
- };
151
- }
152
- (0, _axios["default"])(params).then(function (response) {
153
- return handleResponse(response);
154
- })["catch"](function (error) {
155
- return handleError(error);
156
- });
157
- function handleResponse(response) {
158
- var func = self.responseHandler();
159
- var argCount = func.length;
160
- var data = response.data;
161
- if (argCount > 1) {
162
- func(response.status, data);
163
- } else {
164
- func(response.data);
165
- }
166
- }
167
- function handleError(error) {
168
- var func = self.errorHandler();
169
- var argCount = func.length;
170
- if (argCount > 1) {
171
- func(error.status, error);
172
- } else {
173
- func(data);
174
- }
175
- }
176
- };
177
- }
178
- function forEachProperty(obj, procedure) {
179
- obj._properties.each(function (property) {
180
- // elem in _propertiesSet is array
181
- // 0 is name, 1 is type
182
- procedure(property[0], property[1]);
183
- });
184
- }
185
- function fromJson(model, json, options) {
186
- var defaults = {
187
- makesDirty: true
188
- };
189
- options = Object.assign({}, defaults, options);
190
- forEachProperty(model, function (propName, Type) {
191
- try {
192
- var received = json[propName],
193
- parsed;
194
- if (!Type || typeof received === 'number') {
195
- // Prop is untyped or only id received
196
- model[propName](received, {
197
- makesDirty: options.makesDirty
198
- });
199
- } else {
200
- // Prop is typed and other thing rather than
201
- // single id received
202
- if (received instanceof Array) {
203
- if (received.length > 0 && received[0] instanceof Object) {
204
- // response has embed obj
205
- parsed = fromJsonList(new Type(), received, options);
206
- } else {
207
- // response is id array
208
- parsed = received;
209
- }
210
- } else {
211
- // Embed Object received
212
- parsed = fromJson(new Type(), received, options);
213
- }
214
- model[propName](parsed, {
215
- makesDirty: options.makesDirty
216
- });
217
- }
218
- } catch (ignore) {}
219
- });
220
- model.rights = json.rights;
221
- return model;
222
- }
223
- function fromJsonList(obj, json, options) {
224
- var result = [],
225
- list,
226
- i,
227
- single;
228
- var defaults = {
229
- makesDirty: true
230
- };
231
- options = Object.assign({}, defaults, options);
232
-
233
- // When request plural eg /users, it gives typed json list
234
- // But when request embed data, annonymous json list returned
235
- if (json.constructor === Array) {
236
- // Embed data process
237
- list = json;
238
- for (i = 0; i < list.length; ++i) {
239
- single = new obj.constructor();
240
- result.push(fromJson(single, list[i], options));
241
- }
242
- return result;
243
- }
244
- // Plural request eg /users
245
- list = json[obj.json];
246
- for (i = 0; i < list.length; ++i) {
247
- single = new obj.single();
248
- result.push(fromJson(single, list[i][single.json], options));
249
- }
250
-
251
- // Append meta data for pagination,
252
- // workaroundbackward compatibility
253
- result.meta = {
254
- available: json.available,
255
- count: json.count,
256
- canCreate: json.canCreate,
257
- limit: json.limit,
258
- offset: json.offset
259
- };
260
- return result;
261
- }
262
- function getList(resource, success, error, parameters, withUpdates) {
263
- var request = new Request();
264
- request.resource(resource + '/').method('GET');
265
- request.responseHandler(success).errorHandler(error);
266
- if ((0, _helpers.notEmpty)(parameters.cartToken)) {
267
- request.query().add('cart_token', parameters.cartToken);
268
- }
269
- if ((0, _helpers.notEmpty)(parameters.offset)) {
270
- request.query().add('offset', parameters.offset);
271
- }
272
- if ((0, _helpers.notEmpty)(parameters.limit)) {
273
- request.query().add('limit', parameters.limit);
274
- }
275
- if ((0, _helpers.notEmpty)(parameters.q)) {
276
- request.query().add('q', parameters.q);
277
- }
278
- if ((0, _helpers.notEmpty)(parameters.sort)) {
279
- request.query().add('sort', parameters.sort);
280
- }
281
- if ((0, _helpers.notEmpty)(parameters.order)) {
282
- request.query().add('order', parameters.order);
283
- }
284
- if ((0, _helpers.notEmpty)(parameters.tab)) {
285
- request.query().add('tab', parameters.tab);
286
- }
287
- if ((0, _helpers.notEmpty)(parameters.as)) {
288
- request.query().add('as', parameters.as);
289
- }
290
- if (!parameters.withRights) {
291
- request.query().add('skip_rights', 'y');
292
- }
293
- if (parameters.embed && parameters.embed.constructor === Object) {
294
- request.query().add('embed', JSON.stringify(parameters.embed));
295
- }
296
- if ((0, _helpers.notEmpty)(parameters.state)) {
297
- request.query().add('state', parameters.state);
298
- }
299
- if ((0, _helpers.notEmpty)(parameters.categoryId)) {
300
- request.query().add('category_id', parameters.categoryId);
301
- }
302
- if ((0, _helpers.notEmpty)(parameters.platformCategoryId)) {
303
- request.query().add('platform_category_id', parameters.platformCategoryId);
304
- }
305
- if ((0, _helpers.notEmpty)(parameters.groupBuyForJobId)) {
306
- request.query().add('group_buy_for_job_id', parameters.groupBuyForJobId);
307
- }
308
- if ((0, _helpers.notEmpty)(parameters.inDomain)) {
309
- request.query().add('in_domain', parameters.inDomain);
310
- }
311
- if ((0, _helpers.notEmpty)(parameters.inDomainName)) {
312
- request.query().add('in_domain_name', parameters.inDomainName);
313
- }
314
- if (parameters.inDomainRoles) {
315
- request.query().add('in_domain_roles', JSON.stringify(parameters.inDomainRoles));
316
- }
317
- if (parameters.asRole) {
318
- request.query().add('as_role', JSON.stringify(parameters.asRole));
319
- }
320
- if (parameters.groupBuyOnly) {
321
- request.query().add('group_buy_only', JSON.stringify(parameters.groupBuyOnly));
322
- }
323
- if (parameters.publicOnly) {
324
- request.query().add('public_only', JSON.stringify(parameters.publicOnly));
325
- }
326
- if (parameters.isPrivate) {
327
- request.query().add('is_private', JSON.stringify(parameters.isPrivate));
328
- }
329
- if (parameters.managedOnly) {
330
- request.query().add('managed_only', JSON.stringify(parameters.managedOnly));
331
- }
332
- if (parameters.doesNotHaveAdminDomain) {
333
- request.query().add('does_not_have_admin_domain', JSON.stringify(parameters.doesNotHaveAdminDomain));
334
- }
335
- if (parameters.teamOnly) {
336
- request.query().add('team_only', JSON.stringify(parameters.teamOnly));
337
- }
338
- if (parameters.clientOnly) {
339
- request.query().add('client_only', JSON.stringify(parameters.clientOnly));
340
- }
341
- if (parameters.memberOnly) {
342
- request.query().add('member_only', JSON.stringify(parameters.memberOnly));
343
- }
344
- if (parameters.merchiOnly) {
345
- request.query().add('merchi_only', JSON.stringify(parameters.merchiOnly));
346
- }
347
- if (parameters.supplierResellOnly) {
348
- request.query().add('supplier_resell_only', JSON.stringify(parameters.supplierResellOnly));
349
- }
350
- if (parameters.inbound) {
351
- request.query().add('inbound', JSON.stringify(parameters.inbound));
352
- }
353
- if (parameters.isMaster) {
354
- request.query().add('is_master', JSON.stringify(parameters.isMaster));
355
- }
356
- if (parameters.domainRoles) {
357
- request.query().add('domain_roles', parameters.domainRoles);
358
- }
359
- if (parameters.domainTypes) {
360
- request.query().add('domain_types', parameters.domainTypes);
361
- }
362
- if (parameters.entityTypes) {
363
- request.query().add('entity_types', parameters.entityTypes);
364
- }
365
- if (parameters.productTypes) {
366
- request.query().add('product_types', parameters.productTypes);
367
- }
368
- if (parameters.masterProduct) {
369
- request.query().add('master_product', parameters.masterProduct);
370
- }
371
- if (parameters.managedDomainsOnly) {
372
- request.query().add('managed_domains_only', JSON.stringify(parameters.managedDomainsOnly));
373
- }
374
- if (parameters.businessDomainsOnly) {
375
- request.query().add('business_domains_only', JSON.stringify(parameters.businessDomainsOnly));
376
- }
377
- if ((0, _helpers.notEmpty)(parameters.dateFrom)) {
378
- request.query().add('date_from', parameters.dateFrom);
379
- }
380
- if ((0, _helpers.notEmpty)(parameters.dateTo)) {
381
- request.query().add('date_to', parameters.dateTo);
382
- }
383
- if ((0, _helpers.notEmpty)(parameters.relatedAssignment)) {
384
- request.query().add('related_assignment', parameters.relatedAssignment);
385
- }
386
- if ((0, _helpers.notEmpty)(parameters.relatedDraft)) {
387
- request.query().add('related_draft', parameters.relatedDraft);
388
- }
389
- if ((0, _helpers.notEmpty)(parameters.relatedJob)) {
390
- request.query().add('related_job', parameters.relatedJob);
391
- }
392
- if ((0, _helpers.notEmpty)(parameters.relatedProduct)) {
393
- request.query().add('related_product', parameters.relatedProduct);
394
- }
395
- if ((0, _helpers.notEmpty)(parameters.jobNotifiable)) {
396
- request.query().add('job_notifiable', parameters.jobNotifiable);
397
- }
398
- if ((0, _helpers.notEmpty)(parameters.notificationType)) {
399
- request.query().add('notification_type', parameters.notificationType);
400
- }
401
- if ((0, _helpers.notEmpty)(parameters.notificationRecipient)) {
402
- request.query().add('notification_recipient', parameters.notificationRecipient);
403
- }
404
- if ((0, _helpers.notEmpty)(parameters.notificationJob)) {
405
- request.query().add('notification_job', parameters.notificationJob);
406
- }
407
- if ((0, _helpers.notEmpty)(parameters.relatedUser)) {
408
- request.query().add('related_user', parameters.relatedUser);
409
- }
410
- if ((0, _helpers.notEmpty)(parameters.clientId)) {
411
- request.query().add('client_id', parameters.clientId);
412
- }
413
- if ((0, _helpers.notEmpty)(parameters.clientCompanyId)) {
414
- request.query().add('client_company_id', parameters.clientCompanyId);
415
- }
416
- if (parameters.savedByUser) {
417
- request.query().add('saved_by_user', JSON.stringify(parameters.savedByUser));
418
- }
419
- if (parameters.receiverId) {
420
- request.query().add('receiver_id', JSON.stringify(parameters.receiverId));
421
- }
422
- if ((0, _helpers.notEmpty)(parameters.queryString)) {
423
- request.query().add('query_string', parameters.queryString);
424
- }
425
- if ((0, _helpers.notEmpty)(parameters.companyCustomerId)) {
426
- request.query().add('company_customer_id', parameters.companyCustomerId);
427
- }
428
- if ((0, _helpers.notEmpty)(parameters.companyId)) {
429
- request.query().add('company_id', parameters.companyId);
430
- }
431
- if ((0, _helpers.notEmpty)(parameters.companySupplierId)) {
432
- request.query().add('company_supplier_id', parameters.companySupplierId);
433
- }
434
- if ((0, _helpers.notEmpty)(parameters.componentId)) {
435
- request.query().add('component_id', parameters.componentId);
436
- }
437
- if ((0, _helpers.notEmpty)(parameters.section)) {
438
- request.query().add('section', parameters.section);
439
- }
440
- if ((0, _helpers.notEmpty)(parameters.senderRole)) {
441
- request.query().add('senderRole', parameters.section);
442
- }
443
- if ((0, _helpers.notEmpty)(parameters.isOrder)) {
444
- request.query().add('is_order', parameters.isOrder);
445
- }
446
- if ((0, _helpers.notEmpty)(parameters.tags)) {
447
- request.query().add('tags', parameters.tags);
448
- }
449
- if (parameters.tagsInternal) {
450
- request.query().add('tags_internal', parameters.tagsInternal);
451
- }
452
- if (parameters.tagNames) {
453
- request.query().add('tag_names', parameters.tagNames);
454
- }
455
- if ((0, _helpers.notEmpty)(parameters.exclude)) {
456
- request.query().add('exclude', parameters.exclude);
457
- }
458
- if ((0, _helpers.notEmpty)(parameters.excludeComponents)) {
459
- request.query().add('exclude_components', parameters.excludeComponents);
460
- }
461
- if ((0, _helpers.notEmpty)(parameters.excludeDomains)) {
462
- request.query().add('exclude_domains', parameters.excludeDomains);
463
- }
464
- if ((0, _helpers.notEmpty)(parameters.includeOnly)) {
465
- request.query().add('include_only', parameters.includeOnly);
466
- }
467
- if ((0, _helpers.notEmpty)(parameters.orClientId)) {
468
- request.query().add('or_client_id', parameters.orClientId);
469
- }
470
- if ((0, _helpers.notEmpty)(parameters.shopifyOnly)) {
471
- request.query().add('shopify_only', parameters.shopifyOnly);
472
- }
473
- if ((0, _helpers.notEmpty)(parameters.relatedComponent)) {
474
- request.query().add('related_component', parameters.relatedComponent);
475
- }
476
- if ((0, _helpers.notEmpty)(parameters.originalOf)) {
477
- request.query().add('original_of', parameters.originalOf);
478
- }
479
- request.send();
480
- if (withUpdates) {
481
- return (0, _helpers.getGlobal)().merchiSusubscriptionManager.subscribe(withUpdates, request.path(), "GET", function (statusCode, data) {
482
- return success(JSON.parse(data));
483
- });
484
- }
485
- return null;
486
- }
487
- function serialise(obj, existing, prefix, files, options) {
488
- var result = new _dictionary.Dictionary(),
489
- index,
490
- excludeOld;
491
- options = options ? options : {};
492
- excludeOld = !!options.excludeOld;
493
- if (Boolean(existing)) {
494
- result = existing;
495
- }
496
- if (!files) {
497
- files = [];
498
- }
499
- function appendData(name, value) {
500
- if (!(0, _helpers.isUndefined)(value) && value !== null) {
501
- if (Boolean(prefix)) {
502
- result.add(prefix + '-' + name, value);
503
- } else {
504
- result.add(name, value);
505
- }
506
- }
507
- }
508
- if (Boolean(obj.fileData)) {
509
- index = files.length;
510
- files.push(obj.fileData);
511
- appendData('fileDataIndex', index);
512
- }
513
- forEachProperty(obj, function (property, Type) {
514
- var value = obj[property](),
515
- i,
516
- innerPrefix,
517
- nested;
518
- if (!(0, _helpers.isUndefined)(Type) && Boolean(Type)) {
519
- // serialise relationship
520
- var updatingOrder = obj._updatingOrder[property];
521
- if (updatingOrder) {
522
- appendData(property + '-*updateOrder', 'true');
523
- }
524
- if (value instanceof Array) {
525
- var isDirty = false;
526
- for (i = 0; i < value.length; i++) {
527
- if (!!value[i]._isDirty) {
528
- isDirty = true;
529
- break;
530
- }
531
- }
532
- if (excludeOld && !(obj._wantsUpdate[property] || isDirty)) {
533
- return;
534
- }
535
- if (value && value.length === 0) {
536
- appendData(property + '-count', 0);
537
- }
538
- // multiple remove entities
539
- var childrenSerialised = 0;
540
- for (i = 0; i < value.length; ++i) {
541
- innerPrefix = property + '-' + i;
542
- if (Boolean(prefix)) {
543
- innerPrefix = prefix + '-' + innerPrefix;
544
- }
545
- var initialCount = result.count();
546
- nested = serialise(value[i], result, innerPrefix, files, options);
547
- if (result.count() > initialCount) {
548
- childrenSerialised += 1;
549
- }
550
- result = nested[0];
551
- files = nested[1];
552
- if (childrenSerialised > 0) {
553
- appendData(property + '-count', childrenSerialised);
554
- }
555
- }
556
- } else if (Boolean(value)) {
557
- // one remote entity
558
- if (excludeOld && !(obj._wantsUpdate[property] || value._isDirty)) {
559
- return;
560
- }
561
- innerPrefix = property + '-0';
562
- if (Boolean(prefix)) {
563
- innerPrefix = prefix + '-' + innerPrefix;
564
- }
565
- initialCount = result.count();
566
- nested = serialise(value, result, innerPrefix, files, options);
567
- if (result.count() > initialCount) {
568
- appendData(property + '-count', 1);
569
- }
570
- result = nested[0];
571
- files = nested[1];
572
- }
573
- } else {
574
- // serialise scalar
575
- if (excludeOld && !obj._wantsUpdate[property] && property !== 'id') {
576
- return;
577
- }
578
- appendData(property, value);
579
- }
580
- });
581
- return [result, files];
582
- }
583
- function markDirty(obj) {
584
- /* mark this object, and recursively all objects that have refered to it,
585
- as changed compared to the backend. */
586
- var openSet = []; /* Queue (BFS) */
587
- var closedSet = new _set.Set();
588
- openSet.push(obj);
589
- while (openSet.length > 0) {
590
- var current = openSet.shift();
591
- if (!closedSet.has(current)) {
592
- current._isDirty = true;
593
- closedSet.add(current);
594
- current._backObjects.each(function (child) {
595
- openSet.push(child);
596
- });
597
- }
598
- }
599
- }
600
- function addPropertyTo(obj, propertyName, Type) {
601
- obj._isMerchiEntity = true;
602
- if (!Object.prototype.hasOwnProperty.call(obj, '_wantsUpdate')) {
603
- obj._wantsUpdate = {};
604
- }
605
- obj._wantsUpdate[propertyName] = false;
606
- if (!Object.prototype.hasOwnProperty.call(obj, '_isDirty')) {
607
- obj._isDirty = false;
608
- }
609
- if (!Object.prototype.hasOwnProperty.call(obj, '_backObjects')) {
610
- obj._backObjects = new _set.Set();
611
- }
612
- if (!Object.prototype.hasOwnProperty.call(obj, '_properties')) {
613
- obj._properties = new _set.Set();
614
- }
615
- if (!Object.prototype.hasOwnProperty.call(obj, '_updatingOrder')) {
616
- obj._updatingOrder = {};
617
- }
618
- var hiddenProperty = '_' + propertyName;
619
- if ((0, _helpers.isUndefined)(Type)) {
620
- Type = null;
621
- }
622
- obj._properties.add([propertyName, Type]);
623
- obj[propertyName] = function (value, options) {
624
- if ((0, _helpers.isUndefined)(options)) {
625
- options = {};
626
- }
627
- if ((0, _helpers.isUndefined)(options.makesDirty)) {
628
- options.makesDirty = true;
629
- }
630
- if ((0, _helpers.isUndefined)(options.updatingOrder)) {
631
- options.updatingOrder = false;
632
- }
633
- if ((0, _helpers.isUndefined)(value)) {
634
- return obj[hiddenProperty];
635
- }
636
- obj[hiddenProperty] = value;
637
- if (options.makesDirty) {
638
- obj._wantsUpdate[propertyName] = true;
639
- markDirty(obj);
640
- }
641
- obj._updatingOrder[propertyName] = options.updatingOrder;
642
- if (!!value && !!value._isMerchiEntity) {
643
- value._backObjects.add(obj);
644
- } else if (Array.isArray(value)) {
645
- for (var i = 0; i < value.length; i++) {
646
- var item = value[i];
647
- if (!!item._isMerchiEntity) {
648
- item._backObjects.add(obj);
649
- }
650
- }
651
- }
652
- return obj;
653
- };
654
- }
655
- function patchOne(options) {
656
- var request = new Request(),
657
- id = options.id;
658
- options.resource = options.resource || '';
659
- options.id = options.id || '';
660
- options.data = options.data || {};
661
- options.success = options.success || id;
662
- options.error = options.error || id;
663
- options.files = options.files || new _dictionary.Dictionary();
664
- request.resource(options.resource + '/' + options.id + '/').method('PATCH');
665
- request.files(options.files);
666
- request.data().merge(options.data);
667
- if (options.embed && options.embed.constructor === Object) {
668
- request.query().add('embed', JSON.stringify(options.embed));
669
- }
670
- if ((0, _helpers.notEmpty)(options.as_domain)) {
671
- request.query().add('as_domain', options.as_domain);
672
- }
673
- if (options.cartToken) {
674
- request.query().add('cart_token', options.cartToken);
675
- }
676
- if (!options.withRights) {
677
- request.query().add('skip_rights', 'y');
678
- }
679
- request.responseHandler(options.success).errorHandler(options.error);
680
- request.send();
681
- }
682
- function getOne(options) {
683
- var request = new Request(),
684
- error = options.error,
685
- embed = options.embed;
686
- request.resource(options.resource + '/' + options.id + '/').method('GET');
687
- if (embed && embed.constructor === Object) {
688
- embed = JSON.stringify(embed);
689
- request.query().add('embed', embed);
690
- }
691
- if (options.includeArchived) {
692
- request.query().add("include_archived", true);
693
- }
694
- if (options.cartToken) {
695
- request.query().add('cart_token', options.cartToken);
696
- }
697
- if (!options.withRights) {
698
- request.query().add('skip_rights', 'y');
699
- }
700
- request.responseHandler(options.success).errorHandler(error);
701
- request.send();
702
- }
703
- function deleteOne(resource, success, error) {
704
- var request = new Request();
705
- request.resource(resource + '/').method('DELETE');
706
- request.responseHandler(success).errorHandler(error);
707
- request.send();
708
- }
709
- function create(options) {
710
- var request = new Request(),
711
- embed;
712
- options.resource = options.resource || '';
713
- options.parameters = options.parameters || new _dictionary.Dictionary();
714
- options.success = options.success || _helpers.id;
715
- options.error = options.error || _helpers.id;
716
- options.files = options.files || new _dictionary.Dictionary();
717
- request.resource(options.resource + '/').method('POST');
718
- request.data().merge(options.parameters);
719
- request.files(options.files);
720
- if (!(0, _helpers.isUndefined)(options.username)) {
721
- request.username(options.username);
722
- request.password(options.password);
723
- }
724
- if (options.embed && options.embed.constructor === Object) {
725
- embed = JSON.stringify(options.embed);
726
- request.query().add('embed', embed);
727
- }
728
- if ((0, _helpers.notEmpty)(options.as_domain)) {
729
- request.query().add('as_domain', options.as_domain);
730
- }
731
- if (!options.withRights) {
732
- request.query().add('skip_rights', 'y');
733
- }
734
- request.responseHandler(options.success).errorHandler(options.error);
735
- request.send();
736
- }
737
- function enumerateFiles(files) {
738
- /* Convert a list to a Dictionary where the keys where the indices
739
- and the values where the values at those indices.
740
- */
741
- var i,
742
- result = new _dictionary.Dictionary();
743
- for (i = 0; i < files.length; ++i) {
744
- result.add(i, files[i]);
745
- }
746
- return result;
747
- }
748
- function recoverOne(model, id, success, error) {
749
- var request = new Request();
750
- request.resource("/unarchive/" + model + '/' + id + '/').method('POST');
751
- request.responseHandler(success).errorHandler(error);
752
- request.send();
753
- }