@openclaw/zalouser 2026.5.28 → 2026.5.31-beta.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.
Files changed (28) hide show
  1. package/dist/{accounts.runtime-UypUaEfF.js → accounts.runtime-DdVE4J-U.js} +1 -1
  2. package/dist/{api-DhDa8sPp.js → api-BTawviIy.js} +6 -6
  3. package/dist/api.js +5 -5
  4. package/dist/{channel-BYQ2rvLF.js → channel-BYO3KfN5.js} +5 -5
  5. package/dist/channel-plugin-api.js +1 -1
  6. package/dist/{channel.runtime-Dyh9b6nd.js → channel.runtime-e1oFGWSK.js} +4 -3
  7. package/dist/{channel.setup-Bf53Feb_.js → channel.setup-C1CqJEYP.js} +2 -2
  8. package/dist/{monitor-Dv5gqTDI.js → monitor-B9WoA4vG.js} +5 -4
  9. package/dist/runtime-api.js +5 -5
  10. package/dist/{send-C04FGz0_.js → send-BACqNza9.js} +2 -2
  11. package/dist/setup-plugin-api.js +1 -1
  12. package/dist/{setup-surface-W1VQqpf0.js → setup-surface-C2Ls9v06.js} +2 -2
  13. package/dist/{shared-BnQwl7bD.js → shared-C_SkEtXL.js} +1 -1
  14. package/dist/{zalo-js-Cblh09JJ.js → zalo-js-DsHJocXe.js} +13 -10
  15. package/node_modules/es-object-atoms/CHANGELOG.md +21 -14
  16. package/node_modules/es-object-atoms/isObject.d.ts +1 -1
  17. package/node_modules/es-object-atoms/package.json +6 -7
  18. package/node_modules/es-object-atoms/tsconfig.json +1 -0
  19. package/node_modules/hasown/CHANGELOG.md +7 -0
  20. package/node_modules/hasown/index.d.ts +0 -1
  21. package/node_modules/hasown/package.json +4 -5
  22. package/node_modules/typebox/build/type/script/mapping.d.mts +5 -2
  23. package/node_modules/typebox/build/type/script/mapping.mjs +15 -8
  24. package/node_modules/typebox/build/type/script/parser.d.mts +3 -1
  25. package/node_modules/typebox/build/type/script/parser.mjs +2 -1
  26. package/node_modules/typebox/package.json +29 -29
  27. package/npm-shrinkwrap.json +13 -13
  28. package/package.json +5 -5
@@ -1,2 +1,2 @@
1
- import { n as getZaloUserInfo, t as checkZaloAuthenticated } from "./zalo-js-Cblh09JJ.js";
1
+ import { n as getZaloUserInfo, t as checkZaloAuthenticated } from "./zalo-js-DsHJocXe.js";
2
2
  export { checkZaloAuthenticated, getZaloUserInfo };
@@ -1,10 +1,10 @@
1
- import "./setup-surface-W1VQqpf0.js";
2
- import "./shared-BnQwl7bD.js";
3
- import { n as parseZalouserOutboundTarget } from "./channel-BYQ2rvLF.js";
1
+ import "./setup-surface-C2Ls9v06.js";
2
+ import "./shared-C_SkEtXL.js";
3
+ import { n as parseZalouserOutboundTarget } from "./channel-BYO3KfN5.js";
4
4
  import "./security-audit-DhK2UscX.js";
5
- import { i as listZaloFriendsMatching, n as getZaloUserInfo, s as listZaloGroupsMatching, t as checkZaloAuthenticated } from "./zalo-js-Cblh09JJ.js";
6
- import "./channel.setup-Bf53Feb_.js";
7
- import { i as sendMessageZalouser, n as sendImageZalouser, r as sendLinkZalouser } from "./send-C04FGz0_.js";
5
+ import { i as listZaloFriendsMatching, n as getZaloUserInfo, s as listZaloGroupsMatching, t as checkZaloAuthenticated } from "./zalo-js-DsHJocXe.js";
6
+ import "./channel.setup-C1CqJEYP.js";
7
+ import { i as sendMessageZalouser, n as sendImageZalouser, r as sendLinkZalouser } from "./send-BACqNza9.js";
8
8
  import { stringEnum } from "openclaw/plugin-sdk/channel-actions";
9
9
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
10
10
  import { Type } from "typebox";
package/dist/api.js CHANGED
@@ -1,7 +1,7 @@
1
- import { n as zalouserSetupWizard } from "./setup-surface-W1VQqpf0.js";
2
- import { n as createZalouserSetupWizardProxy, r as zalouserSetupAdapter } from "./shared-BnQwl7bD.js";
3
- import { t as zalouserPlugin } from "./channel-BYQ2rvLF.js";
1
+ import { n as zalouserSetupWizard } from "./setup-surface-C2Ls9v06.js";
2
+ import { n as createZalouserSetupWizardProxy, r as zalouserSetupAdapter } from "./shared-C_SkEtXL.js";
3
+ import { t as zalouserPlugin } from "./channel-BYO3KfN5.js";
4
4
  import { n as isZalouserMutableGroupEntry, t as collectZalouserSecurityAuditFindings } from "./security-audit-DhK2UscX.js";
5
- import { t as zalouserSetupPlugin } from "./channel.setup-Bf53Feb_.js";
6
- import { t as createZalouserTool } from "./api-DhDa8sPp.js";
5
+ import { t as zalouserSetupPlugin } from "./channel.setup-C1CqJEYP.js";
6
+ import { t as createZalouserTool } from "./api-BTawviIy.js";
7
7
  export { collectZalouserSecurityAuditFindings, createZalouserSetupWizardProxy, createZalouserTool, isZalouserMutableGroupEntry, zalouserPlugin, zalouserSetupAdapter, zalouserSetupPlugin, zalouserSetupWizard };
