Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
f0a6c4f
Add standards-compliant User-Agent header (#203)
TwitchBronBron Aug 4, 2025
77106a8
chore: Support dispatch workflows (#198)
Christian-Holbrook Aug 4, 2025
b4bc173
3.13.0 (#205)
rokucommunity-bot[bot] Aug 4, 2025
cc51f75
Add 'rebootDevice' and 'checkForUpdate' functionality for supported O…
Christian-Holbrook Oct 28, 2025
de2a92f
Increment version to 3.14.0
rokucommunity-bot[bot] Oct 28, 2025
2b2db8d
3.14.0 (#210)
Christian-Holbrook Oct 28, 2025
8fb5c9f
Add the OIDC permissions to the dispatching workflow
Christian-Holbrook Oct 28, 2025
0f24e7c
Add the OIDC permissions to the dispatching workflow (#211)
Christian-Holbrook Oct 29, 2025
0f798a8
Increment version to 3.14.1
rokucommunity-bot[bot] Oct 29, 2025
342af88
Update CHANGELOG.md
TwitchBronBron Oct 29, 2025
c98f1dd
3.14.1 (#212)
Christian-Holbrook Oct 29, 2025
0dd4e6b
Chore: Update publish-release permissions to content: write
Christian-Holbrook Oct 29, 2025
4f3ade1
Chore: Update publish-release permissions to content: write (#213)
Christian-Holbrook Oct 29, 2025
a33ea05
Add pull-request write permissions
Christian-Holbrook Oct 30, 2025
a5ecaa1
Merge branch 'master' into update-permissions
Christian-Holbrook Oct 30, 2025
34c03d3
Add pull-request write permissions (#214)
Christian-Holbrook Oct 30, 2025
e9c031d
Increment version to 3.14.2
rokucommunity-bot[bot] Oct 30, 2025
646c4dc
Update print statement from 'Hello' to 'Goodbye'
Christian-Holbrook Oct 30, 2025
deb1e35
3.14.2 (#215)
Christian-Holbrook Oct 30, 2025
423bcaf
Add new error that is thrown when the OS does not support the function
Christian-Holbrook Oct 30, 2025
eafa5b3
Add specific error classes for reboot and check for updates functions…
Christian-Holbrook Oct 30, 2025
20a6be8
Increment version to 3.14.3
rokucommunity-bot[bot] Oct 30, 2025
106558a
3.14.3 (#217)
Christian-Holbrook Oct 30, 2025
9945ccb
Remove .git suffix and lowercase rokucommunity
Christian-Holbrook Oct 30, 2025
b56c3cc
chore: Update package.json repository to support provenance (#218)
Christian-Holbrook Oct 30, 2025
01c7b5a
Increment version to 3.14.4
rokucommunity-bot[bot] Oct 30, 2025
b57b3f9
Update print statement from 'Hello' to 'Goodbye'
Christian-Holbrook Oct 30, 2025
dfade6a
3.14.4 (#219)
Christian-Holbrook Oct 30, 2025
3e8d5f5
Support installing and deleting component libraries (#220)
JyotiBurnwal1 Nov 17, 2025
def4fc6
3.15.0 (#221)
rokucommunity-bot[bot] Nov 17, 2025
afd389f
Add support for detecting ecpNetworkAccessMode (#223)
Christian-Holbrook Dec 5, 2025
4a32684
3.16.0 (#224)
rokucommunity-bot[bot] Dec 5, 2025
6b9217f
Add ecpSettingMode to device-info interface (#225)
TwitchBronBron Dec 5, 2025
871afe9
3.16.1 (#226)
rokucommunity-bot[bot] Dec 5, 2025
e6e5068
Bump lodash from 4.17.21 to 4.17.23 (#227)
dependabot[bot] Jan 29, 2026
6f015d3
Bump ajv from 6.12.6 to 6.14.0 (#232)
dependabot[bot] Feb 21, 2026
a829291
Merge branch 'master' of https://github.com/rokucommunity/roku-deploy…
TwitchBronBron Feb 23, 2026
2299fd5
Remove duplicate `setUserAgentIfMissing` tests
TwitchBronBron Feb 23, 2026
b9a1e3b
Remove duplicate `plugin_swup` tests
TwitchBronBron Feb 23, 2026
99f1f57
Fix appType tests
TwitchBronBron Feb 23, 2026
1c8e6bb
remove commented-out code
TwitchBronBron Feb 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- eliminate top index functions ([#144](https://github.com/rokucommunity/roku-deploy/pull/144))



## [3.16.1](https://github.com/rokucommunity/roku-deploy/compare/3.16.0...v3.16.1) - 2025-12-05
### Added
- Add ecpSettingMode to device-info interface ([#225](https://github.com/rokucommunity/roku-deploy/pull/225))
Expand Down Expand Up @@ -564,7 +564,3 @@ chore: Update package.json repository to support provenance (#218)
## [1.0.0](https://github.com/RokuCommunity/roku-deploy/compare/v0.2.1...v1.0.0) - 2018-12-18
### Added
- support for negated globs




39 changes: 20 additions & 19 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/Errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,4 @@ export class ConnectionResetError extends Error {

export function isConnectionResetError(e: any): e is ConnectionResetError {
return e?.constructor?.name === 'ConnectionResetError';
}
}
91 changes: 80 additions & 11 deletions src/RokuDeploy.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1241,8 +1241,74 @@ describe('RokuDeploy', () => {
});

it('does not set appType if not explicitly defined', async () => {
delete options.appType;
const stub = mockDoPostRequest();

fsExtra.outputFileSync(`${outDir}/${options.outFile}`, 'asdf');

const result = await rokuDeploy.sideload({
host: '1.2.3.4',
password: 'password',
outDir: outDir,
outFile: options.outFile,
deleteDevChannel: false
});
expect(result.message).to.equal('Successful sideload');
expect(stub.getCall(0).args[0].formData.app_type).to.be.undefined;
});

it('does not set appType if not appType is set to null or undefined', async () => {
const stub = mockDoPostRequest();
fsExtra.outputFileSync(`${outDir}/${options.outFile}`, 'asdf');

const result = await rokuDeploy.sideload({
host: '1.2.3.4',
password: 'password',
outDir: outDir,
outFile: options.outFile,
deleteDevChannel: false,
appType: null
});
expect(result.message).to.equal('Successful sideload');
expect(stub.getCall(0).args[0].formData.app_type).to.be.undefined;
});

it('sets appType="channel" when defined', async () => {
const stub = mockDoPostRequest();
fsExtra.outputFileSync(`${outDir}/${options.outFile}`, 'asdf');

const result = await rokuDeploy.sideload({
host: '1.2.3.4',
password: 'password',
outDir: outDir,
outFile: options.outFile,
deleteDevChannel: false,
appType: 'channel'
});
expect(result.message).to.equal('Successful sideload');
expect(stub.getCall(0).args[0].formData.app_type).to.eql('channel');
});

it('sets appType="dcl" when defined', async () => {
const stub = mockDoPostRequest();
fsExtra.outputFileSync(`${outDir}/${options.outFile}`, 'asdf');

const result = await rokuDeploy.sideload({
host: '1.2.3.4',
password: 'password',
outDir: outDir,
outFile: options.outFile,
deleteDevChannel: false,
appType: 'dcl'
});
expect(result.message).to.equal('Successful sideload');
expect(stub.getCall(0).args[0].formData.app_type).to.eql('dcl');
});

it('Does not reject when response contains compile error wording but config is set to ignore compile warnings', async () => {
const stub = mockDoPostRequest();
options.failOnCompileError = false;

const result = await rokuDeploy.sideload({
host: '1.2.3.4',
password: 'password',
Expand Down Expand Up @@ -1606,6 +1672,7 @@ describe('RokuDeploy', () => {
<font color="red">Success.</font>
</div>`;
mockDoPostRequest(body);

try {
fsExtra.writeFileSync(s`notReal.pkg`, '');
await rokuDeploy.rekeyDevice({
Expand Down Expand Up @@ -2906,7 +2973,7 @@ describe('RokuDeploy', () => {
outDir: outDir
});
const data = fsExtra.readFileSync(rokuDeploy['getOutputZipFilePath']({ outDir: outDir }));
const zip = await JSZip.loadAsync(data);
const zip = await JSZip.loadAsync(data as any);

const files = ['manifest'];
for (const file of files) {
Expand Down Expand Up @@ -2934,7 +3001,7 @@ describe('RokuDeploy', () => {
await rokuDeploy.zip(options);

const data = fsExtra.readFileSync(rokuDeploy['getOutputZipFilePath']({ outDir: outDir }));
const zip = await JSZip.loadAsync(data);
const zip = await JSZip.loadAsync(data as any);

for (const file of filePaths) {
const zipFileContents = await zip.file(file.toString())?.async('string');
Expand Down Expand Up @@ -3117,10 +3184,11 @@ describe('RokuDeploy', () => {

it('Finds folder using square brackets glob pattern', async () => {
fsExtra.outputFileSync(`${rootDir}/e/file.brs`, '');
expect(await getFilePaths([
'[test]/*'
],
rootDir
expect(await getFilePaths(
[
'[test]/*'
],
rootDir
)).to.eql([{
src: s`${rootDir}/e/file.brs`,
dest: s`e/file.brs`
Expand All @@ -3130,10 +3198,11 @@ describe('RokuDeploy', () => {
it('Finds folder with escaped square brackets glob pattern as name', async () => {
fsExtra.outputFileSync(`${rootDir}/[test]/file.brs`, '');
fsExtra.outputFileSync(`${rootDir}/e/file.brs`, '');
expect(await getFilePaths([
'\\[test\\]/*'
],
rootDir
expect(await getFilePaths(
[
'\\[test\\]/*'
],
rootDir
)).to.eql([{
src: s`${rootDir}/[test]/file.brs`,
dest: s`[test]/file.brs`
Expand Down Expand Up @@ -4402,4 +4471,4 @@ permission of Roku, Inc. is strictly prohibited.
</script>
</body>
</html>
`;
`;
2 changes: 1 addition & 1 deletion src/RokuDeploy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,7 @@ export class RokuDeploy {
* Centralized function for handling POST http requests
* @param params
*/
private async doPostRequest(params: any, verify = true) {
private async doPostRequest(params: requestType.OptionsWithUrl, verify = true) {
logger.info('handling POST request to', params.url);
let results: { response: any; body: any } = await new Promise((resolve, reject) => {

Expand Down