@react-pakistan/util-functions 2.0.2 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/constants/api-methods.d.mts +13 -0
- package/constants/api-methods.mjs +1 -0
- package/constants/cache-time.d.mts +7 -0
- package/constants/cache-time.mjs +1 -0
- package/constants/countries-timezones.d.mts +8 -0
- package/constants/countries-timezones.mjs +1 -0
- package/constants/currencies.d.mts +14 -0
- package/constants/currencies.mjs +1 -0
- package/constants/dial-codes.d.mts +9 -0
- package/constants/dial-codes.mjs +1 -0
- package/constants/layout-direction.d.mts +6 -0
- package/constants/layout-direction.mjs +1 -0
- package/constants/react-pakistan-meta.d.mts +32 -0
- package/constants/react-pakistan-meta.mjs +1 -0
- package/constants/react-pakistan.d.mts +15 -0
- package/constants/react-pakistan.mjs +12 -0
- package/constants/select-value-delimiter.d.mts +12 -0
- package/constants/select-value-delimiter.mjs +1 -0
- package/constants/social-media-colors.d.mts +40 -0
- package/constants/social-media-colors.mjs +1 -0
- package/constants/social-media-sizes.d.mts +323 -0
- package/constants/social-media-sizes.mjs +1 -0
- package/constants/user-roles.d.mts +7 -0
- package/constants/user-roles.mjs +1 -0
- package/factory/generic-component-factory.d.mts +78 -0
- package/factory/generic-component-factory.mjs +1 -0
- package/factory/generic-module-factory.d.mts +80 -0
- package/factory/generic-module-factory.mjs +1 -0
- package/general/basic-get.d.mts +8 -0
- package/general/basic-get.mjs +1 -0
- package/general/basic-post.d.mts +8 -0
- package/general/basic-post.mjs +1 -0
- package/general/calculate-pages.d.mts +9 -0
- package/general/calculate-pages.mjs +1 -0
- package/general/camel-to-sentence-case.d.mts +12 -0
- package/general/camel-to-sentence-case.mjs +1 -0
- package/general/check-even-odd-length.d.mts +13 -0
- package/general/check-even-odd-length.mjs +1 -0
- package/general/clear-cache.d.mts +10 -0
- package/general/clear-cache.mjs +1 -0
- package/general/cnic-formatter.d.mts +20 -0
- package/general/cnic-formatter.mjs +1 -0
- package/general/convert-url-to-base64.d.mts +57 -0
- package/general/convert-url-to-base64.mjs +1 -0
- package/general/countries.d.mts +268 -0
- package/general/countries.mjs +1 -0
- package/general/create-date.d.mts +12 -0
- package/general/create-date.js +1 -1
- package/general/create-date.mjs +1 -0
- package/general/crypto.d.mts +11 -0
- package/general/crypto.mjs +1 -0
- package/general/currencies.d.mts +2 -0
- package/general/currencies.mjs +0 -0
- package/general/delete-image-from-private-supabase.d.mts +16 -0
- package/general/delete-image-from-private-supabase.mjs +1 -0
- package/general/delete-image-from-public-supabase.d.mts +16 -0
- package/general/delete-image-from-public-supabase.mjs +1 -0
- package/general/download-from-url.d.mts +8 -0
- package/general/download-from-url.mjs +1 -0
- package/general/dynamic-page-limit.d.mts +12 -0
- package/general/dynamic-page-limit.mjs +1 -0
- package/general/enum-to-text.d.mts +8 -0
- package/general/enum-to-text.mjs +1 -0
- package/general/fetch-data.d.mts +25 -0
- package/general/fetch-data.mjs +1 -0
- package/general/fetch-supabase-image.d.mts +16 -0
- package/general/fetch-supabase-image.mjs +1 -0
- package/general/fetch-supabase-private-assets.d.mts +15 -0
- package/general/fetch-supabase-private-assets.mjs +1 -0
- package/general/format-date.d.mts +18 -0
- package/general/format-date.mjs +1 -0
- package/general/format-number.d.mts +16 -0
- package/general/format-number.mjs +1 -0
- package/general/format-phone-display.d.mts +9 -0
- package/general/format-phone-display.js +1 -1
- package/general/format-phone-display.mjs +1 -0
- package/general/format-phone.d.mts +13 -0
- package/general/format-phone.d.ts +1 -3
- package/general/format-phone.js +1 -1
- package/general/format-phone.mjs +1 -0
- package/general/format-pricing.d.mts +8 -0
- package/general/format-pricing.mjs +1 -0
- package/general/format-secs.d.mts +8 -0
- package/general/format-secs.mjs +1 -0
- package/general/format-time.d.mts +11 -0
- package/general/format-time.mjs +1 -0
- package/general/format-value.d.mts +8 -0
- package/general/format-value.mjs +1 -0
- package/general/full-month-range.d.mts +13 -0
- package/general/full-month-range.mjs +1 -0
- package/general/full-year-range.d.mts +12 -0
- package/general/full-year-range.mjs +1 -0
- package/general/generate-article-schema.d.mts +50 -0
- package/general/generate-article-schema.mjs +1 -0
- package/general/generate-blog-schema.d.mts +37 -0
- package/general/generate-blog-schema.mjs +1 -0
- package/general/generate-book-schema.d.mts +58 -0
- package/general/generate-book-schema.mjs +1 -0
- package/general/generate-breadcrumb-schema.d.mts +40 -0
- package/general/generate-breadcrumb-schema.mjs +1 -0
- package/general/generate-carousel-schema.d.mts +52 -0
- package/general/generate-carousel-schema.mjs +1 -0
- package/general/generate-course-schema.d.mts +53 -0
- package/general/generate-course-schema.mjs +1 -0
- package/general/generate-dataset-schema.d.mts +65 -0
- package/general/generate-dataset-schema.mjs +1 -0
- package/general/generate-discussion-forum-schema.d.mts +39 -0
- package/general/generate-discussion-forum-schema.mjs +1 -0
- package/general/generate-education-schema.d.mts +68 -0
- package/general/generate-education-schema.mjs +1 -0
- package/general/generate-employer-aggregate-rating-schema.d.mts +29 -0
- package/general/generate-employer-aggregate-rating-schema.mjs +1 -0
- package/general/generate-event-schema.d.mts +63 -0
- package/general/generate-event-schema.mjs +1 -0
- package/general/generate-faq-schema.d.mts +32 -0
- package/general/generate-faq-schema.mjs +1 -0
- package/general/generate-grid.d.mts +17 -0
- package/general/generate-grid.mjs +1 -0
- package/general/generate-image-metadata-schema.d.mts +36 -0
- package/general/generate-image-metadata-schema.mjs +1 -0
- package/general/generate-job-posting-schema.d.mts +49 -0
- package/general/generate-job-posting-schema.mjs +1 -0
- package/general/generate-local-business-schema.d.mts +42 -0
- package/general/generate-local-business-schema.mjs +1 -0
- package/general/generate-math-solver-schema.d.mts +45 -0
- package/general/generate-math-solver-schema.mjs +1 -0
- package/general/generate-movie-carousel-schema.d.mts +51 -0
- package/general/generate-movie-carousel-schema.mjs +1 -0
- package/general/generate-organization-schema.d.mts +49 -0
- package/general/generate-organization-schema.mjs +1 -0
- package/general/generate-profile-page-schema.d.mts +37 -0
- package/general/generate-profile-page-schema.mjs +1 -0
- package/general/generate-qa-page-schema.d.mts +34 -0
- package/general/generate-qa-page-schema.mjs +1 -0
- package/general/generate-recipe-schema.d.mts +49 -0
- package/general/generate-recipe-schema.mjs +1 -0
- package/general/generate-ref.d.mts +11 -0
- package/general/generate-ref.js +1 -1
- package/general/generate-ref.mjs +1 -0
- package/general/generate-review-snippet-schema.d.mts +52 -0
- package/general/generate-review-snippet-schema.mjs +1 -0
- package/general/generate-shopping-loyalty-program-schema.d.mts +38 -0
- package/general/generate-shopping-loyalty-program-schema.mjs +1 -0
- package/general/generate-shopping-merchant-listing-schema.d.mts +53 -0
- package/general/generate-shopping-merchant-listing-schema.mjs +1 -0
- package/general/generate-shopping-merchant-return-policy-schema.d.mts +32 -0
- package/general/generate-shopping-merchant-return-policy-schema.mjs +1 -0
- package/general/generate-shopping-merchant-shipping-policy-schema.d.mts +36 -0
- package/general/generate-shopping-merchant-shipping-policy-schema.mjs +1 -0
- package/general/generate-shopping-overview-schema.d.mts +52 -0
- package/general/generate-shopping-overview-schema.mjs +1 -0
- package/general/generate-shopping-product-snippet-schema.d.mts +57 -0
- package/general/generate-shopping-product-snippet-schema.mjs +1 -0
- package/general/generate-shopping-variants-schema.d.mts +46 -0
- package/general/generate-shopping-variants-schema.mjs +1 -0
- package/general/generate-software-app-schema.d.mts +62 -0
- package/general/generate-software-app-schema.mjs +1 -0
- package/general/generate-speakable-schema.d.mts +64 -0
- package/general/generate-speakable-schema.mjs +1 -0
- package/general/generate-subscription-schema.d.mts +60 -0
- package/general/generate-subscription-schema.mjs +1 -0
- package/general/generate-vacation-rental-schema.d.mts +67 -0
- package/general/generate-vacation-rental-schema.mjs +1 -0
- package/general/generate-video-schema.d.mts +75 -0
- package/general/generate-video-schema.mjs +1 -0
- package/general/generic-cache.d.mts +193 -0
- package/general/generic-cache.mjs +1 -0
- package/general/get-available-page-limit.d.mts +11 -0
- package/general/get-available-page-limit.mjs +1 -0
- package/general/get-calendar-current-month.d.mts +15 -0
- package/general/get-calendar-current-month.js +1 -1
- package/general/get-calendar-current-month.mjs +1 -0
- package/general/get-calendar-dates.d.mts +15 -0
- package/general/get-calendar-dates.js +1 -1
- package/general/get-calendar-dates.mjs +1 -0
- package/general/get-calendar-next-month.d.mts +17 -0
- package/general/get-calendar-next-month.js +1 -1
- package/general/get-calendar-next-month.mjs +1 -0
- package/general/get-calendar-previous-month.d.mts +17 -0
- package/general/get-calendar-previous-month.js +1 -1
- package/general/get-calendar-previous-month.mjs +1 -0
- package/general/get-current-year.d.mts +7 -0
- package/general/get-current-year.mjs +1 -0
- package/general/get-day-name.d.mts +10 -0
- package/general/get-day-name.mjs +1 -0
- package/general/get-dial-code.d.mts +8 -0
- package/general/get-dial-code.mjs +1 -0
- package/general/get-full-name.d.mts +13 -0
- package/general/get-full-name.mjs +1 -0
- package/general/get-href.d.mts +11 -0
- package/general/get-href.mjs +1 -0
- package/general/get-month-name.d.mts +10 -0
- package/general/get-month-name.mjs +1 -0
- package/general/get-month-number.d.mts +15 -0
- package/general/get-month-number.mjs +1 -0
- package/general/get-number-of-days-in-month.d.mts +13 -0
- package/general/get-number-of-days-in-month.js +1 -1
- package/general/get-number-of-days-in-month.mjs +1 -0
- package/general/get-pathname.d.mts +11 -0
- package/general/get-pathname.mjs +1 -0
- package/general/get-week-day.d.mts +8 -0
- package/general/get-week-day.js +1 -1
- package/general/get-week-day.mjs +1 -0
- package/general/image-url-to-base64.d.mts +9 -0
- package/general/image-url-to-base64.mjs +1 -0
- package/general/is-created-or-updated.d.mts +13 -0
- package/general/is-created-or-updated.mjs +1 -0
- package/general/is-next-button-disabled.d.mts +9 -0
- package/general/is-next-button-disabled.mjs +1 -0
- package/general/is-odd.d.mts +11 -0
- package/general/is-odd.mjs +1 -0
- package/general/is-previous-button-disabled.d.mts +8 -0
- package/general/is-previous-button-disabled.mjs +1 -0
- package/general/linear-gradients.d.mts +14 -0
- package/general/linear-gradients.mjs +1 -0
- package/general/multi-part-search.d.mts +22 -0
- package/general/multi-part-search.mjs +1 -0
- package/general/normalize-phone.d.mts +15 -0
- package/general/normalize-phone.js +1 -1
- package/general/normalize-phone.mjs +1 -0
- package/general/parse-frontmatter.d.mts +36 -0
- package/general/parse-frontmatter.mjs +2 -0
- package/general/remove-data-image-prefix.d.mts +8 -0
- package/general/remove-data-image-prefix.mjs +1 -0
- package/general/repeat-times.d.mts +15 -0
- package/general/repeat-times.mjs +1 -0
- package/general/resolve-anchor-link.d.mts +13 -0
- package/general/resolve-anchor-link.mjs +1 -0
- package/general/resolve-current-date.d.mts +12 -0
- package/general/resolve-current-date.mjs +1 -0
- package/general/resolve-grid.d.mts +14 -0
- package/general/resolve-grid.mjs +1 -0
- package/general/resolve-initials.d.mts +12 -0
- package/general/resolve-initials.mjs +1 -0
- package/general/set-timezone.d.mts +9 -0
- package/general/set-timezone.d.ts +1 -3
- package/general/set-timezone.js +1 -1
- package/general/set-timezone.mjs +1 -0
- package/general/slugify.d.mts +12 -0
- package/general/slugify.mjs +1 -0
- package/general/text-to-enum.d.mts +8 -0
- package/general/text-to-enum.mjs +1 -0
- package/general/text-to-sentence-case.d.mts +12 -0
- package/general/text-to-sentence-case.mjs +1 -0
- package/general/time-out.d.mts +12 -0
- package/general/time-out.mjs +1 -0
- package/general/time-zones.d.mts +11 -0
- package/general/time-zones.mjs +1 -0
- package/general/truncate-text.d.mts +14 -0
- package/general/truncate-text.mjs +1 -0
- package/general/type.d.mts +8 -0
- package/general/type.mjs +0 -0
- package/general/upload-blob-to-private-supabase.d.mts +24 -0
- package/general/upload-blob-to-private-supabase.mjs +1 -0
- package/general/upload-blob-to-public-supabase.d.mts +24 -0
- package/general/upload-blob-to-public-supabase.mjs +1 -0
- package/general/upload-image-to-private-supabase.d.mts +26 -0
- package/general/upload-image-to-private-supabase.mjs +1 -0
- package/general/upload-image-to-public-supabase.d.mts +26 -0
- package/general/upload-image-to-public-supabase.mjs +1 -0
- package/general/url-to-sentence-case.d.mts +12 -0
- package/general/url-to-sentence-case.mjs +1 -0
- package/general/validate-comment.d.mts +14 -0
- package/general/validate-comment.mjs +1 -0
- package/general/validate-email.d.mts +15 -0
- package/general/validate-email.mjs +1 -0
- package/general/validate-form.d.mts +18 -0
- package/general/validate-form.mjs +1 -0
- package/general/validate-name.d.mts +14 -0
- package/general/validate-name.mjs +1 -0
- package/hooks/use-change.d.mts +11 -0
- package/hooks/use-change.mjs +1 -0
- package/hooks/use-debounce.d.mts +10 -0
- package/hooks/use-debounce.mjs +1 -0
- package/hooks/use-fetch.d.mts +42 -0
- package/hooks/use-fetch.mjs +1 -0
- package/hooks/use-force-render.d.mts +14 -0
- package/hooks/use-force-render.mjs +1 -0
- package/hooks/use-ip-geo-location.d.mts +12 -0
- package/hooks/use-ip-geo-location.mjs +1 -0
- package/hooks/use-is-mobile.d.mts +8 -0
- package/hooks/use-is-mobile.mjs +1 -0
- package/hooks/use-module-entity-v2.d.mts +105 -0
- package/hooks/use-module-entity-v2.mjs +1 -0
- package/hooks/use-module-entity.d.mts +98 -0
- package/hooks/use-module-entity.mjs +1 -0
- package/hooks/use-phone-formatter.d.mts +17 -0
- package/hooks/use-phone-formatter.d.ts +1 -3
- package/hooks/use-phone-formatter.js +1 -1
- package/hooks/use-phone-formatter.mjs +1 -0
- package/hooks/use-position.d.mts +29 -0
- package/hooks/use-position.mjs +1 -0
- package/hooks/use-rtl.d.mts +46 -0
- package/hooks/use-rtl.mjs +1 -0
- package/hooks/use-sticky.d.mts +13 -0
- package/hooks/use-sticky.mjs +1 -0
- package/hooks/use-toggle-state.d.mts +14 -0
- package/hooks/use-toggle-state.mjs +1 -0
- package/hooks/use-window-event-listener.d.mts +9 -0
- package/hooks/use-window-event-listener.mjs +1 -0
- package/hooks/with-seo.d.mts +19 -0
- package/hooks/with-seo.mjs +1 -0
- package/local-storage/get-storage-value.d.mts +5 -0
- package/local-storage/get-storage-value.mjs +1 -0
- package/local-storage/remove-storage-value.d.mts +3 -0
- package/local-storage/remove-storage-value.mjs +1 -0
- package/local-storage/set-storage-value.d.mts +3 -0
- package/local-storage/set-storage-value.mjs +1 -0
- package/local-storage/type.d.mts +3 -0
- package/local-storage/type.mjs +0 -0
- package/npm.d.d.mts +2 -0
- package/npm.d.mjs +0 -0
- package/package.json +1 -10
- package/edu-pilot-pro/types/academics.d.ts +0 -2
- package/edu-pilot-pro/types/academics.js +0 -1
- package/edu-pilot-pro/types/admission.d.ts +0 -878
- package/edu-pilot-pro/types/admission.js +0 -1
- package/edu-pilot-pro/types/communication.d.ts +0 -2
- package/edu-pilot-pro/types/communication.js +0 -1
- package/edu-pilot-pro/types/enums.d.ts +0 -413
- package/edu-pilot-pro/types/enums.js +0 -1
- package/edu-pilot-pro/types/finance.d.ts +0 -2
- package/edu-pilot-pro/types/finance.js +0 -1
- package/edu-pilot-pro/types/index.d.ts +0 -2
- package/edu-pilot-pro/types/index.js +0 -1
- package/edu-pilot-pro/types/user-management.d.ts +0 -2
- package/edu-pilot-pro/types/user-management.js +0 -1
- package/stellar-solution/types/common.d.ts +0 -26
- package/stellar-solution/types/common.js +0 -1
- package/stellar-solution/types/erp.d.ts +0 -305
- package/stellar-solution/types/erp.js +0 -1
- package/stellar-solution/types/index.d.ts +0 -3
- package/stellar-solution/types/index.js +0 -1
- package/stellar-solution/types/pos.d.ts +0 -179
- package/stellar-solution/types/pos.js +0 -1
- package/storybook/generate-sitemap.d.ts +0 -16
- package/storybook/generate-sitemap.js +0 -17
- package/storybook/preview.d.ts +0 -148
- package/storybook/preview.js +0 -1
- package/storybook/react-design-story-script.d.ts +0 -12
- package/storybook/react-design-story-script.js +0 -5
- package/storybook/react-emoji-collection.d.ts +0 -13
- package/storybook/react-emoji-collection.js +0 -11
- package/storybook/react-emoji-story-script.d.ts +0 -12
- package/storybook/react-emoji-story-script.js +0 -5
- package/storybook/react-emoji-story-template.d.ts +0 -14
- package/storybook/react-emoji-story-template.js +0 -46
- package/storybook/react-icon-collection.d.ts +0 -13
- package/storybook/react-icon-collection.js +0 -11
- package/storybook/react-icon-story-script.d.ts +0 -12
- package/storybook/react-icon-story-script.js +0 -5
- package/storybook/react-icon-story-template.d.ts +0 -13
- package/storybook/react-icon-story-template.js +0 -46
- package/storybook/react-logo-collection.d.ts +0 -13
- package/storybook/react-logo-collection.js +0 -11
- package/storybook/react-logo-story-script.d.ts +0 -12
- package/storybook/react-logo-story-script.js +0 -5
- package/storybook/react-logo-story-template.d.ts +0 -13
- package/storybook/react-logo-story-template.js +0 -46
- package/storybook/react-pakistan-theme.d.ts +0 -25
- package/storybook/react-pakistan-theme.js +0 -1
- package/storybook/responsive-args.d.ts +0 -22
- package/storybook/responsive-args.js +0 -1
- package/storybook/responsive-component.d.ts +0 -33
- package/storybook/responsive-component.js +0 -37
- package/storybook/responsive-screens.d.ts +0 -108
- package/storybook/responsive-screens.js +0 -1
- package/storybook/theme.d.ts +0 -96
- package/storybook/theme.js +0 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate schema.org JSON-LD for `EmployerAggregateRating` and the
|
|
3
|
+
* hosting `Organization`.
|
|
4
|
+
*
|
|
5
|
+
* The helper builds an `EmployerAggregateRating` object and nests it
|
|
6
|
+
* inside an `Organization` representation of the employer. Use the
|
|
7
|
+
* `EmployerAggregateOptions` interface for inputs.
|
|
8
|
+
* @returns A JSON-LD compatible `Organization` object with
|
|
9
|
+
* `aggregateRating` included
|
|
10
|
+
*/
|
|
11
|
+
interface OrgRef {
|
|
12
|
+
name: string;
|
|
13
|
+
url?: string;
|
|
14
|
+
sameAs?: string;
|
|
15
|
+
}
|
|
16
|
+
interface EmployerAggregateOptions {
|
|
17
|
+
employer: string | OrgRef;
|
|
18
|
+
ratingValue?: number;
|
|
19
|
+
ratingCount?: number;
|
|
20
|
+
reviewCount?: number;
|
|
21
|
+
bestRating?: number;
|
|
22
|
+
worstRating?: number;
|
|
23
|
+
url?: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
datePublished?: string;
|
|
26
|
+
}
|
|
27
|
+
declare const generateEmployerAggregateRatingSchema: ({ employer, ratingValue, ratingCount, reviewCount, bestRating, worstRating, url, description, datePublished, }: EmployerAggregateOptions) => any;
|
|
28
|
+
|
|
29
|
+
export { generateEmployerAggregateRatingSchema as default, generateEmployerAggregateRatingSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const m=e=>{if(typeof e=="string")return{"@type":"Organization",name:e};const t={"@type":"Organization",name:e.name};return e.url&&(t.url=e.url),e.sameAs&&(t.sameAs=e.sameAs),t},f=({employer:e,ratingValue:t,ratingCount:r,reviewCount:a,bestRating:i,worstRating:g,url:s,description:o,datePublished:u})=>{const n={"@type":"EmployerAggregateRating"};t!=null&&(n.ratingValue=t),r!=null&&(n.ratingCount=r),a!=null&&(n.reviewCount=a),i!=null&&(n.bestRating=i),g!=null&&(n.worstRating=g),s&&(n.url=s),o&&(n.description=o),u&&(n.datePublished=u);const l={"@context":"https://schema.org","@type":"Organization",...m(e)};return l.aggregateRating=n,l};var y=f;export{y as default,f as generateEmployerAggregateRatingSchema};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate schema.org `Event` JSON-LD.
|
|
3
|
+
*
|
|
4
|
+
* Supports `Place` and `VirtualLocation` types for `location`, optional
|
|
5
|
+
* `offers`, performers, organizer, and availability/status normalization.
|
|
6
|
+
* Currency values are validated with `skipInvalidCurrency` when present.
|
|
7
|
+
*
|
|
8
|
+
* See `EventSchemaOptions` below for the complete input shape.
|
|
9
|
+
* @returns A JSON-LD compatible `Event` object
|
|
10
|
+
*/
|
|
11
|
+
interface EventImage {
|
|
12
|
+
url: string;
|
|
13
|
+
width?: number;
|
|
14
|
+
height?: number;
|
|
15
|
+
}
|
|
16
|
+
interface EventLocationAddress {
|
|
17
|
+
streetAddress?: string;
|
|
18
|
+
addressLocality?: string;
|
|
19
|
+
postalCode?: string;
|
|
20
|
+
addressRegion?: string;
|
|
21
|
+
addressCountry?: string;
|
|
22
|
+
}
|
|
23
|
+
interface EventLocation {
|
|
24
|
+
type?: 'Place' | 'VirtualLocation';
|
|
25
|
+
name?: string;
|
|
26
|
+
url?: string;
|
|
27
|
+
address?: string | EventLocationAddress;
|
|
28
|
+
}
|
|
29
|
+
interface EventOrganizer {
|
|
30
|
+
name: string;
|
|
31
|
+
url?: string;
|
|
32
|
+
}
|
|
33
|
+
interface EventPerformer {
|
|
34
|
+
name: string;
|
|
35
|
+
url?: string;
|
|
36
|
+
type?: 'Person' | 'Organization';
|
|
37
|
+
}
|
|
38
|
+
interface EventOffer {
|
|
39
|
+
price?: string | number;
|
|
40
|
+
priceCurrency?: string;
|
|
41
|
+
availability?: string;
|
|
42
|
+
url?: string;
|
|
43
|
+
priceValidUntil?: string;
|
|
44
|
+
}
|
|
45
|
+
interface EventSchemaOptions {
|
|
46
|
+
name: string;
|
|
47
|
+
startDate: string;
|
|
48
|
+
endDate?: string;
|
|
49
|
+
description?: string;
|
|
50
|
+
location?: string | EventLocation;
|
|
51
|
+
url?: string;
|
|
52
|
+
image?: string | EventImage;
|
|
53
|
+
organizer?: string | EventOrganizer;
|
|
54
|
+
performers?: string | EventPerformer | Array<string | EventPerformer>;
|
|
55
|
+
offers?: EventOffer | EventOffer[];
|
|
56
|
+
isAccessibleForFree?: boolean;
|
|
57
|
+
eventStatus?: string;
|
|
58
|
+
eventAttendanceMode?: string;
|
|
59
|
+
skipInvalidCurrency?: boolean;
|
|
60
|
+
}
|
|
61
|
+
declare const generateEventSchema: ({ name, startDate, endDate, description, location, url, image, organizer, performers, offers, isAccessibleForFree, eventStatus, eventAttendanceMode, skipInvalidCurrency, }: EventSchemaOptions) => any;
|
|
62
|
+
|
|
63
|
+
export { generateEventSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const z=r=>{if(r)return typeof r=="string"?r:{"@type":"ImageObject",url:r.url,...r.width&&{width:r.width},...r.height&&{height:r.height}}},c=r=>r?/^[A-Z]{3}$/.test(r):!1,C=["InStock","OutOfStock","PreOrder","PreSale","Discontinued","OnlineOnly","InStoreOnly","LimitedAvailability","BackOrder"],S=r=>{if(r)try{const t=String(r);if(t.startsWith("http")){const s=t.replace(/https?:\/\/schema\.org\//i,"");return C.includes(s)?`https://schema.org/${s}`:void 0}return C.includes(t)?`https://schema.org/${t}`:void 0}catch{return}},O=r=>{if(r)return r.startsWith("http")?r:`https://schema.org/${r}`},V=r=>{if(!r)return;if(typeof r=="string")return r;if(r.type==="VirtualLocation"){const s={"@type":"VirtualLocation"};return r.url&&(s.url=r.url),r.name&&(s.name=r.name),s}const t={"@type":"Place"};return r.name&&(t.name=r.name),r.url&&(t.url=r.url),r.address&&(typeof r.address=="string"?t.address=r.address:t.address={"@type":"PostalAddress",...r.address.streetAddress&&{streetAddress:r.address.streetAddress},...r.address.addressLocality&&{addressLocality:r.address.addressLocality},...r.address.postalCode&&{postalCode:r.address.postalCode},...r.address.addressRegion&&{addressRegion:r.address.addressRegion},...r.address.addressCountry&&{addressCountry:r.address.addressCountry}}),t},w=r=>{if(r)return typeof r=="string"?{"@type":"Organization",name:r}:{"@type":"Organization",name:r.name,...r.url&&{url:r.url}}},A=r=>typeof r=="string"?{"@type":"Person",name:r}:{"@type":r.type||"Person",name:r.name,...r.url&&{url:r.url}},U=({name:r,startDate:t,endDate:s,description:o,location:b,url:y,image:L,organizer:I,performers:d,offers:f,isAccessibleForFree:g,eventStatus:l,eventAttendanceMode:p,skipInvalidCurrency:P=!1})=>{const n={"@context":"https://schema.org","@type":"Event",name:r,startDate:t};s&&(n.endDate=s),o&&(n.description=o);const m=z(L);m&&(n.image=m);const h=V(b);h&&(n.location=h),y&&(n.mainEntityOfPage={"@type":"WebPage","@id":y});const v=w(I);if(v&&(n.organizer=v),d&&(Array.isArray(d)?n.performer=d.map(i=>A(i)):n.performer=A(d)),typeof g=="boolean"&&(n.isAccessibleForFree=g),l){const i=O(l);i&&(n.eventStatus=i)}if(p){const i=O(p);i&&(n.eventAttendanceMode=i)}if(f){const i=Array.isArray(f)?f:[f],u=i.map(e=>{if(e.priceCurrency&&!c(e.priceCurrency))return{__invalidCurrency:e.priceCurrency};const a={"@type":"Offer"};if(e.price!=null&&(a.price=e.price),e.priceCurrency&&(a.priceCurrency=e.priceCurrency),e.url&&(a.url=e.url),e.priceValidUntil&&(a.priceValidUntil=e.priceValidUntil),e.availability){const E=S(e.availability);E&&(a.availability=E)}return a}).filter(e=>e&&!("__invalidCurrency"in e));if(i.some(e=>e.priceCurrency&&!c(e.priceCurrency))&&!P){const e=i.find(a=>a.priceCurrency&&!c(a.priceCurrency));throw new Error(`Invalid currency code: ${e?.priceCurrency}`)}u.length===1?n.offers=u[0]:u.length>1&&(n.offers=u)}return n};export{U as generateEventSchema};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a schema.org `FAQPage` JSON-LD object.
|
|
3
|
+
*
|
|
4
|
+
* Each FAQ item becomes a `Question` with an `acceptedAnswer` of type
|
|
5
|
+
* `Answer`. Plain-text answers are wrapped in a single paragraph tag.
|
|
6
|
+
* If the provided answer already contains HTML tags it will be preserved
|
|
7
|
+
* as-is to avoid double-wrapping.
|
|
8
|
+
*
|
|
9
|
+
* @param props.data - Array of FAQ items with `question` and `answer`
|
|
10
|
+
* @returns A JSON-LD `FAQPage` object
|
|
11
|
+
*/
|
|
12
|
+
interface FAQItem {
|
|
13
|
+
question: string;
|
|
14
|
+
answer: string;
|
|
15
|
+
}
|
|
16
|
+
interface FAQProps {
|
|
17
|
+
data: FAQItem[];
|
|
18
|
+
}
|
|
19
|
+
declare const generateFAQSchema: ({ data }: FAQProps) => {
|
|
20
|
+
'@context': string;
|
|
21
|
+
'@type': string;
|
|
22
|
+
mainEntity: {
|
|
23
|
+
'@type': string;
|
|
24
|
+
name: string;
|
|
25
|
+
acceptedAnswer: {
|
|
26
|
+
'@type': string;
|
|
27
|
+
text: string;
|
|
28
|
+
};
|
|
29
|
+
}[];
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export { generateFAQSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const s=e=>{if(!e)return e;const t=e.trim();return t.startsWith("<")&&t.includes(">")?e:`<p>${e}</p>`},i=({data:e})=>({"@context":"https://schema.org","@type":"FAQPage",mainEntity:e.map(({answer:r,question:n})=>({"@type":"Question",name:n,acceptedAnswer:{"@type":"Answer",text:s(r)}}))});export{i as generateFAQSchema};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A util function generate CSS Grid on the length of provided array
|
|
3
|
+
* it creates n x n grid layout dynamically
|
|
4
|
+
*
|
|
5
|
+
* @param array array - array of any data type
|
|
6
|
+
* @returns IGrid - an Object that have col & row properties
|
|
7
|
+
* @author Taimoor Khan
|
|
8
|
+
* @remarks React UI Collection
|
|
9
|
+
*/
|
|
10
|
+
/** End file docs */
|
|
11
|
+
interface IGrid {
|
|
12
|
+
col: string;
|
|
13
|
+
row: string;
|
|
14
|
+
}
|
|
15
|
+
declare const generateGrid: (array: Array<any>) => IGrid;
|
|
16
|
+
|
|
17
|
+
export { generateGrid };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o=r=>({1:{col:"1fr",row:"1fr"},2:{col:"1fr",row:"1fr 1fr"},3:{col:"1fr 1fr",row:"1fr"},4:{col:"1fr 1fr",row:"1fr 1fr"},5:{col:"1fr 1fr 1fr",row:"1fr 1fr"},6:{col:"1fr 1fr 1fr",row:"1fr 1fr"},7:{col:"1fr 1fr 1fr",row:"1fr 1fr 1fr"},8:{col:"1fr 1fr 1fr",row:"1fr 1fr 1fr"},9:{col:"1fr 1fr 1fr",row:"1fr 1fr 1fr"}})[r.length];export{o as generateGrid};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate schema.org `ImageObject` JSON-LD for image metadata.
|
|
3
|
+
*
|
|
4
|
+
* Accepts author/copyright holders, thumbnail, licenses and descriptive
|
|
5
|
+
* metadata and formats them into an `ImageObject` suitable for JSON-LD
|
|
6
|
+
* embedding. Only provided fields are emitted.
|
|
7
|
+
*
|
|
8
|
+
* See `ImageMetadataOptions` for the exact accepted fields.
|
|
9
|
+
* @returns A JSON-LD compatible `ImageObject`
|
|
10
|
+
*/
|
|
11
|
+
interface SimplePerson {
|
|
12
|
+
name: string;
|
|
13
|
+
url?: string;
|
|
14
|
+
}
|
|
15
|
+
interface ImageThumbnail {
|
|
16
|
+
url: string;
|
|
17
|
+
width?: number;
|
|
18
|
+
height?: number;
|
|
19
|
+
}
|
|
20
|
+
interface ImageMetadataOptions {
|
|
21
|
+
name?: string;
|
|
22
|
+
contentUrl: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
caption?: string;
|
|
25
|
+
uploadDate?: string;
|
|
26
|
+
author?: string | SimplePerson;
|
|
27
|
+
copyrightHolder?: string | SimplePerson;
|
|
28
|
+
license?: string;
|
|
29
|
+
encodingFormat?: string;
|
|
30
|
+
contentSize?: string;
|
|
31
|
+
thumbnail?: string | ImageThumbnail;
|
|
32
|
+
keywords?: string[];
|
|
33
|
+
}
|
|
34
|
+
declare const generateImageMetadataSchema: ({ name, contentUrl, description, caption, uploadDate, author, copyrightHolder, license, encodingFormat, contentSize, thumbnail, keywords, }: ImageMetadataOptions) => any;
|
|
35
|
+
|
|
36
|
+
export { generateImageMetadataSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const c=n=>{if(n)return typeof n=="string"?{"@type":"Person",name:n}:{"@type":"Person",name:n.name,...n.url&&{url:n.url}}},y=n=>{if(n)return typeof n=="string"?n:{"@type":"ImageObject",url:n.url,...n.width&&{width:n.width},...n.height&&{height:n.height}}},b=({name:n,contentUrl:f,description:i,caption:r,uploadDate:a,author:l,copyrightHolder:d,license:s,encodingFormat:g,contentSize:o,thumbnail:p,keywords:t})=>{const e={"@context":"https://schema.org","@type":"ImageObject",contentUrl:f};n&&(e.name=n),i&&(e.description=i),r&&(e.caption=r),a&&(e.uploadDate=a);const m=c(l);m&&(e.author=m);const h=c(d);h&&(e.copyrightHolder=h),s&&(e.license=s),g&&(e.encodingFormat=g),o&&(e.contentSize=o);const u=y(p);return u&&(e.thumbnail=u),t&&t.length>0&&(e.keywords=t.join(", ")),e};export{b as generateImageMetadataSchema};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate schema.org `JobPosting` JSON-LD.
|
|
3
|
+
*
|
|
4
|
+
* Supports structured `hiringOrganization`, `jobLocation`, and `baseSalary`
|
|
5
|
+
* representations. Currency validation is available via
|
|
6
|
+
* `skipInvalidCurrency` to catch malformed currency codes.
|
|
7
|
+
*
|
|
8
|
+
* See `JobPostingOptions` for the supported inputs.
|
|
9
|
+
* @returns A JSON-LD compatible `JobPosting` object
|
|
10
|
+
*/
|
|
11
|
+
interface SimpleOrganization {
|
|
12
|
+
name: string;
|
|
13
|
+
url?: string;
|
|
14
|
+
logo?: string;
|
|
15
|
+
}
|
|
16
|
+
interface SimpleAddress {
|
|
17
|
+
streetAddress?: string;
|
|
18
|
+
addressLocality?: string;
|
|
19
|
+
postalCode?: string;
|
|
20
|
+
addressRegion?: string;
|
|
21
|
+
addressCountry?: string;
|
|
22
|
+
}
|
|
23
|
+
interface JobLocation {
|
|
24
|
+
name?: string;
|
|
25
|
+
address?: string | SimpleAddress;
|
|
26
|
+
}
|
|
27
|
+
interface BaseSalary {
|
|
28
|
+
value?: string | number;
|
|
29
|
+
currency?: string;
|
|
30
|
+
unitText?: string;
|
|
31
|
+
}
|
|
32
|
+
interface JobPostingOptions {
|
|
33
|
+
title: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
datePosted: string;
|
|
36
|
+
validThrough?: string;
|
|
37
|
+
employmentType?: string | string[];
|
|
38
|
+
hiringOrganization?: string | SimpleOrganization;
|
|
39
|
+
jobLocation?: JobLocation | string;
|
|
40
|
+
baseSalary?: number | string | BaseSalary;
|
|
41
|
+
qualifications?: string;
|
|
42
|
+
skills?: string[];
|
|
43
|
+
identifier?: string;
|
|
44
|
+
url?: string;
|
|
45
|
+
skipInvalidCurrency?: boolean;
|
|
46
|
+
}
|
|
47
|
+
declare const generateJobPostingSchema: ({ title, description, datePosted, validThrough, employmentType, hiringOrganization, jobLocation, baseSalary, qualifications, skills, identifier, url, skipInvalidCurrency, }: JobPostingOptions) => any;
|
|
48
|
+
|
|
49
|
+
export { generateJobPostingSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const O=e=>{if(!e)return;if(typeof e=="string")return{"@type":"Organization",name:e};const t={"@type":"Organization",name:e.name};return e.url&&(t.url=e.url),e.logo&&(t.logo={"@type":"ImageObject",url:e.logo}),t},h=e=>{if(!e)return;if(typeof e=="string")return e;const t={"@type":"Place"};return e.name&&(t.name=e.name),e.address&&(typeof e.address=="string"?t.address=e.address:t.address={"@type":"PostalAddress",...e.address.streetAddress&&{streetAddress:e.address.streetAddress},...e.address.addressLocality&&{addressLocality:e.address.addressLocality},...e.address.postalCode&&{postalCode:e.address.postalCode},...e.address.addressRegion&&{addressRegion:e.address.addressRegion},...e.address.addressCountry&&{addressCountry:e.address.addressCountry}}),t},l=e=>e?/^[A-Z]{3}$/.test(e):!1,A=({title:e,description:t,datePosted:p,validThrough:d,employmentType:o,hiringOrganization:m,jobLocation:b,baseSalary:s,qualifications:g,skills:a,identifier:u,url:y,skipInvalidCurrency:L=!1})=>{const n={"@context":"https://schema.org","@type":"JobPosting",title:e,datePosted:p};t&&(n.description=t),d&&(n.validThrough=d),o&&(n.employmentType=o);const f=O(m);f&&(n.hiringOrganization=f);const c=h(b);if(c&&(n.jobLocation=c),s!=null)if(typeof s=="number"||typeof s=="string")n.baseSalary={"@type":"MonetaryAmount",value:s};else{const r=s;if(r.currency&&!l(r.currency)&&!L)throw new Error(`Invalid currency code: ${r.currency}`);const i={"@type":"MonetaryAmount"};r.value!=null&&(i.value=r.value),r.currency&&l(r.currency)&&(i.currency=r.currency),r.unitText&&(i.unitText=r.unitText),n.baseSalary=i}return g&&(n.qualifications=g),a&&a.length>0&&(n.skills=a.join(", ")),u&&(n.identifier=u),y&&(n.jobLocation=n.jobLocation||{"@type":"Place",name:y}),n};export{A as generateJobPostingSchema};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate schema.org `LocalBusiness` JSON-LD.
|
|
3
|
+
*
|
|
4
|
+
* Accepts common local business metadata (address, telephone, opening
|
|
5
|
+
* hours, geo coordinates, aggregateRating, etc.) and returns an object
|
|
6
|
+
* formatted for JSON-LD. Address may be provided as a simple string or a
|
|
7
|
+
* structured `SimpleAddress` object.
|
|
8
|
+
*
|
|
9
|
+
* See `LocalBusinessOptions` below for supported fields.
|
|
10
|
+
* @returns A JSON-LD compatible `LocalBusiness` object
|
|
11
|
+
*/
|
|
12
|
+
interface SimpleAddress {
|
|
13
|
+
streetAddress?: string;
|
|
14
|
+
addressLocality?: string;
|
|
15
|
+
postalCode?: string;
|
|
16
|
+
addressRegion?: string;
|
|
17
|
+
addressCountry?: string;
|
|
18
|
+
}
|
|
19
|
+
interface LocalBusinessOptions {
|
|
20
|
+
name: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
url?: string;
|
|
23
|
+
telephone?: string;
|
|
24
|
+
email?: string;
|
|
25
|
+
address?: string | SimpleAddress;
|
|
26
|
+
openingHours?: string[];
|
|
27
|
+
geo?: {
|
|
28
|
+
latitude: string | number;
|
|
29
|
+
longitude: string | number;
|
|
30
|
+
};
|
|
31
|
+
priceRange?: string;
|
|
32
|
+
image?: string;
|
|
33
|
+
logo?: string;
|
|
34
|
+
aggregateRating?: {
|
|
35
|
+
ratingValue: number | string;
|
|
36
|
+
reviewCount?: number;
|
|
37
|
+
};
|
|
38
|
+
sameAs?: string[];
|
|
39
|
+
}
|
|
40
|
+
declare const generateLocalBusinessSchema: ({ name, description, url, telephone, email, address, openingHours, geo, priceRange, image, logo, aggregateRating, sameAs, }: LocalBusinessOptions) => any;
|
|
41
|
+
|
|
42
|
+
export { generateLocalBusinessSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const y=e=>{if(e)return typeof e=="string"?e:{"@type":"PostalAddress",...e.streetAddress&&{streetAddress:e.streetAddress},...e.addressLocality&&{addressLocality:e.addressLocality},...e.postalCode&&{postalCode:e.postalCode},...e.addressRegion&&{addressRegion:e.addressRegion},...e.addressCountry&&{addressCountry:e.addressCountry}}},m=({name:e,description:d,url:o,telephone:g,email:a,address:f,openingHours:r,geo:i,priceRange:l,image:u,logo:c,aggregateRating:t,sameAs:n})=>{const s={"@context":"https://schema.org","@type":"LocalBusiness",name:e};d&&(s.description=d),o&&(s.url=o),g&&(s.telephone=g),a&&(s.email=a);const p=y(f);return p&&(s.address=p),r&&r.length>0&&(s.openingHours=r),i&&(s.geo={"@type":"GeoCoordinates",latitude:String(i.latitude),longitude:String(i.longitude)}),l&&(s.priceRange=l),u&&(s.image=u),c&&(s.logo={"@type":"ImageObject",url:c}),t&&(s.aggregateRating={"@type":"AggregateRating",ratingValue:t.ratingValue,...t.reviewCount!=null&&{reviewCount:t.reviewCount}}),n&&n.length>0&&(s.sameAs=n),s};export{m as generateLocalBusinessSchema};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate schema.org JSON-LD for a `MathSolver` application.
|
|
3
|
+
*
|
|
4
|
+
* Accepts application metadata (author, provider, softwareVersion, offers,
|
|
5
|
+
* etc.) and formats optional fields into a minimal `MathSolver` object
|
|
6
|
+
* suitable for embedding as JSON-LD. Only provided fields are included.
|
|
7
|
+
*
|
|
8
|
+
* See `MathSolverOptions` below for the accepted input shape.
|
|
9
|
+
* @returns A JSON-LD compatible `MathSolver` object
|
|
10
|
+
*/
|
|
11
|
+
interface PersonSimple {
|
|
12
|
+
name: string;
|
|
13
|
+
url?: string;
|
|
14
|
+
}
|
|
15
|
+
interface OrganizationSimple {
|
|
16
|
+
name: string;
|
|
17
|
+
url?: string;
|
|
18
|
+
}
|
|
19
|
+
interface ImageSimple {
|
|
20
|
+
url: string;
|
|
21
|
+
width?: number;
|
|
22
|
+
height?: number;
|
|
23
|
+
}
|
|
24
|
+
interface OfferSimple {
|
|
25
|
+
price?: string | number;
|
|
26
|
+
priceCurrency?: string;
|
|
27
|
+
url?: string;
|
|
28
|
+
}
|
|
29
|
+
interface MathSolverOptions {
|
|
30
|
+
name: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
url?: string;
|
|
33
|
+
image?: string | ImageSimple;
|
|
34
|
+
author?: string | PersonSimple;
|
|
35
|
+
provider?: string | OrganizationSimple;
|
|
36
|
+
softwareVersion?: string;
|
|
37
|
+
applicationCategory?: string;
|
|
38
|
+
operatingSystem?: string | string[];
|
|
39
|
+
programmingLanguage?: string | string[];
|
|
40
|
+
license?: string;
|
|
41
|
+
offers?: OfferSimple | OfferSimple[];
|
|
42
|
+
}
|
|
43
|
+
declare const generateMathSolverSchema: ({ name, description, url, image, author, provider, softwareVersion, applicationCategory, operatingSystem, programmingLanguage, license, offers, }: MathSolverOptions) => any;
|
|
44
|
+
|
|
45
|
+
export { generateMathSolverSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const d=r=>{if(r)return typeof r=="string"?{"@type":"Person",name:r}:{"@type":"Person",name:r.name,...r.url&&{url:r.url}}},O=r=>{if(r)return typeof r=="string"?{"@type":"Organization",name:r}:{"@type":"Organization",name:r.name,...r.url&&{url:r.url}}},v=r=>{if(r)return typeof r=="string"?r:{"@type":"ImageObject",url:r.url,...r.width&&{width:r.width},...r.height&&{height:r.height}}},P=({name:r,description:a,url:s,image:h,author:y,provider:S,softwareVersion:g,applicationCategory:m,operatingSystem:p,programmingLanguage:u,license:f,offers:i})=>{const e={"@context":"https://schema.org","@type":"MathSolver",name:r};a&&(e.description=a),s&&(e.url=s);const o=v(h);o&&(e.image=o);const l=d(y);l&&(e.author=l);const c=O(S);if(c&&(e.provider=c),g&&(e.softwareVersion=g),m&&(e.applicationCategory=m),p&&(e.operatingSystem=p),u&&(e.programmingLanguage=u),f&&(e.license=f),i){const t=(Array.isArray(i)?i:[i]).map(n=>({"@type":"Offer",...n.price!=null&&{price:n.price},...n.priceCurrency&&{priceCurrency:n.priceCurrency},...n.url&&{url:n.url}}));e.offers=t.length===1?t[0]:t}return e};export{P as generateMathSolverSchema};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate schema.org `ItemList` JSON-LD for a movie carousel (list of
|
|
3
|
+
* `Movie` entries).
|
|
4
|
+
*
|
|
5
|
+
* Each movie item can include director/actor references, offers,
|
|
6
|
+
* aggregate ratings and genre metadata. Images are normalized to
|
|
7
|
+
* `ImageObject` entries.
|
|
8
|
+
*
|
|
9
|
+
* See `MovieCarouselOptions` and `MovieItem` for input details.
|
|
10
|
+
* @returns A JSON-LD compatible `ItemList` of `Movie` objects
|
|
11
|
+
*/
|
|
12
|
+
interface PersonRef {
|
|
13
|
+
name: string;
|
|
14
|
+
url?: string;
|
|
15
|
+
}
|
|
16
|
+
interface MovieOffer {
|
|
17
|
+
price?: string | number;
|
|
18
|
+
priceCurrency?: string;
|
|
19
|
+
availability?: string;
|
|
20
|
+
url?: string;
|
|
21
|
+
}
|
|
22
|
+
interface MovieItem {
|
|
23
|
+
id?: string;
|
|
24
|
+
name: string;
|
|
25
|
+
url?: string;
|
|
26
|
+
image?: string | {
|
|
27
|
+
url: string;
|
|
28
|
+
width?: number;
|
|
29
|
+
height?: number;
|
|
30
|
+
};
|
|
31
|
+
description?: string;
|
|
32
|
+
director?: string | PersonRef | Array<string | PersonRef>;
|
|
33
|
+
actor?: string | PersonRef | Array<string | PersonRef>;
|
|
34
|
+
datePublished?: string;
|
|
35
|
+
duration?: string;
|
|
36
|
+
genre?: string | string[];
|
|
37
|
+
aggregateRating?: {
|
|
38
|
+
ratingValue: number | string;
|
|
39
|
+
reviewCount?: number;
|
|
40
|
+
};
|
|
41
|
+
offers?: MovieOffer | MovieOffer[];
|
|
42
|
+
}
|
|
43
|
+
interface MovieCarouselOptions {
|
|
44
|
+
name?: string;
|
|
45
|
+
url?: string;
|
|
46
|
+
items: MovieItem[];
|
|
47
|
+
skipInvalidCurrency?: boolean;
|
|
48
|
+
}
|
|
49
|
+
declare const generateMovieCarouselSchema: ({ name, url, items, skipInvalidCurrency, }: MovieCarouselOptions) => any;
|
|
50
|
+
|
|
51
|
+
export { generateMovieCarouselSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const u=e=>typeof e=="string"?{"@type":"Person",name:e}:{"@type":"Person",name:e.name,...e.url&&{url:e.url}},h=e=>{if(e)return typeof e=="string"?e:{"@type":"ImageObject",url:e.url,...e.width&&{width:e.width},...e.height&&{height:e.height}}},g=e=>e?/^[A-Z]{3}$/.test(e):!1,y=["InStock","OutOfStock","PreOrder","PreSale","Discontinued","OnlineOnly","InStoreOnly","LimitedAvailability","BackOrder"],v=e=>{if(e)try{const a=String(e);if(a.startsWith("http")){const c=a.replace(/https?:\/\/schema\.org\//i,"");return y.includes(c)?`https://schema.org/${c}`:void 0}return y.includes(a)?`https://schema.org/${a}`:void 0}catch{return}},A=({name:e,url:a,items:c,skipInvalidCurrency:p=!1})=>{const f={"@context":"https://schema.org","@type":"ItemList",itemListElement:c.map((r,m)=>{const i={"@type":"Movie",name:r.name};r.url&&(i.url=r.url),r.id&&(i["@id"]=r.id);const l=h(r.image);if(l&&(i.image=l),r.description&&(i.description=r.description),r.datePublished&&(i.datePublished=r.datePublished),r.duration&&(i.duration=r.duration),r.genre&&(i.genre=Array.isArray(r.genre)?r.genre.join(", "):r.genre),r.director&&(Array.isArray(r.director)?i.director=r.director.map(s=>u(s)):i.director=u(r.director)),r.actor&&(Array.isArray(r.actor)?i.actor=r.actor.map(s=>u(s)):i.actor=u(r.actor)),r.aggregateRating&&(i.aggregateRating={"@type":"AggregateRating",ratingValue:r.aggregateRating.ratingValue,...r.aggregateRating.reviewCount!=null&&{reviewCount:r.aggregateRating.reviewCount}}),r.offers){const s=Array.isArray(r.offers)?r.offers:[r.offers],o=s.map(n=>{if(n.priceCurrency&&!g(n.priceCurrency))return{__invalidCurrency:n.priceCurrency};const t={"@type":"Offer"};if(n.price!=null&&(t.price=n.price),n.priceCurrency&&(t.priceCurrency=n.priceCurrency),n.availability){const d=v(n.availability);d&&(t.availability=d)}return n.url&&(t.url=n.url),t}).filter(n=>n&&!("__invalidCurrency"in n));if(s.some(n=>n.priceCurrency&&!g(n.priceCurrency))&&!p){const n=s.find(t=>t.priceCurrency&&!g(t.priceCurrency));throw new Error(`Invalid currency code: ${n?.priceCurrency}`)}o.length===1?i.offers=o[0]:o.length>1&&(i.offers=o)}return{"@type":"ListItem",position:m+1,item:i}})};return e&&(f.name=e),a&&(f.mainEntityOfPage={"@type":"WebPage","@id":a}),f};export{A as generateMovieCarouselSchema};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate schema.org `Organization` JSON-LD.
|
|
3
|
+
*
|
|
4
|
+
* This helper builds a minimal `Organization` object including `address`,
|
|
5
|
+
* `logo`, `image`, `email`, and `telephone`. The input shape is an
|
|
6
|
+
* application-specific `Organization` interface defined below — the
|
|
7
|
+
* function emits only the provided properties to keep the result
|
|
8
|
+
* compact.
|
|
9
|
+
*
|
|
10
|
+
* @param options - Organization properties (see interface below)
|
|
11
|
+
* @returns A JSON-LD compatible `Organization` object
|
|
12
|
+
*/
|
|
13
|
+
interface Organization {
|
|
14
|
+
addressCountry: string;
|
|
15
|
+
addressLocality: string;
|
|
16
|
+
addressRegion: string;
|
|
17
|
+
appName: string;
|
|
18
|
+
baseUrl: string;
|
|
19
|
+
description: string;
|
|
20
|
+
email: string;
|
|
21
|
+
image: string;
|
|
22
|
+
logo: string;
|
|
23
|
+
postalCode: string;
|
|
24
|
+
sameAsArr: Array<string>;
|
|
25
|
+
streetAddress: string;
|
|
26
|
+
telephone: string;
|
|
27
|
+
}
|
|
28
|
+
declare const generateOrganizationSchema: ({ addressCountry, addressLocality, addressRegion, appName, baseUrl, description, email, image, logo, postalCode, sameAsArr, streetAddress, telephone, }: Organization) => {
|
|
29
|
+
'@context': string;
|
|
30
|
+
'@type': string;
|
|
31
|
+
image: string;
|
|
32
|
+
url: string;
|
|
33
|
+
sameAs: string[];
|
|
34
|
+
logo: string;
|
|
35
|
+
name: string;
|
|
36
|
+
description: string;
|
|
37
|
+
email: string;
|
|
38
|
+
telephone: string;
|
|
39
|
+
address: {
|
|
40
|
+
'@type': string;
|
|
41
|
+
streetAddress: string;
|
|
42
|
+
addressLocality: string;
|
|
43
|
+
addressCountry: string;
|
|
44
|
+
addressRegion: string;
|
|
45
|
+
postalCode: string;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export { generateOrganizationSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const m=({addressCountry:s,addressLocality:e,addressRegion:r,appName:t,baseUrl:a,description:n,email:i,image:o,logo:g,postalCode:d,sameAsArr:l,streetAddress:p,telephone:$})=>({"@context":"https://schema.org","@type":"Organization",image:`${o}`,url:`${a}`,sameAs:l,logo:`${g}`,name:`${t}`,description:`${n}`,email:`${i}`,telephone:`${$}`,address:{"@type":"PostalAddress",streetAddress:`${p}`,addressLocality:`${e}`,addressCountry:`${s}`,addressRegion:`${r}`,postalCode:`${d}`}});export{m as generateOrganizationSchema};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate schema.org `ProfilePage` JSON-LD describing a person or profile.
|
|
3
|
+
*
|
|
4
|
+
* Accepts a `mainEntity` person object along with optional author or
|
|
5
|
+
* organization metadata. Images are normalized to `ImageObject` entries.
|
|
6
|
+
*
|
|
7
|
+
* See `ProfilePageOptions` and `PersonRef` for the input shape.
|
|
8
|
+
* @returns A JSON-LD compatible `ProfilePage` object
|
|
9
|
+
*/
|
|
10
|
+
interface ImageRef {
|
|
11
|
+
url: string;
|
|
12
|
+
width?: number;
|
|
13
|
+
height?: number;
|
|
14
|
+
}
|
|
15
|
+
interface PersonRef {
|
|
16
|
+
name: string;
|
|
17
|
+
url?: string;
|
|
18
|
+
sameAs?: string[];
|
|
19
|
+
jobTitle?: string;
|
|
20
|
+
image?: string | ImageRef;
|
|
21
|
+
}
|
|
22
|
+
interface OrgRef {
|
|
23
|
+
name: string;
|
|
24
|
+
url?: string;
|
|
25
|
+
}
|
|
26
|
+
interface ProfilePageOptions {
|
|
27
|
+
name?: string;
|
|
28
|
+
headline?: string;
|
|
29
|
+
url?: string;
|
|
30
|
+
description?: string;
|
|
31
|
+
mainEntity?: PersonRef;
|
|
32
|
+
author?: PersonRef | OrgRef;
|
|
33
|
+
about?: string[];
|
|
34
|
+
}
|
|
35
|
+
declare const generateProfilePageSchema: ({ name, headline, url, description, mainEntity, author, about, }: ProfilePageOptions) => any;
|
|
36
|
+
|
|
37
|
+
export { generateProfilePageSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const m=e=>{if(e)return typeof e=="string"?e:{"@type":"ImageObject",url:e.url,...e.width&&{width:e.width},...e.height&&{height:e.height}}},o=e=>{if(!e)return;const n={"@type":"Person",name:e.name};e.url&&(n.url=e.url),e.sameAs&&(n.sameAs=e.sameAs),e.jobTitle&&(n.jobTitle=e.jobTitle);const t=m(e.image);return t&&(n.image=t),n},l=e=>{if(!e)return;if(e.jobTitle!==void 0||e.sameAs!==void 0)return o(e);const t={"@type":"Organization",name:e.name};return e.url&&(t.url=e.url),t},P=({name:e,headline:n,url:t,description:s,mainEntity:g,author:u,about:i})=>{const r={"@context":"https://schema.org","@type":"ProfilePage"};e&&(r.name=e),n&&(r.headline=n),t&&(r.mainEntityOfPage={"@type":"WebPage","@id":t}),s&&(r.description=s);const f=o(g);f&&(r.mainEntity=f);const a=l(u);return a&&(r.author=a),i&&i.length>0&&(r.about=i),r};export{P as generateProfilePageSchema};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate schema.org `QAPage` JSON-LD (Question + Answers).
|
|
3
|
+
*
|
|
4
|
+
* The helper formats a single `Question` and its `Answer` entries,
|
|
5
|
+
* including author references and date fields. Use `acceptedAnswer` and
|
|
6
|
+
* `suggestedAnswer` to provide preferred or additional answers.
|
|
7
|
+
*
|
|
8
|
+
* See `QAPageOptions` and related types for the input contract.
|
|
9
|
+
* @returns A JSON-LD compatible `QAPage` object
|
|
10
|
+
*/
|
|
11
|
+
interface PersonRef {
|
|
12
|
+
name: string;
|
|
13
|
+
url?: string;
|
|
14
|
+
}
|
|
15
|
+
interface AnswerItem {
|
|
16
|
+
text: string;
|
|
17
|
+
author?: string | PersonRef;
|
|
18
|
+
datePublished?: string;
|
|
19
|
+
}
|
|
20
|
+
interface QuestionItem {
|
|
21
|
+
name: string;
|
|
22
|
+
text?: string;
|
|
23
|
+
author?: string | PersonRef;
|
|
24
|
+
datePublished?: string;
|
|
25
|
+
answers?: AnswerItem[];
|
|
26
|
+
acceptedAnswer?: AnswerItem;
|
|
27
|
+
}
|
|
28
|
+
interface QAPageOptions {
|
|
29
|
+
headline?: string;
|
|
30
|
+
mainEntity: QuestionItem;
|
|
31
|
+
}
|
|
32
|
+
declare const generateQAPageSchema: ({ headline, mainEntity, }: QAPageOptions) => any;
|
|
33
|
+
|
|
34
|
+
export { generateQAPageSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a=t=>{if(!t)return;if(typeof t=="string")return{"@type":"Person",name:t};const e={"@type":"Person",name:t.name};return t.url&&(e.url=t.url),e},o=t=>{const e={"@type":"Answer"};return t.text&&(e.text=t.text),t.author&&(e.author=a(t.author)),t.datePublished&&(e.datePublished=t.datePublished),e},u=({headline:t,mainEntity:e})=>{const s={"@type":"Question",name:e.name};e.text&&(s.text=e.text),e.author&&(s.author=a(e.author)),e.datePublished&&(s.datePublished=e.datePublished),e.answers&&e.answers.length>0&&(s.answerCount=e.answers.length,s.acceptedAnswer=e.acceptedAnswer?o(e.acceptedAnswer):void 0,s.suggestedAnswer=e.answers.filter(r=>!e.acceptedAnswer||r.text!==e.acceptedAnswer.text).map(r=>o(r)));const n={"@context":"https://schema.org","@type":"QAPage",mainEntity:s};return t&&(n.headline=t),n};export{u as generateQAPageSchema};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate schema.org `Recipe` JSON-LD, with support for `HowToStep`
|
|
3
|
+
* instructions and `ItemList` ingredients.
|
|
4
|
+
*
|
|
5
|
+
* Accepts recipe metadata (times, yields, cuisine, ingredients, steps)
|
|
6
|
+
* and will format steps as `HowToStep` objects and images as `ImageObject`
|
|
7
|
+
* entries when provided.
|
|
8
|
+
*
|
|
9
|
+
* See `RecipeOptions` for the accepted input shape.
|
|
10
|
+
* @returns A JSON-LD compatible `Recipe` object
|
|
11
|
+
*/
|
|
12
|
+
interface ImageRef {
|
|
13
|
+
url: string;
|
|
14
|
+
width?: number;
|
|
15
|
+
height?: number;
|
|
16
|
+
}
|
|
17
|
+
interface PersonRef {
|
|
18
|
+
name: string;
|
|
19
|
+
url?: string;
|
|
20
|
+
}
|
|
21
|
+
interface HowToStep {
|
|
22
|
+
name?: string;
|
|
23
|
+
text: string;
|
|
24
|
+
image?: string | ImageRef;
|
|
25
|
+
url?: string;
|
|
26
|
+
}
|
|
27
|
+
interface AggregateRating {
|
|
28
|
+
ratingValue: number | string;
|
|
29
|
+
reviewCount?: number;
|
|
30
|
+
}
|
|
31
|
+
interface RecipeOptions {
|
|
32
|
+
name: string;
|
|
33
|
+
description?: string;
|
|
34
|
+
image?: string | ImageRef;
|
|
35
|
+
author?: string | PersonRef;
|
|
36
|
+
recipeYield?: string;
|
|
37
|
+
prepTime?: string;
|
|
38
|
+
cookTime?: string;
|
|
39
|
+
totalTime?: string;
|
|
40
|
+
recipeCategory?: string | string[];
|
|
41
|
+
recipeCuisine?: string | string[];
|
|
42
|
+
keywords?: string | string[];
|
|
43
|
+
recipeIngredient?: string[];
|
|
44
|
+
recipeInstructions?: HowToStep[];
|
|
45
|
+
aggregateRating?: AggregateRating;
|
|
46
|
+
}
|
|
47
|
+
declare const generateRecipeSchema: ({ name, description, image, author, recipeYield, prepTime, cookTime, totalTime, recipeCategory, recipeCuisine, keywords, recipeIngredient, recipeInstructions, aggregateRating, }: RecipeOptions) => any;
|
|
48
|
+
|
|
49
|
+
export { generateRecipeSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const y=t=>{if(t)return typeof t=="string"?t:{"@type":"ImageObject",url:t.url,...t.width&&{width:t.width},...t.height&&{height:t.height}}},w=t=>{if(!t)return;if(typeof t=="string")return{"@type":"Person",name:t};const n={"@type":"Person",name:t.name};return t.url&&(n.url=t.url),n},d=t=>{const n={"@type":"HowToStep"};t.name&&(n.name=t.name),t.text&&(n.text=t.text),t.url&&(n.url=t.url);const r=y(t.image);return r&&(n.image=r),n},A=({name:t,description:n,image:r,author:R,recipeYield:u,prepTime:m,cookTime:c,totalTime:h,recipeCategory:i,recipeCuisine:a,keywords:g,recipeIngredient:s,recipeInstructions:f,aggregateRating:o})=>{const e={"@context":"https://schema.org","@type":"Recipe",name:t};n&&(e.description=n);const l=y(r);l&&(e.image=l);const p=w(R);return p&&(e.author=p),u&&(e.recipeYield=u),m&&(e.prepTime=m),c&&(e.cookTime=c),h&&(e.totalTime=h),i&&(e.recipeCategory=Array.isArray(i)?i.join(", "):i),a&&(e.recipeCuisine=Array.isArray(a)?a.join(", "):a),g&&(e.keywords=Array.isArray(g)?g.join(", "):g),s&&s.length>0&&(e.recipeIngredient=s),f&&f.length>0&&(e.recipeInstructions=f.map(d)),o&&(e.aggregateRating={"@type":"AggregateRating",ratingValue:o.ratingValue},o.reviewCount!=null&&(e.aggregateRating.reviewCount=o.reviewCount)),e};export{A as generateRecipeSchema};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface Params {
|
|
2
|
+
refLength: number;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Generates a short reference code from a UUID slice and the current 2-digit year.
|
|
6
|
+
* @param params.refLength - Length of the UUID slice (default 5).
|
|
7
|
+
* @returns The generated reference string.
|
|
8
|
+
*/
|
|
9
|
+
declare const generateRef: ({ refLength }: Params) => string;
|
|
10
|
+
|
|
11
|
+
export { generateRef };
|
package/general/generate-ref.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var s=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var f=(r,e)=>{for(var t in e)s(r,t,{get:e[t],enumerable:!0})},g=(r,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of i(e))!u.call(r,n)&&n!==t&&s(r,n,{get:()=>e[n],enumerable:!(a=c(e,n))||a.enumerable});return r};var m=r=>g(s({},"__esModule",{value:!0}),r);var p={};f(p,{generateRef:()=>l});module.exports=m(p);var o=require("../constants/select-value-delimiter");const l=({refLength:r=5})=>{const{v4:e}=require("uuid"),t=e().toUpperCase().slice(0,r),a=new Date().getFullYear().toString().slice(-2);return`${t}${o.VALUE_DELIMITER.SLASH}${a}`};0&&(module.exports={generateRef});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{VALUE_DELIMITER as a}from"../constants/select-value-delimiter";const o=({refLength:e=5})=>{const{v4:r}=require("uuid"),t=r().toUpperCase().slice(0,e),n=new Date().getFullYear().toString().slice(-2);return`${t}${a.SLASH}${n}`};export{o as generateRef};
|