@switchbot/homebridge-switchbot 5.1.0-beta.1 → 5.1.0-beta.2

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.
@@ -7,13 +7,54 @@ on:
7
7
  - 'beta'
8
8
  - 'latest'
9
9
  workflow_dispatch:
10
+ inputs:
11
+ release_type:
12
+ description: Release channel
13
+ required: true
14
+ type: choice
15
+ options:
16
+ - latest
17
+ - beta
18
+ - alpha
19
+ default: latest
20
+ is_esm:
21
+ description: Package is ESM
22
+ required: true
23
+ type: boolean
24
+ default: true
25
+ version_override:
26
+ description: Exact version (for example 2.1.0). Leave empty for auto bump.
27
+ required: false
28
+ type: string
29
+ version_bump:
30
+ description: Auto bump type when version_override is empty
31
+ required: false
32
+ type: choice
33
+ options:
34
+ - patch
35
+ - minor
36
+ - major
37
+ default: patch
38
+ max_attempts:
39
+ description: Max retries for prerelease collision handling
40
+ required: false
41
+ type: number
42
+ default: 5
43
+
44
+ # Cancel any in-progress workflow for the same branch. A new push should
45
+ # supersede the previous run rather than racing it to publish.
46
+ concurrency:
47
+ group: release-${{ github.ref }}
48
+ cancel-in-progress: true
10
49
 
11
50
  jobs:
12
- # ─── BETA RELEASE (branches starting with "beta") ────────────────────────────
51
+ # ─── QUALITY GATE (all branches) ────────────────────────────────────────────
52
+ # Build and test run for EVERY push, regardless of branch. Both the beta
53
+ # and stable release paths depend on these passing before anything is
54
+ # published or version-bumped.
13
55
 
14
56
  # 1️⃣ Build and test
15
57
  build_and_test:
16
- if: startsWith(github.ref_name, 'beta')
17
58
  uses: homebridge/.github/.github/workflows/nodejs-build-and-test.yml@latest
18
59
  with:
19
60
  enable_coverage: false
@@ -22,10 +63,12 @@ jobs:
22
63
 
23
64
  # 2️⃣ Lint
24
65
  lint:
25
- if: startsWith(github.ref_name, 'beta')
26
66
  needs: build_and_test
27
67
  uses: homebridge/.github/.github/workflows/eslint.yml@latest
28
68
 
69
+
70
+ # ─── BETA RELEASE (branches starting with "beta") ────────────────────────────
71
+
29
72
  # 3️⃣ Publish beta to NPM (OIDC — id-token required here and in the reusable workflow)
30
73
  beta-publish:
31
74
  if: startsWith(github.ref_name, 'beta')
@@ -54,23 +97,26 @@ jobs:
54
97
 
55
98
  # ─── STABLE RELEASE (branch: "latest") ───────────────────────────────────────
56
99
 
57
- # 1️⃣ Determine release type, ESM status, and branch name
100
+ # 3️⃣ Determine release type, ESM status, and branch name
58
101
  determine-release-type:
59
102
  if: github.ref_name == 'latest'
103
+ needs: lint
60
104
  uses: homebridge/.github/.github/workflows/determine-release-type.yml@latest
61
105
  with:
62
106
  ref_name: ${{ github.ref_name }}
63
107
 
64
- # 2️⃣ Update version and changelog using the scripts
108
+ # 4️⃣ Update version and changelog using the scripts
65
109
  update-version:
66
110
  if: github.ref_name == 'latest'
67
111
  needs: determine-release-type
68
112
  uses: homebridge/.github/.github/workflows/update-version.yml@latest
69
113
  with:
70
- release_type: ${{ needs.determine-release-type.outputs.release_type }}
71
- is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' }}
114
+ release_type: ${{ needs.determine-release-type.outputs.release_type || inputs.release_type }}
115
+ is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' || inputs.is_esm == 'true' }}
116
+ version_override: ${{ inputs.version_override }}
117
+ version_bump: ${{ inputs.version_bump }}
72
118
 
73
- # 3️⃣ Publish to NPM and create GitHub release (OIDC — id-token required here and in the reusable workflow)
119
+ # 5️⃣ Publish to NPM and create GitHub release (OIDC — id-token required here and in the reusable workflow)
74
120
  publish-release:
75
121
  if: github.ref_name == 'latest'
