@webiny/api-file-manager 5.39.1 → 5.39.2-beta.1
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/FileManagerContextSetup.js +2 -9
- package/FileManagerContextSetup.js.map +1 -1
- package/cmsFileStorage/CmsFilesStorage.js +34 -46
- package/cmsFileStorage/CmsFilesStorage.js.map +1 -1
- package/cmsFileStorage/file.model.d.ts +1 -1
- package/cmsFileStorage/file.model.js +27 -20
- package/cmsFileStorage/file.model.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +0 -6
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js +5 -26
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -1
- package/graphql/filesSchema.js +1 -3
- package/graphql/filesSchema.js.map +1 -1
- package/graphql/index.js +3 -3
- package/graphql/index.js.map +1 -1
- package/modelModifier/CmsModelModifier.js +2 -2
- package/modelModifier/CmsModelModifier.js.map +1 -1
- package/package.json +19 -19
- package/cmsFileStorage/createFileManagerPlugins.d.ts +0 -7
- package/cmsFileStorage/createFileManagerPlugins.js +0 -17
- package/cmsFileStorage/createFileManagerPlugins.js.map +0 -1
- package/cmsFileStorage/createModelField.d.ts +0 -5
- package/cmsFileStorage/createModelField.js +0 -41
- package/cmsFileStorage/createModelField.js.map +0 -1
- package/cmsFileStorage/isInstallationPending.d.ts +0 -4
- package/cmsFileStorage/isInstallationPending.js +0 -23
- package/cmsFileStorage/isInstallationPending.js.map +0 -1
|
@@ -8,8 +8,6 @@ exports.FileManagerContextSetup = void 0;
|
|
|
8
8
|
var _createFileManager = require("./createFileManager");
|
|
9
9
|
var _FileStorage = require("./storage/FileStorage");
|
|
10
10
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
11
|
-
var _isInstallationPending = require("./cmsFileStorage/isInstallationPending");
|
|
12
|
-
var _createFileManagerPlugins = require("./cmsFileStorage/createFileManagerPlugins");
|
|
13
11
|
var _file = require("./cmsFileStorage/file.model");
|
|
14
12
|
var _CmsFilesStorage = require("./cmsFileStorage/CmsFilesStorage");
|
|
15
13
|
var _CmsModelModifier = require("./modelModifier/CmsModelModifier");
|
|
@@ -65,19 +63,14 @@ class FileManagerContextSetup {
|
|
|
65
63
|
return this.context.security.getPermissions(name);
|
|
66
64
|
}
|
|
67
65
|
async setupCmsStorageOperations(aliases) {
|
|
68
|
-
if ((0,
|
|
69
|
-
tenancy: this.context.tenancy,
|
|
70
|
-
i18n: this.context.i18n
|
|
71
|
-
})) {
|
|
66
|
+
if (!(await (0, _apiHeadlessCms.isHeadlessCmsReady)(this.context))) {
|
|
72
67
|
console.log("Installation pending!");
|
|
73
68
|
return;
|
|
74
69
|
}
|
|
75
70
|
const withPrivateFiles = this.context.wcp.canUsePrivateFiles();
|
|
76
71
|
|
|
77
72
|
// This registers code plugins (model group, models)
|
|
78
|
-
const {
|
|
79
|
-
fileModelDefinition
|
|
80
|
-
} = (0, _createFileManagerPlugins.createFileModel)({
|
|
73
|
+
const fileModelDefinition = (0, _file.createFileModel)({
|
|
81
74
|
withPrivateFiles
|
|
82
75
|
});
|
|
83
76
|
const modelModifiers = this.context.plugins.byType(_CmsModelModifier.CmsModelModifierPlugin.type);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_createFileManager","require","_FileStorage","_error","_interopRequireDefault","
|
|
1
|
+
{"version":3,"names":["_createFileManager","require","_FileStorage","_error","_interopRequireDefault","_file","_CmsFilesStorage","_CmsModelModifier","_apiHeadlessCms","_FilesPermissions","FileManagerContextSetup","constructor","context","setupContext","storageOperations","beforeInit","fileStorageOps","security","withoutAuthorization","setupCmsStorageOperations","aliases","files","filesPermissions","FilesPermissions","getIdentity","getPermissions","fullAccessPermissionName","createFileManager","getTenantId","bind","getLocaleCode","storage","FileStorage","WEBINY_VERSION","locale","i18n","getContentLocale","WebinyError","code","tenancy","getCurrentTenant","id","name","isHeadlessCmsReady","console","log","withPrivateFiles","wcp","canUsePrivateFiles","fileModelDefinition","createFileModel","modelModifiers","plugins","byType","CmsModelModifierPlugin","type","modifier","modifyModel","register","CmsModelPlugin","fileModel","getModel","FILE_MODEL_ID","CmsFilesStorage","create","cms","modelId","model","message","exports"],"sources":["FileManagerContextSetup.ts"],"sourcesContent":["import { FileManagerAliasesStorageOperations, FileManagerContext } from \"~/types\";\nimport { createFileManager, FileManagerConfig } from \"~/createFileManager\";\nimport { FileStorage } from \"~/storage/FileStorage\";\nimport WebinyError from \"@webiny/error\";\nimport { SecurityPermission } from \"@webiny/api-security/types\";\nimport { createFileModel, FILE_MODEL_ID } from \"~/cmsFileStorage/file.model\";\nimport { CmsFilesStorage } from \"~/cmsFileStorage/CmsFilesStorage\";\nimport { CmsModelModifierPlugin } from \"~/modelModifier/CmsModelModifier\";\nimport { CmsModelPlugin, isHeadlessCmsReady } from \"@webiny/api-headless-cms\";\nimport { FilesPermissions } from \"~/createFileManager/permissions/FilesPermissions\";\n\nexport class FileManagerContextSetup {\n private readonly context: FileManagerContext;\n\n constructor(context: FileManagerContext) {\n this.context = context;\n }\n\n async setupContext(storageOperations: FileManagerConfig[\"storageOperations\"]) {\n if (storageOperations.beforeInit) {\n await storageOperations.beforeInit(this.context);\n }\n\n const fileStorageOps = await this.context.security.withoutAuthorization(() => {\n return this.setupCmsStorageOperations(storageOperations.aliases);\n });\n\n if (fileStorageOps) {\n storageOperations.files = fileStorageOps;\n }\n\n const filesPermissions = new FilesPermissions({\n getIdentity: this.context.security.getIdentity,\n getPermissions: () => this.context.security.getPermissions(\"fm.file\"),\n fullAccessPermissionName: \"fm.*\"\n });\n\n return createFileManager({\n storageOperations,\n filesPermissions,\n getTenantId: this.getTenantId.bind(this),\n getLocaleCode: this.getLocaleCode.bind(this),\n getIdentity: this.getIdentity.bind(this),\n getPermissions: this.getPermissions.bind(this),\n storage: new FileStorage({\n context: this.context\n }),\n // TODO: maybe this is no longer necessary, as this wil be managed by CMS?\n WEBINY_VERSION: this.context.WEBINY_VERSION\n });\n }\n\n private getLocaleCode() {\n const locale = this.context.i18n.getContentLocale();\n if (!locale) {\n throw new WebinyError(\n \"Missing locale on context.i18n locale in File Manager API.\",\n \"LOCALE_ERROR\"\n );\n }\n return locale.code;\n }\n\n private getIdentity() {\n return this.context.security.getIdentity();\n }\n\n private getTenantId() {\n return this.context.tenancy.getCurrentTenant().id;\n }\n\n private async getPermissions<T extends SecurityPermission = SecurityPermission>(\n name: string\n ): Promise<T[]> {\n return this.context.security.getPermissions(name);\n }\n\n private async setupCmsStorageOperations(aliases: FileManagerAliasesStorageOperations) {\n if (!(await isHeadlessCmsReady(this.context))) {\n console.log(\"Installation pending!\");\n return;\n }\n\n const withPrivateFiles = this.context.wcp.canUsePrivateFiles();\n\n // This registers code plugins (model group, models)\n const fileModelDefinition = createFileModel({ withPrivateFiles });\n\n const modelModifiers = this.context.plugins.byType<CmsModelModifierPlugin>(\n CmsModelModifierPlugin.type\n );\n\n for (const modifier of modelModifiers) {\n await modifier.modifyModel(fileModelDefinition);\n }\n\n // Finally, register all plugins\n this.context.plugins.register([new CmsModelPlugin(fileModelDefinition)]);\n\n // Now load the file model registered in the previous step\n const fileModel = await this.getModel(FILE_MODEL_ID);\n\n // Overwrite the original `files` storage ops\n return await CmsFilesStorage.create({\n fileModel,\n cms: this.context.cms,\n security: this.context.security,\n aliases\n });\n }\n\n private async getModel(modelId: string) {\n const model = await this.context.cms.getModel(modelId);\n if (!model) {\n throw new WebinyError({\n code: \"MODEL_NOT_FOUND\",\n message: `Content model \"${modelId}\" was not found!`\n });\n }\n\n return model;\n }\n}\n"],"mappings":"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"}
|
|
@@ -41,11 +41,9 @@ class CmsFilesStorage {
|
|
|
41
41
|
folderId: _contants.ROOT_FOLDER
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
-
const entry = await this.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
wbyAco_location: file.location
|
|
48
|
-
});
|
|
44
|
+
const entry = await this.cms.createEntry(model, {
|
|
45
|
+
...file,
|
|
46
|
+
wbyAco_location: file.location
|
|
49
47
|
});
|
|
50
48
|
await this.aliases.storeAliases(file);
|
|
51
49
|
return this.getFileFieldValues(entry);
|
|
@@ -63,9 +61,7 @@ class CmsFilesStorage {
|
|
|
63
61
|
file
|
|
64
62
|
}) {
|
|
65
63
|
const model = this.modelWithContext(file);
|
|
66
|
-
await this.
|
|
67
|
-
return this.cms.deleteEntry(model, file.id);
|
|
68
|
-
});
|
|
64
|
+
await this.cms.deleteEntry(model, file.id);
|
|
69
65
|
await this.aliases.deleteAliases(file);
|
|
70
66
|
}
|
|
71
67
|
async get({
|
|
@@ -80,13 +76,11 @@ class CmsFilesStorage {
|
|
|
80
76
|
tenant,
|
|
81
77
|
locale
|
|
82
78
|
});
|
|
83
|
-
const entry = await this.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
});
|
|
79
|
+
const entry = await this.cms.getEntry(model, {
|
|
80
|
+
where: {
|
|
81
|
+
entryId: id,
|
|
82
|
+
latest: true
|
|
83
|
+
}
|
|
90
84
|
});
|
|
91
85
|
return entry ? this.getFileFieldValues(entry) : null;
|
|
92
86
|
}
|
|
@@ -97,15 +91,13 @@ class CmsFilesStorage {
|
|
|
97
91
|
tenant,
|
|
98
92
|
locale
|
|
99
93
|
});
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
search: params.search
|
|
108
|
-
});
|
|
94
|
+
const where = this.filesWhereProcessor.process(params.where);
|
|
95
|
+
const [entries, meta] = await this.cms.listLatestEntries(model, {
|
|
96
|
+
after: params.after,
|
|
97
|
+
limit: params.limit,
|
|
98
|
+
sort: params.sort,
|
|
99
|
+
where,
|
|
100
|
+
search: params.search
|
|
109
101
|
});
|
|
110
102
|
return [entries.map(entry => this.getFileFieldValues(entry)), meta];
|
|
111
103
|
}
|
|
@@ -116,14 +108,12 @@ class CmsFilesStorage {
|
|
|
116
108
|
tenant,
|
|
117
109
|
locale
|
|
118
110
|
});
|
|
119
|
-
const uniqueValues = await this.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
where
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
});
|
|
111
|
+
const uniqueValues = await this.cms.getUniqueFieldValues(model, {
|
|
112
|
+
fieldId: "tags",
|
|
113
|
+
where: {
|
|
114
|
+
...this.tagsWhereProcessor.process(params.where),
|
|
115
|
+
latest: true
|
|
116
|
+
}
|
|
127
117
|
});
|
|
128
118
|
return uniqueValues.map(uv => ({
|
|
129
119
|
tag: uv.value,
|
|
@@ -138,21 +128,19 @@ class CmsFilesStorage {
|
|
|
138
128
|
file
|
|
139
129
|
}) {
|
|
140
130
|
const model = this.modelWithContext(file);
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
const values = (0, _omit.default)(file, ["id", "tenant", "locale", "webinyVersion"]);
|
|
149
|
-
const updatedEntry = await this.cms.updateEntry(model, entry.id, {
|
|
150
|
-
...values,
|
|
151
|
-
wbyAco_location: values.location ?? entry.location
|
|
152
|
-
});
|
|
153
|
-
await this.aliases.storeAliases(file);
|
|
154
|
-
return this.getFileFieldValues(updatedEntry);
|
|
131
|
+
const entry = await this.cms.getEntry(model, {
|
|
132
|
+
where: {
|
|
133
|
+
entryId: file.id,
|
|
134
|
+
latest: true
|
|
135
|
+
}
|
|
155
136
|
});
|
|
137
|
+
const values = (0, _omit.default)(file, ["id", "tenant", "locale", "webinyVersion"]);
|
|
138
|
+
const updatedEntry = await this.cms.updateEntry(model, entry.id, {
|
|
139
|
+
...values,
|
|
140
|
+
wbyAco_location: values.location ?? entry.location
|
|
141
|
+
});
|
|
142
|
+
await this.aliases.storeAliases(file);
|
|
143
|
+
return this.getFileFieldValues(updatedEntry);
|
|
156
144
|
}
|
|
157
145
|
getFileFieldValues(entry) {
|
|
158
146
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_omit","_interopRequireDefault","require","_ListFilesWhereProcessor","_ListTagsWhereProcessor","_contants","CmsFilesStorage","create","params","fileModel","cms","security","aliases","constructor","model","filesWhereProcessor","ListFilesWhereProcessor","tagsWhereProcessor","ListTagsWhereProcessor","modelWithContext","tenant","locale","file","location","folderId","ROOT_FOLDER","entry","withoutAuthorization","createEntry","wbyAco_location","storeAliases","getFileFieldValues","createBatch","files","Promise","all","map","delete","deleteEntry","id","deleteAliases","get","where","getEntry","entryId","latest","list","entries","meta","process","listLatestEntries","after","limit","sort","search","tags","uniqueValues","getUniqueFieldValues","fieldId","uv","tag","value","count","a","b","update","values","omit","updatedEntry","updateEntry","createdBy","modifiedBy","savedBy","createdOn","modifiedOn","savedOn","webinyVersion","exports"],"sources":["CmsFilesStorage.ts"],"sourcesContent":["import omit from \"lodash/omit\";\nimport { CmsEntry, CmsModel, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport { Security } from \"@webiny/api-security/types\";\nimport {\n File,\n FileManagerAliasesStorageOperations,\n FileManagerFilesStorageOperations,\n FileManagerFilesStorageOperationsCreateBatchParams,\n FileManagerFilesStorageOperationsCreateParams,\n FileManagerFilesStorageOperationsDeleteParams,\n FileManagerFilesStorageOperationsGetParams,\n FileManagerFilesStorageOperationsListParams,\n FileManagerFilesStorageOperationsListResponse,\n FileManagerFilesStorageOperationsTagsParams,\n FileManagerFilesStorageOperationsTagsResponse,\n FileManagerFilesStorageOperationsUpdateParams\n} from \"~/types\";\nimport { ListFilesWhereProcessor } from \"~/cmsFileStorage/ListFilesWhereProcessor\";\nimport { ListTagsWhereProcessor } from \"~/cmsFileStorage/ListTagsWhereProcessor\";\nimport { ROOT_FOLDER } from \"~/contants\";\n\ninterface ModelContext {\n tenant: string;\n locale: string;\n}\n\nexport class CmsFilesStorage implements FileManagerFilesStorageOperations {\n private readonly cms: HeadlessCms;\n private readonly security: Security;\n private readonly model: CmsModel;\n private readonly aliases: FileManagerAliasesStorageOperations;\n private readonly filesWhereProcessor: ListFilesWhereProcessor;\n private readonly tagsWhereProcessor: ListTagsWhereProcessor;\n\n static async create(params: {\n fileModel: CmsModel;\n cms: HeadlessCms;\n security: Security;\n aliases: FileManagerAliasesStorageOperations;\n }) {\n return new CmsFilesStorage(params.fileModel, params.cms, params.security, params.aliases);\n }\n\n private constructor(\n fileModel: CmsModel,\n cms: HeadlessCms,\n security: Security,\n aliases: FileManagerAliasesStorageOperations\n ) {\n this.model = fileModel;\n this.aliases = aliases;\n this.cms = cms;\n this.security = security;\n this.filesWhereProcessor = new ListFilesWhereProcessor();\n this.tagsWhereProcessor = new ListTagsWhereProcessor();\n }\n\n private modelWithContext({ tenant, locale }: ModelContext): CmsModel {\n return { ...this.model, tenant, locale };\n }\n\n async create({ file }: FileManagerFilesStorageOperationsCreateParams): Promise<File> {\n const model = this.modelWithContext(file);\n\n if (!file.location?.folderId) {\n file.location = {\n ...file.location,\n folderId: ROOT_FOLDER\n };\n }\n\n const entry = await this.security.withoutAuthorization(() => {\n return this.cms.createEntry(model, {\n ...file,\n wbyAco_location: file.location\n });\n });\n\n await this.aliases.storeAliases(file);\n\n return this.getFileFieldValues(entry);\n }\n\n async createBatch({\n files\n }: FileManagerFilesStorageOperationsCreateBatchParams): Promise<File[]> {\n return await Promise.all(\n files.map(file => {\n return this.create({ file });\n })\n );\n }\n\n async delete({ file }: FileManagerFilesStorageOperationsDeleteParams): Promise<void> {\n const model = this.modelWithContext(file);\n await this.security.withoutAuthorization(() => {\n return this.cms.deleteEntry(model, file.id);\n });\n\n await this.aliases.deleteAliases(file);\n }\n\n async get({ where }: FileManagerFilesStorageOperationsGetParams): Promise<File | null> {\n const { id, tenant, locale } = where;\n const model = this.modelWithContext({ tenant, locale });\n const entry = await this.security.withoutAuthorization(() => {\n return this.cms.getEntry(model, { where: { entryId: id, latest: true } });\n });\n return entry ? this.getFileFieldValues(entry) : null;\n }\n\n async list(\n params: FileManagerFilesStorageOperationsListParams\n ): Promise<FileManagerFilesStorageOperationsListResponse> {\n const tenant = params.where.tenant;\n const locale = params.where.locale;\n\n const model = this.modelWithContext({ tenant, locale });\n const [entries, meta] = await this.security.withoutAuthorization(() => {\n const where = this.filesWhereProcessor.process(params.where);\n return this.cms.listLatestEntries(model, {\n after: params.after,\n limit: params.limit,\n sort: params.sort,\n where,\n search: params.search\n });\n });\n\n return [entries.map(entry => this.getFileFieldValues(entry)), meta];\n }\n\n async tags(\n params: FileManagerFilesStorageOperationsTagsParams\n ): Promise<FileManagerFilesStorageOperationsTagsResponse[]> {\n const tenant = params.where.tenant;\n const locale = params.where.locale;\n const model = this.modelWithContext({ tenant, locale });\n const uniqueValues = await this.security.withoutAuthorization(() => {\n return this.cms.getUniqueFieldValues(model, {\n fieldId: \"tags\",\n where: {\n ...this.tagsWhereProcessor.process(params.where),\n latest: true\n }\n });\n });\n\n return uniqueValues\n .map(uv => ({\n tag: uv.value,\n count: uv.count\n }))\n .sort((a, b) => {\n return a.tag < b.tag ? -1 : 1;\n })\n .sort((a, b) => {\n return a.count > b.count ? -1 : 1;\n });\n }\n\n async update({ file }: FileManagerFilesStorageOperationsUpdateParams): Promise<File> {\n const model = this.modelWithContext(file);\n\n return await this.security.withoutAuthorization(async () => {\n const entry = await this.cms.getEntry(model, {\n where: { entryId: file.id, latest: true }\n });\n\n const values = omit(file, [\"id\", \"tenant\", \"locale\", \"webinyVersion\"]);\n\n const updatedEntry = await this.cms.updateEntry(model, entry.id, {\n ...values,\n wbyAco_location: values.location ?? entry.location\n });\n\n await this.aliases.storeAliases(file);\n\n return this.getFileFieldValues(updatedEntry);\n });\n }\n\n private getFileFieldValues(entry: CmsEntry) {\n return {\n id: entry.entryId,\n\n // We're safe to use entry-level meta fields because we don't use revisions with files.\n createdBy: entry.createdBy,\n modifiedBy: entry.modifiedBy || null,\n savedBy: entry.savedBy,\n createdOn: entry.createdOn,\n modifiedOn: entry.modifiedOn || null,\n savedOn: entry.savedOn,\n\n locale: entry.locale,\n tenant: entry.tenant,\n webinyVersion: entry.webinyVersion,\n ...entry.values\n } as File;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_omit","_interopRequireDefault","require","_ListFilesWhereProcessor","_ListTagsWhereProcessor","_contants","CmsFilesStorage","create","params","fileModel","cms","security","aliases","constructor","model","filesWhereProcessor","ListFilesWhereProcessor","tagsWhereProcessor","ListTagsWhereProcessor","modelWithContext","tenant","locale","file","location","folderId","ROOT_FOLDER","entry","createEntry","wbyAco_location","storeAliases","getFileFieldValues","createBatch","files","Promise","all","map","delete","deleteEntry","id","deleteAliases","get","where","getEntry","entryId","latest","list","process","entries","meta","listLatestEntries","after","limit","sort","search","tags","uniqueValues","getUniqueFieldValues","fieldId","uv","tag","value","count","a","b","update","values","omit","updatedEntry","updateEntry","createdBy","modifiedBy","savedBy","createdOn","modifiedOn","savedOn","webinyVersion","exports"],"sources":["CmsFilesStorage.ts"],"sourcesContent":["import omit from \"lodash/omit\";\nimport { CmsEntry, CmsModel, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport { Security } from \"@webiny/api-security/types\";\nimport {\n File,\n FileManagerAliasesStorageOperations,\n FileManagerFilesStorageOperations,\n FileManagerFilesStorageOperationsCreateBatchParams,\n FileManagerFilesStorageOperationsCreateParams,\n FileManagerFilesStorageOperationsDeleteParams,\n FileManagerFilesStorageOperationsGetParams,\n FileManagerFilesStorageOperationsListParams,\n FileManagerFilesStorageOperationsListResponse,\n FileManagerFilesStorageOperationsTagsParams,\n FileManagerFilesStorageOperationsTagsResponse,\n FileManagerFilesStorageOperationsUpdateParams\n} from \"~/types\";\nimport { ListFilesWhereProcessor } from \"~/cmsFileStorage/ListFilesWhereProcessor\";\nimport { ListTagsWhereProcessor } from \"~/cmsFileStorage/ListTagsWhereProcessor\";\nimport { ROOT_FOLDER } from \"~/contants\";\n\ninterface ModelContext {\n tenant: string;\n locale: string;\n}\n\nexport class CmsFilesStorage implements FileManagerFilesStorageOperations {\n private readonly cms: HeadlessCms;\n private readonly security: Security;\n private readonly model: CmsModel;\n private readonly aliases: FileManagerAliasesStorageOperations;\n private readonly filesWhereProcessor: ListFilesWhereProcessor;\n private readonly tagsWhereProcessor: ListTagsWhereProcessor;\n\n static async create(params: {\n fileModel: CmsModel;\n cms: HeadlessCms;\n security: Security;\n aliases: FileManagerAliasesStorageOperations;\n }) {\n return new CmsFilesStorage(params.fileModel, params.cms, params.security, params.aliases);\n }\n\n private constructor(\n fileModel: CmsModel,\n cms: HeadlessCms,\n security: Security,\n aliases: FileManagerAliasesStorageOperations\n ) {\n this.model = fileModel;\n this.aliases = aliases;\n this.cms = cms;\n this.security = security;\n this.filesWhereProcessor = new ListFilesWhereProcessor();\n this.tagsWhereProcessor = new ListTagsWhereProcessor();\n }\n\n private modelWithContext({ tenant, locale }: ModelContext): CmsModel {\n return { ...this.model, tenant, locale };\n }\n\n async create({ file }: FileManagerFilesStorageOperationsCreateParams): Promise<File> {\n const model = this.modelWithContext(file);\n\n if (!file.location?.folderId) {\n file.location = {\n ...file.location,\n folderId: ROOT_FOLDER\n };\n }\n\n const entry = await this.cms.createEntry(model, {\n ...file,\n wbyAco_location: file.location\n });\n\n await this.aliases.storeAliases(file);\n\n return this.getFileFieldValues(entry);\n }\n\n async createBatch({\n files\n }: FileManagerFilesStorageOperationsCreateBatchParams): Promise<File[]> {\n return await Promise.all(\n files.map(file => {\n return this.create({ file });\n })\n );\n }\n\n async delete({ file }: FileManagerFilesStorageOperationsDeleteParams): Promise<void> {\n const model = this.modelWithContext(file);\n await this.cms.deleteEntry(model, file.id);\n\n await this.aliases.deleteAliases(file);\n }\n\n async get({ where }: FileManagerFilesStorageOperationsGetParams): Promise<File | null> {\n const { id, tenant, locale } = where;\n const model = this.modelWithContext({ tenant, locale });\n const entry = await this.cms.getEntry(model, { where: { entryId: id, latest: true } });\n return entry ? this.getFileFieldValues(entry) : null;\n }\n\n async list(\n params: FileManagerFilesStorageOperationsListParams\n ): Promise<FileManagerFilesStorageOperationsListResponse> {\n const tenant = params.where.tenant;\n const locale = params.where.locale;\n\n const model = this.modelWithContext({ tenant, locale });\n\n const where = this.filesWhereProcessor.process(params.where);\n const [entries, meta] = await this.cms.listLatestEntries(model, {\n after: params.after,\n limit: params.limit,\n sort: params.sort,\n where,\n search: params.search\n });\n\n return [entries.map(entry => this.getFileFieldValues(entry)), meta];\n }\n\n async tags(\n params: FileManagerFilesStorageOperationsTagsParams\n ): Promise<FileManagerFilesStorageOperationsTagsResponse[]> {\n const tenant = params.where.tenant;\n const locale = params.where.locale;\n const model = this.modelWithContext({ tenant, locale });\n const uniqueValues = await this.cms.getUniqueFieldValues(model, {\n fieldId: \"tags\",\n where: {\n ...this.tagsWhereProcessor.process(params.where),\n latest: true\n }\n });\n\n return uniqueValues\n .map(uv => ({\n tag: uv.value,\n count: uv.count\n }))\n .sort((a, b) => {\n return a.tag < b.tag ? -1 : 1;\n })\n .sort((a, b) => {\n return a.count > b.count ? -1 : 1;\n });\n }\n\n async update({ file }: FileManagerFilesStorageOperationsUpdateParams): Promise<File> {\n const model = this.modelWithContext(file);\n\n const entry = await this.cms.getEntry(model, {\n where: { entryId: file.id, latest: true }\n });\n\n const values = omit(file, [\"id\", \"tenant\", \"locale\", \"webinyVersion\"]);\n\n const updatedEntry = await this.cms.updateEntry(model, entry.id, {\n ...values,\n wbyAco_location: values.location ?? entry.location\n });\n\n await this.aliases.storeAliases(file);\n\n return this.getFileFieldValues(updatedEntry);\n }\n\n private getFileFieldValues(entry: CmsEntry) {\n return {\n id: entry.entryId,\n\n // We're safe to use entry-level meta fields because we don't use revisions with files.\n createdBy: entry.createdBy,\n modifiedBy: entry.modifiedBy || null,\n savedBy: entry.savedBy,\n createdOn: entry.createdOn,\n modifiedOn: entry.modifiedOn || null,\n savedOn: entry.savedOn,\n\n locale: entry.locale,\n tenant: entry.tenant,\n webinyVersion: entry.webinyVersion,\n ...entry.values\n } as File;\n }\n}\n"],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@ export declare const FILE_MODEL_ID = "fmFile";
|
|
|
2
2
|
interface CreateFileModelDefinitionParams {
|
|
3
3
|
withPrivateFiles: boolean;
|
|
4
4
|
}
|
|
5
|
-
export declare const
|
|
5
|
+
export declare const createFileModel: (params: CreateFileModelDefinitionParams) => import("@webiny/api-headless-cms").CmsPrivateModelFull;
|
|
6
6
|
export {};
|
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.createFileModel = exports.FILE_MODEL_ID = void 0;
|
|
7
7
|
var _apiHeadlessCms = require("@webiny/api-headless-cms");
|
|
8
|
-
var _createModelField = require("./createModelField");
|
|
9
8
|
const required = () => {
|
|
10
9
|
return {
|
|
11
10
|
name: "required",
|
|
@@ -13,59 +12,59 @@ const required = () => {
|
|
|
13
12
|
};
|
|
14
13
|
};
|
|
15
14
|
const nameField = () => {
|
|
16
|
-
return (0,
|
|
15
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
17
16
|
label: "Name",
|
|
18
17
|
type: "text",
|
|
19
18
|
validation: [required()]
|
|
20
19
|
});
|
|
21
20
|
};
|
|
22
21
|
const keyField = () => {
|
|
23
|
-
return (0,
|
|
22
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
24
23
|
label: "Key",
|
|
25
24
|
type: "text",
|
|
26
25
|
validation: [required()]
|
|
27
26
|
});
|
|
28
27
|
};
|
|
29
28
|
const typeField = () => {
|
|
30
|
-
return (0,
|
|
29
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
31
30
|
label: "Type",
|
|
32
31
|
type: "text",
|
|
33
32
|
validation: [required()]
|
|
34
33
|
});
|
|
35
34
|
};
|
|
36
35
|
const sizeField = () => {
|
|
37
|
-
return (0,
|
|
36
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
38
37
|
label: "Size",
|
|
39
38
|
type: "number",
|
|
40
39
|
validation: [required()]
|
|
41
40
|
});
|
|
42
41
|
};
|
|
43
42
|
const metaWidthField = () => {
|
|
44
|
-
return (0,
|
|
43
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
45
44
|
label: "Width",
|
|
46
45
|
type: "number"
|
|
47
46
|
});
|
|
48
47
|
};
|
|
49
48
|
const metaHeightField = () => {
|
|
50
|
-
return (0,
|
|
49
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
51
50
|
label: "Height",
|
|
52
51
|
type: "number"
|
|
53
52
|
});
|
|
54
53
|
};
|
|
55
54
|
const metaPrivateField = () => {
|
|
56
|
-
return (0,
|
|
55
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
57
56
|
label: "Private",
|
|
58
57
|
type: "boolean"
|
|
59
58
|
});
|
|
60
59
|
};
|
|
61
60
|
const metaOriginalKeyField = () => {
|
|
62
|
-
return (0,
|
|
61
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
63
62
|
label: "Original Key",
|
|
64
63
|
type: "text"
|
|
65
64
|
});
|
|
66
65
|
};
|
|
67
66
|
const metaField = () => {
|
|
68
|
-
return (0,
|
|
67
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
69
68
|
label: "Meta",
|
|
70
69
|
type: "object",
|
|
71
70
|
settings: {
|
|
@@ -74,7 +73,7 @@ const metaField = () => {
|
|
|
74
73
|
});
|
|
75
74
|
};
|
|
76
75
|
const accessControlTypeField = () => {
|
|
77
|
-
return (0,
|
|
76
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
78
77
|
label: "Type",
|
|
79
78
|
type: "text",
|
|
80
79
|
predefinedValues: {
|
|
@@ -91,7 +90,7 @@ const accessControlTypeField = () => {
|
|
|
91
90
|
});
|
|
92
91
|
};
|
|
93
92
|
const accessControlField = () => {
|
|
94
|
-
return (0,
|
|
93
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
95
94
|
label: "Access Control",
|
|
96
95
|
type: "object",
|
|
97
96
|
tags: ["$bulk-edit"],
|
|
@@ -101,7 +100,7 @@ const accessControlField = () => {
|
|
|
101
100
|
});
|
|
102
101
|
};
|
|
103
102
|
const tagsField = () => {
|
|
104
|
-
return (0,
|
|
103
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
105
104
|
label: "Tags",
|
|
106
105
|
type: "text",
|
|
107
106
|
tags: ["$bulk-edit"],
|
|
@@ -110,7 +109,7 @@ const tagsField = () => {
|
|
|
110
109
|
});
|
|
111
110
|
};
|
|
112
111
|
const aliasesField = () => {
|
|
113
|
-
return (0,
|
|
112
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
114
113
|
label: "Aliases",
|
|
115
114
|
type: "text",
|
|
116
115
|
multipleValues: true,
|
|
@@ -118,12 +117,12 @@ const aliasesField = () => {
|
|
|
118
117
|
});
|
|
119
118
|
};
|
|
120
119
|
const locationField = () => {
|
|
121
|
-
return (0,
|
|
120
|
+
return (0, _apiHeadlessCms.createModelField)({
|
|
122
121
|
type: "object",
|
|
123
122
|
label: "Location",
|
|
124
123
|
fieldId: "location",
|
|
125
124
|
settings: {
|
|
126
|
-
fields: [(0,
|
|
125
|
+
fields: [(0, _apiHeadlessCms.createModelField)({
|
|
127
126
|
type: "text",
|
|
128
127
|
fieldId: "folderId",
|
|
129
128
|
label: "Folder ID",
|
|
@@ -136,18 +135,26 @@ const locationField = () => {
|
|
|
136
135
|
};
|
|
137
136
|
const FILE_MODEL_ID = "fmFile";
|
|
138
137
|
exports.FILE_MODEL_ID = FILE_MODEL_ID;
|
|
139
|
-
const
|
|
138
|
+
const createFileModel = params => {
|
|
140
139
|
const fields = [locationField(), nameField(), keyField(), typeField(), sizeField(), metaField(), tagsField(), aliasesField()];
|
|
141
140
|
if (params.withPrivateFiles) {
|
|
142
141
|
fields.push(accessControlField());
|
|
143
142
|
}
|
|
144
|
-
return (0, _apiHeadlessCms.
|
|
143
|
+
return (0, _apiHeadlessCms.createPrivateModel)({
|
|
145
144
|
name: "FmFile",
|
|
146
145
|
modelId: FILE_MODEL_ID,
|
|
147
146
|
titleFieldId: "name",
|
|
147
|
+
authorization: {
|
|
148
|
+
// Disables base permission checks, but leaves FLP checks enabled.
|
|
149
|
+
permissions: false
|
|
150
|
+
|
|
151
|
+
// We're leaving FLP enabled (no need to set `flp: true`).
|
|
152
|
+
// flp: true
|
|
153
|
+
},
|
|
154
|
+
|
|
148
155
|
fields
|
|
149
156
|
});
|
|
150
157
|
};
|
|
151
|
-
exports.
|
|
158
|
+
exports.createFileModel = createFileModel;
|
|
152
159
|
|
|
153
160
|
//# sourceMappingURL=file.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_apiHeadlessCms","require","
|
|
1
|
+
{"version":3,"names":["_apiHeadlessCms","require","required","name","message","nameField","createModelField","label","type","validation","keyField","typeField","sizeField","metaWidthField","metaHeightField","metaPrivateField","metaOriginalKeyField","metaField","settings","fields","accessControlTypeField","predefinedValues","enabled","values","value","selected","accessControlField","tags","tagsField","multipleValues","aliasesField","locationField","fieldId","path","FILE_MODEL_ID","exports","createFileModel","params","withPrivateFiles","push","createPrivateModel","modelId","titleFieldId","authorization","permissions"],"sources":["file.model.ts"],"sourcesContent":["import { createPrivateModel, createModelField } from \"@webiny/api-headless-cms\";\n\nconst required = () => {\n return {\n name: \"required\",\n message: \"Value is required.\"\n };\n};\n\nconst nameField = () => {\n return createModelField({\n label: \"Name\",\n type: \"text\",\n validation: [required()]\n });\n};\n\nconst keyField = () => {\n return createModelField({\n label: \"Key\",\n type: \"text\",\n validation: [required()]\n });\n};\n\nconst typeField = () => {\n return createModelField({\n label: \"Type\",\n type: \"text\",\n validation: [required()]\n });\n};\n\nconst sizeField = () => {\n return createModelField({\n label: \"Size\",\n type: \"number\",\n validation: [required()]\n });\n};\n\nconst metaWidthField = () => {\n return createModelField({\n label: \"Width\",\n type: \"number\"\n });\n};\n\nconst metaHeightField = () => {\n return createModelField({\n label: \"Height\",\n type: \"number\"\n });\n};\n\nconst metaPrivateField = () => {\n return createModelField({\n label: \"Private\",\n type: \"boolean\"\n });\n};\n\nconst metaOriginalKeyField = () => {\n return createModelField({\n label: \"Original Key\",\n type: \"text\"\n });\n};\n\nconst metaField = () => {\n return createModelField({\n label: \"Meta\",\n type: \"object\",\n settings: {\n fields: [\n metaPrivateField(),\n metaWidthField(),\n metaHeightField(),\n metaOriginalKeyField()\n ]\n }\n });\n};\n\nconst accessControlTypeField = () => {\n return createModelField({\n label: \"Type\",\n type: \"text\",\n predefinedValues: {\n enabled: true,\n values: [\n {\n label: \"Public\",\n value: \"public\",\n selected: true\n },\n {\n label: \"Private\",\n value: \"private-authenticated\"\n }\n ]\n }\n });\n};\n\nconst accessControlField = () => {\n return createModelField({\n label: \"Access Control\",\n type: \"object\",\n tags: [\"$bulk-edit\"],\n settings: {\n fields: [accessControlTypeField()]\n }\n });\n};\n\nconst tagsField = () => {\n return createModelField({\n label: \"Tags\",\n type: \"text\",\n tags: [\"$bulk-edit\"],\n multipleValues: true,\n validation: [required()]\n });\n};\n\nconst aliasesField = () => {\n return createModelField({\n label: \"Aliases\",\n type: \"text\",\n multipleValues: true,\n validation: [required()]\n });\n};\n\nconst locationField = () => {\n return createModelField({\n type: \"object\",\n label: \"Location\",\n fieldId: \"location\",\n settings: {\n fields: [\n createModelField({\n type: \"text\",\n fieldId: \"folderId\",\n label: \"Folder ID\",\n settings: {\n path: \"location.folderId\"\n }\n })\n ]\n }\n });\n};\n\nexport const FILE_MODEL_ID = \"fmFile\";\n\ninterface CreateFileModelDefinitionParams {\n withPrivateFiles: boolean;\n}\n\nexport const createFileModel = (params: CreateFileModelDefinitionParams) => {\n const fields = [\n locationField(),\n nameField(),\n keyField(),\n typeField(),\n sizeField(),\n metaField(),\n tagsField(),\n aliasesField()\n ];\n\n if (params.withPrivateFiles) {\n fields.push(accessControlField());\n }\n\n return createPrivateModel({\n name: \"FmFile\",\n modelId: FILE_MODEL_ID,\n titleFieldId: \"name\",\n authorization: {\n // Disables base permission checks, but leaves FLP checks enabled.\n permissions: false\n\n // We're leaving FLP enabled (no need to set `flp: true`).\n // flp: true\n },\n fields\n });\n};\n"],"mappings":"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"}
|
|
@@ -7,12 +7,6 @@ export declare class PrivateFilesAssetProcessor implements AssetProcessor {
|
|
|
7
7
|
private assetAuthorizer;
|
|
8
8
|
constructor(context: FileManagerContext, assetAuthorizer: AssetAuthorizer, assetProcessor: AssetProcessor);
|
|
9
9
|
process(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;
|
|
10
|
-
/**
|
|
11
|
-
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
12
|
-
* This method performs a very awkward data loading and type cast which should be removed as soon as we resolve the FLP issue!
|
|
13
|
-
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
14
|
-
*/
|
|
15
|
-
private getFileById;
|
|
16
10
|
private isPrivate;
|
|
17
11
|
private requestedViaPrivateEndpoint;
|
|
18
12
|
private requestedViaPublicEndpoint;
|
|
@@ -4,13 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.PrivateFilesAssetProcessor = void 0;
|
|
7
|
-
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
8
7
|
var _NotAuthorizedOutputStrategy = require("./NotAuthorizedOutputStrategy");
|
|
9
8
|
var _RedirectToPublicUrlOutputStrategy = require("./RedirectToPublicUrlOutputStrategy");
|
|
10
9
|
var _RedirectToPrivateUrlOutputStrategy = require("./RedirectToPrivateUrlOutputStrategy");
|
|
11
10
|
var _PrivateCache = require("./PrivateCache");
|
|
12
11
|
var _PublicCache = require("./PublicCache");
|
|
13
|
-
var _apiHeadlessCms = require("@webiny/api-headless-cms");
|
|
14
12
|
class PrivateFilesAssetProcessor {
|
|
15
13
|
constructor(context, assetAuthorizer, assetProcessor) {
|
|
16
14
|
this.assetAuthorizer = assetAuthorizer;
|
|
@@ -19,9 +17,13 @@ class PrivateFilesAssetProcessor {
|
|
|
19
17
|
}
|
|
20
18
|
async process(assetRequest, asset) {
|
|
21
19
|
const id = asset.getId();
|
|
20
|
+
const {
|
|
21
|
+
security,
|
|
22
|
+
fileManager
|
|
23
|
+
} = this.context;
|
|
22
24
|
|
|
23
25
|
// Get file from File Manager by `id`.
|
|
24
|
-
const file = await
|
|
26
|
+
const file = await security.withoutAuthorization(() => fileManager.getFile(id));
|
|
25
27
|
const isPrivateFile = this.isPrivate(file);
|
|
26
28
|
if (!isPrivateFile && this.requestedViaPrivateEndpoint(assetRequest)) {
|
|
27
29
|
asset.setOutputStrategy(new _RedirectToPublicUrlOutputStrategy.RedirectToPublicUrlOutputStrategy(assetRequest));
|
|
@@ -44,29 +46,6 @@ class PrivateFilesAssetProcessor {
|
|
|
44
46
|
});
|
|
45
47
|
return processedAsset;
|
|
46
48
|
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
50
|
-
* This method performs a very awkward data loading and type cast which should be removed as soon as we resolve the FLP issue!
|
|
51
|
-
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
52
|
-
*/
|
|
53
|
-
async getFileById(id) {
|
|
54
|
-
const model = await this.context.security.withoutAuthorization(() => {
|
|
55
|
-
return this.context.cms.getModel("fmFile");
|
|
56
|
-
});
|
|
57
|
-
if (!model) {
|
|
58
|
-
throw new _handlerGraphql.NotFoundError("File model not found!");
|
|
59
|
-
}
|
|
60
|
-
const entries = this.context.cms.storageOperations.entries;
|
|
61
|
-
const storageEntry = await entries.getLatestRevisionByEntryId(model, {
|
|
62
|
-
id
|
|
63
|
-
});
|
|
64
|
-
if (!storageEntry) {
|
|
65
|
-
throw new _handlerGraphql.NotFoundError("File not found!");
|
|
66
|
-
}
|
|
67
|
-
const file = await (0, _apiHeadlessCms.entryFromStorageTransform)(this.context, model, storageEntry);
|
|
68
|
-
return file.values;
|
|
69
|
-
}
|
|
70
49
|
isPrivate(file) {
|
|
71
50
|
return file.accessControl && file.accessControl.type.startsWith("private-");
|
|
72
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_NotAuthorizedOutputStrategy","require","_RedirectToPublicUrlOutputStrategy","_RedirectToPrivateUrlOutputStrategy","_PrivateCache","_PublicCache","PrivateFilesAssetProcessor","constructor","context","assetAuthorizer","assetProcessor","process","assetRequest","asset","id","getId","security","fileManager","file","withoutAuthorization","getFile","isPrivateFile","isPrivate","requestedViaPrivateEndpoint","setOutputStrategy","RedirectToPublicUrlOutputStrategy","requestedViaPublicEndpoint","RedirectToPrivateUrlOutputStrategy","console","log","authorize","error","NotAuthorizedOutputStrategy","processedAsset","strategy","PrivateCache","PublicCache","accessControl","type","startsWith","getContext","private","exports"],"sources":["PrivateFilesAssetProcessor.ts"],"sourcesContent":["import { File, FileManagerContext } from \"~/types\";\nimport { Asset, AssetProcessor, AssetRequest } from \"~/delivery\";\nimport { AssetAuthorizer } from \"./AssetAuthorizer\";\nimport { NotAuthorizedOutputStrategy } from \"./NotAuthorizedOutputStrategy\";\nimport { RedirectToPublicUrlOutputStrategy } from \"./RedirectToPublicUrlOutputStrategy\";\nimport { RedirectToPrivateUrlOutputStrategy } from \"./RedirectToPrivateUrlOutputStrategy\";\nimport { PrivateCache } from \"./PrivateCache\";\nimport { PublicCache } from \"./PublicCache\";\n\ninterface MaybePrivate {\n private?: boolean;\n}\n\nexport class PrivateFilesAssetProcessor implements AssetProcessor {\n private readonly context: FileManagerContext;\n private assetProcessor: AssetProcessor;\n private assetAuthorizer: AssetAuthorizer;\n\n constructor(\n context: FileManagerContext,\n assetAuthorizer: AssetAuthorizer,\n assetProcessor: AssetProcessor\n ) {\n this.assetAuthorizer = assetAuthorizer;\n this.context = context;\n this.assetProcessor = assetProcessor;\n }\n\n async process(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n const id = asset.getId();\n const { security, fileManager } = this.context;\n\n // Get file from File Manager by `id`.\n const file = await security.withoutAuthorization(() => fileManager.getFile(id));\n\n const isPrivateFile = this.isPrivate(file);\n\n if (!isPrivateFile && this.requestedViaPrivateEndpoint(assetRequest)) {\n asset.setOutputStrategy(new RedirectToPublicUrlOutputStrategy(assetRequest));\n return asset;\n }\n\n if (isPrivateFile && this.requestedViaPublicEndpoint(assetRequest)) {\n asset.setOutputStrategy(new RedirectToPrivateUrlOutputStrategy(assetRequest));\n return asset;\n }\n\n console.log(\"file\", file);\n\n try {\n await this.assetAuthorizer.authorize(file);\n } catch (error) {\n asset.setOutputStrategy(new NotAuthorizedOutputStrategy());\n\n return asset;\n }\n\n const processedAsset = await this.assetProcessor.process(assetRequest, asset);\n\n processedAsset.setOutputStrategy(strategy => {\n return isPrivateFile ? new PrivateCache(30, strategy) : new PublicCache(365, strategy);\n });\n\n return processedAsset;\n }\n\n private isPrivate(file: File) {\n return file.accessControl && file.accessControl.type.startsWith(\"private-\");\n }\n\n private requestedViaPrivateEndpoint(assetRequest: AssetRequest) {\n return assetRequest.getContext<MaybePrivate>().private;\n }\n\n private requestedViaPublicEndpoint(assetRequest: AssetRequest) {\n return !this.requestedViaPrivateEndpoint(assetRequest);\n }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,4BAAA,GAAAC,OAAA;AACA,IAAAC,kCAAA,GAAAD,OAAA;AACA,IAAAE,mCAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AAMO,MAAMK,0BAA0B,CAA2B;EAK9DC,WAAWA,CACPC,OAA2B,EAC3BC,eAAgC,EAChCC,cAA8B,EAChC;IACE,IAAI,CAACD,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACE,cAAc,GAAGA,cAAc;EACxC;EAEA,MAAMC,OAAOA,CAACC,YAA0B,EAAEC,KAAY,EAAkB;IACpE,MAAMC,EAAE,GAAGD,KAAK,CAACE,KAAK,CAAC,CAAC;IACxB,MAAM;MAAEC,QAAQ;MAAEC;IAAY,CAAC,GAAG,IAAI,CAACT,OAAO;;IAE9C;IACA,MAAMU,IAAI,GAAG,MAAMF,QAAQ,CAACG,oBAAoB,CAAC,MAAMF,WAAW,CAACG,OAAO,CAACN,EAAE,CAAC,CAAC;IAE/E,MAAMO,aAAa,GAAG,IAAI,CAACC,SAAS,CAACJ,IAAI,CAAC;IAE1C,IAAI,CAACG,aAAa,IAAI,IAAI,CAACE,2BAA2B,CAACX,YAAY,CAAC,EAAE;MAClEC,KAAK,CAACW,iBAAiB,CAAC,IAAIC,oEAAiC,CAACb,YAAY,CAAC,CAAC;MAC5E,OAAOC,KAAK;IAChB;IAEA,IAAIQ,aAAa,IAAI,IAAI,CAACK,0BAA0B,CAACd,YAAY,CAAC,EAAE;MAChEC,KAAK,CAACW,iBAAiB,CAAC,IAAIG,sEAAkC,CAACf,YAAY,CAAC,CAAC;MAC7E,OAAOC,KAAK;IAChB;IAEAe,OAAO,CAACC,GAAG,CAAC,MAAM,EAAEX,IAAI,CAAC;IAEzB,IAAI;MACA,MAAM,IAAI,CAACT,eAAe,CAACqB,SAAS,CAACZ,IAAI,CAAC;IAC9C,CAAC,CAAC,OAAOa,KAAK,EAAE;MACZlB,KAAK,CAACW,iBAAiB,CAAC,IAAIQ,wDAA2B,CAAC,CAAC,CAAC;MAE1D,OAAOnB,KAAK;IAChB;IAEA,MAAMoB,cAAc,GAAG,MAAM,IAAI,CAACvB,cAAc,CAACC,OAAO,CAACC,YAAY,EAAEC,KAAK,CAAC;IAE7EoB,cAAc,CAACT,iBAAiB,CAACU,QAAQ,IAAI;MACzC,OAAOb,aAAa,GAAG,IAAIc,0BAAY,CAAC,EAAE,EAAED,QAAQ,CAAC,GAAG,IAAIE,wBAAW,CAAC,GAAG,EAAEF,QAAQ,CAAC;IAC1F,CAAC,CAAC;IAEF,OAAOD,cAAc;EACzB;EAEQX,SAASA,CAACJ,IAAU,EAAE;IAC1B,OAAOA,IAAI,CAACmB,aAAa,IAAInB,IAAI,CAACmB,aAAa,CAACC,IAAI,CAACC,UAAU,CAAC,UAAU,CAAC;EAC/E;EAEQhB,2BAA2BA,CAACX,YAA0B,EAAE;IAC5D,OAAOA,YAAY,CAAC4B,UAAU,CAAe,CAAC,CAACC,OAAO;EAC1D;EAEQf,0BAA0BA,CAACd,YAA0B,EAAE;IAC3D,OAAO,CAAC,IAAI,CAACW,2BAA2B,CAACX,YAAY,CAAC;EAC1D;AACJ;AAAC8B,OAAA,CAAApC,0BAAA,GAAAA,0BAAA"}
|
package/graphql/filesSchema.js
CHANGED
|
@@ -30,9 +30,7 @@ const createFilesSchema = params => {
|
|
|
30
30
|
if (!identity) {
|
|
31
31
|
return new _apiSecurity.NotAuthorizedResponse();
|
|
32
32
|
}
|
|
33
|
-
return (0, _utils.resolve)(() => context.
|
|
34
|
-
return context.cms.getModel("fmFile");
|
|
35
|
-
}));
|
|
33
|
+
return (0, _utils.resolve)(() => context.cms.getModel("fmFile"));
|
|
36
34
|
},
|
|
37
35
|
getFile(_, args, context) {
|
|
38
36
|
return (0, _utils.resolve)(() => context.fileManager.getFile(args.id));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_handlerGraphql","require","_utils","_createFilesTypeDefs","_apiSecurity","createFilesSchema","params","fileManagerGraphQL","GraphQLSchemaPlugin","typeDefs","createFilesTypeDefs","resolvers","Query","fileManager","emptyResolver","Mutation","FmFile","src","file","_","context","settings","getSettings","srcPrefix","key","FmQuery","getFileModel","__","identity","security","getIdentity","NotAuthorizedResponse","resolve","
|
|
1
|
+
{"version":3,"names":["_handlerGraphql","require","_utils","_createFilesTypeDefs","_apiSecurity","createFilesSchema","params","fileManagerGraphQL","GraphQLSchemaPlugin","typeDefs","createFilesTypeDefs","resolvers","Query","fileManager","emptyResolver","Mutation","FmFile","src","file","_","context","settings","getSettings","srcPrefix","key","FmQuery","getFileModel","__","identity","security","getIdentity","NotAuthorizedResponse","resolve","cms","getModel","getFile","args","id","listFiles","data","meta","ListResponse","e","ErrorResponse","listTags","tags","Response","error","FmMutation","createFile","createFiles","createFilesInBatch","updateFile","deleteFile","storage","delete","name","exports"],"sources":["filesSchema.ts"],"sourcesContent":["import {\n ErrorResponse,\n GraphQLSchemaPlugin,\n ListResponse,\n Response\n} from \"@webiny/handler-graphql\";\nimport { FileManagerContext, FilesListOpts } from \"~/types\";\nimport { emptyResolver, resolve } from \"./utils\";\nimport { createFilesTypeDefs, CreateFilesTypeDefsParams } from \"~/graphql/createFilesTypeDefs\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\n\nexport const createFilesSchema = (params: CreateFilesTypeDefsParams) => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<FileManagerContext>({\n typeDefs: createFilesTypeDefs(params),\n resolvers: {\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmFile: {\n async src(file, _, context: FileManagerContext) {\n const settings = await context.fileManager.getSettings();\n return (settings?.srcPrefix || \"\") + file.key;\n }\n },\n FmQuery: {\n getFileModel(_, __, context) {\n const identity = context.security.getIdentity();\n if (!identity) {\n return new NotAuthorizedResponse();\n }\n\n return resolve(() => context.cms.getModel(\"fmFile\"));\n },\n getFile(_, args: any, context) {\n return resolve(() => context.fileManager.getFile(args.id));\n },\n async listFiles(_, args: FilesListOpts, context) {\n try {\n const [data, meta] = await context.fileManager.listFiles(args);\n\n return new ListResponse(data, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n async listTags(_, args: any, context) {\n try {\n const tags = await context.fileManager.listTags(args || {});\n\n return new Response(tags);\n } catch (error) {\n return new ErrorResponse(error);\n }\n }\n },\n FmMutation: {\n async createFile(_, args: any, context) {\n return resolve(() => {\n return context.fileManager.createFile(args.data, args.meta);\n });\n },\n async createFiles(_, args: any, context) {\n return resolve(() => {\n return context.fileManager.createFilesInBatch(args.data, args.meta);\n });\n },\n async updateFile(_, args: any, context) {\n return resolve(() => {\n return context.fileManager.updateFile(args.id, args.data);\n });\n },\n async deleteFile(_, args: any, context) {\n return resolve(async () => {\n // TODO: Ideally, this should work via a lifecycle hook; first we delete a record from DB, then from cloud storage.\n const file = await context.fileManager.getFile(args.id);\n return await context.fileManager.storage.delete({\n id: file.id,\n key: file.key\n });\n });\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.files\";\n\n return fileManagerGraphQL;\n};\n"],"mappings":"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"}
|
package/graphql/index.js
CHANGED
|
@@ -4,20 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createGraphQLSchemaPlugin = void 0;
|
|
7
|
-
var _baseSchema = require("./baseSchema");
|
|
8
7
|
var _api = require("@webiny/api");
|
|
8
|
+
var _apiHeadlessCms = require("@webiny/api-headless-cms");
|
|
9
9
|
var _createFieldTypePluginRecords = require("@webiny/api-headless-cms/graphql/schema/createFieldTypePluginRecords");
|
|
10
10
|
var _getSchemaFromFieldPlugins = require("@webiny/api-headless-cms/utils/getSchemaFromFieldPlugins");
|
|
11
|
+
var _baseSchema = require("./baseSchema");
|
|
11
12
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
12
13
|
var _filesSchema = require("./filesSchema");
|
|
13
|
-
var _isInstallationPending = require("../cmsFileStorage/isInstallationPending");
|
|
14
14
|
var _getFileByUrl = require("./getFileByUrl");
|
|
15
15
|
const createGraphQLSchemaPlugin = () => {
|
|
16
16
|
return [(0, _baseSchema.createBaseSchema)(),
|
|
17
17
|
// Files schema is generated dynamically, based on a CMS model, so we need to
|
|
18
18
|
// register it from a ContextPlugin, to perform additional bootstrap.
|
|
19
19
|
new _api.ContextPlugin(async context => {
|
|
20
|
-
if ((0,
|
|
20
|
+
if (!(await (0, _apiHeadlessCms.isHeadlessCmsReady)(context))) {
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
23
|
await context.security.withoutAuthorization(async () => {
|
package/graphql/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_api","require","_apiHeadlessCms","_createFieldTypePluginRecords","_getSchemaFromFieldPlugins","_baseSchema","_handlerGraphql","_filesSchema","_getFileByUrl","createGraphQLSchemaPlugin","createBaseSchema","ContextPlugin","context","isHeadlessCmsReady","security","withoutAuthorization","fileModel","cms","getModel","models","listModels","fieldPlugins","createFieldTypePluginRecords","plugins","createGraphQLSchemaPluginFromFieldPlugins","type","fieldTypePlugins","createPlugin","schema","fieldType","plugin","GraphQLSchemaPlugin","name","graphQlPlugin","createFilesSchema","model","register","getFileByUrl","exports"],"sources":["index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { isHeadlessCmsReady } from \"@webiny/api-headless-cms\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { createFieldTypePluginRecords } from \"@webiny/api-headless-cms/graphql/schema/createFieldTypePluginRecords\";\nimport { createGraphQLSchemaPluginFromFieldPlugins } from \"@webiny/api-headless-cms/utils/getSchemaFromFieldPlugins\";\nimport { createBaseSchema } from \"~/graphql/baseSchema\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { createFilesSchema } from \"~/graphql/filesSchema\";\nimport { getFileByUrl } from \"~/graphql/getFileByUrl\";\nimport { FileManagerContext } from \"~/types\";\n\nexport const createGraphQLSchemaPlugin = () => {\n return [\n createBaseSchema(),\n // Files schema is generated dynamically, based on a CMS model, so we need to\n // register it from a ContextPlugin, to perform additional bootstrap.\n new ContextPlugin<FileManagerContext>(async context => {\n if (!(await isHeadlessCmsReady(context))) {\n return;\n }\n\n await context.security.withoutAuthorization(async () => {\n const fileModel = (await context.cms.getModel(\"fmFile\")) as CmsModel;\n const models = await context.cms.listModels();\n const fieldPlugins = createFieldTypePluginRecords(context.plugins);\n /**\n * We need to register all plugins for all the CMS fields.\n */\n const plugins = createGraphQLSchemaPluginFromFieldPlugins({\n models,\n type: \"manage\",\n fieldTypePlugins: fieldPlugins,\n createPlugin: ({ schema, type, fieldType }) => {\n const plugin = new GraphQLSchemaPlugin(schema);\n plugin.name = `fm.graphql.schema.${type}.field.${fieldType}`;\n return plugin;\n }\n });\n\n const graphQlPlugin = createFilesSchema({\n model: fileModel,\n models,\n plugins: fieldPlugins\n });\n\n context.plugins.register([...plugins, graphQlPlugin, getFileByUrl()]);\n });\n })\n ];\n};\n"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAEA,IAAAE,6BAAA,GAAAF,OAAA;AACA,IAAAG,0BAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AACA,IAAAO,aAAA,GAAAP,OAAA;AAGO,MAAMQ,yBAAyB,GAAGA,CAAA,KAAM;EAC3C,OAAO,CACH,IAAAC,4BAAgB,EAAC,CAAC;EAClB;EACA;EACA,IAAIC,kBAAa,CAAqB,MAAMC,OAAO,IAAI;IACnD,IAAI,EAAE,MAAM,IAAAC,kCAAkB,EAACD,OAAO,CAAC,CAAC,EAAE;MACtC;IACJ;IAEA,MAAMA,OAAO,CAACE,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MACpD,MAAMC,SAAS,GAAI,MAAMJ,OAAO,CAACK,GAAG,CAACC,QAAQ,CAAC,QAAQ,CAAc;MACpE,MAAMC,MAAM,GAAG,MAAMP,OAAO,CAACK,GAAG,CAACG,UAAU,CAAC,CAAC;MAC7C,MAAMC,YAAY,GAAG,IAAAC,0DAA4B,EAACV,OAAO,CAACW,OAAO,CAAC;MAClE;AAChB;AACA;MACgB,MAAMA,OAAO,GAAG,IAAAC,oEAAyC,EAAC;QACtDL,MAAM;QACNM,IAAI,EAAE,QAAQ;QACdC,gBAAgB,EAAEL,YAAY;QAC9BM,YAAY,EAAEA,CAAC;UAAEC,MAAM;UAAEH,IAAI;UAAEI;QAAU,CAAC,KAAK;UAC3C,MAAMC,MAAM,GAAG,IAAIC,mCAAmB,CAACH,MAAM,CAAC;UAC9CE,MAAM,CAACE,IAAI,GAAI,qBAAoBP,IAAK,UAASI,SAAU,EAAC;UAC5D,OAAOC,MAAM;QACjB;MACJ,CAAC,CAAC;MAEF,MAAMG,aAAa,GAAG,IAAAC,8BAAiB,EAAC;QACpCC,KAAK,EAAEnB,SAAS;QAChBG,MAAM;QACNI,OAAO,EAAEF;MACb,CAAC,CAAC;MAEFT,OAAO,CAACW,OAAO,CAACa,QAAQ,CAAC,CAAC,GAAGb,OAAO,EAAEU,aAAa,EAAE,IAAAI,0BAAY,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC;EACN,CAAC,CAAC,CACL;AACL,CAAC;AAACC,OAAA,CAAA7B,yBAAA,GAAAA,yBAAA"}
|
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createFileModelModifier = exports.CmsModelModifierPlugin = void 0;
|
|
7
7
|
var _plugins = require("@webiny/plugins");
|
|
8
|
+
var _apiHeadlessCms = require("@webiny/api-headless-cms");
|
|
8
9
|
var _file = require("../cmsFileStorage/file.model");
|
|
9
|
-
var _createModelField = require("../cmsFileStorage/createModelField");
|
|
10
10
|
class CmsModelFieldsModifier {
|
|
11
11
|
constructor(fields) {
|
|
12
12
|
this.fields = fields;
|
|
@@ -37,7 +37,7 @@ class CmsModelModifierPlugin extends _plugins.Plugin {
|
|
|
37
37
|
}
|
|
38
38
|
let extensionsField = model.fields.find(field => field.fieldId === "extensions");
|
|
39
39
|
if (!extensionsField) {
|
|
40
|
-
extensionsField = (0,
|
|
40
|
+
extensionsField = (0, _apiHeadlessCms.createModelField)({
|
|
41
41
|
label: "Extensions",
|
|
42
42
|
type: "object",
|
|
43
43
|
settings: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_plugins","require","
|
|
1
|
+
{"version":3,"names":["_plugins","require","_apiHeadlessCms","_file","CmsModelFieldsModifier","constructor","fields","addField","field","bulkEdit","tags","rest","push","concat","storageId","type","id","CmsModelModifierPlugin","Plugin","modelId","cb","modifyModel","model","extensionsField","find","fieldId","createModelField","label","settings","layout","modifier","exports","createFileModelModifier","FILE_MODEL_ID"],"sources":["CmsModelModifier.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { CmsModelField as BaseModelField } from \"@webiny/api-headless-cms/types\";\nimport { CmsPrivateModelFull, createModelField } from \"@webiny/api-headless-cms\";\nimport { FILE_MODEL_ID } from \"~/cmsFileStorage/file.model\";\n\ntype CmsModelField = Omit<BaseModelField, \"storageId\"> & { bulkEdit?: boolean };\n\nclass CmsModelFieldsModifier {\n private fields: BaseModelField[];\n\n constructor(fields: BaseModelField[]) {\n this.fields = fields;\n }\n\n addField(field: CmsModelField) {\n const { bulkEdit, tags, ...rest } = field;\n\n this.fields.push({\n ...rest,\n tags: (tags ?? []).concat(bulkEdit ? [\"$bulk-edit\"] : []),\n storageId: `${field.type}@${field.id}`\n });\n }\n}\n\ninterface CmsModelModifierCallableParams {\n modifier: CmsModelFieldsModifier;\n}\n\ninterface CmsModelModifierCallable {\n (params: CmsModelModifierCallableParams): Promise<void> | void;\n}\n\nexport class CmsModelModifierPlugin extends Plugin {\n public static override type = \"fm.cms-model-modifier\";\n private readonly modelId: string;\n private readonly cb: CmsModelModifierCallable;\n\n constructor(modelId: string, cb: CmsModelModifierCallable) {\n super();\n this.modelId = modelId;\n this.cb = cb;\n }\n\n async modifyModel(model: CmsPrivateModelFull): Promise<void> {\n if (model.modelId !== this.modelId) {\n return;\n }\n\n let extensionsField = model.fields.find(field => field.fieldId === \"extensions\");\n if (!extensionsField) {\n extensionsField = createModelField({\n label: \"Extensions\",\n type: \"object\",\n settings: {\n layout: [],\n fields: []\n }\n });\n model.fields.push(extensionsField);\n }\n\n const modifier = new CmsModelFieldsModifier(extensionsField.settings!.fields!);\n await this.cb({ modifier });\n }\n}\n\nexport const createFileModelModifier = (cb: CmsModelModifierCallable) => {\n return new CmsModelModifierPlugin(FILE_MODEL_ID, cb);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAIA,MAAMG,sBAAsB,CAAC;EAGzBC,WAAWA,CAACC,MAAwB,EAAE;IAClC,IAAI,CAACA,MAAM,GAAGA,MAAM;EACxB;EAEAC,QAAQA,CAACC,KAAoB,EAAE;IAC3B,MAAM;MAAEC,QAAQ;MAAEC,IAAI;MAAE,GAAGC;IAAK,CAAC,GAAGH,KAAK;IAEzC,IAAI,CAACF,MAAM,CAACM,IAAI,CAAC;MACb,GAAGD,IAAI;MACPD,IAAI,EAAE,CAACA,IAAI,IAAI,EAAE,EAAEG,MAAM,CAACJ,QAAQ,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;MACzDK,SAAS,EAAG,GAAEN,KAAK,CAACO,IAAK,IAAGP,KAAK,CAACQ,EAAG;IACzC,CAAC,CAAC;EACN;AACJ;AAUO,MAAMC,sBAAsB,SAASC,eAAM,CAAC;EAC/C,OAAuBH,IAAI,GAAG,uBAAuB;EAIrDV,WAAWA,CAACc,OAAe,EAAEC,EAA4B,EAAE;IACvD,KAAK,CAAC,CAAC;IACP,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,EAAE,GAAGA,EAAE;EAChB;EAEA,MAAMC,WAAWA,CAACC,KAA0B,EAAiB;IACzD,IAAIA,KAAK,CAACH,OAAO,KAAK,IAAI,CAACA,OAAO,EAAE;MAChC;IACJ;IAEA,IAAII,eAAe,GAAGD,KAAK,CAAChB,MAAM,CAACkB,IAAI,CAAChB,KAAK,IAAIA,KAAK,CAACiB,OAAO,KAAK,YAAY,CAAC;IAChF,IAAI,CAACF,eAAe,EAAE;MAClBA,eAAe,GAAG,IAAAG,gCAAgB,EAAC;QAC/BC,KAAK,EAAE,YAAY;QACnBZ,IAAI,EAAE,QAAQ;QACda,QAAQ,EAAE;UACNC,MAAM,EAAE,EAAE;UACVvB,MAAM,EAAE;QACZ;MACJ,CAAC,CAAC;MACFgB,KAAK,CAAChB,MAAM,CAACM,IAAI,CAACW,eAAe,CAAC;IACtC;IAEA,MAAMO,QAAQ,GAAG,IAAI1B,sBAAsB,CAACmB,eAAe,CAACK,QAAQ,CAAEtB,MAAO,CAAC;IAC9E,MAAM,IAAI,CAACc,EAAE,CAAC;MAAEU;IAAS,CAAC,CAAC;EAC/B;AACJ;AAACC,OAAA,CAAAd,sBAAA,GAAAA,sBAAA;AAEM,MAAMe,uBAAuB,GAAIZ,EAA4B,IAAK;EACrE,OAAO,IAAIH,sBAAsB,CAACgB,mBAAa,EAAEb,EAAE,CAAC;AACxD,CAAC;AAACW,OAAA,CAAAC,uBAAA,GAAAA,uBAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-file-manager",
|
|
3
|
-
"version": "5.39.1",
|
|
3
|
+
"version": "5.39.2-beta.1",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fm:base"
|
|
@@ -20,20 +20,20 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@babel/runtime": "7.22.6",
|
|
22
22
|
"@commodo/fields": "1.1.2-beta.20",
|
|
23
|
-
"@webiny/api": "5.39.1",
|
|
24
|
-
"@webiny/api-headless-cms": "5.39.1",
|
|
25
|
-
"@webiny/api-security": "5.39.1",
|
|
26
|
-
"@webiny/api-tenancy": "5.39.1",
|
|
27
|
-
"@webiny/aws-sdk": "5.39.1",
|
|
28
|
-
"@webiny/error": "5.39.1",
|
|
29
|
-
"@webiny/handler": "5.39.1",
|
|
30
|
-
"@webiny/handler-aws": "5.39.1",
|
|
31
|
-
"@webiny/handler-graphql": "5.39.1",
|
|
32
|
-
"@webiny/plugins": "5.39.1",
|
|
33
|
-
"@webiny/project-utils": "5.39.1",
|
|
34
|
-
"@webiny/pubsub": "5.39.1",
|
|
35
|
-
"@webiny/tasks": "5.39.1",
|
|
36
|
-
"@webiny/validation": "5.39.1",
|
|
23
|
+
"@webiny/api": "5.39.2-beta.1",
|
|
24
|
+
"@webiny/api-headless-cms": "5.39.2-beta.1",
|
|
25
|
+
"@webiny/api-security": "5.39.2-beta.1",
|
|
26
|
+
"@webiny/api-tenancy": "5.39.2-beta.1",
|
|
27
|
+
"@webiny/aws-sdk": "5.39.2-beta.1",
|
|
28
|
+
"@webiny/error": "5.39.2-beta.1",
|
|
29
|
+
"@webiny/handler": "5.39.2-beta.1",
|
|
30
|
+
"@webiny/handler-aws": "5.39.2-beta.1",
|
|
31
|
+
"@webiny/handler-graphql": "5.39.2-beta.1",
|
|
32
|
+
"@webiny/plugins": "5.39.2-beta.1",
|
|
33
|
+
"@webiny/project-utils": "5.39.2-beta.1",
|
|
34
|
+
"@webiny/pubsub": "5.39.2-beta.1",
|
|
35
|
+
"@webiny/tasks": "5.39.2-beta.1",
|
|
36
|
+
"@webiny/validation": "5.39.2-beta.1",
|
|
37
37
|
"lodash": "4.17.21",
|
|
38
38
|
"object-hash": "2.2.0"
|
|
39
39
|
},
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
"@babel/preset-env": "7.22.7",
|
|
46
46
|
"@babel/preset-typescript": "7.22.5",
|
|
47
47
|
"@types/sharp": "0.32.0",
|
|
48
|
-
"@webiny/api-i18n": "5.39.1",
|
|
49
|
-
"@webiny/cli": "5.39.1",
|
|
50
|
-
"@webiny/utils": "5.39.1",
|
|
48
|
+
"@webiny/api-i18n": "5.39.2-beta.1",
|
|
49
|
+
"@webiny/cli": "5.39.2-beta.1",
|
|
50
|
+
"@webiny/utils": "5.39.2-beta.1",
|
|
51
51
|
"jest": "29.5.0",
|
|
52
52
|
"rimraf": "3.0.2",
|
|
53
53
|
"ttypescript": "1.5.15",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
]
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "8fd4124689259202d8d9a61e8e77b5b28381e100"
|
|
75
75
|
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createFileModel = void 0;
|
|
7
|
-
var _file = require("./file.model");
|
|
8
|
-
const createFileModel = params => {
|
|
9
|
-
return {
|
|
10
|
-
fileModelDefinition: (0, _file.createFileModelDefinition)({
|
|
11
|
-
withPrivateFiles: params.withPrivateFiles
|
|
12
|
-
})
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
exports.createFileModel = createFileModel;
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=createFileManagerPlugins.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_file","require","createFileModel","params","fileModelDefinition","createFileModelDefinition","withPrivateFiles","exports"],"sources":["createFileManagerPlugins.ts"],"sourcesContent":["import { createFileModelDefinition } from \"~/cmsFileStorage/file.model\";\n\ninterface CreateFileManagerPluginsParams {\n withPrivateFiles: boolean;\n}\n\nexport const createFileModel = (params: CreateFileManagerPluginsParams) => {\n return {\n fileModelDefinition: createFileModelDefinition({\n withPrivateFiles: params.withPrivateFiles\n })\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAMO,MAAMC,eAAe,GAAIC,MAAsC,IAAK;EACvE,OAAO;IACHC,mBAAmB,EAAE,IAAAC,+BAAyB,EAAC;MAC3CC,gBAAgB,EAAEH,MAAM,CAACG;IAC7B,CAAC;EACL,CAAC;AACL,CAAC;AAACC,OAAA,CAAAL,eAAA,GAAAA,eAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { CmsModelField } from "@webiny/api-headless-cms/types";
|
|
2
|
-
export interface CreateModelFieldParams extends Omit<CmsModelField, "id" | "storageId" | "fieldId"> {
|
|
3
|
-
fieldId?: string;
|
|
4
|
-
}
|
|
5
|
-
export declare const createModelField: (params: CreateModelFieldParams) => CmsModelField;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.createModelField = void 0;
|
|
8
|
-
var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
|
|
9
|
-
const createModelField = params => {
|
|
10
|
-
const {
|
|
11
|
-
label,
|
|
12
|
-
fieldId: initialFieldId,
|
|
13
|
-
type,
|
|
14
|
-
tags,
|
|
15
|
-
settings = {},
|
|
16
|
-
listValidation = [],
|
|
17
|
-
validation = [],
|
|
18
|
-
multipleValues = false,
|
|
19
|
-
predefinedValues = {
|
|
20
|
-
values: [],
|
|
21
|
-
enabled: false
|
|
22
|
-
}
|
|
23
|
-
} = params;
|
|
24
|
-
const fieldId = initialFieldId ? (0, _camelCase.default)(initialFieldId) : (0, _camelCase.default)(label);
|
|
25
|
-
return {
|
|
26
|
-
id: fieldId,
|
|
27
|
-
storageId: `${type}@${fieldId}`,
|
|
28
|
-
fieldId,
|
|
29
|
-
label,
|
|
30
|
-
type,
|
|
31
|
-
settings,
|
|
32
|
-
tags,
|
|
33
|
-
listValidation,
|
|
34
|
-
validation,
|
|
35
|
-
multipleValues,
|
|
36
|
-
predefinedValues
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
exports.createModelField = createModelField;
|
|
40
|
-
|
|
41
|
-
//# sourceMappingURL=createModelField.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_camelCase","_interopRequireDefault","require","createModelField","params","label","fieldId","initialFieldId","type","tags","settings","listValidation","validation","multipleValues","predefinedValues","values","enabled","camelCase","id","storageId","exports"],"sources":["createModelField.ts"],"sourcesContent":["import { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport camelCase from \"lodash/camelCase\";\n\nexport interface CreateModelFieldParams\n extends Omit<CmsModelField, \"id\" | \"storageId\" | \"fieldId\"> {\n fieldId?: string;\n}\n\nexport const createModelField = (params: CreateModelFieldParams): CmsModelField => {\n const {\n label,\n fieldId: initialFieldId,\n type,\n tags,\n settings = {},\n listValidation = [],\n validation = [],\n multipleValues = false,\n predefinedValues = {\n values: [],\n enabled: false\n }\n } = params;\n\n const fieldId = initialFieldId ? camelCase(initialFieldId) : camelCase(label);\n\n return {\n id: fieldId,\n storageId: `${type}@${fieldId}`,\n fieldId,\n label,\n type,\n settings,\n tags,\n listValidation,\n validation,\n multipleValues,\n predefinedValues\n };\n};\n"],"mappings":";;;;;;;AACA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAOO,MAAMC,gBAAgB,GAAIC,MAA8B,IAAoB;EAC/E,MAAM;IACFC,KAAK;IACLC,OAAO,EAAEC,cAAc;IACvBC,IAAI;IACJC,IAAI;IACJC,QAAQ,GAAG,CAAC,CAAC;IACbC,cAAc,GAAG,EAAE;IACnBC,UAAU,GAAG,EAAE;IACfC,cAAc,GAAG,KAAK;IACtBC,gBAAgB,GAAG;MACfC,MAAM,EAAE,EAAE;MACVC,OAAO,EAAE;IACb;EACJ,CAAC,GAAGZ,MAAM;EAEV,MAAME,OAAO,GAAGC,cAAc,GAAG,IAAAU,kBAAS,EAACV,cAAc,CAAC,GAAG,IAAAU,kBAAS,EAACZ,KAAK,CAAC;EAE7E,OAAO;IACHa,EAAE,EAAEZ,OAAO;IACXa,SAAS,EAAG,GAAEX,IAAK,IAAGF,OAAQ,EAAC;IAC/BA,OAAO;IACPD,KAAK;IACLG,IAAI;IACJE,QAAQ;IACRD,IAAI;IACJE,cAAc;IACdC,UAAU;IACVC,cAAc;IACdC;EACJ,CAAC;AACL,CAAC;AAACM,OAAA,CAAAjB,gBAAA,GAAAA,gBAAA"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.isInstallationPending = void 0;
|
|
7
|
-
const isInstallationPending = ({
|
|
8
|
-
tenancy,
|
|
9
|
-
i18n
|
|
10
|
-
}) => {
|
|
11
|
-
/**
|
|
12
|
-
* In case of a fresh webiny project "tenant" and "locale" won't be there until
|
|
13
|
-
* installation is completed. So, we need to skip "storage" creation till then.
|
|
14
|
-
*/
|
|
15
|
-
const tenant = tenancy.getCurrentTenant();
|
|
16
|
-
if (!tenant) {
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
return !i18n.getContentLocale();
|
|
20
|
-
};
|
|
21
|
-
exports.isInstallationPending = isInstallationPending;
|
|
22
|
-
|
|
23
|
-
//# sourceMappingURL=isInstallationPending.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["isInstallationPending","tenancy","i18n","tenant","getCurrentTenant","getContentLocale","exports"],"sources":["isInstallationPending.ts"],"sourcesContent":["import { FileManagerContext } from \"~/types\";\n\ntype CheckInstallationParams = Pick<FileManagerContext, \"tenancy\" | \"i18n\">;\nexport const isInstallationPending = ({ tenancy, i18n }: CheckInstallationParams): boolean => {\n /**\n * In case of a fresh webiny project \"tenant\" and \"locale\" won't be there until\n * installation is completed. So, we need to skip \"storage\" creation till then.\n */\n const tenant = tenancy.getCurrentTenant();\n if (!tenant) {\n return true;\n }\n\n return !i18n.getContentLocale();\n};\n"],"mappings":";;;;;;AAGO,MAAMA,qBAAqB,GAAGA,CAAC;EAAEC,OAAO;EAAEC;AAA8B,CAAC,KAAc;EAC1F;AACJ;AACA;AACA;EACI,MAAMC,MAAM,GAAGF,OAAO,CAACG,gBAAgB,CAAC,CAAC;EACzC,IAAI,CAACD,MAAM,EAAE;IACT,OAAO,IAAI;EACf;EAEA,OAAO,CAACD,IAAI,CAACG,gBAAgB,CAAC,CAAC;AACnC,CAAC;AAACC,OAAA,CAAAN,qBAAA,GAAAA,qBAAA"}
|