cloudcommerce 0.0.72 → 0.0.75
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/CHANGELOG.md +24 -0
- package/package.json +8 -8
- package/packages/api/package.json +1 -1
- package/packages/apps/correios/package.json +1 -1
- package/packages/apps/custom-shipping/package.json +1 -1
- package/packages/apps/discounts/package.json +1 -1
- package/packages/apps/frenet/package.json +1 -1
- package/packages/apps/tiny-erp/package.json +1 -1
- package/packages/cli/config/firebase.json +47 -0
- package/packages/cli/package.json +1 -1
- package/packages/config/package.json +1 -1
- package/packages/events/package.json +1 -1
- package/packages/firebase/package.json +1 -1
- package/packages/modules/lib/firebase/ajv.js +2 -1
- package/packages/modules/lib/firebase/ajv.js.map +1 -1
- package/packages/modules/lib/firebase/handle-module.js +5 -1
- package/packages/modules/lib/firebase/handle-module.js.map +1 -1
- package/packages/modules/lib/firebase/serve-modules-api.js +4 -3
- package/packages/modules/lib/firebase/serve-modules-api.js.map +1 -1
- package/packages/modules/package.json +2 -1
- package/packages/modules/schemas/@checkout.cjs +28 -28
- package/packages/modules/schemas/apply_discount.cjs +2 -2
- package/packages/modules/schemas/calculate_shipping.cjs +4 -4
- package/packages/modules/schemas/create_transaction.cjs +30 -30
- package/packages/modules/schemas/list_payments.cjs +6 -6
- package/packages/modules/src/firebase/ajv.ts +2 -1
- package/packages/modules/src/firebase/handle-module.ts +5 -1
- package/packages/modules/src/firebase/serve-modules-api.ts +5 -3
- package/packages/passport/package.json +1 -1
- package/packages/ssr/lib/firebase/serve-storefront.js +13 -32
- package/packages/ssr/lib/firebase/serve-storefront.js.map +1 -1
- package/packages/ssr/package.json +1 -1
- package/packages/ssr/src/firebase/serve-storefront.ts +13 -37
- package/packages/storefront/astro.config.mjs +2 -0
- package/packages/storefront/dist/client/LoginModal.d6b935cf.js +1 -0
- package/packages/storefront/dist/client/assets/{_...c08e0a75.css → _...27b7eb4d.css} +1 -1
- package/packages/storefront/dist/client/assets/_...b3f65c5c.css +1 -0
- package/packages/storefront/dist/client/assets/fallback-index.90217cf0.css +1 -0
- package/packages/storefront/dist/client/assets/{404.b3ead908.css → fallback.9cd2ed3f.css} +1 -1
- package/packages/storefront/dist/client/assets/{index.9745690c.css → index.c5a9ea80.css} +1 -1
- package/packages/storefront/dist/client/chunks/index.esm.69f70489.js +1726 -0
- package/packages/storefront/dist/client/chunks/index.esm2017.1194d1a1.js +457 -0
- package/packages/storefront/dist/client/chunks/runtime-core.esm-bundler.a7337834.js +1 -0
- package/packages/storefront/dist/client/client.80b904f3.js +1 -0
- package/packages/storefront/dist/client/hoisted.24787260.js +376 -0
- package/packages/storefront/dist/server/entry.mjs +466 -221
- package/packages/storefront/package.json +9 -7
- package/packages/storefront/src/assets/firebaseui.css +648 -0
- package/packages/storefront/src/lib/components/LoginModal.vue +42 -9
- package/packages/storefront/src/lib/layouts/Layout.astro +24 -0
- package/packages/storefront/src/lib/ssr-context.ts +54 -30
- package/packages/storefront/src/lib/views/{404.astro → fallback.astro} +1 -1
- package/packages/storefront/src/pages/[...slug].astro +7 -2
- package/packages/storefront/src/pages/{404.astro → fallback.astro} +2 -2
- package/packages/storefront/src/pages/index.astro +7 -2
- package/packages/types/package.json +1 -1
- package/packages/storefront/dist/client/assets/404-500-_...d4aa8aff.css +0 -1
- package/packages/storefront/dist/client/assets/404-500-index.d9230d24.css +0 -1
- package/packages/storefront/dist/client/assets/500.d5d7700b.css +0 -1
- package/packages/storefront/dist/client/client.6d48c590.js +0 -1
- package/packages/storefront/src/lib/views/500.astro +0 -79
- package/packages/storefront/src/pages/500.astro +0 -13
|
@@ -23,8 +23,8 @@ const schema = {
|
|
|
23
23
|
},
|
|
24
24
|
'number': {
|
|
25
25
|
'type': 'integer',
|
|
26
|
-
'
|
|
27
|
-
'
|
|
26
|
+
'minimum': 1,
|
|
27
|
+
'maximum': 9999999,
|
|
28
28
|
'description': 'House or building street number'
|
|
29
29
|
},
|
|
30
30
|
'complement': {
|
|
@@ -93,8 +93,8 @@ const schema = {
|
|
|
93
93
|
'properties': {
|
|
94
94
|
'country_code': {
|
|
95
95
|
'type': 'integer',
|
|
96
|
-
'
|
|
97
|
-
'
|
|
96
|
+
'minimum': 1,
|
|
97
|
+
'maximum': 999,
|
|
98
98
|
'description': 'Country calling code (without +), defined by standards E.123 and E.164'
|
|
99
99
|
},
|
|
100
100
|
'number': {
|
|
@@ -306,20 +306,20 @@ const schema = {
|
|
|
306
306
|
'properties': {
|
|
307
307
|
'day': {
|
|
308
308
|
'type': 'integer',
|
|
309
|
-
'
|
|
310
|
-
'
|
|
309
|
+
'minimum': 1,
|
|
310
|
+
'maximum': 31,
|
|
311
311
|
'description': 'Day of birth'
|
|
312
312
|
},
|
|
313
313
|
'month': {
|
|
314
314
|
'type': 'integer',
|
|
315
|
-
'
|
|
316
|
-
'
|
|
315
|
+
'minimum': 1,
|
|
316
|
+
'maximum': 12,
|
|
317
317
|
'description': 'Number of month of birth'
|
|
318
318
|
},
|
|
319
319
|
'year': {
|
|
320
320
|
'type': 'integer',
|
|
321
|
-
'
|
|
322
|
-
'
|
|
321
|
+
'minimum': 1800,
|
|
322
|
+
'maximum': 2200,
|
|
323
323
|
'description': 'Year of birth'
|
|
324
324
|
}
|
|
325
325
|
},
|
|
@@ -332,8 +332,8 @@ const schema = {
|
|
|
332
332
|
'properties': {
|
|
333
333
|
'country_code': {
|
|
334
334
|
'type': 'integer',
|
|
335
|
-
'
|
|
336
|
-
'
|
|
335
|
+
'minimum': 1,
|
|
336
|
+
'maximum': 999,
|
|
337
337
|
'description': 'Country calling code (without +), defined by standards E.123 and E.164'
|
|
338
338
|
},
|
|
339
339
|
'number': {
|
|
@@ -396,20 +396,20 @@ const schema = {
|
|
|
396
396
|
'properties': {
|
|
397
397
|
'day': {
|
|
398
398
|
'type': 'integer',
|
|
399
|
-
'
|
|
400
|
-
'
|
|
399
|
+
'minimum': 1,
|
|
400
|
+
'maximum': 31,
|
|
401
401
|
'description': 'Day of birth'
|
|
402
402
|
},
|
|
403
403
|
'month': {
|
|
404
404
|
'type': 'integer',
|
|
405
|
-
'
|
|
406
|
-
'
|
|
405
|
+
'minimum': 1,
|
|
406
|
+
'maximum': 12,
|
|
407
407
|
'description': 'Number of month of birth'
|
|
408
408
|
},
|
|
409
409
|
'year': {
|
|
410
410
|
'type': 'integer',
|
|
411
|
-
'
|
|
412
|
-
'
|
|
411
|
+
'minimum': 1800,
|
|
412
|
+
'maximum': 2200,
|
|
413
413
|
'description': 'Year of birth'
|
|
414
414
|
}
|
|
415
415
|
},
|
|
@@ -422,8 +422,8 @@ const schema = {
|
|
|
422
422
|
'properties': {
|
|
423
423
|
'country_code': {
|
|
424
424
|
'type': 'integer',
|
|
425
|
-
'
|
|
426
|
-
'
|
|
425
|
+
'minimum': 1,
|
|
426
|
+
'maximum': 999,
|
|
427
427
|
'description': 'Country calling code (without +), defined by standards E.123 and E.164'
|
|
428
428
|
},
|
|
429
429
|
'number': {
|
|
@@ -485,8 +485,8 @@ const schema = {
|
|
|
485
485
|
},
|
|
486
486
|
'bin': {
|
|
487
487
|
'type': 'integer',
|
|
488
|
-
'
|
|
489
|
-
'
|
|
488
|
+
'minimum': 1,
|
|
489
|
+
'maximum': 9999999,
|
|
490
490
|
'description': 'Issuer identification number (IIN), known as bank identification number (BIN)'
|
|
491
491
|
},
|
|
492
492
|
'company': {
|
|
@@ -507,8 +507,8 @@ const schema = {
|
|
|
507
507
|
},
|
|
508
508
|
'cvv': {
|
|
509
509
|
'type': 'integer',
|
|
510
|
-
'
|
|
511
|
-
'
|
|
510
|
+
'minimum': 99,
|
|
511
|
+
'maximum': 99999,
|
|
512
512
|
'description': 'Credit card CVV number (Card Verification Value)'
|
|
513
513
|
},
|
|
514
514
|
'hash': {
|
|
@@ -552,8 +552,8 @@ const schema = {
|
|
|
552
552
|
},
|
|
553
553
|
'order_number': {
|
|
554
554
|
'type': 'integer',
|
|
555
|
-
'
|
|
556
|
-
'
|
|
555
|
+
'minimum': 1,
|
|
556
|
+
'maximum': 999999999,
|
|
557
557
|
'description': 'Number of created order'
|
|
558
558
|
},
|
|
559
559
|
'open_payment_id': {
|
|
@@ -605,8 +605,8 @@ const schema = {
|
|
|
605
605
|
},
|
|
606
606
|
'channel_id': {
|
|
607
607
|
'type': 'integer',
|
|
608
|
-
'
|
|
609
|
-
'
|
|
608
|
+
'minimum': 10000,
|
|
609
|
+
'maximum': 4294967295,
|
|
610
610
|
'description': 'Channel unique identificator'
|
|
611
611
|
},
|
|
612
612
|
'channel_type': {
|
|
@@ -723,8 +723,8 @@ exports.response = {
|
|
|
723
723
|
},
|
|
724
724
|
'bin': {
|
|
725
725
|
'type': 'integer',
|
|
726
|
-
'
|
|
727
|
-
'
|
|
726
|
+
'minimum': 1,
|
|
727
|
+
'maximum': 9999999,
|
|
728
728
|
'description': 'Issuer identification number (IIN), known as bank identification number (BIN)'
|
|
729
729
|
},
|
|
730
730
|
'company': {
|
|
@@ -250,8 +250,8 @@ const schema = {
|
|
|
250
250
|
'properties': {
|
|
251
251
|
'country_code': {
|
|
252
252
|
'type': 'integer',
|
|
253
|
-
'
|
|
254
|
-
'
|
|
253
|
+
'minimum': 1,
|
|
254
|
+
'maximum': 999,
|
|
255
255
|
'description': 'Country calling code (without +), defined by standards E.123 and E.164'
|
|
256
256
|
},
|
|
257
257
|
'number': {
|
|
@@ -328,8 +328,8 @@ const schema = {
|
|
|
328
328
|
},
|
|
329
329
|
'number': {
|
|
330
330
|
'type': 'integer',
|
|
331
|
-
'
|
|
332
|
-
'
|
|
331
|
+
'minimum': 1,
|
|
332
|
+
'maximum': 9999999,
|
|
333
333
|
'description': 'House or building street number'
|
|
334
334
|
},
|
|
335
335
|
'complement': {
|
|
@@ -398,8 +398,8 @@ const schema = {
|
|
|
398
398
|
'properties': {
|
|
399
399
|
'country_code': {
|
|
400
400
|
'type': 'integer',
|
|
401
|
-
'
|
|
402
|
-
'
|
|
401
|
+
'minimum': 1,
|
|
402
|
+
'maximum': 999,
|
|
403
403
|
'description': 'Country calling code (without +), defined by standards E.123 and E.164'
|
|
404
404
|
},
|
|
405
405
|
'number': {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Response } from 'firebase-functions';
|
|
2
2
|
import Ajv, { Options, ErrorObject } from 'ajv';
|
|
3
|
+
import addFormats from 'ajv-formats';
|
|
3
4
|
|
|
4
5
|
const ajvOptions: Options = {
|
|
5
6
|
coerceTypes: false,
|
|
@@ -10,7 +11,7 @@ const ajvOptions: Options = {
|
|
|
10
11
|
multipleOfPrecision: 5,
|
|
11
12
|
allowMatchingProperties: true,
|
|
12
13
|
};
|
|
13
|
-
const ajv = new Ajv(ajvOptions);
|
|
14
|
+
const ajv = addFormats(new Ajv(ajvOptions));
|
|
14
15
|
|
|
15
16
|
const parseAjvErrors = (errors?: ErrorObject[] | null, ajvInstance = ajv) => {
|
|
16
17
|
return ajvInstance.errorsText(errors, { separator: '\n' });
|
|
@@ -2,6 +2,7 @@ import type { Request, Response } from 'firebase-functions';
|
|
|
2
2
|
import type { Applications, AppModuleName, AppModuleBody } from '@cloudcommerce/types';
|
|
3
3
|
import { logger } from 'firebase-functions';
|
|
4
4
|
import Ajv, { ValidateFunction } from 'ajv';
|
|
5
|
+
import addFormats from 'ajv-formats';
|
|
5
6
|
import api, { ApiError, ApiConfig } from '@cloudcommerce/api';
|
|
6
7
|
import config from '@cloudcommerce/firebase/lib/config';
|
|
7
8
|
import {
|
|
@@ -12,7 +13,7 @@ import {
|
|
|
12
13
|
} from './ajv';
|
|
13
14
|
import callAppModule from './call-app-module';
|
|
14
15
|
|
|
15
|
-
const ajvAppsResponse = new Ajv({ ...ajvOptions, allErrors: true });
|
|
16
|
+
const ajvAppsResponse = addFormats(new Ajv({ ...ajvOptions, allErrors: true }));
|
|
16
17
|
|
|
17
18
|
// Cache apps list and no params modules results
|
|
18
19
|
const appsCache = {};
|
|
@@ -46,6 +47,9 @@ async function runModule(
|
|
|
46
47
|
appId
|
|
47
48
|
&& (typeof appId === 'number' || (typeof appId === 'string' && /^\d+$/.test(appId)))
|
|
48
49
|
) {
|
|
50
|
+
if (typeof appId === 'string') {
|
|
51
|
+
appId = parseInt(appId, 10);
|
|
52
|
+
}
|
|
49
53
|
canCache = false;
|
|
50
54
|
listAppsParams.app_id = appId;
|
|
51
55
|
listAppsParams.limit = 1;
|
|
@@ -18,7 +18,9 @@ export default (req: Request, res: Response) => {
|
|
|
18
18
|
if (url.endsWith('.json')) {
|
|
19
19
|
url = url.slice(0, -5);
|
|
20
20
|
}
|
|
21
|
+
[url] = url.split('?');
|
|
21
22
|
const modName = url.split('/')[1];
|
|
23
|
+
|
|
22
24
|
const sendSchema = (isResponseSchema = false) => {
|
|
23
25
|
return res.status(200)
|
|
24
26
|
.setHeader('Cache-Control', 'public, max-age=3600')
|
|
@@ -41,11 +43,11 @@ export default (req: Request, res: Response) => {
|
|
|
41
43
|
if (schemas[modName]) {
|
|
42
44
|
const { params: schema, response: responseSchema } = schemas[modName];
|
|
43
45
|
if (!schema.$schema) {
|
|
44
|
-
schema.$schema = 'http://json-schema.org/draft-
|
|
46
|
+
schema.$schema = 'http://json-schema.org/draft-07/schema#';
|
|
45
47
|
schema.title = `Module \`${modName}\`: Params model`;
|
|
46
48
|
}
|
|
47
49
|
if (!responseSchema.$schema) {
|
|
48
|
-
responseSchema.$schema = 'http://json-schema.org/draft-
|
|
50
|
+
responseSchema.$schema = 'http://json-schema.org/draft-07/schema#';
|
|
49
51
|
responseSchema.title = `Module \`${modName}\`: App response model`;
|
|
50
52
|
}
|
|
51
53
|
if (url === `/${modName}/schema`) {
|
|
@@ -55,7 +57,7 @@ export default (req: Request, res: Response) => {
|
|
|
55
57
|
return sendSchema(true);
|
|
56
58
|
}
|
|
57
59
|
if (url === `/${modName}`) {
|
|
58
|
-
return handleModule(modName, schema, responseSchema, req, res);
|
|
60
|
+
return handleModule(modName, schema, responseSchema, req, res)[method]();
|
|
59
61
|
}
|
|
60
62
|
}
|
|
61
63
|
return res.sendStatus(404);
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { join as joinPath } from 'path';
|
|
2
2
|
import { readFile } from 'fs/promises';
|
|
3
3
|
|
|
4
|
-
const { STOREFRONT_BASE_DIR
|
|
4
|
+
const { STOREFRONT_BASE_DIR } = process.env;
|
|
5
5
|
const baseDir = STOREFRONT_BASE_DIR || process.cwd();
|
|
6
6
|
const clientRoot = new URL(joinPath(baseDir, 'dist/client/'), import.meta.url);
|
|
7
|
-
const isLongCache = String(STOREFRONT_LONG_CACHE).toLowerCase() === 'true';
|
|
8
7
|
|
|
9
8
|
export default (req, res) => {
|
|
10
9
|
const url = req.url.replace(/\?.*$/, '').replace(/\.html$/, '');
|
|
@@ -14,32 +13,16 @@ export default (req, res) => {
|
|
|
14
13
|
.set('Cache-Control', (typeof global.cache_control === 'function' && global.cache_control(status))
|
|
15
14
|
|| defaultCache);
|
|
16
15
|
};
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
sMaxAge *= 10;
|
|
21
|
-
}
|
|
22
|
-
let cacheControl = `public, max-age=30, s-maxage=${sMaxAge}`;
|
|
23
|
-
if (status === 302) {
|
|
24
|
-
cacheControl += ', proxy-revalidate';
|
|
25
|
-
}
|
|
26
|
-
setStatusAndCache(status, cacheControl)
|
|
27
|
-
.set('Location', toUrl).end();
|
|
28
|
-
};
|
|
29
|
-
const fallback = (status = 404) => {
|
|
30
|
-
const is404 = status === 404;
|
|
31
|
-
if (is404 && url.slice(-1) === '/') {
|
|
32
|
-
redirect(url.slice(0, -1));
|
|
33
|
-
} else if (url !== `/${status}` && (/\/[^/.]+$/.test(url) || /\.x?html$/.test(url))) {
|
|
34
|
-
setStatusAndCache(status, `public, max-age=${(isLongCache ? 120 : 30)}`)
|
|
16
|
+
const fallback = (err, status = 500) => {
|
|
17
|
+
if (url !== '/fallback' && (/\/[^/.]+$/.test(url) || /\.x?html$/.test(url))) {
|
|
18
|
+
setStatusAndCache(status, 'public, max-age=120')
|
|
35
19
|
.send('<html><head>'
|
|
36
|
-
+
|
|
37
|
-
+
|
|
20
|
+
+ '<meta http-equiv="refresh" content="0; '
|
|
21
|
+
+ `url=/fallback?status=${status}&url=${encodeURIComponent(url)}"/>`
|
|
22
|
+
+ `</head><body>${err.toString()}</body></html>`);
|
|
38
23
|
} else {
|
|
39
|
-
setStatusAndCache(status,
|
|
40
|
-
|
|
41
|
-
: 'public, max-age=60, s-maxage=300')
|
|
42
|
-
.end();
|
|
24
|
+
setStatusAndCache(status, 'public, max-age=120, s-maxage=600')
|
|
25
|
+
.send(err.toString());
|
|
43
26
|
}
|
|
44
27
|
};
|
|
45
28
|
/*
|
|
@@ -49,19 +32,17 @@ export default (req, res) => {
|
|
|
49
32
|
*/
|
|
50
33
|
global.ssr_handler(req, res, async (err) => {
|
|
51
34
|
if (err) {
|
|
52
|
-
res.set('X-SSR-Error', err.
|
|
53
|
-
fallback(
|
|
35
|
+
res.set('X-SSR-Error', err.message);
|
|
36
|
+
fallback(err);
|
|
54
37
|
return;
|
|
55
38
|
}
|
|
56
39
|
const local = new URL(`.${url}`, clientRoot);
|
|
57
40
|
try {
|
|
58
41
|
const data = await readFile(local);
|
|
59
|
-
setStatusAndCache(200,
|
|
60
|
-
? 'public, max-age=60, s-maxage=604800'
|
|
61
|
-
: 'public, max-age=60, s-maxage=600, stale-while-revalidate=2592000')
|
|
42
|
+
setStatusAndCache(200, 'public, max-age=60, s-maxage=600')
|
|
62
43
|
.send(data);
|
|
63
44
|
} catch {
|
|
64
|
-
fallback();
|
|
45
|
+
fallback(err, 404);
|
|
65
46
|
}
|
|
66
47
|
});
|
|
67
48
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve-storefront.js","sourceRoot":"","sources":["../../src/firebase/serve-storefront.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,
|
|
1
|
+
{"version":3,"file":"serve-storefront.js","sourceRoot":"","sources":["../../src/firebase/serve-storefront.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAC5C,MAAM,OAAO,GAAG,mBAAmB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AACrD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/E,eAAe,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAEhE,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,YAAoB,EAAE,EAAE;QACjE,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;aACtB,GAAG,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;aACtC,GAAG,CACF,eAAe,EACf,CAAC,OAAO,MAAM,CAAC,aAAa,KAAK,UAAU,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;eACvE,YAAY,CAClB,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE;QAC1C,IAAI,GAAG,KAAK,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;YAC3E,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,CAAC;iBAC7C,IAAI,CAAC,cAAc;kBAChB,yCAAyC;kBACvC,wBAAwB,MAAM,QAAQ,kBAAkB,CAAC,GAAG,CAAC,KAAK;kBACpE,gBAAgB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;SACvD;aAAM;YACL,iBAAiB,CAAC,MAAM,EAAE,mCAAmC,CAAC;iBAC3D,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SACzB;IACH,CAAC,CAAC;IAEF;;;;MAIE;IACF,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;QAC9C,IAAI,GAAG,EAAE;YACP,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACpC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACd,OAAO;SACR;QACD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI;YACF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnC,iBAAiB,CAAC,GAAG,EAAE,kCAAkC,CAAC;iBACvD,IAAI,CAAC,IAAI,CAAC,CAAC;SACf;QAAC,MAAM;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACpB;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -2,14 +2,9 @@ import type { Request, Response } from 'firebase-functions';
|
|
|
2
2
|
import { join as joinPath } from 'path';
|
|
3
3
|
import { readFile } from 'fs/promises';
|
|
4
4
|
|
|
5
|
-
const {
|
|
6
|
-
STOREFRONT_BASE_DIR,
|
|
7
|
-
STOREFRONT_LONG_CACHE,
|
|
8
|
-
} = process.env;
|
|
9
|
-
|
|
5
|
+
const { STOREFRONT_BASE_DIR } = process.env;
|
|
10
6
|
const baseDir = STOREFRONT_BASE_DIR || process.cwd();
|
|
11
7
|
const clientRoot = new URL(joinPath(baseDir, 'dist/client/'), import.meta.url);
|
|
12
|
-
const isLongCache = String(STOREFRONT_LONG_CACHE).toLowerCase() === 'true';
|
|
13
8
|
|
|
14
9
|
export default (req: Request, res: Response) => {
|
|
15
10
|
const url = req.url.replace(/\?.*$/, '').replace(/\.html$/, '');
|
|
@@ -24,33 +19,16 @@ export default (req: Request, res: Response) => {
|
|
|
24
19
|
);
|
|
25
20
|
};
|
|
26
21
|
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
sMaxAge *= 10;
|
|
31
|
-
}
|
|
32
|
-
let cacheControl = `public, max-age=30, s-maxage=${sMaxAge}`;
|
|
33
|
-
if (status === 302) {
|
|
34
|
-
cacheControl += ', proxy-revalidate';
|
|
35
|
-
}
|
|
36
|
-
setStatusAndCache(status, cacheControl)
|
|
37
|
-
.set('Location', toUrl).end();
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
const fallback = (status = 404) => {
|
|
41
|
-
const is404 = status === 404;
|
|
42
|
-
if (is404 && url.slice(-1) === '/') {
|
|
43
|
-
redirect(url.slice(0, -1));
|
|
44
|
-
} else if (url !== `/${status}` && (/\/[^/.]+$/.test(url) || /\.x?html$/.test(url))) {
|
|
45
|
-
setStatusAndCache(status, `public, max-age=${(isLongCache ? 120 : 30)}`)
|
|
22
|
+
const fallback = (err: any, status = 500) => {
|
|
23
|
+
if (url !== '/fallback' && (/\/[^/.]+$/.test(url) || /\.x?html$/.test(url))) {
|
|
24
|
+
setStatusAndCache(status, 'public, max-age=120')
|
|
46
25
|
.send('<html><head>'
|
|
47
|
-
+
|
|
48
|
-
|
|
26
|
+
+ '<meta http-equiv="refresh" content="0; '
|
|
27
|
+
+ `url=/fallback?status=${status}&url=${encodeURIComponent(url)}"/>`
|
|
28
|
+
+ `</head><body>${err.toString()}</body></html>`);
|
|
49
29
|
} else {
|
|
50
|
-
setStatusAndCache(status,
|
|
51
|
-
|
|
52
|
-
: 'public, max-age=60, s-maxage=300')
|
|
53
|
-
.end();
|
|
30
|
+
setStatusAndCache(status, 'public, max-age=120, s-maxage=600')
|
|
31
|
+
.send(err.toString());
|
|
54
32
|
}
|
|
55
33
|
};
|
|
56
34
|
|
|
@@ -61,19 +39,17 @@ export default (req: Request, res: Response) => {
|
|
|
61
39
|
*/
|
|
62
40
|
global.ssr_handler(req, res, async (err: any) => {
|
|
63
41
|
if (err) {
|
|
64
|
-
res.set('X-SSR-Error', err.
|
|
65
|
-
fallback(
|
|
42
|
+
res.set('X-SSR-Error', err.message);
|
|
43
|
+
fallback(err);
|
|
66
44
|
return;
|
|
67
45
|
}
|
|
68
46
|
const local = new URL(`.${url}`, clientRoot);
|
|
69
47
|
try {
|
|
70
48
|
const data = await readFile(local);
|
|
71
|
-
setStatusAndCache(200,
|
|
72
|
-
? 'public, max-age=60, s-maxage=604800'
|
|
73
|
-
: 'public, max-age=60, s-maxage=600, stale-while-revalidate=2592000')
|
|
49
|
+
setStatusAndCache(200, 'public, max-age=60, s-maxage=600')
|
|
74
50
|
.send(data);
|
|
75
51
|
} catch {
|
|
76
|
-
fallback();
|
|
52
|
+
fallback(err, 404);
|
|
77
53
|
}
|
|
78
54
|
});
|
|
79
55
|
};
|
|
@@ -4,6 +4,7 @@ import * as dotenv from 'dotenv';
|
|
|
4
4
|
import { defineConfig } from 'astro/config';
|
|
5
5
|
import node from '@astrojs/node';
|
|
6
6
|
import vue from '@astrojs/vue';
|
|
7
|
+
import image from '@astrojs/image';
|
|
7
8
|
import partytown from '@astrojs/partytown';
|
|
8
9
|
import prefetch from '@astrojs/prefetch';
|
|
9
10
|
import sitemap from '@astrojs/sitemap';
|
|
@@ -17,6 +18,7 @@ export default defineConfig({
|
|
|
17
18
|
adapter: node(),
|
|
18
19
|
integrations: [
|
|
19
20
|
vue(),
|
|
21
|
+
image(),
|
|
20
22
|
partytown(),
|
|
21
23
|
prefetch(),
|
|
22
24
|
sitemap(),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as w,c as j,a as g,t as k,b as T,F as x,o as N}from"./chunks/runtime-core.esm-bundler.a7337834.js";/* empty css */const v="modulepreload",M=function(r){return"/"+r},U={},D=function(c,a,d){return!a||a.length===0?c():Promise.all(a.map(u=>{if(u=M(u),u in U)return;U[u]=!0;const _=u.endsWith(".css"),y=_?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${y}`))return;const i=document.createElement("link");if(i.rel=_?"stylesheet":v,_||(i.as="script",i.crossOrigin=""),i.href=u,document.head.appendChild(i),_)return new Promise((E,A)=>{i.addEventListener("load",E),i.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${u}`)))})})).then(()=>c())};var C={exports:{}};function R(r){function c(e){return e!=="constructor"&&e!=="prototype"&&e!=="__proto__"}function a(e){let t=0;const n=e.length,o=new Array(n);for(t=0;t<n;++t)o[t]=m(e[t]);return o}function d(e){const t={},n=i(e);let o,s,l;for(o=0,s=n.length;o<s;++o)c(l=n[o])&&(t[l]=m(e[l]));return t}function u(e,t){const n=e.length,o=t.length;let s=0;const l=new Array(n+o);for(s=0;s<n;++s)l[s]=m(e[s]);for(s=0;s<o;++s)l[s+n]=m(t[s]);return l}const _=Object.prototype.propertyIsEnumerable;function y(e){const t=Object.keys(e),n=Object.getOwnPropertySymbols(e);for(let o=0,s=n.length;o<s;++o)_.call(e,n[o])&&t.push(n[o]);return t}const i=r&&r.symbols?y:Object.keys;function E(e){return typeof e=="object"&&e!==null&&!(e instanceof RegExp)&&!(e instanceof Date)}function A(e){return typeof e!="object"||e===null}function I(e){return typeof e!="object"||e===null||e instanceof RegExp||e instanceof Date}const L=r&&typeof r.mergeArray=="function"?r.mergeArray({clone:m,deepmerge:b,getKeys:i,isMergeableObject:E}):u;function m(e){return E(e)?Array.isArray(e)?a(e):d(e):e}function P(e,t){const n={},o=i(e),s=i(t);let l,h,f;for(l=0,h=o.length;l<h;++l)c(f=o[l])&&s.indexOf(f)===-1&&(n[f]=m(e[f]));for(l=0,h=s.length;l<h;++l)c(f=s[l])&&(f in e&&(o.indexOf(f)!==-1&&(n[f]=b(e[f],t[f])),!0)||(n[f]=m(t[f])));return n}function b(e,t){const n=Array.isArray(t),o=Array.isArray(e);return A(t)?t:I(e)?m(t):n&&o?L(e,t):n!==o?m(t):P(e,t)}function S(){switch(arguments.length){case 0:return{};case 1:return m(arguments[0]);case 2:return b(arguments[0],arguments[1])}let e;for(let t=0,n=arguments.length;t<n;++t)e=b(e,arguments[t]);return e}return r&&r.all?S:b}C.exports=R;C.exports.default=R;C.exports.deepmerge=R;const $="pt_br",B="BRL",Y="R$",F="BR",p={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0},K=C.exports(),O=globalThis.__cloudCommerce||{config:{}};globalThis.__cloudCommerce=O;const V={get(){return{lang:p.ECOM_LANG||$,currency:p.ECOM_CURRENCY||B,currencySymbol:p.ECOM_CURRENCY_SYMBOL||Y,countryCode:p.ECOM_COUNTRY_CODE||F,storeId:Number(p.ECOM_STORE_ID),...O.config}},set(r){O.config=K(O.config,r),r.storeId&&(p.ECOM_STORE_ID=r.storeId)}},G=async()=>{const{lang:r}=V.get();D(()=>Promise.resolve({}),[]),await Promise.all([D(()=>import("./chunks/index.esm.69f70489.js"),["chunks/index.esm.69f70489.js","chunks/index.esm2017.1194d1a1.js"]),new Promise((_,y)=>{const i=document.createElement("script");i.src=`https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth__${r}.js`,i.onload=_,i.onerror=y,i.async=!0,document.body.appendChild(i)})]);const{firebase:c,firebaseui:a}=window,d=new a.auth.AuthUI(c.auth());console.log(c.auth);const u={signInSuccessUrl:"<url-to-redirect-to-on-success>",signInOptions:[c.auth.EmailAuthProvider.PROVIDER_ID],tosUrl:"<your-tos-url>",privacyPolicyUrl:"<your-privacy-policy-url>"};d.start("#firebaseui-auth-container",u)},q={setup(){G();const r=w(0);return{count:r,add:()=>{r.value+=1},subtract:()=>{r.value-=1}}}},W=(r,c)=>{const a=r.__vccOpts||r;for(const[d,u]of c)a[d]=u;return a},z={class:"counter"},H={class:"counter-message"},J=g("div",{id:"firebaseui-auth-container"},null,-1);function Q(r,c,a,d,u,_){return N(),j(x,null,[g("div",z,[g("button",{onClick:c[0]||(c[0]=y=>d.subtract())},"-"),g("pre",null,k(d.count),1),g("button",{onClick:c[1]||(c[1]=y=>d.add())},"+")]),g("div",H,[T(r.$slots,"default")]),J],64)}const ee=W(q,[["render",Q]]);export{ee as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--astro-gradient: linear-gradient(0deg,#4F39FA, #DA62C4)}h1:where(.astro-
|
|
1
|
+
:root{--astro-gradient: linear-gradient(0deg,#4F39FA, #DA62C4)}h1:where(.astro-P5QKJ2WB){margin:2rem 0}main:where(.astro-P5QKJ2WB){margin:auto;padding:1em;max-width:60ch}.text-gradient:where(.astro-P5QKJ2WB){font-weight:900;background-image:var(--astro-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-size:100% 200%;background-position-y:100%;border-radius:.4rem;animation:pulse 4s ease-in-out infinite}@keyframes pulse{0%,to{background-position-y:0%}50%{background-position-y:80%}}.instructions:where(.astro-P5QKJ2WB){line-height:1.6;margin:1rem 0;background:#4F39FA;padding:1rem;border-radius:.4rem;color:var(--color-bg)}.instructions:where(.astro-P5QKJ2WB) code:where(.astro-P5QKJ2WB){font-size:.875em;border:.1em solid var(--color-border);border-radius:4px;padding:.15em .25em}.link-card-grid:where(.astro-P5QKJ2WB){display:grid;grid-template-columns:repeat(auto-fit,minmax(24ch,1fr));gap:1rem;padding:0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--font-size-base: clamp(1rem, .34vw + .91rem, 1.19rem);--font-size-lg: clamp(1.2rem, .7vw + 1.2rem, 1.5rem);--font-size-xl: clamp(2.44rem, 2.38vw + 1.85rem, 3.75rem);--color-text: hsl(12, 5%, 4%);--color-bg: hsl(10, 21%, 95%);--color-border: hsl(17, 24%, 90%)}html{font-family:system-ui,sans-serif;font-size:var(--font-size-base);color:var(--color-text);background-color:var(--color-bg)}body{margin:0}h1{font-size:var(--font-size-xl)}h2{font-size:var(--font-size-lg)}code{font-family:Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace}.counter{display:grid;font-size:2em;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:2em;place-items:center}.counter-message{text-align:center}.firebaseui-container{background-color:#fff;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;color:#000000de;direction:ltr;font:16px Roboto,arial,sans-serif;margin:0 auto;max-width:360px;overflow:visible;position:relative;text-align:left;width:100%}.firebaseui-container.mdl-card{overflow:visible}.firebaseui-card-header{padding:24px 24px 0}.firebaseui-card-content,.firebaseui-card-footer{padding:0 24px}.firebaseui-card-actions{box-sizing:border-box;display:table;font-size:14px;padding:8px 24px 24px;text-align:left;width:100%}.firebaseui-form-links{display:table-cell;vertical-align:middle;width:100%}.firebaseui-form-actions{display:table-cell;text-align:right;white-space:nowrap;width:100%}.firebaseui-title,.firebaseui-subtitle{color:#000000de;direction:ltr;font-size:20px;font-weight:500;line-height:24px;margin:0;padding:0;text-align:left}.firebaseui-title{padding-bottom:16px}.firebaseui-subtitle{margin:16px 0}.firebaseui-text{color:#000000de;direction:ltr;font-size:16px;line-height:24px;text-align:left}.firebaseui-id-page-password-recovery-email-sent p.firebaseui-text{margin:16px 0}.firebaseui-text-emphasis{font-weight:700}.firebaseui-error{color:#dd2c00;direction:ltr;font-size:12px;line-height:16px;margin:0;text-align:left}.firebaseui-text-input-error{margin:-16px 0 16px}.firebaseui-error-wrapper{min-height:16px}.firebaseui-list-item{direction:ltr;margin:0;padding:0;text-align:left}.firebaseui-hidden{display:none}.firebaseui-relative-wrapper{position:relative}.firebaseui-label{color:#0000008a;direction:ltr;font-size:16px;text-align:left}.mdl-textfield--floating-label.is-focused .mdl-textfield__label,.mdl-textfield--floating-label.is-dirty .mdl-textfield__label{color:#757575}.firebaseui-input,.firebaseui-input-invalid{border-radius:0;color:#000000de;direction:ltr;font-size:16px;width:100%}input.firebaseui-input,input.firebaseui-input-invalid{direction:ltr;text-align:left}.firebaseui-input-invalid{border-color:#dd2c00}.firebaseui-textfield{width:100%}.firebaseui-textfield.mdl-textfield .firebaseui-input{border-color:#0000001f}.firebaseui-textfield.mdl-textfield .firebaseui-label:after{background-color:#3f51b5}.firebaseui-textfield-invalid.mdl-textfield .firebaseui-input{border-color:#dd2c00}.firebaseui-textfield-invalid.mdl-textfield .firebaseui-label:after{background-color:#dd2c00}.firebaseui-button{display:inline-block;height:36px;margin-left:8px;min-width:88px}.firebaseui-link{color:#4285f4;font-variant:normal;font-weight:400;text-decoration:none}.firebaseui-link:hover{text-decoration:underline}.firebaseui-indent{margin-left:1em}.firebaseui-tos{color:#757575;direction:ltr;font-size:12px;line-height:16px;margin-bottom:24px;margin-top:0;text-align:left}.firebaseui-provider-sign-in-footer>.firebaseui-tos{text-align:center}.firebaseui-tos-list{list-style:none;text-align:right}.firebaseui-inline-list-item{display:inline-block;margin-left:5px;margin-right:5px}.firebaseui-page-provider-sign-in,.firebaseui-page-select-tenant{background:inherit}.firebaseui-idp-list,.firebaseui-tenant-list{list-style:none;margin:1em 0;padding:0}.firebaseui-idp-button,.firebaseui-tenant-button{direction:ltr;font-weight:500;height:auto;line-height:normal;max-width:220px;min-height:40px;padding:8px 16px;text-align:left;width:100%}.firebaseui-idp-list>.firebaseui-list-item,.firebaseui-tenant-list>.firebaseui-list-item{margin-bottom:15px;text-align:center}.firebaseui-idp-icon-wrapper{display:table-cell;vertical-align:middle}.firebaseui-idp-icon{border:none;display:inline-block;height:18px;vertical-align:middle;width:18px}.firebaseui-idp-favicon{border:none;display:inline-block;height:14px;margin-right:5px;vertical-align:middle;width:14px}.firebaseui-idp-text{color:#fff;display:table-cell;font-size:14px;padding-left:16px;text-transform:none;vertical-align:middle}.firebaseui-idp-text.firebaseui-idp-text-long{display:table-cell}.firebaseui-idp-text.firebaseui-idp-text-short{display:none}@media (max-width: 268px){.firebaseui-idp-text.firebaseui-idp-text-long{display:none}.firebaseui-idp-text.firebaseui-idp-text-short{display:table-cell}}@media (max-width: 320px){.firebaseui-recaptcha-container>div>div{transform:scale(.9);-webkit-transform:scale(.9);transform-origin:0 0;-webkit-transform-origin:0 0}}.firebaseui-idp-google>.firebaseui-idp-text{color:#757575}[data-provider-id="yahoo.com"]>.firebaseui-idp-icon-wrapper>.firebaseui-idp-icon{height:22px;width:22px}.firebaseui-info-bar{background-color:#f9edbe;border:1px solid #f0c36d;box-shadow:0 2px 4px #0003;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);-moz-box-shadow:0 2px 4px rgba(0,0,0,.2);left:10%;padding:8px 16px;position:absolute;right:10%;text-align:center;top:0}.firebaseui-info-bar-message{font-size:12px;margin:0}.firebaseui-dialog{box-sizing:border-box;color:#000000de;font:16px Roboto,arial,sans-serif;height:auto;max-height:fit-content;padding:24px;text-align:left}.firebaseui-dialog-icon-wrapper{display:table-cell;vertical-align:middle}.firebaseui-dialog-icon{float:left;height:40px;margin-right:24px;width:40px}.firebaseui-progress-dialog-message{display:table-cell;font-size:16px;font-weight:400;min-height:40px;vertical-align:middle}.firebaseui-progress-dialog-loading-icon{height:28px;margin:6px 30px 6px 6px;width:28px}.firebaseui-icon-done{background-image:url(https://www.gstatic.com/images/icons/material/system/2x/done_googgreen_36dp.png);background-position:center;background-repeat:no-repeat;background-size:36px 36px}.firebaseui-phone-number{display:flex}.firebaseui-country-selector{background-image:url(https://www.gstatic.com/images/icons/material/system/1x/arrow_drop_down_grey600_18dp.png);background-position:right center;background-repeat:no-repeat;background-size:18px auto;border-radius:0;border-bottom:1px solid rgba(0,0,0,.12);color:#000000de;flex-shrink:0;font-size:16px;font-weight:400;height:initial;line-height:normal;margin:20px 24px 20px 0;padding:4px 20px 4px 0;width:90px}.firebaseui-country-selector-flag{display:inline-block;margin-right:1ex}.firebaseui-flag{background-image:url(https://www.gstatic.com/firebasejs/ui/2.0.0/images/auth/flags_sprite_2x.png);background-size:100% auto;filter:drop-shadow(1px 1px 1px rgba(0,0,0,.54));height:14px;width:24px}.firebaseui-list-box-dialog{max-height:90%;overflow:auto;padding:8px 0 0}.firebaseui-list-box-actions{padding-bottom:8px}.firebaseui-list-box-icon-wrapper{display:table-cell;padding-right:24px;vertical-align:top}.firebaseui-list-box-label-wrapper{display:table-cell;vertical-align:top}.firebaseui-list-box-dialog-button{color:#000000de;direction:ltr;font-size:16px;font-weight:400;height:initial;line-height:normal;min-height:48px;padding:14px 24px;text-align:left;text-transform:none;width:100%}.firebaseui-phone-number-error{margin-left:114px}.mdl-progress.firebaseui-busy-indicator{height:2px;left:0;position:absolute;top:55px;width:100%}.mdl-spinner.firebaseui-busy-indicator{direction:initial;height:56px;left:0;margin:auto;position:absolute;right:0;top:30%;width:56px}.firebaseui-callback-indicator-container .firebaseui-busy-indicator{top:0}.firebaseui-callback-indicator-container{height:120px}.firebaseui-new-password-component{display:inline-block;position:relative;width:100%}.firebaseui-input-floating-button{background-position:center;background-repeat:no-repeat;display:block;height:24px;position:absolute;right:0;top:20px;width:24px}.firebaseui-input-toggle-on{background-image:url(https://www.gstatic.com/images/icons/material/system/1x/visibility_black_24dp.png)}.firebaseui-input-toggle-off{background-image:url(https://www.gstatic.com/images/icons/material/system/1x/visibility_off_black_24dp.png)}.firebaseui-input-toggle-focus{opacity:.87}.firebaseui-input-toggle-blur{opacity:.38}.firebaseui-recaptcha-wrapper{display:table;margin:0 auto;padding-bottom:8px}.firebaseui-recaptcha-container{display:table-cell}.firebaseui-recaptcha-error-wrapper{caption-side:bottom;display:table-caption}.firebaseui-change-phone-number-link{display:block}.firebaseui-resend-container{direction:ltr;margin:20px 0;text-align:center}.firebaseui-id-resend-countdown{color:#00000061}.firebaseui-id-page-phone-sign-in-start .firebaseui-form-actions div{float:left}@media (max-width: 480px){.firebaseui-container{box-shadow:none;max-width:none;width:100%}.firebaseui-card-header{border-bottom:1px solid #e0e0e0;margin-bottom:16px;padding:16px 24px 0}.firebaseui-title{padding-bottom:16px}.firebaseui-card-actions{padding-right:24px}.firebaseui-busy-indicator{top:0}}.mdl-textfield__label{font-weight:400;margin-bottom:0}.firebaseui-id-page-blank,.firebaseui-id-page-spinner{background:inherit;height:64px}.firebaseui-email-sent{background-image:url(https://www.gstatic.com/firebasejs/ui/2.0.0/images/auth/success_status.png);background-position:center;background-repeat:no-repeat;background-size:64px 64px;height:64px;margin-top:16px;text-align:center}.firebaseui-text-justify{text-align:justify}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--link-gradient: linear-gradient(45deg, #4F39FA, #DA62C4 30%, var(--color-border) 60%)}.link-card:where(.astro-ZCG72YVN){list-style:none;display:flex;padding:.15rem;background-image:var(--link-gradient);background-size:400%;border-radius:.5rem;background-position:100%;transition:background-position .6s cubic-bezier(.22,1,.36,1)}.link-card:where(.astro-ZCG72YVN)>a:where(.astro-ZCG72YVN){width:100%;text-decoration:none;line-height:1.4;padding:1em 1.3em;border-radius:.35rem;color:var(--text-color);background-color:#fff;opacity:.8}h2:where(.astro-ZCG72YVN){margin:0;transition:color .6s cubic-bezier(.22,1,.36,1)}p:where(.astro-ZCG72YVN){margin-top:.75rem;margin-bottom:0}h2:where(.astro-ZCG72YVN) span:where(.astro-ZCG72YVN){display:inline-block;transition:transform .3s cubic-bezier(.22,1,.36,1)}.link-card:where(.astro-ZCG72YVN):is(:hover,:focus-within){background-position:0}.link-card:where(.astro-ZCG72YVN):is(:hover,:focus-within) h2:where(.astro-ZCG72YVN){color:#4f39fa}.link-card:where(.astro-ZCG72YVN):is(:hover,:focus-within) h2:where(.astro-ZCG72YVN) span:where(.astro-ZCG72YVN){transform:translate(2px)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--astro-gradient: linear-gradient(0deg,#4F39FA, #DA62C4)}h1:where(.astro-
|
|
1
|
+
:root{--astro-gradient: linear-gradient(0deg,#4F39FA, #DA62C4)}h1:where(.astro-BZIQPEHV){margin:2rem 0}main:where(.astro-BZIQPEHV){margin:auto;padding:1em;max-width:60ch}.text-gradient:where(.astro-BZIQPEHV){font-weight:900;background-image:var(--astro-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-size:100% 200%;background-position-y:100%;border-radius:.4rem;animation:pulse 4s ease-in-out infinite}@keyframes pulse{0%,to{background-position-y:0%}50%{background-position-y:80%}}.instructions:where(.astro-BZIQPEHV){line-height:1.6;margin:1rem 0;background:#4F39FA;padding:1rem;border-radius:.4rem;color:var(--color-bg)}.instructions:where(.astro-BZIQPEHV) code:where(.astro-BZIQPEHV){font-size:.875em;border:.1em solid var(--color-border);border-radius:4px;padding:.15em .25em}.link-card-grid:where(.astro-BZIQPEHV){display:grid;grid-template-columns:repeat(auto-fit,minmax(24ch,1fr));gap:1rem;padding:0}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--astro-gradient: linear-gradient(0deg,#4F39FA, #DA62C4)}h1:where(.astro-
|
|
1
|
+
:root{--astro-gradient: linear-gradient(0deg,#4F39FA, #DA62C4)}h1:where(.astro-EBY2X3Y6){margin:2rem 0}main:where(.astro-EBY2X3Y6){margin:auto;padding:1em;max-width:60ch}.text-gradient:where(.astro-EBY2X3Y6){font-weight:900;background-image:var(--astro-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-size:100% 200%;background-position-y:100%;border-radius:.4rem;animation:pulse 4s ease-in-out infinite}@keyframes pulse{0%,to{background-position-y:0%}50%{background-position-y:80%}}.instructions:where(.astro-EBY2X3Y6){line-height:1.6;margin:1rem 0;background:#4F39FA;padding:1rem;border-radius:.4rem;color:var(--color-bg)}.instructions:where(.astro-EBY2X3Y6) code:where(.astro-EBY2X3Y6){font-size:.875em;border:.1em solid var(--color-border);border-radius:4px;padding:.15em .25em}.link-card-grid:where(.astro-EBY2X3Y6){display:grid;grid-template-columns:repeat(auto-fit,minmax(24ch,1fr));gap:1rem;padding:0}
|