@xyo-network/payload-model 5.0.1 → 5.0.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.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![logo][]](https://xyo.network)
4
4
 
5
- Version: 3.14.16
5
+ Version: 5.0.2
6
6
 
7
7
  Primary SDK for using XYO Protocol 2.0
8
8
 
@@ -1,5 +1,5 @@
1
1
  import type { Hash } from '@xylabs/hex';
2
- import type { DeepOmitStartsWith, DeepPickStartsWith, EmptyObject, JsonObject } from '@xylabs/object';
2
+ import type { DeepOmitStartsWith, DeepPickStartsWith, EmptyObject } from '@xylabs/object';
3
3
  import type { Schema, WithSchema } from './Schema.ts';
4
4
  export interface SchemaField<T extends Schema = Schema> {
5
5
  schema: T;
@@ -36,5 +36,4 @@ export type WithoutMeta<T extends Payload | EmptyObject> = WithoutClientMeta<Wit
36
36
  export type WithoutSchema<T extends WithOptionalSchema<Payload>> = Omit<T, 'schema'>;
37
37
  export type WithOptionalSchema<T extends Payload = Payload> = WithoutSchema<T> & Partial<T & SchemaField>;
38
38
  export type WithOnlyClientMeta<T extends Payload> = DeepPickStartsWith<T, '$'>;
39
- export type AnyPayload = Payload<JsonObject, Schema>;
40
39
  //# sourceMappingURL=Payload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../src/Payload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../src/Payload.ts"],"names":[],"mappings":"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"}
@@ -9,5 +9,5 @@ export interface PayloadBundleFields<T extends Payload = Payload> {
9
9
  export type PayloadBundle = Payload<PayloadBundleFields, PayloadBundleSchema>;
10
10
  export declare const isPayloadBundle: (x?: unknown | null) => x is PayloadBundle;
11
11
  export declare const asPayloadBundle: import("@xylabs/object").AsTypeFunction<PayloadBundle>;
12
- export declare const asOptionalPayloadBundle: (value: import(".store/@xylabs-promise-npm-5.0.3-c3d7024d49/package").AnyNonPromise) => PayloadBundle | undefined;
12
+ export declare const asOptionalPayloadBundle: (value: import(".store/@xylabs-promise-npm-5.0.7-d57bda6b56/package").AnyNonPromise) => PayloadBundle | undefined;
13
13
  //# sourceMappingURL=PayloadBundle.d.ts.map
@@ -0,0 +1,140 @@
1
+ import { z } from 'zod';
2
+ export declare const StorageMetaZod: z.ZodObject<{
3
+ _hash: z.ZodPipe<z.ZodType<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
4
+ readonly __hex: true;
5
+ }>, {
6
+ readonly __hash: true;
7
+ }>, unknown, z.core.$ZodTypeInternals<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
8
+ readonly __hex: true;
9
+ }>, {
10
+ readonly __hash: true;
11
+ }>, unknown>>, z.ZodTransform<string, import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
12
+ readonly __hex: true;
13
+ }>, {
14
+ readonly __hash: true;
15
+ }>>>;
16
+ _dataHash: z.ZodPipe<z.ZodType<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
17
+ readonly __hex: true;
18
+ }>, {
19
+ readonly __hash: true;
20
+ }>, unknown, z.core.$ZodTypeInternals<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
21
+ readonly __hex: true;
22
+ }>, {
23
+ readonly __hash: true;
24
+ }>, unknown>>, z.ZodTransform<string, import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
25
+ readonly __hex: true;
26
+ }>, {
27
+ readonly __hash: true;
28
+ }>>>;
29
+ _sequence: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
30
+ }, z.core.$strip>;
31
+ export declare const PayloadZod: z.ZodObject<{
32
+ schema: z.ZodUnion<readonly [z.ZodString, z.ZodPipe<z.ZodString, z.ZodTransform<string & {
33
+ __schema: true;
34
+ }, string>>]>;
35
+ }, z.core.$strip>;
36
+ export declare const PayloadWithStorageMetaZod: z.ZodObject<{
37
+ schema: z.ZodUnion<readonly [z.ZodString, z.ZodPipe<z.ZodString, z.ZodTransform<string & {
38
+ __schema: true;
39
+ }, string>>]>;
40
+ _hash: z.ZodPipe<z.ZodType<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
41
+ readonly __hex: true;
42
+ }>, {
43
+ readonly __hash: true;
44
+ }>, unknown, z.core.$ZodTypeInternals<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
45
+ readonly __hex: true;
46
+ }>, {
47
+ readonly __hash: true;
48
+ }>, unknown>>, z.ZodTransform<string, import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
49
+ readonly __hex: true;
50
+ }>, {
51
+ readonly __hash: true;
52
+ }>>>;
53
+ _dataHash: z.ZodPipe<z.ZodType<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
54
+ readonly __hex: true;
55
+ }>, {
56
+ readonly __hash: true;
57
+ }>, unknown, z.core.$ZodTypeInternals<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
58
+ readonly __hex: true;
59
+ }>, {
60
+ readonly __hash: true;
61
+ }>, unknown>>, z.ZodTransform<string, import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
62
+ readonly __hex: true;
63
+ }>, {
64
+ readonly __hash: true;
65
+ }>>>;
66
+ _sequence: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
67
+ }, z.core.$strip>;
68
+ export declare const AnyPayloadZod: z.ZodObject<{
69
+ schema: z.ZodUnion<readonly [z.ZodString, z.ZodPipe<z.ZodString, z.ZodTransform<string & {
70
+ __schema: true;
71
+ }, string>>]>;
72
+ }, z.core.$catchall<z.ZodJSONSchema>>;
73
+ export declare const AnyPayloadWithStorageMetaZod: z.ZodObject<{
74
+ schema: z.ZodUnion<readonly [z.ZodString, z.ZodPipe<z.ZodString, z.ZodTransform<string & {
75
+ __schema: true;
76
+ }, string>>]>;
77
+ _hash: z.ZodPipe<z.ZodType<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
78
+ readonly __hex: true;
79
+ }>, {
80
+ readonly __hash: true;
81
+ }>, unknown, z.core.$ZodTypeInternals<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
82
+ readonly __hex: true;
83
+ }>, {
84
+ readonly __hash: true;
85
+ }>, unknown>>, z.ZodTransform<string, import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
86
+ readonly __hex: true;
87
+ }>, {
88
+ readonly __hash: true;
89
+ }>>>;
90
+ _dataHash: z.ZodPipe<z.ZodType<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
91
+ readonly __hex: true;
92
+ }>, {
93
+ readonly __hash: true;
94
+ }>, unknown, z.core.$ZodTypeInternals<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
95
+ readonly __hex: true;
96
+ }>, {
97
+ readonly __hash: true;
98
+ }>, unknown>>, z.ZodTransform<string, import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
99
+ readonly __hex: true;
100
+ }>, {
101
+ readonly __hash: true;
102
+ }>>>;
103
+ _sequence: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
104
+ }, z.core.$catchall<z.ZodJSONSchema>>;
105
+ export type PayloadWithStorageMeta = z.infer<typeof PayloadWithStorageMetaZod>;
106
+ export type AnyPayload = z.infer<typeof AnyPayloadZod>;
107
+ export type AnyPayloadWithStorageMeta = z.infer<typeof AnyPayloadWithStorageMetaZod>;
108
+ export declare function WithStorageMetaZod<T extends typeof PayloadZod>(valueZod: T): z.ZodObject<{
109
+ _hash: z.ZodPipe<z.ZodType<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
110
+ readonly __hex: true;
111
+ }>, {
112
+ readonly __hash: true;
113
+ }>, unknown, z.core.$ZodTypeInternals<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
114
+ readonly __hex: true;
115
+ }>, {
116
+ readonly __hash: true;
117
+ }>, unknown>>, z.ZodTransform<string, import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
118
+ readonly __hex: true;
119
+ }>, {
120
+ readonly __hash: true;
121
+ }>>>;
122
+ _dataHash: z.ZodPipe<z.ZodType<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
123
+ readonly __hex: true;
124
+ }>, {
125
+ readonly __hash: true;
126
+ }>, unknown, z.core.$ZodTypeInternals<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
127
+ readonly __hex: true;
128
+ }>, {
129
+ readonly __hash: true;
130
+ }>, unknown>>, z.ZodTransform<string, import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<import(".store/@xylabs-typeof-npm-5.0.7-51af89fa48/package").Brand<Lowercase<string>, {
131
+ readonly __hex: true;
132
+ }>, {
133
+ readonly __hash: true;
134
+ }>>>;
135
+ _sequence: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
136
+ schema: z.ZodUnion<readonly [z.ZodString, z.ZodPipe<z.ZodString, z.ZodTransform<string & {
137
+ __schema: true;
138
+ }, string>>]>;
139
+ }, z.core.$strip>;
140
+ //# sourceMappingURL=PayloadZod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PayloadZod.d.ts","sourceRoot":"","sources":["../../src/PayloadZod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIzB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;iBAAkC,CAAA;AACzD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA0C,CAAA;AAEhF,eAAO,MAAM,aAAa;;;;qCAAgC,CAAA;AAC1D,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAA6C,CAAA;AAEtF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE9E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AACtD,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEpF,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,OAAO,UAAU,EAAE,QAAQ,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAE1E"}
@@ -1,16 +1,29 @@
1
1
  import type { EmptyObject } from '@xylabs/object';
