@dani-builder/strapi-client 0.13.0 → 0.14.0

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/README.md CHANGED
@@ -156,3 +156,46 @@ nodes, and returns an empty string for absent/non-array input. The outer result
156
156
  is trimmed. `faqPageJsonLd` accepts a readonly array of question/answer records,
157
157
  uses that extraction for answers, trims questions and omits blank pairs. The result
158
158
  uses `Question` and `Answer` entities; return `null` means no FAQ script is needed.
159
+
160
+ ## robots.txt
161
+
162
+ Site Settings has optional `robotsTxt` text. Saves accept `User-agent`, `Allow`,
163
+ `Disallow`, `Sitemap`, and `Crawl-delay` directive names (case insensitive), followed
164
+ by a colon, plus comments and blank lines. Invalid lines return a validation error
165
+ with the field name and original one-based line number. This is basic directive
166
+ syntax validation; directive values and crawler behavior remain author-owned.
167
+
168
+ `resolveRobotsTxt(siteSetting, { indexingAllowed, siteUrl, defaultRules })` is
169
+ exported from the root and `/utils`. Null, absent, empty, or whitespace-only CMS
170
+ text uses the consumer's `defaultRules`. With indexing enabled, it preserves those
171
+ rules and appends `Sitemap: <siteUrl>/sitemap.xml` unless an active, case-insensitive
172
+ `Sitemap` directive already exists. Trailing slashes are removed from `siteUrl`;
173
+ commented sitemap directives do not count. With `indexingAllowed: false`, it always
174
+ returns exactly `User-agent: *\nDisallow: /`, without a sitemap.
175
+
176
+ Serve the returned string from a plain-text route, for example in Next.js at
177
+ `app/robots.txt/route.ts`:
178
+
179
+ ```ts
180
+ import {
181
+ getSiteSettings,
182
+ resolveRobotsTxt,
183
+ } from "@dani-builder/strapi-client";
184
+ import { client } from "@/lib/strapi";
185
+ import { indexingAllowed, siteUrl } from "@/lib/site-config";
186
+
187
+ export async function GET() {
188
+ const siteSetting = await getSiteSettings(client);
189
+ const body = resolveRobotsTxt(siteSetting, {
190
+ indexingAllowed,
191
+ siteUrl,
192
+ defaultRules: "User-agent: *\nAllow: /",
193
+ });
194
+ return new Response(body, {
195
+ headers: { "Content-Type": "text/plain; charset=utf-8" },
196
+ });
197
+ }
198
+ ```
199
+
200
+ The consumer controls indexing policy and must supply its own client and site
201
+ configuration. Avoid also defining a framework `robots.ts` route at the same URL.
package/dist/index.d.ts CHANGED
@@ -4,8 +4,8 @@ export type { StrapiClientConfig } from "./client/index.js";
4
4
  export { coreBlockPopulates, seoPopulate, footerPopulate, getPagePopulate, getPageListPopulate, getGlobalPopulate, getArticlePopulate, getArticleListPopulate, getNavigationPopulate, getSiteSettingsPopulate, getFaqPopulate, getCategoryPopulate, } from "./populate/index.js";
5
5
  export { getPage, getPageBySlug, listPages, listPagesRest, getArticle, getArticleBySlug, listArticles, getGlobal, getGlobalRest, getNavigation, getSiteSettings, listFaqs, listCategories, listTags, listAuthors, getAuthorBySlug, listSeries, getSeriesBySlug, postInquiry, } from "./api/index.js";
6
6
  export type { PageQueryOptions, PageListOptions, ArticleQueryOptions, ArticleListOptions, GlobalQueryOptions, NavigationQueryOptions, FaqListOptions, CategoryListOptions, TagListOptions, AuthorListOptions, SeriesListOptions, } from "./api/index.js";
