@patch-adams/core 1.5.22 → 1.5.24

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/index.d.cts CHANGED
@@ -301,6 +301,8 @@ declare const PatchAdamsConfigSchema: z.ZodObject<{
301
301
  }, z.ZodTypeAny, "passthrough">>>>;
302
302
  /** Optional skin name — adds 'pa-skinned' + skin class to <html>, loads skin CSS/JS after core files */
303
303
  skin: z.ZodOptional<z.ZodString>;
304
+ /** URL for server-controlled asset cache version (e.g., https://api.example.com/create/skin/version) */
305
+ assetVersionUrl: z.ZodOptional<z.ZodString>;
304
306
  }, "strip", z.ZodTypeAny, {
305
307
  remoteDomain: string;
306
308
  htmlClass: string;
@@ -353,6 +355,7 @@ declare const PatchAdamsConfigSchema: z.ZodObject<{
353
355
  enabled: z.ZodDefault<z.ZodBoolean>;
354
356
  }, z.ZodTypeAny, "passthrough">>;
355
357
  skin?: string | undefined;
358
+ assetVersionUrl?: string | undefined;
356
359
  }, {
357
360
  remoteDomain: string;
358
361
  htmlClass?: string | undefined;
@@ -405,6 +408,7 @@ declare const PatchAdamsConfigSchema: z.ZodObject<{
405
408
  enabled: z.ZodDefault<z.ZodBoolean>;
406
409
  }, z.ZodTypeAny, "passthrough">> | undefined;
407
410
  skin?: string | undefined;
411
+ assetVersionUrl?: string | undefined;
408
412
  }>;
409
413
  type PatchAdamsConfig = z.infer<typeof PatchAdamsConfigSchema>;
410
414
  type LrsBridgeConfig = z.infer<typeof LrsBridgeConfigSchema>;
@@ -1070,6 +1074,8 @@ interface JsBeforeOptions {
1070
1074
  lrsBridge: LrsBridgeOptions;
1071
1075
  /** Optional skin name */
1072
1076
  skin?: string;
1077
+ /** URL for server-controlled asset cache version */
1078
+ assetVersionUrl?: string;
1073
1079
  }
1074
1080
  /**
1075
1081
  * Generate the blocking JS loader for the "before" slot
package/dist/index.d.ts CHANGED
@@ -301,6 +301,8 @@ declare const PatchAdamsConfigSchema: z.ZodObject<{
301
301
  }, z.ZodTypeAny, "passthrough">>>>;
302
302
  /** Optional skin name — adds 'pa-skinned' + skin class to <html>, loads skin CSS/JS after core files */
303
303
  skin: z.ZodOptional<z.ZodString>;
304
+ /** URL for server-controlled asset cache version (e.g., https://api.example.com/create/skin/version) */
305
+ assetVersionUrl: z.ZodOptional<z.ZodString>;
304
306
  }, "strip", z.ZodTypeAny, {
305
307
  remoteDomain: string;
306
308
  htmlClass: string;
@@ -353,6 +355,7 @@ declare const PatchAdamsConfigSchema: z.ZodObject<{
353
355
  enabled: z.ZodDefault<z.ZodBoolean>;
354
356
  }, z.ZodTypeAny, "passthrough">>;
355
357
  skin?: string | undefined;
358
+ assetVersionUrl?: string | undefined;
356
359
  }, {
357
360
  remoteDomain: string;
358
361
  htmlClass?: string | undefined;
@@ -405,6 +408,7 @@ declare const PatchAdamsConfigSchema: z.ZodObject<{
405
408
  enabled: z.ZodDefault<z.ZodBoolean>;
406
409
  }, z.ZodTypeAny, "passthrough">> | undefined;
407
410
  skin?: string | undefined;
411
+ assetVersionUrl?: string | undefined;
408
412
  }>;
409
413
  type PatchAdamsConfig = z.infer<typeof PatchAdamsConfigSchema>;