@@ -1,4 +1,4 @@
1
- import { a as DEFAULT_ACCOUNT_ID, c as isNumericTargetId, d as checkZcaAuthenticated, f as listZalouserAccountIds, i as writeQrDataUrlToTempFile, l as normalizeAccountId, m as resolveZalouserAccountSync, n as createZalouserSetupWizardProxy, o as chunkTextForOutbound, p as resolveDefaultZalouserAccountId, r as zalouserSetupAdapter, s as isDangerousNameMatchingEnabled, t as createZalouserPluginBase, u as sendPayloadWithChunkedTextAndMedia } from "./shared-BnQwl7bD.js";
1
+ import { a as DEFAULT_ACCOUNT_ID, c as isNumericTargetId, d as checkZcaAuthenticated, f as listZalouserAccountIds, i as writeQrDataUrlToTempFile, l as normalizeAccountId, m as resolveZalouserAccountSync, n as createZalouserSetupWizardProxy, o as chunkTextForOutbound, p as resolveDefaultZalouserAccountId, r as zalouserSetupAdapter, s as isDangerousNameMatchingEnabled, t as createZalouserPluginBase, u as sendPayloadWithChunkedTextAndMedia } from "./shared-C_SkEtXL.js";
2
2
  import { createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
3
3
  import { createAccountStatusSink, defineChannelMessageAdapter } from "openclaw/plugin-sdk/channel-outbound";
4
4
  import { buildPassiveProbedChannelStatusSummary, coerceStatusIssueAccountId, readStatusIssueFields } from "openclaw/plugin-sdk/extension-shared";
@@ -204,7 +204,7 @@ function resolveZalouserOutboundSessionRoute(params) {
204
204
  }
205
205
  //#endregion
206
206
  //#region extensions/zalouser/src/channel.adapters.ts
207
- const loadZalouserChannelRuntime$1 = createLazyRuntimeModule(() => import("./channel.runtime-Dyh9b6nd.js"));
207
+ const loadZalouserChannelRuntime$1 = createLazyRuntimeModule(() => import("./channel.runtime-e1oFGWSK.js"));
208
208
  const ZALOUSER_TEXT_CHUNK_LIMIT = 2e3;
209
209
  function resolveZalouserQrProfile(accountId) {
210
210
  const normalized = normalizeAccountId(accountId);
@@ -535,8 +535,8 @@ function collectZalouserStatusIssues(accounts) {
535
535
  }
536
536
  //#endregion
537
537
  //#region extensions/zalouser/src/channel.ts
538
- const loadZalouserChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-Dyh9b6nd.js"));
539
- const zalouserSetupWizardProxy = createZalouserSetupWizardProxy(async () => (await import("./setup-surface-W1VQqpf0.js").then((n) => n.t)).zalouserSetupWizard);
538
+ const loadZalouserChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-e1oFGWSK.js"));
539
+ const zalouserSetupWizardProxy = createZalouserSetupWizardProxy(async () => (await import("./setup-surface-C2Ls9v06.js").then((n) => n.t)).zalouserSetupWizard);
540
540
  function mapUser(params) {
541
541
  return {
542
542
  kind: "user",
@@ -653,7 +653,7 @@ const zalouserPlugin = createChatChannelPlugin({
653
653
  setStatus: ctx.setStatus
654
654
  });
655
655
  ctx.log?.info(`[${account.accountId}] starting zalouser provider${userLabel}`);
656
- const { monitorZalouserProvider } = await import("./monitor-Dv5gqTDI.js");
656
+ const { monitorZalouserProvider } = await import("./monitor-B9WoA4vG.js");
657
657
  return monitorZalouserProvider({
658
658
  account,
659
659
  config: ctx.cfg,
@@ -1,2 +1,2 @@
1
- import { t as zalouserPlugin } from "./channel-BYQ2rvLF.js";
1
+ import { t as zalouserPlugin } from "./channel-BYO3KfN5.js";
2
2
  export { zalouserPlugin };
@@ -1,11 +1,12 @@
1
1
  import { t as collectZalouserSecurityAuditFindings } from "./security-audit-DhK2UscX.js";
2
- import { a as listZaloGroupMembers, b as waitForZaloQrLogin, c as logoutZaloProfile, i as listZaloFriendsMatching, n as getZaloUserInfo, s as listZaloGroupsMatching, y as startZaloQrLogin } from "./zalo-js-Cblh09JJ.js";
3
- import { a as sendReactionZalouser, i as sendMessageZalouser } from "./send-C04FGz0_.js";
2
+ import { a as listZaloGroupMembers, b as waitForZaloQrLogin, c as logoutZaloProfile, i as listZaloFriendsMatching, n as getZaloUserInfo, s as listZaloGroupsMatching, y as startZaloQrLogin } from "./zalo-js-DsHJocXe.js";
3
+ import { a as sendReactionZalouser, i as sendMessageZalouser } from "./send-BACqNza9.js";
4
+ import { resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
4
5
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
5
6
  //#region extensions/zalouser/src/probe.ts
6
7
  async function probeZalouser(profile, timeoutMs) {
7
8
  try {
8
- const user = timeoutMs ? await Promise.race([getZaloUserInfo(profile), new Promise((resolve) => setTimeout(() => resolve(null), Math.max(timeoutMs, 1e3)))]) : await getZaloUserInfo(profile);
9
+ const user = timeoutMs ? await Promise.race([getZaloUserInfo(profile), new Promise((resolve) => setTimeout(() => resolve(null), resolveTimerTimeoutMs(timeoutMs, 1e3, 1e3)))]) : await getZaloUserInfo(profile);
9
10
  if (!user) return {
10
11
  ok: false,
11
12
  error: "Not authenticated"
@@ -1,5 +1,5 @@
1
- import { n as zalouserSetupWizard } from "./setup-surface-W1VQqpf0.js";
2
- import { r as zalouserSetupAdapter, t as createZalouserPluginBase } from "./shared-BnQwl7bD.js";
1
+ import { n as zalouserSetupWizard } from "./setup-surface-C2Ls9v06.js";
2
+ import { r as zalouserSetupAdapter, t as createZalouserPluginBase } from "./shared-C_SkEtXL.js";
3
3
  //#region extensions/zalouser/src/channel.setup.ts
4
4
  const zalouserSetupPlugin = { ...createZalouserPluginBase({
5
5
  setupWizard: zalouserSetupWizard,
@@ -1,6 +1,6 @@
1
- import { a as formatZalouserMessageSidFull, c as findZalouserGroupEntry, l as isZalouserGroupEntryAllowed, o as resolveZalouserMessageSid, r as getZalouserRuntime, s as buildZalouserGroupCandidates } from "./channel-BYQ2rvLF.js";
2
- import { o as listZaloGroups, r as listZaloFriends, u as resolveZaloGroupContext, v as startZaloListener } from "./zalo-js-Cblh09JJ.js";
3
- import { i as sendMessageZalouser, o as sendSeenZalouser, s as sendTypingZalouser, t as sendDeliveredZalouser } from "./send-C04FGz0_.js";
1
+ import { a as formatZalouserMessageSidFull, c as findZalouserGroupEntry, l as isZalouserGroupEntryAllowed, o as resolveZalouserMessageSid, r as getZalouserRuntime, s as buildZalouserGroupCandidates } from "./channel-BYO3KfN5.js";
2
+ import { o as listZaloGroups, r as listZaloFriends, u as resolveZaloGroupContext, v as startZaloListener } from "./zalo-js-DsHJocXe.js";
3
+ import { i as sendMessageZalouser, o as sendSeenZalouser, s as sendTypingZalouser, t as sendDeliveredZalouser } from "./send-BACqNza9.js";
4
4
  import { createDeferred } from "openclaw/plugin-sdk/extension-shared";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { mergeAllowlist, summarizeMapping } from "openclaw/plugin-sdk/allow-from";
@@ -556,7 +556,8 @@ async function deliverZalouserReply(params) {
556
556
  return { visibleReplySent };
557
557
  }
558
558
  async function monitorZalouserProvider(options) {
559
- let { account, config } = options;
559
+ const { config } = options;
560
+ let { account } = options;
560
561
  const { abortSignal, statusSink, runtime } = options;
561
562
  const core = getZalouserRuntime();
562
563
  const inboundQueue = new KeyedAsyncQueue();
@@ -1,9 +1,9 @@
1
- import { n as zalouserSetupWizard } from "./setup-surface-W1VQqpf0.js";
2
- import { n as createZalouserSetupWizardProxy, r as zalouserSetupAdapter } from "./shared-BnQwl7bD.js";
3
- import { i as setZalouserRuntime, t as zalouserPlugin } from "./channel-BYQ2rvLF.js";
1
+ import { n as zalouserSetupWizard } from "./setup-surface-C2Ls9v06.js";
2
+ import { n as createZalouserSetupWizardProxy, r as zalouserSetupAdapter } from "./shared-C_SkEtXL.js";
3
+ import { i as setZalouserRuntime, t as zalouserPlugin } from "./channel-BYO3KfN5.js";
4
4
  import { n as isZalouserMutableGroupEntry, t as collectZalouserSecurityAuditFindings } from "./security-audit-DhK2UscX.js";
5
- import { t as zalouserSetupPlugin } from "./channel.setup-Bf53Feb_.js";
6
- import { t as createZalouserTool } from "./api-DhDa8sPp.js";
5
+ import { t as zalouserSetupPlugin } from "./channel.setup-C1CqJEYP.js";
6
+ import { t as createZalouserTool } from "./api-BTawviIy.js";
7
7
  import { createChannelMessageReplyPipeline } from "openclaw/plugin-sdk/channel-outbound";
8
8
  import { buildBaseAccountStatusSnapshot } from "openclaw/plugin-sdk/status-helpers";
9
9
  import { formatAllowFromLowercase, mergeAllowlist, summarizeMapping } from "openclaw/plugin-sdk/allow-from";
@@ -1,4 +1,4 @@
1
- import { S as TextStyle, _ as sendZaloTypingEvent, f as sendZaloDeliveredEvent, g as sendZaloTextMessage, h as sendZaloSeenEvent, m as sendZaloReaction, p as sendZaloLink, x as createZalouserSendReceipt } from "./zalo-js-Cblh09JJ.js";
1
+ import { S as TextStyle, _ as sendZaloTypingEvent, f as sendZaloDeliveredEvent, g as sendZaloTextMessage, h as sendZaloSeenEvent, m as sendZaloReaction, p as sendZaloLink, x as createZalouserSendReceipt } from "./zalo-js-DsHJocXe.js";
2
2
  //#region extensions/zalouser/src/text-styles.ts
3
3
  const ESCAPE_SENTINEL_START = "";
4
4
  const ESCAPE_SENTINEL_END = "";
@@ -80,7 +80,7 @@ function parseZalouserTextStyles(input) {
80
80
  processedLines.push(escapeLiteralText(normalizeCodeBlockLeadingWhitespace(stripCodeFenceIndent(codeLine, activeFence.indent)), escapeMap));
81
81
  continue;
82
82
  }
83
- let line = unquotedLine;
83
+ const line = unquotedLine;
84
84
  const openingFence = resolveOpeningFence(rawLine);
85
85
  if (openingFence) {
86
86
  const fenceLine = openingFence.quoteIndent > 0 ? unquotedLine : rawLine;
@@ -1,2 +1,2 @@
1
- import { t as zalouserSetupPlugin } from "./channel.setup-Bf53Feb_.js";
1
+ import { t as zalouserSetupPlugin } from "./channel.setup-C1CqJEYP.js";
2
2
  export { zalouserSetupPlugin };
@@ -1,5 +1,5 @@
1
- import { d as checkZcaAuthenticated, f as listZalouserAccountIds, i as writeQrDataUrlToTempFile, m as resolveZalouserAccountSync, p as resolveDefaultZalouserAccountId } from "./shared-BnQwl7bD.js";
2
- import { b as waitForZaloQrLogin, c as logoutZaloProfile, d as resolveZaloGroupsByEntries, l as resolveZaloAllowFromEntries, y as startZaloQrLogin } from "./zalo-js-Cblh09JJ.js";
1
+ import { d as checkZcaAuthenticated, f as listZalouserAccountIds, i as writeQrDataUrlToTempFile, m as resolveZalouserAccountSync, p as resolveDefaultZalouserAccountId } from "./shared-C_SkEtXL.js";
2
+ import { b as waitForZaloQrLogin, c as logoutZaloProfile, d as resolveZaloGroupsByEntries, l as resolveZaloAllowFromEntries, y as startZaloQrLogin } from "./zalo-js-DsHJocXe.js";
3
3
  import { normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { DEFAULT_ACCOUNT_ID, addWildcardAllowFrom, createSetupTranslator, formatCliCommand, formatDocsLink, formatResolvedUnresolvedNote, mergeAllowFromEntries, normalizeAccountId, patchScopedAccountConfig } from "openclaw/plugin-sdk/setup";
5
5
  //#region \0rolldown/runtime.js
@@ -19,7 +19,7 @@ import { createDangerousNameMatchingMutableAllowlistWarningCollector } from "ope
19
19
  //#region extensions/zalouser/src/accounts.ts
20
20
  let zalouserAccountsRuntimePromise;
21
21
  async function loadZalouserAccountsRuntime() {
22
- zalouserAccountsRuntimePromise ??= import("./accounts.runtime-UypUaEfF.js");
22
+ zalouserAccountsRuntimePromise ??= import("./accounts.runtime-DdVE4J-U.js");
23
23
  return await zalouserAccountsRuntimePromise;
24
24
  }
25
25
  const { listAccountIds: listZalouserAccountIds, resolveDefaultAccountId: resolveDefaultZalouserAccountId } = createAccountListHelpers("zalouser", { implicitDefaultAccount: {
@@ -5,7 +5,7 @@ import { randomUUID } from "node:crypto";
5
5
  import fs from "node:fs";
6
6
  import os from "node:os";
7
7
  import { extensionForMime } from "openclaw/plugin-sdk/media-mime";
8
- import { asFiniteNumberInRange, parseStrictFiniteNumber, parseStrictNonNegativeInteger } from "openclaw/plugin-sdk/number-runtime";
8
+ import { asDateTimestampMs, asFiniteNumberInRange, isFutureDateTimestampMs, parseStrictFiniteNumber, parseStrictNonNegativeInteger, resolveExpiresAtMsFromDurationMs, resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
9
9
  import { loadOutboundMediaFromUrl } from "openclaw/plugin-sdk/outbound-media";
10
10
  import { privateFileStoreSync, readRegularFileSync, statRegularFileSync, withTimeout } from "openclaw/plugin-sdk/security-runtime";
11
11
  import { resolveStateDir } from "openclaw/plugin-sdk/state-paths";
@@ -220,15 +220,16 @@ function normalizeMessageContent(content) {
220
220
  }
221
221
  }
222
222
  function resolveInboundTimestamp(rawTs) {
223
+ const fallbackTimestamp = () => asDateTimestampMs(Date.now()) ?? 0;
223
224
  const timestamp = asFiniteNumberInRange(typeof rawTs === "number" ? rawTs : typeof rawTs === "string" ? parseStrictFiniteNumber(rawTs) : void 0, {
224
225
  min: 0,
225
226
  minExclusive: true,
226
227
  max: Number.MAX_SAFE_INTEGER
227
228
  });
228
- if (timestamp === void 0) return Date.now();
229
- if (timestamp > ZALO_TIMESTAMP_MS_THRESHOLD) return Math.trunc(timestamp);
230
- if (timestamp > MAX_SAFE_ZALO_TIMESTAMP_SECONDS) return Date.now();
231
- return Math.trunc(timestamp * 1e3);
229
+ if (timestamp === void 0) return fallbackTimestamp();
230
+ if (timestamp > ZALO_TIMESTAMP_MS_THRESHOLD) return asDateTimestampMs(Math.trunc(timestamp)) ?? fallbackTimestamp();
231
+ if (timestamp > MAX_SAFE_ZALO_TIMESTAMP_SECONDS) return fallbackTimestamp();
232
+ return asDateTimestampMs(Math.trunc(timestamp * 1e3)) ?? fallbackTimestamp();
232
233
  }
233
234
  function extractMentionIds(rawMentions) {
234
235
  if (!Array.isArray(rawMentions)) return [];
@@ -555,7 +556,7 @@ function readCachedGroupContext(profile, groupId) {
555
556
  const key = makeGroupContextCacheKey(profile, groupId);
556
557
  const cached = groupContextCache.get(key);
557
558
  if (!cached) return null;
558
- if (cached.expiresAt <= Date.now()) {
559
+ if (!isFutureDateTimestampMs(cached.expiresAt)) {
559
560
  groupContextCache.delete(key);
560
561
  return null;
561
562
  }
@@ -565,7 +566,7 @@ function readCachedGroupContext(profile, groupId) {
565
566
  }
566
567
  function trimGroupContextCache(now) {
567
568
  for (const [key, value] of groupContextCache) {
568
- if (value.expiresAt > now) continue;
569
+ if (isFutureDateTimestampMs(value.expiresAt, { nowMs: now })) continue;
569
570
  groupContextCache.delete(key);
570
571
  }
571
572
  while (groupContextCache.size > GROUP_CONTEXT_CACHE_MAX_ENTRIES) {
@@ -578,9 +579,11 @@ function writeCachedGroupContext(profile, context) {
578
579
  const now = Date.now();
579
580
  const key = makeGroupContextCacheKey(profile, context.groupId);
580
581
  if (groupContextCache.has(key)) groupContextCache.delete(key);
582
+ const expiresAt = resolveExpiresAtMsFromDurationMs(GROUP_CONTEXT_CACHE_TTL_MS, { nowMs: now });
583
+ if (expiresAt === void 0) return;
581
584
  groupContextCache.set(key, {
582
585
  value: context,
583
- expiresAt: now + GROUP_CONTEXT_CACHE_TTL_MS
586
+ expiresAt
584
587
  });
585
588
  trimGroupContextCache(now);
586
589
  }
@@ -1073,7 +1076,7 @@ async function startZaloQrLogin(params) {
1073
1076
  }
1074
1077
  const active = activeQrLogins.get(profile);
1075
1078
  if (!active) return { message: "Failed to initialize Zalo QR login." };
1076
- const timeoutMs = Math.max(params.timeoutMs ?? DEFAULT_QR_START_TIMEOUT_MS, 3e3);
1079
+ const timeoutMs = resolveTimerTimeoutMs(params.timeoutMs, DEFAULT_QR_START_TIMEOUT_MS, 3e3);
1077
1080
  const deadline = Date.now() + timeoutMs;
1078
1081
  while (Date.now() < deadline) {
1079
1082
  if (active.error) {
@@ -1109,7 +1112,7 @@ async function waitForZaloQrLogin(params) {
1109
1112
  message: "QR login expired. Start again to generate a fresh QR code."
1110
1113
  };
1111
1114
  }
1112
- const timeoutMs = Math.max(params.timeoutMs ?? DEFAULT_QR_WAIT_TIMEOUT_MS, 1e3);
1115
+ const timeoutMs = resolveTimerTimeoutMs(params.timeoutMs, DEFAULT_QR_WAIT_TIMEOUT_MS, 1e3);
1113
1116
  const deadline = Date.now() + timeoutMs;
1114
1117
  while (Date.now() < deadline) {
1115
1118
  if (active.error) {
@@ -5,33 +5,40 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [v1.1.1](https://github.com/ljharb/es-object-atoms/compare/v1.1.0...v1.1.1) - 2025-01-14
8
+ ## [v1.1.2](https://github.com/es-shims/es-object-atoms/compare/v1.1.1...v1.1.2) - 2026-05-22
9
9
 
10
10
  ### Commits
11
11
 
12
- - [types] `ToObject`: improve types [`cfe8c8a`](https://github.com/ljharb/es-object-atoms/commit/cfe8c8a105c44820cb22e26f62d12ef0ad9715c8)
12
+ - [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `auto-changelog`, `eslint`, `npmignore` [`41e3d94`](https://github.com/es-shims/es-object-atoms/commit/41e3d94f6b49237fa490ec598e068f170c8b161e)
13
+ - [types] improve `isObject` type [`758edc2`](https://github.com/es-shims/es-object-atoms/commit/758edc2280fa6993a294a55957a43cee5951bf51)
13
14
 
14
- ## [v1.1.0](https://github.com/ljharb/es-object-atoms/compare/v1.0.1...v1.1.0) - 2025-01-14
15
+ ## [v1.1.1](https://github.com/es-shims/es-object-atoms/compare/v1.1.0...v1.1.1) - 2025-01-14
15
16
 
16
17
  ### Commits
17
18
 
18
- - [New] add `isObject` [`51e4042`](https://github.com/ljharb/es-object-atoms/commit/51e4042df722eb3165f40dc5f4bf33d0197ecb07)
19
+ - [types] `ToObject`: improve types [`cfe8c8a`](https://github.com/es-shims/es-object-atoms/commit/cfe8c8a105c44820cb22e26f62d12ef0ad9715c8)
19
20
 
20
- ## [v1.0.1](https://github.com/ljharb/es-object-atoms/compare/v1.0.0...v1.0.1) - 2025-01-13
21
+ ## [v1.1.0](https://github.com/es-shims/es-object-atoms/compare/v1.0.1...v1.1.0) - 2025-01-14
21
22
 
22
23
  ### Commits
23
24
 
24
- - [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/tape`, `auto-changelog`, `tape` [`38ab9eb`](https://github.com/ljharb/es-object-atoms/commit/38ab9eb00b62c2f4668644f5e513d9b414ebd595)
25
- - [types] improve types [`7d1beb8`](https://github.com/ljharb/es-object-atoms/commit/7d1beb887958b78b6a728a210a1c8370ab7e2aa1)
26
- - [Tests] replace `aud` with `npm audit` [`25863ba`](https://github.com/ljharb/es-object-atoms/commit/25863baf99178f1d1ad33d1120498db28631907e)
27
- - [Dev Deps] add missing peer dep [`c012309`](https://github.com/ljharb/es-object-atoms/commit/c0123091287e6132d6f4240496340c427433df28)
25
+ - [New] add `isObject` [`51e4042`](https://github.com/es-shims/es-object-atoms/commit/51e4042df722eb3165f40dc5f4bf33d0197ecb07)
26
+
27
+ ## [v1.0.1](https://github.com/es-shims/es-object-atoms/compare/v1.0.0...v1.0.1) - 2025-01-13
28
+
29
+ ### Commits
30
+
31
+ - [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/tape`, `auto-changelog`, `tape` [`38ab9eb`](https://github.com/es-shims/es-object-atoms/commit/38ab9eb00b62c2f4668644f5e513d9b414ebd595)
32
+ - [types] improve types [`7d1beb8`](https://github.com/es-shims/es-object-atoms/commit/7d1beb887958b78b6a728a210a1c8370ab7e2aa1)
33
+ - [Tests] replace `aud` with `npm audit` [`25863ba`](https://github.com/es-shims/es-object-atoms/commit/25863baf99178f1d1ad33d1120498db28631907e)
34
+ - [Dev Deps] add missing peer dep [`c012309`](https://github.com/es-shims/es-object-atoms/commit/c0123091287e6132d6f4240496340c427433df28)
28
35
 
29
36
  ## v1.0.0 - 2024-03-16
30
37
 
31
38
  ### Commits
32
39
 
33
- - Initial implementation, tests, readme, types [`f1499db`](https://github.com/ljharb/es-object-atoms/commit/f1499db7d3e1741e64979c61d645ab3137705e82)
34
- - Initial commit [`99eedc7`](https://github.com/ljharb/es-object-atoms/commit/99eedc7b5fde38a50a28d3c8b724706e3e4c5f6a)
35
- - [meta] rename repo [`fc851fa`](https://github.com/ljharb/es-object-atoms/commit/fc851fa70616d2d182aaf0bd02c2ed7084dea8fa)
36
- - npm init [`b909377`](https://github.com/ljharb/es-object-atoms/commit/b909377c50049bd0ec575562d20b0f9ebae8947f)
37
- - Only apps should have lockfiles [`7249edd`](https://github.com/ljharb/es-object-atoms/commit/7249edd2178c1b9ddfc66ffcc6d07fdf0d28efc1)
40
+ - Initial implementation, tests, readme, types [`f1499db`](https://github.com/es-shims/es-object-atoms/commit/f1499db7d3e1741e64979c61d645ab3137705e82)
41
+ - Initial commit [`99eedc7`](https://github.com/es-shims/es-object-atoms/commit/99eedc7b5fde38a50a28d3c8b724706e3e4c5f6a)
42
+ - [meta] rename repo [`fc851fa`](https://github.com/es-shims/es-object-atoms/commit/fc851fa70616d2d182aaf0bd02c2ed7084dea8fa)
43
+ - npm init [`b909377`](https://github.com/es-shims/es-object-atoms/commit/b909377c50049bd0ec575562d20b0f9ebae8947f)
44
+ - Only apps should have lockfiles [`7249edd`](https://github.com/es-shims/es-object-atoms/commit/7249edd2178c1b9ddfc66ffcc6d07fdf0d28efc1)
@@ -1,3 +1,3 @@
1
- declare function isObject(x: unknown): x is object;
1
+ declare function isObject<T>(x: T): x is T & object & Record<PropertyKey, unknown>;
2
2
 
3
3
  export = isObject;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "es-object-atoms",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "ES Object-related atoms: Object, ToObject, RequireObjectCoercible",
5
5
  "main": "index.js",
6
6
  "exports": {
@@ -46,16 +46,15 @@
46
46
  "es-errors": "^1.3.0"
47
47
  },
48
48
  "devDependencies": {
49
- "@ljharb/eslint-config": "^21.1.1",
50
- "@ljharb/tsconfig": "^0.2.3",
49
+ "@ljharb/eslint-config": "^22.2.3",
50
+ "@ljharb/tsconfig": "^0.3.2",
51
51
  "@types/tape": "^5.8.1",
52
- "auto-changelog": "^2.5.0",
52
+ "auto-changelog": "^2.5.1",
53
53
  "eclint": "^2.8.1",
54
- "encoding": "^0.1.13",
55
- "eslint": "^8.8.0",
54
+ "eslint": "^8.57.1",
56
55
  "evalmd": "^0.0.19",
57
56
  "in-publish": "^2.0.1",
58
- "npmignore": "^0.3.1",
57
+ "npmignore": "^0.3.5",
59
58
  "nyc": "^10.3.2",
60
59
  "safe-publish-latest": "^2.0.0",
61
60
  "tape": "^5.9.0",
@@ -2,5 +2,6 @@
2
2
  "extends": "@ljharb/tsconfig",
3
3
  "compilerOptions": {
4
4
  "target": "es5",
5
+ "ignoreDeprecations": "6.0",
5
6
  },
6
7
  }
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [v2.0.4](https://github.com/inspect-js/hasOwn/compare/v2.0.3...v2.0.4) - 2026-05-28
9
+
10
+ ### Commits
11
+
12
+ - [types] drop the dead key-narrowing overload [`fdab00e`](https://github.com/inspect-js/hasOwn/commit/fdab00e2703e65411424e19bf86a7e72a8f10da9)
13
+ - [Dev Deps] update `@ljharb/eslint-config`, `auto-changelog`, `eslint` [`91f6247`](https://github.com/inspect-js/hasOwn/commit/91f624768dd0f7db0d019b89d4d86bd66e20ec30)
14
+
8
15
  ## [v2.0.3](https://github.com/inspect-js/hasOwn/compare/v2.0.2...v2.0.3) - 2026-04-17
9
16
 
10
17
  ### Commits
@@ -1,4 +1,3 @@
1
- declare function hasOwn<O, K extends PropertyKey>(o: O, p: K): p is K & keyof O;
2
1
  declare function hasOwn<O, K extends PropertyKey, V = unknown>(o: O, p: K): o is O & Record<K, V>;
3
2
 
4
3
  export = hasOwn;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hasown",
3
- "version": "2.0.3",
3
+ "version": "2.0.4",
4
4
  "description": "A robust, ES3 compatible, \"has own property\" predicate.",
5
5
  "main": "index.js",
6
6
  "exports": {
@@ -52,13 +52,12 @@
52
52
  },
53
53
  "devDependencies": {
54
54
  "@arethetypeswrong/cli": "^0.18.2",
55
- "@ljharb/eslint-config": "^22.2.2",
55
+ "@ljharb/eslint-config": "^22.2.3",
56
56
  "@ljharb/tsconfig": "^0.3.2",
57
57
  "@types/function-bind": "^1.1.10",
58
58
  "@types/tape": "^5.8.1",
59
- "auto-changelog": "^2.5.0",
60
- "encoding": "^0.1.13",
61
- "eslint": "^10.2.0",
59
+ "auto-changelog": "^2.5.1",
60
+ "eslint": "^10.4.0",
62
61
  "evalmd": "^0.0.19",
63
62
  "in-publish": "^2.0.1",
64
63
  "jiti": "^0.0.0",
@@ -164,10 +164,13 @@ export type TExtendsMapping<Input extends [unknown, unknown, unknown, unknown, u
164
164
  export declare function ExtendsMapping(input: [unknown, unknown, unknown, unknown, unknown, unknown] | []): unknown;
165
165
  export type TBaseMapping<Input extends [unknown, unknown, unknown] | unknown> = (Input extends ['(', infer Type extends T.TSchema, ')'] ? Type : Input extends infer Type extends T.TSchema ? Type : never);
166
166
  export declare function BaseMapping(input: [unknown, unknown, unknown] | unknown): unknown;
167
+ export type TWithMapping<Input extends [unknown, unknown] | []> = (Input extends ['with', infer Options extends Record<PropertyKey, unknown>] ? Options : []);
168
+ export declare function WithMapping(input: [unknown, unknown] | []): unknown;
167
169
  type TFactorIndexArray<Type extends T.TSchema, IndexArray extends unknown[]> = (IndexArray extends [infer Left extends T.TSchema[], ...infer Right extends unknown[]] ? (Left extends [infer Indexer extends T.TSchema] ? TFactorIndexArray<C.TIndexDeferred<Type, Indexer>, Right> : Left extends [] ? TFactorIndexArray<T.TArray<Type>, Right> : T.TNever) : Type);
168
170
  type TFactorExtends<Type extends T.TSchema, Extends extends unknown[]> = (Extends extends [infer Right extends T.TSchema, infer True extends T.TSchema, infer False extends T.TSchema] ? C.TConditionalDeferred<Type, Right, True, False> : Type);
169
- export type TFactorMapping<Input extends [unknown, unknown, unknown, unknown]> = (Input extends [infer KeyOf extends boolean, infer Type extends T.TSchema, infer IndexArray extends unknown[], infer Extend extends unknown[]] ? KeyOf extends true ? TFactorExtends<C.TKeyOfDeferred<TFactorIndexArray<Type, IndexArray>>, Extend> : TFactorExtends<TFactorIndexArray<Type, IndexArray>, Extend> : never);
170
- export declare function FactorMapping(input: [unknown, unknown, unknown, unknown]): unknown;
171
+ type TFactorWith<Type extends T.TSchema, With extends unknown> = (With extends Record<PropertyKey, unknown> ? C.TOptionsDeferred<Type, With> : Type);
172
+ export type TFactorMapping<Input extends [unknown, unknown, unknown, unknown, unknown]> = (Input extends [infer KeyOf extends boolean, infer Type extends T.TSchema, infer IndexArray extends unknown[], infer Extend extends unknown[], infer WithClause extends unknown] ? TFactorWith<KeyOf extends true ? TFactorExtends<C.TKeyOfDeferred<TFactorIndexArray<Type, IndexArray>>, Extend> : TFactorExtends<TFactorIndexArray<Type, IndexArray>, Extend>, WithClause> : never);
173
+ export declare function FactorMapping(input: [unknown, unknown, unknown, unknown, unknown]): unknown;
171
174
  type TExprBinaryMapping<Left extends T.TSchema, Rest extends unknown[]> = (Rest extends [infer Operator extends unknown, infer Right extends T.TSchema, infer Next extends unknown[]] ? (TExprBinaryMapping<Right, Next> extends infer Schema extends T.TSchema ? (Operator extends '&' ? (Schema extends T.TIntersect<infer Types extends T.TSchema[]> ? T.TIntersect<[Left, ...Types]> : T.TIntersect<[Left, Schema]>) : Operator extends '|' ? (Schema extends T.TUnion<infer Types extends T.TSchema[]> ? T.TUnion<[Left, ...Types]> : T.TUnion<[Left, Schema]>) : never) : never) : Left);
172
175
  export type TExprTermTailMapping<Input extends [unknown, unknown, unknown] | []> = (Input);
173
176
  export declare function ExprTermTailMapping(input: [unknown, unknown, unknown] | []): unknown;
@@ -185,27 +185,34 @@ export function BaseMapping(input) {
185
185
  ? input[1]
186
186
  : input;
187
187
  }
188
+ export function WithMapping(input) {
189
+ return Guard.IsEqual(input.length, 2) ? input[1] : [];
190
+ }
188
191
  // deno-coverage-ignore-start
189
- // ...
190
- const FactorIndexArray = (Type, indexArray) => {
192
+ function FactorIndexArray(Type, indexArray) {
191
193
  return indexArray.reduce((result, left) => {
192
194
  const _left = left;
193
195
  return (Guard.IsEqual(_left.length, 1) ? C.IndexDeferred(result, _left[0]) :
194
196
  Guard.IsEqual(_left.length, 0) ? T.Array(result) :
195
197
  Unreachable());
196
198
  }, Type);
197
- };
199
+ }
198
200
  // deno-coverage-ignore-stop
199
- const FactorExtends = (type, extend) => {
201
+ function FactorExtends(type, extend) {
200
202
  return Guard.IsEqual(extend.length, 3)
201
203
  ? C.ConditionalDeferred(type, extend[0], extend[1], extend[2])
202
204
  : type;
203
- };
205
+ }
206
+ function FactorWith(type, withClause) {
207
+ return Guard.IsArray(withClause) && Guard.IsEqual(withClause.length, 0)
208
+ ? type
209
+ : C.OptionsDeferred(type, withClause);
210
+ }
204
211
  export function FactorMapping(input) {
205
- const [keyOf, type, indexArray, extend] = input;
206
- return keyOf
212
+ const [keyOf, type, indexArray, extend, withClause] = input;
213
+ return FactorWith(keyOf
207
214
  ? FactorExtends(C.KeyOfDeferred(FactorIndexArray(type, indexArray)), extend)
208
- : FactorExtends(FactorIndexArray(type, indexArray), extend);
215
+ : FactorExtends(FactorIndexArray(type, indexArray), extend), withClause);
209
216
  }
210
217
  // deno-coverage-ignore-start
211
218
  function ExprBinaryMapping(left, rest) {
@@ -43,7 +43,8 @@ export type TIndexArray_0<Input extends string, Result extends unknown[] = []> =
43
43
  export type TIndexArray<Input extends string> = TIndexArray_0<Input> extends [infer _0 extends ([unknown, unknown, unknown] | [unknown, unknown])[], infer Input extends string] ? [S.TIndexArrayMapping<_0>, Input] : [];
44
44
  export type TExtends<Input extends string> = ((Token.TConst<'extends', Input> extends [infer _0, infer Input extends string] ? (TType<Input> extends [infer _1, infer Input extends string] ? (Token.TConst<'?', Input> extends [infer _2, infer Input extends string] ? (TType<Input> extends [infer _3, infer Input extends string] ? (Token.TConst<':', Input> extends [infer _4, infer Input extends string] ? (TType<Input> extends [infer _5, infer Input extends string] ? [[_0, _1, _2, _3, _4, _5], Input] : []) : []) : []) : []) : []) : []) extends [infer _0, infer Input extends string] ? [_0, Input] : [[], Input] extends [infer _0, infer Input extends string] ? [_0, Input] : []) extends [infer _0 extends [unknown, unknown, unknown, unknown, unknown, unknown] | [], infer Input extends string] ? [S.TExtendsMapping<_0>, Input] : [];
45
45
  export type TBase<Input extends string> = ((Token.TConst<'(', Input> extends [infer _0, infer Input extends string] ? (TType<Input> extends [infer _1, infer Input extends string] ? (Token.TConst<')', Input> extends [infer _2, infer Input extends string] ? [[_0, _1, _2], Input] : []) : []) : []) extends [infer _0, infer Input extends string] ? [_0, Input] : TKeyword<Input> extends [infer _0, infer Input extends string] ? [_0, Input] : T_Object_<Input> extends [infer _0, infer Input extends string] ? [_0, Input] : TTuple<Input> extends [infer _0, infer Input extends string] ? [_0, Input] : TTemplateLiteral<Input> extends [infer _0, infer Input extends string] ? [_0, Input] : TLiteral<Input> extends [infer _0, infer Input extends string] ? [_0, Input] : TConstructor<Input> extends [infer _0, infer Input extends string] ? [_0, Input] : T_Function_<Input> extends [infer _0, infer Input extends string] ? [_0, Input] : TMapped<Input> extends [infer _0, infer Input extends string] ? [_0, Input] : TOptions<Input> extends [infer _0, infer Input extends string] ? [_0, Input] : TGenericCall<Input> extends [infer _0, infer Input extends string] ? [_0, Input] : TReference<Input> extends [infer _0, infer Input extends string] ? [_0, Input] : []) extends [infer _0 extends [unknown, unknown, unknown] | unknown, infer Input extends string] ? [S.TBaseMapping<_0>, Input] : [];
46
- export type TFactor<Input extends string> = (TKeyOf<Input> extends [infer _0, infer Input extends string] ? (TBase<Input> extends [infer _1, infer Input extends string] ? (TIndexArray<Input> extends [infer _2, infer Input extends string] ? (TExtends<Input> extends [infer _3, infer Input extends string] ? [[_0, _1, _2, _3], Input] : []) : []) : []) : []) extends [infer _0 extends [unknown, unknown, unknown, unknown], infer Input extends string] ? [S.TFactorMapping<_0>, Input] : [];
46
+ export type TWith<Input extends string> = ((Token.TConst<'with', Input> extends [infer _0, infer Input extends string] ? (TJsonObject<Input> extends [infer _1, infer Input extends string] ? [[_0, _1], Input] : []) : []) extends [infer _0, infer Input extends string] ? [_0, Input] : [[], Input] extends [infer _0, infer Input extends string] ? [_0, Input] : []) extends [infer _0 extends [unknown, unknown] | [], infer Input extends string] ? [S.TWithMapping<_0>, Input] : [];
47
+ export type TFactor<Input extends string> = (TKeyOf<Input> extends [infer _0, infer Input extends string] ? (TBase<Input> extends [infer _1, infer Input extends string] ? (TIndexArray<Input> extends [infer _2, infer Input extends string] ? (TExtends<Input> extends [infer _3, infer Input extends string] ? (TWith<Input> extends [infer _4, infer Input extends string] ? [[_0, _1, _2, _3, _4], Input] : []) : []) : []) : []) : []) extends [infer _0 extends [unknown, unknown, unknown, unknown, unknown], infer Input extends string] ? [S.TFactorMapping<_0>, Input] : [];
47
48
  export type TExprTermTail<Input extends string> = ((Token.TConst<'&', Input> extends [infer _0, infer Input extends string] ? (TFactor<Input> extends [infer _1, infer Input extends string] ? (TExprTermTail<Input> extends [infer _2, infer Input extends string] ? [[_0, _1, _2], Input] : []) : []) : []) extends [infer _0, infer Input extends string] ? [_0, Input] : [[], Input] extends [infer _0, infer Input extends string] ? [_0, Input] : []) extends [infer _0 extends [unknown, unknown, unknown] | [], infer Input extends string] ? [S.TExprTermTailMapping<_0>, Input] : [];
48
49
  export type TExprTerm<Input extends string> = (TFactor<Input> extends [infer _0, infer Input extends string] ? (TExprTermTail<Input> extends [infer _1, infer Input extends string] ? [[_0, _1], Input] : []) : []) extends [infer _0 extends [unknown, unknown], infer Input extends string] ? [S.TExprTermMapping<_0>, Input] : [];
49
50
  export type TExprTail<Input extends string> = ((Token.TConst<'|', Input> extends [infer _0, infer Input extends string] ? (TExprTerm<Input> extends [infer _1, infer Input extends string] ? (TExprTail<Input> extends [infer _2, infer Input extends string] ? [[_0, _1, _2], Input] : []) : []) : []) extends [infer _0, infer Input extends string] ? [_0, Input] : [[], Input] extends [infer _0, infer Input extends string] ? [_0, Input] : []) extends [infer _0 extends [unknown, unknown, unknown] | [], infer Input extends string] ? [S.TExprTailMapping<_0>, Input] : [];
@@ -172,6 +173,7 @@ export declare const IndexArray_0: (input: string, result?: unknown[]) => [unkno
172
173
  export declare const IndexArray: (input: string) => [unknown, string] | [];
173
174
  export declare const Extends: (input: string) => [unknown, string] | [];
174
175
  export declare const Base: (input: string) => [unknown, string] | [];
176
+ export declare const With: (input: string) => [unknown, string] | [];
175
177
  export declare const Factor: (input: string) => [unknown, string] | [];
176
178
  export declare const ExprTermTail: (input: string) => [unknown, string] | [];
177
179
  export declare const ExprTerm: (input: string) => [unknown, string] | [];
@@ -47,7 +47,8 @@ export const IndexArray_0 = (input, result = []) => If(If(If(Token.Const('[', in
47
47
  export const IndexArray = (input) => If(IndexArray_0(input), ([_0, input]) => [S.IndexArrayMapping(_0), input]);
48
48
  export const Extends = (input) => If(If(If(Token.Const('extends', input), ([_0, input]) => If(Type(input), ([_1, input]) => If(Token.Const('?', input), ([_2, input]) => If(Type(input), ([_3, input]) => If(Token.Const(':', input), ([_4, input]) => If(Type(input), ([_5, input]) => [[_0, _1, _2, _3, _4, _5], input])))))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ExtendsMapping(_0), input]);
49
49
  export const Base = (input) => If(If(If(Token.Const('(', input), ([_0, input]) => If(Type(input), ([_1, input]) => If(Token.Const(')', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If(Keyword(input), ([_0, input]) => [_0, input], () => If(_Object_(input), ([_0, input]) => [_0, input], () => If(Tuple(input), ([_0, input]) => [_0, input], () => If(TemplateLiteral(input), ([_0, input]) => [_0, input], () => If(Literal(input), ([_0, input]) => [_0, input], () => If(Constructor(input), ([_0, input]) => [_0, input], () => If(_Function_(input), ([_0, input]) => [_0, input], () => If(Mapped(input), ([_0, input]) => [_0, input], () => If(Options(input), ([_0, input]) => [_0, input], () => If(GenericCall(input), ([_0, input]) => [_0, input], () => If(Reference(input), ([_0, input]) => [_0, input], () => [])))))))))))), ([_0, input]) => [S.BaseMapping(_0), input]);
50
- export const Factor = (input) => If(If(KeyOf(input), ([_0, input]) => If(Base(input), ([_1, input]) => If(IndexArray(input), ([_2, input]) => If(Extends(input), ([_3, input]) => [[_0, _1, _2, _3], input])))), ([_0, input]) => [S.FactorMapping(_0), input]);
50
+ export const With = (input) => If(If(If(Token.Const('with', input), ([_0, input]) => If(JsonObject(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.WithMapping(_0), input]);
51
+ export const Factor = (input) => If(If(KeyOf(input), ([_0, input]) => If(Base(input), ([_1, input]) => If(IndexArray(input), ([_2, input]) => If(Extends(input), ([_3, input]) => If(With(input), ([_4, input]) => [[_0, _1, _2, _3, _4], input]))))), ([_0, input]) => [S.FactorMapping(_0), input]);
51
52
  export const ExprTermTail = (input) => If(If(If(Token.Const('&', input), ([_0, input]) => If(Factor(input), ([_1, input]) => If(ExprTermTail(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ExprTermTailMapping(_0), input]);
52
53
  export const ExprTerm = (input) => If(If(Factor(input), ([_0, input]) => If(ExprTermTail(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [S.ExprTermMapping(_0), input]);
53
54
  export const ExprTail = (input) => If(If(If(Token.Const('|', input), ([_0, input]) => If(ExprTerm(input), ([_1, input]) => If(ExprTail(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ExprTailMapping(_0), input]);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "typebox",
3
3
  "description": "Json Schema Type Builder with Static Type Resolution for TypeScript",
4
- "version": "1.1.38",
4
+ "version": "1.1.39",
5
5
  "keywords": [
6
6
  "typescript",
7
7
  "jsonschema"
@@ -16,22 +16,6 @@
16
16
  "types": "./build/index.d.mts",
17
17
  "module": "./build/index.mjs",
18
18
  "exports": {
19
- "./guard": {
20
- "import": "./build/guard/index.mjs",
21
- "default": "./build/guard/index.mjs"
22
- },
23
- "./error": {
24
- "import": "./build/error/index.mjs",
25
- "default": "./build/error/index.mjs"
26
- },
27
- "./compile": {
28
- "import": "./build/compile/index.mjs",
29
- "default": "./build/compile/index.mjs"
30
- },
31
- "./system": {
32
- "import": "./build/system/index.mjs",
33
- "default": "./build/system/index.mjs"
34
- },
35
19
  "./format": {
36
20
  "import": "./build/format/index.mjs",
37
21
  "default": "./build/format/index.mjs"
@@ -44,10 +28,26 @@
44
28
  "import": "./build/schema/index.mjs",
45
29
  "default": "./build/schema/index.mjs"
46
30
  },
31
+ "./compile": {
32
+ "import": "./build/compile/index.mjs",
33
+ "default": "./build/compile/index.mjs"
34
+ },
47
35
  "./value": {
48
36
  "import": "./build/value/index.mjs",
49
37
  "default": "./build/value/index.mjs"
50
38
  },
39
+ "./guard": {
40
+ "import": "./build/guard/index.mjs",
41
+ "default": "./build/guard/index.mjs"
42
+ },
43
+ "./system": {
44
+ "import": "./build/system/index.mjs",
45
+ "default": "./build/system/index.mjs"
46
+ },
47
+ "./error": {
48
+ "import": "./build/error/index.mjs",
49
+ "default": "./build/error/index.mjs"
50
+ },
51
51
  ".": {
52
52
  "import": "./build/index.mjs",
53
53
  "default": "./build/index.mjs"
@@ -55,18 +55,6 @@
55
55
  },
56
56
  "typesVersions": {
57
57
  "*": {
58
- "guard": [
59
- "./build/guard/index.d.mts"
60
- ],
61
- "error": [
62
- "./build/error/index.d.mts"
63
- ],
64
- "compile": [
65
- "./build/compile/index.d.mts"
66
- ],
67
- "system": [
68
- "./build/system/index.d.mts"
69
- ],
70
58
  "format": [
71
59
  "./build/format/index.d.mts"
72
60
  ],
@@ -76,9 +64,21 @@
76
64
  "schema": [
77
65
  "./build/schema/index.d.mts"
78
66
  ],
67
+ "compile": [
68
+ "./build/compile/index.d.mts"
69
+ ],
79
70
  "value": [
80
71
  "./build/value/index.d.mts"
81
72
  ],
73
+ "guard": [
74
+ "./build/guard/index.d.mts"
75
+ ],
76
+ "system": [
77
+ "./build/system/index.d.mts"
78
+ ],
79
+ "error": [
80
+ "./build/error/index.d.mts"
81
+ ],
82
82
  ".": [
83
83
  "./build/index.d.mts"
84
84
  ]
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@openclaw/zalouser",
3
- "version": "2026.5.28",
3
+ "version": "2026.5.31-beta.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openclaw/zalouser",
9
- "version": "2026.5.28",
9
+ "version": "2026.5.31-beta.1",
10
10
  "dependencies": {
11
- "typebox": "1.1.38",
11
+ "typebox": "1.1.39",
12
12
  "zca-js": "2.1.2",
13
13
  "zod": "4.4.3"
14
14
  },
15
15
  "peerDependencies": {
16
- "openclaw": ">=2026.5.28"
16
+ "openclaw": ">=2026.5.31-beta.1"
17
17
  },
18
18
  "peerDependenciesMeta": {
19
19
  "openclaw": {
@@ -109,9 +109,9 @@
109
109
  }
110
110
  },
111
111
  "node_modules/es-object-atoms": {
112
- "version": "1.1.1",
113
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
114
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
112
+ "version": "1.1.2",
113
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
114
+ "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
115
115
  "license": "MIT",
116
116
  "dependencies": {
117
117
  "es-errors": "^1.3.0"
@@ -246,9 +246,9 @@
246
246
  }
247
247
  },
248
248
  "node_modules/hasown": {
249
- "version": "2.0.3",
250
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz",
251
- "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
249
+ "version": "2.0.4",
250
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
251
+ "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
252
252
  "license": "MIT",
253
253
  "dependencies": {
254
254
  "function-bind": "^1.1.2"
@@ -389,9 +389,9 @@
389
389
  }
390
390
  },
391
391
  "node_modules/typebox": {
392
- "version": "1.1.38",
393
- "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.38.tgz",
394
- "integrity": "sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==",
392
+ "version": "1.1.39",
393
+ "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.39.tgz",
394
+ "integrity": "sha512-vj0afVtOfLQvv0GR0VxVagYxsXN64btL7Z9XoaG0ZggH3mruMMkOO6hXdgMsjCY3shZgEvooAWVeznQVs5c43w==",
395
395
  "license": "MIT"
396
396
  },
397
397
  "node_modules/universalify": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/zalouser",
3
- "version": "2026.5.28",
3
+ "version": "2026.5.31-beta.1",
4
4
  "description": "OpenClaw Zalo Personal Account plugin via native zca-js integration.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,12 +8,12 @@
8
8
  },
9
9
  "type": "module",
10
10
  "dependencies": {
11
- "typebox": "1.1.38",
11
+ "typebox": "1.1.39",
12
12
  "zca-js": "2.1.2",
13
13
  "zod": "4.4.3"
14
14
  },
15
15
  "peerDependencies": {
16
- "openclaw": ">=2026.5.28"
16
+ "openclaw": ">=2026.5.31-beta.1"
17
17
  },
18
18
  "peerDependenciesMeta": {
19
19
  "openclaw": {
@@ -50,10 +50,10 @@
50
50
  "minHostVersion": ">=2026.4.10"
51
51
  },
52
52
  "compat": {
53
- "pluginApi": ">=2026.5.28"
53
+ "pluginApi": ">=2026.5.31-beta.1"
54
54
  },
55
55
  "build": {
56
- "openclawVersion": "2026.5.28"
56
+ "openclawVersion": "2026.5.31-beta.1"
57
57
  },
58
58
  "release": {
59
59
  "publishToClawHub": true,