76
122
  needs: [determine-release-type, update-version]
@@ -79,13 +125,16 @@ jobs:
79
125
  contents: write
80
126
  uses: homebridge/.github/.github/workflows/publish-release.yml@latest
81
127
  with:
82
- release_type: ${{ needs.determine-release-type.outputs.release_type }}
128
+ release_type: ${{ needs.determine-release-type.outputs.release_type || inputs.release_type }}
83
129
  version: ${{ needs.update-version.outputs.version }}
84
- is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' }}
130
+ is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' || inputs.is_esm == 'true' }}
131
+ version_override: ${{ inputs.version_override }}
132
+ version_bump: ${{ inputs.version_bump }}
133
+ max_attempts: ${{ inputs.max_attempts }}
85
134
  secrets:
86
135
  NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
87
136
 
88
- # 4️⃣ Promote branch if this is a prerelease (alpha/beta)
137
+ # 6️⃣ Promote branch if this is a prerelease (alpha/beta)
89
138
  promote-branch:
90
139
  if: ${{ github.ref_name == 'latest' && needs.determine-release-type.outputs.release_type != 'latest' && needs.determine-release-type.outputs.release_type != 'skip' }}
91
140
  needs: [determine-release-type, publish-release]
@@ -93,19 +142,19 @@ jobs:
93
142
  with:
94
143
  branch_name: ${{ needs.determine-release-type.outputs.branch_name }}
95
144
  release_type: ${{ needs.determine-release-type.outputs.release_type }}
96
- is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' }}
145
+ is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' || inputs.is_esm == 'true' }}
97
146
 
98
- # 5️⃣ Notify if any stable-release job fails
147
+ # 7️⃣ Notify if any job fails
99
148
  workflow-failure:
100
149
  if: failure()
101
- needs: [determine-release-type, update-version, publish-release, promote-branch]
150
+ needs: [build_and_test, lint, determine-release-type, update-version, publish-release, promote-branch]
102
151
  uses: homebridge/.github/.github/workflows/report-failure.yml@latest
103
152
  with:
104
153
  workflow_name: ${{ github.workflow }}
105
154
  job_name: ${{ github.job }}
106
155
  run_url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
107
156
 
108
- # 6️⃣ Post to Discord (Beta + Stable)
157
+ # 8️⃣ Post to Discord (Beta + Stable)
109
158
  discord:
110
159
  name: Release Notifications
111
160
  if: ${{ always() && ((startsWith(github.ref_name, 'beta') && needs.beta-publish.result == 'success') || (github.ref_name == 'latest' && needs.publish-release.result == 'success')) }}
@@ -1,3 +1,3 @@
1
1
  <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>default | @switchbot/homebridge-switchbot</title><meta name="description" content="Documentation for @switchbot/homebridge-switchbot"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@switchbot/homebridge-switchbot</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">default</a></li></ul><h1>Variable default</h1></div><div class="tsd-signature"><span class="tsd-kind-variable">default</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">api</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">API</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span></div><div class="tsd-comment tsd-typography"><p>Registers the SwitchBot platform with Homebridge.</p>
2
2
  </div><div class="tsd-type-declaration"><h4>Type Declaration</h4><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature" id="__type"><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">api</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">API</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">api</span>: <span class="tsd-signature-type">API</span></span><div class="tsd-comment tsd-typography"><p>The Homebridge API instance.</p>
3
- </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></li></ul></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/OpenWonderLabs/homebridge-switchbot/blob/c12da554d58005474bfa08e2e8abd1ed5882b64b/src/index.ts#L22">index.ts:22</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@switchbot/homebridge-switchbot</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
3
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></li></ul></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/OpenWonderLabs/homebridge-switchbot/blob/e6c72e0f50088e9d489af0da989cc6078c6019dd/src/index.ts#L22">index.ts:22</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@switchbot/homebridge-switchbot</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@switchbot/homebridge-switchbot",
3
3
  "displayName": "SwitchBot",
4
4
  "type": "module",
5
- "version": "5.1.0-beta.1",
5
+ "version": "5.1.0-beta.2",
6
6
  "description": "The SwitchBot plugin allows you to access your SwitchBot device(s) from HomeKit.",
7
7
  "author": "SwitchBot <support@wondertechlabs.com> (https://github.com/SwitchBot)",
8
8
  "contributors": [