@johnmorrisdotca/chikyu-earth 0.5.0 → 0.8.0

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 (66) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/NOTICE.md +22 -0
  3. package/README.md +186 -27
  4. package/dist/countries.d.ts +11 -0
  5. package/dist/countries.js +11 -0
  6. package/dist/element.d.ts +18 -0
  7. package/dist/element.js +15 -2
  8. package/dist/globe.d.ts +15 -1
  9. package/dist/globe.js +15 -1
  10. package/dist/index.d.ts +12 -1
  11. package/dist/index.js +12 -1
  12. package/dist/markers/cluster.d.ts +27 -0
  13. package/dist/markers/cluster.js +16 -0
  14. package/dist/markers/labels.d.ts +40 -0
  15. package/dist/markers/labels.js +18 -0
  16. package/dist/markers/layer.d.ts +80 -0
  17. package/dist/markers/layer.js +21 -0
  18. package/dist/markers/project.d.ts +63 -2
  19. package/dist/markers/project.js +52 -2
  20. package/dist/markers/types.d.ts +48 -3
  21. package/dist/realistic/earth.d.ts +30 -5
  22. package/dist/realistic/earth.js +41 -134
  23. package/dist/realistic/element.d.ts +47 -7
  24. package/dist/realistic/element.js +48 -44
  25. package/dist/realistic/gate.d.ts +45 -1
  26. package/dist/realistic/gate.js +33 -1
  27. package/dist/realistic/shaders.d.ts +9 -4
  28. package/dist/realistic/shaders.js +54 -9
  29. package/dist/realistic/shared.d.ts +23 -0
  30. package/dist/realistic/shared.js +51 -0
  31. package/dist/realistic/sun.d.ts +40 -3
  32. package/dist/realistic/sun.js +40 -3
  33. package/dist/realistic/textures.d.ts +43 -0
  34. package/dist/realistic/textures.js +141 -0
  35. package/dist/realistic/tiers.d.ts +80 -6
  36. package/dist/realistic/tiers.js +69 -5
  37. package/dist/rotate.d.ts +59 -4
  38. package/dist/rotate.js +59 -4
  39. package/dist/satellites/index.d.ts +3 -0
  40. package/dist/satellites/index.js +3 -0
  41. package/dist/satellites/limits.d.ts +22 -0
  42. package/dist/satellites/limits.js +23 -0
  43. package/dist/satellites/track.d.ts +50 -0
  44. package/dist/satellites/track.js +227 -0
  45. package/dist/satellites/types.d.ts +161 -0
  46. package/dist/satellites/types.js +3 -0
  47. package/dist/space/element.d.ts +179 -0
  48. package/dist/space/element.js +541 -0
  49. package/dist/space/ephemeris.d.ts +151 -0
  50. package/dist/space/ephemeris.js +162 -0
  51. package/dist/space/index.d.ts +3 -0
  52. package/dist/space/index.js +5 -0
  53. package/dist/space/satellite-layer.d.ts +53 -0
  54. package/dist/space/satellite-layer.js +230 -0
  55. package/dist/space/scale.d.ts +124 -0
  56. package/dist/space/scale.js +141 -0
  57. package/dist/space/scene.d.ts +146 -0
  58. package/dist/space/scene.js +320 -0
  59. package/dist/styles.d.ts +65 -2
  60. package/dist/styles.js +43 -2
  61. package/dist/textures/moon-1024.webp +0 -0
  62. package/dist/textures/moon-2048.webp +0 -0
  63. package/dist/types.d.ts +55 -5
  64. package/dist/view.d.ts +63 -4
  65. package/dist/view.js +52 -4
  66. package/package.json +71 -8
