@esri/hub-common 12.11.0 → 12.13.0
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/esm/capabilities/getWorkspaceCapabilities.js +2 -0
- package/dist/esm/capabilities/getWorkspaceCapabilities.js.map +1 -1
- package/dist/esm/core/HubItemEntity.js +7 -0
- package/dist/esm/core/HubItemEntity.js.map +1 -1
- package/dist/esm/core/_internal/getBasePropertyMap.js +1 -0
- package/dist/esm/core/_internal/getBasePropertyMap.js.map +1 -1
- package/dist/esm/core/fetchHubEntity.js +4 -0
- package/dist/esm/core/fetchHubEntity.js.map +1 -1
- package/dist/esm/core/getTypeFromEntity.js +3 -0
- package/dist/esm/core/getTypeFromEntity.js.map +1 -1
- package/dist/esm/core/types/IHubDiscussion.js +1 -0
- package/dist/esm/core/types/IHubDiscussion.js.map +1 -0
- package/dist/esm/core/types/index.js +1 -0
- package/dist/esm/core/types/index.js.map +1 -1
- package/dist/esm/discussions/HubDiscussion.js +107 -0
- package/dist/esm/discussions/HubDiscussion.js.map +1 -0
- package/dist/esm/discussions/_internal/DiscussionBusinessRules.js +79 -0
- package/dist/esm/discussions/_internal/DiscussionBusinessRules.js.map +1 -0
- package/dist/esm/discussions/_internal/computeProps.js +31 -0
- package/dist/esm/discussions/_internal/computeProps.js.map +1 -0
- package/dist/esm/discussions/_internal/getPropertyMap.js +13 -0
- package/dist/esm/discussions/_internal/getPropertyMap.js.map +1 -0
- package/dist/esm/discussions/defaults.js +30 -0
- package/dist/esm/discussions/defaults.js.map +1 -0
- package/dist/esm/discussions/edit.js +82 -0
- package/dist/esm/discussions/edit.js.map +1 -0
- package/dist/esm/discussions/fetch.js +44 -0
- package/dist/esm/discussions/fetch.js.map +1 -0
- package/dist/esm/discussions/index.js +4 -0
- package/dist/esm/discussions/index.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/permissions/HubPermissionPolicies.js +2 -0
- package/dist/esm/permissions/HubPermissionPolicies.js.map +1 -1
- package/dist/esm/permissions/types/Permission.js +2 -0
- package/dist/esm/permissions/types/Permission.js.map +1 -1
- package/dist/esm/versioning/updateVersion.js +22 -1
- package/dist/esm/versioning/updateVersion.js.map +1 -1
- package/dist/esm/versioning/utils.js +16 -0
- package/dist/esm/versioning/utils.js.map +1 -1
- package/dist/node/capabilities/getWorkspaceCapabilities.js +2 -0
- package/dist/node/capabilities/getWorkspaceCapabilities.js.map +1 -1
- package/dist/node/core/HubItemEntity.js +7 -0
- package/dist/node/core/HubItemEntity.js.map +1 -1
- package/dist/node/core/_internal/getBasePropertyMap.js +1 -0
- package/dist/node/core/_internal/getBasePropertyMap.js.map +1 -1
- package/dist/node/core/fetchHubEntity.js +4 -0
- package/dist/node/core/fetchHubEntity.js.map +1 -1
- package/dist/node/core/getTypeFromEntity.js +3 -0
- package/dist/node/core/getTypeFromEntity.js.map +1 -1
- package/dist/node/core/types/IHubDiscussion.js +3 -0
- package/dist/node/core/types/IHubDiscussion.js.map +1 -0
- package/dist/node/core/types/index.js +1 -0
- package/dist/node/core/types/index.js.map +1 -1
- package/dist/node/discussions/HubDiscussion.js +111 -0
- package/dist/node/discussions/HubDiscussion.js.map +1 -0
- package/dist/node/discussions/_internal/DiscussionBusinessRules.js +82 -0
- package/dist/node/discussions/_internal/DiscussionBusinessRules.js.map +1 -0
- package/dist/node/discussions/_internal/computeProps.js +35 -0
- package/dist/node/discussions/_internal/computeProps.js.map +1 -0
- package/dist/node/discussions/_internal/getPropertyMap.js +17 -0
- package/dist/node/discussions/_internal/getPropertyMap.js.map +1 -0
- package/dist/node/discussions/defaults.js +33 -0
- package/dist/node/discussions/defaults.js.map +1 -0
- package/dist/node/discussions/edit.js +88 -0
- package/dist/node/discussions/edit.js.map +1 -0
- package/dist/node/discussions/fetch.js +49 -0
- package/dist/node/discussions/fetch.js.map +1 -0
- package/dist/node/discussions/index.js +7 -0
- package/dist/node/discussions/index.js.map +1 -0
- package/dist/node/index.js +1 -0
- package/dist/node/index.js.map +1 -1
- package/dist/node/permissions/HubPermissionPolicies.js +2 -0
- package/dist/node/permissions/HubPermissionPolicies.js.map +1 -1
- package/dist/node/permissions/types/Permission.js +2 -0
- package/dist/node/permissions/types/Permission.js.map +1 -1
- package/dist/node/versioning/updateVersion.js +22 -1
- package/dist/node/versioning/updateVersion.js.map +1 -1
- package/dist/node/versioning/utils.js +18 -1
- package/dist/node/versioning/utils.js.map +1 -1
- package/dist/types/content/_internal.d.ts +1 -0
- package/dist/types/core/HubItemEntity.d.ts +5 -0
- package/dist/types/core/types/HubEntityType.d.ts +1 -1
- package/dist/types/core/types/IHubDiscussion.d.ts +8 -0
- package/dist/types/core/types/IHubItemEntity.d.ts +4 -0
- package/dist/types/core/types/index.d.ts +1 -0
- package/dist/types/discussions/HubDiscussion.d.ts +44 -0
- package/dist/types/discussions/_internal/DiscussionBusinessRules.d.ts +27 -0
- package/dist/types/discussions/_internal/computeProps.d.ts +12 -0
- package/dist/types/discussions/_internal/getPropertyMap.d.ts +8 -0
- package/dist/types/discussions/defaults.d.ts +11 -0
- package/dist/types/discussions/edit.d.ts +29 -0
- package/dist/types/discussions/fetch.d.ts +20 -0
- package/dist/types/discussions/index.d.ts +3 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/permissions/types/Permission.d.ts +2 -2
- package/dist/types/versioning/updateVersion.d.ts +3 -1
- package/dist/types/versioning/utils.d.ts +14 -1
- package/package.json +1 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteDiscussion = exports.updateDiscussion = exports.createDiscussion = void 0;
|
|
4
|
+
const arcgis_rest_portal_1 = require("@esri/arcgis-rest-portal");
|
|
5
|
+
const models_1 = require("../models");
|
|
6
|
+
const slugs_1 = require("../items/slugs");
|
|
7
|
+
const index_1 = require("../index");
|
|
8
|
+
const PropertyMapper_1 = require("../core/_internal/PropertyMapper");
|
|
9
|
+
const getPropertyMap_1 = require("./_internal/getPropertyMap");
|
|
10
|
+
const computeProps_1 = require("./_internal/computeProps");
|
|
11
|
+
const defaults_1 = require("./defaults");
|
|
12
|
+
/**
|
|
13
|
+
* @private
|
|
14
|
+
* Create a new Hub Discussion item
|
|
15
|
+
*
|
|
16
|
+
* Minimal properties are name and orgUrlKey
|
|
17
|
+
*
|
|
18
|
+
* @param partialDiscussion a partial discussion
|
|
19
|
+
* @param requestOptions user request options
|
|
20
|
+
* @returns promise that resolves a IHubDiscussion
|
|
21
|
+
*/
|
|
22
|
+
async function createDiscussion(partialDiscussion, requestOptions) {
|
|
23
|
+
// merge incoming with the default
|
|
24
|
+
// this expansion solves the typing somehow
|
|
25
|
+
const discussion = Object.assign(Object.assign({}, defaults_1.DEFAULT_DISCUSSION), partialDiscussion);
|
|
26
|
+
// Create a slug from the title if one is not passed in
|
|
27
|
+
if (!discussion.slug) {
|
|
28
|
+
discussion.slug = slugs_1.constructSlug(discussion.name, discussion.orgUrlKey);
|
|
29
|
+
}
|
|
30
|
+
// Ensure slug is unique
|
|
31
|
+
discussion.slug = await slugs_1.getUniqueSlug({ slug: discussion.slug }, requestOptions);
|
|
32
|
+
// add slug to keywords
|
|
33
|
+
discussion.typeKeywords = slugs_1.setSlugKeyword(discussion.typeKeywords, discussion.slug);
|
|
34
|
+
// Map discussion object onto a default discussion Model
|
|
35
|
+
const mapper = new PropertyMapper_1.PropertyMapper(getPropertyMap_1.getPropertyMap());
|
|
36
|
+
// create model from object, using the default model as a starting point
|
|
37
|
+
let model = mapper.objectToModel(discussion, index_1.cloneObject(defaults_1.DEFAULT_DISCUSSION_MODEL));
|
|
38
|
+
// create the item
|
|
39
|
+
model = await models_1.createModel(model, requestOptions);
|
|
40
|
+
// map the model back into a IHubDiscussion
|
|
41
|
+
let newDiscussion = mapper.modelToObject(model, {});
|
|
42
|
+
newDiscussion = computeProps_1.computeProps(model, newDiscussion, requestOptions);
|
|
43
|
+
// and return it
|
|
44
|
+
return newDiscussion;
|
|
45
|
+
}
|
|
46
|
+
exports.createDiscussion = createDiscussion;
|
|
47
|
+
/**
|
|
48
|
+
* @private
|
|
49
|
+
* Update a Hub Discussion
|
|
50
|
+
* @param discussion the discussion to update
|
|
51
|
+
* @param requestOptions user request options
|
|
52
|
+
* @returns promise that resolves a IHubDiscussion
|
|
53
|
+
*/
|
|
54
|
+
async function updateDiscussion(discussion, requestOptions) {
|
|
55
|
+
// verify that the slug is unique, excluding the current discussion
|
|
56
|
+
discussion.slug = await slugs_1.getUniqueSlug({ slug: discussion.slug, existingId: discussion.id }, requestOptions);
|
|
57
|
+
// get the backing item & data
|
|
58
|
+
const model = await models_1.getModel(discussion.id, requestOptions);
|
|
59
|
+
// create the PropertyMapper
|
|
60
|
+
const mapper = new PropertyMapper_1.PropertyMapper(getPropertyMap_1.getPropertyMap());
|
|
61
|
+
// Note: Although we are fetching the model, and applying changes onto it,
|
|
62
|
+
// we are not attempting to handle "concurrent edit" conflict resolution
|
|
63
|
+
// but this is where we would apply that sort of logic
|
|
64
|
+
const modelToUpdate = mapper.objectToModel(discussion, model);
|
|
65
|
+
// update the backing item
|
|
66
|
+
const updatedModel = await models_1.updateModel(modelToUpdate, requestOptions);
|
|
67
|
+
// now map back into a discussion and return that
|
|
68
|
+
let updatedDiscussion = mapper.modelToObject(updatedModel, discussion);
|
|
69
|
+
updatedDiscussion = computeProps_1.computeProps(model, updatedDiscussion, requestOptions);
|
|
70
|
+
// the casting is needed because modelToObject returns a `Partial<T>`
|
|
71
|
+
// where as this function returns a `T`
|
|
72
|
+
return updatedDiscussion;
|
|
73
|
+
}
|
|
74
|
+
exports.updateDiscussion = updateDiscussion;
|
|
75
|
+
/**
|
|
76
|
+
* @private
|
|
77
|
+
* Remove a Hub Discussion
|
|
78
|
+
* @param id the discussion item id
|
|
79
|
+
* @param requestOptions request options
|
|
80
|
+
* @returns a promise
|
|
81
|
+
*/
|
|
82
|
+
async function deleteDiscussion(id, requestOptions) {
|
|
83
|
+
const ro = Object.assign(Object.assign({}, requestOptions), { id });
|
|
84
|
+
await arcgis_rest_portal_1.removeItem(ro);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
exports.deleteDiscussion = deleteDiscussion;
|
|
88
|
+
//# sourceMappingURL=edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/discussions/edit.ts"],"names":[],"mappings":";;;AACA,iEAAwE;AAExE,sCAA+D;AAC/D,0CAA8E;AAC9E,oCAAuC;AACvC,qEAAkE;AAClE,+DAA4D;AAC5D,2DAAwD;AACxD,yCAA0E;AAE1E;;;;;;;;;GASG;AACI,KAAK,UAAU,gBAAgB,CACpC,iBAA0C,EAC1C,cAAmC;IAEnC,kCAAkC;IAClC,2CAA2C;IAC3C,MAAM,UAAU,mCAAQ,6BAAkB,GAAK,iBAAiB,CAAE,CAAC;IAEnE,uDAAuD;IACvD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QACpB,UAAU,CAAC,IAAI,GAAG,qBAAa,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;KACxE;IACD,yBAAyB;IACzB,UAAU,CAAC,IAAI,GAAG,MAAM,qBAAa,CACnC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EACzB,cAAc,CACf,CAAC;IACF,uBAAuB;IACvB,UAAU,CAAC,YAAY,GAAG,sBAAc,CACtC,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,IAAI,CAChB,CAAC;IACF,wDAAwD;IACxD,MAAM,MAAM,GAAG,IAAI,+BAAc,CAA0B,+BAAc,EAAE,CAAC,CAAC;IAC7E,wEAAwE;IACxE,IAAI,KAAK,GAAG,MAAM,CAAC,aAAa,CAC9B,UAAU,EACV,mBAAW,CAAC,mCAAwB,CAAC,CACtC,CAAC;IACF,kBAAkB;IAClB,KAAK,GAAG,MAAM,oBAAW,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACjD,2CAA2C;IAC3C,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpD,aAAa,GAAG,2BAAY,CAAC,KAAK,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACnE,gBAAgB;IAChB,OAAO,aAA+B,CAAC;AACzC,CAAC;AApCD,4CAoCC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,gBAAgB,CACpC,UAA0B,EAC1B,cAAmC;IAEnC,mEAAmE;IACnE,UAAU,CAAC,IAAI,GAAG,MAAM,qBAAa,CACnC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EACpD,cAAc,CACf,CAAC;IACF,8BAA8B;IAC9B,MAAM,KAAK,GAAG,MAAM,iBAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IAC5D,4BAA4B;IAC5B,MAAM,MAAM,GAAG,IAAI,+BAAc,CAA0B,+BAAc,EAAE,CAAC,CAAC;IAC7E,0EAA0E;IAC1E,wEAAwE;IACxE,sDAAsD;IACtD,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC9D,0BAA0B;IAC1B,MAAM,YAAY,GAAG,MAAM,oBAAW,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACtE,iDAAiD;IACjD,IAAI,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACvE,iBAAiB,GAAG,2BAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAC3E,qEAAqE;IACrE,uCAAuC;IACvC,OAAO,iBAAmC,CAAC;AAC7C,CAAC;AAzBD,4CAyBC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,gBAAgB,CACpC,EAAU,EACV,cAAmC;IAEnC,MAAM,EAAE,GAAG,gCAAK,cAAc,GAAK,EAAE,EAAE,EAAE,CAAsB,CAAC;IAChE,MAAM,+BAAU,CAAC,EAAE,CAAC,CAAC;IACrB,OAAO;AACT,CAAC;AAPD,4CAOC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertItemToDiscussion = exports.fetchDiscussion = void 0;
|
|
4
|
+
const arcgis_rest_portal_1 = require("@esri/arcgis-rest-portal");
|
|
5
|
+
const models_1 = require("../models");
|
|
6
|
+
const slugs_1 = require("../items/slugs");
|
|
7
|
+
const index_1 = require("../index");
|
|
8
|
+
const PropertyMapper_1 = require("../core/_internal/PropertyMapper");
|
|
9
|
+
const getPropertyMap_1 = require("./_internal/getPropertyMap");
|
|
10
|
+
const computeProps_1 = require("./_internal/computeProps");
|
|
11
|
+
/**
|
|
12
|
+
* @private
|
|
13
|
+
* Get a Discussion by id or slug
|
|
14
|
+
* @param identifier item id or slug
|
|
15
|
+
* @param requestOptions request options
|
|
16
|
+
* @returns a promise that resolves a IHubDiscussion
|
|
17
|
+
*/
|
|
18
|
+
async function fetchDiscussion(identifier, requestOptions) {
|
|
19
|
+
let getPrms;
|
|
20
|
+
if (index_1.isGuid(identifier)) {
|
|
21
|
+
// get item by id
|
|
22
|
+
getPrms = arcgis_rest_portal_1.getItem(identifier, requestOptions);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
getPrms = slugs_1.getItemBySlug(identifier, requestOptions);
|
|
26
|
+
}
|
|
27
|
+
return getPrms.then((item) => {
|
|
28
|
+
if (!item)
|
|
29
|
+
return null;
|
|
30
|
+
return convertItemToDiscussion(item, requestOptions);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
exports.fetchDiscussion = fetchDiscussion;
|
|
34
|
+
/**
|
|
35
|
+
* @private
|
|
36
|
+
* Convert a Hub Discussion Item into a Hub Discussion, fetching any additional
|
|
37
|
+
* information that may be required
|
|
38
|
+
* @param item the discussion item
|
|
39
|
+
* @param auth request options
|
|
40
|
+
* @returns a promise that resolves a IHubDiscussion
|
|
41
|
+
*/
|
|
42
|
+
async function convertItemToDiscussion(item, requestOptions) {
|
|
43
|
+
const model = await models_1.fetchModelFromItem(item, requestOptions);
|
|
44
|
+
const mapper = new PropertyMapper_1.PropertyMapper(getPropertyMap_1.getPropertyMap());
|
|
45
|
+
const discussion = mapper.modelToObject(model, {});
|
|
46
|
+
return computeProps_1.computeProps(model, discussion, requestOptions);
|
|
47
|
+
}
|
|
48
|
+
exports.convertItemToDiscussion = convertItemToDiscussion;
|
|
49
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/discussions/fetch.ts"],"names":[],"mappings":";;;AACA,iEAA0D;AAE1D,sCAA+C;AAC/C,0CAA+C;AAC/C,oCAAkC;AAClC,qEAAkE;AAClE,+DAA4D;AAC5D,2DAAwD;AAExD;;;;;;GAMG;AACI,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,cAA+B;IAE/B,IAAI,OAAO,CAAC;IACZ,IAAI,cAAM,CAAC,UAAU,CAAC,EAAE;QACtB,iBAAiB;QACjB,OAAO,GAAG,4BAAO,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;KAC/C;SAAM;QACL,OAAO,GAAG,qBAAa,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;KACrD;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,uBAAuB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC;AAfD,0CAeC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,uBAAuB,CAC3C,IAAW,EACX,cAA+B;IAE/B,MAAM,KAAK,GAAG,MAAM,2BAAkB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,+BAAc,CAA0B,+BAAc,EAAE,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAmB,CAAC;IACrE,OAAO,2BAAY,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;AACzD,CAAC;AARD,0DAQC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./HubDiscussion"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./edit"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./fetch"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/discussions/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,iDAAuB;AACvB,kDAAwB"}
|
package/dist/node/index.js
CHANGED
|
@@ -19,6 +19,7 @@ tslib_1.__exportStar(require("./extent"), exports);
|
|
|
19
19
|
tslib_1.__exportStar(require("./groups"), exports);
|
|
20
20
|
tslib_1.__exportStar(require("./i18n"), exports);
|
|
21
21
|
tslib_1.__exportStar(require("./initiatives"), exports);
|
|
22
|
+
tslib_1.__exportStar(require("./discussions"), exports);
|
|
22
23
|
tslib_1.__exportStar(require("./items"), exports);
|
|
23
24
|
tslib_1.__exportStar(require("./models"), exports);
|
|
24
25
|
tslib_1.__exportStar(require("./objects"), exports);
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;gBACgB;AAChB,0BAA0B;;;;AAE1B,mDAAyB;AACzB,gDAAsB;AACtB,0DAAgC;AAChC,iEAAuC;AACvC,iDAAuB;AACvB,uDAA6B;AAC7B,oDAA0B;AAC1B,iDAAuB;AACvB,yDAA+B;AAC/B,sDAA4B;AAC5B,mDAAyB;AACzB,mDAAyB;AACzB,iDAAuB;AACvB,wDAA8B;AAC9B,kDAAwB;AACxB,mDAAyB;AACzB,oDAA0B;AAC1B,gDAAsB;AACtB,kDAAwB;AACxB,wDAA8B;AAC9B,qDAA2B;AAC3B,oDAA0B;AAC1B,sDAA4B;AAC5B,mDAAyB;AACzB,kDAAwB;AACxB,oDAA0B;AAC1B,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,uDAA6B;AAE7B,qDAA8C;AAKrC,yBALF,wBAAc,CAKE;AAJvB,qDAA8C;AAIrB,yBAJlB,wBAAc,CAIkB;AAHvC,yCAAkC;AAGO,mBAHlC,kBAAQ,CAGkC;AACjD,6BAAkC;AAAzB,4FAAA,IAAI,OAAA;AAAE,4FAAA,IAAI,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;gBACgB;AAChB,0BAA0B;;;;AAE1B,mDAAyB;AACzB,gDAAsB;AACtB,0DAAgC;AAChC,iEAAuC;AACvC,iDAAuB;AACvB,uDAA6B;AAC7B,oDAA0B;AAC1B,iDAAuB;AACvB,yDAA+B;AAC/B,sDAA4B;AAC5B,mDAAyB;AACzB,mDAAyB;AACzB,iDAAuB;AACvB,wDAA8B;AAC9B,wDAA8B;AAC9B,kDAAwB;AACxB,mDAAyB;AACzB,oDAA0B;AAC1B,gDAAsB;AACtB,kDAAwB;AACxB,wDAA8B;AAC9B,qDAA2B;AAC3B,oDAA0B;AAC1B,sDAA4B;AAC5B,mDAAyB;AACzB,kDAAwB;AACxB,oDAA0B;AAC1B,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,uDAA6B;AAE7B,qDAA8C;AAKrC,yBALF,wBAAc,CAKE;AAJvB,qDAA8C;AAIrB,yBAJlB,wBAAc,CAIkB;AAHvC,yCAAkC;AAGO,mBAHlC,kBAAQ,CAGkC;AACjD,6BAAkC;AAAzB,4FAAA,IAAI,OAAA;AAAE,4FAAA,IAAI,OAAA"}
|
|
@@ -4,6 +4,7 @@ exports.getPermissionPolicy = exports.HubPermissionsPolicies = void 0;
|
|
|
4
4
|
const InitiativeBusinessRules_1 = require("../initiatives/_internal/InitiativeBusinessRules");
|
|
5
5
|
const ProjectBusinessRules_1 = require("../projects/_internal/ProjectBusinessRules");
|
|
6
6
|
const SiteBusinessRules_1 = require("../sites/_internal/SiteBusinessRules");
|
|
7
|
+
const DiscussionBusinessRules_1 = require("../discussions/_internal/DiscussionBusinessRules");
|
|
7
8
|
// Examples of possible Permission Policies
|
|
8
9
|
// const DiscussionPermissionPolicies: IPermissionPolicy[] = [
|
|
9
10
|
// {
|
|
@@ -64,6 +65,7 @@ exports.HubPermissionsPolicies = [
|
|
|
64
65
|
...SiteBusinessRules_1.SitesPermissionPolicies,
|
|
65
66
|
...ProjectBusinessRules_1.ProjectPermissionPolicies,
|
|
66
67
|
...InitiativeBusinessRules_1.InitiativePermissionPolicies,
|
|
68
|
+
...DiscussionBusinessRules_1.DiscussionPermissionPolicies,
|
|
67
69
|
];
|
|
68
70
|
/**
|
|
69
71
|
* Get the policies defined for a specific permission
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HubPermissionPolicies.js","sourceRoot":"","sources":["../../../src/permissions/HubPermissionPolicies.ts"],"names":[],"mappings":";;;AAAA,8FAAgG;AAChG,qFAAuF;AACvF,4EAA+E;
|
|
1
|
+
{"version":3,"file":"HubPermissionPolicies.js","sourceRoot":"","sources":["../../../src/permissions/HubPermissionPolicies.ts"],"names":[],"mappings":";;;AAAA,8FAAgG;AAChG,qFAAuF;AACvF,4EAA+E;AAC/E,8FAAgG;AAIhG,2CAA2C;AAC3C,8DAA8D;AAC9D,MAAM;AACN,gDAAgD;AAChD,2BAA2B;AAC3B,mCAAmC;AACnC,8CAA8C;AAC9C,OAAO;AACP,MAAM;AACN,uDAAuD;AACvD,mCAAmC;AACnC,2BAA2B;AAC3B,8CAA8C;AAC9C,oBAAoB;AACpB,UAAU;AACV,iDAAiD;AACjD,gCAAgC;AAChC,kCAAkC;AAClC,WAAW;AACX,UAAU;AACV,2CAA2C;AAC3C,uCAAuC;AACvC,oCAAoC;AACpC,WAAW;AACX,SAAS;AACT,OAAO;AACP,MAAM;AACN,gDAAgD;AAChD,mCAAmC;AACnC,2BAA2B;AAC3B,8CAA8C;AAC9C,oBAAoB;AACpB,UAAU;AACV,2CAA2C;AAC3C,gCAAgC;AAChC,kCAAkC;AAClC,WAAW;AACX,SAAS;AACT,OAAO;AACP,MAAM;AACN,6CAA6C;AAC7C,mCAAmC;AACnC,2BAA2B;AAC3B,8CAA8C;AAC9C,oBAAoB;AACpB,UAAU;AACV,2CAA2C;AAC3C,gCAAgC;AAChC,kCAAkC;AAClC,WAAW;AACX,SAAS;AACT,OAAO;AACP,KAAK;AAEL;;GAEG;AACU,QAAA,sBAAsB,GAAwB;IACzD,GAAG,2CAAuB;IAC1B,GAAG,gDAAyB;IAC5B,GAAG,sDAA4B;IAC/B,GAAG,sDAA4B;CAChC,CAAC;AAEF;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,UAAsB;IACxD,OAAO,8BAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;AACzE,CAAC;AAFD,kDAEC"}
|
|
@@ -4,6 +4,7 @@ exports.isPermission = void 0;
|
|
|
4
4
|
const ProjectBusinessRules_1 = require("../../projects/_internal/ProjectBusinessRules");
|
|
5
5
|
const SiteBusinessRules_1 = require("../../sites/_internal/SiteBusinessRules");
|
|
6
6
|
const InitiativeBusinessRules_1 = require("../../initiatives/_internal/InitiativeBusinessRules");
|
|
7
|
+
const DiscussionBusinessRules_1 = require("../../discussions/_internal/DiscussionBusinessRules");
|
|
7
8
|
/**
|
|
8
9
|
* Defines the values for Permissions
|
|
9
10
|
* It's critical that the arrays defined in the modules use `as const`
|
|
@@ -13,6 +14,7 @@ const validPermissions = [
|
|
|
13
14
|
...SiteBusinessRules_1.SitePermissions,
|
|
14
15
|
...ProjectBusinessRules_1.ProjectPermissions,
|
|
15
16
|
...InitiativeBusinessRules_1.InitiativePermissions,
|
|
17
|
+
...DiscussionBusinessRules_1.DiscussionPermissions,
|
|
16
18
|
];
|
|
17
19
|
/**
|
|
18
20
|
* Validate a Permission
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Permission.js","sourceRoot":"","sources":["../../../../src/permissions/types/Permission.ts"],"names":[],"mappings":";;;AAAA,wFAAmF;AACnF,+EAA0E;AAC1E,iGAA4F;AAE5F;;;;GAIG;AACH,MAAM,gBAAgB,GAAG;IACvB,GAAG,mCAAe;IAClB,GAAG,yCAAkB;IACrB,GAAG,+CAAqB;CAChB,CAAC;AAOX;;;;GAIG;AACH,SAAgB,YAAY,CAAC,eAAuB;IAClD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,eAA6B,CAAC,CAAC;AAClE,CAAC;AAFD,oCAEC"}
|
|
1
|
+
{"version":3,"file":"Permission.js","sourceRoot":"","sources":["../../../../src/permissions/types/Permission.ts"],"names":[],"mappings":";;;AAAA,wFAAmF;AACnF,+EAA0E;AAC1E,iGAA4F;AAC5F,iGAA4F;AAE5F;;;;GAIG;AACH,MAAM,gBAAgB,GAAG;IACvB,GAAG,mCAAe;IAClB,GAAG,yCAAkB;IACrB,GAAG,+CAAqB;IACxB,GAAG,+CAAqB;CAChB,CAAC;AAOX;;;;GAIG;AACH,SAAgB,YAAY,CAAC,eAAuB;IAClD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,eAA6B,CAAC,CAAC;AAClE,CAAC;AAFD,oCAEC"}
|
|
@@ -9,16 +9,37 @@ const getVersionData_1 = require("./_internal/getVersionData");
|
|
|
9
9
|
const constants_1 = require("./_internal/constants");
|
|
10
10
|
const getIncludeListFromItemType_1 = require("./_internal/getIncludeListFromItemType");
|
|
11
11
|
const arcgis_rest_portal_1 = require("@esri/arcgis-rest-portal");
|
|
12
|
+
const utils_1 = require("./utils");
|
|
13
|
+
/**
|
|
14
|
+
* Custom error to be thrown when attempting to save a stale version
|
|
15
|
+
* @class StaleVersionError
|
|
16
|
+
* @extends {Error}
|
|
17
|
+
*/
|
|
18
|
+
class StaleVersionError extends Error {
|
|
19
|
+
constructor(id, updated) {
|
|
20
|
+
super(`Version ${id} is stale. Use force to overwrite.`);
|
|
21
|
+
this.updated = updated;
|
|
22
|
+
this.name = "StaleVersionError";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
12
25
|
/**
|
|
13
26
|
* Updates the specified version with with the state of the supplied model
|
|
27
|
+
* throws an exception if the version is stale and force is not true
|
|
14
28
|
* @param model
|
|
15
29
|
* @param version
|
|
16
30
|
* @param requestOptions
|
|
31
|
+
* @param force
|
|
17
32
|
* @returns
|
|
18
33
|
*/
|
|
19
|
-
async function updateVersion(model, version, requestOptions) {
|
|
34
|
+
async function updateVersion(model, version, requestOptions, force) {
|
|
20
35
|
// we expect the model to contain the changes that we want to apply to the version
|
|
21
36
|
// but we also need the versionResource so we can preserve the created and creator props
|
|
37
|
+
if (!force) {
|
|
38
|
+
const isStaleResponse = await utils_1.checkForStaleVersion(model.item.id, version, requestOptions);
|
|
39
|
+
if (isStaleResponse.isStale) {
|
|
40
|
+
throw new StaleVersionError(version.id, isStaleResponse.updated);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
22
43
|
const includeList = getIncludeListFromItemType_1.getIncludeListFromItemType(model);
|
|
23
44
|
version.data = getVersionData_1.getVersionData(model, includeList);
|
|
24
45
|
const prefix = getPrefix_1.getPrefix(version.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateVersion.js","sourceRoot":"","sources":["../../../src/versioning/updateVersion.ts"],"names":[],"mappings":";;;AACA,kDAA8C;AAC9C,4DAAwD;AACxD,0EAAoE;AAGpE,qDAAkD;AAClD,+DAA4D;AAC5D,qDAG+B;AAC/B,uFAAoF;AACpF,iEAA8D;
|
|
1
|
+
{"version":3,"file":"updateVersion.js","sourceRoot":"","sources":["../../../src/versioning/updateVersion.ts"],"names":[],"mappings":";;;AACA,kDAA8C;AAC9C,4DAAwD;AACxD,0EAAoE;AAGpE,qDAAkD;AAClD,+DAA4D;AAC5D,qDAG+B;AAC/B,uFAAoF;AACpF,iEAA8D;AAC9D,mCAA+C;AAE/C;;;;GAIG;AACH,MAAM,iBAAkB,SAAQ,KAAK;IACnC,YAAY,EAAU,EAAS,OAAe;QAC5C,KAAK,CAAC,WAAW,EAAE,oCAAoC,CAAC,CAAC;QAD5B,YAAO,GAAP,OAAO,CAAQ;QAE5C,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,aAAa,CACjC,KAAa,EACb,OAAiB,EACjB,cAAsC,EACtC,KAAe;IAEf,kFAAkF;IAClF,wFAAwF;IAExF,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,eAAe,GAAG,MAAM,4BAAoB,CAChD,KAAK,CAAC,IAAI,CAAC,EAAE,EACb,OAAO,EACP,cAAc,CACf,CAAC;QACF,IAAI,eAAe,CAAC,OAAO,EAAE;YAC3B,MAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;SAClE;KACF;IAED,MAAM,WAAW,GAAG,uDAA0B,CAAC,KAAK,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,GAAG,+BAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,qBAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,sCAAgB,CAAC,OAAO,CAAC,CAAC;IAE9C,MAAM,UAAU,GAAG,4BAAY,CAAC,OAAO,EAAE,EAAE,EAAE,uCAA2B,CAAC,CAAC;IAE1E,MAAM,uCAAkB,iCACnB,cAAc,KACjB,EAAE,EAAE,kBAAO,CAAC,KAAK,EAAE,SAAS,CAAC,EAC7B,IAAI,EAAE,iCAAqB,EAC3B,KAAK,EAAE,kBAAO,CAAC,KAAK,EAAE,YAAY,CAAC,EACnC,MAAM,EAAE,EAAE,UAAU,EAAE,EACtB,MAAM,EACN,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,WAAW,IACrB,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAzCD,sCAyCC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.applyVersion = void 0;
|
|
3
|
+
exports.checkForStaleVersion = exports.applyVersion = void 0;
|
|
4
4
|
const util_1 = require("../util");
|
|
5
5
|
const merge_objects_1 = require("../objects/merge-objects");
|
|
6
|
+
const getVersion_1 = require("./getVersion");
|
|
6
7
|
const getIncludeListFromItemType_1 = require("./_internal/getIncludeListFromItemType");
|
|
7
8
|
/**
|
|
8
9
|
* Applies the versioned data to the model
|
|
@@ -18,4 +19,20 @@ function applyVersion(model, version, includeList) {
|
|
|
18
19
|
return merge_objects_1.mergeObjects(version.data, util_1.cloneObject(model), includeList);
|
|
19
20
|
}
|
|
20
21
|
exports.applyVersion = applyVersion;
|
|
22
|
+
/**
|
|
23
|
+
* Checks if the upstream version is newer than the passed in version
|
|
24
|
+
* @param itemId
|
|
25
|
+
* @param version
|
|
26
|
+
* @param requestOptions
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
async function checkForStaleVersion(itemId, version, requestOptions) {
|
|
30
|
+
const upstream = await getVersion_1.getVersion(itemId, version.id, requestOptions);
|
|
31
|
+
const isStale = upstream.updated > version.updated;
|
|
32
|
+
return {
|
|
33
|
+
isStale,
|
|
34
|
+
updated: upstream.updated,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
exports.checkForStaleVersion = checkForStaleVersion;
|
|
21
38
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/versioning/utils.ts"],"names":[],"mappings":";;;AAAA,kCAAsC;AACtC,4DAAwD;AAGxD,uFAAoF;AAEpF;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,KAAa,EACb,OAAiB,EACjB,WAAsB;IAEtB,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,GAAG,uDAA0B,CAAC,KAAK,CAAC,CAAC;KACjD;IACD,OAAO,4BAAY,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAW,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;AACrE,CAAC;AATD,oCASC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/versioning/utils.ts"],"names":[],"mappings":";;;AAAA,kCAAsC;AACtC,4DAAwD;AAGxD,6CAA0C;AAC1C,uFAAoF;AAEpF;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,KAAa,EACb,OAAiB,EACjB,WAAsB;IAEtB,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,GAAG,uDAA0B,CAAC,KAAK,CAAC,CAAC;KACjD;IACD,OAAO,4BAAY,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAW,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;AACrE,CAAC;AATD,oCASC;AAOD;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,MAAc,EACd,OAAiB,EACjB,cAAsC;IAEtC,MAAM,QAAQ,GAAG,MAAM,uBAAU,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACnD,OAAO;QACL,OAAO;QACP,OAAO,EAAE,QAAQ,CAAC,OAAO;KAC1B,CAAC;AACJ,CAAC;AAXD,oDAWC"}
|
|
@@ -76,6 +76,11 @@ export declare abstract class HubItemEntity<T extends IHubItemEntity> implements
|
|
|
76
76
|
* @returns
|
|
77
77
|
*/
|
|
78
78
|
get canDelete(): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* The orgId of the Entity, if available
|
|
81
|
+
* @returns the entity orgId, when available
|
|
82
|
+
*/
|
|
83
|
+
get orgId(): string;
|
|
79
84
|
/**
|
|
80
85
|
* Share the Entity with the specified group id
|
|
81
86
|
* @param groupId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare type HubEntityType = "site" | "project" | "initiative" | "page";
|
|
1
|
+
export declare type HubEntityType = "site" | "project" | "initiative" | "page" | "discussion";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IWithPermissions, IWithSlug } from "../traits";
|
|
2
|
+
import { IHubItemEntity } from "./IHubItemEntity";
|
|
3
|
+
/**
|
|
4
|
+
* DRAFT: Under development and more properties will likely be added
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export interface IHubDiscussion extends IHubItemEntity, IWithSlug, IWithPermissions {
|
|
8
|
+
}
|
|
@@ -2,6 +2,7 @@ export * from "./HubEntity";
|
|
|
2
2
|
export * from "./HubEntityType";
|
|
3
3
|
export * from "./IHubContent";
|
|
4
4
|
export * from "./IHubContentEnrichments";
|
|
5
|
+
export * from "./IHubDiscussion";
|
|
5
6
|
export * from "./IHubEntityBase";
|
|
6
7
|
export * from "./IHubEvent";
|
|
7
8
|
export * from "./IHubImage";
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { IWithSharingBehavior, IWithStoreBehavior } from "../core/behaviors";
|
|
2
|
+
import { IArcGISContext } from "../ArcGISContext";
|
|
3
|
+
import { IHubDiscussion } from "../core/types";
|
|
4
|
+
import { HubItemEntity } from "../core/HubItemEntity";
|
|
5
|
+
/**
|
|
6
|
+
* Hub Discussion Class
|
|
7
|
+
*/
|
|
8
|
+
export declare class HubDiscussion extends HubItemEntity<IHubDiscussion> implements IWithStoreBehavior<IHubDiscussion>, IWithSharingBehavior {
|
|
9
|
+
/**
|
|
10
|
+
* Create an instance from an IHubDiscussion object
|
|
11
|
+
* @param json JSON object to create a HubDiscussion from
|
|
12
|
+
* @param context ArcGIS context
|
|
13
|
+
* @returns a HubDiscussion
|
|
14
|
+
*/
|
|
15
|
+
static fromJson(json: Partial<IHubDiscussion>, context: IArcGISContext): HubDiscussion;
|
|
16
|
+
/**
|
|
17
|
+
* Create a new HubDiscussion, returning a HubDiscussion instance.
|
|
18
|
+
* Note: This does not persist the Discussion into the backing store
|
|
19
|
+
* @param partialDiscussion a partial IHubDiscussion
|
|
20
|
+
* @param context ArcGIS context
|
|
21
|
+
* @returns promise that resolves a HubDiscussion
|
|
22
|
+
*/
|
|
23
|
+
static create(partialDiscussion: Partial<IHubDiscussion>, context: IArcGISContext, save?: boolean): Promise<HubDiscussion>;
|
|
24
|
+
/**
|
|
25
|
+
* Fetch a Discussion from the backing store and return a HubDiscussion instance.
|
|
26
|
+
* @param identifier slug or item id
|
|
27
|
+
* @param context ArcGIS context
|
|
28
|
+
* @returns promise that resolves a HubDiscussion
|
|
29
|
+
*/
|
|
30
|
+
static fetch(identifier: string, context: IArcGISContext): Promise<HubDiscussion>;
|
|
31
|
+
private static applyDefaults;
|
|
32
|
+
/**
|
|
33
|
+
* Apply a new state to the instance
|
|
34
|
+
* @param changes A partial IHubDiscussion
|
|
35
|
+
*/
|
|
36
|
+
update(changes: Partial<IHubDiscussion>): void;
|
|
37
|
+
save(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Delete the HubDiscussion from the store
|
|
40
|
+
* set a flag to indicate that it is destroyed
|
|
41
|
+
* @returns a promise
|
|
42
|
+
*/
|
|
43
|
+
delete(): Promise<void>;
|
|
44
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { EntityCapabilities, ICapabilityPermission } from "../../capabilities";
|
|
2
|
+
import { IPermissionPolicy } from "../../permissions";
|
|
3
|
+
/**
|
|
4
|
+
* Default capabilities for a Discussion. If not listed here, the capability will not be available
|
|
5
|
+
* This hash is combined with the capabilities hash stored in the item data. Regardless of what
|
|
6
|
+
* properties are defined in the item data, only the capabilities defined here will be available
|
|
7
|
+
* @private
|
|
8
|
+
*/
|
|
9
|
+
export declare const DiscussionDefaultCapabilities: EntityCapabilities;
|
|
10
|
+
/**
|
|
11
|
+
* List of all the Discussion Capability Permissions
|
|
12
|
+
* These are considered Hub Business Rules and are not intended
|
|
13
|
+
* to be modified by consumers
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
export declare const DiscussionCapabilityPermissions: ICapabilityPermission[];
|
|
17
|
+
/**
|
|
18
|
+
* Discussion Permission Policies
|
|
19
|
+
* These define the requirements any user must meet to perform related actions
|
|
20
|
+
* @private
|
|
21
|
+
*/
|
|
22
|
+
export declare const DiscussionPermissions: readonly ["hub:discussion:create", "hub:discussion:delete", "hub:discussion:edit", "hub:discussion:view"];
|
|
23
|
+
/**
|
|
24
|
+
* Discussion permission policies
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
export declare const DiscussionPermissionPolicies: IPermissionPolicy[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IRequestOptions } from "@esri/arcgis-rest-request";
|
|
2
|
+
import { IModel } from "../../types";
|
|
3
|
+
import { IHubDiscussion } from "../../core";
|
|
4
|
+
/**
|
|
5
|
+
* Given a model and a Discussion, set various computed properties that can't be directly mapped
|
|
6
|
+
* @private
|
|
7
|
+
* @param model
|
|
8
|
+
* @param discussion
|
|
9
|
+
* @param requestOptions
|
|
10
|
+
* @returns an IHubDiscussion
|
|
11
|
+
*/
|
|
12
|
+
export declare function computeProps(model: IModel, discussion: Partial<IHubDiscussion>, requestOptions: IRequestOptions): IHubDiscussion;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IPropertyMap } from "../../core/_internal/PropertyMapper";
|
|
2
|
+
/**
|
|
3
|
+
* Returns an Array of IPropertyMap objects
|
|
4
|
+
* that define the projection of properties from a IModel to an IHubDiscussion
|
|
5
|
+
* @returns an IPropertyMap array
|
|
6
|
+
* @private
|
|
7
|
+
*/
|
|
8
|
+
export declare function getPropertyMap(): IPropertyMap[];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IHubDiscussion } from "../core/types";
|
|
2
|
+
import { IModel } from "../types";
|
|
3
|
+
export declare const HUB_DISCUSSION_ITEM_TYPE = "Discussion";
|
|
4
|
+
/**
|
|
5
|
+
* Default values of a IHubDiscussion
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_DISCUSSION: Partial<IHubDiscussion>;
|
|
8
|
+
/**
|
|
9
|
+
* Default values for a new HubDiscussion Model
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_DISCUSSION_MODEL: IModel;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { IUserRequestOptions } from "@esri/arcgis-rest-auth";
|
|
2
|
+
import { IHubDiscussion } from "../core/types";
|
|
3
|
+
/**
|
|
4
|
+
* @private
|
|
5
|
+
* Create a new Hub Discussion item
|
|
6
|
+
*
|
|
7
|
+
* Minimal properties are name and orgUrlKey
|
|
8
|
+
*
|
|
9
|
+
* @param partialDiscussion a partial discussion
|
|
10
|
+
* @param requestOptions user request options
|
|
11
|
+
* @returns promise that resolves a IHubDiscussion
|
|
12
|
+
*/
|
|
13
|
+
export declare function createDiscussion(partialDiscussion: Partial<IHubDiscussion>, requestOptions: IUserRequestOptions): Promise<IHubDiscussion>;
|
|
14
|
+
/**
|
|
15
|
+
* @private
|
|
16
|
+
* Update a Hub Discussion
|
|
17
|
+
* @param discussion the discussion to update
|
|
18
|
+
* @param requestOptions user request options
|
|
19
|
+
* @returns promise that resolves a IHubDiscussion
|
|
20
|
+
*/
|
|
21
|
+
export declare function updateDiscussion(discussion: IHubDiscussion, requestOptions: IUserRequestOptions): Promise<IHubDiscussion>;
|
|
22
|
+
/**
|
|
23
|
+
* @private
|
|
24
|
+
* Remove a Hub Discussion
|
|
25
|
+
* @param id the discussion item id
|
|
26
|
+
* @param requestOptions request options
|
|
27
|
+
* @returns a promise
|
|
28
|
+
*/
|
|
29
|
+
export declare function deleteDiscussion(id: string, requestOptions: IUserRequestOptions): Promise<void>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IRequestOptions } from "@esri/arcgis-rest-request";
|
|
2
|
+
import { IItem } from "@esri/arcgis-rest-portal";
|
|
3
|
+
import { IHubDiscussion } from "../core/types";
|
|
4
|
+
/**
|
|
5
|
+
* @private
|
|
6
|
+
* Get a Discussion by id or slug
|
|
7
|
+
* @param identifier item id or slug
|
|
8
|
+
* @param requestOptions request options
|
|
9
|
+
* @returns a promise that resolves a IHubDiscussion
|
|
10
|
+
*/
|
|
11
|
+
export declare function fetchDiscussion(identifier: string, requestOptions: IRequestOptions): Promise<IHubDiscussion>;
|
|
12
|
+
/**
|
|
13
|
+
* @private
|
|
14
|
+
* Convert a Hub Discussion Item into a Hub Discussion, fetching any additional
|
|
15
|
+
* information that may be required
|
|
16
|
+
* @param item the discussion item
|
|
17
|
+
* @param auth request options
|
|
18
|
+
* @returns a promise that resolves a IHubDiscussion
|
|
19
|
+
*/
|
|
20
|
+
export declare function convertItemToDiscussion(item: IItem, requestOptions: IRequestOptions): Promise<IHubDiscussion>;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* It's critical that the arrays defined in the modules use `as const`
|
|
4
4
|
* otherwise Permission devolves into just a string type
|
|
5
5
|
*/
|
|
6
|
-
declare const validPermissions: readonly ["hub:site:create", "hub:site:delete", "hub:site:edit", "hub:site:view", "hub:project:create", "hub:project:delete", "hub:project:edit", "hub:project:view", "hub:initiative:create", "hub:initiative:delete", "hub:initiative:edit", "hub:initiative:view"];
|
|
6
|
+
declare const validPermissions: readonly ["hub:site:create", "hub:site:delete", "hub:site:edit", "hub:site:view", "hub:project:create", "hub:project:delete", "hub:project:edit", "hub:project:view", "hub:initiative:create", "hub:initiative:delete", "hub:initiative:edit", "hub:initiative:view", "hub:discussion:create", "hub:discussion:delete", "hub:discussion:edit", "hub:discussion:view"];
|
|
7
7
|
/**
|
|
8
8
|
* Defines the possible values for Permissions
|
|
9
9
|
*/
|
|
10
|
-
export declare type Permission = typeof validPermissions[number];
|
|
10
|
+
export declare type Permission = (typeof validPermissions)[number];
|
|
11
11
|
/**
|
|
12
12
|
* Validate a Permission
|
|
13
13
|
* @param permission
|
|
@@ -3,9 +3,11 @@ import { IModel } from "../types";
|
|
|
3
3
|
import { IVersion } from "./types";
|
|
4
4
|
/**
|
|
5
5
|
* Updates the specified version with with the state of the supplied model
|
|
6
|
+
* throws an exception if the version is stale and force is not true
|
|
6
7
|
* @param model
|
|
7
8
|
* @param version
|
|
8
9
|
* @param requestOptions
|
|
10
|
+
* @param force
|
|
9
11
|
* @returns
|
|
10
12
|
*/
|
|
11
|
-
export declare function updateVersion(model: IModel, version: IVersion, requestOptions: IHubUserRequestOptions): Promise<IVersion>;
|
|
13
|
+
export declare function updateVersion(model: IModel, version: IVersion, requestOptions: IHubUserRequestOptions, force?: boolean): Promise<IVersion>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IModel } from "../types";
|
|
1
|
+
import { IHubUserRequestOptions, IModel } from "../types";
|
|
2
2
|
import { IVersion } from "./types/IVersion";
|
|
3
3
|
/**
|
|
4
4
|
* Applies the versioned data to the model
|
|
@@ -8,3 +8,16 @@ import { IVersion } from "./types/IVersion";
|
|
|
8
8
|
* @returns
|
|
9
9
|
*/
|
|
10
10
|
export declare function applyVersion(model: IModel, version: IVersion, includeList?: string[]): IModel;
|
|
11
|
+
interface IStaleVersionResponse {
|
|
12
|
+
isStale: boolean;
|
|
13
|
+
updated: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Checks if the upstream version is newer than the passed in version
|
|
17
|
+
* @param itemId
|
|
18
|
+
* @param version
|
|
19
|
+
* @param requestOptions
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
export declare function checkForStaleVersion(itemId: string, version: IVersion, requestOptions: IHubUserRequestOptions): Promise<IStaleVersionResponse>;
|
|
23
|
+
export {};
|