@metamask/snaps-utils 0.24.1 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/caveats.d.ts +5 -1
- package/dist/caveats.js +4 -0
- package/dist/caveats.js.map +1 -1
- package/dist/eval-worker.js.map +1 -1
- package/dist/eval.js +1 -1
- package/dist/eval.js.map +1 -1
- package/dist/fs.js.map +1 -1
- package/dist/json-rpc.d.ts +19 -1
- package/dist/json-rpc.js +25 -1
- package/dist/json-rpc.js.map +1 -1
- package/dist/manifest/manifest.js +6 -6
- package/dist/manifest/manifest.js.map +1 -1
- package/dist/manifest/validation.d.ts +28 -2
- package/dist/manifest/validation.js +7 -3
- package/dist/manifest/validation.js.map +1 -1
- package/dist/mock.js +4 -1
- package/dist/mock.js.map +1 -1
- package/dist/namespace.d.ts +1 -1
- package/dist/namespace.js +4 -2
- package/dist/namespace.js.map +1 -1
- package/dist/notification.js +1 -1
- package/dist/notification.js.map +1 -1
- package/dist/npm.js.map +1 -1
- package/dist/object.js.map +1 -1
- package/dist/post-process.js +3 -2
- package/dist/post-process.js.map +1 -1
- package/dist/snaps.d.ts +2 -1
- package/dist/snaps.js +2 -2
- package/dist/snaps.js.map +1 -1
- package/dist/types.d.ts +6 -6
- package/dist/types.js +6 -9
- package/dist/types.js.map +1 -1
- package/dist/versions.d.ts +81 -12
- package/dist/versions.js +61 -17
- package/dist/versions.js.map +1 -1
- package/package.json +17 -15
package/dist/versions.js
CHANGED
|
@@ -1,8 +1,63 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.resolveVersionRange = exports.getTargetVersion = exports.satisfiesVersionRange = exports.gtVersion = exports.assertIsSemVerRange = exports.assertIsSemVerVersion = exports.isValidSemVerRange = exports.isValidSemVerVersion = exports.VersionRangeStruct = exports.VersionStruct = exports.DEFAULT_REQUESTED_SNAP_VERSION = void 0;
|
|
4
|
+
const utils_1 = require("@metamask/utils");
|
|
4
5
|
const semver_1 = require("semver");
|
|
6
|
+
const superstruct_1 = require("superstruct");
|
|
5
7
|
exports.DEFAULT_REQUESTED_SNAP_VERSION = '*';
|
|
8
|
+
/**
|
|
9
|
+
* A struct for validating a version string.
|
|
10
|
+
*/
|
|
11
|
+
exports.VersionStruct = (0, superstruct_1.refine)((0, superstruct_1.string)(), 'Version', (value) => {
|
|
12
|
+
if ((0, semver_1.valid)(value) === null) {
|
|
13
|
+
return `Expected SemVer version, got "${value}"`;
|
|
14
|
+
}
|
|
15
|
+
return true;
|
|
16
|
+
});
|
|
17
|
+
exports.VersionRangeStruct = (0, superstruct_1.refine)((0, superstruct_1.string)(), 'Version range', (value) => {
|
|
18
|
+
if ((0, semver_1.validRange)(value) === null) {
|
|
19
|
+
return `Expected SemVer range, got "${value}"`;
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* Checks whether a SemVer version is valid.
|
|
25
|
+
*
|
|
26
|
+
* @param version - A potential version.
|
|
27
|
+
* @returns `true` if the version is valid, and `false` otherwise.
|
|
28
|
+
*/
|
|
29
|
+
function isValidSemVerVersion(version) {
|
|
30
|
+
return (0, superstruct_1.is)(version, exports.VersionStruct);
|
|
31
|
+
}
|
|
32
|
+
exports.isValidSemVerVersion = isValidSemVerVersion;
|
|
33
|
+
/**
|
|
34
|
+
* Checks whether a SemVer version range is valid.
|
|
35
|
+
*
|
|
36
|
+
* @param versionRange - A potential version range.
|
|
37
|
+
* @returns `true` if the version range is valid, and `false` otherwise.
|
|
38
|
+
*/
|
|
39
|
+
function isValidSemVerRange(versionRange) {
|
|
40
|
+
return (0, superstruct_1.is)(versionRange, exports.VersionRangeStruct);
|
|
41
|
+
}
|
|
42
|
+
exports.isValidSemVerRange = isValidSemVerRange;
|
|
43
|
+
/**
|
|
44
|
+
* Asserts that a value is a valid concrete SemVer version.
|
|
45
|
+
*
|
|
46
|
+
* @param version - A potential SemVer concrete version.
|
|
47
|
+
*/
|
|
48
|
+
function assertIsSemVerVersion(version) {
|
|
49
|
+
(0, utils_1.assertStruct)(version, exports.VersionStruct);
|
|
50
|
+
}
|
|
51
|
+
exports.assertIsSemVerVersion = assertIsSemVerVersion;
|
|
52
|
+
/**
|
|
53
|
+
* Asserts that a value is a valid SemVer range.
|
|
54
|
+
*
|
|
55
|
+
* @param range - A potential SemVer range.
|
|
56
|
+
*/
|
|
57
|
+
function assertIsSemVerRange(range) {
|
|
58
|
+
(0, utils_1.assertStruct)(range, exports.VersionRangeStruct);
|
|
59
|
+
}
|
|
60
|
+
exports.assertIsSemVerRange = assertIsSemVerRange;
|
|
6
61
|
/**
|
|
7
62
|
* Checks whether a SemVer version is greater than another.
|
|
8
63
|
*
|
|
@@ -11,7 +66,7 @@ exports.DEFAULT_REQUESTED_SNAP_VERSION = '*';
|
|
|
11
66
|
* @returns `version1 > version2`.
|
|
12
67
|
*/
|
|
13
68
|
function gtVersion(version1, version2) {
|
|
14
|
-
return (0, semver_1.gt)(version1, version2
|
|
69
|
+
return (0, semver_1.gt)(version1, version2);
|
|
15
70
|
}
|
|
16
71
|
exports.gtVersion = gtVersion;
|
|
17
72
|
/**
|
|
@@ -56,22 +111,11 @@ exports.getTargetVersion = getTargetVersion;
|
|
|
56
111
|
* @returns `*` if the version is `undefined` or `latest", otherwise returns
|
|
57
112
|
* the specified version.
|
|
58
113
|
*/
|
|
59
|
-
function
|
|
114
|
+
function resolveVersionRange(version) {
|
|
60
115
|
if (version === undefined || version === 'latest') {
|
|
61
|
-
return exports.DEFAULT_REQUESTED_SNAP_VERSION;
|
|
116
|
+
return [undefined, exports.DEFAULT_REQUESTED_SNAP_VERSION];
|
|
62
117
|
}
|
|
63
|
-
return version;
|
|
64
|
-
}
|
|
65
|
-
exports.resolveVersion = resolveVersion;
|
|
66
|
-
/**
|
|
67
|
-
* Checks whether a SemVer version range is valid.
|
|
68
|
-
*
|
|
69
|
-
* @param versionRange - A potential version range.
|
|
70
|
-
* @returns `true` if the version range is valid, and `false` otherwise.
|
|
71
|
-
*/
|
|
72
|
-
function isValidSnapVersionRange(versionRange) {
|
|
73
|
-
return Boolean(typeof versionRange === 'string' &&
|
|
74
|
-
(0, semver_1.validRange)(versionRange, { includePrerelease: true }) !== null);
|
|
118
|
+
return (0, superstruct_1.validate)(version, exports.VersionRangeStruct);
|
|
75
119
|
}
|
|
76
|
-
exports.
|
|
120
|
+
exports.resolveVersionRange = resolveVersionRange;
|
|
77
121
|
//# sourceMappingURL=versions.js.map
|
package/dist/versions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../src/versions.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../src/versions.ts"],"names":[],"mappings":";;;AAAA,2CAAqD;AACrD,mCAMgB;AAChB,6CAAmE;AAItD,QAAA,8BAA8B,GAAG,GAAkB,CAAC;AA8CjE;;GAEG;AACU,QAAA,aAAa,GAAG,IAAA,oBAAM,EACjC,IAAA,oBAAM,GAA4C,EAClD,SAAS,EACT,CAAC,KAAK,EAAE,EAAE;IACR,IAAI,IAAA,cAAkB,EAAC,KAAK,CAAC,KAAK,IAAI,EAAE;QACtC,OAAO,iCAAiC,KAAK,GAAG,CAAC;KAClD;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CACF,CAAC;AAEW,QAAA,kBAAkB,GAAG,IAAA,oBAAM,EACtC,IAAA,oBAAM,GAA0C,EAChD,eAAe,EACf,CAAC,KAAK,EAAE,EAAE;IACR,IAAI,IAAA,mBAAgB,EAAC,KAAK,CAAC,KAAK,IAAI,EAAE;QACpC,OAAO,+BAA+B,KAAK,GAAG,CAAC;KAChD;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CACF,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,oBAAoB,CAClC,OAAgB;IAEhB,OAAO,IAAA,gBAAE,EAAC,OAAO,EAAE,qBAAa,CAAC,CAAC;AACpC,CAAC;AAJD,oDAIC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,YAAqB;IAErB,OAAO,IAAA,gBAAE,EAAC,YAAY,EAAE,0BAAkB,CAAC,CAAC;AAC9C,CAAC;AAJD,gDAIC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CACnC,OAAgB;IAEhB,IAAA,oBAAY,EAAC,OAAO,EAAE,qBAAa,CAAC,CAAC;AACvC,CAAC;AAJD,sDAIC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CACjC,KAAc;IAEd,IAAA,oBAAY,EAAC,KAAK,EAAE,0BAAkB,CAAC,CAAC;AAC1C,CAAC;AAJD,kDAIC;AAED;;;;;;GAMG;AACH,SAAgB,SAAS,CACvB,QAAuB,EACvB,QAAuB;IAEvB,OAAO,IAAA,WAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AALD,8BAKC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CACnC,OAAsB,EACtB,YAAyB;IAEzB,OAAO,IAAA,kBAAe,EAAC,OAAO,EAAE,YAAY,EAAE;QAC5C,iBAAiB,EAAE,IAAI;KACxB,CAAC,CAAC;AACL,CAAC;AAPD,sDAOC;AAED;;;;;;;;;GASG;AACH,SAAgB,gBAAgB,CAC9B,QAAyB,EACzB,YAAyB;IAEzB,MAAM,0BAA0B,GAAG,IAAA,sBAAmB,EACpD,QAAQ,EACR,YAAY,CACb,CAAC;IAEF,4CAA4C;IAC5C,IAAI,0BAA0B,EAAE;QAC9B,OAAO,0BAA0B,CAAC;KACnC;IAED,iFAAiF;IACjF,OAAO,IAAA,sBAAmB,EAAC,QAAQ,EAAE,YAAY,EAAE;QACjD,iBAAiB,EAAE,IAAI;KACxB,CAAC,CAAC;AACL,CAAC;AAlBD,4CAkBC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CACjC,OAAc;IAEd,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,EAAE;QACjD,OAAO,CAAC,SAAS,EAAE,sCAA8B,CAAC,CAAC;KACpD;IACD,OAAO,IAAA,sBAAQ,EAAC,OAAO,EAAE,0BAAkB,CAAC,CAAC;AAC/C,CAAC;AAPD,kDAOC","sourcesContent":["import { assertStruct, Json } from '@metamask/utils';\nimport {\n gt as gtSemver,\n maxSatisfying as maxSatisfyingSemver,\n satisfies as satisfiesSemver,\n valid as validSemVerVersion,\n validRange as validSemVerRange,\n} from 'semver';\nimport { is, refine, string, Struct, validate } from 'superstruct';\n\nimport { Opaque } from './types';\n\nexport const DEFAULT_REQUESTED_SNAP_VERSION = '*' as SemVerRange;\n\n/**\n * {@link https://codemix.com/opaque-types-in-javascript/ Opaque} type for SemVer ranges.\n *\n * @example Use {@link assertIsSemVerRange} and {@link isValidSemVerRange} to cast to proper type.\n * ```typescript\n * const unsafeRange: string = dataFromUser();\n * assertIsSemVerRange(unsafeRange);\n * unsafeRange\n * // ^? SemVerRange\n * ```\n * @example If you know what you're doing and want to side-step type safety, casting from a string works correctly.\n * ```typescript\n * const unsafeRange: string = dataFromUser();\n * unsafeRange as SemVerRange;\n * // ^? SemVerRange\n * ```\n * @see {@link assertIsSemVerRange}\n * @see {@link isValidSemVerRange}\n */\nexport type SemVerRange = Opaque<string, typeof semVerRange>;\ndeclare const semVerRange: unique symbol;\n\n/**\n * {@link https://codemix.com/opaque-types-in-javascript/ Opaque} type for singular SemVer version.\n *\n * @example Use {@link assertIsSemVerVersion} and {@link isValidSemVerVersion} to cast to proper type.\n * ```typescript\n * const unsafeVersion: string = dataFromUser();\n * assertIsSemVerVersion(unsafeRange);\n * unsafeVersion\n * // ^? SemVerVersion\n * ```\n * @example If you know what you're doing and want to side-step type safety, casting from a string works correctly.\n * ```typescript\n * const unsafeVersion: string = dataFromUser();\n * unsafeRange as SemVerVersion;\n * // ^? SemVerVersion\n * ```\n * @see {@link assertIsSemVerVersion}\n * @see {@link isValidSemVerVersion}\n */\nexport type SemVerVersion = Opaque<string, typeof semVerVersion>;\ndeclare const semVerVersion: unique symbol;\n\n/**\n * A struct for validating a version string.\n */\nexport const VersionStruct = refine<SemVerVersion, null>(\n string() as unknown as Struct<SemVerVersion, null>,\n 'Version',\n (value) => {\n if (validSemVerVersion(value) === null) {\n return `Expected SemVer version, got \"${value}\"`;\n }\n return true;\n },\n);\n\nexport const VersionRangeStruct = refine<SemVerRange, null>(\n string() as unknown as Struct<SemVerRange, null>,\n 'Version range',\n (value) => {\n if (validSemVerRange(value) === null) {\n return `Expected SemVer range, got \"${value}\"`;\n }\n return true;\n },\n);\n\n/**\n * Checks whether a SemVer version is valid.\n *\n * @param version - A potential version.\n * @returns `true` if the version is valid, and `false` otherwise.\n */\nexport function isValidSemVerVersion(\n version: unknown,\n): version is SemVerVersion {\n return is(version, VersionStruct);\n}\n\n/**\n * Checks whether a SemVer version range is valid.\n *\n * @param versionRange - A potential version range.\n * @returns `true` if the version range is valid, and `false` otherwise.\n */\nexport function isValidSemVerRange(\n versionRange: unknown,\n): versionRange is SemVerRange {\n return is(versionRange, VersionRangeStruct);\n}\n\n/**\n * Asserts that a value is a valid concrete SemVer version.\n *\n * @param version - A potential SemVer concrete version.\n */\nexport function assertIsSemVerVersion(\n version: unknown,\n): asserts version is SemVerVersion {\n assertStruct(version, VersionStruct);\n}\n\n/**\n * Asserts that a value is a valid SemVer range.\n *\n * @param range - A potential SemVer range.\n */\nexport function assertIsSemVerRange(\n range: unknown,\n): asserts range is SemVerRange {\n assertStruct(range, VersionRangeStruct);\n}\n\n/**\n * Checks whether a SemVer version is greater than another.\n *\n * @param version1 - The left-hand version.\n * @param version2 - The right-hand version.\n * @returns `version1 > version2`.\n */\nexport function gtVersion(\n version1: SemVerVersion,\n version2: SemVerVersion,\n): boolean {\n return gtSemver(version1, version2);\n}\n\n/**\n * Returns whether a SemVer version satisfies a SemVer range.\n *\n * @param version - The SemVer version to check.\n * @param versionRange - The SemVer version range to check against.\n * @returns Whether the version satisfied the version range.\n */\nexport function satisfiesVersionRange(\n version: SemVerVersion,\n versionRange: SemVerRange,\n): boolean {\n return satisfiesSemver(version, versionRange, {\n includePrerelease: true,\n });\n}\n\n/**\n * Return the highest version in the list that satisfies the range, or `null` if\n * none of them do. For the satisfaction check, pre-release versions will only\n * be checked if no satisfactory non-prerelease version is found first.\n *\n * @param versions - The list of version to check.\n * @param versionRange - The SemVer version range to check against.\n * @returns The highest version in the list that satisfies the range,\n * or `null` if none of them do.\n */\nexport function getTargetVersion(\n versions: SemVerVersion[],\n versionRange: SemVerRange,\n): SemVerVersion | null {\n const maxSatisfyingNonPreRelease = maxSatisfyingSemver(\n versions,\n versionRange,\n );\n\n // By default don't use pre-release versions\n if (maxSatisfyingNonPreRelease) {\n return maxSatisfyingNonPreRelease;\n }\n\n // If no satisfying release version is found by default, try pre-release versions\n return maxSatisfyingSemver(versions, versionRange, {\n includePrerelease: true,\n });\n}\n\n/**\n * Parse a version received by some subject attempting to access a snap.\n *\n * @param version - The received version value.\n * @returns `*` if the version is `undefined` or `latest\", otherwise returns\n * the specified version.\n */\nexport function resolveVersionRange(\n version?: Json,\n): [error: undefined, range: SemVerRange] | [error: Error, range: undefined] {\n if (version === undefined || version === 'latest') {\n return [undefined, DEFAULT_REQUESTED_SNAP_VERSION];\n }\n return validate(version, VersionRangeStruct);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask/snaps-utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/MetaMask/snaps-monorepo.git"
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@babel/core": "^7.18.6",
|
|
54
54
|
"@babel/types": "^7.18.7",
|
|
55
|
-
"@metamask/snaps-types": "^0.
|
|
55
|
+
"@metamask/snaps-types": "^0.25.0",
|
|
56
56
|
"@metamask/utils": "^3.3.1",
|
|
57
57
|
"@noble/hashes": "^1.1.3",
|
|
58
58
|
"@scure/base": "^1.1.1",
|
|
@@ -66,29 +66,31 @@
|
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@lavamoat/allow-scripts": "^2.0.3",
|
|
69
|
-
"@metamask/auto-changelog": "^
|
|
70
|
-
"@metamask/eslint-config": "^
|
|
71
|
-
"@metamask/eslint-config-jest": "^
|
|
72
|
-
"@metamask/eslint-config-nodejs": "^
|
|
73
|
-
"@metamask/eslint-config-typescript": "^
|
|
69
|
+
"@metamask/auto-changelog": "^3.1.0",
|
|
70
|
+
"@metamask/eslint-config": "^11.0.0",
|
|
71
|
+
"@metamask/eslint-config-jest": "^11.0.0",
|
|
72
|
+
"@metamask/eslint-config-nodejs": "^11.0.1",
|
|
73
|
+
"@metamask/eslint-config-typescript": "^11.0.0",
|
|
74
74
|
"@types/jest": "^27.5.1",
|
|
75
75
|
"@types/semver": "^7.3.10",
|
|
76
|
+
"@typescript-eslint/eslint-plugin": "^5.42.1",
|
|
77
|
+
"@typescript-eslint/parser": "^5.42.1",
|
|
76
78
|
"deepmerge": "^4.2.2",
|
|
77
|
-
"eslint": "^
|
|
78
|
-
"eslint-config-prettier": "^8.
|
|
79
|
-
"eslint-plugin-import": "^2.
|
|
80
|
-
"eslint-plugin-jest": "^
|
|
81
|
-
"eslint-plugin-jsdoc": "^
|
|
79
|
+
"eslint": "^8.27.0",
|
|
80
|
+
"eslint-config-prettier": "^8.5.0",
|
|
81
|
+
"eslint-plugin-import": "^2.26.0",
|
|
82
|
+
"eslint-plugin-jest": "^27.1.5",
|
|
83
|
+
"eslint-plugin-jsdoc": "^39.6.2",
|
|
82
84
|
"eslint-plugin-node": "^11.1.0",
|
|
83
|
-
"eslint-plugin-prettier": "^
|
|
85
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
84
86
|
"jest": "^29.0.2",
|
|
85
87
|
"jest-it-up": "^2.0.0",
|
|
86
88
|
"memfs": "^3.4.7",
|
|
87
|
-
"prettier": "^2.
|
|
89
|
+
"prettier": "^2.7.1",
|
|
88
90
|
"prettier-plugin-packagejson": "^2.2.11",
|
|
89
91
|
"rimraf": "^3.0.2",
|
|
90
92
|
"ts-jest": "^29.0.0",
|
|
91
|
-
"typescript": "
|
|
93
|
+
"typescript": "~4.8.4"
|
|
92
94
|
},
|
|
93
95
|
"engines": {
|
|
94
96
|
"node": ">=16.0.0"
|