@ruvyxa/adapter-firebase 1.0.31 → 1.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.
package/README.md CHANGED
@@ -1,7 +1,23 @@
1
- # @ruvyxa/adapter-firebase
1
+ <p align="center">
2
+ <a href="https://github.com/thirawat27/Ruvyxa">
3
+ <img src="https://raw.githubusercontent.com/thirawat27/Ruvyxa/main/assets/branding/ruvyxa.png" alt="Ruvyxa" width="140" height="140" />
4
+ </a>
5
+ </p>
2
6
 
3
- Full-stack Firebase Hosting adapter for Ruvyxa. It publishes static assets to Firebase's CDN and
4
- rewrites dynamic requests to a generated second-generation HTTPS function.
7
+ <h1 align="center">@ruvyxa/adapter-firebase</h1>
8
+
9
+ <p align="center">
10
+ Full-stack Firebase Hosting adapter for Ruvyxa. It publishes static assets to Firebase's CDN and<br/>
11
+ rewrites dynamic requests to a generated second-generation HTTPS function.
12
+ </p>
13
+
14
+ <p align="center">
15
+ <a href="https://www.npmjs.com/package/@ruvyxa/adapter-firebase"><img src="https://img.shields.io/npm/v/@ruvyxa/adapter-firebase?style=flat-square" alt="npm version" /></a>
16
+ <a href="https://www.npmjs.com/package/@ruvyxa/adapter-firebase"><img src="https://img.shields.io/node/v/@ruvyxa/adapter-firebase?style=flat-square&label=node" alt="Supported Node version" /></a>
17
+ <img src="https://img.shields.io/badge/license-Apache%202.0-green?style=flat-square" alt="License" />
18
+ </p>
19
+
20
+ ---
5
21
 
