Base functionality used throughout XY Labs TypeScript/JavaScript libraries
npm install @xylabs/object[![logo][]](https://xylabs.com)
[![main-build][]][main-build-link]
[![npm-badge][]][npm-link]
[![npm-downloads-badge][]][npm-link]
[![jsdelivr-badge][]][jsdelivr-link]
[![npm-license-badge][]](LICENSE)
[![codacy-badge][]][codacy-link]
[![codeclimate-badge][]][codeclimate-link]
[![snyk-badge][]][snyk-link]
[![socket-badge][]][socket-link]
Base functionality used throughout XY Labs TypeScript/JavaScript libraries
@xylabs/object
*
- IsObjectFactory
- ObjectWrapper
- ValidatorBase
- ObjectTypeConfig
- Validator
- TypeCheckConfig
- TypeCheckRequiredConfig
- TypeCheckOptionalConfig
- EmptyObject
- EmptyObjectOf
- JsonValue
- JsonObject
- JsonArray
- OmitStartsWith
- DeepOmitStartsWith
- DeepRestrictToStringKeys
- Optional
- Override
- ~~PartialRecord~~
- PickStartsWith
- DeepPickStartsWith
- StringKeyObject
- WithAdditional
- OmitByPredicate
- PickByPredicate
- AnyObject
- AsTypeFunction
- AsOptionalTypeFunction
- Compare
- StringOrAlertFunction
- TypeCheck
- AsObjectFactory
- AsTypeFactory
- asAnyObject
- deepMerge
- isJsonValue
- isJsonArray
- isValidJsonFieldPair
- isJsonObject
- createDeepMerge
- isObject
- isType
- omitBy
- omitByPrefix
- pickBy
- pickByPrefix
- removeFields
- toJsonArray
- toJsonObject
- toJsonValue
- toJsonString
- toJson
*
T extends TypedObject
``ts`
new IsObjectFactory
IsObjectFactory\<T\>
`ts`
create(shape?, additionalChecks?): TypeCheck
#### shape?
ObjectTypeShape
#### additionalChecks?
TypeCheck\<TypedObject\>[]
TypeCheck\<T\>
*
T extends EmptyObject = EmptyObject
`ts`
new ObjectWrapper
#### obj
T
ObjectWrapper\<T\>
`ts`
readonly obj: T;
`ts`
get protected stringKeyObj(): StringKeyObject;
#### Returns
*
- ObjectWrapper\<Partial\<T\>\>
T extends EmptyObject = AnyObject
- Validator\<T\>
`ts`
new ValidatorBase
#### obj
T
ValidatorBase\<T\>
`ts`
readonly obj: T;
`ts`
get protected stringKeyObj(): StringKeyObject;
#### Returns
`ts`
abstract validate(payload): Promisable
#### payload
T
Promisable\<Error[]\>
*
`ts`
function createDeepMerge(options):
Creates a deep merge function with the specified options.
MergeOptions
Options for merging.
A deep merge function configured for the specified options.
`ts`
...T
MergeAll\<T\>
*
`ts`
function isJsonArray(value): value is JsonArray;
unknown
value is JsonArray
*
`ts`
function isJsonObject(value): value is JsonObject;
unknown
value is JsonObject
*
`ts`
function isJsonValue(value): value is JsonValue;
unknown
value is JsonValue
*
`ts`
function isObject
T
T
value is T & object
*
`ts`
function isType(value, expectedType): boolean;
unknown
FieldType
boolean
*
`ts`
function isValidJsonFieldPair(__namedParameters): boolean;
\[unknown, unknown\]
boolean
*
`ts`
function omitBy
obj,
predicate,
maxDepth): Partial
T extends object
T
number = 1
Partial\<T\>
*
`ts`
function omitByPrefix
payload,
prefix,
maxDepth): DeepOmitStartsWith
T extends object
P extends string
T
P
number = 100
DeepOmitStartsWith\<T, P\>
*
`ts`
function pickBy
obj,
predicate,
maxDepth): Partial
T extends object
T
number = 1
Partial\<T\>
*
`ts`
function pickByPrefix
payload,
prefix,
maxDepth): DeepPickStartsWith
T extends object
P extends string
T
P
number = 100
DeepPickStartsWith\<T, P\>
*
`ts`
function removeFields
T extends object
K extends string \| number \| symbol
T
K[]
Omit\<T, K\>
*
`ts`
function toJson(value, maxDepth): JsonValue;
unknown
number = 3
*
`ts`
function toJsonArray(
value,
cycleList?,
maxDepth?): JsonArray;
unknown[]
unknown[]
number = 3
*
`ts`
function toJsonObject(
value,
cycleList?,
maxDepth?): JsonObject;
object
unknown[]
number = 3
*
`ts`
function toJsonString(value, maxDepth): string;
unknown
number = 3
string
*
`ts`
function toJsonValue(
value,
cycleList?,
maxDepth?): JsonValue;
unknown
unknown[]
number = 3
*
`ts`
optional log: boolean | Logger;
*
- ObjectTypeConfig
- TypeCheckRequiredConfig
- TypeCheckOptionalConfig
`ts`
optional log: boolean | Logger;
*
`ts`
optional log: boolean | Logger;
*
`ts`
required: false;
*
`ts`
optional log: boolean | Logger;
*
`ts`
required: true;
*
T extends EmptyObject = AnyObject
`ts`
validate(payload): Promisable
#### payload
T
Promisable\<Error[]\>
*
`ts`
type AnyObject = Record
Any object, which means that it does not enforce the set of fields that it has. Extending from AnyObject
will result in a type that includes the universal set of field names
*
`ts`
type AsOptionalTypeFunction
T extends AnyNonPromise = AnyNonPromise
TType extends AnyNonPromise
AnyNonPromise
undefined \| TType
*
`ts`
type AsTypeFunction
};
T extends AnyNonPromise = AnyNonPromise
`ts`
TType extends AnyNonPromise
AnyNonPromise
undefined \| TType
`ts`
TType extends AnyNonPromise
AnyNonPromise
TType
`ts`
TType extends AnyNonPromise
AnyNonPromise
TypeCheckConfig | TypeCheckOptionalConfig
undefined \| TType
`ts`
TType extends AnyNonPromise
AnyNonPromise
StringOrAlertFunction\<TType\>
undefined \| TType
`ts`
value,
assert,
config): TType;
TType extends AnyNonPromise
AnyNonPromise
StringOrAlertFunction\<TType\>
TType
`ts`
value,
assert,
config): undefined | TType;
TType extends AnyNonPromise
AnyNonPromise
StringOrAlertFunction\<TType\>
TypeCheckConfig | TypeCheckOptionalConfig
undefined \| TType
*
`ts`
type Compare
T
T
T
number
*
`ts${Prefix}${string}
type DeepOmitStartsWith ? never : K : K]: DeepOmitStartsWith`
T
Prefix extends string
*
`ts${Prefix}${string}
type DeepPickStartsWith ? K : never : K]: DeepPickStartsWith`
T
Prefix extends string
*
`ts`
type DeepRestrictToStringKeys
T
*
`ts`
type EmptyObject
An empty object, which means that it does enforce the set of field names, defaulting to an empty set until
extended from, which then adds only those additional fields
T extends object = object
*
`ts`
type EmptyObjectOf
T extends object
*
`ts`
type JsonArray = JsonValue[];
*
`ts`
type JsonObject = object;
`ts`
[key: string]: JsonValue
*
`ts`
type JsonValue =
| string
| number
| boolean
| null
| JsonObject
| JsonArray;
*
`ts`
type OmitByPredicate
T extends EmptyObject = Record\<string, unknown\>
T\[keyof T\]
keyof T
boolean
*
`ts${Prefix}${string}
type OmitStartsWith ? never : K]: T[K] };`
T
Prefix extends string
*
`ts`
type Optional
T extends object
F extends keyof T
*
`ts`
type Override
T1
T2
*
`ts`
type PartialRecord
K extends keyof any
T
use Partial
*
`ts`
type PickByPredicate
T extends EmptyObject = Record\<string, unknown\>
T\[keyof T\]
keyof T
boolean
*
`ts${Prefix}${string}
type PickStartsWith ? K : never]: T[K] };`
T
Prefix extends string
*
`ts`
type StringKeyObject
T = unknown
`ts`
[key: string]: T
*
`ts`
type StringOrAlertFunction
T extends AnyNonPromise
*
`ts`
type TypeCheck
(obj): obj is T;
(obj, config): obj is T;
(obj, config): obj is T;
};
T extends TypedValue
`ts`
(obj): obj is T;
AnyNonPromise
obj is T
`ts`
(obj, config): obj is T;
AnyNonPromise
obj is T
`ts`
(obj, config): obj is T;
AnyNonPromise
undefined | number | TypeCheckConfig
obj is T
*
`ts`
type WithAdditional
TAdditional extends EmptyObject \| void = void
*
`ts`
const AsObjectFactory: object;
`ts`
create:
#### T
T extends TypedObject
#### typeCheck
TypeCheck\<T\>
AsTypeFunction\<T\>
`ts`
createOptional:
#### T
T extends TypedObject
#### typeCheck
TypeCheck\<T\>
`ts`
(value): undefined | T;
#### Parameters
##### value
AnyNonPromise
#### Returns
undefined \| T
*
`ts`
const AsTypeFactory: object;
`ts`
create:
#### T
T extends AnyNonPromise
#### typeCheck
TypeCheck\<T\>
AsTypeFunction\<T\>
`ts`
createOptional:
#### T
T extends AnyNonPromise
#### typeCheck
TypeCheck\<T\>
`ts`
(value): undefined | T;
#### Parameters
##### value
AnyNonPromise
#### Returns
undefined \| T
*
`ts`
const asAnyObject: AsTypeFunction
*
`ts`
const deepMerge:
Deeply merges multiple objects into a new object.
...T
Multiple objects to merge deeply.
The function merges properties from all objects into a new object.
If a property exists in multiple objects, the last object's value will be used.
If a property is an object, it will be merged recursively.
If a property is an array, it will be overwritten by the last object's value.
If a property is a primitive value, it will be overwritten by the last object's value.
If a property is undefined in the source, it will be skipped.
If a property is a symbol, it will be merged as well.
MergeAll\<T`\>
A new object with the merged properties.
Part of sdk-js
- Arie Trouw (arietrouw.com)
- Matt Jones
- Joel Carter
- Jordan Trouw
> See the LICENSE file for license details
[logo]: https://cdn.xy.company/img/brand/XYPersistentCompany_Logo_Icon_Colored.svg
[main-build]: https://github.com/xylabs/sdk-js/actions/workflows/build.yml/badge.svg
[main-build-link]: https://github.com/xylabs/sdk-js/actions/workflows/build.yml
[npm-badge]: https://img.shields.io/npm/v/@xylabs/object.svg
[npm-link]: https://www.npmjs.com/package/@xylabs/object
[codacy-badge]: https://app.codacy.com/project/badge/Grade/c8e15e14f37741c18cfb47ac7245c698
[codacy-link]: https://www.codacy.com/gh/xylabs/sdk-js/dashboard?utm_source=github.com&utm_medium=referral&utm_content=xylabs/sdk-js&utm_campaign=Badge_Grade
[codeclimate-badge]: https://api.codeclimate.com/v1/badges/c5eb068f806f0b047ea7/maintainability
[codeclimate-link]: https://codeclimate.com/github/xylabs/sdk-js/maintainability
[snyk-badge]: https://snyk.io/test/github/xylabs/sdk-js/badge.svg?targetFile=package.json
[snyk-link]: https://snyk.io/test/github/xylabs/sdk-js?targetFile=package.json
[npm-downloads-badge]: https://img.shields.io/npm/dw/@xylabs/object
[npm-license-badge]: https://img.shields.io/npm/l/@xylabs/object
[jsdelivr-badge]: https://data.jsdelivr.com/v1/package/npm/@xylabs/object/badge
[jsdelivr-link]: https://www.jsdelivr.com/package/npm/@xylabs/object
[socket-badge]: https://socket.dev/api/badge/npm/package/@xylabs/object
[socket-link]: https://socket.dev/npm/package/@xylabs/object