pabal-resource-mcp 1.9.2 → 1.10.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.
@@ -1,7 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- DEFAULT_APP_SLUG
4
- } from "../chunk-DLCIXAUB.js";
3
+ DEFAULT_APP_SLUG,
4
+ DEVELOPER_JOURNAL_APP_SLUG,
5
+ DEVELOPER_TECH_APP_SLUG,
6
+ isDeveloperBlogAppSlug
7
+ } from "../chunk-I7DFQE66.js";
5
8
  import {
6
9
  getGeminiApiKey,
7
10
  getKeywordResearchDir,
@@ -6230,6 +6233,9 @@ function normalizeDate(date) {
6230
6233
  var toPublicBlogBase = (appSlug, slug) => `/${BLOG_ROOT}/${appSlug}/${slug}`;
6231
6234
  function resolveCoverImagePath(appSlug, slug, coverImage) {
6232
6235
  if (!coverImage || !coverImage.trim()) {
6236
+ if (isDeveloperBlogAppSlug(appSlug)) {
6237
+ return "/og-image.png";
6238
+ }
6233
6239
  return `/products/${appSlug}/og-image.png`;
6234
6240
  }
6235
6241
  const cleaned = coverImage.trim();
@@ -6316,7 +6322,7 @@ function parseBlogHtml(htmlContent) {
6316
6322
  const meta = JSON.parse(metaJson);
6317
6323
  const body = htmlContent.replace(metaBlockRegex, "").trim();
6318
6324
  return { meta, body };
6319
- } catch (error) {
6325
+ } catch {
6320
6326
  return { meta: null, body: htmlContent.trim() };
6321
6327
  }
6322
6328
  }
@@ -6347,7 +6353,7 @@ function findExistingBlogPosts({
6347
6353
  publishedAt: meta.publishedAt
6348
6354
  });
6349
6355
  }
6350
- } catch (error) {
6356
+ } catch {
6351
6357
  continue;
6352
6358
  }
6353
6359
  }
