digdesign 0.1.0 → 0.1.1

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/dist/index.js CHANGED
@@ -142,25 +142,59 @@ function installDependencies(pm, deps, options = {}) {
142
142
  });
143
143
  }
144
144
 
145
+ // src/lib/errors.ts
146
+ var DigError = class extends Error {
147
+ constructor(message, options) {
148
+ super(message, options);
149
+ this.name = "DigError";
150
+ }
151
+ };
152
+
145
153
  // src/lib/registry.ts
146
154
  function resolveUrl(nameOrUrl, registryUrl) {
147
155
  if (/^https?:\/\//.test(nameOrUrl)) return nameOrUrl;
148
156
  return `${registryUrl}/r/${nameOrUrl}.json`;
149
157
  }
158
+ async function fetchFromRegistry(url, subject) {
159
+ let response;
160
+ try {
161
+ response = await fetch(url);
162
+ } catch (cause) {
163
+ throw new DigError(
164
+ `\u0628\u0647 \u0631\u062C\u06CC\u0633\u062A\u0631\u06CC \u0648\u0635\u0644 \u0646\u0634\u062F\u0645: ${url}
165
+ \u0627\u062A\u0635\u0627\u0644 \u0627\u06CC\u0646\u062A\u0631\u0646\u062A\u060C \u067E\u0631\u0627\u06A9\u0633\u06CC \u06CC\u0627 \u062F\u0631 \u062F\u0633\u062A\u0631\u0633 \u0628\u0648\u062F\u0646\u0650 \u062F\u0627\u0645\u0646\u0647 \u0631\u0627 \u0628\u0631\u0631\u0633\u06CC \u06A9\u0646\u06CC\u062F.`,
166
+ { cause }
167
+ );
168
+ }
169
+ if (response.ok) return response;
170
+ if (response.status === 404) {
171
+ throw new DigError(
172
+ `${subject} \u062F\u0631 \u0631\u062C\u06CC\u0633\u062A\u0631\u06CC \u067E\u06CC\u062F\u0627 \u0646\u0634\u062F (\u06F4\u06F0\u06F4): ${url}
173
+ \u0646\u0627\u0645 \u0631\u0627 \u0628\u0631\u0631\u0633\u06CC \u06A9\u0646\u06CC\u062F\u061B \u0641\u0647\u0631\u0633\u062A\u0650 \u06A9\u0627\u0645\u0644 \u0628\u0627 \xABdig health\xBB \u06CC\u0627 \u062F\u0631 \u0645\u0633\u062A\u0646\u062F\u0627\u062A \u062F\u06CC\u06AF \u0647\u0633\u062A.`
174
+ );
175
+ }
176
+ if (response.status === 401 || response.status === 403) {
177
+ throw new DigError(
178
+ `\u062F\u0633\u062A\u0631\u0633\u06CC \u0628\u0647 \u0631\u062C\u06CC\u0633\u062A\u0631\u06CC \u0631\u062F \u0634\u062F (${response.status}): ${url}
179
+ \u0627\u06AF\u0631 \u067E\u0634\u062A\u0650 VPN \u06CC\u0627 \u0641\u0627\u06CC\u0631\u0648\u0627\u0644 \u0647\u0633\u062A\u06CC\u062F\u060C \u0627\u0632 \u0634\u0628\u06A9\u0647\u0654 \u062F\u06CC\u06AF\u0631\u06CC \u0627\u0645\u062A\u062D\u0627\u0646 \u06A9\u0646\u06CC\u062F.`
180
+ );
181
+ }
182
+ if (response.status >= 500) {
183
+ throw new DigError(
184
+ `\u0631\u062C\u06CC\u0633\u062A\u0631\u06CC \u062E\u0637\u0627\u06CC \u0633\u0631\u0648\u0631 \u062F\u0627\u062F (${response.status}): ${url}
185
+ \u0686\u0646\u062F \u062F\u0642\u06CC\u0642\u0647 \u0628\u0639\u062F \u062F\u0648\u0628\u0627\u0631\u0647 \u0627\u0645\u062A\u062D\u0627\u0646 \u06A9\u0646\u06CC\u062F.`
186
+ );
187
+ }
188
+ throw new DigError(`\u062F\u0631\u06CC\u0627\u0641\u062A ${subject} \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062F (${response.status}): ${url}`);
189
+ }
150
190
  async function fetchRegistryIndex(registryUrl) {
151
191
  const url = `${registryUrl}/r/registry.json`;
152
- const response = await fetch(url);
153
- if (!response.ok) {
154
- throw new Error(`\u062F\u0631\u06CC\u0627\u0641\u062A \u0641\u0647\u0631\u0633\u062A\u0650 \u0631\u062C\u06CC\u0633\u062A\u0631\u06CC \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062F (${response.status}): ${url}`);
155
- }
192
+ const response = await fetchFromRegistry(url, "\u0641\u0647\u0631\u0633\u062A\u0650 \u0631\u062C\u06CC\u0633\u062A\u0631\u06CC");
156
193
  return await response.json();
157
194
  }
158
195
  async function fetchRegistryItem(nameOrUrl, registryUrl) {
159
196
  const url = resolveUrl(nameOrUrl, registryUrl);
160
- const response = await fetch(url);
161
- if (!response.ok) {
162
- throw new Error(`\u062F\u0631\u06CC\u0627\u0641\u062A \xAB${nameOrUrl}\xBB \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062F (${response.status}): ${url}`);
163
- }
197
+ const response = await fetchFromRegistry(url, `\xAB${nameOrUrl}\xBB`);
164
198
  return await response.json();
165
199
  }
166
200
  async function resolveRegistryTree(names, registryUrl) {
@@ -2835,7 +2869,7 @@ ${result.name}`);
2835
2869
 
2836
2870
  // src/index.ts
2837
2871
  var program = new Command();
2838
- program.name("dig").description("CLI \u0631\u0633\u0645\u06CC \u062F\u06CC\u0632\u0627\u06CC\u0646 \u0633\u06CC\u0633\u062A\u0645 \u062F\u06CC\u06AF").version("0.1.0");
2872
+ program.name("dig").description("CLI \u0631\u0633\u0645\u06CC \u062F\u06CC\u0632\u0627\u06CC\u0646 \u0633\u06CC\u0633\u062A\u0645 \u062F\u06CC\u06AF").version("0.1.1");
2839
2873
  program.command("init").description("\u0631\u0627\u0647\u200C\u0627\u0646\u062F\u0627\u0632\u06CC \u062F\u06CC\u06AF \u062F\u0631 \u067E\u0631\u0648\u0698\u0647 (\u0633\u0627\u062E\u062A dig.json)").option("--yes", "\u067E\u0627\u0633\u062E \u067E\u06CC\u0634\u200C\u0641\u0631\u0636 \u0628\u0647 \u0647\u0645\u0647\u0654 \u0633\u0648\u0627\u0644\u0627\u062A", false).action(initCommand);
2840
2874
  program.command("add").description("\u0627\u0641\u0632\u0648\u062F\u0646 \u06CC\u06A9 \u06CC\u0627 \u0686\u0646\u062F \u06A9\u0627\u0645\u067E\u0648\u0646\u0646\u062A \u0627\u0632 \u0631\u062C\u06CC\u0633\u062A\u0631\u06CC \u062F\u06CC\u06AF").argument("<components...>", "\u0646\u0627\u0645 \u06A9\u0627\u0645\u067E\u0648\u0646\u0646\u062A\u200C\u0647\u0627 (\u0645\u062B\u0644 button) \u06CC\u0627 \u0622\u062F\u0631\u0633 \u0631\u062C\u06CC\u0633\u062A\u0631\u06CC").option("--overwrite", "\u0628\u0627\u0632\u0646\u0648\u06CC\u0633\u06CC \u0641\u0627\u06CC\u0644\u200C\u0647\u0627\u06CC \u0645\u0648\u062C\u0648\u062F", false).option("--no-install", "\u0641\u0642\u0637 \u0641\u0627\u06CC\u0644\u200C\u0647\u0627 \u0631\u0627 \u0628\u0646\u0648\u06CC\u0633\u060C \u0648\u0627\u0628\u0633\u062A\u06AF\u06CC\u200C\u0647\u0627 \u0631\u0627 \u0646\u0635\u0628 \u0646\u06A9\u0646").action(addCommand);
2841
2875
  program.command("diff").description(
@@ -2892,4 +2926,17 @@ program.command("doctor").description(
2892
2926
  program.command("scan").description(
2893
2927
  "\u06CC\u0627\u0641\u062A\u0646\u0650 \u0627\u0633\u062A\u0641\u0627\u062F\u0647\u200C\u0647\u0627\u06CC JSX\u0650 \u06CC\u06A9 \u06A9\u0627\u0645\u067E\u0648\u0646\u0646\u062A \u062F\u0631 \u0631\u06CC\u067E\u0627\u0632\u06CC\u062A\u0648\u0631\u06CC\u0650 \u0645\u062D\u0644\u06CC (\u0641\u0642\u0637\u200C\u062E\u0648\u0627\u0646\u062F\u0646\u06CC \u2014 \u0647\u06CC\u0686 \u0641\u0627\u06CC\u0644\u06CC \u062A\u063A\u06CC\u06CC\u0631 \u0646\u0645\u06CC\u200C\u06A9\u0646\u062F)"
2894
2928
  ).argument("<component>", "\u0646\u0627\u0645\u0650 \u06A9\u0627\u0645\u067E\u0648\u0646\u0646\u062A (\u0645\u062B\u0644 button)").option("--json", "\u062E\u0631\u0648\u062C\u06CC JSON \u0628\u0631\u0627\u06CC \u0627\u0633\u06A9\u0631\u06CC\u067E\u062A/\u0627\u0628\u0632\u0627\u0631", false).action(scanCommand);
2895
- program.parseAsync();
2929
+ program.parseAsync().catch((error) => {
2930
+ process.exitCode = 1;
2931
+ if (error instanceof DigError) {
2932
+ console.error(`\u2717 ${error.message}`);
2933
+ if (process.env.DIG_DEBUG && error.cause) console.error(error.cause);
2934
+ return;
2935
+ }
2936
+ console.error(`\u2717 \u062E\u0637\u0627\u06CC \u067E\u06CC\u0634\u200C\u0628\u06CC\u0646\u06CC\u200C\u0646\u0634\u062F\u0647: ${error?.message ?? String(error)}`);
2937
+ if (process.env.DIG_DEBUG) {
2938
+ console.error(error);
2939
+ } else {
2940
+ console.error(" \u0628\u0631\u0627\u06CC \u062F\u06CC\u062F\u0646\u0650 \u062C\u0632\u0626\u06CC\u0627\u062A\u060C \u062F\u0648\u0628\u0627\u0631\u0647 \u0628\u0627 DIG_DEBUG=1 \u0627\u062C\u0631\u0627 \u06A9\u0646\u06CC\u062F.");
2941
+ }
2942
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "digdesign",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "CLI رسمی برای نصب کامپوننت‌های دیزاین سیستم دیگ",
5
5
  "type": "module",
6
6
  "license": "MIT",