7
- export { getMediaUrl, getAssetUrl, resolveSeo, siteVerificationMeta, serializeJsonLd, mergeStructuredData, blocksToPlainText, faqPageJsonLd, } from "./utils/index.js";
8
- export type { SeoDefaults, SeoInput, ResolvedSeo, ResolvedSocialMetadata, VerificationMeta, SiteVerificationSettings, StructuredDataObject, StructuredDataExclusion, StructuredDataMergeResult, FaqJsonLdInput, FaqPageJsonLd, } from "./utils/index.js";
7
+ export { getMediaUrl, getAssetUrl, resolveSeo, siteVerificationMeta, serializeJsonLd, mergeStructuredData, blocksToPlainText, faqPageJsonLd, resolveRobotsTxt, } from "./utils/index.js";
8
+ export type { SeoDefaults, SeoInput, ResolvedSeo, ResolvedSocialMetadata, VerificationMeta, SiteVerificationSettings, StructuredDataObject, StructuredDataExclusion, StructuredDataMergeResult, FaqJsonLdInput, FaqPageJsonLd, ResolveRobotsTxtOptions, } from "./utils/index.js";
9
9
  export { createAgentClient, AgentClientError, } from "./agent/create-agent-client.js";
10
10
  export type { AgentClientConfig, AgentSessionCredentials, AgentRestoreOptions, AgentChatOptions, AgentTurn, } from "./agent/create-agent-client.js";
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,cAAc,EACd,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,IAAI,EACJ,eAAe,EACf,GAAG,EACH,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,EACV,SAAS,EACT,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,OAAO,EACP,eAAe,EACf,GAAG,EACH,WAAW,EACX,OAAO,EACP,eAAe,EACf,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,GAAG,EACH,WAAW,EACX,MAAM,EACN,cAAc,EACd,MAAM,EACN,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,MAAM,EACN,cAAc,EACd,cAAc,EACd,YAAY,EACZ,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,WAAW,EACX,eAAe,EACf,UAAU,EACV,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,WAAW,EACX,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,EACd,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,SAAS,GACV,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,6 +6,6 @@ export { coreBlockPopulates, seoPopulate, footerPopulate, getPagePopulate, getPa
6
6
  // API
7
7
  export { getPage, getPageBySlug, listPages, listPagesRest, getArticle, getArticleBySlug, listArticles, getGlobal, getGlobalRest, getNavigation, getSiteSettings, listFaqs, listCategories, listTags, listAuthors, getAuthorBySlug, listSeries, getSeriesBySlug, postInquiry, } from "./api/index.js";
8
8
  // Utils
9
- export { getMediaUrl, getAssetUrl, resolveSeo, siteVerificationMeta, serializeJsonLd, mergeStructuredData, blocksToPlainText, faqPageJsonLd, } from "./utils/index.js";
9
+ export { getMediaUrl, getAssetUrl, resolveSeo, siteVerificationMeta, serializeJsonLd, mergeStructuredData, blocksToPlainText, faqPageJsonLd, resolveRobotsTxt, } from "./utils/index.js";
10
10
  export { createAgentClient, AgentClientError, } from "./agent/create-agent-client.js";
11
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAsF1D,SAAS;AACT,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,WAAW;AACX,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,MAAM;AACN,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,WAAW,EACX,eAAe,EACf,UAAU,EACV,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAexB,QAAQ;AACR,OAAO,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAe1B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAsF1D,SAAS;AACT,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,WAAW;AACX,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,MAAM;AACN,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,WAAW,EACX,eAAe,EACf,UAAU,EACV,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAexB,QAAQ;AACR,OAAO,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAgB1B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { StrapiDocument } from '../strapi.js';
2
2
  import type { AnalyticsSetting, BrandColors, ChatbotSetting, SiteVerification } from '../components/shared.js';
3
3
  export interface SiteSettings {
4
+ robotsTxt?: string | null;
4
5
  analyticsSettings: AnalyticsSetting[];
5
6
  chatbot: ChatbotSetting | null;
6
7
  siteVerifications: SiteVerification[];
@@ -1 +1 @@
1
- {"version":3,"file":"site-settings.d.ts","sourceRoot":"","sources":["../../../src/types/content-types/site-settings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE/G,MAAM,WAAW,YAAY;IAC3B,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,YAAY,CAAC"}
1
+ {"version":3,"file":"site-settings.d.ts","sourceRoot":"","sources":["../../../src/types/content-types/site-settings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE/G,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,YAAY,CAAC"}
@@ -5,4 +5,6 @@ export { serializeJsonLd, mergeStructuredData } from "./structured-data.js";
5
5
  export type { StructuredDataObject, StructuredDataExclusion, StructuredDataMergeResult, } from "./structured-data.js";
6
6
  export { blocksToPlainText, faqPageJsonLd } from "./faq.js";
7
7
  export type { FaqJsonLdInput, FaqPageJsonLd } from "./faq.js";
8
+ export { resolveRobotsTxt } from "./robots-txt.js";
9
+ export type { ResolveRobotsTxtOptions } from "./robots-txt.js";
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC5D,YAAY,EACV,WAAW,EACX,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC5D,YAAY,EACV,WAAW,EACX,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -2,4 +2,5 @@ export { getMediaUrl, getAssetUrl } from "./media.js";
2
2
  export { resolveSeo, siteVerificationMeta } from "./seo.js";
3
3
  export { serializeJsonLd, mergeStructuredData } from "./structured-data.js";
4
4
  export { blocksToPlainText, faqPageJsonLd } from "./faq.js";
5
+ export { resolveRobotsTxt } from "./robots-txt.js";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAS5D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAM5E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAS5D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAM5E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { SiteSettings } from "../types/content-types/site-settings.js";
2
+ export interface ResolveRobotsTxtOptions {
3
+ indexingAllowed: boolean;
4
+ siteUrl: string;
5
+ defaultRules: string;
6
+ }
7
+ /** Resolve CMS rules with the consumer's indexing policy and sitemap URL. */
8
+ export declare function resolveRobotsTxt(siteSetting: Pick<SiteSettings, "robotsTxt"> | null | undefined, { indexingAllowed, siteUrl, defaultRules }: ResolveRobotsTxtOptions): string;
9
+ //# sourceMappingURL=robots-txt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"robots-txt.d.ts","sourceRoot":"","sources":["../../src/utils/robots-txt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAE5E,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/D,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,uBAAuB,GAClE,MAAM,CAcR"}
@@ -0,0 +1,17 @@
1
+ /** Resolve CMS rules with the consumer's indexing policy and sitemap URL. */
2
+ export function resolveRobotsTxt(siteSetting, { indexingAllowed, siteUrl, defaultRules }) {
3
+ if (!indexingAllowed)
4
+ return "User-agent: *\nDisallow: /";
5
+ const customRules = siteSetting?.robotsTxt;
6
+ const rules = customRules?.trim() ? customRules : defaultRules;
7
+ const hasSitemap = rules
8
+ .split(/\r\n|\n|\r/)
9
+ .some((line) => /^\s*sitemap\s*:/i.test(line));
10
+ if (hasSitemap)
11
+ return rules;
12
+ const sitemap = `Sitemap: ${siteUrl.replace(/\/+$/, "")}/sitemap.xml`;
13
+ return rules
14
+ ? `${rules}${/[\r\n]$/.test(rules) ? "" : "\n"}${sitemap}`
15
+ : sitemap;
16
+ }
17
+ //# sourceMappingURL=robots-txt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"robots-txt.js","sourceRoot":"","sources":["../../src/utils/robots-txt.ts"],"names":[],"mappings":"AAQA,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAC9B,WAA+D,EAC/D,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAA2B;IAEnE,IAAI,CAAC,eAAe;QAAE,OAAO,4BAA4B,CAAC;IAE1D,MAAM,WAAW,GAAG,WAAW,EAAE,SAAS,CAAC;IAC3C,MAAM,KAAK,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IAC/D,MAAM,UAAU,GAAG,KAAK;SACrB,KAAK,CAAC,YAAY,CAAC;SACnB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,IAAI,UAAU;QAAE,OAAO,KAAK,CAAC;IAE7B,MAAM,OAAO,GAAG,YAAY,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC;IACtE,OAAO,KAAK;QACV,CAAC,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE;QAC1D,CAAC,CAAC,OAAO,CAAC;AACd,CAAC"}
@@ -186,6 +186,7 @@ Operational settings for analytics, chatbot, and site verification
186
186
 
187
187
  | Attribute | Type | Required | Default | Notes |
188
188
  |---|---|---|---|---|
189
+ | `robotsTxt` | text | — | — | — |
189
190
  | `analyticsSettings` | component `shared.analytics-setting` (repeatable) | — | — | — |
190
191
  | `chatbot` | component `shared.chatbot-setting` | — | — | — |
191
192
  | `siteVerifications` | component `shared.site-verification` (repeatable) | — | — | — |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dani-builder/strapi-client",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "TypeScript client for Daniworks Builder CMS (Strapi v5)",
5
5
  "license": "MIT",
6
6
  "type": "module",