diff --git a/package-lock.json b/package-lock.json index d13399e..686aea3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -322,9 +322,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", - "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -2334,12 +2334,12 @@ } }, "node_modules/@mui/material-nextjs": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@mui/material-nextjs/-/material-nextjs-7.1.1.tgz", - "integrity": "sha512-6/tjmViYMI7XIqDTqK+n4t5B07YfVDq72emdBy/o8FLHsV7u477Ro0Aago2MQu8FrBQWDvzvvRkynIb02GjDBQ==", + "version": "7.3.10", + "resolved": "https://registry.npmjs.org/@mui/material-nextjs/-/material-nextjs-7.3.10.tgz", + "integrity": "sha512-gJzAFPA3pPg2gg8QUTDEzcI1yLm8A2XLFxis8ejt3DlwCnEt6q1q91dtmeynwsu47XDiJl/l62PVuER6kgFzkA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.1" + "@babel/runtime": "^7.28.6" }, "engines": { "node": ">=14.0.0" @@ -2353,7 +2353,7 @@ "@emotion/react": "^11.11.4", "@emotion/server": "^11.11.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "next": "^13.0.0 || ^14.0.0 || ^15.0.0", + "next": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { @@ -3473,9 +3473,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz", + "integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==", "dev": true, "license": "MIT", "dependencies": { @@ -4458,9 +4458,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz", + "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/specification.md b/specification.md index 1bfcfe6..6a1dd7a 100644 --- a/specification.md +++ b/specification.md @@ -243,11 +243,12 @@ Package is a common wrapper for all Plugin, Project and Preset metadata which ha ### Package -| Field | Type | Description | Example | -| :------- | :------------------ | :------------------------------------------------------------------ | :-------------------------- | -| slug | string | Package slug | `"surge-synthesizer/surge"` | -| version | string | Package latest version using [Semantic Version](https://semver.org) | `"1.3.1"` | -| versions | \[version: string\] | Package versions Object containing all released versions. | `"versions": [ ... ]` | +| Field | Type | Description | Example | +| :-------- | :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------- | +| downloads | number | Optional. Rollup of every version's `downloads` - i.e. total downloads across all published versions of this package, all-time. Computed during registry build; omitted when zero. | `2502` | +| slug | string | Package slug | `"surge-synthesizer/surge"` | +| version | string | Package latest version using [Semantic Version](https://semver.org) | `"1.3.1"` | +| versions | \[version: string\] | Package versions Object containing all released versions. | `"versions": [ ... ]` | ## Plugin @@ -279,6 +280,7 @@ For example: | date | string | Plugin release datetime in Unix timestamp format in UTC timezone. | `"2024-03-02T00:00:00.000Z"` | | description | string | Plugin description | `"Hybrid synthesizer featuring many synthesis techniques, a great selection of filters, a flexible modulation engine, a smorgasbord of effects, and modern features like MPE and microtuning."` | | donate | string | Donation url | `"https://paypal.me/example"` | +| downloads | number | Optional. Rollup of this version's file download counts (sum of each file's `downloads`). Computed during registry build; omitted when zero. | `2413` | | files | array\ | Plugin files available | `{ "contains": ["vst3"], "sha256": "3af35f0212", "systems": ["mac"] "size": 94448096, "url": "https://a.com/b/file.zip" }` | | image | string | Image preview url (https). Allows users to preview the user interface of the plugin before downloading. Technically this could be any [image file format](https://caniuse.com/?search=image%20format), but we recommend `.jpg` as it is compressed and widely supported. Tips: Crop to plugin UI edges, avoid backgrounds, borders and/or drop-shadows. Can be any shape/dimension (square, rectangle) but limit size to around 1000px to optimize loading times for large lists of plugins. | `"https://myplugin.com/image.jpg"` | | license | License | Plugin license id | `"gpl-3.0"` | @@ -422,6 +424,7 @@ Same as a plugin metadata except for an additional field for plugin dependencies | date | string | Project datetime in Unix timestamp format in UTC timezone. | `"2024-08-02T05:32:40.394Z"` | | description | string | Project description | `"Song idea using synthesizers"` | | donate | string | Donation url | `"https://paypal.me/example"` | +| downloads | number | Optional. Rollup of this version's file download counts (sum of each file's `downloads`). Computed during registry build; omitted when zero. | `2413` | | files | array\ | Project files available | `{ "contains": ["als"], "sha256": "3af35f0212", "systems": ["mac"] "size": 94448096, "url": "https://a.com/b/file.zip" }` | | image | string | Image preview url (https). Allows users to preview the interface of the project before downloading. Technically this could be any [image file format](https://caniuse.com/?search=image%20format), but we recommend `.jpg` as it is compressed and widely supported. Tips: Crop to project UI edges, avoid backgrounds, borders and/or drop-shadows. Can be any shape/dimension (square, rectangle) but limit size to around 1000px to optimize loading times for large lists of projects. | `"https://myproject.com/image.jpg"` | | license | License | Project license id | `"gpl-3.0"` | @@ -538,6 +541,7 @@ Same as a plugin metadata except for an additional field for plugin dependencies | date | string | Preset datetime in Unix timestamp format in UTC timezone. | `"2024-03-02T00:00:00.000Z"` | | description | string | Preset description | `"Floating Rhodes sounds."` | | donate | string | Donation url | `"https://paypal.me/example"` | +| downloads | number | Optional. Rollup of this version's file download counts (sum of each file's `downloads`). Computed during registry build; omitted when zero. | `2413` | | files | array\ | Preset files available | `{ "contains": ["vstpreset"], "sha256": "3af35f0212", "systems": ["mac"] "size": 94448096, "url": "https://a.com/b/file.zip" }` | | image | string | Image preview url (https). Allows users to preview the user interface of the preset before downloading. Technically this could be any [image file format](https://caniuse.com/?search=image%20format), but we recommend `.jpg` as it is compressed and widely supported. Tips: Crop to plugin UI edges, avoid backgrounds, borders and/or drop-shadows. Can be any shape/dimension (square, rectangle) but limit size to around 1000px to optimize loading times for large lists of preset. Previews can be shared across versions or specific to a version. | `"https://open-audio-stack.github.io/open-audio-stack-registry/presets/jh/floating-rhodes/floating-rhodes.jpg"` | | license | License | Preset license id | `"gpl-3.0"` | @@ -624,7 +628,9 @@ GET /presets/{slug}/{version} | Field | Type | Description | Example | | :------------ | :----------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------- | | architectures | Architecture\[\] | System architectures supported by this binary file. | `[ "x32" , "x64" ]` | +| attested | boolean | Optional. Computed once at import time - `true` if this file has a GitHub Artifact Attestation linking it to the CI run/commit that built it (checked via the GitHub attestations API using this file's own url/sha256). Omitted rather than storing `false` when not attested - most developers won't have this configured yet. | `true` | | contains | array\ | Plugin/Project/Preset formats (see tables for list of possible values). | `["vst3"]` | +| downloads | number | Optional. Total download count for this exact file, sourced from the GitHub Releases API. Recomputed on every registry build (unlike `attested`, this changes continuously); omitted when zero or not yet fetched. | `549` | | sha256 | string | File checksum for security validation that the published file matches the downloaded file. | `"3af35f02121a3c7ad6375bfe9c29a382f5882fa443bbf4c2df347a255c0edf2a"` | | size | number | Total size of the file in bits. | `94448096` | | systems | System\[\] | Operating systems supported, optionally including min/max version check. | `[ { "min": 11.1, "max": 20.5, "type": "linux"} ]` |