@uptrademedia/site-kit 1.0.1 → 1.0.4

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.
Files changed (159) hide show
  1. package/dist/SetupWizard-Cki06kB0.d.mts +12 -0
  2. package/dist/SetupWizard-Cki06kB0.d.ts +12 -0
  3. package/dist/analytics/index.d.mts +87 -0
  4. package/dist/analytics/index.d.ts +87 -0
  5. package/dist/blog/index.d.mts +24 -0
  6. package/dist/blog/index.d.ts +24 -0
  7. package/dist/blog/index.js.map +1 -1
  8. package/dist/blog/index.mjs.map +1 -1
  9. package/dist/chunk-2IHTEKHU.mjs +332 -0
  10. package/dist/chunk-2IHTEKHU.mjs.map +1 -0
  11. package/dist/chunk-5R4R3WDP.js +1451 -0
  12. package/dist/chunk-5R4R3WDP.js.map +1 -0
  13. package/dist/{chunk-RV7H3I6J.js → chunk-ADHVEFWD.js} +68 -2
  14. package/dist/chunk-ADHVEFWD.js.map +1 -0
  15. package/dist/chunk-BGJLOJ7T.mjs +605 -0
  16. package/dist/chunk-BGJLOJ7T.mjs.map +1 -0
  17. package/dist/chunk-BZBJVG5Y.js +88 -0
  18. package/dist/chunk-BZBJVG5Y.js.map +1 -0
  19. package/dist/{chunk-COI6GOX2.mjs → chunk-DOHML47I.mjs} +3 -3
  20. package/dist/chunk-DOHML47I.mjs.map +1 -0
  21. package/dist/chunk-DRFTRTKV.js +809 -0
  22. package/dist/chunk-DRFTRTKV.js.map +1 -0
  23. package/dist/chunk-EL5QTAA3.mjs +805 -0
  24. package/dist/chunk-EL5QTAA3.mjs.map +1 -0
  25. package/dist/chunk-GAJLEDRD.js +334 -0
  26. package/dist/chunk-GAJLEDRD.js.map +1 -0
  27. package/dist/{chunk-3MUOUXHV.js → chunk-K2HWVOEO.js} +3 -3
  28. package/dist/chunk-K2HWVOEO.js.map +1 -0
  29. package/dist/chunk-O2OHHBUD.js +997 -0
  30. package/dist/chunk-O2OHHBUD.js.map +1 -0
  31. package/dist/chunk-QAYJV4KK.js +608 -0
  32. package/dist/chunk-QAYJV4KK.js.map +1 -0
  33. package/dist/{chunk-FEBYQGY4 2.mjs → chunk-SMUFNQLM.mjs} +67 -3
  34. package/dist/chunk-SMUFNQLM.mjs.map +1 -0
  35. package/dist/chunk-VDMZZL2O.mjs +83 -0
  36. package/dist/chunk-VDMZZL2O.mjs.map +1 -0
  37. package/dist/chunk-XFRPT5ZX.mjs +1449 -0
  38. package/dist/chunk-XFRPT5ZX.mjs.map +1 -0
  39. package/dist/chunk-XQJX252G.mjs +981 -0
  40. package/dist/chunk-XQJX252G.mjs.map +1 -0
  41. package/dist/commerce/index.d.mts +168 -0
  42. package/dist/commerce/index.d.ts +168 -0
  43. package/dist/commerce/index.js +38 -38
  44. package/dist/commerce/index.mjs +1 -1
  45. package/dist/commerce/server.d.mts +98 -0
  46. package/dist/commerce/server.d.ts +98 -0
  47. package/dist/engage/index.d.mts +27 -0
  48. package/dist/engage/index.d.ts +27 -0
  49. package/dist/engage/index.js +7 -40
  50. package/dist/engage/index.js.map +1 -1
  51. package/dist/engage/index.mjs +1 -41
  52. package/dist/engage/index.mjs.map +1 -1
  53. package/dist/forms/index.d.mts +437 -0
  54. package/dist/forms/index.d.ts +437 -0
  55. package/dist/forms/index.js +13 -5
  56. package/dist/forms/index.js.map +1 -1
  57. package/dist/forms/index.mjs +2 -2
  58. package/dist/forms/index.mjs.map +1 -1
  59. package/dist/{generators-7Y5ABRYV 2.mjs → generators-TO2FKJR6.mjs} +134 -3
  60. package/dist/generators-TO2FKJR6.mjs.map +1 -0
  61. package/dist/{generators-GWIYCA5M.js → generators-YZWIGHCO.js} +135 -2
  62. package/dist/generators-YZWIGHCO.js.map +1 -0
  63. package/dist/images/index.d.mts +133 -0
  64. package/dist/images/index.d.ts +133 -0
  65. package/dist/images/index.js +41 -0
  66. package/dist/images/index.js.map +1 -0
  67. package/dist/images/index.mjs +8 -0
  68. package/dist/images/index.mjs.map +1 -0
  69. package/dist/index.d.mts +649 -0
  70. package/dist/index.d.ts +649 -0
  71. package/dist/index.js +1355 -104
  72. package/dist/index.js.map +1 -1
  73. package/dist/index.mjs +1242 -76
  74. package/dist/index.mjs.map +1 -1
  75. package/dist/redirects/index.d.mts +72 -0
  76. package/dist/redirects/index.d.ts +72 -0
  77. package/dist/redirects/index.js +25 -0
  78. package/dist/redirects/index.js.map +1 -0
  79. package/dist/redirects/index.mjs +4 -0
  80. package/dist/redirects/index.mjs.map +1 -0
  81. package/dist/routing-BWjUF7lp.d.ts +105 -0
  82. package/dist/routing-CgmRi9tD.d.mts +105 -0
  83. package/dist/{scanner-MF7P3CDE 2.mjs → scanner-AZV5I6US.mjs} +123 -4
  84. package/dist/scanner-AZV5I6US.mjs.map +1 -0
  85. package/dist/{scanner-NT6YG4TD 2.js → scanner-ETJAMIT7.js} +124 -3
  86. package/dist/scanner-ETJAMIT7.js.map +1 -0
  87. package/dist/seo/index.d.mts +273 -0
  88. package/dist/seo/index.d.ts +273 -0
  89. package/dist/seo/server.d.mts +89 -0
  90. package/dist/seo/server.d.ts +89 -0
  91. package/dist/setup/client.d.mts +60 -0
  92. package/dist/setup/client.d.ts +60 -0
  93. package/dist/setup/client.js +30 -0
  94. package/dist/setup/client.js.map +1 -0
  95. package/dist/setup/client.mjs +5 -0
  96. package/dist/setup/client.mjs.map +1 -0
  97. package/dist/setup/index.d.mts +5 -0
  98. package/dist/setup/index.d.ts +5 -0
  99. package/dist/setup/index.js +28 -1043
  100. package/dist/setup/index.js.map +1 -1
  101. package/dist/setup/index.mjs +3 -1043
  102. package/dist/setup/index.mjs.map +1 -1
  103. package/dist/setup/server.d.mts +14 -0
  104. package/dist/setup/server.d.ts +14 -0
  105. package/dist/setup/server.js +13 -0
  106. package/dist/setup/server.js.map +1 -0
  107. package/dist/setup/server.mjs +4 -0
  108. package/dist/setup/server.mjs.map +1 -0
  109. package/dist/sitemap/index.d.mts +78 -0
  110. package/dist/sitemap/index.d.ts +78 -0
  111. package/dist/types-BDojCvvL.d.mts +156 -0
  112. package/dist/types-BDojCvvL.d.ts +156 -0
  113. package/dist/types-BmzutFwy.d.mts +227 -0
  114. package/dist/types-BmzutFwy.d.ts +227 -0
  115. package/dist/types-C0pJGfbH.d.mts +155 -0
  116. package/dist/types-C0pJGfbH.d.ts +155 -0
  117. package/dist/types-DA_Kocle.d.mts +127 -0
  118. package/dist/types-DA_Kocle.d.ts +127 -0
  119. package/dist/types-lFLKKn0G.d.mts +163 -0
  120. package/dist/types-lFLKKn0G.d.ts +163 -0
  121. package/dist/types-nB206tPK.d.mts +309 -0
  122. package/dist/types-nB206tPK.d.ts +309 -0
  123. package/dist/useEventModal-6U1pF3_g.d.mts +209 -0
  124. package/dist/useEventModal-BA8g-1-P.d.ts +209 -0
  125. package/package.json +21 -1
  126. package/dist/chunk-3MUOUXHV.js.map +0 -1
  127. package/dist/chunk-4HVYXYQL 2.mjs +0 -255
  128. package/dist/chunk-4HVYXYQL.mjs +0 -255
  129. package/dist/chunk-4HVYXYQL.mjs.map +0 -1
  130. package/dist/chunk-COI6GOX2.mjs.map +0 -1
  131. package/dist/chunk-EQCVQC35.js 2.map +0 -1
  132. package/dist/chunk-FEBYQGY4.mjs +0 -251
  133. package/dist/chunk-FEBYQGY4.mjs.map +0 -1
  134. package/dist/chunk-NYKRE2FL 2.mjs +0 -31
  135. package/dist/chunk-NYKRE2FL.mjs 2.map +0 -1
  136. package/dist/chunk-RV7H3I6J.js 2.map +0 -1
  137. package/dist/chunk-RV7H3I6J.js.map +0 -1
  138. package/dist/chunk-TUKGA3UK.js +0 -257
  139. package/dist/chunk-TUKGA3UK.js 2.map +0 -1
  140. package/dist/chunk-TUKGA3UK.js.map +0 -1
  141. package/dist/generators-7Y5ABRYV.mjs +0 -161
  142. package/dist/generators-7Y5ABRYV.mjs 2.map +0 -1
  143. package/dist/generators-7Y5ABRYV.mjs.map +0 -1
  144. package/dist/generators-GWIYCA5M.js 2.map +0 -1
  145. package/dist/generators-GWIYCA5M.js.map +0 -1
  146. package/dist/index 2.mjs +0 -74
  147. package/dist/index.js 2.map +0 -1
  148. package/dist/migrator-V6KS75EA 2.mjs +0 -265
  149. package/dist/migrator-V6KS75EA.mjs 2.map +0 -1
  150. package/dist/migrator-XKM7YQCY.js 2.map +0 -1
  151. package/dist/scanner-MF7P3CDE.mjs +0 -14386
  152. package/dist/scanner-MF7P3CDE.mjs 2.map +0 -1
  153. package/dist/scanner-MF7P3CDE.mjs.map +0 -1
  154. package/dist/scanner-NT6YG4TD.js +0 -14397
  155. package/dist/scanner-NT6YG4TD.js 2.map +0 -1
  156. package/dist/scanner-NT6YG4TD.js.map +0 -1
  157. package/dist/web-vitals-BH55V7EJ.js 2.map +0 -1
  158. package/dist/web-vitals-RJYPWAR3 2.mjs +0 -241
  159. package/dist/web-vitals-RJYPWAR3.mjs 2.map +0 -1
