@open-rpc/schema-utils-js
Advanced tools
Comparing version 2.0.5 to 2.1.0
@@ -55,2 +55,3 @@ "use strict"; | ||
var dereferencer_1 = __importDefault(require("@json-schema-tools/dereferencer")); | ||
var meta_schema_1 = __importDefault(require("@open-rpc/meta-schema")); | ||
var reference_resolver_1 = __importDefault(require("@json-schema-tools/reference-resolver")); | ||
@@ -90,3 +91,4 @@ var fast_safe_stringify_1 = __importDefault(require("fast-safe-stringify")); | ||
// returns resolved value of the reference | ||
return [2 /*return*/, _a.sent()]; | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
return [2 /*return*/, (_a.sent())]; | ||
case 3: | ||
@@ -100,3 +102,3 @@ err_1 = _a.sent(); | ||
"pointer: ".concat($ref), | ||
"reference object: ".concat((0, fast_safe_stringify_1.default)(item)) | ||
"reference object: ".concat((0, fast_safe_stringify_1.default)(item)), | ||
].join("\n")); | ||
@@ -130,2 +132,10 @@ case 4: return [2 /*return*/]; | ||
}); }; | ||
var matchDerefItems = function (items, doc, resolver) { return __awaiter(void 0, void 0, void 0, function () { | ||
return __generator(this, function (_a) { | ||
if (Array.isArray(items)) { | ||
return [2 /*return*/, derefItems(items, doc, resolver)]; | ||
} | ||
return [2 /*return*/, derefItem(items, doc, resolver)]; | ||
}); | ||
}); }; | ||
var handleSchemaWithSchemaComponents = function (s, schemaComponents) { return __awaiter(void 0, void 0, void 0, function () { | ||
@@ -160,3 +170,3 @@ var dereffer, dereffed, e_1; | ||
"error message: ".concat(e_1.message), | ||
"schema in question: ".concat((0, fast_safe_stringify_1.default)(s)) | ||
"schema in question: ".concat((0, fast_safe_stringify_1.default)(s)), | ||
].join("\n")); | ||
@@ -232,2 +242,208 @@ case 4: return [2 /*return*/]; | ||
}); }; | ||
// remap the definitions map to remove the definitions. prefix and replace it with the parent object type | ||
var remap = function (definitionsMap) { | ||
var _a, _b; | ||
var remappedDefinitions = {}; | ||
var graph = new Map(); | ||
var resolved = new Set(); | ||
// Build dependency graph | ||
for (var _i = 0, _c = Object.entries(definitionsMap); _i < _c.length; _i++) { | ||
var _d = _c[_i], key = _d[0], paths = _d[1]; | ||
graph.set(key, new Set()); | ||
for (var _e = 0, paths_1 = paths; _e < paths_1.length; _e++) { | ||
var path = paths_1[_e]; | ||
var parts = path.split("."); | ||
if (parts.length === 1) { | ||
(_a = graph.get(key)) === null || _a === void 0 ? void 0 : _a.add(path); | ||
} | ||
else if (path.startsWith("definitions.")) { | ||
parts.shift(); // Remove 'definitions' | ||
var parentType = parts[0]; | ||
if (parentType && parentType !== key) { | ||
(_b = graph.get(key)) === null || _b === void 0 ? void 0 : _b.add(parentType); | ||
} | ||
} | ||
} | ||
} | ||
// Helper to resolve a definition and its dependencies | ||
var resolveDef = function (key) { | ||
var _a; | ||
if (resolved.has(key)) | ||
return; | ||
// Resolve dependencies first | ||
(_a = graph.get(key)) === null || _a === void 0 ? void 0 : _a.forEach(function (dep) { return resolveDef(dep); }); | ||
if (!definitionsMap[key]) { | ||
return key; | ||
} | ||
var accumulatedPaths = []; | ||
definitionsMap[key].forEach(function (path) { | ||
if (!path.startsWith("definitions.")) { | ||
accumulatedPaths.push(path); | ||
return; | ||
} | ||
var parts = path.split("."); | ||
parts.shift(); // Remove 'definitions' | ||
var parentType = parts.shift(); | ||
var remainingPath = parts.join("."); | ||
if (!parentType || !remappedDefinitions[parentType]) { | ||
accumulatedPaths.push(remainingPath); | ||
return; | ||
} | ||
remappedDefinitions[parentType].forEach(function (basePath) { | ||
var newPath = basePath ? "".concat(basePath, ".").concat(remainingPath) : remainingPath; | ||
accumulatedPaths.push(newPath); | ||
}); | ||
}); | ||
remappedDefinitions[key] = accumulatedPaths; | ||
resolved.add(key); | ||
}; | ||
// Resolve all definitions | ||
Object.keys(definitionsMap).forEach(resolveDef); | ||
return remappedDefinitions; | ||
}; | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
function createDefinitionsMap(schema, path) { | ||
if (path === void 0) { path = ""; } | ||
var definitionsMap = {}; | ||
var simplifyPath = function (path) { | ||
// Remove .items, .patternProperties, and anything after them | ||
return path.split(/\.(items|patternProperties)/)[0]; | ||
}; | ||
var addToMap = function (definitionName, currentPath) { | ||
if (definitionName && definitionName !== "referenceObject") { | ||
if (!definitionsMap[definitionName]) { | ||
definitionsMap[definitionName] = []; | ||
} | ||
var simplifiedPath = simplifyPath(currentPath); | ||
if (simplifiedPath && !definitionsMap[definitionName].includes(simplifiedPath)) { | ||
definitionsMap[definitionName].push(simplifiedPath); | ||
} | ||
} | ||
}; | ||
// Handle object properties recursively | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
var traverseObject = function (obj, currentPath) { | ||
if (!obj || typeof obj !== "object") | ||
return; | ||
// Handle direct $ref | ||
if ("$ref" in obj) { | ||
var definitionName = obj["$ref"].split("/").pop(); | ||
addToMap(definitionName, currentPath); | ||
} | ||
// Handle arrays with items | ||
if ("items" in obj) { | ||
// Direct $ref in items | ||
if (obj.items.$ref) { | ||
var definitionName = obj.items.$ref.split("/").pop(); | ||
addToMap(definitionName, "".concat(currentPath, ".items")); | ||
} | ||
// oneOf in items | ||
if (obj.items.oneOf) { | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
obj.items.oneOf.forEach(function (item) { | ||
if (item.$ref) { | ||
var definitionName = item.$ref.split("/").pop(); | ||
addToMap(definitionName, "".concat(currentPath, ".items")); | ||
} | ||
}); | ||
} | ||
} | ||
// Handle properties | ||
if ("properties" in obj) { | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
Object.entries(obj.properties).forEach(function (_a) { | ||
var key = _a[0], value = _a[1]; | ||
var newPath = currentPath ? "".concat(currentPath, ".").concat(key) : key; | ||
traverseObject(value, newPath); | ||
}); | ||
} | ||
// Handle oneOf at current level | ||
if ("oneOf" in obj) { | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
obj.oneOf.forEach(function (item) { | ||
if (item.$ref) { | ||
var definitionName = item.$ref.split("/").pop(); | ||
addToMap(definitionName, currentPath); | ||
} | ||
traverseObject(item, currentPath); | ||
}); | ||
} | ||
// Recursively traverse all other properties | ||
Object.entries(obj).forEach(function (_a) { | ||
var key = _a[0], value = _a[1]; | ||
if (value && | ||
typeof value === "object" && | ||
key !== "properties" && | ||
key !== "items" && | ||
key !== "oneOf") { | ||
var newPath = currentPath ? "".concat(currentPath, ".").concat(key) : key; | ||
traverseObject(value, newPath); | ||
} | ||
}); | ||
}; | ||
traverseObject(schema, path); | ||
return remap(definitionsMap); | ||
} | ||
function resolveDefinition(definitionsMap, definitionKey) { | ||
return definitionsMap[definitionKey] || []; | ||
} | ||
// Traverses an object based on a dot-separated path and returns all matching objects at that path | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
var getDoc = function (docName, derefDoc) { | ||
var docNames = docName.split("."); | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
var traverseObject = function (obj, pathParts) { | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
var results = []; | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
var traverse = function (current, depth) { | ||
if (!current) | ||
return; | ||
// If we've reached our target depth, collect this object | ||
if (depth === pathParts.length) { | ||
results.push(current); | ||
return; | ||
} | ||
var part = pathParts[depth]; | ||
var next = current[part]; | ||
// Handle both arrays and objects | ||
if (Array.isArray(next)) { | ||
next.forEach(function (item) { return traverse(item, depth + 1); }); | ||
} | ||
else if (next && typeof next === "object") { | ||
traverse(next, depth + 1); | ||
} | ||
}; | ||
traverse(obj, 0); | ||
return results; | ||
}; | ||
return { items: traverseObject(derefDoc, docNames) }; | ||
}; | ||
/* eslint-disable @typescript-eslint/no-explicit-any */ | ||
var handleExtension = function (extensionOrRef, doc, resolver) { return __awaiter(void 0, void 0, void 0, function () { | ||
var componentSchemas, _a; | ||
return __generator(this, function (_b) { | ||
switch (_b.label) { | ||
case 0: | ||
if (!(extensionOrRef.$ref !== undefined)) return [3 /*break*/, 2]; | ||
return [4 /*yield*/, derefItem({ $ref: extensionOrRef.$ref }, doc, resolver)]; | ||
case 1: | ||
extensionOrRef = _b.sent(); | ||
_b.label = 2; | ||
case 2: | ||
componentSchemas = {}; | ||
if (doc.components && doc.components.schemas) { | ||
componentSchemas = doc.components.schemas; | ||
} | ||
if (!(extensionOrRef.schema !== undefined)) return [3 /*break*/, 4]; | ||
_a = extensionOrRef; | ||
return [4 /*yield*/, handleSchemaWithSchemaComponents(extensionOrRef.schema, componentSchemas)]; | ||
case 3: | ||
_a.schema = _b.sent(); | ||
_b.label = 4; | ||
case 4: return [2 /*return*/, extensionOrRef]; | ||
} | ||
}); | ||
}); }; | ||
/* eslint-enable @typescript-eslint/no-explicit-any */ | ||
var handleMethod = function (methodOrRef, doc, resolver) { return __awaiter(void 0, void 0, void 0, function () { | ||
@@ -358,5 +574,5 @@ var method, _a, _b, _c, _d, _i, _e, exPairing, _f, _g, _h, _j, componentSchemas, params, _k, params_1, p, _l, result, _m; | ||
return __awaiter(this, void 0, void 0, function () { | ||
var derefDoc, methods, _i, _a, method, _b, _c; | ||
return __generator(this, function (_d) { | ||
switch (_d.label) { | ||
var derefDoc, definitionsMap, extensions, extensionDerefs, _i, _a, extension, derefedExtension, _b, _c, def, methods, _d, _e, method, _f, _g, _h, extensionDerefs_1, extension, _j, _k, docName, items, _l, items_2, item, _m, _o; | ||
return __generator(this, function (_p) { | ||
switch (_p.label) { | ||
case 0: | ||
@@ -366,17 +582,27 @@ derefDoc = __assign({}, openrpcDocument); | ||
case 1: | ||
derefDoc = _d.sent(); | ||
derefDoc = _p.sent(); | ||
return [4 /*yield*/, handleSchemasInsideContentDescriptorComponents(derefDoc)]; | ||
case 2: | ||
derefDoc = _d.sent(); | ||
methods = []; | ||
_i = 0, _a = derefDoc.methods; | ||
_d.label = 3; | ||
derefDoc = _p.sent(); | ||
definitionsMap = createDefinitionsMap(meta_schema_1.default); | ||
extensions = []; | ||
extensionDerefs = []; | ||
if (!derefDoc["x-extensions"]) return [3 /*break*/, 7]; | ||
_i = 0, _a = derefDoc["x-extensions"]; | ||
_p.label = 3; | ||
case 3: | ||
if (!(_i < _a.length)) return [3 /*break*/, 6]; | ||
method = _a[_i]; | ||
_c = (_b = methods).push; | ||
return [4 /*yield*/, handleMethod(method, derefDoc, resolver)]; | ||
extension = _a[_i]; | ||
return [4 /*yield*/, handleExtension(extension, derefDoc, resolver)]; | ||
case 4: | ||
_c.apply(_b, [_d.sent()]); | ||
_d.label = 5; | ||
derefedExtension = _p.sent(); | ||
extensions.push(derefedExtension); | ||
for (_b = 0, _c = derefedExtension.restricted; _b < _c.length; _b++) { | ||
def = _c[_b]; | ||
extensionDerefs.push({ | ||
extensionName: derefedExtension.name, | ||
docNames: resolveDefinition(definitionsMap, def), | ||
}); | ||
} | ||
_p.label = 5; | ||
case 5: | ||
@@ -386,2 +612,53 @@ _i++; | ||
case 6: | ||
derefDoc["x-extensions"] = extensions; | ||
_p.label = 7; | ||
case 7: | ||
methods = []; | ||
_d = 0, _e = derefDoc.methods; | ||
_p.label = 8; | ||
case 8: | ||
if (!(_d < _e.length)) return [3 /*break*/, 11]; | ||
method = _e[_d]; | ||
_g = (_f = methods).push; | ||
return [4 /*yield*/, handleMethod(method, derefDoc, resolver)]; | ||
case 9: | ||
_g.apply(_f, [_p.sent()]); | ||
_p.label = 10; | ||
case 10: | ||
_d++; | ||
return [3 /*break*/, 8]; | ||
case 11: | ||
_h = 0, extensionDerefs_1 = extensionDerefs; | ||
_p.label = 12; | ||
case 12: | ||
if (!(_h < extensionDerefs_1.length)) return [3 /*break*/, 19]; | ||
extension = extensionDerefs_1[_h]; | ||
_j = 0, _k = extension.docNames; | ||
_p.label = 13; | ||
case 13: | ||
if (!(_j < _k.length)) return [3 /*break*/, 18]; | ||
docName = _k[_j]; | ||
items = getDoc(docName, derefDoc).items; | ||
_l = 0, items_2 = items; | ||
_p.label = 14; | ||
case 14: | ||
if (!(_l < items_2.length)) return [3 /*break*/, 17]; | ||
item = items_2[_l]; | ||
if (!(item && item[extension.extensionName])) return [3 /*break*/, 16]; | ||
_m = item; | ||
_o = extension.extensionName; | ||
return [4 /*yield*/, matchDerefItems(item[extension.extensionName], derefDoc, resolver)]; | ||
case 15: | ||
_m[_o] = _p.sent(); | ||
_p.label = 16; | ||
case 16: | ||
_l++; | ||
return [3 /*break*/, 14]; | ||
case 17: | ||
_j++; | ||
return [3 /*break*/, 13]; | ||
case 18: | ||
_h++; | ||
return [3 /*break*/, 12]; | ||
case 19: | ||
derefDoc.methods = methods; | ||
@@ -388,0 +665,0 @@ return [2 /*return*/, derefDoc]; |
@@ -66,3 +66,6 @@ "use strict"; | ||
function generateMethodParamId(method, contentDescriptor) { | ||
var pos = (0, helper_functions_1.findIndex)(method.params, function (o) { return o.name == contentDescriptor.name; }); | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
var pos = (0, helper_functions_1.findIndex)(method.params, function (o) { | ||
return o.name == contentDescriptor.name; | ||
}); | ||
if (pos === -1) { | ||
@@ -69,0 +72,0 @@ throw new ContentDescriptorNotFoundInMethodError(method, contentDescriptor); |
@@ -47,3 +47,3 @@ "use strict"; | ||
return [4 /*yield*/, (0, fs_extra_1.readJson)(filePath)]; | ||
case 1: return [2 /*return*/, _a.sent()]; | ||
case 1: return [2 /*return*/, (_a.sent())]; | ||
case 2: | ||
@@ -50,0 +50,0 @@ e_1 = _a.sent(); |
@@ -53,3 +53,3 @@ "use strict"; | ||
return [4 /*yield*/, response.json()]; | ||
case 2: return [2 /*return*/, _a.sent()]; | ||
case 2: return [2 /*return*/, (_a.sent())]; | ||
case 3: | ||
@@ -56,0 +56,0 @@ e_1 = _a.sent(); |
@@ -7,3 +7,3 @@ type TPredicate = (value: any) => boolean; | ||
* @returns {number} || {undefined} | ||
*/ | ||
*/ | ||
export declare const findIndex: (array: any[], predicate: TPredicate) => number; | ||
@@ -21,3 +21,3 @@ /** | ||
* @returns {any} || {undefined} | ||
*/ | ||
*/ | ||
export declare const find: (array: any[], predicate: TPredicate) => any; | ||
@@ -30,4 +30,4 @@ /** | ||
* @returns {boolean} | ||
*/ | ||
*/ | ||
export declare const rpcDocIsEqual: (doc1: any, doc2: any) => boolean; | ||
export {}; |
@@ -9,3 +9,3 @@ "use strict"; | ||
* @returns {number} || {undefined} | ||
*/ | ||
*/ | ||
var findIndex = function (array, predicate) { | ||
@@ -47,3 +47,3 @@ var length = array == null ? 0 : array.length; | ||
* @returns {any} || {undefined} | ||
*/ | ||
*/ | ||
var find = function (array, predicate) { | ||
@@ -69,3 +69,3 @@ var length = array == null ? 0 : array.length; | ||
* @returns {boolean} | ||
*/ | ||
*/ | ||
var rpcDocIsEqual = function (doc1, doc2) { | ||
@@ -86,3 +86,3 @@ var doc1Keys = Object.keys(doc1); | ||
} | ||
else if (typeof doc1[key] === 'object' && typeof doc2[key] === 'object') { | ||
else if (typeof doc1[key] === "object" && typeof doc2[key] === "object") { | ||
if (!(0, exports.rpcDocIsEqual)(doc1[key], doc2[key])) { | ||
@@ -89,0 +89,0 @@ return false; |
@@ -45,2 +45,3 @@ "use strict"; | ||
} | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
_this.ajvValidator.addSchema(param.schema, (0, generate_method_id_1.generateMethodParamId)(method, param)); | ||
@@ -69,3 +70,5 @@ }); | ||
*/ | ||
MethodCallValidator.prototype.validate = function (methodName, params) { | ||
MethodCallValidator.prototype.validate = function (methodName, | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types | ||
params) { | ||
var _this = this; | ||
@@ -75,3 +78,5 @@ if (methodName === "rpc.discover") { | ||
} | ||
var method = (0, helper_functions_1.find)(this.document.methods, function (o) { return o.name == methodName; }); | ||
var method = (0, helper_functions_1.find)(this.document.methods, function (o) { | ||
return o.name == methodName; | ||
}); | ||
if (!method) { | ||
@@ -78,0 +83,0 @@ return new method_not_found_error_1.default(methodName, this.document, params); |
@@ -12,3 +12,5 @@ "use strict"; | ||
*/ | ||
function MethodNotFoundError(methodName, openrpcDocument, receievedParams) { | ||
function MethodNotFoundError(methodName, openrpcDocument, | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
receievedParams) { | ||
if (receievedParams === void 0) { receievedParams = []; } | ||
@@ -24,6 +26,8 @@ this.methodName = methodName; | ||
if (openrpcDocument.methods.length > 0) { | ||
msg.push("Valid method names are as follows: ".concat(openrpcDocument.methods.map(function (_a) { | ||
msg.push("Valid method names are as follows: ".concat(openrpcDocument.methods | ||
.map(function (_a) { | ||
var name = _a.name; | ||
return name; | ||
}).join(", "))); | ||
}) | ||
.join(", "))); | ||
} | ||
@@ -34,8 +38,10 @@ var stringedParams; | ||
stringedParams = receievedParams | ||
.map(function (p) { try { | ||
return JSON.stringify(p); | ||
} | ||
catch (e) { | ||
return p; | ||
} }) | ||
.map(function (p) { | ||
try { | ||
return JSON.stringify(p); | ||
} | ||
catch (e) { | ||
return p; | ||
} | ||
}) | ||
.join("\n"); | ||
@@ -42,0 +48,0 @@ } |
@@ -14,3 +14,5 @@ "use strict"; | ||
*/ | ||
function ParameterValidationError(paramIndex, expectedSchema, receievedParam, errors) { | ||
function ParameterValidationError(paramIndex, expectedSchema, | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types | ||
receievedParam, errors) { | ||
this.paramIndex = paramIndex; | ||
@@ -29,3 +31,3 @@ this.expectedSchema = expectedSchema; | ||
"The Validation errors: \n", | ||
JSON.stringify(errors) | ||
JSON.stringify(errors), | ||
].join(""); | ||
@@ -32,0 +34,0 @@ } |
"use strict"; | ||
var __assign = (this && this.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
@@ -18,5 +7,6 @@ return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
exports.OpenRPCDocumentValidationError = void 0; | ||
var meta_schema_1 = __importDefault(require("@open-rpc/meta-schema")); | ||
var ajv_1 = __importDefault(require("ajv")); | ||
var meta_schema_2 = __importDefault(require("@json-schema-tools/meta-schema")); | ||
var meta_schema_1 = __importDefault(require("@json-schema-tools/meta-schema")); | ||
var apply_extension_spec_1 = __importDefault(require("./apply-extension-spec")); | ||
var get_extended_metaschema_1 = __importDefault(require("./get-extended-metaschema")); | ||
/** | ||
@@ -68,19 +58,16 @@ * @ignore | ||
var ajv = new ajv_1.default(); | ||
ajv.addSchema(meta_schema_2.default, "https://meta.json-schema.tools"); | ||
var metaSchemaCopy = __assign({}, meta_schema_1.default); | ||
delete metaSchemaCopy.definitions.JSONSchema.$id; | ||
delete metaSchemaCopy.definitions.JSONSchema.$schema; | ||
delete metaSchemaCopy.$schema; | ||
delete metaSchemaCopy.$id; | ||
ajv.addSchema(meta_schema_1.default, "https://meta.json-schema.tools"); | ||
var extMetaSchema = (0, get_extended_metaschema_1.default)(); | ||
try { | ||
ajv.validate(metaSchemaCopy, document); | ||
extMetaSchema = (0, apply_extension_spec_1.default)(document, extMetaSchema); | ||
ajv.validate(extMetaSchema, document); | ||
} | ||
catch (e) { | ||
throw new Error([ | ||
'schema-utils-js: Internal Error', | ||
'-----', | ||
"schema-utils-js: Internal Error", | ||
"-----", | ||
e, | ||
'-----', | ||
'If you see this report it: https://github.com/open-rpc/schema-utils-js/issues', | ||
].join('\n')); | ||
"-----", | ||
"If you see this report it: https://github.com/open-rpc/schema-utils-js/issues", | ||
].join("\n")); | ||
} | ||
@@ -87,0 +74,0 @@ if (ajv.errors) { |
{ | ||
"name": "@open-rpc/schema-utils-js", | ||
"private": false, | ||
"version": "2.0.5", | ||
"version": "2.1.0", | ||
"description": "", | ||
@@ -14,2 +14,3 @@ "main": "build/index.js", | ||
"test:unit": "jest --coverage", | ||
"test-debug:unit": "node inspect node_modules/jest/bin/jest.js --coverage", | ||
"test:web": "npm run build:code && webpack && rm -rf dist", | ||
@@ -38,2 +39,3 @@ "watch:test": "jest --watch", | ||
"@open-rpc/meta-schema": "^1.14.9", | ||
"@open-rpc/specification-extension-spec": "^1.0.2", | ||
"ajv": "^6.10.0", | ||
@@ -56,7 +58,9 @@ "detect-node": "^2.0.4", | ||
"@types/webpack-env": "^1.13.9", | ||
"@typescript-eslint/eslint-plugin": "^4.11.1", | ||
"@typescript-eslint/parser": "^4.11.1", | ||
"eslint": "^7.17.0", | ||
"@typescript-eslint/eslint-plugin": "^5.0.0", | ||
"eslint": "^8.0.0", | ||
"eslint-config-prettier": "^8.0.0", | ||
"eslint-plugin-prettier": "^4.0.0", | ||
"jest": "^29.7.0", | ||
"json-schema": "^0.4.0", | ||
"prettier": "^2.0.0", | ||
"rimraf": "^3.0.0", | ||
@@ -63,0 +67,0 @@ "ts-jest": "^29.1.2", |
109493
39
2181
11
22
+ Added@open-rpc/specification-extension-spec@1.0.2(transitive)