@pie-players/pie-players-shared 0.3.11 → 0.3.13

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.
@@ -12,6 +12,8 @@ import { type ElementLoaderInterface, type ElementMap, type LoadOptions } from "
12
12
  export interface EsmElementLoaderConfig {
13
13
  /** Base URL for ESM CDN (e.g., "https://esm.sh") */
14
14
  esmCdnUrl: string;
15
+ /** Module resolution mode (default: "url") */
16
+ moduleResolution?: "url" | "import-map";
15
17
  /** Optional function to check if debug mode is enabled */
16
18
  debugEnabled?: () => boolean;
17
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EsmElementLoader.d.ts","sourceRoot":"","sources":["../../src/loaders/EsmElementLoader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAEN,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAElB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,gBAAiB,YAAW,sBAAsB;IAC9D,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,sBAAsB;IAO1C;;;;;OAKG;IACG,YAAY,CACjB,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;IAOhB;;;;;;;;OAQG;IACG,aAAa,CAClB,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;CAIhB"}
1
+ {"version":3,"file":"EsmElementLoader.d.ts","sourceRoot":"","sources":["../../src/loaders/EsmElementLoader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAEN,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAElB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC;IAExC,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,gBAAiB,YAAW,sBAAsB;IAC9D,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,sBAAsB;IAQ1C;;;;;OAKG;IACG,YAAY,CACjB,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;IAOhB;;;;;;;;OAQG;IACG,aAAa,CAClB,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;CAIhB"}
@@ -39,6 +39,7 @@ export class EsmElementLoader {
39
39
  constructor(config) {
40
40
  this.loader = new EsmPieLoader({
41
41
  cdnBaseUrl: config.esmCdnUrl,
42
+ moduleResolution: config.moduleResolution,
42
43
  debugEnabled: config.debugEnabled,
43
44
  });
44
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EsmElementLoader.js","sourceRoot":"","sources":["../../src/loaders/EsmElementLoader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACN,iBAAiB,GAIjB,MAAM,oBAAoB,CAAC;AAa5B;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,gBAAgB;IACpB,MAAM,CAAe;IAE7B,YAAY,MAA8B;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC;YAC9B,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,YAAY,EAAE,MAAM,CAAC,YAAY;SACjC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CACjB,QAAoB,EACpB,OAAqB;QAErB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE;YAC9C,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,UAAU;YACjC,eAAe,EAAE,OAAO,EAAE,gBAAgB,IAAI,IAAI;SAClD,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CAClB,KAAmB,EACnB,OAAqB;QAErB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;CACD"}
1
+ {"version":3,"file":"EsmElementLoader.js","sourceRoot":"","sources":["../../src/loaders/EsmElementLoader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACN,iBAAiB,GAIjB,MAAM,oBAAoB,CAAC;AAgB5B;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,gBAAgB;IACpB,MAAM,CAAe;IAE7B,YAAY,MAA8B;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC;YAC9B,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,YAAY,EAAE,MAAM,CAAC,YAAY;SACjC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CACjB,QAAoB,EACpB,OAAqB;QAErB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE;YAC9C,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,UAAU;YACjC,eAAe,EAAE,OAAO,EAAE,gBAAgB,IAAI,IAAI;SAClD,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CAClB,KAAmB,EACnB,OAAqB;QAErB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;CACD"}
@@ -0,0 +1,4 @@
1
+ import type { Env } from "../types/index.js";
2
+ export declare const canPopulateCorrectResponses: (env: Env) => boolean;
3
+ export declare const getCorrectResponseEnv: (env: Env) => Env;
4
+ //# sourceMappingURL=correct-response-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correct-response-env.d.ts","sourceRoot":"","sources":["../../src/pie/correct-response-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE7C,eAAO,MAAM,2BAA2B,GAAI,KAAK,GAAG,KAAG,OAC9B,CAAC;AAE1B,eAAO,MAAM,qBAAqB,GAAI,KAAK,GAAG,KAAG,GAG/C,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const canPopulateCorrectResponses = (env) => env.mode !== "evaluate";
2
+ export const getCorrectResponseEnv = (env) => ({
3
+ ...env,
4
+ role: "instructor",
5
+ });
6
+ //# sourceMappingURL=correct-response-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correct-response-env.js","sourceRoot":"","sources":["../../src/pie/correct-response-env.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAQ,EAAW,EAAE,CAC/D,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC;AAE1B,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAQ,EAAO,EAAE,CAAC,CAAC;IACvD,GAAG,GAAG;IACN,IAAI,EAAE,YAAY;CACnB,CAAC,CAAC"}
@@ -13,6 +13,12 @@
13
13
  export interface EsmLoaderConfig {
14
14
  cdnBaseUrl: string;
15
15
  debugEnabled?: () => boolean;
16
+ /**
17
+ * Module resolution mode.
18
+ * - "url" (default): load using fully-qualified CDN URLs
19
+ * - "import-map": load using bare specifiers resolved by injected import maps
20
+ */
21
+ moduleResolution?: "url" | "import-map";
16
22
  }
17
23
  /**
18
24
  * View configuration for element loading
@@ -47,6 +53,7 @@ export interface EsmLoadOptions {
47
53
  export declare const BUILT_IN_VIEWS: Record<string, ViewConfig>;
48
54
  export declare class EsmPieLoader {
49
55
  private cdnBaseUrl;
56
+ private moduleResolution;
50
57
  private importMapInjected;
51
58
  constructor(config: EsmLoaderConfig);
52
59
  private extractPackageName;
@@ -56,6 +63,10 @@ export declare class EsmPieLoader {
56
63
  private resolveControllerUrl;
57
64
  private resolveSubpathUrl;
58
65
  private injectImportMap;
66
+ private assertRuntimeSupport;
67
+ private normalizeImportError;
68
+ private resolveElementSpecifier;
69
+ private resolveControllerSpecifier;
59
70
  private loadElement;
60
71
  getController(tag: string): any | null;
61
72
  elementsHaveLoaded(elements: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"esm-loader.d.ts","sourceRoot":"","sources":["../../src/pie/esm-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,UAAU,CAAC;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAmBrD,CAAC;AAEF,qBAAa,YAAY;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,MAAM,EAAE,eAAe;IASnC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,iBAAiB;IA0CzB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;YAOT,WAAW;IA4IlB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAKhC,kBAAkB,CAC9B,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,GAC5C,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IAUvD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,IAAI,CAChB,aAAa,EAAE,GAAG,EAClB,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;CAiDhB"}
1
+ {"version":3,"file":"esm-loader.d.ts","sourceRoot":"","sources":["../../src/pie/esm-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;IAC7B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,UAAU,CAAC;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAmBrD,CAAC;AAEF,qBAAa,YAAY;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,MAAM,EAAE,eAAe;IAUnC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,iBAAiB;IA0CzB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,oBAAoB;IAmC5B,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,0BAA0B;YAUpB,WAAW;IAiJlB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAKhC,kBAAkB,CAC9B,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,GAC5C,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IAUvD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,IAAI,CAChB,aAAa,EAAE,GAAG,EAClB,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;CAwDhB"}
@@ -42,9 +42,11 @@ export const BUILT_IN_VIEWS = {
42
42
  };
43
43
  export class EsmPieLoader {
44
44
  cdnBaseUrl;
45
+ moduleResolution;
45
46
  importMapInjected = false;
46
47
  constructor(config) {
47
- this.cdnBaseUrl = config.cdnBaseUrl;
48
+ this.cdnBaseUrl = config.cdnBaseUrl.replace(/\/+$/, "");
49
+ this.moduleResolution = config.moduleResolution || "url";
48
50
  // Initialize logger with debug function
49
51
  logger = createPieLogger("esm-loader", config.debugEnabled || (() => false));
50
52
  }
@@ -115,6 +117,59 @@ export class EsmPieLoader {
115
117
  script.textContent = JSON.stringify(importMap, null, 2);
116
118
  doc.head.appendChild(script);
117
119
  }
120
+ assertRuntimeSupport(doc) {
121
+ if (!doc?.head) {
122
+ throw new Error(`ESM loader requires a browser document with a <head> to load modules (moduleResolution=${this.moduleResolution}).`);
123
+ }
124
+ if (typeof customElements === "undefined") {
125
+ throw new Error(`ESM loader requires Custom Elements support in this environment (moduleResolution=${this.moduleResolution}).`);
126
+ }
127
+ if (this.moduleResolution === "import-map") {
128
+ const htmlScriptElement = HTMLScriptElement;
129
+ const supportsImportMap = typeof HTMLScriptElement !== "undefined" &&
130
+ typeof htmlScriptElement.supports === "function" &&
131
+ htmlScriptElement.supports("importmap");
132
+ if (!supportsImportMap) {
133
+ throw new Error('This browser does not support import maps. Use moduleResolution="url" or switch to iife/preloaded strategy.');
134
+ }
135
+ }
136
+ }
137
+ normalizeImportError(err, specifier, context) {
138
+ const message = err instanceof Error ? err.message : String(err);
139
+ const lower = message.toLowerCase();
140
+ const likelyCspOrPolicy = lower.includes("refused") ||
141
+ lower.includes("content security policy") ||
142
+ lower.includes("failed to fetch dynamically imported module") ||
143
+ lower.includes("blocked");
144
+ const likelyResolutionIssue = lower.includes("failed to resolve module specifier") ||
145
+ lower.includes("cannot find module");
146
+ const hints = [];
147
+ if (this.moduleResolution === "import-map" && likelyResolutionIssue) {
148
+ hints.push("Import-map resolution failed. Ensure the import map contains this specifier, or use moduleResolution=\"url\".");
149
+ }
150
+ if (likelyCspOrPolicy) {
151
+ hints.push(`Check CSP allows module loading from ${this.cdnBaseUrl} (script-src/connect-src) and allows import maps if moduleResolution="import-map".`);
152
+ }
153
+ const prefix = `Failed to load ${context} module: ${specifier}`;
154
+ if (hints.length === 0) {
155
+ return new Error(`${prefix}. ${message}`);
156
+ }
157
+ return new Error(`${prefix}. ${message} Hints: ${hints.join(" ")}`);
158
+ }
159
+ resolveElementSpecifier(packageName, packageVersion, viewConfig) {
160
+ if (this.moduleResolution === "import-map") {
161
+ return viewConfig.subpath ? `${packageName}${viewConfig.subpath}` : packageName;
162
+ }
163
+ return viewConfig.subpath
164
+ ? this.resolveSubpathUrl(packageVersion, viewConfig.subpath)
165
+ : this.resolvePackageUrl(packageVersion);
166
+ }
167
+ resolveControllerSpecifier(packageName, packageVersion) {
168
+ if (this.moduleResolution === "import-map") {
169
+ return `${packageName}/controller`;
170
+ }
171
+ return this.resolveControllerUrl(packageVersion);
172
+ }
118
173
  async loadElement(tag, packageVersion, options) {
119
174
  const registry = pieRegistry();
120
175
  const viewConfig = options.viewConfig ||
@@ -125,15 +180,13 @@ export class EsmPieLoader {
125
180
  const actualTag = validateCustomElementTag(`${tag}${viewConfig.tagSuffix}`, `element tag for ${packageName}`);
126
181
  logger.debug(`Loading element ${actualTag} from ${packageName} (${packageVersion})`);
127
182
  logger.debug(`View: ${options.view}, subpath: ${viewConfig.subpath}`);
128
- // Determine import path based on view
129
- const importPath = viewConfig.subpath
130
- ? `${packageName}${viewConfig.subpath}`
131
- : packageName;
183
+ // Determine import specifier based on resolution mode and view
184
+ const importSpecifier = this.resolveElementSpecifier(packageName, packageVersion, viewConfig);
132
185
  let module;
133
186
  let ElementClass;
134
187
  try {
135
- // @vite-ignore - Dynamic import from CDN via import maps (runtime resolution)
136
- module = await import(/* @vite-ignore */ importPath);
188
+ // @vite-ignore - Dynamic import from runtime specifier (URL or import-map bare path)
189
+ module = await import(/* @vite-ignore */ importSpecifier);
137
190
  logger.debug(`Module loaded for ${actualTag}:`, module);
138
191
  logger.debug(`Module exports:`, Object.keys(module));
139
192
  // Try different export patterns based on view
@@ -150,35 +203,28 @@ export class EsmPieLoader {
150
203
  catch (err) {
151
204
  // If loading fails and there's a fallback, try the fallback
152
205
  if (viewConfig.fallback) {
153
- logger.warn(`Failed to load ${importPath}, trying fallback: ${viewConfig.fallback}`);
206
+ logger.warn(`Failed to load ${importSpecifier}, trying fallback: ${viewConfig.fallback}`);
154
207
  const fallbackConfig = BUILT_IN_VIEWS[viewConfig.fallback];
155
- // Construct fallback path
156
- let fallbackPath;
157
- if (fallbackConfig.subpath) {
158
- fallbackPath = `${packageName}${fallbackConfig.subpath}`;
159
- }
160
- else {
161
- fallbackPath = packageName;
162
- }
163
- // @vite-ignore - Dynamic import from CDN via import maps (runtime resolution)
164
- module = await import(/* @vite-ignore */ fallbackPath);
208
+ const fallbackSpecifier = this.resolveElementSpecifier(packageName, packageVersion, fallbackConfig || BUILT_IN_VIEWS.delivery);
209
+ // @vite-ignore - Dynamic import from runtime specifier (URL or import-map bare path)
210
+ module = await import(/* @vite-ignore */ fallbackSpecifier);
165
211
  ElementClass = module.default || module.Element;
166
212
  logger.debug(`Loaded fallback view for ${actualTag}`);
167
213
  }
168
214
  else {
169
- throw err;
215
+ throw this.normalizeImportError(err, importSpecifier, "element");
170
216
  }
171
217
  }
172
218
  if (!ElementClass) {
173
- throw new Error(`No suitable element class found in ${importPath} for view ${options.view}`);
219
+ throw new Error(`No suitable element class found in ${importSpecifier} for view ${options.view}`);
174
220
  }
175
221
  // Load controller separately if needed
176
222
  let controller = null;
177
223
  if (options.loadControllers) {
224
+ const controllerSpecifier = this.resolveControllerSpecifier(packageName, packageVersion);
178
225
  try {
179
- // @vite-ignore - Dynamic import from CDN via import maps (runtime resolution)
180
- const controllerModule = await import(
181
- /* @vite-ignore */ `${packageName}/controller`);
226
+ // @vite-ignore - Dynamic import from runtime specifier (URL or import-map bare path)
227
+ const controllerModule = await import(/* @vite-ignore */ controllerSpecifier);
182
228
  logger.debug(`Controller module loaded for ${actualTag}:`, controllerModule);
183
229
  // Controller exports as 'default'
184
230
  controller = controllerModule.default || controllerModule;
@@ -190,7 +236,7 @@ export class EsmPieLoader {
190
236
  }
191
237
  }
192
238
  catch (err) {
193
- logger.warn(`Failed to load controller for ${actualTag}:`, err);
239
+ logger.warn(`Failed to load controller for ${actualTag}:`, this.normalizeImportError(err, controllerSpecifier, "controller"));
194
240
  }
195
241
  }
196
242
  // Register in the global PIE registry (used by shared initialization code)
@@ -276,20 +322,26 @@ export class EsmPieLoader {
276
322
  logger.warn("No elements in config");
277
323
  return;
278
324
  }
325
+ this.assertRuntimeSupport(doc);
279
326
  const viewConfig = options.viewConfig ||
280
327
  BUILT_IN_VIEWS[options.view] ||
281
328
  BUILT_IN_VIEWS.delivery;
282
- // 0. Generate and inject import map (once per page)
283
- if (!this.importMapInjected) {
284
- logger.debug("Generating import map for view:", options.view);
285
- const importMap = this.generateImportMap(contentConfig.elements, options);
286
- logger.debug("Import map:", importMap);
287
- this.injectImportMap(importMap, doc);
288
- this.importMapInjected = true;
289
- logger.debug("Import map injected");
329
+ // 0. Generate and inject import map when import-map mode is enabled
330
+ if (this.moduleResolution === "import-map") {
331
+ if (!this.importMapInjected) {
332
+ logger.debug("Generating import map for view:", options.view);
333
+ const importMap = this.generateImportMap(contentConfig.elements, options);
334
+ logger.debug("Import map:", importMap);
335
+ this.injectImportMap(importMap, doc);
336
+ this.importMapInjected = true;
337
+ logger.debug("Import map injected");
338
+ }
339
+ else {
340
+ logger.debug("Import map already injected, skipping");
341
+ }
290
342
  }
291
343
  else {
292
- logger.debug("Import map already injected, skipping");
344
+ logger.debug(`Skipping import map injection (moduleResolution=${this.moduleResolution})`);
293
345
  }
294
346
  // 2. Dynamically import and register each element
295
347
  const elementTags = Object.keys(contentConfig.elements);
@@ -1 +1 @@
1
- {"version":3,"file":"esm-loader.js","sourceRoot":"","sources":["../../src/pie/esm-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esm-loader.js","sourceRoot":"","sources":["../../src/pie/esm-loader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-players/pie-players-shared",
3
- "version": "0.3.11",
3
+ "version": "0.3.13",
4
4
  "type": "module",
5
5
  "description": "Shared runtime + UI utilities for PIE players",
6
6
  "license": "MIT",
@@ -18,6 +18,10 @@
18
18
  createDefaultSoundInsertHandler,
19
19
  } from "../pie/asset-handler.js";
20
20
  import { initializeConfiguresFromLoadedBundle } from "../pie/configure-initialization.js";
21
+ import {
22
+ canPopulateCorrectResponses,
23
+ getCorrectResponseEnv,
24
+ } from "../pie/correct-response-env.js";
21
25
  import { initializePiesFromLoadedBundle } from "../pie/initialization.js";
22
26
  import { createPieLogger, isGlobalDebugEnabled } from "../pie/logger.js";
23
27
  import { findPieController } from "../pie/scoring.js";
@@ -244,15 +248,16 @@
244
248
  if (!addCorrectResponse || !itemConfig || (correctResponsesAdded && !force))
245
249
  return;
246
250
 
247
- // CRITICAL: Only populate if env has instructor role (required for createCorrectResponseSession)
248
- if (env.role !== "instructor" || env.mode === "evaluate") {
251
+ // Keep evaluate mode behavior unchanged, but preserve legacy compatibility by
252
+ // forcing instructor role internally when generating correct responses.
253
+ if (!canPopulateCorrectResponses(env)) {
249
254
  logger.debug(
250
- "[PieItemPlayer] Skipping populateCorrectResponses - env not suitable (role=%s, mode=%s)",
251
- env.role,
255
+ "[PieItemPlayer] Skipping populateCorrectResponses - env not suitable (mode=%s)",
252
256
  env.mode
253
257
  );
254
258
  return;
255
259
  }
260
+ const correctResponseEnv = getCorrectResponseEnv(env);
256
261
  const newSession: any[] = [];
257
262
 
258
263
  for (const model of itemConfig.models) {
@@ -267,14 +272,17 @@
267
272
  if (controller && controller.createCorrectResponseSession) {
268
273
  try {
269
274
  const correctResponse =
270
- (await controller.createCorrectResponseSession(model, env)) as any;
275
+ (await controller.createCorrectResponseSession(
276
+ model,
277
+ correctResponseEnv
278
+ )) as any;
271
279
 
272
280
  // Check if we got a valid response
273
281
  if (!correctResponse) {
274
282
  logger.debug(
275
283
  "[PieItemPlayer] createCorrectResponseSession returned null for %s (env=%j)",
276
284
  model.element,
277
- env
285
+ correctResponseEnv
278
286
  );
279
287
  continue;
280
288
  }
@@ -697,7 +705,8 @@
697
705
 
698
706
  if (addCorrectResponse && !correctResponsesAdded) {
699
707
  // Need to populate correct responses
700
- // populateCorrectResponses will check if env is suitable (role === 'instructor')
708
+ // populateCorrectResponses preserves legacy compatibility by forcing
709
+ // instructor role internally for createCorrectResponseSession.
701
710
  untrack(async () => {
702
711
  await populateCorrectResponses();
703
712
  // Elements will be updated by the env/session effect below