@xyo-network/payload-model 3.18.1 → 3.18.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30,6 +30,13 @@ var notPayloadOfSchemaType = (schema) => {
30
30
  var ModuleErrorSchema = "network.xyo.error.module";
31
31
  var isModuleError = isPayloadOfSchemaType(ModuleErrorSchema);
32
32
 
33
+ // src/PayloadBundle.ts
34
+ import { AsObjectFactory as AsObjectFactory2 } from "@xylabs/object";
35
+ var PayloadBundleSchema = "network.xyo.payload.bundle";
36
+ var isPayloadBundle = isPayloadOfSchemaType(PayloadBundleSchema);
37
+ var asPayloadBundle = AsObjectFactory2.create(isPayloadBundle);
38
+ var asOptionalPayloadBundle = AsObjectFactory2.createOptional(isPayloadBundle);
39
+
33
40
  // src/PayloadSet/PayloadSetSchema.ts
34
41
  var PayloadSetSchema = "network.xyo.payload.set";
35
42
 
@@ -44,29 +51,29 @@ var asSchema = AsTypeFactory.create(isSchema);
44
51
 
45
52
  // src/StorageMeta/DataHash.ts
46
53
  import { isHash } from "@xylabs/hex";
47
- import { AsObjectFactory as AsObjectFactory2 } from "@xylabs/object";
54
+ import { AsObjectFactory as AsObjectFactory3 } from "@xylabs/object";
48
55
  var isDataHashStorageMeta = (value) => {
49
56
  return isHash(value?._dataHash);
50
57
  };
51
- var asDataHashStorageMeta = AsObjectFactory2.create(isDataHashStorageMeta);
52
- var asOptionalDataHashStorageMeta = AsObjectFactory2.createOptional(isDataHashStorageMeta);
58
+ var asDataHashStorageMeta = AsObjectFactory3.create(isDataHashStorageMeta);
59
+ var asOptionalDataHashStorageMeta = AsObjectFactory3.createOptional(isDataHashStorageMeta);
53
60
 
54
61
  // src/StorageMeta/Hash.ts
55
62
  import { isHash as isHash2 } from "@xylabs/hex";
56
- import { AsObjectFactory as AsObjectFactory3 } from "@xylabs/object";
63
+ import { AsObjectFactory as AsObjectFactory4 } from "@xylabs/object";
57
64
  var isHashStorageMeta = (value) => {
58
65
  return isDataHashStorageMeta(value) && isHash2(value?._hash);
59
66
  };
60
- var asHashStorageMeta = AsObjectFactory3.create(isHashStorageMeta);
61
- var asOptionalHashStorageMeta = AsObjectFactory3.createOptional(isHashStorageMeta);
67
+ var asHashStorageMeta = AsObjectFactory4.create(isHashStorageMeta);
68
+ var asOptionalHashStorageMeta = AsObjectFactory4.createOptional(isHashStorageMeta);
62
69
 
63
70
  // src/StorageMeta/Sequence.ts
64
- import { AsObjectFactory as AsObjectFactory4 } from "@xylabs/object";
71
+ import { AsObjectFactory as AsObjectFactory5 } from "@xylabs/object";
65
72
  var isSequenceStorageMeta = (value) => {
66
73
  return value?._sequence != void 0;
67
74
  };
68
- var asSequenceStorageMeta = AsObjectFactory4.create(isSequenceStorageMeta);
69
- var asOptionalSequenceStorageMeta = AsObjectFactory4.createOptional(isSequenceStorageMeta);
75
+ var asSequenceStorageMeta = AsObjectFactory5.create(isSequenceStorageMeta);
76
+ var asOptionalSequenceStorageMeta = AsObjectFactory5.createOptional(isSequenceStorageMeta);
70
77
 
71
78
  // src/StorageMeta/sequence/Parser.ts
72
79
  import { toUint8Array } from "@xylabs/arraybuffer";
@@ -235,15 +242,16 @@ var qualified = (a, b) => {
235
242
  var SequenceComparer = { local, qualified };
236
243
 
237
244
  // src/StorageMeta/StorageMeta.ts
238
- import { AsObjectFactory as AsObjectFactory5 } from "@xylabs/object";
245
+ import { AsObjectFactory as AsObjectFactory6 } from "@xylabs/object";
239
246
  var isStorageMeta = (value) => {
240
247
  return isSequenceStorageMeta(value) && isHashStorageMeta(value);
241
248
  };
242
- var asStorageMeta = AsObjectFactory5.create(isStorageMeta);
243
- var asOptionalStorageMeta = AsObjectFactory5.createOptional(isStorageMeta);
249
+ var asStorageMeta = AsObjectFactory6.create(isStorageMeta);
250
+ var asOptionalStorageMeta = AsObjectFactory6.createOptional(isStorageMeta);
244
251
  export {
245
252
  LocalSequenceConstants,
246
253
  ModuleErrorSchema,
254
+ PayloadBundleSchema,
247
255
  PayloadSchema,
248
256
  PayloadSetSchema,
249
257
  QualifiedSequenceConstants,
@@ -259,9 +267,11 @@ export {
259
267
  asHashStorageMeta,
260
268
  asOptionalDataHashStorageMeta,
261
269
  asOptionalHashStorageMeta,
270
+ asOptionalPayloadBundle,
262
271
  asOptionalSequenceStorageMeta,
263
272
  asOptionalStorageMeta,
264
273
  asPayload,
274
+ asPayloadBundle,
265
275
  asSchema,
266
276
  asSequenceStorageMeta,
267
277
  asStorageMeta,
@@ -273,6 +283,7 @@ export {
273
283
  isModuleError,
274
284
  isNonce,
275
285
  isPayload,
286
+ isPayloadBundle,
276
287
  isPayloadOfSchemaType,
277
288
  isPayloadOfSchemaTypeWithSources,
278
289
  isQualifiedSequence,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/isPayload.ts","../../src/isPayloadOfSchemaType.ts","../../src/Error.ts","../../src/PayloadSet/PayloadSetSchema.ts","../../src/Schema.ts","../../src/StorageMeta/DataHash.ts","../../src/StorageMeta/Hash.ts","../../src/StorageMeta/Sequence.ts","../../src/StorageMeta/sequence/Parser.ts","../../src/StorageMeta/sequence/Sequence.ts","../../src/StorageMeta/sequence/Comparer.ts","../../src/StorageMeta/StorageMeta.ts"],"sourcesContent":["import { AsObjectFactory, isObject } from '@xylabs/object'\n\nimport type { Payload } from './Payload.ts'\n\nexport const isAnyPayload = (value: unknown): value is Payload => {\n if (isObject(value)) {\n return typeof value.schema === 'string'\n }\n return false\n}\n\nexport const asAnyPayload = AsObjectFactory.create(isAnyPayload)\n\nexport const isPayload\n = <T extends Payload>(schema: string[]) =>\n (value: unknown): value is T => {\n if (isAnyPayload(value)) {\n return schema.includes(value.schema)\n }\n return false\n }\n\nexport const asPayload = <T extends Payload>(schema: string[]) => AsObjectFactory.create((value: unknown): value is T => isPayload(schema)(value))\n","import { isAnyPayload } from './isPayload.ts'\nimport type { Payload, WithSources } from './Payload.ts'\n\nexport function isPayloadOfSchemaType<T extends Payload | never = never>(schema: T['schema']) {\n return (x?: unknown | null): x is T => isAnyPayload(x) && x?.schema === schema\n}\n\nexport const isPayloadOfSchemaTypeWithSources = <T extends Payload | never = never>(schema: T['schema']) => {\n return (x?: unknown | null): x is WithSources<T> =>\n isPayloadOfSchemaType<WithSources<T>>(schema)(x) && x.$sources != undefined && Array.isArray(x.$sources)\n}\n\nexport const notPayloadOfSchemaType = <T extends Payload | never = never>(schema: T['schema']) => {\n return (x?: unknown | null): x is T => !isAnyPayload(x) || x?.schema !== schema\n}\n\n// test types -- keep for future validation, but comment out\n\n/*\ntype TestSchema = 'network.xyo.test'\nconst TestSchema: TestSchema = 'network.xyo.test'\n\ntype Test = Payload<{ field: string }, TestSchema>\n\nconst testPayload: Test = { field: 'test', schema: TestSchema }\n\nconst testPayloads: Payload[] = [testPayload]\n\nconst isTest: Test[] = testPayloads.filter(isPayloadOfSchemaType<Payload>(TestSchema))\n\nconst isTestFromMetaTyped = testMetaPayloads.filter(isPayloadOfSchemaType<Test>(TestSchema))\n*/\n","import type { Hash } from '@xylabs/hex'\nimport type { JsonValue } from '@xylabs/object'\n\nimport { isPayloadOfSchemaType } from './isPayloadOfSchemaType.ts'\nimport type { Payload } from './Payload.ts'\n\nexport const ModuleErrorSchema = 'network.xyo.error.module' as const\nexport type ModuleErrorSchema = typeof ModuleErrorSchema\n\nexport type ModuleError = Payload<{\n details?: JsonValue\n message?: string\n name?: string\n query?: Hash\n schema: ModuleErrorSchema\n}>\n\nexport const isModuleError = isPayloadOfSchemaType<ModuleError>(ModuleErrorSchema)\n","export const PayloadSetSchema = 'network.xyo.payload.set' as const\nexport type PayloadSetSchema = typeof PayloadSetSchema\n","import type { EmptyObject } from '@xylabs/object'\nimport { AsTypeFactory } from '@xylabs/object'\n\nexport const SchemaRegEx = '^(?:[a-z0-9]+\\.)*[a-z0-9]+$' as const\n\n/** Schema type in Javascript is a string */\n// eslint-disable-next-line sonarjs/redundant-type-aliases\nexport type Schema = string\n\nexport const PayloadSchema = 'network.xyo.payload' as const\nexport type PayloadSchema = typeof PayloadSchema\n\nexport const isSchema = (value: unknown): value is Schema => {\n return typeof value === 'string'\n}\n\nexport const asSchema = AsTypeFactory.create<Schema>(isSchema)\n\n/** Schema fields for a Payload */\nexport interface SchemaFields extends EmptyObject {\n /** Schema of the object */\n schema: Schema\n}\n\n/** Add the Schema Fields to an object */\nexport type WithSchema<T extends EmptyObject | void = void> = T extends EmptyObject ? SchemaFields & T : SchemaFields\n","import type { Hash } from '@xylabs/hex'\nimport { isHash } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\n\nimport type { Payload } from '../Payload.ts'\n\nexport interface DataHashStorageMeta {\n _dataHash: Hash\n}\n\nexport type WithDataHashStorageMeta<T extends Payload = Payload> = T & DataHashStorageMeta\nexport type WithPartialDataHashStorageMeta<T extends Payload = Payload> = Partial<WithDataHashStorageMeta<T>>\n\nexport const isDataHashStorageMeta = (value: unknown): value is DataHashStorageMeta => {\n return isHash((value as WithDataHashStorageMeta)?._dataHash)\n}\n\nexport const asDataHashStorageMeta = AsObjectFactory.create<DataHashStorageMeta>(isDataHashStorageMeta)\nexport const asOptionalDataHashStorageMeta = AsObjectFactory.createOptional<DataHashStorageMeta>(isDataHashStorageMeta)\n","import type { Hash } from '@xylabs/hex'\nimport { isHash } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\n\nimport type { Payload } from '../Payload.ts'\nimport type { DataHashStorageMeta } from './DataHash.ts'\nimport { isDataHashStorageMeta } from './DataHash.ts'\n\nexport interface HashStorageMeta extends DataHashStorageMeta {\n _hash: Hash\n}\n\nexport type WithHashStorageMeta<T extends Payload = Payload> = T & HashStorageMeta\nexport type WithPartialHashStorageMeta<T extends Payload = Payload> = Partial<WithHashStorageMeta<T>>\n\nexport const isHashStorageMeta = (value: unknown): value is HashStorageMeta => {\n return isDataHashStorageMeta(value) && isHash((value as WithHashStorageMeta)?._hash)\n}\n\nexport const asHashStorageMeta = AsObjectFactory.create<HashStorageMeta>(isHashStorageMeta)\nexport const asOptionalHashStorageMeta = AsObjectFactory.createOptional<HashStorageMeta>(isHashStorageMeta)\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport type { Payload } from '../Payload.ts'\nimport type { Sequence } from './sequence/index.ts'\n\nexport interface SequenceStorageMeta {\n _sequence: Sequence\n}\n\nexport type WithSequenceStorageMeta<T extends Payload = Payload> = T & SequenceStorageMeta\nexport type WithPartialSequenceStorageMeta<T extends Payload = Payload> = Partial<WithSequenceStorageMeta<T>>\n\nexport const isSequenceStorageMeta = (value: unknown): value is SequenceStorageMeta => {\n return (value as WithSequenceStorageMeta)?._sequence != undefined\n}\n\nexport const asSequenceStorageMeta = AsObjectFactory.create(isSequenceStorageMeta)\nexport const asOptionalSequenceStorageMeta = AsObjectFactory.createOptional(isSequenceStorageMeta)\n","import { toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport type {\n Address,\n Hash, Hex,\n} from '@xylabs/hex'\nimport {\n isAddress,\n toHex,\n} from '@xylabs/hex'\n\nimport type {\n Epoch, LocalSequence, Nonce, QualifiedSequence,\n Sequence,\n} from './Sequence.ts'\nimport {\n isQualifiedSequence, isSequence,\n SequenceConstants,\n} from './Sequence.ts'\n\nexport class SequenceParser {\n protected static privateConstructorKey = Date.now().toString()\n\n private readonly data: Readonly<Uint8Array>\n\n protected constructor(privateConstructorKey: string, hex: Hex) {\n assertEx(SequenceParser.privateConstructorKey === privateConstructorKey, () => 'Use create function instead of constructor')\n const paddedHex = toHex(hex, {\n prefix: false,\n bitLength: (hex.length <= SequenceConstants.localSequenceBytes * 2)\n ? SequenceConstants.localSequenceBytes * 8\n : SequenceConstants.qualifiedSequenceBytes * 8,\n })\n this.data = toUint8Array(paddedHex)\n }\n\n get address(): Address {\n const start = SequenceConstants.localSequenceBytes\n const end = SequenceConstants.qualifiedSequenceBytes\n return toHex(this.data.slice(start, end).buffer, { prefix: false })\n }\n\n get epoch(): Epoch {\n const start = 0\n const end = SequenceConstants.epochBytes\n return toHex(this.data.slice(start, end).buffer, { prefix: false })\n }\n\n get localSequence(): LocalSequence {\n const start = 0\n const end = SequenceConstants.localSequenceBytes\n return toHex(this.data.slice(start, end).buffer, { prefix: false })\n }\n\n get nonce(): Nonce {\n const start = SequenceConstants.epochBytes\n const end = SequenceConstants.localSequenceBytes\n return toHex(this.data.slice(start, end).buffer, { prefix: false })\n }\n\n get qualifiedSequence(): QualifiedSequence {\n const start = 0\n const end = SequenceConstants.qualifiedSequenceBytes\n return toHex(this.data.slice(start, end).buffer, { prefix: false })\n }\n\n static from(sequence: Sequence, address?: Address): SequenceParser\n static from(timestamp: Hex, hash: Hash, address?: Address): SequenceParser\n static from(timestamp: Hex, hash: Hex, address?: Address): SequenceParser\n static from(timestamp: Hex, nonce: Nonce, address?: Address): SequenceParser\n static from(timestamp: Hex, hash: Hash, index?: number, address?: Address): SequenceParser\n static from(timestamp: Hex, hash: Hex, index?: number, address?: Address): SequenceParser\n static from(timestamp: Hex, nonce: Nonce, index?: number, address?: Address): SequenceParser\n static from(timestamp: number, hash: Hash, address?: Address): SequenceParser\n static from(timestamp: number, hash: Hex, address?: Address): SequenceParser\n static from(timestamp: number, nonce: Nonce, address?: Address): SequenceParser\n static from(timestamp: number, hash: Hash, index?: number, address?: Address): SequenceParser\n static from(timestamp: number, hash: Hex, index?: number, address?: Address): SequenceParser\n static from(timestamp: number, nonce: Nonce, index?: number, address?: Address): SequenceParser\n static from(\n timestampOrSequence: Sequence | Hex | number,\n nonceOrAddress: Hash | Nonce,\n addressOrIndex?: Address | number,\n addressOnly?: Address,\n ): SequenceParser {\n const address = typeof addressOrIndex === 'number' ? addressOnly : addressOrIndex\n const index = typeof addressOrIndex === 'number' ? addressOrIndex : undefined\n if (isSequence(timestampOrSequence)) {\n if (nonceOrAddress) {\n assertEx(!isQualifiedSequence(timestampOrSequence), () => 'Providing both a qualified sequence and a address is not allowed')\n assertEx(isAddress(nonceOrAddress), () => 'Invalid address provided')\n return new this(SequenceParser.privateConstructorKey, (timestampOrSequence + address) as Hex)\n }\n return new this(SequenceParser.privateConstructorKey, timestampOrSequence)\n }\n const epoch = SequenceParser.toEpoch(timestampOrSequence)\n const nonce = SequenceParser.toNonce(nonceOrAddress, index)\n const addressHex: Hex = address ? toHex(address, { bitLength: SequenceConstants.addressBytes * 8 }) : SequenceConstants.minAddress\n const hexString = (epoch + nonce + addressHex) as Hex\n assertEx(isSequence(hexString), () => `Invalid sequence [${hexString}] [${epoch}, ${nonce}, ${addressHex}]`)\n return new this(SequenceParser.privateConstructorKey, hexString)\n }\n\n static parse(value: Hex | string | ArrayBufferLike): SequenceParser {\n const hex = toHex(value)\n if (isSequence(hex)) {\n return new this(SequenceParser.privateConstructorKey, hex)\n }\n throw new Error(`Invalid sequence [${value}]`)\n }\n\n // can convert a short number/hex to an epoch (treats it as the whole value) or extract an epoch from a sequence\n static toEpoch(value: number | Hex | Epoch): Epoch {\n assertEx(\n typeof value !== 'number' || Number.isInteger(value),\n () => 'Value must be in integer',\n )\n const hex = toHex(value, { prefix: false })\n if (hex.length <= SequenceConstants.epochBytes * 2) {\n return toHex(value, { prefix: false, bitLength: SequenceConstants.epochBytes * 8 }) as Epoch\n }\n if (isSequence(hex)) {\n return hex.slice(0, SequenceConstants.epochBytes * 2) as Epoch\n }\n throw new Error(`Value could not be converted to epoch [${hex}]`)\n }\n\n // can convert a short number/hex to a nonce (treats it as the whole value) or extract an nonce from a sequence\n static toNonce(value: Hash | Hex, index = 0): Nonce {\n assertEx(\n typeof value !== 'number' || Number.isInteger(value),\n () => 'Value must be in integer',\n )\n const hex = toHex(value, { prefix: false })\n if (isSequence(hex)) {\n return hex.slice(SequenceConstants.epochBytes * 2, SequenceConstants.localSequenceBytes * 2) as Nonce\n }\n const hashHex = toHex((hex as string), { prefix: false, bitLength: SequenceConstants.nonceHashBytes * 8 }).slice(-SequenceConstants.nonceHashBytes * 2)\n const indexHex = toHex(index, { prefix: false, bitLength: SequenceConstants.nonceIndexBytes * 8 }).slice(-SequenceConstants.nonceIndexBytes * 2)\n return (indexHex + hashHex).slice(-SequenceConstants.nonceBytes * 2) as Nonce\n }\n}\n","import type { Address, Hex } from '@xylabs/hex'\nimport { isHex } from '@xylabs/hex'\n\n// we use Exclude to intentionally make the type not equal to string\nexport type LocalSequence = Hex & Exclude<string, 'reserved-local-sequence-value'>\nexport type QualifiedSequence = Hex & Exclude<string, 'reserved-qualified-sequence-value'>\nexport type Sequence = LocalSequence | QualifiedSequence\n\nexport type Epoch = Hex & Exclude<string, 'reserved-epoch-sequence-value'>\n\nexport const isEpoch = (value: unknown): value is Epoch => {\n return isHex(value) && (value as string).length === SequenceConstants.epochBytes * 2\n}\n\nexport type Nonce = Hex & Exclude<string, 'reserved-nonce-sequence-value'>\n\nexport const isNonce = (value: unknown): value is Epoch => {\n return isHex(value) && (value as string).length === SequenceConstants.nonceBytes * 2\n}\n\nexport const isLocalSequence = (value: unknown): value is Sequence => {\n return isHex(value) && (value as string).length === SequenceConstants.localSequenceBytes * 2\n}\n\nexport const isQualifiedSequence = (value: unknown): value is Sequence => {\n return isHex(value) && (value as string).length === SequenceConstants.qualifiedSequenceBytes * 2\n}\n\nexport const isSequence = (value: unknown): value is Sequence => {\n return isLocalSequence(value) || isQualifiedSequence(value)\n}\n\nexport const SequenceNonceComponentLengths = {\n nonceIndexBytes: 4,\n nonceHashBytes: 4,\n}\n\nexport const SequenceComponentLengths = {\n ...SequenceNonceComponentLengths,\n epochBytes: 8,\n nonceBytes: SequenceNonceComponentLengths.nonceIndexBytes + SequenceNonceComponentLengths.nonceHashBytes,\n addressBytes: 20,\n}\n\nexport const SequenceComponentMinMax = {\n minEpoch: '0'.repeat(SequenceComponentLengths.epochBytes * 2) as Epoch,\n maxEpoch: 'f'.repeat(SequenceComponentLengths.epochBytes * 2) as Epoch,\n minNonce: '0'.repeat(SequenceComponentLengths.nonceBytes * 2) as Nonce,\n maxNonce: 'f'.repeat(SequenceComponentLengths.nonceBytes * 2) as Nonce,\n minAddress: '0'.repeat(SequenceComponentLengths.addressBytes * 2) as Address,\n maxAddress: 'f'.repeat(SequenceComponentLengths.addressBytes * 2) as Address,\n}\n\nexport const LocalSequenceConstants = {\n ...SequenceComponentLengths,\n ...SequenceComponentMinMax,\n localSequenceBytes: SequenceComponentLengths.epochBytes + SequenceComponentLengths.nonceBytes,\n minLocalSequence: SequenceComponentMinMax.minEpoch + SequenceComponentMinMax.minNonce as LocalSequence,\n maxLocalSequence: SequenceComponentMinMax.maxEpoch + SequenceComponentMinMax.maxNonce as LocalSequence,\n}\n\nexport const QualifiedSequenceConstants = {\n qualifiedSequenceBytes: LocalSequenceConstants.localSequenceBytes + SequenceComponentLengths.addressBytes,\n minQualifiedSequence: LocalSequenceConstants.minLocalSequence + SequenceComponentMinMax.minAddress as QualifiedSequence,\n maxQualifiedSequence: LocalSequenceConstants.maxLocalSequence + SequenceComponentMinMax.maxAddress as QualifiedSequence,\n}\n\nexport const SequenceConstants = {\n ...LocalSequenceConstants,\n ...QualifiedSequenceConstants,\n}\n\n// \"11111111111111112222222222222222\" is and example of a local sequence string\n\n// \"111111111111111122222222222222223333333333333333333333333333333333333333\" is and example of a local sequence string\n// epoch = \"1111111111111111\"\n// nonce = \"2222222222222222\"\n// address = \"3333333333333333333333333333333333333333\"\n","import type { Compare } from '@xylabs/object'\n\nimport { SequenceParser } from './Parser.ts'\nimport type { Sequence } from './Sequence.ts'\n\nconst local: Compare<Sequence> = (a, b) => {\n const aa = SequenceParser.from(a)\n const bb = SequenceParser.from(b)\n return aa.localSequence > bb.localSequence ? 1 : aa.localSequence < bb.localSequence ? -1 : 0\n}\n\nconst qualified: Compare<Sequence> = (a, b) => {\n const aa = SequenceParser.from(a)\n const bb = SequenceParser.from(b)\n return aa.qualifiedSequence > bb.qualifiedSequence ? 1 : aa.qualifiedSequence < bb.qualifiedSequence ? -1 : 0\n}\n\nexport const SequenceComparer = { local, qualified }\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport type { Payload } from '../Payload.ts'\nimport type { HashStorageMeta } from './Hash.ts'\nimport { isHashStorageMeta } from './Hash.ts'\nimport type { SequenceStorageMeta } from './Sequence.ts'\nimport { isSequenceStorageMeta } from './Sequence.ts'\n\nexport interface StorageMeta extends SequenceStorageMeta, HashStorageMeta {}\n\nexport type WithStorageMeta<T extends Payload = Payload> = T & StorageMeta\nexport type WithPartialStorageMeta<T extends Payload = Payload> = T & Partial<StorageMeta>\n\nexport const isStorageMeta = (value: unknown): value is StorageMeta => {\n return isSequenceStorageMeta(value) && isHashStorageMeta(value)\n}\n\nexport const asStorageMeta = AsObjectFactory.create(isStorageMeta)\nexport const asOptionalStorageMeta = AsObjectFactory.createOptional(isStorageMeta)\n"],"mappings":"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","names":["AsObjectFactory","isHash","AsObjectFactory","isHash","AsObjectFactory","AsObjectFactory","AsObjectFactory","AsObjectFactory"]}
1
+ {"version":3,"sources":["../../src/isPayload.ts","../../src/isPayloadOfSchemaType.ts","../../src/Error.ts","../../src/PayloadBundle.ts","../../src/PayloadSet/PayloadSetSchema.ts","../../src/Schema.ts","../../src/StorageMeta/DataHash.ts","../../src/StorageMeta/Hash.ts","../../src/StorageMeta/Sequence.ts","../../src/StorageMeta/sequence/Parser.ts","../../src/StorageMeta/sequence/Sequence.ts","../../src/StorageMeta/sequence/Comparer.ts","../../src/StorageMeta/StorageMeta.ts"],"sourcesContent":["import { AsObjectFactory, isObject } from '@xylabs/object'\n\nimport type { Payload } from './Payload.ts'\n\nexport const isAnyPayload = (value: unknown): value is Payload => {\n if (isObject(value)) {\n return typeof value.schema === 'string'\n }\n return false\n}\n\nexport const asAnyPayload = AsObjectFactory.create(isAnyPayload)\n\nexport const isPayload\n = <T extends Payload>(schema: string[]) =>\n (value: unknown): value is T => {\n if (isAnyPayload(value)) {\n return schema.includes(value.schema)\n }\n return false\n }\n\nexport const asPayload = <T extends Payload>(schema: string[]) => AsObjectFactory.create((value: unknown): value is T => isPayload(schema)(value))\n","import { isAnyPayload } from './isPayload.ts'\nimport type { Payload, WithSources } from './Payload.ts'\n\nexport function isPayloadOfSchemaType<T extends Payload | never = never>(schema: T['schema']) {\n return (x?: unknown | null): x is T => isAnyPayload(x) && x?.schema === schema\n}\n\nexport const isPayloadOfSchemaTypeWithSources = <T extends Payload | never = never>(schema: T['schema']) => {\n return (x?: unknown | null): x is WithSources<T> =>\n isPayloadOfSchemaType<WithSources<T>>(schema)(x) && x.$sources != undefined && Array.isArray(x.$sources)\n}\n\nexport const notPayloadOfSchemaType = <T extends Payload | never = never>(schema: T['schema']) => {\n return (x?: unknown | null): x is T => !isAnyPayload(x) || x?.schema !== schema\n}\n\n// test types -- keep for future validation, but comment out\n\n/*\ntype TestSchema = 'network.xyo.test'\nconst TestSchema: TestSchema = 'network.xyo.test'\n\ntype Test = Payload<{ field: string }, TestSchema>\n\nconst testPayload: Test = { field: 'test', schema: TestSchema }\n\nconst testPayloads: Payload[] = [testPayload]\n\nconst isTest: Test[] = testPayloads.filter(isPayloadOfSchemaType<Payload>(TestSchema))\n\nconst isTestFromMetaTyped = testMetaPayloads.filter(isPayloadOfSchemaType<Test>(TestSchema))\n*/\n","import type { Hash } from '@xylabs/hex'\nimport type { JsonValue } from '@xylabs/object'\n\nimport { isPayloadOfSchemaType } from './isPayloadOfSchemaType.ts'\nimport type { Payload } from './Payload.ts'\n\nexport const ModuleErrorSchema = 'network.xyo.error.module' as const\nexport type ModuleErrorSchema = typeof ModuleErrorSchema\n\nexport type ModuleError = Payload<{\n details?: JsonValue\n message?: string\n name?: string\n query?: Hash\n schema: ModuleErrorSchema\n}>\n\nexport const isModuleError = isPayloadOfSchemaType<ModuleError>(ModuleErrorSchema)\n","import type { Hash } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\n\nimport { isPayloadOfSchemaType } from './isPayloadOfSchemaType.ts'\nimport type { Payload } from './Payload.ts'\n\n// payload that wraps a complete boundwitness with its payloads for use in systems such as submission queues\nexport const PayloadBundleSchema = 'network.xyo.payload.bundle' as const\nexport type PayloadBundleSchema = typeof PayloadBundleSchema\n\nexport interface PayloadBundleFields<T extends Payload = Payload> {\n payloads: T[]\n root: Hash\n}\n\nexport type PayloadBundle = Payload<PayloadBundleFields, PayloadBundleSchema>\n\nexport const isPayloadBundle = isPayloadOfSchemaType<PayloadBundle>(PayloadBundleSchema)\n\nexport const asPayloadBundle = AsObjectFactory.create(isPayloadBundle)\nexport const asOptionalPayloadBundle = AsObjectFactory.createOptional(isPayloadBundle)\n","export const PayloadSetSchema = 'network.xyo.payload.set' as const\nexport type PayloadSetSchema = typeof PayloadSetSchema\n","import type { EmptyObject } from '@xylabs/object'\nimport { AsTypeFactory } from '@xylabs/object'\n\nexport const SchemaRegEx = '^(?:[a-z0-9]+\\.)*[a-z0-9]+$' as const\n\n/** Schema type in Javascript is a string */\n// eslint-disable-next-line sonarjs/redundant-type-aliases\nexport type Schema = string\n\nexport const PayloadSchema = 'network.xyo.payload' as const\nexport type PayloadSchema = typeof PayloadSchema\n\nexport const isSchema = (value: unknown): value is Schema => {\n return typeof value === 'string'\n}\n\nexport const asSchema = AsTypeFactory.create<Schema>(isSchema)\n\n/** Schema fields for a Payload */\nexport interface SchemaFields extends EmptyObject {\n /** Schema of the object */\n schema: Schema\n}\n\n/** Add the Schema Fields to an object */\nexport type WithSchema<T extends EmptyObject | void = void> = T extends EmptyObject ? SchemaFields & T : SchemaFields\n","import type { Hash } from '@xylabs/hex'\nimport { isHash } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\n\nimport type { Payload } from '../Payload.ts'\n\nexport interface DataHashStorageMeta {\n _dataHash: Hash\n}\n\nexport type WithDataHashStorageMeta<T extends Payload = Payload> = T & DataHashStorageMeta\nexport type WithPartialDataHashStorageMeta<T extends Payload = Payload> = Partial<WithDataHashStorageMeta<T>>\n\nexport const isDataHashStorageMeta = (value: unknown): value is DataHashStorageMeta => {\n return isHash((value as WithDataHashStorageMeta)?._dataHash)\n}\n\nexport const asDataHashStorageMeta = AsObjectFactory.create<DataHashStorageMeta>(isDataHashStorageMeta)\nexport const asOptionalDataHashStorageMeta = AsObjectFactory.createOptional<DataHashStorageMeta>(isDataHashStorageMeta)\n","import type { Hash } from '@xylabs/hex'\nimport { isHash } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\n\nimport type { Payload } from '../Payload.ts'\nimport type { DataHashStorageMeta } from './DataHash.ts'\nimport { isDataHashStorageMeta } from './DataHash.ts'\n\nexport interface HashStorageMeta extends DataHashStorageMeta {\n _hash: Hash\n}\n\nexport type WithHashStorageMeta<T extends Payload = Payload> = T & HashStorageMeta\nexport type WithPartialHashStorageMeta<T extends Payload = Payload> = Partial<WithHashStorageMeta<T>>\n\nexport const isHashStorageMeta = (value: unknown): value is HashStorageMeta => {\n return isDataHashStorageMeta(value) && isHash((value as WithHashStorageMeta)?._hash)\n}\n\nexport const asHashStorageMeta = AsObjectFactory.create<HashStorageMeta>(isHashStorageMeta)\nexport const asOptionalHashStorageMeta = AsObjectFactory.createOptional<HashStorageMeta>(isHashStorageMeta)\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport type { Payload } from '../Payload.ts'\nimport type { Sequence } from './sequence/index.ts'\n\nexport interface SequenceStorageMeta {\n _sequence: Sequence\n}\n\nexport type WithSequenceStorageMeta<T extends Payload = Payload> = T & SequenceStorageMeta\nexport type WithPartialSequenceStorageMeta<T extends Payload = Payload> = Partial<WithSequenceStorageMeta<T>>\n\nexport const isSequenceStorageMeta = (value: unknown): value is SequenceStorageMeta => {\n return (value as WithSequenceStorageMeta)?._sequence != undefined\n}\n\nexport const asSequenceStorageMeta = AsObjectFactory.create(isSequenceStorageMeta)\nexport const asOptionalSequenceStorageMeta = AsObjectFactory.createOptional(isSequenceStorageMeta)\n","import { toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport type {\n Address,\n Hash, Hex,\n} from '@xylabs/hex'\nimport {\n isAddress,\n toHex,\n} from '@xylabs/hex'\n\nimport type {\n Epoch, LocalSequence, Nonce, QualifiedSequence,\n Sequence,\n} from './Sequence.ts'\nimport {\n isQualifiedSequence, isSequence,\n SequenceConstants,\n} from './Sequence.ts'\n\nexport class SequenceParser {\n protected static privateConstructorKey = Date.now().toString()\n\n private readonly data: Readonly<Uint8Array>\n\n protected constructor(privateConstructorKey: string, hex: Hex) {\n assertEx(SequenceParser.privateConstructorKey === privateConstructorKey, () => 'Use create function instead of constructor')\n const paddedHex = toHex(hex, {\n prefix: false,\n bitLength: (hex.length <= SequenceConstants.localSequenceBytes * 2)\n ? SequenceConstants.localSequenceBytes * 8\n : SequenceConstants.qualifiedSequenceBytes * 8,\n })\n this.data = toUint8Array(paddedHex)\n }\n\n get address(): Address {\n const start = SequenceConstants.localSequenceBytes\n const end = SequenceConstants.qualifiedSequenceBytes\n return toHex(this.data.slice(start, end).buffer, { prefix: false })\n }\n\n get epoch(): Epoch {\n const start = 0\n const end = SequenceConstants.epochBytes\n return toHex(this.data.slice(start, end).buffer, { prefix: false })\n }\n\n get localSequence(): LocalSequence {\n const start = 0\n const end = SequenceConstants.localSequenceBytes\n return toHex(this.data.slice(start, end).buffer, { prefix: false })\n }\n\n get nonce(): Nonce {\n const start = SequenceConstants.epochBytes\n const end = SequenceConstants.localSequenceBytes\n return toHex(this.data.slice(start, end).buffer, { prefix: false })\n }\n\n get qualifiedSequence(): QualifiedSequence {\n const start = 0\n const end = SequenceConstants.qualifiedSequenceBytes\n return toHex(this.data.slice(start, end).buffer, { prefix: false })\n }\n\n static from(sequence: Sequence, address?: Address): SequenceParser\n static from(timestamp: Hex, hash: Hash, address?: Address): SequenceParser\n static from(timestamp: Hex, hash: Hex, address?: Address): SequenceParser\n static from(timestamp: Hex, nonce: Nonce, address?: Address): SequenceParser\n static from(timestamp: Hex, hash: Hash, index?: number, address?: Address): SequenceParser\n static from(timestamp: Hex, hash: Hex, index?: number, address?: Address): SequenceParser\n static from(timestamp: Hex, nonce: Nonce, index?: number, address?: Address): SequenceParser\n static from(timestamp: number, hash: Hash, address?: Address): SequenceParser\n static from(timestamp: number, hash: Hex, address?: Address): SequenceParser\n static from(timestamp: number, nonce: Nonce, address?: Address): SequenceParser\n static from(timestamp: number, hash: Hash, index?: number, address?: Address): SequenceParser\n static from(timestamp: number, hash: Hex, index?: number, address?: Address): SequenceParser\n static from(timestamp: number, nonce: Nonce, index?: number, address?: Address): SequenceParser\n static from(\n timestampOrSequence: Sequence | Hex | number,\n nonceOrAddress: Hash | Nonce,\n addressOrIndex?: Address | number,\n addressOnly?: Address,\n ): SequenceParser {\n const address = typeof addressOrIndex === 'number' ? addressOnly : addressOrIndex\n const index = typeof addressOrIndex === 'number' ? addressOrIndex : undefined\n if (isSequence(timestampOrSequence)) {\n if (nonceOrAddress) {\n assertEx(!isQualifiedSequence(timestampOrSequence), () => 'Providing both a qualified sequence and a address is not allowed')\n assertEx(isAddress(nonceOrAddress), () => 'Invalid address provided')\n return new this(SequenceParser.privateConstructorKey, (timestampOrSequence + address) as Hex)\n }\n return new this(SequenceParser.privateConstructorKey, timestampOrSequence)\n }\n const epoch = SequenceParser.toEpoch(timestampOrSequence)\n const nonce = SequenceParser.toNonce(nonceOrAddress, index)\n const addressHex: Hex = address ? toHex(address, { bitLength: SequenceConstants.addressBytes * 8 }) : SequenceConstants.minAddress\n const hexString = (epoch + nonce + addressHex) as Hex\n assertEx(isSequence(hexString), () => `Invalid sequence [${hexString}] [${epoch}, ${nonce}, ${addressHex}]`)\n return new this(SequenceParser.privateConstructorKey, hexString)\n }\n\n static parse(value: Hex | string | ArrayBufferLike): SequenceParser {\n const hex = toHex(value)\n if (isSequence(hex)) {\n return new this(SequenceParser.privateConstructorKey, hex)\n }\n throw new Error(`Invalid sequence [${value}]`)\n }\n\n // can convert a short number/hex to an epoch (treats it as the whole value) or extract an epoch from a sequence\n static toEpoch(value: number | Hex | Epoch): Epoch {\n assertEx(\n typeof value !== 'number' || Number.isInteger(value),\n () => 'Value must be in integer',\n )\n const hex = toHex(value, { prefix: false })\n if (hex.length <= SequenceConstants.epochBytes * 2) {\n return toHex(value, { prefix: false, bitLength: SequenceConstants.epochBytes * 8 }) as Epoch\n }\n if (isSequence(hex)) {\n return hex.slice(0, SequenceConstants.epochBytes * 2) as Epoch\n }\n throw new Error(`Value could not be converted to epoch [${hex}]`)\n }\n\n // can convert a short number/hex to a nonce (treats it as the whole value) or extract an nonce from a sequence\n static toNonce(value: Hash | Hex, index = 0): Nonce {\n assertEx(\n typeof value !== 'number' || Number.isInteger(value),\n () => 'Value must be in integer',\n )\n const hex = toHex(value, { prefix: false })\n if (isSequence(hex)) {\n return hex.slice(SequenceConstants.epochBytes * 2, SequenceConstants.localSequenceBytes * 2) as Nonce\n }\n const hashHex = toHex((hex as string), { prefix: false, bitLength: SequenceConstants.nonceHashBytes * 8 }).slice(-SequenceConstants.nonceHashBytes * 2)\n const indexHex = toHex(index, { prefix: false, bitLength: SequenceConstants.nonceIndexBytes * 8 }).slice(-SequenceConstants.nonceIndexBytes * 2)\n return (indexHex + hashHex).slice(-SequenceConstants.nonceBytes * 2) as Nonce\n }\n}\n","import type { Address, Hex } from '@xylabs/hex'\nimport { isHex } from '@xylabs/hex'\n\n// we use Exclude to intentionally make the type not equal to string\nexport type LocalSequence = Hex & Exclude<string, 'reserved-local-sequence-value'>\nexport type QualifiedSequence = Hex & Exclude<string, 'reserved-qualified-sequence-value'>\nexport type Sequence = LocalSequence | QualifiedSequence\n\nexport type Epoch = Hex & Exclude<string, 'reserved-epoch-sequence-value'>\n\nexport const isEpoch = (value: unknown): value is Epoch => {\n return isHex(value) && (value as string).length === SequenceConstants.epochBytes * 2\n}\n\nexport type Nonce = Hex & Exclude<string, 'reserved-nonce-sequence-value'>\n\nexport const isNonce = (value: unknown): value is Epoch => {\n return isHex(value) && (value as string).length === SequenceConstants.nonceBytes * 2\n}\n\nexport const isLocalSequence = (value: unknown): value is Sequence => {\n return isHex(value) && (value as string).length === SequenceConstants.localSequenceBytes * 2\n}\n\nexport const isQualifiedSequence = (value: unknown): value is Sequence => {\n return isHex(value) && (value as string).length === SequenceConstants.qualifiedSequenceBytes * 2\n}\n\nexport const isSequence = (value: unknown): value is Sequence => {\n return isLocalSequence(value) || isQualifiedSequence(value)\n}\n\nexport const SequenceNonceComponentLengths = {\n nonceIndexBytes: 4,\n nonceHashBytes: 4,\n}\n\nexport const SequenceComponentLengths = {\n ...SequenceNonceComponentLengths,\n epochBytes: 8,\n nonceBytes: SequenceNonceComponentLengths.nonceIndexBytes + SequenceNonceComponentLengths.nonceHashBytes,\n addressBytes: 20,\n}\n\nexport const SequenceComponentMinMax = {\n minEpoch: '0'.repeat(SequenceComponentLengths.epochBytes * 2) as Epoch,\n maxEpoch: 'f'.repeat(SequenceComponentLengths.epochBytes * 2) as Epoch,\n minNonce: '0'.repeat(SequenceComponentLengths.nonceBytes * 2) as Nonce,\n maxNonce: 'f'.repeat(SequenceComponentLengths.nonceBytes * 2) as Nonce,\n minAddress: '0'.repeat(SequenceComponentLengths.addressBytes * 2) as Address,\n maxAddress: 'f'.repeat(SequenceComponentLengths.addressBytes * 2) as Address,\n}\n\nexport const LocalSequenceConstants = {\n ...SequenceComponentLengths,\n ...SequenceComponentMinMax,\n localSequenceBytes: SequenceComponentLengths.epochBytes + SequenceComponentLengths.nonceBytes,\n minLocalSequence: SequenceComponentMinMax.minEpoch + SequenceComponentMinMax.minNonce as LocalSequence,\n maxLocalSequence: SequenceComponentMinMax.maxEpoch + SequenceComponentMinMax.maxNonce as LocalSequence,\n}\n\nexport const QualifiedSequenceConstants = {\n qualifiedSequenceBytes: LocalSequenceConstants.localSequenceBytes + SequenceComponentLengths.addressBytes,\n minQualifiedSequence: LocalSequenceConstants.minLocalSequence + SequenceComponentMinMax.minAddress as QualifiedSequence,\n maxQualifiedSequence: LocalSequenceConstants.maxLocalSequence + SequenceComponentMinMax.maxAddress as QualifiedSequence,\n}\n\nexport const SequenceConstants = {\n ...LocalSequenceConstants,\n ...QualifiedSequenceConstants,\n}\n\n// \"11111111111111112222222222222222\" is and example of a local sequence string\n\n// \"111111111111111122222222222222223333333333333333333333333333333333333333\" is and example of a local sequence string\n// epoch = \"1111111111111111\"\n// nonce = \"2222222222222222\"\n// address = \"3333333333333333333333333333333333333333\"\n","import type { Compare } from '@xylabs/object'\n\nimport { SequenceParser } from './Parser.ts'\nimport type { Sequence } from './Sequence.ts'\n\nconst local: Compare<Sequence> = (a, b) => {\n const aa = SequenceParser.from(a)\n const bb = SequenceParser.from(b)\n return aa.localSequence > bb.localSequence ? 1 : aa.localSequence < bb.localSequence ? -1 : 0\n}\n\nconst qualified: Compare<Sequence> = (a, b) => {\n const aa = SequenceParser.from(a)\n const bb = SequenceParser.from(b)\n return aa.qualifiedSequence > bb.qualifiedSequence ? 1 : aa.qualifiedSequence < bb.qualifiedSequence ? -1 : 0\n}\n\nexport const SequenceComparer = { local, qualified }\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport type { Payload } from '../Payload.ts'\nimport type { HashStorageMeta } from './Hash.ts'\nimport { isHashStorageMeta } from './Hash.ts'\nimport type { SequenceStorageMeta } from './Sequence.ts'\nimport { isSequenceStorageMeta } from './Sequence.ts'\n\nexport interface StorageMeta extends SequenceStorageMeta, HashStorageMeta {}\n\nexport type WithStorageMeta<T extends Payload = Payload> = T & StorageMeta\nexport type WithPartialStorageMeta<T extends Payload = Payload> = T & Partial<StorageMeta>\n\nexport const isStorageMeta = (value: unknown): value is StorageMeta => {\n return isSequenceStorageMeta(value) && isHashStorageMeta(value)\n}\n\nexport const asStorageMeta = AsObjectFactory.create(isStorageMeta)\nexport const asOptionalStorageMeta = AsObjectFactory.createOptional(isStorageMeta)\n"],"mappings":"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","names":["AsObjectFactory","AsObjectFactory","AsObjectFactory","isHash","AsObjectFactory","isHash","AsObjectFactory","AsObjectFactory","AsObjectFactory","AsObjectFactory"]}
@@ -0,0 +1,16 @@
1
+ import type { Hash } from '@xylabs/hex';
2
+ import type { Payload } from './Payload.ts';
3
+ export declare const PayloadBundleSchema: "network.xyo.payload.bundle";
4
+ export type PayloadBundleSchema = typeof PayloadBundleSchema;
5
+ export interface PayloadBundleFields<T extends Payload = Payload> {
6
+ payloads: T[];
7
+ root: Hash;
8
+ }
9
+ export type PayloadBundle = Payload<PayloadBundleFields, PayloadBundleSchema>;
10
+ export declare const isPayloadBundle: (x?: unknown | null) => x is PayloadBundle;
11
+ export declare const asPayloadBundle: {
12
+ <TType extends PayloadBundle>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
13
+ <TType extends PayloadBundle>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<PayloadBundle>, config?: import("@xylabs/object").TypeCheckConfig): TType;
14
+ };
15
+ export declare const asOptionalPayloadBundle: <TType extends PayloadBundle>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise) => TType | undefined;
16
+ //# sourceMappingURL=PayloadBundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PayloadBundle.d.ts","sourceRoot":"","sources":["../../src/PayloadBundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAIvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAG3C,eAAO,MAAM,mBAAmB,EAAG,4BAAqC,CAAA;AACxE,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA;AAE5D,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IAC9D,QAAQ,EAAE,CAAC,EAAE,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;CACX;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAA;AAE7E,eAAO,MAAM,eAAe,4CAA4D,CAAA;AAExF,eAAO,MAAM,eAAe;;;CAA0C,CAAA;AACtE,eAAO,MAAM,uBAAuB,0IAAkD,CAAA"}
@@ -6,8 +6,8 @@ export declare const PayloadSchema: "network.xyo.payload";
6
6
  export type PayloadSchema = typeof PayloadSchema;
7
7
  export declare const isSchema: (value: unknown) => value is Schema;
8
8
  export declare const asSchema: {
9
- <TType extends string>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
10
- <TType extends string>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<string>, config?: import("@xylabs/object").TypeCheckConfig): TType;
9
+ <TType extends string>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
10
+ <TType extends string>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<string>, config?: import("@xylabs/object").TypeCheckConfig): TType;
11
11
  };
12
12
  /** Schema fields for a Payload */
13
13
  export interface SchemaFields extends EmptyObject {
@@ -7,8 +7,8 @@ export type WithDataHashStorageMeta<T extends Payload = Payload> = T & DataHashS
7
7
  export type WithPartialDataHashStorageMeta<T extends Payload = Payload> = Partial<WithDataHashStorageMeta<T>>;
8
8
  export declare const isDataHashStorageMeta: (value: unknown) => value is DataHashStorageMeta;
9
9
  export declare const asDataHashStorageMeta: {
10
- <TType extends DataHashStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
11
- <TType extends DataHashStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<DataHashStorageMeta>, config?: import("@xylabs/object").TypeCheckConfig): TType;
10
+ <TType extends DataHashStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
11
+ <TType extends DataHashStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<DataHashStorageMeta>, config?: import("@xylabs/object").TypeCheckConfig): TType;
12
12
  };
