@stackbit/cms-core 1.0.19-develop.1 → 1.0.19-develop.2
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/.tsbuildinfo +1 -1
- package/dist/content-store.d.ts.map +1 -1
- package/dist/content-store.js +24 -38
- package/dist/content-store.js.map +1 -1
- package/dist/types/content-store-documents.d.ts +2 -1
- package/dist/types/content-store-documents.d.ts.map +1 -1
- package/dist/utils/csi-to-store-docs-converter.d.ts.map +1 -1
- package/dist/utils/csi-to-store-docs-converter.js +2 -1
- package/dist/utils/csi-to-store-docs-converter.js.map +1 -1
- package/dist/utils/custom-search-filters.d.ts +12 -0
- package/dist/utils/custom-search-filters.d.ts.map +1 -0
- package/dist/utils/custom-search-filters.js +46 -0
- package/dist/utils/custom-search-filters.js.map +1 -0
- package/dist/utils/filtered-entities.d.ts +7 -9
- package/dist/utils/filtered-entities.d.ts.map +1 -1
- package/dist/utils/filtered-entities.js +42 -68
- package/dist/utils/filtered-entities.js.map +1 -1
- package/package.json +5 -5
- package/src/content-store.ts +24 -38
- package/src/types/content-store-documents.ts +2 -1
- package/src/utils/csi-to-store-docs-converter.ts +2 -1
- package/src/utils/filtered-entities.ts +56 -87
- package/dist/connector/model-converter.d.mts +0 -3
- package/dist/connector/model-converter.d.mts.map +0 -1
- package/dist/connector/model-converter.mjs +0 -138
- package/dist/connector/model-converter.mjs.map +0 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CUSTOM_FILTERS = void 0;
|
|
4
|
+
const search_utils_1 = require("./search-utils");
|
|
5
|
+
exports.CUSTOM_FILTERS = {
|
|
6
|
+
hasSchedules: (filter, document, opts) => {
|
|
7
|
+
var _a;
|
|
8
|
+
const field = {
|
|
9
|
+
type: 'boolean',
|
|
10
|
+
value: !!((_a = opts.activeScheduledActionsByDocumentId[document.srcObjectId]) === null || _a === void 0 ? void 0 : _a.length)
|
|
11
|
+
};
|
|
12
|
+
return (0, search_utils_1.isBooleanFieldMatches)({ field, filter, locale: opts.locale });
|
|
13
|
+
},
|
|
14
|
+
scheduledActionId: (filter, document, opts) => {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
const field = {
|
|
17
|
+
type: 'list',
|
|
18
|
+
items: (_b = (_a = opts.activeScheduledActionsByDocumentId[document.srcObjectId]) === null || _a === void 0 ? void 0 : _a.map((scheduledAction) => ({
|
|
19
|
+
type: 'string',
|
|
20
|
+
value: scheduledAction.id
|
|
21
|
+
}))) !== null && _b !== void 0 ? _b : []
|
|
22
|
+
};
|
|
23
|
+
const model = {
|
|
24
|
+
type: 'object',
|
|
25
|
+
name: '',
|
|
26
|
+
fields: [
|
|
27
|
+
{
|
|
28
|
+
name: '',
|
|
29
|
+
type: 'list',
|
|
30
|
+
items: {
|
|
31
|
+
type: 'string'
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
};
|
|
36
|
+
return (0, search_utils_1.isListFieldMatches)({ field, filter, model, locale: opts.locale, document });
|
|
37
|
+
},
|
|
38
|
+
scheduledActionDate: (filter, document, opts) => {
|
|
39
|
+
var _a, _b;
|
|
40
|
+
return ((_b = (_a = opts.activeScheduledActionsByDocumentId[document.srcObjectId]) === null || _a === void 0 ? void 0 : _a.some((scheduledAction) => {
|
|
41
|
+
const field = { type: 'date', value: scheduledAction.executeAt };
|
|
42
|
+
return (0, search_utils_1.isDateFieldMatches)({ field, filter, locale: opts.locale });
|
|
43
|
+
})) !== null && _b !== void 0 ? _b : false);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=custom-search-filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-search-filters.js","sourceRoot":"","sources":["../../src/utils/custom-search-filters.ts"],"names":[],"mappings":";;;AAIA,iDAAgH;AAQnG,QAAA,cAAc,GAAuC;IAC9D,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;;QACrC,MAAM,KAAK,GAAG;YACV,IAAI,EAAE,SAAkB;YACxB,KAAK,EAAE,CAAC,CAAC,CAAA,MAAA,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC,WAAW,CAAC,0CAAE,MAAM,CAAA;SACjF,CAAC;QACF,OAAO,IAAA,oCAAqB,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,iBAAiB,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;;QAC1C,MAAM,KAAK,GAAsB;YAC7B,IAAI,EAAE,MAAM;YACZ,KAAK,EACD,MAAA,MAAA,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC,WAAW,CAAC,0CAAE,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBACrF,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,eAAe,CAAC,EAAE;aAC5B,CAAC,CAAC,mCAAI,EAAE;SAChB,CAAC;QACF,MAAM,KAAK,GAAU;YACjB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,EAAE;YACR,MAAM,EAAE;gBACJ;oBACI,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE;wBACH,IAAI,EAAE,QAAQ;qBACjB;iBACJ;aACJ;SACJ,CAAC;QACF,OAAO,IAAA,iCAAkB,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,mBAAmB,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;;QAC5C,OAAO,CACH,MAAA,MAAA,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC,WAAW,CAAC,0CAAE,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE;YACpF,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,MAAe,EAAE,KAAK,EAAE,eAAe,CAAC,SAAS,EAAE,CAAC;YAC1E,OAAO,IAAA,iCAAkB,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,mCAAI,KAAK,CACd,CAAC;IACN,CAAC;CACJ,CAAC"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import * as CSITypes from '@stackbit/types';
|
|
2
2
|
import { ContentStoreTypes } from '../';
|
|
3
|
-
export declare const getFilteredDocumentsForUser: ({ user, documents,
|
|
3
|
+
export declare const getFilteredDocumentsForUser: ({ user, documents, permissionsForModel, permissionsForDocument, contentSourceDataById, createConfigDelegate, logger }: {
|
|
4
4
|
user?: ContentStoreTypes.User | undefined;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
permissionsForModel: CSITypes.StackbitConfig['permissionsForModel'];
|
|
6
|
+
permissionsForDocument: CSITypes.StackbitConfig['permissionsForDocument'];
|
|
7
7
|
documents: ContentStoreTypes.Document[];
|
|
8
8
|
contentSourceDataById: Record<string, ContentStoreTypes.ContentSourceData>;
|
|
9
|
-
assetSources: CSITypes.AssetSource[];
|
|
10
9
|
createConfigDelegate: () => CSITypes.ConfigDelegate;
|
|
11
|
-
customActionRunStateMap: ContentStoreTypes.CustomActionRunStateMap;
|
|
12
10
|
logger: CSITypes.Logger;
|
|
13
11
|
}) => ContentStoreTypes.Document[];
|
|
14
12
|
export declare const getFilteredAssetsForUser: ({ user, assets, filterAsset, configDelegate, contentSourceDataById }: {
|
|
@@ -18,17 +16,17 @@ export declare const getFilteredAssetsForUser: ({ user, assets, filterAsset, con
|
|
|
18
16
|
configDelegate: CSITypes.ConfigDelegate;
|
|
19
17
|
contentSourceDataById: Record<string, ContentStoreTypes.ContentSourceData>;
|
|
20
18
|
}) => ContentStoreTypes.Asset[];
|
|
21
|
-
export declare const getContentSourceFilteredModelsForUser: ({ user, configDelegate, contentSourceData,
|
|
19
|
+
export declare const getContentSourceFilteredModelsForUser: ({ user, configDelegate, contentSourceData, permissionsForModel }: {
|
|
22
20
|
user?: ContentStoreTypes.User | undefined;
|
|
23
21
|
configDelegate: CSITypes.ConfigDelegate;
|
|
24
22
|
contentSourceData: ContentStoreTypes.ContentSourceData;
|
|
25
|
-
|
|
23
|
+
permissionsForModel: CSITypes.StackbitConfig['permissionsForModel'];
|
|
26
24
|
}) => CSITypes.Model[];
|
|
27
|
-
export declare const getFilteredModelForUser: ({ user, name, configDelegate, contentSourceData,
|
|
25
|
+
export declare const getFilteredModelForUser: ({ user, name, configDelegate, contentSourceData, permissionsForModel }: {
|
|
28
26
|
user?: ContentStoreTypes.User | undefined;
|
|
29
27
|
name: string;
|
|
30
28
|
configDelegate: CSITypes.ConfigDelegate;
|
|
31
29
|
contentSourceData: ContentStoreTypes.ContentSourceData;
|
|
32
|
-
|
|
30
|
+
permissionsForModel: CSITypes.StackbitConfig['permissionsForModel'];
|
|
33
31
|
}) => CSITypes.Model;
|
|
34
32
|
//# sourceMappingURL=filtered-entities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtered-entities.d.ts","sourceRoot":"","sources":["../../src/utils/filtered-entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"filtered-entities.d.ts","sourceRoot":"","sources":["../../src/utils/filtered-entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,KAAK,CAAC;AAKxC,eAAO,MAAM,2BAA2B;;yBAUf,SAAS,cAAc,CAAC,qBAAqB,CAAC;4BAC3C,SAAS,cAAc,CAAC,wBAAwB,CAAC;eAC9D,kBAAkB,QAAQ,EAAE;2BAChB,OAAO,MAAM,EAAE,kBAAkB,iBAAiB,CAAC;0BACpD,MAAM,SAAS,cAAc;YAC3C,SAAS,MAAM;MACvB,kBAAkB,QAAQ,EAwD7B,CAAC;AAEF,eAAO,MAAM,wBAAwB;;YAQzB,kBAAkB,KAAK,EAAE;iBACpB,SAAS,cAAc,CAAC,aAAa,CAAC;oBACnC,SAAS,cAAc;2BAChB,OAAO,MAAM,EAAE,kBAAkB,iBAAiB,CAAC;MAC1E,kBAAkB,KAAK,EAoD1B,CAAC;AAEF,eAAO,MAAM,qCAAqC;;oBAO9B,SAAS,cAAc;uBACpB,kBAAkB,iBAAiB;yBACjC,SAAS,cAAc,CAAC,qBAAqB,CAAC;MACnE,SAAS,KAAK,EAYjB,CAAC;AAEF,eAAO,MAAM,uBAAuB;;UAQ1B,MAAM;oBACI,SAAS,cAAc;uBACpB,kBAAkB,iBAAiB;yBACjC,SAAS,cAAc,CAAC,qBAAqB,CAAC;MACnE,SAAS,KAgCZ,CAAC"}
|
|
@@ -8,13 +8,11 @@ const lodash_1 = __importDefault(require("lodash"));
|
|
|
8
8
|
const consts_1 = require("../consts");
|
|
9
9
|
const content_store_utils_1 = require("../content-store-utils");
|
|
10
10
|
const csi_to_store_docs_converter_1 = require("./csi-to-store-docs-converter");
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
if (!user || (!filterDocument && !filterModel)) {
|
|
11
|
+
const getFilteredDocumentsForUser = ({ user, documents, permissionsForModel, permissionsForDocument, contentSourceDataById, createConfigDelegate, logger }) => {
|
|
12
|
+
if (!user) {
|
|
14
13
|
return documents;
|
|
15
14
|
}
|
|
16
15
|
const documentsBySourceId = lodash_1.default.groupBy(documents, (object) => (0, content_store_utils_1.getContentSourceId)(object.srcType, object.srcProjectId));
|
|
17
|
-
const transformedCsiDocuments = [];
|
|
18
16
|
const resultDocuments = [];
|
|
19
17
|
const configDelegate = createConfigDelegate();
|
|
20
18
|
for (const [contentSourceId, contentSourceDocuments] of Object.entries(documentsBySourceId)) {
|
|
@@ -25,68 +23,38 @@ const getFilteredDocumentsForUser = ({ user, documents, filterModel, filterDocum
|
|
|
25
23
|
if (!csiDoc) {
|
|
26
24
|
throw new Error(`Document with id '${document.srcObjectId}' not found in content source '${contentSourceId}'`);
|
|
27
25
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
});
|
|
37
|
-
filteredModelsMap[modelName] = filteredModel;
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
const documentModel = filteredModelsMap[document.srcModelName];
|
|
41
|
-
if (!documentModel) {
|
|
42
|
-
throw new Error(`Can't find model with name '${document.srcModelName}' for object with id '${document.srcObjectId}' in content source '${contentSourceId}'`);
|
|
43
|
-
}
|
|
44
|
-
if (documentModel.hidden) {
|
|
45
|
-
// model is hidden - return csiDocument right away as hidden
|
|
46
|
-
resultDocuments.push({
|
|
47
|
-
...document,
|
|
48
|
-
hidden: true
|
|
26
|
+
const modelName = csiDoc.modelName;
|
|
27
|
+
if (!filteredModelsMap[modelName]) {
|
|
28
|
+
filteredModelsMap[modelName] = (0, exports.getFilteredModelForUser)({
|
|
29
|
+
user,
|
|
30
|
+
name: modelName,
|
|
31
|
+
contentSourceData,
|
|
32
|
+
configDelegate,
|
|
33
|
+
permissionsForModel
|
|
49
34
|
});
|
|
50
|
-
return;
|
|
51
35
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return;
|
|
36
|
+
const documentModel = filteredModelsMap[modelName];
|
|
37
|
+
if (!documentModel) {
|
|
38
|
+
throw new Error(`Can't find model with name '${document.srcModelName}' for object with id '${document.srcObjectId}' in content source '${contentSourceId}'`);
|
|
56
39
|
}
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
srcType: contentSourceData.srcType,
|
|
60
|
-
srcProjectId: contentSourceData.srcProjectId
|
|
61
|
-
};
|
|
62
|
-
const shouldIncludeDoc = filterDocument({
|
|
40
|
+
const docPermissions = lodash_1.default.defaults(csiDoc.permissions, documentModel.permissions);
|
|
41
|
+
const permissions = permissionsForDocument?.({
|
|
63
42
|
...configDelegate,
|
|
64
|
-
document:
|
|
43
|
+
document: {
|
|
44
|
+
...csiDoc,
|
|
45
|
+
permissions: docPermissions,
|
|
46
|
+
srcType: contentSourceData.srcType,
|
|
47
|
+
srcProjectId: contentSourceData.srcProjectId
|
|
48
|
+
},
|
|
65
49
|
userContext: user
|
|
50
|
+
}) ?? docPermissions;
|
|
51
|
+
resultDocuments.push({
|
|
52
|
+
...document,
|
|
53
|
+
permissions,
|
|
54
|
+
hidden: documentModel.hidden || document.hidden || permissions?.canView === false
|
|
66
55
|
});
|
|
67
|
-
|
|
68
|
-
transformedCsiDocuments.push(csiDocWithSource);
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
transformedCsiDocuments.push({
|
|
72
|
-
...csiDocWithSource,
|
|
73
|
-
hidden: !shouldIncludeDoc
|
|
74
|
-
});
|
|
75
|
-
}
|
|
56
|
+
return;
|
|
76
57
|
});
|
|
77
|
-
if (transformedCsiDocuments.length) {
|
|
78
|
-
const csResultDocuments = (0, csi_to_store_docs_converter_1.mapCSIDocumentsToStoreDocuments)({
|
|
79
|
-
csiDocuments: transformedCsiDocuments,
|
|
80
|
-
contentSourceInstance: contentSourceData.instance,
|
|
81
|
-
modelMap: filteredModelsMap,
|
|
82
|
-
defaultLocaleCode: contentSourceData.defaultLocaleCode,
|
|
83
|
-
assetSources,
|
|
84
|
-
customActionRunStateMap,
|
|
85
|
-
createConfigDelegate,
|
|
86
|
-
logger
|
|
87
|
-
});
|
|
88
|
-
resultDocuments.push(...(csResultDocuments ?? []));
|
|
89
|
-
}
|
|
90
58
|
}
|
|
91
59
|
return resultDocuments;
|
|
92
60
|
};
|
|
@@ -137,26 +105,27 @@ const getFilteredAssetsForUser = ({ user, assets, filterAsset, configDelegate, c
|
|
|
137
105
|
return resultAssets;
|
|
138
106
|
};
|
|
139
107
|
exports.getFilteredAssetsForUser = getFilteredAssetsForUser;
|
|
140
|
-
const getContentSourceFilteredModelsForUser = ({ user, configDelegate, contentSourceData,
|
|
108
|
+
const getContentSourceFilteredModelsForUser = ({ user, configDelegate, contentSourceData, permissionsForModel }) => {
|
|
141
109
|
const filteredModels = contentSourceData.models.map((model) => {
|
|
142
110
|
return (0, exports.getFilteredModelForUser)({
|
|
143
111
|
user,
|
|
144
112
|
configDelegate,
|
|
145
113
|
name: model.name,
|
|
146
114
|
contentSourceData,
|
|
147
|
-
|
|
115
|
+
permissionsForModel
|
|
148
116
|
});
|
|
149
117
|
});
|
|
150
118
|
const cleanModels = filteredModels.filter((model) => model.name !== consts_1.STACKBIT_PRESET_MODEL_NAME);
|
|
151
119
|
return cleanModels;
|
|
152
120
|
};
|
|
153
121
|
exports.getContentSourceFilteredModelsForUser = getContentSourceFilteredModelsForUser;
|
|
154
|
-
const getFilteredModelForUser = ({ user, name, configDelegate, contentSourceData,
|
|
122
|
+
const getFilteredModelForUser = ({ user, name, configDelegate, contentSourceData, permissionsForModel }) => {
|
|
155
123
|
const model = contentSourceData.modelMap[name];
|
|
156
124
|
if (!model) {
|
|
157
125
|
throw new Error(`Model with name ${name} not found in source`);
|
|
158
126
|
}
|
|
159
|
-
|
|
127
|
+
const shouldResolvePermissions = permissionsForModel || typeof model?.permissions === 'function';
|
|
128
|
+
if (!user || !shouldResolvePermissions) {
|
|
160
129
|
return model;
|
|
161
130
|
}
|
|
162
131
|
const modelWithSource = {
|
|
@@ -164,13 +133,18 @@ const getFilteredModelForUser = ({ user, name, configDelegate, contentSourceData
|
|
|
164
133
|
srcType: contentSourceData.srcType,
|
|
165
134
|
srcProjectId: contentSourceData.srcProjectId
|
|
166
135
|
};
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
136
|
+
const permissionsResult = typeof model.permissions === 'function' ? model.permissions?.({ ...configDelegate, model: modelWithSource, userContext: user }) : model.permissions;
|
|
137
|
+
const permissionsHookResult = permissionsForModel?.({
|
|
138
|
+
...configDelegate,
|
|
139
|
+
model: { ...modelWithSource, permissions: permissionsResult },
|
|
140
|
+
userContext: user
|
|
141
|
+
}) ?? permissionsResult;
|
|
142
|
+
const permissions = lodash_1.default.isEmpty(permissionsHookResult) ? undefined : permissionsHookResult;
|
|
143
|
+
const shouldHideModel = permissions?.canView === false;
|
|
171
144
|
return {
|
|
172
145
|
...model,
|
|
173
|
-
|
|
146
|
+
permissions,
|
|
147
|
+
hidden: shouldHideModel
|
|
174
148
|
};
|
|
175
149
|
};
|
|
176
150
|
exports.getFilteredModelForUser = getFilteredModelForUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtered-entities.js","sourceRoot":"","sources":["../../src/utils/filtered-entities.ts"],"names":[],"mappings":";;;;;;AACA,oDAAuB;AAEvB,sCAAuD;AACvD,gEAA6F;AAC7F,+
|
|
1
|
+
{"version":3,"file":"filtered-entities.js","sourceRoot":"","sources":["../../src/utils/filtered-entities.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackbit/cms-core",
|
|
3
|
-
"version": "1.0.19-develop.
|
|
3
|
+
"version": "1.0.19-develop.2",
|
|
4
4
|
"description": "stackbit-dev",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
"@babel/traverse": "^7.11.5",
|
|
27
27
|
"@iarna/toml": "^2.2.3",
|
|
28
28
|
"@netlify/sdk": "^1.17.2",
|
|
29
|
-
"@stackbit/sdk": "1.0.19-develop.
|
|
30
|
-
"@stackbit/types": "0.11.8-develop.
|
|
31
|
-
"@stackbit/utils": "0.4.8-develop.
|
|
29
|
+
"@stackbit/sdk": "1.0.19-develop.2",
|
|
30
|
+
"@stackbit/types": "0.11.8-develop.2",
|
|
31
|
+
"@stackbit/utils": "0.4.8-develop.2",
|
|
32
32
|
"chalk": "^4.0.1",
|
|
33
33
|
"content-engine": "0.0.29",
|
|
34
34
|
"esm": "^3.2.25",
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"slugify": "^1.6.5",
|
|
45
45
|
"uuid": "^9.0.0"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "42f9113678b2e0bb9ff65218ee6fac09252ca9f7"
|
|
48
48
|
}
|
package/src/content-store.ts
CHANGED
|
@@ -1484,7 +1484,7 @@ export class ContentStore {
|
|
|
1484
1484
|
user,
|
|
1485
1485
|
configDelegate,
|
|
1486
1486
|
contentSourceData,
|
|
1487
|
-
|
|
1487
|
+
permissionsForModel: this.stackbitConfig?.permissionsForModel
|
|
1488
1488
|
});
|
|
1489
1489
|
|
|
1490
1490
|
const modelsMap = getModelMap({ models: filteredModels });
|
|
@@ -1707,16 +1707,14 @@ export class ContentStore {
|
|
|
1707
1707
|
const [filteredDocument] = getFilteredDocumentsForUser({
|
|
1708
1708
|
user,
|
|
1709
1709
|
documents: [document],
|
|
1710
|
-
|
|
1711
|
-
|
|
1710
|
+
permissionsForModel: this.stackbitConfig?.permissionsForModel,
|
|
1711
|
+
permissionsForDocument: this.stackbitConfig?.permissionsForDocument,
|
|
1712
1712
|
contentSourceDataById: this.contentSourceDataById,
|
|
1713
|
-
assetSources: this.stackbitConfig?.assetSources ?? [],
|
|
1714
1713
|
createConfigDelegate: getCreateConfigDelegateThunk({
|
|
1715
1714
|
getContentSourceDataById: () => this.contentSourceDataById,
|
|
1716
1715
|
logger: this.userLogger
|
|
1717
1716
|
}),
|
|
1718
|
-
logger: this.userLogger
|
|
1719
|
-
customActionRunStateMap: this.customActionRunStateMap
|
|
1717
|
+
logger: this.userLogger
|
|
1720
1718
|
});
|
|
1721
1719
|
if (filteredDocument && filteredDocument.hidden) {
|
|
1722
1720
|
return accum;
|
|
@@ -1774,16 +1772,14 @@ export class ContentStore {
|
|
|
1774
1772
|
const [filteredDocument] = getFilteredDocumentsForUser({
|
|
1775
1773
|
user,
|
|
1776
1774
|
documents: [document],
|
|
1777
|
-
|
|
1778
|
-
|
|
1775
|
+
permissionsForModel: this.stackbitConfig?.permissionsForModel,
|
|
1776
|
+
permissionsForDocument: this.stackbitConfig?.permissionsForDocument,
|
|
1779
1777
|
contentSourceDataById: this.contentSourceDataById,
|
|
1780
|
-
assetSources: this.stackbitConfig?.assetSources ?? [],
|
|
1781
1778
|
createConfigDelegate: getCreateConfigDelegateThunk({
|
|
1782
1779
|
getContentSourceDataById: () => this.contentSourceDataById,
|
|
1783
1780
|
logger: this.userLogger
|
|
1784
1781
|
}),
|
|
1785
|
-
logger: this.userLogger
|
|
1786
|
-
customActionRunStateMap: this.customActionRunStateMap
|
|
1782
|
+
logger: this.userLogger
|
|
1787
1783
|
});
|
|
1788
1784
|
return filteredDocument;
|
|
1789
1785
|
}
|
|
@@ -1831,16 +1827,14 @@ export class ContentStore {
|
|
|
1831
1827
|
const [filteredDocument] = getFilteredDocumentsForUser({
|
|
1832
1828
|
user,
|
|
1833
1829
|
documents: [document],
|
|
1834
|
-
|
|
1835
|
-
|
|
1830
|
+
permissionsForModel: this.stackbitConfig?.permissionsForModel,
|
|
1831
|
+
permissionsForDocument: this.stackbitConfig?.permissionsForDocument,
|
|
1836
1832
|
contentSourceDataById: this.contentSourceDataById,
|
|
1837
|
-
assetSources: this.stackbitConfig?.assetSources ?? [],
|
|
1838
1833
|
createConfigDelegate: getCreateConfigDelegateThunk({
|
|
1839
1834
|
getContentSourceDataById: () => this.contentSourceDataById,
|
|
1840
1835
|
logger: this.userLogger
|
|
1841
1836
|
}),
|
|
1842
|
-
logger: this.userLogger
|
|
1843
|
-
customActionRunStateMap: this.customActionRunStateMap
|
|
1837
|
+
logger: this.userLogger
|
|
1844
1838
|
});
|
|
1845
1839
|
return filteredDocument ?? document;
|
|
1846
1840
|
}
|
|
@@ -1878,16 +1872,14 @@ export class ContentStore {
|
|
|
1878
1872
|
const filteredDocuments = getFilteredDocumentsForUser({
|
|
1879
1873
|
user,
|
|
1880
1874
|
documents,
|
|
1881
|
-
|
|
1882
|
-
|
|
1875
|
+
permissionsForModel: this.stackbitConfig?.permissionsForModel,
|
|
1876
|
+
permissionsForDocument: this.stackbitConfig?.permissionsForDocument,
|
|
1883
1877
|
contentSourceDataById: this.contentSourceDataById,
|
|
1884
|
-
assetSources: this.stackbitConfig?.assetSources ?? [],
|
|
1885
1878
|
createConfigDelegate: getCreateConfigDelegateThunk({
|
|
1886
1879
|
getContentSourceDataById: () => this.contentSourceDataById,
|
|
1887
1880
|
logger: this.userLogger
|
|
1888
1881
|
}),
|
|
1889
|
-
logger: this.userLogger
|
|
1890
|
-
customActionRunStateMap: this.customActionRunStateMap
|
|
1882
|
+
logger: this.userLogger
|
|
1891
1883
|
});
|
|
1892
1884
|
return filteredDocuments;
|
|
1893
1885
|
}
|
|
@@ -1920,16 +1912,14 @@ export class ContentStore {
|
|
|
1920
1912
|
filteredDocuments = getFilteredDocumentsForUser({
|
|
1921
1913
|
user,
|
|
1922
1914
|
documents: filteredDocuments,
|
|
1923
|
-
|
|
1924
|
-
|
|
1915
|
+
permissionsForModel: this.stackbitConfig?.permissionsForModel,
|
|
1916
|
+
permissionsForDocument: this.stackbitConfig?.permissionsForDocument,
|
|
1925
1917
|
contentSourceDataById: this.contentSourceDataById,
|
|
1926
|
-
assetSources: this.stackbitConfig?.assetSources ?? [],
|
|
1927
1918
|
createConfigDelegate: getCreateConfigDelegateThunk({
|
|
1928
1919
|
getContentSourceDataById: () => this.contentSourceDataById,
|
|
1929
1920
|
logger: this.userLogger
|
|
1930
1921
|
}),
|
|
1931
|
-
logger: this.userLogger
|
|
1932
|
-
customActionRunStateMap: this.customActionRunStateMap
|
|
1922
|
+
logger: this.userLogger
|
|
1933
1923
|
});
|
|
1934
1924
|
|
|
1935
1925
|
return {
|
|
@@ -2050,16 +2040,14 @@ export class ContentStore {
|
|
|
2050
2040
|
filteredDocuments = getFilteredDocumentsForUser({
|
|
2051
2041
|
user,
|
|
2052
2042
|
documents: filteredDocuments,
|
|
2053
|
-
|
|
2054
|
-
|
|
2043
|
+
permissionsForModel: this.stackbitConfig?.permissionsForModel,
|
|
2044
|
+
permissionsForDocument: this.stackbitConfig?.permissionsForDocument,
|
|
2055
2045
|
contentSourceDataById: this.contentSourceDataById,
|
|
2056
|
-
assetSources: this.stackbitConfig?.assetSources ?? [],
|
|
2057
2046
|
createConfigDelegate: getCreateConfigDelegateThunk({
|
|
2058
2047
|
getContentSourceDataById: () => this.contentSourceDataById,
|
|
2059
2048
|
logger: this.userLogger
|
|
2060
2049
|
}),
|
|
2061
|
-
logger: this.userLogger
|
|
2062
|
-
customActionRunStateMap: this.customActionRunStateMap
|
|
2050
|
+
logger: this.userLogger
|
|
2063
2051
|
});
|
|
2064
2052
|
|
|
2065
2053
|
assets = getFilteredAssetsForUser({
|
|
@@ -3005,16 +2993,14 @@ export class ContentStore {
|
|
|
3005
2993
|
const userDocuments = getFilteredDocumentsForUser({
|
|
3006
2994
|
user: data.user,
|
|
3007
2995
|
documents: filteredDocuments,
|
|
3008
|
-
|
|
3009
|
-
|
|
2996
|
+
permissionsForModel: this.stackbitConfig?.permissionsForModel,
|
|
2997
|
+
permissionsForDocument: this.stackbitConfig?.permissionsForDocument,
|
|
3010
2998
|
contentSourceDataById: this.contentSourceDataById,
|
|
3011
|
-
assetSources: this.stackbitConfig?.assetSources ?? [],
|
|
3012
2999
|
createConfigDelegate: getCreateConfigDelegateThunk({
|
|
3013
3000
|
getContentSourceDataById: () => this.contentSourceDataById,
|
|
3014
3001
|
logger: this.userLogger
|
|
3015
3002
|
}),
|
|
3016
|
-
logger: this.userLogger
|
|
3017
|
-
customActionRunStateMap: this.customActionRunStateMap
|
|
3003
|
+
logger: this.userLogger
|
|
3018
3004
|
});
|
|
3019
3005
|
|
|
3020
3006
|
// filter out hidden documents from the search
|
|
@@ -3074,7 +3060,7 @@ export class ContentStore {
|
|
|
3074
3060
|
contentSourceDataById: this.contentSourceDataById,
|
|
3075
3061
|
logger: this.userLogger
|
|
3076
3062
|
}),
|
|
3077
|
-
|
|
3063
|
+
permissionsForModel: this.stackbitConfig?.permissionsForModel
|
|
3078
3064
|
});
|
|
3079
3065
|
const apiVersions = mapDocumentVersionsToApiDocumentVersions({
|
|
3080
3066
|
assetSources: this.stackbitConfig?.assetSources ?? [],
|
|
@@ -3131,7 +3117,7 @@ export class ContentStore {
|
|
|
3131
3117
|
contentSourceDataById: this.contentSourceDataById,
|
|
3132
3118
|
logger: this.userLogger
|
|
3133
3119
|
}),
|
|
3134
|
-
|
|
3120
|
+
permissionsForModel: this.stackbitConfig?.permissionsForModel
|
|
3135
3121
|
});
|
|
3136
3122
|
const [apiVersion] = mapDocumentVersionsToApiDocumentVersions({
|
|
3137
3123
|
versions: [version],
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DocumentStatus, ConfigDelegate, DocumentVersion, DocumentVersionWithDocument } from '@stackbit/types';
|
|
1
|
+
import { DocumentStatus, ConfigDelegate, DocumentVersion, DocumentVersionWithDocument, DocumentPermissions } from '@stackbit/types';
|
|
2
2
|
import { DocumentField, DocumentFieldAPI, DocumentFieldAPIForType, DocumentStringLikeFieldForType } from './content-store-document-fields';
|
|
3
3
|
import { APIDocument } from './content-store-api-document-fields';
|
|
4
4
|
import { APICustomActionDocument } from './custom-actions';
|
|
@@ -25,6 +25,7 @@ export interface Document {
|
|
|
25
25
|
updatedBy?: string[];
|
|
26
26
|
locale?: string;
|
|
27
27
|
fields: Record<string, DocumentField>;
|
|
28
|
+
permissions?: DocumentPermissions;
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
export interface DocumentPreview {
|