@antelopejs/dms 0.5.2 → 0.5.3
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/CHANGELOG.md +21 -0
- package/dist/attachments/access.d.ts +1 -0
- package/dist/attachments/access.js +7 -3
- package/dist/attachments/access.js.map +1 -1
- package/dist/attachments/constraints.d.ts +4 -0
- package/dist/attachments/constraints.js +28 -0
- package/dist/attachments/constraints.js.map +1 -0
- package/dist/attachments/save.js +23 -12
- package/dist/attachments/save.js.map +1 -1
- package/dist/attachments/uploads.js +2 -0
- package/dist/attachments/uploads.js.map +1 -1
- package/dist/implementations/dms-base/search-route.js +3 -4
- package/dist/implementations/dms-base/search-route.js.map +1 -1
- package/dist/test/attachment-host/native.d.ts +25 -0
- package/dist/test/attachment-host/native.js +54 -1
- package/dist/test/attachment-host/native.js.map +1 -1
- package/dist/test/helpers/attachments.d.ts +1 -1
- package/dist/test/helpers/attachments.js +2 -2
- package/dist/test/helpers/attachments.js.map +1 -1
- package/dist/test/integration/files/field-constraints.test.d.ts +1 -0
- package/dist/test/integration/files/field-constraints.test.js +100 -0
- package/dist/test/integration/files/field-constraints.test.js.map +1 -0
- package/dist/test/integration/files/page-mode-form-files.test.d.ts +1 -0
- package/dist/test/integration/files/page-mode-form-files.test.js +114 -0
- package/dist/test/integration/files/page-mode-form-files.test.js.map +1 -0
- package/dist/test/integration/files/resource-form-files.test.d.ts +1 -0
- package/dist/test/integration/files/resource-form-files.test.js +121 -0
- package/dist/test/integration/files/resource-form-files.test.js.map +1 -0
- package/dist/test/integration/files/shared-controller-files.test.d.ts +1 -0
- package/dist/test/integration/files/shared-controller-files.test.js +136 -0
- package/dist/test/integration/files/shared-controller-files.test.js.map +1 -0
- package/dist/test/unit/implementations/dms-base/table-view-shared-controller.test.d.ts +1 -0
- package/dist/test/unit/implementations/dms-base/table-view-shared-controller.test.js +113 -0
- package/dist/test/unit/implementations/dms-base/table-view-shared-controller.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms-base/resource-form.test.js +19 -0
- package/dist/test/unit/interfaces/dms-base/resource-form.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/table-view-tenant-gate.test.js +2 -2
- package/dist/test/unit/interfaces/dms-base/table-view-tenant-gate.test.js.map +1 -1
- package/frontend-vue/layers/dms-ui/app/components/form/components/File.vue +50 -21
- package/frontend-vue/layers/dms-ui/app/components/form/components/Image.vue +54 -21
- package/frontend-vue/layers/dms-ui/app/components/form/components/Relation.vue +4 -3
- package/frontend-vue/layers/dms-ui/app/composables/form/useUploadWithProgress.ts +44 -3
- package/frontend-vue/layers/dms-ui/app/utils/metadataRetry.ts +47 -0
- package/frontend-vue/layers/dms-ui/i18n/locales/ui-en-GB.json +3 -1
- package/frontend-vue/layers/dms-ui/i18n/locales/ui-fr-FR.json +3 -1
- package/frontend-vue/tests/file-unavailable.test.ts +107 -0
- package/frontend-vue/tests/image-hydration-ids.test.ts +87 -0
- package/frontend-vue/tests/image-reference-preservation.test.ts +12 -2
- package/frontend-vue/tests/metadata-retry.test.ts +187 -0
- package/frontend-vue/tests/upload-forbidden-headers.test.ts +52 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.5.3
|
|
4
|
+
|
|
5
|
+
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.5.2...v0.5.3)
|
|
6
|
+
|
|
7
|
+
### 🩹 Fixes
|
|
8
|
+
|
|
9
|
+
- **table-view:** Validate file provenance against every TableView sharing a data controller ([#112](https://github.com/AntelopeJS/dms/pull/112))
|
|
10
|
+
- **dms-ui:** Stable SSR ids, forbidden upload headers and missing-file state in upload inputs ([#113](https://github.com/AntelopeJS/dms/pull/113))
|
|
11
|
+
- **attachments:** Enforce field constraints at presign and stop retrying missing stored files ([#114](https://github.com/AntelopeJS/dms/pull/114))
|
|
12
|
+
- **resource-form:** Accept native files submitted from ResourceForm blocks ([#115](https://github.com/AntelopeJS/dms/pull/115))
|
|
13
|
+
- **playground:** Promote, validate and clean profile files through SaveComponentFiles ([#116](https://github.com/AntelopeJS/dms/pull/116))
|
|
14
|
+
- **table-view:** Accept native files from page-mode TableView forms ([#117](https://github.com/AntelopeJS/dms/pull/117))
|
|
15
|
+
|
|
16
|
+
### 🏡 Chore
|
|
17
|
+
|
|
18
|
+
- **release:** @antelopejs/interface-dms v0.3.4 ([9f115b0](https://github.com/AntelopeJS/dms/commit/9f115b0))
|
|
19
|
+
|
|
20
|
+
### ❤️ Contributors
|
|
21
|
+
|
|
22
|
+
- Antony Rizzitelli <rizzitelli.antony@pm.me>
|
|
23
|
+
|
|
3
24
|
## v0.5.2
|
|
4
25
|
|
|
5
26
|
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.5.1...v0.5.2)
|
|
@@ -6,4 +6,5 @@ export declare const RegisterNativeUploadField: {
|
|
|
6
6
|
register(registration: NativeUploadFieldRegistration): void;
|
|
7
7
|
unregister(registration: NativeUploadFieldRegistration): void;
|
|
8
8
|
};
|
|
9
|
+
export declare function findNativeUploadDeclaration(owner: UploadTokenClaims, write: boolean): NativeUploadFieldRegistration | undefined;
|
|
9
10
|
export declare function assertNativeFileAccess(context: RequestContext, owner: UploadTokenClaims, write: boolean): Promise<RequestPrincipal>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RegisterNativeUploadField = void 0;
|
|
4
|
+
exports.findNativeUploadDeclaration = findNativeUploadDeclaration;
|
|
4
5
|
exports.assertNativeFileAccess = assertNativeFileAccess;
|
|
5
6
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
6
7
|
const page_1 = require("../implementations/dms/page");
|
|
@@ -46,10 +47,13 @@ async function hasComponentAccess(principal, registration, memberModel, roleMode
|
|
|
46
47
|
required.push(registration.writePermission);
|
|
47
48
|
return (await Promise.all(required.map((id) => (0, permissions_1.HasPermission)(permissions, id)))).every(Boolean);
|
|
48
49
|
}
|
|
49
|
-
|
|
50
|
+
function findNativeUploadDeclaration(owner, write) {
|
|
50
51
|
if (!owner.pageId || !owner.componentId)
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
return undefined;
|
|
53
|
+
return [...registrations.values()].find((item) => declarationsMatch(item.declaration, owner, write))?.declaration;
|
|
54
|
+
}
|
|
55
|
+
async function assertNativeFileAccess(context, owner, write) {
|
|
56
|
+
const registration = findNativeUploadDeclaration(owner, write);
|
|
53
57
|
if (!registration)
|
|
54
58
|
(0, registry_1.denyAttachment)();
|
|
55
59
|
if (write && registration.writePermission === "__native_upload_disabled__")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/attachments/access.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/attachments/access.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FileMetadata, UploadConstraints } from "@antelopejs/interface-file-storage";
|
|
2
|
+
export type ConstrainedFile = Pick<FileMetadata, "size" | "mimetype">;
|
|
3
|
+
export declare function findConstraintViolation(constraints: UploadConstraints | undefined, file: ConstrainedFile): string | undefined;
|
|
4
|
+
export declare function assertUploadSatisfiesField(constraints: UploadConstraints | undefined, file: ConstrainedFile): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findConstraintViolation = findConstraintViolation;
|
|
4
|
+
exports.assertUploadSatisfiesField = assertUploadSatisfiesField;
|
|
5
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
6
|
+
const UPLOAD_REJECTED_STATUS = 400;
|
|
7
|
+
const WILDCARD_SUFFIX = "/*";
|
|
8
|
+
function matchesMimetype(mimetype, pattern) {
|
|
9
|
+
if (pattern === mimetype)
|
|
10
|
+
return true;
|
|
11
|
+
return (pattern.endsWith(WILDCARD_SUFFIX) &&
|
|
12
|
+
mimetype.startsWith(pattern.slice(0, -1)));
|
|
13
|
+
}
|
|
14
|
+
function findConstraintViolation(constraints, file) {
|
|
15
|
+
if (constraints?.maxSize !== undefined && file.size > constraints.maxSize)
|
|
16
|
+
return `the file exceeds this field's maximum size of ${constraints.maxSize} bytes`;
|
|
17
|
+
const allowed = constraints?.allowedMimetypes;
|
|
18
|
+
if (allowed?.length &&
|
|
19
|
+
!allowed.some((pattern) => matchesMimetype(file.mimetype, pattern)))
|
|
20
|
+
return `type "${file.mimetype}" is not allowed for this field (allowed: ${allowed.join(", ")})`;
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
function assertUploadSatisfiesField(constraints, file) {
|
|
24
|
+
const violation = findConstraintViolation(constraints, file);
|
|
25
|
+
if (violation)
|
|
26
|
+
throw new interface_api_1.HTTPResult(UPLOAD_REJECTED_STATUS, `Upload rejected: ${violation}.`);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=constraints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constraints.js","sourceRoot":"","sources":["../../src/attachments/constraints.ts"],"names":[],"mappings":";;AAoBA,0DAaC;AAGD,gEAUC;AA9CD,6DAAuD;AAMvD,MAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,MAAM,eAAe,GAAG,IAAI,CAAC;AAI7B,SAAS,eAAe,CAAC,QAAgB,EAAE,OAAe;IACxD,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;QACjC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC1C,CAAC;AACJ,CAAC;AAGD,SAAgB,uBAAuB,CACrC,WAA0C,EAC1C,IAAqB;IAErB,IAAI,WAAW,EAAE,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO;QACvE,OAAO,iDAAiD,WAAW,CAAC,OAAO,QAAQ,CAAC;IACtF,MAAM,OAAO,GAAG,WAAW,EAAE,gBAAgB,CAAC;IAC9C,IACE,OAAO,EAAE,MAAM;QACf,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEnE,OAAO,SAAS,IAAI,CAAC,QAAQ,6CAA6C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAClG,OAAO,SAAS,CAAC;AACnB,CAAC;AAGD,SAAgB,0BAA0B,CACxC,WAA0C,EAC1C,IAAqB;IAErB,MAAM,SAAS,GAAG,uBAAuB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC7D,IAAI,SAAS;QACX,MAAM,IAAI,0BAAU,CAClB,sBAAsB,EACtB,oBAAoB,SAAS,GAAG,CACjC,CAAC;AACN,CAAC"}
|
package/dist/attachments/save.js
CHANGED
|
@@ -1,20 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SaveComponentFiles = SaveComponentFiles;
|
|
4
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
4
5
|
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
5
6
|
const interface_file_storage_1 = require("@antelopejs/interface-file-storage");
|
|
6
7
|
const access_1 = require("./access");
|
|
8
|
+
const constraints_1 = require("./constraints");
|
|
7
9
|
const fields_1 = require("./fields");
|
|
8
10
|
const registry_1 = require("./registry");
|
|
11
|
+
const BAD_REQUEST = 400;
|
|
12
|
+
const FILE_NOT_FOUND_ERROR_NAME = "FileNotFoundError";
|
|
13
|
+
function isFileNotFoundError(error) {
|
|
14
|
+
return error instanceof Error && error.name === FILE_NOT_FOUND_ERROR_NAME;
|
|
15
|
+
}
|
|
16
|
+
async function storedReference(ref) {
|
|
17
|
+
try {
|
|
18
|
+
const key = (0, interface_file_storage_1.isStagedKey)(ref.key)
|
|
19
|
+
? (await (0, interface_file_storage_1.PromoteFile)(ref.key, ref.field.storage)).resourceKey
|
|
20
|
+
: ref.key;
|
|
21
|
+
return { key, metadata: await (0, interface_file_storage_1.GetFileMetadata)(key, ref.field.storage) };
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
if (isFileNotFoundError(error))
|
|
25
|
+
throw new interface_api_1.HTTPResult(BAD_REQUEST, "A submitted file was never stored. Upload it again.");
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
9
29
|
function assertConstraints(metadata, reference) {
|
|
10
|
-
|
|
11
|
-
if (constraints?.maxSize !== undefined && metadata.size > constraints.maxSize)
|
|
12
|
-
(0, registry_1.denyAttachment)();
|
|
13
|
-
const allowed = constraints?.allowedMimetypes;
|
|
14
|
-
if (allowed?.length &&
|
|
15
|
-
!allowed.some((pattern) => pattern === metadata.mimetype ||
|
|
16
|
-
(pattern.endsWith("/*") &&
|
|
17
|
-
metadata.mimetype.startsWith(pattern.slice(0, -1)))))
|
|
30
|
+
if ((0, constraints_1.findConstraintViolation)(reference.field.constraints, metadata))
|
|
18
31
|
(0, registry_1.denyAttachment)();
|
|
19
32
|
}
|
|
20
33
|
async function validateReference(request, ref) {
|
|
@@ -52,10 +65,8 @@ async function promoteReferences(request, refs) {
|
|
|
52
65
|
for (const field of request.fields) {
|
|
53
66
|
const mapping = new Map();
|
|
54
67
|
for (const ref of refs.filter((ref) => ref.field.id === field.id)) {
|
|
55
|
-
const key =
|
|
56
|
-
|
|
57
|
-
: ref.key;
|
|
58
|
-
assertConstraints(await (0, interface_file_storage_1.GetFileMetadata)(key, field.storage), ref);
|
|
68
|
+
const { key, metadata } = await storedReference(ref);
|
|
69
|
+
assertConstraints(metadata, ref);
|
|
59
70
|
mapping.set(ref.key, key);
|
|
60
71
|
}
|
|
61
72
|
if (field.key in document)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/attachments/save.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/attachments/save.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,9 +6,11 @@ const interface_file_storage_1 = require("@antelopejs/interface-file-storage");
|
|
|
6
6
|
const config_1 = require("../config");
|
|
7
7
|
const upload_constraints_1 = require("../utils/upload-constraints");
|
|
8
8
|
const access_1 = require("./access");
|
|
9
|
+
const constraints_1 = require("./constraints");
|
|
9
10
|
const registry_1 = require("./registry");
|
|
10
11
|
async function createAttachmentUpload(context, request, claims) {
|
|
11
12
|
const principal = await (0, access_1.assertNativeFileAccess)(context, claims, true);
|
|
13
|
+
(0, constraints_1.assertUploadSatisfiesField)((0, access_1.findNativeUploadDeclaration)(claims, true)?.constraints, request);
|
|
12
14
|
const upload = await (0, interface_file_storage_1.CreateUploadUrl)({ ...request, staging: true, visibility: claims.visibility || "private" }, (0, upload_constraints_1.buildUploadConstraints)((0, config_1.getUploadsConfig)()), claims.storage);
|
|
13
15
|
await (0, registry_1.attachmentTable)()
|
|
14
16
|
.insert({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploads.js","sourceRoot":"","sources":["../../src/attachments/uploads.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"uploads.js","sourceRoot":"","sources":["../../src/attachments/uploads.ts"],"names":[],"mappings":";;AAcA,wDAyBC;AAGD,0EAMC;AA/CD,+EAI4C;AAC5C,sCAA6C;AAC7C,oEAAqE;AAErE,qCAA+E;AAC/E,+CAA2D;AAC3D,yCAA2E;AAGpE,KAAK,UAAU,sBAAsB,CAC1C,OAAuB,EACvB,OAAsB,EACtB,MAAyB;IAEzB,MAAM,SAAS,GAAG,MAAM,IAAA,+BAAsB,EAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACtE,IAAA,wCAA0B,EACxB,IAAA,oCAA2B,EAAC,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,EACtD,OAAO,CACR,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,IAAA,wCAAe,EAClC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE,EACzE,IAAA,2CAAsB,EAAC,IAAA,yBAAgB,GAAE,CAAC,EAC1C,MAAM,CAAC,OAAO,CACf,CAAC;IACF,MAAM,IAAA,0BAAe,GAAE;SACpB,MAAM,CAAC;QACN,GAAG,EAAE,IAAA,uBAAY,EAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC;QACrD,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;KACnC,CAAC;SACD,GAAG,EAAE,CAAC;IACT,OAAO,MAAM,CAAC;AAChB,CAAC;AAGM,KAAK,UAAU,+BAA+B,CACnD,GAAW,EACX,OAAgB;IAEhB,IAAI,CAAC,CAAC,MAAM,IAAA,yBAAc,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,IAAA,wCAAe,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -69,16 +69,15 @@ async function computeEffectivePermissions(reqCtx, user, permissions) {
|
|
|
69
69
|
}
|
|
70
70
|
async function canViewArchived(thisObj, reqCtx, user, permissions) {
|
|
71
71
|
const tableViewMeta = (0, interface_core_1.GetMetadata)(thisObj.constructor, table_view_1.TableViewMeta);
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
if (!permissionId) {
|
|
72
|
+
const permissionIds = tableViewMeta.actionPermissionIds("viewArchived");
|
|
73
|
+
if (permissionIds.length === 0) {
|
|
75
74
|
return true;
|
|
76
75
|
}
|
|
77
76
|
const resolved = await computeEffectivePermissions(reqCtx, user, permissions);
|
|
78
77
|
if (!resolved) {
|
|
79
78
|
return false;
|
|
80
79
|
}
|
|
81
|
-
return (0, permissions_1.
|
|
80
|
+
return (0, permissions_1.HasAnyPermission)(resolved, permissionIds);
|
|
82
81
|
}
|
|
83
82
|
async function applyArchiveFilter(thisObj, reqCtx, user, permissions, filters) {
|
|
84
83
|
const tableViewMeta = (0, interface_core_1.GetMetadata)(thisObj.constructor, table_view_1.TableViewMeta);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-route.js","sourceRoot":"","sources":["../../../src/implementations/dms-base/search-route.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"search-route.js","sourceRoot":"","sources":["../../../src/implementations/dms-base/search-route.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,33 @@ declare const NativeFilePage_base: {
|
|
|
7
7
|
export declare class NativeFilePage extends NativeFilePage_base {
|
|
8
8
|
static content: import("@antelopejs/interface-dms").ComponentBuilder<import("@antelopejs/interface-dms/base").TableViewOptionsSerialized>;
|
|
9
9
|
}
|
|
10
|
+
declare const NativeFileSecondaryPage_base: {
|
|
11
|
+
new (...args: any[]): {};
|
|
12
|
+
extend: <T extends import("@antelopejs/interface-api").ControllerClass>(this: T, location: string) => T;
|
|
13
|
+
location: string;
|
|
14
|
+
};
|
|
15
|
+
export declare class NativeFileSecondaryPage extends NativeFileSecondaryPage_base {
|
|
16
|
+
static content: import("@antelopejs/interface-dms").ComponentBuilder<import("@antelopejs/interface-dms/base").TableViewOptionsSerialized>;
|
|
17
|
+
}
|
|
18
|
+
declare const NativeFileNewFormPage_base: {
|
|
19
|
+
new (...args: any[]): {};
|
|
20
|
+
extend: <T extends import("@antelopejs/interface-api").ControllerClass>(this: T, location: string) => T;
|
|
21
|
+
location: string;
|
|
22
|
+
};
|
|
23
|
+
export declare class NativeFileNewFormPage extends NativeFileNewFormPage_base {
|
|
24
|
+
static content: import("@antelopejs/interface-dms/base").FormBuilder;
|
|
25
|
+
}
|
|
26
|
+
declare const NativeFileEditFormPage_base: {
|
|
27
|
+
new (...args: any[]): {};
|
|
28
|
+
extend: <T extends import("@antelopejs/interface-api").ControllerClass>(this: T, location: string) => T;
|
|
29
|
+
location: string;
|
|
30
|
+
};
|
|
31
|
+
export declare class NativeFileEditFormPage extends NativeFileEditFormPage_base {
|
|
32
|
+
static content: import("@antelopejs/interface-dms/base").FormBuilder;
|
|
33
|
+
}
|
|
10
34
|
declare const NativeAttachmentFormController_base: import("@antelopejs/interface-api").ControllerClass<object>;
|
|
11
35
|
export declare class NativeAttachmentFormController extends NativeAttachmentFormController_base {
|
|
12
36
|
get(_user: User): Promise<import("@antelopejs/interface-dms").ComponentInfoSerialized<import("@antelopejs/interface-dms/base").TableViewOptionsSerialized>>;
|
|
37
|
+
relation(_user: User): Promise<import("@antelopejs/interface-dms").ComponentInfoSerialized>;
|
|
13
38
|
}
|
|
14
39
|
export {};
|
|
@@ -12,7 +12,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.NativeAttachmentFormController = exports.NativeFilePage = void 0;
|
|
15
|
+
exports.NativeAttachmentFormController = exports.NativeFileEditFormPage = exports.NativeFileNewFormPage = exports.NativeFileSecondaryPage = exports.NativeFilePage = void 0;
|
|
16
16
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
17
17
|
const interface_core_1 = require("@antelopejs/interface-core");
|
|
18
18
|
const interface_data_api_1 = require("@antelopejs/interface-data-api");
|
|
@@ -49,6 +49,10 @@ __decorate([
|
|
|
49
49
|
(0, interface_database_decorators_1.Field)("any"),
|
|
50
50
|
__metadata("design:type", Object)
|
|
51
51
|
], NativeDocument.prototype, "image", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, interface_database_decorators_1.Field)("any"),
|
|
54
|
+
__metadata("design:type", Array)
|
|
55
|
+
], NativeDocument.prototype, "gallery", void 0);
|
|
52
56
|
NativeDocument = __decorate([
|
|
53
57
|
(0, interface_database_decorators_1.RegisterTable)(TABLE, constants_1.CORE_SCHEMA_NAME)
|
|
54
58
|
], NativeDocument);
|
|
@@ -58,6 +62,7 @@ let NativeDocumentController = class NativeDocumentController extends (0, interf
|
|
|
58
62
|
new: table_view_1.TableViewRoutes.New,
|
|
59
63
|
edit: table_view_1.TableViewRoutes.Edit,
|
|
60
64
|
get: table_view_1.TableViewRoutes.Get,
|
|
65
|
+
select: table_view_1.TableViewRoutes.Select,
|
|
61
66
|
delete: table_view_1.TableViewRoutes.Delete,
|
|
62
67
|
}, (0, interface_api_1.Controller)(LOCATION)) {
|
|
63
68
|
};
|
|
@@ -116,6 +121,17 @@ __decorate([
|
|
|
116
121
|
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
117
122
|
__metadata("design:type", Object)
|
|
118
123
|
], NativeDocumentController.prototype, "image", void 0);
|
|
124
|
+
__decorate([
|
|
125
|
+
(0, table_view_1.Column)({
|
|
126
|
+
name: "Gallery",
|
|
127
|
+
type: new default_types_1.DefaultDataTypes.ImageType({
|
|
128
|
+
multiple: true,
|
|
129
|
+
constraints: { allowedMimetypes: ["image/png"], maxSize: 64 },
|
|
130
|
+
}),
|
|
131
|
+
}),
|
|
132
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
133
|
+
__metadata("design:type", Array)
|
|
134
|
+
], NativeDocumentController.prototype, "gallery", void 0);
|
|
119
135
|
NativeDocumentController = __decorate([
|
|
120
136
|
(0, interface_data_api_1.RegisterDataController)()
|
|
121
137
|
], NativeDocumentController);
|
|
@@ -142,10 +158,40 @@ exports.NativeFilePage = NativeFilePage;
|
|
|
142
158
|
exports.NativeFilePage = NativeFilePage = __decorate([
|
|
143
159
|
(0, page_1.RegisterPage)()
|
|
144
160
|
], NativeFilePage);
|
|
161
|
+
const secondaryTable = (0, table_view_1.TableView)(NativeDocumentController, {
|
|
162
|
+
rowIdKey: "id",
|
|
163
|
+
rowActions: { add: true, edit: true, details: true },
|
|
164
|
+
});
|
|
165
|
+
let NativeFileSecondaryPage = class NativeFileSecondaryPage extends (0, page_1.RootPageController)("nativefiles-secondary", { displayName: "Native files (secondary)" }) {
|
|
166
|
+
static content = secondaryTable;
|
|
167
|
+
};
|
|
168
|
+
exports.NativeFileSecondaryPage = NativeFileSecondaryPage;
|
|
169
|
+
exports.NativeFileSecondaryPage = NativeFileSecondaryPage = __decorate([
|
|
170
|
+
(0, page_1.RegisterPage)()
|
|
171
|
+
], NativeFileSecondaryPage);
|
|
172
|
+
let NativeFileNewFormPage = class NativeFileNewFormPage extends (0, page_1.RootPageController)("nativefiles-new-form", { displayName: "Native files (new form)" }) {
|
|
173
|
+
static content = (0, table_view_1.ResourceForm)(NativeDocumentController, { mode: "new" });
|
|
174
|
+
};
|
|
175
|
+
exports.NativeFileNewFormPage = NativeFileNewFormPage;
|
|
176
|
+
exports.NativeFileNewFormPage = NativeFileNewFormPage = __decorate([
|
|
177
|
+
(0, page_1.RegisterPage)()
|
|
178
|
+
], NativeFileNewFormPage);
|
|
179
|
+
let NativeFileEditFormPage = class NativeFileEditFormPage extends (0, page_1.RootPageController)("nativefiles-edit-form", { displayName: "Native files (edit form)" }) {
|
|
180
|
+
static content = (0, table_view_1.ResourceForm)(NativeDocumentController, { mode: "edit" });
|
|
181
|
+
};
|
|
182
|
+
exports.NativeFileEditFormPage = NativeFileEditFormPage;
|
|
183
|
+
exports.NativeFileEditFormPage = NativeFileEditFormPage = __decorate([
|
|
184
|
+
(0, page_1.RegisterPage)()
|
|
185
|
+
], NativeFileEditFormPage);
|
|
145
186
|
class NativeAttachmentFormController extends (0, interface_api_1.Controller)(`${LOCATION}/form`) {
|
|
146
187
|
async get(_user) {
|
|
147
188
|
return form.serialize();
|
|
148
189
|
}
|
|
190
|
+
async relation(_user) {
|
|
191
|
+
return new default_types_1.DefaultDataTypes.RelationType({
|
|
192
|
+
dataApiController: NativeDocumentController,
|
|
193
|
+
}).inputComponent();
|
|
194
|
+
}
|
|
149
195
|
}
|
|
150
196
|
exports.NativeAttachmentFormController = NativeAttachmentFormController;
|
|
151
197
|
__decorate([
|
|
@@ -155,4 +201,11 @@ __decorate([
|
|
|
155
201
|
__metadata("design:paramtypes", [Function]),
|
|
156
202
|
__metadata("design:returntype", Promise)
|
|
157
203
|
], NativeAttachmentFormController.prototype, "get", null);
|
|
204
|
+
__decorate([
|
|
205
|
+
(0, interface_api_1.Get)("/relation"),
|
|
206
|
+
__param(0, (0, guards_1.AuthTenantMember)()),
|
|
207
|
+
__metadata("design:type", Function),
|
|
208
|
+
__metadata("design:paramtypes", [Function]),
|
|
209
|
+
__metadata("design:returntype", Promise)
|
|
210
|
+
], NativeAttachmentFormController.prototype, "relation", null);
|
|
158
211
|
//# sourceMappingURL=native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../src/test/attachment-host/native.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAKmC;AACnC,+DAAyD;AACzD,uEAGwC;AACxC,sEAMiD;AACjD,6FAQmD;AACnD,mEAAuE;AACvE,6DAAoE;AACpE,yDAGwC;AACxC,yDAA8E;AAE9E,2FAA2F;AAC3F,
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../src/test/attachment-host/native.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAKmC;AACnC,+DAAyD;AACzD,uEAGwC;AACxC,sEAMiD;AACjD,6FAQmD;AACnD,mEAAuE;AACvE,6DAAoE;AACpE,yDAGwC;AACxC,yDAA8E;AAE9E,2FAA2F;AAC3F,0EAKmD;AAEnD,MAAM,QAAQ,GAAG,yBAAyB,CAAC;AAC3C,MAAM,KAAK,GAAG,6BAA6B,CAAC;AAG5C,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,qCAAK,CAAC,IAAI,CAAC,oDAAoB,CAAC;CAO5D,CAAA;AAN0B;IAAxB,IAAA,qCAAK,EAAC,QAAQ,CAAC;;gDAA0B;AACjB;IAAxB,IAAA,qCAAK,EAAC,QAAQ,CAAC;;kDAA4B;AACjB;IAA1B,IAAA,qCAAK,EAAC,CAAC,QAAQ,CAAC,CAAC;;6CAAyB;AAClB;IAAxB,IAAA,qCAAK,EAAC,QAAQ,CAAC;;kDAA4B;AACT;IAAlC,IAAA,yCAAS,GAAE;IAAE,IAAA,qCAAK,EAAC,KAAK,CAAC;;6CAA4C;AAChD;IAArB,IAAA,qCAAK,EAAC,KAAK,CAAC;;+CAAgD;AANzD,cAAc;IADnB,IAAA,6CAAa,EAAC,KAAK,EAAE,4BAAgB,CAAC;GACjC,cAAc,CAOnB;AAED,MAAM,mBAAoB,SAAQ,IAAA,8CAAc,EAAC,cAAc,EAAE,KAAK,CAAC;CAAG;AAG1E,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,IAAA,mCAAc,EACnD,cAAc,EACd;IACE,GAAG,EAAE,4BAAe,CAAC,GAAG;IACxB,IAAI,EAAE,4BAAe,CAAC,IAAI;IAC1B,GAAG,EAAE,4BAAe,CAAC,GAAG;IACxB,MAAM,EAAE,4BAAe,CAAC,MAAM;IAC9B,MAAM,EAAE,4BAAe,CAAC,MAAM;CAC/B,EACD,IAAA,0BAAU,EAAC,QAAQ,CAAC,CACrB;CAyCA,CAAA;AAxC6B;IAA3B,IAAA,yBAAgB,GAAE;;sDAAoB;AAG/B;IAFP,IAAA,yBAAc,GAAE;IAChB,IAAA,qCAAK,EAAC,mBAAmB,CAAC;8BACZ,mBAAmB;uDAAC;AAG3B;IAFP,IAAA,yBAAS,EAAC,oBAAoB,EAAE,QAAQ,CAAC;IACzC,IAAA,sBAAW,EAAC,oDAAoB,CAAC;;0DACT;AACY;IAApC,IAAA,iBAAM,EAAC,qBAAU,CAAC,QAAQ,CAAC;;qDAAqB;AACZ;IAApC,IAAA,iBAAM,EAAC,qBAAU,CAAC,QAAQ,CAAC;;oDAAoB;AACV;IAArC,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;0DAA0B;AAM/C;IALP,IAAA,mBAAM,EAAC;QACN,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,gCAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;KACtE,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;sDACR;AAMb;IALP,IAAA,mBAAM,EAAC;QACN,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,IAAI,gCAAgB,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KACxD,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;uDACL;AAMhB;IALP,IAAA,mBAAM,EAAC;QACN,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,IAAI,gCAAgB,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;KAC9D,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;4DACF;AAGnB;IAFP,IAAA,mBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,gCAAgB,CAAC,SAAS,EAAE,EAAE,CAAC;IACjE,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;uDACc;AASnC;IARP,IAAA,mBAAM,EAAC;QACN,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,IAAI,gCAAgB,CAAC,SAAS,CAAC;YACnC,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,EAAE,gBAAgB,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;SAC9D,CAAC;KACH,CAAC;IACD,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;yDACkB;AAlD3C,wBAAwB;IAD7B,IAAA,2CAAsB,GAAE;GACnB,wBAAwB,CAmD7B;AAED,IAAA,4BAAW,EAAC,wBAAwB,EAAE,sBAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;IACnE,YAAY,CAAC;AACf,IAAA,4BAAW,EAAC,wBAAwB,EAAE,sBAAW,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5E,MAAM,IAAI,GAAG,IAAA,sBAAS,EAAC,wBAAwB,EAAE;IAC/C,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IACpD,MAAM,EAAE;QACN,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YAClC,MAAM,SAAS,GAAG,MAAM,IAAA,mCAA4B,EAAC,OAAO,CAAC,CAAC;YAC9D,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG;gBACzC,MAAM,IAAI,0BAAU,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QACnD,CAAC;KACF;CACF,CAAC,CAAC;AAGI,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,IAAA,yBAAkB,EAAC,aAAa,EAAE;IACpE,WAAW,EAAE,cAAc;CAC5B,CAAC;IACA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;;AAHX,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAY,GAAE;GACF,cAAc,CAI1B;AAID,MAAM,cAAc,GAAG,IAAA,sBAAS,EAAC,wBAAwB,EAAE;IACzD,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;CACrD,CAAC,CAAC;AAGI,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,IAAA,yBAAkB,EAC7D,uBAAuB,EACvB,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAC5C;IACC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC;;AAJrB,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAY,GAAE;GACF,uBAAuB,CAKnC;AAIM,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,IAAA,yBAAkB,EAC3D,sBAAsB,EACtB,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAC3C;IACC,MAAM,CAAC,OAAO,GAAG,IAAA,yBAAY,EAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;AAJ9D,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAY,GAAE;GACF,qBAAqB,CAKjC;AAGM,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,IAAA,yBAAkB,EAC5D,uBAAuB,EACvB,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAC5C;IACC,MAAM,CAAC,OAAO,GAAG,IAAA,yBAAY,EAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;;AAJ/D,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAY,GAAE;GACF,sBAAsB,CAKlC;AAED,MAAa,8BAA+B,SAAQ,IAAA,0BAAU,EAC5D,GAAG,QAAQ,OAAO,CACnB;IAEO,AAAN,KAAK,CAAC,GAAG,CAAqB,KAAW;QACvC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAIK,AAAN,KAAK,CAAC,QAAQ,CAAqB,KAAW;QAC5C,OAAO,IAAI,gCAAgB,CAAC,YAAY,CAAC;YACvC,iBAAiB,EAAE,wBAAwB;SAC5C,CAAC,CAAC,cAAc,EAAE,CAAC;IACtB,CAAC;CACF;AAfD,wEAeC;AAXO;IADL,IAAA,mBAAG,EAAC,GAAG,CAAC;IACE,WAAA,IAAA,yBAAgB,GAAE,CAAA;;;;yDAE5B;AAIK;IADL,IAAA,mBAAG,EAAC,WAAW,CAAC;IACD,WAAA,IAAA,yBAAgB,GAAE,CAAA;;;;8DAIjC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type AxiosInstance } from "axios";
|
|
2
2
|
import { type UploadTokenClaims } from "../../utils/upload-token";
|
|
3
|
-
export declare function nativeUploadToken(client: AxiosInstance, field?: string, mode?: string): Promise<string>;
|
|
3
|
+
export declare function nativeUploadToken(client: AxiosInstance, field?: string, mode?: string, slug?: string): Promise<string>;
|
|
4
4
|
export declare function findUploadToken(value: unknown, field: string): string | undefined;
|
|
5
5
|
export interface UploadedAttachment {
|
|
6
6
|
key: string;
|
|
@@ -11,9 +11,9 @@ const chai_1 = require("chai");
|
|
|
11
11
|
const upload_token_1 = require("../../utils/upload-token");
|
|
12
12
|
const PRESIGN_URL = "/api/files/presign";
|
|
13
13
|
const HTTP_OK = 200;
|
|
14
|
-
async function nativeUploadToken(client, field = "file", mode = "new") {
|
|
14
|
+
async function nativeUploadToken(client, field = "file", mode = "new", slug = "/nativefiles") {
|
|
15
15
|
const response = await client.get("/dms/pagelayout", {
|
|
16
|
-
params: { slug
|
|
16
|
+
params: { slug },
|
|
17
17
|
});
|
|
18
18
|
(0, chai_1.expect)(response.status, JSON.stringify(response.data)).to.equal(HTTP_OK);
|
|
19
19
|
const form = response.data.components.content.options.formComponents[mode];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../../src/test/helpers/attachments.ts"],"names":[],"mappings":";;;;;AAWA,
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../../src/test/helpers/attachments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const attachments_1 = require("../../helpers/attachments");
|
|
5
|
+
const auth_1 = require("../../helpers/auth");
|
|
6
|
+
const db_1 = require("../../helpers/db");
|
|
7
|
+
const PRESIGN_URL = "/api/files/presign";
|
|
8
|
+
const LOCATION = "/api/native-attachments";
|
|
9
|
+
const PROFILE_SLUG = "/settings/user/profile";
|
|
10
|
+
const AVATAR_FIELD = "profile-avatar#avatar";
|
|
11
|
+
const FIELD_MAX_SIZE = 64;
|
|
12
|
+
const HTTP_OK = 200;
|
|
13
|
+
const HTTP_BAD_REQUEST = 400;
|
|
14
|
+
const HTTP_FORBIDDEN = 403;
|
|
15
|
+
async function ownerClient() {
|
|
16
|
+
const user = await (0, auth_1.registerUser)({ owner: true });
|
|
17
|
+
return (0, auth_1.authorizedClient)(user.accessToken);
|
|
18
|
+
}
|
|
19
|
+
async function presign(client, uploadToken, { mimetype, size }) {
|
|
20
|
+
return client.post(PRESIGN_URL, {
|
|
21
|
+
filename: "upload.bin",
|
|
22
|
+
size,
|
|
23
|
+
mimetype,
|
|
24
|
+
uploadToken,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
async function presignTableField(client, request) {
|
|
28
|
+
return presign(client, await (0, attachments_1.nativeUploadToken)(client, request.field), request);
|
|
29
|
+
}
|
|
30
|
+
async function avatarToken(client) {
|
|
31
|
+
const layout = await client.get("/dms/pagelayout", {
|
|
32
|
+
params: { slug: PROFILE_SLUG },
|
|
33
|
+
});
|
|
34
|
+
(0, chai_1.expect)(layout.status, JSON.stringify(layout.data)).to.equal(HTTP_OK);
|
|
35
|
+
const token = (0, attachments_1.findUploadToken)(layout.data, AVATAR_FIELD);
|
|
36
|
+
if (!token)
|
|
37
|
+
throw new Error("No upload token for the profile avatar");
|
|
38
|
+
return token;
|
|
39
|
+
}
|
|
40
|
+
const ACCEPTED = [
|
|
41
|
+
{ field: "file", mimetype: "text/plain", size: FIELD_MAX_SIZE },
|
|
42
|
+
{ field: "files", mimetype: "application/pdf", size: 1024 },
|
|
43
|
+
{ field: "image", mimetype: "image/jpeg", size: 1024 },
|
|
44
|
+
{ field: "gallery", mimetype: "image/png", size: FIELD_MAX_SIZE },
|
|
45
|
+
];
|
|
46
|
+
const REJECTED = [
|
|
47
|
+
{ field: "file", mimetype: "text/plain", size: FIELD_MAX_SIZE + 1 },
|
|
48
|
+
{ field: "image", mimetype: "text/plain", size: 16 },
|
|
49
|
+
{ field: "gallery", mimetype: "image/jpeg", size: 16 },
|
|
50
|
+
{ field: "gallery", mimetype: "image/png", size: FIELD_MAX_SIZE + 1 },
|
|
51
|
+
];
|
|
52
|
+
describe("[integration] native field constraints at presign", () => {
|
|
53
|
+
beforeEach(db_1.resetDatabase);
|
|
54
|
+
it("presigns uploads that satisfy the table-view column constraints", async () => {
|
|
55
|
+
const client = await ownerClient();
|
|
56
|
+
for (const request of ACCEPTED) {
|
|
57
|
+
const response = await presignTableField(client, request);
|
|
58
|
+
(0, chai_1.expect)(response.status, JSON.stringify(request)).to.equal(HTTP_OK);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
it("rejects uploads that break the table-view column constraints with 400", async () => {
|
|
62
|
+
const client = await ownerClient();
|
|
63
|
+
for (const request of REJECTED) {
|
|
64
|
+
const response = await presignTableField(client, request);
|
|
65
|
+
(0, chai_1.expect)(response.status, JSON.stringify(request)).to.equal(HTTP_BAD_REQUEST);
|
|
66
|
+
(0, chai_1.expect)(String(response.data)).to.match(/^Upload rejected: /);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
it("applies a standalone form field's own constraints", async () => {
|
|
70
|
+
const client = await ownerClient();
|
|
71
|
+
const token = await avatarToken(client);
|
|
72
|
+
const accepted = await presign(client, token, {
|
|
73
|
+
mimetype: "image/png",
|
|
74
|
+
size: 16,
|
|
75
|
+
});
|
|
76
|
+
(0, chai_1.expect)(accepted.status, JSON.stringify(accepted.data)).to.equal(HTTP_OK);
|
|
77
|
+
const rejected = await presign(client, token, {
|
|
78
|
+
mimetype: "text/plain",
|
|
79
|
+
size: 16,
|
|
80
|
+
});
|
|
81
|
+
(0, chai_1.expect)(rejected.status).to.equal(HTTP_BAD_REQUEST);
|
|
82
|
+
(0, chai_1.expect)(String(rejected.data)).to.contain("image/png");
|
|
83
|
+
});
|
|
84
|
+
it("still rejects at promotion a key staged through a laxer field", async () => {
|
|
85
|
+
const client = await ownerClient();
|
|
86
|
+
const upload = await (0, attachments_1.uploadAttachment)({
|
|
87
|
+
client,
|
|
88
|
+
content: Buffer.from("not an image"),
|
|
89
|
+
mimetype: "text/plain",
|
|
90
|
+
claims: {},
|
|
91
|
+
filename: "note.txt",
|
|
92
|
+
token: await (0, attachments_1.nativeUploadToken)(client, "files"),
|
|
93
|
+
});
|
|
94
|
+
const saved = await client.post(`${LOCATION}/new`, {
|
|
95
|
+
gallery: [{ key: upload.key }],
|
|
96
|
+
});
|
|
97
|
+
(0, chai_1.expect)(saved.status, JSON.stringify(saved.data)).to.equal(HTTP_FORBIDDEN);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=field-constraints.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-constraints.test.js","sourceRoot":"","sources":["../../../../src/test/integration/files/field-constraints.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|