@@ -6390,7 +6396,7 @@ var createBlogHtmlInputSchema = z13.object({
6390
6396
  "Optional tags for BLOG_META. Defaults to tags derived from topic."
6391
6397
  ),
6392
6398
  coverImage: z13.string().trim().optional().describe(
6393
- "Cover image path. Relative paths rewrite to /blogs/<app>/<slug>/..., default is /products/<appSlug>/og-image.png."
6399
+ "Cover image path. Relative paths rewrite to /blogs/<app>/<slug>/..., default is /products/<appSlug>/og-image.png (developer slugs default to /og-image.png)."
6394
6400
  ),
6395
6401
  publishedAt: z13.string().trim().regex(DATE_REGEX2, "publishedAt must use YYYY-MM-DD").optional().describe("Publish date (YYYY-MM-DD). Defaults to today."),
6396
6402
  modifiedAt: z13.string().trim().regex(DATE_REGEX2, "modifiedAt must use YYYY-MM-DD").optional().describe("Last modified date (YYYY-MM-DD). Defaults to publishedAt."),
@@ -6416,16 +6422,17 @@ IMPORTANT REQUIREMENTS:
6416
6422
  1. The 'locale' parameter is REQUIRED. If the user does not provide a locale, you MUST ask them to specify which language/locale they want to write the blog in (e.g., 'en-US', 'ko-KR', 'ja-JP', etc.).
6417
6423
  2. The 'content' parameter is REQUIRED. You (the LLM) must generate the HTML content based on the 'topic' and 'locale' provided by the user. The content should be written in the language corresponding to the locale AND match the writing style of existing blog posts for that locale.
6418
6424
  3. The 'description' parameter is REQUIRED. You (the LLM) must generate this based on the topic, locale, AND the writing style of existing blog posts.
6419
- 4. The 'appSlug' parameter:
6420
- - If the user explicitly requests "developer category", "developer blog", "personal category", "my category", or similar, you MUST set appSlug to "developer".
6425
+ 4. The 'appSlug' parameter:
6426
+ - If the user requests personal/daily/journal developer content, set appSlug to "${DEVELOPER_JOURNAL_APP_SLUG}".
6427
+ - If the user requests technical/engineering/devlog content, set appSlug to "${DEVELOPER_TECH_APP_SLUG}".
6421
6428
  - If the user mentions a specific app/product, use that app's slug.
6422
- - If not specified, defaults to "developer".
6429
+ - If not specified, defaults to "${DEFAULT_APP_SLUG}".
6423
6430
 
6424
6431
  Slug rules:
6425
6432
  - slug = slugify(English title, kebab-case ASCII)
6426
6433
  - path: public/blogs/<appSlug>/<slug>/<locale>.html
6427
- - appSlug: Use "developer" when user requests developer/personal category. Defaults to "developer" if not specified.
6428
- - coverImage default: /products/<appSlug>/og-image.png (relative paths are rewritten under /blogs/<app>/<slug>/)
6434
+ - appSlug: Use "${DEVELOPER_JOURNAL_APP_SLUG}" for personal/journal posts, "${DEVELOPER_TECH_APP_SLUG}" for technical posts. Defaults to "${DEFAULT_APP_SLUG}" if not specified.
6435
+ - coverImage default: /products/<appSlug>/og-image.png (relative paths are rewritten under /blogs/<app>/<slug>/, developer slugs default to /og-image.png)
6429
6436
  - overwrite defaults to false (throws when file exists)
6430
6437
 
6431
6438
  HTML Structure (follows public/en-US.html pattern):
@@ -6482,7 +6489,7 @@ async function handleCreateBlogHtml(input) {
6482
6489
  slug,
6483
6490
  baseDir: path20.join(publicDir, "blogs", appSlug, slug),
6484
6491
  files: [],
6485
- coverImage: coverImage && coverImage.trim().length > 0 ? coverImage.trim() : `/products/${appSlug}/og-image.png`,
6492
+ coverImage: coverImage && coverImage.trim().length > 0 ? coverImage.trim() : isDeveloperBlogAppSlug(appSlug) ? "/og-image.png" : `/products/${appSlug}/og-image.png`,
6486
6493
  metaByLocale: {}
6487
6494
  };
6488
6495
  const plannedFiles = targetLocales.map(
package/dist/browser.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { A as APP_STORE_TO_UNIFIED, Y as AppIconConfig, X as AppIconStyleConfig, F as AppMetaLinks, H as AppPageData, t as AppStoreAsoData, p as AppStoreInfoLocalization, d as AppStoreLocale, v as AppStoreMultilingualAsoData, o as AppStoreReleaseNote, r as AppStoreScreenshotDisplayType, s as AppStoreScreenshots, q as AppStoreVersionLocalization, w as AsoData, a1 as AsoLocaleContent, a0 as AsoTemplate, C as BlogArticle, z as BlogMeta, B as BlogMetaBlock, a6 as BlogMetaOutput, E as BlogSummary, a7 as CreateBlogHtmlInput, a9 as CreateBlogHtmlResult, D as DEFAULT_LOCALE, R as DeepPartial, M as FeatureItem, G as GOOGLE_PLAY_TO_UNIFIED, a8 as GeneratedBlogFile, m as GooglePlayAsoData, j as GooglePlayImageType, h as GooglePlayListing, e as GooglePlayLocale, u as GooglePlayMultilingualAsoData, n as GooglePlayReleaseNote, k as GooglePlayScreenshotType, l as GooglePlayScreenshots, I as ImageAsset, P as LandingCta, N as LandingFeatures, J as LandingHero, Q as LandingPage, V as LandingPageLocale, O as LandingReviews, K as LandingScreenshots, L as LayoutColors, a4 as LocaleDisplayInfo, $ as ProductConfig, _ as ProductContent, a2 as ProductLocale, Z as ProductMetadata, W as ProductScreenshots, a3 as SiteConfig, a5 as SiteData, S as SupportedLocale, T as Testimonial, U as UNIFIED_LOCALES, a as UNIFIED_TO_APP_STORE, b as UNIFIED_TO_GOOGLE_PLAY, c as UnifiedLocale, aj as appStoreToGooglePlay, ad as appStoreToUnified, ah as appStoreToUnifiedBatch, an as convertObjectFromAppStore, ao as convertObjectFromGooglePlay, al as convertObjectToAppStore, am as convertObjectToGooglePlay, ak as googlePlayToAppStore, ae as googlePlayToUnified, ai as googlePlayToUnifiedBatch, f as isAppStoreLocale, y as isAppStoreMultilingual, g as isGooglePlayLocale, x as isGooglePlayMultilingual, i as isSupportedLocale, aa as unifiedToAppStore, af as unifiedToAppStoreBatch, ac as unifiedToBothPlatforms, ab as unifiedToGooglePlay, ag as unifiedToGooglePlayBatch } from './locale-converter-CucFBuGg.js';
1
+ export { A as APP_STORE_TO_UNIFIED, Y as AppIconConfig, X as AppIconStyleConfig, F as AppMetaLinks, H as AppPageData, t as AppStoreAsoData, p as AppStoreInfoLocalization, d as AppStoreLocale, v as AppStoreMultilingualAsoData, o as AppStoreReleaseNote, r as AppStoreScreenshotDisplayType, s as AppStoreScreenshots, q as AppStoreVersionLocalization, w as AsoData, a1 as AsoLocaleContent, a0 as AsoTemplate, C as BlogArticle, z as BlogMeta, B as BlogMetaBlock, a9 as BlogMetaOutput, E as BlogSummary, aa as CreateBlogHtmlInput, ac as CreateBlogHtmlResult, D as DEFAULT_LOCALE, R as DeepPartial, M as FeatureItem, G as GOOGLE_PLAY_TO_UNIFIED, ab as GeneratedBlogFile, m as GooglePlayAsoData, j as GooglePlayImageType, h as GooglePlayListing, e as GooglePlayLocale, u as GooglePlayMultilingualAsoData, n as GooglePlayReleaseNote, k as GooglePlayScreenshotType, l as GooglePlayScreenshots, I as ImageAsset, P as LandingCta, N as LandingFeatures, J as LandingHero, Q as LandingPage, V as LandingPageLocale, O as LandingReviews, K as LandingScreenshots, L as LayoutColors, a4 as LocaleDisplayInfo, $ as ProductConfig, _ as ProductContent, a2 as ProductLocale, Z as ProductMetadata, W as ProductScreenshots, a8 as ResolvedWorkData, a3 as SiteConfig, a5 as SiteData, S as SupportedLocale, T as Testimonial, U as UNIFIED_LOCALES, a as UNIFIED_TO_APP_STORE, b as UNIFIED_TO_GOOGLE_PLAY, c as UnifiedLocale, a6 as WorkItem, a7 as WorkLocaleData, am as appStoreToGooglePlay, ag as appStoreToUnified, ak as appStoreToUnifiedBatch, aq as convertObjectFromAppStore, ar as convertObjectFromGooglePlay, ao as convertObjectToAppStore, ap as convertObjectToGooglePlay, an as googlePlayToAppStore, ah as googlePlayToUnified, al as googlePlayToUnifiedBatch, f as isAppStoreLocale, y as isAppStoreMultilingual, g as isGooglePlayLocale, x as isGooglePlayMultilingual, i as isSupportedLocale, ad as unifiedToAppStore, ai as unifiedToAppStoreBatch, af as unifiedToBothPlatforms, ae as unifiedToGooglePlay, aj as unifiedToGooglePlayBatch } from './locale-converter-D0E1EPm1.js';
2
2
  import '@googleapis/androidpublisher';
3
3
  import 'appstore-connect-sdk/openapi';
4
4
 
@@ -7,9 +7,18 @@ import 'appstore-connect-sdk/openapi';
7
7
  * Used for blog-related default values and configurations
8
8
  */
9
9
  /**
10
- * Default app slug for developer-related blog posts
11
- * Used when creating blog posts about the developer themselves
10
+ * App slug for personal/daily developer posts.
12
11
  */
13
- declare const DEFAULT_APP_SLUG = "developer";
12
+ declare const DEVELOPER_JOURNAL_APP_SLUG = "developer-journal";
13
+ /**
14
+ * App slug for technical developer posts.
15
+ */
16
+ declare const DEVELOPER_TECH_APP_SLUG = "developer-tech";
17
+ /**
18
+ * Default app slug for developer-related blog posts.
19
+ * New posts default to journal.
20
+ */
21
+ declare const DEFAULT_APP_SLUG = "developer-journal";
22
+ declare function isDeveloperBlogAppSlug(appSlug: string): boolean;
14
23
 
15
- export { DEFAULT_APP_SLUG };
24
+ export { DEFAULT_APP_SLUG, DEVELOPER_JOURNAL_APP_SLUG, DEVELOPER_TECH_APP_SLUG, isDeveloperBlogAppSlug };
package/dist/browser.js CHANGED
@@ -1,6 +1,9 @@
1
1
  import {
2
- DEFAULT_APP_SLUG
3
- } from "./chunk-DLCIXAUB.js";
2
+ DEFAULT_APP_SLUG,
3
+ DEVELOPER_JOURNAL_APP_SLUG,
4
+ DEVELOPER_TECH_APP_SLUG,
5
+ isDeveloperBlogAppSlug
6
+ } from "./chunk-I7DFQE66.js";
4
7
  import {
5
8
  APP_STORE_TO_UNIFIED,
6
9
  DEFAULT_LOCALE,
@@ -33,6 +36,8 @@ export {
33
36
  APP_STORE_TO_UNIFIED,
34
37
  DEFAULT_APP_SLUG,
35
38
  DEFAULT_LOCALE,
39
+ DEVELOPER_JOURNAL_APP_SLUG,
40
+ DEVELOPER_TECH_APP_SLUG,
36
41
  GOOGLE_PLAY_TO_UNIFIED,
37
42
  UNIFIED_LOCALES,
38
43
  UNIFIED_TO_APP_STORE,
@@ -49,6 +54,7 @@ export {
49
54
  googlePlayToUnifiedBatch,
50
55
  isAppStoreLocale,
51
56
  isAppStoreMultilingual,
57
+ isDeveloperBlogAppSlug,
52
58
  isGooglePlayLocale,
53
59
  isGooglePlayMultilingual,
54
60
  isSupportedLocale,
@@ -0,0 +1,18 @@
1
+ // src/constants/blog.constants.ts
2
+ var DEVELOPER_JOURNAL_APP_SLUG = "developer-journal";
3
+ var DEVELOPER_TECH_APP_SLUG = "developer-tech";
4
+ var DEFAULT_APP_SLUG = DEVELOPER_JOURNAL_APP_SLUG;
5
+ var DEVELOPER_BLOG_APP_SLUGS = /* @__PURE__ */ new Set([
6
+ DEVELOPER_JOURNAL_APP_SLUG,
7
+ DEVELOPER_TECH_APP_SLUG
8
+ ]);
9
+ function isDeveloperBlogAppSlug(appSlug) {
10
+ return DEVELOPER_BLOG_APP_SLUGS.has(appSlug);
11
+ }
12
+
13
+ export {
14
+ DEVELOPER_JOURNAL_APP_SLUG,
15
+ DEVELOPER_TECH_APP_SLUG,
16
+ DEFAULT_APP_SLUG,
17
+ isDeveloperBlogAppSlug
18
+ };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { w as AsoData, $ as ProductConfig } from './locale-converter-CucFBuGg.js';
2
- export { A as APP_STORE_TO_UNIFIED, Y as AppIconConfig, X as AppIconStyleConfig, F as AppMetaLinks, H as AppPageData, t as AppStoreAsoData, p as AppStoreInfoLocalization, d as AppStoreLocale, v as AppStoreMultilingualAsoData, o as AppStoreReleaseNote, r as AppStoreScreenshotDisplayType, s as AppStoreScreenshots, q as AppStoreVersionLocalization, a1 as AsoLocaleContent, a0 as AsoTemplate, C as BlogArticle, z as BlogMeta, B as BlogMetaBlock, a6 as BlogMetaOutput, E as BlogSummary, a7 as CreateBlogHtmlInput, a9 as CreateBlogHtmlResult, D as DEFAULT_LOCALE, R as DeepPartial, M as FeatureItem, G as GOOGLE_PLAY_TO_UNIFIED, a8 as GeneratedBlogFile, m as GooglePlayAsoData, j as GooglePlayImageType, h as GooglePlayListing, e as GooglePlayLocale, u as GooglePlayMultilingualAsoData, n as GooglePlayReleaseNote, k as GooglePlayScreenshotType, l as GooglePlayScreenshots, I as ImageAsset, P as LandingCta, N as LandingFeatures, J as LandingHero, Q as LandingPage, V as LandingPageLocale, O as LandingReviews, K as LandingScreenshots, L as LayoutColors, a4 as LocaleDisplayInfo, _ as ProductContent, a2 as ProductLocale, Z as ProductMetadata, W as ProductScreenshots, a3 as SiteConfig, a5 as SiteData, S as SupportedLocale, T as Testimonial, U as UNIFIED_LOCALES, a as UNIFIED_TO_APP_STORE, b as UNIFIED_TO_GOOGLE_PLAY, c as UnifiedLocale, aj as appStoreToGooglePlay, ad as appStoreToUnified, ah as appStoreToUnifiedBatch, an as convertObjectFromAppStore, ao as convertObjectFromGooglePlay, al as convertObjectToAppStore, am as convertObjectToGooglePlay, ak as googlePlayToAppStore, ae as googlePlayToUnified, ai as googlePlayToUnifiedBatch, f as isAppStoreLocale, y as isAppStoreMultilingual, g as isGooglePlayLocale, x as isGooglePlayMultilingual, i as isSupportedLocale, aa as unifiedToAppStore, af as unifiedToAppStoreBatch, ac as unifiedToBothPlatforms, ab as unifiedToGooglePlay, ag as unifiedToGooglePlayBatch } from './locale-converter-CucFBuGg.js';
1
+ import { w as AsoData, $ as ProductConfig } from './locale-converter-D0E1EPm1.js';
2
+ export { A as APP_STORE_TO_UNIFIED, Y as AppIconConfig, X as AppIconStyleConfig, F as AppMetaLinks, H as AppPageData, t as AppStoreAsoData, p as AppStoreInfoLocalization, d as AppStoreLocale, v as AppStoreMultilingualAsoData, o as AppStoreReleaseNote, r as AppStoreScreenshotDisplayType, s as AppStoreScreenshots, q as AppStoreVersionLocalization, a1 as AsoLocaleContent, a0 as AsoTemplate, C as BlogArticle, z as BlogMeta, B as BlogMetaBlock, a9 as BlogMetaOutput, E as BlogSummary, aa as CreateBlogHtmlInput, ac as CreateBlogHtmlResult, D as DEFAULT_LOCALE, R as DeepPartial, M as FeatureItem, G as GOOGLE_PLAY_TO_UNIFIED, ab as GeneratedBlogFile, m as GooglePlayAsoData, j as GooglePlayImageType, h as GooglePlayListing, e as GooglePlayLocale, u as GooglePlayMultilingualAsoData, n as GooglePlayReleaseNote, k as GooglePlayScreenshotType, l as GooglePlayScreenshots, I as ImageAsset, P as LandingCta, N as LandingFeatures, J as LandingHero, Q as LandingPage, V as LandingPageLocale, O as LandingReviews, K as LandingScreenshots, L as LayoutColors, a4 as LocaleDisplayInfo, _ as ProductContent, a2 as ProductLocale, Z as ProductMetadata, W as ProductScreenshots, a8 as ResolvedWorkData, a3 as SiteConfig, a5 as SiteData, S as SupportedLocale, T as Testimonial, U as UNIFIED_LOCALES, a as UNIFIED_TO_APP_STORE, b as UNIFIED_TO_GOOGLE_PLAY, c as UnifiedLocale, a6 as WorkItem, a7 as WorkLocaleData, am as appStoreToGooglePlay, ag as appStoreToUnified, ak as appStoreToUnifiedBatch, aq as convertObjectFromAppStore, ar as convertObjectFromGooglePlay, ao as convertObjectToAppStore, ap as convertObjectToGooglePlay, an as googlePlayToAppStore, ah as googlePlayToUnified, al as googlePlayToUnifiedBatch, f as isAppStoreLocale, y as isAppStoreMultilingual, g as isGooglePlayLocale, x as isGooglePlayMultilingual, i as isSupportedLocale, ad as unifiedToAppStore, ai as unifiedToAppStoreBatch, af as unifiedToBothPlatforms, ae as unifiedToGooglePlay, aj as unifiedToGooglePlayBatch } from './locale-converter-D0E1EPm1.js';
3
3
  import '@googleapis/androidpublisher';
4
4
  import 'appstore-connect-sdk/openapi';
5
5