@rocket/js 0.1.0 → 0.1.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.
Files changed (36) hide show
  1. package/README.md +14 -5
  2. package/dist-types/exports/components.d.ts +1 -1
  3. package/dist-types/exports/icons.d.ts +1 -1
  4. package/dist-types/exports/layout.d.ts +1 -1
  5. package/dist-types/src/cli/RocketBuild.d.ts.map +1 -1
  6. package/dist-types/src/cli/RocketInit.d.ts.map +1 -1
  7. package/dist-types/src/cli/RocketStart.d.ts +34 -2
  8. package/dist-types/src/cli/RocketStart.d.ts.map +1 -1
  9. package/dist-types/src/components.d.ts +2 -0
  10. package/dist-types/src/components.d.ts.map +1 -1
  11. package/dist-types/src/icons.d.ts +12 -0
  12. package/dist-types/src/icons.d.ts.map +1 -1
  13. package/dist-types/src/layouts/atlas/atlasDocLayout.d.ts.map +1 -1
  14. package/dist-types/src/layouts/atlas/atlasHeroLayout.d.ts.map +1 -1
  15. package/dist-types/src/layouts/layout.d.ts +2 -4
  16. package/dist-types/src/layouts/layout.d.ts.map +1 -1
  17. package/dist-types/src/standalone-demo-url.d.ts.map +1 -1
  18. package/dist-types/src/transform.d.ts.map +1 -1
  19. package/dist-types/src/wds-plugin.d.ts +1 -0
  20. package/dist-types/src/wds-plugin.d.ts.map +1 -1
  21. package/exports/components.js +1 -1
  22. package/exports/icons.js +3 -0
  23. package/exports/layout.js +1 -1
  24. package/package.json +1 -1
  25. package/src/cli/RocketBuild.js +38 -2
  26. package/src/cli/RocketInit.js +337 -24
  27. package/src/cli/RocketStart.js +96 -30
  28. package/src/components.js +19 -0
  29. package/src/icons.js +15 -0
  30. package/src/layouts/atlas/atlasDocLayout.js +2 -15
  31. package/src/layouts/atlas/atlasHeroLayout.js +3 -12
  32. package/src/layouts/layout.js +2 -12
  33. package/src/main.js +21 -4
  34. package/src/standalone-demo-url.js +21 -8
  35. package/src/transform.js +89 -2
  36. package/src/wds-plugin.js +14 -9
package/README.md CHANGED
@@ -76,8 +76,9 @@ npm install @rocket/js
76
76
  npx rocket init
77
77
  ```
78
78
 
79
- `rocket init` creates `rocket-config.js`, `docs/pages/index.rocket.md`, and a removable
80
- project-local Rocket Agent Skill. It also adds npm scripts when the names are available:
79
+ `rocket init` creates a compact Atlas docs starter, including `rocket-config.js`,
80
+ `docs/pages/sharedData.js`, starter Markdown Pages, a static JSON Page for a Request Demo, and a
81
+ removable project-local Rocket Agent Skill. It also adds npm scripts when the names are available:
81
82
 
82
83
  ```json
83
84
  {
@@ -102,7 +103,7 @@ export default {
102
103
  };
103
104
  ```
104
105
 
105
- The generated `docs/pages/index.rocket.md` gives you a first Page:
106
+ The generated `docs/pages/index.rocket.md` gives you an Atlas hero home Page:
106
107
 
107
108
  ````md
108
109
  ```js server
@@ -112,14 +113,22 @@ export const config = {
112
113
  title: 'Rocket Site',
113
114
  description: 'Documentation built with Rocket.',
114
115
  },
116
+ menu: {
117
+ iconName: 'house',
118
+ order: 0,
119
+ },
115
120
  };
116
121
 
