Next.js website for Rocky Mountain Vending company featuring: - Product catalog with Stripe integration - Service areas and parts pages - Admin dashboard with Clerk authentication - SEO optimized pages with JSON-LD structured data Co-authored-by: Cursor <cursoragent@cursor.com>
64 lines
1.4 KiB
Text
64 lines
1.4 KiB
Text
/**
|
|
* @license
|
|
* Copyright 2020 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import thirdPartyWebLib from 'third-party-web/nostats-subset.js';
|
|
|
|
let thirdPartyWeb = thirdPartyWebLib;
|
|
|
|
/**
|
|
* For use by DevTools.
|
|
*
|
|
* @param {typeof import('third-party-web/nostats-subset.js')} providedThirdPartyWeb
|
|
*/
|
|
function provideThirdPartyWeb(providedThirdPartyWeb) {
|
|
thirdPartyWeb = providedThirdPartyWeb;
|
|
}
|
|
|
|
/** @typedef {import("third-party-web").IEntity} ThirdPartyEntity */
|
|
/** @typedef {import("third-party-web").IProduct} ThirdPartyProduct */
|
|
|
|
/**
|
|
* @param {string} url
|
|
* @return {ThirdPartyEntity|undefined}
|
|
*/
|
|
function getEntity(url) {
|
|
return thirdPartyWeb.getEntity(url);
|
|
}
|
|
|
|
/**
|
|
* @param {string} url
|
|
* @return {ThirdPartyProduct|undefined}
|
|
*/
|
|
function getProduct(url) {
|
|
return thirdPartyWeb.getProduct(url);
|
|
}
|
|
|
|
/**
|
|
* @param {string} url
|
|
* @param {ThirdPartyEntity | undefined} mainDocumentEntity
|
|
*/
|
|
function isThirdParty(url, mainDocumentEntity) {
|
|
const entity = getEntity(url);
|
|
if (!entity) return false;
|
|
if (entity === mainDocumentEntity) return false;
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @param {string} url
|
|
* @param {ThirdPartyEntity | undefined} mainDocumentEntity
|
|
*/
|
|
function isFirstParty(url, mainDocumentEntity) {
|
|
return !isThirdParty(url, mainDocumentEntity);
|
|
}
|
|
|
|
export default {
|
|
provideThirdPartyWeb,
|
|
getEntity,
|
|
getProduct,
|
|
isThirdParty,
|
|
isFirstParty,
|
|
};
|