13
- export declare const asOptionalDataHashStorageMeta: <TType extends DataHashStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise) => TType | undefined;
13
+ export declare const asOptionalDataHashStorageMeta: <TType extends DataHashStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise) => TType | undefined;
14
14
  //# sourceMappingURL=DataHash.d.ts.map
@@ -8,8 +8,8 @@ export type WithHashStorageMeta<T extends Payload = Payload> = T & HashStorageMe
8
8
  export type WithPartialHashStorageMeta<T extends Payload = Payload> = Partial<WithHashStorageMeta<T>>;
9
9
  export declare const isHashStorageMeta: (value: unknown) => value is HashStorageMeta;
10
10
  export declare const asHashStorageMeta: {
11
- <TType extends HashStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
12
- <TType extends HashStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<HashStorageMeta>, config?: import("@xylabs/object").TypeCheckConfig): TType;
11
+ <TType extends HashStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
12
+ <TType extends HashStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<HashStorageMeta>, config?: import("@xylabs/object").TypeCheckConfig): TType;
13
13
  };
14
- export declare const asOptionalHashStorageMeta: <TType extends HashStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise) => TType | undefined;
14
+ export declare const asOptionalHashStorageMeta: <TType extends HashStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise) => TType | undefined;
15
15
  //# sourceMappingURL=Hash.d.ts.map
