@vue-skuilder/express 0.1.11-2 → 0.1.11-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/dist/app-factory.d.ts +1 -1
- package/dist/app-factory.d.ts.map +1 -1
- package/dist/app-factory.js +27 -6
- package/dist/app-factory.js.map +1 -1
- package/dist/app.js +30 -1
- package/dist/app.js.map +1 -1
- package/dist/assets/classroomDesignDoc.js +24 -0
- package/dist/assets/courseValidateDocUpdate.js +56 -0
- package/dist/assets/get-tagsDesignDoc.json +9 -0
- package/dist/attachment-preprocessing/index.d.ts +1 -1
- package/dist/attachment-preprocessing/index.d.ts.map +1 -1
- package/dist/attachment-preprocessing/index.js +44 -23
- package/dist/attachment-preprocessing/index.js.map +1 -1
- package/dist/client-requests/classroom-requests.d.ts.map +1 -1
- package/dist/client-requests/classroom-requests.js +2 -2
- package/dist/client-requests/classroom-requests.js.map +1 -1
- package/dist/client-requests/course-requests.js +5 -5
- package/dist/client-requests/course-requests.js.map +1 -1
- package/dist/couchdb/authentication.js +4 -4
- package/dist/couchdb/authentication.js.map +1 -1
- package/dist/couchdb/index.d.ts +4 -3
- package/dist/couchdb/index.d.ts.map +1 -1
- package/dist/couchdb/index.js +29 -27
- package/dist/couchdb/index.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/env.d.ts +1 -0
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js +3 -21
- package/dist/utils/env.js.map +1 -1
- package/package.json +4 -4
- package/src/app-factory.ts +34 -15
- package/src/app.ts +36 -1
- package/src/attachment-preprocessing/index.ts +57 -31
- package/src/client-requests/classroom-requests.ts +3 -2
- package/src/client-requests/course-requests.ts +5 -5
- package/src/couchdb/authentication.ts +4 -4
- package/src/couchdb/index.ts +38 -32
- package/src/types.ts +16 -10
- package/src/utils/env.ts +4 -25
package/dist/app-factory.d.ts
CHANGED
|
@@ -18,5 +18,5 @@ export declare function createExpressApp(config: AppConfig): express.Application
|
|
|
18
18
|
* Initialize background services and database connections.
|
|
19
19
|
* This should be called after the server starts listening.
|
|
20
20
|
*/
|
|
21
|
-
export declare function initializeServices(): Promise<void>;
|
|
21
|
+
export declare function initializeServices(config: AppConfig): Promise<void>;
|
|
22
22
|
//# sourceMappingURL=app-factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-factory.d.ts","sourceRoot":"","sources":["../src/app-factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app-factory.d.ts","sourceRoot":"","sources":["../src/app-factory.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,aAAa,EAEd,MAAM,sBAAsB,CAAC;AAK9B,OAAO,OAAO,MAAM,SAAS,CAAC;AAmB9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,WAAW,gBAAiB,SAAQ,OAAO,CAAC,OAAO;IACvD,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAwBhE;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CA6LvE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CzE"}
|
package/dist/app-factory.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { initializeDataLayer } from '@vue-skuilder/db';
|
|
1
2
|
import { ServerRequestType as RequestEnum, prepareNote55, } from '@vue-skuilder/common';
|
|
2
3
|
import { CourseLookup } from '@vue-skuilder/db';
|
|
3
4
|
import cookieParser from 'cookie-parser';
|
|
@@ -9,7 +10,7 @@ import { ClassroomCreationQueue, ClassroomJoinQueue, ClassroomLeaveQueue, } from
|
|
|
9
10
|
import { CourseCreationQueue, initCourseDBDesignDocInsert, } from './client-requests/course-requests.js';
|
|
10
11
|
import { packCourse } from './client-requests/pack-requests.js';
|
|
11
12
|
import { requestIsAuthenticated } from './couchdb/authentication.js';
|
|
12
|
-
import
|
|
13
|
+
import { getCouchDB, initializeCouchDB, useOrCreateCourseDB, useOrCreateDB } from './couchdb/index.js';
|
|
13
14
|
import { classroomDbDesignDoc } from './design-docs.js';
|
|
14
15
|
import logger from './logger.js';
|
|
15
16
|
import logsRouter from './routes/logs.js';
|
|
@@ -30,6 +31,7 @@ function convertToEnvConfig(config) {
|
|
|
30
31
|
COUCHDB_PASSWORD: config.couchdb.password,
|
|
31
32
|
VERSION: config.version,
|
|
32
33
|
NODE_ENV: config.nodeEnv || 'development',
|
|
34
|
+
COURSE_IDS: config.courseIDs || [],
|
|
33
35
|
};
|
|
34
36
|
}
|
|
35
37
|
/**
|
|
@@ -42,6 +44,8 @@ export function createExpressApp(config) {
|
|
|
42
44
|
const envConfig = isExpressServerConfig(config)
|
|
43
45
|
? convertToEnvConfig(config)
|
|
44
46
|
: config;
|
|
47
|
+
// Initialize CouchDB connection
|
|
48
|
+
initializeCouchDB(envConfig);
|
|
45
49
|
// Configure CORS - use config if available, otherwise defaults
|
|
46
50
|
const corsOptions = isExpressServerConfig(config) && config.cors
|
|
47
51
|
? config.cors
|
|
@@ -86,8 +90,8 @@ export function createExpressApp(config) {
|
|
|
86
90
|
logger.info(`Delete request made on course ${req.params.courseID}...`);
|
|
87
91
|
const auth = await requestIsAuthenticated(req);
|
|
88
92
|
if (auth) {
|
|
89
|
-
logger.info(
|
|
90
|
-
const dbResp = await
|
|
93
|
+
logger.info(` Authenticated delete request made...`);
|
|
94
|
+
const dbResp = await getCouchDB().db.destroy(`coursedb-${req.params.courseID}`);
|
|
91
95
|
if (!dbResp.ok) {
|
|
92
96
|
res.json({ success: false, error: dbResp });
|
|
93
97
|
return;
|
|
@@ -143,7 +147,7 @@ export function createExpressApp(config) {
|
|
|
143
147
|
}
|
|
144
148
|
else if (body.type === RequestEnum.ADD_COURSE_DATA) {
|
|
145
149
|
const payload = prepareNote55(body.data.courseID, body.data.codeCourse, body.data.shape, body.data.data, body.data.author, body.data.tags, body.data.uploads);
|
|
146
|
-
|
|
150
|
+
getCouchDB().use(`coursedb-${body.data.courseID}`)
|
|
147
151
|
.insert(payload)
|
|
148
152
|
.then((r) => {
|
|
149
153
|
logger.info(`\t\t\tCouchDB insert result: ${JSON.stringify(r)}`);
|
|
@@ -184,7 +188,7 @@ export function createExpressApp(config) {
|
|
|
184
188
|
});
|
|
185
189
|
app.get('/', (_req, res) => {
|
|
186
190
|
let status = `Express service is running.\nVersion: ${envConfig.VERSION}\n`;
|
|
187
|
-
|
|
191
|
+
getCouchDB().session()
|
|
188
192
|
.then((s) => {
|
|
189
193
|
if (s.ok) {
|
|
190
194
|
status += 'Couchdb is running.\n';
|
|
@@ -206,7 +210,24 @@ export function createExpressApp(config) {
|
|
|
206
210
|
* Initialize background services and database connections.
|
|
207
211
|
* This should be called after the server starts listening.
|
|
208
212
|
*/
|
|
209
|
-
export async function initializeServices() {
|
|
213
|
+
export async function initializeServices(config) {
|
|
214
|
+
// Initialize data layer first
|
|
215
|
+
const envConfig = isExpressServerConfig(config)
|
|
216
|
+
? convertToEnvConfig(config)
|
|
217
|
+
: config;
|
|
218
|
+
await initializeDataLayer({
|
|
219
|
+
type: 'couch',
|
|
220
|
+
options: {
|
|
221
|
+
COUCHDB_PASSWORD: envConfig.COUCHDB_PASSWORD,
|
|
222
|
+
COUCHDB_USERNAME: envConfig.COUCHDB_ADMIN,
|
|
223
|
+
COUCHDB_SERVER_PROTOCOL: envConfig.COUCHDB_PROTOCOL,
|
|
224
|
+
COUCHDB_SERVER_URL: envConfig.COUCHDB_SERVER,
|
|
225
|
+
},
|
|
226
|
+
}).catch((e) => {
|
|
227
|
+
logger.error('Error initializing data layer:', e);
|
|
228
|
+
// In programmatic mode, we shouldn't exit the process, but let the error propagate
|
|
229
|
+
throw e;
|
|
230
|
+
});
|
|
210
231
|
try {
|
|
211
232
|
// start the change-listener that does post-processing on user
|
|
212
233
|
// media uploads
|
package/dist/app-factory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-factory.js","sourceRoot":"","sources":["../src/app-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,IAAI,WAAW,EAEhC,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,WAAW,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"app-factory.js","sourceRoot":"","sources":["../src/app-factory.ts"],"names":[],"mappings":"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"}
|
package/dist/app.js
CHANGED
|
@@ -1,6 +1,35 @@
|
|
|
1
1
|
import { createExpressApp, initializeServices } from './app-factory.js';
|
|
2
2
|
import logger from './logger.js';
|
|
3
3
|
import ENV from './utils/env.js';
|
|
4
|
+
import dotenv from 'dotenv';
|
|
5
|
+
import { initializeCouchDB } from './couchdb/index.js';
|
|
6
|
+
import { initializeDataLayer } from '@vue-skuilder/db';
|
|
7
|
+
dotenv.config({
|
|
8
|
+
path: process.argv && process.argv.length == 3
|
|
9
|
+
? process.argv[2]
|
|
10
|
+
: '.env.development',
|
|
11
|
+
});
|
|
12
|
+
// Now that dotenv is configured, we can validate the environment
|
|
13
|
+
const requiredVars = ['COUCHDB_SERVER', 'COUCHDB_PROTOCOL', 'COUCHDB_ADMIN', 'COUCHDB_PASSWORD', 'VERSION', 'NODE_ENV'];
|
|
14
|
+
const missingVars = requiredVars.filter(v => !process.env[v]);
|
|
15
|
+
if (missingVars.length > 0) {
|
|
16
|
+
missingVars.forEach(v => logger.error(`${v} not defined in environment`));
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
// Initialize CouchDB connection
|
|
20
|
+
initializeCouchDB(ENV);
|
|
21
|
+
initializeDataLayer({
|
|
22
|
+
type: 'couch',
|
|
23
|
+
options: {
|
|
24
|
+
COUCHDB_PASSWORD: ENV.COUCHDB_PASSWORD,
|
|
25
|
+
COUCHDB_USERNAME: ENV.COUCHDB_ADMIN,
|
|
26
|
+
COUCHDB_SERVER_PROTOCOL: ENV.COUCHDB_PROTOCOL,
|
|
27
|
+
COUCHDB_SERVER_URL: ENV.COUCHDB_SERVER,
|
|
28
|
+
},
|
|
29
|
+
}).catch((e) => {
|
|
30
|
+
logger.error('Error initializing data layer:', e);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
});
|
|
4
33
|
process.on('unhandledRejection', (reason, promise) => {
|
|
5
34
|
logger.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
|
6
35
|
});
|
|
@@ -18,7 +47,7 @@ const init = async () => {
|
|
|
18
47
|
while (!listening) {
|
|
19
48
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
20
49
|
}
|
|
21
|
-
await initializeServices();
|
|
50
|
+
await initializeServices(ENV);
|
|
22
51
|
};
|
|
23
52
|
init().catch((e) => {
|
|
24
53
|
logger.error(`Error initializing app: ${JSON.stringify(e)}`);
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,GAAG,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
function (newDoc, oldDoc, userCtx, secObj) {
|
|
2
|
+
// from https://github.com/iriscouch/manage_couchdb/blob/master/js/validate_doc_update.js
|
|
3
|
+
|
|
4
|
+
var ddoc = this;
|
|
5
|
+
|
|
6
|
+
secObj.admins = secObj.admins || {};
|
|
7
|
+
secObj.admins.names = secObj.admins.names || [];
|
|
8
|
+
secObj.admins.roles = secObj.admins.roles || [];
|
|
9
|
+
|
|
10
|
+
var IS_DB_ADMIN = false;
|
|
11
|
+
if (~userCtx.roles.indexOf('_admin'))
|
|
12
|
+
IS_DB_ADMIN = true;
|
|
13
|
+
if (~secObj.admins.names.indexOf(userCtx.name))
|
|
14
|
+
IS_DB_ADMIN = true;
|
|
15
|
+
for (var i = 0; i < userCtx.roles; i++)
|
|
16
|
+
if (~secObj.admins.roles.indexOf(userCtx.roles[i]))
|
|
17
|
+
IS_DB_ADMIN = true;
|
|
18
|
+
|
|
19
|
+
if (ddoc.access && ddoc.access.read_only)
|
|
20
|
+
if (IS_DB_ADMIN)
|
|
21
|
+
log('Admin change on read-only db: ' + newDoc._id);
|
|
22
|
+
else
|
|
23
|
+
throw { 'forbidden': 'This database is read-only' };
|
|
24
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
function(newDoc, oldDoc, userCtx, secObj) {
|
|
2
|
+
// Skip validation for deletions
|
|
3
|
+
if (newDoc._deleted) return;
|
|
4
|
+
|
|
5
|
+
// Always allow admins to do anything
|
|
6
|
+
if (userCtx.roles.indexOf('_admin') !== -1) return;
|
|
7
|
+
|
|
8
|
+
// For CourseConfig document - we need special handling
|
|
9
|
+
if (newDoc._id === 'CourseConfig') {
|
|
10
|
+
// Allow the creator or admins listed in the document to modify it
|
|
11
|
+
if (oldDoc && oldDoc.creator === userCtx.name) return;
|
|
12
|
+
if (oldDoc && oldDoc.admins && Array.isArray(oldDoc.admins) && oldDoc.admins.indexOf(userCtx.name) !== -1) return;
|
|
13
|
+
|
|
14
|
+
// For updates, if user is not creator or admin, deny
|
|
15
|
+
if (oldDoc) {
|
|
16
|
+
throw({forbidden: "Only course creator or admins can modify course configuration"});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// For new course config, allow (initial creation is secured at API level)
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// For all other documents
|
|
24
|
+
var isAdmin = false;
|
|
25
|
+
var isModerator = false;
|
|
26
|
+
|
|
27
|
+
// Course admins and moderators can edit anything
|
|
28
|
+
// (Since we can't check CourseConfig directly, we rely on document author for regular docs)
|
|
29
|
+
|
|
30
|
+
// Document has author field that matches current user - allow
|
|
31
|
+
if (oldDoc && oldDoc.author === userCtx.name) return;
|
|
32
|
+
|
|
33
|
+
// Allow document creation by any authenticated user
|
|
34
|
+
if (!oldDoc) {
|
|
35
|
+
if (!userCtx.name) {
|
|
36
|
+
throw({forbidden: "You must be logged in to create documents"});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Ensure new documents have an author field that matches the current user
|
|
40
|
+
if (!newDoc.author || newDoc.author !== userCtx.name) {
|
|
41
|
+
throw({forbidden: "Document author must match your username"});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// For updates to existing documents, deny if not the original author
|
|
48
|
+
if (oldDoc && oldDoc.author && oldDoc.author !== userCtx.name) {
|
|
49
|
+
throw({forbidden: "You can only modify your own documents"});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Special case for design documents - only admins can modify (handled above)
|
|
53
|
+
if (newDoc._id.startsWith('_design/')) {
|
|
54
|
+
throw({forbidden: "Only admins can modify design documents"});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_id": "_design/getTags",
|
|
3
|
+
"views": {
|
|
4
|
+
"get-tags": {
|
|
5
|
+
"map": "function (doc) {\n if (doc.docType && doc.docType === \"TAG\"\n) {\n for (var cardIndex in doc.taggedCards){\n emit(doc.taggedCards[cardIndex], {\n docType: doc.docType,\n name: doc.name,\n snippit: doc.snippit,\n wiki: '',\n taggedCards: []\n });\n }\n }\n}"
|
|
6
|
+
}
|
|
7
|
+
},
|
|
8
|
+
"language": "javascript"
|
|
9
|
+
}
|
|
@@ -7,5 +7,5 @@ export declare function postProcessCourse(courseID: string): void;
|
|
|
7
7
|
* Connect to CouchDB, monitor changes to uploaded card data,
|
|
8
8
|
* perform post-processing on uploaded media
|
|
9
9
|
*/
|
|
10
|
-
export default function postProcess(): Promise<void>;
|
|
10
|
+
export default function postProcess(courseIDs?: string[]): Promise<void>;
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/attachment-preprocessing/index.ts"],"names":[],"mappings":"AA2BA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CA2BxD;AAED;;;GAGG;AACH,wBAA8B,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/attachment-preprocessing/index.ts"],"names":[],"mappings":"AA2BA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CA2BxD;AAED;;;GAGG;AACH,wBAA8B,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsE7E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { getCouchDB } from '../couchdb/index.js';
|
|
2
2
|
import { normalize } from './normalize.js';
|
|
3
3
|
import AsyncProcessQueue from '../utils/processQueue.js';
|
|
4
4
|
import logger from '../logger.js';
|
|
@@ -15,7 +15,7 @@ export function postProcessCourse(courseID) {
|
|
|
15
15
|
logger.info(`Following course ${courseID}`);
|
|
16
16
|
const crsString = `coursedb-${courseID}`;
|
|
17
17
|
// Get database instance
|
|
18
|
-
const db =
|
|
18
|
+
const db = getCouchDB().use(crsString);
|
|
19
19
|
const courseFilter = filterFactory(courseID);
|
|
20
20
|
db.changesReader
|
|
21
21
|
.start({
|
|
@@ -39,29 +39,45 @@ export function postProcessCourse(courseID) {
|
|
|
39
39
|
* Connect to CouchDB, monitor changes to uploaded card data,
|
|
40
40
|
* perform post-processing on uploaded media
|
|
41
41
|
*/
|
|
42
|
-
export default async function postProcess() {
|
|
42
|
+
export default async function postProcess(courseIDs) {
|
|
43
43
|
try {
|
|
44
44
|
logger.info(`Following all course databases for changes...`);
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
let processedCourseIds = new Set();
|
|
46
|
+
if (courseIDs && courseIDs.length > 0) {
|
|
47
|
+
processedCourseIds = new Set(courseIDs);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Existing behavior for platform-ui courses
|
|
49
51
|
try {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
const courses = await CourseLookup.allCourseWare();
|
|
53
|
+
for (const course of courses) {
|
|
54
|
+
try {
|
|
55
|
+
postProcessCourse(course._id);
|
|
56
|
+
processedCourseIds.add(`coursedb-${course._id}`);
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
logger.error(`Error processing course ${course._id}: ${e}`);
|
|
60
|
+
throw e;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
52
63
|
}
|
|
53
64
|
catch (e) {
|
|
54
|
-
|
|
55
|
-
|
|
65
|
+
// Handle CourseLookup.allCourseWare() failure gracefully
|
|
66
|
+
if (e && typeof e === 'object' && 'error' in e && e.error === 'not_found') {
|
|
67
|
+
logger.warn('Course lookup database not found - skipping platform course discovery');
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
logger.error(`Error fetching course list from CourseLookup: ${e}`);
|
|
71
|
+
}
|
|
72
|
+
// Continue to studio mode discovery even if platform courses fail
|
|
56
73
|
}
|
|
57
74
|
}
|
|
58
75
|
// Studio mode: discover additional databases not in coursedb-lookup
|
|
59
76
|
if (ENV.NODE_ENV === 'studio') {
|
|
60
77
|
logger.info('Studio mode detected: scanning for additional course databases...');
|
|
61
78
|
try {
|
|
62
|
-
const allDbs = await
|
|
63
|
-
const studioDbs = allDbs.filter(db => db.startsWith('coursedb-') &&
|
|
64
|
-
!processedCourseIds.has(db));
|
|
79
|
+
const allDbs = await getCouchDB().db.list();
|
|
80
|
+
const studioDbs = allDbs.filter((db) => db.startsWith('coursedb-') && !processedCourseIds.has(db));
|
|
65
81
|
logger.info(`Found ${studioDbs.length} potential studio databases`);
|
|
66
82
|
for (const studioDb of studioDbs) {
|
|
67
83
|
const courseId = studioDb.replace('coursedb-', '');
|
|
@@ -89,7 +105,7 @@ export default async function postProcess() {
|
|
|
89
105
|
}
|
|
90
106
|
}
|
|
91
107
|
function filterFactory(courseID) {
|
|
92
|
-
const courseDatabase =
|
|
108
|
+
const courseDatabase = getCouchDB().use(`coursedb-${courseID}`);
|
|
93
109
|
return async function filterChanges(changeItem) {
|
|
94
110
|
try {
|
|
95
111
|
const docNoAttachments = await courseDatabase.get(changeItem.id, {
|
|
@@ -135,7 +151,7 @@ async function processDocAttachments(request) {
|
|
|
135
151
|
status: 'warning',
|
|
136
152
|
};
|
|
137
153
|
}
|
|
138
|
-
const courseDatabase =
|
|
154
|
+
const courseDatabase = getCouchDB().use(`coursedb-${request.courseID}`);
|
|
139
155
|
const doc = await courseDatabase.get(request.docID, {
|
|
140
156
|
attachments: true,
|
|
141
157
|
att_encoding_info: true,
|
|
@@ -180,23 +196,28 @@ async function processDocAttachments(request) {
|
|
|
180
196
|
*/
|
|
181
197
|
async function hasCourseConfig(databaseName) {
|
|
182
198
|
try {
|
|
183
|
-
const db =
|
|
199
|
+
const db = getCouchDB().use(databaseName);
|
|
184
200
|
// Try to find a course configuration document
|
|
185
201
|
// Course databases should have documents with course metadata
|
|
186
202
|
const result = await db.find({
|
|
187
203
|
selector: {
|
|
188
204
|
$or: [
|
|
189
|
-
{
|
|
190
|
-
{
|
|
191
|
-
{
|
|
192
|
-
{
|
|
193
|
-
]
|
|
205
|
+
{ type: 'course' },
|
|
206
|
+
{ shape: { $exists: true } },
|
|
207
|
+
{ course_id: { $exists: true } },
|
|
208
|
+
{ courseID: { $exists: true } },
|
|
209
|
+
],
|
|
194
210
|
},
|
|
195
|
-
limit: 1
|
|
211
|
+
limit: 1,
|
|
196
212
|
});
|
|
197
213
|
return result.docs && result.docs.length > 0;
|
|
198
214
|
}
|
|
199
215
|
catch (e) {
|
|
216
|
+
// Handle specific database not found errors
|
|
217
|
+
if (e && typeof e === 'object' && 'error' in e && e.error === 'not_found') {
|
|
218
|
+
logger.debug(`Database ${databaseName} does not exist`);
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
200
221
|
logger.debug(`Error checking course config for ${databaseName}: ${e}`);
|
|
201
222
|
return false;
|
|
202
223
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/attachment-preprocessing/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/attachment-preprocessing/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classroom-requests.d.ts","sourceRoot":"","sources":["../../src/client-requests/classroom-requests.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EAIf,MAAM,EACP,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"classroom-requests.d.ts","sourceRoot":"","sources":["../../src/client-requests/classroom-requests.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EAIf,MAAM,EACP,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,iBAA6B,MAAM,0BAA0B,CAAC;AAGrE,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAuMpD,eAAO,MAAM,mBAAmB;;;cAEO,MAAM;yDAE5B,CAAC;AAElB,eAAO,MAAM,kBAAkB;;;;;;;;;;SAIf,CAAC;AAEjB,eAAO,MAAM,sBAAsB;;;;;SAIjB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import hashids from 'hashids';
|
|
2
2
|
import { Status, } from '@vue-skuilder/common';
|
|
3
3
|
import { classroomDbDesignDoc } from '../design-docs.js';
|
|
4
|
-
import
|
|
4
|
+
import { docCount, useOrCreateDB, getCouchDB, } from '../couchdb/index.js';
|
|
5
5
|
import AsyncProcessQueue from '../utils/processQueue.js';
|
|
6
6
|
import logger from '../logger.js';
|
|
7
7
|
export const CLASSROOM_DB_LOOKUP = 'classdb-lookup';
|
|
@@ -67,7 +67,7 @@ async function createClassroom(config) {
|
|
|
67
67
|
logger.info(`CreateClass Request:
|
|
68
68
|
${JSON.stringify(config)}`);
|
|
69
69
|
const num = (await docCount(CLASSROOM_DB_LOOKUP)) + 1; //
|
|
70
|
-
const uuid = (await
|
|
70
|
+
const uuid = (await getCouchDB().uuids(1)).uuids[0];
|
|
71
71
|
const hasher = new hashids('', 6, 'abcdefghijklmnopqrstuvwxyz123456789');
|
|
72
72
|
const studentDbName = `classdb-student-${uuid}`;
|
|
73
73
|
const teacherDbName = `classdb-teacher-${uuid}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classroom-requests.js","sourceRoot":"","sources":["../../src/client-requests/classroom-requests.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAKL,MAAM,GACP,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"classroom-requests.js","sourceRoot":"","sources":["../../src/client-requests/classroom-requests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { log } from 'util';
|
|
2
|
-
import
|
|
2
|
+
import { getCouchDB } from '../couchdb/index.js';
|
|
3
3
|
import { postProcessCourse } from '../attachment-preprocessing/index.js';
|
|
4
4
|
import AsyncProcessQueue from '../utils/processQueue.js';
|
|
5
5
|
import logger from '../logger.js';
|
|
@@ -14,7 +14,7 @@ function getCourseDBName(courseID) {
|
|
|
14
14
|
* @param doc
|
|
15
15
|
*/
|
|
16
16
|
function insertDesignDoc(courseID, doc) {
|
|
17
|
-
const courseDB =
|
|
17
|
+
const courseDB = getCouchDB().use(courseID);
|
|
18
18
|
courseDB
|
|
19
19
|
.get(doc._id)
|
|
20
20
|
.then((priorDoc) => {
|
|
@@ -44,7 +44,7 @@ export async function initCourseDBDesignDocInsert() {
|
|
|
44
44
|
insertDesignDoc(getCourseDBName(c._id), dd);
|
|
45
45
|
});
|
|
46
46
|
// Update security object for public courses
|
|
47
|
-
const courseDB =
|
|
47
|
+
const courseDB = getCouchDB().use(getCourseDBName(c._id));
|
|
48
48
|
courseDB
|
|
49
49
|
.get('CourseConfig')
|
|
50
50
|
.then((configDoc) => {
|
|
@@ -82,9 +82,9 @@ async function createCourse(cfg) {
|
|
|
82
82
|
throw new Error('Course ID not found');
|
|
83
83
|
}
|
|
84
84
|
const courseDBName = getCourseDBName(cfg.courseID);
|
|
85
|
-
const dbCreation = await
|
|
85
|
+
const dbCreation = await getCouchDB().db.create(courseDBName);
|
|
86
86
|
if (dbCreation.ok) {
|
|
87
|
-
const courseDB =
|
|
87
|
+
const courseDB = getCouchDB().use(courseDBName);
|
|
88
88
|
courseDB
|
|
89
89
|
.insert({
|
|
90
90
|
_id: 'CourseConfig',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course-requests.js","sourceRoot":"","sources":["../../src/client-requests/course-requests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE3B,OAAO,
|
|
1
|
+
{"version":3,"file":"course-requests.js","sourceRoot":"","sources":["../../src/client-requests/course-requests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Nano from 'nano';
|
|
2
|
-
import {
|
|
2
|
+
import { getCouchURLWithProtocol } from './index.js';
|
|
3
3
|
import logger from '../logger.js';
|
|
4
4
|
export async function requestIsAdminAuthenticated(req) {
|
|
5
5
|
logRequest(req);
|
|
@@ -11,7 +11,7 @@ export async function requestIsAdminAuthenticated(req) {
|
|
|
11
11
|
else {
|
|
12
12
|
return await Nano({
|
|
13
13
|
cookie: 'AuthSession=' + authCookie,
|
|
14
|
-
url:
|
|
14
|
+
url: getCouchURLWithProtocol(),
|
|
15
15
|
})
|
|
16
16
|
.session()
|
|
17
17
|
.then((s) => {
|
|
@@ -42,7 +42,7 @@ export async function requestIsAuthenticated(req) {
|
|
|
42
42
|
const username = auth[0];
|
|
43
43
|
const password = auth[1];
|
|
44
44
|
const authResult = await Nano({
|
|
45
|
-
url:
|
|
45
|
+
url: getCouchURLWithProtocol(),
|
|
46
46
|
}).auth(username, password);
|
|
47
47
|
return authResult.ok;
|
|
48
48
|
}
|
|
@@ -54,7 +54,7 @@ export async function requestIsAuthenticated(req) {
|
|
|
54
54
|
else {
|
|
55
55
|
return await Nano({
|
|
56
56
|
cookie: 'AuthSession=' + authCookie,
|
|
57
|
-
url:
|
|
57
|
+
url: getCouchURLWithProtocol(),
|
|
58
58
|
})
|
|
59
59
|
.session()
|
|
60
60
|
.then((s) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../src/couchdb/authentication.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,MAAM,MAAM,cAAc,CAAC;AAelC,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,GAAqB;IACrE,UAAU,CAAC,GAAG,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B,MAAM,UAAU,GAAW,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;IAEtF,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,IAAI,CAAC;YAChB,MAAM,EAAE,cAAc,GAAG,UAAU;YACnC,GAAG,EAAE,uBAAuB;
|
|
1
|
+
{"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../src/couchdb/authentication.ts"],"names":[],"mappings":"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"}
|