Sfoglia il codice sorgente

Merge branch 'hotfix/fix_hydra_normalizer'

Olivier Massot 2 mesi fa
parent
commit
85147867cb
2 ha cambiato i file con 16 aggiunte e 12 eliminazioni
  1. 6 0
      nuxt.config.ts
  2. 10 12
      services/data/normalizer/hydraNormalizer.ts

+ 6 - 0
nuxt.config.ts

@@ -26,6 +26,12 @@ if (process.env.NUXT_ENV === 'dev') {
  */
 export default defineNuxtConfig({
   ssr: true,
+
+  experimental: {
+    // Fix the 'Cannot stringify non POJO' bug
+    // @see https://github.com/nuxt/nuxt/issues/20787
+    renderJsonPayloads: false,
+  },
   routeRules: {
     // all routes will be generated at build time and cached permanently
     '/**': { prerender: true },

+ 10 - 12
services/data/normalizer/hydraNormalizer.ts

@@ -57,8 +57,8 @@ class HydraNormalizer {
     hydraData: AnyJson,
     model?: typeof ApiResource
   ): AnyJson {
-    if (hydraData['@type'] === 'hydra:Collection') {
-      const members = hydraData['hydra:member']
+    if (hydraData['@type'] === 'Collection') {
+      const members = hydraData.member
       return members.map((item: AnyJson) =>
         HydraNormalizer.denormalizeItem(item, model)
       )
@@ -74,32 +74,30 @@ class HydraNormalizer {
    * @protected
    */
   protected static getMetadata(data: AnyJson): HydraMetadata {
-    if (data['@type'] !== 'hydra:Collection') {
+    if (data['@type'] !== 'Collection') {
       // A single item, no metadata
       return { type: METADATA_TYPE.ITEM }
     }
 
     const metadata: HydraMetadata = {
-      totalItems: data['hydra:totalItems'],
+      totalItems: data.totalItems,
     }
 
-    if (data['hydra:view']) {
+    if (data.view) {
       /**
-       * Extract the page number from the IRIs in the hydra:view section
+       * Extract the page number from the IRIs in the view section
        */
       const extractPageNumber = (
         pos: string,
         default_: number | undefined = undefined
       ): number | undefined => {
-        const iri = data['hydra:view']['hydra:' + pos]
+        const iri = data.view['' + pos]
         if (!iri) {
           return default_
         }
-        return UrlUtils.getParameter(
-          data['hydra:view']['hydra:' + pos],
-          'page',
-          default_
-        ) as number | undefined
+        return UrlUtils.getParameter(data.view['' + pos], 'page', default_) as
+          | number
+          | undefined
       }
 
       // TODO: utile d'ajouter la page en cours?