@ethersproject/properties
Advanced tools
Comparing version 5.6.0 to 6.0.0-beta.1
@@ -1,2 +0,2 @@ | ||
export declare const version = "properties/5.6.0"; | ||
export declare const version = "@ethersproject/properties@6.0.0-beta.1"; | ||
//# sourceMappingURL=_version.d.ts.map |
@@ -1,5 +0,2 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.version = void 0; | ||
exports.version = "properties/5.6.0"; | ||
export const version = "@ethersproject/properties@6.0.0-beta.1"; | ||
//# sourceMappingURL=_version.js.map |
@@ -1,17 +0,6 @@ | ||
export declare function defineReadOnly<T, K extends keyof T>(object: T, name: K, value: T[K]): void; | ||
export declare function getStatic<T>(ctor: any, key: string): T; | ||
export declare type Deferrable<T> = { | ||
[K in keyof T]: T[K] | Promise<T[K]>; | ||
}; | ||
export declare function resolveProperties<T>(object: Readonly<Deferrable<T>>): Promise<T>; | ||
export declare function checkProperties(object: any, properties: { | ||
[name: string]: boolean; | ||
}): void; | ||
export declare function shallowCopy<T>(object: T): T; | ||
export declare function deepCopy<T>(object: T): T; | ||
export declare class Description<T = any> { | ||
constructor(info: { | ||
[K in keyof T]: T[K]; | ||
}); | ||
} | ||
export { EventPayload } from "./events.js"; | ||
export { defineProperties, resolveProperties } from "./properties.js"; | ||
export { getStore, setStore } from "./storage.js"; | ||
export type { EventEmitterable, Listener } from "./events.js"; | ||
export type { Frozen, Freezable } from "./freezable.js"; | ||
//# sourceMappingURL=index.d.ts.map |
174
lib/index.js
@@ -1,171 +0,5 @@ | ||
"use strict"; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
var __generator = (this && this.__generator) || function (thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) throw new TypeError("Generator is already executing."); | ||
while (_) try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [op[0] & 2, t.value]; | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.Description = exports.deepCopy = exports.shallowCopy = exports.checkProperties = exports.resolveProperties = exports.getStatic = exports.defineReadOnly = void 0; | ||
var logger_1 = require("@ethersproject/logger"); | ||
var _version_1 = require("./_version"); | ||
var logger = new logger_1.Logger(_version_1.version); | ||
function defineReadOnly(object, name, value) { | ||
Object.defineProperty(object, name, { | ||
enumerable: true, | ||
value: value, | ||
writable: false, | ||
}); | ||
} | ||
exports.defineReadOnly = defineReadOnly; | ||
// Crawl up the constructor chain to find a static method | ||
function getStatic(ctor, key) { | ||
for (var i = 0; i < 32; i++) { | ||
if (ctor[key]) { | ||
return ctor[key]; | ||
} | ||
if (!ctor.prototype || typeof (ctor.prototype) !== "object") { | ||
break; | ||
} | ||
ctor = Object.getPrototypeOf(ctor.prototype).constructor; | ||
} | ||
return null; | ||
} | ||
exports.getStatic = getStatic; | ||
function resolveProperties(object) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var promises, results; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
promises = Object.keys(object).map(function (key) { | ||
var value = object[key]; | ||
return Promise.resolve(value).then(function (v) { return ({ key: key, value: v }); }); | ||
}); | ||
return [4 /*yield*/, Promise.all(promises)]; | ||
case 1: | ||
results = _a.sent(); | ||
return [2 /*return*/, results.reduce(function (accum, result) { | ||
accum[(result.key)] = result.value; | ||
return accum; | ||
}, {})]; | ||
} | ||
}); | ||
}); | ||
} | ||
exports.resolveProperties = resolveProperties; | ||
function checkProperties(object, properties) { | ||
if (!object || typeof (object) !== "object") { | ||
logger.throwArgumentError("invalid object", "object", object); | ||
} | ||
Object.keys(object).forEach(function (key) { | ||
if (!properties[key]) { | ||
logger.throwArgumentError("invalid object key - " + key, "transaction:" + key, object); | ||
} | ||
}); | ||
} | ||
exports.checkProperties = checkProperties; | ||
function shallowCopy(object) { | ||
var result = {}; | ||
for (var key in object) { | ||
result[key] = object[key]; | ||
} | ||
return result; | ||
} | ||
exports.shallowCopy = shallowCopy; | ||
var opaque = { bigint: true, boolean: true, "function": true, number: true, string: true }; | ||
function _isFrozen(object) { | ||
// Opaque objects are not mutable, so safe to copy by assignment | ||
if (object === undefined || object === null || opaque[typeof (object)]) { | ||
return true; | ||
} | ||
if (Array.isArray(object) || typeof (object) === "object") { | ||
if (!Object.isFrozen(object)) { | ||
return false; | ||
} | ||
var keys = Object.keys(object); | ||
for (var i = 0; i < keys.length; i++) { | ||
var value = null; | ||
try { | ||
value = object[keys[i]]; | ||
} | ||
catch (error) { | ||
// If accessing a value triggers an error, it is a getter | ||
// designed to do so (e.g. Result) and is therefore "frozen" | ||
continue; | ||
} | ||
if (!_isFrozen(value)) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
} | ||
return logger.throwArgumentError("Cannot deepCopy " + typeof (object), "object", object); | ||
} | ||
// Returns a new copy of object, such that no properties may be replaced. | ||
// New properties may be added only to objects. | ||
function _deepCopy(object) { | ||
if (_isFrozen(object)) { | ||
return object; | ||
} | ||
// Arrays are mutable, so we need to create a copy | ||
if (Array.isArray(object)) { | ||
return Object.freeze(object.map(function (item) { return deepCopy(item); })); | ||
} | ||
if (typeof (object) === "object") { | ||
var result = {}; | ||
for (var key in object) { | ||
var value = object[key]; | ||
if (value === undefined) { | ||
continue; | ||
} | ||
defineReadOnly(result, key, deepCopy(value)); | ||
} | ||
return result; | ||
} | ||
return logger.throwArgumentError("Cannot deepCopy " + typeof (object), "object", object); | ||
} | ||
function deepCopy(object) { | ||
return _deepCopy(object); | ||
} | ||
exports.deepCopy = deepCopy; | ||
var Description = /** @class */ (function () { | ||
function Description(info) { | ||
for (var key in info) { | ||
this[key] = deepCopy(info[key]); | ||
} | ||
} | ||
return Description; | ||
}()); | ||
exports.Description = Description; | ||
//export { deepCopy, markImmutable, unmarkImmutable } from "./copy.js"; | ||
export { EventPayload } from "./events.js"; | ||
export { defineProperties, resolveProperties } from "./properties.js"; | ||
export { getStore, setStore } from "./storage.js"; | ||
//# sourceMappingURL=index.js.map |
MIT License | ||
Copyright (c) 2019 Richard Moore | ||
Copyright (c) 2022 Richard Moore | ||
@@ -5,0 +5,0 @@ Permission is hereby granted, free of charge, to any person obtaining a copy |
{ | ||
"author": "Richard Moore <me@ricmoo.com>", | ||
"dependencies": { | ||
"@ethersproject/logger": "^5.6.0" | ||
"@ethersproject/logger": "^6.0.0-beta.1" | ||
}, | ||
"description": "Properties utility functions for ethers.", | ||
"engines": { | ||
"node": ">=12.17.0" | ||
}, | ||
"ethereum": "donations.ethers.eth", | ||
"funding": [ | ||
{ | ||
"type": "individual", | ||
"url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" | ||
}, | ||
{ | ||
"type": "individual", | ||
"url": "https://www.buymeacoffee.com/ricmoo" | ||
} | ||
], | ||
"gitHead": "b8cda5dffdcb688e38d7c6a0aec4c7b8b59c1af5", | ||
"gitHead": "77f691b3bc3a6387a5184ec9b1779faab4bcb30d", | ||
"keywords": [ | ||
@@ -25,6 +18,6 @@ "Ethereum", | ||
"main": "./lib/index.js", | ||
"module": "./lib.esm/index.js", | ||
"name": "@ethersproject/properties", | ||
"publishConfig": { | ||
"access": "public" | ||
"access": "public", | ||
"tag": "beta" | ||
}, | ||
@@ -37,10 +30,9 @@ "repository": { | ||
"scripts": { | ||
"auto-build": "npm run build -- -w", | ||
"build": "tsc -p ./tsconfig.json", | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
}, | ||
"sideEffects": false, | ||
"tarballHash": "0x3c031460ac0052b77e187d7504f43f208e7a03681562a4fb4884a099df5d5e80", | ||
"tarballHash": "0x8f541c3adc732e2b996875c255294d62904a53c61e76576808b276c43bfa3875", | ||
"type": "module", | ||
"types": "./lib/index.d.ts", | ||
"version": "5.6.0" | ||
"version": "6.0.0-beta.1" | ||
} |
@@ -1,1 +0,1 @@ | ||
export const version = "properties/5.6.0"; | ||
export const version = "@ethersproject/properties@6.0.0-beta.1"; |
@@ -1,129 +0,7 @@ | ||
"use strict"; | ||
//export { deepCopy, markImmutable, unmarkImmutable } from "./copy.js"; | ||
export { EventPayload } from "./events.js"; | ||
export { defineProperties, resolveProperties} from "./properties.js"; | ||
export { getStore, setStore } from "./storage.js"; | ||
import { Logger } from "@ethersproject/logger"; | ||
import { version } from "./_version"; | ||
const logger = new Logger(version); | ||
export function defineReadOnly<T, K extends keyof T>(object: T, name: K, value: T[K]): void { | ||
Object.defineProperty(object, name, { | ||
enumerable: true, | ||
value: value, | ||
writable: false, | ||
}); | ||
} | ||
// Crawl up the constructor chain to find a static method | ||
export function getStatic<T>(ctor: any, key: string): T { | ||
for (let i = 0; i < 32; i++) { | ||
if (ctor[key]) { return ctor[key]; } | ||
if (!ctor.prototype || typeof(ctor.prototype) !== "object") { break; } | ||
ctor = Object.getPrototypeOf(ctor.prototype).constructor; | ||
} | ||
return null; | ||
} | ||
export type Deferrable<T> = { | ||
[ K in keyof T ]: T[K] | Promise<T[K]>; | ||
} | ||
type Result = { key: string, value: any}; | ||
export async function resolveProperties<T>(object: Readonly<Deferrable<T>>): Promise<T> { | ||
const promises: Array<Promise<Result>> = Object.keys(object).map((key) => { | ||
const value = object[<keyof Deferrable<T>>key]; | ||
return Promise.resolve(value).then((v) => ({ key: key, value: v })); | ||
}); | ||
const results = await Promise.all(promises); | ||
return results.reduce((accum, result) => { | ||
accum[<keyof T>(result.key)] = result.value; | ||
return accum; | ||
}, <T>{ }); | ||
} | ||
export function checkProperties(object: any, properties: { [ name: string ]: boolean }): void { | ||
if (!object || typeof(object) !== "object") { | ||
logger.throwArgumentError("invalid object", "object", object); | ||
} | ||
Object.keys(object).forEach((key) => { | ||
if (!properties[key]) { | ||
logger.throwArgumentError("invalid object key - " + key, "transaction:" + key, object); | ||
} | ||
}); | ||
} | ||
export function shallowCopy<T>(object: T): T { | ||
const result: any = {}; | ||
for (const key in object) { result[key] = object[key]; } | ||
return result; | ||
} | ||
const opaque: { [key: string]: boolean } = { bigint: true, boolean: true, "function": true, number: true, string: true }; | ||
function _isFrozen(object: any): boolean { | ||
// Opaque objects are not mutable, so safe to copy by assignment | ||
if (object === undefined || object === null || opaque[typeof(object)]) { return true; } | ||
if (Array.isArray(object) || typeof(object) === "object") { | ||
if (!Object.isFrozen(object)) { return false; } | ||
const keys = Object.keys(object); | ||
for (let i = 0; i < keys.length; i++) { | ||
let value: any = null; | ||
try { | ||
value = object[keys[i]]; | ||
} catch (error) { | ||
// If accessing a value triggers an error, it is a getter | ||
// designed to do so (e.g. Result) and is therefore "frozen" | ||
continue; | ||
} | ||
if (!_isFrozen(value)) { return false; } | ||
} | ||
return true; | ||
} | ||
return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, "object", object); | ||
} | ||
// Returns a new copy of object, such that no properties may be replaced. | ||
// New properties may be added only to objects. | ||
function _deepCopy(object: any): any { | ||
if (_isFrozen(object)) { return object; } | ||
// Arrays are mutable, so we need to create a copy | ||
if (Array.isArray(object)) { | ||
return Object.freeze(object.map((item) => deepCopy(item))); | ||
} | ||
if (typeof(object) === "object") { | ||
const result: { [ key: string ]: any } = {}; | ||
for (const key in object) { | ||
const value = object[key]; | ||
if (value === undefined) { continue; } | ||
defineReadOnly(result, key, deepCopy(value)); | ||
} | ||
return result; | ||
} | ||
return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, "object", object); | ||
} | ||
export function deepCopy<T>(object: T): T { | ||
return _deepCopy(object); | ||
} | ||
export class Description<T = any> { | ||
constructor(info: { [ K in keyof T ]: T[K] }) { | ||
for (const key in info) { | ||
(<any>this)[key] = deepCopy(info[key]); | ||
} | ||
} | ||
} | ||
export type { EventEmitterable, Listener } from "./events.js"; | ||
export type { Frozen, Freezable } from "./freezable.js"; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
32682
43
660
Yes
3
1
0
1
+ Added@ethersproject/logger@6.0.0-beta.7(transitive)
- Removed@ethersproject/logger@5.7.0(transitive)