@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/cli.js CHANGED
@@ -458,7 +458,9 @@ var PatchAdamsConfigSchema = z.object({
458
458
  /** Plugin configurations - each plugin is keyed by its name */
459
459
  plugins: PluginsConfigSchema,
460
460
  /** Optional skin name — adds 'pa-skinned' + skin class to <html>, loads skin CSS/JS after core files */
461
- skin: z.string().min(1).optional()
461
+ skin: z.string().min(1).optional(),
462
+ /** URL for server-controlled asset cache version (e.g., https://api.example.com/create/skin/version) */
463
+ assetVersionUrl: z.string().url().optional()
462
464
  });
463
465
 
464
466
  // src/config/defaults.ts
@@ -602,7 +604,8 @@ html.${htmlClass}.${loadingClass} body {
602
604
  <script data-pa="css-before-loader">
603
605
  (function() {
604
606
  'use strict';
605
- var REMOTE_URL = "${remoteUrl}";
607
+ var v = window.__pa_v || '';
608
+ var REMOTE_URL = "${remoteUrl}" + (v ? "?v=" + v : "");
606
609
  var LOCAL_PATH = "${localPath}";
607
610
 
608
611
  function loadCSSSync(url) {
@@ -645,7 +648,7 @@ function generateCssAfterLoader(options) {
645
648
  <script data-pa="css-after-loader">
646
649
  (function() {
647
650
  'use strict';
648
- var REMOTE_URL = "${remoteUrl}";
651
+ var REMOTE_URL = "${remoteUrl}" + (window.__pa_v ? "?v=" + window.__pa_v : "");
649
652
  var LOCAL_PATH = "${localPath}";
650
653
  var TIMEOUT = ${timeout};
651
654
 
@@ -5524,7 +5527,7 @@ function escapeJs(str) {
5524
5527
  return str.replace(/\\/g, "\\\\").replace(/'/g, "\\'").replace(/"/g, '\\"').replace(/\n/g, "\\n").replace(/\r/g, "\\r");
5525
5528
  }
5526
5529
  function generateJsBeforeLoader(options) {
5527
- const { remoteUrl, localPath, htmlClass, loadingClass, metadata, lrsBridge, skin } = options;
5530
+ const { remoteUrl, localPath, htmlClass, loadingClass, metadata, lrsBridge, skin, assetVersionUrl } = options;
5528
5531
  const lrsBridgeCode = generateLrsBridgeCode(lrsBridge);
5529
5532
  const courseLines = [];
5530
5533
  if (metadata) {
@@ -5627,7 +5630,21 @@ window.pa_patcher = window.pa_patcher || {
5627
5630
 
5628
5631
  (function() {
5629
5632
  'use strict';
5630
- var REMOTE_URL = "${remoteUrl}";
5633
+ // Fetch server-controlled cache version (sync, once)
5634
+ var ASSET_VERSION_URL = "${assetVersionUrl || ""}";
5635
+ window.__pa_v = '';
5636
+ if (ASSET_VERSION_URL) {
5637
+ try {
5638
+ var xhr = new XMLHttpRequest();
5639
+ xhr.open('GET', ASSET_VERSION_URL, false);
5640
+ xhr.send();
5641
+ if (xhr.status === 200) {
5642
+ window.__pa_v = JSON.parse(xhr.responseText).v || '1';
5643
+ }
5644
+ } catch(e) { window.__pa_v = '1'; }
5645
+ }
5646
+
5647
+ var REMOTE_URL = "${remoteUrl}" + (window.__pa_v ? "?v=" + window.__pa_v : "");
5631
5648
  var LOCAL_PATH = "${localPath}";
5632
5649
 
5633
5650
  function loadJSSync(url) {
@@ -5696,7 +5713,8 @@ function buildJsBeforeOptions(config, metadata) {
5696
5713
  loadingClass: config.loadingClass,
5697
5714
  metadata: metadata ?? null,
5698
5715
  lrsBridge,
5699
- skin: config.skin
5716
+ skin: config.skin,
5717
+ assetVersionUrl: config.assetVersionUrl
5700
5718
  };
5701
5719
  }
5702
5720
 
@@ -5707,7 +5725,7 @@ function generateJsAfterLoader(options) {
5707
5725
  <script data-pa="js-after-loader">
5708
5726
  (function() {
5709
5727
  'use strict';
5710
- var REMOTE_URL = "${remoteUrl}";
5728
+ var REMOTE_URL = "${remoteUrl}" + (window.__pa_v ? "?v=" + window.__pa_v : "");
5711
5729
  var LOCAL_PATH = "${localPath}";
5712
5730
  var TIMEOUT = ${timeout};
5713
5731
  var LOADING_CLASS = "${loadingClass}";
@@ -5817,7 +5835,7 @@ function generateSkinCssLoader(options) {
5817
5835
  <script data-pa="skin-css-loader">
5818
5836
  (function() {
5819
5837
  'use strict';
5820
- var REMOTE_URL = "${remoteUrl}";
5838
+ var REMOTE_URL = "${remoteUrl}" + (window.__pa_v ? "?v=" + window.__pa_v : "?v=" + Date.now().toString(36));
5821
5839
  var LOCAL_PATH = "${localPath}";
5822
5840
  var TIMEOUT = ${timeout};
5823
5841
 
@@ -5891,9 +5909,8 @@ function generateSkinCssLoader(options) {
5891
5909
  }
5892
5910
  function buildSkinCssOptions(config) {
5893
5911
  if (!config.skin) return null;
5894
- const cacheBuster = Date.now().toString(36) + Math.random().toString(36).slice(2, 6);
5895
5912
  return {
5896
- remoteUrl: `${config.remoteDomain}/skin/${config.skin}/style.css?v=${cacheBuster}`,
5913
+ remoteUrl: `${config.remoteDomain}/skin/${config.skin}/style.css`,
5897
5914
  localPath: `skin/${config.skin}/style.css`,
5898
5915
  timeout: config.cssAfter.timeout
5899
5916
  // reuse cssAfter timeout
@@ -5907,7 +5924,7 @@ function generateSkinJsLoader(options) {
5907
5924
  <script data-pa="skin-js-loader">
5908
5925
  (function() {
5909
5926
  'use strict';
5910
- var REMOTE_URL = "${remoteUrl}";
5927
+ var REMOTE_URL = "${remoteUrl}" + (window.__pa_v ? "?v=" + window.__pa_v : "?v=" + Date.now().toString(36));
5911
5928
  var LOCAL_PATH = "${localPath}";
5912
5929
  var TIMEOUT = ${timeout};
5913
5930
 
@@ -5993,9 +6010,8 @@ function generateSkinJsLoader(options) {
5993
6010
  }
5994
6011
  function buildSkinJsOptions(config) {
5995
6012
  if (!config.skin) return null;
5996
- const cacheBuster = Date.now().toString(36) + Math.random().toString(36).slice(2, 6);
5997
6013
  return {
5998
- remoteUrl: `${config.remoteDomain}/skin/${config.skin}/script.js?v=${cacheBuster}`,
6014
+ remoteUrl: `${config.remoteDomain}/skin/${config.skin}/script.js`,
5999
6015
  localPath: `skin/${config.skin}/script.js`,
6000
6016
  timeout: config.jsAfter.timeout
6001
6017
  // reuse jsAfter timeout