117
- export { layout } from '@rocket/js/layout.js';
122
+ import { atlasHeroLayout, atlasHeroComponents } from '@rocket/js/layouts/atlasHero.js';
123
+ import { heroData } from './sharedData.js';
124
+
125
+ export const components = atlasHeroComponents;
126
+ export const layout = pageData => atlasHeroLayout(pageData, heroData);
118
127
  ```
119
128
 
120
129
  # Rocket Site
121
130
 
122
- This Page is rendered by Rocket.
131
+ This starter is rendered with Rocket's Atlas hero layout.
123
132
  ````
124
133
 
125
134
  Then run:
@@ -1,2 +1,2 @@
1
- export { parseComponents } from "../src/components.js";
1
+ export { parseComponents, rocketDemoComponents } from "../src/components.js";
2
2
  //# sourceMappingURL=components.d.ts.map
@@ -1,2 +1,2 @@
1
- export { createIconAssetStore, finalizeRocketIcons, iconsFromPackage, iconsFromPath, resolveRocketIconAsset, rocketIconRuntimeOutputs } from "../src/icons.js";
1
+ export { addBootstrapIconLibrary, createIconAssetStore, finalizeRocketIcons, iconsFromPackage, iconsFromPath, resolveRocketIconAsset, rocketBootstrapIconLibraries, rocketDefaultBootstrapIconLibrary, rocketIconRuntimeOutputs } from "../src/icons.js";
2
2
  //# sourceMappingURL=icons.d.ts.map
@@ -1,2 +1,2 @@
1
- export { layout } from "../src/layouts/layout.js";
1
+ export { addBootstrapIconLibrary, layout } from "../src/layouts/layout.js";
2
2
  //# sourceMappingURL=layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RocketBuild.d.ts","sourceRoot":"","sources":["../../../src/cli/RocketBuild.js"],"names":[],"mappings":"AAwKA;;;GAGG;AACH,kCAHW,OAAO,qBAAqB,EAAE,YAAY,GACxC;IAAE,WAAW,EAAE,OAAO,qBAAqB,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,OAAO,qBAAqB,EAAE,YAAY,CAAA;CAAE,CAqBhI;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,mQAtBW;IACN,KAAK,EAAE,OAAO,qBAAqB,EAAE,YAAY,CAAC;IAClD,WAAW,EAAE,OAAO,qBAAqB,EAAE,YAAY,CAAC;IACxD,gBAAgB,CAAC,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,CAAC;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,qBAAqB,EAAE,kBAAkB,CAAC;IAChE,gBAAgB,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,qBAAqB,EAAE,mBAAmB,CAAC;IAClE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,aAAa,EAAE,cAAc,CAAC;IACtD,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE;QACpC,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IACvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GACS,OAAO,CAAC;IAAE,0BAA0B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAwExE;AAlQD;IACE;;;;;;;OAOG;IACH,sBAPU,CAAC,CAAC,OAAO,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,GAAG,SAAS,CAEjC;IAErB;;;OAGG;IACH,sBAHW,OAAO,WAAW,EAAE,OAAO,OAC3B,OAAO,gBAAgB,EAAE,SAAS,iBAc5C;IAXC,oDAAc;IAOR,eAA0B;IAMlC,uBA4GC;CACF"}
1
+ {"version":3,"file":"RocketBuild.d.ts","sourceRoot":"","sources":["../../../src/cli/RocketBuild.js"],"names":[],"mappings":"AAwKA;;;GAGG;AACH,kCAHW,OAAO,qBAAqB,EAAE,YAAY,GACxC;IAAE,WAAW,EAAE,OAAO,qBAAqB,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,OAAO,qBAAqB,EAAE,YAAY,CAAA;CAAE,CAqBhI;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,mQAtBW;IACN,KAAK,EAAE,OAAO,qBAAqB,EAAE,YAAY,CAAC;IAClD,WAAW,EAAE,OAAO,qBAAqB,EAAE,YAAY,CAAC;IACxD,gBAAgB,CAAC,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,CAAC;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,qBAAqB,EAAE,kBAAkB,CAAC;IAChE,gBAAgB,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,qBAAqB,EAAE,mBAAmB,CAAC;IAClE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,aAAa,EAAE,cAAc,CAAC;IACtD,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE;QACpC,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IACvC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GACS,OAAO,CAAC;IAAE,0BAA0B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CA0ExE;AApQD;IACE;;;;;;;OAOG;IACH,sBAPU,CAAC,CAAC,OAAO,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,GAAG,SAAS,CAEjC;IAErB;;;OAGG;IACH,sBAHW,OAAO,WAAW,EAAE,OAAO,OAC3B,OAAO,gBAAgB,EAAE,SAAS,iBAc5C;IAXC,oDAAc;IAOR,eAA0B;IAMlC,uBA4GC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"RocketInit.d.ts","sourceRoot":"","sources":["../../../src/cli/RocketInit.js"],"names":[],"mappings":"AA2DA;IACE;;OAEG;IACH,sBAFW,OAAO,WAAW,EAAE,OAAO,iBAUrC;IAED;;OAEG;IACH,QAFa,gBAAgB,CAsB5B;CACF;+BAGY;IACR,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,uBAAuB,EAAE,OAAO,CAAC;IACjC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB"}
1
+ {"version":3,"file":"RocketInit.d.ts","sourceRoot":"","sources":["../../../src/cli/RocketInit.js"],"names":[],"mappings":"AA0SA;IACE;;OAEG;IACH,sBAFW,OAAO,WAAW,EAAE,OAAO,iBAUrC;IAED;;OAEG;IACH,QAFa,gBAAgB,CA6B5B;CACF;+BAGY;IACR,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,uBAAuB,EAAE,OAAO,CAAC;IACjC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB"}
@@ -1,13 +1,45 @@
1
+ /**
2
+ * @typedef {{ port?: number; open?: boolean; watch?: boolean }} RocketStartOptions
3
+ */
4
+ /**
5
+ * @param {{ port?: string; open?: boolean; watch?: boolean }} options
6
+ * @returns {RocketStartOptions}
7
+ */
8
+ export function normalizeStartOptions(options: {
9
+ port?: string;
10
+ open?: boolean;
11
+ watch?: boolean;
12
+ }): RocketStartOptions;
13
+ /**
14
+ * @param {{ configFilePath?: string; options?: RocketStartOptions }} input
15
+ */
16
+ export function startServerArgs({ configFilePath, options }: {
17
+ configFilePath?: string;
18
+ options?: RocketStartOptions;
19
+ }): string[];
1
20
  export class RocketStart {
21
+ /** @type {RocketStartOptions} */
22
+ startOptions: RocketStartOptions;
2
23
  /**
3
24
  * @param {import('commander').Command} program
4
25
  * @param {import('./RocketCli.js').RocketCli} cli
5
26
  */
6
27
  setupCommand(program: import("commander").Command, cli: import("./RocketCli.js").RocketCli): Promise<void>;
7
28
  cli: import("./RocketCli.js").RocketCli | undefined;
8
- spawnServer(): import("child_process").ChildProcess;
29
+ /**
30
+ * @param {RocketStartOptions} [options]
31
+ */
32
+ spawnServer(options?: RocketStartOptions): import("child_process").ChildProcess;
9
33
  restartServer(): void;
10
34
  server: import("child_process").ChildProcess | undefined;
11
- start(): Promise<void>;
35
+ /**
36
+ * @param {RocketStartOptions} [options]
37
+ */
38
+ start(options?: RocketStartOptions): Promise<void>;
12
39
  }
40
+ export type RocketStartOptions = {
41
+ port?: number;
42
+ open?: boolean;
43
+ watch?: boolean;
44
+ };
13
45
  //# sourceMappingURL=RocketStart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RocketStart.d.ts","sourceRoot":"","sources":["../../../src/cli/RocketStart.js"],"names":[],"mappings":"AAMA;IACE;;;OAGG;IACH,sBAHW,OAAO,WAAW,EAAE,OAAO,OAC3B,OAAO,gBAAgB,EAAE,SAAS,iBAS5C;IANC,oDAAc;IAQhB,oDAUC;IAED,sBAKC;IAHC,yDAAgC;IAKlC,uBAsCC;CACF"}
1
+ {"version":3,"file":"RocketStart.d.ts","sourceRoot":"","sources":["../../../src/cli/RocketStart.js"],"names":[],"mappings":"AAqGA;;GAEG;AAEH;;;GAGG;AACH,+CAHW;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAChD,kBAAkB,CAQ9B;AAED;;GAEG;AACH,6DAFW;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,kBAAkB,CAAA;CAAE,YAQnE;AAxHD;IACE,iCAAiC;IACjC,cADW,kBAAkB,CACX;IAElB;;;OAGG;IACH,sBAHW,OAAO,WAAW,EAAE,OAAO,OAC3B,OAAO,gBAAgB,EAAE,SAAS,iBAe5C;IAZC,oDAAc;IAchB;;OAEG;IACH,sBAFW,kBAAkB,wCAe5B;IAED,sBAKC;IAHC,yDAAiD;IAKnD;;OAEG;IACH,gBAFW,kBAAkB,iBA2C5B;CACF;iCAGY;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE"}
@@ -1,3 +1,5 @@
1
+ /** @type {import('@rocket/js/types.js').Components} */
2
+ export const rocketDemoComponents: import("@rocket/js/types.js").Components;
1
3
  /**
2
4
  * @param {import('@rocket/js/types.js').Components} components
3
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/components.js"],"names":[],"mappings":"AAGA;;GAEG;AACH,0EAQG"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/components.js"],"names":[],"mappings":"AAGA,uDAAuD;AACvD,mCADW,OAAO,qBAAqB,EAAE,UAAU,CAiBjD;AAEF;;GAEG;AACH,0EAQG"}
@@ -9,6 +9,14 @@ export function iconsFromPackage(packageName: string, files: string): import("@r
9
9
  * @returns {import('@rocket/js/types.js').IconLibrarySource}
10
10
  */
11
11
  export function iconsFromPath(files: string): import("@rocket/js/types.js").IconLibrarySource;
12
+ /**
13
+ * @param {{ addIconLibraries: (iconLibraries: import('@rocket/js/types.js').IconLibrariesConfig, options?: { defaultIconLibrary?: string }) => void }} pageData
14
+ */
15
+ export function addBootstrapIconLibrary(pageData: {
16
+ addIconLibraries: (iconLibraries: import("@rocket/js/types.js").IconLibrariesConfig, options?: {
17
+ defaultIconLibrary?: string;
18
+ }) => void;
19
+ }): void;
12
20
  export function createIconAssetStore(): IconAssetStore;
13
21
  export function rocketIconRuntimeOutputs(): {
14
22
  path: string;
@@ -84,6 +92,10 @@ export function normalizeIconLibrariesConfig(iconLibraries: unknown, owner: stri
84
92
  * @returns {import('@rocket/js/types.js').IconReferenceConfig[]}
85
93
  */
86
94
  export function normalizeIconReferencesConfig(iconReferences: unknown, owner: string): import("@rocket/js/types.js").IconReferenceConfig[];
95
+ export namespace rocketBootstrapIconLibraries {
96
+ let bootstrap: import("@rocket/js/types.js").IconLibrarySource;
97
+ }
98
+ export const rocketDefaultBootstrapIconLibrary: "bootstrap";
87
99
  export class IconAssetStore {
88
100
  /** @type {Map<string, { url: string; svg: string; library: string; name: string }>} */
89
101
  assets: Map<string, {
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/icons.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/icons.js"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"atlasDocLayout.d.ts","sourceRoot":"","sources":["../../../../src/layouts/atlas/atlasDocLayout.js"],"names":[],"mappings":"AAuDA;;;;GAIG;AACH,uCAHW,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,YAClD,MAAM,0CAchB;AAED;;;;;;GAMG;AACH,uCAHW,KAAK,CAAC,MAAM,CAAC,YACb,MAAM,wCAahB;AAED;;GAEG;AACH,0CAFW,OAAO,qBAAqB,EAAE,WAAW,wCAenD;AAED;;GAEG;AACH,6CAFW,OAAO,qBAAqB,EAAE,WAAW,EAAE,0CAIrD;AAED;;GAEG;AACH,wCAFW,OAAO,qBAAqB,EAAE,WAAW,EAAE,wCAYrD;AAED;;;GAGG;AACH,6CAHW,OAAO,qBAAqB,EAAE,uBAAuB,GAAG,SAAS,GAC/D,OAAO,qBAAqB,EAAE,gBAAgB,GAAG,KAAK,GAAG,SAAS,CAK9E;AAED;;GAEG;AACH,yCAFW,OAAO,qBAAqB,EAAE,gBAAgB,GAAG,KAAK,GAAG,SAAS,6CAoB5E;AA5JD,8DAA+D,EAAE,CAAC;AAElE,uDAAuD;AACvD,iCADW,OAAO,qBAAqB,EAAE,UAAU,CA2CjD;AA2JF,0FAA0F;AAC1F,6BADW,OAAO,qBAAqB,EAAE,MAAM,CAAC,OAAO,qBAAqB,EAAE,OAAO,CAAC,CA+EpF"}
1
+ {"version":3,"file":"atlasDocLayout.d.ts","sourceRoot":"","sources":["../../../../src/layouts/atlas/atlasDocLayout.js"],"names":[],"mappings":"AA0CA;;;;GAIG;AACH,uCAHW,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,YAClD,MAAM,0CAchB;AAED;;;;;;GAMG;AACH,uCAHW,KAAK,CAAC,MAAM,CAAC,YACb,MAAM,wCAahB;AAED;;GAEG;AACH,0CAFW,OAAO,qBAAqB,EAAE,WAAW,wCAenD;AAED;;GAEG;AACH,6CAFW,OAAO,qBAAqB,EAAE,WAAW,EAAE,0CAIrD;AAED;;GAEG;AACH,wCAFW,OAAO,qBAAqB,EAAE,WAAW,EAAE,wCAYrD;AAED;;;GAGG;AACH,6CAHW,OAAO,qBAAqB,EAAE,uBAAuB,GAAG,SAAS,GAC/D,OAAO,qBAAqB,EAAE,gBAAgB,GAAG,KAAK,GAAG,SAAS,CAK9E;AAED;;GAEG;AACH,yCAFW,OAAO,qBAAqB,EAAE,gBAAgB,GAAG,KAAK,GAAG,SAAS,6CAoB5E;AA9ID,8DAA+D,EAAE,CAAC;AAElE,uDAAuD;AACvD,iCADW,OAAO,qBAAqB,EAAE,UAAU,CA6BjD;AA2JF,0FAA0F;AAC1F,6BADW,OAAO,qBAAqB,EAAE,MAAM,CAAC,OAAO,qBAAqB,EAAE,OAAO,CAAC,CA+EpF"}
@@ -1 +1 @@
1
- {"version":3,"file":"atlasHeroLayout.d.ts","sourceRoot":"","sources":["../../../../src/layouts/atlas/atlasHeroLayout.js"],"names":[],"mappings":"AAOA,uDAAuD;AACvD,kCADW,OAAO,qBAAqB,EAAE,UAAU,CAsCjD;AAmNF;;GAEG;AACH,8BAFU,OAAO,qBAAqB,EAAE,MAAM,CAAC,OAAO,qBAAqB,EAAE,QAAQ,CAAC,CAwFpF"}
1
+ {"version":3,"file":"atlasHeroLayout.d.ts","sourceRoot":"","sources":["../../../../src/layouts/atlas/atlasHeroLayout.js"],"names":[],"mappings":"AAQA,uDAAuD;AACvD,kCADW,OAAO,qBAAqB,EAAE,UAAU,CA4BjD;AAmNF;;GAEG;AACH,8BAFU,OAAO,qBAAqB,EAAE,MAAM,CAAC,OAAO,qBAAqB,EAAE,QAAQ,CAAC,CAwFpF"}
@@ -1,9 +1,7 @@
1
- /**
2
- * @param {import('@rocket/js/PageData.js').PageData} pageData
3
- */
4
- export function addBootstrapIconLibrary(pageData: import("@rocket/js/PageData.js").PageData): void;
5
1
  /** @type {import('@rocket/js/types.js').Layout<null>} */
6
2
  export const layout: import("@rocket/js/types.js").Layout<null>;
7
3
  /** @type {import('@rocket/js/types.js').Layout<null>} */
8
4
  export const singleDemoLayout: import("@rocket/js/types.js").Layout<null>;
5
+ export { addBootstrapIconLibrary };
6
+ import { addBootstrapIconLibrary } from '../icons.js';
9
7
  //# sourceMappingURL=layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/layouts/layout.js"],"names":[],"mappings":"AAmDA;;GAEG;AACH,kDAFW,OAAO,wBAAwB,EAAE,QAAQ,QASnD;AAvDD,yDAAyD;AACzD,qBADW,OAAO,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,CAgBnD;AAEF,yDAAyD;AACzD,+BADW,OAAO,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,CAyBnD"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/layouts/layout.js"],"names":[],"mappings":"AAMA,yDAAyD;AACzD,qBADW,OAAO,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,CAgBnD;AAEF,yDAAyD;AACzD,+BADW,OAAO,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,CAyBnD;;wCA7CsC,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"standalone-demo-url.d.ts","sourceRoot":"","sources":["../../src/standalone-demo-url.js"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,yDAAyD;AACzD,yFAAyF;AAEzF;;;GAGG;AACH,6CAHW,MAAM,YACN,MAAM,UAQhB;AAED;;;GAGG;AACH,mDAHW,MAAM,YACN,MAAM,UAIhB;AAED;;GAEG;AACH,2DAFW,MAAM,UAIhB;AAED;;;;GAIG;AACH,8CAJW,MAAM,QACN,IAAI,GACF,MAAM,EAAE,CAOpB;AAED;;;;GAIG;AACH,sDAJW,MAAM,QACN,IAAI,GACF,MAAM,EAAE,CAOpB;AAED;;;GAGG;AACH,iDAHW,MAAM,GACJ;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAc/D;AAED;;;;;GAKG;AACH,iDALW,MAAM,UACN,MAAM,SACN,YAAY,GACV;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAA;CAAE,GAAG,IAAI,CAuBpI;AAED;;GAEG;AACH,gDAFW,MAAM,UAWhB;2BAlHa,OAAO,qBAAqB,EAAE,YAAY;mBAC1C,OAAO,qBAAqB,EAAE,IAAI;wCAClC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE"}
1
+ {"version":3,"file":"standalone-demo-url.d.ts","sourceRoot":"","sources":["../../src/standalone-demo-url.js"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,yDAAyD;AACzD,yFAAyF;AAEzF;;;GAGG;AACH,6CAHW,MAAM,YACN,MAAM,UAQhB;AAED;;;GAGG;AACH,mDAHW,MAAM,YACN,MAAM,UAIhB;AAED;;GAEG;AACH,2DAFW,MAAM,UAIhB;AAED;;;;GAIG;AACH,8CAJW,MAAM,QACN,IAAI,GACF,MAAM,EAAE,CAOpB;AAED;;;;GAIG;AACH,sDAJW,MAAM,QACN,IAAI,GACF,MAAM,EAAE,CAOpB;AAED;;;GAGG;AACH,iDAHW,MAAM,GACJ;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAc/D;AAED;;;;;GAKG;AACH,iDALW,MAAM,UACN,MAAM,SACN,YAAY,GACV;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAA;CAAE,GAAG,IAAI,CAyBpI;AAED;;GAEG;AACH,gDAFW,MAAM,UAWhB;2BApHa,OAAO,qBAAqB,EAAE,YAAY;mBAC1C,OAAO,qBAAqB,EAAE,IAAI;wCAClC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/transform.js"],"names":[],"mappings":"AA6BA;;GAEG;AACH,2BAFW,MAAM,mBAoChB;AAED;;;GAGG;AACH,qCAHW,MAAM,QACN,MAAM,mBAwChB"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/transform.js"],"names":[],"mappings":"AA8BA;;GAEG;AACH,2BAFW,MAAM,mBAoChB;AAED;;;GAGG;AACH,qCAHW,MAAM,QACN,MAAM,mBAwChB"}
@@ -9,6 +9,7 @@ export type RocketDevServerPluginOptions = {
9
9
  iconLibraries?: import("@rocket/js/types.js").IconLibrariesConfig;
10
10
  defaultIconLibrary?: string;
11
11
  captureSocialPreviewImage?: import("./socialPreviewImages.js").SocialPreviewCapture;
12
+ watch?: boolean;
12
13
  };
13
14
  export type RocketDevServerPluginInput = RocketDevServerPluginOptions | UrlLifecycleConfig;
14
15
  //# sourceMappingURL=wds-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wds-plugin.d.ts","sourceRoot":"","sources":["../../src/wds-plugin.js"],"names":[],"mappings":"yBA8BgB,iBAAO,EAAE,4BAAO,EAAE,kDAAY,EAAE,gDAAY,KADmG,OAAO,sBAAsB,EAAE,MAAM;;iCAJtL,OAAO,qBAAqB,EAAE,kBAAkB;2CAChD;IAAE,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,OAAO,qBAAqB,EAAE,yBAAyB,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,qBAAqB,EAAE,mBAAmB,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,yBAAyB,CAAC,EAAE,OAAO,0BAA0B,EAAE,oBAAoB,CAAA;CAAE;yCACvY,4BAA4B,GAAG,kBAAkB"}
1
+ {"version":3,"file":"wds-plugin.d.ts","sourceRoot":"","sources":["../../src/wds-plugin.js"],"names":[],"mappings":"yBA8BgB,iBAAO,EAAE,4BAAO,EAAE,kDAAY,EAAE,gDAAY,KADmG,OAAO,sBAAsB,EAAE,MAAM;;iCAJtL,OAAO,qBAAqB,EAAE,kBAAkB;2CAChD;IAAE,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,OAAO,qBAAqB,EAAE,yBAAyB,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,qBAAqB,EAAE,mBAAmB,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,yBAAyB,CAAC,EAAE,OAAO,0BAA0B,EAAE,oBAAoB,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE;yCACxZ,4BAA4B,GAAG,kBAAkB"}
@@ -1 +1 @@
1
- export { parseComponents } from '../src/components.js';
1
+ export { parseComponents, rocketDemoComponents } from '../src/components.js';
package/exports/icons.js CHANGED
@@ -1,8 +1,11 @@
1
1
  export {
2
+ addBootstrapIconLibrary,
2
3
  createIconAssetStore,
3
4
  finalizeRocketIcons,
4
5
  iconsFromPackage,
5
6
  iconsFromPath,
6
7
  resolveRocketIconAsset,
8
+ rocketBootstrapIconLibraries,
9
+ rocketDefaultBootstrapIconLibrary,
7
10
  rocketIconRuntimeOutputs,
8
11
  } from '../src/icons.js';
package/exports/layout.js CHANGED
@@ -1 +1 @@
1
- export { layout } from '../src/layouts/layout.js';
1
+ export { addBootstrapIconLibrary, layout } from '../src/layouts/layout.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rocket/js",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "HTML-first static-site metaframework for content sites and Web Component docs.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -273,10 +273,12 @@ export async function renderStaticPages({
273
273
  }
274
274
  for (const demoPath of standaloneDemoPaths(pagePath, page)) {
275
275
  const demoResponse = await pageRuntime.render(new Request(new URL(demoPath, origin)));
276
- writeHtml(demoPath, await demoResponse.text());
276
+ await writeStandaloneDemoResponse(demoPath, page, demoResponse);
277
277
  }
278
278
  } catch (error) {
279
- throw new Error('Failed to render page: ' + pagePath, { cause: error });
279
+ throw new Error(`Failed to render page: ${pagePath}. ${errorMessage(error)}`, {
280
+ cause: error,
281
+ });
280
282
  }
281
283
  }
282
284
  writeIconAssetOutputs(iconAssetStore);
@@ -498,6 +500,22 @@ async function writeStaticResponse(pagePath, response) {
498
500
  writeHtml(pagePath, Buffer.from(data).toString('utf8'));
499
501
  }
500
502
 
503
+ /**
504
+ * @param {string} demoPath
505
+ * @param {import('@rocket/js/types.js').Page} page
506
+ * @param {Response} response
507
+ */
508
+ async function writeStandaloneDemoResponse(demoPath, page, response) {
509
+ const body = await response.text();
510
+ if (!response.ok) {
511
+ throw new Error(
512
+ `Standalone Demo URL ${demoPath} for page ${page.file} returned HTTP ${response.status}. ` +
513
+ `Expected a 2xx response. Body starts with: ${previewResponseBody(body)}`,
514
+ );
515
+ }
516
+ writeHtml(demoPath, body);
517
+ }
518
+
501
519
  /**
502
520
  * @param {string} pagePath
503
521
  * @returns {boolean}
@@ -543,3 +561,21 @@ function escapeHtml(value) {
543
561
  .replaceAll('<', '&lt;')
544
562
  .replaceAll('>', '&gt;');
545
563
  }
564
+
565
+ /**
566
+ * @param {string} body
567
+ */
568
+ function previewResponseBody(body) {
569
+ const normalized = body.replace(/\s+/g, ' ').trim();
570
+ if (!normalized) {
571
+ return '(empty body)';
572
+ }
573
+ return JSON.stringify(normalized.slice(0, 200));
574
+ }
575
+
576
+ /**
577
+ * @param {unknown} error
578
+ */
579
+ function errorMessage(error) {
580
+ return error instanceof Error ? error.message : String(error);
581
+ }