@@ -7,8 +7,8 @@ export type WithSequenceStorageMeta<T extends Payload = Payload> = T & SequenceS
7
7
  export type WithPartialSequenceStorageMeta<T extends Payload = Payload> = Partial<WithSequenceStorageMeta<T>>;
8
8
  export declare const isSequenceStorageMeta: (value: unknown) => value is SequenceStorageMeta;
9
9
  export declare const asSequenceStorageMeta: {
10
- <TType extends SequenceStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
11
- <TType extends SequenceStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<SequenceStorageMeta>, config?: import("@xylabs/object").TypeCheckConfig): TType;
10
+ <TType extends SequenceStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
11
+ <TType extends SequenceStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<SequenceStorageMeta>, config?: import("@xylabs/object").TypeCheckConfig): TType;
12
12
  };
13
- export declare const asOptionalSequenceStorageMeta: <TType extends SequenceStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise) => TType | undefined;
13
+ export declare const asOptionalSequenceStorageMeta: <TType extends SequenceStorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise) => TType | undefined;
14
14
  //# sourceMappingURL=Sequence.d.ts.map
@@ -7,8 +7,8 @@ export type WithStorageMeta<T extends Payload = Payload> = T & StorageMeta;
7
7
  export type WithPartialStorageMeta<T extends Payload = Payload> = T & Partial<StorageMeta>;
