@xyo-network/payload-builder
Advanced tools
Comparing version
import type { Hash } from '@xylabs/hex'; | ||
import type { AnyObject } from '@xylabs/object'; | ||
import { type Payload, type WithHashMeta, type WithStorageMeta } from '@xyo-network/payload-model'; | ||
import { type Payload, type WithHashMeta, type WithoutStorageMeta, type WithStorageMeta } from '@xyo-network/payload-model'; | ||
import { PayloadBuilderBase } from './BuilderBase.ts'; | ||
@@ -28,3 +28,3 @@ import type { PayloadBuilderOptions } from './Options.ts'; | ||
static hashPairs<T extends Payload>(payloads: T[]): Promise<[T, Hash][]>; | ||
static hashableFields<T extends Payload>(payload: T): T; | ||
static hashableFields<T extends Payload>(payload: T): WithoutStorageMeta<T>; | ||
static hashes(payloads: undefined): Promise<undefined>; | ||
@@ -31,0 +31,0 @@ static hashes<T extends Payload>(payloads: T[]): Promise<Hash[]>; |
@@ -1,28 +0,25 @@ | ||
import type { AnyObject } from '@xylabs/object'; | ||
import type { AnyObject, EmptyObject } from '@xylabs/object'; | ||
import type { Promisable } from '@xylabs/promise'; | ||
import type { Payload, Schema } from '@xyo-network/payload-model'; | ||
import type { DeepOmitStartsWith, Payload, Schema, WithOptionalSchema, WithoutClientMeta, WithoutMeta, WithoutPrivateStorageMeta, WithoutSchema, WithoutStorageMeta } from '@xyo-network/payload-model'; | ||
import type { PayloadBuilderOptions } from './Options.ts'; | ||
export type WithOptionalSchema<T extends Payload> = Omit<T, 'schema'> & Partial<T>; | ||
export type WithoutSchema<T extends WithOptionalSchema<Payload>> = Omit<T, 'schema'>; | ||
export declare const removeMetaAndSchema: <T extends Payload>(payload: Partial<WithOptionalSchema<T>>) => WithoutSchema<T>; | ||
export declare const omitByPrefix: <T extends EmptyObject, P extends string>(payload: T, prefix: P, maxDepth?: number) => DeepOmitStartsWith<T, P>; | ||
export declare const omitSchema: <T extends WithOptionalSchema>(payload: T) => WithoutSchema<T>; | ||
export declare class PayloadBuilderBase<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> { | ||
readonly options: O; | ||
protected _fields?: Partial<WithoutSchema<T>>; | ||
protected _fields?: WithoutMeta<WithoutSchema<T>>; | ||
protected _schema: Schema; | ||
constructor(options: O); | ||
static dataHashableFields<T extends Payload>(schema: Schema, payload: WithoutSchema<T>): Promisable<Payload>; | ||
static omitClientMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitClientMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitPrivateStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitPrivateStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
dataHashableFields(): Promise<{ | ||
schema: string; | ||
} & import("@xyo-network/payload-model").PayloadFields>; | ||
fields(fields: WithOptionalSchema<T>): this; | ||
static dataHashableFields<T extends Payload>(schema: Schema, payload: WithoutSchema<T>): Promisable<WithoutMeta<T>>; | ||
static omitClientMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutClientMeta<T>; | ||
static omitClientMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutClientMeta<T>[]; | ||
static omitMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutMeta<T>; | ||
static omitMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutMeta<T>[]; | ||
static omitPrivateStorageMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutPrivateStorageMeta<T>; | ||
static omitPrivateStorageMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutPrivateStorageMeta<T>[]; | ||
static omitStorageMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutStorageMeta<T>; | ||
static omitStorageMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutStorageMeta<T>[]; | ||
dataHashableFields(): Promise<DeepOmitStartsWith<DeepOmitStartsWith<T, "_">, "$">>; | ||
fields(fields: WithoutMeta<WithoutSchema<T>>): this; | ||
schema(value: Schema): void; | ||
} | ||
//# sourceMappingURL=BuilderBase.d.ts.map |
import type { Logger } from '@xylabs/logger'; | ||
import type { JsonObject } from '@xylabs/object'; | ||
import type { Schema } from '@xyo-network/payload-model'; | ||
export interface PayloadBuilderOptions<T> { | ||
readonly fields?: Partial<T>; | ||
import type { EmptyObject, JsonObject } from '@xylabs/object'; | ||
import type { Schema, WithoutMeta, WithoutSchema } from '@xyo-network/payload-model'; | ||
export interface PayloadBuilderOptions<T extends EmptyObject = EmptyObject> { | ||
readonly fields?: WithoutMeta<WithoutSchema<T>>; | ||
readonly logger?: Logger; | ||
@@ -7,0 +7,0 @@ readonly meta?: JsonObject; |
import type { Hash } from '@xylabs/hex'; | ||
import type { AnyObject } from '@xylabs/object'; | ||
import { type Payload, type WithHashMeta, type WithStorageMeta } from '@xyo-network/payload-model'; | ||
import { type Payload, type WithHashMeta, type WithoutStorageMeta, type WithStorageMeta } from '@xyo-network/payload-model'; | ||
import { PayloadBuilderBase } from './BuilderBase.ts'; | ||
@@ -28,3 +28,3 @@ import type { PayloadBuilderOptions } from './Options.ts'; | ||
static hashPairs<T extends Payload>(payloads: T[]): Promise<[T, Hash][]>; | ||
static hashableFields<T extends Payload>(payload: T): T; | ||
static hashableFields<T extends Payload>(payload: T): WithoutStorageMeta<T>; | ||
static hashes(payloads: undefined): Promise<undefined>; | ||
@@ -31,0 +31,0 @@ static hashes<T extends Payload>(payloads: T[]): Promise<Hash[]>; |
@@ -1,28 +0,25 @@ | ||
import type { AnyObject } from '@xylabs/object'; | ||
import type { AnyObject, EmptyObject } from '@xylabs/object'; | ||
import type { Promisable } from '@xylabs/promise'; | ||
import type { Payload, Schema } from '@xyo-network/payload-model'; | ||
import type { DeepOmitStartsWith, Payload, Schema, WithOptionalSchema, WithoutClientMeta, WithoutMeta, WithoutPrivateStorageMeta, WithoutSchema, WithoutStorageMeta } from '@xyo-network/payload-model'; | ||
import type { PayloadBuilderOptions } from './Options.ts'; | ||
export type WithOptionalSchema<T extends Payload> = Omit<T, 'schema'> & Partial<T>; | ||
export type WithoutSchema<T extends WithOptionalSchema<Payload>> = Omit<T, 'schema'>; | ||
export declare const removeMetaAndSchema: <T extends Payload>(payload: Partial<WithOptionalSchema<T>>) => WithoutSchema<T>; | ||
export declare const omitByPrefix: <T extends EmptyObject, P extends string>(payload: T, prefix: P, maxDepth?: number) => DeepOmitStartsWith<T, P>; | ||
export declare const omitSchema: <T extends WithOptionalSchema>(payload: T) => WithoutSchema<T>; | ||
export declare class PayloadBuilderBase<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> { | ||
readonly options: O; | ||
protected _fields?: Partial<WithoutSchema<T>>; | ||
protected _fields?: WithoutMeta<WithoutSchema<T>>; | ||
protected _schema: Schema; | ||
constructor(options: O); | ||
static dataHashableFields<T extends Payload>(schema: Schema, payload: WithoutSchema<T>): Promisable<Payload>; | ||
static omitClientMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitClientMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitPrivateStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitPrivateStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
dataHashableFields(): Promise<{ | ||
schema: string; | ||
} & import("@xyo-network/payload-model").PayloadFields>; | ||
fields(fields: WithOptionalSchema<T>): this; | ||
static dataHashableFields<T extends Payload>(schema: Schema, payload: WithoutSchema<T>): Promisable<WithoutMeta<T>>; | ||
static omitClientMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutClientMeta<T>; | ||
static omitClientMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutClientMeta<T>[]; | ||
static omitMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutMeta<T>; | ||
static omitMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutMeta<T>[]; | ||
static omitPrivateStorageMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutPrivateStorageMeta<T>; | ||
static omitPrivateStorageMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutPrivateStorageMeta<T>[]; | ||
static omitStorageMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutStorageMeta<T>; | ||
static omitStorageMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutStorageMeta<T>[]; | ||
dataHashableFields(): Promise<DeepOmitStartsWith<DeepOmitStartsWith<T, "_">, "$">>; | ||
fields(fields: WithoutMeta<WithoutSchema<T>>): this; | ||
schema(value: Schema): void; | ||
} | ||
//# sourceMappingURL=BuilderBase.d.ts.map |
import type { Logger } from '@xylabs/logger'; | ||
import type { JsonObject } from '@xylabs/object'; | ||
import type { Schema } from '@xyo-network/payload-model'; | ||
export interface PayloadBuilderOptions<T> { | ||
readonly fields?: Partial<T>; | ||
import type { EmptyObject, JsonObject } from '@xylabs/object'; | ||
import type { Schema, WithoutMeta, WithoutSchema } from '@xyo-network/payload-model'; | ||
export interface PayloadBuilderOptions<T extends EmptyObject = EmptyObject> { | ||
readonly fields?: WithoutMeta<WithoutSchema<T>>; | ||
readonly logger?: Logger; | ||
@@ -7,0 +7,0 @@ readonly meta?: JsonObject; |
import type { Hash } from '@xylabs/hex'; | ||
import type { AnyObject } from '@xylabs/object'; | ||
import { type Payload, type WithHashMeta, type WithStorageMeta } from '@xyo-network/payload-model'; | ||
import { type Payload, type WithHashMeta, type WithoutStorageMeta, type WithStorageMeta } from '@xyo-network/payload-model'; | ||
import { PayloadBuilderBase } from './BuilderBase.ts'; | ||
@@ -28,3 +28,3 @@ import type { PayloadBuilderOptions } from './Options.ts'; | ||
static hashPairs<T extends Payload>(payloads: T[]): Promise<[T, Hash][]>; | ||
static hashableFields<T extends Payload>(payload: T): T; | ||
static hashableFields<T extends Payload>(payload: T): WithoutStorageMeta<T>; | ||
static hashes(payloads: undefined): Promise<undefined>; | ||
@@ -31,0 +31,0 @@ static hashes<T extends Payload>(payloads: T[]): Promise<Hash[]>; |
@@ -1,28 +0,25 @@ | ||
import type { AnyObject } from '@xylabs/object'; | ||
import type { AnyObject, EmptyObject } from '@xylabs/object'; | ||
import type { Promisable } from '@xylabs/promise'; | ||
import type { Payload, Schema } from '@xyo-network/payload-model'; | ||
import type { DeepOmitStartsWith, Payload, Schema, WithOptionalSchema, WithoutClientMeta, WithoutMeta, WithoutPrivateStorageMeta, WithoutSchema, WithoutStorageMeta } from '@xyo-network/payload-model'; | ||
import type { PayloadBuilderOptions } from './Options.ts'; | ||
export type WithOptionalSchema<T extends Payload> = Omit<T, 'schema'> & Partial<T>; | ||
export type WithoutSchema<T extends WithOptionalSchema<Payload>> = Omit<T, 'schema'>; | ||
export declare const removeMetaAndSchema: <T extends Payload>(payload: Partial<WithOptionalSchema<T>>) => WithoutSchema<T>; | ||
export declare const omitByPrefix: <T extends EmptyObject, P extends string>(payload: T, prefix: P, maxDepth?: number) => DeepOmitStartsWith<T, P>; | ||
export declare const omitSchema: <T extends WithOptionalSchema>(payload: T) => WithoutSchema<T>; | ||
export declare class PayloadBuilderBase<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> { | ||
readonly options: O; | ||
protected _fields?: Partial<WithoutSchema<T>>; | ||
protected _fields?: WithoutMeta<WithoutSchema<T>>; | ||
protected _schema: Schema; | ||
constructor(options: O); | ||
static dataHashableFields<T extends Payload>(schema: Schema, payload: WithoutSchema<T>): Promisable<Payload>; | ||
static omitClientMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitClientMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitPrivateStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitPrivateStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
static omitStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T; | ||
static omitStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[]; | ||
dataHashableFields(): Promise<{ | ||
schema: string; | ||
} & import("@xyo-network/payload-model").PayloadFields>; | ||
fields(fields: WithOptionalSchema<T>): this; | ||
static dataHashableFields<T extends Payload>(schema: Schema, payload: WithoutSchema<T>): Promisable<WithoutMeta<T>>; | ||
static omitClientMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutClientMeta<T>; | ||
static omitClientMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutClientMeta<T>[]; | ||
static omitMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutMeta<T>; | ||
static omitMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutMeta<T>[]; | ||
static omitPrivateStorageMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutPrivateStorageMeta<T>; | ||
static omitPrivateStorageMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutPrivateStorageMeta<T>[]; | ||
static omitStorageMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutStorageMeta<T>; | ||
static omitStorageMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutStorageMeta<T>[]; | ||
dataHashableFields(): Promise<DeepOmitStartsWith<DeepOmitStartsWith<T, "_">, "$">>; | ||
fields(fields: WithoutMeta<WithoutSchema<T>>): this; | ||
schema(value: Schema): void; | ||
} | ||
//# sourceMappingURL=BuilderBase.d.ts.map |
import type { Logger } from '@xylabs/logger'; | ||
import type { JsonObject } from '@xylabs/object'; | ||
import type { Schema } from '@xyo-network/payload-model'; | ||
export interface PayloadBuilderOptions<T> { | ||
readonly fields?: Partial<T>; | ||
import type { EmptyObject, JsonObject } from '@xylabs/object'; | ||
import type { Schema, WithoutMeta, WithoutSchema } from '@xyo-network/payload-model'; | ||
export interface PayloadBuilderOptions<T extends EmptyObject = EmptyObject> { | ||
readonly fields?: WithoutMeta<WithoutSchema<T>>; | ||
readonly logger?: Logger; | ||
@@ -7,0 +7,0 @@ readonly meta?: JsonObject; |
{ | ||
"name": "@xyo-network/payload-builder", | ||
"version": "3.6.0-rc.5", | ||
"version": "3.6.0-rc.6", | ||
"description": "Primary SDK for using XYO Protocol 2.0", | ||
@@ -32,9 +32,9 @@ "homepage": "https://xyo.network", | ||
"dependencies": { | ||
"@xylabs/assert": "^4.4.14", | ||
"@xylabs/hex": "^4.4.14", | ||
"@xylabs/logger": "^4.4.14", | ||
"@xylabs/object": "^4.4.14", | ||
"@xylabs/promise": "^4.4.14", | ||
"@xyo-network/hash": "^3.6.0-rc.5", | ||
"@xyo-network/payload-model": "^3.6.0-rc.5" | ||
"@xylabs/assert": "^4.4.15", | ||
"@xylabs/hex": "^4.4.15", | ||
"@xylabs/logger": "^4.4.15", | ||
"@xylabs/object": "^4.4.15", | ||
"@xylabs/promise": "^4.4.15", | ||
"@xyo-network/hash": "^3.6.0-rc.6", | ||
"@xyo-network/payload-model": "^3.6.0-rc.6" | ||
}, | ||
@@ -44,3 +44,3 @@ "devDependencies": { | ||
"@xylabs/tsconfig": "^4.2.4", | ||
"@xylabs/vitest-extended": "^4.4.14", | ||
"@xylabs/vitest-extended": "^4.4.15", | ||
"typescript": "^5.7.2", | ||
@@ -47,0 +47,0 @@ "vitest": "^2.1.8" |
@@ -8,2 +8,3 @@ import type { Hash } from '@xylabs/hex' | ||
type WithHashMeta, | ||
type WithoutStorageMeta, | ||
type WithStorageMeta, | ||
@@ -128,3 +129,3 @@ } from '@xyo-network/payload-model' | ||
payload: T, | ||
): T { | ||
): WithoutStorageMeta<T> { | ||
return this.omitStorageMeta(payload) | ||
@@ -131,0 +132,0 @@ } |
import { assertEx } from '@xylabs/assert' | ||
import type { AnyObject } from '@xylabs/object' | ||
import type { AnyObject, EmptyObject } from '@xylabs/object' | ||
import { | ||
@@ -8,15 +8,23 @@ isJsonObject, omitBy, toJson, | ||
import { removeEmptyFields } from '@xyo-network/hash' | ||
import type { Payload, Schema } from '@xyo-network/payload-model' | ||
import type { | ||
DeepOmitStartsWith, | ||
Payload, Schema, | ||
WithOptionalSchema, | ||
WithoutClientMeta, | ||
WithoutMeta, | ||
WithoutPrivateStorageMeta, | ||
WithoutSchema, | ||
WithoutStorageMeta, | ||
} from '@xyo-network/payload-model' | ||
import { PayloadBuilder } from './Builder.ts' | ||
import type { PayloadBuilderOptions } from './Options.ts' | ||
export type WithOptionalSchema<T extends Payload> = Omit<T, 'schema'> & Partial<T> | ||
export const omitByPrefix = <T extends EmptyObject, P extends string>(payload: T, prefix: P, maxDepth = 100): DeepOmitStartsWith<T, P> => { | ||
return omitBy(payload, omitByPrefixPredicate(prefix), maxDepth) as unknown as DeepOmitStartsWith<T, P> | ||
} | ||
export type WithoutSchema<T extends WithOptionalSchema<Payload>> = Omit<T, 'schema'> | ||
export const removeMetaAndSchema = <T extends Payload>(payload: Partial<WithOptionalSchema<T>>): WithoutSchema<T> => { | ||
const { ...result } = PayloadBuilder.omitMeta(payload as T) as WithOptionalSchema<T> | ||
export const omitSchema = <T extends WithOptionalSchema>(payload: T): WithoutSchema<T> => { | ||
const result = structuredClone(payload) | ||
delete result.schema | ||
return result as Omit<T, 'schema'> | ||
return result | ||
} | ||
@@ -29,4 +37,5 @@ | ||
export class PayloadBuilderBase<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> { | ||
protected _fields?: Partial<WithoutSchema<T>> | ||
export class PayloadBuilderBase<T extends Payload = Payload<AnyObject>, | ||
O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> { | ||
protected _fields?: WithoutMeta<WithoutSchema<T>> | ||
protected _schema: Schema | ||
@@ -37,3 +46,5 @@ | ||
this._schema = schema | ||
this._fields = removeMetaAndSchema(removeEmptyFields(structuredClone(fields ?? {}))) | ||
if (fields) { | ||
this.fields(fields) | ||
} | ||
} | ||
@@ -45,3 +56,3 @@ | ||
): Promisable<Payload> { | ||
): Promisable<WithoutMeta<T>> { | ||
const cleanFields = removeEmptyFields({ ...payload, schema }) | ||
@@ -52,35 +63,35 @@ assertEx( | ||
) | ||
return this.omitMeta(cleanFields) as T | ||
return this.omitMeta(cleanFields) as WithoutMeta<T> | ||
} | ||
static omitClientMeta<T extends Payload>(payload: T, maxDepth?: number): T | ||
static omitClientMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[] | ||
static omitClientMeta<T extends Payload>(payloads: T | T[], maxDepth = 100): T | T[] { | ||
static omitClientMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutClientMeta<T> | ||
static omitClientMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutClientMeta<T>[] | ||
static omitClientMeta<T extends EmptyObject>(payloads: T | T[], maxDepth = 100): WithoutClientMeta<T> | WithoutClientMeta<T>[] { | ||
return Array.isArray(payloads) | ||
? payloads.map(payload => this.omitClientMeta(payload, maxDepth)) as T[] | ||
: omitBy(payloads, omitByPrefixPredicate('$'), maxDepth) as T | ||
? payloads.map(payload => this.omitClientMeta(payload, maxDepth)) | ||
: omitByPrefix(payloads, '$', maxDepth) | ||
} | ||
static omitMeta<T extends Payload>(payload: T, maxDepth?: number): T | ||
static omitMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[] | ||
static omitMeta<T extends Payload>(payloads: T | T[], maxDepth = 100): T | T[] { | ||
static omitMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutMeta<T> | ||
static omitMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutMeta<T>[] | ||
static omitMeta<T extends EmptyObject>(payloads: T | T[], maxDepth = 100): WithoutMeta<T> | WithoutMeta<T>[] { | ||
return Array.isArray(payloads) | ||
? this.omitStorageMeta(this.omitClientMeta(payloads, maxDepth), maxDepth) | ||
: this.omitStorageMeta(this.omitClientMeta(payloads, maxDepth), maxDepth) | ||
? payloads.map(payload => this.omitMeta(payload, maxDepth)) | ||
: this.omitStorageMeta(this.omitClientMeta(payloads, maxDepth), maxDepth) as unknown as WithoutMeta<T> | ||
} | ||
static omitPrivateStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T | ||
static omitPrivateStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[] | ||
static omitPrivateStorageMeta<T extends Payload>(payloads: T | T[], maxDepth = 100): T | T[] { | ||
static omitPrivateStorageMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutPrivateStorageMeta<T> | ||
static omitPrivateStorageMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutPrivateStorageMeta<T>[] | ||
static omitPrivateStorageMeta<T extends EmptyObject>(payloads: T | T[], maxDepth = 100): WithoutPrivateStorageMeta<T> | WithoutPrivateStorageMeta<T>[] { | ||
return Array.isArray(payloads) | ||
? payloads.map(payload => this.omitPrivateStorageMeta(payload, maxDepth)) as T[] | ||
: omitBy(payloads, omitByPrefixPredicate('__'), maxDepth) as T | ||
? payloads.map(payload => this.omitPrivateStorageMeta(payload, maxDepth)) | ||
: omitByPrefix(payloads, '__', maxDepth) | ||
} | ||
static omitStorageMeta<T extends Payload>(payload: T, maxDepth?: number): T | ||
static omitStorageMeta<T extends Payload>(payloads: T[], maxDepth?: number): T[] | ||
static omitStorageMeta<T extends Payload>(payloads: T | T[], maxDepth = 100): T | T[] { | ||
static omitStorageMeta<T extends EmptyObject>(payload: T, maxDepth?: number): WithoutStorageMeta<T> | ||
static omitStorageMeta<T extends EmptyObject>(payloads: T[], maxDepth?: number): WithoutStorageMeta<T>[] | ||
static omitStorageMeta<T extends EmptyObject>(payloads: T | T[], maxDepth = 100): WithoutStorageMeta<T> | WithoutStorageMeta<T>[] { | ||
return Array.isArray(payloads) | ||
? payloads.map(payload => this.omitStorageMeta(payload, maxDepth)) as T[] | ||
: omitBy(payloads, omitByPrefixPredicate('_'), maxDepth) as T | ||
? payloads.map(payload => this.omitStorageMeta(payload, maxDepth)) | ||
: omitByPrefix(payloads, '_', maxDepth) | ||
} | ||
@@ -92,15 +103,9 @@ | ||
// TDOD: Add verification that required fields are present | ||
this._fields as T, | ||
this._fields as WithoutSchema<T>, | ||
) | ||
} | ||
fields(fields: WithOptionalSchema<T>) { | ||
if (fields) { | ||
const fieldsClone = structuredClone(fields) | ||
const { schema } = fieldsClone | ||
if (schema) { | ||
this.schema(schema) | ||
} | ||
this._fields = removeEmptyFields(removeMetaAndSchema<T>(fieldsClone)) | ||
} | ||
fields(fields: WithoutMeta<WithoutSchema<T>>) { | ||
// we need to do the cast here since ts seems to not like nested, yet same, generics | ||
this._fields = omitSchema(PayloadBuilderBase.omitMeta(removeEmptyFields(structuredClone(fields)))) as unknown as WithoutMeta<WithoutSchema<T>> | ||
return this | ||
@@ -107,0 +112,0 @@ } |
import type { Logger } from '@xylabs/logger' | ||
import type { JsonObject } from '@xylabs/object' | ||
import type { Schema } from '@xyo-network/payload-model' | ||
import type { EmptyObject, JsonObject } from '@xylabs/object' | ||
import type { | ||
Schema, WithoutMeta, WithoutSchema, | ||
} from '@xyo-network/payload-model' | ||
export interface PayloadBuilderOptions<T> { | ||
readonly fields?: Partial<T> | ||
export interface PayloadBuilderOptions<T extends EmptyObject = EmptyObject> { | ||
readonly fields?: WithoutMeta<WithoutSchema<T>> | ||
readonly logger?: Logger | ||
@@ -8,0 +10,0 @@ readonly meta?: JsonObject |
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
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
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
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
125766
2.65%1129
-0.27%Updated
Updated
Updated
Updated
Updated