openxiangda 1.0.90 → 1.0.91

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/lib/cli.js CHANGED
@@ -24,6 +24,7 @@ const { assertCanInitializeWorkspace, initWorkspace } = require('./workspace-ini
24
24
  const { bootstrapWorkspace } = require('./workspace-bootstrap');
25
25
  const {
26
26
  fail,
27
+ formatFetchError,
27
28
  maskText,
28
29
  openBrowser,
29
30
  parseArgs,
@@ -7972,7 +7973,7 @@ async function requestForm(baseUrl, apiPath, formData, accessToken, options = {}
7972
7973
  if (isAbortError(error)) {
7973
7974
  throw new Error(maskText(`HTTP form request timed out after ${timeoutMs}ms: ${apiPath}`));
7974
7975
  }
7975
- throw error;
7976
+ throw new Error(formatFetchError(error, apiPath));
7976
7977
  } finally {
7977
7978
  clearTimeout(timer);
7978
7979
  }
package/lib/http.js CHANGED
@@ -1,4 +1,4 @@
1
- const { maskText } = require('./utils');
1
+ const { formatFetchError, maskText } = require('./utils');
2
2
 
3
3
  const DEFAULT_REQUEST_TIMEOUT_MS = 60000;
4
4
 
@@ -35,7 +35,7 @@ async function requestJson(baseUrl, apiPath, options = {}) {
35
35
  if (isAbortError(error)) {
36
36
  throw new Error(maskText(`HTTP request timed out after ${timeoutMs}ms: ${apiPath}`));
37
37
  }
38
- throw error;
38
+ throw new Error(formatFetchError(error, apiPath));
39
39
  } finally {
40
40
  clearTimeout(timer);
41
41
  }
package/lib/utils.js CHANGED
@@ -11,6 +11,18 @@ function maskText(value) {
11
11
  .replace(/\b1[3-9]\d{9}\b/g, match => `${match.slice(0, 3)}****${match.slice(-4)}`);
12
12
  }
13
13
 
14
+ function formatFetchError(error, context) {
15
+ const message = error && error.message ? String(error.message) : String(error || 'fetch failed');
16
+ const cause = error && error.cause;
17
+ const causeParts = [];
18
+ if (cause?.code) causeParts.push(String(cause.code));
19
+ if (cause?.name) causeParts.push(String(cause.name));
20
+ if (cause?.message) causeParts.push(String(cause.message));
21
+ const suffix = causeParts.length ? `; cause=${causeParts.join(': ')}` : '';
22
+ const contextSuffix = context ? `; request=${context}` : '';
23
+ return maskText(`${message}${suffix}${contextSuffix}`);
24
+ }
25
+
14
26
  function print(value) {
15
27
  console.log(maskText(value));
16
28
  }
@@ -81,6 +93,7 @@ function writeJson(value) {
81
93
 
82
94
  module.exports = {
83
95
  fail,
96
+ formatFetchError,
84
97
  maskText,
85
98
  openBrowser,
86
99
  parseArgs,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda",
3
- "version": "1.0.90",
3
+ "version": "1.0.91",
4
4
  "description": "OpenXiangda CLI, workspace build tools, runtime SDK, and form components.",
5
5
  "private": false,
6
6
  "bin": {
@@ -4519,9 +4519,12 @@ var OpenXiangdaProvider = ({
4519
4519
  [appType]
4520
4520
  );
4521
4521
  const [accessToken, setAccessTokenState] = (0, import_react8.useState)(null);
4522
+ const accessTokenRef = (0, import_react8.useRef)(null);
4522
4523
  const setAccessToken = (0, import_react8.useCallback)(
4523
4524
  (nextAccessToken) => {
4524
- setAccessTokenState(nextAccessToken || null);
4525
+ const normalizedAccessToken = nextAccessToken || null;
4526
+ accessTokenRef.current = normalizedAccessToken;
4527
+ setAccessTokenState(normalizedAccessToken);
4525
4528
  },
4526
4529
  []
4527
4530
  );
@@ -4547,7 +4550,7 @@ var OpenXiangdaProvider = ({
4547
4550
  return;
4548
4551
  }
4549
4552
  setState((prev) => ({ ...prev, loading: true, error: null }));
4550
- const requestFetch = options.accessToken !== void 0 ? createAuthorizedFetch(resolvedFetch, options.accessToken || null) : authorizedFetch;
4553
+ const requestFetch = options.accessToken !== void 0 ? createAuthorizedFetch(resolvedFetch, options.accessToken || null) : createAuthorizedFetch(resolvedFetch, accessTokenRef.current);
4551
4554
  try {
4552
4555
  const response = await requestFetch(
4553
4556
  buildServiceUrl3(
@@ -4581,7 +4584,7 @@ var OpenXiangdaProvider = ({
4581
4584
  error: normalizeRuntimeError(error)
4582
4585
  });
4583
4586
  }
4584
- }, [authorizedFetch, resolvedAppType, resolvedFetch, servicePrefix]);
4587
+ }, [resolvedAppType, resolvedFetch, servicePrefix]);
4585
4588
  (0, import_react8.useEffect)(() => {
4586
4589
  void reload();
4587
4590
  }, [reload]);
@@ -4591,10 +4594,11 @@ var OpenXiangdaProvider = ({
4591
4594
  appType: resolvedAppType,
4592
4595
  servicePrefix,
4593
4596
  fetchImpl: authorizedFetch,
4597
+ baseFetchImpl: resolvedFetch,
4594
4598
  reload,
4595
4599
  setAccessToken
4596
4600
  }),
4597
- [authorizedFetch, reload, resolvedAppType, servicePrefix, state]
4601
+ [authorizedFetch, reload, resolvedAppType, resolvedFetch, servicePrefix, state]
4598
4602
  );
4599
4603
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(OpenXiangdaRuntimeContext.Provider, { value, children });
4600
4604
  };
@@ -5142,14 +5146,14 @@ var usePublicAccess = (options = {}) => {
5142
5146
  const {
5143
5147
  appType: runtimeAppType,
5144
5148
  servicePrefix: runtimeServicePrefix,
5145
- fetchImpl: runtimeFetchImpl,
5149
+ baseFetchImpl: runtimeBaseFetchImpl,
5146
5150
  reload: reloadRuntime,
5147
5151
  setAccessToken
5148
5152
  } = runtime;
5149
5153
  const {
5150
5154
  appType = runtimeAppType,
5151
5155
  servicePrefix = runtimeServicePrefix,
5152
- fetchImpl = runtimeFetchImpl,
5156
+ fetchImpl = runtimeBaseFetchImpl,
5153
5157
  autoStart = true,
5154
5158
  ...sessionInput
5155
5159
  } = options;