Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 95802c3d37 | |||
|
|
0b511c3e14 |
||
|
|
03b8610e04 |
6 changed files with 700 additions and 479 deletions
|
|
@ -14,7 +14,7 @@
|
||||||
"@astrojs/starlight": "0.41.7",
|
"@astrojs/starlight": "0.41.7",
|
||||||
"@astrojs/starlight-tailwind": "^5.0.0",
|
"@astrojs/starlight-tailwind": "^5.0.0",
|
||||||
"@tailwindcss/vite": "^4.2.1",
|
"@tailwindcss/vite": "^4.2.1",
|
||||||
"astro": "7.2.0",
|
"astro": "7.2.2",
|
||||||
"sharp": "^0.35.0",
|
"sharp": "^0.35.0",
|
||||||
"tailwindcss": "^4.2.1",
|
"tailwindcss": "^4.2.1",
|
||||||
"typescript": "^7.0.0"
|
"typescript": "^7.0.0"
|
||||||
|
|
|
||||||
326
pnpm-lock.yaml
generated
326
pnpm-lock.yaml
generated
|
|
@ -13,19 +13,19 @@ importers:
|
||||||
version: 0.9.10(prettier@3.9.6)(typescript@7.0.2)
|
version: 0.9.10(prettier@3.9.6)(typescript@7.0.2)
|
||||||
'@astrojs/mdx':
|
'@astrojs/mdx':
|
||||||
specifier: 7.0.5
|
specifier: 7.0.5
|
||||||
version: 7.0.5(@astrojs/markdown-satteri@0.3.5)(astro@7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))
|
version: 7.0.5(@astrojs/markdown-satteri@0.3.5)(astro@7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(supports-color@7.2.0)
|
||||||
'@astrojs/starlight':
|
'@astrojs/starlight':
|
||||||
specifier: 0.41.7
|
specifier: 0.41.7
|
||||||
version: 0.41.7(@astrojs/markdown-remark@7.2.2)(astro@7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(typescript@7.0.2)
|
version: 0.41.7(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(astro@7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(supports-color@7.2.0)(typescript@7.0.2)
|
||||||
'@astrojs/starlight-tailwind':
|
'@astrojs/starlight-tailwind':
|
||||||
specifier: ^5.0.0
|
specifier: ^5.0.0
|
||||||
version: 5.0.0(@astrojs/starlight@0.41.7(@astrojs/markdown-remark@7.2.2)(astro@7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(typescript@7.0.2))(tailwindcss@4.3.3)
|
version: 5.0.0(@astrojs/starlight@0.41.7(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(astro@7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(supports-color@7.2.0)(typescript@7.0.2))(tailwindcss@4.3.3)
|
||||||
'@tailwindcss/vite':
|
'@tailwindcss/vite':
|
||||||
specifier: ^4.2.1
|
specifier: ^4.2.1
|
||||||
version: 4.3.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0))
|
version: 4.3.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0))
|
||||||
astro:
|
astro:
|
||||||
specifier: 7.2.0
|
specifier: 7.2.2
|
||||||
version: 7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)
|
version: 7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)
|
||||||
sharp:
|
sharp:
|
||||||
specifier: ^0.35.0
|
specifier: ^0.35.0
|
||||||
version: 0.35.3(@types/node@24.13.3)
|
version: 0.35.3(@types/node@24.13.3)
|
||||||
|
|
@ -1080,15 +1080,30 @@ packages:
|
||||||
|
|
||||||
'@volar/language-server@2.4.28':
|
'@volar/language-server@2.4.28':
|
||||||
resolution: {integrity: sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw==}
|
resolution: {integrity: sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw==}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@volar/language-service@2.4.28':
|
'@volar/language-service@2.4.28':
|
||||||
resolution: {integrity: sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==}
|
resolution: {integrity: sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@volar/source-map@2.4.28':
|
'@volar/source-map@2.4.28':
|
||||||
resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==}
|
resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==}
|
||||||
|
|
||||||
'@volar/typescript@2.4.28':
|
'@volar/typescript@2.4.28':
|
||||||
resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==}
|
resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@vscode/emmet-helper@2.11.0':
|
'@vscode/emmet-helper@2.11.0':
|
||||||
resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==}
|
resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==}
|
||||||
|
|
@ -1130,6 +1145,10 @@ packages:
|
||||||
resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
|
resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
ansi-styles@4.3.0:
|
||||||
|
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
ansi-styles@6.2.3:
|
ansi-styles@6.2.3:
|
||||||
resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
|
resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
@ -1160,8 +1179,8 @@ packages:
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0
|
astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0
|
||||||
|
|
||||||
astro@7.2.0:
|
astro@7.2.2:
|
||||||
resolution: {integrity: sha512-lLTYzx3fOvCmtwD3JVBLQcbORbIOW1/j0R+3IvJx/XKwMGrk7mFnF0BYSOeRiNw1qHUR5mdA6+hRnyvyDfqrWQ==}
|
resolution: {integrity: sha512-OvLWCpXpb43lVYcWzSBJ0sk44qcEYYRZCjadtalLfAwb2RaC3P/zT+blZykBw/o6suw6sQQkn00ugN36akD8Mw==}
|
||||||
engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'}
|
engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
|
@ -1189,6 +1208,10 @@ packages:
|
||||||
ccount@2.0.1:
|
ccount@2.0.1:
|
||||||
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
|
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
|
||||||
|
|
||||||
|
chalk@4.1.2:
|
||||||
|
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
character-entities-html4@2.1.0:
|
character-entities-html4@2.1.0:
|
||||||
resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
|
resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
|
||||||
|
|
||||||
|
|
@ -1224,6 +1247,13 @@ packages:
|
||||||
collapse-white-space@2.1.0:
|
collapse-white-space@2.1.0:
|
||||||
resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
|
resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
|
||||||
|
|
||||||
|
color-convert@2.0.1:
|
||||||
|
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
|
||||||
|
engines: {node: '>=7.0.0'}
|
||||||
|
|
||||||
|
color-name@1.1.4:
|
||||||
|
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
||||||
|
|
||||||
comma-separated-tokens@2.0.3:
|
comma-separated-tokens@2.0.3:
|
||||||
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
|
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
|
||||||
|
|
||||||
|
|
@ -1231,6 +1261,10 @@ packages:
|
||||||
resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
|
resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
|
|
||||||
|
commander@14.0.3:
|
||||||
|
resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==}
|
||||||
|
engines: {node: '>=20'}
|
||||||
|
|
||||||
common-ancestor-path@2.0.0:
|
common-ancestor-path@2.0.0:
|
||||||
resolution: {integrity: sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==}
|
resolution: {integrity: sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==}
|
||||||
engines: {node: '>= 18'}
|
engines: {node: '>= 18'}
|
||||||
|
|
@ -1423,6 +1457,10 @@ packages:
|
||||||
picomatch:
|
picomatch:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
find-process@2.1.1:
|
||||||
|
resolution: {integrity: sha512-SrQDx3QhlmHM90iqn9rdjCQcw/T+WlpOkHFsjoRgB+zTpDfltNA1VSNYeYELwhUTJy12UFxqjWhmhOrJc+o4sA==}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
flattie@1.1.1:
|
flattie@1.1.1:
|
||||||
resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==}
|
resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
@ -1460,6 +1498,10 @@ packages:
|
||||||
h3@1.15.11:
|
h3@1.15.11:
|
||||||
resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==}
|
resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==}
|
||||||
|
|
||||||
|
has-flag@4.0.0:
|
||||||
|
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
hast-util-embedded@3.0.0:
|
hast-util-embedded@3.0.0:
|
||||||
resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==}
|
resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==}
|
||||||
|
|
||||||
|
|
@ -1740,6 +1782,10 @@ packages:
|
||||||
resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==}
|
resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
|
|
||||||
|
loglevel@1.9.2:
|
||||||
|
resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==}
|
||||||
|
engines: {node: '>= 0.6.0'}
|
||||||
|
|
||||||
longest-streak@3.1.0:
|
longest-streak@3.1.0:
|
||||||
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
|
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
|
||||||
|
|
||||||
|
|
@ -2236,6 +2282,10 @@ packages:
|
||||||
style-to-object@1.0.14:
|
style-to-object@1.0.14:
|
||||||
resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==}
|
resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==}
|
||||||
|
|
||||||
|
supports-color@7.2.0:
|
||||||
|
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
svgo@4.0.2:
|
svgo@4.0.2:
|
||||||
resolution: {integrity: sha512-ekx94z1rRc5LDi6oSUaeRnYhd0UOJxdtQCL2rF8xpWxD3TPAsISWOrxezqGovqS38GRZOdpDfvQe3ts6F7nsng==}
|
resolution: {integrity: sha512-ekx94z1rRc5LDi6oSUaeRnYhd0UOJxdtQCL2rF8xpWxD3TPAsISWOrxezqGovqS38GRZOdpDfvQe3ts6F7nsng==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
|
|
@ -2499,17 +2549,23 @@ packages:
|
||||||
resolution: {integrity: sha512-9K2k72s4n7rV9s4bX0MyjbX9iBribvKZbBJKuEmTCZfeWJXs6Yh7bGpY4eoc7UufAjvpheBqwyZCOIPBvxCv0A==}
|
resolution: {integrity: sha512-9K2k72s4n7rV9s4bX0MyjbX9iBribvKZbBJKuEmTCZfeWJXs6Yh7bGpY4eoc7UufAjvpheBqwyZCOIPBvxCv0A==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@volar/language-service': ~2.4.0
|
'@volar/language-service': ~2.4.0
|
||||||
|
typescript: '*'
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
'@volar/language-service':
|
'@volar/language-service':
|
||||||
optional: true
|
optional: true
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
|
||||||
volar-service-typescript@0.0.71:
|
volar-service-typescript@0.0.71:
|
||||||
resolution: {integrity: sha512-yTtM/BVT6hoyEYnDtaCyAtNhdNeS/mhTTABlBOdw3NNiRBUin3IznFJpgfjer4c6RYopiPjjQjc9VFhxVl1mLw==}
|
resolution: {integrity: sha512-yTtM/BVT6hoyEYnDtaCyAtNhdNeS/mhTTABlBOdw3NNiRBUin3IznFJpgfjer4c6RYopiPjjQjc9VFhxVl1mLw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@volar/language-service': ~2.4.0
|
'@volar/language-service': ~2.4.0
|
||||||
|
typescript: '*'
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
'@volar/language-service':
|
'@volar/language-service':
|
||||||
optional: true
|
optional: true
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
|
||||||
volar-service-yaml@0.0.71:
|
volar-service-yaml@0.0.71:
|
||||||
resolution: {integrity: sha512-qYGWGuVpUTnZGu5P/CR4KLK4aIR8RrcVnmfZ2eRcj9q/I8VZCoC5yy9FtEvfNvnDp4MU17yhdJcvpQPIqhJS2Q==}
|
resolution: {integrity: sha512-qYGWGuVpUTnZGu5P/CR4KLK4aIR8RrcVnmfZ2eRcj9q/I8VZCoC5yy9FtEvfNvnDp4MU17yhdJcvpQPIqhJS2Q==}
|
||||||
|
|
@ -2695,17 +2751,17 @@ snapshots:
|
||||||
'@jridgewell/sourcemap-codec': 1.5.5
|
'@jridgewell/sourcemap-codec': 1.5.5
|
||||||
'@volar/kit': 2.4.28(typescript@7.0.2)
|
'@volar/kit': 2.4.28(typescript@7.0.2)
|
||||||
'@volar/language-core': 2.4.28
|
'@volar/language-core': 2.4.28
|
||||||
'@volar/language-server': 2.4.28
|
'@volar/language-server': 2.4.28(typescript@7.0.2)
|
||||||
'@volar/language-service': 2.4.28
|
'@volar/language-service': 2.4.28(typescript@7.0.2)
|
||||||
muggle-string: 0.4.1
|
muggle-string: 0.4.1
|
||||||
tinyglobby: 0.2.17
|
tinyglobby: 0.2.17
|
||||||
volar-service-css: 0.0.71(@volar/language-service@2.4.28)
|
volar-service-css: 0.0.71(@volar/language-service@2.4.28(typescript@7.0.2))
|
||||||
volar-service-emmet: 0.0.71(@volar/language-service@2.4.28)
|
volar-service-emmet: 0.0.71(@volar/language-service@2.4.28(typescript@7.0.2))
|
||||||
volar-service-html: 0.0.71(@volar/language-service@2.4.28)
|
volar-service-html: 0.0.71(@volar/language-service@2.4.28(typescript@7.0.2))
|
||||||
volar-service-prettier: 0.0.71(@volar/language-service@2.4.28)(prettier@3.9.6)
|
volar-service-prettier: 0.0.71(@volar/language-service@2.4.28(typescript@7.0.2))(prettier@3.9.6)
|
||||||
volar-service-typescript: 0.0.71(@volar/language-service@2.4.28)
|
volar-service-typescript: 0.0.71(@volar/language-service@2.4.28(typescript@7.0.2))(typescript@7.0.2)
|
||||||
volar-service-typescript-twoslash-queries: 0.0.71(@volar/language-service@2.4.28)
|
volar-service-typescript-twoslash-queries: 0.0.71(@volar/language-service@2.4.28(typescript@7.0.2))(typescript@7.0.2)
|
||||||
volar-service-yaml: 0.0.71(@volar/language-service@2.4.28)
|
volar-service-yaml: 0.0.71(@volar/language-service@2.4.28(typescript@7.0.2))
|
||||||
vscode-html-languageservice: 5.6.2
|
vscode-html-languageservice: 5.6.2
|
||||||
vscode-uri: 3.1.0
|
vscode-uri: 3.1.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
|
@ -2713,7 +2769,7 @@ snapshots:
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- typescript
|
- typescript
|
||||||
|
|
||||||
'@astrojs/markdown-remark@7.2.2':
|
'@astrojs/markdown-remark@7.2.2(supports-color@7.2.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@astrojs/internal-helpers': 0.10.2
|
'@astrojs/internal-helpers': 0.10.2
|
||||||
'@astrojs/prism': 4.0.2
|
'@astrojs/prism': 4.0.2
|
||||||
|
|
@ -2723,8 +2779,8 @@ snapshots:
|
||||||
mdast-util-definitions: 6.0.0
|
mdast-util-definitions: 6.0.0
|
||||||
rehype-raw: 7.0.0
|
rehype-raw: 7.0.0
|
||||||
rehype-stringify: 10.0.1
|
rehype-stringify: 10.0.1
|
||||||
remark-gfm: 4.0.1
|
remark-gfm: 4.0.1(supports-color@7.2.0)
|
||||||
remark-parse: 11.0.0
|
remark-parse: 11.0.0(supports-color@7.2.0)
|
||||||
remark-rehype: 11.1.2
|
remark-rehype: 11.1.2
|
||||||
remark-smartypants: 3.0.3
|
remark-smartypants: 3.0.3
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
|
|
@ -2743,19 +2799,19 @@ snapshots:
|
||||||
hast-util-from-html: 2.0.3
|
hast-util-from-html: 2.0.3
|
||||||
satteri: 0.9.5
|
satteri: 0.9.5
|
||||||
|
|
||||||
'@astrojs/mdx@7.0.5(@astrojs/markdown-satteri@0.3.5)(astro@7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))':
|
'@astrojs/mdx@7.0.5(@astrojs/markdown-satteri@0.3.5)(astro@7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(supports-color@7.2.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@astrojs/internal-helpers': 0.10.2
|
'@astrojs/internal-helpers': 0.10.2
|
||||||
'@astrojs/markdown-remark': 7.2.2
|
'@astrojs/markdown-remark': 7.2.2(supports-color@7.2.0)
|
||||||
'@mdx-js/mdx': 3.1.1
|
'@mdx-js/mdx': 3.1.1(supports-color@7.2.0)
|
||||||
acorn: 8.18.0
|
acorn: 8.18.0
|
||||||
astro: 7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)
|
astro: 7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)
|
||||||
es-module-lexer: 2.3.1
|
es-module-lexer: 2.3.1
|
||||||
estree-util-visit: 2.0.0
|
estree-util-visit: 2.0.0
|
||||||
hast-util-to-html: 9.0.5
|
hast-util-to-html: 9.0.5
|
||||||
piccolore: 0.1.3
|
piccolore: 0.1.3
|
||||||
rehype-raw: 7.0.0
|
rehype-raw: 7.0.0
|
||||||
remark-gfm: 4.0.1
|
remark-gfm: 4.0.1(supports-color@7.2.0)
|
||||||
remark-smartypants: 3.0.3
|
remark-smartypants: 3.0.3
|
||||||
source-map: 0.7.6
|
source-map: 0.7.6
|
||||||
unist-util-visit: 5.1.0
|
unist-util-visit: 5.1.0
|
||||||
|
|
@ -2775,22 +2831,22 @@ snapshots:
|
||||||
stream-replace-string: 2.0.0
|
stream-replace-string: 2.0.0
|
||||||
zod: 4.4.3
|
zod: 4.4.3
|
||||||
|
|
||||||
'@astrojs/starlight-tailwind@5.0.0(@astrojs/starlight@0.41.7(@astrojs/markdown-remark@7.2.2)(astro@7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(typescript@7.0.2))(tailwindcss@4.3.3)':
|
'@astrojs/starlight-tailwind@5.0.0(@astrojs/starlight@0.41.7(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(astro@7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(supports-color@7.2.0)(typescript@7.0.2))(tailwindcss@4.3.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@astrojs/starlight': 0.41.7(@astrojs/markdown-remark@7.2.2)(astro@7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(typescript@7.0.2)
|
'@astrojs/starlight': 0.41.7(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(astro@7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(supports-color@7.2.0)(typescript@7.0.2)
|
||||||
tailwindcss: 4.3.3
|
tailwindcss: 4.3.3
|
||||||
|
|
||||||
'@astrojs/starlight@0.41.7(@astrojs/markdown-remark@7.2.2)(astro@7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(typescript@7.0.2)':
|
'@astrojs/starlight@0.41.7(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(astro@7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(supports-color@7.2.0)(typescript@7.0.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@astrojs/markdown-satteri': 0.3.5
|
'@astrojs/markdown-satteri': 0.3.5
|
||||||
'@astrojs/mdx': 7.0.5(@astrojs/markdown-satteri@0.3.5)(astro@7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))
|
'@astrojs/mdx': 7.0.5(@astrojs/markdown-satteri@0.3.5)(astro@7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(supports-color@7.2.0)
|
||||||
'@astrojs/sitemap': 3.7.3
|
'@astrojs/sitemap': 3.7.3
|
||||||
'@pagefind/default-ui': 1.5.2
|
'@pagefind/default-ui': 1.5.2
|
||||||
'@types/hast': 3.0.5
|
'@types/hast': 3.0.5
|
||||||
'@types/js-yaml': 4.0.9
|
'@types/js-yaml': 4.0.9
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
astro: 7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)
|
astro: 7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)
|
||||||
astro-expressive-code: 0.44.1(astro@7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))
|
astro-expressive-code: 0.44.1(astro@7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))
|
||||||
bcp-47: 2.1.1
|
bcp-47: 2.1.1
|
||||||
hast-util-from-html: 2.0.3
|
hast-util-from-html: 2.0.3
|
||||||
hast-util-select: 6.0.4
|
hast-util-select: 6.0.4
|
||||||
|
|
@ -2800,20 +2856,20 @@ snapshots:
|
||||||
js-yaml: 4.3.1
|
js-yaml: 4.3.1
|
||||||
klona: 2.0.6
|
klona: 2.0.6
|
||||||
magic-string: 0.30.21
|
magic-string: 0.30.21
|
||||||
mdast-util-directive: 3.1.0
|
mdast-util-directive: 3.1.0(supports-color@7.2.0)
|
||||||
mdast-util-to-markdown: 2.1.2
|
mdast-util-to-markdown: 2.1.2
|
||||||
mdast-util-to-string: 4.0.0
|
mdast-util-to-string: 4.0.0
|
||||||
pagefind: 1.5.2
|
pagefind: 1.5.2
|
||||||
rehype: 13.0.2
|
rehype: 13.0.2
|
||||||
rehype-format: 5.0.1
|
rehype-format: 5.0.1
|
||||||
remark-directive: 4.0.0
|
remark-directive: 4.0.0(supports-color@7.2.0)
|
||||||
satteri: 0.9.5
|
satteri: 0.9.5
|
||||||
ultrahtml: 1.7.0
|
ultrahtml: 1.7.0
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
unist-util-visit: 5.1.0
|
unist-util-visit: 5.1.0
|
||||||
vfile: 6.0.3
|
vfile: 6.0.3
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@astrojs/markdown-remark': 7.2.2
|
'@astrojs/markdown-remark': 7.2.2(supports-color@7.2.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
- typescript
|
- typescript
|
||||||
|
|
@ -3163,7 +3219,7 @@ snapshots:
|
||||||
'@jridgewell/resolve-uri': 3.1.2
|
'@jridgewell/resolve-uri': 3.1.2
|
||||||
'@jridgewell/sourcemap-codec': 1.5.5
|
'@jridgewell/sourcemap-codec': 1.5.5
|
||||||
|
|
||||||
'@mdx-js/mdx@3.1.1':
|
'@mdx-js/mdx@3.1.1(supports-color@7.2.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/estree': 1.0.9
|
'@types/estree': 1.0.9
|
||||||
'@types/estree-jsx': 1.0.5
|
'@types/estree-jsx': 1.0.5
|
||||||
|
|
@ -3175,14 +3231,14 @@ snapshots:
|
||||||
estree-util-is-identifier-name: 3.0.0
|
estree-util-is-identifier-name: 3.0.0
|
||||||
estree-util-scope: 1.0.0
|
estree-util-scope: 1.0.0
|
||||||
estree-walker: 3.0.3
|
estree-walker: 3.0.3
|
||||||
hast-util-to-jsx-runtime: 2.3.6
|
hast-util-to-jsx-runtime: 2.3.6(supports-color@7.2.0)
|
||||||
markdown-extensions: 2.0.0
|
markdown-extensions: 2.0.0
|
||||||
recma-build-jsx: 1.0.0
|
recma-build-jsx: 1.0.0
|
||||||
recma-jsx: 1.0.1(acorn@8.18.0)
|
recma-jsx: 1.0.1(acorn@8.18.0)
|
||||||
recma-stringify: 1.0.0
|
recma-stringify: 1.0.0
|
||||||
rehype-recma: 1.0.0
|
rehype-recma: 1.0.0(supports-color@7.2.0)
|
||||||
remark-mdx: 3.1.1
|
remark-mdx: 3.1.1(supports-color@7.2.0)
|
||||||
remark-parse: 11.0.0
|
remark-parse: 11.0.0(supports-color@7.2.0)
|
||||||
remark-rehype: 11.1.2
|
remark-rehype: 11.1.2
|
||||||
source-map: 0.7.6
|
source-map: 0.7.6
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
|
|
@ -3495,8 +3551,8 @@ snapshots:
|
||||||
|
|
||||||
'@volar/kit@2.4.28(typescript@7.0.2)':
|
'@volar/kit@2.4.28(typescript@7.0.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@volar/language-service': 2.4.28
|
'@volar/language-service': 2.4.28(typescript@7.0.2)
|
||||||
'@volar/typescript': 2.4.28
|
'@volar/typescript': 2.4.28(typescript@7.0.2)
|
||||||
typesafe-path: 0.2.2
|
typesafe-path: 0.2.2
|
||||||
typescript: 7.0.2
|
typescript: 7.0.2
|
||||||
vscode-languageserver-textdocument: 1.0.12
|
vscode-languageserver-textdocument: 1.0.12
|
||||||
|
|
@ -3506,32 +3562,38 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@volar/source-map': 2.4.28
|
'@volar/source-map': 2.4.28
|
||||||
|
|
||||||
'@volar/language-server@2.4.28':
|
'@volar/language-server@2.4.28(typescript@7.0.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@volar/language-core': 2.4.28
|
'@volar/language-core': 2.4.28
|
||||||
'@volar/language-service': 2.4.28
|
'@volar/language-service': 2.4.28(typescript@7.0.2)
|
||||||
'@volar/typescript': 2.4.28
|
'@volar/typescript': 2.4.28(typescript@7.0.2)
|
||||||
path-browserify: 1.0.1
|
path-browserify: 1.0.1
|
||||||
request-light: 0.7.0
|
request-light: 0.7.0
|
||||||
vscode-languageserver: 9.0.1
|
vscode-languageserver: 9.0.1
|
||||||
vscode-languageserver-protocol: 3.18.2
|
vscode-languageserver-protocol: 3.18.2
|
||||||
vscode-languageserver-textdocument: 1.0.12
|
vscode-languageserver-textdocument: 1.0.12
|
||||||
vscode-uri: 3.1.0
|
vscode-uri: 3.1.0
|
||||||
|
optionalDependencies:
|
||||||
|
typescript: 7.0.2
|
||||||
|
|
||||||
'@volar/language-service@2.4.28':
|
'@volar/language-service@2.4.28(typescript@7.0.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@volar/language-core': 2.4.28
|
'@volar/language-core': 2.4.28
|
||||||
vscode-languageserver-protocol: 3.18.2
|
vscode-languageserver-protocol: 3.18.2
|
||||||
vscode-languageserver-textdocument: 1.0.12
|
vscode-languageserver-textdocument: 1.0.12
|
||||||
vscode-uri: 3.1.0
|
vscode-uri: 3.1.0
|
||||||
|
optionalDependencies:
|
||||||
|
typescript: 7.0.2
|
||||||
|
|
||||||
'@volar/source-map@2.4.28': {}
|
'@volar/source-map@2.4.28': {}
|
||||||
|
|
||||||
'@volar/typescript@2.4.28':
|
'@volar/typescript@2.4.28(typescript@7.0.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@volar/language-core': 2.4.28
|
'@volar/language-core': 2.4.28
|
||||||
path-browserify: 1.0.1
|
path-browserify: 1.0.1
|
||||||
vscode-uri: 3.1.0
|
vscode-uri: 3.1.0
|
||||||
|
optionalDependencies:
|
||||||
|
typescript: 7.0.2
|
||||||
|
|
||||||
'@vscode/emmet-helper@2.11.0':
|
'@vscode/emmet-helper@2.11.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -3570,6 +3632,10 @@ snapshots:
|
||||||
|
|
||||||
ansi-regex@6.2.2: {}
|
ansi-regex@6.2.2: {}
|
||||||
|
|
||||||
|
ansi-styles@4.3.0:
|
||||||
|
dependencies:
|
||||||
|
color-convert: 2.0.1
|
||||||
|
|
||||||
ansi-styles@6.2.3: {}
|
ansi-styles@6.2.3: {}
|
||||||
|
|
||||||
anymatch@3.1.3:
|
anymatch@3.1.3:
|
||||||
|
|
@ -3587,13 +3653,13 @@ snapshots:
|
||||||
|
|
||||||
astring@1.9.0: {}
|
astring@1.9.0: {}
|
||||||
|
|
||||||
astro-expressive-code@0.44.1(astro@7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)):
|
astro-expressive-code@0.44.1(astro@7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)):
|
||||||
dependencies:
|
dependencies:
|
||||||
astro: 7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)
|
astro: 7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)
|
||||||
rehype-expressive-code: 0.44.1
|
rehype-expressive-code: 0.44.1
|
||||||
url-extras: 0.1.0
|
url-extras: 0.1.0
|
||||||
|
|
||||||
astro@7.2.0(@astrojs/markdown-remark@7.2.2)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0):
|
astro@7.2.2(@astrojs/markdown-remark@7.2.2(supports-color@7.2.0))(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@astrojs/compiler-rs': 0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)
|
'@astrojs/compiler-rs': 0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)
|
||||||
'@astrojs/internal-helpers': 0.10.2
|
'@astrojs/internal-helpers': 0.10.2
|
||||||
|
|
@ -3614,6 +3680,7 @@ snapshots:
|
||||||
dset: 3.1.4
|
dset: 3.1.4
|
||||||
es-module-lexer: 2.3.1
|
es-module-lexer: 2.3.1
|
||||||
esbuild: 0.28.2
|
esbuild: 0.28.2
|
||||||
|
find-process: 2.1.1
|
||||||
flattie: 1.1.1
|
flattie: 1.1.1
|
||||||
fontace: 0.4.1
|
fontace: 0.4.1
|
||||||
get-tsconfig: 5.0.0-beta.4
|
get-tsconfig: 5.0.0-beta.4
|
||||||
|
|
@ -3648,7 +3715,7 @@ snapshots:
|
||||||
yargs-parser: 22.0.0
|
yargs-parser: 22.0.0
|
||||||
zod: 4.4.3
|
zod: 4.4.3
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@astrojs/markdown-remark': 7.2.2
|
'@astrojs/markdown-remark': 7.2.2(supports-color@7.2.0)
|
||||||
sharp: 0.35.3(@types/node@24.13.3)
|
sharp: 0.35.3(@types/node@24.13.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@azure/app-configuration'
|
- '@azure/app-configuration'
|
||||||
|
|
@ -3700,6 +3767,11 @@ snapshots:
|
||||||
|
|
||||||
ccount@2.0.1: {}
|
ccount@2.0.1: {}
|
||||||
|
|
||||||
|
chalk@4.1.2:
|
||||||
|
dependencies:
|
||||||
|
ansi-styles: 4.3.0
|
||||||
|
supports-color: 7.2.0
|
||||||
|
|
||||||
character-entities-html4@2.1.0: {}
|
character-entities-html4@2.1.0: {}
|
||||||
|
|
||||||
character-entities-legacy@3.0.0: {}
|
character-entities-legacy@3.0.0: {}
|
||||||
|
|
@ -3728,10 +3800,18 @@ snapshots:
|
||||||
|
|
||||||
collapse-white-space@2.1.0: {}
|
collapse-white-space@2.1.0: {}
|
||||||
|
|
||||||
|
color-convert@2.0.1:
|
||||||
|
dependencies:
|
||||||
|
color-name: 1.1.4
|
||||||
|
|
||||||
|
color-name@1.1.4: {}
|
||||||
|
|
||||||
comma-separated-tokens@2.0.3: {}
|
comma-separated-tokens@2.0.3: {}
|
||||||
|
|
||||||
commander@11.1.0: {}
|
commander@11.1.0: {}
|
||||||
|
|
||||||
|
commander@14.0.3: {}
|
||||||
|
|
||||||
common-ancestor-path@2.0.0: {}
|
common-ancestor-path@2.0.0: {}
|
||||||
|
|
||||||
cookie-es@1.2.3: {}
|
cookie-es@1.2.3: {}
|
||||||
|
|
@ -3770,9 +3850,11 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
css-tree: 2.2.1
|
css-tree: 2.2.1
|
||||||
|
|
||||||
debug@4.4.3:
|
debug@4.4.3(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
ms: 2.1.3
|
ms: 2.1.3
|
||||||
|
optionalDependencies:
|
||||||
|
supports-color: 7.2.0
|
||||||
|
|
||||||
decode-named-character-reference@1.3.0:
|
decode-named-character-reference@1.3.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -3943,6 +4025,12 @@ snapshots:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
picomatch: 4.0.5
|
picomatch: 4.0.5
|
||||||
|
|
||||||
|
find-process@2.1.1:
|
||||||
|
dependencies:
|
||||||
|
chalk: 4.1.2
|
||||||
|
commander: 14.0.3
|
||||||
|
loglevel: 1.9.2
|
||||||
|
|
||||||
flattie@1.1.1: {}
|
flattie@1.1.1: {}
|
||||||
|
|
||||||
fontace@0.4.1:
|
fontace@0.4.1:
|
||||||
|
|
@ -3980,6 +4068,8 @@ snapshots:
|
||||||
ufo: 1.6.4
|
ufo: 1.6.4
|
||||||
uncrypto: 0.1.3
|
uncrypto: 0.1.3
|
||||||
|
|
||||||
|
has-flag@4.0.0: {}
|
||||||
|
|
||||||
hast-util-embedded@3.0.0:
|
hast-util-embedded@3.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/hast': 3.0.5
|
'@types/hast': 3.0.5
|
||||||
|
|
@ -4081,7 +4171,7 @@ snapshots:
|
||||||
unist-util-visit: 5.1.0
|
unist-util-visit: 5.1.0
|
||||||
zwitch: 2.0.4
|
zwitch: 2.0.4
|
||||||
|
|
||||||
hast-util-to-estree@3.1.3:
|
hast-util-to-estree@3.1.3(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/estree': 1.0.9
|
'@types/estree': 1.0.9
|
||||||
'@types/estree-jsx': 1.0.5
|
'@types/estree-jsx': 1.0.5
|
||||||
|
|
@ -4091,9 +4181,9 @@ snapshots:
|
||||||
estree-util-attach-comments: 3.0.0
|
estree-util-attach-comments: 3.0.0
|
||||||
estree-util-is-identifier-name: 3.0.0
|
estree-util-is-identifier-name: 3.0.0
|
||||||
hast-util-whitespace: 3.0.0
|
hast-util-whitespace: 3.0.0
|
||||||
mdast-util-mdx-expression: 2.0.1
|
mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0)
|
||||||
mdast-util-mdx-jsx: 3.2.0
|
mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0)
|
||||||
mdast-util-mdxjs-esm: 2.0.1
|
mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0)
|
||||||
property-information: 7.2.0
|
property-information: 7.2.0
|
||||||
space-separated-tokens: 2.0.2
|
space-separated-tokens: 2.0.2
|
||||||
style-to-js: 1.1.21
|
style-to-js: 1.1.21
|
||||||
|
|
@ -4116,7 +4206,7 @@ snapshots:
|
||||||
stringify-entities: 4.0.4
|
stringify-entities: 4.0.4
|
||||||
zwitch: 2.0.4
|
zwitch: 2.0.4
|
||||||
|
|
||||||
hast-util-to-jsx-runtime@2.3.6:
|
hast-util-to-jsx-runtime@2.3.6(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/estree': 1.0.9
|
'@types/estree': 1.0.9
|
||||||
'@types/hast': 3.0.5
|
'@types/hast': 3.0.5
|
||||||
|
|
@ -4125,9 +4215,9 @@ snapshots:
|
||||||
devlop: 1.1.0
|
devlop: 1.1.0
|
||||||
estree-util-is-identifier-name: 3.0.0
|
estree-util-is-identifier-name: 3.0.0
|
||||||
hast-util-whitespace: 3.0.0
|
hast-util-whitespace: 3.0.0
|
||||||
mdast-util-mdx-expression: 2.0.1
|
mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0)
|
||||||
mdast-util-mdx-jsx: 3.2.0
|
mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0)
|
||||||
mdast-util-mdxjs-esm: 2.0.1
|
mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0)
|
||||||
property-information: 7.2.0
|
property-information: 7.2.0
|
||||||
space-separated-tokens: 2.0.2
|
space-separated-tokens: 2.0.2
|
||||||
style-to-js: 1.1.21
|
style-to-js: 1.1.21
|
||||||
|
|
@ -4314,6 +4404,8 @@ snapshots:
|
||||||
lightningcss-win32-arm64-msvc: 1.33.0
|
lightningcss-win32-arm64-msvc: 1.33.0
|
||||||
lightningcss-win32-x64-msvc: 1.33.0
|
lightningcss-win32-x64-msvc: 1.33.0
|
||||||
|
|
||||||
|
loglevel@1.9.2: {}
|
||||||
|
|
||||||
longest-streak@3.1.0: {}
|
longest-streak@3.1.0: {}
|
||||||
|
|
||||||
lru-cache@11.5.2: {}
|
lru-cache@11.5.2: {}
|
||||||
|
|
@ -4342,13 +4434,13 @@ snapshots:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
unist-util-visit: 5.1.0
|
unist-util-visit: 5.1.0
|
||||||
|
|
||||||
mdast-util-directive@3.1.0:
|
mdast-util-directive@3.1.0(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
ccount: 2.0.1
|
ccount: 2.0.1
|
||||||
devlop: 1.1.0
|
devlop: 1.1.0
|
||||||
mdast-util-from-markdown: 2.0.3
|
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||||
mdast-util-to-markdown: 2.1.2
|
mdast-util-to-markdown: 2.1.2
|
||||||
parse-entities: 4.0.2
|
parse-entities: 4.0.2
|
||||||
stringify-entities: 4.0.4
|
stringify-entities: 4.0.4
|
||||||
|
|
@ -4363,14 +4455,14 @@ snapshots:
|
||||||
unist-util-is: 6.0.1
|
unist-util-is: 6.0.1
|
||||||
unist-util-visit-parents: 6.0.2
|
unist-util-visit-parents: 6.0.2
|
||||||
|
|
||||||
mdast-util-from-markdown@2.0.3:
|
mdast-util-from-markdown@2.0.3(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
decode-named-character-reference: 1.3.0
|
decode-named-character-reference: 1.3.0
|
||||||
devlop: 1.1.0
|
devlop: 1.1.0
|
||||||
mdast-util-to-string: 4.0.0
|
mdast-util-to-string: 4.0.0
|
||||||
micromark: 4.0.2
|
micromark: 4.0.2(supports-color@7.2.0)
|
||||||
micromark-util-decode-numeric-character-reference: 2.0.2
|
micromark-util-decode-numeric-character-reference: 2.0.2
|
||||||
micromark-util-decode-string: 2.0.1
|
micromark-util-decode-string: 2.0.1
|
||||||
micromark-util-normalize-identifier: 2.0.1
|
micromark-util-normalize-identifier: 2.0.1
|
||||||
|
|
@ -4388,67 +4480,67 @@ snapshots:
|
||||||
mdast-util-find-and-replace: 3.0.2
|
mdast-util-find-and-replace: 3.0.2
|
||||||
micromark-util-character: 2.1.1
|
micromark-util-character: 2.1.1
|
||||||
|
|
||||||
mdast-util-gfm-footnote@2.1.0:
|
mdast-util-gfm-footnote@2.1.0(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
devlop: 1.1.0
|
devlop: 1.1.0
|
||||||
mdast-util-from-markdown: 2.0.3
|
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||||
mdast-util-to-markdown: 2.1.2
|
mdast-util-to-markdown: 2.1.2
|
||||||
micromark-util-normalize-identifier: 2.0.1
|
micromark-util-normalize-identifier: 2.0.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
mdast-util-gfm-strikethrough@2.0.0:
|
mdast-util-gfm-strikethrough@2.0.0(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
mdast-util-from-markdown: 2.0.3
|
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||||
mdast-util-to-markdown: 2.1.2
|
mdast-util-to-markdown: 2.1.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
mdast-util-gfm-table@2.0.0:
|
mdast-util-gfm-table@2.0.0(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
devlop: 1.1.0
|
devlop: 1.1.0
|
||||||
markdown-table: 3.0.4
|
markdown-table: 3.0.4
|
||||||
mdast-util-from-markdown: 2.0.3
|
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||||
mdast-util-to-markdown: 2.1.2
|
mdast-util-to-markdown: 2.1.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
mdast-util-gfm-task-list-item@2.0.0:
|
mdast-util-gfm-task-list-item@2.0.0(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
devlop: 1.1.0
|
devlop: 1.1.0
|
||||||
mdast-util-from-markdown: 2.0.3
|
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||||
mdast-util-to-markdown: 2.1.2
|
mdast-util-to-markdown: 2.1.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
mdast-util-gfm@3.1.0:
|
mdast-util-gfm@3.1.0(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
mdast-util-from-markdown: 2.0.3
|
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||||
mdast-util-gfm-autolink-literal: 2.0.1
|
mdast-util-gfm-autolink-literal: 2.0.1
|
||||||
mdast-util-gfm-footnote: 2.1.0
|
mdast-util-gfm-footnote: 2.1.0(supports-color@7.2.0)
|
||||||
mdast-util-gfm-strikethrough: 2.0.0
|
mdast-util-gfm-strikethrough: 2.0.0(supports-color@7.2.0)
|
||||||
mdast-util-gfm-table: 2.0.0
|
mdast-util-gfm-table: 2.0.0(supports-color@7.2.0)
|
||||||
mdast-util-gfm-task-list-item: 2.0.0
|
mdast-util-gfm-task-list-item: 2.0.0(supports-color@7.2.0)
|
||||||
mdast-util-to-markdown: 2.1.2
|
mdast-util-to-markdown: 2.1.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
mdast-util-mdx-expression@2.0.1:
|
mdast-util-mdx-expression@2.0.1(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/estree-jsx': 1.0.5
|
'@types/estree-jsx': 1.0.5
|
||||||
'@types/hast': 3.0.5
|
'@types/hast': 3.0.5
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
devlop: 1.1.0
|
devlop: 1.1.0
|
||||||
mdast-util-from-markdown: 2.0.3
|
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||||
mdast-util-to-markdown: 2.1.2
|
mdast-util-to-markdown: 2.1.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
mdast-util-mdx-jsx@3.2.0:
|
mdast-util-mdx-jsx@3.2.0(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/estree-jsx': 1.0.5
|
'@types/estree-jsx': 1.0.5
|
||||||
'@types/hast': 3.0.5
|
'@types/hast': 3.0.5
|
||||||
|
|
@ -4456,7 +4548,7 @@ snapshots:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
ccount: 2.0.1
|
ccount: 2.0.1
|
||||||
devlop: 1.1.0
|
devlop: 1.1.0
|
||||||
mdast-util-from-markdown: 2.0.3
|
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||||
mdast-util-to-markdown: 2.1.2
|
mdast-util-to-markdown: 2.1.2
|
||||||
parse-entities: 4.0.2
|
parse-entities: 4.0.2
|
||||||
stringify-entities: 4.0.4
|
stringify-entities: 4.0.4
|
||||||
|
|
@ -4465,23 +4557,23 @@ snapshots:
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
mdast-util-mdx@3.0.0:
|
mdast-util-mdx@3.0.0(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
mdast-util-from-markdown: 2.0.3
|
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||||
mdast-util-mdx-expression: 2.0.1
|
mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0)
|
||||||
mdast-util-mdx-jsx: 3.2.0
|
mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0)
|
||||||
mdast-util-mdxjs-esm: 2.0.1
|
mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0)
|
||||||
mdast-util-to-markdown: 2.1.2
|
mdast-util-to-markdown: 2.1.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
mdast-util-mdxjs-esm@2.0.1:
|
mdast-util-mdxjs-esm@2.0.1(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/estree-jsx': 1.0.5
|
'@types/estree-jsx': 1.0.5
|
||||||
'@types/hast': 3.0.5
|
'@types/hast': 3.0.5
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
devlop: 1.1.0
|
devlop: 1.1.0
|
||||||
mdast-util-from-markdown: 2.0.3
|
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||||
mdast-util-to-markdown: 2.1.2
|
mdast-util-to-markdown: 2.1.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
@ -4775,10 +4867,10 @@ snapshots:
|
||||||
|
|
||||||
micromark-util-types@2.0.2: {}
|
micromark-util-types@2.0.2: {}
|
||||||
|
|
||||||
micromark@4.0.2:
|
micromark@4.0.2(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/debug': 4.1.13
|
'@types/debug': 4.1.13
|
||||||
debug: 4.4.3
|
debug: 4.4.3(supports-color@7.2.0)
|
||||||
decode-named-character-reference: 1.3.0
|
decode-named-character-reference: 1.3.0
|
||||||
devlop: 1.1.0
|
devlop: 1.1.0
|
||||||
micromark-core-commonmark: 2.0.3
|
micromark-core-commonmark: 2.0.3
|
||||||
|
|
@ -4985,11 +5077,11 @@ snapshots:
|
||||||
hast-util-raw: 9.1.0
|
hast-util-raw: 9.1.0
|
||||||
vfile: 6.0.3
|
vfile: 6.0.3
|
||||||
|
|
||||||
rehype-recma@1.0.0:
|
rehype-recma@1.0.0(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/estree': 1.0.9
|
'@types/estree': 1.0.9
|
||||||
'@types/hast': 3.0.5
|
'@types/hast': 3.0.5
|
||||||
hast-util-to-estree: 3.1.3
|
hast-util-to-estree: 3.1.3(supports-color@7.2.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
|
@ -5006,37 +5098,37 @@ snapshots:
|
||||||
rehype-stringify: 10.0.1
|
rehype-stringify: 10.0.1
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
|
|
||||||
remark-directive@4.0.0:
|
remark-directive@4.0.0(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
mdast-util-directive: 3.1.0
|
mdast-util-directive: 3.1.0(supports-color@7.2.0)
|
||||||
micromark-extension-directive: 4.0.0
|
micromark-extension-directive: 4.0.0
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
remark-gfm@4.0.1:
|
remark-gfm@4.0.1(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
mdast-util-gfm: 3.1.0
|
mdast-util-gfm: 3.1.0(supports-color@7.2.0)
|
||||||
micromark-extension-gfm: 3.0.0
|
micromark-extension-gfm: 3.0.0
|
||||||
remark-parse: 11.0.0
|
remark-parse: 11.0.0(supports-color@7.2.0)
|
||||||
remark-stringify: 11.0.0
|
remark-stringify: 11.0.0
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
remark-mdx@3.1.1:
|
remark-mdx@3.1.1(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
mdast-util-mdx: 3.0.0
|
mdast-util-mdx: 3.0.0(supports-color@7.2.0)
|
||||||
micromark-extension-mdxjs: 3.0.0
|
micromark-extension-mdxjs: 3.0.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
remark-parse@11.0.0:
|
remark-parse@11.0.0(supports-color@7.2.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 4.0.4
|
'@types/mdast': 4.0.4
|
||||||
mdast-util-from-markdown: 2.0.3
|
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||||
micromark-util-types: 2.0.2
|
micromark-util-types: 2.0.2
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
|
@ -5228,6 +5320,10 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
inline-style-parser: 0.2.7
|
inline-style-parser: 0.2.7
|
||||||
|
|
||||||
|
supports-color@7.2.0:
|
||||||
|
dependencies:
|
||||||
|
has-flag: 4.0.0
|
||||||
|
|
||||||
svgo@4.0.2:
|
svgo@4.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
commander: 11.1.0
|
commander: 11.1.0
|
||||||
|
|
@ -5407,45 +5503,46 @@ snapshots:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)
|
vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)
|
||||||
|
|
||||||
volar-service-css@0.0.71(@volar/language-service@2.4.28):
|
volar-service-css@0.0.71(@volar/language-service@2.4.28(typescript@7.0.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
vscode-css-languageservice: 6.3.10
|
vscode-css-languageservice: 6.3.10
|
||||||
vscode-languageserver-textdocument: 1.0.12
|
vscode-languageserver-textdocument: 1.0.12
|
||||||
vscode-uri: 3.1.0
|
vscode-uri: 3.1.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@volar/language-service': 2.4.28
|
'@volar/language-service': 2.4.28(typescript@7.0.2)
|
||||||
|
|
||||||
volar-service-emmet@0.0.71(@volar/language-service@2.4.28):
|
volar-service-emmet@0.0.71(@volar/language-service@2.4.28(typescript@7.0.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@emmetio/css-parser': 0.4.1
|
'@emmetio/css-parser': 0.4.1
|
||||||
'@emmetio/html-matcher': 1.3.0
|
'@emmetio/html-matcher': 1.3.0
|
||||||
'@vscode/emmet-helper': 2.11.0
|
'@vscode/emmet-helper': 2.11.0
|
||||||
vscode-uri: 3.1.0
|
vscode-uri: 3.1.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@volar/language-service': 2.4.28
|
'@volar/language-service': 2.4.28(typescript@7.0.2)
|
||||||
|
|
||||||
volar-service-html@0.0.71(@volar/language-service@2.4.28):
|
volar-service-html@0.0.71(@volar/language-service@2.4.28(typescript@7.0.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
vscode-html-languageservice: 5.6.2
|
vscode-html-languageservice: 5.6.2
|
||||||
vscode-languageserver-textdocument: 1.0.12
|
vscode-languageserver-textdocument: 1.0.12
|
||||||
vscode-uri: 3.1.0
|
vscode-uri: 3.1.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@volar/language-service': 2.4.28
|
'@volar/language-service': 2.4.28(typescript@7.0.2)
|
||||||
|
|
||||||
volar-service-prettier@0.0.71(@volar/language-service@2.4.28)(prettier@3.9.6):
|
volar-service-prettier@0.0.71(@volar/language-service@2.4.28(typescript@7.0.2))(prettier@3.9.6):
|
||||||
dependencies:
|
dependencies:
|
||||||
vscode-uri: 3.1.0
|
vscode-uri: 3.1.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@volar/language-service': 2.4.28
|
'@volar/language-service': 2.4.28(typescript@7.0.2)
|
||||||
prettier: 3.9.6
|
prettier: 3.9.6
|
||||||
|
|
||||||
volar-service-typescript-twoslash-queries@0.0.71(@volar/language-service@2.4.28):
|
volar-service-typescript-twoslash-queries@0.0.71(@volar/language-service@2.4.28(typescript@7.0.2))(typescript@7.0.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
vscode-uri: 3.1.0
|
vscode-uri: 3.1.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@volar/language-service': 2.4.28
|
'@volar/language-service': 2.4.28(typescript@7.0.2)
|
||||||
|
typescript: 7.0.2
|
||||||
|
|
||||||
volar-service-typescript@0.0.71(@volar/language-service@2.4.28):
|
volar-service-typescript@0.0.71(@volar/language-service@2.4.28(typescript@7.0.2))(typescript@7.0.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
path-browserify: 1.0.1
|
path-browserify: 1.0.1
|
||||||
semver: 7.8.5
|
semver: 7.8.5
|
||||||
|
|
@ -5454,14 +5551,15 @@ snapshots:
|
||||||
vscode-nls: 5.2.0
|
vscode-nls: 5.2.0
|
||||||
vscode-uri: 3.1.0
|
vscode-uri: 3.1.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@volar/language-service': 2.4.28
|
'@volar/language-service': 2.4.28(typescript@7.0.2)
|
||||||
|
typescript: 7.0.2
|
||||||
|
|
||||||
volar-service-yaml@0.0.71(@volar/language-service@2.4.28):
|
volar-service-yaml@0.0.71(@volar/language-service@2.4.28(typescript@7.0.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
vscode-uri: 3.1.0
|
vscode-uri: 3.1.0
|
||||||
yaml-language-server: 1.23.0
|
yaml-language-server: 1.23.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@volar/language-service': 2.4.28
|
'@volar/language-service': 2.4.28(typescript@7.0.2)
|
||||||
|
|
||||||
vscode-css-languageservice@6.3.10:
|
vscode-css-languageservice@6.3.10:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
|
||||||
|
|
@ -2,33 +2,117 @@
|
||||||
title: Endpoints
|
title: Endpoints
|
||||||
---
|
---
|
||||||
|
|
||||||
All messages to the `Iota` are either from the `Omikron` directly, from a `Client` or another `Iota` trying to message a `User` on the `Iota`.
|
All application messages arrive at the `Iota` through an authenticated MTP
|
||||||
All messages will be marked with a `sender_id` this will be added on the `Omikron`.
|
connection. A sealed application operation uses the reserved `Relay`
|
||||||
It is important to note that the `Iota ID` is not shared with others as it is what verifies the `Iota` users to Tensamin.
|
communication type. Its outer sender is absent, and its outer receiver is
|
||||||
In the response the `sender_id` & `receiver_id` must be swapped as sender.
|
only the next-hop Iota or local client ID.
|
||||||
When a message comes from an iota without a `sender-id` that the iota has access to or is designated for the client (`33333333-3333-3333-3333-333333333333`) the message will not be send.
|
|
||||||
|
The Iota opens and verifies Relay metadata and content. It resolves the
|
||||||
|
claimed signer ID through trusted user key history; it never treats a public
|
||||||
|
key carried by the message as authoritative. The `sender_id` fields in the
|
||||||
|
examples below describe authenticated application data inside the protected
|
||||||
|
Relay, not an outer MTP sender added by Omikron.
|
||||||
|
|
||||||
|
The Iota ID is used by the MTP routing layer and is not an application signer
|
||||||
|
identity. Omikron does not rewrite a Relay's sender, emit `MessageOtherIota`,
|
||||||
|
or inspect the protected operation to choose a route.
|
||||||
|
|
||||||
|
## MTP Relay API
|
||||||
|
|
||||||
|
The Relay API uses the MTP `0.3.0` implementation and protocol version `3.0`.
|
||||||
|
MTP sends the frame as binary data; the shapes below describe its logical
|
||||||
|
fields for application integration.
|
||||||
|
|
||||||
|
### `Relay` frame
|
||||||
|
|
||||||
|
```text
|
||||||
|
CommunicationValue {
|
||||||
|
id: optional u32,
|
||||||
|
type: Relay,
|
||||||
|
sender: absent,
|
||||||
|
receiver: next-hop u64,
|
||||||
|
payload: encrypted relay metadata,
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The clear `receiver` is the only routing identity. The payload is sealed from
|
||||||
|
Omikron and Omega. The `id` is an MTP correlation value and is not the
|
||||||
|
authenticated application message identity.
|
||||||
|
|
||||||
|
After the metadata recipient opens the payload, the authenticated metadata
|
||||||
|
contains:
|
||||||
|
|
||||||
|
```text
|
||||||
|
RelayVersion: unsigned integer
|
||||||
|
MessageId: string
|
||||||
|
FinalRecipientId: unsigned integer
|
||||||
|
CreatedAt: Unix epoch milliseconds
|
||||||
|
Content: encrypted signed application content
|
||||||
|
Metadata: optional application metadata
|
||||||
|
```
|
||||||
|
|
||||||
|
The signed content contains `MessageType` and the application `Content` value.
|
||||||
|
The content recipient set is separate from the metadata recipient set. Include
|
||||||
|
the destination Iota in the content recipient set when that Iota must apply
|
||||||
|
the operation; metadata-only participants forward the sealed content.
|
||||||
|
|
||||||
|
### Relay verification
|
||||||
|
|
||||||
|
The receiving Iota performs these checks before dispatching application data:
|
||||||
|
|
||||||
|
1. The outer receiver is the local Iota ID.
|
||||||
|
2. The outer sender is absent.
|
||||||
|
3. The claimed signer ID is read from decrypted metadata but remains untrusted.
|
||||||
|
4. Trusted signing-key history is resolved from local user state or the
|
||||||
|
authenticated Omega control plane.
|
||||||
|
5. The metadata signature and final recipient are verified with those keys.
|
||||||
|
6. `(signer_id, MessageId)` is inserted into durable replay storage before an
|
||||||
|
application side effect.
|
||||||
|
7. The content signature is checked against the same trusted signer keys.
|
||||||
|
|
||||||
|
An application `SenderId` field is checked against the authenticated signer;
|
||||||
|
it is not a substitute for Relay signature verification. `CreatedAt` can be
|
||||||
|
used for retention, but it is not part of the replay identity.
|
||||||
|
|
||||||
|
### Relay routing
|
||||||
|
|
||||||
|
The outer receiver changes when the Relay crosses a routing boundary. The
|
||||||
|
sealed payload and absent outer sender remain unchanged.
|
||||||
|
|
||||||
|
| Stage | Outer receiver | Operation |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Client to origin Iota | Origin Iota ID | Verify the local user's Relay and resolve the final recipient's hosting Iota. |
|
||||||
|
| Origin Iota to remote Iota | Destination Iota ID | Call `forward_relay_frame()` and send the unchanged sealed Relay through Omikron. |
|
||||||
|
| Destination Iota to client | Final user ID | Verify and apply content, then forward the original Relay to the local client. |
|
||||||
|
|
||||||
|
The Iota never creates `MessageOtherIota`, reconstructs `SetChatSecret`, or
|
||||||
|
adds the authenticated signer as an outer MTP sender. Failed delivery stores
|
||||||
|
the encoded sealed Relay for retry.
|
||||||
|
|
||||||
## Messages
|
## Messages
|
||||||
|
|
||||||
### Messaging Lifecycle
|
### Messaging Lifecycle
|
||||||
|
|
||||||
The messaging system follows a strict derivation loop to ensure delivery and correct state synchronization:
|
The messaging system persists and verifies each protected operation before it
|
||||||
|
is delivered or forwarded:
|
||||||
|
|
||||||
1. The client sends a `message_send` to its Iota.
|
1. The client sends a sealed `Relay` containing the application operation to
|
||||||
2. The Iota sends a response `message_send` as confirmation back to the client.
|
its associated Iota.
|
||||||
3. The Iota sends a `message_other_iota` to the chat partner's Iota.
|
2. The Iota verifies the protected signer, final recipient, message ID, and
|
||||||
- **If it times out:**
|
application content before applying the operation.
|
||||||
- The initial Iota sends a `message_state` to the client with the state `"sending"`.
|
3. When another Iota must receive the operation, the Iota persists any
|
||||||
- **If successful:**
|
required delivery state and forwards the same sealed `Relay` through
|
||||||
- The other Iota receives the `message_other_iota` and handles it.
|
Omikron. The outer receiver changes only when the next hop changes.
|
||||||
- The other Iota informs its client with a `message_live`.
|
4. The recipient Iota verifies the Relay again, stores the operation, and
|
||||||
- **If the client doesn't answer:**
|
sends the resulting application update to its local client.
|
||||||
1. The other Iota will send a `message_state` to the initial Iota with the state `"sent"`.
|
|
||||||
2. The initial Iota will store the state and forward the `message_state` to its client.
|
|
||||||
|
|
||||||
### Message mutations
|
### Message mutations
|
||||||
|
|
||||||
`Iota` stores each mutation on the sender and recipient replicas. `Content` remains encrypted chat content. The sender is taken from the authenticated MTP connection and must own the original message for edits and deletion.
|
`Iota` stores each mutation on the sender and recipient replicas. `Content`
|
||||||
|
remains encrypted chat content. The sender is the authenticated signer from
|
||||||
|
the protected Relay and must own the original message for edits and deletion.
|
||||||
|
The request and update examples in this section show protected application
|
||||||
|
content, not the outer MTP `CommunicationValue`.
|
||||||
|
|
||||||
#### `MessageEdit`
|
#### `MessageEdit`
|
||||||
|
|
||||||
|
|
@ -75,6 +159,10 @@ Changes an existing message. `ChatPartnerId` and `SendTime` identify the message
|
||||||
|
|
||||||
Adds one reaction for the authenticated user. Repeating the same request does not create a duplicate row.
|
Adds one reaction for the authenticated user. Repeating the same request does not create a duplicate row.
|
||||||
|
|
||||||
|
Iota stores at most ten distinct reaction strings per message. A user may use
|
||||||
|
an existing reaction string after the limit is reached. A new string at the
|
||||||
|
limit returns `ErrorInvalidData` and produces no live update.
|
||||||
|
|
||||||
##### `REQ (C2S):`
|
##### `REQ (C2S):`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
|
@ -142,6 +230,27 @@ Removes the authenticated user's matching reaction.
|
||||||
|
|
||||||
`Accepted` is `true` for an add and `false` for a removal.
|
`Accepted` is `true` for an add and `false` for a removal.
|
||||||
|
|
||||||
|
#### `MessageGet`
|
||||||
|
|
||||||
|
Fetches one visible message by `SendTime`. Include `ChatPartnerId` when the
|
||||||
|
request is a reply lookup. The successful response then includes `Offset`,
|
||||||
|
the message's absolute position in the same descending history order used by
|
||||||
|
`MessagesGet`.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"type": "MessageGet",
|
||||||
|
"data": {
|
||||||
|
"ChatPartnerId": "<chat-partner-id>",
|
||||||
|
"SendTime": "<message-unix-milliseconds>"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Use the returned `Offset` as the starting position for a page that contains
|
||||||
|
the target. Requests without `ChatPartnerId` remain accepted for compatibility
|
||||||
|
but do not include an offset.
|
||||||
|
|
||||||
#### `MessageDeleteLive`
|
#### `MessageDeleteLive`
|
||||||
|
|
||||||
Deletes a message from both replicas. The existing `MessageDeleteLive` MTP type is used for both the authenticated delete request and the recipient update because no separate delete request type exists in the client type map.
|
Deletes a message from both replicas. The existing `MessageDeleteLive` MTP type is used for both the authenticated delete request and the recipient update because no separate delete request type exists in the client type map.
|
||||||
|
|
@ -185,8 +294,10 @@ Deletes a message from both replicas. The existing `MessageDeleteLive` MTP type
|
||||||
2. The initial Iota will store the state and forward the `message_state` to its client.
|
2. The initial Iota will store the state and forward the `message_state` to its client.
|
||||||
|
|
||||||
### Client adds someone to their contacts
|
### Client adds someone to their contacts
|
||||||
When adding via name, the omikron will intercept and fill the chat_partner_id.
|
|
||||||
The iota will never read, or handle the chat_partner_name.
|
Resolve a contact name through the control plane before creating the protected
|
||||||
|
`AddConversation` operation. Omikron does not inspect or mutate this
|
||||||
|
operation. The JSON below represents the protected application content.
|
||||||
|
|
||||||
##### `REQ:`
|
##### `REQ:`
|
||||||
|
|
||||||
|
|
@ -220,41 +331,33 @@ The iota will never read, or handle the chat_partner_name.
|
||||||
|
|
||||||
### Client messages someone
|
### Client messages someone
|
||||||
|
|
||||||
##### `REQ:`
|
The following object is the protected application content passed to the MTP
|
||||||
|
Relay builder. It is not the outer frame and its `SenderId`, when present, is
|
||||||
|
checked against the authenticated Relay signer.
|
||||||
|
|
||||||
|
##### `CONTENT:`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"sender_id": "<user-id>",
|
"MessageType": "MessageSend",
|
||||||
"receiver_id": "<user-id>",
|
"Content": {
|
||||||
|
"ReceiverId": "<user-id>",
|
||||||
"type": "message_send",
|
"Content": "<markdown (encrypted)>",
|
||||||
"id": "<uuid>",
|
"Files": [
|
||||||
"data": {
|
|
||||||
"receiver_id": "<uuid>",
|
|
||||||
"content": "<markdown (encrypted)>",
|
|
||||||
"files": [
|
|
||||||
{
|
{
|
||||||
"name": "<cool name>",
|
"Name": "<file-name>",
|
||||||
"id": "<uuid>",
|
"Id": "<uuid>",
|
||||||
"type": "[ image | image_top_right | file ]"
|
"Type": "[ image | image_top_right | file ]"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
##### `RES:`
|
The Relay metadata carries the authenticated `MessageId` and
|
||||||
|
`FinalRecipientId`. It also carries `CreatedAt` as Unix epoch milliseconds.
|
||||||
```json
|
The application does not put the signer identity in the outer MTP sender
|
||||||
{
|
field.
|
||||||
"sender_id": "<user-id>",
|
|
||||||
"receiver_id": "<user-id>",
|
|
||||||
|
|
||||||
"type": "message_send",
|
|
||||||
"id": "<uuid>",
|
|
||||||
"data": {}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Client loads messages
|
### Client loads messages
|
||||||
|
|
||||||
|
|
@ -313,49 +416,50 @@ The iota will never read, or handle the chat_partner_name.
|
||||||
|
|
||||||
`ClientConnected` and `MessagesGet` include `Edited: true` for messages with at least one edit and a `Reactions` array. Each reaction contains `Reaction` and `SenderId` fields. Clients that do not consume these fields continue to receive the existing message fields.
|
`ClientConnected` and `MessagesGet` include `Edited: true` for messages with at least one edit and a `Reactions` array. Each reaction contains `Reaction` and `SenderId` fields. Clients that do not consume these fields continue to receive the existing message fields.
|
||||||
|
|
||||||
### Send a message to other Iota
|
### Route a message to another Iota
|
||||||
|
|
||||||
##### `REQ:`
|
The client sends the same `Relay` frame to its origin Iota regardless of the
|
||||||
|
final recipient's hosting Iota.
|
||||||
|
|
||||||
```json
|
```text
|
||||||
{
|
Relay {
|
||||||
"type": "message_send",
|
id: <optional-mtp-frame-id>,
|
||||||
"id": "<message_id>",
|
sender: absent,
|
||||||
"data": {
|
receiver: <origin-iota-id>,
|
||||||
"receiver_id": "99999999-8888-7777-6666-555555555555",
|
payload: <sealed MessageSend operation>,
|
||||||
"content": "Hello, how are you?"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
##### `RES:`
|
The origin Iota resolves the final recipient through the authenticated control
|
||||||
|
plane and forwards the original sealed frame with `receiver` set to the
|
||||||
|
destination Iota. It does not create a second application message.
|
||||||
|
|
||||||
```json
|
```text
|
||||||
{
|
Relay {
|
||||||
"type": "message",
|
id: <same-mtp-frame-id>,
|
||||||
"id": "<message_id>",
|
sender: absent,
|
||||||
"receiver": "<user_id>"
|
receiver: <destination-iota-id>,
|
||||||
|
payload: <same sealed MessageSend operation>,
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Receive live message (`message_other_iota`)
|
### Receive a live message from a sealed Relay
|
||||||
|
|
||||||
##### `UPDATE:`
|
##### `UPDATE:`
|
||||||
|
|
||||||
```json
|
```text
|
||||||
{
|
Relay {
|
||||||
"type": "message_live",
|
id: <same-mtp-frame-id>,
|
||||||
"id": "<message_id>",
|
sender: absent,
|
||||||
"receiver": "<user_id>",
|
receiver: <final-user-id>,
|
||||||
|
payload: <same sealed MessageSend operation>,
|
||||||
"data": {
|
|
||||||
"send_time": unixstamp,
|
|
||||||
"message": "<content>",
|
|
||||||
"sender_id": "99999999-8888-7777-6666-555555555555"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The destination Iota applies the authenticated operation before forwarding
|
||||||
|
the frame to the local client. The client receives the application update
|
||||||
|
through its authenticated MTP connection.
|
||||||
|
|
||||||
## Communities
|
## Communities
|
||||||
|
|
||||||
### Client storing a community on their Iota
|
### Client storing a community on their Iota
|
||||||
|
|
|
||||||
|
|
@ -1,73 +1,93 @@
|
||||||
---
|
---
|
||||||
title: WSS Endpoints
|
title: MTP Endpoints
|
||||||
|
lastUpdated: 2026-08-14
|
||||||
---
|
---
|
||||||
|
|
||||||
The `Omega` can be reached by HTTPS request from `Client` and `Iota`.
|
`Omega` serves HTTPS API routes and authenticated MTP WebTransport sessions.
|
||||||
`Omikron` servers establish a Secure Websocket when booting.
|
`Omikron` connects through the MTP WebTransport endpoint. The Omega service
|
||||||
|
uses MTP protocol version `0.3.0` and requires transport authentication before
|
||||||
|
dispatching application frames.
|
||||||
|
|
||||||
This documentation is split into `Omikron` (WSS) and `HTTPS`.
|
This document covers the MTP connection between `Omikron` and `Omega` and the
|
||||||
|
control messages handled after authentication. HTTP routes are documented in
|
||||||
|
[`https.md`](./https.md).
|
||||||
|
|
||||||
## Omikron
|
## MTP Omikron Connection
|
||||||
|
|
||||||
### Identification
|
### Authentication
|
||||||
|
|
||||||
Any message to the `Omega` will be ignored until Identification.
|
The MTP opening exchange negotiates protocol version `3.0` and completes the
|
||||||
|
configured cryptographic login or registration flow. Omega uses
|
||||||
|
`ForceAuthentication`, so an unauthenticated WebTransport session does not
|
||||||
|
reach the application dispatcher. The authenticated MTP client ID identifies
|
||||||
|
the `Omikron` connection.
|
||||||
|
|
||||||
##### `REQ:`
|
The MTP `Identification`, `Register`, challenge, and signed proof frames are
|
||||||
|
transport messages. They are not application-level JSON endpoints. After the
|
||||||
|
handshake, Omega validates the authenticated `Omikron` capability description
|
||||||
|
before accepting control messages or Relay frames.
|
||||||
|
|
||||||
|
### Relay Routing
|
||||||
|
|
||||||
|
`Relay` is the reserved MTP communication type for opaque routing between
|
||||||
|
`Omikron` instances. The logical shape below describes the MTP frame; MTP sends
|
||||||
|
the frame as binary data, not as JSON.
|
||||||
|
|
||||||
|
#### `Relay`
|
||||||
|
|
||||||
|
The outer `receiver` is the destination `Iota` next hop. The outer `sender`
|
||||||
|
field must be absent. The payload contains the sealed Relay metadata and
|
||||||
|
content and is not opened by Omega.
|
||||||
|
|
||||||
|
##### `REQ (Omikron → Omega):`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"type": "identification",
|
"type": "Relay",
|
||||||
"data": {
|
"id": "<frame-id>",
|
||||||
"omikron": "<omikron-id>",
|
"receiver": "<iota-id>",
|
||||||
}
|
"payload": "<opaque sealed relay payload>"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
##### `REQ & RES:`
|
##### `FORWARD:`
|
||||||
|
|
||||||
|
Omega resolves the destination `Iota` through its primary `Omikron` route and
|
||||||
|
sends the Relay to that one authenticated connection. The outer receiver and
|
||||||
|
sealed payload remain unchanged. Omega does not decrypt Relay metadata or
|
||||||
|
content, resolve the original signer, rewrite the sender, or interpret the
|
||||||
|
inner application type.
|
||||||
|
|
||||||
|
Relay route failures are infrastructure failures. Omega rejects a frame with
|
||||||
|
an outer sender, a missing destination `Iota`, an unavailable primary route,
|
||||||
|
an unavailable target connection, or a route that points back to the source
|
||||||
|
`Omikron`. Omega does not turn these failures into user-authored Relay content.
|
||||||
|
|
||||||
|
### Control Messages
|
||||||
|
|
||||||
|
Control messages use the negotiated MTP type map after the authenticated
|
||||||
|
connection is established.
|
||||||
|
|
||||||
|
#### `PushNotification`
|
||||||
|
|
||||||
|
Sends a notification to a user. The receiver ID can be specified in the MTP
|
||||||
|
frame's `receiver` field or in the data payload.
|
||||||
|
|
||||||
|
##### `REQ (Omikron → Omega):`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"type": "challenge",
|
"type": "PushNotification",
|
||||||
"data": {
|
"receiver_id": "<user-id>?",
|
||||||
"public_key": "<omegas public key>",
|
"sender_id": "<user-id>"
|
||||||
"challenge": "<random encrypted b64 string>"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
##### `REQ & RES:`
|
|
||||||
|
##### `RES (Omega → Omikron):`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"type": "challenge_response",
|
"type": "PushNotification",
|
||||||
"data": {
|
"id": "<frame-id>"
|
||||||
"challenge": "<decrypted b64 string>",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
##### `RES:`
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"type": "identification_response",
|
|
||||||
"data": {
|
|
||||||
"accepted": boolean,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Push Notification
|
|
||||||
|
|
||||||
Sends a push notification to a user. The receiver ID can be specified either in the `receiver` field of the message or in the data payload.
|
|
||||||
|
|
||||||
##### `REQ:`
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"type": "push_notification",
|
|
||||||
"data": {
|
|
||||||
"receiver_id": "<user-id>", // Optional, if not in receiver field
|
|
||||||
"sender_id": "<user-id>"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,126 @@
|
||||||
---
|
---
|
||||||
title: HTTPS Endpoints
|
title: HTTPS Endpoints
|
||||||
|
lastUpdated: 2026-08-14
|
||||||
---
|
---
|
||||||
#### GET `/api/get/omikron/`
|
|
||||||
Get an Omikron to connect to.
|
|
||||||
#### GET `/api/get/omikron/<omikron-id>`
|
|
||||||
Get an Omikron to connect to, when needing a certain omikron.
|
|
||||||
|
|
||||||
#### GET `/api/get/omikron/<user-id>`
|
`Omega` exposes discovery and profile data over HTTPS. All identifiers in the
|
||||||
Get an Omikron to connect to, when needing the Omikron a certain User / a certains user's Iota is connected to.
|
routes below are positive decimal integers.
|
||||||
#### GET `/api/get/omikron/<iota-id>`
|
|
||||||
Get an Omikron to connect to, when needing the Omikron a certain Iota is connected to.
|
#### GET `/api/get/omikron`
|
||||||
|
|
||||||
|
Returns a randomly selected connected `Omikron`.
|
||||||
|
|
||||||
|
##### `RES:`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"type": "omikron",
|
"status": "success",
|
||||||
"data": {
|
"id": "<omikron-id>",
|
||||||
"omikron_id": id,
|
"public_key": "<base64>",
|
||||||
"domain": "omikron.tensamin.net"
|
"ip_address": "<ip-address>",
|
||||||
}
|
"port": "<port>"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET `/api/get/omikron/<id>`
|
||||||
|
|
||||||
|
Returns a connected `Omikron` by ID. If `<id>` identifies a connected `Iota`
|
||||||
|
or a user with an assigned `Iota`, the response identifies that account's
|
||||||
|
primary connected `Omikron`.
|
||||||
|
|
||||||
|
##### `RES:`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"status": "success",
|
||||||
|
"id": "<omikron-id>",
|
||||||
|
"public_key": "<base64>",
|
||||||
|
"ip_address": "<ip-address>",
|
||||||
|
"port": "<port>"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET `/api/get/connections`
|
||||||
|
|
||||||
|
Returns the live in-memory map of `Omikron` IDs to their connected `Iota` IDs
|
||||||
|
and hosted user IDs. The map is empty after an Omega restart until connected
|
||||||
|
`Omikron` instances publish their state.
|
||||||
|
|
||||||
|
##### `RES:`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"status": "success",
|
||||||
|
"<omikron-id>": {
|
||||||
|
"<iota-id>": ["<user-id>", "..."]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET `/api/get/iota/<id>`
|
||||||
|
|
||||||
|
Returns the public identity data for an `Iota`.
|
||||||
|
|
||||||
|
##### `RES:`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"status": "success",
|
||||||
|
"iota_id": "<iota-id>",
|
||||||
|
"public_key": "<base64>"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET `/api/get/user/<id>`
|
||||||
|
|
||||||
|
Returns a user's profile and assigned `Iota` ID.
|
||||||
|
|
||||||
|
##### `RES:`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"status": "success",
|
||||||
|
"username": "<username>",
|
||||||
|
"public_key": "<base64>",
|
||||||
|
"user_id": "<user-id>",
|
||||||
|
"iota_id": "<iota-id>?",
|
||||||
|
"sub_level": "<integer>",
|
||||||
|
"sub_end": "<unix-milliseconds>",
|
||||||
|
"display": "<string>?",
|
||||||
|
"status_message": "<string>?",
|
||||||
|
"about": "<string>?",
|
||||||
|
"avatar": "<base64>?"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET `/api/get/id/<username>`
|
||||||
|
|
||||||
|
Resolves a username to its public profile and identity IDs. The username is
|
||||||
|
limited to 15 characters after URL decoding.
|
||||||
|
|
||||||
|
##### `RES:`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"status": "success",
|
||||||
|
"username": "<username>",
|
||||||
|
"public_key": "<base64>",
|
||||||
|
"user_id": "<user-id>",
|
||||||
|
"iota_id": "<iota-id>?",
|
||||||
|
"sub_level": "<integer>",
|
||||||
|
"sub_end": "<unix-milliseconds>"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### GET `/api/get/public_key`
|
||||||
|
|
||||||
|
Returns Omega's public MTP key bundle in base64 form.
|
||||||
|
|
||||||
|
##### `RES:`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"status": "success",
|
||||||
|
"public_key": "<base64>"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
@ -1,252 +1,147 @@
|
||||||
---
|
---
|
||||||
title: Endpoints
|
title: Endpoints
|
||||||
|
lastUpdated: 2026-08-14
|
||||||
---
|
---
|
||||||
|
|
||||||
To use the `Omikrons` functions a Secure Websocket connection must be established.
|
Omikron exposes an MTP WebTransport endpoint through its HTTPS listener. It
|
||||||
Where to connect is provided by the `Omega` Server.
|
does not expose the previous JSON-over-WebSocket challenge protocol. Native
|
||||||
All entries are split into `Iota` & `Client`.
|
and browser clients use the MTP client APIs described in the repository's
|
||||||
As the `Omikron` connects the `Iota` and `Client` by passing messages from one to the other all Communication from `Iota` to `Client` has to contain a `receiver_id`
|
`mtp-docs` guides.
|
||||||
The `Omikron` will add a `sender_id` to Messages from `Client` to the `Iota`.
|
|
||||||
|
|
||||||
The `receiver_id` and `sender_id` of the `Omikron` server are `22222222-2222-2222-2222-222222222222`.
|
Omikron and its peers use the MTP `0.3.0` implementation and the wire protocol
|
||||||
|
version `3.0`. The MTP opening exchange negotiates the version and completes
|
||||||
|
transport authentication before Omikron dispatches application frames.
|
||||||
|
|
||||||
## Messages
|
## Connection identities
|
||||||
|
|
||||||
### Message mutation forwarding
|
The MTP connection description selects the Omikron connection class:
|
||||||
|
|
||||||
`Omikron` forwards `MessageEditLive`, `MessageReactionLive`, and `MessageDeleteLive` by their MTP receiver. The sender Iota persists the authenticated request before forwarding it. The recipient Iota persists the live update before Omikron sends it to the recipient client.
|
| Description | Authentication | Connection | Relay access |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| `client` | Registered MTP authentication | User client | Yes |
|
||||||
|
| `iota` | Registered MTP authentication | Iota node | Yes |
|
||||||
|
| `anonymous` | Unauthenticated | Temporary anonymous client | No |
|
||||||
|
|
||||||
The request types `MessageEdit`, `MessageReactionAdd`, and `MessageReactionRemove` stay on the sender Iota. `MessageDeleteLive` is both the delete request and the live update; the authenticated connection direction distinguishes the request from a forwarded update.
|
The `client` ID is the authenticated user ID. The `iota` ID is the
|
||||||
|
authenticated Iota ID. A connection with an unknown description is rejected by
|
||||||
|
the application dispatcher. MTP challenge and proof frames are transport
|
||||||
|
messages, not application endpoints.
|
||||||
|
|
||||||
> See also: `components/iota/endpoints.md` for message mutation payloads.
|
## MTP frame shape
|
||||||
|
|
||||||
## Identification
|
MTP sends binary `CommunicationValue` frames. The following is a logical shape
|
||||||
|
for documentation; it is not a JSON wire format.
|
||||||
|
|
||||||
Any message to the `Omikron` will be ignored until Identification.
|
```text
|
||||||
|
CommunicationValue {
|
||||||
### Iota
|
id: optional u32,
|
||||||
|
type: CommunicationType,
|
||||||
##### `REQ:`
|
sender: optional u64,
|
||||||
|
receiver: optional u64,
|
||||||
```json
|
payload: DataValue,
|
||||||
{
|
|
||||||
"type": "identification",
|
|
||||||
"data": {
|
|
||||||
"iota_id": "<iota-id>",
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
##### `REQ & RES:`
|
`Relay` is the reserved opaque communication type. A Relay has no outer
|
||||||
|
`sender`, its outer `receiver` is the next-hop ID, and its payload contains
|
||||||
|
protected relay metadata and content. Omikron reads only the clear routing
|
||||||
|
fields. It never opens relay metadata or content, resolves the original
|
||||||
|
signer, or changes the sealed payload.
|
||||||
|
|
||||||
```json
|
Tensamin user IDs and Iota IDs currently share the same numeric range. An
|
||||||
{
|
Iota-origin Relay whose receiver matches both a local Client identity and a
|
||||||
"type": "challenge",
|
local Iota identity is rejected as ambiguous; Omikron never chooses a route
|
||||||
"data": {
|
from a colliding numeric ID.
|
||||||
"public_key": "<omikrons public key>",
|
|
||||||
"challenge": "<random encrypted b64 string>"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
##### `REQ & RES:`
|
|
||||||
|
|
||||||
```json
|
## Relay
|
||||||
{
|
|
||||||
"type": "challenge_response",
|
|
||||||
"data": {
|
|
||||||
"challenge": "<decrypted b64 string>",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
##### `RES:`
|
|
||||||
|
|
||||||
```json
|
### Client to Iota
|
||||||
{
|
|
||||||
"type": "identification_response",
|
A registered Client may send a Relay only to the Iota currently associated
|
||||||
"data": {
|
with that Client.
|
||||||
"accepted": boolean,
|
|
||||||
}
|
```text
|
||||||
|
Relay {
|
||||||
|
id: request or correlation ID,
|
||||||
|
sender: absent,
|
||||||
|
receiver: associated Iota ID,
|
||||||
|
payload: opaque sealed relay,
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
Omikron validates the Relay layout with MTP's `forward_relay_frame` and sends
|
||||||
|
the unchanged frame to the local Iota connection. A Client cannot address an
|
||||||
|
arbitrary Iota or Omikron through this path.
|
||||||
|
|
||||||
### Client
|
### Iota routing
|
||||||
|
|
||||||
This is a two step process.
|
An Iota may send a Relay to a locally connected Client, another locally
|
||||||
|
connected Iota, or Omega. Omikron chooses the destination from the clear outer
|
||||||
|
receiver and the authenticated connection that supplied the frame.
|
||||||
|
|
||||||
Get a challenge:
|
| Source connection | Destination | Omikron action |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Client | Its associated Iota | Send to that local Iota |
|
||||||
|
| Iota | Local Client | Send to matching client sessions |
|
||||||
|
| Iota | Local Iota | Send to that Iota |
|
||||||
|
| Iota | Remote Iota | Send to Omega |
|
||||||
|
| Omega | Local Iota | Send to that Iota |
|
||||||
|
| Anonymous client | Any destination | Reject |
|
||||||
|
|
||||||
#### `REQ:`
|
Omega sends a Relay to one destination Omikron. Omikron accepts it only when
|
||||||
|
the destination Iota is connected locally. It never sends an unavailable
|
||||||
|
Omega Relay back to Omega or broadcasts it to other Omikrons.
|
||||||
|
|
||||||
```json
|
### Validation and errors
|
||||||
{
|
|
||||||
"id": "<uuid>",
|
|
||||||
"type": "identification",
|
|
||||||
"data": {
|
|
||||||
"user_id": "<user-id>"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### `RES:`
|
Omikron rejects a Relay when:
|
||||||
|
|
||||||
```json
|
- the communication type is not the reserved `Relay` type;
|
||||||
{
|
- an outer sender is present;
|
||||||
"id": "<uuid>",
|
- the next-hop receiver is missing;
|
||||||
"type": "challenge",
|
- a Client addresses an Iota other than its associated Iota;
|
||||||
"data": {
|
- an Iota routes to itself;
|
||||||
"challenge": "<base64 string>",
|
- the destination Iota or Client is unavailable; or
|
||||||
"public_key": "<base64 string>"
|
- the frame cannot be sent on the selected connection.
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Send back the solved challenge:
|
Routing failures are ordinary service error frames sent to the authenticated
|
||||||
|
source connection. The failure frame is not a Relay and does not claim to be
|
||||||
|
from the original user. Unknown non-Relay application messages are rejected;
|
||||||
|
Omikron does not use generic fallthrough forwarding.
|
||||||
|
|
||||||
#### `REQ:`
|
## Application messages
|
||||||
|
|
||||||
```json
|
Direct control messages remain available after MTP authentication. Examples
|
||||||
{
|
include `GetUserData`, `GetIotaData`, `ChangeUserData`, `ClientChanged`, and
|
||||||
"id": "<uuid>",
|
registration control messages. These messages use the negotiated MTP type map
|
||||||
"type": "challenge_response",
|
and may use the existing control-plane sender semantics.
|
||||||
"data": {
|
|
||||||
"challenge": "<decrypted challenge>"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### `RES:`
|
`MessageGet`, `MessagesGet`, and `GetChatSecret` are authenticated peer-control
|
||||||
|
messages. A Client sends them to its associated Iota through Omikron. Omikron
|
||||||
|
adds the authenticated client ID as the outer sender for the Iota request,
|
||||||
|
waits for the correlated response, and returns that response to the Client.
|
||||||
|
It does not read or store message contents.
|
||||||
|
|
||||||
```json
|
Those semantics do not apply to `Relay`. Omikron never adds a user or Iota ID
|
||||||
{
|
to a Relay and never uses the outer sender as the original message identity.
|
||||||
"id": "<uuid>",
|
|
||||||
"type": "identification_response",
|
|
||||||
"data": {}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Ping & Pong
|
Message delivery, edits, reactions, deletion, chat secrets, and other
|
||||||
|
application operations travel inside the sealed Relay. The recipient Iota
|
||||||
|
opens and verifies the Relay, checks the original signer against its trusted
|
||||||
|
public-key history, applies the operation, and persists or forwards the sealed
|
||||||
|
Relay when required.
|
||||||
|
|
||||||
A ping request comes from the Client or Iota and the Omikron returns a pong answer.
|
## Keepalive
|
||||||
The ping request should contain the last Client or Iota ping and the pong answer will contain the last ping of the Omikron.****
|
|
||||||
|
|
||||||
### Iota
|
MTP handles protocol Ping and Pong frames through the connection dispatcher.
|
||||||
|
Application handlers must not treat keepalive frames as Relay traffic. See the
|
||||||
|
repository's `mtp-docs/CONNECTIONS.md` and `mtp-docs/PROTOCOL-REFERENCE.md`
|
||||||
|
files.
|
||||||
|
|
||||||
#### REQ:
|
## Related API documentation
|
||||||
|
|
||||||
```json
|
- [Calling](./calling)
|
||||||
{
|
- [User management](./user-management)
|
||||||
"id": "<uuid>",
|
- `mtp-docs/CONNECTOR.md`
|
||||||
"type": "ping",
|
- `mtp-docs/NATIVE-CLIENT.md`
|
||||||
"data": {
|
- `mtp-docs/NATIVE-HOST-WEB-SERVER.md`
|
||||||
"last_ping": long
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### RES:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"id": "<uuid>",
|
|
||||||
"type": "pong",
|
|
||||||
"data": {
|
|
||||||
"user_ping": {
|
|
||||||
"<user-id>": long,
|
|
||||||
"<user-id>": long
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Client
|
|
||||||
|
|
||||||
#### `REQ:`
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"id": "<uuid>",
|
|
||||||
"type": "ping",
|
|
||||||
"data": {
|
|
||||||
"last_ping": long
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### `RES:`
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"id": "<uuid>",
|
|
||||||
"type": "pong",
|
|
||||||
"data": {
|
|
||||||
"last_ping": long
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## User Online Status
|
|
||||||
|
|
||||||
### Set Client Status
|
|
||||||
|
|
||||||
The client can change their online status by sending a `client_changed` message.
|
|
||||||
Supported status values: `user_online`, `user_offline`, `user_dnd`, `user_idle`, `user_wc`, `user_invisible`.
|
|
||||||
|
|
||||||
When `user_invisible` is set, the user remains connected and can send/receive messages, but appears as `user_offline` to all other users.
|
|
||||||
|
|
||||||
#### `REQ` (Client → Omikron):
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"id": "<uuid>",
|
|
||||||
"type": "client_changed",
|
|
||||||
"data": {
|
|
||||||
"user_state": "<status>"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Online Status Notifications
|
|
||||||
|
|
||||||
When a connected user changes their status, interested clients receive a notification:
|
|
||||||
|
|
||||||
#### `EVENT` (Omikron → Client):
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"type": "client_changed",
|
|
||||||
"data": {
|
|
||||||
"user_id": "<user-id>",
|
|
||||||
"user_state": "<status>"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Online Status in User Data
|
|
||||||
|
|
||||||
When fetching another user's profile via `get_user_data`, their online status is included in the response. Invisible users are reported as `user_offline`.
|
|
||||||
|
|
||||||
#### `RES` (Omikron → Client, field in `get_user_data`):
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"id": "<uuid>",
|
|
||||||
"type": "get_user_data",
|
|
||||||
"data": {
|
|
||||||
"user_id": long,
|
|
||||||
"username": "<string>",
|
|
||||||
"display": "<string>",
|
|
||||||
"public_key": "<base64>",
|
|
||||||
"iota_id": long,
|
|
||||||
"online_status": "<status>",
|
|
||||||
"omikron_id": long,
|
|
||||||
"omikron_connections": [long, ...],
|
|
||||||
"sub_level": long,
|
|
||||||
"sub_end": long,
|
|
||||||
"about": "<string>?",
|
|
||||||
"avatar": "<base64>?",
|
|
||||||
"status": "<string>?"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue