@package-uploader/core 1.0.2 → 1.3.0
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/.env.example +18 -0
- package/dist/cli.js +16 -6
- package/dist/cli.js.map +1 -1
- package/dist/client/uploader-client.d.ts +36 -4
- package/dist/client/uploader-client.d.ts.map +1 -1
- package/dist/client/uploader-client.js +134 -6
- package/dist/client/uploader-client.js.map +1 -1
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +231 -0
- package/dist/server.js.map +1 -0
- package/dist/types/index.d.ts +79 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +30 -4
- package/dist/types/index.js.map +1 -1
- package/package.json +14 -3
- package/public/assets/index-CKRNoQpu.css +1 -0
- package/public/assets/index-svD3BzFo.js +71 -0
- package/public/index.html +14 -0
package/dist/server.js
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
require("dotenv/config");
|
|
8
|
+
const express_1 = __importDefault(require("express"));
|
|
9
|
+
const cors_1 = __importDefault(require("cors"));
|
|
10
|
+
const multer_1 = __importDefault(require("multer"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const fs_1 = __importDefault(require("fs"));
|
|
13
|
+
const uploader_client_js_1 = require("./client/uploader-client.js");
|
|
14
|
+
const app = (0, express_1.default)();
|
|
15
|
+
const port = process.env.PORT || 3002;
|
|
16
|
+
app.use((0, cors_1.default)());
|
|
17
|
+
app.use(express_1.default.json());
|
|
18
|
+
// Serve static UI files
|
|
19
|
+
// Priority: 1) ./public in current directory, 2) bundled public in package
|
|
20
|
+
const localPublic = path_1.default.join(process.cwd(), 'public');
|
|
21
|
+
const packagePublic = path_1.default.join(__dirname, '..', 'public');
|
|
22
|
+
const uiPath = fs_1.default.existsSync(localPublic) ? localPublic : packagePublic;
|
|
23
|
+
if (fs_1.default.existsSync(uiPath)) {
|
|
24
|
+
app.use(express_1.default.static(uiPath));
|
|
25
|
+
console.log(`Serving UI from: ${uiPath}`);
|
|
26
|
+
}
|
|
27
|
+
// File upload config
|
|
28
|
+
const upload = (0, multer_1.default)({
|
|
29
|
+
storage: multer_1.default.memoryStorage(),
|
|
30
|
+
limits: { fileSize: 500 * 1024 * 1024 },
|
|
31
|
+
fileFilter: (_req, file, cb) => {
|
|
32
|
+
if (file.mimetype === 'application/zip' ||
|
|
33
|
+
file.mimetype === 'application/x-zip-compressed' ||
|
|
34
|
+
file.originalname.endsWith('.zip')) {
|
|
35
|
+
cb(null, true);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
cb(new Error('Only ZIP files allowed'));
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
// Singleton client (reuses session tokens)
|
|
43
|
+
let client = null;
|
|
44
|
+
function getClient() {
|
|
45
|
+
if (client)
|
|
46
|
+
return client;
|
|
47
|
+
const baseUrl = process.env.UPLOADER_BASE_URL;
|
|
48
|
+
const username = process.env.UPLOADER_USERNAME;
|
|
49
|
+
const password = process.env.UPLOADER_PASSWORD;
|
|
50
|
+
if (!baseUrl || !username || !password) {
|
|
51
|
+
throw new Error('Missing required environment variables: UPLOADER_BASE_URL, UPLOADER_USERNAME, UPLOADER_PASSWORD');
|
|
52
|
+
}
|
|
53
|
+
client = new uploader_client_js_1.PackageUploaderClient({
|
|
54
|
+
baseUrl,
|
|
55
|
+
credentials: { username, password },
|
|
56
|
+
timeout: parseInt(process.env.UPLOADER_TIMEOUT || '30000', 10),
|
|
57
|
+
sessionTTL: parseInt(process.env.UPLOADER_SESSION_TTL || '1800000', 10),
|
|
58
|
+
patchAdams: process.env.PATCH_ADAMS_ENABLED === 'true' && process.env.PATCH_ADAMS_DOMAIN
|
|
59
|
+
? { enabled: true, remoteDomain: process.env.PATCH_ADAMS_DOMAIN }
|
|
60
|
+
: undefined,
|
|
61
|
+
});
|
|
62
|
+
return client;
|
|
63
|
+
}
|
|
64
|
+
// =============================================================================
|
|
65
|
+
// HEALTH CHECK
|
|
66
|
+
// =============================================================================
|
|
67
|
+
app.get('/api/health', (_req, res) => {
|
|
68
|
+
const c = client;
|
|
69
|
+
const session = c?.getSessionInfo();
|
|
70
|
+
res.json({
|
|
71
|
+
status: 'ok',
|
|
72
|
+
configured: !!(process.env.UPLOADER_BASE_URL &&
|
|
73
|
+
process.env.UPLOADER_USERNAME &&
|
|
74
|
+
process.env.UPLOADER_PASSWORD),
|
|
75
|
+
patchAdamsEnabled: process.env.PATCH_ADAMS_ENABLED === 'true',
|
|
76
|
+
session: session
|
|
77
|
+
? {
|
|
78
|
+
isAuthenticated: session.isAuthenticated,
|
|
79
|
+
expiresAt: session.expiresAt?.toISOString(),
|
|
80
|
+
}
|
|
81
|
+
: null,
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
// =============================================================================
|
|
85
|
+
// FOLDER ROUTES
|
|
86
|
+
// =============================================================================
|
|
87
|
+
app.get('/api/folders', async (_req, res) => {
|
|
88
|
+
try {
|
|
89
|
+
const folders = await getClient().listFolders();
|
|
90
|
+
res.json(folders);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
console.error('Error listing folders:', error);
|
|
94
|
+
res.status(500).json({ error: 'Failed to list folders' });
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
app.get('/api/folders/:id', async (req, res) => {
|
|
98
|
+
try {
|
|
99
|
+
const folder = await getClient().getFolder(req.params.id);
|
|
100
|
+
res.json(folder);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.error('Error getting folder:', error);
|
|
104
|
+
res.status(500).json({ error: 'Failed to get folder' });
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
app.get('/api/folders/:id/subfolders', async (req, res) => {
|
|
108
|
+
try {
|
|
109
|
+
const subfolders = await getClient().listSubfolders(req.params.id);
|
|
110
|
+
res.json(subfolders);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
console.error('Error listing subfolders:', error);
|
|
114
|
+
res.status(500).json({ error: 'Failed to list subfolders' });
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
// =============================================================================
|
|
118
|
+
// DOCUMENT ROUTES
|
|
119
|
+
// =============================================================================
|
|
120
|
+
app.get('/api/documents', async (req, res) => {
|
|
121
|
+
try {
|
|
122
|
+
const { folderId, filterText } = req.query;
|
|
123
|
+
let documents;
|
|
124
|
+
if (folderId) {
|
|
125
|
+
documents = await getClient().listFolderDocuments(String(folderId), {
|
|
126
|
+
filterText: filterText,
|
|
127
|
+
includeSharedLinks: true,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
documents = await getClient().listDocuments({
|
|
132
|
+
filterText: filterText,
|
|
133
|
+
includeSharedLinks: true,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
res.json(documents);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
console.error('Error listing documents:', error);
|
|
140
|
+
res.status(500).json({ error: 'Failed to list documents' });
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
app.get('/api/documents/:id', async (req, res) => {
|
|
144
|
+
try {
|
|
145
|
+
const document = await getClient().getDocument(req.params.id);
|
|
146
|
+
res.json(document);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
console.error('Error getting document:', error);
|
|
150
|
+
res.status(500).json({ error: 'Failed to get document' });
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
app.get('/api/documents/:id/launch', async (req, res) => {
|
|
154
|
+
try {
|
|
155
|
+
const url = await getClient().getOrCreateLaunchLink(req.params.id);
|
|
156
|
+
res.json({ url });
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
console.error('Error getting launch URL:', error);
|
|
160
|
+
res.status(500).json({ error: 'Failed to get launch URL' });
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
// =============================================================================
|
|
164
|
+
// UPLOAD ROUTES
|
|
165
|
+
// =============================================================================
|
|
166
|
+
app.post('/api/upload', upload.single('file'), async (req, res) => {
|
|
167
|
+
try {
|
|
168
|
+
if (!req.file) {
|
|
169
|
+
return res.status(400).json({ error: 'No file uploaded' });
|
|
170
|
+
}
|
|
171
|
+
const folderId = req.body.folderId;
|
|
172
|
+
if (!folderId) {
|
|
173
|
+
return res.status(400).json({ error: 'folderId is required' });
|
|
174
|
+
}
|
|
175
|
+
const result = await getClient().uploadCourse(req.file.buffer, req.file.originalname, {
|
|
176
|
+
folderId: String(folderId),
|
|
177
|
+
title: req.body.title,
|
|
178
|
+
description: req.body.description,
|
|
179
|
+
author: req.body.author,
|
|
180
|
+
});
|
|
181
|
+
res.json(result);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
console.error('Error uploading course:', error);
|
|
185
|
+
res.status(500).json({
|
|
186
|
+
error: error instanceof Error ? error.message : 'Failed to upload course',
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
app.post('/api/upload/version', upload.single('file'), async (req, res) => {
|
|
191
|
+
try {
|
|
192
|
+
if (!req.file) {
|
|
193
|
+
return res.status(400).json({ error: 'No file uploaded' });
|
|
194
|
+
}
|
|
195
|
+
const documentId = req.body.documentId;
|
|
196
|
+
if (!documentId) {
|
|
197
|
+
return res.status(400).json({ error: 'documentId is required' });
|
|
198
|
+
}
|
|
199
|
+
const result = await getClient().uploadVersion(req.file.buffer, req.file.originalname, {
|
|
200
|
+
documentId: String(documentId),
|
|
201
|
+
note: req.body.note,
|
|
202
|
+
});
|
|
203
|
+
res.json(result);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
console.error('Error uploading version:', error);
|
|
207
|
+
res.status(500).json({
|
|
208
|
+
error: error instanceof Error ? error.message : 'Failed to upload version',
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
// =============================================================================
|
|
213
|
+
// SPA FALLBACK
|
|
214
|
+
// =============================================================================
|
|
215
|
+
app.get('*', (_req, res) => {
|
|
216
|
+
const indexPath = path_1.default.join(uiPath, 'index.html');
|
|
217
|
+
if (fs_1.default.existsSync(indexPath)) {
|
|
218
|
+
res.sendFile(indexPath);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
res.status(404).json({ error: 'UI not found. Add a public/index.html file.' });
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
// =============================================================================
|
|
225
|
+
// START SERVER
|
|
226
|
+
// =============================================================================
|
|
227
|
+
app.listen(port, () => {
|
|
228
|
+
console.log(`Package Uploader Server running at http://localhost:${port}`);
|
|
229
|
+
console.log(`Health check: http://localhost:${port}/api/health`);
|
|
230
|
+
});
|
|
231
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,11 +1,28 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const UploaderConfigSchema: z.ZodObject<{
|
|
3
|
-
/** Base URL for the LMS API (e.g., https://
|
|
3
|
+
/** Base URL for the LMS API (e.g., https://core-company.bravais.com) */
|
|
4
4
|
baseUrl: z.ZodString;
|
|
5
|
-
/**
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Authentication credentials for the Bravais API.
|
|
7
|
+
* The client will authenticate and manage session tokens automatically.
|
|
8
|
+
*/
|
|
9
|
+
credentials: z.ZodObject<{
|
|
10
|
+
username: z.ZodString;
|
|
11
|
+
password: z.ZodString;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
username: string;
|
|
14
|
+
password: string;
|
|
15
|
+
}, {
|
|
16
|
+
username: string;
|
|
17
|
+
password: string;
|
|
18
|
+
}>;
|
|
7
19
|
/** Optional timeout in milliseconds (default: 30000) */
|
|
8
20
|
timeout: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
21
|
+
/**
|
|
22
|
+
* Session token TTL in milliseconds (default: 1800000 = 30 minutes).
|
|
23
|
+
* Tokens will be refreshed automatically before expiration.
|
|
24
|
+
*/
|
|
25
|
+
sessionTTL: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
9
26
|
/** Optional: Enable patch-adams integration */
|
|
10
27
|
patchAdams: z.ZodOptional<z.ZodObject<{
|
|
11
28
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -19,8 +36,51 @@ export declare const UploaderConfigSchema: z.ZodObject<{
|
|
|
19
36
|
}>>;
|
|
20
37
|
}, "strip", z.ZodTypeAny, {
|
|
21
38
|
baseUrl: string;
|
|
22
|
-
|
|
39
|
+
credentials: {
|
|
40
|
+
username: string;
|
|
41
|
+
password: string;
|
|
42
|
+
};
|
|
43
|
+
timeout: number;
|
|
44
|
+
sessionTTL: number;
|
|
45
|
+
patchAdams?: {
|
|
46
|
+
enabled: boolean;
|
|
47
|
+
remoteDomain: string;
|
|
48
|
+
} | undefined;
|
|
49
|
+
}, {
|
|
50
|
+
baseUrl: string;
|
|
51
|
+
credentials: {
|
|
52
|
+
username: string;
|
|
53
|
+
password: string;
|
|
54
|
+
};
|
|
55
|
+
timeout?: number | undefined;
|
|
56
|
+
sessionTTL?: number | undefined;
|
|
57
|
+
patchAdams?: {
|
|
58
|
+
remoteDomain: string;
|
|
59
|
+
enabled?: boolean | undefined;
|
|
60
|
+
} | undefined;
|
|
61
|
+
}>;
|
|
62
|
+
/**
|
|
63
|
+
* @deprecated Use credentials instead of apiKey.
|
|
64
|
+
* Legacy config schema for backwards compatibility.
|
|
65
|
+
*/
|
|
66
|
+
export declare const LegacyUploaderConfigSchema: z.ZodObject<{
|
|
67
|
+
baseUrl: z.ZodString;
|
|
68
|
+
apiKey: z.ZodString;
|
|
69
|
+
timeout: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
70
|
+
patchAdams: z.ZodOptional<z.ZodObject<{
|
|
71
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
72
|
+
remoteDomain: z.ZodString;
|
|
73
|
+
}, "strip", z.ZodTypeAny, {
|
|
74
|
+
enabled: boolean;
|
|
75
|
+
remoteDomain: string;
|
|
76
|
+
}, {
|
|
77
|
+
remoteDomain: string;
|
|
78
|
+
enabled?: boolean | undefined;
|
|
79
|
+
}>>;
|
|
80
|
+
}, "strip", z.ZodTypeAny, {
|
|
81
|
+
baseUrl: string;
|
|
23
82
|
timeout: number;
|
|
83
|
+
apiKey: string;
|
|
24
84
|
patchAdams?: {
|
|
25
85
|
enabled: boolean;
|
|
26
86
|
remoteDomain: string;
|
|
@@ -35,6 +95,21 @@ export declare const UploaderConfigSchema: z.ZodObject<{
|
|
|
35
95
|
} | undefined;
|
|
36
96
|
}>;
|
|
37
97
|
export type UploaderConfig = z.infer<typeof UploaderConfigSchema>;
|
|
98
|
+
export type LegacyUploaderConfig = z.infer<typeof LegacyUploaderConfigSchema>;
|
|
99
|
+
export interface SessionToken {
|
|
100
|
+
/** The session token value (Bravais-prod-us-Context cookie value) */
|
|
101
|
+
value: string;
|
|
102
|
+
/** Timestamp when the token was obtained */
|
|
103
|
+
obtainedAt: number;
|
|
104
|
+
/** Timestamp when the token expires */
|
|
105
|
+
expiresAt: number;
|
|
106
|
+
}
|
|
107
|
+
export interface AuthResponse {
|
|
108
|
+
/** Cookie name returned from authentication */
|
|
109
|
+
name: string;
|
|
110
|
+
/** Cookie/token value */
|
|
111
|
+
value: string;
|
|
112
|
+
}
|
|
38
113
|
export declare const UploadOptionsSchema: z.ZodObject<{
|
|
39
114
|
/** Target folder ID in LMS */
|
|
40
115
|
folderId: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,oBAAoB;IAC/B
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js
CHANGED
|
@@ -1,17 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.VersionUploadOptionsSchema = exports.UploadOptionsSchema = exports.UploaderConfigSchema = void 0;
|
|
3
|
+
exports.VersionUploadOptionsSchema = exports.UploadOptionsSchema = exports.LegacyUploaderConfigSchema = exports.UploaderConfigSchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
// =============================================================================
|
|
6
6
|
// Configuration Schema
|
|
7
7
|
// =============================================================================
|
|
8
8
|
exports.UploaderConfigSchema = zod_1.z.object({
|
|
9
|
-
/** Base URL for the LMS API (e.g., https://
|
|
9
|
+
/** Base URL for the LMS API (e.g., https://core-company.bravais.com) */
|
|
10
10
|
baseUrl: zod_1.z.string().url(),
|
|
11
|
-
/**
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Authentication credentials for the Bravais API.
|
|
13
|
+
* The client will authenticate and manage session tokens automatically.
|
|
14
|
+
*/
|
|
15
|
+
credentials: zod_1.z.object({
|
|
16
|
+
username: zod_1.z.string().min(1),
|
|
17
|
+
password: zod_1.z.string().min(1),
|
|
18
|
+
}),
|
|
13
19
|
/** Optional timeout in milliseconds (default: 30000) */
|
|
14
20
|
timeout: zod_1.z.number().positive().optional().default(30000),
|
|
21
|
+
/**
|
|
22
|
+
* Session token TTL in milliseconds (default: 1800000 = 30 minutes).
|
|
23
|
+
* Tokens will be refreshed automatically before expiration.
|
|
24
|
+
*/
|
|
25
|
+
sessionTTL: zod_1.z.number().positive().optional().default(1800000),
|
|
15
26
|
/** Optional: Enable patch-adams integration */
|
|
16
27
|
patchAdams: zod_1.z
|
|
17
28
|
.object({
|
|
@@ -20,6 +31,21 @@ exports.UploaderConfigSchema = zod_1.z.object({
|
|
|
20
31
|
})
|
|
21
32
|
.optional(),
|
|
22
33
|
});
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated Use credentials instead of apiKey.
|
|
36
|
+
* Legacy config schema for backwards compatibility.
|
|
37
|
+
*/
|
|
38
|
+
exports.LegacyUploaderConfigSchema = zod_1.z.object({
|
|
39
|
+
baseUrl: zod_1.z.string().url(),
|
|
40
|
+
apiKey: zod_1.z.string().min(1),
|
|
41
|
+
timeout: zod_1.z.number().positive().optional().default(30000),
|
|
42
|
+
patchAdams: zod_1.z
|
|
43
|
+
.object({
|
|
44
|
+
enabled: zod_1.z.boolean().default(true),
|
|
45
|
+
remoteDomain: zod_1.z.string().url(),
|
|
46
|
+
})
|
|
47
|
+
.optional(),
|
|
48
|
+
});
|
|
23
49
|
// =============================================================================
|
|
24
50
|
// Upload Options
|
|
25
51
|
// =============================================================================
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEnE,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEnE,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,wEAAwE;IACxE,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAEzB;;;OAGG;IACH,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5B,CAAC;IAEF,wDAAwD;IACxD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAExD;;;OAGG;IACH,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IAE7D,+CAA+C;IAC/C,UAAU,EAAE,OAAC;SACV,MAAM,CAAC;QACN,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;KAC/B,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH;;;GAGG;AACU,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACzB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACxD,UAAU,EAAE,OAAC;SACV,MAAM,CAAC;QACN,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;KAC/B,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAyBH,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEnE,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,8BAA8B;IAC9B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3B,gDAAgD;IAChD,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEjC,+BAA+B;IAC/B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE5B,qCAAqC;IACrC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAElC,gCAAgC;IAChC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE7B,8CAA8C;IAC9C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE/B,8BAA8B;IAC9B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEnC,gCAAgC;IAChC,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAErC,gCAAgC;IAChC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAElC,6BAA6B;IAC7B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE3B,wBAAwB;IACxB,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAE9B,gCAAgC;IAChC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEhC,0CAA0C;IAC1C,KAAK,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAE7B,wCAAwC;IACxC,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAEjC,6CAA6C;IAC7C,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAIH,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEnE,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,2CAA2C;IAC3C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7B,6BAA6B;IAC7B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE3B,qCAAqC;IACrC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAElC,gCAAgC;IAChC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE7B,8BAA8B;IAC9B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE/B,8BAA8B;IAC9B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEnC,wBAAwB;IACxB,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAE9B,gCAAgC;IAChC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEhC,0CAA0C;IAC1C,KAAK,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAE7B,wCAAwC;IACxC,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAEjC,6CAA6C;IAC7C,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@package-uploader/core",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Patch and upload Rise courses to LMS platforms",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"bin": {
|
|
8
|
-
"package-upload": "./dist/cli.js"
|
|
8
|
+
"package-upload": "./dist/cli.js",
|
|
9
|
+
"package-upload-server": "./dist/server.js"
|
|
9
10
|
},
|
|
10
11
|
"files": [
|
|
11
|
-
"dist"
|
|
12
|
+
"dist",
|
|
13
|
+
"public",
|
|
14
|
+
".env.example"
|
|
12
15
|
],
|
|
13
16
|
"scripts": {
|
|
14
17
|
"build": "tsc",
|
|
15
18
|
"dev": "tsc --watch",
|
|
19
|
+
"server": "node dist/server.js",
|
|
16
20
|
"lint": "eslint src --ext .ts",
|
|
17
21
|
"test": "vitest",
|
|
18
22
|
"prepublishOnly": "npm run build"
|
|
@@ -35,11 +39,18 @@
|
|
|
35
39
|
},
|
|
36
40
|
"dependencies": {
|
|
37
41
|
"commander": "^12.0.0",
|
|
42
|
+
"cors": "^2.8.5",
|
|
43
|
+
"dotenv": "^16.3.1",
|
|
44
|
+
"express": "^4.18.2",
|
|
38
45
|
"form-data": "^4.0.0",
|
|
46
|
+
"multer": "^1.4.5-lts.1",
|
|
39
47
|
"node-fetch": "^3.3.2",
|
|
40
48
|
"zod": "^3.22.4"
|
|
41
49
|
},
|
|
42
50
|
"devDependencies": {
|
|
51
|
+
"@types/cors": "^2.8.17",
|
|
52
|
+
"@types/express": "^4.17.21",
|
|
53
|
+
"@types/multer": "^1.4.11",
|
|
43
54
|
"@types/node": "^20.11.0",
|
|
44
55
|
"typescript": "^5.3.3",
|
|
45
56
|
"vitest": "^1.2.0"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-success: #10b981;--color-error: #ef4444;--color-warning: #f59e0b;--color-bg: #ffffff;--color-bg-secondary: #f9fafb;--color-border: #e5e7eb;--color-text: #111827;--color-text-muted: #6b7280;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .1);--shadow-lg: 0 4px 6px rgba(0, 0, 0, .1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:var(--color-bg-secondary);color:var(--color-text);line-height:1.5}.app{min-height:100vh;display:flex;flex-direction:column}.header{background:var(--color-bg);border-bottom:1px solid var(--color-border);padding:1rem 2rem;display:flex;align-items:center;justify-content:space-between}.header h1{font-size:1.25rem;font-weight:600}.nav{display:flex;gap:1rem}.nav a{color:var(--color-text-muted);text-decoration:none;padding:.5rem 1rem;border-radius:var(--radius);transition:all .2s}.nav a:hover,.nav a.active{color:var(--color-primary);background:#2563eb1a}.main{flex:1;padding:2rem;max-width:1200px;margin:0 auto;width:100%}.card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow)}.card+.card{margin-top:1rem}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.card-title{font-size:1.125rem;font-weight:600}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:var(--radius);border:none;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary:hover{background:var(--color-bg-secondary)}.btn:disabled{opacity:.5;cursor:not-allowed}.dropzone{border:2px dashed var(--color-border);border-radius:var(--radius);padding:3rem;text-align:center;cursor:pointer;transition:all .2s}.dropzone:hover,.dropzone.active{border-color:var(--color-primary);background:#2563eb0d}.dropzone p{color:var(--color-text-muted);margin-top:.5rem}.file-list{margin-top:1rem}.file-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem;border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:.5rem}.file-item .name{font-weight:500}.file-item .size{color:var(--color-text-muted);font-size:.875rem}.file-item .status{display:flex;align-items:center;gap:.5rem}.status-pending{color:var(--color-text-muted)}.status-uploading{color:var(--color-primary)}.status-success{color:var(--color-success)}.status-error{color:var(--color-error)}.document-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.document-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;transition:all .2s}.document-card:hover{box-shadow:var(--shadow-lg)}.document-card .title{font-weight:600;margin-bottom:.25rem}.document-card .meta{color:var(--color-text-muted);font-size:.875rem;margin-bottom:.75rem}.document-card .actions{display:flex;gap:.5rem}.folder-tree{border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;max-height:400px;overflow-y:auto}.folder-item{padding:.5rem;cursor:pointer;border-radius:var(--radius);display:flex;align-items:center;gap:.5rem}.folder-item:hover{background:var(--color-bg-secondary)}.folder-item.selected{background:#2563eb1a;color:var(--color-primary)}.folder-item .icon{font-size:1.25rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--color-bg);border-radius:var(--radius);padding:1.5rem;max-width:500px;width:90%;max-height:80vh;overflow-y:auto}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.modal-title{font-size:1.125rem;font-weight:600}.modal-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-text-muted)}.form-group{margin-bottom:1rem}.form-label{display:block;font-weight:500;margin-bottom:.25rem}.form-input,.form-select{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:1rem}.form-input:focus,.form-select:focus{outline:none;border-color:var(--color-primary)}.spinner{width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:3rem;color:var(--color-text-muted)}.empty-state h3{color:var(--color-text);margin-bottom:.5rem}.alert{padding:1rem;border-radius:var(--radius);margin-bottom:1rem}.alert-success{background:#10b9811a;border:1px solid var(--color-success);color:var(--color-success)}.alert-error{background:#ef44441a;border:1px solid var(--color-error);color:var(--color-error)}.alert-warning{background:#f59e0b1a;border:1px solid var(--color-warning);color:var(--color-warning)}
|