2
- export declare const SchemaRegEx: "^(?:[a-z0-9]+.)*[a-z0-9]+$";
3
- /** Schema type in Javascript is a string */
4
- export type Schema = string;
2
+ import { z } from 'zod';
3
+ export declare const SchemaRegEx: RegExp;
4
+ export declare const SchemaZodV1: z.ZodString;
5
+ export declare const SchemaZodV2: z.ZodPipe<z.ZodString, z.ZodTransform<string & {
6
+ __schema: true;
7
+ }, string>>;
8
+ export type SchemaV2 = z.output<typeof SchemaZodV2>;
9
+ export type SchemaV1 = z.output<typeof SchemaZodV1>;
10
+ export declare const SchemaZod: z.ZodUnion<readonly [z.ZodString, z.ZodPipe<z.ZodString, z.ZodTransform<string & {
11
+ __schema: true;
12
+ }, string>>]>;
13
+ export type Schema = z.infer<typeof SchemaZodV1>;
14
+ export declare const makeSchema: <T extends string>(value: T) => z.ZodPipe<z.ZodTemplateLiteral<z.ZodLiteral<T> extends infer T_1 ? T_1 extends z.ZodLiteral<T> ? T_1 extends z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>> ? `${z.core.output<T_1> extends infer T_2 extends string | number | bigint | boolean | null | undefined ? T_2 extends undefined ? "" : T_2 : never}` : never : never : never>, z.ZodTransform<Awaited<(z.ZodLiteral<T> extends infer T_3 ? T_3 extends z.ZodLiteral<T> ? T_3 extends z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>> ? `${z.core.output<T_3> extends infer T_2 extends string | number | bigint | boolean | null | undefined ? T_2 extends undefined ? "" : T_2 : never}` : never : never : never) & {
15
+ __schema: true;
16
+ }>, z.ZodLiteral<T> extends infer T_4 ? T_4 extends z.ZodLiteral<T> ? T_4 extends z.core.$ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>> ? `${z.core.output<T_4> extends infer T_2 extends string | number | bigint | boolean | null | undefined ? T_2 extends undefined ? "" : T_2 : never}` : never : never : never>>;
5
17
  export declare const PayloadSchema: "network.xyo.payload";
