@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 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
- import { initializeCouchDB } from './couchdb/index.js';
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 that dotenv is configured, we can validate the environment
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":"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"}
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;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6JlF;AAGD,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC"}
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
- const packResult = await packer.packCourseToFiles(courseDb, data.courseId, outputPath, fsAdapter);
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":"AAkBA,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"}
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"}
@@ -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
- // Load design documents with absolute paths
16
- export const classroomDbDesignDoc = fileSystem.readFileSync(join(__dirname, 'assets', 'classroomDesignDoc.js'), 'utf-8');
17
- export const courseDBDesignDoc = fileSystem.readFileSync(join(__dirname, 'assets', 'get-tagsDesignDoc.json'), 'utf-8');
18
- export const courseValidateDocUpdate = fileSystem.readFileSync(join(__dirname, 'assets', 'courseValidateDocUpdate.js'), 'utf-8');
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: {
@@ -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,4CAA4C;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC,YAAY,CACzD,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,uBAAuB,CAAC,EAClD,OAAO,CACR,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC,YAAY,CACtD,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,wBAAwB,CAAC,EACnD,OAAO,CACR,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC,YAAY,CAC5D,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,EACvD,OAAO,CACR,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,EAAE,aAAa;IAClB,KAAK,EAAE;QACL,GAAG,EAAE;YACH,GAAG,EAAE;;;;;;;;;;;;;cAaG;SACT;KACF;IACD,QAAQ,EAAE,YAAY;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,GAAG,EAAE,iBAAiB;IACtB,KAAK,EAAE;QACL,OAAO,EAAE;YACP,GAAG,EAAE;;;;;;;;;;;;cAYG;SACT;KACF;IACD,QAAQ,EAAE,YAAY;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,GAAG,EAAE,6BAA6B;IAClC,KAAK,EAAE;QACL,mBAAmB,EAAE;YACnB,GAAG,EAAE,UAAU,GAAa;gBAC1B,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;oBAChD,IACE,GAAG,CAAC,GAAG;wBACP,GAAG,CAAC,GAAG,CAAC,MAAM;wBACd,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ,EACvC,CAAC;wBACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;oBACtC,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;wBACjD,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,QAAQ,EAAE;SACb;KACF;IACD,QAAQ,EAAE,YAAY;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,GAAG,EAAE,eAAe;IACpB,mBAAmB,EAAE,uBAAuB;CAC7C,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM;IACN,OAAO;IACP,sBAAsB;IACtB,aAAa;CACd,CAAC"}
1
+ {"version":3,"file":"design-docs.js","sourceRoot":"","sources":["../src/design-docs.ts"],"names":[],"mappings":"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"}
@@ -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;AAYF,QAAA,MAAM,GAAG,EAAE,GAOV,CAAC;AAEF,eAAe,GAAG,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: getVar('COUCHDB_SERVER'),
14
- COUCHDB_PROTOCOL: getVar('COUCHDB_PROTOCOL'),
15
- COUCHDB_ADMIN: getVar('COUCHDB_ADMIN'),
16
- COUCHDB_PASSWORD: getVar('COUCHDB_PASSWORD'),
17
- VERSION: getVar('VERSION'),
18
- NODE_ENV: getVar('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
@@ -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,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC;IACtC,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;CAC7B,CAAC;AAEF,eAAe,GAAG,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-25",
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-25",
37
- "@vue-skuilder/db": "^0.1.11-25",
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 that dotenv is configured, we can validate the environment
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
- const packResult = await packer.packCourseToFiles(courseDb, data.courseId, outputPath, fsAdapter);
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
 
@@ -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
- // Load design documents with absolute paths
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
- join(__dirname, 'assets', 'classroomDesignDoc.js'),
43
+ getAssetPath('classroomDesignDoc.js'),
21
44
  'utf-8'
22
45
  );
23
46
 
24
47
  export const courseDBDesignDoc = fileSystem.readFileSync(
25
- join(__dirname, 'assets', 'get-tagsDesignDoc.json'),
48
+ getAssetPath('get-tagsDesignDoc.json'),
26
49
  'utf-8'
27
50
  );
28
51
 
29
52
  export const courseValidateDocUpdate = fileSystem.readFileSync(
30
- join(__dirname, 'assets', 'courseValidateDocUpdate.js'),
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: getVar('COUCHDB_SERVER'),
25
- COUCHDB_PROTOCOL: getVar('COUCHDB_PROTOCOL'),
26
- COUCHDB_ADMIN: getVar('COUCHDB_ADMIN'),
27
- COUCHDB_PASSWORD: getVar('COUCHDB_PASSWORD'),
28
- VERSION: getVar('VERSION'),
29
- NODE_ENV: getVar('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;