teams-api 0.16.0 → 0.17.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"emoji-map.d.ts","sourceRoot":"","sources":["../src/emoji-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAwFH;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAYxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYxD"}
1
+ {"version":3,"file":"emoji-map.d.ts","sourceRoot":"","sources":["../src/emoji-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAgJH;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAYxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYxD"}
package/dist/emoji-map.js CHANGED
@@ -20,8 +20,17 @@ exports.resetEmojiMap = resetEmojiMap;
20
20
  exports.initializeEmojiMap = initializeEmojiMap;
21
21
  exports.resolveReactionKey = resolveReactionKey;
22
22
  const EMOJI_CDN_BASE = "https://statics.teams.cdn.office.net/evergreen-assets/personal-expressions/v1/metadata/";
23
- /** Known emoji catalog version hashes, newest first. */
24
- const KNOWN_VERSIONS = [
23
+ /**
24
+ * Teams ECS (Experimentation and Configuration Service) endpoint.
25
+ * Returns a large JSON config (~1 MB) that includes `emoticonAssetVersion`,
26
+ * the current emoji catalog version hash. No authentication required.
27
+ */
28
+ const TEAMS_ECS_CONFIG_URL = "https://config.teams.microsoft.com/config/v1/MicrosoftTeams/1415_1.0.0.0?environment=prod&audienceGroup=general&teamsRing=general";
29
+ /**
30
+ * Fallback version hashes if the ECS endpoint is unreachable.
31
+ * These are known-good versions, newest first.
32
+ */
33
+ const FALLBACK_VERSIONS = [
25
34
  "ec4576179210cde40ce5494513213583",
26
35
  "0f52465a47bf42f299c74a639443f33e",
27
36
  ];
@@ -54,14 +63,49 @@ function buildShortcutMap(catalog) {
54
63
  }
55
64
  return map;
56
65
  }
66
+ /**
67
+ * Fetch the current emoji catalog version hash from the Teams ECS config.
68
+ *
69
+ * Returns null if the ECS endpoint is unreachable or doesn't contain the version.
70
+ */
71
+ async function fetchCurrentVersion() {
72
+ try {
73
+ const response = await fetch(TEAMS_ECS_CONFIG_URL);
74
+ if (!response.ok) {
75
+ console.warn(`[emoji-map] ECS config returned ${String(response.status)}, will use fallback versions`);
76
+ return null;
77
+ }
78
+ const text = await response.text();
79
+ const match = /"emoticonAssetVersion":"([^"]+)"/.exec(text);
80
+ if (!match) {
81
+ console.warn("[emoji-map] emoticonAssetVersion not found in ECS config, will use fallback versions");
82
+ return null;
83
+ }
84
+ const version = match[1];
85
+ // Validate: must be a 32-char lowercase hex hash to avoid malformed URLs
86
+ if (!/^[0-9a-f]{32}$/.test(version)) {
87
+ console.warn(`[emoji-map] Unexpected emoticonAssetVersion format "${version}", will use fallback versions`);
88
+ return null;
89
+ }
90
+ return version;
91
+ }
92
+ catch (error) {
93
+ console.warn("[emoji-map] Failed to fetch ECS config:", error instanceof Error ? error.message : error);
94
+ return null;
95
+ }
96
+ }
57
97
  /**
58
98
  * Fetch the emoji catalog from the Teams CDN.
59
99
  *
60
- * Tries known version hashes in order (newest first).
61
- * Returns null if all versions fail.
100
+ * Tries the current version from ECS first, then falls back to known
101
+ * version hashes. Returns null if all attempts fail.
62
102
  */
63
103
  async function fetchEmojiCatalog() {
64
- for (const version of KNOWN_VERSIONS) {
104
+ const currentVersion = await fetchCurrentVersion();
105
+ const versionsToTry = currentVersion
106
+ ? [currentVersion, ...FALLBACK_VERSIONS.filter((v) => v !== currentVersion)]
107
+ : FALLBACK_VERSIONS;
108
+ for (const version of versionsToTry) {
65
109
  const url = `${EMOJI_CDN_BASE}${version}/${EMOJI_LOCALE}.json`;
66
110
  try {
67
111
  const response = await fetch(url);
@@ -74,7 +118,7 @@ async function fetchEmojiCatalog() {
74
118
  console.warn(`[emoji-map] Network error fetching version ${version}:`, error instanceof Error ? error.message : error);
75
119
  }
76
120
  }
77
- console.warn("[emoji-map] Failed to fetch emoji catalog from all known versions. " +
121
+ console.warn("[emoji-map] Failed to fetch emoji catalog from all versions. " +
78
122
  "Non-standard emoji shortcuts (e.g. 'horse') will not resolve to Teams emoji IDs.");
79
123
  return null;
80
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"emoji-map.js","sourceRoot":"","sources":["../src/emoji-map.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emoji-map.js","sourceRoot":"","sources":["../src/emoji-map.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "teams-api",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "description": "AI-native Microsoft Teams integration — read conversations, send messages, manage members via the Teams Chat Service REST API",
5
5
  "type": "commonjs",
6
6
  "repository": {