@@ -0,0 +1,105 @@
1
+ import { l as GetRedirectOptions, R as RedirectResult, p as GetRobotsOptions, o as RobotsDirective, r as GetSitemapEntriesOptions, q as SitemapEntry } from './types-BmzutFwy.mjs';
2
+
3
+ /**
4
+ * Get redirect for a path if one exists
5
+ *
6
+ * Use in Next.js middleware to handle managed redirects
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * // middleware.ts
11
+ * import { getRedirect } from '@uptrade/seo'
12
+ *
13
+ * export async function middleware(request) {
14
+ * const redirect = await getRedirect({
15
+ * projectId: process.env.UPTRADE_PROJECT_ID!,
16
+ * path: request.nextUrl.pathname
17
+ * })
18
+ *
19
+ * if (redirect) {
20
+ * return NextResponse.redirect(redirect.destination, redirect.statusCode)
21
+ * }
22
+ * }
23
+ * ```
24
+ */
25
+ declare function getRedirect(options: GetRedirectOptions): Promise<RedirectResult | null>;
26
+ /**
27
+ * Get robots directive for a page
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * const robots = await getRobotsDirective({
32
+ * projectId: process.env.UPTRADE_PROJECT_ID!,
33
+ * path: '/private-page'
34
+ * })
35
+ *
36
+ * if (!robots.index) {
37
+ * // Page should not be indexed
38
+ * }
39
+ * ```
40
+ */
41
+ declare function getRobotsDirective(options: GetRobotsOptions): Promise<RobotsDirective>;
42
+ /**
43
+ * Get sitemap entries for a project
44
+ *
45
+ * Use in sitemap.ts to generate dynamic sitemap
46
+ *
47
+ * @example
48
+ * ```tsx
49
+ * // app/sitemap.ts
50
+ * import { generateSitemap } from '@uptrade/seo'
51
+ *
52
+ * export default async function sitemap() {
53
+ * return generateSitemap({
54
+ * projectId: process.env.UPTRADE_PROJECT_ID!,
55
+ * baseUrl: 'https://example.com',
56
+ * publishedOnly: true
57
+ * })
58
+ * }
59
+ * ```
60
+ */
61
+ declare function generateSitemap(options: GetSitemapEntriesOptions): Promise<SitemapEntry[]>;
62
+ /**
63
+ * Register local sitemap entries with Uptrade Portal
64
+ *
65
+ * Call this at build time to sync your local routes to seo_pages.
66
+ * This ensures analytics only tracks real pages.
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * // scripts/register-sitemap.ts
71
+ * import { registerLocalSitemap } from '@uptrade/seo'
72
+ *
73
+ * // Option 1: Provide entries directly
74
+ * await registerLocalSitemap({
75
+ * entries: [
76
+ * { path: '/', title: 'Home', priority: 1.0 },
77
+ * { path: '/about', title: 'About Us', priority: 0.8 },
78
+ * ]
79
+ * })
80
+ *
81
+ * // Option 2: Auto-discover from Next.js app directory
82
+ * await registerLocalSitemap({ autoDiscover: true })
83
+ * ```
84
+ */
85
+ declare function registerLocalSitemap(options: {
86
+ entries?: Array<{
87
+ path: string;
88
+ title?: string;
89
+ priority?: number;
90
+ changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
91
+ }>;
92
+ autoDiscover?: boolean;
93
+ }): Promise<{
94
+ success: boolean;
95
+ created: number;
96
+ updated: number;
97
+ }>;
98
+ /**
99
+ * Check if a path should be indexed
100
+ *
101
+ * Quick helper to check indexability without full directive parsing
102
+ */
103
+ declare function isIndexable(projectId: string, path: string): Promise<boolean>;
104
+
105
+ export { getRedirect as a, getRobotsDirective as b, generateSitemap as g, isIndexable as i, registerLocalSitemap as r };
@@ -13976,7 +13976,8 @@ async function scanCodebase(rootDir) {
13976
13976
  const results = {
13977
13977
  forms: [],
13978
13978
  metadata: [],
13979
- widgets: []
13979
+ widgets: [],
13980
+ sitemaps: []
13980
13981
  };
13981
13982
  const files = await findSourceFiles(rootDir);
13982
13983
  for (const file of files) {
@@ -13993,10 +13994,14 @@ async function scanCodebase(rootDir) {
13993
13994
  results.metadata.push(...metadata);
13994
13995
  const widgets = scanForWidgets(ast, content, relPath);
13995
13996
  results.widgets.push(...widgets);
13997
+ const sitemaps = scanForSitemaps(content, relPath);
13998
+ results.sitemaps.push(...sitemaps);
13996
13999
  } catch (error) {
13997
14000
  continue;
13998
14001
  }
13999
14002
  }
14003
+ const sitemapFiles = await scanForSitemapFiles(rootDir);
14004
+ results.sitemaps.push(...sitemapFiles);
14000
14005
  return results;
14001
14006
  }
