@uptrademedia/site-kit 1.1.7 → 1.2.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.
Files changed (41) hide show
  1. package/dist/{chunk-LHMD7CAR.mjs → chunk-2STSAGNT.mjs} +28 -6
  2. package/dist/chunk-2STSAGNT.mjs.map +1 -0
  3. package/dist/{chunk-CTKXFLIF.js → chunk-C5TQLU5U.js} +20 -4
  4. package/dist/chunk-C5TQLU5U.js.map +1 -0
  5. package/dist/{chunk-IRNMIFOE.js → chunk-ICHCPLRB.js} +28 -6
  6. package/dist/chunk-ICHCPLRB.js.map +1 -0
  7. package/dist/{chunk-TOUIKTXU.mjs → chunk-RLO3QJ65.mjs} +20 -4
  8. package/dist/chunk-RLO3QJ65.mjs.map +1 -0
  9. package/dist/cli/index.js +125 -34
  10. package/dist/cli/index.js.map +1 -1
  11. package/dist/cli/index.mjs +125 -34
  12. package/dist/cli/index.mjs.map +1 -1
  13. package/dist/engage/index.js +4 -4
  14. package/dist/engage/index.mjs +1 -1
  15. package/dist/index.js +2 -2
  16. package/dist/index.mjs +1 -1
  17. package/dist/llms/index.d.mts +23 -274
  18. package/dist/llms/index.d.ts +23 -274
  19. package/dist/llms/index.js +14 -14
  20. package/dist/llms/index.js.map +1 -1
  21. package/dist/llms/index.mjs +4 -4
  22. package/dist/llms/index.mjs.map +1 -1
  23. package/dist/robots/index.d.mts +46 -0
  24. package/dist/robots/index.d.ts +46 -0
  25. package/dist/robots/index.js +34 -0
  26. package/dist/robots/index.js.map +1 -0
  27. package/dist/robots/index.mjs +32 -0
  28. package/dist/robots/index.mjs.map +1 -0
  29. package/dist/sitemap/index.d.mts +5 -1
  30. package/dist/sitemap/index.d.ts +5 -1
  31. package/dist/sitemap/index.js +5 -4
  32. package/dist/sitemap/index.js.map +1 -1
  33. package/dist/sitemap/index.mjs +4 -3
  34. package/dist/sitemap/index.mjs.map +1 -1
  35. package/dist/types-Cl2SOKHd.d.mts +259 -0
  36. package/dist/types-Cl2SOKHd.d.ts +259 -0
  37. package/package.json +6 -1
  38. package/dist/chunk-CTKXFLIF.js.map +0 -1
  39. package/dist/chunk-IRNMIFOE.js.map +0 -1
  40. package/dist/chunk-LHMD7CAR.mjs.map +0 -1
  41. package/dist/chunk-TOUIKTXU.mjs.map +0 -1
