@openclaw/zoom-meetings 2026.8.1 → 2026.8.2

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
@@ -681,8 +681,9 @@ function zoomMeetingStatusScript(params) {
681
681
  }) + zoomMeetingStatusCallSource();
682
682
  }
683
683
  function zoomMeetingTranscriptScript(meetingUrl, meetingSessionId, finalize) {
684
+ const expectedIdentity = normalizeZoomMeetingUrlForReuse(meetingUrl);
684
685
  return createMeetingTranscriptSource({
685
- expectedIdentity: normalizeZoomMeetingUrlForReuse(meetingUrl),
686
+ expectedIdentity,
686
687
  finalize,
687
688
  globals: {
688
689
  captionArchive: "__openclawZoomCaptionArchive",
@@ -696,6 +697,7 @@ function zoomMeetingTranscriptScript(meetingUrl, meetingSessionId, finalize) {
696
697
  }
697
698
  function zoomMeetingLeaveScript(params) {
698
699
  const selectors = JSON.stringify(ZOOM_MEETING_SELECTORS);
700
+ const expectedIdentity = normalizeZoomMeetingUrlForReuse(params.meetingUrl);
699
701
  return createMeetingLeaveSource({
700
702
  controlSource: `const first = (list) => {
701
703
  for (const selector of list) {
@@ -725,7 +727,7 @@ function zoomMeetingLeaveScript(params) {
725
727
  departedMarkerSource: "(postCall || webClientHome)",
726
728
  documentSetupSource: `const topDocument = globalThis.document;
727
729
  const document = topDocument.querySelector("#webclient")?.contentDocument || topDocument;`,
728
- expectedIdentity: normalizeZoomMeetingUrlForReuse(params.meetingUrl),
730
+ expectedIdentity,
729
731
  leaveInitiated: params.leaveInitiated,
730
732
  meetingSessionId: params.meetingSessionId,
731
733
  meetingStateSource: "sessionId: expectedSessionId || state?.sessionId,",
@@ -1,4 +1,4 @@
1
- const Email = /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[^"\\]|\\.)*")@(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*|\[(?:IPv6:[a-f0-9:]+|(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?:\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3})\])$/i;
1
+ const Email = /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[^"\\]|\\[\x20-\x7e])*")@(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*|\[(?:IPv6:[a-f0-9:]+|(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?:\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3})\])$/i;
2
2
  /**
3
3
  * Returns true if the value is an Email
4
4
  * @specification https://datatracker.ietf.org/doc/html/rfc5322
@@ -1,6 +1,9 @@
1
1
  import * as FormatBidi from './format/bidi.mjs';
2
2
  import * as LabelUnicode from './label/unicode.mjs';
3
3
  import * as LabelPuny from './label/puny.mjs';
4
+ // ------------------------------------------------------------------
5
+ // IsLabel
6
+ // ------------------------------------------------------------------
4
7
  function IsValidLabelLength(value) {
5
8
  return value.length > 0 && value.length <= 63;
6
9
  }
@@ -8,9 +11,24 @@ function IsLabel(value) {
8
11
  return IsValidLabelLength(value) && (LabelPuny.IsPunyLabel(value) ||
9
12
  LabelUnicode.IsUnicodeLabel(value));
10
13
  }
14
+ // ------------------------------------------------------------------
15
+ // NormalizeHostname
16
+ //
17
+ // Normalizes a hostname for label validation. Normalizes for NFC
18
+ // such that equivalent codepoint sequences can be uniformly
19
+ // compared. It also removes codepoints that IDNA mapping ignores,
20
+ // and converts full stop variants to ASCII '.' so the hostname can
21
+ // be split into labels.
22
+ // ------------------------------------------------------------------
11
23
  function NormalizeHostname(value) {
12
- return value.normalize('NFC').replace(/[\u002E\u3002\uFF0E\uFF61]/g, '.');
24
+ return value
25
+ .normalize('NFC')
26
+ .replace(/[\u00ad\u034f\u180b-\u180d\u200b\ufe00-\ufe0f\u{e0100}-\u{e01ef}]/gu, '') // RE_IGNORED_MAPPING
27
+ .replace(/[\u002E\u3002\uFF0E\uFF61]/g, '.'); // RE_FULL_STOP_MAPPING
13
28
  }
29
+ // ------------------------------------------------------------------
30
+ // IsIdnHostname
31
+ // ------------------------------------------------------------------
14
32
  export function IsIdnHostname(value) {
15
33
  if (value.length === 0 || value.includes(' '))
16
34
  return false;
@@ -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.3.16",
4
+ "version": "1.3.17",
5
5
  "keywords": [
6
6
  "typescript",
7
7
  "jsonschema"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/zoom-meetings",
3
- "version": "2026.8.1",
3
+ "version": "2026.8.2",
4
4
  "description": "OpenClaw Zoom browser meeting participant plugin.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,10 +8,10 @@
8
8
  },
9
9
  "type": "module",
10
10
  "dependencies": {
11
- "typebox": "1.3.16"
11
+ "typebox": "1.3.17"
12
12
  },
13
13
  "peerDependencies": {
14
- "openclaw": ">=2026.8.1"
14
+ "openclaw": ">=2026.8.2"
15
15
  },
16
16
  "peerDependenciesMeta": {
17
17
  "openclaw": {
@@ -29,10 +29,10 @@
29
29
  "minHostVersion": ">=2026.7.2"
30
30
  },
31
31
  "compat": {
32
- "pluginApi": ">=2026.8.1"
32
+ "pluginApi": ">=2026.8.2"
33
33
  },
34
34
  "build": {
35
- "openclawVersion": "2026.8.1",
35
+ "openclawVersion": "2026.8.2",
36
36
  "bundledDist": false
37
37
  },
38
38
  "release": {