@mui/x-license 7.0.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.
- package/CHANGELOG.md +7295 -0
- package/LICENSE +11 -0
- package/README.md +3 -0
- package/Unstable_LicenseInfoProvider/LicenseInfoContext.d.ts +4 -0
- package/Unstable_LicenseInfoProvider/LicenseInfoContext.js +4 -0
- package/Unstable_LicenseInfoProvider/LicenseInfoProvider.d.ts +13 -0
- package/Unstable_LicenseInfoProvider/LicenseInfoProvider.js +19 -0
- package/Unstable_LicenseInfoProvider/index.d.ts +2 -0
- package/Unstable_LicenseInfoProvider/index.js +1 -0
- package/Unstable_LicenseInfoProvider/package.json +6 -0
- package/Watermark/Watermark.d.ts +8 -0
- package/Watermark/Watermark.js +46 -0
- package/Watermark/index.d.ts +1 -0
- package/Watermark/index.js +1 -0
- package/Watermark/package.json +6 -0
- package/encoding/base64.d.ts +2 -0
- package/encoding/base64.js +57 -0
- package/encoding/md5.d.ts +1 -0
- package/encoding/md5.js +42 -0
- package/generateLicense/generateLicense.d.ts +9 -0
- package/generateLicense/generateLicense.js +18 -0
- package/generateLicense/index.d.ts +1 -0
- package/generateLicense/index.js +1 -0
- package/generateLicense/package.json +6 -0
- package/index.d.ts +6 -0
- package/index.js +13 -0
- package/legacy/Unstable_LicenseInfoProvider/LicenseInfoContext.js +4 -0
- package/legacy/Unstable_LicenseInfoProvider/LicenseInfoProvider.js +18 -0
- package/legacy/Unstable_LicenseInfoProvider/index.js +1 -0
- package/legacy/Watermark/Watermark.js +44 -0
- package/legacy/Watermark/index.js +1 -0
- package/legacy/encoding/base64.js +57 -0
- package/legacy/encoding/md5.js +42 -0
- package/legacy/generateLicense/generateLicense.js +18 -0
- package/legacy/generateLicense/index.js +1 -0
- package/legacy/index.js +13 -0
- package/legacy/useLicenseVerifier/index.js +1 -0
- package/legacy/useLicenseVerifier/useLicenseVerifier.js +59 -0
- package/legacy/utils/index.js +4 -0
- package/legacy/utils/licenseErrorMessageUtils.js +31 -0
- package/legacy/utils/licenseInfo.js +40 -0
- package/legacy/utils/licenseScope.js +1 -0
- package/legacy/utils/licenseStatus.js +11 -0
- package/legacy/utils/licensingModel.js +15 -0
- package/legacy/verifyLicense/index.js +1 -0
- package/legacy/verifyLicense/verifyLicense.js +167 -0
- package/modern/Unstable_LicenseInfoProvider/LicenseInfoContext.js +4 -0
- package/modern/Unstable_LicenseInfoProvider/LicenseInfoProvider.js +19 -0
- package/modern/Unstable_LicenseInfoProvider/index.js +1 -0
- package/modern/Watermark/Watermark.js +46 -0
- package/modern/Watermark/index.js +1 -0
- package/modern/encoding/base64.js +57 -0
- package/modern/encoding/md5.js +42 -0
- package/modern/generateLicense/generateLicense.js +18 -0
- package/modern/generateLicense/index.js +1 -0
- package/modern/index.js +13 -0
- package/modern/useLicenseVerifier/index.js +1 -0
- package/modern/useLicenseVerifier/useLicenseVerifier.js +60 -0
- package/modern/utils/index.js +4 -0
- package/modern/utils/licenseErrorMessageUtils.js +34 -0
- package/modern/utils/licenseInfo.js +27 -0
- package/modern/utils/licenseScope.js +1 -0
- package/modern/utils/licenseStatus.js +11 -0
- package/modern/utils/licensingModel.js +15 -0
- package/modern/verifyLicense/index.js +1 -0
- package/modern/verifyLicense/verifyLicense.js +159 -0
- package/node/Unstable_LicenseInfoProvider/LicenseInfoContext.js +12 -0
- package/node/Unstable_LicenseInfoProvider/LicenseInfoProvider.js +28 -0
- package/node/Unstable_LicenseInfoProvider/index.js +12 -0
- package/node/Watermark/Watermark.js +54 -0
- package/node/Watermark/index.js +16 -0
- package/node/encoding/base64.js +65 -0
- package/node/encoding/md5.js +48 -0
- package/node/generateLicense/generateLicense.js +24 -0
- package/node/generateLicense/index.js +16 -0
- package/node/index.js +78 -0
- package/node/useLicenseVerifier/index.js +12 -0
- package/node/useLicenseVerifier/useLicenseVerifier.js +70 -0
- package/node/utils/index.js +38 -0
- package/node/utils/licenseErrorMessageUtils.js +45 -0
- package/node/utils/licenseInfo.js +33 -0
- package/node/utils/licenseScope.js +7 -0
- package/node/utils/licenseStatus.js +17 -0
- package/node/utils/licensingModel.js +21 -0
- package/node/verifyLicense/index.js +16 -0
- package/node/verifyLicense/verifyLicense.js +166 -0
- package/package.json +42 -0
- package/useLicenseVerifier/index.d.ts +2 -0
- package/useLicenseVerifier/index.js +1 -0
- package/useLicenseVerifier/package.json +6 -0
- package/useLicenseVerifier/useLicenseVerifier.d.ts +13 -0
- package/useLicenseVerifier/useLicenseVerifier.js +60 -0
- package/utils/index.d.ts +5 -0
- package/utils/index.js +4 -0
- package/utils/licenseErrorMessageUtils.d.ts +19 -0
- package/utils/licenseErrorMessageUtils.js +34 -0
- package/utils/licenseInfo.d.ts +11 -0
- package/utils/licenseInfo.js +27 -0
- package/utils/licenseScope.d.ts +2 -0
- package/utils/licenseScope.js +1 -0
- package/utils/licenseStatus.d.ts +10 -0
- package/utils/licenseStatus.js +11 -0
- package/utils/licensingModel.d.ts +2 -0
- package/utils/licensingModel.js +15 -0
- package/utils/package.json +6 -0
- package/verifyLicense/index.d.ts +1 -0
- package/verifyLicense/index.js +1 -0
- package/verifyLicense/package.json +6 -0
- package/verifyLicense/verifyLicense.d.ts +11 -0
- package/verifyLicense/verifyLicense.js +159 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { base64Decode, base64Encode } from '../encoding/base64';
|
|
2
|
+
import { md5 } from '../encoding/md5';
|
|
3
|
+
import { LICENSE_STATUS } from '../utils/licenseStatus';
|
|
4
|
+
import { LICENSE_SCOPES } from '../utils/licenseScope';
|
|
5
|
+
import { LICENSING_MODELS } from '../utils/licensingModel';
|
|
6
|
+
const getDefaultReleaseDate = () => {
|
|
7
|
+
const today = new Date();
|
|
8
|
+
today.setHours(0, 0, 0, 0);
|
|
9
|
+
return today;
|
|
10
|
+
};
|
|
11
|
+
export function generateReleaseInfo(releaseDate = getDefaultReleaseDate()) {
|
|
12
|
+
return base64Encode(releaseDate.getTime().toString());
|
|
13
|
+
}
|
|
14
|
+
const expiryReg = /^.*EXPIRY=([0-9]+),.*$/;
|
|
15
|
+
/**
|
|
16
|
+
* Format: ORDER:${orderNumber},EXPIRY=${expiryTimestamp},KEYVERSION=1
|
|
17
|
+
*/
|
|
18
|
+
const decodeLicenseVersion1 = license => {
|
|
19
|
+
let expiryTimestamp;
|
|
20
|
+
try {
|
|
21
|
+
expiryTimestamp = parseInt(license.match(expiryReg)[1], 10);
|
|
22
|
+
if (!expiryTimestamp || Number.isNaN(expiryTimestamp)) {
|
|
23
|
+
expiryTimestamp = null;
|
|
24
|
+
}
|
|
25
|
+
} catch (err) {
|
|
26
|
+
expiryTimestamp = null;
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
scope: 'pro',
|
|
30
|
+
licensingModel: 'perpetual',
|
|
31
|
+
expiryTimestamp
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Format: O=${orderNumber},E=${expiryTimestamp},S=${scope},LM=${licensingModel},KV=2`;
|
|
37
|
+
*/
|
|
38
|
+
const decodeLicenseVersion2 = license => {
|
|
39
|
+
const licenseInfo = {
|
|
40
|
+
scope: null,
|
|
41
|
+
licensingModel: null,
|
|
42
|
+
expiryTimestamp: null
|
|
43
|
+
};
|
|
44
|
+
license.split(',').map(token => token.split('=')).filter(el => el.length === 2).forEach(([key, value]) => {
|
|
45
|
+
if (key === 'S') {
|
|
46
|
+
licenseInfo.scope = value;
|
|
47
|
+
}
|
|
48
|
+
if (key === 'LM') {
|
|
49
|
+
licenseInfo.licensingModel = value;
|
|
50
|
+
}
|
|
51
|
+
if (key === 'E') {
|
|
52
|
+
const expiryTimestamp = parseInt(value, 10);
|
|
53
|
+
if (expiryTimestamp && !Number.isNaN(expiryTimestamp)) {
|
|
54
|
+
licenseInfo.expiryTimestamp = expiryTimestamp;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return licenseInfo;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Decode the license based on its key version and return a version-agnostic `MuiLicense` object.
|
|
63
|
+
*/
|
|
64
|
+
const decodeLicense = encodedLicense => {
|
|
65
|
+
const license = base64Decode(encodedLicense);
|
|
66
|
+
if (license.includes('KEYVERSION=1')) {
|
|
67
|
+
return decodeLicenseVersion1(license);
|
|
68
|
+
}
|
|
69
|
+
if (license.includes('KV=2')) {
|
|
70
|
+
return decodeLicenseVersion2(license);
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
};
|
|
74
|
+
export function verifyLicense({
|
|
75
|
+
releaseInfo,
|
|
76
|
+
licenseKey,
|
|
77
|
+
acceptedScopes
|
|
78
|
+
}) {
|
|
79
|
+
if (!releaseInfo) {
|
|
80
|
+
throw new Error('MUI X: The release information is missing. Not able to validate license.');
|
|
81
|
+
}
|
|
82
|
+
if (!licenseKey) {
|
|
83
|
+
return {
|
|
84
|
+
status: LICENSE_STATUS.NotFound
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const hash = licenseKey.substr(0, 32);
|
|
88
|
+
const encoded = licenseKey.substr(32);
|
|
89
|
+
if (hash !== md5(encoded)) {
|
|
90
|
+
return {
|
|
91
|
+
status: LICENSE_STATUS.Invalid
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const license = decodeLicense(encoded);
|
|
95
|
+
if (license == null) {
|
|
96
|
+
console.error('MUI X: Error checking license. Key version not found!');
|
|
97
|
+
return {
|
|
98
|
+
status: LICENSE_STATUS.Invalid
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
if (license.licensingModel == null || !LICENSING_MODELS.includes(license.licensingModel)) {
|
|
102
|
+
console.error('MUI X: Error checking license. Licensing model not found or invalid!');
|
|
103
|
+
return {
|
|
104
|
+
status: LICENSE_STATUS.Invalid
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
if (license.expiryTimestamp == null) {
|
|
108
|
+
console.error('MUI X: Error checking license. Expiry timestamp not found or invalid!');
|
|
109
|
+
return {
|
|
110
|
+
status: LICENSE_STATUS.Invalid
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
if (license.licensingModel === 'perpetual' || process.env.NODE_ENV === 'production') {
|
|
114
|
+
const pkgTimestamp = parseInt(base64Decode(releaseInfo), 10);
|
|
115
|
+
if (Number.isNaN(pkgTimestamp)) {
|
|
116
|
+
throw new Error('MUI X: The release information is invalid. Not able to validate license.');
|
|
117
|
+
}
|
|
118
|
+
if (license.expiryTimestamp < pkgTimestamp) {
|
|
119
|
+
return {
|
|
120
|
+
status: LICENSE_STATUS.ExpiredVersion
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
} else if (license.licensingModel === 'subscription' || license.licensingModel === 'annual') {
|
|
124
|
+
if (new Date().getTime() > license.expiryTimestamp) {
|
|
125
|
+
if (
|
|
126
|
+
// 30 days grace
|
|
127
|
+
new Date().getTime() < license.expiryTimestamp + 1000 * 3600 * 24 * 30 || process.env.NODE_ENV !== 'development') {
|
|
128
|
+
return {
|
|
129
|
+
status: LICENSE_STATUS.ExpiredAnnualGrace,
|
|
130
|
+
meta: {
|
|
131
|
+
expiryTimestamp: license.expiryTimestamp,
|
|
132
|
+
licenseKey
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
status: LICENSE_STATUS.ExpiredAnnual,
|
|
138
|
+
meta: {
|
|
139
|
+
expiryTimestamp: license.expiryTimestamp,
|
|
140
|
+
licenseKey
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (license.scope == null || !LICENSE_SCOPES.includes(license.scope)) {
|
|
146
|
+
console.error('Error checking license. scope not found or invalid!');
|
|
147
|
+
return {
|
|
148
|
+
status: LICENSE_STATUS.Invalid
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
if (!acceptedScopes.includes(license.scope)) {
|
|
152
|
+
return {
|
|
153
|
+
status: LICENSE_STATUS.OutOfScope
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
status: LICENSE_STATUS.Valid
|
|
158
|
+
};
|
|
159
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
9
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
10
|
+
var _default = exports.default = /*#__PURE__*/React.createContext({
|
|
11
|
+
key: undefined
|
|
12
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.LicenseInfoProvider = LicenseInfoProvider;
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _LicenseInfoContext = _interopRequireDefault(require("./LicenseInfoContext"));
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
/**
|
|
14
|
+
* @ignore - do not document.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @ignore - do not document.
|
|
19
|
+
*/
|
|
20
|
+
function LicenseInfoProvider({
|
|
21
|
+
info,
|
|
22
|
+
children
|
|
23
|
+
}) {
|
|
24
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LicenseInfoContext.default.Provider, {
|
|
25
|
+
value: info,
|
|
26
|
+
children: children
|
|
27
|
+
});
|
|
28
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "Unstable_LicenseInfoProvider", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _LicenseInfoProvider.LicenseInfoProvider;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _LicenseInfoProvider = require("./LicenseInfoProvider");
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Watermark = Watermark;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _useLicenseVerifier = require("../useLicenseVerifier");
|
|
9
|
+
var _licenseStatus = require("../utils/licenseStatus");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
function getLicenseErrorMessage(licenseStatus) {
|
|
14
|
+
switch (licenseStatus) {
|
|
15
|
+
case _licenseStatus.LICENSE_STATUS.ExpiredAnnualGrace:
|
|
16
|
+
case _licenseStatus.LICENSE_STATUS.ExpiredAnnual:
|
|
17
|
+
return 'MUI X Expired license key';
|
|
18
|
+
case _licenseStatus.LICENSE_STATUS.ExpiredVersion:
|
|
19
|
+
return 'MUI X Expired package version';
|
|
20
|
+
case _licenseStatus.LICENSE_STATUS.Invalid:
|
|
21
|
+
return 'MUI X Invalid license key';
|
|
22
|
+
case _licenseStatus.LICENSE_STATUS.OutOfScope:
|
|
23
|
+
return 'MUI X License key plan mismatch';
|
|
24
|
+
case _licenseStatus.LICENSE_STATUS.NotFound:
|
|
25
|
+
return 'MUI X Missing license key';
|
|
26
|
+
default:
|
|
27
|
+
throw new Error('Unhandled MUI X license status.');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function Watermark(props) {
|
|
31
|
+
const {
|
|
32
|
+
packageName,
|
|
33
|
+
releaseInfo
|
|
34
|
+
} = props;
|
|
35
|
+
const licenseStatus = (0, _useLicenseVerifier.useLicenseVerifier)(packageName, releaseInfo);
|
|
36
|
+
if (licenseStatus.status === _licenseStatus.LICENSE_STATUS.Valid) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
40
|
+
style: {
|
|
41
|
+
position: 'absolute',
|
|
42
|
+
pointerEvents: 'none',
|
|
43
|
+
color: '#8282829e',
|
|
44
|
+
zIndex: 100000,
|
|
45
|
+
width: '100%',
|
|
46
|
+
textAlign: 'center',
|
|
47
|
+
bottom: '50%',
|
|
48
|
+
right: 0,
|
|
49
|
+
letterSpacing: 5,
|
|
50
|
+
fontSize: 24
|
|
51
|
+
},
|
|
52
|
+
children: getLicenseErrorMessage(licenseStatus.status)
|
|
53
|
+
});
|
|
54
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _Watermark = require("./Watermark");
|
|
7
|
+
Object.keys(_Watermark).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _Watermark[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _Watermark[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.base64Encode = exports.base64Decode = void 0;
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
const _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
|
9
|
+
function utf8Encode(str) {
|
|
10
|
+
for (let n = 0; n < str.length; n++) {
|
|
11
|
+
const c = str.charCodeAt(n);
|
|
12
|
+
if (c >= 128) {
|
|
13
|
+
throw new Error('ASCII only support');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return str;
|
|
17
|
+
}
|
|
18
|
+
const base64Decode = input => {
|
|
19
|
+
let output = '';
|
|
20
|
+
let chr1, chr2, chr3;
|
|
21
|
+
let enc1, enc2, enc3, enc4;
|
|
22
|
+
let i = 0;
|
|
23
|
+
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
|
|
24
|
+
while (i < input.length) {
|
|
25
|
+
enc1 = _keyStr.indexOf(input.charAt(i++));
|
|
26
|
+
enc2 = _keyStr.indexOf(input.charAt(i++));
|
|
27
|
+
enc3 = _keyStr.indexOf(input.charAt(i++));
|
|
28
|
+
enc4 = _keyStr.indexOf(input.charAt(i++));
|
|
29
|
+
chr1 = enc1 << 2 | enc2 >> 4;
|
|
30
|
+
chr2 = (enc2 & 15) << 4 | enc3 >> 2;
|
|
31
|
+
chr3 = (enc3 & 3) << 6 | enc4;
|
|
32
|
+
output = output + String.fromCharCode(chr1);
|
|
33
|
+
if (enc3 != 64) {
|
|
34
|
+
output = output + String.fromCharCode(chr2);
|
|
35
|
+
}
|
|
36
|
+
if (enc4 != 64) {
|
|
37
|
+
output = output + String.fromCharCode(chr3);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return output;
|
|
41
|
+
};
|
|
42
|
+
exports.base64Decode = base64Decode;
|
|
43
|
+
const base64Encode = input => {
|
|
44
|
+
let output = '';
|
|
45
|
+
let chr1, chr2, chr3, enc1, enc2, enc3, enc4;
|
|
46
|
+
let i = 0;
|
|
47
|
+
input = utf8Encode(input);
|
|
48
|
+
while (i < input.length) {
|
|
49
|
+
chr1 = input.charCodeAt(i++);
|
|
50
|
+
chr2 = input.charCodeAt(i++);
|
|
51
|
+
chr3 = input.charCodeAt(i++);
|
|
52
|
+
enc1 = chr1 >> 2;
|
|
53
|
+
enc2 = (chr1 & 3) << 4 | chr2 >> 4;
|
|
54
|
+
enc3 = (chr2 & 15) << 2 | chr3 >> 6;
|
|
55
|
+
enc4 = chr3 & 63;
|
|
56
|
+
if (isNaN(chr2)) {
|
|
57
|
+
enc3 = enc4 = 64;
|
|
58
|
+
} else if (isNaN(chr3)) {
|
|
59
|
+
enc4 = 64;
|
|
60
|
+
}
|
|
61
|
+
output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
|
|
62
|
+
}
|
|
63
|
+
return output;
|
|
64
|
+
};
|
|
65
|
+
exports.base64Encode = base64Encode;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.md5 = md5;
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
// See "precomputation" in notes
|
|
9
|
+
const k = [];
|
|
10
|
+
let i = 0;
|
|
11
|
+
for (; i < 64;) {
|
|
12
|
+
k[i] = 0 | Math.sin(++i % Math.PI) * 4294967296;
|
|
13
|
+
// k[i] = 0 | (Math.abs(Math.sin(++i)) * 4294967296);
|
|
14
|
+
}
|
|
15
|
+
function md5(s) {
|
|
16
|
+
const words = [];
|
|
17
|
+
let b,
|
|
18
|
+
c,
|
|
19
|
+
d,
|
|
20
|
+
j = unescape(encodeURI(s)) + '\x80',
|
|
21
|
+
a = j.length;
|
|
22
|
+
const h = [b = 0x67452301, c = 0xefcdab89, ~b, ~c];
|
|
23
|
+
s = --a / 4 + 2 | 15;
|
|
24
|
+
|
|
25
|
+
// See "Length bits" in notes
|
|
26
|
+
words[--s] = a * 8;
|
|
27
|
+
for (; ~a;) {
|
|
28
|
+
// a !== -1
|
|
29
|
+
words[a >> 2] |= j.charCodeAt(a) << 8 * a--;
|
|
30
|
+
}
|
|
31
|
+
for (i = j = 0; i < s; i += 16) {
|
|
32
|
+
a = h;
|
|
33
|
+
for (; j < 64; a = [d = a[3], b + ((d = a[0] + [b & c | ~b & d, d & b | ~d & c, b ^ c ^ d, c ^ (b | ~d)][a = j >> 4] + k[j] + ~~words[i | [j, 5 * j + 1, 3 * j + 5, 7 * j][a] & 15]) << (a = [7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16, 23, 6, 10, 15, 21][4 * a + j++ % 4]) | d >>> -a), b, c]) {
|
|
34
|
+
b = a[1] | 0;
|
|
35
|
+
c = a[2];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// See "Integer safety" in notes
|
|
39
|
+
for (j = 4; j;) h[--j] += a[j];
|
|
40
|
+
|
|
41
|
+
// j === 0
|
|
42
|
+
}
|
|
43
|
+
for (s = ''; j < 32;) {
|
|
44
|
+
s += (h[j >> 3] >> (1 ^ j++) * 4 & 15).toString(16);
|
|
45
|
+
// s += ((h[j >> 3] >> (4 ^ 4 * j++)) & 15).toString(16);
|
|
46
|
+
}
|
|
47
|
+
return s;
|
|
48
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.generateLicense = generateLicense;
|
|
7
|
+
var _md = require("../encoding/md5");
|
|
8
|
+
var _base = require("../encoding/base64");
|
|
9
|
+
var _licenseScope = require("../utils/licenseScope");
|
|
10
|
+
var _licensingModel = require("../utils/licensingModel");
|
|
11
|
+
const licenseVersion = '2';
|
|
12
|
+
function getClearLicenseString(details) {
|
|
13
|
+
if (details.scope && !_licenseScope.LICENSE_SCOPES.includes(details.scope)) {
|
|
14
|
+
throw new Error('MUI X: Invalid scope');
|
|
15
|
+
}
|
|
16
|
+
if (details.licensingModel && !_licensingModel.LICENSING_MODELS.includes(details.licensingModel)) {
|
|
17
|
+
throw new Error('MUI X: Invalid licensing model');
|
|
18
|
+
}
|
|
19
|
+
return `O=${details.orderNumber},E=${details.expiryDate.getTime()},S=${details.scope},LM=${details.licensingModel},KV=${licenseVersion}`;
|
|
20
|
+
}
|
|
21
|
+
function generateLicense(details) {
|
|
22
|
+
const licenseStr = getClearLicenseString(details);
|
|
23
|
+
return `${(0, _md.md5)((0, _base.base64Encode)(licenseStr))}${(0, _base.base64Encode)(licenseStr)}`;
|
|
24
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _generateLicense = require("./generateLicense");
|
|
7
|
+
Object.keys(_generateLicense).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _generateLicense[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _generateLicense[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
package/node/index.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @mui/x-license v7.0.0-beta.2
|
|
3
|
+
*
|
|
4
|
+
* @license MUI X Commercial
|
|
5
|
+
* This source code is licensed under the commercial license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
"use strict";
|
|
9
|
+
|
|
10
|
+
Object.defineProperty(exports, "__esModule", {
|
|
11
|
+
value: true
|
|
12
|
+
});
|
|
13
|
+
var _generateLicense = require("./generateLicense");
|
|
14
|
+
Object.keys(_generateLicense).forEach(function (key) {
|
|
15
|
+
if (key === "default" || key === "__esModule") return;
|
|
16
|
+
if (key in exports && exports[key] === _generateLicense[key]) return;
|
|
17
|
+
Object.defineProperty(exports, key, {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () {
|
|
20
|
+
return _generateLicense[key];
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
var _utils = require("./utils");
|
|
25
|
+
Object.keys(_utils).forEach(function (key) {
|
|
26
|
+
if (key === "default" || key === "__esModule") return;
|
|
27
|
+
if (key in exports && exports[key] === _utils[key]) return;
|
|
28
|
+
Object.defineProperty(exports, key, {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
get: function () {
|
|
31
|
+
return _utils[key];
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
var _verifyLicense = require("./verifyLicense");
|
|
36
|
+
Object.keys(_verifyLicense).forEach(function (key) {
|
|
37
|
+
if (key === "default" || key === "__esModule") return;
|
|
38
|
+
if (key in exports && exports[key] === _verifyLicense[key]) return;
|
|
39
|
+
Object.defineProperty(exports, key, {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
get: function () {
|
|
42
|
+
return _verifyLicense[key];
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
var _useLicenseVerifier = require("./useLicenseVerifier");
|
|
47
|
+
Object.keys(_useLicenseVerifier).forEach(function (key) {
|
|
48
|
+
if (key === "default" || key === "__esModule") return;
|
|
49
|
+
if (key in exports && exports[key] === _useLicenseVerifier[key]) return;
|
|
50
|
+
Object.defineProperty(exports, key, {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
get: function () {
|
|
53
|
+
return _useLicenseVerifier[key];
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
var _Watermark = require("./Watermark");
|
|
58
|
+
Object.keys(_Watermark).forEach(function (key) {
|
|
59
|
+
if (key === "default" || key === "__esModule") return;
|
|
60
|
+
if (key in exports && exports[key] === _Watermark[key]) return;
|
|
61
|
+
Object.defineProperty(exports, key, {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
get: function () {
|
|
64
|
+
return _Watermark[key];
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
var _Unstable_LicenseInfoProvider = require("./Unstable_LicenseInfoProvider");
|
|
69
|
+
Object.keys(_Unstable_LicenseInfoProvider).forEach(function (key) {
|
|
70
|
+
if (key === "default" || key === "__esModule") return;
|
|
71
|
+
if (key in exports && exports[key] === _Unstable_LicenseInfoProvider[key]) return;
|
|
72
|
+
Object.defineProperty(exports, key, {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return _Unstable_LicenseInfoProvider[key];
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useLicenseVerifier", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _useLicenseVerifier.useLicenseVerifier;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _useLicenseVerifier = require("./useLicenseVerifier");
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.sharedLicenseStatuses = void 0;
|
|
8
|
+
exports.useLicenseVerifier = useLicenseVerifier;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _verifyLicense = require("../verifyLicense/verifyLicense");
|
|
12
|
+
var _licenseInfo = require("../utils/licenseInfo");
|
|
13
|
+
var _licenseErrorMessageUtils = require("../utils/licenseErrorMessageUtils");
|
|
14
|
+
var _licenseStatus = require("../utils/licenseStatus");
|
|
15
|
+
var _LicenseInfoContext = _interopRequireDefault(require("../Unstable_LicenseInfoProvider/LicenseInfoContext"));
|
|
16
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
17
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
18
|
+
const sharedLicenseStatuses = exports.sharedLicenseStatuses = {};
|
|
19
|
+
function useLicenseVerifier(packageName, releaseInfo) {
|
|
20
|
+
const {
|
|
21
|
+
key: contextKey
|
|
22
|
+
} = React.useContext(_LicenseInfoContext.default);
|
|
23
|
+
return React.useMemo(() => {
|
|
24
|
+
const licenseKey = contextKey ?? _licenseInfo.LicenseInfo.getLicenseKey();
|
|
25
|
+
|
|
26
|
+
// Cache the response to not trigger the error twice.
|
|
27
|
+
if (sharedLicenseStatuses[packageName] && sharedLicenseStatuses[packageName].key === licenseKey) {
|
|
28
|
+
return sharedLicenseStatuses[packageName].licenseVerifier;
|
|
29
|
+
}
|
|
30
|
+
const acceptedScopes = packageName.includes('premium') ? ['premium'] : ['pro', 'premium'];
|
|
31
|
+
const plan = packageName.includes('premium') ? 'Premium' : 'Pro';
|
|
32
|
+
const licenseStatus = (0, _verifyLicense.verifyLicense)({
|
|
33
|
+
releaseInfo,
|
|
34
|
+
licenseKey,
|
|
35
|
+
acceptedScopes
|
|
36
|
+
});
|
|
37
|
+
const fullPackageName = `@mui/${packageName}`;
|
|
38
|
+
if (licenseStatus.status === _licenseStatus.LICENSE_STATUS.Valid) {
|
|
39
|
+
// Skip
|
|
40
|
+
} else if (licenseStatus.status === _licenseStatus.LICENSE_STATUS.Invalid) {
|
|
41
|
+
(0, _licenseErrorMessageUtils.showInvalidLicenseKeyError)();
|
|
42
|
+
} else if (licenseStatus.status === _licenseStatus.LICENSE_STATUS.OutOfScope) {
|
|
43
|
+
(0, _licenseErrorMessageUtils.showLicenseKeyPlanMismatchError)();
|
|
44
|
+
} else if (licenseStatus.status === _licenseStatus.LICENSE_STATUS.NotFound) {
|
|
45
|
+
(0, _licenseErrorMessageUtils.showMissingLicenseKeyError)({
|
|
46
|
+
plan,
|
|
47
|
+
packageName: fullPackageName
|
|
48
|
+
});
|
|
49
|
+
} else if (licenseStatus.status === _licenseStatus.LICENSE_STATUS.ExpiredAnnualGrace) {
|
|
50
|
+
(0, _licenseErrorMessageUtils.showExpiredAnnualGraceLicenseKeyError)((0, _extends2.default)({
|
|
51
|
+
plan
|
|
52
|
+
}, licenseStatus.meta));
|
|
53
|
+
} else if (licenseStatus.status === _licenseStatus.LICENSE_STATUS.ExpiredAnnual) {
|
|
54
|
+
(0, _licenseErrorMessageUtils.showExpiredAnnualLicenseKeyError)((0, _extends2.default)({
|
|
55
|
+
plan
|
|
56
|
+
}, licenseStatus.meta));
|
|
57
|
+
} else if (licenseStatus.status === _licenseStatus.LICENSE_STATUS.ExpiredVersion) {
|
|
58
|
+
(0, _licenseErrorMessageUtils.showExpiredPackageVersionError)({
|
|
59
|
+
packageName: fullPackageName
|
|
60
|
+
});
|
|
61
|
+
} else if (process.env.NODE_ENV !== 'production') {
|
|
62
|
+
throw new Error('missing status handler');
|
|
63
|
+
}
|
|
64
|
+
sharedLicenseStatuses[packageName] = {
|
|
65
|
+
key: licenseKey,
|
|
66
|
+
licenseVerifier: licenseStatus
|
|
67
|
+
};
|
|
68
|
+
return licenseStatus;
|
|
69
|
+
}, [packageName, releaseInfo, contextKey]);
|
|
70
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _licenseErrorMessageUtils = require("./licenseErrorMessageUtils");
|
|
7
|
+
Object.keys(_licenseErrorMessageUtils).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _licenseErrorMessageUtils[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _licenseErrorMessageUtils[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _licenseInfo = require("./licenseInfo");
|
|
18
|
+
Object.keys(_licenseInfo).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _licenseInfo[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _licenseInfo[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _licenseStatus = require("./licenseStatus");
|
|
29
|
+
Object.keys(_licenseStatus).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _licenseStatus[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _licenseStatus[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|