package/dist/cli/index.js CHANGED
@@ -950,8 +950,8 @@ var require_command = chunkZSMWDLMK_js.__commonJS({
950
950
  "node_modules/commander/lib/command.js"(exports$1) {
951
951
  var EventEmitter = chunkZSMWDLMK_js.__require("events").EventEmitter;
952
952
  var childProcess = chunkZSMWDLMK_js.__require("child_process");
953
- var path14 = chunkZSMWDLMK_js.__require("path");
954
- var fs9 = chunkZSMWDLMK_js.__require("fs");
953
+ var path15 = chunkZSMWDLMK_js.__require("path");
954
+ var fs10 = chunkZSMWDLMK_js.__require("fs");
955
955
  var process11 = chunkZSMWDLMK_js.__require("process");
956
956
  var { Argument: Argument2, humanReadableArgName } = require_argument();
957
957
  var { CommanderError: CommanderError2 } = require_error();
@@ -1773,10 +1773,10 @@ Expecting one of '${allowedValues.join("', '")}'`);
1773
1773
  let launchWithNode = false;
1774
1774
  const sourceExt = [".js", ".ts", ".tsx", ".mjs", ".cjs"];
1775
1775
  function findFile(baseDir, baseName) {
1776
- const localBin = path14.resolve(baseDir, baseName);
1777
- if (fs9.existsSync(localBin)) return localBin;
1778
- if (sourceExt.includes(path14.extname(baseName))) return void 0;
1779
- const foundExt = sourceExt.find((ext) => fs9.existsSync(`${localBin}${ext}`));
1776
+ const localBin = path15.resolve(baseDir, baseName);
1777
+ if (fs10.existsSync(localBin)) return localBin;
1778
+ if (sourceExt.includes(path15.extname(baseName))) return void 0;
1779
+ const foundExt = sourceExt.find((ext) => fs10.existsSync(`${localBin}${ext}`));
1780
1780
  if (foundExt) return `${localBin}${foundExt}`;
1781
1781
  return void 0;
1782
1782
  }
@@ -1787,23 +1787,23 @@ Expecting one of '${allowedValues.join("', '")}'`);
1787
1787
  if (this._scriptPath) {
1788
1788
  let resolvedScriptPath;
1789
1789
  try {
1790
- resolvedScriptPath = fs9.realpathSync(this._scriptPath);
1790
+ resolvedScriptPath = fs10.realpathSync(this._scriptPath);
1791
1791
  } catch (err) {
1792
1792
  resolvedScriptPath = this._scriptPath;
1793
1793
  }
1794
- executableDir = path14.resolve(path14.dirname(resolvedScriptPath), executableDir);
1794
+ executableDir = path15.resolve(path15.dirname(resolvedScriptPath), executableDir);
1795
1795
  }
1796
1796
  if (executableDir) {
1797
1797
  let localFile = findFile(executableDir, executableFile);
1798
1798
  if (!localFile && !subcommand._executableFile && this._scriptPath) {
1799
- const legacyName = path14.basename(this._scriptPath, path14.extname(this._scriptPath));
1799
+ const legacyName = path15.basename(this._scriptPath, path15.extname(this._scriptPath));
1800
1800
  if (legacyName !== this._name) {
1801
1801
  localFile = findFile(executableDir, `${legacyName}-${subcommand._name}`);
1802
1802
  }
1803
1803
  }
1804
1804
  executableFile = localFile || executableFile;
1805
1805
  }
1806
- launchWithNode = sourceExt.includes(path14.extname(executableFile));
1806
+ launchWithNode = sourceExt.includes(path15.extname(executableFile));
1807
1807
  let proc;
1808
1808
  if (process11.platform !== "win32") {
1809
1809
  if (launchWithNode) {
@@ -2586,7 +2586,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
2586
2586
  * @return {Command}
2587
2587
  */
2588
2588
  nameFromFilename(filename) {
2589
- this._name = path14.basename(filename, path14.extname(filename));
2589
+ this._name = path15.basename(filename, path15.extname(filename));
2590
2590
  return this;
2591
2591
  }
2592
2592
  /**
@@ -2600,9 +2600,9 @@ Expecting one of '${allowedValues.join("', '")}'`);
2600
2600
  * @param {string} [path]
2601
2601
  * @return {string|null|Command}
2602
2602
  */
2603
- executableDir(path15) {
2604
- if (path15 === void 0) return this._executableDir;
2605
- this._executableDir = path15;
2603
+ executableDir(path16) {
2604
+ if (path16 === void 0) return this._executableDir;
2605
+ this._executableDir = path16;
2606
2606
  return this;
2607
2607
  }
2608
2608
  /**
@@ -14912,15 +14912,15 @@ var require_route = chunkZSMWDLMK_js.__commonJS({
14912
14912
  };
14913
14913
  }
14914
14914
  function wrapConversion(toModel, graph) {
14915
- const path14 = [graph[toModel].parent, toModel];
14915
+ const path15 = [graph[toModel].parent, toModel];
14916
14916
  let fn = conversions[graph[toModel].parent][toModel];
14917
14917
  let cur = graph[toModel].parent;
14918
14918
  while (graph[cur].parent) {
14919
- path14.unshift(graph[cur].parent);
14919
+ path15.unshift(graph[cur].parent);
14920
14920
  fn = link(conversions[graph[cur].parent][cur], fn);
14921
14921
  cur = graph[cur].parent;
14922
14922
  }
14923
- fn.conversion = path14;
14923
+ fn.conversion = path15;
14924
14924
  return fn;
14925
14925
  }
14926
14926
  module.exports = function(fromModel) {
@@ -25365,10 +25365,10 @@ var require_lib2 = chunkZSMWDLMK_js.__commonJS({
25365
25365
  exports$1.analyse = analyse;
25366
25366
  var detectFile = (filepath, opts = {}) => new Promise((resolve, reject) => {
25367
25367
  let fd;
25368
- const fs9 = (0, node_1.default)();
25368
+ const fs10 = (0, node_1.default)();
25369
25369
  const handler = (err, buffer) => {
25370
25370
  if (fd) {
25371
- fs9.closeSync(fd);
25371
+ fs10.closeSync(fd);
25372
25372
  }
25373
25373
  if (err) {
25374
25374
  reject(err);
@@ -25380,9 +25380,9 @@ var require_lib2 = chunkZSMWDLMK_js.__commonJS({
25380
25380
  };
25381
25381
  const sampleSize = (opts === null || opts === void 0 ? void 0 : opts.sampleSize) || 0;
25382
25382
  if (sampleSize > 0) {
25383
- fd = fs9.openSync(filepath, "r");
25383
+ fd = fs10.openSync(filepath, "r");
25384
25384
  let sample = Buffer.allocUnsafe(sampleSize);
25385
- fs9.read(fd, sample, 0, sampleSize, opts.offset, (err, bytesRead) => {
25385
+ fs10.read(fd, sample, 0, sampleSize, opts.offset, (err, bytesRead) => {
25386
25386
  if (err) {
25387
25387
  handler(err, null);
25388
25388
  } else {
@@ -25394,22 +25394,22 @@ var require_lib2 = chunkZSMWDLMK_js.__commonJS({
25394
25394
  });
25395
25395
  return;
25396
25396
  }
25397
- fs9.readFile(filepath, handler);
25397
+ fs10.readFile(filepath, handler);
25398
25398
  });
25399
25399
  exports$1.detectFile = detectFile;
25400
25400
  var detectFileSync = (filepath, opts = {}) => {
25401
- const fs9 = (0, node_1.default)();
25401
+ const fs10 = (0, node_1.default)();
25402
25402
  if (opts && opts.sampleSize) {
25403
- const fd = fs9.openSync(filepath, "r");
25403
+ const fd = fs10.openSync(filepath, "r");
25404
25404
  let sample = Buffer.allocUnsafe(opts.sampleSize);
25405
- const bytesRead = fs9.readSync(fd, sample, 0, opts.sampleSize, opts.offset);
25405
+ const bytesRead = fs10.readSync(fd, sample, 0, opts.sampleSize, opts.offset);
25406
25406
  if (bytesRead < opts.sampleSize) {
25407
25407
  sample = sample.subarray(0, bytesRead);
25408
25408
  }
25409
- fs9.closeSync(fd);
25409
+ fs10.closeSync(fd);
25410
25410
  return (0, exports$1.detect)(sample);
25411
25411
  }
25412
- return (0, exports$1.detect)(fs9.readFileSync(filepath));
25412
+ return (0, exports$1.detect)(fs10.readFileSync(filepath));
25413
25413
  };
25414
25414
  exports$1.detectFileSync = detectFileSync;
25415
25415
  exports$1.default = {
@@ -32801,9 +32801,9 @@ var fetchAsyncQuestionProperty = function(question, prop, answers) {
32801
32801
 
32802
32802
  // node_modules/inquirer/lib/ui/prompt.js
32803
32803
  var _ = {
32804
- set: (obj, path14 = "", value) => {
32804
+ set: (obj, path15 = "", value) => {
32805
32805
  let pointer = obj;
32806
- path14.split(".").forEach((key, index, arr) => {
32806
+ path15.split(".").forEach((key, index, arr) => {
32807
32807
  if (key === "__proto__" || key === "constructor") return;
32808
32808
  if (index === arr.length - 1) {
32809
32809
  pointer[key] = value;
@@ -32813,8 +32813,8 @@ var _ = {
32813
32813
  pointer = pointer[key];
32814
32814
  });
32815
32815
  },
32816
- get: (obj, path14 = "", defaultValue) => {
32817
- const travel = (regexp) => String.prototype.split.call(path14, regexp).filter(Boolean).reduce(
32816
+ get: (obj, path15 = "", defaultValue) => {
32817
+ const travel = (regexp) => String.prototype.split.call(path15, regexp).filter(Boolean).reduce(
32818
32818
  // @ts-expect-error implicit any on res[key]
32819
32819
  (res, key) => res !== null && res !== void 0 ? res[key] : res,
32820
32820
  obj
@@ -34917,8 +34917,8 @@ async function templateCommand(sourcePath, options, config2) {
34917
34917
  const slots = [];
34918
34918
  const componentNames = [];
34919
34919
  traverse__default.default(ast, {
34920
- JSXElement(path14) {
34921
- const openingElement = path14.node.openingElement;
34920
+ JSXElement(path15) {
34921
+ const openingElement = path15.node.openingElement;
34922
34922
  if (t.isJSXIdentifier(openingElement.name)) {
34923
34923
  const componentName = openingElement.name.name;
34924
34924
  if (componentName[0] === componentName[0].toUpperCase()) {
@@ -36702,7 +36702,8 @@ async function installCommand(options) {
36702
36702
  console.log("");
36703
36703
  console.log(source_default.green(" Next steps:"));
36704
36704
  console.log(source_default.gray(" 1. Run: npx uptrade-setup init"));
36705
- console.log(source_default.gray(" 2. Follow the setup wizard"));
36705
+ console.log(source_default.gray(" 2. Run: npx uptrade-setup scaffold (sitemap, robots, llms routes)"));
36706
+ console.log(source_default.gray(" 3. Follow the setup wizard"));
36706
36707
  console.log("");
36707
36708
  } catch (error) {
36708
36709
  spinner.fail("Installation failed");
@@ -36776,6 +36777,95 @@ function detectPackageManager2() {
36776
36777
  }
36777
36778
  return "npm";
36778
36779
  }
36780
+ async function scaffoldCommand(options) {
36781
+ console.log("");
36782
+ console.log(source_default.bold(" Scaffold Site-Kit default stack"));
36783
+ console.log(source_default.gray(" sitemap, robots.txt, llms.txt, llms-full.txt"));
36784
+ console.log("");
36785
+ const appDir = await findAppDir3();
36786
+ if (!appDir) {
36787
+ console.log(source_default.red(" \u2717 No app directory found (app/ or src/app/)"));
36788
+ process.exit(1);
36789
+ }
36790
+ const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || "https://example.com";
36791
+ const files = [
36792
+ {
36793
+ path: path4__default.default.join(appDir, "sitemap.ts"),
36794
+ content: `import { createSitemap } from '@uptrademedia/site-kit/sitemap'
36795
+
36796
+ export default createSitemap({
36797
+ baseUrl: process.env.NEXT_PUBLIC_SITE_URL || '${baseUrl}',
36798
+ // additionalPaths: async () => [...],
36799
+ })
36800
+ `
36801
+ },
36802
+ {
36803
+ path: path4__default.default.join(appDir, "robots.txt", "route.ts"),
36804
+ content: `import { createRobots } from '@uptrademedia/site-kit/robots'
36805
+
36806
+ const handler = createRobots({
36807
+ baseUrl: process.env.NEXT_PUBLIC_SITE_URL || '${baseUrl}',
36808
+ })
36809
+
36810
+ export const GET = handler
36811
+ `
36812
+ },
36813
+ {
36814
+ path: path4__default.default.join(appDir, "llms.txt", "route.ts"),
36815
+ content: `import { createLLMsTxtHandler } from '@uptrademedia/site-kit/llms'
36816
+
36817
+ export const GET = createLLMsTxtHandler({ preferStatic: true })
36818
+ `
36819
+ },
36820
+ {
36821
+ path: path4__default.default.join(appDir, "llms-full.txt", "route.ts"),
36822
+ content: `import { createLLMsFullTxtHandler } from '@uptrademedia/site-kit/llms'
36823
+
36824
+ export const GET = createLLMsFullTxtHandler({ preferStatic: true })
36825
+ `
36826
+ }
36827
+ ];
36828
+ if (options.dryRun) {
36829
+ console.log(source_default.yellow(" [DRY RUN] Would create:"));
36830
+ for (const f of files) {
36831
+ console.log(source_default.gray(` ${f.path}`));
36832
+ }
36833
+ console.log("");
36834
+ return;
36835
+ }
36836
+ const spinner = ora("Scaffolding...").start();
36837
+ for (const f of files) {
36838
+ try {
36839
+ if (fs.existsSync(f.path) && !options.force) {
36840
+ spinner.warn(`Skipped (exists): ${path4__default.default.relative(process.cwd(), f.path)}`);
36841
+ continue;
36842
+ }
36843
+ await fs2__default.default.mkdir(path4__default.default.dirname(f.path), { recursive: true });
36844
+ await fs2__default.default.writeFile(f.path, f.content, "utf-8");
36845
+ spinner.succeed(`Created ${path4__default.default.relative(process.cwd(), f.path)}`);
36846
+ } catch (err) {
36847
+ spinner.fail(`Failed: ${f.path}`);
36848
+ console.log(source_default.red(` ${err.message}`));
36849
+ }
36850
+ }
36851
+ console.log("");
36852
+ console.log(source_default.green(" Next steps:"));
36853
+ console.log(source_default.gray(" - Set NEXT_PUBLIC_SITE_URL in .env.local"));
36854
+ console.log(source_default.gray(" - Set NEXT_PUBLIC_UPTRADE_API_KEY for llms.txt"));
36855
+ console.log(source_default.gray(" - Add getLocalData to llms route if using local data"));
36856
+ console.log("");
36857
+ }
36858
+ async function findAppDir3() {
36859
+ const cwd = process.cwd();
36860
+ const candidates = [
36861
+ path4__default.default.join(cwd, "app"),
36862
+ path4__default.default.join(cwd, "src", "app")
36863
+ ];
36864
+ for (const dir of candidates) {
36865
+ if (fs.existsSync(dir)) return dir;
36866
+ }
36867
+ return null;
36868
+ }
36779
36869
 
36780
36870
  // src/cli/index.ts
36781
36871
  dotenv.config({ path: ".env.local" });
@@ -36794,6 +36884,7 @@ program2.command("sync").description("Sync local content to Portal (pages, blog,
36794
36884
  program2.command("api-routes").description("Generate _uptrade API proxy routes").option("--dry-run", "Show changes without applying").option("--force", "Overwrite existing routes").action(apiRoutesCommand);
36795
36885
  program2.command("install").description("Install @uptrade/site-kit in current project").option("-D, --dev", "Install as dev dependency").option("--dry-run", "Show command without running").action(installCommand);
36796
36886
  program2.command("upgrade").description("Upgrade @uptrade/site-kit to latest version").option("-v, --version <version>", "Target version (default: latest)").option("--dry-run", "Show command without running").action(upgradeCommand);
36887
+ program2.command("scaffold").description("Scaffold sitemap, robots, llms routes (default stack)").option("--dry-run", "Show what would be created").option("-f, --force", "Overwrite existing files").action(scaffoldCommand);
36797
36888
  if (process.argv.length === 2) {
36798
36889
  process.argv.push("init");
36799
36890
  }