8
8
  export declare const isStorageMeta: (value: unknown) => value is StorageMeta;
9
9
  export declare const asStorageMeta: {
10
- <TType extends StorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
11
- <TType extends StorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<StorageMeta>, config?: import("@xylabs/object").TypeCheckConfig): TType;
10
+ <TType extends StorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
11
+ <TType extends StorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<StorageMeta>, config?: import("@xylabs/object").TypeCheckConfig): TType;
12
12
  };
13
- export declare const asOptionalStorageMeta: <TType extends StorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise) => TType | undefined;
13
+ export declare const asOptionalStorageMeta: <TType extends StorageMeta>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise) => TType | undefined;
14
14
  //# sourceMappingURL=StorageMeta.d.ts.map
@@ -2,6 +2,7 @@ export * from './Error.ts';
2
2
  export * from './isPayload.ts';
3
3
  export * from './isPayloadOfSchemaType.ts';
4
4
  export * from './Payload.ts';
5
+ export * from './PayloadBundle.ts';
5
6
  export * from './PayloadFindFilter.ts';
6
7
  export * from './PayloadHashMap.ts';
7
8
  export * from './PayloadSet/index.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,cAAc,CAAA;AAC5B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA"}
@@ -1,12 +1,12 @@
1
1
  import type { Payload } from './Payload.ts';
