@ruvyxa/adapter-firebase 1.1.3 → 1.1.5
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/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -30
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +19 -28
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;AAiBzF,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,CAwKtE;eA0Fc,QAAQ"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CLIENT_BUNDLE_PREFIX, clientBuildOutput, DEFAULT_SECURITY_HEADERS, IMMUTABLE_CACHE_CONTROL, nonPublishableStrategies, projectRelativeOutDir, PUBLIC_ASSET_CACHE_CONTROL, publicAssetGlobs, runtimeBuildPolicy, validateBuildContext, } from '@ruvyxa/core';
|
|
1
|
+
import { CLIENT_BUNDLE_PREFIX, clientBuildOutput, documentCacheOptionsSource, isrTemporaryCacheSource, platformDocumentStoreSource, 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';
|
|
@@ -106,7 +106,7 @@ export function firebase(options = {}) {
|
|
|
106
106
|
{
|
|
107
107
|
kind: 'function',
|
|
108
108
|
path: 'deploy/firebase/functions',
|
|
109
|
-
handlerSource: firebaseHandlerSource(functionName, region, runtimeBuildPolicy(ctx)),
|
|
109
|
+
handlerSource: firebaseHandlerSource(functionName, region, runtimeBuildPolicy(ctx), ctx.deployManifest?.buildId ?? ''),
|
|
110
110
|
},
|
|
111
111
|
{
|
|
112
112
|
kind: 'file',
|
|
@@ -142,11 +142,12 @@ export function firebase(options = {}) {
|
|
|
142
142
|
};
|
|
143
143
|
}
|
|
144
144
|
/** Firebase Functions v2 wrapper around the shared Ruvyxa serverless handler. */
|
|
145
|
-
function firebaseHandlerSource(functionName, region, runtimePolicy) {
|
|
145
|
+
function firebaseHandlerSource(functionName, region, runtimePolicy, buildId) {
|
|
146
146
|
return `import { onRequest } from 'firebase-functions/v2/https';
|
|
147
147
|
import { createHandler, prerenderRelativePath } from './serverless-handler.mjs';
|
|
148
|
-
import {
|
|
148
|
+
import { projectProxy, documentCacheHandler, loadActionModule, loadRouteModule } from './route-modules.mjs';
|
|
149
149
|
import manifest from './manifest.mjs';
|
|
150
|
+
import { createHash } from 'node:crypto';
|
|
150
151
|
import { readFileSync, writeFileSync, mkdirSync, statSync } from 'node:fs';
|
|
151
152
|
import os from 'node:os';
|
|
152
153
|
import path from 'node:path';
|
|
@@ -156,42 +157,23 @@ import { pipeline } from 'node:stream/promises';
|
|
|
156
157
|
const runtimePolicy = ${JSON.stringify(runtimePolicy ?? {})};
|
|
157
158
|
|
|
158
159
|
const prerenderDir = path.join(import.meta.dirname, 'prerender');
|
|
159
|
-
|
|
160
|
+
${isrTemporaryCacheSource(buildId)}
|
|
160
161
|
|
|
161
|
-
|
|
162
|
-
const html = readFileSync(htmlPath, 'utf8');
|
|
163
|
-
const stale = Date.now() - statSync(htmlPath).mtimeMs >= revalidate * 1000;
|
|
164
|
-
return { html, stale };
|
|
165
|
-
};
|
|
162
|
+
${platformDocumentStoreSource()}
|
|
166
163
|
|
|
167
164
|
const handler = createHandler({
|
|
168
165
|
routes: manifest.routes,
|
|
169
166
|
middleware: runtimePolicy.middleware,
|
|
167
|
+
headers: runtimePolicy.headers,
|
|
168
|
+
redirects: runtimePolicy.redirects,
|
|
169
|
+
rewrites: runtimePolicy.rewrites,
|
|
170
170
|
i18n: manifest.i18n,
|
|
171
171
|
importPage: loadRouteModule,
|
|
172
172
|
importApi: loadRouteModule,
|
|
173
173
|
importAction: loadActionModule,
|
|
174
|
-
|
|
174
|
+
proxy: projectProxy,
|
|
175
175
|
security: runtimePolicy.security,
|
|
176
|
-
|
|
177
|
-
const relative = prerenderRelativePath(pathname);
|
|
178
|
-
if (relative === null) return null;
|
|
179
|
-
for (const directory of [isrCacheDir, prerenderDir]) {
|
|
180
|
-
try {
|
|
181
|
-
return readEntry(path.join(directory, relative), revalidate);
|
|
182
|
-
} catch {
|
|
183
|
-
// try the deploy-time prerender output after the runtime cache
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
return null;
|
|
187
|
-
},
|
|
188
|
-
writePrerendered: (pathname, html) => {
|
|
189
|
-
const relative = prerenderRelativePath(pathname);
|
|
190
|
-
if (relative === null) return;
|
|
191
|
-
const htmlPath = path.join(isrCacheDir, relative);
|
|
192
|
-
mkdirSync(path.dirname(htmlPath), { recursive: true });
|
|
193
|
-
writeFileSync(htmlPath, html, 'utf8');
|
|
194
|
-
},
|
|
176
|
+
${documentCacheOptionsSource('platformReadPrerendered', 'platformWritePrerendered')}
|
|
195
177
|
// The project's own not-found page, pre-rendered by the build and carried
|
|
196
178
|
// inline in the manifest: an unmatched URL is answered with the page the
|
|
197
179
|
// application actually wrote, on every host.
|
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.1.
|
|
3
|
+
"version": "1.1.5",
|
|
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",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@ruvyxa/core": "^1.1.
|
|
63
|
+
"@ruvyxa/core": "^1.1.5"
|
|
64
64
|
},
|
|
65
65
|
"scripts": {
|
|
66
66
|
"build": "tsc -p tsconfig.json",
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,9 @@ import type { Adapter, AdapterArtifact, AdapterOutput, BuildContext } from '@ruv
|
|
|
2
2
|
import {
|
|
3
3
|
CLIENT_BUNDLE_PREFIX,
|
|
4
4
|
clientBuildOutput,
|
|
5
|
+
documentCacheOptionsSource,
|
|
6
|
+
isrTemporaryCacheSource,
|
|
7
|
+
platformDocumentStoreSource,
|
|
5
8
|
DEFAULT_SECURITY_HEADERS,
|
|
6
9
|
IMMUTABLE_CACHE_CONTROL,
|
|
7
10
|
nonPublishableStrategies,
|
|
@@ -164,7 +167,12 @@ export function firebase(options: FirebaseAdapterOptions = {}): Adapter {
|
|
|
164
167
|
{
|
|
165
168
|
kind: 'function',
|
|
166
169
|
path: 'deploy/firebase/functions',
|
|
167
|
-
handlerSource: firebaseHandlerSource(
|
|
170
|
+
handlerSource: firebaseHandlerSource(
|
|
171
|
+
functionName,
|
|
172
|
+
region,
|
|
173
|
+
runtimeBuildPolicy(ctx),
|
|
174
|
+
ctx.deployManifest?.buildId ?? '',
|
|
175
|
+
),
|
|
168
176
|
},
|
|
169
177
|
{
|
|
170
178
|
kind: 'file',
|
|
@@ -206,11 +214,13 @@ function firebaseHandlerSource(
|
|
|
206
214
|
functionName: string,
|
|
207
215
|
region: string,
|
|
208
216
|
runtimePolicy: unknown,
|
|
217
|
+
buildId: string,
|
|
209
218
|
): string {
|
|
210
219
|
return `import { onRequest } from 'firebase-functions/v2/https';
|
|
211
220
|
import { createHandler, prerenderRelativePath } from './serverless-handler.mjs';
|
|
212
|
-
import {
|
|
221
|
+
import { projectProxy, documentCacheHandler, loadActionModule, loadRouteModule } from './route-modules.mjs';
|
|
213
222
|
import manifest from './manifest.mjs';
|
|
223
|
+
import { createHash } from 'node:crypto';
|
|
214
224
|
import { readFileSync, writeFileSync, mkdirSync, statSync } from 'node:fs';
|
|
215
225
|
import os from 'node:os';
|
|
216
226
|
import path from 'node:path';
|
|
@@ -220,42 +230,23 @@ import { pipeline } from 'node:stream/promises';
|
|
|
220
230
|
const runtimePolicy = ${JSON.stringify(runtimePolicy ?? {})};
|
|
221
231
|
|
|
222
232
|
const prerenderDir = path.join(import.meta.dirname, 'prerender');
|
|
223
|
-
|
|
233
|
+
${isrTemporaryCacheSource(buildId)}
|
|
224
234
|
|
|
225
|
-
|
|
226
|
-
const html = readFileSync(htmlPath, 'utf8');
|
|
227
|
-
const stale = Date.now() - statSync(htmlPath).mtimeMs >= revalidate * 1000;
|
|
228
|
-
return { html, stale };
|
|
229
|
-
};
|
|
235
|
+
${platformDocumentStoreSource()}
|
|
230
236
|
|
|
231
237
|
const handler = createHandler({
|
|
232
238
|
routes: manifest.routes,
|
|
233
239
|
middleware: runtimePolicy.middleware,
|
|
240
|
+
headers: runtimePolicy.headers,
|
|
241
|
+
redirects: runtimePolicy.redirects,
|
|
242
|
+
rewrites: runtimePolicy.rewrites,
|
|
234
243
|
i18n: manifest.i18n,
|
|
235
244
|
importPage: loadRouteModule,
|
|
236
245
|
importApi: loadRouteModule,
|
|
237
246
|
importAction: loadActionModule,
|
|
238
|
-
|
|
247
|
+
proxy: projectProxy,
|
|
239
248
|
security: runtimePolicy.security,
|
|
240
|
-
|
|
241
|
-
const relative = prerenderRelativePath(pathname);
|
|
242
|
-
if (relative === null) return null;
|
|
243
|
-
for (const directory of [isrCacheDir, prerenderDir]) {
|
|
244
|
-
try {
|
|
245
|
-
return readEntry(path.join(directory, relative), revalidate);
|
|
246
|
-
} catch {
|
|
247
|
-
// try the deploy-time prerender output after the runtime cache
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
return null;
|
|
251
|
-
},
|
|
252
|
-
writePrerendered: (pathname, html) => {
|
|
253
|
-
const relative = prerenderRelativePath(pathname);
|
|
254
|
-
if (relative === null) return;
|
|
255
|
-
const htmlPath = path.join(isrCacheDir, relative);
|
|
256
|
-
mkdirSync(path.dirname(htmlPath), { recursive: true });
|
|
257
|
-
writeFileSync(htmlPath, html, 'utf8');
|
|
258
|
-
},
|
|
249
|
+
${documentCacheOptionsSource('platformReadPrerendered', 'platformWritePrerendered')}
|
|
259
250
|
// The project's own not-found page, pre-rendered by the build and carried
|
|
260
251
|
// inline in the manifest: an unmatched URL is answered with the page the
|
|
261
252
|
// application actually wrote, on every host.
|