@aklinker1/aframe 0.4.3 → 0.4.4

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/README.md CHANGED
@@ -83,16 +83,16 @@ bun add -D puppeteer vite
83
83
  "aframe": "bun node_modules/@aklinker1/aframe/bin/aframe.ts",
84
84
  "dev": "bun --silent aframe",
85
85
  "build": "bun --silent aframe build",
86
- "preview": "bun --cwd .output --env-file ../.env server-entry.js"
86
+ "preview": "bun --cwd .output --env-file ../.env server-entry.js",
87
87
  },
88
88
  "dependencies": {
89
89
  "@aklinker1/aframe": "latest",
90
- "elysia": "latest"
90
+ "elysia": "latest",
91
91
  },
92
92
  "devDependencies": {
93
93
  "vite": "latest",
94
94
  "puppeteer": "latest",
95
- }
95
+ },
96
96
  }
97
97
  ```
98
98
 
@@ -139,3 +139,9 @@ const visible = !isPrerendering();
139
139
  <slot v-else name="fallback" />
140
140
  </template>
141
141
  ```
142
+
143
+ ## Publish Update to NPM
144
+
145
+ ```sh
146
+ bun run publish
147
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aklinker1/aframe",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "packageManager": "bun@1.2.5",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -22,7 +22,8 @@
22
22
  "aframe": "bun --silent bin/aframe.ts",
23
23
  "dev": "bun aframe demo",
24
24
  "build": "bun aframe build demo",
25
- "preview": "bun --cwd demo/.output --env-file ../.env server-entry.js"
25
+ "preview": "bun --cwd demo/.output --env-file ../.env server-entry.js",
26
+ "publish": "bun run scripts/publish.ts"
26
27
  },
27
28
  "dependencies": {},
28
29
  "devDependencies": {
package/src/config.ts CHANGED
@@ -6,7 +6,7 @@ import type { LaunchOptions } from "puppeteer";
6
6
  export type UserConfig = {
7
7
  vite?: vite.UserConfigExport;
8
8
  prerenderedRoutes?: string[];
9
- prerenderer?: PrerendererConfig;
9
+ prerenderer?: PrerendererConfig | false;
10
10
  };
11
11
 
12
12
  export type PrerendererConfig = {
@@ -40,7 +40,7 @@ export type ResolvedConfig = {
40
40
  serverPort: number;
41
41
  vite: vite.InlineConfig;
42
42
  prerenderedRoutes: string[];
43
- prerenderer: PrerendererConfig;
43
+ prerenderer: PrerendererConfig | false;
44
44
  };
45
45
 
46
46
  export function defineConfig(config: UserConfig): UserConfig {
package/src/index.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import type { BunPlugin } from "bun";
2
2
  import { lstatSync } from "node:fs";
3
- import { mkdir, rm, writeFile } from "node:fs/promises";
3
+ import { mkdir, rm } from "node:fs/promises";
4
4
  import { join, relative } from "node:path/posix";
5
5
  import * as vite from "vite";
6
6
  import { BLUE, BOLD, CYAN, DIM, GREEN, MAGENTA, RESET } from "./color";
7
7
  import type { ResolvedConfig } from "./config";
8
8
  import { createTimer } from "./timer";
9
- import { prerenderPages } from "./prerenderer";
9
+ import { prerenderPages, type PrerenderedRoute } from "./prerenderer";
10
10
 
11
11
  export * from "./config";
12
12
  export * from "./dev-server";
@@ -50,15 +50,20 @@ export async function build(config: ResolvedConfig) {
50
50
 
51
51
  console.log();
52
52
 
53
- const prerenderTimer = createTimer();
54
- console.log(
55
- `${BOLD}${CYAN}ℹ${RESET} Prerendering...\n` +
56
- config.prerenderedRoutes
57
- .map((route) => ` ${DIM}-${RESET} ${CYAN}${route}${RESET}`)
58
- .join("\n"),
59
- );
60
- const prerendered = await prerenderPages(config);
61
- console.log(`${GREEN}✔${RESET} Prerendered in ${prerenderTimer()}`);
53
+ let prerendered: PrerenderedRoute[] = [];
54
+ if (config.prerenderer !== false) {
55
+ const prerenderTimer = createTimer();
56
+ console.log(
57
+ `${BOLD}${CYAN}ℹ${RESET} Prerendering...\n` +
58
+ config.prerenderedRoutes
59
+ .map((route) => ` ${DIM}-${RESET} ${CYAN}${route}${RESET}`)
60
+ .join("\n"),
61
+ );
62
+ prerendered = await prerenderPages(config);
63
+ console.log(`${GREEN}✔${RESET} Prerendered in ${prerenderTimer()}`);
64
+ } else {
65
+ console.log(`${DIM}${BOLD}→${RESET} Pre-rendering disabled`);
66
+ }
62
67
 
63
68
  console.log();
64
69
 
@@ -2,7 +2,6 @@ import {} from "node:url";
2
2
  import { join } from "node:path";
3
3
  import { mkdir, writeFile } from "node:fs/promises";
4
4
  import type { Browser } from "puppeteer";
5
- import { createServer } from "./dev-server";
6
5
  import type { ResolvedConfig } from "./config";
7
6
 
8
7
  export type PrerenderedRoute = {
@@ -13,8 +12,16 @@ export type PrerenderedRoute = {
13
12
  export async function prerenderPages(
14
13
  config: ResolvedConfig,
15
14
  ): Promise<PrerenderedRoute[]> {
15
+ if (config.prerenderer === false) return [];
16
+
16
17
  const puppeteer = await import("puppeteer");
17
- const timeout = config.prerenderer.timeout ?? 30e3;
18
+ const {
19
+ timeout = 30e3,
20
+ launch,
21
+ waitForSelector,
22
+ waitForSelectorVisible,
23
+ waitForTimeout,
24
+ } = config.prerenderer ?? {};
18
25
 
19
26
  const server = Bun.spawn({
20
27
  cmd: ["bun", "--env-file", "../.env", "server-entry.js"],
@@ -26,7 +33,7 @@ export async function prerenderPages(
26
33
  let browser: Browser | undefined;
27
34
 
28
35
  try {
29
- let args = config.prerenderer.launch?.args ?? [];
36
+ let args = launch?.args ?? [];
30
37
  // Workaround for Linux SUID Sandbox issues.
31
38
  if (process.platform === "linux" && !args.includes("--no-sandbox")) {
32
39
  args.push("--no-sandbox", "--disable-setuid-sandbox");
@@ -35,7 +42,7 @@ export async function prerenderPages(
35
42
  browser = await puppeteer.launch({
36
43
  headless: true,
37
44
  timeout,
38
- ...config.prerenderer.launch,
45
+ ...launch,
39
46
  args,
40
47
  });
41
48
  for (const route of config.prerenderedRoutes) {
@@ -45,14 +52,12 @@ export async function prerenderPages(
45
52
  page.setDefaultTimeout(timeout);
46
53
  page.setDefaultNavigationTimeout(timeout);
47
54
  await page.goto(url.href);
48
- if (config.prerenderer.waitForSelector) {
49
- await page.waitForSelector(config.prerenderer.waitForSelector, {
50
- visible: config.prerenderer.waitForSelectorVisible,
55
+ if (waitForSelector) {
56
+ await page.waitForSelector(waitForSelector, {
57
+ visible: waitForSelectorVisible,
51
58
  });
52
- } else if (config.prerenderer.waitForTimeout != null) {
53
- await new Promise((res) =>
54
- setTimeout(res, config.prerenderer.waitForTimeout),
55
- );
59
+ } else if (waitForTimeout != null) {
60
+ await new Promise((res) => setTimeout(res, waitForTimeout));
56
61
  }
57
62
 
58
63
  const html = await page.content();