New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@xyo-network/payload-builder

Package Overview
Dependencies
Maintainers
0
Versions
792
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@xyo-network/payload-builder - npm Package Compare versions

Comparing version

to
3.6.0-rc.6

4

dist/browser/Builder.d.ts
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