diff --git a/assets/release-manifest.json b/assets/release-manifest.json new file mode 100644 index 0000000..571456c --- /dev/null +++ b/assets/release-manifest.json @@ -0,0 +1,677 @@ +{ + "manifestSchemaVersion": "1.0", + "artifactId": "aws-cloudformation-languageserver", + "artifactDescription": "AWS CloudFormation Language Server", + "isManifestDeprecated": false, + "alpha": [ + { + "serverVersion": "1.1.0-202511232358-alpha", + "latest": true, + "isDelisted": false, + "targets": [ + { + "platform": "darwin", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-alpha-darwin-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-202511232358-alpha/cloudformation-languageserver-1.1.0-alpha-darwin-arm64-node22.zip", + "hashes": [ + "sha256:da14be1d8da680689b02bf99d65b38fac346de73ab482da5a8f7de6642fd83ad" + ], + "bytes": 51820100 + } + ] + }, + { + "platform": "darwin", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-alpha-darwin-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-202511232358-alpha/cloudformation-languageserver-1.1.0-alpha-darwin-x64-node22.zip", + "hashes": [ + "sha256:8c374f80d6411fb7465ce2c19762e0befff6a4b76adf1a5a5969f1c6f314a5da" + ], + "bytes": 51973142 + } + ] + }, + { + "platform": "linux", + "arch": "arm64", + "nodejs": "18", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-alpha-glib2.28-linux-arm64-node18.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-202511232358-alpha/cloudformation-languageserver-1.1.0-alpha-glib2.28-linux-arm64-node18.zip", + "hashes": [ + "sha256:0017328caa53a05e95899242ace439658f9ee6ae243047abe50f242a86bb5825" + ], + "bytes": 55433284 + } + ] + }, + { + "platform": "linux", + "arch": "x64", + "nodejs": "18", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-alpha-glib2.28-linux-x64-node18.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-202511232358-alpha/cloudformation-languageserver-1.1.0-alpha-glib2.28-linux-x64-node18.zip", + "hashes": [ + "sha256:c9ed16992a5546339a54c2e2f6153d6fbbd38f7ddf04a280075b719f48e15925" + ], + "bytes": 55826519 + } + ] + }, + { + "platform": "linux", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-alpha-linux-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-202511232358-alpha/cloudformation-languageserver-1.1.0-alpha-linux-arm64-node22.zip", + "hashes": [ + "sha256:0c921d8b51b718a54e8c8355b8c372bfa1b6d8d20dc1211d17dc9434aeab34f5" + ], + "bytes": 56288020 + } + ] + }, + { + "platform": "linux", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-alpha-linux-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-202511232358-alpha/cloudformation-languageserver-1.1.0-alpha-linux-x64-node22.zip", + "hashes": [ + "sha256:ee1ded4ba8a84c501ad1a40b5f87480aa6f26bbcf216ab7dbdd586ee2ec4dacf" + ], + "bytes": 56559500 + } + ] + }, + { + "platform": "win32", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-alpha-win32-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-202511232358-alpha/cloudformation-languageserver-1.1.0-alpha-win32-arm64-node22.zip", + "hashes": [ + "sha256:ccf2e854afe78311894ed24b71208a5f30a8c8da71a94cfa9ef40a76f190361c" + ], + "bytes": 51583966 + } + ] + }, + { + "platform": "windows", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-alpha-win32-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-202511232358-alpha/cloudformation-languageserver-1.1.0-alpha-win32-arm64-node22.zip", + "hashes": [ + "sha256:ccf2e854afe78311894ed24b71208a5f30a8c8da71a94cfa9ef40a76f190361c" + ], + "bytes": 51583966 + } + ] + }, + { + "platform": "win32", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-alpha-win32-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-202511232358-alpha/cloudformation-languageserver-1.1.0-alpha-win32-x64-node22.zip", + "hashes": [ + "sha256:ad212493b2a346333f9b0f79596cedf5421a8cd760e12d7a4d11bbea4a99fb2f" + ], + "bytes": 51999846 + } + ] + }, + { + "platform": "windows", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-alpha-win32-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-202511232358-alpha/cloudformation-languageserver-1.1.0-alpha-win32-x64-node22.zip", + "hashes": [ + "sha256:ad212493b2a346333f9b0f79596cedf5421a8cd760e12d7a4d11bbea4a99fb2f" + ], + "bytes": 51999846 + } + ] + } + ] + } + ], + "beta": [ + { + "serverVersion": "1.1.0-beta", + "latest": true, + "isDelisted": false, + "targets": [ + { + "platform": "darwin", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-beta-darwin-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-beta/cloudformation-languageserver-1.1.0-beta-darwin-arm64-node22.zip", + "hashes": [ + "sha256:3dd70ea16a9d97f98fa388c485b731f0a3754a5fa73f4591d3c08b0a2f3a0261" + ], + "bytes": 51821316 + } + ] + }, + { + "platform": "darwin", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-beta-darwin-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-beta/cloudformation-languageserver-1.1.0-beta-darwin-x64-node22.zip", + "hashes": [ + "sha256:3711d54224d9a38d4abc5ef68f53663f77298f9cad9f1fe8b6905982d0b84e58" + ], + "bytes": 51974361 + } + ] + }, + { + "platform": "linux", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-beta-linux-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-beta/cloudformation-languageserver-1.1.0-beta-linux-arm64-node22.zip", + "hashes": [ + "sha256:e5baa5c99fef5be6398a9f5c3fd5c4337ce4aa3e27e051bb05954e0a8e132db9" + ], + "bytes": 56287796 + } + ] + }, + { + "platform": "linux", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-beta-linux-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-beta/cloudformation-languageserver-1.1.0-beta-linux-x64-node22.zip", + "hashes": [ + "sha256:98fc860e0c96e664eb6a6bfaa67a6c33e78af9c5ec58c070fab6cc316ad7a98e" + ], + "bytes": 56560708 + } + ] + }, + { + "platform": "win32", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-beta-win32-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-beta/cloudformation-languageserver-1.1.0-beta-win32-arm64-node22.zip", + "hashes": [ + "sha256:cca29442fe4b87c595d01887af40c1497a8b96aee40ea92489ce90793c743015" + ], + "bytes": 51584645 + } + ] + }, + { + "platform": "windows", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-beta-win32-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-beta/cloudformation-languageserver-1.1.0-beta-win32-arm64-node22.zip", + "hashes": [ + "sha256:cca29442fe4b87c595d01887af40c1497a8b96aee40ea92489ce90793c743015" + ], + "bytes": 51584645 + } + ] + }, + { + "platform": "win32", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-beta-win32-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-beta/cloudformation-languageserver-1.1.0-beta-win32-x64-node22.zip", + "hashes": [ + "sha256:8aadefff9152d83355d61911d34c1312a18589128aae033f0a6f90b7d8fe3a04" + ], + "bytes": 52000954 + } + ] + }, + { + "platform": "windows", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-beta-win32-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0-beta/cloudformation-languageserver-1.1.0-beta-win32-x64-node22.zip", + "hashes": [ + "sha256:8aadefff9152d83355d61911d34c1312a18589128aae033f0a6f90b7d8fe3a04" + ], + "bytes": 52000954 + } + ] + } + ] + }, + { + "serverVersion": "1.0.0-beta", + "latest": false, + "isDelisted": false, + "targets": [ + { + "platform": "darwin", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-beta-darwin-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0-beta/cloudformation-languageserver-1.0.0-beta-darwin-arm64-node22.zip", + "hashes": [ + "sha256:16b64c145f0295892bb4bffda684a6df56897159beb648981dd7e862617f3f76" + ], + "bytes": 51819914 + } + ] + }, + { + "platform": "darwin", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-beta-darwin-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0-beta/cloudformation-languageserver-1.0.0-beta-darwin-x64-node22.zip", + "hashes": [ + "sha256:2d9e0a550368aa89fea477013031a0246c333ea83bcfc4650576bce08217e011" + ], + "bytes": 51999697 + } + ] + }, + { + "platform": "linux", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-beta-linux-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0-beta/cloudformation-languageserver-1.0.0-beta-linux-arm64-node22.zip", + "hashes": [ + "sha256:3f53b27e3ab5db74d3d8a5e633494b7318ce2d0a4c4273ae821a03a096537e01" + ], + "bytes": 56286396 + } + ] + }, + { + "platform": "linux", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-beta-linux-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0-beta/cloudformation-languageserver-1.0.0-beta-linux-x64-node22.zip", + "hashes": [ + "sha256:8ac87f951864972e4f87fcf4b834c2a37551a17fcc5fdc982baf1a3fa6339990" + ], + "bytes": 56559308 + } + ] + }, + { + "platform": "win32", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-beta-win32-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0-beta/cloudformation-languageserver-1.0.0-beta-win32-arm64-node22.zip", + "hashes": [ + "sha256:89fd0c669ee022699579923f411b2e4ffff46a7bcd261c09d8ad38b156c52170" + ], + "bytes": 51583669 + } + ] + }, + { + "platform": "windows", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-beta-win32-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0-beta/cloudformation-languageserver-1.0.0-beta-win32-arm64-node22.zip", + "hashes": [ + "sha256:89fd0c669ee022699579923f411b2e4ffff46a7bcd261c09d8ad38b156c52170" + ], + "bytes": 51583669 + } + ] + }, + { + "platform": "win32", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-beta-win32-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0-beta/cloudformation-languageserver-1.0.0-beta-win32-x64-node22.zip", + "hashes": [ + "sha256:385bddf99dffde99831a7e95fd042f409d9b22944e713e2142ff061ba8c969e2" + ], + "bytes": 51999550 + } + ] + }, + { + "platform": "windows", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-beta-win32-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0-beta/cloudformation-languageserver-1.0.0-beta-win32-x64-node22.zip", + "hashes": [ + "sha256:385bddf99dffde99831a7e95fd042f409d9b22944e713e2142ff061ba8c969e2" + ], + "bytes": 51999550 + } + ] + } + ] + } + ], + "prod": [ + { + "serverVersion": "1.1.0", + "latest": true, + "isDelisted": false, + "targets": [ + { + "platform": "darwin", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-darwin-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0/cloudformation-languageserver-1.1.0-darwin-arm64-node22.zip", + "hashes": [ + "sha256:e9cb04f54e38b4327b0d7182e396bd341a059915070263e73f0004855f11fc77" + ], + "bytes": 51821313 + } + ] + }, + { + "platform": "darwin", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-darwin-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0/cloudformation-languageserver-1.1.0-darwin-x64-node22.zip", + "hashes": [ + "sha256:cec23a958e739e20e53149699eef98874bc7afe781befa0cc16aab61b4868900" + ], + "bytes": 51974358 + } + ] + }, + { + "platform": "linux", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-linux-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0/cloudformation-languageserver-1.1.0-linux-arm64-node22.zip", + "hashes": [ + "sha256:5a0c0d5f843cb2e72434514e2b230327c31b2c8d22f5a9e44e431e617160a8b9" + ], + "bytes": 56287793 + } + ] + }, + { + "platform": "linux", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-linux-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0/cloudformation-languageserver-1.1.0-linux-x64-node22.zip", + "hashes": [ + "sha256:72cc09297a842e238c8c9d51ae754399ea5cc6cfa86aee3264ab1c027495dcfb" + ], + "bytes": 56560705 + } + ] + }, + { + "platform": "win32", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-win32-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0/cloudformation-languageserver-1.1.0-win32-arm64-node22.zip", + "hashes": [ + "sha256:68f35c37e940e7b3fbb99c1037cc9e5cdf6b33de4036ec7610774eec7ce2abdc" + ], + "bytes": 51584642 + } + ] + }, + { + "platform": "windows", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-win32-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0/cloudformation-languageserver-1.1.0-win32-arm64-node22.zip", + "hashes": [ + "sha256:68f35c37e940e7b3fbb99c1037cc9e5cdf6b33de4036ec7610774eec7ce2abdc" + ], + "bytes": 51584642 + } + ] + }, + { + "platform": "win32", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-win32-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0/cloudformation-languageserver-1.1.0-win32-x64-node22.zip", + "hashes": [ + "sha256:f1405977e37c066677d3f534b0f320b0cf0908c5c5be492e6523ff931870ebdb" + ], + "bytes": 52000951 + } + ] + }, + { + "platform": "windows", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.1.0-win32-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.1.0/cloudformation-languageserver-1.1.0-win32-x64-node22.zip", + "hashes": [ + "sha256:f1405977e37c066677d3f534b0f320b0cf0908c5c5be492e6523ff931870ebdb" + ], + "bytes": 52000951 + } + ] + } + ] + }, + { + "serverVersion": "1.0.0", + "latest": false, + "isDelisted": false, + "targets": [ + { + "platform": "darwin", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-darwin-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0/cloudformation-languageserver-1.0.0-darwin-arm64-node22.zip", + "hashes": [ + "sha256:2a710ca8bfb62a6b82aa80caccebb018ffc4a3a8a412b703f7a0b15730eb1fbf" + ], + "bytes": 51819911 + } + ] + }, + { + "platform": "darwin", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-darwin-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0/cloudformation-languageserver-1.0.0-darwin-x64-node22.zip", + "hashes": [ + "sha256:4a4878c61e4af7c0df3a58862a17a9b797e5191b1bbc26f708608f5c58caa745" + ], + "bytes": 51999694 + } + ] + }, + { + "platform": "linux", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-linux-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0/cloudformation-languageserver-1.0.0-linux-arm64-node22.zip", + "hashes": [ + "sha256:1893e4047df3d8bfe43939bdbd8c1fb0fe554d52b2165ca5e8da0c77dbf52816" + ], + "bytes": 56286393 + } + ] + }, + { + "platform": "linux", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-linux-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0/cloudformation-languageserver-1.0.0-linux-x64-node22.zip", + "hashes": [ + "sha256:556f480111af1da11c3fca33756df656053553b31c41decae739bf655edb71c2" + ], + "bytes": 56559305 + } + ] + }, + { + "platform": "win32", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-win32-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0/cloudformation-languageserver-1.0.0-win32-arm64-node22.zip", + "hashes": [ + "sha256:29157fd36e3815a5d34f1d73a61a29d58db0c9680a248ca269b2ea1dbd8affbc" + ], + "bytes": 51583667 + } + ] + }, + { + "platform": "windows", + "arch": "arm64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-win32-arm64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0/cloudformation-languageserver-1.0.0-win32-arm64-node22.zip", + "hashes": [ + "sha256:29157fd36e3815a5d34f1d73a61a29d58db0c9680a248ca269b2ea1dbd8affbc" + ], + "bytes": 51583667 + } + ] + }, + { + "platform": "win32", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-win32-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0/cloudformation-languageserver-1.0.0-win32-x64-node22.zip", + "hashes": [ + "sha256:dd5659e11458447a01844d2143b851a5c650478eef7d17c0ff050ee2725f4bc3" + ], + "bytes": 51999548 + } + ] + }, + { + "platform": "windows", + "arch": "x64", + "nodejs": "22", + "contents": [ + { + "filename": "cloudformation-languageserver-1.0.0-win32-x64-node22.zip", + "url": "https://github.com/aws-cloudformation/cloudformation-languageserver/releases/download/v1.0.0/cloudformation-languageserver-1.0.0-win32-x64-node22.zip", + "hashes": [ + "sha256:dd5659e11458447a01844d2143b851a5c650478eef7d17c0ff050ee2725f4bc3" + ], + "bytes": 51999548 + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4566bd9..ff46f87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,6 +67,7 @@ "@types/archiver": "7.0.0", "@types/js-yaml": "4.0.9", "@types/luxon": "3.7.1", + "@types/semver": "7.7.1", "@types/yargs": "17.0.33", "@types/yauzl": "2.10.3", "@vitest/coverage-v8": "3.2.4", @@ -87,6 +88,7 @@ "node-loader": "2.1.0", "prettier": "3.6.2", "process": "0.11.10", + "semver": "7.7.3", "ts-loader": "9.5.4", "ts-node": "10.9.2", "ts-sinon": "2.0.2", @@ -7777,6 +7779,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/sinon": { "version": "17.0.4", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", @@ -15403,9 +15412,9 @@ "license": "BSD-3-Clause" }, "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" diff --git a/package.json b/package.json index 2ef02b6..c546cfc 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "bundle:prod": "rm -rf out && webpack --env mode=production --env env=prod", "download-wheels": "tsx tools/download-wheels.ts", "build-cfn-guard": "tsx tools/build-cfn-guard.ts", + "generate-release-manifest": "tsx tools/generate-release-manifest.ts", "benchmark": "cross-env NODE_ENV=test AWS_ENV=alpha node --max-old-space-size=16384 --expose-gc -r ts-node/register tools/benchmark.ts", "generate-metrics": "cross-env NODE_ENV=development AWS_ENV=alpha node --max-old-space-size=16384 -r ts-node/register tools/telemetry-generator.ts", "debug-tree": "node -r ts-node/register tools/debug_tree.ts", @@ -104,6 +105,7 @@ "@types/archiver": "7.0.0", "@types/js-yaml": "4.0.9", "@types/luxon": "3.7.1", + "@types/semver": "7.7.1", "@types/yargs": "17.0.33", "@types/yauzl": "2.10.3", "@vitest/coverage-v8": "3.2.4", @@ -124,6 +126,7 @@ "node-loader": "2.1.0", "prettier": "3.6.2", "process": "0.11.10", + "semver": "7.7.3", "ts-loader": "9.5.4", "ts-node": "10.9.2", "ts-sinon": "2.0.2", diff --git a/tools/generate-release-manifest.ts b/tools/generate-release-manifest.ts new file mode 100644 index 0000000..a715f4c --- /dev/null +++ b/tools/generate-release-manifest.ts @@ -0,0 +1,152 @@ +#!/usr/bin/env node +import { execSync } from 'child_process'; +import { writeFileSync } from 'fs'; +import { rcompare } from 'semver'; + +type GHRelease = { + tag_name: string; + assets: { + name: string; + url: string; + size: number; + digest?: string; + }[]; +}; + +type TargetContent = { + filename: string; + url: string; + hashes: string[]; + bytes: number; +}; + +type Target = { + platform: string; + arch: string; + nodejs?: string; + contents: TargetContent[]; +}; + +type Version = { + serverVersion: string; + latest: boolean; + isDelisted: boolean; + targets: Target[]; +}; + +const ENVIRONMENTS = ['alpha', 'beta', 'prod']; +const RELEASES_PER_ENV = 2; + +function getEnvFromTag(tag: string): string { + for (const env of ENVIRONMENTS) { + if (tag.includes(`-${env}`)) return env; + } + return 'prod'; +} + +function fetchReleases(): GHRelease[] { + const output = execSync( + 'gh release list --repo aws-cloudformation/cloudformation-languageserver --limit 100 --json tagName', + { encoding: 'utf8' }, + ); + const releases = JSON.parse(output); + + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return releases.map((r: any): GHRelease => { + const assetsOutput = execSync( + `gh api repos/aws-cloudformation/cloudformation-languageserver/releases/tags/${r.tagName}`, + { encoding: 'utf8' }, + ); + const assetsData = JSON.parse(assetsOutput); + + return { + tag_name: r.tagName, + assets: assetsData.assets.map((a: any) => ({ + name: a.name, + url: a.browser_download_url, + size: a.size, + digest: a.digest, + })), + }; + }); +} + +function parseTarget(filename: string): { platform: string; arch: string; nodejs?: string } | null { + // eslint-disable-next-line security/detect-unsafe-regex + const match = filename.match(/(darwin|linux|win32)-(x64|arm64)(?:-node(\d+))?/); + return match ? { platform: match[1], arch: match[2], nodejs: match[3] } : null; +} + +function generateManifest() { + const releases = fetchReleases(); + const envReleases: Record = {}; + + for (const release of releases) { + const env = getEnvFromTag(release.tag_name); + if (env) { + envReleases[env] = envReleases[env] || []; + envReleases[env].push(release); + } + } + + for (const env of ENVIRONMENTS) { + if (envReleases[env]) { + envReleases[env].sort((a, b) => rcompare(a.tag_name, b.tag_name)); + } + } + + const manifest: Record = { + manifestSchemaVersion: '1.0', + artifactId: 'aws-cloudformation-languageserver', + artifactDescription: 'AWS CloudFormation Language Server', + isManifestDeprecated: false, + }; + + for (const env of ENVIRONMENTS) { + const envVersions = envReleases[env]?.slice(0, RELEASES_PER_ENV) || []; + const versions: Version[] = []; + + for (const [i, release] of envVersions.entries()) { + const targets: Target[] = []; + const targetMap = new Map(); + + for (const asset of release.assets) { + const target = parseTarget(asset.name); + if (!target) continue; + + const key = `${target.platform}-${target.arch}-${target.nodejs ?? 'unknown'}`; + if (!targetMap.has(key)) { + targetMap.set(key, { ...target, contents: [] }); + } + + targetMap.get(key)!.contents.push({ + filename: asset.name, + url: asset.url, + hashes: asset.digest ? [asset.digest] : [], + bytes: asset.size, + }); + } + + for (const target of targetMap.values()) { + targets.push(target); + if (target.platform === 'win32') { + targets.push({ ...target, platform: 'windows' }); + } + } + + versions.push({ + serverVersion: release.tag_name.replace('v', ''), + latest: i === 0, + isDelisted: false, + targets, + }); + } + + manifest[env] = versions; + } + + writeFileSync('assets/release-manifest.json', JSON.stringify(manifest, null, 2)); + console.log('Manifest generated: assets/release-manifest.json'); +} + +generateManifest(); diff --git a/tst/unit/tools/GenerateReleaseManifest.test.ts b/tst/unit/tools/GenerateReleaseManifest.test.ts new file mode 100644 index 0000000..10e61a3 --- /dev/null +++ b/tst/unit/tools/GenerateReleaseManifest.test.ts @@ -0,0 +1,32 @@ +import { rcompare } from 'semver'; +import { describe, it, expect } from 'vitest'; + +describe('Generate Release Manifest', () => { + describe('semver version sorting within environments', () => { + it('should sort timestamp-based alpha versions in descending order', () => { + const alphaVersions = [ + 'v1.1.0-202511232358-alpha', + 'v1.1.0-202511240000-alpha', + 'v1.1.0-202511220000-alpha', + ]; + const sorted = alphaVersions.sort((a, b) => rcompare(a, b)); + expect(sorted).toEqual([ + 'v1.1.0-202511240000-alpha', + 'v1.1.0-202511232358-alpha', + 'v1.1.0-202511220000-alpha', + ]); + }); + + it('should sort beta versions in descending order', () => { + const betaVersions = ['v1.0.0-beta', 'v1.2.0-beta', 'v1.1.0-beta']; + const sorted = betaVersions.sort((a, b) => rcompare(a, b)); + expect(sorted).toEqual(['v1.2.0-beta', 'v1.1.0-beta', 'v1.0.0-beta']); + }); + + it('should sort prod versions in descending order', () => { + const prodVersions = ['v1.0.0', 'v1.2.0', 'v1.1.0']; + const sorted = prodVersions.sort((a, b) => rcompare(a, b)); + expect(sorted).toEqual(['v1.2.0', 'v1.1.0', 'v1.0.0']); + }); + }); +});