@stacksjs/buddy 0.70.117 → 0.70.119

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.
@@ -6,6 +6,7 @@ import { runAction } from "@stacksjs/actions";
6
6
  import { italic, onUnknownSubcommand, outro, prompts, runCommand } from "@stacksjs/cli";
7
7
  import { app, dns as dnsConfig, email as emailConfig, cloud as cloudConfig } from "@stacksjs/config";
8
8
  import { addDomain, hasUserDomainBeenAddedToCloud, syncDnsConfig } from "@stacksjs/dns";
9
+ import { loadProjectDnsConfig } from "../config";
9
10
  import { encryptEnv, env } from "@stacksjs/env";
10
11
  import { Action } from "@stacksjs/enums";
11
12
  import { path as p } from "@stacksjs/path";
@@ -1072,7 +1073,8 @@ export async function reconcileMailDns(res, ip, logger) {
1072
1073
  }
1073
1074
  }
1074
1075
  async function reconcileConfigDns(sites, logger) {
1075
- if (["a", "aaaa", "cname", "mx", "txt"].reduce((total, key) => total + (Array.isArray(dnsConfig?.[key]) ? dnsConfig[key].length : 0), 0) === 0)
1076
+ const projectDnsConfig = await loadProjectDnsConfig(dnsConfig);
1077
+ if (["a", "aaaa", "cname", "mx", "txt"].reduce((total, key) => total + (Array.isArray(projectDnsConfig?.[key]) ? projectDnsConfig[key].length : 0), 0) === 0)
1076
1078
  return;
1077
1079
  const domains = new Set;
1078
1080
  for (const site of Object.values(sites))
@@ -1080,7 +1082,7 @@ async function reconcileConfigDns(sites, logger) {
1080
1082
  domains.add(site.domain.replace(/^www\./, ""));
1081
1083
  for (const domain of domains)
1082
1084
  try {
1083
- const result = await syncDnsConfig(domain, dnsConfig);
1085
+ const result = await syncDnsConfig(domain, projectDnsConfig);
1084
1086
  if (!result.provider)
1085
1087
  continue;
1086
1088
  if (result.created || result.failed)
@@ -3,6 +3,7 @@ import { log, onUnknownSubcommand } from "@stacksjs/cli";
3
3
  import { config } from "@stacksjs/config";
4
4
  import { renderDnsConfig, resolveLiveRecords, syncDnsConfig } from "@stacksjs/dns";
5
5
  import { ExitCode } from "@stacksjs/types";
6
+ import { loadProjectDnsConfig } from "../config";
6
7
  export function dns(buddy) {
7
8
  const descriptions = {
8
9
  dns: "Lists the DNS records for a domain",
@@ -74,7 +75,7 @@ export function dns(buddy) {
74
75
  buddy.command("dns:diff [domain]", "Show which config/dns.ts records are missing from the live zone").option("--verbose", descriptions.verbose, { default: !1 }).action(async (domain, options) => {
75
76
  const target = bareDomain(domain);
76
77
  log.debug(`Running \`buddy dns:diff ${target}\` ...`, options);
77
- const { plan, provider } = await syncDnsConfig(target, config.dns, { dryRun: !0 });
78
+ const dnsConfig = await loadProjectDnsConfig(config.dns), { plan, provider } = await syncDnsConfig(target, dnsConfig, { dryRun: !0 });
78
79
  for (const item of plan.items) {
79
80
  const detail = item.record.type === "TXT" || item.record.type === "MX" ? ` ${item.record.content}` : ` \u2192 ${item.record.content}`;
80
81
  console.log(` ${item.action === "create" ? "+ create" : " keep "} ${item.record.type.padEnd(5)} ${item.record.name}${detail}`);
@@ -86,7 +87,7 @@ ${plan.create.length} to create, ${plan.keep.length} already present (${provider
86
87
  buddy.command("dns:sync [domain]", "Additively sync config/dns.ts to the registrar (creates missing records; never deletes or overwrites)").option("--dry-run", "Show the plan without writing any records", { default: !1 }).option("--verbose", descriptions.verbose, { default: !1 }).action(async (domain, options) => {
87
88
  const target = bareDomain(domain);
88
89
  log.debug(`Running \`buddy dns:sync ${target}\` ...`, options);
89
- const result = await syncDnsConfig(target, config.dns, { dryRun: options.dryRun });
90
+ const dnsConfig = await loadProjectDnsConfig(config.dns), result = await syncDnsConfig(target, dnsConfig, { dryRun: options.dryRun });
90
91
  if (!result.provider && !options.dryRun) {
91
92
  log.warn(`No DNS provider credentials found (e.g. PORKBUN_API_KEY / PORKBUN_SECRET_KEY) \u2014 nothing was synced. ${result.plan.create.length} record(s) would be created.`);
92
93
  process.exit(ExitCode.Success);
package/dist/config.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  import type { CLI } from '@stacksjs/cli';
2
+ import type { DnsConfig } from '@stacksjs/types';
3
+ export declare function loadProjectDnsConfig(fallback: DnsConfig): Promise<DnsConfig>;
2
4
  /**
3
5
  * Validate the buddy config structure
4
6
  */
package/dist/config.js CHANGED
@@ -1,6 +1,14 @@
1
1
  import { existsSync } from "node:fs";
2
+ import { pathToFileURL } from "node:url";
2
3
  import { log } from "@stacksjs/cli";
3
4
  import { path as p } from "@stacksjs/path";
5
+ export async function loadProjectDnsConfig(fallback) {
6
+ const configPath = p.projectConfigPath("dns.ts");
7
+ if (!existsSync(configPath))
8
+ return fallback;
9
+ const loaded = await import(`${pathToFileURL(configPath).href}?updated=${Date.now()}`);
10
+ return loaded.default ?? loaded.dns ?? fallback;
11
+ }
4
12
  export function validateConfig(config) {
5
13
  const errors = [];
6
14
  if (typeof config !== "object" || config === null) {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/buddy",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.70.117",
5
+ "version": "0.70.119",
6
6
  "description": "Meet Buddy. The Stacks runtime.",
7
7
  "author": "Chris Breuer",
8
8
  "contributors": [
@@ -92,51 +92,51 @@
92
92
  "prepublishOnly": "bun run build"
93
93
  },
94
94
  "dependencies": {
95
- "@stacksjs/actions": "^0.70.117",
96
- "@stacksjs/ai": "^0.70.117",
97
- "@stacksjs/alias": "^0.70.117",
98
- "@stacksjs/arrays": "^0.70.117",
99
- "@stacksjs/auth": "^0.70.117",
100
- "@stacksjs/build": "^0.70.117",
101
- "@stacksjs/cache": "^0.70.117",
102
- "@stacksjs/cli": "^0.70.117",
95
+ "@stacksjs/actions": "^0.70.119",
96
+ "@stacksjs/ai": "^0.70.119",
97
+ "@stacksjs/alias": "^0.70.119",
98
+ "@stacksjs/arrays": "^0.70.119",
99
+ "@stacksjs/auth": "^0.70.119",
100
+ "@stacksjs/build": "^0.70.119",
101
+ "@stacksjs/cache": "^0.70.119",
102
+ "@stacksjs/cli": "^0.70.119",
103
103
  "@stacksjs/clapp": "^0.2.10",
104
- "@stacksjs/cloud": "^0.70.117",
105
- "@stacksjs/collections": "^0.70.117",
106
- "@stacksjs/config": "^0.70.117",
107
- "@stacksjs/database": "^0.70.117",
108
- "@stacksjs/desktop": "^0.70.117",
109
- "@stacksjs/dns": "^0.70.117",
110
- "@stacksjs/email": "^0.70.117",
111
- "@stacksjs/enums": "^0.70.117",
112
- "@stacksjs/error-handling": "^0.70.117",
113
- "@stacksjs/events": "^0.70.117",
114
- "@stacksjs/git": "^0.70.117",
104
+ "@stacksjs/cloud": "^0.70.119",
105
+ "@stacksjs/collections": "^0.70.119",
106
+ "@stacksjs/config": "^0.70.119",
107
+ "@stacksjs/database": "^0.70.119",
108
+ "@stacksjs/desktop": "^0.70.119",
109
+ "@stacksjs/dns": "^0.70.119",
110
+ "@stacksjs/email": "^0.70.119",
111
+ "@stacksjs/enums": "^0.70.119",
112
+ "@stacksjs/error-handling": "^0.70.119",
113
+ "@stacksjs/events": "^0.70.119",
114
+ "@stacksjs/git": "^0.70.119",
115
115
  "@stacksjs/gitit": "^0.2.5",
116
- "@stacksjs/health": "^0.70.117",
116
+ "@stacksjs/health": "^0.70.119",
117
117
  "@stacksjs/dnsx": "^0.2.3",
118
118
  "@stacksjs/httx": "^0.1.10",
119
- "@stacksjs/lint": "^0.70.117",
120
- "@stacksjs/logging": "^0.70.117",
121
- "@stacksjs/notifications": "^0.70.117",
122
- "@stacksjs/objects": "^0.70.117",
123
- "@stacksjs/orm": "^0.70.117",
124
- "@stacksjs/path": "^0.70.117",
125
- "@stacksjs/payments": "^0.70.117",
126
- "@stacksjs/realtime": "^0.70.117",
127
- "@stacksjs/router": "^0.70.117",
119
+ "@stacksjs/lint": "^0.70.119",
120
+ "@stacksjs/logging": "^0.70.119",
121
+ "@stacksjs/notifications": "^0.70.119",
122
+ "@stacksjs/objects": "^0.70.119",
123
+ "@stacksjs/orm": "^0.70.119",
124
+ "@stacksjs/path": "^0.70.119",
125
+ "@stacksjs/payments": "^0.70.119",
126
+ "@stacksjs/realtime": "^0.70.119",
127
+ "@stacksjs/router": "^0.70.119",
128
128
  "@stacksjs/rpx": "^0.11.29",
129
- "@stacksjs/search-engine": "^0.70.117",
130
- "@stacksjs/security": "^0.70.117",
131
- "@stacksjs/server": "^0.70.117",
132
- "@stacksjs/storage": "^0.70.117",
133
- "@stacksjs/strings": "^0.70.117",
134
- "@stacksjs/testing": "^0.70.117",
135
- "@stacksjs/tunnel": "^0.70.117",
136
- "@stacksjs/types": "^0.70.117",
137
- "@stacksjs/ui": "^0.70.117",
138
- "@stacksjs/utils": "^0.70.117",
139
- "@stacksjs/validation": "^0.70.117",
129
+ "@stacksjs/search-engine": "^0.70.119",
130
+ "@stacksjs/security": "^0.70.119",
131
+ "@stacksjs/server": "^0.70.119",
132
+ "@stacksjs/storage": "^0.70.119",
133
+ "@stacksjs/strings": "^0.70.119",
134
+ "@stacksjs/testing": "^0.70.119",
135
+ "@stacksjs/tunnel": "^0.70.119",
136
+ "@stacksjs/types": "^0.70.119",
137
+ "@stacksjs/ui": "^0.70.119",
138
+ "@stacksjs/utils": "^0.70.119",
139
+ "@stacksjs/validation": "^0.70.119",
140
140
  "@stacksjs/ts-cloud": "^0.7.36"
141
141
  },
142
142
  "devDependencies": {