@marsgames/nosleep.js 0.12.21 → 0.12.23
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/.babelrc +11 -1
- package/.editorconfig +4 -0
- package/.github/CONTRIBUTING.md +0 -0
- package/.github/ISSUE_TEMPLATE/BUG.md +0 -0
- package/.github/ISSUE_TEMPLATE/DOCS.md +0 -0
- package/.github/ISSUE_TEMPLATE/FEATURE.md +0 -0
- package/.github/ISSUE_TEMPLATE/MODIFICATION.md +0 -0
- package/.github/ISSUE_TEMPLATE/SUPPORT.md +0 -0
- package/.github/ISSUE_TEMPLATE.md +0 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- package/.nvmrc +1 -1
- package/README.md +15 -11
- package/dist/NoSleep.esm.js +126 -0
- package/dist/NoSleep.min.js +2 -2
- package/dist/NoSleep.umd.js +160 -0
- package/eslint.config.js +76 -0
- package/nosleep.d.ts +31 -15
- package/package.json +20 -12
- package/src/index.js +99 -74
- package/src/media.js +2 -2
- package/webpack.config.cjs +83 -0
- package/.eslintrc.yml +0 -1
- package/bower.json +0 -20
- package/dist/NoSleep.js +0 -216
- package/webpack.config.js +0 -48
package/.babelrc
CHANGED
package/.editorconfig
CHANGED
package/.github/CONTRIBUTING.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/.nvmrc
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
22.20.0
|
package/README.md
CHANGED
|
@@ -6,32 +6,32 @@ Prevent display sleep and enable wake lock in all Android and iOS web browsers.
|
|
|
6
6
|
|
|
7
7
|
This package is published to npm as **@marsgames/nosleep.js** and can be installed with:
|
|
8
8
|
|
|
9
|
-
`
|
|
9
|
+
`pnpm install @marsgames/nosleep.js`
|
|
10
10
|
|
|
11
11
|
## Build from source
|
|
12
12
|
|
|
13
13
|
Install all development dependencies with:
|
|
14
14
|
|
|
15
|
-
`
|
|
15
|
+
`pnpm install`
|
|
16
16
|
|
|
17
17
|
To build this library run:
|
|
18
18
|
|
|
19
|
-
`
|
|
19
|
+
`pnpm run build`
|
|
20
20
|
|
|
21
21
|
## Usage
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
The library is distributed as a modern ES Module (ESM).
|
|
24
24
|
|
|
25
25
|
```javascript
|
|
26
|
+
// Import as an ES Module
|
|
26
27
|
import NoSleep from '@marsgames/nosleep.js';
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Create a new NoSleep object and then enable or disable it when needed.
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
// Create a new NoSleep instance.
|
|
30
|
+
// By default, it attempts to use the native Wake Lock API first.
|
|
31
|
+
const noSleep = new NoSleep();
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
// Optional: To force the deprecated video-based fallback method, use:
|
|
34
|
+
// const noSleepFallback = new NoSleep(false);
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
To enable wake lock:
|
|
@@ -43,7 +43,11 @@ To enable wake lock:
|
|
|
43
43
|
// (must be wrapped in a user input event handler e.g. a mouse or touch handler)
|
|
44
44
|
document.addEventListener('click', function enableNoSleep() {
|
|
45
45
|
document.removeEventListener('click', enableNoSleep, false);
|
|
46
|
-
|
|
46
|
+
|
|
47
|
+
// Asynchronous call required for the Wake Lock API
|
|
48
|
+
noSleep.enable()
|
|
49
|
+
.then(() => console.log('NoSleep is active!'))
|
|
50
|
+
.catch((error) => console.error('NoSleep failed to activate:', error));
|
|
47
51
|
}, false);
|
|
48
52
|
```
|
|
49
53
|
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/*! main.js v0.12.23 - git.io/vfn01 - AnaneyTech - MIT license */
|
|
2
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
3
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
4
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
var {
|
|
8
|
+
webm,
|
|
9
|
+
mp4
|
|
10
|
+
} = require('./media.js');
|
|
11
|
+
var nativeWakeLockSupported = () => {
|
|
12
|
+
// Check for 'wakeLock' support AND exclude specific iOS/iPadOS user agents
|
|
13
|
+
var isIOS = /ipad|iphone|ipod/i.test(navigator.userAgent) || navigator.userAgent.includes('Mac') && 'ontouchend' in document;
|
|
14
|
+
return 'wakeLock' in navigator && !isIOS;
|
|
15
|
+
};
|
|
16
|
+
class NoSleep {
|
|
17
|
+
constructor() {
|
|
18
|
+
var _this = this;
|
|
19
|
+
var enableWakeLockIfSupported = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
20
|
+
/**
|
|
21
|
+
* @type {WakeLockSentinel | null}
|
|
22
|
+
*/
|
|
23
|
+
_defineProperty(this, "_wakeLock", null);
|
|
24
|
+
/**
|
|
25
|
+
* @type {boolean}
|
|
26
|
+
*/
|
|
27
|
+
_defineProperty(this, "_isNativeSupported", nativeWakeLockSupported());
|
|
28
|
+
/**
|
|
29
|
+
* @type {HTMLVideoElement | null}
|
|
30
|
+
*/
|
|
31
|
+
_defineProperty(this, "_noSleepVideo", null);
|
|
32
|
+
// --- Private Wake Lock Handler (Arrow function for correct 'this' binding) ---
|
|
33
|
+
_defineProperty(this, "_handleVisibilityChange", () => {
|
|
34
|
+
if (this._wakeLock !== null && document.visibilityState === 'visible') {
|
|
35
|
+
this.enable();
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
_defineProperty(this, "_handleMp4TimeUpdate", () => {
|
|
39
|
+
if (this._noSleepVideo && this._noSleepVideo.currentTime > 0.5) {
|
|
40
|
+
this._noSleepVideo.currentTime = Math.random() * 0.1;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
// --- Public Methods (Class Field Declaration syntax) ---
|
|
44
|
+
_defineProperty(this, "enable", /*#__PURE__*/_asyncToGenerator(function* () {
|
|
45
|
+
if (_this._isNativeSupported) {
|
|
46
|
+
if (_this._wakeLock) return;
|
|
47
|
+
try {
|
|
48
|
+
_this._wakeLock = yield navigator.wakeLock.request('screen');
|
|
49
|
+
_this._wakeLock.addEventListener('release', () => {
|
|
50
|
+
_this._wakeLock = null;
|
|
51
|
+
_this.enabled = false;
|
|
52
|
+
console.warn('Wake Lock released by browser.');
|
|
53
|
+
});
|
|
54
|
+
_this.enabled = true;
|
|
55
|
+
console.info('Wake Lock active.');
|
|
56
|
+
} catch (err) {
|
|
57
|
+
_this.enabled = false;
|
|
58
|
+
console.warn("NoSleep failed to activate WakeLock: ".concat(err.message));
|
|
59
|
+
}
|
|
60
|
+
} else if (_this._noSleepVideo) {
|
|
61
|
+
try {
|
|
62
|
+
yield _this._noSleepVideo.play();
|
|
63
|
+
_this.enabled = true;
|
|
64
|
+
} catch (err) {
|
|
65
|
+
_this.enabled = false;
|
|
66
|
+
console.warn("NoSleep failed to play Video: ".concat(err.message));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}));
|
|
70
|
+
_defineProperty(this, "disable", () => {
|
|
71
|
+
if (this._isNativeSupported) {
|
|
72
|
+
if (this._wakeLock) {
|
|
73
|
+
this._wakeLock.release().then(() => {
|
|
74
|
+
this._wakeLock = null;
|
|
75
|
+
});
|
|
76
|
+
console.info('Wake Lock released.');
|
|
77
|
+
}
|
|
78
|
+
} else if (this._noSleepVideo) {
|
|
79
|
+
this._noSleepVideo.pause();
|
|
80
|
+
}
|
|
81
|
+
this.enabled = false;
|
|
82
|
+
});
|
|
83
|
+
this.enabled = false;
|
|
84
|
+
if (enableWakeLockIfSupported && this._isNativeSupported) {
|
|
85
|
+
document.addEventListener('visibilitychange', this._handleVisibilityChange);
|
|
86
|
+
document.addEventListener('fullscreenchange', this._handleVisibilityChange);
|
|
87
|
+
console.debug('Native Wake Lock API selected.');
|
|
88
|
+
} else {
|
|
89
|
+
this._isNativeSupported = false;
|
|
90
|
+
this._setupVideoFallback();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// --- Private Video Fallback Setup ---
|
|
94
|
+
_setupVideoFallback() {
|
|
95
|
+
var _document$body;
|
|
96
|
+
this._noSleepVideo = document.createElement('video');
|
|
97
|
+
this._noSleepVideo.setAttribute('title', 'No Sleep');
|
|
98
|
+
this._noSleepVideo.setAttribute('playsinline', '');
|
|
99
|
+
this._noSleepVideo.muted = true;
|
|
100
|
+
this._addSourceToVideo(this._noSleepVideo, 'webm', webm);
|
|
101
|
+
this._addSourceToVideo(this._noSleepVideo, 'mp4', mp4);
|
|
102
|
+
Object.assign(this._noSleepVideo.style, {
|
|
103
|
+
position: 'absolute',
|
|
104
|
+
left: '-100%',
|
|
105
|
+
top: '-100%'
|
|
106
|
+
});
|
|
107
|
+
(_document$body = document.body) === null || _document$body === void 0 || _document$body.append(this._noSleepVideo);
|
|
108
|
+
this._noSleepVideo.addEventListener('loadedmetadata', () => {
|
|
109
|
+
if (this._noSleepVideo.duration > 1) {
|
|
110
|
+
this._noSleepVideo.addEventListener('timeupdate', this._handleMp4TimeUpdate);
|
|
111
|
+
} else {
|
|
112
|
+
this._noSleepVideo.setAttribute('loop', '');
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
_addSourceToVideo(element, type, dataURI) {
|
|
117
|
+
var source = document.createElement('source');
|
|
118
|
+
source.src = dataURI;
|
|
119
|
+
source.type = "video/".concat(type);
|
|
120
|
+
element.appendChild(source);
|
|
121
|
+
}
|
|
122
|
+
get isEnabled() {
|
|
123
|
+
return this.enabled;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
module.exports = NoSleep;
|
package/dist/NoSleep.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
!function(A,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.NoSleep=e():A.NoSleep=e()}(this,(()=>{return A={352:(A,e,t)=>{function o(A){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(A){return typeof A}:function(A){return A&&"function"==typeof Symbol&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A},o(A)}function r(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */r=function(){return A};var A={},e=Object.prototype,t=e.hasOwnProperty,n=Object.defineProperty||function(A,e,t){A[e]=t.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",g=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function B(A,e,t){return Object.defineProperty(A,e,{value:t,enumerable:!0,configurable:!0,writable:!0}),A[e]}try{B({},"")}catch(A){B=function(A,e,t){return A[e]=t}}function h(A,e,t,o){var r=e&&e.prototype instanceof l?e:l,i=Object.create(r.prototype),a=new w(o||[]);return n(i,"_invoke",{value:y(A,t,a)}),i}function E(A,e,t){try{return{type:"normal",arg:A.call(e,t)}}catch(A){return{type:"throw",arg:A}}}A.wrap=h;var u={};function l(){}function Q(){}function C(){}var s={};B(s,a,(function(){return this}));var m=Object.getPrototypeOf,I=m&&m(m(Y([])));I&&I!==e&&t.call(I,a)&&(s=I);var p=C.prototype=l.prototype=Object.create(s);function d(A){["next","throw","return"].forEach((function(e){B(A,e,(function(A){return this._invoke(e,A)}))}))}function f(A,e){function r(n,i,a,g){var c=E(A[n],A,i);if("throw"!==c.type){var B=c.arg,h=B.value;return h&&"object"==o(h)&&t.call(h,"__await")?e.resolve(h.__await).then((function(A){r("next",A,a,g)}),(function(A){r("throw",A,a,g)})):e.resolve(h).then((function(A){B.value=A,a(B)}),(function(A){return r("throw",A,a,g)}))}g(c.arg)}var i;n(this,"_invoke",{value:function(A,t){function o(){return new e((function(e,o){r(A,t,e,o)}))}return i=i?i.then(o,o):o()}})}function y(A,e,t){var o="suspendedStart";return function(r,n){if("executing"===o)throw new Error("Generator is already running");if("completed"===o){if("throw"===r)throw n;return{value:void 0,done:!0}}for(t.method=r,t.arg=n;;){var i=t.delegate;if(i){var a=k(i,t);if(a){if(a===u)continue;return a}}if("next"===t.method)t.sent=t._sent=t.arg;else if("throw"===t.method){if("suspendedStart"===o)throw o="completed",t.arg;t.dispatchException(t.arg)}else"return"===t.method&&t.abrupt("return",t.arg);o="executing";var g=E(A,e,t);if("normal"===g.type){if(o=t.done?"completed":"suspendedYield",g.arg===u)continue;return{value:g.arg,done:t.done}}"throw"===g.type&&(o="completed",t.method="throw",t.arg=g.arg)}}}function k(A,e){var t=e.method,o=A.iterator[t];if(void 0===o)return e.delegate=null,"throw"===t&&A.iterator.return&&(e.method="return",e.arg=void 0,k(A,e),"throw"===e.method)||"return"!==t&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+t+"' method")),u;var r=E(o,A.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,u;var n=r.arg;return n?n.done?(e[A.resultName]=n.value,e.next=A.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,u):n:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,u)}function Z(A){var e={tryLoc:A[0]};1 in A&&(e.catchLoc=A[1]),2 in A&&(e.finallyLoc=A[2],e.afterLoc=A[3]),this.tryEntries.push(e)}function V(A){var e=A.completion||{};e.type="normal",delete e.arg,A.completion=e}function w(A){this.tryEntries=[{tryLoc:"root"}],A.forEach(Z,this),this.reset(!0)}function Y(A){if(A){var e=A[a];if(e)return e.call(A);if("function"==typeof A.next)return A;if(!isNaN(A.length)){var o=-1,r=function e(){for(;++o<A.length;)if(t.call(A,o))return e.value=A[o],e.done=!1,e;return e.value=void 0,e.done=!0,e};return r.next=r}}return{next:S}}function S(){return{value:void 0,done:!0}}return Q.prototype=C,n(p,"constructor",{value:C,configurable:!0}),n(C,"constructor",{value:Q,configurable:!0}),Q.displayName=B(C,c,"GeneratorFunction"),A.isGeneratorFunction=function(A){var e="function"==typeof A&&A.constructor;return!!e&&(e===Q||"GeneratorFunction"===(e.displayName||e.name))},A.mark=function(A){return Object.setPrototypeOf?Object.setPrototypeOf(A,C):(A.__proto__=C,B(A,c,"GeneratorFunction")),A.prototype=Object.create(p),A},A.awrap=function(A){return{__await:A}},d(f.prototype),B(f.prototype,g,(function(){return this})),A.AsyncIterator=f,A.async=function(e,t,o,r,n){void 0===n&&(n=Promise);var i=new f(h(e,t,o,r),n);return A.isGeneratorFunction(t)?i:i.next().then((function(A){return A.done?A.value:i.next()}))},d(p),B(p,c,"Generator"),B(p,a,(function(){return this})),B(p,"toString",(function(){return"[object Generator]"})),A.keys=function(A){var e=Object(A),t=[];for(var o in e)t.push(o);return t.reverse(),function A(){for(;t.length;){var o=t.pop();if(o in e)return A.value=o,A.done=!1,A}return A.done=!0,A}},A.values=Y,w.prototype={constructor:w,reset:function(A){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(V),!A)for(var e in this)"t"===e.charAt(0)&&t.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var A=this.tryEntries[0].completion;if("throw"===A.type)throw A.arg;return this.rval},dispatchException:function(A){if(this.done)throw A;var e=this;function o(t,o){return i.type="throw",i.arg=A,e.next=t,o&&(e.method="next",e.arg=void 0),!!o}for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r],i=n.completion;if("root"===n.tryLoc)return o("end");if(n.tryLoc<=this.prev){var a=t.call(n,"catchLoc"),g=t.call(n,"finallyLoc");if(a&&g){if(this.prev<n.catchLoc)return o(n.catchLoc,!0);if(this.prev<n.finallyLoc)return o(n.finallyLoc)}else if(a){if(this.prev<n.catchLoc)return o(n.catchLoc,!0)}else{if(!g)throw new Error("try statement without catch or finally");if(this.prev<n.finallyLoc)return o(n.finallyLoc)}}}},abrupt:function(A,e){for(var o=this.tryEntries.length-1;o>=0;--o){var r=this.tryEntries[o];if(r.tryLoc<=this.prev&&t.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var n=r;break}}n&&("break"===A||"continue"===A)&&n.tryLoc<=e&&e<=n.finallyLoc&&(n=null);var i=n?n.completion:{};return i.type=A,i.arg=e,n?(this.method="next",this.next=n.finallyLoc,u):this.complete(i)},complete:function(A,e){if("throw"===A.type)throw A.arg;return"break"===A.type||"continue"===A.type?this.next=A.arg:"return"===A.type?(this.rval=this.arg=A.arg,this.method="return",this.next="end"):"normal"===A.type&&e&&(this.next=e),u},finish:function(A){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.finallyLoc===A)return this.complete(t.completion,t.afterLoc),V(t),u}},catch:function(A){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.tryLoc===A){var o=t.completion;if("throw"===o.type){var r=o.arg;V(t)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(A,e,t){return this.delegate={iterator:Y(A),resultName:e,nextLoc:t},"next"===this.method&&(this.arg=void 0),u}},A}function n(A,e,t,o,r,n,i){try{var a=A[n](i),g=a.value}catch(A){return void t(A)}a.done?e(g):Promise.resolve(g).then(o,r)}function i(A){return function(){var e=this,t=arguments;return new Promise((function(o,r){var i=A.apply(e,t);function a(A){n(i,o,r,a,g,"next",A)}function g(A){n(i,o,r,a,g,"throw",A)}a(void 0)}))}}function a(A,e){for(var t=0;t<e.length;t++){var o=e[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(A,c(o.key),o)}}function g(A,e,t){return(e=c(e))in A?Object.defineProperty(A,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):A[e]=t,A}function c(A){var e=function(A,e){if("object"!==o(A)||null===A)return A;var t=A[Symbol.toPrimitive];if(void 0!==t){var r=t.call(A,e||"default");if("object"!==o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(A)}(A,"string");return"symbol"===o(e)?e:String(e)}var B=t(186),h=B.webm,E=B.mp4,u=!0,l=!1,Q=function(){function A(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(function(A,e){if(!(A instanceof e))throw new TypeError("Cannot call a class as a function")}(this,A),g(this,"enable",i(r().mark((function A(){return r().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:if(!u){A.next=15;break}return A.prev=1,A.next=4,navigator.wakeLock.request("screen");case 4:e._wakeLock=A.sent,e.enabled=!0,console.info("Wake Lock active."),A.next=13;break;case 9:A.prev=9,A.t0=A.catch(1),e.enabled=!1,console.warn("NoSleep failed to activate WakeLock, ".concat(A.t0.message));case 13:A.next=26;break;case 15:if(A.prev=15,!l){A.next=20;break}return A.next=19,e.noSleepVideo.play();case 19:e.enabled=!0;case 20:A.next=26;break;case 22:A.prev=22,A.t1=A.catch(15),e.enabled=!1,console.warn("NoSleep failed to play Video, ".concat(A.t1.message));case 26:case"end":return A.stop()}}),A,null,[[1,9],[15,22]])})))),g(this,"disable",(function(){u?(e._wakeLock&&(e._wakeLock.release(),console.info("Wake Lock released.")),e._wakeLock=null):(l=!1,e.noSleepVideo.pause()),e.enabled=!1})),this.enabled=!1,t&&"wakeLock"in navigator&&!(/ipad|iphone|ipod/i.test(navigator.userAgent)||navigator.userAgent.includes("Mac")&&"ontouchend"in document)){this._wakeLock=null;var o=function(){null!==e._wakeLock&&"visible"===document.visibilityState&&e.enable()};document.addEventListener("visibilitychange",o),document.addEventListener("fullscreenchange",o)}else u=!1,this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",h),this._addSourceToVideo(this.noSleepVideo,"mp4",E),this.noSleepVideo.oncanplaythrough=function(){l=!0},Object.assign(this.noSleepVideo.style,{position:"absolute",left:"-100%",top:"-100%"}),document.querySelector("body").append(this.noSleepVideo),this.noSleepVideo.addEventListener("loadedmetadata",(function(){e.noSleepVideo.duration<=1?e.noSleepVideo.setAttribute("loop",""):e.noSleepVideo.addEventListener("timeupdate",(function(){e.noSleepVideo.currentTime>.5&&(e.noSleepVideo.currentTime=Math.random())}))}))}var e,t,o;return e=A,(t=[{key:"_addSourceToVideo",value:function(A,e,t){var o=document.createElement("source");o.src=t,o.type="video/".concat(e),o.setAttribute("playsinline","true"),A.appendChild(o)}},{key:"isEnabled",get:function(){return this.enabled}}])&&a(e.prototype,t),o&&a(e,o),Object.defineProperty(e,"prototype",{writable:!1}),A}();A.exports=Q},186:A=>{A.exports={webm:"data:video/webm;base64,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",mp4:"data:video/mp4;base64,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"}}},e={},function t(o){var r=e[o];if(void 0!==r)return r.exports;var n=e[o]={exports:{}};return A[o](n,n.exports,t),n.exports}(352);var A,e}));
|
|
1
|
+
/*! main.js v0.12.23 - git.io/vfn01 - AnaneyTech - MIT license */
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.NoSleep=t():e.NoSleep=t()}(this,()=>(()=>{"use strict";var e={r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function i(e,t,i,o,n,a,l){try{var r=e[a](l),s=r.value}catch(e){return void i(e)}r.done?t(s):Promise.resolve(s).then(o,n)}function o(e){return function(){var t=this,o=arguments;return new Promise(function(n,a){var l=e.apply(t,o);function r(e){i(l,n,a,r,s,"next",e)}function s(e){i(l,n,a,r,s,"throw",e)}r(void 0)})}}function n(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var o=i.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}e.r(t);var{webm:a,mp4:l}=require("./media.js");return module.exports=class{constructor(){var e,t=this,i=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];n(this,"_wakeLock",null),n(this,"_isNativeSupported",(e=/ipad|iphone|ipod/i.test(navigator.userAgent)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,"wakeLock"in navigator&&!e)),n(this,"_noSleepVideo",null),n(this,"_handleVisibilityChange",()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()}),n(this,"_handleMp4TimeUpdate",()=>{this._noSleepVideo&&this._noSleepVideo.currentTime>.5&&(this._noSleepVideo.currentTime=.1*Math.random())}),n(this,"enable",o(function*(){if(t._isNativeSupported){if(t._wakeLock)return;try{t._wakeLock=yield navigator.wakeLock.request("screen"),t._wakeLock.addEventListener("release",()=>{t._wakeLock=null,t.enabled=!1,console.warn("Wake Lock released by browser.")}),t.enabled=!0,console.info("Wake Lock active.")}catch(e){t.enabled=!1,console.warn("NoSleep failed to activate WakeLock: ".concat(e.message))}}else if(t._noSleepVideo)try{yield t._noSleepVideo.play(),t.enabled=!0}catch(e){t.enabled=!1,console.warn("NoSleep failed to play Video: ".concat(e.message))}})),n(this,"disable",()=>{this._isNativeSupported?this._wakeLock&&(this._wakeLock.release().then(()=>{this._wakeLock=null}),console.info("Wake Lock released.")):this._noSleepVideo&&this._noSleepVideo.pause(),this.enabled=!1}),this.enabled=!1,i&&this._isNativeSupported?(document.addEventListener("visibilitychange",this._handleVisibilityChange),document.addEventListener("fullscreenchange",this._handleVisibilityChange),console.debug("Native Wake Lock API selected.")):(this._isNativeSupported=!1,this._setupVideoFallback())}_setupVideoFallback(){var e;this._noSleepVideo=document.createElement("video"),this._noSleepVideo.setAttribute("title","No Sleep"),this._noSleepVideo.setAttribute("playsinline",""),this._noSleepVideo.muted=!0,this._addSourceToVideo(this._noSleepVideo,"webm",a),this._addSourceToVideo(this._noSleepVideo,"mp4",l),Object.assign(this._noSleepVideo.style,{position:"absolute",left:"-100%",top:"-100%"}),null===(e=document.body)||void 0===e||e.append(this._noSleepVideo),this._noSleepVideo.addEventListener("loadedmetadata",()=>{this._noSleepVideo.duration>1?this._noSleepVideo.addEventListener("timeupdate",this._handleMp4TimeUpdate):this._noSleepVideo.setAttribute("loop","")})}_addSourceToVideo(e,t,i){var o=document.createElement("source");o.src=i,o.type="video/".concat(t),e.appendChild(o)}get isEnabled(){return this.enabled}},t})());
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/*! main.js v0.12.23 - git.io/vfn01 - AnaneyTech - MIT license */
|
|
2
|
+
(function webpackUniversalModuleDefinition(root, factory) {
|
|
3
|
+
if(typeof exports === 'object' && typeof module === 'object')
|
|
4
|
+
module.exports = factory();
|
|
5
|
+
else if(typeof define === 'function' && define.amd)
|
|
6
|
+
define([], factory);
|
|
7
|
+
else if(typeof exports === 'object')
|
|
8
|
+
exports["NoSleep"] = factory();
|
|
9
|
+
else
|
|
10
|
+
root["NoSleep"] = factory();
|
|
11
|
+
})(this, () => {
|
|
12
|
+
return /******/ (() => { // webpackBootstrap
|
|
13
|
+
/******/ "use strict";
|
|
14
|
+
/******/ // The require scope
|
|
15
|
+
/******/ var __webpack_require__ = {};
|
|
16
|
+
/******/
|
|
17
|
+
/************************************************************************/
|
|
18
|
+
/******/ /* webpack/runtime/make namespace object */
|
|
19
|
+
/******/ (() => {
|
|
20
|
+
/******/ // define __esModule on exports
|
|
21
|
+
/******/ __webpack_require__.r = (exports) => {
|
|
22
|
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
23
|
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
24
|
+
/******/ }
|
|
25
|
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
26
|
+
/******/ };
|
|
27
|
+
/******/ })();
|
|
28
|
+
/******/
|
|
29
|
+
/************************************************************************/
|
|
30
|
+
var __webpack_exports__ = {};
|
|
31
|
+
__webpack_require__.r(__webpack_exports__);
|
|
32
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
33
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
34
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
35
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
36
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
37
|
+
var {
|
|
38
|
+
webm,
|
|
39
|
+
mp4
|
|
40
|
+
} = require('./media.js');
|
|
41
|
+
var nativeWakeLockSupported = () => {
|
|
42
|
+
// Check for 'wakeLock' support AND exclude specific iOS/iPadOS user agents
|
|
43
|
+
var isIOS = /ipad|iphone|ipod/i.test(navigator.userAgent) || navigator.userAgent.includes('Mac') && 'ontouchend' in document;
|
|
44
|
+
return 'wakeLock' in navigator && !isIOS;
|
|
45
|
+
};
|
|
46
|
+
class NoSleep {
|
|
47
|
+
constructor() {
|
|
48
|
+
var _this = this;
|
|
49
|
+
var enableWakeLockIfSupported = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
50
|
+
/**
|
|
51
|
+
* @type {WakeLockSentinel | null}
|
|
52
|
+
*/
|
|
53
|
+
_defineProperty(this, "_wakeLock", null);
|
|
54
|
+
/**
|
|
55
|
+
* @type {boolean}
|
|
56
|
+
*/
|
|
57
|
+
_defineProperty(this, "_isNativeSupported", nativeWakeLockSupported());
|
|
58
|
+
/**
|
|
59
|
+
* @type {HTMLVideoElement | null}
|
|
60
|
+
*/
|
|
61
|
+
_defineProperty(this, "_noSleepVideo", null);
|
|
62
|
+
// --- Private Wake Lock Handler (Arrow function for correct 'this' binding) ---
|
|
63
|
+
_defineProperty(this, "_handleVisibilityChange", () => {
|
|
64
|
+
if (this._wakeLock !== null && document.visibilityState === 'visible') {
|
|
65
|
+
this.enable();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
_defineProperty(this, "_handleMp4TimeUpdate", () => {
|
|
69
|
+
if (this._noSleepVideo && this._noSleepVideo.currentTime > 0.5) {
|
|
70
|
+
this._noSleepVideo.currentTime = Math.random() * 0.1;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
// --- Public Methods (Class Field Declaration syntax) ---
|
|
74
|
+
_defineProperty(this, "enable", /*#__PURE__*/_asyncToGenerator(function* () {
|
|
75
|
+
if (_this._isNativeSupported) {
|
|
76
|
+
if (_this._wakeLock) return;
|
|
77
|
+
try {
|
|
78
|
+
_this._wakeLock = yield navigator.wakeLock.request('screen');
|
|
79
|
+
_this._wakeLock.addEventListener('release', () => {
|
|
80
|
+
_this._wakeLock = null;
|
|
81
|
+
_this.enabled = false;
|
|
82
|
+
console.warn('Wake Lock released by browser.');
|
|
83
|
+
});
|
|
84
|
+
_this.enabled = true;
|
|
85
|
+
console.info('Wake Lock active.');
|
|
86
|
+
} catch (err) {
|
|
87
|
+
_this.enabled = false;
|
|
88
|
+
console.warn("NoSleep failed to activate WakeLock: ".concat(err.message));
|
|
89
|
+
}
|
|
90
|
+
} else if (_this._noSleepVideo) {
|
|
91
|
+
try {
|
|
92
|
+
yield _this._noSleepVideo.play();
|
|
93
|
+
_this.enabled = true;
|
|
94
|
+
} catch (err) {
|
|
95
|
+
_this.enabled = false;
|
|
96
|
+
console.warn("NoSleep failed to play Video: ".concat(err.message));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}));
|
|
100
|
+
_defineProperty(this, "disable", () => {
|
|
101
|
+
if (this._isNativeSupported) {
|
|
102
|
+
if (this._wakeLock) {
|
|
103
|
+
this._wakeLock.release().then(() => {
|
|
104
|
+
this._wakeLock = null;
|
|
105
|
+
});
|
|
106
|
+
console.info('Wake Lock released.');
|
|
107
|
+
}
|
|
108
|
+
} else if (this._noSleepVideo) {
|
|
109
|
+
this._noSleepVideo.pause();
|
|
110
|
+
}
|
|
111
|
+
this.enabled = false;
|
|
112
|
+
});
|
|
113
|
+
this.enabled = false;
|
|
114
|
+
if (enableWakeLockIfSupported && this._isNativeSupported) {
|
|
115
|
+
document.addEventListener('visibilitychange', this._handleVisibilityChange);
|
|
116
|
+
document.addEventListener('fullscreenchange', this._handleVisibilityChange);
|
|
117
|
+
console.debug('Native Wake Lock API selected.');
|
|
118
|
+
} else {
|
|
119
|
+
this._isNativeSupported = false;
|
|
120
|
+
this._setupVideoFallback();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// --- Private Video Fallback Setup ---
|
|
124
|
+
_setupVideoFallback() {
|
|
125
|
+
var _document$body;
|
|
126
|
+
this._noSleepVideo = document.createElement('video');
|
|
127
|
+
this._noSleepVideo.setAttribute('title', 'No Sleep');
|
|
128
|
+
this._noSleepVideo.setAttribute('playsinline', '');
|
|
129
|
+
this._noSleepVideo.muted = true;
|
|
130
|
+
this._addSourceToVideo(this._noSleepVideo, 'webm', webm);
|
|
131
|
+
this._addSourceToVideo(this._noSleepVideo, 'mp4', mp4);
|
|
132
|
+
Object.assign(this._noSleepVideo.style, {
|
|
133
|
+
position: 'absolute',
|
|
134
|
+
left: '-100%',
|
|
135
|
+
top: '-100%'
|
|
136
|
+
});
|
|
137
|
+
(_document$body = document.body) === null || _document$body === void 0 || _document$body.append(this._noSleepVideo);
|
|
138
|
+
this._noSleepVideo.addEventListener('loadedmetadata', () => {
|
|
139
|
+
if (this._noSleepVideo.duration > 1) {
|
|
140
|
+
this._noSleepVideo.addEventListener('timeupdate', this._handleMp4TimeUpdate);
|
|
141
|
+
} else {
|
|
142
|
+
this._noSleepVideo.setAttribute('loop', '');
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
_addSourceToVideo(element, type, dataURI) {
|
|
147
|
+
var source = document.createElement('source');
|
|
148
|
+
source.src = dataURI;
|
|
149
|
+
source.type = "video/".concat(type);
|
|
150
|
+
element.appendChild(source);
|
|
151
|
+
}
|
|
152
|
+
get isEnabled() {
|
|
153
|
+
return this.enabled;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
module.exports = NoSleep;
|
|
157
|
+
/******/ return __webpack_exports__;
|
|
158
|
+
/******/ })()
|
|
159
|
+
;
|
|
160
|
+
});
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import js from "@eslint/js";
|
|
2
|
+
import globals from "globals";
|
|
3
|
+
import babelParser from "@babel/eslint-parser";
|
|
4
|
+
|
|
5
|
+
export default [
|
|
6
|
+
js.configs.recommended,
|
|
7
|
+
{
|
|
8
|
+
ignores: ["node_modules/", "dist/"],
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
files: ["src/**/*.js"],
|
|
12
|
+
|
|
13
|
+
languageOptions: {
|
|
14
|
+
parser: babelParser,
|
|
15
|
+
parserOptions: {
|
|
16
|
+
requireConfigFile: false,
|
|
17
|
+
babelOptions: {
|
|
18
|
+
presets: ["@babel/preset-env"]
|
|
19
|
+
},
|
|
20
|
+
ecmaVersion: 2020,
|
|
21
|
+
sourceType: "module",
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
globals: {
|
|
25
|
+
...globals.node,
|
|
26
|
+
...globals.browser,
|
|
27
|
+
require: "readonly",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
rules: {
|
|
31
|
+
"no-var": "error",
|
|
32
|
+
"no-unused-vars": [
|
|
33
|
+
"warn",
|
|
34
|
+
{
|
|
35
|
+
argsIgnorePattern: "^_"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"no-console": [
|
|
39
|
+
"warn",
|
|
40
|
+
{
|
|
41
|
+
allow: ["warn", "error", "info", "debug"]
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
indent: [
|
|
45
|
+
"error",
|
|
46
|
+
2,
|
|
47
|
+
{
|
|
48
|
+
SwitchCase: 1
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
semi: [
|
|
52
|
+
"error",
|
|
53
|
+
"always"
|
|
54
|
+
],
|
|
55
|
+
quotes: [
|
|
56
|
+
"error",
|
|
57
|
+
"single",
|
|
58
|
+
{
|
|
59
|
+
allowTemplateLiterals: true
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
files: ["webpack.config.cjs"],
|
|
66
|
+
languageOptions: {
|
|
67
|
+
globals: globals.node,
|
|
68
|
+
parserOptions: {
|
|
69
|
+
sourceType: "script",
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
rules: {
|
|
73
|
+
"no-console": "off",
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
];
|
package/nosleep.d.ts
CHANGED
|
@@ -1,22 +1,38 @@
|
|
|
1
|
-
declare
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
declare class NoSleep {
|
|
2
|
+
/**
|
|
3
|
+
* Creates a NoSleep instance.
|
|
4
|
+
* @param enableWakeLockIfSupported - Whether to attempt using the native Wake Lock API. Defaults to true.
|
|
5
|
+
*/
|
|
6
|
+
constructor(enableWakeLockIfSupported?: boolean);
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Indicates whether NoSleep is currently active (either via Wake Lock or video playback).
|
|
10
|
+
*/
|
|
11
|
+
readonly isEnabled: boolean;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Activates the NoSleep functionality.
|
|
15
|
+
* If native Wake Lock is supported, it requests a screen wake lock.
|
|
16
|
+
* Otherwise, it starts playing the hidden video.
|
|
17
|
+
*/
|
|
18
|
+
enable(): Promise<void>;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Deactivates the NoSleep functionality.
|
|
22
|
+
* If a native wake lock is active, it is released.
|
|
23
|
+
* Otherwise, the hidden video is paused.
|
|
24
|
+
*/
|
|
25
|
+
disable(): void;
|
|
26
|
+
|
|
27
|
+
// NOTE: Internal methods like _addSourceToVideo are omitted as they are not part of the public API.
|
|
14
28
|
}
|
|
15
29
|
|
|
30
|
+
// Export the class for use via default import
|
|
31
|
+
export default NoSleep;
|
|
32
|
+
|
|
33
|
+
// Also declare the class on the global Window object if intended for global script usage
|
|
16
34
|
declare global {
|
|
17
35
|
interface Window {
|
|
18
|
-
NoSleep: typeof
|
|
36
|
+
NoSleep: typeof NoSleep;
|
|
19
37
|
}
|
|
20
38
|
}
|
|
21
|
-
|
|
22
|
-
export default nosleep.NoSleep;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marsgames/nosleep.js",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.23",
|
|
4
4
|
"author": "AnaneyTech",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Prevent display sleep and enable wake lock in any Android or iOS web browser",
|
|
@@ -12,26 +12,34 @@
|
|
|
12
12
|
"display",
|
|
13
13
|
"sleep"
|
|
14
14
|
],
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
15
|
+
"type": "module",
|
|
16
|
+
"main": "dist/NoSleep.umd.js",
|
|
17
|
+
"module": "dist/NoSleep.esm.js",
|
|
18
|
+
"types": "dist/nosleep.d.ts",
|
|
18
19
|
"repository": {
|
|
19
20
|
"type": "git",
|
|
20
21
|
"url": "https://github.com/Mars-Interactive/NoSleep.js.git"
|
|
21
22
|
},
|
|
22
23
|
"devDependencies": {
|
|
23
|
-
"@babel/preset-env": "^7.
|
|
24
|
-
"babel-
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"webpack": "^
|
|
28
|
-
"
|
|
24
|
+
"@babel/preset-env": "^7.28.5",
|
|
25
|
+
"babel-loader": "^10.0.0",
|
|
26
|
+
"terser-webpack-plugin": "^5.3.14",
|
|
27
|
+
"webpack": "^5.103.0",
|
|
28
|
+
"webpack-cli": "^6.0.1",
|
|
29
|
+
"rimraf": "^6.1.2",
|
|
30
|
+
"eslint": "^9.39.1",
|
|
31
|
+
"@babel/eslint-parser": "^7.28.5",
|
|
32
|
+
"@eslint/js": "^9.39.1",
|
|
33
|
+
"globals": "^16.5.0"
|
|
29
34
|
},
|
|
30
35
|
"homepage": "https://github.com/Mars-Interactive/NoSleep.js",
|
|
31
36
|
"bugs": {
|
|
32
37
|
"url": "https://github.com/Mars-Interactive/NoSleep.js/issues"
|
|
33
38
|
},
|
|
34
39
|
"scripts": {
|
|
35
|
-
"
|
|
40
|
+
"clean": "rimraf dist",
|
|
41
|
+
"lint": "eslint .",
|
|
42
|
+
"lint:fix": "eslint . --fix",
|
|
43
|
+
"build": "pnpm run clean && pnpm run lint && webpack"
|
|
36
44
|
}
|
|
37
|
-
}
|
|
45
|
+
}
|