From 783ef8e7c3cfec73635636084f4884c13cbbfd5f Mon Sep 17 00:00:00 2001 From: David Ball Date: Sun, 25 Aug 2024 17:35:58 -0400 Subject: [PATCH] Migrated to release candidate Squidex SDK --- astro.config.mjs | 4 +- .../catalog/amazon/amazon-append-images.ts | 8 +- src/apps/catalog/common/catalog-helpers.ts | 77 +++++++++---------- src/data/api-client.ts | 9 +-- src/data/core/client.ts | 13 ++-- src/data/internals/ContentDtoT.ts | 6 +- src/data/internals/ContentsDtoT.ts | 4 +- src/pages/404.astro | 4 +- src/pages/[...routeLookup].astro | 9 ++- src/pages/view/brands/[...brandLookup].astro | 6 +- .../marketplaces/[...marketplaceLookup].astro | 6 +- src/pages/view/pages/[...pageLookup].astro | 6 +- .../[...productCategoryLookup].astro | 6 +- .../view/products/[...productLookup].astro | 6 +- .../view/sellers/[...sellerLookup].astro | 6 +- 15 files changed, 82 insertions(+), 88 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index 192d181..17ae452 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -44,7 +44,7 @@ export default defineConfig({ transformMixedEsModules: true, }, rollupOptions: { - external: ['@squidex/squidex', '../squidex-node-sdk'], + // external: ['@squidex/squidex', '../squidex-node-sdk'], } }, vite: { @@ -52,7 +52,7 @@ export default defineConfig({ commonjs(/**/) ], optimizeDeps: { - exclude: ['@squidex/squidex', '../squidex-node-sdk'], + // exclude: ['@squidex/squidex', '../squidex-node-sdk'], } // resolve: { // alias: [ diff --git a/src/apps/catalog/amazon/amazon-append-images.ts b/src/apps/catalog/amazon/amazon-append-images.ts index df31505..3edfec7 100644 --- a/src/apps/catalog/amazon/amazon-append-images.ts +++ b/src/apps/catalog/amazon/amazon-append-images.ts @@ -97,11 +97,11 @@ export const amazonAppendImagesCommand = (amazonCommand: Command) => } if (didUpdate) { log(`Listing did update, updating product listing with appended images.`); - let updatedDto = await core.client.contents.putContent(SCHEMAS.LISTINGS, listingDto.id, { + let updatedDto = await core.client.contents.putContent({ + schema: SCHEMAS.LISTINGS, + id: listingDto.id, unpublished: false, - body: listing as any, - }, { - timeoutInSeconds: core.TIMEOUT_IN_SECONDS + requestBody: listing as any, }); log(`Listing version ${updatedDto.version} stored.`); } diff --git a/src/apps/catalog/common/catalog-helpers.ts b/src/apps/catalog/common/catalog-helpers.ts index f7720c3..a48d30c 100644 --- a/src/apps/catalog/common/catalog-helpers.ts +++ b/src/apps/catalog/common/catalog-helpers.ts @@ -26,7 +26,7 @@ export function isValidASIN(asinOrNot: string) { } export async function getAmazonGetItemsRequestSchemaDto() { - return await client.schemas.getSchema('amazon-pa-get-items-request'); + return await client.schemas.getSchema({ schema: 'amazon-pa-get-items-request' }); } export async function lookupAmazonASINs(asins: string[]) { @@ -46,20 +46,21 @@ export async function lookupAmazonASINs(asins: string[]) { ] } }, requestDate: { iv: requestDate } } - let amazonGetItemDto = await client.contents.postContent(SCHEMAS.AMAZON_GET_ITEMS, { + let amazonGetItemDto = await client.contents.postContent({ + schema: SCHEMAS.AMAZON_GET_ITEMS, publish: true, - body: amazonGetItem as any, + requestBody: amazonGetItem as any, }) let amazonGetItemsDto = await getContentsByIds(SCHEMAS.AMAZON_GET_ITEMS, amazonGetItemDto.id); return amazonGetItemsDto; } export async function getMarketplaceConnectionSchemaDto() { - return await client.schemas.getSchema('product-marketplace-connection'); + return await client.schemas.getSchema({ schema: 'product-marketplace-connection' }); } export async function getAmazonMarketplaceConnectionSchemaDto() { - return await client.schemas.getSchema('product-marketplace-connection-amazon') + return await client.schemas.getSchema({ schema: 'product-marketplace-connection-amazon' }) } export async function getAmazonMarketplaceDto() { @@ -97,8 +98,9 @@ export async function getBrandDtoByName(brandName: string) { } export async function getAddNewBrandDtoByName(brandName: string) { - let brandDto = await client.contents.postContent(SCHEMAS.BRANDS, { - body: { + let brandDto = await client.contents.postContent({ + schema: SCHEMAS.BRANDS, + requestBody: { brandName: { "en-US": brandName!, "es-US": brandName!, @@ -110,10 +112,8 @@ export async function getAddNewBrandDtoByName(brandName: string) { "fr-CA": `fr-CA/${slugify(brandName!, { lower: true, trim: true })}` }, } - }, { - timeoutInSeconds: TIMEOUT_IN_SECONDS, }); - let brandsDto = await client.contents.getContents(SCHEMAS.BRANDS, { unpublished: true, ids: brandDto.id }, { timeoutInSeconds: TIMEOUT_IN_SECONDS }) as ContentsDto; + let brandsDto = await client.contents.getContents({ schema: SCHEMAS.BRANDS, unpublished: true, ids: brandDto.id }) as ContentsDto; return brandsDto; } @@ -128,8 +128,9 @@ export async function getSellerDtoByName(sellerName: string) { } export async function getAddNewSellerDtoByName(sellerName: string) { - let sellerDto = await client.contents.postContent(SCHEMAS.SELLERS, { - body: { + let sellerDto = await client.contents.postContent({ + schema: SCHEMAS.SELLERS, + requestBody: { sellerName: { "en-US": sellerName!, "es-US": sellerName!, @@ -141,10 +142,8 @@ export async function getAddNewSellerDtoByName(sellerName: string) { "fr-CA": `fr-CA/${slugify(sellerName!, { lower: true, trim: true })}` }, } - }, { - timeoutInSeconds: TIMEOUT_IN_SECONDS, }); - let sellersDto = await client.contents.getContents(SCHEMAS.SELLERS, { unpublished: true, ids: sellerDto.id }, {timeoutInSeconds: TIMEOUT_IN_SECONDS}) as ContentsDto; + let sellersDto = await client.contents.getContents({ schema: SCHEMAS.SELLERS, unpublished: true, ids: sellerDto.id }) as ContentsDto; return sellersDto; } @@ -407,17 +406,16 @@ export async function translateTags_from_en_US_to_fr_CA(tags_en_US: string[]) { } export async function getAddNewProductSubCategoryDto(parentProductCategoryId: NonLocalized, categoryName: Localized, description: Localized) { - let productCategoryDto = await client.contents.postContent(SCHEMAS.PRODUCT_CATEGORIES, { + let productCategoryDto = await client.contents.postContent({ + schema: SCHEMAS.PRODUCT_CATEGORIES, publish: false, - body: { + requestBody: { categoryName, description, parentCategory: parentProductCategoryId, }, - }, { - timeoutInSeconds: TIMEOUT_IN_SECONDS, }); - let productCategoriesDto = await client.contents.getContents(SCHEMAS.PRODUCT_CATEGORIES, { unpublished: true, ids: productCategoryDto.id }, {timeoutInSeconds: TIMEOUT_IN_SECONDS}) as ContentsDto; + let productCategoriesDto = await client.contents.getContents({ schema: SCHEMAS.PRODUCT_CATEGORIES, unpublished: true, ids: productCategoryDto.id }) as ContentsDto; return productCategoriesDto; } @@ -448,28 +446,26 @@ export async function translateAmazonDescription_from_en_US_to_fr_CA(brandName: } export async function getAddNewProductDtoByProduct(product: Product) { - let productDto = await client.contents.postContent(SCHEMAS.PRODUCTS, { + let productDto = await client.contents.postContent({ + schema: SCHEMAS.PRODUCTS, publish: false, - body: { + requestBody: { ...product }, - }, { - timeoutInSeconds: TIMEOUT_IN_SECONDS, }); - let productsDto = await client.contents.getContents(SCHEMAS.PRODUCTS, { unpublished: true, ids: productDto.id }, {timeoutInSeconds: TIMEOUT_IN_SECONDS}) as ContentsDto; + let productsDto = await client.contents.getContents({ schema: SCHEMAS.PRODUCTS, unpublished: true, ids: productDto.id }) as ContentsDto; return productsDto; } export async function getAddNewProductListingDtoByProduct(listing: Listing) { - let listingDto = await client.contents.postContent(SCHEMAS.LISTINGS, { + let listingDto = await client.contents.postContent({ + schema: SCHEMAS.LISTINGS, publish: true, - body: { + requestBody: { ...listing } - }, { - timeoutInSeconds: TIMEOUT_IN_SECONDS, }); - let listingsDto = await client.contents.getContents(SCHEMAS.LISTINGS, { unpublished: true, ids: listingDto.id }, {timeoutInSeconds: TIMEOUT_IN_SECONDS}) as ContentsDto; + let listingsDto = await client.contents.getContents({ schema: SCHEMAS.LISTINGS, unpublished: true, ids: listingDto.id }) as ContentsDto; return listingsDto; } @@ -482,11 +478,11 @@ export function removeQuotes(str: string) { } export async function upsertAssetFolder(folderName: string, parentFolderId?: string|undefined) { - const assetFolders = await client.assets.getAssetFolders({ scope: 'Items', parentId: parentFolderId }, { timeoutInSeconds: TIMEOUT_IN_SECONDS }); + const assetFolders = await client.assets.getAssetFolders({ scope: 'Items', parentId: parentFolderId }); let assetFolder; let assetFolderLookup = assetFolders.items.filter(folder => folder.folderName === folderName); if (assetFolderLookup.length === 0) { - assetFolder = await client.assets.postAssetFolder({ folderName: folderName, parentId: parentFolderId }, { timeoutInSeconds: TIMEOUT_IN_SECONDS }); + assetFolder = await client.assets.postAssetFolder({ createAssetFolderDto: { folderName: folderName, parentId: parentFolderId }}); } else { assetFolder = assetFolderLookup[0]; @@ -501,20 +497,19 @@ export async function getAllAssetsInFolder(assetFolderId: string) { export async function uploadDownloadedImageToSquidexAsAsset(downloadUrl: string, assetFolderId: string) { let filename = downloadUrl.substring(downloadUrl.lastIndexOf('/')+1); - let response = await axios.get(downloadUrl, { timeout: TIMEOUT_IN_SECONDS * 1000, responseType: 'arraybuffer' }); - let assetDto = await client.assets.postAsset({ readable: response.data, fileName: filename }, { timeoutInSeconds: TIMEOUT_IN_SECONDS }); - assetDto = await client.assets.putAsset(assetDto.id, { fileName: filename, metadata: { ...assetDto.metadata, 'amazon-url': downloadUrl }, tags: ['amazon', 'product'] }) - assetDto = await client.assets.putAssetParent(assetDto.id, { parentId: assetFolderId }); + let response = await axios.get(downloadUrl, { timeout: TIMEOUT_IN_SECONDS * 1000, responseType: 'blob' }); + let assetDto = await client.assets.postAsset({ file: response.data, fileName: filename }); + assetDto = await client.assets.putAsset({ id: assetDto.id, annotateAssetDto: { metadata: { ...assetDto.metadata, 'amazon-url': downloadUrl }, tags: ['amazon', 'product'] } }) + assetDto = await client.assets.putAssetParent({ id: assetDto.id, moveAssetDto: { parentId: assetFolderId } }); return assetDto; } export async function getAddNewOfferDto(offer: Offer) { - let offerDto = await client.contents.postContent(SCHEMAS.OFFERS, { + let offerDto = await client.contents.postContent({ + schema: SCHEMAS.OFFERS, publish: true, - body: offer as any, - }, { - timeoutInSeconds: TIMEOUT_IN_SECONDS, + requestBody: offer as any, }); - let offersDto = await client.contents.getContents(SCHEMAS.OFFERS, { unpublished: true, ids: offerDto.id }, {timeoutInSeconds: TIMEOUT_IN_SECONDS}) as ContentsDto; + let offersDto = await client.contents.getContents({ schema: SCHEMAS.OFFERS, unpublished: true, ids: offerDto.id }) as ContentsDto; return offersDto; } diff --git a/src/data/api-client.ts b/src/data/api-client.ts index 3e991a4..1eed5fe 100644 --- a/src/data/api-client.ts +++ b/src/data/api-client.ts @@ -1,6 +1,6 @@ import * as core from "./core/client"; import { SCHEMAS } from "./models/schemas"; -import { getContents } from "./core/client.js"; +import { getAllContents } from "./core/client.js"; import { SupportedLocales, type Localized } from "./internals/LocalizedT.js"; import type { Component } from "./internals/Component"; import type { Brand } from "./models/multis/Brand"; @@ -14,7 +14,6 @@ import type { Slug } from "./models/multis/Slug"; import type { Seller } from "./models/multis/Seller"; import type { NonLocalized } from "./internals/NonLocalizedT.js"; import type { ContentsDto } from "./internals/ContentsDtoT"; -import type { ContentData } from "@squidex/squidex/api/types/ContentData"; import type { ContentDto } from "./internals/ContentDtoT"; import type { Listing } from "./models/multis/Listing.js"; import type { Offer } from "./models/multis/Offer.js"; @@ -144,7 +143,7 @@ export const getRedirectsByPreviousSlug = async (prevSlug: string) => /** Slugs handlers */ export const getAllSlugs = async () => - await core.getContents(SCHEMAS.SLUGS); + await core.getAllContents(SCHEMAS.SLUGS); export const getSlugByLangSlug = async (forLang: SupportedLocales|string, slug: string) => await core.getContentsUsingJsonQuery(SCHEMAS.SLUGS, JSON.stringify({ @@ -159,7 +158,7 @@ export const getSlugByLangSlug = async (forLang: SupportedLocales|string, slug: /** Site handlers */ export const getSite = async () => - await getContents(SCHEMAS.SITE); + await getAllContents(SCHEMAS.SITE); export const getSiteHomePage = async (site: Site) => { if (site.homePage && site.homePage.iv.length > 0) { @@ -171,7 +170,7 @@ export const getSiteHomePage = async (site: Site) => { } export const getSiteConfig = async () => - await getContents(SCHEMAS.SITE_CONFIG); + await getAllContents(SCHEMAS.SITE_CONFIG); export async function performSyncLocalizedSlugs(logFn = console.log) { logFn("Begin sync localized slugs.") diff --git a/src/data/core/client.ts b/src/data/core/client.ts index 2883285..e8bc92e 100644 --- a/src/data/core/client.ts +++ b/src/data/core/client.ts @@ -1,9 +1,8 @@ import { config } from "../../config.js"; -import { Squidex, SquidexClient } from "@squidex/squidex"; +import { SquidexClient } from "@squidex/squidex"; import type { ContentsDto } from "../internals/ContentsDtoT.js"; import type { SupportedLocales } from "../internals/LocalizedT.js"; import type { SCHEMAS } from "../models/schemas.js"; -import type { Contents } from "@squidex/squidex/api/resources/contents/client/Client.js"; export const client = new SquidexClient({ appName: config.squidexAppName!, @@ -20,21 +19,21 @@ export const TIMEOUT_IN_SECONDS = 10; /** Asset Handling */ export const getAssetById = async (assetId: string) => ( - await client.assets.getAsset(assetId, {timeoutInSeconds: TIMEOUT_IN_SECONDS}) + await client.assets.getAsset({ id: assetId }) ); /** Generic Content Handling */ -export const getContents = async (schema: SCHEMAS|string) => ( - await client.contents.getContents(schema, { }, { timeoutInSeconds: TIMEOUT_IN_SECONDS }) +export const getAllContents = async (schema: SCHEMAS|string) => ( + await client.contents.getContents({ schema }) ) as ContentsDto; export const getContentsByIds = async (schema: SCHEMAS|string, ids: string) => ( - await client.contents.getContents(schema, { ids }, { timeoutInSeconds: TIMEOUT_IN_SECONDS }) + await client.contents.getContents({ schema, ids }) ) as ContentsDto; export const getContentsUsingJsonQuery = async (schema: SCHEMAS|string, jsonQuery: string|undefined = undefined) => ( - await client.contents.getContents(schema, { q: jsonQuery }, { timeoutInSeconds: TIMEOUT_IN_SECONDS }) + await client.contents.getContents({ schema, q: jsonQuery }) ) as ContentsDto; export const getContentsByLangSlug = async (schema: SCHEMAS|string, forLang: SupportedLocales|string, slug: string) => ( diff --git a/src/data/internals/ContentDtoT.ts b/src/data/internals/ContentDtoT.ts index 0814628..2db95fa 100644 --- a/src/data/internals/ContentDtoT.ts +++ b/src/data/internals/ContentDtoT.ts @@ -1,5 +1,5 @@ -import { Squidex } from "@squidex/squidex"; +import type { ContentDto as SquidexContentDto } from "@squidex/squidex"; -export interface ContentDto extends Squidex.ContentDto { - data?: T; +export interface ContentDto extends SquidexContentDto { + data: T; } \ No newline at end of file diff --git a/src/data/internals/ContentsDtoT.ts b/src/data/internals/ContentsDtoT.ts index 25cd9ca..d24816b 100644 --- a/src/data/internals/ContentsDtoT.ts +++ b/src/data/internals/ContentsDtoT.ts @@ -1,7 +1,7 @@ import type { ContentDto } from "./ContentDtoT"; -import { Squidex } from "@squidex/squidex"; +import type { ContentsDto as SquidexContentsDto } from "@squidex/squidex"; -export interface ContentsDto extends Squidex.ContentsDto { +export interface ContentsDto extends SquidexContentsDto { /** The generic content items. */ items: ContentDto[]; } \ No newline at end of file diff --git a/src/pages/404.astro b/src/pages/404.astro index e388eb8..11a0611 100644 --- a/src/pages/404.astro +++ b/src/pages/404.astro @@ -140,7 +140,7 @@ try { } } --- - + { @@ -160,7 +160,7 @@ try {
0) { console.log("getting redirectReferencesDto for", SCHEMAS.REDIRECTS, redirectDto.items[0].id); - let redirectReferencesDto = await client.contents.getReferences(SCHEMAS.REDIRECTS, redirectDto.items[0].id); + //next line crashes: + let redirectReferencesDto = await client.contents.getReferences({ schema: SCHEMAS.REDIRECTS, id: redirectDto.items[0].id }); console.log("redirectReferencesDto:", redirectReferencesDto); - client.contents.getConten + // client.contents.getConten // switch (redirectDto.items[0].data?.referenceSchema.iv) { // case SCHEMAS.BRANDS: // return Astro.rewrite(`/view/brands/${locale}/${objectId}`); @@ -136,7 +137,7 @@ const renderContext = { shouldEmbedSquidexSDK, } --- - + { metaDescription && } { @@ -177,7 +178,7 @@ const renderContext = { pageEditToken={pageEditToken} brand={brand||undefined} site={site} - siteEditToken={siteEditToken} + siteEditToken={siteEditToken!} />
diff --git a/src/pages/view/brands/[...brandLookup].astro b/src/pages/view/brands/[...brandLookup].astro index 57af3ea..ca3caef 100644 --- a/src/pages/view/brands/[...brandLookup].astro +++ b/src/pages/view/brands/[...brandLookup].astro @@ -65,7 +65,7 @@ const renderContext = { shouldEmbedSquidexSDK, } --- - + { metaDescription && } { @@ -90,10 +90,10 @@ const renderContext = { isHomePage={false} locale={locale} page={page} - pageEditToken={pageEditToken} + pageEditToken={pageEditToken!} brand={brand||undefined} site={site} - siteEditToken={siteEditToken} + siteEditToken={siteEditToken!} /> diff --git a/src/pages/view/marketplaces/[...marketplaceLookup].astro b/src/pages/view/marketplaces/[...marketplaceLookup].astro index aca03f6..c3bdc6e 100644 --- a/src/pages/view/marketplaces/[...marketplaceLookup].astro +++ b/src/pages/view/marketplaces/[...marketplaceLookup].astro @@ -65,7 +65,7 @@ const renderContext = { shouldEmbedSquidexSDK, } --- - + { metaDescription && } { @@ -90,10 +90,10 @@ const renderContext = { isHomePage={false} locale={locale} page={page} - pageEditToken={pageEditToken} + pageEditToken={pageEditToken!} marketplace={marketplace} site={site} - siteEditToken={siteEditToken} + siteEditToken={siteEditToken!} /> diff --git a/src/pages/view/pages/[...pageLookup].astro b/src/pages/view/pages/[...pageLookup].astro index 55ae82f..901c145 100644 --- a/src/pages/view/pages/[...pageLookup].astro +++ b/src/pages/view/pages/[...pageLookup].astro @@ -71,7 +71,7 @@ const renderContext = { shouldEmbedSquidexSDK, } --- - + { metaDescription && } { @@ -96,9 +96,9 @@ const renderContext = { isHomePage={isHomePage} locale={locale} page={page} - pageEditToken={pageEditToken} + pageEditToken={pageEditToken!} site={site} - siteEditToken={siteEditToken} + siteEditToken={siteEditToken!} /> diff --git a/src/pages/view/product-categories/[...productCategoryLookup].astro b/src/pages/view/product-categories/[...productCategoryLookup].astro index cd8f75e..70a5e19 100644 --- a/src/pages/view/product-categories/[...productCategoryLookup].astro +++ b/src/pages/view/product-categories/[...productCategoryLookup].astro @@ -66,7 +66,7 @@ const renderContext = { shouldEmbedSquidexSDK, } --- - + { metaDescription && } { @@ -91,11 +91,11 @@ const renderContext = { isHomePage={false} locale={locale} page={page} - pageEditToken={pageEditToken} + pageEditToken={pageEditToken!} productCategory={productCategory} brand={undefined} site={site} - siteEditToken={siteEditToken} + siteEditToken={siteEditToken!} /> diff --git a/src/pages/view/products/[...productLookup].astro b/src/pages/view/products/[...productLookup].astro index fa42bb3..eb8b109 100644 --- a/src/pages/view/products/[...productLookup].astro +++ b/src/pages/view/products/[...productLookup].astro @@ -69,7 +69,7 @@ const renderContext = { // disclaimers, } --- - + { metaDescription && } { @@ -94,11 +94,11 @@ const renderContext = { isHomePage={false} locale={locale} page={page} - pageEditToken={pageEditToken} + pageEditToken={pageEditToken!} productDto={productDto} brand={undefined} site={site} - siteEditToken={siteEditToken} + siteEditToken={siteEditToken!} /> diff --git a/src/pages/view/sellers/[...sellerLookup].astro b/src/pages/view/sellers/[...sellerLookup].astro index be913b6..d4cb34e 100644 --- a/src/pages/view/sellers/[...sellerLookup].astro +++ b/src/pages/view/sellers/[...sellerLookup].astro @@ -65,7 +65,7 @@ const renderContext = { shouldEmbedSquidexSDK, } --- - + { metaDescription && } { @@ -90,10 +90,10 @@ const renderContext = { isHomePage={false} locale={locale} page={page} - pageEditToken={pageEditToken} + pageEditToken={pageEditToken!} seller={seller} site={site} - siteEditToken={siteEditToken} + siteEditToken={siteEditToken!} />