+ Temizmama Blog İçerik Ekibi olarak kapsamlı araştırmalar sonucunda yerli ve yabancı kaynaklardan edindiğimiz güncel bilgileri toplayıp kedi ve köpeklerle ilgili sorularınıza yanıt buluyor ve ilginç bilgiler paylaşıyoruz.
+
+
- )}
- {author.bio?.html && (
-
+
+
+ Temizmama Blog İçerik Ekibi olarak kapsamlı araştırmalar sonucunda yerli ve yabancı kaynaklardan edindiğimiz güncel bilgileri toplayıp kedi ve köpeklerle ilgili sorularınıza yanıt buluyor ve ilginç bilgiler paylaşıyoruz.
+
- Check your inbox for a confirmation email and click{' '}
- "Confirm and Subscribe" to complete your subscription. Thanks
- for joining us!
-
-
- )}
- >
- );
-};
+// Hashnode beta GraphQL endpoint (gql-beta.hashnode.com) henüz
+// `subscribeToNewsletter` mutation'unu desteklemiyor. Bu component
+// hiçbir sayfaya bağlı değil (orphan), ama tip uyumunu bozmamak için
+// stub olarak korunuyor; mutation geri geldiğinde önceki implementasyon
+// git geçmişinden geri alınabilir.
+export const SubscribeForm = () => null;
diff --git a/packages/blog-starter-kit/themes/enterprise/components/useOnlineStatus.tsx b/packages/blog-starter-kit/themes/enterprise/components/useOnlineStatus.tsx
new file mode 100644
index 000000000..ea121ac95
--- /dev/null
+++ b/packages/blog-starter-kit/themes/enterprise/components/useOnlineStatus.tsx
@@ -0,0 +1,22 @@
+import { useState, useEffect } from 'react';
+
+const useOnlineStatus = () => {
+ const [isOnline, setIsOnline] = useState(true);
+
+ useEffect(() => {
+ const handleOnline = () => setIsOnline(true);
+ const handleOffline = () => setIsOnline(false);
+
+ window.addEventListener('online', handleOnline);
+ window.addEventListener('offline', handleOffline);
+
+ return () => {
+ window.removeEventListener('online', handleOnline);
+ window.removeEventListener('offline', handleOffline);
+ };
+ }, []);
+
+ return isOnline;
+};
+
+export default useOnlineStatus;
\ No newline at end of file
diff --git a/packages/blog-starter-kit/themes/enterprise/favicon.ico b/packages/blog-starter-kit/themes/enterprise/favicon.ico
new file mode 100644
index 000000000..89aa17f41
Binary files /dev/null and b/packages/blog-starter-kit/themes/enterprise/favicon.ico differ
diff --git a/packages/blog-starter-kit/themes/enterprise/generated/graphql.ts b/packages/blog-starter-kit/themes/enterprise/generated/graphql.ts
index 0bc59bb88..c6ac01a82 100644
--- a/packages/blog-starter-kit/themes/enterprise/generated/graphql.ts
+++ b/packages/blog-starter-kit/themes/enterprise/generated/graphql.ts
@@ -14,1723 +14,242 @@ export type Scalars = {
Int: { input: number; output: number; }
Float: { input: number; output: number; }
DateTime: { input: string; output: string; }
+ JSONObject: { input: Record; output: Record; }
ObjectId: { input: string; output: string; }
- URL: { input: any; output: any; }
};
-export type AddCommentInput = {
- contentMarkdown: Scalars['String']['input'];
- postId: Scalars['ID']['input'];
-};
-
-export type AddCommentPayload = {
- __typename?: 'AddCommentPayload';
- comment?: Maybe;
-};
-
-export type AddPostToSeriesInput = {
- /** The ID of the post to be added to the series. */
- postId: Scalars['ObjectId']['input'];
- /** The ID of the series to which the post is to be added. */
- seriesId: Scalars['ObjectId']['input'];
-};
-
-export type AddPostToSeriesPayload = {
- __typename?: 'AddPostToSeriesPayload';
- /** The series to which the post was added. */
- series?: Maybe;
-};
-
-export type AddReplyInput = {
- commentId: Scalars['ID']['input'];
- contentMarkdown: Scalars['String']['input'];
-};
-
-export type AddReplyPayload = {
- __typename?: 'AddReplyPayload';
- reply?: Maybe;
-};
-
-/**
- * Contains the flag indicating if the audio blog feature is enabled or not.
- * User can enable or disable the audio blog feature from the publication settings.
- * Shows audio player on blogs if enabled.
- */
-export type AudioBlogFeature = Feature & {
- __typename?: 'AudioBlogFeature';
- /** A flag indicating if the audio blog feature is enabled or not. */
- isEnabled: Scalars['Boolean']['output'];
- /** The voice type for the audio blog. */
- voiceType: AudioBlogVoiceType;
+export type AbsoluteTimeRange = {
+ from?: InputMaybe;
+ to?: InputMaybe;
};
-/** The voice type for the audio blog. */
-export enum AudioBlogVoiceType {
- /** Enum for the female voice type of the audio blog. */
- Female = 'FEMALE',
- /** Enum for the male voice type of the audio blog. */
- Male = 'MALE'
-}
-
-/** Used when Audioblog feature is enabled. Contains URLs to the audioblog of the post. */
-export type AudioUrls = {
- __typename?: 'AudioUrls';
- /** Female version of audio url of the post. */
- female?: Maybe;
- /** Male version of audio url of the post. */
- male?: Maybe;
-};
-
-/** The status of the backup i.e., success or failure. */
-export enum BackupStatus {
- /** The backup failed. */
- Failed = 'failed',
- /** The backup was successful. */
- Success = 'success'
-}
-
-/** A badge that the user has earned. */
-export type Badge = Node & {
+export type Badge = {
__typename?: 'Badge';
- /** The date the badge was earned. */
- dateAssigned?: Maybe;
- /** The description of the badge. */
description?: Maybe;
- /** The ID of the badge. */
id: Scalars['ID']['output'];
- /** The image of the badge. */
image: Scalars['String']['output'];
- /** Link to badge page on Hashnode. */
- infoURL?: Maybe;
- /** The name of the badge. */
name: Scalars['String']['output'];
- /** A flag to determine if the badge is hidden. */
- suppressed?: Maybe;
};
-/**
- * Contains basic information about the beta feature.
- * A beta feature is a feature that is not yet released to all users.
- */
-export type BetaFeature = Node & {
- __typename?: 'BetaFeature';
- /** The description of the beta feature. */
- description?: Maybe;
- /** The date the beta feature was created. */
- enabled: Scalars['Boolean']['output'];
- /** The ID of the beta feature. */
- id: Scalars['ID']['output'];
- /** The key of the beta feature. */
- key: Scalars['String']['output'];
- /** The title of the beta feature. */
- title?: Maybe;
- /** The url of the beta feature. */
- url?: Maybe;
+export type CheckCustomDomainAvailabilityInput = {
+ domain: Scalars['String']['input'];
};
-export type CancelScheduledDraftInput = {
- /** The Draft ID of the scheduled draft. */
- draftId: Scalars['ID']['input'];
+export type CheckCustomDomainAvailabilityResult = {
+ __typename?: 'CheckCustomDomainAvailabilityResult';
+ available: Scalars['Boolean']['output'];
+ message?: Maybe;
};
-export type CancelScheduledDraftPayload = {
- __typename?: 'CancelScheduledDraftPayload';
- /** Payload returned in response of cancel scheduled post mutation. */
- scheduledPost: ScheduledPost;
+export type CheckSubdomainAvailabilityResult = {
+ __typename?: 'CheckSubdomainAvailabilityResult';
+ available: Scalars['Boolean']['output'];
+ message?: Maybe;
};
-/**
- * Contains basic information about the comment.
- * A comment is a response to a post.
- */
-export type Comment = Node & {
+export type Comment = {
__typename?: 'Comment';
- /** The author of the comment. */
author: User;
- /** The content of the comment in markdown and html format. */
content: Content;
- /** The date the comment was created. */
dateAdded: Scalars['DateTime']['output'];
- /** The ID of the comment. */
id: Scalars['ID']['output'];
- /** Total number of reactions on the comment by the authenticated user. User must be authenticated to use this field. */
- myTotalReactions: Scalars['Int']['output'];
- /** Returns a list of replies to the comment. */
- replies: CommentReplyConnection;
- /** A unique string identifying the comment. Used as element id in the DOM on hashnode blogs. */
- stamp?: Maybe;
- /** Total number of reactions on the comment. Reactions are hearts added to any comment. */
+ replies: CommentConnection;
totalReactions: Scalars['Int']['output'];
};
-/**
- * Contains basic information about the comment.
- * A comment is a response to a post.
- */
export type CommentRepliesArgs = {
after?: InputMaybe;
first: Scalars['Int']['input'];
};
-/**
- * Connection to get list of replies to a comment.
- * Returns a list of edges which contains the posts in publication and cursor to the last item of the previous page.
- */
-export type CommentReplyConnection = Connection & {
- __typename?: 'CommentReplyConnection';
- /**
- * A list of edges containing nodes in the connection.
- * A node contains a reply to a comment.
- */
- edges: Array;
- /** Information to aid in pagination. */
+export type CommentConnection = {
+ __typename?: 'CommentConnection';
+ edges: Array;
pageInfo: PageInfo;
- /** The total number of documents in the connection. */
- totalDocuments: Scalars['Int']['output'];
};
-/** An edge that contains a node of type reply and cursor to the node. */
-export type CommentReplyEdge = Edge & {
- __typename?: 'CommentReplyEdge';
- /** A cursor to the last item of the previous page. */
+export type CommentEdge = {
+ __typename?: 'CommentEdge';
cursor: Scalars['String']['output'];
- /** The node containing a reply to a comment. */
- node: Reply;
-};
-
-/**
- * Connection to get list of top commenters. Contains a list of edges containing nodes.
- * Each node is a user who commented recently.
- * Page info contains information about pagination like hasNextPage and endCursor.
- */
-export type CommenterUserConnection = Connection & {
- __typename?: 'CommenterUserConnection';
- /** A list of edges of commenters. */
- edges: Array;
- /** Information to aid in pagination. */
- pageInfo: PageInfo;
-};
-
-/**
- * Connection to get list of items.
- * Returns a list of edges which contains the items and cursor to the last item of the previous page.
- * This is a common interface for all connections.
- */
-export type Connection = {
- /** A list of edges of items connection. */
- edges: Array;
- /** Information to aid in pagination. */
- pageInfo: PageInfo;
+ node: Comment;
};
export type Content = {
__typename?: 'Content';
- /** The HTML version of the content. */
html: Scalars['String']['output'];
- /** The Markdown version of the content. */
markdown: Scalars['String']['output'];
- /** The text version from sanitized html content. HTML tags are stripped and only text is returned. */
text: Scalars['String']['output'];
};
-/** Two letter ISO 3166-1 alpha-2 country code. */
-export enum CountryCodeAlpha2 {
- /** Andorra */
- Ad = 'AD',
- /** United Arab Emirates */
- Ae = 'AE',
- /** Afghanistan */
- Af = 'AF',
- /** Antigua and Barbuda */
- Ag = 'AG',
- /** Anguilla */
- Ai = 'AI',
- /** Albania */
- Al = 'AL',
- /** Armenia */
- Am = 'AM',
- /** Angola */
- Ao = 'AO',
- /** Antarctica */
- Aq = 'AQ',
- /** Argentina */
- Ar = 'AR',
- /** American Samoa */
- As = 'AS',
- /** Austria */
- At = 'AT',
- /** Australia */
- Au = 'AU',
- /** Aruba */
- Aw = 'AW',
- /** Åland Islands */
- Ax = 'AX',
- /** Azerbaijan */
- Az = 'AZ',
- /** Bosnia and Herzegovina */
- Ba = 'BA',
- /** Barbados */
- Bb = 'BB',
- /** Bangladesh */
- Bd = 'BD',
- /** Belgium */
- Be = 'BE',
- /** Burkina Faso */
- Bf = 'BF',
- /** Bulgaria */
- Bg = 'BG',
- /** Bahrain */
- Bh = 'BH',
- /** Burundi */
- Bi = 'BI',
- /** Benin */
- Bj = 'BJ',
- /** Saint Barthélemy */
- Bl = 'BL',
- /** Bermuda */
- Bm = 'BM',
- /** Brunei Darussalam */
- Bn = 'BN',
- /** Bolivia (Plurinational State of) */
- Bo = 'BO',
- /** Bonaire, Sint Eustatius and Saba */
- Bq = 'BQ',
- /** Brazil */
- Br = 'BR',
- /** Bahamas */
- Bs = 'BS',
- /** Bhutan */
- Bt = 'BT',
- /** Bouvet Island */
- Bv = 'BV',
- /** Botswana */
- Bw = 'BW',
- /** Belarus */
- By = 'BY',
- /** Belize */
- Bz = 'BZ',
- /** Canada */
- Ca = 'CA',
- /** Cocos (Keeling) Islands */
- Cc = 'CC',
- /** Congo, Democratic Republic of the */
- Cd = 'CD',
- /** Central African Republic */
- Cf = 'CF',
- /** Congo */
- Cg = 'CG',
- /** Switzerland */
- Ch = 'CH',
- /** Côte d'Ivoire */
- Ci = 'CI',
- /** Cook Islands */
- Ck = 'CK',
- /** Chile */
- Cl = 'CL',
- /** Cameroon */
- Cm = 'CM',
- /** China */
- Cn = 'CN',
- /** Colombia */
- Co = 'CO',
- /** Costa Rica */
- Cr = 'CR',
- /** Cuba */
- Cu = 'CU',
- /** Cabo Verde */
- Cv = 'CV',
- /** Curaçao */
- Cw = 'CW',
- /** Christmas Island */
- Cx = 'CX',
- /** Cyprus */
- Cy = 'CY',
- /** Czechia */
- Cz = 'CZ',
- /** Germany */
- De = 'DE',
- /** Djibouti */
- Dj = 'DJ',
- /** Denmark */
- Dk = 'DK',
- /** Dominica */
- Dm = 'DM',
- /** Dominican Republic */
- Do = 'DO',
- /** Algeria */
- Dz = 'DZ',
- /** Ecuador */
- Ec = 'EC',
- /** Estonia */
- Ee = 'EE',
- /** Egypt */
- Eg = 'EG',
- /** Western Sahara */
- Eh = 'EH',
- /** Eritrea */
- Er = 'ER',
- /** Spain */
- Es = 'ES',
- /** Ethiopia */
- Et = 'ET',
- /** Finland */
- Fi = 'FI',
- /** Fiji */
- Fj = 'FJ',
- /** Falkland Islands (Malvinas) */
- Fk = 'FK',
- /** Micronesia (Federated States of) */
- Fm = 'FM',
- /** Faroe Islands */
- Fo = 'FO',
- /** France */
- Fr = 'FR',
- /** Gabon */
- Ga = 'GA',
- /** United Kingdom of Great Britain and Northern Ireland */
- Gb = 'GB',
- /** Grenada */
- Gd = 'GD',
- /** Georgia */
- Ge = 'GE',
- /** French Guiana */
- Gf = 'GF',
- /** Guernsey */
- Gg = 'GG',
- /** Ghana */
- Gh = 'GH',
- /** Gibraltar */
- Gi = 'GI',
- /** Greenland */
- Gl = 'GL',
- /** Gambia */
- Gm = 'GM',
- /** Guinea */
- Gn = 'GN',
- /** Guadeloupe */
- Gp = 'GP',
- /** Equatorial Guinea */
- Gq = 'GQ',
- /** Greece */
- Gr = 'GR',
- /** South Georgia and the South Sandwich Islands */
- Gs = 'GS',
- /** Guatemala */
- Gt = 'GT',
- /** Guam */
- Gu = 'GU',
- /** Guinea-Bissau */
- Gw = 'GW',
- /** Guyana */
- Gy = 'GY',
- /** Hong Kong */
- Hk = 'HK',
- /** Heard Island and McDonald Islands */
- Hm = 'HM',
- /** Honduras */
- Hn = 'HN',
- /** Croatia */
- Hr = 'HR',
- /** Haiti */
- Ht = 'HT',
- /** Hungary */
- Hu = 'HU',
- /** Indonesia */
- Id = 'ID',
- /** Ireland */
- Ie = 'IE',
- /** Israel */
- Il = 'IL',
- /** Isle of Man */
- Im = 'IM',
- /** India */
- In = 'IN',
- /** British Indian Ocean Territory */
- Io = 'IO',
- /** Iraq */
- Iq = 'IQ',
- /** Iran (Islamic Republic of) */
- Ir = 'IR',
- /** Iceland */
- Is = 'IS',
- /** Italy */
- It = 'IT',
- /** Jersey */
- Je = 'JE',
- /** Jamaica */
- Jm = 'JM',
- /** Jordan */
- Jo = 'JO',
- /** Japan */
- Jp = 'JP',
- /** Kenya */
- Ke = 'KE',
- /** Kyrgyzstan */
- Kg = 'KG',
- /** Cambodia */
- Kh = 'KH',
- /** Kiribati */
- Ki = 'KI',
- /** Comoros */
- Km = 'KM',
- /** Saint Kitts and Nevis */
- Kn = 'KN',
- /** Korea (Democratic People's Republic of) */
- Kp = 'KP',
- /** Korea, Republic of */
- Kr = 'KR',
- /** Kuwait */
- Kw = 'KW',
- /** Cayman Islands */
- Ky = 'KY',
- /** Kazakhstan */
- Kz = 'KZ',
- /** Lao People's Democratic Republic */
- La = 'LA',
- /** Lebanon */
- Lb = 'LB',
- /** Saint Lucia */
- Lc = 'LC',
- /** Liechtenstein */
- Li = 'LI',
- /** Sri Lanka */
- Lk = 'LK',
- /** Liberia */
- Lr = 'LR',
- /** Lesotho */
- Ls = 'LS',
- /** Lithuania */
- Lt = 'LT',
- /** Luxembourg */
- Lu = 'LU',
- /** Latvia */
- Lv = 'LV',
- /** Libya */
- Ly = 'LY',
- /** Morocco */
- Ma = 'MA',
- /** Monaco */
- Mc = 'MC',
- /** Moldova, Republic of */
- Md = 'MD',
- /** Montenegro */
- Me = 'ME',
- /** Saint Martin (French part) */
- Mf = 'MF',
- /** Madagascar */
- Mg = 'MG',
- /** Marshall Islands */
- Mh = 'MH',
- /** North Macedonia */
- Mk = 'MK',
- /** Mali */
- Ml = 'ML',
- /** Myanmar */
- Mm = 'MM',
- /** Mongolia */
- Mn = 'MN',
- /** Macao */
- Mo = 'MO',
- /** Northern Mariana Islands */
- Mp = 'MP',
- /** Martinique */
- Mq = 'MQ',
- /** Mauritania */
- Mr = 'MR',
- /** Montserrat */
- Ms = 'MS',
- /** Malta */
- Mt = 'MT',
- /** Mauritius */
- Mu = 'MU',
- /** Maldives */
- Mv = 'MV',
- /** Malawi */
- Mw = 'MW',
- /** Mexico */
- Mx = 'MX',
- /** Malaysia */
- My = 'MY',
- /** Mozambique */
- Mz = 'MZ',
- /** Namibia */
- Na = 'NA',
- /** New Caledonia */
- Nc = 'NC',
- /** Niger */
- Ne = 'NE',
- /** Norfolk Island */
- Nf = 'NF',
- /** Nigeria */
- Ng = 'NG',
- /** Nicaragua */
- Ni = 'NI',
- /** Netherlands */
- Nl = 'NL',
- /** Norway */
- No = 'NO',
- /** Nepal */
- Np = 'NP',
- /** Nauru */
- Nr = 'NR',
- /** Niue */
- Nu = 'NU',
- /** New Zealand */
- Nz = 'NZ',
- /** Oman */
- Om = 'OM',
- /** Panama */
- Pa = 'PA',
- /** Peru */
- Pe = 'PE',
- /** French Polynesia */
- Pf = 'PF',
- /** Papua New Guinea */
- Pg = 'PG',
- /** Philippines */
- Ph = 'PH',
- /** Pakistan */
- Pk = 'PK',
- /** Poland */
- Pl = 'PL',
- /** Saint Pierre and Miquelon */
- Pm = 'PM',
- /** Pitcairn */
- Pn = 'PN',
- /** Puerto Rico */
- Pr = 'PR',
- /** Palestine, State of */
- Ps = 'PS',
- /** Portugal */
- Pt = 'PT',
- /** Palau */
- Pw = 'PW',
- /** Paraguay */
- Py = 'PY',
- /** Qatar */
- Qa = 'QA',
- /** Réunion */
- Re = 'RE',
- /** Romania */
- Ro = 'RO',
- /** Serbia */
- Rs = 'RS',
- /** Russian Federation */
- Ru = 'RU',
- /** Rwanda */
- Rw = 'RW',
- /** Saudi Arabia */
- Sa = 'SA',
- /** Solomon Islands */
- Sb = 'SB',
- /** Seychelles */
- Sc = 'SC',
- /** Sudan */
- Sd = 'SD',
- /** Sweden */
- Se = 'SE',
- /** Singapore */
- Sg = 'SG',
- /** Saint Helena, Ascension and Tristan da Cunha */
- Sh = 'SH',
- /** Slovenia */
- Si = 'SI',
- /** Svalbard and Jan Mayen */
- Sj = 'SJ',
- /** Slovakia */
- Sk = 'SK',
- /** Sierra Leone */
- Sl = 'SL',
- /** San Marino */
- Sm = 'SM',
- /** Senegal */
- Sn = 'SN',
- /** Somalia */
- So = 'SO',
- /** Suriname */
- Sr = 'SR',
- /** South Sudan */
- Ss = 'SS',
- /** Sao Tome and Principe */
- St = 'ST',
- /** El Salvador */
- Sv = 'SV',
- /** Sint Maarten (Dutch part) */
- Sx = 'SX',
- /** Syrian Arab Republic */
- Sy = 'SY',
- /** Eswatini */
- Sz = 'SZ',
- /** Turks and Caicos Islands */
- Tc = 'TC',
- /** Chad */
- Td = 'TD',
- /** French Southern Territories */
- Tf = 'TF',
- /** Togo */
- Tg = 'TG',
- /** Thailand */
- Th = 'TH',
- /** Tajikistan */
- Tj = 'TJ',
- /** Tokelau */
- Tk = 'TK',
- /** Timor-Leste */
- Tl = 'TL',
- /** Turkmenistan */
- Tm = 'TM',
- /** Tunisia */
- Tn = 'TN',
- /** Tonga */
- To = 'TO',
- /** Turkey */
- Tr = 'TR',
- /** Trinidad and Tobago */
- Tt = 'TT',
- /** Tuvalu */
- Tv = 'TV',
- /** Taiwan, Province of China */
- Tw = 'TW',
- /** Tanzania, United Republic of */
- Tz = 'TZ',
- /** Ukraine */
- Ua = 'UA',
- /** Uganda */
- Ug = 'UG',
- /** United States Minor Outlying Islands */
- Um = 'UM',
- /** United States of America */
- Us = 'US',
- /** Uruguay */
- Uy = 'UY',
- /** Uzbekistan */
- Uz = 'UZ',
- /** Holy See */
- Va = 'VA',
- /** Saint Vincent and the Grenadines */
- Vc = 'VC',
- /** Venezuela (Bolivarian Republic of) */
- Ve = 'VE',
- /** Virgin Islands (British) */
- Vg = 'VG',
- /** Virgin Islands (U.S.) */
- Vi = 'VI',
- /** Viet Nam */
- Vn = 'VN',
- /** Vanuatu */
- Vu = 'VU',
- /** Wallis and Futuna */
- Wf = 'WF',
- /** Samoa */
- Ws = 'WS',
- /** Yemen */
- Ye = 'YE',
- /** Mayotte */
- Yt = 'YT',
- /** South Africa */
- Za = 'ZA',
- /** Zambia */
- Zm = 'ZM',
- /** Zimbabwe */
- Zw = 'ZW',
- /** Unknown */
- Zz = 'ZZ'
-}
-
-/** Contains information about cover image options of the post. Like URL of the cover image, attribution, etc. */
-export type CoverImageOptionsInput = {
- /** Information about the cover image attribution. */
- coverImageAttribution?: InputMaybe;
- /** The name of the cover image photographer, used when cover was chosen from unsplash. */
- coverImagePhotographer?: InputMaybe;
- /** The URL of the cover image. */
- coverImageURL?: InputMaybe;
- /** A flag to indicate if the cover attribution is hidden, used when cover was chosen from unsplash. */
- isCoverAttributionHidden?: InputMaybe;
- /** A flag to indicate if the cover image is sticked to bottom. */
- stickCoverToBottom?: InputMaybe;
-};
-
-export type CreateDraftInput = {
- /** Ids of the co-authors of the resulting draft. */
- coAuthors?: InputMaybe>;
- /** Content of the resulting draft in markdown format. */
- contentMarkdown?: InputMaybe;
- /** Options for the cover image of the resulting draft. */
- coverImageOptions?: InputMaybe;
- /** A flag to indicate if the comments are disabled for the resulting draft. */
- disableComments?: InputMaybe;
- /** Information about the meta tags added to the resulting draft, used for SEO purpose. */
- metaTags?: InputMaybe;
- /** The URL of the original article if the draft is imported from an external source. */
- originalArticleURL?: InputMaybe;
- /** The ID of publication the draft and resulting post belongs to. */
- publicationId: Scalars['ID']['input'];
- /**
- * Publish the draft on behalf of another user who is a member of the publication.
- *
- * Only applicable for team publications.
- */
- publishAs?: InputMaybe;
- /** Date when the resulting draft is published. */
- publishedAt?: InputMaybe;
- /** Providing a seriesId will add the resulting draft to that series. */
- seriesId?: InputMaybe;
- /** Settings for the resulting draft like table of contents and newsletter activation. */
- settings?: InputMaybe;
- /** Slug of the resulting draft. */
- slug?: InputMaybe;
- /** The subtitle of the resulting draft. */
- subtitle?: InputMaybe;
- /** A list of tags added to the resulting draft. */
- tags?: InputMaybe>;
- /** The title of the resulting draft. */
- title?: InputMaybe;
-};
-
-export type CreateDraftPayload = {
- __typename?: 'CreateDraftPayload';
- /** The newly created draft */
- draft?: Maybe;
-};
-
-export type CreateDraftSettingsInput = {
- /** Whether to send a newsletter for the resulting draft's post. */
- activateNewsletter?: InputMaybe;
- /** A flag to indicate if the resulting draft should be delisted, used to hide the post created from the draft from public feed. */
- delist?: InputMaybe;
- /** A flag to indicate if the resulting draft'S post should contain a table of content */
- enableTableOfContent?: InputMaybe;
- /** Flag to indicate if the slug is overridden by the user. */
- slugOverridden?: InputMaybe;
-};
-
-export type CreateDraftTagInput = {
- /**
- * A tag id that is referencing an existing tag.
- *
- * Either this or name and slug should be provided. If both are provided, the id will be used.
- */
- id?: InputMaybe;
- /**
- * A name of a new tag to create.
- *
- * Either this and slug or id should be provided. If both are provided, the id will be used.
- */
- name?: InputMaybe;
- /**
- * A slug of a new tag to create.
- *
- * Either this and name or id should be provided. If both are provided, the id will be used.
- */
- slug?: InputMaybe;
-};
-
-export type CreateSeriesInput = {
- /** The cover image of the series. */
- coverImage?: InputMaybe;
- /** The description of the series. Accepts markdown. */
- descriptionMarkdown?: InputMaybe;
- /** The name of the series. */
- name: Scalars['String']['input'];
- /** The id of the publication the series belongs to. */
- publicationId: Scalars['ID']['input'];
- /** The slug of the series. Used to access series page. Example https://johndoe.com/series/series-slug */
- slug: Scalars['String']['input'];
- /** The sort order of the series, determines if the latest posts should appear first or last in series. */
- sortOrder?: InputMaybe;
-};
-
-export type CreateSeriesPayload = {
- __typename?: 'CreateSeriesPayload';
- /** Returns the created series. */
- series: Series;
-};
-
-export type CreateWebhookInput = {
- events: Array;
- publicationId: Scalars['ID']['input'];
- secret: Scalars['String']['input'];
- url: Scalars['String']['input'];
+export type CoverImage = {
+ __typename?: 'CoverImage';
+ attribution?: Maybe;
+ isAttributionHidden?: Maybe;
+ isPortrait?: Maybe;
+ photographer?: Maybe;
+ url?: Maybe;
};
-export type CreateWebhookPayload = {
- __typename?: 'CreateWebhookPayload';
- webhook?: Maybe;
+export type CreateImageUploadInput = {
+ /** The content type of the image. Must start with "image/". Example: "image/png". */
+ contentType: Scalars['String']['input'];
};
-export type CustomCss = {
- __typename?: 'CustomCSS';
- /** Custom CSS that will be applied on the publication homepage. */
- home?: Maybe;
- /** The same as `home` but minified. */
- homeMinified?: Maybe;
- /** Custom CSS that will be applied on all posts of the publication. */
- post?: Maybe;
- /** The same as `post` but minified. */
- postMinified?: Maybe;
- /** Custom CSS that will be applied on all static pages of the publication. */
- static?: Maybe;
- /** The same as `static` but minified. */
- staticMinified?: Maybe;
+export type CreateImageUploadPayload = {
+ __typename?: 'CreateImageUploadPayload';
+ presignedPost: PresignedPost;
};
-export type CustomCssFeature = Feature & {
- __typename?: 'CustomCSSFeature';
- /** CSS that is not published yet. */
- draft?: Maybe;
- /** A flag indicating if the custom CSS feature is enabled or not. */
- isEnabled: Scalars['Boolean']['output'];
- /** CSS that is live. */
- published?: Maybe;
+export type CustomRule = {
+ __typename?: 'CustomRule';
+ destination: Scalars['String']['output'];
+ path: Scalars['String']['output'];
+ type: Scalars['Int']['output'];
};
-export enum CustomDomainStatus {
- Invalid = 'INVALID',
- Valid = 'VALID',
- Verifying = 'VERIFYING'
-}
-
-/** Contains the publication's dark mode preferences. */
export type DarkModePreferences = {
__typename?: 'DarkModePreferences';
- /** A flag indicating if the dark mode is enabled for the publication. */
- enabled?: Maybe;
- /** The custom dark mode logo of the publication. */
+ enabled: Scalars['Boolean']['output'];
logo?: Maybe;
};
-export type DeleteRoleBasedInviteInput = {
- /** The ID of the role based invite. */
- inviteId: Scalars['ID']['input'];
- publicationId: Scalars['ID']['input'];
+export type DocumentationProject = {
+ __typename?: 'DocumentationProject';
+ guides: GuideConnection;
+ id: Scalars['ID']['output'];
+ slug: Scalars['String']['output'];
+ title: Scalars['String']['output'];
};
-/** Response to deleting a role based invite. */
-export type DeleteRoleBasedInvitePayload = {
- __typename?: 'DeleteRoleBasedInvitePayload';
- /** Deleted invite. */
- invite: RoleBasedInvite;
-};
-export type DeleteWebhookPayload = {
- __typename?: 'DeleteWebhookPayload';
- webhook?: Maybe;
+export type DocumentationProjectGuidesArgs = {
+ after?: InputMaybe;
+ first: Scalars['Int']['input'];
};
-export enum DeviceType {
- Desktop = 'DESKTOP',
- Laptop = 'LAPTOP',
- Mobile = 'MOBILE',
- Tablet = 'TABLET'
-}
+export type Domain = {
+ __typename?: 'Domain';
+ host: Scalars['String']['output'];
+ ready: Scalars['Boolean']['output'];
+};
-/** Contains the publication's domain information. */
export type DomainInfo = {
__typename?: 'DomainInfo';
- /** The domain of the publication. */
- domain?: Maybe;
- /**
- * The subdomain of the publication on hashnode.dev.
- *
- * It will redirect to you custom domain if it is present and ready.
- */
+ domain?: Maybe;
hashnodeSubdomain?: Maybe;
- /** The www prefixed domain of the publication. Says if redirect to www domain is configured. */
- wwwPrefixedDomain?: Maybe;
+ wwwPrefixedDomain?: Maybe;
};
-/** Contains the publication's domain status. */
-export type DomainStatus = {
- __typename?: 'DomainStatus';
- /** The host of the publication domain. */
- host: Scalars['String']['output'];
- /** A flag indicating if the publication domain is ready. */
- ready: Scalars['Boolean']['output'];
- /** A flag indicating the status of a publication domain */
- status: CustomDomainStatus;
- /**
- * A timestamp indicating when the domain was verified.
- * It is only present if the domain is verified.
- */
- verifiedAt?: Maybe;
-};
-
-/**
- * Contains basic information about the draft.
- * A draft is a post that is not published yet.
- */
-export type Draft = Node & {
+export type Draft = {
__typename?: 'Draft';
- /** The author of the draft. */
author: User;
- canonicalUrl?: Maybe;
- /**
- * Returns the user details of the co-authors of the post.
- * Hashnode users can add up to 4 co-authors as collaborators to their posts.
- * This functionality is limited to teams publication.
- */
- coAuthors?: Maybe>;
- /** Content of the draft in HTML and markdown */
content?: Maybe;
- /** The cover image preference of the draft. Contains cover image URL and other details. */
- coverImage?: Maybe;
- /**
- * The date the draft was updated.
- * @deprecated Use updatedAt instead. Will be removed on 26/12/2023.
- */
- dateUpdated: Scalars['DateTime']['output'];
- /** Draft feature-related fields. */
- features: DraftFeatures;
- /** The ID of the draft. */
+ coverImage?: Maybe;
id: Scalars['ID']['output'];
- /** Information about the last backup of the draft. */
- lastBackup?: Maybe;
- /** The date the draft last failed to back up. */
- lastFailedBackupAt?: Maybe;
- /** The date the draft was last successfully backed up. */
- lastSuccessfulBackupAt?: Maybe;
- /** OG meta-data of the draft. Contains image url used in open graph meta tags. */
- ogMetaData?: Maybe;
- readTimeInMinutes: Scalars['Int']['output'];
- /** The date the draft is scheduled to be published. */
+ publishAs?: Maybe;
scheduledDate?: Maybe;
- /** SEO information of the draft. Contains title and description used in meta tags. */
- seo?: Maybe;
- /** Information of the series the draft belongs to. */
- series?: Maybe;
- settings: DraftSettings;
- slug: Scalars['String']['output'];
- /** The subtitle of the draft. It would become the subtitle of the post when published. */
+ settings?: Maybe;
+ slug?: Maybe;
subtitle?: Maybe;
- /**
- * Returns list of tags added to the draft. Contains tag id, name, slug, etc.
- * @deprecated Use tagsV2 instead. Will be removed on 26/02/2024.
- */
- tags: Array;
- tagsV2: Array;
- /** The title of the draft. It would become the title of the post when published. */
+ tags?: Maybe>;
title?: Maybe;
updatedAt: Scalars['DateTime']['output'];
};
-export type DraftBackup = {
- __typename?: 'DraftBackup';
- /** The date the backup was created. */
- at?: Maybe;
- /** The status of the backup i.e., success or failure. */
- status?: Maybe;
-};
-
-/**
- * Contains basic information about a Tag within a Draft.
- * A tag in a draft is a tag that is not published yet.
- */
-export type DraftBaseTag = {
- __typename?: 'DraftBaseTag';
- /** The name of the tag. Shown in tag page. */
- name: Scalars['String']['output'];
- /** The slug of the tag. Used to access tags feed. Example https://hashnode.com/n/graphql */
- slug: Scalars['String']['output'];
-};
-
-/**
- * Connection to get list of drafts.
- * Returns a list of edges which contains the draft and cursor to the last item of the previous page.
- */
-export type DraftConnection = Connection & {
- __typename?: 'DraftConnection';
- /** A list of edges of drafts connection. */
- edges: Array;
- /** Information to aid in pagination. */
- pageInfo: PageInfo;
- /** The total number of documents in the connection. */
- totalDocuments: Scalars['Int']['output'];
-};
-
-/** Contains information about the cover image of the draft. */
-export type DraftCoverImage = {
- __typename?: 'DraftCoverImage';
- /** Provides attribution information for the cover image, if available. */
- attribution?: Maybe;
- /** True if the image attribution should be hidden. */
- isAttributionHidden: Scalars['Boolean']['output'];
- /** The name of the photographer who captured the cover image. */
- photographer?: Maybe;
- /** The URL of the cover image. */
- url: Scalars['String']['output'];
-};
-
-/** An edge that contains a node of type draft and cursor to the node. */
-export type DraftEdge = Edge & {
- __typename?: 'DraftEdge';
- /** A cursor for use in pagination. */
- cursor: Scalars['String']['output'];
- /** A node in the connection containing a draft. */
- node: Draft;
-};
-
-export type DraftFeatures = {
- __typename?: 'DraftFeatures';
- tableOfContents: TableOfContentsFeature;
-};
-
-export type DraftSettings = {
- __typename?: 'DraftSettings';
- /** A flag to indicate if the comments are disabled for the post. */
- disableComments: Scalars['Boolean']['output'];
- /** Whether or not the post is hidden from the Hashnode community. */
- isDelisted: Scalars['Boolean']['output'];
- /** A flag to indicate if the cover image is shown below title of the post. Default position of cover is top of title. */
- stickCoverToBottom: Scalars['Boolean']['output'];
-};
-
-export type DraftTag = DraftBaseTag | Tag;
-
-/**
- * An edge that contains a node and cursor to the node.
- * This is a common interface for all edges.
- */
-export type Edge = {
- /** A cursor for use in pagination. */
- cursor: Scalars['String']['output'];
- /** A node in the connection. */
- node: Node;
-};
-
-/** The input for the email import acknowledgement mutation. */
-export type EmailCurrentImport = {
- __typename?: 'EmailCurrentImport';
- /** The number of subscribers that have attempted to import */
- attemptedToImport?: Maybe;
- /** The filename of the csv file containing emails */
- filename?: Maybe;
- /** The date the import started */
- importStartedAt: Scalars['DateTime']['output'];
- /** The status of the import */
- status: EmailImportStatus;
- /** The number of subscribers that have been successfully imported */
- successfullyImported?: Maybe;
-};
-
-/** Contains information about the email import. */
-export type EmailImport = {
- __typename?: 'EmailImport';
- /** Contains information about the current import example if it is in progress or has finished, date started, etc */
- currentImport?: Maybe;
-};
-
-/** The status of the email import. */
-export enum EmailImportStatus {
- /** There was an error during the import. */
- Failed = 'FAILED',
- /** The import has been acknowledged by the user. */
- Finished = 'FINISHED',
- /** Import has been initialized but is not yet in progress. */
- Initialized = 'INITIALIZED',
- /** Import is in progress. */
- InProgress = 'IN_PROGRESS',
- /** Import has to be reviewed by Hashnode. It is not yet reviewed. */
- InReview = 'IN_REVIEW',
- /** The has been rejected. Nothing has been imported. */
- Rejected = 'REJECTED',
- /** Import was successful. New emails have been imported. */
- Success = 'SUCCESS'
-}
-
-/** Common fields that describe a feature. */
-export type Feature = {
- /** Whether the feature is enabled or not. */
- isEnabled: Scalars['Boolean']['output'];
-};
-
-export type FeedFilter = {
- /** Adds a filter to return posts with maximum number of minutes required to read the post. */
- maxReadTime?: InputMaybe;
- /** Adds a filter to return posts with minimum number of minutes required to read the post. */
- minReadTime?: InputMaybe;
- /** Adds a filter to return posts with tagged with provided tags only. */
- tags?: InputMaybe>;
- /** The type of feed to be returned. */
- type?: InputMaybe;
-};
-
-/**
- * Connection for posts within a feed. Contains a list of edges containing nodes.
- * Each node is a post.
- * Page info contains information about pagination like hasNextPage and endCursor.
- */
-export type FeedPostConnection = Connection & {
- __typename?: 'FeedPostConnection';
- /** A list of edges containing Post information */
- edges: Array;
- /** Information for pagination in Post connection. */
- pageInfo: PageInfo;
-};
-
-/** Contains information about type of feed to be returned. */
-export enum FeedType {
- /** Returns posts which were bookmarked by the user, sorted based on recency. */
- Bookmarks = 'BOOKMARKS',
- /** Returns posts which were featured, sorted based on recency. */
- Featured = 'FEATURED',
- /**
- * Returns only posts of the users you follow or publications you have subscribed to.
- *
- * Note: You have to be authenticated to use this feed type.
- */
- Following = 'FOLLOWING',
- /**
- * Returns only posts based on users following and interactions.
- *
- * Personalised feed is curated per requesting user basis.
- */
- Personalized = 'PERSONALIZED',
- /** Returns posts which were viewed by the user, sorted based on recency. */
- ReadingHistory = 'READING_HISTORY',
- /** Returns posts which were published recently, sorted based on recency. */
- Recent = 'RECENT',
- /** Returns posts based on old personalization algorithm. */
- Relevant = 'RELEVANT'
-}
-
-/** Views implementation that will be returned if grouping by browser. */
-export type GroupedByBrowserViews = Node & Views & {
- __typename?: 'GroupedByBrowserViews';
- /** The browser that these views belong to. */
- browser: Scalars['String']['output'];
- id: Scalars['ID']['output'];
- /** The aggregated views. */
- total: Scalars['Int']['output'];
-};
-
-/** Visitors implementation that will be returned if grouping by browser. */
-export type GroupedByBrowserVisitors = Node & Visitors & {
- __typename?: 'GroupedByBrowserVisitors';
- /** The browser that these views belong to. */
- browser: Scalars['String']['output'];
- id: Scalars['ID']['output'];
- /** The aggregated number of visitors. */
- total: Scalars['Int']['output'];
-};
-
-/** Views implementation that will be returned if grouping by country. */
-export type GroupedByCountryViews = Node & Views & {
- __typename?: 'GroupedByCountryViews';
- /** The country that these views belong to. */
- country: CountryCodeAlpha2;
- id: Scalars['ID']['output'];
- /** The aggregated views. */
- total: Scalars['Int']['output'];
-};
-
-/** Visitors implementation that will be returned if grouping by country. */
-export type GroupedByCountryVisitors = Node & Visitors & {
- __typename?: 'GroupedByCountryVisitors';
- /** The country that these views belong to. */
- country: CountryCodeAlpha2;
- id: Scalars['ID']['output'];
- /** The aggregated number of visitors. */
- total: Scalars['Int']['output'];
-};
-
-/** Views implementation that will be returned if grouping by device type. */
-export type GroupedByDeviceTypeViews = Node & Views & {
- __typename?: 'GroupedByDeviceTypeViews';
- /** The type of device that these views belong to. */
- deviceType: DeviceType;
- id: Scalars['ID']['output'];
- /** The aggregated views. */
- total: Scalars['Int']['output'];
-};
-
-/** Visitors implementation that will be returned if grouping by device type. */
-export type GroupedByDeviceTypeVisitors = Node & Visitors & {
- __typename?: 'GroupedByDeviceTypeVisitors';
- /** The type of device that these views belong to. */
- deviceType: DeviceType;
- id: Scalars['ID']['output'];
- /** The aggregated number of visitors. */
- total: Scalars['Int']['output'];
-};
-
-/** Views implementation that will be returned if grouping by operating system. */
-export type GroupedByOperatingSystemViews = Node & Views & {
- __typename?: 'GroupedByOperatingSystemViews';
- id: Scalars['ID']['output'];
- /** The operating system that these views belong to. */
- operatingSystem: Scalars['String']['output'];
- /** The aggregated views. */
- total: Scalars['Int']['output'];
-};
-
-/** Visitors implementation that will be returned if grouping by operating system. */
-export type GroupedByOperatingSystemVisitors = Node & Visitors & {
- __typename?: 'GroupedByOperatingSystemVisitors';
- id: Scalars['ID']['output'];
- /** The operating system that these views belong to. */
- operatingSystem: Scalars['String']['output'];
- /** The aggregated number of visitors. */
- total: Scalars['Int']['output'];
-};
-
-/** Views implementation that will be returned if grouping by page. */
-export type GroupedByPageViews = Node & Views & {
- __typename?: 'GroupedByPageViews';
- id: Scalars['ID']['output'];
- /** The page that these views belong to. */
- page: StaticPage;
- /** The aggregated views. */
- total: Scalars['Int']['output'];
-};
-
-/** Visitors implementation that will be returned if grouping by page. */
-export type GroupedByPageVisitors = Node & Visitors & {
- __typename?: 'GroupedByPageVisitors';
- id: Scalars['ID']['output'];
- /** The page that these views belong to. */
- page: StaticPage;
- /** The aggregated number of visitors. */
- total: Scalars['Int']['output'];
-};
-
-/** Views implementation that will be returned if grouping by path. */
-export type GroupedByPathViews = Node & Views & {
- __typename?: 'GroupedByPathViews';
- id: Scalars['ID']['output'];
- /** The path that these views belong to. */
- path: Scalars['String']['output'];
- /** The aggregated views. */
- total: Scalars['Int']['output'];
-};
-
-/** Visitors implementation that will be returned if grouping by path. */
-export type GroupedByPathVisitors = Node & Visitors & {
- __typename?: 'GroupedByPathVisitors';
- id: Scalars['ID']['output'];
- /** The path that these views belong to. */
- path: Scalars['String']['output'];
- /** The aggregated number of visitors. */
- total: Scalars['Int']['output'];
-};
-
-/** Views implementation that will be returned if grouping by post. */
-export type GroupedByPostViews = Node & Views & {
- __typename?: 'GroupedByPostViews';
- id: Scalars['ID']['output'];
- /** The post that these views belong to. */
- post: Post;
- /** The aggregated views. */
- total: Scalars['Int']['output'];
-};
-
-/** Visitors implementation that will be returned if grouping by post. */
-export type GroupedByPostVisitors = Node & Visitors & {
- __typename?: 'GroupedByPostVisitors';
- id: Scalars['ID']['output'];
- /** The post that these views belong to. */
- post: Post;
- /** The aggregated number of visitors. */
- total: Scalars['Int']['output'];
-};
-
-/** Views implementation that will be returned if grouping by `REFERRER_HOST` dimension. */
-export type GroupedByReferrerHostViews = Node & Views & {
- __typename?: 'GroupedByReferrerHostViews';
- id: Scalars['ID']['output'];
- /** The referrer host that these views belong to. */
- referrerHost: Scalars['String']['output'];
- /** The aggregated views. */
- total: Scalars['Int']['output'];
-};
-
-/** Visitors implementation that will be returned if grouping by `REFERRER_HOST` dimension. */
-export type GroupedByReferrerHostVisitors = Node & Visitors & {
- __typename?: 'GroupedByReferrerHostVisitors';
- id: Scalars['ID']['output'];
- /** The referrer host that these views belong to. */
- referrerHost: Scalars['String']['output'];
- /** The aggregated number of visitors. */
- total: Scalars['Int']['output'];
-};
-
-export type GroupedByTimeViews = Node & Views & {
- __typename?: 'GroupedByTimeViews';
- /** The start of the time range that these views belong to. */
- from: Scalars['DateTime']['output'];
- id: Scalars['ID']['output'];
- /** The end of the time range that these views belong to. */
- to: Scalars['DateTime']['output'];
- /** The aggregated views. */
- total: Scalars['Int']['output'];
-};
-
-/** Visitors implementation that will be returned if a grouping by time is provided. */
-export type GroupedByTimeVisitors = Node & Visitors & {
- __typename?: 'GroupedByTimeVisitors';
- /** The start of the time range that these visitors visited the page. */
- from: Scalars['DateTime']['output'];
- id: Scalars['ID']['output'];
- /** The end of the time range that these visitors visited the page. */
- to: Scalars['DateTime']['output'];
- /** The aggregated number of visitors. */
- total: Scalars['Int']['output'];
-};
-
-export enum HttpRedirectionType {
- /** A permanent redirect that corresponds to the 302 HTTP status code. */
- Permanent = 'PERMANENT',
- /** A temporary redirect that corresponds to the 301 HTTP status code. */
- Temporary = 'TEMPORARY'
-}
-
-/**
- * Contains basic information about the tag.
- * A tag is a label that categorizes posts with similar topics.
- */
-export type ITag = {
- /** Total number of users following this tag. */
- followersCount: Scalars['Int']['output'];
- /** The ID of the tag. */
- id: Scalars['ID']['output'];
- /** Information about the tag. Contains markdown html and text version of the tag's info. */
- info?: Maybe;
- /** The logo of the tag. Shown in tag page. */
- logo?: Maybe;
- /** The name of the tag. Shown in tag page. */
- name: Scalars['String']['output'];
- /** Alltime usage count of this tag in posts. */
- postsCount: Scalars['Int']['output'];
- /** The slug of the tag. Used to access tags feed. Example https://hashnode.com/n/graphql */
- slug: Scalars['String']['output'];
- /** The tagline of the tag. */
- tagline?: Maybe;
-};
-
-/** Basic information about a user on Hashnode. */
-export type IUser = {
- /** Whether or not the user is an ambassador. */
- ambassador: Scalars['Boolean']['output'];
- /** The availability of the user based on tech stack and interests. Shown on the "I am available for" section in user's profile. */
- availableFor?: Maybe;
- /** Returns a list of badges that the user has earned. Shown on blogs /badges page. Example - https://iamshadmirza.com/badges */
- badges: Array;
- /** The bio of the user. Visible in about me section of the user's profile. */
- bio?: Maybe;
- /** The date the user joined Hashnode. */
- dateJoined?: Maybe;
- /** Whether or not the user is deactivated. */
- deactivated: Scalars['Boolean']['output'];
- /** The users who are following this user */
- followers: UserConnection;
- /** The number of users that follow the requested user. Visible in the user's profile. */
- followersCount: Scalars['Int']['output'];
- /** The number of users that this user is following. Visible in the user's profile. */
- followingsCount: Scalars['Int']['output'];
- /** The users which this user is following */
- follows: UserConnection;
- /** The ID of the user. It can be used to identify the user. */
- id: Scalars['ID']['output'];
- /** The location of the user. */
- location?: Maybe;
- /** The name of the user. */
- name: Scalars['String']['output'];
- /** Returns the list of posts the user has published. */
- posts: UserPostConnection;
- /** The URL to the profile picture of the user. */
- profilePicture?: Maybe;
- /** Publications associated with the user. Includes personal and team publications. */
- publications: UserPublicationsConnection;
- /** The social media links of the user. Shown on the user's profile. */
- socialMediaLinks?: Maybe;
- /** The tagline of the user. Shown on the user's profile below the name. */
- tagline?: Maybe;
- /** Returns a list of tags that the user follows. */
- tagsFollowing: Array;
- /** The username of the user. It is unique and tied with user's profile URL. Example - https://hashnode.com/@username */
- username: Scalars['String']['output'];
-};
-
-
-/** Basic information about a user on Hashnode. */
-export type IUserFollowersArgs = {
- page: Scalars['Int']['input'];
- pageSize: Scalars['Int']['input'];
-};
-
-
-/** Basic information about a user on Hashnode. */
-export type IUserFollowsArgs = {
- page: Scalars['Int']['input'];
- pageSize: Scalars['Int']['input'];
-};
-
-
-/** Basic information about a user on Hashnode. */
-export type IUserPostsArgs = {
- filter?: InputMaybe;
- page: Scalars['Int']['input'];
- pageSize: Scalars['Int']['input'];
- sortBy?: InputMaybe;
-};
-
-
-/** Basic information about a user on Hashnode. */
-export type IUserPublicationsArgs = {
- after?: InputMaybe;
- filter?: InputMaybe;
- first: Scalars['Int']['input'];
-};
-
-export type LikeCommentInput = {
- commentId: Scalars['ID']['input'];
- likesCount?: InputMaybe;
-};
-
-export type LikeCommentPayload = {
- __typename?: 'LikeCommentPayload';
- comment?: Maybe;
-};
-
-export type LikePostInput = {
- likesCount?: InputMaybe;
- postId: Scalars['ID']['input'];
-};
-
-export type LikePostPayload = {
- __typename?: 'LikePostPayload';
- post?: Maybe;
-};
-
-export type LikeReplyInput = {
- commentId: Scalars['ID']['input'];
- likesCount?: InputMaybe;
- replyId: Scalars['ID']['input'];
-};
-
-export type LikeReplyPayload = {
- __typename?: 'LikeReplyPayload';
- reply?: Maybe;
-};
-
-/** Contains information about meta tags. Used for SEO purpose. */
-export type MetaTagsInput = {
- /** The description of the post used in og:description for SEO. */
- description?: InputMaybe;
- /** The image URL of the post used in og:image for SEO. */
- image?: InputMaybe;
- /** The title of the post used in og:title for SEO. */
- title?: InputMaybe;
-};
-
-export type Mutation = {
- __typename?: 'Mutation';
- /** Adds a comment to a post. */
- addComment: AddCommentPayload;
- /** Adds a post to a series. */
- addPostToSeries: AddPostToSeriesPayload;
- /** Adds a reply to a comment. */
- addReply: AddReplyPayload;
- cancelScheduledDraft: CancelScheduledDraftPayload;
- /** Creates a new draft for a post. */
- createDraft: CreateDraftPayload;
- /** Creates a new series. */
- createSeries: CreateSeriesPayload;
- createWebhook: CreateWebhookPayload;
- /** Deletes a role based invite. */
- deleteRoleBasedInvite: DeleteRoleBasedInvitePayload;
- deleteWebhook: DeleteWebhookPayload;
- /** Likes a comment. */
- likeComment: LikeCommentPayload;
- /** Likes a post. */
- likePost: LikePostPayload;
- /** Likes a reply. */
- likeReply: LikeReplyPayload;
- /** Publishes an existing draft as a post. */
- publishDraft: PublishDraftPayload;
- /** Creates a new post. */
- publishPost: PublishPostPayload;
- recommendPublications: RecommendPublicationsPayload;
- /** Removes a comment from a post. */
- removeComment: RemoveCommentPayload;
- /** Removes a post. */
- removePost: RemovePostPayload;
- removeRecommendation: RemoveRecommendationPayload;
- /** Removes a reply from a comment. */
- removeReply: RemoveReplyPayload;
- /** Removes a series. */
- removeSeries: RemoveSeriesPayload;
- /** Reschedule a draft. */
- rescheduleDraft: RescheduleDraftPayload;
- resendWebhookRequest: ResendWebhookRequestPayload;
- /** Restores a deleted post. */
- restorePost: RestorePostPayload;
- scheduleDraft: ScheduleDraftPayload;
- subscribeToNewsletter: SubscribeToNewsletterPayload;
- /**
- * Update the follow state for the user that is provided via id or username.
- * If the authenticated user does not follow the user, the mutation will follow the user.
- * If the authenticated user already follows the user, the mutation will un-follow the user.
- * Only available to the authenticated user.
- */
- toggleFollowUser: ToggleFollowUserPayload;
- triggerWebhookTest: TriggerWebhookTestPayload;
- unsubscribeFromNewsletter: UnsubscribeFromNewsletterPayload;
- /** Updates a comment on a post. */
- updateComment: UpdateCommentPayload;
- updatePost: UpdatePostPayload;
- /** Updates a reply */
- updateReply: UpdateReplyPayload;
- /** Updates a series. */
- updateSeries: UpdateSeriesPayload;
- updateWebhook: UpdateWebhookPayload;
-};
-
-
-export type MutationAddCommentArgs = {
- input: AddCommentInput;
-};
-
-
-export type MutationAddPostToSeriesArgs = {
- input: AddPostToSeriesInput;
-};
-
-
-export type MutationAddReplyArgs = {
- input: AddReplyInput;
-};
-
-
-export type MutationCancelScheduledDraftArgs = {
- input: CancelScheduledDraftInput;
-};
-
-
-export type MutationCreateDraftArgs = {
- input: CreateDraftInput;
-};
-
-
-export type MutationCreateSeriesArgs = {
- input: CreateSeriesInput;
-};
-
-
-export type MutationCreateWebhookArgs = {
- input: CreateWebhookInput;
-};
-
-
-export type MutationDeleteRoleBasedInviteArgs = {
- input: DeleteRoleBasedInviteInput;
-};
-
-
-export type MutationDeleteWebhookArgs = {
- id: Scalars['ID']['input'];
-};
-
-
-export type MutationLikeCommentArgs = {
- input: LikeCommentInput;
-};
-
-
-export type MutationLikePostArgs = {
- input: LikePostInput;
-};
-
-
-export type MutationLikeReplyArgs = {
- input: LikeReplyInput;
-};
-
-
-export type MutationPublishDraftArgs = {
- input: PublishDraftInput;
-};
-
-
-export type MutationPublishPostArgs = {
- input: PublishPostInput;
-};
-
-
-export type MutationRecommendPublicationsArgs = {
- input: RecommendPublicationsInput;
-};
-
-
-export type MutationRemoveCommentArgs = {
- input: RemoveCommentInput;
+export type DraftConnection = {
+ __typename?: 'DraftConnection';
+ edges: Array;
+ pageInfo: PageInfo;
+ totalDocuments: Scalars['Int']['output'];
};
-
-export type MutationRemovePostArgs = {
- input: RemovePostInput;
+export type DraftEdge = {
+ __typename?: 'DraftEdge';
+ cursor: Scalars['String']['output'];
+ node: Draft;
};
-
-export type MutationRemoveRecommendationArgs = {
- input: RemoveRecommendationInput;
+export type DraftSettings = {
+ __typename?: 'DraftSettings';
+ disableComments: Scalars['Boolean']['output'];
+ enableTableOfContents: Scalars['Boolean']['output'];
+ isDelisted: Scalars['Boolean']['output'];
+ stickCoverToBottom: Scalars['Boolean']['output'];
};
-
-export type MutationRemoveReplyArgs = {
- input: RemoveReplyInput;
+export type EnabledPages = {
+ __typename?: 'EnabledPages';
+ badges: Scalars['Boolean']['output'];
+ members: Scalars['Boolean']['output'];
+ newsletter: Scalars['Boolean']['output'];
};
-
-export type MutationRemoveSeriesArgs = {
- input: RemoveSeriesInput;
+export type FeedFilter = {
+ excludePublications?: InputMaybe>;
+ excludeTags?: InputMaybe>;
+ publications?: InputMaybe>;
+ tags?: InputMaybe>;
};
-
-export type MutationRescheduleDraftArgs = {
- input: RescheduleDraftInput;
+export type FeedPostConnection = {
+ __typename?: 'FeedPostConnection';
+ edges: Array;
+ pageInfo: PageInfo;
};
-
-export type MutationResendWebhookRequestArgs = {
- input: ResendWebhookRequestInput;
+export type GptBotCrawlingFeature = {
+ __typename?: 'GPTBotCrawlingFeature';
+ isEnabled: Scalars['Boolean']['output'];
};
-
-export type MutationRestorePostArgs = {
- input: RestorePostInput;
+export type Guide = {
+ __typename?: 'Guide';
+ content: Content;
+ id: Scalars['ID']['output'];
+ title: Scalars['String']['output'];
};
-
-export type MutationScheduleDraftArgs = {
- input: ScheduleDraftInput;
+export type GuideConnection = {
+ __typename?: 'GuideConnection';
+ edges: Array;
+ pageInfo: PageInfo;
};
-
-export type MutationSubscribeToNewsletterArgs = {
- input: SubscribeToNewsletterInput;
+export type GuideEdge = {
+ __typename?: 'GuideEdge';
+ cursor: Scalars['String']['output'];
+ node: Guide;
};
-
-export type MutationToggleFollowUserArgs = {
- id?: InputMaybe;
- username?: InputMaybe;
+export type HeadlessCmsFeature = {
+ __typename?: 'HeadlessCMSFeature';
+ isEnabled: Scalars['Boolean']['output'];
};
+export type ImprintV2 = {
+ __typename?: 'ImprintV2';
+ html?: Maybe;
+};
-export type MutationTriggerWebhookTestArgs = {
- input: TriggerWebhookTestInput;
+export type Mutation = {
+ __typename?: 'Mutation';
+ /** Returns a presigned URL for uploading an image to Hashnode's CDN. Requires authentication. */
+ createImageUploadURL: CreateImageUploadPayload;
+ /** Publish a new post to a publication. Requires authentication. */
+ publishPost: PublishPostPayload;
+ /** Update an existing post. Requires authentication. */
+ updatePost: UpdatePostPayload;
};
-export type MutationUnsubscribeFromNewsletterArgs = {
- input: UnsubscribeFromNewsletterInput;
+export type MutationCreateImageUploadUrlArgs = {
+ input: CreateImageUploadInput;
};
-export type MutationUpdateCommentArgs = {
- input: UpdateCommentInput;
+export type MutationPublishPostArgs = {
+ input: PublishPostInput;
};
@@ -1738,250 +257,78 @@ export type MutationUpdatePostArgs = {
input: UpdatePostInput;
};
-
-export type MutationUpdateReplyArgs = {
- input: UpdateReplyInput;
-};
-
-
-export type MutationUpdateSeriesArgs = {
- input: UpdateSeriesInput;
-};
-
-
-export type MutationUpdateWebhookArgs = {
- input: UpdateWebhookInput;
-};
-
-/**
- * Basic information about the authenticated user.
- * User must be authenticated to use this type.
- */
-export type MyUser = IUser & Node & {
+export type MyUser = {
__typename?: 'MyUser';
- /**
- * Whether or not the user is an ambassador.
- * @deprecated Ambassadors program no longer active. Will be removed after 02/01/2024
- */
- ambassador: Scalars['Boolean']['output'];
- /** The availability of the user based on tech stack and interests. Shown on the "I am available for" section in user's profile. */
availableFor?: Maybe;
- /** Returns a list of badges that the user has earned. Shown on blogs /badges page. Example - https://iamshadmirza.com/badges */
badges: Array;
- /** A list of beta features that the user has access to. Only available to the authenticated user. */
- betaFeatures: Array;
- /** The bio of the user. Visible in about me section of the user's profile. */
bio?: Maybe;
- /** The date the user joined Hashnode. */
+ coverImage?: Maybe;
dateJoined?: Maybe;
- /** Whether or not the user is deactivated. */
- deactivated: Scalars['Boolean']['output'];
- /** The users who are following this user */
+ email: Scalars['String']['output'];
followers: UserConnection;
- /** The number of users that follow the requested user. Visible in the user's profile. */
- followersCount: Scalars['Int']['output'];
- /** The number of users that this user is following. Visible in the user's profile. */
- followingsCount: Scalars['Int']['output'];
- /** The users which this user is following */
follows: UserConnection;
- /** The ID of the user. It can be used to identify the user. */
id: Scalars['ID']['output'];
- /** The location of the user. */
location?: Maybe;
- /** The name of the user. */
name: Scalars['String']['output'];
- /** Returns the list of posts the user has published. */
- posts: UserPostConnection;
- /** The URL to the profile picture of the user. */
profilePicture?: Maybe;
- provider?: Maybe;
- /** Publications associated with the user. Includes personal and team publications. */
- publications: UserPublicationsConnection;
- /** The social media links of the user. Shown on the user's profile. */
+ publications: PublicationConnection;
socialMediaLinks?: Maybe;
- /** The tagline of the user. Shown on the user's profile below the name. */
tagline?: Maybe;
- /** Returns a list of tags that the user follows. */
- tagsFollowing: Array;
- /** The username of the user. It is unique and tied with user's profile URL. Example - https://hashnode.com/@username */
username: Scalars['String']['output'];
};
-/**
- * Basic information about the authenticated user.
- * User must be authenticated to use this type.
- */
export type MyUserFollowersArgs = {
- page: Scalars['Int']['input'];
- pageSize: Scalars['Int']['input'];
+ after?: InputMaybe;
+ first: Scalars['Int']['input'];
};
-/**
- * Basic information about the authenticated user.
- * User must be authenticated to use this type.
- */
export type MyUserFollowsArgs = {
- page: Scalars['Int']['input'];
- pageSize: Scalars['Int']['input'];
-};
-
-
-/**
- * Basic information about the authenticated user.
- * User must be authenticated to use this type.
- */
-export type MyUserPostsArgs = {
- filter?: InputMaybe;
- page: Scalars['Int']['input'];
- pageSize: Scalars['Int']['input'];
- sortBy?: InputMaybe;
+ after?: InputMaybe;
+ first: Scalars['Int']['input'];
};
-/**
- * Basic information about the authenticated user.
- * User must be authenticated to use this type.
- */
export type MyUserPublicationsArgs = {
after?: InputMaybe;
- filter?: InputMaybe;
first: Scalars['Int']['input'];
};
-/**
- * Contains the flag indicating if the newsletter feature is enabled or not.
- * User can enable or disable the newsletter feature from the publication settings.
- * Shows a newsletter prompt on blog if enabled.
- */
-export type NewsletterFeature = Feature & {
+export type NewsletterFeature = {
__typename?: 'NewsletterFeature';
- frequency?: Maybe;
- /** A flag indicating if the newsletter feature is enabled or not. */
isEnabled: Scalars['Boolean']['output'];
};
-export enum NewsletterFrequency {
- Asap = 'asap',
- Weekly = 'weekly'
-}
-
-export type NewsletterRecord = Node & {
- __typename?: 'NewsletterRecord';
- /** The number of subscribers the newsletter was clicked by. */
- clickCount: Scalars['Int']['output'];
- /** Delivery ID of the sent newsletter */
- id: Scalars['ID']['output'];
- /** The number of subscribers the newsletter was opened by. */
- openCount: Scalars['Int']['output'];
- /** Associated post it was sent with */
- post: Post;
- /** The date the newsletter was sent. */
- sentAt: Scalars['DateTime']['output'];
- /** The number of subscribers the newsletter was sent to. */
- sentCount: Scalars['Int']['output'];
-};
-
-export enum NewsletterSubscribeStatus {
- Confirmed = 'CONFIRMED',
- Pending = 'PENDING'
-}
-
-export type NewsletterSubscriber = Node & {
- __typename?: 'NewsletterSubscriber';
- /**
- * The date the subscriber was added.
- * @deprecated Use `subscribedAt` instead. Will be removed after 12/4/2024
- */
- createdAt: Scalars['DateTime']['output'];
- /** The email of the subscriber. */
- email: Scalars['String']['output'];
- id: Scalars['ID']['output'];
- /** The status of the subscriber. */
- status: NewsletterSubscribeStatus;
- subscribedAt: Scalars['DateTime']['output'];
-};
-
-export enum NewsletterUnsubscribeStatus {
- Unsubscribed = 'UNSUBSCRIBED'
-}
-
-/** Node is a common interface for all types example User, Post, Comment, etc. */
-export type Node = {
- /** The ID of the node. */
- id: Scalars['ID']['output'];
-};
-
-/** Contains information to help in pagination for page based pagination. */
export type OffsetPageInfo = {
__typename?: 'OffsetPageInfo';
/** Indicates if there are more pages. */
hasNextPage?: Maybe;
- /** Indicates if there are previous pages */
+ /** Indicates if there are previous pages. */
hasPreviousPage?: Maybe;
- /**
- * The page after the current page.
- * Use it to build page navigation
- */
+ /** The page after the current page. */
nextPage?: Maybe;
- /**
- * The page before the current page.
- * Use it to build page navigation
- */
+ /** The page before the current page. */
previousPage?: Maybe;
};
-/** Information to help in open graph related meta tags. */
export type OpenGraphMetaData = {
__typename?: 'OpenGraphMetaData';
- /** The image used in og:image tag for SEO purposes. */
image?: Maybe;
};
-/**
- * A Connection for page based pagination to get a list of items.
- * Returns a list of nodes which contains the items.
- * This is a common interface for all page connections.
- */
-export type PageConnection = {
- /** A list of edges of items connection. */
- nodes: Array;
- /** Information to aid in pagination. */
- pageInfo: OffsetPageInfo;
-};
-
-/** Contains information to help in pagination. */
export type PageInfo = {
__typename?: 'PageInfo';
- /**
- * The cursor of the last item in the current page.
- * Use it as the after input to query the next page.
- */
endCursor?: Maybe;
- /** Indicates if there are more pages. */
- hasNextPage?: Maybe;
-};
-
-/**
- * Contains the preferences publication's autogenerated pages.
- * Used to enable or disable pages like badge, newsletter and members.
- */
-export type PagesPreferences = {
- __typename?: 'PagesPreferences';
- /** A flag indicating if the publication's badge page is enabled. */
- badges?: Maybe;
- /** A flag indicating if the publication's member page is enabled. */
- members?: Maybe;
- /** A flag indicating if the publication's newsletter page is enabled. */
- newsletter?: Maybe;
+ hasNextPage: Scalars['Boolean']['output'];
+ totalDocuments?: Maybe