@forsakringskassan/docs-generator 2.20.0 → 2.21.1

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.ts CHANGED
@@ -19,7 +19,7 @@ export declare interface CompileOptions {
19
19
  *
20
20
  * - `head` - the asset is injected in `<head>`
21
21
  * - `body` - the asset is injected in `<body>`
22
- * - `none` (default) - the asset is not injected.
22
+ * - `none` (default) - the asset is not injected (but is available in importmap)
23
23
  */
24
24
  appendTo: "none" | "head" | "body";
25
25
  /**
@@ -222,6 +222,7 @@ declare class Generator_2 {
222
222
  private markdownOptions;
223
223
  constructor(options: GeneratorOptions);
224
224
  compileScript(name: string, src: string | URL, options?: Partial<CompileOptions>, buildOptions?: {
225
+ format?: "iife" | "cjs" | "esm";
225
226
  define?: Record<string, string>;
226
227
  }): void;
227
228
  compileStyle(name: string, src: string | URL, options?: Partial<CompileOptions>): void;
@@ -510,8 +511,9 @@ export declare interface ProcessorContext {
510
511
  /* Excluded from this release type: hasTemplate */
511
512
  setTopNavigation(root: NavigationSection): void;
512
513
  setSideNavigation(root: NavigationSection): void;
513
- getAllTemplateData(): Record<string, unknown>;
514
+ getAllTemplateData(): TemplateData & Record<string, unknown>;
514
515
  getTemplateData<K extends keyof TemplateData>(key: K): TemplateData[K] | undefined;
516
+ getTemplateData<K extends keyof TemplateData>(key: K, defaultValue: TemplateData[K]): TemplateData[K];
515
517
  getTemplateData(key: string): unknown;
516
518
  setTemplateData<K extends keyof TemplateData>(key: string, value: TemplateData[K]): void;
517
519
  setTemplateData(key: string, value: unknown): void;
@@ -564,6 +566,7 @@ export declare interface ProcessorRuntime {
564
566
  name?: string;
565
567
  /** Build options (passed to compileScript) */
566
568
  buildOptions?: {
569
+ format?: "iife" | "cjs" | "esm";
567
570
  define?: Record<string, string>;
568
571
  };
569
572
  }
package/dist/index.js CHANGED
@@ -1595,6 +1595,7 @@ async function compileStyle(assetFolder, name, src, options) {
1595
1595
  filename,
1596
1596
  publicPath: `./assets/${filename}`,
1597
1597
  integrity,
1598
+ format: "stylesheet",
1598
1599
  size: stat.size,
1599
1600
  type: "css"
1600
1601
  };
@@ -1616,9 +1617,9 @@ function cssAssetProcessor(assetFolder, assets, options) {
1616
1617
  name: "css-asset-processor",
1617
1618
  after: "assets",
1618
1619
  async handler(context) {
1619
- const assetInfo = context.getTemplateData("assets") ?? {};
1620
- const head = context.getTemplateData("injectHead") ?? [];
1621
- const body = context.getTemplateData("injectBody") ?? [];
1620
+ const assetInfo = context.getTemplateData("assets", {});
1621
+ const head = context.getTemplateData("injectHead", []);
1622
+ const body = context.getTemplateData("injectBody", []);
1622
1623
  for (const asset of toSorted$1(assets, byPriority$1)) {
1623
1624
  const info = await compileStyle(
1624
1625
  assetFolder,
@@ -1628,7 +1629,10 @@ function cssAssetProcessor(assetFolder, assets, options) {
1628
1629
  );
1629
1630
  const attrs = serializeAttrs(asset.options.attributes);
1630
1631
  const inject = { ...info, attrs: Array.from(attrs).join(" ") };
1631
- assetInfo[asset.name] = info;
1632
+ assetInfo[asset.name] = {
1633
+ ...info,
1634
+ importmap: false
1635
+ };
1632
1636
  switch (asset.options.appendTo) {
1633
1637
  case "none":
1634
1638
  break;
@@ -1639,11 +1643,8 @@ function cssAssetProcessor(assetFolder, assets, options) {
1639
1643
  body.push(inject);
1640
1644
  break;
1641
1645
  }
1642
- context.setTemplateData("injectHead", head);
1643
- context.setTemplateData("injectBody", body);
1644
1646
  context.log(info.filename, formatSize(info.size));
1645
1647
  }
1646
- context.setTemplateData("assets", assetInfo);
1647
1648
  }
1648
1649
  };
1649
1650
  }
@@ -1652,11 +1653,16 @@ function esbuild(options) {
1652
1653
  return esbuild$1.build(options);
1653
1654
  }
1654
1655
 
1656
+ function toExternalVendor(vendor) {
1657
+ return typeof vendor === "string" ? vendor : vendor.package;
1658
+ }
1655
1659
  async function compileScript(options) {
1656
1660
  const {
1657
1661
  assetFolder,
1658
1662
  name,
1659
1663
  src,
1664
+ assets,
1665
+ vendor,
1660
1666
  buildOptions,
1661
1667
  fs: fs$1 = fs
1662
1668
  } = options;
@@ -1664,13 +1670,15 @@ async function compileScript(options) {
1664
1670
  try {
1665
1671
  const entryPoints = [src instanceof URL ? node_url.fileURLToPath(src) : src];
1666
1672
  const outfile = path$1.join("temp", `asset-${name}.js`);
1673
+ const external = [...assets, ...vendor.map(toExternalVendor)];
1674
+ const format = buildOptions.format ?? "esm";
1667
1675
  await esbuild({
1668
1676
  entryPoints,
1669
1677
  outfile,
1670
1678
  bundle: true,
1671
- format: "iife",
1679
+ format,
1672
1680
  platform: "browser",
1673
- external: ["vue", "@fkui/vue"],
1681
+ external,
1674
1682
  tsconfig: path$1.join(__dirname, "../tsconfig-examples.json"),
1675
1683
  ...buildOptions,
1676
1684
  define: {
@@ -1691,6 +1699,7 @@ async function compileScript(options) {
1691
1699
  filename,
1692
1700
  publicPath: `./assets/${filename}`,
1693
1701
  integrity,
1702
+ format,
1694
1703
  size: stat.size,
1695
1704
  type: "js"
1696
1705
  };
@@ -1706,24 +1715,33 @@ function byPriority({ options: a }, { options: b }) {
1706
1715
  function toSorted(values, comparator) {
1707
1716
  return [...values].sort(comparator);
1708
1717
  }
1709
- function jsAssetProcessor(assetFolder, assets) {
1718
+ function isExternal(asset) {
1719
+ return asset.options.appendTo === "none";
1720
+ }
1721
+ function jsAssetProcessor(assetFolder, assets, vendor) {
1722
+ const externalAssets = assets.filter(isExternal).map((it) => it.name);
1710
1723
  return {
1711
1724
  name: "js-asset-processor",
1712
1725
  after: "assets",
1713
1726
  async handler(context) {
1714
- const assetInfo = context.getTemplateData("assets") ?? {};
1715
- const head = context.getTemplateData("injectHead") ?? [];
1716
- const body = context.getTemplateData("injectBody") ?? [];
1727
+ const assetInfo = context.getTemplateData("assets", {});
1728
+ const head = context.getTemplateData("injectHead", []);
1729
+ const body = context.getTemplateData("injectBody", []);
1717
1730
  for (const asset of toSorted(assets, byPriority)) {
1718
1731
  const info = await compileScript({
1719
1732
  assetFolder,
1720
1733
  name: asset.name,
1721
1734
  src: asset.src,
1735
+ assets: externalAssets,
1736
+ vendor,
1722
1737
  buildOptions: asset.buildOptions
1723
1738
  });
1724
1739
  const attrs = serializeAttrs(asset.options.attributes);
1725
1740
  const inject = { ...info, attrs: Array.from(attrs).join(" ") };
1726
- assetInfo[asset.name] = info;
1741
+ assetInfo[asset.name] = {
1742
+ ...info,
1743
+ importmap: externalAssets.includes(asset.name)
1744
+ };
1727
1745
  switch (asset.options.appendTo) {
1728
1746
  case "none":
1729
1747
  break;
@@ -1734,8 +1752,6 @@ function jsAssetProcessor(assetFolder, assets) {
1734
1752
  body.push(inject);
1735
1753
  break;
1736
1754
  }
1737
- context.setTemplateData("injectHead", head);
1738
- context.setTemplateData("injectBody", body);
1739
1755
  context.log(info.filename, formatSize(info.size));
1740
1756
  }
1741
1757
  }
@@ -2262,16 +2278,25 @@ async function render(doc, docs, nav, vendors, options) {
2262
2278
  sidenav,
2263
2279
  vendors,
2264
2280
  importmap(doc2) {
2265
- const imports = Object.fromEntries(
2266
- vendors.map((it) => {
2281
+ const assets = Object.values(templateData.assets).filter(
2282
+ (it) => it.importmap
2283
+ );
2284
+ const imports = Object.fromEntries([
2285
+ ...vendors.map((it) => {
2267
2286
  return [it.package, relative(it.publicPath, doc2)];
2287
+ }),
2288
+ ...assets.map((it) => {
2289
+ return [it.name, relative(it.publicPath, doc2)];
2268
2290
  })
2269
- );
2270
- const integrity = Object.fromEntries(
2271
- vendors.map((it) => {
2291
+ ]);
2292
+ const integrity = Object.fromEntries([
2293
+ ...vendors.map((it) => {
2294
+ return [relative(it.publicPath, doc2), it.integrity];
2295
+ }),
2296
+ ...assets.map((it) => {
2272
2297
  return [relative(it.publicPath, doc2), it.integrity];
2273
2298
  })
2274
- );
2299
+ ]);
2275
2300
  const importmap = { imports, integrity };
2276
2301
  return JSON.stringify(importmap, null, 2);
2277
2302
  }
@@ -2717,7 +2742,7 @@ function createContext(outputFolder, templateLoader) {
2717
2742
  children: [],
2718
2743
  visible: true
2719
2744
  };
2720
- const templateData = {};
2745
+ const templateData = /* @__PURE__ */ new Map();
2721
2746
  return {
2722
2747
  get docs() {
2723
2748
  return docs;
@@ -2769,13 +2794,20 @@ function createContext(outputFolder, templateLoader) {
2769
2794
  sidenav = root;
2770
2795
  },
2771
2796
  getAllTemplateData() {
2772
- return templateData;
2797
+ return Object.fromEntries(templateData.entries());
2773
2798
  },
2774
- getTemplateData(key) {
2775
- return templateData[key];
2799
+ getTemplateData(key, defaultValue) {
2800
+ if (templateData.has(key)) {
2801
+ return templateData.get(key);
2802
+ } else if (defaultValue) {
2803
+ templateData.set(key, defaultValue);
2804
+ return defaultValue;
2805
+ } else {
2806
+ return void 0;
2807
+ }
2776
2808
  },
2777
2809
  setTemplateData(key, value) {
2778
- templateData[key] = value;
2810
+ templateData.set(key, value);
2779
2811
  }
2780
2812
  };
2781
2813
  }
@@ -2813,10 +2845,17 @@ class Generator {
2813
2845
  this.sourceFiles = [];
2814
2846
  this.markdownOptions = options.markdown;
2815
2847
  const bootstrapUrl = new URL("runtime-bootstrap.js", (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)));
2816
- this.compileScript("bootstrap", bootstrapUrl, {
2817
- appendTo: "head",
2818
- priority: 100
2819
- });
2848
+ this.compileScript(
2849
+ "bootstrap",
2850
+ bootstrapUrl,
2851
+ {
2852
+ appendTo: "head",
2853
+ priority: 100
2854
+ },
2855
+ {
2856
+ format: "iife"
2857
+ }
2858
+ );
2820
2859
  }
2821
2860
  compileScript(name, src, options, buildOptions) {
2822
2861
  this.scripts.push({
@@ -2896,7 +2935,7 @@ class Generator {
2896
2935
  redirectProcessor(),
2897
2936
  vendorProcessor(assetFolder, this.vendor),
2898
2937
  cssAssetProcessor(assetFolder, this.styles, { cwd }),
2899
- jsAssetProcessor(assetFolder, this.scripts),
2938
+ jsAssetProcessor(assetFolder, this.scripts, this.vendor),
2900
2939
  staticResourcesProcessor(assetFolder, this.resources),
2901
2940
  navigationProcessor(),
2902
2941
  nunjucksProcessor({