6
- export type PayloadSchema = typeof PayloadSchema;
18
+ export declare const PayloadSchemaZod: z.ZodLiteral<"network.xyo.payload">;
19
+ export type PayloadSchema = z.infer<typeof PayloadSchemaZod>;
7
20
  export declare const isSchema: (value: unknown) => value is Schema;
8
21
  export declare const asSchema: import("@xylabs/object").AsTypeFunction<string>;
22
+ /** Add the Schema Fields to an object */
23
+ export type WithSchema<T extends EmptyObject | void = void> = T extends EmptyObject ? SchemaFields & T : SchemaFields;
9
24
  /** Schema fields for a Payload */
10
25
  export interface SchemaFields extends EmptyObject {
11
26
  /** Schema of the object */
12
27
  schema: Schema;
13
28
  }
14
- /** Add the Schema Fields to an object */
15
- export type WithSchema<T extends EmptyObject | void = void> = T extends EmptyObject ? SchemaFields & T : SchemaFields;
16
29
  //# sourceMappingURL=Schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGjD,eAAO,MAAM,WAAW,EAAG,4BAAsC,CAAA;AAEjE,4CAA4C;AAE5C,MAAM,MAAM,MAAM,GAAG,MAAM,CAAA;AAE3B,eAAO,MAAM,aAAa,EAAG,qBAA8B,CAAA;AAC3D,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA;AAEhD,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAElD,CAAA;AAED,eAAO,MAAM,QAAQ,iDAAyC,CAAA;AAE9D,kCAAkC;AAClC,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,yCAAyC;AACzC,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,WAAW,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,WAAW,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,CAAA"}
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,WAAW,QAAgC,CAAA;AAExD,eAAO,MAAM,WAAW,aAAgC,CAAA;AACxD,eAAO,MAAM,WAAW;cAA6E,IAAI;WAAI,CAAA;AAC7G,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAA;AACnD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAA;AACnD,eAAO,MAAM,SAAS;cAH+E,IAAI;aAG7C,CAAA;AAC5D,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAEhD,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,EAAE,OAAO,CAAC;cACwC,IAAI;8UAChG,CAAA;AAED,eAAO,MAAM,aAAa,EAAG,qBAA8B,CAAA;AAC3D,eAAO,MAAM,gBAAgB,qCAA2B,CAAA;AACxD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE5D,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAElD,CAAA;AAED,eAAO,MAAM,QAAQ,iDAAyC,CAAA;AAE9D,yCAAyC;AACzC,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,WAAW,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,WAAW,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,CAAA;AAErH,kCAAkC;AAClC,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf"}
@@ -7,5 +7,5 @@ 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: import("@xylabs/object").AsTypeFunction<DataHashStorageMeta>;
10
- export declare const asOptionalDataHashStorageMeta: (value: import(".store/@xylabs-promise-npm-5.0.3-c3d7024d49/package").AnyNonPromise) => DataHashStorageMeta | undefined;
10
+ export declare const asOptionalDataHashStorageMeta: (value: import(".store/@xylabs-promise-npm-5.0.7-d57bda6b56/package").AnyNonPromise) => DataHashStorageMeta | undefined;
11
11
  //# sourceMappingURL=DataHash.d.ts.map
