@gjsify/distribution 0.0.0-stage → 0.63.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -2
- package/lib/esm/_virtual/_rolldown/runtime.js +1 -0
- package/lib/esm/index.js +1 -0
- package/lib/tsconfig.build.tsbuildinfo +1 -0
- package/lib/types/index.d.ts +27 -0
- package/package.json +62 -5
package/README.md
CHANGED
|
@@ -1,3 +1,34 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @gjsify/distribution
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Where this build is distributed, and what that allows. Pure TypeScript, identical on GJS, Node and
|
|
4
|
+
the browser. The decision record is [ADR 0113](../../../docs/adr/0113-distribution-channel-gates-donation-ui.md).
|
|
5
|
+
|
|
6
|
+
```ts
|
|
7
|
+
import { channel, donationsAllowed } from '@gjsify/distribution';
|
|
8
|
+
|
|
9
|
+
if (donationsAllowed()) aboutDialog.add_link(_('Support the project'), SUPPORT_URL);
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Channels
|
|
13
|
+
|
|
14
|
+
| `channel` | Meaning | `donationsAllowed()` |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| `flathub` | free, Flathub | yes |
|
|
17
|
+
| `web` | free download from the project's own site | yes |
|
|
18
|
+
| `microsoft-store` | sold or listed in the Microsoft Store | no |
|
|
19
|
+
| `apple-app-store` | sold or listed in the Apple App Store | no |
|
|
20
|
+
| `unknown` | no channel declared (a development build) | no |
|
|
21
|
+
|
|
22
|
+
Ask the capability, never compare the channel name: a new channel is one row in
|
|
23
|
+
`CHANNEL_CAPABILITIES`, and no app changes. `donationsAllowed()` is a policy answer, not legal advice.
|
|
24
|
+
|
|
25
|
+
## Setting the channel
|
|
26
|
+
|
|
27
|
+
At build time. `gjsify.ship.channel` in `package.json` is the project default;
|
|
28
|
+
`gjsify build --channel <id>` and `gjsify ship --channel <id>` override it. `gjsify ship --target
|
|
29
|
+
flatpak` implies `flathub` when nothing else says. The CLI turns it into the compile-time define
|
|
30
|
+
`__GJSIFY_CHANNEL__`, so a store build drops the donation code instead of hiding it at runtime.
|
|
31
|
+
The metainfo `<url type="donation">` follows the same channel.
|
|
32
|
+
|
|
33
|
+
An unset channel is `unknown` and shows no donation UI: a donation line in a store build can cost a
|
|
34
|
+
rejection, a missing one in a free build costs a link the maintainer notices.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.defineProperty,__name=(t,n)=>e(t,`name`,{value:n,configurable:!0});export{__name};
|
package/lib/esm/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./_virtual/_rolldown/runtime.js";const e={flathub:{donations:!0},web:{donations:!0},"microsoft-store":{donations:!1},"apple-app-store":{donations:!1},unknown:{donations:!1}},t=[`flathub`,`web`,`microsoft-store`,`apple-app-store`];function parseChannel(e){return typeof e==`string`&&t.includes(e)?e:void 0}function donationsAllowedFor(t){return e[t].donations}const n=(typeof __GJSIFY_CHANNEL__>`u`?void 0:parseChannel(__GJSIFY_CHANNEL__))??`unknown`;function donationsAllowed(){return donationsAllowedFor(n)}export{e as CHANNEL_CAPABILITIES,t as DECLARABLE_CHANNELS,n as channel,donationsAllowed,donationsAllowedFor,parseChannel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../../../node_modules/@gjsify/tsc/lib/lib.es5.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2016.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2023.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.dom.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.dom.iterable.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.dom.asynciterable.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.scripthost.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.core.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.generator.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.iterable.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.proxy.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.reflect.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.symbol.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2016.array.include.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2016.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.date.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.object.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.regexp.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.array.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.object.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.symbol.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.bigint.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.date.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.number.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.weakref.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.array.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.error.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.object.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.regexp.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2023.array.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2023.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2023.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.arraybuffer.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.object.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.regexp.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.sharedmemory.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.float16.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.iterator.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.regexp.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.array.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.date.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.decorators.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.disposable.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.error.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.sharedmemory.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.temporal.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.typedarrays.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.decorators.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.decorators.legacy.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.full.d.ts","../src/index.ts"],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":99},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":99},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":99},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":99},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":99},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":99},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":99},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":99},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":99},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":99},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":99},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":99},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":99},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":99},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":99},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":99},{"version":"2a2de5b9459b3fc44decd9ce6100b72f1b002ef523126c1d3d8b2a4a63d74d78","affectsGlobalScope":true,"impliedFormat":99},{"version":"f13f4b465c99041e912db5c44129a94588e1aafee35a50eab51044833f50b4ee","affectsGlobalScope":true,"impliedFormat":99},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":99},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":99},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":99},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":99},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":99},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":99},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":99},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":99},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":99},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":99},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":99},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":99},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":99},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":99},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":99},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":99},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":99},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":99},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":99},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":99},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":99},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":99},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":99},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":99},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":99},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":99},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":99},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":99},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":99},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":99},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":99},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":99},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":99},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":99},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":99},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":99},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":99},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":99},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":99},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":99},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":99},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":99},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":99},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":99},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":99},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":99},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":99},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":99},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":99},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":99},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":99},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":99},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":99},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":99},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":99},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":99},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":99},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":99},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":99},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":99},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":99},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":99},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":99},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":99},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":99},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":99},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":99},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":99},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":99},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":99},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":99},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":99},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":99},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":99},{"version":"ef4a897cd2a3f91000c10264e400b3667c7e51e1b7365f03b62e8081dc53bde6","impliedFormat":99},{"version":"cd90bc5b3838a1c896789a76fb370d8ac85a6e5122ccb4f904c5c09556c25ab1","signature":"84d23b9d9f7158104e333fec1809e23eaf20d484ed1403d8a0dc838de27c40bc"}],"root":[94],"options":{"composite":true,"declaration":true,"declarationDir":"./types","emitDeclarationOnly":true,"module":99,"outDir":"./esm","rootDir":"../src","skipLibCheck":true,"strict":true,"target":99},"latestChangedDtsFile":"./types/index.d.ts","version":"6.0.3"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** The closed set of channels a build can declare, plus `unknown` for a build that declared none. */
|
|
2
|
+
export type Channel = 'flathub' | 'web' | 'microsoft-store' | 'apple-app-store' | 'unknown';
|
|
3
|
+
/** What a channel permits. A new capability is a new field here, never a channel-name comparison in an app. */
|
|
4
|
+
export interface ChannelCapabilities {
|
|
5
|
+
/** May the app show a donation / "support the project" link or prompt. */
|
|
6
|
+
donations: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Names describe where a build is distributed, not what it may do — so a channel can become quiet
|
|
10
|
+
* later without a rename. `unknown` is quiet on purpose: a donation line in a store build can cost a
|
|
11
|
+
* rejection, a missing one in a free build costs a link the maintainer notices (ADR 0113 § 4).
|
|
12
|
+
*/
|
|
13
|
+
export declare const CHANNEL_CAPABILITIES: Readonly<Record<Channel, ChannelCapabilities>>;
|
|
14
|
+
/** Every channel a user may declare (everything but `unknown`). */
|
|
15
|
+
export declare const DECLARABLE_CHANNELS: readonly Channel[];
|
|
16
|
+
/** Narrow a raw value to a declarable {@link Channel}; anything else is `undefined`. */
|
|
17
|
+
export declare function parseChannel(value: unknown): Channel | undefined;
|
|
18
|
+
/** Whether `candidate` permits donation UI. Pure; the CLI uses it for the metainfo gate. */
|
|
19
|
+
export declare function donationsAllowedFor(candidate: Channel): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* The channel this build was made for. A direct `typeof` on the define keeps it substitutable: the
|
|
22
|
+
* bundler replaces `__GJSIFY_CHANNEL__` with a string literal, so a store build drops the donation
|
|
23
|
+
* branches instead of hiding them at runtime.
|
|
24
|
+
*/
|
|
25
|
+
export declare const channel: Channel;
|
|
26
|
+
/** Whether this build may show donation UI. Ask this, never compare {@link channel} by name. */
|
|
27
|
+
export declare function donationsAllowed(): boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,63 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
"name": "@gjsify/distribution",
|
|
3
|
+
"version": "0.63.0",
|
|
4
|
+
"description": "The build-time distribution channel (flathub, web, microsoft-store, apple-app-store) and the capabilities it gates, such as donation UI",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"module": "lib/esm/index.js",
|
|
7
|
+
"types": "lib/types/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./lib/types/index.d.ts",
|
|
11
|
+
"default": "./lib/esm/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"lib"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"clear": "gjsify clear lib tmp *.tsbuildinfo test.gjs.mjs test.node.mjs",
|
|
19
|
+
"check": "gjsify tsc --noEmit",
|
|
20
|
+
"build": "gjsify run build:gjsify && gjsify run build:types",
|
|
21
|
+
"build:gjsify": "gjsify build --library 'src/**/*.{ts,js}' --exclude 'src/**/*.spec.{mts,ts}' 'src/test.{mts,ts}'",
|
|
22
|
+
"build:types": "gjsify tsc -p tsconfig.build.json",
|
|
23
|
+
"build:test": "gjsify run build:test:gjs && gjsify run build:test:node",
|
|
24
|
+
"build:test:gjs": "gjsify build src/test.mts --app gjs --outfile test.gjs.mjs",
|
|
25
|
+
"build:test:node": "gjsify build src/test.mts --app node --outfile test.node.mjs",
|
|
26
|
+
"build:test:browser": "gjsify build src/test.browser.mts --app browser --outfile dist/test.browser.mjs",
|
|
27
|
+
"test": "gjsify run build:gjsify && gjsify run build:test && gjsify run test:node && gjsify run test:gjs",
|
|
28
|
+
"test:gjs": "gjsify run test.gjs.mjs",
|
|
29
|
+
"test:node": "node test.node.mjs"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"gjs",
|
|
33
|
+
"distribution",
|
|
34
|
+
"flathub",
|
|
35
|
+
"microsoft-store",
|
|
36
|
+
"app-store"
|
|
37
|
+
],
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@gjsify/cli": "^0.63.0",
|
|
40
|
+
"@gjsify/unit": "^0.63.0",
|
|
41
|
+
"@types/node": "^25.9.2",
|
|
42
|
+
"typescript": "^6.0.3"
|
|
43
|
+
},
|
|
44
|
+
"gjsify": {
|
|
45
|
+
"runtimes": {
|
|
46
|
+
"gjs": "polyfill",
|
|
47
|
+
"node": "polyfill",
|
|
48
|
+
"browser": "polyfill",
|
|
49
|
+
"nativescript": "polyfill"
|
|
50
|
+
},
|
|
51
|
+
"tier": 2
|
|
52
|
+
},
|
|
53
|
+
"license": "MIT",
|
|
54
|
+
"repository": {
|
|
55
|
+
"type": "git",
|
|
56
|
+
"url": "git+https://github.com/gjsify/gjsify.git",
|
|
57
|
+
"directory": "packages/framework/distribution"
|
|
58
|
+
},
|
|
59
|
+
"bugs": {
|
|
60
|
+
"url": "https://github.com/gjsify/gjsify/issues"
|
|
61
|
+
},
|
|
62
|
+
"homepage": "https://github.com/gjsify/gjsify/tree/main/packages/framework/distribution#readme"
|
|
63
|
+
}
|