diff --git a/src/__tests__/alchemyApiDeserializer.spec.ts b/src/__tests__/alchemyApiDeserializer.spec.ts deleted file mode 100644 index f922a62..0000000 --- a/src/__tests__/alchemyApiDeserializer.spec.ts +++ /dev/null @@ -1,516 +0,0 @@ -import { deserializePage, deserializePages } from "../alchemyApiDeserializer" -import { describe, expect, it } from "vitest" - -describe("deserializePage", () => { - it("does not return any deprecated elements for single page", () => { - const pageData = { - data: { - type: "page", - id: "1", - attributes: { - name: "Homepage" - }, - relationships: { - elements: { - data: [ - { - type: "element", - id: "1" - }, - { - type: "element", - id: "2" - } - ] - } - } - }, - included: [ - { - type: "element", - id: "1", - attributes: { - name: "article", - deprecated: false - }, - relationships: { - essences: { - data: [ - { - id: "1", - type: "essence_text" - }, - { - id: "1", - type: "essence_picture" - } - ] - }, - nested_elements: { - data: [ - { - id: "3", - type: "element" - }, - { - id: "4", - type: "element" - } - ] - } - } - }, - { - type: "element", - id: "2", - attributes: { - name: "old", - deprecated: true - }, - relationships: {} - }, - { - type: "element", - id: "3", - attributes: { - name: "image", - deprecated: true - }, - relationships: {} - }, - { - type: "element", - id: "4", - attributes: { - name: "text", - deprecated: false - }, - relationships: {} - }, - { - type: "essence_text", - id: "1", - attributes: { - name: "text", - deprecated: true - } - }, - { - type: "essence_picture", - id: "1", - attributes: { - name: "image", - deprecated: false - } - } - ] - } - const page = deserializePage(pageData) - expect(page.elements).toEqual([ - { - id: "1", - name: "article", - deprecated: false, - essences: [ - { - id: "1", - name: "image", - deprecated: false - } - ], - nested_elements: [ - { - id: "4", - name: "text", - deprecated: false - } - ] - } - ]) - }) - - it("does not return any deprecated elements for single page with camelCased attributes", () => { - const pageData = { - data: { - type: "page", - id: "1", - attributes: { - name: "Homepage" - }, - relationships: { - elements: { - data: [ - { - type: "element", - id: "1" - }, - { - type: "element", - id: "2" - } - ] - } - } - }, - included: [ - { - type: "element", - id: "1", - attributes: { - name: "article", - deprecated: false - }, - relationships: { - essences: { - data: [ - { - id: "1", - type: "essence_text" - }, - { - id: "1", - type: "essence_picture" - } - ] - }, - nestedElements: { - data: [ - { - id: "3", - type: "element" - }, - { - id: "4", - type: "element" - } - ] - } - } - }, - { - type: "element", - id: "2", - attributes: { - name: "old", - deprecated: true - }, - relationships: {} - }, - { - type: "element", - id: "3", - attributes: { - name: "image", - deprecated: true - }, - relationships: {} - }, - { - type: "element", - id: "4", - attributes: { - name: "text", - deprecated: false - }, - relationships: {} - }, - { - type: "essence_text", - id: "1", - attributes: { - name: "text", - deprecated: true - } - }, - { - type: "essence_picture", - id: "1", - attributes: { - name: "image", - deprecated: false - } - } - ] - } - const page = deserializePage(pageData) - expect(page.elements).toEqual([ - { - id: "1", - name: "article", - deprecated: false, - essences: [ - { - id: "1", - name: "image", - deprecated: false - } - ], - nestedElements: [ - { - id: "4", - name: "text", - deprecated: false - } - ] - } - ]) - }) - - it("does not return any deprecated elements for pages", () => { - const pageData = { - data: [ - { - type: "page", - id: "1", - attributes: { - name: "Homepage" - }, - relationships: { - elements: { - data: [ - { - type: "element", - id: "1" - }, - { - type: "element", - id: "2" - } - ] - } - } - } - ], - included: [ - { - type: "element", - id: "1", - attributes: { - name: "article", - deprecated: false - }, - relationships: { - essences: { - data: [ - { - id: "1", - type: "essence_text" - }, - { - id: "1", - type: "essence_picture" - } - ] - }, - nested_elements: { - data: [ - { - id: "3", - type: "element" - }, - { - id: "4", - type: "element" - } - ] - } - } - }, - { - type: "element", - id: "2", - attributes: { - name: "old", - deprecated: true - }, - relationships: {} - }, - { - type: "element", - id: "3", - attributes: { - name: "image", - deprecated: true - }, - relationships: {} - }, - { - type: "element", - id: "4", - attributes: { - name: "text", - deprecated: false - }, - relationships: {} - }, - { - type: "essence_text", - id: "1", - attributes: { - name: "text", - deprecated: true - } - }, - { - type: "essence_picture", - id: "1", - attributes: { - name: "image", - deprecated: false - } - } - ] - } - const pages = deserializePages(pageData) - expect(pages[0].elements).toEqual([ - { - id: "1", - name: "article", - deprecated: false, - essences: [ - { - id: "1", - name: "image", - deprecated: false - } - ], - nested_elements: [ - { - id: "4", - name: "text", - deprecated: false - } - ] - } - ]) - }) - - it("does not return any deprecated elements for pages with camelCased attributes", () => { - const pageData = { - data: [ - { - type: "page", - id: "1", - attributes: { - name: "Homepage" - }, - relationships: { - elements: { - data: [ - { - type: "element", - id: "1" - }, - { - type: "element", - id: "2" - } - ] - } - } - } - ], - included: [ - { - type: "element", - id: "1", - attributes: { - name: "article", - deprecated: false - }, - relationships: { - essences: { - data: [ - { - id: "1", - type: "essence_text" - }, - { - id: "1", - type: "essence_picture" - } - ] - }, - nestedElements: { - data: [ - { - id: "3", - type: "element" - }, - { - id: "4", - type: "element" - } - ] - } - } - }, - { - type: "element", - id: "2", - attributes: { - name: "old", - deprecated: true - }, - relationships: {} - }, - { - type: "element", - id: "3", - attributes: { - name: "image", - deprecated: true - }, - relationships: {} - }, - { - type: "element", - id: "4", - attributes: { - name: "text", - deprecated: false - }, - relationships: {} - }, - { - type: "essence_text", - id: "1", - attributes: { - name: "text", - deprecated: true - } - }, - { - type: "essence_picture", - id: "1", - attributes: { - name: "image", - deprecated: false - } - } - ] - } - const pages = deserializePages(pageData) - expect(pages[0].elements).toEqual([ - { - id: "1", - name: "article", - deprecated: false, - essences: [ - { - id: "1", - name: "image", - deprecated: false - } - ], - nestedElements: [ - { - id: "4", - name: "text", - deprecated: false - } - ] - } - ]) - }) -}) diff --git a/src/alchemyApiDeserializer.ts b/src/alchemyApiDeserializer.ts deleted file mode 100644 index c70d505..0000000 --- a/src/alchemyApiDeserializer.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { deserialize } from "./deserialize" - -// Recursively filters all deprecated elements and essences from collection -function filterDeprecatedElements(elements: any) { - const els: any = [] - - elements.forEach((element: any) => { - if (element.nested_elements?.length > 0) { - element.nested_elements = filterDeprecatedElements( - element.nested_elements - ) - } - if (element.nestedElements?.length > 0) { - element.nestedElements = filterDeprecatedElements(element.nestedElements) - } - if (element.essences?.length > 0) { - element.essences = element.essences.filter((essence: any) => { - return !essence.deprecated - }) - } - if (!element.deprecated) { - els.push(element) - } - }) - - return els -} - -// Returns deserialized page without deprecated content -export function deserializePage(pageData: any) { - const page = deserialize(pageData) - page.elements = filterDeprecatedElements(page.elements) - return page -} - -// Returns deserialized pages without deprecated content -export function deserializePages(pagesData: any) { - const pages = deserialize(pagesData) - pages.forEach((page: any) => { - page.elements = filterDeprecatedElements(page.elements) - }) - return pages -} diff --git a/src/main.ts b/src/main.ts index 4833862..05b9ac4 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,2 +1 @@ -export * from "./alchemyApiDeserializer" export * from "./deserialize"