14002
14007
  async function findSourceFiles(dir, files = []) {
@@ -14380,7 +14385,121 @@ function scanForWidgets(ast, content, filePath) {
14380
14385
  }
14381
14386
  return widgets;
14382
14387
  }
14388
+ function scanForSitemaps(content, filePath) {
14389
+ const sitemaps = [];
14390
+ if (content.includes("next-sitemap") && !content.includes("@uptrade/site-kit")) {
14391
+ sitemaps.push({
14392
+ filePath,
14393
+ type: "next-sitemap",
14394
+ generator: "next-sitemap",
14395
+ startLine: findLineNumber(content, "next-sitemap"),
14396
+ endLine: findLineNumber(content, "next-sitemap") + 10
14397
+ });
14398
+ }
14399
+ if ((filePath.endsWith("sitemap.ts") || filePath.endsWith("sitemap.js")) && !content.includes("@uptrade/site-kit")) {
14400
+ const isNextPattern = content.includes("MetadataRoute.Sitemap") || content.includes("export default") || content.includes("export async function");
14401
+ if (isNextPattern) {
14402
+ sitemaps.push({
14403
+ filePath,
14404
+ type: "custom-sitemap",
14405
+ generator: "custom",
14406
+ startLine: 1,
14407
+ endLine: content.split("\n").length,
14408
+ details: {
14409
+ hasAsyncFunction: content.includes("async"),
14410
+ hasDatabaseQuery: content.includes("supabase") || content.includes("prisma") || content.includes("sql")
14411
+ }
14412
+ });
14413
+ }
14414
+ }
14415
+ if (content.includes("@uptrade/site-kit/sitemap") || content.includes("createSitemap")) {
14416
+ sitemaps.push({
14417
+ filePath,
14418
+ type: "custom-sitemap",
14419
+ generator: "site-kit",
14420
+ startLine: findLineNumber(content, "createSitemap"),
14421
+ endLine: findLineNumber(content, "createSitemap") + 10
14422
+ });
14423
+ }
14424
+ return sitemaps;
14425
+ }
14426
+ function findLineNumber(content, search) {
14427
+ const lines = content.split("\n");
14428
+ for (let i = 0; i < lines.length; i++) {
14429
+ if (lines[i].includes(search)) {
14430
+ return i + 1;
14431
+ }
14432
+ }
14433
+ return 1;
14434
+ }
14435
+ async function scanForSitemapFiles(rootDir) {
14436
+ const sitemaps = [];
14437
+ const configPaths = [
14438
+ "next-sitemap.config.js",
14439
+ "next-sitemap.config.mjs",
14440
+ "next-sitemap.config.ts"
14441
+ ];
14442
+ for (const configPath of configPaths) {
14443
+ const fullPath = path.join(rootDir, configPath);
14444
+ try {
14445
+ await fs.access(fullPath);
14446
+ const content = await fs.readFile(fullPath, "utf-8");
14447
+ sitemaps.push({
14448
+ filePath: configPath,
14449
+ type: "next-sitemap-config",
14450
+ generator: "next-sitemap",
14451
+ startLine: 1,
14452
+ endLine: content.split("\n").length,
14453
+ details: {
14454
+ hasRobotsTxt: content.includes("generateRobotsTxt"),
14455
+ excludePaths: extractExcludePaths(content)
14456
+ }
14457
+ });
14458
+ } catch {
14459
+ }
14460
+ }
14461
+ const staticSitemapPath = path.join(rootDir, "public", "sitemap.xml");
14462
+ try {
14463
+ await fs.access(staticSitemapPath);
14464
+ const content = await fs.readFile(staticSitemapPath, "utf-8");
14465
+ const urlCount = (content.match(/<url>/g) || []).length;
14466
+ sitemaps.push({
14467
+ filePath: "public/sitemap.xml",
14468
+ type: "static-xml",
14469
+ generator: "static",
14470
+ startLine: 1,
14471
+ endLine: content.split("\n").length,
14472
+ details: {
14473
+ urlCount,
14474
+ isIndex: content.includes("<sitemapindex")
14475
+ }
14476
+ });
14477
+ } catch {
14478
+ }
14479
+ const generatedPaths = [
14480
+ ".next/server/app/sitemap.xml",
14481
+ "out/sitemap.xml"
14482
+ ];
14483
+ for (const genPath of generatedPaths) {
14484
+ const fullPath = path.join(rootDir, genPath);
14485
+ try {
14486
+ await fs.access(fullPath);
14487
+ } catch {
14488
+ }
14489
+ }
14490
+ return sitemaps;
14491
+ }
14492
+ function extractExcludePaths(content) {
14493
+ const excludeMatch = content.match(/exclude:\s*\[([\s\S]*?)\]/);
14494
+ if (!excludeMatch) return [];
14495
+ const paths = [];
14496
+ const matches = excludeMatch[1].matchAll(/['"]([^'"]+)['"]/g);
14497
+ for (const match of matches) {
14498
+ paths.push(match[1]);
14499
+ }
14500
+ return paths;
14501
+ }
14383
14502
 
14384
- export { scanCodebase, scanForForms, scanForMetadata, scanForWidgets };
14385
- //# sourceMappingURL=scanner-MF7P3CDE.mjs.map
14386
- //# sourceMappingURL=scanner-MF7P3CDE.mjs.map
14503
+ export { scanCodebase, scanForForms, scanForMetadata, scanForSitemapFiles, scanForSitemaps, scanForWidgets };
14504
+ //# sourceMappingURL=scanner-AZV5I6US.mjs.map
14505
+ //# sourceMappingURL=scanner-AZV5I6US.mjs.map