@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 +19 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -2
- package/dist/index.js.map +1 -1
- package/package.json +27 -7
- package/src/index.ts +21 -1
package/README.md
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
4
|
-
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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:
|
|
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.
|
|
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
|
-
"
|
|
17
|
+
"deploy",
|
|
18
|
+
"deployment",
|
|
18
19
|
"hosting",
|
|
19
|
-
"
|
|
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/
|
|
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/
|
|
47
|
+
"url": "https://github.com/thirawat27/Ruvyxa/issues"
|
|
28
48
|
},
|
|
29
|
-
"homepage": "https://github.com/thirawat27/
|
|
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.
|
|
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:
|
|
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
|
|