@vue-skuilder/express 0.1.11-25 → 0.1.11-28
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.js +8 -6
- package/dist/app.js.map +1 -1
- package/dist/client-requests/pack-requests.d.ts.map +1 -1
- package/dist/client-requests/pack-requests.js +16 -1
- package/dist/client-requests/pack-requests.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 +3 -3
- package/src/app.ts +9 -6
- package/src/client-requests/pack-requests.ts +20 -1
- package/src/design-docs.ts +27 -4
- package/src/utils/env.ts +7 -6
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":"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;
|
|
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"}
|
|
@@ -2,6 +2,18 @@ import { Status } from '@vue-skuilder/common';
|
|
|
2
2
|
import logger from '../logger.js';
|
|
3
3
|
import ENV from '../utils/env.js';
|
|
4
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 {
|
|
@@ -119,7 +131,10 @@ export async function packCourse(data) {
|
|
|
119
131
|
// logger.info(`PouchDB adapters: ${JSON.stringify(Object.keys((PouchDB as any).adapters || {}))}`);
|
|
120
132
|
const courseDb = new PouchDB(courseDbUrl);
|
|
121
133
|
// logger.info(`PouchDB instance created, adapter: ${(courseDb as any).adapter}`);
|
|
122
|
-
|
|
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);
|
|
123
138
|
const duration = Date.now() - startTime;
|
|
124
139
|
const response = {
|
|
125
140
|
status: Status.ok,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-requests.js","sourceRoot":"","sources":["../../src/client-requests/pack-requests.ts"],"names":[],"mappings":"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
|
|
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":"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.11-
|
|
6
|
+
"version": "0.1.11-28",
|
|
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.11-
|
|
37
|
-
"@vue-skuilder/db": "^0.1.11-
|
|
36
|
+
"@vue-skuilder/common": "^0.1.11-28",
|
|
37
|
+
"@vue-skuilder/db": "^0.1.11-28",
|
|
38
38
|
"axios": "^1.7.4",
|
|
39
39
|
"cookie-parser": "^1.4.7",
|
|
40
40
|
"cors": "^2.8.5",
|
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
|
|
|
@@ -21,6 +21,21 @@ interface PackCourseResponse {
|
|
|
21
21
|
errorText?: string;
|
|
22
22
|
}
|
|
23
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
|
+
|
|
24
39
|
export async function packCourse(data: PackCourseData): Promise<PackCourseResponse> {
|
|
25
40
|
logger.info(`Starting PACK_COURSE for ${data.courseId}...`);
|
|
26
41
|
|
|
@@ -150,7 +165,11 @@ export async function packCourse(data: PackCourseData): Promise<PackCourseRespon
|
|
|
150
165
|
const courseDb = new PouchDB(courseDbUrl);
|
|
151
166
|
// logger.info(`PouchDB instance created, adapter: ${(courseDb as any).adapter}`);
|
|
152
167
|
|
|
153
|
-
|
|
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);
|
|
154
173
|
|
|
155
174
|
const duration = Date.now() - startTime;
|
|
156
175
|
|
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;
|