@@ -8,5 +8,5 @@ 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: import("@xylabs/object").AsTypeFunction<HashStorageMeta>;
11
- export declare const asOptionalHashStorageMeta: (value: import(".store/@xylabs-promise-npm-5.0.3-c3d7024d49/package").AnyNonPromise) => HashStorageMeta | undefined;
11
+ export declare const asOptionalHashStorageMeta: (value: import(".store/@xylabs-promise-npm-5.0.7-d57bda6b56/package").AnyNonPromise) => HashStorageMeta | undefined;
12
12
  //# sourceMappingURL=Hash.d.ts.map
@@ -7,5 +7,5 @@ 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: import("@xylabs/object").AsTypeFunction<SequenceStorageMeta>;
10
- export declare const asOptionalSequenceStorageMeta: (value: import(".store/@xylabs-promise-npm-5.0.3-c3d7024d49/package").AnyNonPromise) => SequenceStorageMeta | undefined;
10
+ export declare const asOptionalSequenceStorageMeta: (value: import(".store/@xylabs-promise-npm-5.0.7-d57bda6b56/package").AnyNonPromise) => SequenceStorageMeta | undefined;
11
11
  //# sourceMappingURL=Sequence.d.ts.map
@@ -7,5 +7,5 @@ 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: import("@xylabs/object").AsTypeFunction<StorageMeta>;
10
- export declare const asOptionalStorageMeta: (value: import(".store/@xylabs-promise-npm-5.0.3-c3d7024d49/package").AnyNonPromise) => StorageMeta | undefined;
10
+ export declare const asOptionalStorageMeta: (value: import(".store/@xylabs-promise-npm-5.0.7-d57bda6b56/package").AnyNonPromise) => StorageMeta | undefined;
11
11
  //# sourceMappingURL=StorageMeta.d.ts.map
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ import type { LocalSequence, QualifiedSequence } from './Sequence.ts';
3
+ export declare const LocalSequenceToStringZod: z.ZodString;
4
+ export declare const LocalSequenceFromStringZod: z.ZodPipe<z.ZodString, z.ZodTransform<LocalSequence, string>>;
5
+ export declare const QualifiedSequenceToStringZod: z.ZodString;
6
+ export declare const QualifiedSequenceFromStringZod: z.ZodPipe<z.ZodString, z.ZodTransform<QualifiedSequence, string>>;
7
+ export declare const SequenceToStringZod: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
8
+ export declare const SequenceFromStringZod: z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<LocalSequence, string>>, z.ZodPipe<z.ZodString, z.ZodTransform<QualifiedSequence, string>>]>;
9
+ //# sourceMappingURL=SequenceZod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SequenceZod.d.ts","sourceRoot":"","sources":["../../../../src/StorageMeta/sequence/SequenceZod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAIrE,eAAO,MAAM,wBAAwB,aAAuC,CAAA;AAC5E,eAAO,MAAM,0BAA0B,+DAAgG,CAAA;AAGvI,eAAO,MAAM,4BAA4B,aAA2C,CAAA;AACpF,eAAO,MAAM,8BAA8B,mEAA4G,CAAA;AAEvJ,eAAO,MAAM,mBAAmB,iDAAoE,CAAA;AACpG,eAAO,MAAM,qBAAqB,yJAAwE,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export * from './Comparer.ts';
2
2
  export * from './Parser.ts';
3
3
  export * from './Sequence.ts';
4
+ export * from './SequenceZod.ts';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/StorageMeta/sequence/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/StorageMeta/sequence/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA"}
@@ -8,6 +8,7 @@ export * from './PayloadHashMap.ts';
8
8
  export * from './PayloadSet/index.ts';
9
9
  export * from './PayloadValidationFunction.ts';
10
10
  export * from './PayloadValueExpression.ts';
11
+ export * from './PayloadZod.ts';
11
12
  export * from './Query.ts';
12
13
  export * from './Schema.ts';
13
14
  export * from './StorageMeta/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,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
+ {"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,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA"}
@@ -40,12 +40,24 @@ var asOptionalPayloadBundle = AsObjectFactory2.createOptional(isPayloadBundle);
40
40
  // src/PayloadSet/PayloadSetSchema.ts
41
41
  var PayloadSetSchema = "network.xyo.payload.set";
42
42
 
43
+ // src/PayloadZod.ts
44
+ import { HashToJsonZod } from "@xylabs/hex";
45
+ import { z as z3 } from "zod";
46
+
43
47
  // src/Schema.ts
44
48
  import { AsTypeFactory } from "@xylabs/object";
45
- var SchemaRegEx = "^(?:[a-z0-9]+.)*[a-z0-9]+$";
49
+ import { z } from "zod";
50
+ var SchemaRegEx = /^(?:[a-z0-9]+\.)*[a-z0-9]+$/;
51
+ var SchemaZodV1 = z.string().regex(SchemaRegEx);
52
+ var SchemaZodV2 = z.string().regex(SchemaRegEx).transform((x) => x);
53
+ var SchemaZod = z.union([SchemaZodV1, SchemaZodV2]);
54
+ var makeSchema = (value) => {
55
+ return z.templateLiteral([z.literal(value)]).transform((x) => x);
56
+ };
46
57
  var PayloadSchema = "network.xyo.payload";