6
22
  ```bash
7
23
  npm run build -- --adapter firebase
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAgD,MAAM,cAAc,CAAA;AAYzF,0DAA0D;AAC1D,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;AAElE,oEAAoE;AACpE,MAAM,WAAW,sBAAsB;IACrC,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAqJtE;eAuGc,QAAQ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAgD,MAAM,cAAc,CAAA;AAczF,0DAA0D;AAC1D,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;AAElE,oEAAoE;AACpE,MAAM,WAAW,sBAAsB;IACrC,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAmKtE;eA2Gc,QAAQ"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { CLIENT_BUNDLE_PREFIX, clientBuildOutput, IMMUTABLE_CACHE_CONTROL, projectRelativeOutDir, PUBLIC_ASSET_CACHE_CONTROL, publicAssetGlobs, runtimeBuildPolicy, validateBuildContext, } from '@ruvyxa/core';
1
+ import { CLIENT_BUNDLE_PREFIX, clientBuildOutput, DEFAULT_SECURITY_HEADERS, IMMUTABLE_CACHE_CONTROL, nonPublishableStrategies, projectRelativeOutDir, PUBLIC_ASSET_CACHE_CONTROL, publicAssetGlobs, runtimeBuildPolicy, validateBuildContext, } from '@ruvyxa/core';
2
2
  /** Create a Firebase Hosting adapter backed by a second-generation HTTPS function. */
3
3
  export function firebase(options = {}) {
4
4
  const functionName = options.functionName ?? 'ruvyxaServer';
@@ -41,6 +41,20 @@ export function firebase(options = {}) {
41
41
  public: hostingPublic,
42
42
  ignore: ['firebase.json', '**/.*', '**/node_modules/**'],
43
43
  headers: [
44
+ {
45
+ // The security defaults, on everything Hosting answers.
46
+ //
47
+ // A pre-rendered document and every public file are served
48
+ // from `public` without the rewrite ever reaching the
49
+ // function, and the function is where `createHandler` sets
50
+ // these. So a deployed SSG page carried none of them while
51
+ // the same page under `ruvyxa start` carried all seven.
52
+ source: '**',
53
+ headers: Object.entries(DEFAULT_SECURITY_HEADERS).map(([key, value]) => ({
54
+ key,
55
+ value,
56
+ })),
57
+ },
44
58
  {
45
59
  source: `${CLIENT_BUNDLE_PREFIX}**`,
46
60
  headers: [{ key: 'Cache-Control', value: IMMUTABLE_CACHE_CONTROL }],
@@ -87,7 +101,7 @@ export function firebase(options = {}) {
87
101
  kind: 'static-site',
88
102
  path: 'deploy/firebase/public',
89
103
  optional: true,
90
- excludeStrategies: ['isr', 'ppr'],
104
+ excludeStrategies: nonPublishableStrategies(),
91
105
  },
92
106
  {
93
107
  kind: 'function',
@@ -178,6 +192,10 @@ const handler = createHandler({
178
192
  mkdirSync(path.dirname(htmlPath), { recursive: true });
179
193
  writeFileSync(htmlPath, html, 'utf8');
180
194
  },
195
+ // The project's own not-found page, pre-rendered by the build and carried
196
+ // inline in the manifest: an unmatched URL is answered with the page the
197
+ // application actually wrote, on every host.
198
+ notFoundDocument: manifest.notFoundDocument,
181
199
  supportedStrategies: ['ssr', 'ssg', 'csr', 'isr', 'ppr', 'api'],
182
200
  });
183
201
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ruvyxa/adapter-firebase",
3
- "version": "1.0.31",
3
+ "version": "1.1.1",
4
4
  "description": "Deploy full-stack Ruvyxa applications to Firebase Hosting with CDN assets and a generated Cloud Functions v2 backend.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -14,19 +14,39 @@
14
14
  "keywords": [
15
15
  "ruvyxa",
16
16
  "adapter",
17
- "firebase",
17
+ "deploy",
18
+ "deployment",
18
19
  "hosting",
19
- "functions"
20
+ "build",
21
+ "firebase",
22
+ "firebase-hosting",
23
+ "google",
24
+ "google-cloud",
25
+ "gcp",
26
+ "cloud-functions",
27
+ "cloud-functions-v2",
28
+ "functions",
29
+ "serverless",
30
+ "cdn",
31
+ "static-hosting",
32
+ "prerender",
33
+ "ssr",
34
+ "ssg",
35
+ "isr",
36
+ "static-assets",
37
+ "typescript",
38
+ "fullstack",
39
+ "framework"
20
40
  ],
21
41
  "repository": {
22
42
  "type": "git",
23
- "url": "git+https://github.com/thirawat27/ruvyxa.git",
43
+ "url": "git+https://github.com/thirawat27/Ruvyxa.git",
24
44
  "directory": "packages/@ruvyxa/adapter-firebase"
25
45
  },
26
46
  "bugs": {
27
- "url": "https://github.com/thirawat27/ruvyxa/issues"
47
+ "url": "https://github.com/thirawat27/Ruvyxa/issues"
28
48
  },
29
- "homepage": "https://github.com/thirawat27/ruvyxa#readme",
49
+ "homepage": "https://github.com/thirawat27/Ruvyxa#readme",
30
50
  "engines": {
31
51
  "node": ">=24.19.0"
32
52
  },
@@ -40,7 +60,7 @@
40
60
  }
41
61
  },
42
62
  "dependencies": {
43
- "@ruvyxa/core": "^1.0.31"
63
+ "@ruvyxa/core": "^1.1.1"
44
64
  },
45
65
  "scripts": {
46
66
  "build": "tsc -p tsconfig.json",
package/src/index.ts CHANGED
@@ -2,7 +2,9 @@ import type { Adapter, AdapterArtifact, AdapterOutput, BuildContext } from '@ruv
2
2
  import {
3
3
  CLIENT_BUNDLE_PREFIX,
4
4
  clientBuildOutput,
5
+ DEFAULT_SECURITY_HEADERS,
5
6
  IMMUTABLE_CACHE_CONTROL,
7
+ nonPublishableStrategies,
6
8
  projectRelativeOutDir,
7
9
  PUBLIC_ASSET_CACHE_CONTROL,
8
10
  publicAssetGlobs,
@@ -84,6 +86,20 @@ export function firebase(options: FirebaseAdapterOptions = {}): Adapter {
84
86
  public: hostingPublic,
85
87
  ignore: ['firebase.json', '**/.*', '**/node_modules/**'],
86
88
  headers: [
89
+ {
90
+ // The security defaults, on everything Hosting answers.
91
+ //
92
+ // A pre-rendered document and every public file are served
93
+ // from `public` without the rewrite ever reaching the
94
+ // function, and the function is where `createHandler` sets
95
+ // these. So a deployed SSG page carried none of them while
96
+ // the same page under `ruvyxa start` carried all seven.
97
+ source: '**',
98
+ headers: Object.entries(DEFAULT_SECURITY_HEADERS).map(([key, value]) => ({
99
+ key,
100
+ value,
101
+ })),
102
+ },
87
103
  {
88
104
  source: `${CLIENT_BUNDLE_PREFIX}**`,
89
105
  headers: [{ key: 'Cache-Control', value: IMMUTABLE_CACHE_CONTROL }],
@@ -143,7 +159,7 @@ export function firebase(options: FirebaseAdapterOptions = {}): Adapter {
143
159
  kind: 'static-site',
144
160
  path: 'deploy/firebase/public',
145
161
  optional: true,
146
- excludeStrategies: ['isr', 'ppr'],
162
+ excludeStrategies: nonPublishableStrategies(),
147
163
  },
148
164
  {
149
165
  kind: 'function',
@@ -240,6 +256,10 @@ const handler = createHandler({
240
256
  mkdirSync(path.dirname(htmlPath), { recursive: true });
241
257
  writeFileSync(htmlPath, html, 'utf8');
242
258
  },
259
+ // The project's own not-found page, pre-rendered by the build and carried
260
+ // inline in the manifest: an unmatched URL is answered with the page the
261
+ // application actually wrote, on every host.
262
+ notFoundDocument: manifest.notFoundDocument,
243
263
  supportedStrategies: ['ssr', 'ssg', 'csr', 'isr', 'ppr', 'api'],
244
264
  });
245
265