all repos — caroster @ 3787acb16a60cda9229889e76c928f5f6af4f047

[Octree] Group carpool to your event https://caroster.io

✨ Add path with UUID to event pages #149
Tim Izzo tim@octree.ch
Fri, 25 Jun 2021 11:18:41 +0200
commit

3787acb16a60cda9229889e76c928f5f6af4f047

parent

c8aecf6e3de9336a00bdf30da7bcfde3f49a9cc2

M backend/.strapi-updater.jsonbackend/.strapi-updater.json

@@ -1,4 +1,5 @@

{ - "latest": "3.6.3", - "lastUpdateCheck": 1624258564986 + "latest": "3.6.5", + "lastUpdateCheck": 1624608897415, + "lastNotification": 1624609590685 }
M backend/api/car/models/car.settings.jsonbackend/api/car/models/car.settings.json

@@ -30,8 +30,8 @@ "details": {

"type": "text" }, "event": { - "model": "event", - "via": "cars" + "via": "cars", + "model": "event" }, "passengers": { "type": "json"
A backend/api/event/config/schema.graphql.js

@@ -0,0 +1,14 @@

+module.exports = { + query: ` + eventByUUID(uuid: String!): Event + `, + type: {}, + resolver: { + Query: { + eventByUUID: { + description: 'Retrieve an event using its UUID', + resolver: 'application::event.event.getByUUID', + }, + }, + }, +};
M backend/api/event/controllers/event.jsbackend/api/event/controllers/event.js

@@ -3,6 +3,12 @@

const {sanitizeEntity} = require('strapi-utils'); module.exports = { + async getByUUID(ctx) { + const {_uuid} = ctx.params; + const event = await strapi.services.event.findOne({uuid: _uuid}); + return sanitizeEntity(event, {model: strapi.models.event}); + }, + async create(ctx) { let event = ctx.request.body; const user = ctx.state.user;
M backend/api/event/models/event.jsbackend/api/event/models/event.js

@@ -1,18 +1,18 @@

'use strict'; const axios = require('axios'); const moment = require('moment'); +const uuid = require('uuid'); require('moment/locale/fr-ch'); const {STRAPI_URL = '', CAROSTER_TEMPLATEID_EVENTCREATION} = process.env; -/** - * Read the documentation (https://strapi.io/documentation/v3.x/concepts/models.html#lifecycle-hooks) - * to customize this model - */ - module.exports = { lifecycles: { async beforeCreate(event) { + if (!event.uuid) { + event.uuid = uuid.v4(); + } + // If user provides an address, get its lat/lng position using OSM API if (event.address) { const query = encodeURI(event.address);

@@ -50,6 +50,12 @@ );

} }, async beforeUpdate(params, event) { + const eventInDb = await strapi.services.event.findOne(params); + + if (!eventInDb.uuid) { + event.uuid = uuid.v4(); + } + if (event.address) { const query = encodeURI(event.address); try {
M backend/api/event/models/event.settings.jsonbackend/api/event/models/event.settings.json

@@ -2,11 +2,13 @@ {

"kind": "collectionType", "collectionName": "events", "info": { - "name": "event" + "name": "event", + "description": "" }, "options": { "increments": true, - "timestamps": true + "timestamps": true, + "draftAndPublish": false }, "attributes": { "name": {

@@ -37,6 +39,10 @@ "users": {

"via": "events", "plugin": "users-permissions", "collection": "user" + }, + "uuid": { + "type": "string", + "unique": true } } }
M backend/config/permissions.jsonbackend/config/permissions.json

@@ -10,7 +10,7 @@ "actions": ["create", "delete", "find", "findone", "update"]

}, { "name": "event", - "actions": ["create", "findone", "update"] + "actions": ["create", "findone", "update", "getbyuuid"] }, { "name": "page",

@@ -33,7 +33,7 @@ "actions": ["create", "delete", "find", "findone", "update"]

}, { "name": "event", - "actions": ["create", "findone", "update"] + "actions": ["create", "findone", "update", "getbyuuid"] }, { "name": "page",
M backend/extensions/users-permissions/models/User.settings.jsonbackend/extensions/users-permissions/models/User.settings.json

@@ -67,8 +67,8 @@ "plugin": "users-permissions",

"configurable": false }, "events": { - "collection": "event", "via": "users", + "collection": "event", "dominant": true }, "confirmationToken": {
M backend/package.jsonbackend/package.json

@@ -32,7 +32,8 @@ "strapi-plugin-graphql": "3.6.3",

"strapi-plugin-telemetree": "^0.1.0", "strapi-plugin-upload": "^3.6.3", "strapi-plugin-users-permissions": "3.6.3", - "strapi-utils": "3.6.3" + "strapi-utils": "3.6.3", + "uuid": "^8.3.2" }, "author": { "name": "A Strapi developer"
M ecosystem.config.jsecosystem.config.js

@@ -12,6 +12,8 @@ restart_delay: 10000,

max_restarts: 10, env: { PORT: 80, + STRAPI_LOG_LEVEL: "info", + STRAPI_LOG_FORCE_COLOR: false, }, }, {
M frontend/containers/DashboardEvents/EventCard.jsfrontend/containers/DashboardEvents/EventCard.js

@@ -27,7 +27,7 @@ {event.address || t('event.fields.empty')}

</Typography> </CardContent> <CardActions> - <Link href={`/e/${event.id}`}> + <Link href={`/e/${event.uuid}`}> <Button color="primary">{t('dashboard.actions.see_event')}</Button> </Link> </CardActions>
M frontend/generated/graphql.tsxfrontend/generated/graphql.tsx

@@ -202,6 +202,7 @@ date?: Maybe<Scalars['Date']>;

address?: Maybe<Scalars['String']>; position?: Maybe<Scalars['JSON']>; waiting_list?: Maybe<Scalars['JSON']>; + uuid?: Maybe<Scalars['String']>; cars?: Maybe<Array<Maybe<Car>>>; users?: Maybe<Array<Maybe<UsersPermissionsUser>>>; };

@@ -283,6 +284,12 @@ key?: Maybe<Scalars['DateTime']>;

connection?: Maybe<EventConnection>; }; +export type EventConnectionUuid = { + __typename?: 'EventConnectionUuid'; + key?: Maybe<Scalars['String']>; + connection?: Maybe<EventConnection>; +}; + export type EventConnectionWaiting_List = { __typename?: 'EventConnectionWaiting_list'; key?: Maybe<Scalars['JSON']>;

@@ -300,6 +307,7 @@ date?: Maybe<Array<Maybe<EventConnectionDate>>>;

address?: Maybe<Array<Maybe<EventConnectionAddress>>>; position?: Maybe<Array<Maybe<EventConnectionPosition>>>; waiting_list?: Maybe<Array<Maybe<EventConnectionWaiting_List>>>; + uuid?: Maybe<Array<Maybe<EventConnectionUuid>>>; }; export type EventInput = {

@@ -311,6 +319,7 @@ cars?: Maybe<Array<Maybe<Scalars['ID']>>>;

position?: Maybe<Scalars['JSON']>; waiting_list?: Maybe<Scalars['JSON']>; users?: Maybe<Array<Maybe<Scalars['ID']>>>; + uuid?: Maybe<Scalars['String']>; created_by?: Maybe<Scalars['ID']>; updated_by?: Maybe<Scalars['ID']>; };

@@ -365,7 +374,7 @@ };

-export type Morph = Dependency | Info | UsersPermissionsMe | UsersPermissionsMeRole | UsersPermissionsLoginPayload | UserPermissionsPasswordPayload | Car | CarConnection | CarAggregator | CarAggregatorSum | CarAggregatorAvg | CarAggregatorMin | CarAggregatorMax | CarGroupBy | CarConnectionId | CarConnectionCreated_At | CarConnectionUpdated_At | CarConnectionName | CarConnectionSeats | CarConnectionMeeting | CarConnectionDeparture | CarConnectionPhone_Number | CarConnectionDetails | CarConnectionEvent | CarConnectionPassengers | CreateCarPayload | UpdateCarPayload | DeleteCarPayload | Event | EventConnection | EventAggregator | EventGroupBy | EventConnectionId | EventConnectionCreated_At | EventConnectionUpdated_At | EventConnectionName | EventConnectionEmail | EventConnectionDate | EventConnectionAddress | EventConnectionPosition | EventConnectionWaiting_List | CreateEventPayload | UpdateEventPayload | DeleteEventPayload | Page | PageConnection | PageAggregator | PageGroupBy | PageConnectionId | PageConnectionCreated_At | PageConnectionUpdated_At | PageConnectionName | PageConnectionContent | PageConnectionType | CreatePagePayload | UpdatePagePayload | DeletePagePayload | Settings | UpdateSettingPayload | DeleteSettingPayload | UploadFile | UploadFileConnection | UploadFileAggregator | UploadFileAggregatorSum | UploadFileAggregatorAvg | UploadFileAggregatorMin | UploadFileAggregatorMax | UploadFileGroupBy | UploadFileConnectionId | UploadFileConnectionCreated_At | UploadFileConnectionUpdated_At | UploadFileConnectionName | UploadFileConnectionAlternativeText | UploadFileConnectionCaption | UploadFileConnectionWidth | UploadFileConnectionHeight | UploadFileConnectionFormats | UploadFileConnectionHash | UploadFileConnectionExt | UploadFileConnectionMime | UploadFileConnectionSize | UploadFileConnectionUrl | UploadFileConnectionPreviewUrl | UploadFileConnectionProvider | UploadFileConnectionProvider_Metadata | DeleteFilePayload | UsersPermissionsPermission | UsersPermissionsRole | UsersPermissionsRoleConnection | UsersPermissionsRoleAggregator | UsersPermissionsRoleGroupBy | UsersPermissionsRoleConnectionId | UsersPermissionsRoleConnectionName | UsersPermissionsRoleConnectionDescription | UsersPermissionsRoleConnectionType | CreateRolePayload | UpdateRolePayload | DeleteRolePayload | UsersPermissionsUser | UsersPermissionsUserConnection | UsersPermissionsUserAggregator | UsersPermissionsUserGroupBy | UsersPermissionsUserConnectionId | UsersPermissionsUserConnectionCreated_At | UsersPermissionsUserConnectionUpdated_At | UsersPermissionsUserConnectionUsername | UsersPermissionsUserConnectionFirstName | UsersPermissionsUserConnectionLastName | UsersPermissionsUserConnectionEmail | UsersPermissionsUserConnectionProvider | UsersPermissionsUserConnectionConfirmed | UsersPermissionsUserConnectionBlocked | UsersPermissionsUserConnectionRole | CreateUserPayload | UpdateUserPayload | DeleteUserPayload; +export type Morph = Dependency | Info | UsersPermissionsMe | UsersPermissionsMeRole | UsersPermissionsLoginPayload | UserPermissionsPasswordPayload | Car | CarConnection | CarAggregator | CarAggregatorSum | CarAggregatorAvg | CarAggregatorMin | CarAggregatorMax | CarGroupBy | CarConnectionId | CarConnectionCreated_At | CarConnectionUpdated_At | CarConnectionName | CarConnectionSeats | CarConnectionMeeting | CarConnectionDeparture | CarConnectionPhone_Number | CarConnectionDetails | CarConnectionEvent | CarConnectionPassengers | CreateCarPayload | UpdateCarPayload | DeleteCarPayload | Event | EventConnection | EventAggregator | EventGroupBy | EventConnectionId | EventConnectionCreated_At | EventConnectionUpdated_At | EventConnectionName | EventConnectionEmail | EventConnectionDate | EventConnectionAddress | EventConnectionPosition | EventConnectionWaiting_List | EventConnectionUuid | CreateEventPayload | UpdateEventPayload | DeleteEventPayload | Page | PageConnection | PageAggregator | PageGroupBy | PageConnectionId | PageConnectionCreated_At | PageConnectionUpdated_At | PageConnectionName | PageConnectionContent | PageConnectionType | CreatePagePayload | UpdatePagePayload | DeletePagePayload | Settings | UpdateSettingPayload | DeleteSettingPayload | UploadFile | UploadFileConnection | UploadFileAggregator | UploadFileAggregatorSum | UploadFileAggregatorAvg | UploadFileAggregatorMin | UploadFileAggregatorMax | UploadFileGroupBy | UploadFileConnectionId | UploadFileConnectionCreated_At | UploadFileConnectionUpdated_At | UploadFileConnectionName | UploadFileConnectionAlternativeText | UploadFileConnectionCaption | UploadFileConnectionWidth | UploadFileConnectionHeight | UploadFileConnectionFormats | UploadFileConnectionHash | UploadFileConnectionExt | UploadFileConnectionMime | UploadFileConnectionSize | UploadFileConnectionUrl | UploadFileConnectionPreviewUrl | UploadFileConnectionProvider | UploadFileConnectionProvider_Metadata | DeleteFilePayload | UsersPermissionsPermission | UsersPermissionsRole | UsersPermissionsRoleConnection | UsersPermissionsRoleAggregator | UsersPermissionsRoleGroupBy | UsersPermissionsRoleConnectionId | UsersPermissionsRoleConnectionName | UsersPermissionsRoleConnectionDescription | UsersPermissionsRoleConnectionType | CreateRolePayload | UpdateRolePayload | DeleteRolePayload | UsersPermissionsUser | UsersPermissionsUserConnection | UsersPermissionsUserAggregator | UsersPermissionsUserGroupBy | UsersPermissionsUserConnectionId | UsersPermissionsUserConnectionCreated_At | UsersPermissionsUserConnectionUpdated_At | UsersPermissionsUserConnectionUsername | UsersPermissionsUserConnectionFirstName | UsersPermissionsUserConnectionLastName | UsersPermissionsUserConnectionEmail | UsersPermissionsUserConnectionProvider | UsersPermissionsUserConnectionConfirmed | UsersPermissionsUserConnectionBlocked | UsersPermissionsUserConnectionRole | CreateUserPayload | UpdateUserPayload | DeleteUserPayload; export type Mutation = { __typename?: 'Mutation';

@@ -652,6 +661,7 @@ users?: Maybe<Array<Maybe<UsersPermissionsUser>>>;

usersConnection?: Maybe<UsersPermissionsUserConnection>; strapiInfo: Info; me?: Maybe<UsersPermissionsMe>; + eventByUUID?: Maybe<Event>; };

@@ -789,6 +799,11 @@ sort?: Maybe<Scalars['String']>;

limit?: Maybe<Scalars['Int']>; start?: Maybe<Scalars['Int']>; where?: Maybe<Scalars['JSON']>; +}; + + +export type QueryEventByUuidArgs = { + uuid: Scalars['String']; }; export type RoleInput = {

@@ -1402,6 +1417,7 @@ cars?: Maybe<Array<Maybe<Scalars['ID']>>>;

position?: Maybe<Scalars['JSON']>; waiting_list?: Maybe<Scalars['JSON']>; users?: Maybe<Array<Maybe<Scalars['ID']>>>; + uuid?: Maybe<Scalars['String']>; created_by?: Maybe<Scalars['ID']>; updated_by?: Maybe<Scalars['ID']>; };

@@ -1662,7 +1678,7 @@ );

export type EventFieldsFragment = ( { __typename?: 'Event' } - & Pick<Event, 'id' | 'name' | 'email' | 'date' | 'address' | 'position' | 'waiting_list'> + & Pick<Event, 'id' | 'uuid' | 'name' | 'email' | 'date' | 'address' | 'position' | 'waiting_list'> & { cars?: Maybe<Array<Maybe<( { __typename?: 'Car' } & Pick<Car, 'id' | 'name' | 'seats' | 'meeting' | 'departure' | 'details' | 'phone_number' | 'passengers'>

@@ -1718,6 +1734,19 @@ & EventFieldsFragment

)> } ); +export type EventByUuidQueryVariables = Exact<{ + uuid: Scalars['String']; +}>; + + +export type EventByUuidQuery = ( + { __typename?: 'Query' } + & { eventByUUID?: Maybe<( + { __typename?: 'Event' } + & EventFieldsFragment + )> } +); + export type SettingQueryVariables = Exact<{ [key: string]: never; }>;

@@ -1734,7 +1763,7 @@ { __typename?: 'UsersPermissionsUser' }

& Pick<UsersPermissionsUser, 'id' | 'username' | 'email' | 'confirmed' | 'lastName' | 'firstName'> & { events?: Maybe<Array<Maybe<( { __typename?: 'Event' } - & Pick<Event, 'id' | 'name' | 'date' | 'address'> + & Pick<Event, 'id' | 'uuid' | 'name' | 'date' | 'address'> )>>> } );

@@ -1796,6 +1825,7 @@ `;

export const EventFieldsFragmentDoc = gql` fragment EventFields on Event { id + uuid name email date

@@ -1824,6 +1854,7 @@ lastName

firstName events { id + uuid name date address

@@ -2187,6 +2218,39 @@ }

export type EventQueryHookResult = ReturnType<typeof useEventQuery>; export type EventLazyQueryHookResult = ReturnType<typeof useEventLazyQuery>; export type EventQueryResult = Apollo.QueryResult<EventQuery, EventQueryVariables>; +export const EventByUuidDocument = gql` + query eventByUUID($uuid: String!) { + eventByUUID(uuid: $uuid) { + ...EventFields + } +} + ${EventFieldsFragmentDoc}`; + +/** + * __useEventByUuidQuery__ + * + * To run a query within a React component, call `useEventByUuidQuery` and pass it any options that fit your needs. + * When your component renders, `useEventByUuidQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useEventByUuidQuery({ + * variables: { + * uuid: // value for 'uuid' + * }, + * }); + */ +export function useEventByUuidQuery(baseOptions: Apollo.QueryHookOptions<EventByUuidQuery, EventByUuidQueryVariables>) { + return Apollo.useQuery<EventByUuidQuery, EventByUuidQueryVariables>(EventByUuidDocument, baseOptions); + } +export function useEventByUuidLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<EventByUuidQuery, EventByUuidQueryVariables>) { + return Apollo.useLazyQuery<EventByUuidQuery, EventByUuidQueryVariables>(EventByUuidDocument, baseOptions); + } +export type EventByUuidQueryHookResult = ReturnType<typeof useEventByUuidQuery>; +export type EventByUuidLazyQueryHookResult = ReturnType<typeof useEventByUuidLazyQuery>; +export type EventByUuidQueryResult = Apollo.QueryResult<EventByUuidQuery, EventByUuidQueryVariables>; export const SettingDocument = gql` query setting { setting {
M frontend/graphql/event.gqlfrontend/graphql/event.gql

@@ -1,5 +1,6 @@

fragment EventFields on Event { id + uuid name email date

@@ -46,3 +47,9 @@ event(id: $id) {

...EventFields } } + +query eventByUUID($uuid: String!) { + eventByUUID(uuid: $uuid) { + ...EventFields + } +}
M frontend/graphql/user.gqlfrontend/graphql/user.gql

@@ -7,6 +7,7 @@ lastName

firstName events { id + uuid name date address
M frontend/pages/e/[eventId].tsxfrontend/pages/e/[uuid].tsx

@@ -12,15 +12,15 @@ import ErrorPage from '../_error';

import { useUpdateEventMutation, Event as EventType, - useEventQuery, - EventDocument, + useEventByUuidQuery, + EventByUuidDocument, } from '../../generated/graphql'; import useEventStore from '../../stores/useEventStore'; import Loading from '../../containers/Loading'; interface Props { event: EventType; - eventId: string; + eventUUID: string; } const EventPage = props => {

@@ -33,7 +33,7 @@ return <Event {...props} />;

}; const Event = (props: Props) => { - const {eventId} = props; + const {eventUUID} = props; const {t} = useTranslation(); const addToast = useToastStore(s => s.addToast); const setEvent = useEventStore(s => s.setEvent);

@@ -42,8 +42,8 @@ const setIsEditing = useEventStore(s => s.setIsEditing);

const [updateEvent] = useUpdateEventMutation(); const [isAddToMyEvent, setIsAddToMyEvent] = useState(false); const [openNewCar, toggleNewCar] = useReducer(i => !i, false); - const {data: {event} = {}, loading} = useEventQuery({ - variables: {id: eventId}, + const {data: {eventByUUID: event} = {}} = useEventByUuidQuery({ + variables: {uuid: eventUUID}, }); useEffect(() => {

@@ -106,19 +106,19 @@ );

}; export async function getServerSideProps(ctx) { - const {eventId} = ctx.query; + const {uuid} = ctx.query; const apolloClient = initializeApollo(); const {data = {}} = await apolloClient.query({ - query: EventDocument, - variables: {id: eventId}, + query: EventByUuidDocument, + variables: {uuid}, }); - const {event} = data; + const {eventByUUID: event} = data; const {host = ''} = ctx.req.headers; return { props: { event, - eventId, + eventUUID: uuid, metas: { title: event?.name || '', url: `https://${host}${ctx.resolvedUrl}`,
M frontend/public/sw.js.mapfrontend/public/sw.js.map

@@ -1,1 +1,1 @@

-{"version":3,"file":"sw.js","sources":["../../../../../tmp/db63c0432e66f78ce19a0a187cc9beba/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/home/tim/Projets/caroster/frontend/node_modules/workbox-routing/registerRoute.mjs';\nimport {NetworkFirst as workbox_strategies_NetworkFirst} from '/home/tim/Projets/caroster/frontend/node_modules/workbox-strategies/NetworkFirst.mjs';\nimport {NetworkOnly as workbox_strategies_NetworkOnly} from '/home/tim/Projets/caroster/frontend/node_modules/workbox-strategies/NetworkOnly.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from '/home/tim/Projets/caroster/frontend/node_modules/workbox-core/clientsClaim.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\nimportScripts(\n \n);\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n\nworkbox_routing_registerRoute(\"/\", new workbox_strategies_NetworkFirst({ \"cacheName\":\"start-url\", plugins: [{ cacheWillUpdate: async ({request, response, event, state}) => { if (response && response.type === 'opaqueredirect') { return new Response(response.body, {status: 200, statusText: 'OK', headers: response.headers}); } return response; } }] }), 'GET');\nworkbox_routing_registerRoute(/.*/i, new workbox_strategies_NetworkOnly({ \"cacheName\":\"dev\", plugins: [] }), 'GET');\n\n\n\n\n"],"names":["importScripts","self","skipWaiting","workbox_core_clientsClaim","workbox_routing_registerRoute","workbox_strategies_NetworkFirst","plugins","cacheWillUpdate","request","response","event","state","type","Response","body","status","statusText","headers","workbox_strategies_NetworkOnly"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGyI;EACzI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGAA,aAAa;EAUbC,IAAI,CAACC,WAAL;AAEAC,sBAAyB;AAIzBC,uBAA6B,CAAC,GAAD,EAAM,IAAIC,oBAAJ,CAAoC;EAAE,eAAY,WAAd;EAA2BC,EAAAA,OAAO,EAAE,CAAC;EAAEC,IAAAA,eAAe,EAAE,OAAO;EAACC,MAAAA,OAAD;EAAUC,MAAAA,QAAV;EAAoBC,MAAAA,KAApB;EAA2BC,MAAAA;EAA3B,KAAP,KAA6C;EAAE,UAAIF,QAAQ,IAAIA,QAAQ,CAACG,IAAT,KAAkB,gBAAlC,EAAoD;EAAE,eAAO,IAAIC,QAAJ,CAAaJ,QAAQ,CAACK,IAAtB,EAA4B;EAACC,UAAAA,MAAM,EAAE,GAAT;EAAcC,UAAAA,UAAU,EAAE,IAA1B;EAAgCC,UAAAA,OAAO,EAAER,QAAQ,CAACQ;EAAlD,SAA5B,CAAP;EAAiG;;EAAC,aAAOR,QAAP;EAAkB;EAA5O,GAAD;EAApC,CAApC,CAAN,EAAmU,KAAnU,CAA7B;AACAL,uBAA6B,CAAC,KAAD,EAAQ,IAAIc,mBAAJ,CAAmC;EAAE,eAAY,KAAd;EAAqBZ,EAAAA,OAAO,EAAE;EAA9B,CAAnC,CAAR,EAAgF,KAAhF,CAA7B;;"}+{"version":3,"file":"sw.js","sources":["../../../../../tmp/ddf820028714500c64f43f877ffaea3f/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/home/tim/Projets/caroster/frontend/node_modules/workbox-routing/registerRoute.mjs';\nimport {NetworkFirst as workbox_strategies_NetworkFirst} from '/home/tim/Projets/caroster/frontend/node_modules/workbox-strategies/NetworkFirst.mjs';\nimport {NetworkOnly as workbox_strategies_NetworkOnly} from '/home/tim/Projets/caroster/frontend/node_modules/workbox-strategies/NetworkOnly.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from '/home/tim/Projets/caroster/frontend/node_modules/workbox-core/clientsClaim.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\nimportScripts(\n \n);\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n\nworkbox_routing_registerRoute(\"/\", new workbox_strategies_NetworkFirst({ \"cacheName\":\"start-url\", plugins: [{ cacheWillUpdate: async ({request, response, event, state}) => { if (response && response.type === 'opaqueredirect') { return new Response(response.body, {status: 200, statusText: 'OK', headers: response.headers}); } return response; } }] }), 'GET');\nworkbox_routing_registerRoute(/.*/i, new workbox_strategies_NetworkOnly({ \"cacheName\":\"dev\", plugins: [] }), 'GET');\n\n\n\n\n"],"names":["importScripts","self","skipWaiting","workbox_core_clientsClaim","workbox_routing_registerRoute","workbox_strategies_NetworkFirst","plugins","cacheWillUpdate","request","response","event","state","type","Response","body","status","statusText","headers","workbox_strategies_NetworkOnly"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGyI;EACzI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAGAA,aAAa;EAUbC,IAAI,CAACC,WAAL;AAEAC,sBAAyB;AAIzBC,uBAA6B,CAAC,GAAD,EAAM,IAAIC,oBAAJ,CAAoC;EAAE,eAAY,WAAd;EAA2BC,EAAAA,OAAO,EAAE,CAAC;EAAEC,IAAAA,eAAe,EAAE,OAAO;EAACC,MAAAA,OAAD;EAAUC,MAAAA,QAAV;EAAoBC,MAAAA,KAApB;EAA2BC,MAAAA;EAA3B,KAAP,KAA6C;EAAE,UAAIF,QAAQ,IAAIA,QAAQ,CAACG,IAAT,KAAkB,gBAAlC,EAAoD;EAAE,eAAO,IAAIC,QAAJ,CAAaJ,QAAQ,CAACK,IAAtB,EAA4B;EAACC,UAAAA,MAAM,EAAE,GAAT;EAAcC,UAAAA,UAAU,EAAE,IAA1B;EAAgCC,UAAAA,OAAO,EAAER,QAAQ,CAACQ;EAAlD,SAA5B,CAAP;EAAiG;;EAAC,aAAOR,QAAP;EAAkB;EAA5O,GAAD;EAApC,CAApC,CAAN,EAAmU,KAAnU,CAA7B;AACAL,uBAA6B,CAAC,KAAD,EAAQ,IAAIc,mBAAJ,CAAmC;EAAE,eAAY,KAAd;EAAqBZ,EAAAA,OAAO,EAAE;EAA9B,CAAnC,CAAR,EAAgF,KAAhF,CAA7B;;"}