58
+ var PayloadSchemaZod = z.literal(PayloadSchema);
47
59
  var isSchema = (value) => {
48
- return typeof value === "string";
60
+ return SchemaZod.safeParse(value).error === void 0;
49
61
  };
50
62
  var asSchema = AsTypeFactory.create(isSchema);
51
63
 
@@ -242,6 +254,18 @@ var qualified = (a, b) => {
242
254
  };
243
255
  var SequenceComparer = { local, qualified };
244
256
 
257
+ // src/StorageMeta/sequence/SequenceZod.ts
258
+ import { HexRegExMinMax, toHex as toHex2 } from "@xylabs/hex";
259
+ import { z as z2 } from "zod";
260
+ var LocalSequenceRegex = new RegExp(HexRegExMinMax(SequenceConstants.localSequenceBytes, SequenceConstants.localSequenceBytes));
261
+ var LocalSequenceToStringZod = z2.string().regex(LocalSequenceRegex);
262
+ var LocalSequenceFromStringZod = z2.string().regex(LocalSequenceRegex).transform((v) => toHex2(v));
263
+ var QualifiedSequenceRegex = new RegExp(HexRegExMinMax(SequenceConstants.qualifiedSequenceBytes, SequenceConstants.qualifiedSequenceBytes));
264
+ var QualifiedSequenceToStringZod = z2.string().regex(QualifiedSequenceRegex);
265
+ var QualifiedSequenceFromStringZod = z2.string().regex(QualifiedSequenceRegex).transform((v) => toHex2(v));
266
+ var SequenceToStringZod = z2.union([LocalSequenceToStringZod, QualifiedSequenceToStringZod]);
267
+ var SequenceFromStringZod = z2.union([LocalSequenceFromStringZod, QualifiedSequenceFromStringZod]);
268
+
245
269
  // src/StorageMeta/StorageMeta.ts
246
270
  import { AsObjectFactory as AsObjectFactory6 } from "@xylabs/object";
