@vue-skuilder/express 0.1.11-9 → 0.1.12
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.map +1 -1
- package/dist/app-factory.js +8 -2
- package/dist/app-factory.js.map +1 -1
- package/dist/app.js +8 -6
- package/dist/app.js.map +1 -1
- package/dist/attachment-preprocessing/index.d.ts.map +1 -1
- package/dist/attachment-preprocessing/index.js +52 -6
- package/dist/attachment-preprocessing/index.js.map +1 -1
- package/dist/client-requests/course-requests.d.ts.map +1 -1
- package/dist/client-requests/course-requests.js +3 -0
- package/dist/client-requests/course-requests.js.map +1 -1
- package/dist/client-requests/pack-requests.d.ts +1 -0
- package/dist/client-requests/pack-requests.d.ts.map +1 -1
- package/dist/client-requests/pack-requests.js +39 -8
- package/dist/client-requests/pack-requests.js.map +1 -1
- package/dist/couchdb/index.d.ts.map +1 -1
- package/dist/couchdb/index.js +5 -2
- package/dist/couchdb/index.js.map +1 -1
- package/dist/design-docs.d.ts.map +1 -1
- package/dist/design-docs.js +22 -4
- package/dist/design-docs.js.map +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js +7 -6
- package/dist/utils/env.js.map +1 -1
- package/package.json +4 -4
- package/src/app-factory.ts +8 -2
- package/src/app.ts +9 -6
- package/src/attachment-preprocessing/index.ts +55 -9
- package/src/client-requests/course-requests.ts +3 -0
- package/src/client-requests/pack-requests.ts +46 -9
- package/src/couchdb/index.ts +26 -15
- package/src/design-docs.ts +27 -4
- package/src/utils/env.ts +7 -6
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,CA8LvE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDzE"}
|
package/dist/app-factory.js
CHANGED
|
@@ -168,7 +168,8 @@ export function createExpressApp(config) {
|
|
|
168
168
|
}
|
|
169
169
|
body.response = await packCourse({
|
|
170
170
|
courseId: body.courseId,
|
|
171
|
-
outputPath: body.outputPath
|
|
171
|
+
outputPath: body.outputPath,
|
|
172
|
+
couchdbUrl: body.couchdbUrl
|
|
172
173
|
});
|
|
173
174
|
res.json(body.response);
|
|
174
175
|
}
|
|
@@ -232,7 +233,12 @@ export async function initializeServices(config) {
|
|
|
232
233
|
// start the change-listener that does post-processing on user
|
|
233
234
|
// media uploads
|
|
234
235
|
void PostProcess();
|
|
235
|
-
|
|
236
|
+
initCourseDBDesignDocInsert().catch((error) => {
|
|
237
|
+
logger.error(`Error in initCourseDBDesignDocInsert background task: ${error}`);
|
|
238
|
+
if (error && typeof error === 'object') {
|
|
239
|
+
logger.error(`Full error details in initCourseDBDesignDocInsert: ${JSON.stringify(error)}`);
|
|
240
|
+
}
|
|
241
|
+
});
|
|
236
242
|
void useOrCreateDB('classdb-lookup');
|
|
237
243
|
try {
|
|
238
244
|
await (await useOrCreateDB('coursedb')).insert({
|
package/dist/app-factory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-factory.js","sourceRoot":"","sources":["../src/app-factory.ts"],"names":[],"mappings":"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
|
|
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,15 +1,17 @@
|
|
|
1
|
-
import { createExpressApp, initializeServices } from './app-factory.js';
|
|
2
|
-
import logger from './logger.js';
|
|
3
|
-
import ENV from './utils/env.js';
|
|
4
1
|
import dotenv from 'dotenv';
|
|
5
|
-
|
|
6
|
-
import { initializeDataLayer } from '@vue-skuilder/db';
|
|
2
|
+
// Load environment variables FIRST before importing any modules that depend on them
|
|
7
3
|
dotenv.config({
|
|
8
4
|
path: process.argv && process.argv.length == 3
|
|
9
5
|
? process.argv[2]
|
|
10
6
|
: '.env.development',
|
|
11
7
|
});
|
|
12
|
-
// Now
|
|
8
|
+
// Now import modules that depend on environment variables
|
|
9
|
+
import { createExpressApp, initializeServices } from './app-factory.js';
|
|
10
|
+
import logger from './logger.js';
|
|
11
|
+
import ENV from './utils/env.js';
|
|
12
|
+
import { initializeCouchDB } from './couchdb/index.js';
|
|
13
|
+
import { initializeDataLayer } from '@vue-skuilder/db';
|
|
14
|
+
// Validate that environment variables are loaded
|
|
13
15
|
const requiredVars = ['COUCHDB_SERVER', 'COUCHDB_PROTOCOL', 'COUCHDB_ADMIN', 'COUCHDB_PASSWORD', 'VERSION', 'NODE_ENV'];
|
|
14
16
|
const missingVars = requiredVars.filter(v => !process.env[v]);
|
|
15
17
|
if (missingVars.length > 0) {
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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,CAyCxD;AAED;;;GAGG;AACH,wBAA8B,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkF7E"}
|
|
@@ -12,10 +12,23 @@ const Q = new AsyncProcessQueue(processDocAttachments);
|
|
|
12
12
|
*/
|
|
13
13
|
export function postProcessCourse(courseID) {
|
|
14
14
|
try {
|
|
15
|
-
logger.info(`
|
|
15
|
+
logger.info(`postProcessCourse: Starting for courseID: ${courseID}`);
|
|
16
16
|
const crsString = `coursedb-${courseID}`;
|
|
17
|
+
logger.debug(`postProcessCourse: Using database name: ${crsString}`);
|
|
17
18
|
// Get database instance
|
|
18
19
|
const db = getCouchDB().use(crsString);
|
|
20
|
+
// Test database existence before setting up change listener
|
|
21
|
+
db.info().catch((e) => {
|
|
22
|
+
if (e && typeof e === 'object' && 'status' in e && e.status === 404) {
|
|
23
|
+
logger.error(`postProcessCourse: Database "${crsString}" does not exist. Expected database name may be incorrect for courseID: ${courseID}`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
logger.error(`postProcessCourse: Error checking database "${crsString}": ${e}`);
|
|
27
|
+
// Log full error details for debugging
|
|
28
|
+
if (e && typeof e === 'object') {
|
|
29
|
+
logger.error(`postProcessCourse: Full error details for ${crsString}:`, e);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
19
32
|
const courseFilter = filterFactory(courseID);
|
|
20
33
|
db.changesReader
|
|
21
34
|
.start({
|
|
@@ -68,6 +81,9 @@ export default async function postProcess(courseIDs) {
|
|
|
68
81
|
}
|
|
69
82
|
else {
|
|
70
83
|
logger.error(`Error fetching course list from CourseLookup: ${e}`);
|
|
84
|
+
if (e && typeof e === 'object' && 'status' in e && e.status === 404) {
|
|
85
|
+
logger.error(`Database connection failed - this might indicate a database name mismatch or connection issue`);
|
|
86
|
+
}
|
|
71
87
|
}
|
|
72
88
|
// Continue to studio mode discovery even if platform courses fail
|
|
73
89
|
}
|
|
@@ -77,11 +93,15 @@ export default async function postProcess(courseIDs) {
|
|
|
77
93
|
logger.info('Studio mode detected: scanning for additional course databases...');
|
|
78
94
|
try {
|
|
79
95
|
const allDbs = await getCouchDB().db.list();
|
|
96
|
+
logger.debug(`All databases found: ${allDbs.join(', ')}`);
|
|
80
97
|
const studioDbs = allDbs.filter((db) => db.startsWith('coursedb-') && !processedCourseIds.has(db));
|
|
81
|
-
logger.info(`Found ${studioDbs.length} potential studio databases`);
|
|
98
|
+
logger.info(`Found ${studioDbs.length} potential studio databases: ${studioDbs.join(', ')}`);
|
|
99
|
+
logger.debug(`Already processed course IDs: ${Array.from(processedCourseIds).join(', ')}`);
|
|
82
100
|
for (const studioDb of studioDbs) {
|
|
83
101
|
const courseId = studioDb.replace('coursedb-', '');
|
|
102
|
+
logger.debug(`Checking studio database: ${studioDb} (courseId: ${courseId})`);
|
|
84
103
|
try {
|
|
104
|
+
logger.debug(`Calling hasCourseConfig for: ${studioDb}`);
|
|
85
105
|
if (await hasCourseConfig(studioDb)) {
|
|
86
106
|
logger.info(`Starting postprocessing for studio database: ${studioDb}`);
|
|
87
107
|
postProcessCourse(courseId);
|
|
@@ -92,6 +112,10 @@ export default async function postProcess(courseIDs) {
|
|
|
92
112
|
}
|
|
93
113
|
catch (e) {
|
|
94
114
|
logger.error(`Error processing studio database ${studioDb}: ${e}`);
|
|
115
|
+
// Log the full error object for debugging
|
|
116
|
+
if (e && typeof e === 'object') {
|
|
117
|
+
logger.error(`Error details for ${studioDb}:`, e);
|
|
118
|
+
}
|
|
95
119
|
}
|
|
96
120
|
}
|
|
97
121
|
}
|
|
@@ -105,7 +129,9 @@ export default async function postProcess(courseIDs) {
|
|
|
105
129
|
}
|
|
106
130
|
}
|
|
107
131
|
function filterFactory(courseID) {
|
|
108
|
-
const
|
|
132
|
+
const databaseName = `coursedb-${courseID}`;
|
|
133
|
+
logger.debug(`filterFactory: Creating filter for database: ${databaseName}`);
|
|
134
|
+
const courseDatabase = getCouchDB().use(databaseName);
|
|
109
135
|
return async function filterChanges(changeItem) {
|
|
110
136
|
try {
|
|
111
137
|
const docNoAttachments = await courseDatabase.get(changeItem.id, {
|
|
@@ -196,7 +222,21 @@ async function processDocAttachments(request) {
|
|
|
196
222
|
*/
|
|
197
223
|
async function hasCourseConfig(databaseName) {
|
|
198
224
|
try {
|
|
225
|
+
logger.debug(`hasCourseConfig: Accessing database: ${databaseName}`);
|
|
199
226
|
const db = getCouchDB().use(databaseName);
|
|
227
|
+
// First check if database exists by trying to get info
|
|
228
|
+
try {
|
|
229
|
+
await db.info();
|
|
230
|
+
logger.debug(`hasCourseConfig: Database ${databaseName} exists, checking for course config`);
|
|
231
|
+
}
|
|
232
|
+
catch (infoError) {
|
|
233
|
+
if (infoError && typeof infoError === 'object' && 'status' in infoError && infoError.status === 404) {
|
|
234
|
+
logger.debug(`hasCourseConfig: Database ${databaseName} does not exist (404)`);
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
logger.warn(`hasCourseConfig: Error getting info for database ${databaseName}: ${infoError}`);
|
|
238
|
+
throw infoError;
|
|
239
|
+
}
|
|
200
240
|
// Try to find a course configuration document
|
|
201
241
|
// Course databases should have documents with course metadata
|
|
202
242
|
const result = await db.find({
|
|
@@ -210,15 +250,21 @@ async function hasCourseConfig(databaseName) {
|
|
|
210
250
|
},
|
|
211
251
|
limit: 1,
|
|
212
252
|
});
|
|
213
|
-
|
|
253
|
+
const hasConfig = result.docs && result.docs.length > 0;
|
|
254
|
+
logger.debug(`hasCourseConfig: Database ${databaseName} has course config: ${hasConfig}`);
|
|
255
|
+
return hasConfig;
|
|
214
256
|
}
|
|
215
257
|
catch (e) {
|
|
216
258
|
// Handle specific database not found errors
|
|
217
259
|
if (e && typeof e === 'object' && 'error' in e && e.error === 'not_found') {
|
|
218
|
-
logger.debug(`Database ${databaseName} does not exist`);
|
|
260
|
+
logger.debug(`hasCourseConfig: Database ${databaseName} does not exist (not_found error)`);
|
|
219
261
|
return false;
|
|
220
262
|
}
|
|
221
|
-
logger.
|
|
263
|
+
logger.error(`hasCourseConfig: Error checking course config for ${databaseName}: ${e}`);
|
|
264
|
+
// Log full error details for debugging
|
|
265
|
+
if (e && typeof e === 'object') {
|
|
266
|
+
logger.error(`hasCourseConfig: Full error details for ${databaseName}:`, e);
|
|
267
|
+
}
|
|
222
268
|
return false;
|
|
223
269
|
}
|
|
224
270
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/attachment-preprocessing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,iBAA6B,MAAM,0BAA0B,CAAC;AACrE,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAElC,0BAA0B;AAC1B,MAAM,CAAC,GAAG,IAAI,iBAAiB,CAC7B,qBAAqB,CACtB,CAAC;AAgBF;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,
|
|
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":"course-requests.d.ts","sourceRoot":"","sources":["../../src/client-requests/course-requests.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,iBAA6B,MAAM,0BAA0B,CAAC;AAgDrE,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"course-requests.d.ts","sourceRoot":"","sources":["../../src/client-requests/course-requests.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,iBAA6B,MAAM,0BAA0B,CAAC;AAgDrE,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,CA+CjE;AAqFD,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AAExD,eAAO,MAAM,mBAAmB;;;;SAIjB,CAAC"}
|
|
@@ -37,7 +37,10 @@ function insertDesignDoc(courseID, doc) {
|
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
39
|
export async function initCourseDBDesignDocInsert() {
|
|
40
|
+
logger.info('Starting initCourseDBDesignDocInsert...');
|
|
41
|
+
logger.debug('Attempting CourseLookup.allCourseWare() for design doc initialization');
|
|
40
42
|
const courses = await CourseLookup.allCourseWare();
|
|
43
|
+
logger.info(`Found ${courses.length} courses for design doc initialization`);
|
|
41
44
|
courses.forEach((c) => {
|
|
42
45
|
// Insert design docs
|
|
43
46
|
courseDBDesignDocs.forEach((dd) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course-requests.js","sourceRoot":"","sources":["../../src/client-requests/course-requests.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"course-requests.js","sourceRoot":"","sources":["../../src/client-requests/course-requests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-requests.d.ts","sourceRoot":"","sources":["../../src/client-requests/pack-requests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"pack-requests.d.ts","sourceRoot":"","sources":["../../src/client-requests/pack-requests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAiBD,wBAAsB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiKlF;AAGD,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -1,16 +1,40 @@
|
|
|
1
1
|
import { Status } from '@vue-skuilder/common';
|
|
2
2
|
import logger from '../logger.js';
|
|
3
3
|
import ENV from '../utils/env.js';
|
|
4
|
-
import
|
|
4
|
+
import PouchDB from 'pouchdb';
|
|
5
|
+
/**
|
|
6
|
+
* Extract original courseId from decorated studio database name
|
|
7
|
+
* Handles formats like: unpacked_originalId_timestamp_random
|
|
8
|
+
*/
|
|
9
|
+
function extractOriginalCourseId(decoratedId) {
|
|
10
|
+
// Remove unpacked_ prefix if present
|
|
11
|
+
let courseId = decoratedId.replace(/^unpacked_/, '');
|
|
12
|
+
// Remove timestamp_random suffix pattern: _YYYYMMDD_abcdef
|
|
13
|
+
courseId = courseId.replace(/_\d{8}_[a-z0-9]{6}$/, '');
|
|
14
|
+
// If no changes were made, return original (handles non-decorated IDs)
|
|
15
|
+
return courseId === decoratedId ? decoratedId : courseId;
|
|
16
|
+
}
|
|
5
17
|
export async function packCourse(data) {
|
|
6
18
|
logger.info(`Starting PACK_COURSE for ${data.courseId}...`);
|
|
7
19
|
try {
|
|
8
20
|
const startTime = Date.now();
|
|
9
21
|
// Use CouchDBToStaticPacker directly from db package
|
|
10
22
|
const { CouchDBToStaticPacker } = await import('@vue-skuilder/db');
|
|
11
|
-
// Create database connection URL
|
|
12
|
-
|
|
13
|
-
|
|
23
|
+
// Create database connection URL - use provided couchdbUrl if available (studio mode)
|
|
24
|
+
logger.info(`Pack request data: ${JSON.stringify(data, null, 2)}`);
|
|
25
|
+
let courseDbUrl;
|
|
26
|
+
if (data.couchdbUrl) {
|
|
27
|
+
courseDbUrl = data.couchdbUrl;
|
|
28
|
+
logger.info(`Using provided CouchDB URL: "${courseDbUrl}"`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// Fallback to ENV configuration for production mode
|
|
32
|
+
logger.info(`ENV values - Protocol: "${ENV.COUCHDB_PROTOCOL}", Admin: "${ENV.COUCHDB_ADMIN}", Password: "${ENV.COUCHDB_PASSWORD}", Server: "${ENV.COUCHDB_SERVER}"`);
|
|
33
|
+
const dbUrl = `${ENV.COUCHDB_PROTOCOL}://${ENV.COUCHDB_ADMIN}:${ENV.COUCHDB_PASSWORD}@${ENV.COUCHDB_SERVER}`;
|
|
34
|
+
const dbName = `coursedb-${data.courseId}`;
|
|
35
|
+
courseDbUrl = `${dbUrl}/${dbName}`;
|
|
36
|
+
logger.info(`Constructed dbUrl from ENV: "${courseDbUrl}"`);
|
|
37
|
+
}
|
|
14
38
|
// Determine output path based on environment and provided path
|
|
15
39
|
let outputPath;
|
|
16
40
|
if (data.outputPath) {
|
|
@@ -33,7 +57,7 @@ export async function packCourse(data) {
|
|
|
33
57
|
'/tmp/skuilder-studio-output' :
|
|
34
58
|
process.cwd();
|
|
35
59
|
}
|
|
36
|
-
logger.info(`Packing course ${data.courseId} from ${
|
|
60
|
+
logger.info(`Packing course ${data.courseId} from ${courseDbUrl} to ${outputPath}`);
|
|
37
61
|
// Clean up existing output directory for replace-in-place functionality
|
|
38
62
|
const fsExtra = await import('fs-extra');
|
|
39
63
|
const fs = fsExtra.default || fsExtra;
|
|
@@ -47,8 +71,6 @@ export async function packCourse(data) {
|
|
|
47
71
|
logger.warn(`Warning: Could not clean up existing directory ${outputPath}:`, cleanupError);
|
|
48
72
|
// Continue anyway - the write operation might still succeed
|
|
49
73
|
}
|
|
50
|
-
// Create course database connection
|
|
51
|
-
const courseDbUrl = `${dbUrl}/${dbName}`;
|
|
52
74
|
// Initialize packer and perform pack operation with file writing
|
|
53
75
|
const packer = new CouchDBToStaticPacker();
|
|
54
76
|
// For Express, we create a simple FileSystemAdapter using dynamic imports
|
|
@@ -103,7 +125,16 @@ export async function packCourse(data) {
|
|
|
103
125
|
};
|
|
104
126
|
};
|
|
105
127
|
const fsAdapter = await createFsAdapter();
|
|
106
|
-
|
|
128
|
+
// Use regular PouchDB for simple data reading
|
|
129
|
+
logger.info(`Creating PouchDB instance with URL: ${courseDbUrl}`);
|
|
130
|
+
// logger.info(`PouchDB constructor available: ${typeof PouchDB}`);
|
|
131
|
+
// logger.info(`PouchDB adapters: ${JSON.stringify(Object.keys((PouchDB as any).adapters || {}))}`);
|
|
132
|
+
const courseDb = new PouchDB(courseDbUrl);
|
|
133
|
+
// logger.info(`PouchDB instance created, adapter: ${(courseDb as any).adapter}`);
|
|
134
|
+
// Extract original courseId from decorated database name for manifest generation
|
|
135
|
+
const originalCourseId = extractOriginalCourseId(data.courseId);
|
|
136
|
+
logger.info(`Using originalCourseId "${originalCourseId}" for manifest (extracted from "${data.courseId}")`);
|
|
137
|
+
const packResult = await packer.packCourseToFiles(courseDb, originalCourseId, outputPath, fsAdapter);
|
|
107
138
|
const duration = Date.now() - startTime;
|
|
108
139
|
const response = {
|
|
109
140
|
status: Status.ok,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-requests.js","sourceRoot":"","sources":["../../src/client-requests/pack-requests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"pack-requests.js","sourceRoot":"","sources":["../../src/client-requests/pack-requests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/couchdb/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/couchdb/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMrD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAejE;AAED,wBAAgB,UAAU,IAAI,IAAI,CAAC,WAAW,CAO7C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAOhD;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAGtC;AAMD,wBAAsB,aAAa,CAAC,CAAC,EACnC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAoBhC;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI9D;AAED,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,aAAa;IACxD,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;CACH"}
|
package/dist/couchdb/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import Nano from 'nano';
|
|
2
|
+
import logger from '../logger.js';
|
|
2
3
|
let CouchDB;
|
|
3
4
|
let couchURLWithProtocol;
|
|
4
5
|
export function initializeCouchDB(config) {
|
|
5
|
-
const { COUCHDB_SERVER: url, COUCHDB_PROTOCOL: protocol, COUCHDB_ADMIN: username, COUCHDB_PASSWORD: password } = config;
|
|
6
|
+
const { COUCHDB_SERVER: url, COUCHDB_PROTOCOL: protocol, COUCHDB_ADMIN: username, COUCHDB_PASSWORD: password, } = config;
|
|
6
7
|
if (!url || !protocol || !username || !password) {
|
|
7
8
|
throw new Error('Missing CouchDB configuration');
|
|
8
9
|
}
|
|
@@ -23,6 +24,7 @@ export function getCouchURLWithProtocol() {
|
|
|
23
24
|
return couchURLWithProtocol;
|
|
24
25
|
}
|
|
25
26
|
export async function useOrCreateCourseDB(courseID) {
|
|
27
|
+
logger.debug(`Using or creating course DB for course ID: ${courseID}`);
|
|
26
28
|
return useOrCreateDB(`coursedb-${courseID}`);
|
|
27
29
|
}
|
|
28
30
|
export async function useOrCreateDB(dbName) {
|
|
@@ -31,7 +33,8 @@ export async function useOrCreateDB(dbName) {
|
|
|
31
33
|
await db.info();
|
|
32
34
|
return db;
|
|
33
35
|
}
|
|
34
|
-
catch {
|
|
36
|
+
catch (error) {
|
|
37
|
+
logger.debug(`Lookup failed for Database ${dbName}: `, error);
|
|
35
38
|
try {
|
|
36
39
|
await getCouchDB().db.create(dbName);
|
|
37
40
|
return db;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/couchdb/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/couchdb/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,IAAI,OAAyB,CAAC;AAC9B,IAAI,oBAA4B,CAAC;AAEjC,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,MAAM,EACJ,cAAc,EAAE,GAAG,EACnB,gBAAgB,EAAE,QAAQ,EAC1B,aAAa,EAAE,QAAQ,EACvB,gBAAgB,EAAE,QAAQ,GAC3B,GAAG,MAAM,CAAC;IAEX,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,kBAAkB,GAAG,GAAG,QAAQ,MAAM,QAAQ,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;IAC1E,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACnC,oBAAoB,GAAG,GAAG,QAAQ,MAAM,GAAG,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB;IAEhB,MAAM,CAAC,KAAK,CAAC,8CAA8C,QAAQ,EAAE,CAAC,CAAC;IACvE,OAAO,aAAa,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;AAC/C,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc;IAEd,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC,GAAG,CAAI,MAAM,CAAC,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,8BAA8B,MAAM,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,UAAU,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,KAAkB,CAAC;YACrC,4DAA4D;YAC5D,IAAI,SAAS,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBACjC,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,SAAS,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAc;IAC3C,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,IAAI,CAAC,SAAS,CAAC;AACxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-docs.d.ts","sourceRoot":"","sources":["../src/design-docs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"design-docs.d.ts","sourceRoot":"","sources":["../src/design-docs.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,oBAAoB,QAGhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAG7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAGnC,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;CAqBlB,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;CAoBnB,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;CAsBlC,CAAC;AAEF,eAAO,MAAM,aAAa;;;CAGzB,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;IAK9B,CAAC"}
|
package/dist/design-docs.js
CHANGED
|
@@ -12,10 +12,28 @@ function emit(key, value) {
|
|
|
12
12
|
// Get directory of this module
|
|
13
13
|
const __filename = fileURLToPath(import.meta.url);
|
|
14
14
|
const __dirname = dirname(__filename);
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
// Dual resolution strategy for assets
|
|
16
|
+
function getAssetPath(assetName) {
|
|
17
|
+
// Strategy 1: Development mode - assets in parent directory
|
|
18
|
+
const devModePath = join(__dirname, '..', 'assets', assetName);
|
|
19
|
+
if (fileSystem.existsSync(devModePath)) {
|
|
20
|
+
return devModePath;
|
|
21
|
+
}
|
|
22
|
+
// Strategy 2: Built module mode - assets in same directory
|
|
23
|
+
const moduleModePath = join(__dirname, 'assets', assetName);
|
|
24
|
+
if (fileSystem.existsSync(moduleModePath)) {
|
|
25
|
+
return moduleModePath;
|
|
26
|
+
}
|
|
27
|
+
// Fallback error with helpful context
|
|
28
|
+
throw new Error(`Asset '${assetName}' not found. Tried:\n` +
|
|
29
|
+
` Dev mode: ${devModePath}\n` +
|
|
30
|
+
` Module mode: ${moduleModePath}\n` +
|
|
31
|
+
` Current __dirname: ${__dirname}`);
|
|
32
|
+
}
|
|
33
|
+
// Load design documents with dual resolution
|
|
34
|
+
export const classroomDbDesignDoc = fileSystem.readFileSync(getAssetPath('classroomDesignDoc.js'), 'utf-8');
|
|
35
|
+
export const courseDBDesignDoc = fileSystem.readFileSync(getAssetPath('get-tagsDesignDoc.json'), 'utf-8');
|
|
36
|
+
export const courseValidateDocUpdate = fileSystem.readFileSync(getAssetPath('courseValidateDocUpdate.js'), 'utf-8');
|
|
19
37
|
export const elodoc = {
|
|
20
38
|
_id: '_design/elo',
|
|
21
39
|
views: {
|
package/dist/design-docs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-docs.js","sourceRoot":"","sources":["../src/design-docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,UAAU,MAAM,IAAI,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC;;;GAGG;AACH,SAAS,IAAI,CAAC,GAAa,EAAE,KAAe;IAC1C,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,
|
|
1
|
+
{"version":3,"file":"design-docs.js","sourceRoot":"","sources":["../src/design-docs.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,GAAG;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,GAAG;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAaF,QAAA,MAAM,GAAG,EAAE,GAOV,CAAC;AAEF,eAAe,GAAG,CAAC"}
|
package/dist/utils/env.js
CHANGED
|
@@ -9,13 +9,14 @@ function getVar(name) {
|
|
|
9
9
|
return '';
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
+
// Use getter to read environment variables lazily after dotenv has loaded
|
|
12
13
|
const env = {
|
|
13
|
-
COUCHDB_SERVER
|
|
14
|
-
COUCHDB_PROTOCOL
|
|
15
|
-
COUCHDB_ADMIN
|
|
16
|
-
COUCHDB_PASSWORD
|
|
17
|
-
VERSION
|
|
18
|
-
NODE_ENV
|
|
14
|
+
get COUCHDB_SERVER() { return getVar('COUCHDB_SERVER'); },
|
|
15
|
+
get COUCHDB_PROTOCOL() { return getVar('COUCHDB_PROTOCOL'); },
|
|
16
|
+
get COUCHDB_ADMIN() { return getVar('COUCHDB_ADMIN'); },
|
|
17
|
+
get COUCHDB_PASSWORD() { return getVar('COUCHDB_PASSWORD'); },
|
|
18
|
+
get VERSION() { return getVar('VERSION'); },
|
|
19
|
+
get NODE_ENV() { return getVar('NODE_ENV'); },
|
|
19
20
|
};
|
|
20
21
|
export default env;
|
|
21
22
|
//# sourceMappingURL=env.js.map
|
package/dist/utils/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAY9B,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,uDAAuD;QACvD,uDAAuD;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,GAAG,GAAQ;IACf,cAAc,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAY9B,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,uDAAuD;QACvD,uDAAuD;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,GAAG,GAAQ;IACf,IAAI,cAAc,KAAK,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,gBAAgB,KAAK,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,aAAa,KAAK,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,gBAAgB,KAAK,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,OAAO,KAAK,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAC;AAEF,eAAe,GAAG,CAAC"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.1.
|
|
6
|
+
"version": "0.1.12",
|
|
7
7
|
"description": "an API",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"type": "module",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"author": "Colin Kennedy",
|
|
34
34
|
"license": "GPL-3.0-or-later",
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@vue-skuilder/common": "^0.1.
|
|
37
|
-
"@vue-skuilder/db": "^0.1.
|
|
36
|
+
"@vue-skuilder/common": "^0.1.12",
|
|
37
|
+
"@vue-skuilder/db": "^0.1.12",
|
|
38
38
|
"axios": "^1.7.4",
|
|
39
39
|
"cookie-parser": "^1.4.7",
|
|
40
40
|
"cors": "^2.8.5",
|
|
@@ -82,5 +82,5 @@
|
|
|
82
82
|
"typescript": "^5.7.2",
|
|
83
83
|
"typescript-eslint": "^8.25.0"
|
|
84
84
|
},
|
|
85
|
-
"stableVersion": "0.1.
|
|
85
|
+
"stableVersion": "0.1.12"
|
|
86
86
|
}
|
package/src/app-factory.ts
CHANGED
|
@@ -214,7 +214,8 @@ export function createExpressApp(config: AppConfig): express.Application {
|
|
|
214
214
|
|
|
215
215
|
body.response = await packCourse({
|
|
216
216
|
courseId: body.courseId,
|
|
217
|
-
outputPath: body.outputPath
|
|
217
|
+
outputPath: body.outputPath,
|
|
218
|
+
couchdbUrl: body.couchdbUrl
|
|
218
219
|
});
|
|
219
220
|
res.json(body.response);
|
|
220
221
|
}
|
|
@@ -286,7 +287,12 @@ export async function initializeServices(config: AppConfig): Promise<void> {
|
|
|
286
287
|
// media uploads
|
|
287
288
|
void PostProcess();
|
|
288
289
|
|
|
289
|
-
|
|
290
|
+
initCourseDBDesignDocInsert().catch((error) => {
|
|
291
|
+
logger.error(`Error in initCourseDBDesignDocInsert background task: ${error}`);
|
|
292
|
+
if (error && typeof error === 'object') {
|
|
293
|
+
logger.error(`Full error details in initCourseDBDesignDocInsert: ${JSON.stringify(error)}`);
|
|
294
|
+
}
|
|
295
|
+
});
|
|
290
296
|
|
|
291
297
|
void useOrCreateDB('classdb-lookup');
|
|
292
298
|
try {
|
package/src/app.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { createExpressApp, initializeServices } from './app-factory.js';
|
|
2
|
-
import logger from './logger.js';
|
|
3
|
-
import ENV from './utils/env.js';
|
|
4
1
|
import dotenv from 'dotenv';
|
|
5
|
-
import { initializeCouchDB } from './couchdb/index.js';
|
|
6
|
-
import { initializeDataLayer } from '@vue-skuilder/db';
|
|
7
2
|
|
|
3
|
+
// Load environment variables FIRST before importing any modules that depend on them
|
|
8
4
|
dotenv.config({
|
|
9
5
|
path:
|
|
10
6
|
process.argv && process.argv.length == 3
|
|
@@ -12,7 +8,14 @@ dotenv.config({
|
|
|
12
8
|
: '.env.development',
|
|
13
9
|
});
|
|
14
10
|
|
|
15
|
-
// Now
|
|
11
|
+
// Now import modules that depend on environment variables
|
|
12
|
+
import { createExpressApp, initializeServices } from './app-factory.js';
|
|
13
|
+
import logger from './logger.js';
|
|
14
|
+
import ENV from './utils/env.js';
|
|
15
|
+
import { initializeCouchDB } from './couchdb/index.js';
|
|
16
|
+
import { initializeDataLayer } from '@vue-skuilder/db';
|
|
17
|
+
|
|
18
|
+
// Validate that environment variables are loaded
|
|
16
19
|
const requiredVars = ['COUCHDB_SERVER', 'COUCHDB_PROTOCOL', 'COUCHDB_ADMIN', 'COUCHDB_PASSWORD', 'VERSION', 'NODE_ENV'];
|
|
17
20
|
const missingVars = requiredVars.filter(v => !process.env[v]);
|
|
18
21
|
|
|
@@ -31,12 +31,26 @@ interface DocForProcessing extends nano.DocumentGetResponse {
|
|
|
31
31
|
*/
|
|
32
32
|
export function postProcessCourse(courseID: string): void {
|
|
33
33
|
try {
|
|
34
|
-
logger.info(`
|
|
34
|
+
logger.info(`postProcessCourse: Starting for courseID: ${courseID}`);
|
|
35
35
|
|
|
36
36
|
const crsString = `coursedb-${courseID}`;
|
|
37
|
+
logger.debug(`postProcessCourse: Using database name: ${crsString}`);
|
|
37
38
|
|
|
38
39
|
// Get database instance
|
|
39
40
|
const db = getCouchDB().use(crsString);
|
|
41
|
+
|
|
42
|
+
// Test database existence before setting up change listener
|
|
43
|
+
db.info().catch((e: unknown) => {
|
|
44
|
+
if (e && typeof e === 'object' && 'status' in e && e.status === 404) {
|
|
45
|
+
logger.error(`postProcessCourse: Database "${crsString}" does not exist. Expected database name may be incorrect for courseID: ${courseID}`);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
logger.error(`postProcessCourse: Error checking database "${crsString}": ${e}`);
|
|
49
|
+
// Log full error details for debugging
|
|
50
|
+
if (e && typeof e === 'object') {
|
|
51
|
+
logger.error(`postProcessCourse: Full error details for ${crsString}:`, e);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
40
54
|
|
|
41
55
|
const courseFilter = filterFactory(courseID);
|
|
42
56
|
|
|
@@ -90,6 +104,9 @@ export default async function postProcess(courseIDs?: string[]): Promise<void> {
|
|
|
90
104
|
logger.warn('Course lookup database not found - skipping platform course discovery');
|
|
91
105
|
} else {
|
|
92
106
|
logger.error(`Error fetching course list from CourseLookup: ${e}`);
|
|
107
|
+
if (e && typeof e === 'object' && 'status' in e && e.status === 404) {
|
|
108
|
+
logger.error(`Database connection failed - this might indicate a database name mismatch or connection issue`);
|
|
109
|
+
}
|
|
93
110
|
}
|
|
94
111
|
// Continue to studio mode discovery even if platform courses fail
|
|
95
112
|
}
|
|
@@ -103,16 +120,21 @@ export default async function postProcess(courseIDs?: string[]): Promise<void> {
|
|
|
103
120
|
|
|
104
121
|
try {
|
|
105
122
|
const allDbs = await getCouchDB().db.list();
|
|
123
|
+
logger.debug(`All databases found: ${allDbs.join(', ')}`);
|
|
124
|
+
|
|
106
125
|
const studioDbs = allDbs.filter(
|
|
107
126
|
(db) => db.startsWith('coursedb-') && !processedCourseIds.has(db)
|
|
108
127
|
);
|
|
109
|
-
|
|
110
|
-
logger.info(`Found ${studioDbs.length} potential studio databases`);
|
|
128
|
+
|
|
129
|
+
logger.info(`Found ${studioDbs.length} potential studio databases: ${studioDbs.join(', ')}`);
|
|
130
|
+
logger.debug(`Already processed course IDs: ${Array.from(processedCourseIds).join(', ')}`);
|
|
111
131
|
|
|
112
132
|
for (const studioDb of studioDbs) {
|
|
113
133
|
const courseId = studioDb.replace('coursedb-', '');
|
|
134
|
+
logger.debug(`Checking studio database: ${studioDb} (courseId: ${courseId})`);
|
|
114
135
|
|
|
115
136
|
try {
|
|
137
|
+
logger.debug(`Calling hasCourseConfig for: ${studioDb}`);
|
|
116
138
|
if (await hasCourseConfig(studioDb)) {
|
|
117
139
|
logger.info(
|
|
118
140
|
`Starting postprocessing for studio database: ${studioDb}`
|
|
@@ -123,6 +145,10 @@ export default async function postProcess(courseIDs?: string[]): Promise<void> {
|
|
|
123
145
|
}
|
|
124
146
|
} catch (e) {
|
|
125
147
|
logger.error(`Error processing studio database ${studioDb}: ${e}`);
|
|
148
|
+
// Log the full error object for debugging
|
|
149
|
+
if (e && typeof e === 'object') {
|
|
150
|
+
logger.error(`Error details for ${studioDb}:`, e);
|
|
151
|
+
}
|
|
126
152
|
}
|
|
127
153
|
}
|
|
128
154
|
} catch (e) {
|
|
@@ -135,9 +161,9 @@ export default async function postProcess(courseIDs?: string[]): Promise<void> {
|
|
|
135
161
|
}
|
|
136
162
|
|
|
137
163
|
function filterFactory(courseID: string) {
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
);
|
|
164
|
+
const databaseName = `coursedb-${courseID}`;
|
|
165
|
+
logger.debug(`filterFactory: Creating filter for database: ${databaseName}`);
|
|
166
|
+
const courseDatabase = getCouchDB().use<DocForProcessing>(databaseName);
|
|
141
167
|
|
|
142
168
|
return async function filterChanges(
|
|
143
169
|
changeItem: nano.DatabaseChangesResultItem
|
|
@@ -264,8 +290,22 @@ interface ProcessingField {
|
|
|
264
290
|
*/
|
|
265
291
|
async function hasCourseConfig(databaseName: string): Promise<boolean> {
|
|
266
292
|
try {
|
|
293
|
+
logger.debug(`hasCourseConfig: Accessing database: ${databaseName}`);
|
|
267
294
|
const db = getCouchDB().use(databaseName);
|
|
268
295
|
|
|
296
|
+
// First check if database exists by trying to get info
|
|
297
|
+
try {
|
|
298
|
+
await db.info();
|
|
299
|
+
logger.debug(`hasCourseConfig: Database ${databaseName} exists, checking for course config`);
|
|
300
|
+
} catch (infoError: unknown) {
|
|
301
|
+
if (infoError && typeof infoError === 'object' && 'status' in infoError && infoError.status === 404) {
|
|
302
|
+
logger.debug(`hasCourseConfig: Database ${databaseName} does not exist (404)`);
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
305
|
+
logger.warn(`hasCourseConfig: Error getting info for database ${databaseName}: ${infoError}`);
|
|
306
|
+
throw infoError;
|
|
307
|
+
}
|
|
308
|
+
|
|
269
309
|
// Try to find a course configuration document
|
|
270
310
|
// Course databases should have documents with course metadata
|
|
271
311
|
const result = await db.find({
|
|
@@ -280,15 +320,21 @@ async function hasCourseConfig(databaseName: string): Promise<boolean> {
|
|
|
280
320
|
limit: 1,
|
|
281
321
|
});
|
|
282
322
|
|
|
283
|
-
|
|
323
|
+
const hasConfig = result.docs && result.docs.length > 0;
|
|
324
|
+
logger.debug(`hasCourseConfig: Database ${databaseName} has course config: ${hasConfig}`);
|
|
325
|
+
return hasConfig;
|
|
284
326
|
} catch (e: unknown) {
|
|
285
327
|
// Handle specific database not found errors
|
|
286
328
|
if (e && typeof e === 'object' && 'error' in e && e.error === 'not_found') {
|
|
287
|
-
logger.debug(`Database ${databaseName} does not exist`);
|
|
329
|
+
logger.debug(`hasCourseConfig: Database ${databaseName} does not exist (not_found error)`);
|
|
288
330
|
return false;
|
|
289
331
|
}
|
|
290
332
|
|
|
291
|
-
logger.
|
|
333
|
+
logger.error(`hasCourseConfig: Error checking course config for ${databaseName}: ${e}`);
|
|
334
|
+
// Log full error details for debugging
|
|
335
|
+
if (e && typeof e === 'object') {
|
|
336
|
+
logger.error(`hasCourseConfig: Full error details for ${databaseName}:`, e);
|
|
337
|
+
}
|
|
292
338
|
return false;
|
|
293
339
|
}
|
|
294
340
|
}
|
|
@@ -51,7 +51,10 @@ function insertDesignDoc(
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export async function initCourseDBDesignDocInsert(): Promise<void> {
|
|
54
|
+
logger.info('Starting initCourseDBDesignDocInsert...');
|
|
55
|
+
logger.debug('Attempting CourseLookup.allCourseWare() for design doc initialization');
|
|
54
56
|
const courses = await CourseLookup.allCourseWare();
|
|
57
|
+
logger.info(`Found ${courses.length} courses for design doc initialization`);
|
|
55
58
|
courses.forEach((c) => {
|
|
56
59
|
// Insert design docs
|
|
57
60
|
courseDBDesignDocs.forEach((dd) => {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Status } from '@vue-skuilder/common';
|
|
2
2
|
import logger from '../logger.js';
|
|
3
3
|
import ENV from '../utils/env.js';
|
|
4
|
-
import
|
|
4
|
+
import PouchDB from 'pouchdb';
|
|
5
5
|
|
|
6
6
|
interface PackCourseData {
|
|
7
7
|
courseId: string;
|
|
8
8
|
outputPath?: string;
|
|
9
|
+
couchdbUrl?: string;
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
interface PackCourseResponse {
|
|
@@ -20,6 +21,21 @@ interface PackCourseResponse {
|
|
|
20
21
|
errorText?: string;
|
|
21
22
|
}
|
|
22
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Extract original courseId from decorated studio database name
|
|
26
|
+
* Handles formats like: unpacked_originalId_timestamp_random
|
|
27
|
+
*/
|
|
28
|
+
function extractOriginalCourseId(decoratedId: string): string {
|
|
29
|
+
// Remove unpacked_ prefix if present
|
|
30
|
+
let courseId = decoratedId.replace(/^unpacked_/, '');
|
|
31
|
+
|
|
32
|
+
// Remove timestamp_random suffix pattern: _YYYYMMDD_abcdef
|
|
33
|
+
courseId = courseId.replace(/_\d{8}_[a-z0-9]{6}$/, '');
|
|
34
|
+
|
|
35
|
+
// If no changes were made, return original (handles non-decorated IDs)
|
|
36
|
+
return courseId === decoratedId ? decoratedId : courseId;
|
|
37
|
+
}
|
|
38
|
+
|
|
23
39
|
export async function packCourse(data: PackCourseData): Promise<PackCourseResponse> {
|
|
24
40
|
logger.info(`Starting PACK_COURSE for ${data.courseId}...`);
|
|
25
41
|
|
|
@@ -29,9 +45,20 @@ export async function packCourse(data: PackCourseData): Promise<PackCourseRespon
|
|
|
29
45
|
// Use CouchDBToStaticPacker directly from db package
|
|
30
46
|
const { CouchDBToStaticPacker } = await import('@vue-skuilder/db');
|
|
31
47
|
|
|
32
|
-
// Create database connection URL
|
|
33
|
-
|
|
34
|
-
|
|
48
|
+
// Create database connection URL - use provided couchdbUrl if available (studio mode)
|
|
49
|
+
logger.info(`Pack request data: ${JSON.stringify(data, null, 2)}`);
|
|
50
|
+
let courseDbUrl: string;
|
|
51
|
+
if (data.couchdbUrl) {
|
|
52
|
+
courseDbUrl = data.couchdbUrl;
|
|
53
|
+
logger.info(`Using provided CouchDB URL: "${courseDbUrl}"`);
|
|
54
|
+
} else {
|
|
55
|
+
// Fallback to ENV configuration for production mode
|
|
56
|
+
logger.info(`ENV values - Protocol: "${ENV.COUCHDB_PROTOCOL}", Admin: "${ENV.COUCHDB_ADMIN}", Password: "${ENV.COUCHDB_PASSWORD}", Server: "${ENV.COUCHDB_SERVER}"`);
|
|
57
|
+
const dbUrl = `${ENV.COUCHDB_PROTOCOL}://${ENV.COUCHDB_ADMIN}:${ENV.COUCHDB_PASSWORD}@${ENV.COUCHDB_SERVER}`;
|
|
58
|
+
const dbName = `coursedb-${data.courseId}`;
|
|
59
|
+
courseDbUrl = `${dbUrl}/${dbName}`;
|
|
60
|
+
logger.info(`Constructed dbUrl from ENV: "${courseDbUrl}"`);
|
|
61
|
+
}
|
|
35
62
|
|
|
36
63
|
// Determine output path based on environment and provided path
|
|
37
64
|
let outputPath: string;
|
|
@@ -56,7 +83,7 @@ export async function packCourse(data: PackCourseData): Promise<PackCourseRespon
|
|
|
56
83
|
process.cwd();
|
|
57
84
|
}
|
|
58
85
|
|
|
59
|
-
logger.info(`Packing course ${data.courseId} from ${
|
|
86
|
+
logger.info(`Packing course ${data.courseId} from ${courseDbUrl} to ${outputPath}`);
|
|
60
87
|
|
|
61
88
|
// Clean up existing output directory for replace-in-place functionality
|
|
62
89
|
const fsExtra = await import('fs-extra');
|
|
@@ -72,9 +99,6 @@ export async function packCourse(data: PackCourseData): Promise<PackCourseRespon
|
|
|
72
99
|
// Continue anyway - the write operation might still succeed
|
|
73
100
|
}
|
|
74
101
|
|
|
75
|
-
// Create course database connection
|
|
76
|
-
const courseDbUrl = `${dbUrl}/${dbName}`;
|
|
77
|
-
|
|
78
102
|
// Initialize packer and perform pack operation with file writing
|
|
79
103
|
const packer = new CouchDBToStaticPacker();
|
|
80
104
|
|
|
@@ -132,7 +156,20 @@ export async function packCourse(data: PackCourseData): Promise<PackCourseRespon
|
|
|
132
156
|
};
|
|
133
157
|
|
|
134
158
|
const fsAdapter = await createFsAdapter();
|
|
135
|
-
|
|
159
|
+
|
|
160
|
+
// Use regular PouchDB for simple data reading
|
|
161
|
+
logger.info(`Creating PouchDB instance with URL: ${courseDbUrl}`);
|
|
162
|
+
// logger.info(`PouchDB constructor available: ${typeof PouchDB}`);
|
|
163
|
+
// logger.info(`PouchDB adapters: ${JSON.stringify(Object.keys((PouchDB as any).adapters || {}))}`);
|
|
164
|
+
|
|
165
|
+
const courseDb = new PouchDB(courseDbUrl);
|
|
166
|
+
// logger.info(`PouchDB instance created, adapter: ${(courseDb as any).adapter}`);
|
|
167
|
+
|
|
168
|
+
// Extract original courseId from decorated database name for manifest generation
|
|
169
|
+
const originalCourseId = extractOriginalCourseId(data.courseId);
|
|
170
|
+
logger.info(`Using originalCourseId "${originalCourseId}" for manifest (extracted from "${data.courseId}")`);
|
|
171
|
+
|
|
172
|
+
const packResult = await packer.packCourseToFiles(courseDb, originalCourseId, outputPath, fsAdapter);
|
|
136
173
|
|
|
137
174
|
const duration = Date.now() - startTime;
|
|
138
175
|
|
package/src/couchdb/index.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import Nano from 'nano';
|
|
2
2
|
import type { EnvironmentConfig } from '../types.js';
|
|
3
|
+
import logger from '../logger.js';
|
|
3
4
|
|
|
4
5
|
let CouchDB: Nano.ServerScope;
|
|
5
6
|
let couchURLWithProtocol: string;
|
|
6
7
|
|
|
7
8
|
export function initializeCouchDB(config: EnvironmentConfig): void {
|
|
8
|
-
const {
|
|
9
|
+
const {
|
|
9
10
|
COUCHDB_SERVER: url,
|
|
10
11
|
COUCHDB_PROTOCOL: protocol,
|
|
11
12
|
COUCHDB_ADMIN: username,
|
|
12
|
-
COUCHDB_PASSWORD: password
|
|
13
|
+
COUCHDB_PASSWORD: password,
|
|
13
14
|
} = config;
|
|
14
15
|
|
|
15
16
|
if (!url || !protocol || !username || !password) {
|
|
@@ -23,19 +24,26 @@ export function initializeCouchDB(config: EnvironmentConfig): void {
|
|
|
23
24
|
|
|
24
25
|
export function getCouchDB(): Nano.ServerScope {
|
|
25
26
|
if (!CouchDB) {
|
|
26
|
-
throw new Error(
|
|
27
|
+
throw new Error(
|
|
28
|
+
'CouchDB has not been initialized. Call initializeCouchDB first.'
|
|
29
|
+
);
|
|
27
30
|
}
|
|
28
31
|
return CouchDB;
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
export function getCouchURLWithProtocol(): string {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
if (!couchURLWithProtocol) {
|
|
36
|
+
throw new Error(
|
|
37
|
+
'CouchDB has not been initialized. Call initializeCouchDB first.'
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
return couchURLWithProtocol;
|
|
36
41
|
}
|
|
37
42
|
|
|
38
|
-
export async function useOrCreateCourseDB(
|
|
43
|
+
export async function useOrCreateCourseDB(
|
|
44
|
+
courseID: string
|
|
45
|
+
): Promise<Nano.DocumentScope<unknown>> {
|
|
46
|
+
logger.debug(`Using or creating course DB for course ID: ${courseID}`);
|
|
39
47
|
return useOrCreateDB(`coursedb-${courseID}`);
|
|
40
48
|
}
|
|
41
49
|
|
|
@@ -43,20 +51,23 @@ interface NanoError extends Error {
|
|
|
43
51
|
statusCode?: number;
|
|
44
52
|
}
|
|
45
53
|
|
|
46
|
-
export async function useOrCreateDB<T>(
|
|
54
|
+
export async function useOrCreateDB<T>(
|
|
55
|
+
dbName: string
|
|
56
|
+
): Promise<Nano.DocumentScope<T>> {
|
|
47
57
|
const db = getCouchDB().use<T>(dbName);
|
|
48
58
|
|
|
49
59
|
try {
|
|
50
60
|
await db.info();
|
|
51
61
|
return db;
|
|
52
|
-
} catch {
|
|
62
|
+
} catch (error: unknown) {
|
|
63
|
+
logger.debug(`Lookup failed for Database ${dbName}: `, error);
|
|
53
64
|
try {
|
|
54
65
|
await getCouchDB().db.create(dbName);
|
|
55
66
|
return db;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
67
|
+
} catch (error: unknown) {
|
|
68
|
+
const createErr = error as NanoError;
|
|
69
|
+
// If error is "database already exists", return existing db
|
|
70
|
+
if (createErr.statusCode === 412) {
|
|
60
71
|
return db;
|
|
61
72
|
}
|
|
62
73
|
throw createErr;
|
|
@@ -79,4 +90,4 @@ export interface SecurityObject extends Nano.MaybeDocument {
|
|
|
79
90
|
names: string[];
|
|
80
91
|
roles: string[];
|
|
81
92
|
};
|
|
82
|
-
}
|
|
93
|
+
}
|
package/src/design-docs.ts
CHANGED
|
@@ -15,19 +15,42 @@ function emit(key?: unknown, value?: unknown): [unknown, unknown] {
|
|
|
15
15
|
const __filename = fileURLToPath(import.meta.url);
|
|
16
16
|
const __dirname = dirname(__filename);
|
|
17
17
|
|
|
18
|
-
//
|
|
18
|
+
// Dual resolution strategy for assets
|
|
19
|
+
function getAssetPath(assetName: string): string {
|
|
20
|
+
// Strategy 1: Development mode - assets in parent directory
|
|
21
|
+
const devModePath = join(__dirname, '..', 'assets', assetName);
|
|
22
|
+
if (fileSystem.existsSync(devModePath)) {
|
|
23
|
+
return devModePath;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Strategy 2: Built module mode - assets in same directory
|
|
27
|
+
const moduleModePath = join(__dirname, 'assets', assetName);
|
|
28
|
+
if (fileSystem.existsSync(moduleModePath)) {
|
|
29
|
+
return moduleModePath;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Fallback error with helpful context
|
|
33
|
+
throw new Error(
|
|
34
|
+
`Asset '${assetName}' not found. Tried:\n` +
|
|
35
|
+
` Dev mode: ${devModePath}\n` +
|
|
36
|
+
` Module mode: ${moduleModePath}\n` +
|
|
37
|
+
` Current __dirname: ${__dirname}`
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Load design documents with dual resolution
|
|
19
42
|
export const classroomDbDesignDoc = fileSystem.readFileSync(
|
|
20
|
-
|
|
43
|
+
getAssetPath('classroomDesignDoc.js'),
|
|
21
44
|
'utf-8'
|
|
22
45
|
);
|
|
23
46
|
|
|
24
47
|
export const courseDBDesignDoc = fileSystem.readFileSync(
|
|
25
|
-
|
|
48
|
+
getAssetPath('get-tagsDesignDoc.json'),
|
|
26
49
|
'utf-8'
|
|
27
50
|
);
|
|
28
51
|
|
|
29
52
|
export const courseValidateDocUpdate = fileSystem.readFileSync(
|
|
30
|
-
|
|
53
|
+
getAssetPath('courseValidateDocUpdate.js'),
|
|
31
54
|
'utf-8'
|
|
32
55
|
);
|
|
33
56
|
|
package/src/utils/env.ts
CHANGED
|
@@ -20,13 +20,14 @@ function getVar(name: string): string {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
// Use getter to read environment variables lazily after dotenv has loaded
|
|
23
24
|
const env: Env = {
|
|
24
|
-
COUCHDB_SERVER
|
|
25
|
-
COUCHDB_PROTOCOL
|
|
26
|
-
COUCHDB_ADMIN
|
|
27
|
-
COUCHDB_PASSWORD
|
|
28
|
-
VERSION
|
|
29
|
-
NODE_ENV
|
|
25
|
+
get COUCHDB_SERVER() { return getVar('COUCHDB_SERVER'); },
|
|
26
|
+
get COUCHDB_PROTOCOL() { return getVar('COUCHDB_PROTOCOL'); },
|
|
27
|
+
get COUCHDB_ADMIN() { return getVar('COUCHDB_ADMIN'); },
|
|
28
|
+
get COUCHDB_PASSWORD() { return getVar('COUCHDB_PASSWORD'); },
|
|
29
|
+
get VERSION() { return getVar('VERSION'); },
|
|
30
|
+
get NODE_ENV() { return getVar('NODE_ENV'); },
|
|
30
31
|
};
|
|
31
32
|
|
|
32
33
|
export default env;
|