@jrmc/adonis-attachment 5.0.0-beta.4 → 5.0.0-beta.7
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/build/src/adapters/poppler.js +0 -1
- package/build/src/attachment_manager.d.ts +6 -2
- package/build/src/attachment_manager.d.ts.map +1 -1
- package/build/src/attachment_manager.js +11 -50
- package/build/src/attachments/attachment.d.ts +9 -4
- package/build/src/attachments/attachment.d.ts.map +1 -1
- package/build/src/attachments/attachment.js +53 -9
- package/build/src/attachments/attachment_base.d.ts +11 -2
- package/build/src/attachments/attachment_base.d.ts.map +1 -1
- package/build/src/attachments/attachment_base.js +60 -3
- package/build/src/converters/image_converter.d.ts.map +1 -1
- package/build/src/converters/image_converter.js +7 -2
- package/build/src/services/attachment/attachment_detachment_service.d.ts.map +1 -1
- package/build/src/services/attachment/attachment_detachment_service.js +8 -6
- package/build/src/services/attachment/attachment_persister_service.d.ts.map +1 -1
- package/build/src/services/attachment/attachment_persister_service.js +3 -1
- package/build/src/services/attachment/attachment_recorder_service.d.ts +1 -1
- package/build/src/services/attachment/attachment_recorder_service.d.ts.map +1 -1
- package/build/src/services/attachment/attachment_recorder_service.js +5 -3
- package/build/src/services/attachment/attachment_transaction_service.d.ts.map +1 -1
- package/build/src/services/attachment/attachment_transaction_service.js +4 -1
- package/build/src/types/attachment.d.ts +12 -3
- package/build/src/types/attachment.d.ts.map +1 -1
- package/build/src/types/config.d.ts +2 -1
- package/build/src/types/config.d.ts.map +1 -1
- package/build/src/types/converter.d.ts +1 -0
- package/build/src/types/converter.d.ts.map +1 -1
- package/build/src/types/service.d.ts +1 -1
- package/build/src/types/service.d.ts.map +1 -1
- package/build/stubs/config.stub +7 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -85,7 +85,6 @@ export default class Poppler {
|
|
|
85
85
|
if (metadata['creationdate']) {
|
|
86
86
|
const dateStr = metadata['creationdate'];
|
|
87
87
|
const date = DateTime.fromFormat(dateStr, 'EEE MMM dd HH:mm:ss yyyy z', { zone: 'UTC' });
|
|
88
|
-
console.log('Parsed date:', date.toISO());
|
|
89
88
|
if (date.isValid) {
|
|
90
89
|
creationDate = date.toFormat('yyyy-MM-dd\'T\'HH:mm:ss');
|
|
91
90
|
}
|
|
@@ -24,6 +24,10 @@ export declare class AttachmentManager<KnownConverters extends Record<string, Co
|
|
|
24
24
|
getVariant(variantName: string): import("./types/attachment.js").Variant | null;
|
|
25
25
|
getUrl(variantName?: string): Promise<string>;
|
|
26
26
|
getSignedUrl(variantNameOrOptions?: string | SignedURLOptions, signedUrlOptions?: SignedURLOptions): Promise<string>;
|
|
27
|
+
preComputeUrl(): Promise<void>;
|
|
28
|
+
moveFileForDelete(): Promise<void>;
|
|
29
|
+
rollbackMoveFileForDelete(): Promise<void>;
|
|
30
|
+
remove(): Promise<void>;
|
|
27
31
|
toObject(): AttachmentAttributes;
|
|
28
32
|
})[]>;
|
|
29
33
|
createFromPath(input: string, name?: string): Promise<AttachmentType>;
|
|
@@ -31,12 +35,12 @@ export declare class AttachmentManager<KnownConverters extends Record<string, Co
|
|
|
31
35
|
createFromBase64(input: string, name?: string): Promise<AttachmentType>;
|
|
32
36
|
createFromUrl(input: URL, name?: string): Promise<AttachmentType>;
|
|
33
37
|
createFromStream(stream: NodeJS.ReadableStream, name?: string): Promise<AttachmentType>;
|
|
34
|
-
getConverter(key: string): Promise<void | Converter>;
|
|
35
38
|
computeUrl(attachment: AttachmentType | AttachmentBase, signedUrlOptions?: SignedURLOptions): Promise<void>;
|
|
36
39
|
preComputeUrl(attachment: AttachmentType): Promise<void>;
|
|
37
40
|
write(attachment: AttachmentBase): Promise<void>;
|
|
38
41
|
remove(attachment: AttachmentBase): Promise<void>;
|
|
39
|
-
getConfig(): ResolvedAttachmentConfig<KnownConverters>;
|
|
40
42
|
get lock(): LockService;
|
|
43
|
+
getConfig(): ResolvedAttachmentConfig<KnownConverters>;
|
|
44
|
+
getConverter(key: string): Promise<void | Converter>;
|
|
41
45
|
}
|
|
42
46
|
//# sourceMappingURL=attachment_manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment_manager.d.ts","sourceRoot":"","sources":["../../src/attachment_manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,UAAU,IAAI,cAAc,EAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,OAAO,SAAS,MAAM,2BAA2B,CAAA;AAQjD,qBAAa,iBAAiB,CAAC,eAAe,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;;IAC9E,KAAK,aAAA;gBAKO,MAAM,EAAE,wBAAwB,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW;IAUrG,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAiBvC,cAAc,CAAC,KAAK,EAAE,aAAa;IAgBnC,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE
|
|
1
|
+
{"version":3,"file":"attachment_manager.d.ts","sourceRoot":"","sources":["../../src/attachment_manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,UAAU,IAAI,cAAc,EAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,OAAO,SAAS,MAAM,2BAA2B,CAAA;AAQjD,qBAAa,iBAAiB,CAAC,eAAe,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;;IAC9E,KAAK,aAAA;gBAKO,MAAM,EAAE,wBAAwB,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW;IAUrG,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAiBvC,cAAc,CAAC,KAAK,EAAE,aAAa;IAgBnC,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE;;;;;;;;;;;;;IAIvC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAiB3C,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAgB7C,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAW7C,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM;IAMvC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,MAAM;IAM7D,UAAU,CACd,UAAU,EAAE,cAAc,GAAG,cAAc,EAC3C,gBAAgB,CAAC,EAAE,gBAAgB;IAK/B,aAAa,CAAC,UAAU,EAAE,cAAc;IAIxC,KAAK,CAAC,UAAU,EAAE,cAAc;IAUhC,MAAM,CAAC,UAAU,EAAE,cAAc;IAMvC,IAAI,IAAI,gBAEP;IAED,SAAS;IAIH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;CAuB3D"}
|
|
@@ -96,74 +96,35 @@ export class AttachmentManager {
|
|
|
96
96
|
const tmpPath = await streamToTempFile(stream);
|
|
97
97
|
return this.createFromPath(tmpPath, name || path.basename(tmpPath));
|
|
98
98
|
}
|
|
99
|
-
async getConverter(key) {
|
|
100
|
-
if (this.#config.converters) {
|
|
101
|
-
return this.#config.converters[key];
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
99
|
async computeUrl(attachment, signedUrlOptions) {
|
|
105
|
-
|
|
106
|
-
const fileVisibility = await disk.getVisibility(attachment.path);
|
|
107
|
-
if (fileVisibility === 'private') {
|
|
108
|
-
attachment.url = await attachment.getSignedUrl(signedUrlOptions);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
attachment.url = await attachment.getUrl();
|
|
112
|
-
}
|
|
100
|
+
await attachment.computeUrl(signedUrlOptions);
|
|
113
101
|
}
|
|
114
102
|
async preComputeUrl(attachment) {
|
|
115
|
-
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
await this.computeUrl(attachment);
|
|
119
|
-
if (attachment instanceof Attachment && attachment.variants) {
|
|
120
|
-
for (const key in attachment.variants) {
|
|
121
|
-
if (Object.prototype.hasOwnProperty.call(attachment.variants, key)) {
|
|
122
|
-
await this.computeUrl(attachment.variants[key]);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
103
|
+
await attachment.preComputeUrl();
|
|
126
104
|
}
|
|
127
105
|
async write(attachment) {
|
|
128
|
-
const destinationPath = attachment.path;
|
|
129
106
|
if (attachment.options?.meta) {
|
|
130
107
|
attachment.meta = await ExifAdapter.exif(attachment.input, this.#config);
|
|
131
108
|
}
|
|
132
109
|
else {
|
|
133
110
|
attachment.meta = undefined;
|
|
134
111
|
}
|
|
135
|
-
|
|
136
|
-
await attachment.getDisk().put(destinationPath, attachment.input);
|
|
137
|
-
}
|
|
138
|
-
else if (attachment.input) {
|
|
139
|
-
await attachment.getDisk().copyFromFs(attachment.input, destinationPath);
|
|
140
|
-
}
|
|
112
|
+
await attachment.put();
|
|
141
113
|
}
|
|
142
114
|
async remove(attachment) {
|
|
143
|
-
|
|
144
|
-
await attachment.getDisk().delete(attachment.path);
|
|
145
|
-
if (attachment instanceof Attachment) {
|
|
146
|
-
if (attachment.variants) {
|
|
147
|
-
const variantPath = attachment.variants[0].folder;
|
|
148
|
-
await attachment.getDisk().deleteAll(variantPath); // not compatible Minio, necessary for fs as not to leave an empty directory
|
|
149
|
-
for (const key in attachment.variants) {
|
|
150
|
-
if (Object.prototype.hasOwnProperty.call(attachment.variants, key)) {
|
|
151
|
-
await attachment.getDisk().delete(attachment.variants[key].path);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
if (attachment.originalPath) {
|
|
158
|
-
await attachment.getDisk().delete(attachment.originalPath);
|
|
159
|
-
}
|
|
115
|
+
await attachment.remove();
|
|
160
116
|
}
|
|
161
117
|
// getters
|
|
118
|
+
get lock() {
|
|
119
|
+
return this.#lock;
|
|
120
|
+
}
|
|
162
121
|
getConfig() {
|
|
163
122
|
return this.#config;
|
|
164
123
|
}
|
|
165
|
-
|
|
166
|
-
|
|
124
|
+
async getConverter(key) {
|
|
125
|
+
if (this.#config.converters) {
|
|
126
|
+
return this.#config.converters[key];
|
|
127
|
+
}
|
|
167
128
|
}
|
|
168
129
|
// private methods
|
|
169
130
|
#configureAttachment(attachment) {
|
|
@@ -9,14 +9,11 @@ import type { AttachmentAttributes, Attachment as AttachmentInterface, LucidOpti
|
|
|
9
9
|
import type { Input } from '../types/input.js';
|
|
10
10
|
import { AttachmentBase } from './attachment_base.js';
|
|
11
11
|
import { Variant } from './variant_attachment.js';
|
|
12
|
+
import { LucidRow } from '@adonisjs/lucid/types/model';
|
|
12
13
|
export declare class Attachment extends AttachmentBase implements AttachmentInterface {
|
|
13
14
|
originalName: string;
|
|
14
15
|
variants?: Variant[];
|
|
15
16
|
constructor(drive: DriveService, attributes: AttachmentAttributes, input?: Input);
|
|
16
|
-
/**
|
|
17
|
-
* Getters
|
|
18
|
-
*/
|
|
19
|
-
get name(): string;
|
|
20
17
|
/**
|
|
21
18
|
* Methods
|
|
22
19
|
*/
|
|
@@ -25,6 +22,14 @@ export declare class Attachment extends AttachmentBase implements AttachmentInte
|
|
|
25
22
|
getUrl(variantName?: string): Promise<string>;
|
|
26
23
|
getSignedUrl(variantNameOrOptions?: string | SignedURLOptions, signedUrlOptions?: SignedURLOptions): Promise<string>;
|
|
27
24
|
setOptions(options: LucidOptions): this;
|
|
25
|
+
/**
|
|
26
|
+
* Actions
|
|
27
|
+
*/
|
|
28
|
+
preComputeUrl(): Promise<void>;
|
|
29
|
+
makeName(record?: LucidRow, attributeName?: string): Promise<this>;
|
|
30
|
+
moveFileForDelete(): Promise<void>;
|
|
31
|
+
rollbackMoveFileForDelete(): Promise<void>;
|
|
32
|
+
remove(): Promise<void>;
|
|
28
33
|
/**
|
|
29
34
|
*
|
|
30
35
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../../src/attachments/attachment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,IAAI,mBAAmB,EACjC,YAAY,EACb,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../../src/attachments/attachment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,IAAI,mBAAmB,EACjC,YAAY,EACb,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAEtD,qBAAa,UAAW,SAAQ,cAAe,YAAW,mBAAmB;IAC3E,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;gBAER,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,CAAC,EAAE,KAAK;IAehF;;OAEG;IAEG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBhE,UAAU,CAAC,WAAW,EAAE,MAAM;IAIxB,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM;IAe3B,YAAY,CAChB,oBAAoB,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAChD,gBAAgB,CAAC,EAAE,gBAAgB;IAyBrC,UAAU,CAAC,OAAO,EAAE,YAAY;IAkBhC;;OAEG;IAEG,aAAa;IAiBb,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,MAAM;IAIlD,iBAAiB;IAWjB,yBAAyB;IAWzB,MAAM;IAkBZ;;OAEG;IAEH,QAAQ,IAAI,oBAAoB;IAUhC,MAAM,IAAI,MAAM;CAsCjB"}
|
|
@@ -22,15 +22,6 @@ export class Attachment extends AttachmentBase {
|
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Getters
|
|
27
|
-
*/
|
|
28
|
-
get name() {
|
|
29
|
-
if (this.options && this.options.rename === false) {
|
|
30
|
-
return this.originalName;
|
|
31
|
-
}
|
|
32
|
-
return super.name;
|
|
33
|
-
}
|
|
34
25
|
/**
|
|
35
26
|
* Methods
|
|
36
27
|
*/
|
|
@@ -107,6 +98,59 @@ export class Attachment extends AttachmentBase {
|
|
|
107
98
|
}
|
|
108
99
|
return this;
|
|
109
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Actions
|
|
103
|
+
*/
|
|
104
|
+
async preComputeUrl() {
|
|
105
|
+
if (this.options?.preComputeUrl === false) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
await this.computeUrl();
|
|
109
|
+
if (this.variants) {
|
|
110
|
+
for (const key in this.variants) {
|
|
111
|
+
if (Object.prototype.hasOwnProperty.call(this.variants, key)) {
|
|
112
|
+
await this.computeUrl(this.variants[key]);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async makeName(record, attributeName) {
|
|
118
|
+
return super.makeName(record, attributeName, this.originalName);
|
|
119
|
+
}
|
|
120
|
+
async moveFileForDelete() {
|
|
121
|
+
if (this.options && this.options.rename !== true) {
|
|
122
|
+
const originalPath = this.path;
|
|
123
|
+
this.name = `${this.name}.trash`;
|
|
124
|
+
const trashPath = this.path;
|
|
125
|
+
this.originalPath = trashPath;
|
|
126
|
+
await this.getDisk().move(originalPath, trashPath);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async rollbackMoveFileForDelete() {
|
|
130
|
+
if (this.options && this.options.rename !== true) {
|
|
131
|
+
const trashPath = this.path;
|
|
132
|
+
this.name = this.name.replace('.trash', '');
|
|
133
|
+
const originalPath = this.path;
|
|
134
|
+
this.originalPath = originalPath;
|
|
135
|
+
await this.getDisk().move(trashPath, originalPath);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
async remove() {
|
|
139
|
+
await super.remove();
|
|
140
|
+
if (this.variants) {
|
|
141
|
+
const variantPath = this.variants[0].folder;
|
|
142
|
+
try {
|
|
143
|
+
await this.getDisk().deleteAll(variantPath); // not compatible Minio, necessary for fs as not to leave an empty directory
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
for (const key in this.variants) {
|
|
147
|
+
if (Object.prototype.hasOwnProperty.call(this.variants, key)) {
|
|
148
|
+
this.variants[key].remove();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
110
154
|
/**
|
|
111
155
|
*
|
|
112
156
|
*/
|
|
@@ -21,9 +21,10 @@ export declare class AttachmentBase implements AttachmentBaseInterface {
|
|
|
21
21
|
options: LucidOptions;
|
|
22
22
|
constructor(drive: DriveService, attributes: AttachmentBaseAttributes, input?: Input);
|
|
23
23
|
/**
|
|
24
|
-
* Getters
|
|
24
|
+
* Getters / Setters
|
|
25
25
|
*/
|
|
26
26
|
get name(): string;
|
|
27
|
+
set name(name: string);
|
|
27
28
|
get folder(): string | undefined;
|
|
28
29
|
get path(): string;
|
|
29
30
|
/**
|
|
@@ -38,7 +39,15 @@ export declare class AttachmentBase implements AttachmentBaseInterface {
|
|
|
38
39
|
getKeyId(): string | undefined;
|
|
39
40
|
setKeyId(keyId: string): this;
|
|
40
41
|
setOptions(options: LucidOptions): this;
|
|
41
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Actions
|
|
44
|
+
*/
|
|
45
|
+
computeUrl(signedUrlOptions?: SignedURLOptions): Promise<void>;
|
|
46
|
+
preComputeUrl(): Promise<void>;
|
|
47
|
+
makeName(record?: LucidRow, attributeName?: string, originalName?: string): Promise<this>;
|
|
48
|
+
makeFolder(record?: LucidRow): Promise<this>;
|
|
49
|
+
put(): Promise<void>;
|
|
50
|
+
remove(): Promise<void>;
|
|
42
51
|
/**
|
|
43
52
|
*
|
|
44
53
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment_base.d.ts","sourceRoot":"","sources":["../../../src/attachments/attachment_base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,KAAK,EACV,YAAY,EACZ,wBAAwB,EACxB,cAAc,IAAI,uBAAuB,EAC1C,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAOpD,qBAAa,cAAe,YAAW,uBAAuB;;IAC5D,KAAK,EAAE,YAAY,CAAA;IAEnB,KAAK,CAAC,EAAE,KAAK,CAAA;IAMb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ,OAAO,EAAE,YAAY,CAAA;gBAET,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,wBAAwB,EAAE,KAAK,CAAC,EAAE,KAAK;IAsBpF;;OAEG;IAEH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAW/B;IAED,IAAI,IAAI,IAAI,MAAM,CAMjB;IAED;;OAEG;IAEH,OAAO;IAIP,QAAQ;IAIF,SAAS;IAKf,SAAS;IAIT,MAAM;IAIN,YAAY,CAAC,gBAAgB,CAAC,EAAE,gBAAgB;IAIhD,QAAQ;IAIR,QAAQ,CAAC,KAAK,EAAE,MAAM;IAKtB,UAAU,CAAC,OAAO,EAAE,YAAY;IAQhC,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ;IAwB5B;;OAEG;IAEH,QAAQ,IAAI,wBAAwB;IAYpC,MAAM,IAAI,MAAM;CAUjB"}
|
|
1
|
+
{"version":3,"file":"attachment_base.d.ts","sourceRoot":"","sources":["../../../src/attachments/attachment_base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,KAAK,EACV,YAAY,EACZ,wBAAwB,EACxB,cAAc,IAAI,uBAAuB,EAC1C,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAOpD,qBAAa,cAAe,YAAW,uBAAuB;;IAC5D,KAAK,EAAE,YAAY,CAAA;IAEnB,KAAK,CAAC,EAAE,KAAK,CAAA;IAMb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ,OAAO,EAAE,YAAY,CAAA;gBAET,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,wBAAwB,EAAE,KAAK,CAAC,EAAE,KAAK;IAsBpF;;OAEG;IAEH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAEpB;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAW/B;IAED,IAAI,IAAI,IAAI,MAAM,CAMjB;IAED;;OAEG;IAEH,OAAO;IAIP,QAAQ;IAIF,SAAS;IAKf,SAAS;IAIT,MAAM;IAIN,YAAY,CAAC,gBAAgB,CAAC,EAAE,gBAAgB;IAIhD,QAAQ;IAIR,QAAQ,CAAC,KAAK,EAAE,MAAM;IAKtB,UAAU,CAAC,OAAO,EAAE,YAAY;IAQhC;;OAEG;IAEG,UAAU,CAAC,gBAAgB,CAAC,EAAE,gBAAgB;IAW9C,aAAa;IAQb,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAwBzE,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ;IAwB5B,GAAG;IAQH,MAAM;IASZ;;OAEG;IAEH,QAAQ,IAAI,wBAAwB;IAYpC,MAAM,IAAI,MAAM;CAUjB"}
|
|
@@ -41,11 +41,14 @@ export class AttachmentBase {
|
|
|
41
41
|
this.drive = drive;
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
|
-
* Getters
|
|
44
|
+
* Getters / Setters
|
|
45
45
|
*/
|
|
46
46
|
get name() {
|
|
47
47
|
return this.#name;
|
|
48
48
|
}
|
|
49
|
+
set name(name) {
|
|
50
|
+
this.#name = name;
|
|
51
|
+
}
|
|
49
52
|
get folder() {
|
|
50
53
|
if (this.#folder) {
|
|
51
54
|
return this.#folder;
|
|
@@ -99,9 +102,49 @@ export class AttachmentBase {
|
|
|
99
102
|
};
|
|
100
103
|
return this;
|
|
101
104
|
}
|
|
102
|
-
|
|
105
|
+
/**
|
|
106
|
+
* Actions
|
|
107
|
+
*/
|
|
108
|
+
async computeUrl(signedUrlOptions) {
|
|
109
|
+
const disk = this.getDisk();
|
|
110
|
+
const fileVisibility = await disk.getVisibility(this.path);
|
|
111
|
+
if (fileVisibility === 'private') {
|
|
112
|
+
this.url = await this.getSignedUrl(signedUrlOptions);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
this.url = await this.getUrl();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async preComputeUrl() {
|
|
119
|
+
if (this.options?.preComputeUrl === false) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
await this.computeUrl();
|
|
123
|
+
}
|
|
124
|
+
async makeName(record, attributeName, originalName) {
|
|
125
|
+
if (typeof this.options.rename === 'function' && record) {
|
|
126
|
+
this.#name = (await this.options.rename(record, attributeName, originalName));
|
|
127
|
+
}
|
|
128
|
+
else if (originalName && this.options.rename === false) {
|
|
129
|
+
this.#name = originalName;
|
|
130
|
+
}
|
|
131
|
+
if (this.#name && record) {
|
|
132
|
+
const parameters = extractPathParameters(this.#name);
|
|
133
|
+
if (parameters) {
|
|
134
|
+
parameters.forEach((parameter) => {
|
|
135
|
+
const attribute = record.$attributes[parameter];
|
|
136
|
+
if (typeof attribute === 'string') {
|
|
137
|
+
const name = string.slug(string.noCase(string.escapeHTML(attribute.toLowerCase())));
|
|
138
|
+
this.#name = this.#name?.replace(`:${parameter}`, name);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return this;
|
|
144
|
+
}
|
|
145
|
+
async makeFolder(record) {
|
|
103
146
|
if (typeof this.options.folder === 'function' && record) {
|
|
104
|
-
this.#folder = this.options.folder(record);
|
|
147
|
+
this.#folder = (await this.options.folder(record));
|
|
105
148
|
}
|
|
106
149
|
else if (this.options.folder) {
|
|
107
150
|
this.#folder = this.options.folder;
|
|
@@ -120,6 +163,20 @@ export class AttachmentBase {
|
|
|
120
163
|
}
|
|
121
164
|
return this;
|
|
122
165
|
}
|
|
166
|
+
async put() {
|
|
167
|
+
if (Buffer.isBuffer(this.input)) {
|
|
168
|
+
await this.getDisk().put(this.path, this.input);
|
|
169
|
+
}
|
|
170
|
+
else if (this.input) {
|
|
171
|
+
await this.getDisk().copyFromFs(this.input, this.path);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
async remove() {
|
|
175
|
+
await this.getDisk().delete(this.path);
|
|
176
|
+
if (this.originalPath) {
|
|
177
|
+
await this.getDisk().delete(this.originalPath);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
123
180
|
/**
|
|
124
181
|
*
|
|
125
182
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image_converter.d.ts","sourceRoot":"","sources":["../../../src/converters/image_converter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,SAAS,MAAM,gBAAgB,CAAA;AAGtC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,SAAS;IAC7C,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"image_converter.d.ts","sourceRoot":"","sources":["../../../src/converters/image_converter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,SAAS,MAAM,gBAAgB,CAAA;AAGtC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,SAAS;IAC7C,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC;CA0BtE"}
|
|
@@ -11,13 +11,18 @@ export default class ImageConverter extends Converter {
|
|
|
11
11
|
const sharp = await use('sharp');
|
|
12
12
|
const resize = options?.resize || {};
|
|
13
13
|
let format = options?.format || 'webp';
|
|
14
|
+
const autoOrient = options?.autoOrient ?? true;
|
|
14
15
|
let formatoptions = {};
|
|
15
16
|
if (typeof format !== 'string') {
|
|
16
17
|
formatoptions = format?.options;
|
|
17
18
|
format = format.format;
|
|
18
19
|
}
|
|
19
|
-
const
|
|
20
|
-
.withMetadata()
|
|
20
|
+
const image = sharp(input)
|
|
21
|
+
.withMetadata();
|
|
22
|
+
if (autoOrient) {
|
|
23
|
+
image.autoOrient();
|
|
24
|
+
}
|
|
25
|
+
const buffer = await image
|
|
21
26
|
.resize(resize)
|
|
22
27
|
.toFormat(format, formatoptions)
|
|
23
28
|
.toBuffer();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment_detachment_service.d.ts","sourceRoot":"","sources":["../../../../src/services/attachment/attachment_detachment_service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,IAAI,kCAAkC,EAAE,MAAM,wBAAwB,CAAA;AAIxG,qBAAa,2BAA2B;;IACtC;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,kCAAkC,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"attachment_detachment_service.d.ts","sourceRoot":"","sources":["../../../../src/services/attachment/attachment_detachment_service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,IAAI,kCAAkC,EAAE,MAAM,wBAAwB,CAAA;AAIxG,qBAAa,2BAA2B;;IACtC;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,kCAAkC,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCvE;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,kCAAkC,GAAG,OAAO,CAAC,IAAI,CAAC;CA+B3E"}
|
|
@@ -11,7 +11,7 @@ export class AttachmentDetachmentService {
|
|
|
11
11
|
*/
|
|
12
12
|
async detach(record) {
|
|
13
13
|
const attachmentAttributeNames = AttachmentUtils.getDirtyAttributeNamesOfAttachment(record.row);
|
|
14
|
-
await Promise.allSettled(attachmentAttributeNames.map((name) => {
|
|
14
|
+
await Promise.allSettled(attachmentAttributeNames.map(async (name) => {
|
|
15
15
|
let attachments = [];
|
|
16
16
|
const options = AttachmentUtils.getOptionsByAttributeName(record.row, name);
|
|
17
17
|
if (record.row.$dirty[name] === null) {
|
|
@@ -36,7 +36,8 @@ export class AttachmentDetachmentService {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
this.#
|
|
39
|
+
await this.#moveForDeletion(attachments);
|
|
40
|
+
await this.#markForDeletion(attachments, record);
|
|
40
41
|
}));
|
|
41
42
|
}
|
|
42
43
|
/**
|
|
@@ -56,9 +57,10 @@ export class AttachmentDetachmentService {
|
|
|
56
57
|
/**
|
|
57
58
|
* Mark attachments for deletion by adding them to detached array
|
|
58
59
|
*/
|
|
59
|
-
#markForDeletion(attachments, record) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
async #markForDeletion(attachments, record) {
|
|
61
|
+
await Promise.allSettled(attachments.map((attachment) => record.row.$attachments.detached.push(attachment)));
|
|
62
|
+
}
|
|
63
|
+
async #moveForDeletion(attachments) {
|
|
64
|
+
await Promise.allSettled(attachments.map((attachment) => attachment.moveFileForDelete()));
|
|
63
65
|
}
|
|
64
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment_persister_service.d.ts","sourceRoot":"","sources":["../../../../src/services/attachment/attachment_persister_service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,oBAAoB,IAAI,kCAAkC,EAAE,MAAM,wBAAwB,CAAA;AAKxG,qBAAa,0BAA0B;IACrC;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,kCAAkC,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"attachment_persister_service.d.ts","sourceRoot":"","sources":["../../../../src/services/attachment/attachment_persister_service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,oBAAoB,IAAI,kCAAkC,EAAE,MAAM,wBAAwB,CAAA;AAKxG,qBAAa,0BAA0B;IACrC;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,kCAAkC,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CnF;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,kCAAkC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/E;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,kCAAkC,GAAG,OAAO,CAAC,IAAI,CAAC;CA4B3E"}
|
|
@@ -36,7 +36,9 @@ export class AttachmentPersisterService {
|
|
|
36
36
|
* file.
|
|
37
37
|
*/
|
|
38
38
|
if (newAttachments[i]) {
|
|
39
|
-
newAttachments[i].setOptions(options)
|
|
39
|
+
newAttachments[i].setOptions(options);
|
|
40
|
+
await newAttachments[i].makeFolder(record.row);
|
|
41
|
+
await newAttachments[i].makeName(record.row, name, newAttachments[i].originalName);
|
|
40
42
|
record.row.$attachments.attached.push(newAttachments[i]);
|
|
41
43
|
/**
|
|
42
44
|
* Also write the file to the disk right away
|
|
@@ -63,6 +63,6 @@ export default class AttachmentRecorderService implements RecordWithAttachmentIm
|
|
|
63
63
|
attributeName: string;
|
|
64
64
|
requiredOriginal?: boolean;
|
|
65
65
|
requiredDirty?: boolean;
|
|
66
|
-
}): AttachmentType[]
|
|
66
|
+
}): Promise<AttachmentType[]>;
|
|
67
67
|
}
|
|
68
68
|
//# sourceMappingURL=attachment_recorder_service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment_recorder_service.d.ts","sourceRoot":"","sources":["../../../../src/services/attachment/attachment_recorder_service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,KAAK,EAAE,oBAAoB,IAAI,kCAAkC,EAAE,MAAM,wBAAwB,CAAA;AACxG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAS7E,MAAM,CAAC,OAAO,OAAO,yBAA0B,YAAW,kCAAkC;;gBAO9E,GAAG,EAAE,iBAAiB;IAclC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACG,WAAW,CAAC,OAAO,GAAE,kBAA8C,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzF;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;IACG,kBAAkB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC;;OAEG;IACH,IAAI,GAAG,IAAI,iBAAiB,CAE3B;IAED;;OAEG;
|
|
1
|
+
{"version":3,"file":"attachment_recorder_service.d.ts","sourceRoot":"","sources":["../../../../src/services/attachment/attachment_recorder_service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,KAAK,EAAE,oBAAoB,IAAI,kCAAkC,EAAE,MAAM,wBAAwB,CAAA;AACxG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAS7E,MAAM,CAAC,OAAO,OAAO,yBAA0B,YAAW,kCAAkC;;gBAO9E,GAAG,EAAE,iBAAiB;IAclC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACG,WAAW,CAAC,OAAO,GAAE,kBAA8C,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzF;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;IACG,kBAAkB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC;;OAEG;IACH,IAAI,GAAG,IAAI,iBAAiB,CAE3B;IAED;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE;QAC5B,aAAa,EAAE,MAAM,CAAA;QACrB,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,aAAa,CAAC,EAAE,OAAO,CAAA;KACxB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAsB9B"}
|
|
@@ -97,7 +97,7 @@ export default class AttachmentRecorderService {
|
|
|
97
97
|
/**
|
|
98
98
|
* Get attachments with specific options
|
|
99
99
|
*/
|
|
100
|
-
getAttachments(options) {
|
|
100
|
+
async getAttachments(options) {
|
|
101
101
|
let attachments;
|
|
102
102
|
if (options.requiredOriginal) {
|
|
103
103
|
attachments = AttachmentUtils.getOriginalAttachmentsByAttributeName(this.#row, options.attributeName);
|
|
@@ -109,9 +109,11 @@ export default class AttachmentRecorderService {
|
|
|
109
109
|
attachments = AttachmentUtils.getAttachmentsByAttributeName(this.#row, options.attributeName);
|
|
110
110
|
}
|
|
111
111
|
const opts = AttachmentUtils.getOptionsByAttributeName(this.#row, options.attributeName);
|
|
112
|
-
attachments.forEach((attachment) => {
|
|
112
|
+
attachments.forEach(async (attachment) => {
|
|
113
113
|
if (attachment) {
|
|
114
|
-
attachment.setOptions(opts)
|
|
114
|
+
attachment.setOptions(opts);
|
|
115
|
+
await attachment.makeFolder(this.#row);
|
|
116
|
+
// await attachment.makeName(this.#row, options.attributeName, attachment.originalName)
|
|
115
117
|
}
|
|
116
118
|
});
|
|
117
119
|
return attachments;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment_transaction_service.d.ts","sourceRoot":"","sources":["../../../../src/services/attachment/attachment_transaction_service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,KAAK,EAAE,oBAAoB,IAAI,kCAAkC,EAAE,MAAM,wBAAwB,CAAA;AAGxG,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,qBAAa,4BAA4B;IACvC;;OAEG;IACG,MAAM,CAAC,mBAAmB,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE;;OAEG;IACG,QAAQ,CAAC,mBAAmB,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"attachment_transaction_service.d.ts","sourceRoot":"","sources":["../../../../src/services/attachment/attachment_transaction_service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,KAAK,EAAE,oBAAoB,IAAI,kCAAkC,EAAE,MAAM,wBAAwB,CAAA;AAGxG,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,qBAAa,4BAA4B;IACvC;;OAEG;IACG,MAAM,CAAC,mBAAmB,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE;;OAEG;IACG,QAAQ,CAAC,mBAAmB,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASpE;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,kCAAkC,EAC1C,OAAO,GAAE,kBAA8C,GACtD,OAAO,CAAC,IAAI,CAAC;CAiBjB"}
|
|
@@ -16,7 +16,10 @@ export class AttachmentTransactionService {
|
|
|
16
16
|
* During rollback we should remove the attached files.
|
|
17
17
|
*/
|
|
18
18
|
async rollback(attachedAttachments) {
|
|
19
|
-
await Promise.allSettled(attachedAttachments.map((attachment) =>
|
|
19
|
+
await Promise.allSettled(attachedAttachments.map(async (attachment) => {
|
|
20
|
+
await attachment.rollbackMoveFileForDelete();
|
|
21
|
+
await attachmentManager.remove(attachment);
|
|
22
|
+
}));
|
|
20
23
|
}
|
|
21
24
|
/**
|
|
22
25
|
* Handle transaction lifecycle with commit and rollback hooks
|
|
@@ -24,7 +24,6 @@ export type AttachmentBase = {
|
|
|
24
24
|
originalPath?: string;
|
|
25
25
|
url?: string;
|
|
26
26
|
options: LucidOptions;
|
|
27
|
-
makeFolder(record?: LucidRow): void;
|
|
28
27
|
getDisk(): Disk;
|
|
29
28
|
getBytes(): Promise<Uint8Array>;
|
|
30
29
|
getBuffer(): Promise<Buffer>;
|
|
@@ -33,6 +32,12 @@ export type AttachmentBase = {
|
|
|
33
32
|
getSignedUrl(signedUrlOptions?: SignedURLOptions): Promise<string>;
|
|
34
33
|
setKeyId(keyId: string): AttachmentBase;
|
|
35
34
|
setOptions(options: LucidOptions): AttachmentBase;
|
|
35
|
+
computeUrl(signedUrlOptions?: SignedURLOptions): Promise<void>;
|
|
36
|
+
preComputeUrl(): Promise<void>;
|
|
37
|
+
makeFolder(record?: LucidRow): void;
|
|
38
|
+
makeName(record?: LucidRow, attributeName?: string, originalName?: string): void;
|
|
39
|
+
put(): Promise<void>;
|
|
40
|
+
remove(): Promise<void>;
|
|
36
41
|
toObject(): AttachmentBaseAttributes;
|
|
37
42
|
toJSON(): Object;
|
|
38
43
|
};
|
|
@@ -43,6 +48,10 @@ export type Attachment = AttachmentBase & {
|
|
|
43
48
|
getVariant(variantName: string): Variant | null;
|
|
44
49
|
getUrl(variantName?: string): Promise<string>;
|
|
45
50
|
getSignedUrl(variantNameOrOptions?: string | SignedURLOptions, signedUrlOptions?: SignedURLOptions): Promise<string>;
|
|
51
|
+
preComputeUrl(): Promise<void>;
|
|
52
|
+
moveFileForDelete(): Promise<void>;
|
|
53
|
+
rollbackMoveFileForDelete(): Promise<void>;
|
|
54
|
+
remove(): Promise<void>;
|
|
46
55
|
toObject(): AttachmentAttributes;
|
|
47
56
|
};
|
|
48
57
|
export type Variant = AttachmentBase & {
|
|
@@ -54,10 +63,10 @@ export type Variant = AttachmentBase & {
|
|
|
54
63
|
};
|
|
55
64
|
export type LucidOptions<T = LucidRow> = {
|
|
56
65
|
disk?: string;
|
|
57
|
-
folder?: string | ((record: T) => string);
|
|
66
|
+
folder?: string | ((record: T) => string) | ((record: T) => Promise<string>);
|
|
67
|
+
rename?: boolean | ((record: T, column?: string, currentName?: string) => string) | ((record: T, column?: string, currentName?: string) => Promise<string>);
|
|
58
68
|
preComputeUrl?: boolean;
|
|
59
69
|
variants?: (keyof AttachmentVariants)[];
|
|
60
|
-
rename?: boolean;
|
|
61
70
|
meta?: boolean;
|
|
62
71
|
serialize?: (value?: Attachment) => unknown;
|
|
63
72
|
serializeAs?: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../../src/types/attachment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,YAAY,CAAA;IAEnB,KAAK,CAAC,EAAE,KAAK,CAAA;IAEb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ,OAAO,EAAE,YAAY,CAAA;IAErB,
|
|
1
|
+
{"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../../src/types/attachment.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
|
|
6
6
|
*/
|
|
7
|
+
import type { LucidRow } from '@adonisjs/lucid/types/model';
|
|
7
8
|
import type { Converter, ConverterOptions } from './converter.js';
|
|
8
9
|
import { ConfigProvider } from '@adonisjs/core/types';
|
|
9
10
|
import { AttachmentManager } from '../attachment_manager.js';
|
|
@@ -27,7 +28,7 @@ export type BinPaths = {
|
|
|
27
28
|
export type AttachmentConfig<KnownConverter extends Record<string, ConverterConfig>> = {
|
|
28
29
|
bin?: BinPaths;
|
|
29
30
|
meta?: boolean;
|
|
30
|
-
rename?: boolean;
|
|
31
|
+
rename?: boolean | ((record: LucidRow, column?: string, currentName?: string) => string) | ((record: LucidRow, column?: string, currentName?: string) => Promise<string>);
|
|
31
32
|
preComputeUrl?: boolean;
|
|
32
33
|
timeout?: number;
|
|
33
34
|
converters?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1C,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,KAAK;IACpB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI;IACrF,GAAG,CAAC,EAAE,QAAQ,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1C,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,KAAK;IACpB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI;IACrF,GAAG,CAAC,EAAE,QAAQ,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IACzK,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE;SACV,CAAC,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC;KAC/C,CAAA;IACD,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,MAAM,WAAW,kBAAkB;CAAG;AAEtC,MAAM,MAAM,eAAe,CACzB,MAAM,SAAS,cAAc,CAAC;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAC,IACA,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAA;AAE7E,MAAM,WAAW,iBACf,SAAQ,iBAAiB,CACvB,kBAAkB,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,kBAAkB,GAAG,KAAK,CAClF;CAAG"}
|
|
@@ -135,6 +135,7 @@ export type ConverterOptions = {
|
|
|
135
135
|
fastShrinkOnLoad?: boolean;
|
|
136
136
|
};
|
|
137
137
|
format?: 'jpeg' | 'jpg' | 'png' | 'gif' | 'webp' | 'avif' | 'heif' | 'tiff' | 'raw' | jpeg | png | gif | webp | avif | heif;
|
|
138
|
+
autoOrient?: boolean;
|
|
138
139
|
blurhash?: boolean | BlurhashOptions;
|
|
139
140
|
startTime?: number;
|
|
140
141
|
startPage?: number;
|