@lodashventure/medusa-media-manager 0.1.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/.medusa/server/src/admin/index.js +1376 -0
- package/.medusa/server/src/admin/index.mjs +1377 -0
- package/.medusa/server/src/api/admin/media/assets/[id]/route.js +50 -0
- package/.medusa/server/src/api/admin/media/assets/[id]/url/route.js +24 -0
- package/.medusa/server/src/api/admin/media/assets/route.js +53 -0
- package/.medusa/server/src/api/admin/media/assets/upload/route.js +67 -0
- package/.medusa/server/src/api/middlewares.js +53 -0
- package/.medusa/server/src/index.js +46 -0
- package/.medusa/server/src/modules/media-manager/index.js +13 -0
- package/.medusa/server/src/modules/media-manager/migrations/Migration20251104115419.js +83 -0
- package/.medusa/server/src/modules/media-manager/migrations/Migration20251104160000.js +15 -0
- package/.medusa/server/src/modules/media-manager/models/index.js +14 -0
- package/.medusa/server/src/modules/media-manager/models/media-models.js +201 -0
- package/.medusa/server/src/modules/media-manager/service.js +778 -0
- package/.medusa/server/src/providers/index.js +23 -0
- package/.medusa/server/src/providers/storage/azure.js +100 -0
- package/.medusa/server/src/providers/storage/factory.js +32 -0
- package/.medusa/server/src/providers/storage/gcs.js +91 -0
- package/.medusa/server/src/providers/storage/local.js +73 -0
- package/.medusa/server/src/providers/storage/s3.js +96 -0
- package/.medusa/server/src/providers/storage/types.js +3 -0
- package/.medusa/server/src/types/index.js +3 -0
- package/.medusa/server/src/workflows/index.js +4 -0
- package/README.md +85 -0
- package/package.json +82 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MediaAssetAuditView = exports.MediaActivityLog = exports.MediaAssetVersion = exports.MediaAssetRelation = exports.MediaAssetTag = exports.MediaVariant = exports.MediaAsset = exports.MediaTag = exports.MediaFolder = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
exports.MediaFolder = utils_1.model
|
|
6
|
+
.define("media_folder", {
|
|
7
|
+
id: utils_1.model.id().primaryKey(),
|
|
8
|
+
name: utils_1.model.text(),
|
|
9
|
+
parent: utils_1.model
|
|
10
|
+
.belongsTo(() => exports.MediaFolder, {
|
|
11
|
+
mappedBy: "children",
|
|
12
|
+
})
|
|
13
|
+
.nullable(),
|
|
14
|
+
children: utils_1.model.hasMany(() => exports.MediaFolder, {
|
|
15
|
+
mappedBy: "parent",
|
|
16
|
+
}),
|
|
17
|
+
assets: utils_1.model.hasMany(() => exports.MediaAsset, {
|
|
18
|
+
mappedBy: "folder",
|
|
19
|
+
}),
|
|
20
|
+
})
|
|
21
|
+
.indexes([
|
|
22
|
+
{
|
|
23
|
+
on: ["name", "parent_id"],
|
|
24
|
+
unique: true,
|
|
25
|
+
},
|
|
26
|
+
]);
|
|
27
|
+
exports.MediaTag = utils_1.model
|
|
28
|
+
.define("media_tag", {
|
|
29
|
+
id: utils_1.model.id().primaryKey(),
|
|
30
|
+
name: utils_1.model.text().unique(),
|
|
31
|
+
color: utils_1.model.text().nullable(),
|
|
32
|
+
assets: utils_1.model.hasMany(() => exports.MediaAssetTag, {
|
|
33
|
+
mappedBy: "tag",
|
|
34
|
+
}),
|
|
35
|
+
})
|
|
36
|
+
.indexes([
|
|
37
|
+
{
|
|
38
|
+
on: ["name"],
|
|
39
|
+
unique: true,
|
|
40
|
+
},
|
|
41
|
+
]);
|
|
42
|
+
exports.MediaAsset = utils_1.model
|
|
43
|
+
.define("media_asset", {
|
|
44
|
+
id: utils_1.model.id().primaryKey(),
|
|
45
|
+
storage_key: utils_1.model.text().unique(),
|
|
46
|
+
original_filename: utils_1.model.text(),
|
|
47
|
+
mime: utils_1.model.text(),
|
|
48
|
+
type: utils_1.model.enum(["image", "video", "document", "svg"]).default("image"),
|
|
49
|
+
size_bytes: utils_1.model.number(),
|
|
50
|
+
width: utils_1.model.number().nullable(),
|
|
51
|
+
height: utils_1.model.number().nullable(),
|
|
52
|
+
duration_ms: utils_1.model.number().nullable(),
|
|
53
|
+
checksum_sha256: utils_1.model.text().unique(),
|
|
54
|
+
visibility: utils_1.model.enum(["public", "private"]).default("public"),
|
|
55
|
+
status: utils_1.model.enum(["draft", "published", "archived"]).default("draft"),
|
|
56
|
+
focal_x: utils_1.model.float().nullable(),
|
|
57
|
+
focal_y: utils_1.model.float().nullable(),
|
|
58
|
+
title: utils_1.model.json().nullable(),
|
|
59
|
+
alt_text: utils_1.model.json().nullable(),
|
|
60
|
+
caption: utils_1.model.json().nullable(),
|
|
61
|
+
exif: utils_1.model.json().nullable(),
|
|
62
|
+
custom: utils_1.model.json().nullable(),
|
|
63
|
+
metadata: utils_1.model.json().nullable(),
|
|
64
|
+
version: utils_1.model.number().default(1),
|
|
65
|
+
folder: utils_1.model
|
|
66
|
+
.belongsTo(() => exports.MediaFolder, {
|
|
67
|
+
mappedBy: "assets",
|
|
68
|
+
})
|
|
69
|
+
.nullable(),
|
|
70
|
+
variants: utils_1.model.hasMany(() => exports.MediaVariant, {
|
|
71
|
+
mappedBy: "asset",
|
|
72
|
+
}),
|
|
73
|
+
tag_links: utils_1.model.hasMany(() => exports.MediaAssetTag, {
|
|
74
|
+
mappedBy: "asset",
|
|
75
|
+
}),
|
|
76
|
+
relations: utils_1.model.hasMany(() => exports.MediaAssetRelation, {
|
|
77
|
+
mappedBy: "asset",
|
|
78
|
+
}),
|
|
79
|
+
versions: utils_1.model.hasMany(() => exports.MediaAssetVersion, {
|
|
80
|
+
mappedBy: "asset",
|
|
81
|
+
}),
|
|
82
|
+
activities: utils_1.model.hasMany(() => exports.MediaActivityLog, {
|
|
83
|
+
mappedBy: "asset",
|
|
84
|
+
}),
|
|
85
|
+
created_by: utils_1.model.text().nullable(),
|
|
86
|
+
updated_by: utils_1.model.text().nullable(),
|
|
87
|
+
uploaded_at: utils_1.model.dateTime().nullable(),
|
|
88
|
+
processing_state: utils_1.model
|
|
89
|
+
.enum(["pending", "processing", "processed", "failed"])
|
|
90
|
+
.default("pending"),
|
|
91
|
+
processing_error: utils_1.model.text().nullable(),
|
|
92
|
+
})
|
|
93
|
+
.indexes([
|
|
94
|
+
{
|
|
95
|
+
on: ["type"],
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
on: ["folder_id"],
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
on: ["created_at"],
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
on: ["visibility", "status"],
|
|
105
|
+
},
|
|
106
|
+
]);
|
|
107
|
+
exports.MediaVariant = utils_1.model
|
|
108
|
+
.define("media_variant", {
|
|
109
|
+
id: utils_1.model.id().primaryKey(),
|
|
110
|
+
asset: utils_1.model.belongsTo(() => exports.MediaAsset, {
|
|
111
|
+
mappedBy: "variants",
|
|
112
|
+
}),
|
|
113
|
+
preset: utils_1.model.text(),
|
|
114
|
+
format: utils_1.model.text(),
|
|
115
|
+
width: utils_1.model.number().nullable(),
|
|
116
|
+
height: utils_1.model.number().nullable(),
|
|
117
|
+
size_bytes: utils_1.model.number().nullable(),
|
|
118
|
+
storage_key: utils_1.model.text().nullable(),
|
|
119
|
+
checksum_sha256: utils_1.model.text().nullable(),
|
|
120
|
+
generated_at: utils_1.model.dateTime().nullable(),
|
|
121
|
+
status: utils_1.model
|
|
122
|
+
.enum(["pending", "processing", "generated", "failed"])
|
|
123
|
+
.default("pending"),
|
|
124
|
+
error: utils_1.model.text().nullable(),
|
|
125
|
+
})
|
|
126
|
+
.indexes([
|
|
127
|
+
{
|
|
128
|
+
on: ["asset_id", "preset", "format"],
|
|
129
|
+
unique: true,
|
|
130
|
+
},
|
|
131
|
+
]);
|
|
132
|
+
exports.MediaAssetTag = utils_1.model
|
|
133
|
+
.define("media_asset_tag", {
|
|
134
|
+
id: utils_1.model.id().primaryKey(),
|
|
135
|
+
asset: utils_1.model.belongsTo(() => exports.MediaAsset, {
|
|
136
|
+
mappedBy: "tag_links",
|
|
137
|
+
}),
|
|
138
|
+
tag: utils_1.model.belongsTo(() => exports.MediaTag, {
|
|
139
|
+
mappedBy: "assets",
|
|
140
|
+
}),
|
|
141
|
+
})
|
|
142
|
+
.indexes([
|
|
143
|
+
{
|
|
144
|
+
on: ["asset_id", "tag_id"],
|
|
145
|
+
unique: true,
|
|
146
|
+
},
|
|
147
|
+
]);
|
|
148
|
+
exports.MediaAssetRelation = utils_1.model
|
|
149
|
+
.define("media_asset_relation", {
|
|
150
|
+
id: utils_1.model.id().primaryKey(),
|
|
151
|
+
asset: utils_1.model.belongsTo(() => exports.MediaAsset, {
|
|
152
|
+
mappedBy: "relations",
|
|
153
|
+
}),
|
|
154
|
+
entity_type: utils_1.model.text(),
|
|
155
|
+
entity_id: utils_1.model.text(),
|
|
156
|
+
relation_role: utils_1.model.text().default("primary"),
|
|
157
|
+
})
|
|
158
|
+
.indexes([
|
|
159
|
+
{
|
|
160
|
+
on: ["entity_type", "entity_id"],
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
on: ["asset_id", "entity_type", "entity_id", "relation_role"],
|
|
164
|
+
unique: true,
|
|
165
|
+
},
|
|
166
|
+
]);
|
|
167
|
+
exports.MediaAssetVersion = utils_1.model
|
|
168
|
+
.define("media_asset_version", {
|
|
169
|
+
id: utils_1.model.id().primaryKey(),
|
|
170
|
+
asset: utils_1.model.belongsTo(() => exports.MediaAsset, {
|
|
171
|
+
mappedBy: "versions",
|
|
172
|
+
}),
|
|
173
|
+
version: utils_1.model.number(),
|
|
174
|
+
storage_key: utils_1.model.text(),
|
|
175
|
+
mime: utils_1.model.text(),
|
|
176
|
+
size_bytes: utils_1.model.number(),
|
|
177
|
+
checksum_sha256: utils_1.model.text(),
|
|
178
|
+
metadata: utils_1.model.json().nullable(),
|
|
179
|
+
})
|
|
180
|
+
.indexes([
|
|
181
|
+
{
|
|
182
|
+
on: ["asset_id", "version"],
|
|
183
|
+
unique: true,
|
|
184
|
+
},
|
|
185
|
+
]);
|
|
186
|
+
exports.MediaActivityLog = utils_1.model.define("media_activity_log", {
|
|
187
|
+
id: utils_1.model.id().primaryKey(),
|
|
188
|
+
asset: utils_1.model.belongsTo(() => exports.MediaAsset, {
|
|
189
|
+
mappedBy: "activities",
|
|
190
|
+
}),
|
|
191
|
+
actor_id: utils_1.model.text().nullable(),
|
|
192
|
+
action: utils_1.model.text(),
|
|
193
|
+
metadata: utils_1.model.json().nullable(),
|
|
194
|
+
});
|
|
195
|
+
exports.MediaAssetAuditView = utils_1.model.define("media_asset_audit_view", {
|
|
196
|
+
id: utils_1.model.id().primaryKey(),
|
|
197
|
+
asset_id: utils_1.model.text(),
|
|
198
|
+
usage_count: utils_1.model.number(),
|
|
199
|
+
last_used_at: utils_1.model.dateTime().nullable(),
|
|
200
|
+
});
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtbW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvbWVkaWEtbWFuYWdlci9tb2RlbHMvbWVkaWEtbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUFrRDtBQUVyQyxRQUFBLFdBQVcsR0FBRyxhQUFLO0tBQzdCLE1BQU0sQ0FBQyxjQUFjLEVBQUU7SUFDdEIsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsSUFBSSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDbEIsTUFBTSxFQUFFLGFBQUs7U0FDVixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQVcsRUFBRTtRQUM1QixRQUFRLEVBQUUsVUFBVTtLQUNyQixDQUFDO1NBQ0QsUUFBUSxFQUFFO0lBQ2IsUUFBUSxFQUFFLGFBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQVcsRUFBRTtRQUN6QyxRQUFRLEVBQUUsUUFBUTtLQUNuQixDQUFDO0lBQ0YsTUFBTSxFQUFFLGFBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQVUsRUFBRTtRQUN0QyxRQUFRLEVBQUUsUUFBUTtLQUNuQixDQUFDO0NBQ0gsQ0FBQztLQUNELE9BQU8sQ0FBQztJQUNQO1FBQ0UsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQztRQUN6QixNQUFNLEVBQUUsSUFBSTtLQUNiO0NBQ0YsQ0FBQyxDQUFDO0FBRVEsUUFBQSxRQUFRLEdBQUcsYUFBSztLQUMxQixNQUFNLENBQUMsV0FBVyxFQUFFO0lBQ25CLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFO0lBQzNCLElBQUksRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO0lBQzNCLEtBQUssRUFBRSxhQUFLLENBQUMsSUFB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
|