package/dist/styles.d.ts CHANGED
@@ -1,3 +1,14 @@
1
+ /**
2
+ * The lines and fills of one look: colours and widths only, never the geometry.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * import { STYLES, type Style } from "@johnmorrisdotca/chikyu-earth";
7
+ *
8
+ * const thick: Style = STYLES.thick;
9
+ * console.log(thick.outline, thick.line);
10
+ * ```
11
+ */
1
12
  export interface Style {
2
13
  /** The colour of the outlines and the rim. */
3
14
  line: string;
@@ -12,6 +23,16 @@ export interface Style {
12
23
  /** Graticule width, in SVG units. */
13
24
  graticule: number;
14
25
  }
26
+ /**
27
+ * The looks the globe is drawn in, by name: `line` (thin outlines) and `thick`.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { STYLES } from "@johnmorrisdotca/chikyu-earth";
32
+ *
33
+ * console.log(Object.keys(STYLES), STYLES.line.ocean);
34
+ * ```
35
+ */
15
36
  export declare const STYLES: {
16
37
  readonly line: {
17
38
  readonly line: "#8fa1b8";
@@ -30,9 +51,51 @@ export declare const STYLES: {
30
51
  readonly graticule: 0.5;
31
52
  };
32
53
  };
54
+ /**
55
+ * The name of a look: `"line"` or `"thick"`.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * import { globe, type StyleName } from "@johnmorrisdotca/chikyu-earth";
60
+ *
61
+ * const look: StyleName = "thick";
62
+ * console.log(globe({ style: look, size: 100 }).includes("stroke-width"));
63
+ * ```
64
+ */
33
65
  export type StyleName = keyof typeof STYLES;
34
- /** The style a drawing is in when none is named. */
66
+ /**
67
+ * The style a drawing is in when none is named.
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * import { DEFAULT_STYLE } from "@johnmorrisdotca/chikyu-earth";
72
+ *
73
+ * console.log(DEFAULT_STYLE);
74
+ * ```
75
+ */
35
76
  export declare const DEFAULT_STYLE: StyleName;
77
+ /**
78
+ * Every style's name, in the order they are listed.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * import { STYLE_NAMES } from "@johnmorrisdotca/chikyu-earth";
83
+ *
84
+ * console.log(STYLE_NAMES.join(", "));
85
+ * ```
86
+ */
36
87
  export declare const STYLE_NAMES: StyleName[];
37
- /** A value from outside as a style's name: the default for anything else. */
88
+ /**
89
+ * A value from outside (an attribute, a query parameter) as a style's name: the default for anything else.
90
+ *
91
+ * @param value - Anything.
92
+ * @returns A valid style name; {@link DEFAULT_STYLE} when `value` names none.
93
+ *
94
+ * @example
95
+ * ```ts
96
+ * import { cleanStyle } from "@johnmorrisdotca/chikyu-earth";
97
+ *
98
+ * console.log(cleanStyle("thick"), cleanStyle("neon"), cleanStyle(null));
99
+ * ```
100
+ */
38
101
  export declare const cleanStyle: (value: unknown) => StyleName;
package/dist/styles.js CHANGED
@@ -1,11 +1,52 @@
1
1
  // The two looks the globe is drawn in, the same line colours as hako-devices and uchusen-rockets: one table entry each,
2
2
  // a look changes lines and fills, never the geometry. Pure.
3
+ /**
4
+ * The looks the globe is drawn in, by name: `line` (thin outlines) and `thick`.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { STYLES } from "@johnmorrisdotca/chikyu-earth";
9
+ *
10
+ * console.log(Object.keys(STYLES), STYLES.line.ocean);
11
+ * ```
12
+ */
3
13
  export const STYLES = {
4
14
  line: { line: "#8fa1b8", ocean: "#0b1424", land: "#13203a", outline: 0.5, horizon: 1, graticule: 0.3 },
5
15
  thick: { line: "#b4c2d4", ocean: "#0b1424", land: "#1a2b47", outline: 1.2, horizon: 2, graticule: 0.5 },
6
16
  };
7
- /** The style a drawing is in when none is named. */
17
+ /**
18
+ * The style a drawing is in when none is named.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { DEFAULT_STYLE } from "@johnmorrisdotca/chikyu-earth";
23
+ *
24
+ * console.log(DEFAULT_STYLE);
25
+ * ```
26
+ */
8
27
  export const DEFAULT_STYLE = "line";
28
+ /**
29
+ * Every style's name, in the order they are listed.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * import { STYLE_NAMES } from "@johnmorrisdotca/chikyu-earth";
34
+ *
35
+ * console.log(STYLE_NAMES.join(", "));
36
+ * ```
37
+ */
9
38
  export const STYLE_NAMES = Object.keys(STYLES);
10
- /** A value from outside as a style's name: the default for anything else. */
39
+ /**
40
+ * A value from outside (an attribute, a query parameter) as a style's name: the default for anything else.
41
+ *
42
+ * @param value - Anything.
43
+ * @returns A valid style name; {@link DEFAULT_STYLE} when `value` names none.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * import { cleanStyle } from "@johnmorrisdotca/chikyu-earth";
48
+ *
49
+ * console.log(cleanStyle("thick"), cleanStyle("neon"), cleanStyle(null));
50
+ * ```
51
+ */
11
52
  export const cleanStyle = (value) => typeof value === "string" && Object.hasOwn(STYLES, value) ? value : DEFAULT_STYLE;
Binary file
Binary file
package/dist/types.d.ts CHANGED
@@ -1,5 +1,15 @@
1
1
  import type { StyleName } from "./styles.ts";
2
- /** What one country's outline carries: its English and Japanese name and its ISO alpha-2 code, all from kuni. */
2
+ /**
3
+ * What one country's outline carries: its English and Japanese name and its ISO alpha-2 code, all from kuni.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { countryList, type CountryProps } from "@johnmorrisdotca/chikyu-earth";
8
+ *
9
+ * const first: CountryProps | undefined = countryList()[0];
10
+ * console.log(first?.name, first?.alpha2);
11
+ * ```
12
+ */
3
13
  export interface CountryProps {
4
14
  /** English name, from kuni (Natural Earth's own name where kuni has no entry). */
5
15
  name: string;
@@ -8,7 +18,17 @@ export interface CountryProps {
8
18
  /** ISO 3166-1 alpha-2 code, from kuni, or null where there is no code. */
9
19
  alpha2: string | null;
10
20
  }
11
- /** What a shared view controller tells the globe: its turn, tip, zoom and pan. */
21
+ /**
22
+ * What a shared view controller tells the globe: its turn (`yaw`, degrees), tip (`tilt`, degrees), zoom (1 is Fit) and pan (`panX` and `panY`, CSS pixels).
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * import { HOME_VIEW, type GlobeView } from "@johnmorrisdotca/chikyu-earth";
27
+ *
28
+ * const turned: GlobeView = { ...HOME_VIEW, yaw: 30 };
29
+ * console.log(turned);
30
+ * ```
31
+ */
12
32
  export interface GlobeView {
13
33
  yaw: number;
14
34
  tilt: number;
@@ -16,14 +36,44 @@ export interface GlobeView {
16
36
  panX: number;
17
37
  panY: number;
18
38
  }
19
- /** A point on the globe, in degrees. */
39
+ /**
40
+ * A point on the globe, in degrees: `lon` from -180 to 180 (east is positive), `lat` from -90 to 90 (north is positive).
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * import type { GeoPoint } from "@johnmorrisdotca/chikyu-earth";
45
+ *
46
+ * const tokyo: GeoPoint = { lon: 139.7, lat: 35.7 };
47
+ * console.log(tokyo);
48
+ * ```
49
+ */
20
50
  export interface GeoPoint {
21
51
  lon: number;
22
52
  lat: number;
23
53
  }
24
- /** How the globe is turned: [lambda, phi] in degrees, the pair d3-geo's `rotate` takes. */
54
+ /**
55
+ * How the globe is turned: [lambda, phi] in degrees, the pair d3-geo's `rotate` takes.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * import { globe, type Rotation } from "@johnmorrisdotca/chikyu-earth";
60
+ *
61
+ * const rotation: Rotation = [-10, -30];
62
+ * console.log(globe({ rotation, size: 100 }).length > 1000);
63
+ * ```
64
+ */
25
65
  export type Rotation = [lambda: number, phi: number];
26
- /** What `globe()` may be asked. */
66
+ /**
67
+ * What `globe()` may be asked.
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * import { globe, type GlobeOptions } from "@johnmorrisdotca/chikyu-earth";
72
+ *
73
+ * const options: GlobeOptions = { size: 200, style: "thick", graticule: true, centre: { lon: 10, lat: 30 } };
74
+ * console.log(globe(options).startsWith("<svg"));
75
+ * ```
76
+ */
27
77
  export interface GlobeOptions {
28
78
  /** Width and height of the square SVG, in pixels. Default 320. */
29
79
  size?: number;
package/dist/view.d.ts CHANGED
@@ -1,14 +1,73 @@
1
1
  import type { GeoPoint, GlobeView, Rotation } from "./types.ts";
2
- /** The view when it opens: the home centre, upright, at 1x with no pan. */
2
+ /**
3
+ * The view when it opens: the home centre, upright, at 1x with no pan.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { HOME_VIEW } from "@johnmorrisdotca/chikyu-earth";
8
+ *
9
+ * console.log(HOME_VIEW);
10
+ * ```
11
+ */
3
12
  export declare const HOME_VIEW: GlobeView;
13
+ /**
14
+ * What d3-geo's orthographic projection is given for a view: its rotation, scale and translation.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { projectionView, type ProjectionView } from "@johnmorrisdotca/chikyu-earth";
19
+ *
20
+ * const view: ProjectionView = projectionView({ lon: 0, lat: 0 }, 400);
21
+ * console.log(view.scale, view.translate);
22
+ * ```
23
+ */
4
24
  export interface ProjectionView {
5
25
  rotation: Rotation;
6
26
  scale: number;
7
27
  translate: [number, number];
8
28
  }
9
- /** The radius of an unzoomed globe in a square of `size` pixels. */
29
+ /**
30
+ * The radius of an unzoomed globe in a square of `size` pixels.
31
+ *
32
+ * @param size - The width and height of the square, in pixels.
33
+ * @returns The radius in pixels, one less than half the size so the rim is not cut off.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * import { globeBaseScale } from "@johnmorrisdotca/chikyu-earth";
38
+ *
39
+ * console.log(globeBaseScale(420));
40
+ * ```
41
+ */
10
42
  export declare const globeBaseScale: (size: number) => number;
11
- /** Where the view is centred on the globe: the home centre, turned by yaw (west) and tipped by tilt (north), held to the poles. */
43
+ /**
44
+ * Where the view is centred on the globe: the home centre, turned by yaw (west) and tipped by tilt (north), held to the poles.
45
+ *
46
+ * @param centre - The home centre.
47
+ * @param view - The turn, tip, zoom and pan from the view controls.
48
+ * @returns The place now in the middle of the disc.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * import { lookAt } from "@johnmorrisdotca/chikyu-earth/realistic";
53
+ *
54
+ * console.log(lookAt({ lon: 10, lat: 80 }, { yaw: 25, tilt: 30, zoom: 1, panX: 0, panY: 0 }));
55
+ * ```
56
+ */
12
57
  export declare const lookAt: (centre: GeoPoint, view: GlobeView) => GeoPoint;
13
- /** yaw turns longitude, tilt tips latitude, zoom scales and pan moves the disc in CSS pixels. */
58
+ /**
59
+ * What the projection is given for a view: yaw turns longitude, tilt tips latitude, zoom scales and pan moves the disc in CSS pixels.
60
+ *
61
+ * @param centre - The home centre.
62
+ * @param size - The width and height of the square the globe is drawn in, in pixels.
63
+ * @param view - The turn, tip, zoom and pan; the home view when left out.
64
+ * @returns The rotation, scale and translation for d3-geo's orthographic projection.
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * import { projectionView } from "@johnmorrisdotca/chikyu-earth";
69
+ *
70
+ * console.log(projectionView({ lon: 139.7, lat: 35.7 }, 420, { yaw: 10, tilt: 5, zoom: 2, panX: 0, panY: 0 }));
71
+ * ```
72
+ */
14
73
  export declare function projectionView(centre: GeoPoint, size: number, view?: GlobeView): ProjectionView;
package/dist/view.js CHANGED
@@ -1,13 +1,61 @@
1
- /** The view when it opens: the home centre, upright, at 1x with no pan. */
1
+ /**
2
+ * The view when it opens: the home centre, upright, at 1x with no pan.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * import { HOME_VIEW } from "@johnmorrisdotca/chikyu-earth";
7
+ *
8
+ * console.log(HOME_VIEW);
9
+ * ```
10
+ */
2
11
  export const HOME_VIEW = Object.freeze({ yaw: 0, tilt: 0, zoom: 1, panX: 0, panY: 0 });
3
- /** The radius of an unzoomed globe in a square of `size` pixels. */
12
+ /**
13
+ * The radius of an unzoomed globe in a square of `size` pixels.
14
+ *
15
+ * @param size - The width and height of the square, in pixels.
16
+ * @returns The radius in pixels, one less than half the size so the rim is not cut off.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * import { globeBaseScale } from "@johnmorrisdotca/chikyu-earth";
21
+ *
22
+ * console.log(globeBaseScale(420));
23
+ * ```
24
+ */
4
25
  export const globeBaseScale = (size) => size / 2 - 1;
5
- /** Where the view is centred on the globe: the home centre, turned by yaw (west) and tipped by tilt (north), held to the poles. */
26
+ /**
27
+ * Where the view is centred on the globe: the home centre, turned by yaw (west) and tipped by tilt (north), held to the poles.
28
+ *
29
+ * @param centre - The home centre.
30
+ * @param view - The turn, tip, zoom and pan from the view controls.
31
+ * @returns The place now in the middle of the disc.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { lookAt } from "@johnmorrisdotca/chikyu-earth/realistic";
36
+ *
37
+ * console.log(lookAt({ lon: 10, lat: 80 }, { yaw: 25, tilt: 30, zoom: 1, panX: 0, panY: 0 }));
38
+ * ```
39
+ */
6
40
  export const lookAt = (centre, view) => ({
7
41
  lon: centre.lon - view.yaw,
8
42
  lat: Math.max(-90, Math.min(90, centre.lat + view.tilt)),
9
43
  });
10
- /** yaw turns longitude, tilt tips latitude, zoom scales and pan moves the disc in CSS pixels. */
44
+ /**
45
+ * What the projection is given for a view: yaw turns longitude, tilt tips latitude, zoom scales and pan moves the disc in CSS pixels.
46
+ *
47
+ * @param centre - The home centre.
48
+ * @param size - The width and height of the square the globe is drawn in, in pixels.
49
+ * @param view - The turn, tip, zoom and pan; the home view when left out.
50
+ * @returns The rotation, scale and translation for d3-geo's orthographic projection.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * import { projectionView } from "@johnmorrisdotca/chikyu-earth";
55
+ *
56
+ * console.log(projectionView({ lon: 139.7, lat: 35.7 }, 420, { yaw: 10, tilt: 5, zoom: 2, panX: 0, panY: 0 }));
57
+ * ```
58
+ */
11
59
  export function projectionView(centre, size, view = HOME_VIEW) {
12
60
  return {
13
61
  rotation: [-centre.lon + view.yaw, -centre.lat - view.tilt],
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@johnmorrisdotca/chikyu-earth",
3
- "version": "0.5.0",
4
- "description": "Chikyu Earth 地球: a line-drawn globe with country outlines that turns at the Earth's own rate and opens centred on where you are. The outlines, names and codes come from chizu's world-geo (Natural Earth), drawn with d3-geo. SVG, with an optional realistic Earth from space (three.js) and markers.",
3
+ "version": "0.8.0",
4
+ "description": "Chikyu Earth 地球 — A line-drawn globe for the web: country outlines that turn at the Earth's own rate, centred on where you are, with an optional realistic Earth from space (three.js), the Sun, Moon and planets, satellites on their orbits, and markers for any place. A web component and an SVG string.",
5
5
  "keywords": [
6
6
  "earth",
7
7
  "globe",
@@ -26,7 +26,18 @@
26
26
  "markers",
27
27
  "satellite-imagery",
28
28
  "webgl",
29
- "three"
29
+ "three",
30
+ "astronomy",
31
+ "solar-system",
32
+ "moon",
33
+ "planets",
34
+ "ephemeris",
35
+ "satellites",
36
+ "sgp4",
37
+ "orbits",
38
+ "iss",
39
+ "starlink",
40
+ "celestrak"
30
41
  ],
31
42
  "homepage": "https://johnmorrisdotca.github.io/chikyu-earth/",
32
43
  "repository": {
@@ -43,7 +54,9 @@
43
54
  "./dist/element.js",
44
55
  "./src/element.ts",
45
56
  "./dist/realistic/element.js",
46
- "./src/realistic/element.ts"
57
+ "./src/realistic/element.ts",
58
+ "./dist/space/element.js",
59
+ "./src/space/element.ts"
47
60
  ],
48
61
  "main": "./dist/index.js",
49
62
  "module": "./dist/index.js",
@@ -74,6 +87,21 @@
74
87
  "import": "./dist/markers/index.js",
75
88
  "default": "./dist/markers/index.js"
76
89
  },
90
+ "./space": {
91
+ "types": "./dist/space/index.d.ts",
92
+ "import": "./dist/space/index.js",
93
+ "default": "./dist/space/index.js"
94
+ },
95
+ "./space/element": {
96
+ "types": "./dist/space/element.d.ts",
97
+ "import": "./dist/space/element.js",
98
+ "default": "./dist/space/element.js"
99
+ },
100
+ "./satellites": {
101
+ "types": "./dist/satellites/index.d.ts",
102
+ "import": "./dist/satellites/index.js",
103
+ "default": "./dist/satellites/index.js"
104
+ },
77
105
  "./package.json": "./package.json"
78
106
  },
79
107
  "files": [
@@ -95,12 +123,20 @@
95
123
  "test:package": "pnpm build && node scripts/check-package.ts",
96
124
  "check": "pnpm lint && pnpm typecheck && pnpm test && pnpm build && node scripts/check-package.ts",
97
125
  "prepublishOnly": "pnpm check",
126
+ "family:readme": "node scripts/family-readme.mjs",
98
127
  "site": "pnpm build && node scripts/site.ts",
99
128
  "dev": "pnpm site && node scripts/dev.ts",
100
- "test:demo": "pnpm site && playwright test --project=chromium-desk --project=chromium-phone --project=webkit-desk --project=webkit-phone --project=chromium-gl",
129
+ "test:demo": "pnpm site && node scripts/docs-site.mjs build && playwright test --project=chromium-desk --project=chromium-phone --project=webkit-desk --project=webkit-phone --project=chromium-gl",
101
130
  "screenshots": "pnpm site && node scripts/screenshots.ts",
102
131
  "textures": "python3 scripts/make-textures.py",
103
- "test:soak": "pnpm site && playwright test --project=soak"
132
+ "test:soak": "pnpm site && playwright test --project=soak",
133
+ "docs:site": "pnpm build && node scripts/docs-site.mjs build",
134
+ "docs:check": "pnpm build && node scripts/docs-site.mjs check",
135
+ "size": "node scripts/docs-site.mjs size",
136
+ "test:usage": "pnpm site && node scripts/check-usage.ts",
137
+ "test:readme": "pnpm build && node scripts/check-usage.ts readme",
138
+ "check:standard": "node scripts/check-standard.mjs",
139
+ "test:freeze": "pnpm site && playwright test e2e/freeze.demo.ts --project=chromium-desk"
104
140
  },
105
141
  "dependencies": {
106
142
  "@johnmorrisdotca/chizu": "^1.6.0",
@@ -108,7 +144,9 @@
108
144
  },
109
145
  "peerDependencies": {
110
146
  "@johnmorrisdotca/kazoku-ui": ">=0.9.0",
111
- "three": ">=0.160.0"
147
+ "three": ">=0.160.0",
148
+ "astronomy-engine": ">=2.1.0",
149
+ "satellite.js": ">=6.0.0"
112
150
  },
113
151
  "peerDependenciesMeta": {
114
152
  "@johnmorrisdotca/kazoku-ui": {
@@ -116,22 +154,47 @@
116
154
  },
117
155
  "three": {
118
156
  "optional": true
157
+ },
158
+ "astronomy-engine": {
159
+ "optional": true
160
+ },
161
+ "satellite.js": {
162
+ "optional": true
119
163
  }
120
164
  },
121
165
  "devDependencies": {
166
+ "@angular/common": "^22.2.4",
167
+ "@angular/compiler": "^22.2.4",
168
+ "@angular/core": "^22.2.4",
169
+ "@angular/platform-browser": "^22.2.4",
122
170
  "@eslint/js": "^9.0.0",
123
171
  "@johnmorrisdotca/kazoku-ui": "^0.9.0",
124
172
  "@playwright/test": "1.64.0",
173
+ "@sveltejs/vite-plugin-svelte": "^7.3.1",
125
174
  "@types/d3-geo": "^3.1.0",
126
175
  "@types/geojson": "^7946.0.14",
127
176
  "@types/node": "^24.0.0",
177
+ "@types/react": "^19.3.0",
178
+ "@types/react-dom": "^19.3.0",
128
179
  "@types/three": "^0.187.0",
180
+ "@vitejs/plugin-vue": "^6.0.10",
129
181
  "astronomy-engine": "2.1.19",
130
182
  "esbuild": "^0.25.0",
131
183
  "eslint": "^9.0.0",
184
+ "marked": "^18.1.2",
185
+ "pagefind": "^1.6.0",
186
+ "react": "^19.3.1",
187
+ "react-dom": "^19.3.1",
188
+ "rxjs": "^7.8.2",
189
+ "satellite.js": "6.0.2",
190
+ "svelte": "^5.57.3",
132
191
  "three": "0.186.1",
133
192
  "typescript": "^5.9.0",
134
- "typescript-eslint": "^8.0.0"
193
+ "typescript-eslint": "^8.0.0",
194
+ "vite": "^8.3.5",
195
+ "vue": "^3.5.44",
196
+ "webpack": "^5.112.2",
197
+ "webpack-cli": "^7.3.1"
135
198
  },
136
199
  "publishConfig": {
137
200
  "access": "public"