247
271
  var isStorageMeta = (value) => {
@@ -249,20 +273,50 @@ var isStorageMeta = (value) => {
249
273
  };
250
274
  var asStorageMeta = AsObjectFactory6.create(isStorageMeta);
251
275
  var asOptionalStorageMeta = AsObjectFactory6.createOptional(isStorageMeta);
276
+
277
+ // src/PayloadZod.ts
278
+ var StorageMetaZod = z3.object({
279
+ _hash: HashToJsonZod,
280
+ _dataHash: HashToJsonZod,
281
+ _sequence: SequenceToStringZod
282
+ });
283
+ var PayloadZod = z3.object({ schema: SchemaZod });
284
+ var PayloadWithStorageMetaZod = PayloadZod.extend(StorageMetaZod.shape);
285
+ var AnyPayloadZod = PayloadZod.catchall(z3.json());
286
+ var AnyPayloadWithStorageMetaZod = AnyPayloadZod.extend(StorageMetaZod.shape);
287
+ function WithStorageMetaZod(valueZod) {
288
+ return StorageMetaZod.extend(valueZod.shape);
289
+ }
252
290
  export {
291
+ AnyPayloadWithStorageMetaZod,
292
+ AnyPayloadZod,
253
293
  LocalSequenceConstants,
294
+ LocalSequenceFromStringZod,
295
+ LocalSequenceToStringZod,
254
296
  ModuleErrorSchema,
255
297
  PayloadBundleSchema,
256
298
  PayloadSchema,
299
+ PayloadSchemaZod,
257
300
  PayloadSetSchema,
301
+ PayloadWithStorageMetaZod,
302
+ PayloadZod,
258
303
  QualifiedSequenceConstants,
304
+ QualifiedSequenceFromStringZod,
305
+ QualifiedSequenceToStringZod,
259
306
  SchemaRegEx,
307
+ SchemaZod,
308
+ SchemaZodV1,
309
+ SchemaZodV2,
260
310
  SequenceComparer,
261
311
  SequenceComponentLengths,
262
312
  SequenceComponentMinMax,
263
313
  SequenceConstants,
314
+ SequenceFromStringZod,
264
315
  SequenceNonceComponentLengths,
265
316
  SequenceParser,
317
+ SequenceToStringZod,
318
+ StorageMetaZod,
319
+ WithStorageMetaZod,
266
320
  asAnyPayload,
267
321
  asDataHashStorageMeta,
268
322
  asHashStorageMeta,
@@ -292,6 +346,7 @@ export {
292
346
  isSequence,
293
347
  isSequenceStorageMeta,
294
348
  isStorageMeta,
349
+ makeSchema,
295
350
  notPayloadOfSchemaType
296
351
  };
297
352
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
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 as Payload).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'\nimport type { Schema } from './Schema.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 | Schema\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\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 toAddress,\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 toAddress(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 }) as Epoch\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 }) as LocalSequence\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 }) as Nonce\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 }) as QualifiedSequence\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: Hex | number,\n nonceOrAddress?: Hex,\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 = nonceOrAddress === undefined ? undefined : 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 {\n Address, Brand, Hex,\n} 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 = Brand<Hex, { __localSequence: true }>\nexport type QualifiedSequence = Brand<Hex, { __qualifiedSequence: true }>\nexport type Sequence = LocalSequence | QualifiedSequence\n\nexport type Epoch = Brand<Hex, { __epoch: true }>\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 = Brand<Hex, { __nonce: true }>\n\nexport const isNonce = (value: unknown): value is Nonce => {\n return isHex(value) && (value as string).length === SequenceConstants.nonceBytes * 2\n}\n\nexport const isLocalSequence = (value: unknown): value is LocalSequence => {\n return isHex(value) && (value as string).length === SequenceConstants.localSequenceBytes * 2\n}\n\nexport const isQualifiedSequence = (value: unknown): value is QualifiedSequence => {\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"]}
1
+ {"version":3,"sources":["../../src/isPayload.ts","../../src/isPayloadOfSchemaType.ts","../../src/Error.ts","../../src/PayloadBundle.ts","../../src/PayloadSet/PayloadSetSchema.ts","../../src/PayloadZod.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/sequence/SequenceZod.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 as Payload).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'\nimport type { Schema } from './Schema.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 | Schema\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 { HashToJsonZod } from '@xylabs/hex'\nimport { z } from 'zod'\n\nimport { SchemaZod } from './Schema.ts'\nimport { SequenceToStringZod } from './StorageMeta/index.ts'\n\nexport const StorageMetaZod = z.object({\n _hash: HashToJsonZod,\n _dataHash: HashToJsonZod,\n _sequence: SequenceToStringZod,\n})\n\nexport const PayloadZod = z.object({ schema: SchemaZod })\nexport const PayloadWithStorageMetaZod = PayloadZod.extend(StorageMetaZod.shape)\n\nexport const AnyPayloadZod = PayloadZod.catchall(z.json())\nexport const AnyPayloadWithStorageMetaZod = AnyPayloadZod.extend(StorageMetaZod.shape)\n\nexport type PayloadWithStorageMeta = z.infer<typeof PayloadWithStorageMetaZod>\n\nexport type AnyPayload = z.infer<typeof AnyPayloadZod>\nexport type AnyPayloadWithStorageMeta = z.infer<typeof AnyPayloadWithStorageMetaZod>\n\nexport function WithStorageMetaZod<T extends typeof PayloadZod>(valueZod: T) {\n return StorageMetaZod.extend(valueZod.shape)\n}\n","import type { EmptyObject } from '@xylabs/object'\nimport { AsTypeFactory } from '@xylabs/object'\nimport { z } from 'zod'\n\nexport const SchemaRegEx = /^(?:[a-z0-9]+\\.)*[a-z0-9]+$/\n\nexport const SchemaZodV1 = z.string().regex(SchemaRegEx)\nexport const SchemaZodV2 = z.string().regex(SchemaRegEx).transform(x => x as (typeof x & { __schema: true }))\nexport type SchemaV2 = z.output<typeof SchemaZodV2>\nexport type SchemaV1 = z.output<typeof SchemaZodV1>\nexport const SchemaZod = z.union([SchemaZodV1, SchemaZodV2])\nexport type Schema = z.infer<typeof SchemaZodV1>\n\nexport const makeSchema = <T extends string>(value: T) => {\n return (z.templateLiteral([z.literal(value)])).transform(x => x as (typeof x & { __schema: true }))\n}\n\nexport const PayloadSchema = 'network.xyo.payload' as const\nexport const PayloadSchemaZod = z.literal(PayloadSchema)\nexport type PayloadSchema = z.infer<typeof PayloadSchemaZod>\n\nexport const isSchema = (value: unknown): value is Schema => {\n return SchemaZod.safeParse(value).error === undefined\n}\n\nexport const asSchema = AsTypeFactory.create<Schema>(isSchema)\n\n/** Add the Schema Fields to an object */\nexport type WithSchema<T extends EmptyObject | void = void> = T extends EmptyObject ? SchemaFields & T : SchemaFields\n\n/** Schema fields for a Payload */\nexport interface SchemaFields extends EmptyObject {\n /** Schema of the object */\n schema: Schema\n}\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 toAddress,\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 toAddress(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 }) as Epoch\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 }) as LocalSequence\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 }) as Nonce\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 }) as QualifiedSequence\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: Hex | number,\n nonceOrAddress?: Hex,\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 = nonceOrAddress === undefined ? undefined : 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 {\n Address, Brand, Hex,\n} 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 = Brand<Hex, { __localSequence: true }>\nexport type QualifiedSequence = Brand<Hex, { __qualifiedSequence: true }>\nexport type Sequence = LocalSequence | QualifiedSequence\n\nexport type Epoch = Brand<Hex, { __epoch: true }>\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 = Brand<Hex, { __nonce: true }>\n\nexport const isNonce = (value: unknown): value is Nonce => {\n return isHex(value) && (value as string).length === SequenceConstants.nonceBytes * 2\n}\n\nexport const isLocalSequence = (value: unknown): value is LocalSequence => {\n return isHex(value) && (value as string).length === SequenceConstants.localSequenceBytes * 2\n}\n\nexport const isQualifiedSequence = (value: unknown): value is QualifiedSequence => {\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 { HexRegExMinMax, toHex } from '@xylabs/hex'\nimport { z } from 'zod'\n\nimport type { LocalSequence, QualifiedSequence } from './Sequence.ts'\nimport { SequenceConstants } from './Sequence.ts'\n\nconst LocalSequenceRegex = new RegExp(HexRegExMinMax(SequenceConstants.localSequenceBytes, SequenceConstants.localSequenceBytes))\nexport const LocalSequenceToStringZod = z.string().regex(LocalSequenceRegex)\nexport const LocalSequenceFromStringZod = z.string().regex(LocalSequenceRegex).transform<LocalSequence>(v => toHex(v) as LocalSequence)\n\nconst QualifiedSequenceRegex = new RegExp(HexRegExMinMax(SequenceConstants.qualifiedSequenceBytes, SequenceConstants.qualifiedSequenceBytes))\nexport const QualifiedSequenceToStringZod = z.string().regex(QualifiedSequenceRegex)\nexport const QualifiedSequenceFromStringZod = z.string().regex(QualifiedSequenceRegex).transform<QualifiedSequence>(v => toHex(v) as QualifiedSequence)\n\nexport const SequenceToStringZod = z.union([LocalSequenceToStringZod, QualifiedSequenceToStringZod])\nexport const SequenceFromStringZod = z.union([LocalSequenceFromStringZod, QualifiedSequenceFromStringZod])\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","z","AsObjectFactory","isHash","AsObjectFactory","isHash","AsObjectFactory","AsObjectFactory","toHex","z","z","toHex","AsObjectFactory","AsObjectFactory","z"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/payload-model",
3
- "version": "5.0.1",
3
+ "version": "5.0.3",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -33,16 +33,16 @@
33
33
  "src"
34
34
  ],
35
35
  "dependencies": {
36
- "@xylabs/arraybuffer": "~5.0.3",
37
- "@xylabs/assert": "~5.0.3",
38
- "@xylabs/hex": "~5.0.3",
39
- "@xylabs/object": "~5.0.3",
40
- "zod": "~3.25.76"
36
+ "@xylabs/arraybuffer": "~5.0.7",
37
+ "@xylabs/assert": "~5.0.7",
38
+ "@xylabs/hex": "~5.0.7",
39
+ "@xylabs/object": "~5.0.7",
40
+ "zod": "~4.0.17"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@xylabs/ts-scripts-yarn3": "~7.1.0",
44
44
  "@xylabs/tsconfig": "~7.1.0",
45
- "@xylabs/vitest-extended": "~5.0.3",
45
+ "@xylabs/vitest-extended": "~5.0.7",
46
46
  "typescript": "~5.9.2",
47
47
  "vitest": "~3.2.4"
48
48
  },
package/src/Payload.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import type { Hash } from '@xylabs/hex'
2
2
  import type {
3
3
  DeepOmitStartsWith, DeepPickStartsWith, EmptyObject,
4
- JsonObject,
5
4
  } from '@xylabs/object'
6
5
 
7
6
  import type { Schema, WithSchema } from './Schema.ts'
@@ -59,5 +58,3 @@ export type WithoutSchema<T extends WithOptionalSchema<Payload>> = Omit<T, 'sche
59
58
  export type WithOptionalSchema<T extends Payload = Payload> = WithoutSchema<T> & Partial<T & SchemaField>
60
59
 
61
60
  export type WithOnlyClientMeta<T extends Payload> = DeepPickStartsWith<T, '$'>
62
-
63
- export type AnyPayload = Payload<JsonObject, Schema>
@@ -0,0 +1,26 @@
1
+ import { HashToJsonZod } from '@xylabs/hex'
2
+ import { z } from 'zod'
3
+
4
+ import { SchemaZod } from './Schema.ts'
5
+ import { SequenceToStringZod } from './StorageMeta/index.ts'
6
+
7
+ export const StorageMetaZod = z.object({
8
+ _hash: HashToJsonZod,
9
+ _dataHash: HashToJsonZod,
10
+ _sequence: SequenceToStringZod,
11
+ })
12
+
13
+ export const PayloadZod = z.object({ schema: SchemaZod })
14
+ export const PayloadWithStorageMetaZod = PayloadZod.extend(StorageMetaZod.shape)
15
+
16
+ export const AnyPayloadZod = PayloadZod.catchall(z.json())
17
+ export const AnyPayloadWithStorageMetaZod = AnyPayloadZod.extend(StorageMetaZod.shape)
18
+
19
+ export type PayloadWithStorageMeta = z.infer<typeof PayloadWithStorageMetaZod>
20
+
21
+ export type AnyPayload = z.infer<typeof AnyPayloadZod>
22
+ export type AnyPayloadWithStorageMeta = z.infer<typeof AnyPayloadWithStorageMetaZod>
23
+
24
+ export function WithStorageMetaZod<T extends typeof PayloadZod>(valueZod: T) {
25
+ return StorageMetaZod.extend(valueZod.shape)
26
+ }
package/src/Schema.ts CHANGED
@@ -1,26 +1,35 @@
1
1
  import type { EmptyObject } from '@xylabs/object'
2
2
  import { AsTypeFactory } from '@xylabs/object'
3
+ import { z } from 'zod'
3
4
 
4
- export const SchemaRegEx = '^(?:[a-z0-9]+\.)*[a-z0-9]+$' as const
5
+ export const SchemaRegEx = /^(?:[a-z0-9]+\.)*[a-z0-9]+$/
5
6
 
6
- /** Schema type in Javascript is a string */
7
+ export const SchemaZodV1 = z.string().regex(SchemaRegEx)
8
+ export const SchemaZodV2 = z.string().regex(SchemaRegEx).transform(x => x as (typeof x & { __schema: true }))
9
+ export type SchemaV2 = z.output<typeof SchemaZodV2>
10
+ export type SchemaV1 = z.output<typeof SchemaZodV1>
11
+ export const SchemaZod = z.union([SchemaZodV1, SchemaZodV2])
12
+ export type Schema = z.infer<typeof SchemaZodV1>
7
13
 
8
- export type Schema = string
14
+ export const makeSchema = <T extends string>(value: T) => {
15
+ return (z.templateLiteral([z.literal(value)])).transform(x => x as (typeof x & { __schema: true }))
16
+ }
9
17
 
10
18
  export const PayloadSchema = 'network.xyo.payload' as const
11
- export type PayloadSchema = typeof PayloadSchema
19
+ export const PayloadSchemaZod = z.literal(PayloadSchema)
20
+ export type PayloadSchema = z.infer<typeof PayloadSchemaZod>
12
21
 
13
22
  export const isSchema = (value: unknown): value is Schema => {
14
- return typeof value === 'string'
23
+ return SchemaZod.safeParse(value).error === undefined
15
24
  }
16
25
 
17
26
  export const asSchema = AsTypeFactory.create<Schema>(isSchema)
18
27
 
28
+ /** Add the Schema Fields to an object */
29
+ export type WithSchema<T extends EmptyObject | void = void> = T extends EmptyObject ? SchemaFields & T : SchemaFields
30
+
19
31
  /** Schema fields for a Payload */
20
32
  export interface SchemaFields extends EmptyObject {
21
33
  /** Schema of the object */
22
34
  schema: Schema
23
35
  }
24
-
25
- /** Add the Schema Fields to an object */
26
- export type WithSchema<T extends EmptyObject | void = void> = T extends EmptyObject ? SchemaFields & T : SchemaFields
@@ -0,0 +1,16 @@
1
+ import { HexRegExMinMax, toHex } from '@xylabs/hex'
2
+ import { z } from 'zod'
3
+
4
+ import type { LocalSequence, QualifiedSequence } from './Sequence.ts'
5
+ import { SequenceConstants } from './Sequence.ts'
6
+
7
+ const LocalSequenceRegex = new RegExp(HexRegExMinMax(SequenceConstants.localSequenceBytes, SequenceConstants.localSequenceBytes))
8
+ export const LocalSequenceToStringZod = z.string().regex(LocalSequenceRegex)
9
+ export const LocalSequenceFromStringZod = z.string().regex(LocalSequenceRegex).transform<LocalSequence>(v => toHex(v) as LocalSequence)
10
+
11
+ const QualifiedSequenceRegex = new RegExp(HexRegExMinMax(SequenceConstants.qualifiedSequenceBytes, SequenceConstants.qualifiedSequenceBytes))
12
+ export const QualifiedSequenceToStringZod = z.string().regex(QualifiedSequenceRegex)
13
+ export const QualifiedSequenceFromStringZod = z.string().regex(QualifiedSequenceRegex).transform<QualifiedSequence>(v => toHex(v) as QualifiedSequence)
14
+
15
+ export const SequenceToStringZod = z.union([LocalSequenceToStringZod, QualifiedSequenceToStringZod])
16
+ export const SequenceFromStringZod = z.union([LocalSequenceFromStringZod, QualifiedSequenceFromStringZod])
@@ -1,3 +1,4 @@
1
1
  export * from './Comparer.ts'
2
2
  export * from './Parser.ts'
3
3
  export * from './Sequence.ts'
4
+ export * from './SequenceZod.ts'
package/src/index.ts CHANGED
@@ -8,6 +8,7 @@ export * from './PayloadHashMap.ts'
8
8
  export * from './PayloadSet/index.ts'
9
9
  export * from './PayloadValidationFunction.ts'
10
10
  export * from './PayloadValueExpression.ts'
11
+ export * from './PayloadZod.ts'
11
12
  export * from './Query.ts'
12
13
  export * from './Schema.ts'
13
14
  export * from './StorageMeta/index.ts'