410
414
  type LrsBridgeConfig = z.infer<typeof LrsBridgeConfigSchema>;
@@ -1070,6 +1074,8 @@ interface JsBeforeOptions {
1070
1074
  lrsBridge: LrsBridgeOptions;
1071
1075
  /** Optional skin name */
1072
1076
  skin?: string;
1077
+ /** URL for server-controlled asset cache version */
1078
+ assetVersionUrl?: string;
1073
1079
  }
1074
1080
  /**
1075
1081
  * Generate the blocking JS loader for the "before" slot
package/dist/index.js CHANGED
@@ -110,7 +110,9 @@ var PatchAdamsConfigSchema = z.object({
110
110
  /** Plugin configurations - each plugin is keyed by its name */
111
111
  plugins: PluginsConfigSchema,
112
112
  /** Optional skin name — adds 'pa-skinned' + skin class to <html>, loads skin CSS/JS after core files */
113
- skin: z.string().min(1).optional()
113
+ skin: z.string().min(1).optional(),
114
+ /** URL for server-controlled asset cache version (e.g., https://api.example.com/create/skin/version) */
115
+ assetVersionUrl: z.string().url().optional()
114
116
  });
115
117
 
116
118
  // src/config/defaults.ts
@@ -252,7 +254,8 @@ html.${htmlClass}.${loadingClass} body {
252
254
  <script data-pa="css-before-loader">
253
255
  (function() {
254
256
  'use strict';
255
- var REMOTE_URL = "${remoteUrl}";
257
+ var v = window.__pa_v || '';
258
+ var REMOTE_URL = "${remoteUrl}" + (v ? "?v=" + v : "");
256
259
  var LOCAL_PATH = "${localPath}";
257
260
 
258
261
  function loadCSSSync(url) {
@@ -295,7 +298,7 @@ function generateCssAfterLoader(options) {
295
298
  <script data-pa="css-after-loader">
296
299
  (function() {
297
300
  'use strict';
298
- var REMOTE_URL = "${remoteUrl}";
301
+ var REMOTE_URL = "${remoteUrl}" + (window.__pa_v ? "?v=" + window.__pa_v : "");
299
302
  var LOCAL_PATH = "${localPath}";
300
303
  var TIMEOUT = ${timeout};
301
304
 
@@ -5193,7 +5196,7 @@ function escapeJs(str) {
5193
5196
  return str.replace(/\\/g, "\\\\").replace(/'/g, "\\'").replace(/"/g, '\\"').replace(/\n/g, "\\n").replace(/\r/g, "\\r");
5194
5197
  }
5195
5198
  function generateJsBeforeLoader(options) {
5196
- const { remoteUrl, localPath, htmlClass, loadingClass, metadata, lrsBridge, skin } = options;
5199
+ const { remoteUrl, localPath, htmlClass, loadingClass, metadata, lrsBridge, skin, assetVersionUrl } = options;
5197
5200
  const lrsBridgeCode = generateLrsBridgeCode(lrsBridge);
5198
5201
  const courseLines = [];
5199
5202
  if (metadata) {
@@ -5296,7 +5299,21 @@ window.pa_patcher = window.pa_patcher || {
5296
5299
 
5297
5300
  (function() {
5298
5301
  'use strict';
5299
- var REMOTE_URL = "${remoteUrl}";
5302
+ // Fetch server-controlled cache version (sync, once)
5303
+ var ASSET_VERSION_URL = "${assetVersionUrl || ""}";
5304
+ window.__pa_v = '';
5305
+ if (ASSET_VERSION_URL) {
5306
+ try {
5307
+ var xhr = new XMLHttpRequest();
5308
+ xhr.open('GET', ASSET_VERSION_URL, false);
5309
+ xhr.send();
5310
+ if (xhr.status === 200) {
5311
+ window.__pa_v = JSON.parse(xhr.responseText).v || '1';
5312
+ }
5313
+ } catch(e) { window.__pa_v = '1'; }
5314
+ }
5315
+
5316
+ var REMOTE_URL = "${remoteUrl}" + (window.__pa_v ? "?v=" + window.__pa_v : "");
5300
5317
  var LOCAL_PATH = "${localPath}";
5301
5318
 
5302
5319
  function loadJSSync(url) {
@@ -5365,7 +5382,8 @@ function buildJsBeforeOptions(config, metadata) {
5365
5382
  loadingClass: config.loadingClass,
5366
5383
  metadata: metadata ?? null,
5367
5384
  lrsBridge,
5368
- skin: config.skin
5385
+ skin: config.skin,
5386
+ assetVersionUrl: config.assetVersionUrl
5369
5387
  };
5370
5388
  }
5371
5389
 
@@ -5376,7 +5394,7 @@ function generateJsAfterLoader(options) {
5376
5394
  <script data-pa="js-after-loader">
5377
5395
  (function() {
5378
5396
  'use strict';
5379
- var REMOTE_URL = "${remoteUrl}";
5397
+ var REMOTE_URL = "${remoteUrl}" + (window.__pa_v ? "?v=" + window.__pa_v : "");
5380
5398
  var LOCAL_PATH = "${localPath}";
5381
5399
  var TIMEOUT = ${timeout};
5382
5400
  var LOADING_CLASS = "${loadingClass}";
@@ -5486,7 +5504,7 @@ function generateSkinCssLoader(options) {
5486
5504
  <script data-pa="skin-css-loader">
5487
5505
  (function() {
5488
5506
  'use strict';
5489
- var REMOTE_URL = "${remoteUrl}";
5507
+ var REMOTE_URL = "${remoteUrl}" + (window.__pa_v ? "?v=" + window.__pa_v : "?v=" + Date.now().toString(36));
5490
5508
  var LOCAL_PATH = "${localPath}";
5491
5509
  var TIMEOUT = ${timeout};
5492
5510
 
@@ -5560,9 +5578,8 @@ function generateSkinCssLoader(options) {
5560
5578
  }
5561
5579
  function buildSkinCssOptions(config) {
5562
5580
  if (!config.skin) return null;
5563
- const cacheBuster = Date.now().toString(36) + Math.random().toString(36).slice(2, 6);
5564
5581
  return {
5565
- remoteUrl: `${config.remoteDomain}/skin/${config.skin}/style.css?v=${cacheBuster}`,
5582
+ remoteUrl: `${config.remoteDomain}/skin/${config.skin}/style.css`,
5566
5583
  localPath: `skin/${config.skin}/style.css`,
5567
5584
  timeout: config.cssAfter.timeout
5568
5585
  // reuse cssAfter timeout
@@ -5576,7 +5593,7 @@ function generateSkinJsLoader(options) {
5576
5593
  <script data-pa="skin-js-loader">
5577
5594
  (function() {
5578
5595
  'use strict';
5579
- var REMOTE_URL = "${remoteUrl}";
5596
+ var REMOTE_URL = "${remoteUrl}" + (window.__pa_v ? "?v=" + window.__pa_v : "?v=" + Date.now().toString(36));
5580
5597
  var LOCAL_PATH = "${localPath}";
5581
5598
  var TIMEOUT = ${timeout};
5582
5599
 
@@ -5662,9 +5679,8 @@ function generateSkinJsLoader(options) {
5662
5679
  }
5663
5680
  function buildSkinJsOptions(config) {
5664
5681
  if (!config.skin) return null;
5665
- const cacheBuster = Date.now().toString(36) + Math.random().toString(36).slice(2, 6);
5666
5682
  return {
5667
- remoteUrl: `${config.remoteDomain}/skin/${config.skin}/script.js?v=${cacheBuster}`,
5683
+ remoteUrl: `${config.remoteDomain}/skin/${config.skin}/script.js`,
5668
5684
  localPath: `skin/${config.skin}/script.js`,
5669
5685
  timeout: config.jsAfter.timeout
5670
5686
  // reuse jsAfter timeout