2
2
  export declare const isAnyPayload: (value: unknown) => value is Payload;
3
3
  export declare const asAnyPayload: {
4
- <TType extends Payload>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
5
- <TType extends Payload>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<Payload>, config?: import("@xylabs/object").TypeCheckConfig): TType;
4
+ <TType extends Payload>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
5
+ <TType extends Payload>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<Payload>, config?: import("@xylabs/object").TypeCheckConfig): TType;
6
6
  };
7
7
  export declare const isPayload: <T extends Payload>(schema: string[]) => (value: unknown) => value is T;
8
8
  export declare const asPayload: <T extends Payload>(schema: string[]) => {
9
- <TType extends T>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
10
- <TType extends T>(value: import(".store/@xylabs-promise-npm-4.11.10-fbfee46454/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<T>, config?: import("@xylabs/object").TypeCheckConfig): TType;
9
+ <TType extends T>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, config?: import("@xylabs/object").TypeCheckConfig): TType | undefined;
10
+ <TType extends T>(value: import(".store/@xylabs-promise-npm-4.11.14-a4fcd26b13/package").AnyNonPromise, assert: import("@xylabs/object").StringOrAlertFunction<T>, config?: import("@xylabs/object").TypeCheckConfig): TType;
11
11
  };
12
12
  //# sourceMappingURL=isPayload.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/payload-model",
3
- "version": "3.18.1",
3
+ "version": "3.18.3",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -29,17 +29,17 @@
29
29
  "module": "dist/neutral/index.mjs",
30
30
  "types": "dist/types/index.d.ts",
31
31
  "dependencies": {
32
- "@xylabs/arraybuffer": "^4.11.10",
33
- "@xylabs/assert": "^4.11.10",
34
- "@xylabs/hex": "^4.11.10",
35
- "@xylabs/object": "^4.11.10"
32
+ "@xylabs/arraybuffer": "^4.11.14",
33
+ "@xylabs/assert": "^4.11.14",
34
+ "@xylabs/hex": "^4.11.14",
35
+ "@xylabs/object": "^4.11.14"
36
36
  },
37
37
  "devDependencies": {
38
- "@xylabs/ts-scripts-yarn3": "^6.5.7",
39
- "@xylabs/tsconfig": "^6.5.7",
40
- "@xylabs/vitest-extended": "^4.11.10",
38
+ "@xylabs/ts-scripts-yarn3": "^6.5.8",
39
+ "@xylabs/tsconfig": "^6.5.8",
40
+ "@xylabs/vitest-extended": "^4.11.14",
41
41
  "typescript": "^5.8.3",
42
- "vitest": "^3.2.1"
42
+ "vitest": "^3.2.2"
43
43
  },
44
44
  "publishConfig": {
45
45
  "access": "public"
@@ -0,0 +1,21 @@
1
+ import type { Hash } from '@xylabs/hex'
2
+ import { AsObjectFactory } from '@xylabs/object'
3
+
4
+ import { isPayloadOfSchemaType } from './isPayloadOfSchemaType.ts'
5
+ import type { Payload } from './Payload.ts'
6
+
7
+ // payload that wraps a complete boundwitness with its payloads for use in systems such as submission queues
8
+ export const PayloadBundleSchema = 'network.xyo.payload.bundle' as const
9
+ export type PayloadBundleSchema = typeof PayloadBundleSchema
10
+
11
+ export interface PayloadBundleFields<T extends Payload = Payload> {
12
+ payloads: T[]
13
+ root: Hash
14
+ }
15
+
16
+ export type PayloadBundle = Payload<PayloadBundleFields, PayloadBundleSchema>
17
+
18
+ export const isPayloadBundle = isPayloadOfSchemaType<PayloadBundle>(PayloadBundleSchema)
19
+
20
+ export const asPayloadBundle = AsObjectFactory.create(isPayloadBundle)
21
+ export const asOptionalPayloadBundle = AsObjectFactory.createOptional(isPayloadBundle)
package/src/index.ts CHANGED
@@ -2,6 +2,7 @@ export * from './Error.ts'
2
2
  export * from './isPayload.ts'
3
3
  export * from './isPayloadOfSchemaType.ts'
4
4
  export * from './Payload.ts'
5
+ export * from './PayloadBundle.ts'
5
6
  export * from './PayloadFindFilter.ts'
6
7
  export * from './PayloadHashMap.ts'
7
8
  export * from './PayloadSet/index.ts'